Eseguire l'aggiornamento con Automazione di Azure
Usando i runbook di Automazione di Azure e PowerShell, è possibile eseguire operazioni di aggiornamento dei dati automatizzate nei modelli tabulari di Analisi di Azure.
Nell'esempio riportato in questo articolo viene usato il modulo SqlServer PowerShell. Un runbook di PowerShell di esempio, che illustra l'aggiornamento di un modello, viene fornito più avanti in questo articolo.
Autenticazione
Tutte le chiamate devono essere autenticate con un token Microsoft Entra ID (OAuth 2) valido. L'esempio in questo articolo usa un'entità servizio (SPN) per eseguire l'autenticazione in Azure Analysis Services. Per altre informazioni, vedere Creare un'entità servizio usando il portale di Azure.
Prerequisiti
Importante
L'esempio seguente presuppone che il firewall di Azure Analysis Services sia disabilitato. Se un firewall è abilitato, l'indirizzo IP pubblico dell'iniziatore della richiesta deve essere incluso in una regola del firewall.
Installare moduli SqlServer dalla raccolta di PowerShell.
Nell'account Automazione di Azure fare clic su Moduli e quindi su Sfoglia raccolta.
Nella barra di ricerca cercare SqlServer.
Selezionare SqlServer, quindi fare clic su Importa.
Fare clic su OK.
Creare un'entità servizio (SPN)
Per informazioni sulla creazione di un'entità servizio, vedere Creare un'entità servizio usando il portale di Azure.
Configurare le autorizzazioni in Azure Analysis Services
L'entità servizio creata deve avere le autorizzazioni di amministratore del server nel server. Per altre informazioni, vedere Aggiungere un'entità servizio al ruolo di amministratore del server.
Progettare il runbook Automazione di Azure
Nell'account di Automazione creare una risorsa Credenziali che verrà usata per archiviare in modo sicuro l'entità servizio.
Immettere i dettagli per le credenziali. In Nome utente immettere l'ID applicazione dell'entità servizio (appid) e quindi in Password immettere il segreto dell'entità servizio.
Importare il runbook di automazione.
Cercare il file Refresh-Model.ps1, specificare un nome e una descrizione e quindi fare clic su Crea.
Nota
Usare lo script della sezione Sample PowerShell Runbook (Runbook powerShell di esempio) nella parte inferiore di questo documento per creare un file denominato Refresh-Model.ps1 e salvare nel computer locale da importare in Runbook.
Quando il runbook è stato creato, passerà automaticamente in modalità di modifica. Seleziona Pubblica.
Nota
La risorsa credenziali creata in precedenza viene recuperata dal runbook usando il comando Get-AutomationPSCredential . Questo comando viene quindi passato al comando PowerShell Invoke-ProcessASADatabase per eseguire l'autenticazione in Azure Analysis Services.
Testare il runbook facendo clic su Avvia.
Compilare i parametri DATABASENAME, ANALYSISSERVER e REFRESHTYPE , quindi fare clic su OK. Il parametro WEBHOOKDATA non è obbligatorio quando il runbook viene eseguito manualmente.
Se il runbook viene eseguito correttamente, si riceverà un output simile al seguente:
Usare un runbook Automazione di Azure autonomo
Il runbook può essere configurato per attivare l'aggiornamento del modello di Azure Analysis Services in base a una pianificazione.
Questa operazione può essere configurata nel modo seguente:
Nel runbook di automazione fare clic su Pianificazioni e quindi su Aggiungi pianificazione.
Fare clic su Pianifica>crea una nuova pianificazione e quindi compilare i dettagli.
Cliccare su Crea.
Compilare i parametri per la pianificazione. Questi verranno usati ogni volta che il runbook viene attivato. Il parametro WEBHOOKDATA deve essere lasciato vuoto durante l'esecuzione tramite una pianificazione.
Fare clic su OK.
Usare con Data Factory
Per usare il runbook usando Azure Data Factory, creare prima di tutto un webhook per il runbook. Il webhook fornirà un URL che può essere chiamato tramite un'attività Web di Azure Data Factory.
Importante
Per creare un webhook, lo stato del runbook deve essere Pubblicato.
Nel runbook di Automazione fare clic su Webhook e quindi su Aggiungi webhook.
Assegnare un nome al webhook e una scadenza. Il nome identifica solo il webhook all'interno del runbook di Automazione, non fa parte dell'URL.
Attenzione
Assicurarsi di copiare l'URL prima di chiudere la procedura guidata perché non è possibile recuperarlo una volta chiuso.
I parametri per il webhook possono rimanere vuoti. Quando si configura l'attività Web di Azure Data Factory, i parametri possono essere passati nel corpo della chiamata Web.
In Data Factory configurare un'attività Web
Esempio
L'URL è l'URL creato dal webhook.
Il corpo è un documento JSON che deve contenere le proprietà seguenti:
Proprietà | valore |
---|---|
AnalysisServicesDatabase | Nome del database di Azure Analysis Services Esempio: AdventureWorksDB |
AnalysisServicesServer | Nome del server di Azure Analysis Services. Esempio: https://westus.asazure.windows.net/servers/myserver/models/AdventureWorks/ |
DatabaseRefreshType | Tipo di aggiornamento da eseguire. Esempio: completo |
Corpo JSON di esempio:
{
"AnalysisServicesDatabaseName": "AdventureWorksDB",
"AnalysisServicesServer": "asazure://westeurope.asazure.windows.net/MyAnalysisServer",
"DatabaseRefreshType": "Full"
}
Questi parametri sono definiti nello script powerShell del runbook. Quando viene eseguita l'attività Web, il payload JSON passato è WEBHOOKDATA.
Questa operazione viene deserializzata e archiviata come parametri di PowerShell, che vengono quindi usati dal comando PowerShell Invoke-ProcessASDatabase.
Usare un ruolo di lavoro ibrido con Azure Analysis Services
Una macchina virtuale di Azure con un indirizzo IP pubblico statico può essere usata come ruolo di lavoro ibrido Automazione di Azure. Questo indirizzo IP pubblico può quindi essere aggiunto al firewall di Azure Analysis Services.
Importante
Verificare che l'indirizzo IP pubblico della macchina virtuale sia configurato come statico.
Per altre informazioni sulla configurazione di Automazione di Azure ruoli di lavoro ibridi, vedere Installazione del ruolo di lavoro ibrido per runbook.
Dopo aver configurato un ruolo di lavoro ibrido, creare un webhook come descritto nella sezione Usare con Data Factory. L'unica differenza consiste nel selezionare l'opzione Esegui nel>ruolo di lavoro ibrido durante la configurazione del webhook.
Webhook di esempio con ruolo di lavoro ibrido:
Runbook powerShell di esempio
Il frammento di codice seguente è un esempio di come eseguire l'aggiornamento del modello di Azure Analysis Services usando un runbook di 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
}