다음을 통해 공유


파워 쿼리의 쿼리 참조

이 문서는 Power BI Desktop을 개발하는 데이터 모델러를 대상으로 합니다. 다른 쿼리를 참조하는 파워 쿼리의 쿼리를 정의하기 위한 지침을 제공합니다.

이것이 의미하는 바를 명확하게 설명하자면 다음과 같습니다. 쿼리가 두 번째 쿼리를 참조하는 경우 두 번째 쿼리의 단계가 첫 번째 쿼리의 단계와 결합되고 이보다 먼저 실행되는 것과 같습니다.

몇 가지 쿼리를 고려해 보세요. Query1은 웹 서비스의 데이터를 원본으로 사용하고 로드는 사용하지 않습니다. Query2, Query3, Query4는 모두 Query1을 참조하고 해당 출력은 데이터 모델에 로드됩니다.

이전 단락에서 설명한 쿼리를 표시하는 쿼리 종속성 보기를 보여 주는 다이어그램.

데이터 모델을 새로 고칠 때 파워 쿼리가 Query1 결과를 검색하고 참조된 쿼리에서 다시 사용하는 것으로 가정하는 경우가 많습니다. 이는 잘못된 생각입니다. 실제로 파워 쿼리는 Query2, Query3, Query4를 별도로 실행합니다.

Query2Query1 단계가 포함되어 있다고 생각할 수 있습니다. Query3Query4도 마찬가지입니다. 다음 다이어그램에서는 쿼리가 실행되는 방식을 보다 명확하게 보여 줍니다.

Query 2, Query 3, Query 4를 표시하는 쿼리 종속성 보기의 수정된 버전을 보여 주는 다이어그램.

Query1은 세 번 실행됩니다. 여러 번의 실행으로 인해 데이터 새로 고침이 느려지고 데이터 원본에 부정적인 영향을 미칠 수 있습니다.

Query1에서 Table.Buffer 함수를 사용하면 추가 데이터 검색을 제거하지 않습니다. 이 함수는 테이블을 메모리에 버퍼링하며, 버퍼링된 테이블은 동일한 쿼리 실행 내에서만 사용할 수 있습니다. 그러므로 예제에서 Query2가 실행될 때 Query1이 버퍼링될 경우 Query3Query4가 실행될 때는 버퍼링된 데이터를 사용할 수 없습니다. 이러한 쿼리가 데이터를 두 번 더 버퍼링합니다. (각 참조 쿼리가 테이블을 버퍼링하기 때문에 성능에 대한 부정적 영향이 가중될 수 있습니다.)

참고 항목

파워 쿼리 캐싱 아키텍처는 복잡하며 이 문서에서 중점적으로 다루는 내용이 아닙니다. 파워 쿼리는 데이터 원본에서 검색된 데이터를 캐시할 수 있습니다. 그러나 쿼리를 실행할 때 데이터 원본에서 데이터를 두 번 이상 검색할 수 있습니다.

권장 사항

일반적으로 쿼리 전체에서 논리가 중복되지 않도록 쿼리를 참조하는 것을 권장합니다. 그러나 이 문서에 설명된 대로 이 디자인 방법은 데이터 새로 고침 속도를 저하하고 데이터 원본에 과도한 부담을 줄 수 있습니다.

대신 데이터 흐름을 만드는 것이 좋습니다. 데이터 흐름을 사용하면 데이터 새로 고침 시간을 개선하고 데이터 원본에 대한 영향을 줄일 수 있습니다.

원본 데이터와 변환을 캡슐화하도록 데이터 흐름을 디자인할 수 있습니다. 데이터 흐름은 Power BI 서비스의 지속형 데이터 저장소이므로 데이터 검색 속도가 빠릅니다. 따라서 참조 쿼리가 데이터 흐름에 여러 번 요청하는 경우에도 데이터 새로 고침 시간이 향상될 수 있습니다.

예제에서 Query1을 데이터 흐름 엔터티로 새로 디자인하는 경우 Query2, Query3, Query4가 이를 데이터 원본으로 사용할 수 있습니다. 이 디자인에서는 Query1에서 검색된 엔터티가 한 번만 평가됩니다.

이 문서와 관련된 보다 자세한 내용을 알아보려면 다음 리소스를 참조하세요.