Guia Completo: Desbloqueando novos cenários de BI self-service com suporte ExecuteQueries no Power Automate

Como parte do trabalho de GA para a API REST ExecuteQueries, a Microsoft entregou uma nova ação do Power Automate para executar consultas em conjuntos de dados do Power BI, assim sendo possível desbloquear novos cenários de BI self-service com suporte ExecuteQueries no Power Automate.

Ademais, essa ação oferece uma experiência direta com pouco código/sem código para usuários de BI que desejam simplificar tarefas e processos repetitivos. Você pode selecionar convenientemente o espaço de trabalho e o conjunto de dados desejados na interface do usuário, colar sua consulta DAX na caixa de texto de consulta e automatizar!

É isso! Você não precisa saber nada sobre a API REST. Você nem precisa conhecer o DAX para começar porque pode copiar consultas diretamente do Power BI Desktop usando o Performance Analyzer. Essa nova ação para executar consultas em conjuntos de dados do Power BI desbloqueia cenários de BI self-service totalmente novos no Power Automate!

Extraindo máximo valor de seus dados

Inclusive, os conjuntos de dados do Power BI representam um investimento significativo e um ativo vital. As organizações já usam conjuntos de dados compartilhados e certificados para apoiar seus funcionários de escritório e tomadores de decisão por meio de dados selecionados, lógica de negócios verificada e análise confiável. Esses conjuntos de dados fornecem a base para visualizações de dados interativas e paginadas ricas que fornecem insights de negócios que impulsionam o sucesso.

Mas e os fluxos de trabalho e outros processos de negócios automatizados?

Com muita frequência, as organizações precisam reinventar a roda aqui, porque é muito difícil alavancar conjuntos de dados nessas áreas diretamente. Você precisa ser um desenvolvedor, precisa escrever código, precisa conhecer serviços Web e APIs REST, precisa registrar aplicativos no Azure Active Directory, precisa carregar bibliotecas de cliente e assim por diante.

Vamos remover esses obstáculos!

Assim como você já tem os dados selecionados, a lógica de negócios verificada, as medidas analíticas confiáveis. Todavia seus usuários já criam relatórios fantásticos do Power BI sobre seus conjuntos de dados. Permita que eles aproveitem os mesmos conjuntos de dados aprovados e confiáveis ​​em fluxos de nuvem de autoatendimento. Vamos maximizar o retorno do investimento em conjuntos de dados do Power BI que você já possui!

O objetivo desta postagem é ajudá-lo a começar a executar consultas em conjuntos de dados no Power Automate com base nos três cenários a seguir:

Este é um cenário limitado porque a API REST ExecuteQueries restringe os resultados da consulta a 100.000 linhas ou 1.000.000 valores por consulta (o que for encontrado primeiro) e o número de consultas a 120 por minuto. A Microsoft não tem planos de aumentar esses limites. Portanto, se você precisar exportar os resultados da consulta, mantenha as quantidades de dados gerenciáveis.

  • Testando conjuntos de dados do Power BI

A nova ação do Power Automate torna essa tarefa um passeio alegre no parque. Leia em uma tabela com casos de teste, itere linha por linha, execute uma consulta predefinida, compare os resultados retornados com os resultados esperados, trabalho concluído! E cada consulta individual pode representar uma conta de usuário diferente se você quiser testar a segurança em nível de linha (RLS). Observe que você deve ter permissões de gravação de conjunto de dados para usar a representação, que geralmente você tem se for o proprietário do conjunto de dados ou um membro das funções de administrador, membro ou colaborador do workspace.

  • Criando fluxos de nuvem orientados por BI

Ademais, um evento ocorre em algum lugar, outro evento deve ocorrer em outro lugar e a lógica baseada em BI determina como os eventos se desenrolam. O Power Automate oferece uma grande variedade de gatilhos. Talvez alguém tenha carregado um arquivo csv para o SharePoint Online, atualizado um registro em um banco de dados de suporte ao cliente ou twittado uma palavra-chave importante, ou talvez atualizado uma métrica do Power BI ou um alerta de dados disparado. Existem centenas de gatilhos, mas seja qual for o evento, seu fluxo agora precisa tomar algumas decisões baseadas em dados. Em vez de ir a silos de dados individuais e unir os resultados de maneira única, agora você pode confiar nos dados selecionados e nas medidas verificadas de seus conjuntos de dados compartilhados e certificados que fornecem resultados confiáveis.

