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

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

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

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


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

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

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

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


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

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


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