Aktualisieren mit Azure Automation

Mithilfe von Azure Automation und PowerShell-Runbooks können Sie automatisierte Datenaktualisierungsvorgänge für Ihre Azure Analysis-Tabellenmodelle ausführen.

Das Beispiel in diesem Artikel verwendet das SqlServer-PowerShell-Modul. Ein PowerShell-Beispielrunbook, das die Aktualisierung eines Modells veranschaulicht, wird weiter unten in diesem Artikel bereitgestellt.

Authentifizierung

Alle Aufrufe müssen mit einem gültigen Microsoft Entra ID-Token (OAuth 2) authentifiziert werden. Das Beispiel in diesem Artikel verwendet einen Dienstprinzipalnamen (Service Principal Name, SPN) für die Authentifizierung bei Azure Analysis Services. Weitere Informationen finden Sie unter Erstellen eines Dienstprinzipals im Azure-Portal.

Voraussetzungen

Wichtig

Das folgende Beispiel setzt voraus, dass die Azure Analysis Services-Firewall deaktiviert ist. Wenn eine Firewall aktiviert ist, muss die öffentliche IP-Adresse des Anforderungsinitiators in einer Firewallregel enthalten sein.

  1. Klicken Sie in Ihrem Azure Automation-Konto auf Module und anschließend auf Katalog durchsuchen.

  2. Suchen Sie über die Suchleiste nach SqlServer.

    Search Modules

  3. Wählen Sie „SqlServer“ aus, und klicken Sie dann auf Importieren.

    Import Module

  4. Klicken Sie auf OK.

Erstellen eines Dienstprinzipals (SPN)

Informationen zum Erstellen eines Dienstprinzipals finden Sie unter Erstellen eines Dienstprinzipals im Azure-Portal.

Konfigurieren von Berechtigungen in Azure Analysis Services

Der von Ihnen erstellte Dienstprinzipal muss über Serveradministratorberechtigungen auf dem Server verfügen. Weitere Informationen finden Sie unter Hinzufügen eines Dienstprinzipals zur Serveradministratorrolle.

Entwerfen des Azure Automation-Runbooks

  1. Erstellen Sie im Automation-Konto eine Anmeldeinformationsressource, die verwendet wird, um den Dienstprinzipal sicher zu speichern.

    Screenshot that shows the

  2. Geben Sie die Details für die Anmeldeinformationen ein. Geben Sie bei Benutzername die Anwendungs-ID (App-ID) des Dienstprinzipals und dann bei Kennwort das Geheimnis für den Dienstprinzipal ein.

    Create credential

  3. Importieren Sie das Automation-Runbook.

    Screenshot that shows the

  4. Suchen Sie nach der Datei Refresh-Model.ps1, geben Sie einen Namen und eine Beschreibung an, und klicken Sie dann auf Erstellen.

    Hinweis

    Verwenden Sie das Skript aus dem Abschnitt PowerShell-Beispielrunbook am Ende dieses Dokuments, um eine Datei namens „Refresh-Model.ps1“ zu erstellen und auf dem lokalen Computer zu speichern, um sie in Runbook zu importieren.

    Import Runbook

  5. Nachdem das Runbook erstellt wurde, wechselt es automatisch in den Bearbeitungsmodus. Wählen Sie Veröffentlichen aus.

    Publish Runbook

    Hinweis

    Die zuvor erstellte Anmeldeinformationsressource wird mit dem Befehl Get-AutomationPSCredential vom Runbook abgerufen. Dieser Befehl wird dann an den PowerShell-Befehl Invoke-ProcessASADatabase übergeben, um die Authentifizierung bei Azure Analysis Services durchzuführen.

  6. Klicken Sie auf Start, um das Runbook zu testen.

    Screenshot that shows the

  7. Füllen Sie die Parameter DATABASENAME, ANALYSISSERVER und REFRESHTYPE aus, und klicken Sie dann auf OK. Der Parameter WEBHOOKDATA ist nicht erforderlich, wenn das Runbook manuell ausgeführt wird.

    Start the Runbook

Wenn das Runbook erfolgreich ausgeführt wurde, erhalten Sie eine Ausgabe ähnlich der folgenden:

Successful Run

Verwenden eines eigenständigen Azure Automation-Runbooks

Das Runbook kann so konfiguriert werden, dass die Aktualisierung des Azure Analysis Services-Modells nach Zeitplan ausgelöst wird.

