Aktualizace s využitím služby Azure Automation
Pomocí runbooků Azure Automation a PowerShellu můžete provádět automatizované operace aktualizace dat na tabulkových modelech Azure Analysis.
Příklad v tomto článku používá modul SqlServer PowerShell. Ukázkový runbook PowerShellu, který ukazuje aktualizaci modelu, je k dispozici dále v tomto článku.
Ověřování
Všechna volání musí být ověřena pomocí platného tokenu Microsoft Entra ID (OAuth 2). Příklad v tomto článku používá instanční objekt (SPN) k ověření ve službě Azure Analysis Services. Další informace najdete v tématu Vytvoření instančního objektu pomocí webu Azure Portal.
Požadavky
Důležité
Následující příklad předpokládá, že je zakázaná brána firewall služby Azure Analysis Services. Pokud je povolená brána firewall, musí být veřejná IP adresa iniciátoru požadavku zahrnutá do pravidla brány firewall.
Nainstalujte moduly SqlServer z galerie Prostředí PowerShell.
Ve svém účtu Azure Automation klikněte na Moduly a pak na Procházet galerii.
Na panelu hledání vyhledejte SqlServer.
Vyberte SqlServer a potom klikněte na Importovat.
Klikněte na OK.
Vytvoření instančního objektu (SPN)
Další informace o vytvoření instančního objektu najdete v tématu Vytvoření instančního objektu pomocí webu Azure Portal.
Konfigurace oprávnění ve službě Azure Analysis Services
Instanční objekt, který vytvoříte, musí mít na serveru oprávnění správce serveru. Další informace najdete v tématu Přidání instančního objektu do role správce serveru.
Návrh runbooku Azure Automation
V účtu Automation vytvořte prostředek přihlašovacích údajů , který se použije k bezpečnému uložení instančního objektu.
Zadejte podrobnosti o přihlašovacích údajích. Do pole Uživatelské jméno zadejte ID aplikace instančního objektu (appid) a pak do pole Heslo zadejte tajný klíč instančního objektu.
Importujte runbook Automation.
Vyhledejte soubor Refresh-Model.ps1, zadejte název a popis a klikněte na vytvořit.
Poznámka:
Pomocí skriptu z ukázkové části runbooku PowerShellu v dolní části tohoto dokumentu vytvořte soubor s názvem Refresh-Model.ps1 a uložte ho do místního počítače pro import do runbooku.
Po vytvoření runbooku se automaticky přejde do režimu úprav. Vyberte Publikovat.
Poznámka:
Prostředek přihlašovacích údajů, který byl vytvořen dříve, je načten runbook pomocí příkazu Get-AutomationPSCredential . Tento příkaz se pak předá příkazu Invoke-ProcessASADatabase PowerShellu, který provede ověření do služby Azure Analysis Services.
Otestujte runbook kliknutím na Start.
Vyplňte parametry DATABASENAME, ANALYSISSERVER a REFRESHTYPE a klepněte na tlačítko OK. Parametr WEBHOOKDATA není vyžadován při ručním spuštění runbooku.
Pokud se runbook úspěšně spustil, zobrazí se výstup podobný tomuto:
Použití samostatného runbooku Azure Automation
Runbook je možné nakonfigurovat tak, aby aktivoval aktualizaci modelu služby Azure Analysis Services podle plánu.
Můžete ho nakonfigurovat následujícím způsobem:
V runbooku Automation klikněte na Plány a pak přidejte plán.
Klikněte na Naplánovat>vytvoření nového plánu a vyplňte podrobnosti.
Klikněte na Vytvořit.
Vyplňte parametry plánu. Ty se použijí při každém triggeru runbooku. Parametr WEBHOOKDATA by měl být při spuštění prostřednictvím plánu ponechán prázdný.
Klikněte na OK.
Využívání se službou Data Factory
Pokud chcete runbook využívat pomocí služby Azure Data Factory, nejprve vytvořte webhook pro runbook. Webhook poskytne adresu URL, kterou je možné volat prostřednictvím webové aktivity služby Azure Data Factory.
Důležité
Pokud chcete vytvořit webhook, musí být stav runbooku Publikováno.
V runbooku Automation klikněte na webhooky a potom klepněte na tlačítko Přidat webhook.
Dejte webhooku název a vypršení platnosti. Název identifikuje pouze webhook v runbooku Automation, který není součástí adresy URL.
Upozornění
Před zavřením průvodce se ujistěte, že adresu URL zkopírujete, protože ji nemůžete po zavření vrátit zpět.
Parametry webhooku můžou zůstat prázdné. Při konfiguraci webové aktivity služby Azure Data Factory je možné parametry předat do textu webového volání.
Ve službě Data Factory nakonfigurujte webovou aktivitu.
Příklad
Adresa URL je adresa URL vytvořená z webhooku.
Text je dokument JSON, který by měl obsahovat následující vlastnosti:
Vlastnost | Hodnota |
---|---|
AnalysisServicesDatabase | Název databáze služby Azure Analysis Services Příklad: AdventureWorksDB |
AnalysisServicesServer | Název serveru Azure Analysis Services. Příklad: https://westus.asazure.windows.net/servers/myserver/models/AdventureWorks/ |
DatabaseRefreshType | Typ aktualizace, kterou chcete provést. Příklad: Úplná |
Příklad textu JSON:
{
"AnalysisServicesDatabaseName": "AdventureWorksDB",
"AnalysisServicesServer": "asazure://westeurope.asazure.windows.net/MyAnalysisServer",
"DatabaseRefreshType": "Full"
}
Tyto parametry jsou definovány ve skriptu PowerShellu runbooku. Při spuštění webové aktivity se předá datová část JSON webHOOKDATA.
Toto je deserializováno a uloženo jako parametry PowerShellu, které se pak používají příkazem PowerShellu Invoke-ProcessASDatabase.
Použití funkce Hybrid Worker se službou Azure Analysis Services
Virtuální počítač Azure se statickou veřejnou IP adresou se dá použít jako Hybrid Worker služby Azure Automation. Tuto veřejnou IP adresu pak můžete přidat do brány firewall služby Azure Analysis Services.
Důležité
Ujistěte se, že je veřejná IP adresa virtuálního počítače nakonfigurovaná jako statická.
Další informace o konfiguraci hybridních pracovních procesů Azure Automation najdete v tématu Instalace funkce Hybrid Runbook Worker.
Jakmile je hybrid Worker nakonfigurovaný, vytvořte webhook, jak je popsáno v části Využití se službou Data Factory. Jediným rozdílem je výběr možnosti Spustit v>hybrid Workeru při konfiguraci webhooku.
Příklad webhooku s využitím Funkce Hybrid Worker:
Ukázkový runbook PowerShellu
Následující fragment kódu je příkladem provedení aktualizace modelu služby Azure Analysis Services pomocí runbooku PowerShellu.
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
}