Noções básicas sobre dobramento com o Diagnóstico de Consulta

Uma das razões mais comuns para usar o Diagnóstico de Consulta é obter uma visão melhor de quais operações foram "empurradas" pelo Power Query para serem executadas pela fonte de dados de back-end, operação também conhecida como "dobragem". Se quisermos ver o que foi dobrado, podemos examinar quais consultas "mais específicas" foram enviadas para a fonte de dados de back-end. Podemos examinar isso tanto no ODATA quanto no SQL.

A operação descrita no artigo sobre Diagnóstico da Gravação faz basicamente quatro coisas:

  • conecta-se à fonte de dados
  • pega a tabela do cliente
  • filtra a função de ID do cliente para "Representante de vendas"
  • Agrupamentos por "País"

Como atualmente o conector do ODATA não suporta a dobragem COUNT() para o ponto de extremidade e, como esse ponto de extremidade também é um pouco limitado quanto às operações, não esperamos que essa etapa final seja dobrada. Por outro lado, a filtragem é relativamente simples. Isso é exatamente o que vemos se examinarmos a consulta mais específica produzida acima:

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 para ContactTitle igual a "Representante de Vendas", e estamos retornando apenas duas colunas: ID do Cliente e País. O país, obviamente, é necessário para o agrupamento que, como não está sendo executado pelo ponto de extremidade do ODATA, deve ser executado localmente. Podemos chegar à conclusão do que dobra e do que não dobra aqui.

Da mesma forma, se examinarmos a consulta específica e final produzida 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]

Aqui, podemos ver que o Power Query criou uma subseleção em que ContactTitle foi filtrado para "Representante de Vendas" e depois agrupou por País nesta subseleção. Todas as nossas operações foram dobradas.

A utilização do Diagnóstico de Consulta nos permite examinar que tipo de operações serão dobradas no futuro e, assim, esperamos facilitar o uso dessa funcionalidade.