Dies kann wie folgt konfiguriert werden:

  1. Klicken Sie im Automation-Runbook auf Zeitpläne und dann auf Zeitplan hinzufügen.

    Create schedule

  2. Klicken Sie auf Zeitplan>Neuen Zeitplan erstellen, und geben Sie dann die Details ein.

    Configure schedule

  3. Klicken Sie auf Erstellen.

  4. Füllen Sie die Parameter für den Zeitplan aus. Diese werden jedes Mal verwendet, wenn das Runbook ausgelöst wird. Der Parameter WEBHOOKDATA muss leer bleiben, wenn die Ausführung nach einem Zeitplan erfolgt.

    Configure parameters

  5. Klicken Sie auf OK.

Nutzen mit Data Factory

Um das Runbook mithilfe von Azure Data Factory zu nutzen, müssen Sie zunächst einen Webhook für das Runbook erstellen. Der Webhook enthält eine URL, die über eine Azure Data Factory-Webaktivität aufgerufen werden kann.

Wichtig

Zum Erstellen eines Webhooks muss das Runbook den Status Veröffentlicht aufweisen.

  1. Klicken Sie in Ihrem Automation-Runbook auf Webhooks und dann auf Webhook hinzufügen.

    Add Webhook

  2. Geben Sie für den Webhook einen Namen und ein Ablaufdatum an. Mit dem Namen wird der Webhook lediglich im Automation-Runbook identifiziert, er ist kein Bestandteil der URL.

    Achtung

    Kopieren Sie die URL vor dem Schließen des Assistenten. Nach dem Schließen können Sie nicht mehr zurückkehren.

    Configure Webhook

    Die Parameter für den Webhook können leer bleiben. Wenn Sie die Azure Data Factory-Webaktivität konfigurieren, können die Parameter in den Text des Webaufrufs übergeben werden.

  3. Konfigurieren Sie in Data Factory eine Webaktivität.

Beispiel

Example Web Activity

Die URL ist die aus dem Webhook erstellte URL.

Der Text ist ein JSON-Dokument, das die folgenden Eigenschaften enthalten muss:

Eigenschaft Wert
AnalysisServicesDatabase Name der Azure Analysis Services-Datenbank
Beispiel: AdventureWorksDB
AnalysisServicesServer Name des Azure Analysis Services-Servers
Beispiel: https://westus.asazure.windows.net/servers/myserver/models/AdventureWorks/
DatabaseRefreshType Typ der auszuführenden Aktualisierung
Beispiel: Vollständig

JSON-Beispieltext:

{
    "AnalysisServicesDatabaseName": "AdventureWorksDB",
    "AnalysisServicesServer": "asazure://westeurope.asazure.windows.net/MyAnalysisServer",
    "DatabaseRefreshType": "Full"
}

Diese Parameter werden im PowerShell-Skript des Runbooks definiert. Wenn die Webaktivität ausgeführt wird, wird als JSON-Nutzlast WEBHOOKDATA übergeben.

Dies wird deserialisiert und als PowerShell-Parameter gespeichert, die dann im PowerShell-Befehl Invoke-ProcessASDatabase verwendet werden.

Deserialized Webhook

Verwenden eines Hybrid Workers mit Azure Analysis Services

Ein virtueller Azure-Computer mit einer statischen öffentlichen IP-Adresse kann als Azure Automation Hybrid Worker verwendet werden. Diese öffentliche IP-Adresse kann dann der Azure Analysis Services-Firewall hinzugefügt werden.

Wichtig

Stellen Sie sicher, dass die öffentliche IP-Adresse des virtuellen Computers als statische Adresse konfiguriert ist.

Weitere Informationen zum Konfigurieren von Azure Automation Hybrid Worker finden Sie unter Installieren eines Hybrid Runbook Workers.

Erstellen Sie nach dem Konfigurieren eines Hybrid Workers einen Webhook entsprechend der Beschreibung im Abschnitt Nutzen mit Data Factory. Als einzigen Unterschied wählen Sie hier beim Konfigurieren des Webhooks die Option Ausführen auf>Hybrid Worker aus.

Beispielwebhook mithilfe von Hybrid Worker:

Example Hybrid Worker Webhook

PowerShell-Beispielrunbook

Der folgende Codeausschnitt ist ein Beispiel dafür, wie die Aktualisierung des Azure Analysis Services-Modells mit einem PowerShell-Runbook durchgeführt werden kann.

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
}

Nächste Schritte

Beispiele
REST-API