Я пытаюсь автоматизировать обновление табличной модели SSAS. Требование: в зависимости от выбранных таблиц модель будет обновляться только для этих таблиц. Я ищу способ динамически создать сценарий для обработки только выбранных таблиц на первом этапе задания агента SQL и передать этот динамически построенный сценарий на следующий этап, который будет этапом команды служб SQL Server Analysis Services. Или, может быть, выполнить сценарий, созданный на шаге 1. Но я не уверен, как этого добиться. Пожалуйста, дайте мне знать возможные способы.
Автоматическое обновление табличной модели SSAS на уровне таблицы
Ответы (1)
Рассматривали ли вы возможность сделать это через SSIS и запустить пакет из агента SQL? Вы можете использовать задачу обработки служб Analysis Services и выбрать таблицы, которые хотите обработать. Если вы хотите сделать это более динамично, следующие пункты описывают, как это можно сделать.
- Имена таблиц, которые вы хотите обработать, будут храниться в объектной переменной. Один из вариантов - запросить у DMV SSAS из задачи «Выполнение SQL» имена тех таблиц, которые будут обрабатываться, и вывести эти имена в объектную переменную. Вам нужно будет настроить набор результатов для использования полного набора результатов и сопоставить объектную переменную на панели набора результатов. Следующая команда вернет уникальные имена таблиц (фильтр table_type используется для удаления результатов с префиксом $)
select table_name from $SYSTEM.DBSCHEMA_TABLES where table_catalog = 'YourTabularModel' and table_schema = 'Model' and table_type = 'SYSTEM TABLE'
- Если вы будете использовать DMV SSAS, создайте диспетчер соединений OLE DB, используя Microsoft OLE DB Provider для Analysis Services 13.0 в качестве поставщика. Обязательно установите исходный каталог для модели SSAS с таблицами, которые будут обрабатываться.
- Добавьте цикл перечислителя ADO по каждому элементу, который будет использовать объектную переменную в качестве исходной переменной на панели «Коллекция». На панели «Сопоставления переменных» добавьте переменную для хранения имени таблицы.
- Внутри цикла по каждому элементу добавьте задачу выполнения DDL служб Analysis Services.
- Создайте строковую переменную с выражением, которое является командой процесса SSAS для таблицы. В выражении замените поле
table
(при условии, что вы используете TMSL) переменной, содержащей имя таблицы.
person
userfl89
schedule
13.09.2018