다음을 통해 공유


Power BI Desktop의 참조 무결성 설정 가정 적용

DirectQuery를 사용하여 데이터 원본에 연결할 때 참조 무결성 가정 선택을 사용하여 데이터 원본에 대해 보다 효율적인 쿼리를 실행할 수 있습니다. 이 기능에는 기본 데이터의 몇 가지 요구 사항이 있으며 DirectQuery를 사용하는 경우에만 사용 가능합니다.

참조 무결성 가정 설정에서는 데이터 원본의 쿼리에서 OUTER JOIN이 아닌 INNER JOIN 문을 사용할 수 있으므로 쿼리 효율성이 향상됩니다.

참조 무결성 가정을 선택하는 관계 편집 대화 상자의 스크린샷

참조 무결성 가정 사용 요구 사항

이 설정은 고급 설정이며 DirectQuery를 사용하여 데이터에 연결할 때만 사용할 수 있습니다. 참조 무결성 가정이 제대로 작동하려면 다음 요구 사항이 필요합니다.

  • 관계에서 From 열의 데이터는 Null 또는 공백 이 아닙니다.
  • From 열의 각 값의 경우 To 열에 해당 값이 있습니다.

이 컨텍스트에서 From 열은 일대다 관계에서 이거나 일대일 관계에서 첫 번째 테이블의 열입니다.

참조 무결성 가정 사용의 예

다음 예제에서는 데이터 연결에서 사용할 때 참조 무결성 가정이 동작하는 방법을 보여 줍니다. 예제는 Orders 테이블, Products 테이블 및 Depots 테이블을 포함하는 데이터 원본에 연결합니다.

  • Orders 테이블 및 Products 테이블을 보여 주는 다음 그림에서 Orders[ProductID]Products[ProductID] 사이에 참조 무결성이 있습니다. Orders 테이블의 [ProductID] 열은 Null 이 아니며 모든 값은 Products 테이블에도 나타납니다. 따라서 보다 효율적인 쿼리를 얻으려면 참조 무결성 을 설정해야 한다고 가정합니다. 이 설정을 사용하면 시각적 개체에 표시되는 값이 변경되지 않습니다.

    Orders 테이블 및 Products 테이블의 스크린샷

  • 다음 이미지에서 DepotID가 일부 Orders 에 대해 Null 이므로 Orders[DepotID]Depots[DepotID] 사이에 참조 무결성이 없습니다. 따라서 참조 무결성을 설정해서는 안 된다고 가정합니다.

    Orders 테이블 및 Depots 테이블의 스크린샷.

  • 마지막으로 다음 표의 Orders[CustomerID]Customers[CustID] 사이에는 참조 무결성이 없습니다. CustomerID에는 Customers 테이블에 존재하지 않는 CustX 포함되어 있습니다. 따라서 참조 무결성을 설정해서는 안 된다고 가정합니다.

    Orders 테이블 및 Customers 테이블의 스크린샷

참조 무결성 가정 설정

이 기능을 사용하도록 설정하려면 다음 이미지와 같이 참조 무결성 가정(Assume referential integrity)을 선택합니다.

참조 무결성 가정을 선택할 수 있는 관계 편집 대화 상자의 스크린샷

선택하면 Null 또는 일치하지 않는 행이 없는 것을 확인하도록 데이터에 대한 설정의 유효성이 검사됩니다. 그러나 매우 큰 숫자의 값인 경우 유효성 검사는 참조 무결성 문제가 없다는 것을 보장하지 않습니다.

또한 유효성 검사는 관계 편집 시 발생하고 데이터에 대해 후속 변경 내용을 반영하지 않습니다 .

참조 무결성 가정이 잘못 설정되면 어떻게 되나요?

데이터에 참조 무결성 문제가 있을 때 참조 무결성 가정으로 설정하는 경우 해당 설정으로 인해 오류가 발생하지 않습니다. 그러나 데이터에 명백한 불일치가 발생합니다. 예를 들어 여기에 설명된 Depots 테이블에 대한 관계의 경우 다음과 같은 결과가 발생합니다.

  • 주문 Qty 를 보여 주는 시각적 개체는 값 40을 표시합니다.
  • Order Qty by Depot City를 보여 주는 시각적 개체는 DepotIDNull인 Order ID 1을 포함하지 않으므로 30의 총 값만을 표시합니다.