Azure Automation を使用した更新

Azure Automation および PowerShell Runbook を使用して、Azure Analysis 表形式モデルに対する自動データ更新操作を行うことができます。

この記事の例では、SqlServer PowerShell モジュールを使用します。 モデルの更新方法を示す PowerShell Runbook のサンプルは、この記事の後半で提供されます。

認証

すべての呼び出しを、有効な Microsoft Entra ID (OAuth 2) トークンで認証する必要があります。 この記事の例では、サービス プリンシパル (SPN) を使用して Azure Analysis Services を認証します。 詳細については、Azure portal を使用したサービス プリンシパルの作成に関する記事を参照してください。

前提条件

重要

次の例では、Azure Analysis Services ファイアウォールが無効になっていることを前提としています。 ファイアウォールが有効になっている場合は、要求イニシエーターのパブリック IP アドレスがファイアウォール規則に含まれている必要があります。

  1. Azure Automation アカウントで、[モジュール] をクリックし、[Browse gallery]\(ギャラリーの閲覧\) をクリックします。

  2. 検索バーで「SqlServer」を検索します。

    Search Modules

  3. SqlServer を選択し、[インポート] をクリックします。

    Import Module

  4. [OK] をクリックします。

サービス プリンシパル (SPN) を作成する

サービス プリンシパルの作成の詳細については、Azure portal を使用したサービス プリンシパルの作成に関する記事を参照してください。

Azure Analysis Services でアクセス許可を構成する

作成するサービス プリンシパルには、サーバーでのサーバー管理者のアクセス許可が必要です。 詳細については、「サーバー管理者ロールへのサービス プリンシパルの追加」を参照してください。

Azure Automation Runbook を設計する

  1. Automation アカウントで、サービス プリンシパルを安全に保管するために使用される資格情報リソースを作成します。

    Screenshot that shows the

  2. 資格情報の詳細を入力します。 [ユーザー名] にサービス プリンシパルのアプリケーション ID (appid) を入力し、[パスワード] にサービス プリンシパル シークレットを入力します。

    Create credential

  3. Automation Runbook をインポートします。

    Screenshot that shows the

  4. Refresh-Model.ps1 ファイルを参照し、[名前] および [説明] を入力して、次に [作成] をクリックします。

    Note

    このドキュメントの下部にある「Powershell Runbook のサンプル」セクションのスクリプトを使用して、Refresh-Model.ps1 という名前のファイルを作成し、ローカル コンピューターに保存して Runbook にインポートします。

    Import Runbook

  5. Runbook が作成されると、自動的に編集モードになります。 [発行] を選びます。

    Publish Runbook

    Note

    以前作成された資格情報リソースは、Get-AutomationPSCredential コマンドを使用して Runbook で取得されます。 このコマンドは次に Invoke-ProcessASADatabase PowerShell コマンド渡されて、Azure Analysis Services への認証を実行します。

  6. [開始] をクリックして Runbook をテストします。

    Screenshot that shows the

  7. DATABASENAMEANALYSISSERVER、および REFRESHTYPE パラメーターを入力し、[OK] をクリックします。 WEBHOOKDATA パラメーターは、Runbook を手動で実行するときは必要ありません。

    Start the Runbook

Runbook が正常に実行された場合、次のような出力が表示されます。

Successful Run

自己完結型の Azure Automation Runbook を使用する

Runbook は、Azure Analysis Services モデルの更新をスケジュールに基づいてトリガーするように構成できます。

これは次のようにして構成できます。

  1. Automation Runbook で、[スケジュール][スケジュールの追加] の順にクリックします。

    Create schedule

  2. [スケジュール]>[新しいスケジュールを作成します] をクリックし、詳細を入力します。

    Configure schedule

  3. Create をクリックしてください。

  4. スケジュールのパラメーターを入力します。 これらは Runbook をトリガーするたびに使用されます。 スケジュールを介して実行する場合、WEBHOOKDATA パラメーターは空白のままにしておく必要があります。

    Configure parameters

  5. [OK] をクリックします。

Data Factory で使用する

Azure Data Factory を使用して Runbook を使用するには、最初に Runbook の Webhook を作成します。 Webhook は Azure Data Factory の Web アクティビティを使用して呼び出すことができる URL を提供します。

重要

Webhook を作成するには、Runbook の状態が [公開済み] である必要があります。

  1. Automation Runbook で、[Webhook] をクリックし、次に [Webhook の追加] をクリックします。

    Add Webhook

  2. Webhook の名前と有効期限を指定します。 この名前は Automation Runbook 内の Webhook を識別するだけで、URL の一部を形成するわけではありません。

    注意事項

    ウィザードを閉じると元に戻すことができないため、必ずウィザードを閉じる前に URL をコピーしてください。

    Configure Webhook

    Webhook のパラメーターは空白のままでかまいません。 Azure Data Factory の Web アクティビティを構成するときに、Web 呼び出しの本文にパラメーターを渡すことができます。

  3. Data Factory で、Web アクティビティを構成します

Example Web Activity

[URL] は、Webhook から作成された 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 スクリプトで定義されます。 Web アクティビティが実行されたときに渡される JSON ペイロードは、WEBHOOKDATA です。

これは逆シリアル化されて PowerShell のパラメーターとして格納され、Invoke-ProcessASDatabase PowerShell コマンドで使用されます。

Deserialized Webhook

Azure Analysis Services で Hybrid Worker を使用する

静的パブリック IP アドレスを持つ Azure 仮想マシンは、Azure Automation Hybrid Worker として使用できます。 その後、このパブリック IP アドレスは Azure Analysis Services ファイアウォールに追加できます。

重要

仮想マシンのパブリック IP アドレスが静的に構成されていることを確認します。

Azure Automation Hybrid Worker の構成の詳細については、「Hybrid Runbook Worker をインストールする」を参照してください。

Hybrid Worker が構成されたら、「Data Factory で使用する」セクションで説明されているように Webhook を作成します。 ここでの唯一の違いは、Webhook を構成するときに [Run on]\(実行先\)>[Hybrid Worker] オプションを選択することです。

Hybrid Worker を使用した Webhook の例:

Example Hybrid Worker Webhook

PowerShell Runbook のサンプル

次のコード スニペットは、PowerShell Runbook を使用して Azure Analysis Services モデルの更新を実行する方法の例です。

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