Atualizar com a Automatizaçã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 tabulares do Azure Analysis.
O exemplo neste artigo usa o módulo 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 uma entidade de serviço (SPN) para autenticar no Azure Analysis Services. Para saber mais, consulte 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 esteja 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.
Instale os módulos SqlServer da galeria do PowerShell.
Na sua Conta de Automação do Azure, clique em Módulos e, em seguida, 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 mais sobre 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 criada 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.
Projetar 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 utilizador, introduza o ID da Aplicação da entidade de serviço (appid) e, em seguida, em Palavra-passe, introduza 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 clique em Criar.
Nota
Use o script da seção Runbook do PowerShell de exemplo na parte inferior deste documento para criar um arquivo chamado Refresh-Model.ps1 e salvar na máquina local para importar para o Runbook.
Quando o Runbook tiver sido criado, ele entrará automaticamente no modo de edição. Selecione Publicar.
Nota
O recurso de credencial que foi criado anteriormente é recuperado pelo runbook usando o comando Get-AutomationPSCredential . Esse comando é passado para o comando Invoke-ProcessASADatabase PowerShell para executar a autenticação no Azure Analysis Services.
Teste o runbook clicando em Iniciar.
Preencha os parâmetros DATABASENAME, ANALYSISSERVER e REFRESHTYPE e 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 como a seguinte:
Usar um Runbook de Automação do Azure independente
O Runbook pode ser configurado para disparar a atualização do modelo do Azure Analysis Services de forma agendada.
Isso pode ser configurado da seguinte maneira:
No Runbook de Automação, clique em Agendas e, em seguida, em Adicionar uma Agenda.
Clique em Agendar>Criar uma nova agenda e preencha os detalhes.
Clique em Criar.
Preencha os parâmetros para o cronograma. Estes serão usados sempre que o Runbook for acionado. O parâmetro WEBHOOKDATA deve ser deixado em branco ao ser executado por meio de uma programação.
Clique em OK.
Consuma com o 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 da Web do Azure Data Factory.
Importante
Para criar um Webhook, o status do Runbook deve ser Publicado.
No seu Runbook de Automação, clique em Webhooks e, em seguida, clique em Adicionar Webhook.
Dê ao Webhook um nome e um prazo de validade. O nome identifica apenas o Webhook dentro do Runbook de Automação, não faz parte da URL.
Atenção
Certifique-se de copiar o URL antes de fechar o assistente, pois não é possível recuperá-lo depois de fechado.
Os parâmetros para o webhook podem permanecer em branco. Ao configurar a atividade da Web do Azure Data Factory, os parâmetros podem ser passados para o corpo da chamada Web.
No Data Factory, configure uma atividade da Web
Exemplo
O URL é o URL criado a partir do Webhook.
O corpo é um documento JSON que deve conter as seguintes propriedades:
Property | 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 runbook PowerShell. Quando a atividade da Web é executada, a carga JSON passada é WEBHOOKDATA.
Isso é desserializado e armazenado como parâmetros do PowerShell, que são usados pelo comando Invoke-ProcessASDatabase PowerShell.
Usar um trabalhador híbrido 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 Trabalhador Híbrido 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 Azure Automation Hybrid Workers, consulte Instalação do Hybrid Runbook Worker.
Depois que um trabalhador híbrido estiver configurado, crie um Webhook conforme descrito na seção Consumir com o Data Factory. A única diferença aqui é selecionar a opção Run on>Hybrid Worker ao configurar o Webhook.
Exemplo de webhook usando o Hybrid Worker:
Runbook de exemplo do PowerShell
O trecho de código a seguir é um exemplo de como executar a atualização do 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
}