Atualizar com Automação do Azure

Usando a Automação do Azure e os runbooks do PowerShell, você pode executar operações automatizadas de atualização de dados em seus modelos de tabela do Azure Analysis.

O exemplo neste artigo usa o módulo do SqlServer PowerShell. Um exemplo de runbook do PowerShell, que demonstra a atualização de um modelo é fornecido posteriormente neste artigo.

Autenticação

Todas as chamadas devem ser autenticadas com um token válido do Microsoft Entra ID (OAuth 2). O exemplo neste artigo usa um SPN (nome da entidade de serviço) para autenticar para o Azure Analysis Services. Para saber mais, confira Criar uma entidade de serviço usando o portal do Azure.

Pré-requisitos

Importante

O exemplo a seguir pressupõe que o firewall do Azure Analysis Services está desabilitado. Se um firewall estiver habilitado, o endereço IP público do iniciador da solicitação deverá ser incluído em uma regra de firewall.

  1. Na conta de Automação do Azure, clique em Módulos e em Procurar galeria.

  2. Na barra de pesquisa, procure SqlServer.

    Search Modules

  3. Selecione SqlServer e clique em Importar.

    Import Module

  4. Clique em OK.

Criar uma entidade de serviço (SPN)

Para saber como criar uma entidade de serviço, consulte Criar uma entidade de serviço usando o portal do Azure.

Configurar permissões no Azure Analysis Services

A entidade de serviço que você criar deve ter permissões de administrador do servidor no servidor. Para saber mais, consulte Adicionar uma entidade de serviço à função de administrador do servidor.

Criar o runbook de Automação do Azure

  1. Na conta de Automação, crie um recurso de Credenciais que será usado para armazenar com segurança a entidade de serviço.

    Screenshot that shows the

  2. Insira os detalhes da credencial. Em Nome de usuário, insira a ID do aplicativo da entidade de serviço (appid) e, em Senha, insira o segredo da entidade de serviço.

    Create credential

  3. Importe o runbook de Automação.

    Screenshot that shows the

  4. Procure o arquivo Refresh-Model.ps1, forneça um Nome e Descrição e, em seguida, clique em Criar.

    Observação

    Use o script da seção Runbook de exemplo do PowerShell na parte inferior deste documento para criar um arquivo chamado Refresh-Model.ps1 e salvá-lo no computador local para importá-lo no runbook.

    Import Runbook

  5. Quando o runbook tiver sido criado, ele entrará automaticamente no modo de edição. Selecione Publicar.

    Publish Runbook

    Observação

    O recurso de credencial que foi criado anteriormente é recuperado pelo runbook usando o comando Get-AutomationPSCredential. Esse comando é passado para o comando Invoke-ProcessASADatabase do PowerShell para executar a autenticação para o Azure Analysis Services.

  6. Teste o runbook clicando em Iniciar.

    Screenshot that shows the

  7. Preencha os parâmetros DATABASENAME, ANALYSISSERVER e REFRESHTYPE e, em seguida, clique em OK. O parâmetro WEBHOOKDATA não é necessário quando o runbook é executado manualmente.

    Start the Runbook

Se o runbook for executado com êxito, você receberá uma saída semelhante à seguinte:

Successful Run

Usar um runbook autossuficiente da Automação do Azure

O runbook pode ser configurado para disparar a atualização do modelo do Azure Analysis Services de acordo com um agendamento.

Isso pode ser configurado da seguinte maneira:

  1. No runbook de Automação, clique em Agendamentos e, em seguida, Adicionar um agendamento.

    Create schedule

  2. Clique em Agendamento>Criar um novo agendamento e preencha os detalhes.

    Configure schedule

  3. Clique em Criar.

  4. Preencha os parâmetros para o agendamento. Eles serão usados cada vez que o runbook for disparado. O parâmetro WEBHOOKDATA deve ser deixado em branco quando a execução for realizada por meio de um agendamento.

    Configure parameters

  5. Clique em OK.

Consumir com Data Factory

Para consumir o runbook usando o Azure Data Factory, primeiro crie um Webhook para o runbook. O Webhook fornecerá uma URL que pode ser chamada por meio de uma atividade Web do Azure Data Factory.

Importante

Para criar um Webhook, o status do runbook deve ser Publicado.

  1. Em seu runbook de Automação, clique em Webhookse, em seguida, clique em Adicionar Webhook.

    Add Webhook

  2. Dê um nome e uma expiração ao Webhook. O nome identifica apenas o Webhook dentro do runbook de Automação; ele não faz parte da URL.

    Cuidado

    Certifique-se de copiar a URL antes de fechar o assistente, pois você não pode obtê-la novamente depois de fechá-lo.

    Configure Webhook

    Os parâmetros para o Webhook podem permanecer em branco. Quando configurar a atividade Web do Azure Data Factory, os parâmetros podem ser passados para o corpo da chamada Web.

  3. No Data Factory, configure uma atividade Web

Exemplo

Example Web Activity

A URL é a URL criada no Webhook.

O corpo é um documento JSON que deve conter as seguintes propriedades:

Propriedade Valor
AnalysisServicesDatabase O nome do banco de dados do Azure Analysis Services
Exemplo: AdventureWorksDB
AnalysisServicesServer O nome do servidor do Azure Analysis Services.
Exemplo: https://westus.asazure.windows.net/servers/myserver/models/AdventureWorks/
DatabaseRefreshType O tipo de atualização a ser executada.
Exemplo: Completo

Exemplo de corpo JSON:

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

Esses parâmetros são definidos no script do PowerShell do runbook. Quando a atividade Web é executada, a carga JSON passada é WEBHOOKDATA.

Ela é desserializada e armazenada como parâmetros do PowerShell, que são usados pelo comando Invoke-ProcessASDatabase do PowerShell.

Deserialized Webhook

Usar um Hybrid Worker com o Azure Analysis Services

Uma máquina virtual do Azure com um endereço IP público estático pode ser usada como um Hybrid Worker de Automação do Azure. Esse endereço IP público pode ser adicionado ao firewall do Azure Analysis Services.

Importante

Verifique se o endereço IP público da máquina virtual está configurado como estático.

Para saber mais sobre como configurar o Hybrid Worker de Automação do Azure, confira Instalação do Hybrid Runbook Worker.

Quando um Hybrid Worker estiver configurado, crie um Webhook, conforme descrito na seção Consumir com Data Factory. A única diferença aqui é selecionar a opção Executar no>Hybrid Worker ao configurar o Webhook.

Exemplo de Webhook usando Hybrid Worker:

Example Hybrid Worker Webhook

Exemplo de runbook do PowerShell

O trecho de código a seguir é um exemplo de como executar a atualização de modelo do Azure Analysis Services usando um runbook do 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
}

Próximas etapas

Amostras
REST API