Compartilhar via


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.

    Módulos de pesquisa

  3. Selecione SqlServer e clique em Importar.

    Importar módulo

  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.

    Captura de tela que mostra a página

  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.

    Criar credencial

  3. Importe o runbook de Automação.

    Captura de tela que mostra a página

  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.

    Importar Runbook

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

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

    Captura de tela que mostra a página

  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.

    Iniciar o runbook

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

Execução bem-sucedida

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.

    Criar agendamento

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

    Configurar a agenda

  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.

    Configurar parâmetros

  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.

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

    Configurar o 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

Exemplo de atividade Web

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.

Webhook desserializado

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:

Exemplo de Webhook do Hybrid Worker

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