Lucas Silvério
Posted on February 16, 2021
Oi Pessoal!
No post anterior eu falei sobre a alternativa do processo de ETL com logic apps. Nesse post vou mostrar uma solução para monitorar a atividade do logic app. A motivação é centralizar a leitura e monitoramento dos dados, visto que podemos ter vários processos preparando arquivos de forma automatizada e se algo der errado, pode passar despercebido. Além disso quero mostrar a integração das api's do azure e isso pode nos trazer outros insights.
Recursos
É necessário que você já tenha algum conhecimento prévio em API's e Powerbi.
Logic app
Na página do logic app no portal do azure, podemos ver o histórico das execuções do logic app.
Nós vamos trazer esse histórico para o nosso painel.
Api Rest do Azure
Na documentação oficial da microsoft você encontra uma visão geral sobre as api's .
E nesse post o autor mostrar como obter as credenciais para acessar as api's do azure.
Execute os passo desse tutorial para obter as credenciais:
Os procedimentos a seguir vão depender dessa etapa.
Get AAD Token
Além da api do histórico de execuções também vamos precisar da api para obter o token de acesso.
Workflow Runs - Get
Clique aqui para acessar a documentação sobre a api que vamos consumir para obter o histórico de execuções do logic app.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/runs/{runName}?api-version=2016-06-01
Power Bi
Vamos criar uma consulta em branco:
Parâmetros
Agora crie um parâmetro para cada propriedade das credencias do azure, que obtivemos nas etapas anteriores.
Depois de registrar todos os parâmetros o resultado será esse:
Token
Crie uma consulta nula como o nome de tokenRequest, onde vamos executar o método para armazenar o token.
Copie e cole o código abaixo na tela do editor avançado.
`
let authUrl = "https://login.microsoftonline.com/" & tenantId & "/oauth2/token",
body = "grant_type=client_credentials&
client_id=" & clientId & "&
client_secret=" & clientSecret & "&
resource=" & resource &"",
getToken = Json.Document(Web.Contents(authUrl, [Headers=[#"Content-Type"="application/x-www-form-urlencoded"], Content=Text.ToBinary(body)]))
in getToken[access_token]
`
Histórico de execuções do logic app
Crie uma consulta nula como o nome de historyRequest, onde vamos executar o método para obter o histórico de execuções do logic app.
Copie e cole o código abaixo na tela do editor avançado e não se esqueçam de renomear o
{resourceGroupName} e {workflowName} para os do seu aplicativo.
`
let
historyRequest = let
historyRequest = let
token = tokenRequest,
url = "https://management.azure.com/subscriptions/" & subscriptionId &"/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/runs?api-version=2016-06-01",
history = Json.Document(
Web.Contents(url,[
Headers = [#"Authorization"= "Bearer " & token]
])
)
in
history
in historyRequest[value],
#"Convertido para Tabela" = Table.FromList(historyRequest, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Column1 Expandido" = Table.ExpandRecordColumn(#"Convertido para Tabela", "Column1", {"properties", "id", "name", "type"}, {"properties", "id", "name", "type"}),
#"properties Expandido" = Table.ExpandRecordColumn(#"Column1 Expandido", "properties", {"waitEndTime", "startTime", "endTime", "status", "correlation", "workflow", "trigger", "outputs"}, {"waitEndTime", "startTime", "endTime", "status", "correlation", "workflow", "trigger", "outputs"})
in
#"properties Expandido"
Como estamos executando consultas encadeadas armazenadas em parâmetros diferentes recebemos essa mensagem por questões de segurança do power bi:
Para contornar esse problema, vamos configurar o nível de privacidade para ignorar essa mensagem.
Ao atualizar a tela, você já consegue ver o resultado da api.
Eu montei o painel abaixo como exemplo, e não vou detalhar essa etapa pois o foco aqui era as api do logic app do azure.
Esse é um pequeno exemplo do que podemos fazer com as apis do azure.
Espero que isso te ajude!
Posted on February 16, 2021
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.