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.

Im Beispiel in diesem Artikel wird das SqlServer PowerShell-Modul verwendet. 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 mithilfe des Azure-Portals.

Voraussetzungen

Von Bedeutung

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 durchsuchen Sie dann den Katalog.

  2. Suchen Sie in der Suchleiste nach SqlServer.

    Suchmodule

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

    Modul importieren

  4. Klicken Sie auf "OK".

Erstellen eines Dienstprinzipals (SPN)

Weitere Informationen zum Erstellen eines Dienstprinzipals finden Sie unter Erstellen eines Dienstprinzipals mithilfe des Azure-Portals.

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 Automatisierungskonto eine Anmeldeinformationsressource, um den Dienstprinzipal sicher zu speichern.

    Screenshot der Seite

  2. Geben Sie die Details für die Anmeldeinformationen ein. Geben Sie unter "Benutzername" die Dienstprinzipalanwendungs-ID (appid) ein, und geben Sie dann im Kennwort den Dienstprinzipalschlüssel ein.

    Erstellen von Anmeldeinformationen

  3. Importieren Sie das Automation-Runbook.

    Screenshot der Seite

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

    Hinweis

    Verwenden Sie das Skript aus dem Beispiel-PowerShell-Runbook-Abschnitt unten in diesem Dokument, um eine Datei namens Refresh-Model.ps1 zu erstellen und auf dem lokalen Computer zu speichern, um in Runbook zu importieren.

    Runbook importieren

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

    Runbook veröffentlichen

    Hinweis

    Die zuvor erstellte Anmeldeinformationsressource wird vom Runbook mithilfe des Befehls "Get-AutomationPSCredential" abgerufen. Dieser Befehl wird dann an den PowerShell-Befehl Invoke-ProcessASADatabase übergeben, um die Authentifizierung für Azure Analysis Services auszuführen.

  6. Testen Sie das Runbook, indem Sie auf "Start" klicken.

    Screenshot der Seite

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

    Runbook starten

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

Erfolgreiche Ausführung

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 Automatisierungs-Runbook auf "Zeitpläne" und dann auf "Zeitplan hinzufügen".

    Zeitplan erstellen

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

    Zeitplan konfigurieren

  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 WEBHOOKDATA-Parameter sollte leer bleiben, wenn er über einen Zeitplan ausgeführt wird.

    Konfigurieren von Parametern

  5. Klicken Sie auf "OK".

Nutzen mit Data Factory

Um das Runbook mithilfe von Azure Data Factory zu nutzen, erstellen Sie zuerst einen Webhook für das Runbook. Der Webhook stellt eine URL bereit, die über eine Azure Data Factory-Webaktivität aufgerufen werden kann.

Von Bedeutung

Um einen Webhook zu erstellen, muss der Status des Runbook veröffentlicht werden.

  1. Klicken Sie in Ihrem Automatisierungs-Runbook auf Webhooks, und klicken Sie dann auf "Webhook hinzufügen".

    Hinzufügen von 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.

    Vorsicht

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

    Konfigurieren von 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 einer Webaktivität in Data Factory

Beispiel

Beispielwebaktivität

Die URL ist die URL, die aus dem Webhook erstellt wurde.

Der Textkörper ist ein JSON-Dokument, das die folgenden Eigenschaften enthalten soll:

Eigentum 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.

Deserialisierter 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.

Von Bedeutung

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

Weitere Informationen zum Konfigurieren von Azure Automation Hybrid Workers finden Sie unter Hybrid Runbook Worker-Installation.

Nachdem ein Hybrid-Worker konfiguriert wurde, erstellen Sie einen Webhook, wie im Abschnitt "Verwenden von Data Factory" beschrieben. Der einzige Unterschied besteht darin, beim Konfigurieren des Webhooks die Option " Bei>Hybrid Worker ausführen" auszuwählen.

Beispielwebhook mithilfe von Hybrid Worker:

Beispiel für 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

Proben
REST-API