使用 Azure 自動化重新整理
藉由使用 Azure 自動化 和 PowerShell Runbook,您可以在 Azure 分析方格式模型上執行自動化的資料重新整理作業。
本文中的範例會使用 SqlServer PowerShell 模組 。 本文稍後會提供示範重新整理模型的範例 PowerShell Runbook。
驗證
所有呼叫都必須使用有效的 Microsoft Entra ID (OAuth 2) 權杖進行驗證。 本文中的範例會使用服務主體 (SPN) 向 Azure Analysis Services 進行驗證。 若要深入瞭解,請參閱 使用 Azure 入口網站 建立服務主體。
必要條件
重要
下列範例假設 Azure Analysis Services 防火牆已停用。 如果已啟用防火牆,要求啟動器的公用 IP 位址必須包含在防火牆規則中。
從 PowerShell 資源庫安裝 SqlServer 模組。
在您的Azure 自動化帳戶中,按一下 [模組 ],然後按一下 [ 流覽資源庫 ]。
在搜尋列中,搜尋 SqlServer 。
選取 [SqlServer],然後按一下 [ 匯入 ]。
按一下 [確定]。
建立服務主體 (SPN)
若要瞭解如何建立服務主體,請參閱 使用 Azure 入口網站 建立服務主體。
在 Azure Analysis Services 中設定許可權
您建立的服務主體在伺服器上必須具有伺服器管理員許可權。 若要深入瞭解,請參閱 將服務主體新增至伺服器管理員角色 。
設計 Azure 自動化 Runbook
在自動化帳戶中,建立 認證資源,以用來安全地儲存服務主體。
輸入認證的詳細資料。 在 [ 使用者名稱] 中,輸入服務主體應用程式識別碼 (appid),然後在 [ 密碼 ] 中輸入服務主體密碼。
匯入自動化 Runbook。
流覽 Refresh-Model.ps1 檔案、提供 [名稱 ] 和 [描述 ],然後按一下 [ 建立 ]。
注意
使用本檔底部範例 PowerShell Runbook 區段的腳本 來建立名為 Refresh-Model.ps1 的檔案,並儲存至本機電腦以匯入 Runbook。
建立 Runbook 之後,它會自動進入編輯模式。 選取發行。
注意
先前建立的認證資源是由 Runbook 使用 Get-AutomationPSCredential 命令擷取。 此命令接著會傳遞至 Invoke-ProcessASADatabase PowerShell 命令,以對 Azure Analysis Services 執行驗證。
按一下 [啟動 ] 以測試 Runbook。
填寫 DATABASENAME 、 ANALYSISSERVER 和 REFRESHTYPE 參數,然後按一下 [ 確定 ]。 當 Runbook 手動執行時,不需要 WEBHOOKDATA 參數。
如果 Runbook 執行成功,您會收到如下的輸出:
使用獨立Azure 自動化 Runbook
Runbook 可以設定為依排程觸發 Azure Analysis Services 模型重新整理。
這可以設定如下:
在自動化 Runbook 中,按一下 [ 排程],然後按一下 [ 新增排程 ]。
按一下 [ 排程 > ] [建立新的排程 ],然後填入詳細資料。
按一下 [建立]。
填入排程的參數。 每次 Runbook 觸發時,都會使用這些參數。 透過排程執行時,WEBHOOKDATA 參數應該保留空白。
按一下 [確定]。
使用 Data Factory 取用
若要使用 Azure Data Factory 取用 Runbook,請先 建立 Runbook 的 Webhook 。 Webhook 將提供可透過 Azure Data Factory Web 活動呼叫的 URL。
重要
若要建立 Webhook,Runbook 的狀態必須是 已發佈 。
在您的自動化 Runbook 中,按一下 [Webhook] ,然後按一下 [ 新增 Webhook ]。
為 Webhook 提供名稱和到期日。 名稱只會識別自動化 Runbook 內的 Webhook,它不會構成 URL 的一部分。
警告
在關閉精靈之前,請確定您先複製 URL,因為一旦關閉,就無法返回該 URL。
Webhook 的參數可以保持空白。 設定 Azure Data Factory Web 活動時,參數可以傳遞至 Web 呼叫的主體。
在 Data Factory 中,設定 Web 活動
範例
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 命令使用。
搭配 Azure Analysis Services 使用混合式背景工作角色
具有靜態公用 IP 位址的 Azure 虛擬機器可用來作為混合式背景工作角色Azure 自動化。 然後,此公用 IP 位址可以新增至 Azure Analysis Services 防火牆。
設定混合式背景工作角色之後,請建立 Webhook,如使用 Data Factory 取用一節 中所述。 這裡唯一的差異在於設定 Webhook 時,選取 [在混合式背景工作 角色上 > 執行] 選項。
使用混合式背景工作角色的範例 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
}