Parece bom demais para ser verdade? Coloque o cinto de segurança!

Dessa maneira, para começar, para exportar os resultados de uma consulta de conjunto de dados no formato csv, você pode começar com um fluxo acionado manualmente. Adicione uma nova etapa, pesquise Power BI na área de pesquisa do conector e selecione Power BI e, na guia Ações, selecione a ação rotulada Executar uma consulta em um conjunto de dados. Observe que também há uma ação Executar uma consulta JSON em uma ação de conjunto de dados se você quiser construir todo o corpo da solicitação JSON do zero, mas a ação Executar uma consulta em um conjunto de dados é muito mais amigável porque você pode colar sua consulta DAX diretamente em a caixa de texto Query sem ter que lidar com os detalhes do JSON. Uma consulta DAX simples seria ‘Evaluate <tablename>’ ou talvez ‘EVALUATE TOPN(100, <tablename>)’ para garantir que os resultados permaneçam dentro dos limites de contagem de linhas.

Claro, você pode criar expressões DAX mais úteis e mais realistas usando sua ferramenta de editor DAX favorita. Usando dados de exemplo do AdventureWorks, uma consulta de exemplo pode ser ‘EVALUATE TOPN(100, vFactInternetSalesReason)’. Não se esqueça de selecionar o espaço de trabalho e o conjunto de dados desejado nas caixas de listagem do cartão de ação. Salve e teste o fluxo. Os resultados devem ser como na captura de tela a seguir.

Power Automate

Em outras palavras, as etapas restantes são ações de rotina do Power Automate. Para saída csv, você deve converter as linhas em uma tabela csv. Edite o fluxo novamente, adicione uma ação Criar tabela CSV, como na captura de tela abaixo, e selecione o objeto de conteúdo chamado Primeiras linhas da tabela na ação Executar uma consulta em um conjunto de dados como entrada.

As primeiras linhas da tabela contêm os resultados da sua consulta. (No futuro, a API ExecuteQueries pode oferecer suporte a consultas com vários blocos Evaluate, resultando em várias tabelas na resposta. Por enquanto, no entanto, apenas um único Evaluate por consulta é suportado.) A ação Criar tabela CSV converte os resultados da consulta em uma tabela csv e permite personalizar os cabeçalhos das colunas, se desejado, mas não salva os dados. Para salvá-lo, escolha uma ação Criar arquivo como a próxima etapa, como criar um arquivo no SharePoint Online e atribua a Saída da ação Criar tabela CSV como o conteúdo do arquivo. Salve e teste o fluxo. A captura de tela a seguir mostra os resultados.

Mas claro, você também deve ter um novo arquivo csv com os dados esperados em sua biblioteca de destino do SharePoint.

Suporte ExecuteQueries no Power Automate

So far so good. How about we take this one step further by adding a Power Automate visual to a Power BI report that launches a cloud flow that exports a snapshot of interesting data, such as the Daily Support Incidents report depicted in the following screenshot. This report shows fictitious support call volume by day and by feature area along with the 30-day moving average of the incident count (green line) and an alert threshold based on the same moving average plus 2 times the 7-day standard deviation (light purple line). Be this as it may, notice the Take snapshot button in the upper right corner of the report? This button lets you export the support incidents of the most recent day directly from your report based on the current selections in the report.

Até agora tudo bem

Que tal darmos um passo adiante adicionando um visual do Power Automate a um relatório do Power BI que inicia um fluxo de nuvem que exporta um instantâneo de dados interessantes, como o relatório de Incidentes de Suporte Diários mostrado na captura de tela a seguir. Este relatório mostra o volume de chamadas de suporte fictício por dia e por área de recurso, juntamente com a média móvel de 30 dias da contagem de incidentes (linha verde) e um limite de alerta com base na mesma média móvel mais 2 vezes o desvio padrão de 7 dias (luz linha roxa). Seja como for, consegue observar o botão Tirar instantâneo no canto superior direito do relatório? Este botão permite exportar os incidentes de suporte do dia mais recente diretamente do seu relatório com base nas seleções atuais no relatório.

