쿼리 진단을 사용하여 접기 이해

쿼리 진단을 사용하는 가장 일반적인 이유 중 하나는 '폴딩'이라고도 하는 백 엔드 데이터 원본에서 수행할 파워 쿼리에 의해 '푸시다운'된 작업을 더 잘 이해하기 위해서입니다. 접힌 항목을 확인하려면 백 엔드 데이터 원본으로 전송되는 '가장 구체적인' 쿼리 또는 쿼리를 확인할 수 있습니다. ODATA 및 SQL에 대해 이 두 가지를 모두 살펴볼 수 있습니다.

진단 기록 문서에 설명된 작업은 기본적으로 다음 네 가지 작업을 수행합니다.

  • 데이터 원본에 대한 커넥트
  • 고객 테이블 잡기
  • 고객 ID 역할을 '영업 담당자'로 필터링합니다.
  • '국가'별 그룹

ODATA 커넥터는 현재 엔드포인트에 대한 COUNT() 접기를 지원하지 않으며, 이 엔드포인트도 작업에 다소 제한되므로 최종 단계가 접을 것으로 예상하지 않습니다. 반면에 필터링은 비교적 사소합니다. 위에서 내보낸 가장 구체적인 쿼리를 보면 정확히 다음과 같습니다.

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

ContactTitle의 테이블을 'Sales Representative'와 동일하게 필터링하고 있으며 고객 ID 및 국가라는 두 개의 열만 반환하는 것을 볼 수 있습니다. 물론 ODATA 엔드포인트에서 수행되지 않으므로 로컬로 수행해야 하는 그룹화 작업에는 국가가 필요합니다. 여기서 접고 접지 않는 것을 결론을 내릴 수 있습니다.

마찬가지로 SQL 진단 내보내는 특정 및 최종 쿼리를 살펴보면 약간 다른 내용이 표시됩니다.

    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]

여기서 파워 쿼리는 ContactTitle을 'Sales Representative'로 필터링한 다음 이 하위 선택에서 국가별로 그룹화되는 하위 선택을 만드는 것을 볼 수 있습니다. 우리의 모든 작업은 접힌.

쿼리 진단을 사용하여 접힌 작업의 종류를 검사할 수 있습니다. 나중에 이 기능을 더 쉽게 사용할 수 있기를 바랍니다.