관계 및 카디널리티 작업

완료됨

다른 데이터베이스 관리 시스템과 달리 Power BI에서는 관계에 ‘방향성’이라는 개념이 있습니다. 이 방향성은 여러 테이블 간에 데이터를 필터링하는 데 중요한 역할을 합니다. 데이터를 로드하면 Power BI에서는 열 이름을 일치시켜 데이터 내에 있는 관계를 자동으로 찾습니다. 관계 관리를 사용하여 이러한 옵션을 수동으로 편집할 수도 있습니다.

예를 들어 Sales 데이터베이스에서 많은 테이블을 검색했으며 다음 이미지는 의미 체계 모델의 예입니다. Power BI에서 여러 관계가 자동 검색되었지만, 이러한 관계의 의미를 파악할 수 없습니다. 이 관계가 데이터에 존재하는 관계를 정확히 반영하는지 확인하려고 합니다.

예제 의미 체계 모델의 스크린샷

관계

Power BI에서 찾을 수 있는 관계의 유형은 다음과 같습니다.

다대일(*:1) 또는 일대다(1: *) 관계

  • 한 열에 있는 특정 값의 여러 인스턴스가 다른 열에서 상응하는 단일 고유 인스턴스와 관련된 관계를 설명합니다.

  • 팩트 테이블과 차원 테이블 간의 방향성을 설명합니다.

  • 가장 일반적인 유형의 카디널리티이며 관계를 자동으로 생성할 때 Power BI에서 기본값으로 사용됩니다.

일대다 관계의 예로 CountryName 테이블과 Territory 테이블 간의 관계(하나의 고유 국가에 다수의 지역이 연결될 수 있음)를 들 수 있습니다.

다대일 관계 스크린샷.

일대일(1:1) 관계:

  • 두 테이블 간에 하나의 값 인스턴스만 공통으로 가지는 관계를 설명합니다.

  • 두 테이블에서 모두 고유한 값이 필요합니다.

  • 이 관계는 중복된 정보를 저장하고 모델이 올바르게 디자인되지 않았음을 암시하므로 이 관계는 권장되지 않습니다. 테이블을 결합하는 것이 더 좋습니다.

일대일 관계의 예로 서로 다른 두 테이블에 제품과 제품 ID가 있는 경우를 들 수 있습니다. 일대일 관계를 만드는 것은 중복되며, 이 두 테이블을 결합해야 합니다.

일대일 관계 스크린샷.

다대다(.) 관계:

  • 두 테이블 간에 다수의 공통 값이 있는 관계를 설명합니다.

  • 관계의 각 테이블에 고유한 값이 필요하지 않습니다.

  • 권장되지 않습니다. 고유한 값이 없어 모호성이 발생하고 사용자 입장에서는 어느 값 열이 무엇을 참조하는지 모를 수도 있습니다.

예를 들어 다음 그림은 OrderDate 열의 Sales 테이블과 Order 테이블 간의 다대다 관계를 보여 줍니다(여러 판매 건에 여러 주문이 연결될 수 있음). 모호성은 두 테이블에 동일한 주문 날짜가 있을 수 있기 때문에 발생합니다.

다대다 관계 스크린샷.

교차 필터 방향

관계의 한쪽 또는 양쪽 모두에서 데이터를 필터링할 수 있습니다.

단일 교차 필터 방향 사용:

  • 관계에서 하나의 테이블만 사용하여 데이터를 필터링할 수 있습니다. 예를 들어 테이블 1은 테이블 2를 기준으로 필터링할 수 있지만 테이블 2는 테이블 1을 기준으로 필터링할 수 없습니다.

    테이블 간의 관계에 대한 화살표 방향을 따라 필터가 흐르는 방향을 파악합니다. 일반적으로 이 화살표가 팩트 테이블을 가리키도록 합니다.

  • 일대다 또는 다대일 관계의 경우 교차 필터 방향은 “일” 쪽에서 출발합니다. 다시 말해서, 여러 값이 있는 테이블에서 필터링이 발생합니다.

양쪽 교차 필터 방향 또는 양방향 교차 필터링 사용:

  • 관계의 한 테이블을 사용하여 다른 테이블을 필터링할 수 있습니다. 예를 들어 팩트 테이블을 통해 차원 테이블을 필터링할 수 있고 차원 테이블을 통해 팩트 테이블을 필터링할 수 있습니다.

  • 다대다 관계에서 양방향 교차 필터링을 사용하면 성능이 저하될 수도 있습니다.

양방향 교차 필터링과 관련하여 주의할 사항: 이 필터링 결과를 완전히 이해하지 못하는 경우에는 양방향 교차 필터링 관계를 사용해서는 안 됩니다. 이 필터링 관계를 사용하면 모호성, 과다 샘플링, 예기치 않은 결과, 잠재적인 성능 저하가 발생할 수 있습니다.

카디널리티 및 교차 필터 방향

일대일 관계의 경우 양방향 교차 필터링 옵션만 사용할 수 있습니다. 이 관계의 어느 쪽에서든 데이터를 필터링하여 모호하지 않고 명확한 단일 값을 얻을 수 있습니다. 예를 들어 하나의 제품 ID를 기준으로 필터링하여 단일 제품을 반환할 수 있고 하나의 제품을 기준으로 필터링하여 단일 제품 ID를 반환할 수 있습니다.

다대다 관계의 경우 한 방향으로만 필터링하거나 양방향 교차 필터링을 사용해 양방향으로 필터링하도록 선택할 수 있습니다. 다대다 관계에서는 서로 다른 테이블 간에 여러 경로가 존재하기 때문에 양방향 교차 필터링과 관련된 모호성이 증폭됩니다. 측정이나 계산 또는 필터를 만드는 경우 데이터가 필터링되는 위치에서 의도하지 않은 결과가 발생할 수 있으며 Power BI 엔진에서 필터 적용 시 어느 관계가 선택되는지에 따라 최종 결과가 달라질 수도 있습니다. 이 상황은 양방향 관계에서도 마찬가지이며, 이 때문에 이 관계를 사용할 때는 주의해야 합니다.

위와 같은 이유로, 다대다 관계 및/또는 양방향 관계는 복잡합니다. 집계했을 때 데이터가 어떻게 표시될지 확실하게 모르는 경우에는 필터링 방향이 여러 개인 이런 유형의 개방형 관계를 사용하면 데이터 사이에 여러 경로가 생길 수 있습니다.

다대다 관계 만들기

고객 및 계정에 대한 예산을 검사하는 시각적 개체를 작성해야 하는 시나리오를 살펴보겠습니다. 동일한 계정에 여러 고객이 있고 동일한 고객에서 여러 계정이 있을 수 있으므로 다대다 관계를 만들어야 합니다.

다대다 관계 스크린샷.

이 관계를 만들려면 관계 관리>새로 만들기로 이동합니다. 결과 창에서 CustomerTable과 AccountTable의 Customer ID 열 간에 관계를 만듭니다. 관계는 다대다로 설정하고, 필터 유형은 양방향입니다. 예기치 않은 값이 발생할 수 있으므로 둘 중 어느 열에서도 고유한 값을 기대할 수 없는 경우에만 이 관계 유형을 사용해야 한다는 경고가 즉시 표시됩니다. 양방향으로 필터링하려는 경우 양방향 교차 필터링을 선택합니다.

확인을 선택합니다. 이제 다대다 관계를 성공적으로 만들었습니다.

관계 관리의 다대다 관계 스크린샷.

자세한 내용은 Power BI Desktop에서 다 대 다 관계 적용을 참조하세요.