Guia Completo: Desbloqueando novos cenários de BI self-service com suporte ExecuteQueries no Power Automate

Para obter detalhes sobre como adicionar um visual do Power Automate a um relatório do Power BI, consulte o tópico Disparar um fluxo de nuvem de qualquer relatório do Power BI na documentação do produto. Entre outras coisas, você pode adicionar campos de dados a esse visual, que servem como parâmetros de entrada para o fluxo da nuvem. Por exemplo, o relatório acima permite dividir as contagens de incidentes de suporte com base nas áreas de recursos. Portanto, faz sentido passar os valores de Área selecionados para o visual para que o fluxo Tirar instantâneo também possa limitar os incidentes de suporte exportados às áreas selecionadas no momento. Se você seguir as instruções na documentação do produto para criar um novo fluxo de nuvem, o visual do Power Automate conectará automaticamente os parâmetros de entrada com o gatilho clicado no botão On Power BI. Você só precisa obter os parâmetros de entrada da ação clicada no botão On Power BI no texto da consulta de nossa ação Executar uma consulta em relação a um conjunto de dados. Veja a seguir o ponto de partida para o texto da consulta.

DEFINE

         VAR selectedAreas = TREATAS({“Data access”, “Front-end”}, ‘SupportRequests'[Area])

         VAR maxAbsDate = MAX(‘SupportRequests'[Created])

         VAR maxSelDate = CALCULATE(MAX(‘SupportRequests'[Created]), selectedAreas)        

EVALUATE (

         SUMMARIZECOLUMNS(

                 ‘SupportRequests'[Created],

                 ‘SupportRequests'[Issue],

                 ‘SupportRequests'[Area],

                 ‘SupportRequests'[Subarea],

                 ‘SupportRequests'[Status],

                 ‘SupportRequests'[Owner],

                 FILTER(SupportRequests, maxAbsDate = maxSelDate && ‘SupportRequests'[Created] = maxSelDate),

                 selectedAreas

         )

)

A consulta DAX acima recupera os incidentes de suporte para duas áreas “Acesso a dados” e “Front-end”. Observe o uso da função TREATAS. Como você pode ver na captura de tela abaixo, nosso fluxo de nuvem deve substituir esses valores estáticos por uma string construída dinamicamente. Assim, nosso fluxo de nuvem deve transformar a matriz de valores de área passados ​​do relatório em uma string que o fluxo insere no texto da consulta. Este é um processo de várias etapas. Primeiro, adicione uma ação Selecionar, clique na caixa ‘De’ e selecione o objeto de dados do Power BI. Em seguida, alterne a ação Selecionar para o modo de texto clicando no pequeno botão T do Mapa e, em seguida, clique na caixa de texto Mapa.

Você pode escolher diretamente o objeto de conteúdo de área, mas é melhor usar uma expressão que escape de quaisquer aspas nos valores com uma segunda aspa e coloque cada valor entre aspas. Isso tornará mais fácil converter a matriz em uma string formatada corretamente posteriormente. Devidamente escapado e entre aspas, você só precisa unir os membros da matriz para criar a string que você pode inserir na consulta. A tabela a seguir resume as etapas.

AçãoExpressãoResultado
Selecionarconcat(‘”‘, replace(item()?[‘Area’], ‘”‘, ‘””‘), ‘”‘)[ “\”Data access\””, “\”Front-end\””, “\”Login/Auth\””, “\”REST APIs\””, “\”Web service\”” ]
Executar uma consulta em um conjunto de dadosjoin(variables(‘Selected Areas’), ‘, ‘)“\”Data access\”, \”Front-end\”, \”Login/Auth\”, \”REST APIs\”, \”Web service\””

E aqui está o fluxo de nuvem resultante que faz o trabalho. As etapas Criar tabela CSV e Criar arquivo são idênticas ao exemplo de exportação anterior. Agora você pode exportar dados diretamente da conveniência do seu relatório do Power BI!

Power BI no Power Automate

Com esses cenários de exportação de dados em andamento, vamos agora voltar nossa atenção para um cenário ainda mais dinâmico: teste de conjunto de dados. A captura de tela a seguir mostra uma tabela com quatro colunas: uma ID de teste, uma consulta a ser executada, uma identidade de usuário no formato UPN para representar e o resultado esperado da consulta. Esta solução Power Automate analisará cada linha, executará a consulta com a identidade de usuário especificada e verificará se o resultado retornado corresponde ao resultado esperado. Se os resultados não corresponderem, ele enviará um e-mail para nos informar.

Guia Completo: Desbloqueando novos cenários de BI self-service com suporte ExecuteQueries no Power Automate

Desta vez, vamos criar um fluxo agendado para executar os testes do conjunto de dados diariamente

Adicione uma lista de linhas presentes em uma ação de tabela do Excel Online, especifique o local e o caminho corretos para sua pasta de trabalho do Excel e selecione a tabela com as definições de teste. Em seguida, adicione um Apply a cada ação de controle e selecione o valor do objeto de saída dinâmica nas linhas List presentes em uma ação de tabela como entrada. Agora você pode clicar em Adicionar uma ação no cartão Aplicar a cada ação e selecionar a ação do Power BI Executar uma consulta em um conjunto de dados. Selecione seu espaço de trabalho e conjunto de dados e, em seguida, clique na caixa de texto Query text para exibir a caixa de diálogo Dynamic Content. Selecione Consulta DAX como entrada para o texto da Consulta. Em seguida, clique em Mostrar opções avançadas, clique na caixa de texto Representar usuário e selecione UPN de usuário na caixa de diálogo Conteúdo dinâmico. A configuração deve ficar como na captura de tela a seguir.

Guia Completo: Desbloqueando novos cenários de BI self-service com suporte ExecuteQueries no Power Automate

Até agora, isso é relativamente fácil. Talvez um pouco mais complicado seja a comparação do resultado retornado para cada consulta com seu resultado esperado. Vamos primeiro completar o fluxo e depois discutir os detalhes. Como a próxima etapa no cartão de ação Aplicar a cada ação, adicione uma ação de controle Condição. Clique na caixa de texto à esquerda para exibir a caixa de diálogo Conteúdo dinâmico, clique em Expressão e insira a seguinte expressão:

string(outputs(‘Run_a_query_against_a_dataset’)?[‘body/firstTableRows’]?[0]?[‘[Result]’]).

Clique OK. A comparação selecionada deve ser ‘igual a’ e, em seguida, clique na caixa à direita e escolha Resultado esperado nas linhas da lista presentes em uma ação de tabela. Conforme mencionado, se o resultado retornado não corresponder ao resultado esperado, o fluxo deverá enviar uma notificação por e-mail. Basta adicionar uma ação Enviar um email ao cartão Se não houver e especificar o destinatário, a linha de assunto e o corpo da mensagem. Pode ser útil incluir o ID do teste, o resultado retornado, o resultado esperado e a consulta de teste real na mensagem de email, como na captura de tela a seguir. Teste o fluxo com um valor intencionalmente errado na coluna de resultado esperado de um caso de teste. Você deve receber um e-mail imediatamente.

Guia Completo: Desbloqueando novos cenários de BI self-service com suporte ExecuteQueries no Power Automate

A expressão para chegar aos resultados retornados requer uma explicação mais profunda. Todas as consultas de teste usam uma função SUMMARIZECOLUMNS com o resultado calculado em uma coluna chamada [Result]. De acordo com a convenção da API REST ExecuteQueries, as colunas renomeadas ou criadas na consulta serão retornadas entre colchetes. E como cada cálculo retorna um único valor, a tabela de resumo é efetivamente apenas uma única linha. A tabela a seguir divide a expressão string(outputs(‘Run_a_query_against_a_dataset’)?[‘body/firstTableRows’]?[0]?[‘[Result]’]) em suas partes individuais para chegar a esse valor calculado.

ExpressãoDescrição
outputs(‘Run_a_query_against_a_dataset’)Obtém toda a resposta da API REST ExecuteQueries para a ação chamada Executar uma consulta em um conjunto de dados.
outputs(…)?[‘body/firstTableRows’]Seleciona todas as linhas do primeiro conjunto de resultados no corpo da resposta.
outputs(…)?[…]?[0]Seleciona a primeira linha dentro de todas as linhas do primeiro conjunto de resultados.
outputs(…)?[…]?[0]?[‘[Result]’]Seleciona o valor da coluna [Result] da primeira linha.
string(…)Converte o valor selecionado em uma string. Isso é necessário porque os resultados retornados podem ser de qualquer tipo de dados, enquanto as linhas List presentes em uma ação de tabela lêem o valor do resultado esperado como uma string.

E aí está. Testar conjuntos de dados pode ser muito fácil, incluindo representação se seu conjunto de dados estiver habilitado para RLS! (h4)

Mas espere que tem mais! Fluxos de nuvem orientados por BI!

Voltando ao exemplo anterior de Incidentes Diários de Suporte, você não gostaria de saber mais sobre esse grande aumento no volume de suporte no dia mais recente? Muito além do limite! Este departamento de suporte está sendo martelado! O que causou esse pico? E talvez ainda mais importante, quais engenheiros de suporte seriam mais adequados para ajudar a recuperar essa situação rapidamente? Um fluxo de nuvem orientado por BI pode fornecer essas respostas antes mesmo de você fazer as perguntas!

O relatório de Incidentes Diários de Suporte já mede o volume de suporte mais recente e calcula o limite de alerta. A partir desses dois parâmetros, podemos construir um gatilho para um fluxo de nuvem. Uma opção é usar um alerta de dados, conforme demonstrado no Guia de instruções Integrar alertas de dados do Power BI ao Power Automate na documentação do produto. No entanto, os alertas de dados usam valores de limite estáticos, enquanto nosso limite de alerta é dinâmico por natureza, pois depende da média móvel e do desvio padrão. Felizmente, há uma escolha muito, muito melhor hoje em dia: Métricas do Power BI conectadas a valores de dados! As métricas do Power BI também podem ser integradas a um fluxo do Power Automate, conforme explicado em detalhes em Usar o Power Automate para atualizar metas automaticamente na documentação do produto.

Observe que as Métricas do Power BI são o novo nome do recurso anteriormente conhecido como Metas. As Métricas do Power BI realmente transmitem de forma muito mais intuitiva a finalidade de medir a realização e o progresso em um esforço ou iniciativa, mas as ações do Power Automate relacionadas às métricas ainda são rotuladas como “Objetivos” até que as alterações de nome sejam totalmente implantadas no Power Automate também. Como as alterações ainda não foram totalmente implementadas, as explicações a seguir ainda se referem a metas nas ações do Power Automate.

Uma grande vantagem das Métricas do Power BI é que as Métricas conectadas a dados podem aplicar segmentações e filtros. Isso torna muito fácil definir o nível superior e as submétricas. Dê uma olhada no scorecard a seguir. Possui uma submétrica para cada área de suporte. São as mesmas medidas para volume de suporte e limite de alerta, apenas com diferentes seleções de segmentação de área. As regras de status definem que o status da métrica deve ser Em risco se o volume de suporte for maior que o limite de alerta e Em andamento caso contrário. O nome da métrica reflete a área de suporte para que você já possa obter informações de status importantes apenas no scorecard. Você pode ver imediatamente que a área Front-end está esquentando.

Desbloqueando novos cenários de BI no Power Automate

Identificar a área problemática é um bom começo, mas queremos mais informações acionáveis entregues na ponta dos dedos quando uma situação crítica se desenrola. Assim, nosso fluxo de nuvem pode usar o gatilho Quando o status de uma meta muda. No entanto, nosso Scorecard de Suporte ao Produto tem várias metas/métricas. Felizmente, o conector do Power BI também inclui uma ação Obter várias metas. Um fluxo agendado pode usar essa ação para recuperar todas as metas/métricas do scorecard e, em seguida, filtrar a lista para aqueles que têm o status “Em risco”. Um Apply a cada loop itera sobre essas metas/métricas, consulta o conjunto de dados para obter as informações acionáveis desejadas e, em seguida, envia um e-mail de notificação para o gerente que possui a área de suporte. A captura de tela a seguir descreve o fluxo e a mensagem de email resultante.

Desbloqueando novos cenários de BI no Power Automate

As consultas do conjunto de dados na captura de tela acima são abreviadas para economizar espaço. Com a suposição de que o nome da meta/métrica corresponda ao nome de uma área de suporte, a primeira ação Executar uma consulta em uma ação de conjunto de dados usa o nome como um parâmetro de entrada e retorna os IDs ou chaves de todas as subáreas de nível seguinte que excederam suas respectivas limite de alerta. Esse nível mais fino de detalhes dentro da área de suporte mais ampla ajuda a reduzir as possíveis causas-raiz mais rapidamente. O fluxo usa a seguinte expressão para escapar possíveis aspas no nome da meta/métrica e, em seguida, novamente coloca toda a string entre aspas, conforme já explicado anteriormente para o exemplo de exportação de dados: concat(‘”’, replace(item()[ ‘nome’], ‘”‘, ‘””‘), ‘”‘).

A segunda consulta espera as chaves de subárea e o nome do gerente de suporte como entrada. Uma ação Select cria a matriz com as chaves de subárea da resposta da primeira consulta, que o fluxo converte em uma string usando a função join(), como no exemplo anterior de exportação de dados. O gerenciador de suporte, por outro lado, pode ser encontrado na propriedade do proprietário da meta/métrica (item()[‘proprietário’]). Novamente, todos os valores são escapados e colocados entre aspas usando a mesma função concat() de antes. Essa segunda consulta procura os engenheiros de suporte que se reportam ao gerente indicado e, em seguida, analisa seus itens de trabalho de suporte anteriores e atuais para resumir a experiência de cada engenheiro e a carga de trabalho atual.

As etapas restantes montam o corpo da mensagem de email. Eles são bastante monótonos. Você pode criar uma tabela HTML da mesma maneira que uma tabela CSV demonstrada anteriormente. O fluxo também aplica alguns cosméticos HTML e CSS e, em seguida, envia a mensagem de e-mail para o destinatário pretendido.

Arbit: mais de 20 anos transformando tecnologia em valor

Espero que você ache os exemplos abordados relevantes para seus cenários e úteis para começar a levar seu BI self-service para o próximo nível. A integração da API REST ExecuteQueries com o Power Automate capacita funcionários de escritório e tomadores de decisão de maneiras novas e inovadoras, ao mesmo tempo em que maximiza o retorno do investimento de uma organização em conjuntos de dados compartilhados e certificados. Você pode aumentar ainda mais os benefícios combinando a ação Executar uma consulta em um conjunto de dados com outras ações do Power BI, como ler, atualizar e até mesmo criar Métricas do Power BI. Você não precisa mais caçar silos de dados e reinventar a roda. O Power BI e o Power Automate permitem que você reutilize os dados selecionados, a lógica de negócios verificada e a análise confiável que você já possui em seus conjuntos de dados. Você pode criar fluxos orientados por BI em minutos sem precisar escrever nenhum código complexo. Algumas expressões básicas para acessar propriedades e valores de string de escape são suficientes.

Com cenários de BI self-service no Power Automate, seus processos de negócios orientados por insights ficam ainda mais orientados por insights. Você pode realmente obter respostas antes mesmo de fazer as perguntas. E se ainda tiver dúvidas, nós estamos aqui para ajudá-lo!

Há mais de 20 anos atuando com inteligência de dados, a Arbit possui especialistas para implementar as melhores soluções ao seu ambiente de negócios. Fale com nossos especialistas agora mesmo!

Deixe um comentário

O seu endereço de e-mail não será publicado.