Partager via


Actualiser avec Azure Automation

Azure Automation et les runbooks PowerShell vous permettent d’effectuer des opérations d’actualisation de données automatiques sur vos modèles tabulaires Azure Analysis.

L’exemple de cet article utilise le module SqlServer PowerShell. Un exemple de runbook PowerShell illustrant l’actualisation d’un modèle est fourni plus loin dans cet article.

Authentification

Tous les appels doivent être authentifiés avec un jeton Microsoft Entra ID (OAuth 2) valide. L’exemple fourni dans cet article utilise un principal de service (SPN) pour s’authentifier auprès d’Azure Analysis Services. Pour en savoir plus, consultez Créer un principal du service à l’aide du portail Azure.

Prérequis

Important

L’exemple suivant suppose que le pare-feu Azure Analysis Services est désactivé. Si le pare-feu est activé, l’adresse IP publique de l’initiateur de la requête doit figurer dans une règle de pare-feu.

  1. Dans votre compte Azure Automation, cliquez sur Modules, puis Parcourir la galerie.

  2. Dans la barre de recherche, recherchez SqlServer.

    Rechercher des modules

  3. Sélectionnez SqlServer, puis cliquez sur Importer.

    Importer un module

  4. Cliquez sur OK.

Créer un principal de service (SPN)

Pour en savoir plus sur la création d’un principal de service, consultez Créer un principal du service à l’aide du portail Azure.

Configurer des autorisations dans Azure Analysis Services

Le principal du service que vous créez doit disposer d’autorisations d’administrateur du serveur sur le serveur. Pour plus d’informations, consultez Ajouter un principal de service au rôle d’administrateur du serveur

Concevoir le runbook Azure Automation

  1. Dans le compte Automation, créez une ressources Informations d’identification qui sera utilisée pour stocker le principal de service en toute sécurité.

    Capture d’écran de la page « Informations d’identification » avec l’action « Ajouter des informations d’identification » sélectionnée

  2. Entrez les détails des informations d’identification. Dans Nom d’utilisateur, entrez l’ID de l’application du principal de service (appid). Ensuite, entrez le secret du principal de service dans Mot de passe.

    Créer des informations d’identification

  3. Importez le runbook Automation.

    Capture d’écran de la page « Runbooks » avec l’action « Importer un runbook » sélectionnée

  4. Recherchez le fichier Refresh-Model.ps1, fournissez un nom et une description, puis cliquez sur Créer.

    Remarque

    Utilisez le script de la section Exemple de runbook PowerShell au bas de ce document pour créer un fichier appelé Refresh-Model.ps1, et enregistrez-le sur l’ordinateur local pour l’importer dans le runbook.

    Importer un Runbook

  5. Une fois le runbook créé, il passe automatiquement en mode d’édition. Sélectionnez Publier.

    Publier un runbook

    Remarque

    La ressource d’informations d’identification créée précédemment est récupérée par le runbook à l’aide de la commande Get-AutomationPSCredential. Cette commande est ensuite transmise à la commande PowerShell Invoke-ProcessASADatabase pour effectuer l’authentification auprès d’Azure Analysis Services.

  6. Testez le runbook en cliquant sur Démarrer.

    Capture d’écran de la page « Vue d’ensemble » avec l’action « Démarrer » sélectionnée

  7. Renseignez les paramètres DATABASENAME, ANALYSISSERVER et REFRESHTYPE, puis cliquez sur OK. Le paramètre WEBHOOKDATA n’est pas obligatoire lorsque le runbook est exécuté manuellement.

    Démarrer le runbook

Si le runbook a été correctement exécuté, vous recevrez une sortie telle que la suivante :

Exécution réussie

Utiliser un runbook Azure Automation autonome

Le runbook peut être configuré pour déclencher l’actualisation du modèle Azure Analysis Services de manière planifiée.

Vous pouvez le configurer comme suit :

  1. Dans le runbook Automation, cliquez sur Planifications, puis sur Ajouter une planification.

    Créer une planification

  2. Cliquez sur Planification>Créer une planification, puis renseignez les détails.

    Configurer la planification

  3. Cliquez sur Créer.

  4. Renseignez les paramètres de la planification. Ils seront utilisés à chaque déclenchement du runbook. Le paramètre WEBHOOKDATA doit être laissé vide lors de l’exécution via une planification.

    Configurer les paramètres

  5. Cliquez sur OK.

Utiliser avec Data Factory

Pour utiliser le runbook à l’aide d’Azure Data Factory, commencez par créer abord un Webhook pour le runbook. Le Webhook fournit une URL qui peut être appelée via une activité web Azure Data Factory.

Important

Pour pouvoir créer un Webhook, l’état du runbook doit être publié.

  1. Dans votre runbook Automation, cliquez sur Webhooks, puis sur Ajouter un Webhook.

    Ajouter un Webhook

  2. Attribuez eu Webhook un nom et une date d’expiration. Le nom identifie uniquement le Webhook à l’intérieur du runbook Automation, et ne fait pas partie de l’URL.

    Attention

    Veillez à copier l’URL avant de fermer l’Assistant, car vous ne pourrez pas la récupérer une fois fermée.

    Configurer un Webhook

    Les paramètres pour le Webhook peuvent rester vides. Lors de la configuration de l’activité web d’Azure Data Factory, les paramètres peuvent être transmis dans le corps de l’appel web.

  3. Dans Data Factory, configurez une activité web.

Exemple

Exemple d’activité web.

L’URL est celle créée à partir du Webhook.

Le corps est un document JSON qui doit contenir les propriétés suivantes :

Propriété Valeur
AnalysisServicesDatabase Nom de la base de données Azure Analysis Services.
Exemple : AdventureWorksDB
AnalysisServicesServer Nom du serveur Azure Analysis Services.
Exemple : https://westus.asazure.windows.net/servers/myserver/models/AdventureWorks/
DatabaseRefreshType Type d’actualisation à effectuer.
Exemple : Complet

Exemple de corps JSON :

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

Ces paramètres sont définis dans le script PowerShell du runbook. Lors de l’exécution de l’activité web, la charge utile JSON transmise est WEBHOOKDATA.

Ceux-ci sont désérialisés et stockés sous la forme de paramètres PowerShell qui sont ensuite utilisés par la commande PowerShell Invoke-ProcessASDatabase.

Webhook désérialisé

Utiliser un Worker hybride avec Azure Analysis Services

Une machine virtuelle Azure avec une adresse IP publique statique peut être utilisée en tant qu’Azure Automation Hybrid Worker. Vous pouvez ajouter cette adresse IP publique au pare-feu Azure Analysis Services.

Important

Vérifiez que l’adresse IP publique de machine virtuelle est configurée comme statique.

Pour en savoir plus sur la configuration d’Azure Automation Hybrid Worker, consultez Installation d’un Runbook Worker hybride.

Une fois un Worker hybride configuré, créez un Webhook comme décrit dans la section Consommer avec Data Factory. La seule différence ici consiste à sélectionner l’option Exécuter sur>Worker hybride lors de la configuration du Webhook.

Exemple de Webhook à l’aide d’un Worker hybride :

Exemple de Webhook de Worker hybride

Exemple de Runbook PowerShell

L’extrait de code suivant montre comment effectuer l’actualisation de modèle Azure Analysis Services à l’aide d’un runbook PowerShell.

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
}

Étapes suivantes

Exemples
REST API