Visualizar e interpretar diagnósticos de consulta no Power BI
Introdução
Depois de registrar os diagnósticos que deseja usar, o próximo passo é ser capaz de entender o que eles dizem.
É útil ter uma boa compreensão do que exatamente cada coluna no esquema de diagnóstico de consulta significa, o que não vamos repetir neste breve tutorial. Há um texto completo sobre isso aqui.
Em geral, ao criar visualizações, é melhor usar a tabela detalhada completa. Porque independentemente de quantas linhas seja, o que você provavelmente está olhando é algum tipo de representação de como o tempo gasto em diferentes recursos soma, ou qual foi a consulta nativa emitida.
Como mencionado em nosso artigo sobre como registrar os diagnósticos, estou trabalhando com os rastreamentos OData e SQL para a mesma tabela (ou quase) — a tabela Customers da Northwind. Em particular, vou me concentrar em perguntas comuns de nossos clientes e em um dos conjuntos de rastreamentos mais fáceis de interpretar: a atualização completa do modelo de dados.
Construindo as visualizações
Quando você está passando por rastreamentos, há muitas maneiras de avaliá-los. Neste artigo, vamos nos concentrar em uma divisão de duas visualizações - uma para mostrar os detalhes com os quais você se preocupa e outra para examinar facilmente as contribuições de tempo de vários fatores. Para a primeira visualização, uma tabela é usada. Você pode escolher os campos que quiser, mas os recomendados para uma visão fácil e de alto nível do que está acontecendo são:
- ID
- Hora de Início
- Consulta
- Passo
- Consulta da fonte de dados
- Duração exclusiva (%)
- Contagem de linhas
- Categoria
- É consulta do usuário
- Caminho
Para a segunda visualização, uma opção é usar um gráfico de colunas empilhadas. No parâmetro 'Axis', você pode querer usar 'Id' ou 'Step'. Se estamos olhando para o Refresh, porque ele não tem nada a ver com etapas no Editor em si, provavelmente queremos apenas olhar para 'Id'. Para o parâmetro 'Legenda', você deve definir 'Categoria' ou 'Operação' (dependendo da granularidade desejada). Para o 'Valor', defina 'Duração exclusiva' (e certifique-se de que não é o %, para que você obtenha o valor bruto da duração). Finalmente, para a dica de ferramenta, defina 'Hora de início mais antiga'.
Depois que a visualização for construída, certifique-se de classificar por 'Hora de início mais antiga' em ordem crescente para que você possa ver a ordem em que as coisas acontecem.
Embora suas necessidades exatas possam diferir, essa combinação de gráficos é um bom lugar para começar a olhar para vários arquivos de diagnóstico e para uma série de propósitos.
Interpretando as visualizações
Como mencionado acima, há muitas perguntas que você pode tentar responder com diagnósticos de consulta, mas as duas que vemos com mais frequência são perguntar como o tempo é gasto e perguntar qual é a consulta enviada para a fonte.
Perguntar como o tempo é gasto é fácil, e será semelhante para a maioria dos conectores. Um aviso com o diagnóstico de consulta, como mencionado em outro lugar, é que você verá recursos drasticamente diferentes dependendo do conector. Por exemplo, muitos conectores baseados em ODBC não terão uma gravação precisa da consulta enviada para o sistema back-end real, pois o Power Query só vê o que envia para o driver ODBC.
Se quisermos ver como o tempo é gasto, podemos apenas olhar para as visualizações que construímos acima.
Agora, como os valores de tempo para as consultas de exemplo que estamos usando aqui são tão pequenos, se quisermos trabalhar com a forma como o Power BI relata o tempo, é melhor converter a coluna Duração Exclusiva em 'Segundos' no editor do Power Query. Uma vez que fazemos essa conversão, podemos olhar para o nosso gráfico e ter uma ideia decente de onde o tempo é gasto.
Para meus resultados OData, vejo na imagem que a grande maioria do tempo foi gasto recuperando os dados da fonte — se eu selecionar o item 'Fonte de dados' na legenda, ele me mostra todas as diferentes operações relacionadas ao envio de uma consulta para a fonte de dados.
Se executarmos todas as mesmas operações e construirmos visualizações semelhantes, mas com os rastreamentos SQL em vez dos ODATA, podemos ver como as duas fontes de dados se comparam!
Se selecionarmos a tabela Fonte de dados, como no diagnóstico ODATA, podemos ver que a primeira avaliação (2.3 nesta imagem) emite consultas de metadados, com a segunda avaliação realmente recuperando os dados que nos interessam. Como estamos recuperando pequenas quantidades de dados neste caso, os dados recuperados levam uma pequena quantidade de tempo (menos de um décimo de segundo para toda a segunda avaliação acontecer, com menos de um vigésimo de segundo para a recuperação de dados em si), mas isso não será verdade em todos os casos.
Como acima, podemos selecionar a categoria 'Fonte de dados' na legenda para ver as consultas emitidas.
Aprofundando os dados
Olhando para os caminhos
Quando você está olhando para isso, se parecer que o tempo gasto é estranho — por exemplo, na consulta OData, você pode ver que há uma Consulta de Fonte de Dados com o seguinte valor:
Request:
https://services.odata.org/V4/Northwind/Northwind.svc/Customers?$filter=ContactTitle%20eq%20%27Sales%20Representative%27&$select=CustomerID%2CCountry HTTP/1.1
Content-Type: application/json;odata.metadata=minimal;q=1.0,application/json;odata=minimalmetadata;q=0.9,application/atomsvc+xml;q=0.8,application/atom+xml;q=0.8,application/xml;q=0.7,text/plain;q=0.7
<Content placeholder>
Response:
Content-Type: application/json;odata.metadata=minimal;q=1.0,application/json;odata=minimalmetadata;q=0.9,application/atomsvc+xml;q=0.8,application/atom+xml;q=0.8,application/xml;q=0.7,text/plain;q=0.7
Content-Length: 435
<Content placeholder>
Esta Consulta de Fonte de Dados está associada a uma operação que ocupa apenas 1% da Duração Exclusiva. Enquanto isso, há um semelhante:
Request:
GET https://services.odata.org/V4/Northwind/Northwind.svc/Customers?$filter=ContactTitle eq 'Sales Representative'&$select=CustomerID%2CCountry HTTP/1.1
Response:
https://services.odata.org/V4/Northwind/Northwind.svc/Customers?$filter=ContactTitle eq 'Sales Representative'&$select=CustomerID%2CCountry
HTTP/1.1 200 OK
Esta Consulta de Fonte de Dados está associada a uma operação que ocupa quase 75% da Duração Exclusiva. Se você ligar o Caminho, descobrirá que o último é, na verdade, um filho do primeiro. Isso significa que a primeira consulta basicamente adicionou uma pequena quantidade de tempo por conta própria, com a recuperação de dados real sendo rastreada pela consulta "interna".
São valores extremos, mas que estão dentro dos limites do que se pode ver.