Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Динамический xmla запрос / 13 сообщений из 13, страница 1 из 1
25.06.2019, 18:44
    #39830473
assmsk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический xmla запрос
В кубе есть около 100 партиций. Необходимо сделать process full для каждой.
Можно ли как то делать динамический запрос подставляя переменную в качестве имя партиции, аналогично EXEC в t-sql.
Или есть какой то способ попроще?:)
...
Рейтинг: 0 / 0
25.06.2019, 19:06
    #39830485
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический xmla запрос
assmskИли есть какой то способ попроще?:)
1) АМО (ForEach) через PowerShell / C# / VB - сгенерировать команду (batch), отправить на выполнение.
2) если это все партиции в MG - то почему-бы просто не ProcessFull на всю MG?
A если это только Unprocessed партиции то почему-бы не ProcessDefault на MG?
3) тот-же SQL где генерирующий на основе XMLA template с шагом с подмены нужной переменной {из списка} и вставки в тело batch который выполняет process, т.е.
а) сгенерировать XMLA для всех партиций,
б) оптравить на выполнение
...
Рейтинг: 0 / 0
25.06.2019, 19:08
    #39830487
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический xmla запрос
где список партиций можно либо принудительно (ETL) вставить, либо взять из DMV, или собрать пройдясь AMO
...
Рейтинг: 0 / 0
26.06.2019, 09:29
    #39830579
assmsk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический xmla запрос
vikkiv, извиняюсь что значит MG?)
...
Рейтинг: 0 / 0
26.06.2019, 13:16
    #39830691
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический xmla запрос
assmsk,

Команду можно сформировать и конкатенацией строк.

Я подходил к вопросу так:
1) Сделать таблицу со списком партиций
2) Отмечать в ней партиции, требующий обновления (битовое поле)
3) Держать в таблице поле со фрагментом скрипта для обновления данной партиции (XML)
4) Забрать скрипт обычным SELECT
...
Рейтинг: 0 / 0
26.06.2019, 13:40
    #39830707
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический xmla запрос
assmsk,

MG - measure group

по теме
я писал себе пару функций

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
create procedure [dbo].[usp_ssas_fire_processtask] (@dbId sysname, @cubeId sysname, @mgId sysname, @prtId sysname, @processtype nvarchar(40)='ProcessFull', @uid uniqueidentifier OUTPUT)
as
begin
 set nocount on;

 declare @msg xml
 declare @sql_str nvarchar(max)
 -- конструируем xmla команду для обработки
 -- если передан только куб - обрабатываем только куб
 -- если передан куб и группа мер - обрабатываем группу мер
 -- если передан куб, группа мер и партиция - обрабатываем партицию
 -- про обработку ошибок в этой версии не парюсь 
 declare @xmla_str xml = '<Batch xmlns="http://schemas.microsoft.com/analysisservices/2003/engine"><Process>
		  <Object><DatabaseID>' + @dbId + '</DatabaseID><CubeID>' + @cubeId + '</CubeID>' 
			+ isnull('<MeasureGroupID>' + @mgId + '</MeasureGroupID>' + isnull('<PartitionID>' + @prtId + '</PartitionID>', ''), '')  + '</Object>
      <Type>' + @processtype + '</Type>
    </Process></Batch>'
