Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Uma das razões mais comuns para usar o Diagnóstico de Consultas é compreender melhor que operações o Power Query envia para a fonte de dados do back-end para realizar. Este processo também é conhecido como dobragem. Para ver quais as operações que se dobram, observe a consulta ou consultas mais específicas que o Power Query envia para a fonte de dados do back-end. Pode analisar este processo tanto para ODATA como para SQL.
A operação descrita em Registar diagnósticos de consulta no Power BI inclui quatro passos:
- Liga-se à fonte de dados
- Recupera a tabela do cliente
- Filtra a função ID do Cliente por
Sales Representative - Agrupar por
Country
Uma vez que o conector ODATA atualmente não suporta a delegação de COUNT() para o ponto final e que este ponto final também é limitado nas operações que suporta, não esperamos que essa etapa final possa ser delegada. Por outro lado, filtrar é relativamente trivial. Isto é exatamente o que vemos se olharmos para a consulta mais específica emitida:
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
Podemos ver que estamos a filtrar a tabela por ContactTitle igual a Sales Representative, e estamos a devolver apenas duas colunas: Customer ID e Country.
Country é necessário para a operação de agrupamento, que deve ser realizada localmente porque não é realizada pelo endpoint ODATA. Podemos concluir aqui o que se dobra e o que não se dobra.
De forma semelhante, se olharmos para a consulta específica e final emitida no diagnóstico SQL, vemos algo ligeiramente diferente:
count(1) as [Count]
from
(
select [_].[Country]
from [dbo].[Customers] as [_]
where [_].[ContactTitle] = 'Sales Representative' and [_].[ContactTitle] is not null
) as [rows]
group by [Country]
Pode ver que o Power Query cria uma subseleção onde ContactTitle é filtrado para Sales Representative, depois agrupa por Country nesta subseleção. Todas as nossas operações cessaram.
Utilizando o Query Diagnostics, podemos examinar que tipo de operações foram objeto de folding. No futuro, esperamos tornar esta funcionalidade mais fácil de usar.