쿼리가 여러 번 실행되는 이유는 무엇인가요?

파워 쿼리를 새로 고치는 경우 원활한 사용자 환경을 제공하고 쿼리를 효율적이고 안전하게 실행하기 위해 백그라운드에서 많은 작업이 수행됩니다. 그러나 경우에 따라 데이터를 새로 고칠 때 파워 쿼리에서 여러 데이터 원본 요청이 트리거되는 것을 알 수 있습니다. 경우에 따라 이러한 요청은 정상이지만 다른 경우에는 방지할 수 있습니다.

여러 요청이 발생하는 경우

다음 섹션에서는 파워 쿼리가 여러 요청을 데이터 원본에 보낼 수 있는 몇 가지 인스턴스에 대해 설명합니다.

커넥트or 디자인

커넥트or는 메타데이터, 결과 캐싱, 페이지 매김 등 다양한 이유로 데이터 원본을 여러 번 호출할 수 있습니다. 이 동작은 정상이며 이러한 방식으로 작동하도록 설계되었습니다.

단일 데이터 원본을 참조하는 여러 쿼리

여러 쿼리가 해당 데이터 원본에서 가져오는 경우 동일한 데이터 원본에 대한 여러 요청이 발생할 수 있습니다. 이러한 요청은 하나의 쿼리만 데이터 원본을 참조하는 경우에도 발생할 수 있습니다. 해당 쿼리가 하나 이상의 다른 쿼리에서 참조되는 경우 각 쿼리는 의존하는 모든 쿼리와 함께 독립적으로 평가됩니다.

데스크톱 환경에서는 단일 공유 캐시를 사용하여 데이터 모델의 모든 테이블을 단일 새로 고칩니다. 캐싱은 동일한 데이터 원본에 대한 여러 요청의 가능성을 줄일 수 있습니다. 한 쿼리는 다른 쿼리에 대해 이미 실행되고 캐시된 동일한 요청의 이점을 활용할 수 있기 때문에 가능합니다. 하지만 여기서도 데이터 원본이 캐시되지 않기 때문에(예: 로컬 CSV 파일), 데이터 원본에 대한 요청이 다운스트림 작업(접기를 변경할 수 있음), 캐시가 너무 작거나(상대적으로 가능성이 낮음) 쿼리가 거의 동시에 실행되기 때문에 데이터 원본에 대한 요청이 이미 캐시된 요청과 다르기 때문에 여러 요청을 가져올 수 있습니다.

클라우드 환경에서는 각 쿼리가 별도의 캐시를 사용하여 새로 고쳐지므로 쿼리는 다른 쿼리에 대해 이미 캐시된 동일한 요청의 이점을 누릴 수 없습니다.

접는

경우에 따라 파워 쿼리의 접이식 계층은 다운스트림에서 수행되는 작업에 따라 데이터 원본에 대한 여러 요청을 생성할 수 있습니다. 이러한 경우 .를 사용하여 Table.Buffer여러 요청을 방지할 수 있습니다. 추가 정보: 테이블 버퍼링

Power BI Desktop 모델에 로드

Power BI Desktop에서 AS(Analysis Services)는 두 가지 평가를 사용하여 데이터를 새로 고칩니다. 하나는 스키마를 가져오고, 다른 하나는 AS에서 행 0을 요청하여 수행하며, 다른 하나는 데이터를 페치합니다. 행이 0인 스키마를 컴퓨팅하려면 데이터를 가져와야 하는 경우 중복된 데이터 원본 요청이 발생할 수 있습니다.

데이터 개인 정보 분석

데이터 개인 정보 보호는 각 쿼리에 대한 자체 평가를 수행하여 쿼리를 함께 실행해도 안전한지 여부를 확인합니다. 이 평가로 인해 데이터 원본에 대한 여러 요청이 발생할 수 있습니다. 지정된 요청이 데이터 개인 정보 분석에서 나온다는 알림 표시는 모든 데이터 원본이 이러한 조건을 지원하지는 않지만 "TOP 1000" 조건이 있다는 것입니다. 일반적으로 허용되는 것으로 가정하여 데이터 개인 정보를 사용하지 않도록 설정하면 새로 고치는 동안 "TOP 1000" 또는 기타 데이터 개인 정보 보호 관련 요청이 제거됩니다. 추가 정보: 데이터 개인 정보 보호 방화벽 사용 안 함

백그라운드 데이터 다운로드("백그라운드 분석"라고도 함)