-- конструируем динамический SQL для вызова второй процедуры, 
-- которая непосредственно передает XMLA команду на прилинкованый SSAS сервер 
   set @sql_str = 'declare @xmla xml = ''' + cast(@xmla_str as nvarchar(max)) + '''
   exec dbo.usp_ssas_ExecuteXMLA @xmla=@xmla'
-- конструируем строку сообщения для передачи на обработку в асинхронную очередь 
-- (к вопросу ТС отношения не имеет, поэтому расписывать не буду)
   set @uid = newid()
   select @msg = (select @uid [@uid], @sql_str [@sql_str], getdate() [@snd_time] for xml path('cmd'));
   exec [async].[usp_async_enqueue] @msg
--
end



в процедуре usp_ssas_ExecuteXMLA самое главное
Код: sql
1.
2.
3.
  
declare @cmd nvarchar(max) = convert(nvarchar(max), @xmla)
exec (@cmd) at linkedSSAS


которые и можно поставить вместо засовывания в асинхронную очередь

если надо обработать сразу несколько партиций из одной или разных групп мер, то просто делаю подряд несколько вызовов.
Код: sql
1.
2.
3.
4.
5.
6.
-- один куб, одинаковые группы мер, разные партиции
exec [dbo].[usp_ssas_fire_processtask] 'ssasdbid', 'cubeid_1', 'mgid_11', 'prtid_111' 
exec [dbo].[usp_ssas_fire_processtask] 'ssasdbid', 'cubeid_1', 'mgid_11', 'prtid_112'
-- один куб, разные группы мер, все партиции в них
exec [dbo].[usp_ssas_fire_processtask] 'ssasdbid', 'cubeid_2', 'mgid_21'
exec [dbo].[usp_ssas_fire_processtask] 'ssasdbid', 'cubeid_2', 'mgid_22'



можно было сформировать и одну команду на параллельную обработку сразу нескольких объектов, но задачи такой не стояло

почему через асинхрон? потому что постановка в очередь на обработку моментальная, дальше каждая задача выполняется независимо от основного соединения которое запустило команды на обработку. соответственно основное соединение не удерживается до конца выполнения обработки.
...
Рейтинг: 0 / 0
28.06.2019, 11:06
    #39831532
assmsk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический xmla запрос
Я думал что моем случае потребуется перепроцессить отдельно каждую партицию, но оказалость достаточно фул процесса куба.

Еще один попутный вопрос, так как я эту ситуацию не могу осознать...
Был куб в котором поменяли data source view, но забыли переписать селекты в партициях на новый источник. Название колонок в старой и новой таблице идентичны. Это в целом нормальное поведение для куба что в data source view 1 источник, а в партициях другой и это работает?) Ведь соединения для измерений осуществляются через data source view...
...
Рейтинг: 0 / 0
28.06.2019, 11:33
    #39831550
Гулин Федор
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический xmla запрос
ShIgor,
поделитесь плз кодом
usp_async_enqueue


зысам использую запуск скрпитом через линк-севрер
но в оригинале не было - это похоже ваше дописанное
...
Рейтинг: 0 / 0
28.06.2019, 12:32
    #39831595
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический xmla запрос
Гулин Федор,

это моя переделка, поэтому лучше читайте первоисточник:
John Huang's Blog, Parallel Task Scheduling (7) – Scheduled By Activator
и лучше начинать с 1 части, чтобы полнее осознать всю "боль".
...
Рейтинг: 0 / 0
28.06.2019, 12:38
    #39831599
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический xmla запрос
assmsk,

если DS источника в DSV и DS источника в партиции совпадают, то работать будет
если нет, то не будет.
...
Рейтинг: 0 / 0
28.06.2019, 15:35
    #39831696
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический xmla запрос
assmskЯ думал что моем случае потребуется перепроцессить отдельно каждую партицию, но оказалость достаточно фул процесса куба.

Еще один попутный вопрос, так как я эту ситуацию не могу осознать...
Был куб в котором поменяли data source view, но забыли переписать селекты в партициях на новый источник. Название колонок в старой и новой таблице идентичны. Это в целом нормальное поведение для куба что в data source view 1 источник, а в партициях другой и это работает?) Ведь соединения для измерений осуществляются через data source view...


Упаковывайте запрос во вьюху, делайте в партициях SELECT * FROM View. Иначе будете гемороиться с партициями.
...
Рейтинг: 0 / 0
28.06.2019, 15:41
    #39831702
Гулин Федор
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический xmla запрос
+1 к тому что DSV
надо делать на вью - сильно облегчает жизнь и отладку
...
Рейтинг: 0 / 0
28.06.2019, 15:49
    #39831706
Alex_496
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический xmla запрос
View на уровне реляционной базы = это best practicas

Также полезно, удобно: период данных в viewes = период в партициях группы мер
...
Рейтинг: 0 / 0
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Динамический xmla запрос / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]