양방향 관계 지침
이 문서는 Power BI Desktop을 사용하는 데이터 모델러를 대상으로 합니다. 언제 양방향 모델 관계를 만들지에 대한 지침을 제공합니다. 양방향 관계는 양방향으로 필터링하는 관계입니다.
참고 항목
이 문서에서 모델 관계를 소개하지는 않습니다. 관계, 해당 속성 또는 관계를 구성하는 방법을 잘 모르겠으면 먼저 Power BI Desktop의 모델 관계 문서를 읽어보시는 것이 좋습니다.
별모양 스키마 디자인을 살펴보는 것도 중요합니다. 자세한 내용은 별모양 스키마 및 Power BI에서의 중요도 이해를 참조하세요.
일반적으로 양방향 관계의 사용을 최소화하는 것이 좋습니다. 이는 모델 쿼리 성능에 부정적인 영향을 미칠 수 있으며 보고서 사용자에게 혼란스러운 환경을 제공할 수 있기 때문입니다.
그러나 양방향 필터링이 특정 요구 사항을 해결할 수 있는 세 가지 시나리오가 있습니다.
특수 모델 관계
양방향 관계는 다음 두 가지 특수 모델 관계 유형을 만들 때 중요한 역할을 합니다.
- 일대일: 모든 일 대 일 관계는 양방향이어야 하며 다르게 구성할 수 없습니다. 일반적으로 이러한 유형의 관계는 만들지 않는 것이 좋습니다. 전체 토론 및 대체 디자인 패턴은 일대일 관계 지침참조하세요.
다대다 :두 개의차원 테이블을 관련시키는 경우 브리징 테이블 필요합니다. 양방향 필터는 브리징 테이블 간에 필터가 전파되도록 하기 위해 필요합니다. 자세한 내용은 다대다 관계 지침참조하세요.
슬라이서 옵션 "데이터 포함"
양방향 관계는 데이터가 있는 위치로 옵션을 제한하는 슬라이서를 제공할 수 있습니다. (Excel 피벗 테이블 및 슬라이서에 익숙한 경우 Power BI 의미 체계 모델 또는 Analysis Services 모델에서 데이터를 소싱할 때 기본 동작입니다.) 의미에 대해 설명하려면 먼저 다음 모델 다이어그램을 고려합니다.
첫 번째 테이블은 Customer
이름이 지정되며 Country-Region
, Customer
및 CustomerCode
세 개의 열이 포함됩니다. 두 번째 테이블은 Product
이름이 지정되며 Color
, Product
및 SKU
세 개의 열을 포함합니다. 세 번째 테이블은 Sales
이름이 지정되며 CustomerCode
, OrderDate
, Quantity
및 SKU
네 개의 열을 포함합니다.
Customer
및 Product
테이블은 차원 테이블이며 각각은 Sales
테이블과 일대다 관계를 맺습니다. 각 관계는 단일 방향으로 필터링됩니다.
양방향 필터링이 작동하는 방식을 설명하기 위해 모델 다이어그램이 테이블 행을 표시하도록 수정되었습니다. 이 문서의 모든 예제는 이 데이터를 기반으로 합니다.
세 테이블의 행 세부 정보는 다음 글머리 기호 목록에 설명되어 있습니다.
-
Customer
테이블에는 두 개의 행이 있습니다.-
CustomerCode
CUST-01,Customer
Customer-1,Country-Region
미국 -
CustomerCode
CUST-02,Customer
Customer-2,Country-Region
오스트레일리아
-
-
Product
테이블에는 세 개의 행이 있습니다.-
SKU
CL-01,Product
티셔츠,Color
그린 -
SKU
CL-02,Product
진,Color
블루 -
SKU
AC-01,Product
Hat,Color
Blue
-
-
Sales
테이블에는 세 개의 행이 있습니다.-
OrderDate
2019년 1월 1일,CustomerCode
CUST-01,SKU
CL-01,Quantity
10 -
OrderDate
2019년 2월 2일,CustomerCode
CUST-01,SKU
CL-02,Quantity
20 -
OrderDate
2019년 3월 3일,CustomerCode
CUST-02,SKU
CL-01,Quantity
30
-
이제 다음 보고서 페이지를 살펴보겠습니다.
페이지는 두 개의 슬라이서와 하나의 카드 시각적 개체로 구성되어 있습니다. 첫 번째 슬라이서에는 Country-Region
필드를 기반으로 하며 두 가지 옵션인 오스트레일리아 및 미국 옵션이 있습니다. 현재 오스트레일리아를 기준으로 조각화되어 있습니다. 두 번째 슬라이서는 Product
필드를 기반으로 하며, 모자, 청바지, 티셔츠 세 가지 옵션이 있습니다. 항목은 선택되지 않았습니다(필터링된 제품이 없음을 의미). 카드 시각적 개체는 수량 30을 표시합니다.
보고서 사용자가 오스트레일리아로 슬라이스할 때, 데이터 가을 통해 호주 판매와 관련된 옵션만 표시하도록 제품 슬라이서를 제한하고 싶을 수 있습니다. 이것이 "데이터 사용" 슬라이서 옵션을 표시함으로써 의미하는 바입니다.
Product
테이블과 Sales
테이블 간의 관계를 설정하여 를에서 양방향으로 필터링함으로써 이 동작을 수행할 수 있습니다.
이제 제품 슬라이서에 티셔츠라는 단일 옵션이 나열됩니다. 이 옵션은 호주 고객에게 판매되는 유일한 제품을 나타냅니다.
먼저 이 디자인이 보고서 사용자에게 적합한지 신중하게 고려하는 것이 좋습니다. 일부 보고서의 사용자는 다른 슬라이서와 상호 작용할 때 슬라이서 옵션이 동적으로 나타나거나 사라지는 이유를 이해하지 못하여 혼란스러워 합니다.
"데이터와 함께" 슬라이서 옵션을 표시하려는 경우 양방향 관계를 설정하지 않는 것이 좋습니다. 양방향 관계에는 더 많은 처리가 필요하므로 특히 모델의 양방향 관계 수가 증가함에 따라 쿼리 성능에 부정적인 영향을 미칠 수 있습니다.
동일한 결과를 달성하는 더 좋은 방법이 있습니다. 양방향 필터를 사용하는 대신 제품 슬라이서 자체에 시각적 수준 필터를 적용할 수 있습니다.
이제 Product
테이블과 Sales
테이블 간의 관계가 더 이상 양방향으로 필터링되지 않는다는 점을 고려해 봅시다. 또한 다음 측정값 정의가 Sales
테이블에 추가되었습니다.
Total Quantity = SUM(Sales[Quantity])
"데이터 포함" 제품 슬라이서 옵션을 표시하려면 "비어 있지 않음" 조건을 사용하여 Total Quantity
측정값으로 필터링하면 됩니다.
차원 간 분석
양방향 관계와 관련된 다른 시나리오에서는 팩트 테이블을 브리징 테이블대상으로 처리합니다. 이렇게 하면 다른 차원 테이블의 필터 컨텍스트 내에서 차원 테이블 데이터를 분석할 수 있습니다.
이 문서의 예제 모델을 사용하여 다음 질문에 대답할 수 있는 방법을 살펴보겠습니다.
- 오스트레일리아 고객에게 판매된 색은 몇 가지입니까?
- 청바지를 구매한 국가/지역은 몇 개입니까?
브리징 팩트 테이블에서 데이터를 요약하지 않고도 두 질문에
팩트 테이블이 브리징 테이블처럼 동작하므로 다대다 관계 지침을 적용하여 두 차원 테이블을 연결할 수 있습니다. 양방향으로 필터링하려면 하나 이상의 관계를 설정해야 합니다. 자세한 내용은 다대다 관계 지침참조하세요.
그러나 이 문서에 이미 설명된 것처럼, 이 디자인은 성능에 부정적인 영향을 미칠 가능성이 있으며, 슬라이서 옵션 "데이터 사용"과 관련하여 사용자 경험에 부정적인 결과가 발생할 수 있습니다. 따라서 CROSSFILTER DAX 함수를 대신 사용하여 측정값 정의에서 양방향 필터링을 활성화하는 것이 좋습니다. 식을 평가하는 동안 CROSSFILTER 함수를 사용하여 필터 방향을 수정하거나 관계를 사용하지 않도록 설정할 수 있습니다.
Sales
테이블에 추가된 다음 측정값 정의를 고려합니다. 이 예제에서는 Customer
테이블과 Sales
테이블 간의 모델 관계가 단일 방향필터링하도록 설정되었습니다.
Different Countries Sold =
CALCULATE(
DISTINCTCOUNT(Customer[Country-Region]),
CROSSFILTER(
Customer[CustomerCode],
Sales[CustomerCode],
BOTH
)
)
Different Countries Sold
측정값을 평가하는 동안 Customer
테이블과 Sales
테이블 간의 관계는 양방향으로 필터링됩니다.
다음 표에서는 판매된 각 제품에 대한 통계를 시각적으로 표시합니다.
Quantity
열은 단순히 수량 값의 합계입니다.
Different Countries Sold
열은 제품을 구매한 모든 고객의 국가 및 지역 값의 고유한 개수를 나타냅니다.
관련 콘텐츠
이 문서와 관련된 보다 자세한 내용을 알아보려면 다음 리소스를 참조하세요.