Entender a dobra usando o Diagnóstico de Consulta

Um dos motivos mais comuns para usar o Diagnóstico de Consulta é entender melhor quais operações o Power Query delega à fonte de dados de back-end para execução. Esse processo também é conhecido como dobragem. Para ver quais operações têm query folding, observe a consulta mais específica ou as consultas que o Power Query envia à fonte de dados de backend. Você pode examinar esse processo para ODATA e SQL.

A operação descrita em Gravando diagnósticos de consulta no Power BI executa quatro etapas:

  • Conecta-se à fonte de dados
  • Recupera a tabela do cliente
  • Filtra a função ID do Cliente para Sales Representative
  • Agrupar por Country

Como o conector ODATA atualmente não oferece suporte para delegar COUNT() ao endpoint, e como esse endpoint também é limitado em suas operações, não esperamos que essa etapa final seja delegada. Por outro lado, a filtragem é relativamente trivial. Isso é exatamente o que vemos se examinarmos 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 filtrando a tabela por ContactTitle, que é igual a Sales Representative, e estamos retornando apenas duas colunas: Customer ID e Country. Country é necessário para a operação de agrupamento, que deve ser executada localmente porque não é executada pelo ponto de extremidade ODATA. Concluímos aqui o que dobra e o que não dobra.

Da mesma forma, se examinarmos a consulta específica e final emitida no diagnóstico do SQL, veremos 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]

Você pode ver que o Power Query cria uma subseleção na qual ContactTitle é filtrado para Sales Representative e, em seguida, agrupa por Country nessa subseleção. Todas as nossas operações encerraram.

Usando o Diagnóstico de Consulta, podemos examinar que tipo de operações dobradas. No futuro, esperamos tornar essa funcionalidade mais fácil de usar.