[PowerBI] 쿼리 계획을 사용하여 PowerQuery에 대한 쿼리 FOLD를 조사합니다.
개시하다
조회 계획의 미리보기 기능이 있기 때문에 터치해서 조회를 배웁니다.
PBIJP 파워큐리 비밀특훈인'호랑이굴'염의 부활편 #11에 발표됐다.
Power QueryOnline에서 새 데이터 흐름 만들기
Power Query Online = 데이터 흐름 만들기
작업공간에서 새로 작성한 데이터 흐름을 선택하고, 빈 질의를 선택하고, 다음 Power Query를 설명(복사)합니다.let
Source = Sql.Database("servername", "database"),
Navigation = Source{[Schema = "Sales", Item = "SalesOrderHeader"]}[Data],
#"Removed other columns" = Table.SelectColumns(Navigation, {"SalesOrderID", "OrderDate", "SalesOrderNumber", "PurchaseOrderNumber", "AccountNumber", "CustomerID", "TotalDue"}),
#"Filtered rows" = Table.SelectRows(#"Removed other columns", each [TotalDue] > 1000),
#"Kept bottom rows" = Table.LastN(#"Filtered rows", 5)
in
#"Kept bottom row
servername
와 database
를 자기 환경에 맞는 이름으로 바꾸다.
단, 이것은 마이크로소프트가 제공한 Adventureworks
의 샘플 데이터베이스를 바탕으로 기술한 것이니 접근 가능한 데이터베이스에서 테스트하십시오.
Power QueryOnline에서 빈 질의를 호출하고 붙여넣습니다.자신의 환경에서 손 옆에 있는 데이터로 똑같은 처리를 해 보았다.
결과는 이렇다.페이지수 1000P 이상으로 축소한 후Table.LastN
마지막 5줄로 축소한 결과 5줄의 데이터만 나왔기 때문이다.
※Table.LastN 함수
오류 확인 표시기
스텝 볼륨 표시기🤔 이렇게 말하기는 어렵지만 조회 설정을 누르면 오른쪽 열에 나타난다.각 단계마다 Power Query 처리가 표시됩니다.
더 자세히 보면 한 걸음 한 걸음 오른쪽에 나타나는 표기가 다르다는 것을 알 수 있다.
녹색 플래그는 쿼리 폴딩을 수행하는 부분을, 빨간색은 Power Query 엔진을 처리하는 부분을 나타냅니다.
쿼리Folding의 목적은 많은 쿼리의 평가를 마운트 해제하거나 쿼리 변환을 계산할 수 있는 데이터 원본으로 미루는 것이다.
조회 집합 메커니즘에서 M 스크립트를 데이터 원본으로 해석하고 실행할 수 있는 언어로 변환함으로써 이 목적을 실현한다.
그런 다음 평가를 데이터 소스로 이동하고 평가 결과를 Power Query로 보냅니다.많은 경우, 이 조작을 통해 데이터 원본에서 필요한 모든 데이터를 추출하고, 조회를 실행하는 것이 PowerQuery 엔진을 실행하는 데 필요한 모든 변환보다 훨씬 빠르다.
질의 단계 선택 및 질의 체계 확인
조회 계획을 확인하려면 단계를 마우스 오른쪽 버튼으로 클릭합니다.
질의 계획이 사용 중으로 표시됩니다.자세한 내용을 보려면 클릭하십시오. SQL 서버에 실제 던진 로컬 조회도 확인할 수 있습니다.
마지막으로 실행된 Table.LastN関数
처리를 보면 전체 스캔이 표시됩니다.이것은 읽기 테이블에 저장된 모든 줄을 처리하는 것이기 때문에 줄 수가 많을수록 데이터 처리가 시간이 걸리고 제한 시간을 초과하면 처리가 끝나지 않는다.
PowerQuery 수정 쿼리 볼륨 사용
이렇게 하면 처리가 매우 느리기 때문에 최초로 쓴 조회를 수정해야 한다.Table.LastN 함수는 테이블을 읽어들이는 마지막 5행의 프로세스이므로 이와 동일한 작업을 다른 방법으로 수행합니다.
내림차순으로 재배열
이전 행 유지
오류 확인 표시기
빨간색 표시 없음
조회 계획 확인
모든 스캔 항목이 없습니다. 모두 데이터 원본 측의 처리입니다.
질의에 초점을 맞추는 처리 목록 방지
그게 다가 아니야.
let
Source = Sql.Database("servername", "database"),
Navigation = Source{[Schema = "Sales", Item = "SalesOrderHeader"]}[Data],
#"Removed other columns" = Table.SelectColumns(Navigation, {"SalesOrderID", "OrderDate", "SalesOrderNumber", "PurchaseOrderNumber", "AccountNumber", "CustomerID", "TotalDue"}),
#"Filtered rows" = Table.SelectRows(#"Removed other columns", each [TotalDue] > 1000),
#"Kept bottom rows" = Table.LastN(#"Filtered rows", 5)
in
#"Kept bottom row
Date.ToText([OrderDate], "yyyy")
성능 비교
다음 Docs에서는 연기 비교도 수행했습니다.참고 가치가 있기 때문에 꼭 읽어야 합니다. 원시적인 소스로 처리하면 데이터가 나오기 때문에 성능이 많이 달라요!
처리 행 수 비교
처리 시간 비교
총결산
원래의 원본 파일로 처리하는 것이 매우 중요하다. 여러 차례 FOLDING 조회가 중요하다고 말했지만 나는 모른다
실제로 행동하는 것이 더 중요하다.
참고 자료
Reference
이 문제에 관하여([PowerBI] 쿼리 계획을 사용하여 PowerQuery에 대한 쿼리 FOLD를 조사합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hanaseleb/items/62157639db8757fba399텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)