양방향 관계 지침

이 문서는 Power BI Desktop을 개발하는 데이터 모델러를 대상으로 합니다. 언제 양방향 모델 관계를 만들지에 대한 지침을 제공합니다. 양방향 관계는 양방향으로 필터링하는 관계입니다.

참고 항목

이 문서에서 모델 관계를 소개하지는 않습니다. 관계, 해당 속성 또는 관계를 구성하는 방법을 잘 모르겠으면 먼저 Power BI Desktop의 모델 관계 문서를 읽어보시는 것이 좋습니다.

별모양 스키마 디자인을 살펴보는 것도 중요합니다. 자세한 내용은 별모양 스키마 및 Power BI에서의 중요도 이해를 참조하세요.

일반적으로 양방향 관계는 최소한으로 사용하는 것이 좋습니다. 모델 쿼리 성능에 부정적인 영향을 줄 수 있으며 보고서 사용자에게 혼란스러운 환경이 될 수 있습니다.

양방향 필터링이 특정 요구 사항을 해결할 수 있는 세 가지 시나리오는 다음과 같습니다.

특수 모델 관계

양방향 관계는 다음 두 가지 특수 모델 관계 유형을 만들 때 중요한 역할을 합니다.

  • 일대일: 모든 일 대 일 관계는 양방향이어야 하며 다르게 구성할 수 없습니다. 일반적으로 이러한 유형의 관계는 만들지 않는 것이 좋습니다. 전체 설명 및 대체 디자인은 일 대 일 관계 지침을 참조하세요.
  • 다대다: 두 차원 유형 테이블을 연결하는 경우 브리징 테이블이 필요합니다. 양방향 필터는 브리징 테이블 간에 필터가 전파되도록 하기 위해 필요합니다. 자세한 내용은 다 대 다 관계 지침(다 대 다 차원 연결)를 참조하세요.

"데이터 포함" 슬라이서 항목

양방향 관계는 데이터가 존재하는 위치로 항목을 제한하는 슬라이서를 제공할 수 있습니다. (Excel 피벗 테이블 및 슬라이서에 익숙하다면 이는 Power BI 의미 체계 모델(이전에는 데이터 세트라고 함) 또는 Analysis Services 모델에서 데이터를 소싱할 때의 기본 동작입니다.) 그 의미를 설명하는 데 도움이 되도록 먼저 다음 모델 다이어그램을 살펴보겠습니다.

Diagram showing a model containing three tables. The design is described in the following paragraph.

첫 번째 테이블의 이름은 Customer이며 세 열(Country-Region, Customer, CustomerCode)이 포함되어 있습니다. 두 번째 테이블의 이름은 Product이며 세 개의 열(Color, Product, SKU)이 포함되어 있습니다. 세 번째 테이블의 이름은 Sales이며 네 개의 열(CustomerCode, OrderDate, Quantity, SKU)이 포함되어 있습니다. CustomerProduct 테이블은 차원 유형 테이블이며 각 테이블에는 Sales 테이블과 일 대 다 관계가 있습니다. 각 관계는 단일 방향으로 필터링됩니다.

양방향 필터링이 작동하는 방식을 설명하기 위해 모델 다이어그램이 테이블 행을 표시하도록 수정되었습니다. 이 문서의 모든 예제는 이 데이터를 기반으로 합니다.

참고 항목

Power BI Desktop 모델 다이어그램에는 테이블 행을 표시할 수 없습니다. 이 문서에서는 명확한 예제로 설명을 지원하기 위해 표시한 것입니다.

Diagram showing that the model now reveals the table rows. The row details are described in the following paragraph.

세 테이블의 행 세부 정보는 다음 글머리 기호 목록에 설명되어 있습니다.

  • Customer 테이블에는 다음 2개의 행이 있습니다.
    • CustomerCode CUST-01, Customer Customer-1, Country-Region United States
    • CustomerCode CUST-02, Customer Customer-2, Country-Region Australia
  • Product 테이블에는 다음 3개의 행이 있습니다.
    • SKU CL-01, Product T-shirt, Color Green
    • SKU CL-02, Product Jeans, Color Blue
    • SKU AC-01, Product Hat, Color Blue
  • Sales 테이블에는 다음 3개의 행이 있습니다.
    • OrderDate January 1 2019, CustomerCode CUST-01, SKU CL-01, Quantity 10
    • OrderDate February 2 2019, CustomerCode CUST-01, SKU CL-02, Quantity 20
    • OrderDate March 3 2019, CustomerCode CUST-02, SKU CL-01, Quantity 30

이제 다음 보고서 페이지를 살펴보겠습니다.

Diagram showing the report page containing three visuals. The details are described in the following paragraph.