데이터 개인 정보 보호를 위해 수행된 평가와 마찬가지로 파워 쿼리 편집기에서는 기본적으로 각 쿼리 단계의 처음 1000개 행 미리 보기를 다운로드합니다. 이러한 행을 다운로드하면 단계가 선택되는 즉시 데이터 미리 보기를 표시할 준비가 되지만 데이터 원본 요청이 중복될 수도 있습니다. 추가 정보: 백그라운드 분석 사용 안 함

기타 파워 쿼리 편집기 백그라운드 작업

다양한 파워 쿼리 편집기 백그라운드 작업은 추가 데이터 원본 요청을 트리거할 수도 있습니다(예: 쿼리 접기 분석, 열 프로파일링, Excel에 결과를 로드한 후 파워 쿼리가 트리거하는 1000행 미리 보기의 자동 새로 고침 등).

여러 쿼리 격리

중복 요청이 들어오는 위치를 격리하기 위해 쿼리 프로세스의 특정 부분을 해제하여 여러 쿼리의 인스턴스를 격리할 수 있습니다. 예를 들어 시작하는 경우:

  • 파워 쿼리 편집기에서
  • 방화벽을 사용하지 않도록 설정
  • 백그라운드 분석을 사용하지 않도록 설정
  • 열 프로파일링 및 기타 백그라운드 작업을 사용하지 않도록 설정
  • [선택 사항] 다음을 수행합니다. Table.Buffer

이 예제에서는 파워 쿼리 편집기 미리 보기를 새로 고칠 때 발생하는 단일 M 평가만 있습니다. 이 시점에서 중복 요청이 발생하는 경우 쿼리를 작성하는 방식에 내재된 것입니다. 그렇지 않은 경우 위의 설정을 하나씩 사용하도록 설정하면 중복 요청이 발생하는 시점을 관찰할 수 있습니다.

다음 섹션에서는 이러한 단계를 좀 더 자세히 설명합니다.

파워 쿼리 편집기 설정

쿼리를 다시 연결하거나 다시 만들 필요가 없으며 파워 쿼리 편집기에서 테스트하려는 쿼리를 열기만 하면 됩니다. 기존 쿼리를 어지럽게 하지 않으려면 편집기에서 쿼리를 복제할 수 있습니다.

데이터 개인 정보 방화벽 사용 안 함

다음 단계는 데이터 개인 정보 보호 방화벽을 사용하지 않도록 설정하는 것입니다. 이 단계에서는 원본 간의 데이터 유출에 대해 염려하지 않는다고 가정하므로 Excel에서 빠른 결합 설정 옵션에 설명된 상시 무시 개인 정보 수준 설정을 사용하거나 개인 정보 수준 무시를 사용하여 데이터 개인 정보 보호 방화벽을 사용하지 않도록 설정하면 Power BI Desktop의 Power BI Desktop 개인 정보 수준에 설명된 성능 설정이 향상될 수 있습니다.

일반 테스트를 다시 시작하기 전에 이 단계를 실행 취소해야 합니다.

백그라운드 분석 사용 안 함

다음 단계는 백그라운드 분석을 사용하지 않도록 설정하는 것입니다. 백그라운드 분석은 Power BI에 대한 파워 쿼리 백그라운드 새로 고침 사용 안 함에서 설명한 백그라운드 설정에서 데이터 미리 보기를 다운로드할 수 있도록 허용에 의해 제어됩니다. Excel에서 이 옵션을 사용하지 않도록 설정할 수도 있습니다.

백그라운드 분석이 비활성화된 Excel의 쿼리 옵션을 보여 주는 이미지

테이블 버퍼링

필요에 따라 로드 중에 발생하는 작업을 모방하는 모든 데이터를 강제로 읽도록 하는 데 사용할 Table.Buffer 수도 있습니다. 파워 쿼리 편집기에서 사용 Table.Buffer 하려면:

  1. 파워 쿼리 편집기 수식 입력줄에서 fx 단추를 선택하여 새 단계를 추가합니다.

    fx 단추의 위치가 강조된 이미지입니다.

  2. 수식 입력줄에서 이전 단계의 이름을 Table.Buffer(<이전 단계 이름은 여기에> 있음)로 묶습니다. 예를 들어 이전 단계의 이름이 지정된 Source경우 수식 입력줄이 표시됩니다 = Source. 수식 입력줄의 단계를 편집하여 다음을 말합니다 = Table.Buffer(Source).

추가 정보: Table.Buffer

테스트 실행

테스트를 실행하려면 파워 쿼리 편집기에서 새로 고침을 수행합니다.

새로 고침 단추의 위치가 강조된 이미지입니다.