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.
Installez les modules SqlServer à partir de la galerie PowerShell.
Dans votre compte Azure Automation, cliquez sur Modules, puis Parcourir la galerie.
Dans la barre de recherche, recherchez SqlServer.
Sélectionnez SqlServer, puis cliquez sur Importer.
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
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é.
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.
Importez le runbook Automation.
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.
Une fois le runbook créé, il passe automatiquement en mode d’édition. Sélectionnez Publier.
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.
Testez le runbook en cliquant sur Démarrer.
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.
Si le runbook a été correctement exécuté, vous recevrez une sortie telle que la suivante :
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 :
Dans le runbook Automation, cliquez sur Planifications, puis sur Ajouter une planification.
Cliquez sur Planification>Créer une planification, puis renseignez les détails.
Cliquez sur Créer.
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.
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é.
Dans votre runbook Automation, cliquez sur Webhooks, puis sur Ajouter un Webhook.
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.
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.
Dans Data Factory, configurez une activité web.
Exemple
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.
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 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
}