Share via


使用 Azure 自動化重新整理

透過使用 Azure 自動化和 PowerShell Runbook,您可以在 Azure Analysis 表格式模型上執行自動化資料重新整理作業。

本文中的範例會使用 SqlServer PowerShell 模組。 本文稍後會提供示範重新整理模型的範例 PowerShell Runbook。

驗證

所有呼叫都必須使用有效的 Microsoft Entra ID (OAuth 2) 權杖進行驗證。 本文中的範例會使用服務主體 (SPN) 對 Azure Analysis Services 進行驗證。 若要深入了解,請參閱使用 Azure 入口網站建立服務主體

必要條件

重要

下列範例假設 Azure Analysis Services 防火牆已停用。 如果已啟用防火牆,則必須將要求啟動器的公用 IP 位址包含在防火牆規則中。

  1. 在您的Azure 自動化帳戶中,按一下 [模組],然後按一下[瀏覽資源庫]

  2. 在搜尋列中搜尋 SqlServer

    Search Modules

  3. 選取 SqlServer,然後按一下 [匯入]

    Import Module

  4. 按一下 [確定]

建立服務主體 (SPN)

若要了解如何建立服務主體,請參閱使用 Azure 入口網站建立服務主體

在 Azure Analysis Services 中設定權限

您建立的服務主體必須具有伺服器上的伺服器管理員權限。 若要深入了解,請參閱將服務主體新增至伺服器管理員角色

設計 Azure 自動化 Runbook

  1. 在自動化帳戶中,建立認證資源,以用來安全地儲存服務主體。

    Screenshot that shows the

  2. 輸入認證的詳細資料。 在 [使用者名稱] 中,輸入服務主體應用程式識別碼 (appid) ,然後在 [密碼] 中輸入服務主體密碼。

    Create credential

  3. 匯入自動化 Runbook。

    Screenshot that shows the

  4. 瀏覽 Refresh-Model.ps1 檔案、提供 [名稱] 和 [描述],然後按一下 [建立]

    注意

    使用本文件底部範例 PowerShell Runbook 區段的指令碼,建立名為 Refresh-Model.ps1 的檔案,並儲存到本機電腦以匯入 Runbook。

    Import Runbook

  5. Runbook 在建立後,將會自動進入編輯模式。 選取發行

    Publish Runbook

    注意

    Runbook 會使用 Get-AutomationPSCredential 命令來擷取先前建立的認證資源。 此命令接著會傳遞至 Invoke-ProcessASADatabase PowerShell 命令,以執行對 Azure Analysis Services 的驗證。

  6. 按一下 [啟動] 以測試 Runbook。

    Screenshot that shows the

  7. 填寫 DATABASENAMEANALYSISSERVERREFRESHTYPE 參數,然後按一下 [確定]。 手動執行 Runbook 時,不需要 WEBHOOKDATA 參數。

    Start the Runbook

如果 Runbook 執行成功,您會獲得如下的輸出:

Successful Run

使用獨立式 Azure 自動化 Runbook

Runbook 可以設定為依排程觸發 Azure Analysis Services 模型重新整理。

設定方法如下:

  1. 在自動化 Runbook 中,按一下 [排程],然後按一下 [新增排程]

    Create schedule

  2. 按一下 [排程]>[建立新排程],然後填入詳細資料。

    Configure schedule

  3. 按一下 [建立]

  4. 填入排程的參數。 每次 Runbook 觸發時都會使用這些方法。 透過排程執行時,WEBHOOKDATA 參數應保留空白。

    Configure parameters

  5. 按一下 [確定]

使用 Data Factory 取用

若要使用 Azure Data Factory 取用 Runbook,請先為 Runbook 建立 WebhookWebhook 會提供可透過 Azure Data Factory Web 活動呼叫的 URL。

重要

若要建立 Webhook,Runbook 的狀態必須是 [已發佈]

  1. 在您的自動化 Runbook 中,按一下 [Webhook],然後按一下 [新增 Webhook]

    Add Webhook

  2. 為 Webhook 指定名稱和到期日。 名稱只用於在自動化 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 要執行的重新整理類型。
範例:完整

範例 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

具有靜態公用 IP 位址的 Azure 虛擬機器可用來作為 Azure 自動化混合式背景工作角色。 然後,您可以將此公用 IP 位址新增至 Azure Analysis Services 防火牆。

重要

確定虛擬機器公用 IP 位址已設定為靜態。

若要深入了解如何設定 Azure 自動化混合式背景工作角色,請參閱混合式 Runbook 背景工作角色安裝

設定混合式背景工作角色之後,請建立 Webhook,如使用 Data Factory 取用一節所述。 此處的唯一差異在於設定 Webhook 時,請選取 [執行於]>[混合式背景工作角色] 選項。

使用混合式背景工作角色的範例 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