Refresh with Azure Automation (Обновление с помощью службы автоматизации Azure)

С помощью службы автоматизации Azure и модулей Runbook PowerShell можно выполнять автоматические операции обновления данных в табличных моделях Azure Analysis.

В примере, приведенном в этой статье, используется модуль SqlServer PowerShell. Образец модуля Runbook PowerShell, демонстрирующий обновление модели, приведен ниже в этой статье.

Проверка подлинности

Все вызовы должны проходить проверку подлинности с помощью допустимого маркера Microsoft Entra ID (OAuth 2). В примере, приведенном в этой статье, для проверки подлинности в Azure Analysis Services используется субъект-служба (SPN). Дополнительные сведения см. в статье Создание субъекта-службы с помощью портала Azure.

Необходимые компоненты

Важно!

В следующем примере предполагается, что брандмауэр Azure Analysis Services отключен. Если брандмауэр включен, общедоступный IP-адрес инициатора запроса должен быть включен в правило брандмауэра.

  1. В учетной записи службы автоматизации Azure выберите Модули, а затем — Обзор коллекции.

  2. В поле поиска введите SqlServer.

    Search Modules

  3. Выберите SqlServer, а затем нажмите кнопку Импорт.

    Import Module

  4. Нажмите кнопку ОК.

Создание субъекта-службы (SPN)

Чтобы узнать о создании субъекта-службы, см. раздел Создание субъекта-службы с помощью портала Azure.

Настройка разрешений в Azure Analysis Services

Созданный вами субъект-служба должен иметь права администратора сервера на сервере. Дополнительные сведения см. в статье Добавление субъекта-службы к роли администратора сервера.

Создание модуля Runbook службы автоматизации Azure

  1. В учетной записи службы автоматизации создайте ресурс Учетные данные, который будет использоваться для безопасного хранения субъекта-службы.

    Screenshot that shows the

  2. Введите необходимые сведения для учетных данных. В поле Имя пользователя введите идентификатор приложения субъекта-службы (appid), а затем в поле Пароль введите секрет субъекта-службы.

    Create credential

  3. Импортируйте модуль Runbook службы автоматизации.

    Screenshot that shows the

  4. Найдите файл Refresh-Model.ps1, укажите Имя и Описание, а затем нажмите кнопку Создать.

    Примечание.

    Используйте скрипт из раздела Runbook PowerShell в нижней части этого документа, чтобы создать файл с именем Refresh-Model.ps1 и сохранить на локальном компьютере для импорта в Runbook.

    Import Runbook

  5. После создания модуль Runbook автоматически переходит в режим правки. Выберите Опубликовать.

    Publish Runbook

    Примечание.

    Ресурс учетных данных, созданный ранее, извлекается модулем Runbook с помощью команды Get-AutomationPSCredential. Затем эта команда передается в команду PowerShell Invoke-ProcessASADatabase с целью выполнения проверки подлинности для Azure Analysis Services.

  6. Проверьте модуль Runbook, нажав Пуск.

    Screenshot that shows the

  7. Заполните параметры DATABASENAME, ANALYSISSERVER и REFRESHTYPE, а затем нажмите кнопку OK. Параметр WEBHOOKDATA не требуется при запуске модуля Runbook вручную.

    Start the Runbook

При успешном выполнении модуля Runbook вы получите выходные данные следующего вида.

Successful Run

Использование автономного модуля Runbook службы автоматизации Azure

Модуль Runbook можно настроить для запуска обновления модели Azure Analysis Services по расписанию.

Он настраивается, как показано ниже.

  1. В модуле Runbook службы автоматизации нажмите Расписания, а затем — Добавление расписания.

    Create schedule

  2. Нажмите Расписание>Создать новое расписание, а затем заполните сведения.

    Configure schedule

  3. Нажмите кнопку Создать.

  4. Заполните поля параметров для расписания. Они будут использоваться при каждой активации модуля Runbook. При запуске по расписанию параметр WEBHOOKDATA должен оставаться пустым.

    Configure parameters

  5. Нажмите кнопку ОК.

Использование с Фабрикой данных

Чтобы использовать модуль Runbook с помощью Фабрики данных Azure, сначала создайте веб-перехватчик для модуля Runbook. Веб-перехватчик предоставляет URL-адрес, который можно вызвать с помощью веб-действия Фабрики данных Azure.

Важно!

