Share via


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.

Authentication

Tutte le chiamate devono essere autenticate con un token OAuth 2 (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 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.

  1. Nell'account Automazione di Azure fare clic su Moduli e quindi su Sfoglia raccolta.

  2. Nella barra di ricerca cercare SqlServer.

    Search Modules

  3. Selezionare SqlServer, quindi fare clic su Importa.

    Import Module

  4. Fare clic su OK.

Creare un'entità servizio (SPN)

Per informazioni sulla creazione di un'entità servizio, vedere Creare un'entità servizio tramite portale di Azure.

Configurare le autorizzazioni in Azure Analysis Services

L'entità servizio creata deve disporre delle 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

  1. Nell'account di Automazione creare una risorsa Credenziali che verrà usata per archiviare in modo sicuro l'entità servizio.

    Screenshot that shows the

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

    Create credential

  3. Importare il runbook di automazione.

    Screenshot that shows the

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

    Import Runbook

  5. Quando il runbook è stato creato, passerà automaticamente in modalità di modifica. Selezionare Pubblica.

    Publish Runbook

    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.

  6. Testare il runbook facendo clic su Avvia.

    Screenshot that shows the

  7. Compilare i parametri DATABA edizione Standard NAME, ANALYSIS edizione Standard RVER e REFRESHTYPE, quindi fare clic su OK. Il parametro WEBHOOKDATA non è obbligatorio quando il runbook viene eseguito manualmente.

    Start the Runbook

Se il runbook viene eseguito correttamente, si riceverà un output simile al seguente:

Successful Run

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:

  1. Nel runbook di automazione fare clic su Pianificazioni e quindi su Aggiungi pianificazione.

    Create schedule

  2. Fare clic su Pianifica>crea una nuova pianificazione e quindi compilare i dettagli.

    Configure schedule

  3. Fai clic su Crea.

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

    Configure parameters

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

  1. Nel runbook di Automazione fare clic su Webhook e quindi su Aggiungi webhook.

    Add Webhook

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

    Configure Webhook

    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.

  3. In Data Factory configurare un'attività Web

Esempio

Example Web Activity

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.

Deserialized Webhook

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:

Example Hybrid Worker Webhook

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
}

Passaggi successivi

Esempi
REST API