Поделиться через


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.

    Поиск модулей

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

    Импорт модуля

  4. Щелкните OK.

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

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

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

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

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

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

    Снимок экрана, на котором показана страница

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

    Создание учетных данных

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

    Снимок экрана со страницей

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

    Примечание.

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

    Импортировать модуль Runbook

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

    Опубликовать модуль Runbook

    Примечание.

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

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

    Снимок экрана со страницей

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

    Запустите модуль Runbook.

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

Успешное выполнение

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

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

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

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

    Создание расписания

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

    Настройка расписания

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

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

    Настроить параметры

  5. Щелкните OK.

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

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

Внимание

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

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

    Добавить веб-перехватчик

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

    Внимание

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

    Настройка веб-перехватчика

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

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

Пример

Пример веб-действия

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.

Десериализованный веб-перехватчик

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

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

Внимание

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

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

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

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

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

Пример модуля 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