Чтобы создать веб-перехватчик, состояние модуля Runbook должно быть Опубликован.

  1. В модуле Runbook службы автоматизации нажмите Веб-перехватчики, а затем — Добавить веб-перехватчик.

    Add Webhook

  2. Укажите имя и срок действия веб-перехватчика. Это имя используется только для определения веб-перехватчика внутри модуля Runbook службы автоматизации, и он не является частью URL-адреса.

    Внимание

    Перед закрытием мастера убедитесь, что вы скопировали URL-адрес, так как его нельзя получить после закрытия.

    Configure Webhook

    Поля для параметров веб-перехватчика могут остаться пустыми. При настройке веб-действия Фабрики данных Azure параметры могут передаваться в тексте веб-вызова.

  3. Настройте веб-действие в Фабрике данных.

Пример

Example Web Activity

URL-адрес — это URL-адрес, создаваемый веб-перехватчиком.

Текст — это документ JSON, который должен содержать следующие свойства.

Свойство Значение
AnalysisServicesDatabase Имя базы данных Служб Azure Analysis Services
Пример: AdventureWorksDB
AnalysisServicesServer Имя сервера Azure Analysis Services.
Пример: https://westus.asazure.windows.net/servers/myserver/models/AdventureWorks/
DatabaseRefreshType Тип выполняемого обновления.
Пример: Full

Пример текста JSON:

{
    "AnalysisServicesDatabaseName": "AdventureWorksDB",
    "AnalysisServicesServer": "asazure://westeurope.asazure.windows.net/MyAnalysisServer",
    "DatabaseRefreshType": "Full"
}

Эти параметры определяются в сценарии модуля Runbook PowerShell. При выполнении веб-действия полезные данные, передаваемые JSON, представляют собой WEBHOOKDATA.

Это десериализировано и хранится в качестве параметров PowerShell, которые затем используются командой Invoke-ProcessASDatabase PowerShell.

Deserialized Webhook

Использование гибридной рабочей роли с Azure Analysis Services

Виртуальную машину Azure со статическим общедоступным IP-адресом можно использовать в качестве гибридной рабочей роли службы автоматизации Azure. Затем этот общедоступный IP-адрес можно добавить в брандмауэр Azure Analysis Services.

Важно!

Убедитесь, что общедоступный IP-адрес виртуальной машины настроен как статический.

Дополнительные сведения о настройке гибридных рабочих ролей службы автоматизации Azure см. в статье Установка гибридной рабочей роли Runbook.

После настройки гибридной рабочей роли создайте веб-перехватчик, как описано в разделе Использование Фабрики данных. Единственное отличие заключается в том, что при настройке веб-перехватчика необходимо выбрать параметр Запускать в>Гибридная рабочая роль .

Пример веб-перехватчика, использующего гибридную рабочую роль:

Example Hybrid Worker Webhook

Пример модуля Runbook PowerShell

В следующем фрагменте кода приведен пример того, как выполнить обновление модели Azure Analysis Services с помощью модуля Runbook PowerShell.

param
(
    [Parameter (Mandatory = $false)]
    [object] $WebhookData,

    [Parameter (Mandatory = $false)]
    [String] $DatabaseName,
    [Parameter (Mandatory = $false)]
    [String] $AnalysisServer,
    [Parameter (Mandatory = $false)]
    [String] $RefreshType
)

$_Credential = Get-AutomationPSCredential -Name "ServicePrincipal"

# If runbook was called from Webhook, WebhookData will not be null.
if ($WebhookData)
{ 
    # Retrieve AAS details from Webhook request body
    $atmParameters = (ConvertFrom-Json -InputObject $WebhookData.RequestBody)
    Write-Output "CredentialName: $($atmParameters.CredentialName)"
    Write-Output "AnalysisServicesDatabaseName: $($atmParameters.AnalysisServicesDatabaseName)"
    Write-Output "AnalysisServicesServer: $($atmParameters.AnalysisServicesServer)"
    Write-Output "DatabaseRefreshType: $($atmParameters.DatabaseRefreshType)"
    
    $_databaseName = $atmParameters.AnalysisServicesDatabaseName
    $_analysisServer = $atmParameters.AnalysisServicesServer
    $_refreshType = $atmParameters.DatabaseRefreshType
 
    Invoke-ProcessASDatabase -DatabaseName $_databaseName -RefreshType $_refreshType -Server $_analysisServer -ServicePrincipal -Credential $_credential
}
else 
{
    Invoke-ProcessASDatabase -DatabaseName $DatabaseName -RefreshType $RefreshType -Server $AnalysisServer -ServicePrincipal -Credential $_Credential
}

Следующие шаги

Примеры
REST API