Uppdatera med Azure Automation
Genom att använda Azure Automation och PowerShell Runbooks kan du utföra automatiserade datauppdateringsåtgärder på dina Azure Analysis-tabellmodeller.
I exemplet i den här artikeln används SqlServer PowerShell-modulen. Ett exempel på En PowerShell-runbook som visar hur du uppdaterar en modell finns senare i den här artikeln.
Autentisering
Alla anrop måste autentiseras med en giltig OAuth 2-token (Microsoft Entra ID). Exemplet i den här artikeln använder ett tjänsthuvudnamn (SPN) för att autentisera till Azure Analysis Services. Mer information finns i Skapa ett huvudnamn för tjänsten med hjälp av Azure Portal.
Förutsättningar
Viktigt!
I följande exempel förutsätter vi att Azure Analysis Services-brandväggen är inaktiverad. Om en brandvägg är aktiverad måste den offentliga IP-adressen för begärandeinitieraren inkluderas i en brandväggsregel.
Installera SqlServer-moduler från PowerShell-galleriet.
I ditt Azure Automation-konto klickar du på Moduler och sedan på Bläddra i galleriet.
Sök efter SqlServer i sökfältet.
Välj SqlServer och klicka sedan på Importera.
Klicka på OK.
Skapa ett tjänsthuvudnamn (SPN)
Mer information om hur du skapar ett huvudnamn för tjänsten finns i Skapa ett huvudnamn för tjänsten med hjälp av Azure Portal.
Konfigurera behörigheter i Azure Analysis Services
Tjänstens huvudnamn som du skapar måste ha serveradministratörsbehörighet på servern. Mer information finns i Lägga till ett huvudnamn för tjänsten till serveradministratörsrollen.
Utforma Azure Automation Runbook
I Automation-kontot skapar du en resurs för autentiseringsuppgifter som ska användas för att lagra tjänstens huvudnamn på ett säkert sätt.
Ange information om autentiseringsuppgifterna. I Användarnamn anger du program-ID för tjänstens huvudnamn (appid) och anger sedan tjänstens huvudnamnshemlighet i Lösenord.
Importera Automation Runbook.
Bläddra efter filen Refresh-Model.ps1, ange ett namn och en beskrivning och klicka sedan på Skapa.
Kommentar
Använd skript från PowerShell Runbook-exempelavsnittet längst ned i det här dokumentet för att skapa en fil med namnet Refresh-Model.ps1 och spara på den lokala datorn för att importera till Runbook.
När Runbook har skapats går den automatiskt i redigeringsläge. Välj Publicera.
Kommentar
Den autentiseringsresurs som skapades tidigare hämtas av runbooken med hjälp av kommandot Get-AutomationPSCredential . Det här kommandot skickas sedan till kommandot Invoke-ProcessASADatabase PowerShell för att utföra autentiseringen till Azure Analysis Services.
Testa runbooken genom att klicka på Start.
Fyll i parametrarna DATABASENAME, ANALYSISSERVER och REFRESHTYPE och klicka sedan på OK. Parametern WEBHOOKDATA krävs inte när Runbook körs manuellt.
Om Runbook har körts får du utdata som liknar följande:
Använda en fristående Azure Automation Runbook
Runbooken kan konfigureras för att utlösa uppdateringen av Azure Analysis Services-modellen enligt ett schema.
Detta kan konfigureras på följande sätt:
I Automation Runbook klickar du på Scheman och sedan på Lägg till ett schema.
Klicka på Schemalägg>Skapa ett nytt schema och fyll sedan i informationen.
Klicka på Skapa.
Fyll i parametrarna för schemat. Dessa används varje gång Runbook utlöses. Parametern WEBHOOKDATA bör lämnas tom när den körs via ett schema.
Klicka på OK.
Använda med Data Factory
Om du vill använda runbooken med hjälp av Azure Data Factory skapar du först en Webhook för runbooken. Webhook tillhandahåller en URL som kan anropas via en Azure Data Factory-webbaktivitet.
Viktigt!
Om du vill skapa en Webhook måste runbookens status vara Publicerad.
I Automation Runbook klickar du på Webhooks och sedan på Lägg till webhook.
Ge Webhook ett namn och ett förfallodatum. Namnet identifierar bara webhooken i Automation Runbook, den utgör inte en del av URL:en.
Varning
Se till att du kopierar URL:en innan du stänger guiden eftersom du inte kan få tillbaka den när den har stängts.
Parametrarna för webhooken kan förbli tomma. När du konfigurerar Azure Data Factory-webbaktiviteten kan parametrarna skickas till webbanropets brödtext.
Konfigurera en webbaktivitet i Data Factory
Exempel
URL:en är url:en som skapats från webhooken.
Brödtexten är ett JSON-dokument som ska innehålla följande egenskaper:
Property | Värde |
---|---|
AnalysisServicesDatabase | Namnet på Azure Analysis Services-databasen Exempel: AdventureWorksDB |
AnalysisServicesServer | Azure Analysis Services-servernamnet. Exempel: https://westus.asazure.windows.net/servers/myserver/models/AdventureWorks/ |
DatabaseRefreshType | Vilken typ av uppdatering som ska utföras. Exempel: Fullständig |
Exempel på JSON-brödtext:
{
"AnalysisServicesDatabaseName": "AdventureWorksDB",
"AnalysisServicesServer": "asazure://westeurope.asazure.windows.net/MyAnalysisServer",
"DatabaseRefreshType": "Full"
}
Dessa parametrar definieras i Runbook PowerShell-skriptet. När webbaktiviteten körs skickas JSON-nyttolasten WEBHOOKDATA.
Detta deserialiseras och lagras som PowerShell-parametrar, som sedan används av kommandot Invoke-ProcessASDatabase PowerShell.
Använda en hybridarbetare med Azure Analysis Services
En virtuell Azure-dator med en statisk offentlig IP-adress kan användas som Azure Automation Hybrid Worker. Den här offentliga IP-adressen kan sedan läggas till i Azure Analysis Services-brandväggen.
Viktigt!
Kontrollera att den offentliga IP-adressen för den virtuella datorn är konfigurerad som statisk.
Mer information om hur du konfigurerar Azure Automation Hybrid Workers finns i Installation av Hybrid Runbook Worker.
När en Hybrid Worker har konfigurerats skapar du en Webhook enligt beskrivningen i avsnittet Förbruka med Data Factory. Den enda skillnaden här är att välja alternativet Kör på>Hybrid Worker när du konfigurerar Webhook.
Exempel på webhook med Hybrid Worker:
PowerShell-exempel runbook
Följande kodfragment är ett exempel på hur du utför Azure Analysis Services-modelluppdateringen med hjälp av en PowerShell-runbook.
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
}