DirectQuery를 사용하여 데이터 원본에 연결할 때 참조 무결성 가정 선택을 사용하여 데이터 원본에 대해 보다 효율적인 쿼리를 실행할 수 있습니다. 이 기능에는 기본 데이터의 몇 가지 요구 사항이 있으며 DirectQuery를 사용하거나 Microsoft Fabric의 의미 체계 모델에서 Direct Lake 모드에서만 사용할 수 있습니다.
비고
Microsoft Fabric의 의미 체계 모델에 대한 참조 무결성 설정은 웹 브라우저를 사용하여 서비스를 통해서만 설정할 수 있다고 가정합니다. Power BI Desktop을 사용하여 설정할 수 없습니다.
참조 무결성 가정 설정에서는 데이터 원본의 쿼리에서 OUTER JOIN이 아닌 INNER JOIN 문을 사용할 수 있으므로 쿼리 효율성이 향상됩니다.
참조 무결성 가정 사용 요구 사항
이 설정은 고급 설정이며 DirectQuery를 사용하여 데이터에 연결할 때만 사용할 수 있습니다. 참조 무결성 가정이 제대로 작동하려면 다음 요구 사항이 필요합니다.
- 관계에서 From 열의 데이터는 Null 또는 공백 이 아닙니다.
- From 열의 각 값의 경우 To 열에 해당 값이 있습니다.
이 컨텍스트에서 From 열은 일대다 관계에서 다이거나 일대일 관계에서 첫 번째 테이블의 열입니다.
참조 무결성 가정 사용의 예
다음 예제에서는 데이터 연결에서 사용할 때 참조 무결성 가정이 동작하는 방법을 보여 줍니다. 예제는 Orders 테이블, Products 테이블 및 Depots 테이블을 포함하는 데이터 원본에 연결합니다.
Orders 테이블 및 Products 테이블을 보여 주는 다음 그림에서 Orders[ProductID] 및 Products[ProductID] 사이에 참조 무결성이 있습니다. Orders 테이블의 [ProductID] 열은 Null 이 아니며 모든 값은 Products 테이블에도 나타납니다. 따라서 보다 효율적인 쿼리를 얻으려면 참조 무결성 을 설정해야 한다고 가정합니다. 이 설정을 사용하면 시각적 개체에 표시되는 값이 변경되지 않습니다.
다음 이미지에서 DepotID가 일부 Orders 에 대해 Null 이므로 Orders[DepotID] 및 Depots[DepotID] 사이에 참조 무결성이 없습니다. 따라서 참조 무결성을 설정해서는 안 된다고 가정합니다.
마지막으로 다음 표의 Orders[CustomerID]와 Customers[CustID] 사이에는 참조 무결성이 없습니다. CustomerID에는 Customers 테이블에 존재하지 않는 CustX 값이 포함되어 있습니다. 따라서 참조 무결성을 설정해서는 안 된다고 가정합니다.
참조 무결성 가정 설정
이 기능을 사용하도록 설정하려면 다음 이미지와 같이 참조 무결성 가정(Assume referential integrity)을 선택합니다.
선택하면 Null 또는 일치하지 않는 행이 없는 것을 확인하도록 데이터에 대한 설정의 유효성이 검사됩니다. 그러나 값이 많은 경우 유효성 검사는 참조 무결성 문제가 없다는 보장이 아닙니다.
또한 유효성 검사는 관계를 편집할 때 발생하며 데이터에 대한 후속 변경 내용을 반영 하지 않습니다 .
참조 무결성 가정이 잘못 설정되면 어떻게 되나요?
데이터에 참조 무결성 문제가 있을 때 참조 무결성 가정으로 설정하는 경우 해당 설정으로 인해 오류가 발생하지 않습니다. 그러나 데이터에 명백한 불일치가 발생합니다. 예를 들어 여기에 설명된 Depots 테이블에 대한 관계의 경우 다음과 같은 결과가 발생합니다.
- 총 주문 Qty 를 보여 주는 시각적 개체는 값 40을 표시합니다.
- 총 Order Qty by Depot City를 보여 주는 시각적 개체는 DepotID가 Null인 Order ID 1을 포함하지 않으므로 30의 총 값만을 표시합니다.
관련 콘텐츠
- DirectQuery에 대해 자세히 알아보세요.
- Power BI의 관계에 대한 자세한 내용을 알아보세요.
- Power BI Desktop의 모델 보기에 대해 자세히 알아봅니다.