페이지는 두 개의 슬라이서와 하나의 카드 시각적 개체로 구성되어 있습니다. 첫 번째 슬라이서는 Country-Region용이며 두 개의 항목(오스트레일리아와 미국)이 있습니다. 현재 오스트레일리아를 기준으로 조각화되어 있습니다. 두 번째 슬라이서는 Product용이며 세 가지 항목(모자, 셔츠, 티셔츠)이 있습니다. 항목은 선택되지 않았습니다(필터링된 제품이 없음을 의미). 카드 시각적 개체는 수량 30을 표시합니다.

보고서 사용자가 오스트레일리아를 기준으로 조각화되는 경우 Product 슬라이서를 데이터가 오스트레일리아 판매량에 연결되는 항목을 표시하도록 제한해야 할 수 있습니다. 이는 "데이터 포함" 슬라이서 항목을 표시할 때와 같은 의미입니다. Product 테이블과 Sales 테이블 간의 관계를 구성하여 양방향으로 필터링하는 방법으로 이 동작을 수행할 수 있습니다.

Diagram showing a model that the relationship between the Product and Sales table is now bi-directional.

이제 Product 슬라이서에 단일 항목(티셔츠)이 나열됩니다. 이 항목은 오스트레일리아 고객에게 판매되는 유일한 제품을 나타냅니다.

Diagram showing the report page containing three visuals with Product called out. The details are described in the following paragraph.

먼저 보고서 사용자에 대해 이 디자인이 작동하는지 신중하게 고려하는 것이 좋습니다. 일부 보고서 사용자에게는 이 환경이 혼란스러울 수 있습니다. 이들은 슬라이서와 상호 작용할 때 다른 슬라이서 항목이 동적으로 표시되거나 사라지는 이유를 이해하지 못합니다.

"데이터 포함" 슬라이서 항목을 표시하기로 결정한 경우 양방향 관계를 구성하지 않는 것이 좋습니다. 양방향 관계에서는 더 많은 처리가 필요하므로, 특히 모델의 양방향 관계 수가 증가할수록, 쿼리 성능에 부정적인 영향을 줄 수 있습니다.

동일한 결과를 달성하는 더 좋은 방법이 있습니다. 양방향 필터를 사용하는 대신 Product 슬라이서 자체에 시각적 개체 수준 필터를 적용할 수 있습니다.

이제 Product 테이블과 Sales 테이블 간의 관계가 더 이상 양방향에서 필터링되지 않는 경우를 살펴보겠습니다. 다음 측정값 정의가 Sales 테이블에 추가되었습니다.

Total Quantity = SUM(Sales[Quantity])

"데이터 포함" Product 슬라이서 항목을 표시하려면 "비어 있지 않음" 조건을 사용하여 Total Quantity 측정값을 기준으로 필터링하면 됩니다.

Diagram showing that the Filters pane for the Product slicer now filters by

차원 간 분석

양방향 관계와 관련된 다른 시나리오에서는 브리징 테이블과 같은 팩트 유형 테이블을 처리합니다. 이러한 방식으로 다른 차원 유형 테이블의 필터 컨텍스트에서 차원 유형 테이블 데이터의 분석을 지원합니다.

이 문서의 예제 모델을 사용하여 다음 질문에 대답할 수 있는 방법을 살펴보겠습니다.

  • 오스트레일리아 고객에게 판매된 색은 몇 가지입니까?
  • 청바지를 구매한 국가/지역은 몇 개입니까?

두 질문은 모두 브리징 팩트 유형 테이블에서 데이터를 요약하지 않고 대답할 수 있습니다. 그러나 필터는 하나의 차원 유형 테이블에서 다른 테이블로 전파되어야 합니다. 필터가 팩트 유형 테이블을 통해 전파되면 DISTINCTCOUNT DAX 함수(또한 MINMAX DAX 함수)를 사용하여 차원 유형 테이블 열의 요약을 얻을 수 있습니다.

팩트 유형 테이블이 브리징 테이블처럼 동작하기 때문에 다 대 다 관계 지침에 따라 두 개의 차원 유형 테이블을 연결할 수 있습니다. 양방향으로 필터링하려면 하나 이상의 관계를 구성해야 합니다. 자세한 내용은 다 대 다 관계 지침(다 대 다 차원 연결)를 참조하세요.

그러나 이 문서에 설명된 대로 이 디자인은 성능에 부정적인 영향을 미칠 수 있으며, 사용자가 "데이터 포함" 슬라이서 항목과 관련된 결과를 경험할 수 있습니다. 따라서 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 열은 제품을 구매한 모든 고객의 국가-지역 값 수를 나타냅니다.

Diagram showing that two products are listed in a table visual. In the

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