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.
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.
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.
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.
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.
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.
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.
Anteckning
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.
Anteckning
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:
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.
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
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.
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:
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
}