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.
Instalar os módulos do SqlServer a partir da galeria do PowerShell.
Na conta de Automação do Azure, clique em Módulos e em Procurar galeria.
Na barra de pesquisa, procure SqlServer.
Selecione SqlServer e clique em Importar.
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
Na conta de Automação, crie um recurso de Credenciais que será usado para armazenar com segurança a entidade de serviço.
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.
Importe o runbook de Automação.
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.
Quando o runbook tiver sido criado, ele entrará automaticamente no modo de edição. Selecione Publicar.
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.
Teste o runbook clicando em Iniciar.
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.
Se o runbook for executado com êxito, você receberá uma saída semelhante à seguinte:
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:
No runbook de Automação, clique em Agendamentos e, em seguida, Adicionar um agendamento.
Clique em Agendamento>Criar um novo agendamento e preencha os detalhes.
Clique em Criar.
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.
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.
Em seu runbook de Automação, clique em Webhookse, em seguida, clique em Adicionar Webhook.
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.
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.
No Data Factory, configure uma atividade Web
Exemplo
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.
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 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
}