일 대 일 관계 지침
이 문서에서는 Power BI Desktop을 사용하는 데이터 모델러인 사용자를 대상으로 합니다. 일 대 일 모델 관계 작업에 대한 지침을 제공합니다. 일 대 일 관계는 양쪽 테이블이 각각 공통 및 고유 값의 열을 포함하는 경우에 만들 수 있습니다.
참고 항목
이 문서에서 모델 관계를 소개하지는 않습니다. 관계, 해당 속성 또는 관계를 구성하는 방법을 잘 모르겠으면 먼저 Power BI Desktop의 모델 관계 문서를 읽어보시는 것이 좋습니다.
별모양 스키마 디자인을 살펴보는 것도 중요합니다. 자세한 내용은 별모양 스키마 및 Power BI에서의 중요도 이해를 참조하세요.
일 대 일 관계를 포함하는 두 가지 시나리오가 있습니다.
행 데이터는테이블에 분산되어 있습니다. 단일 비즈니스 객체 또는 주제가 두 개 이상의 모델 테이블로 로드될 수 있는데, 이는 데이터가 서로 다른 데이터 저장소에서 유래하기 때문일 수 있습니다. 이 시나리오는 차원 테이블에서 흔히 있을 수 있습니다. 예를 들어 마스터 제품 세부 정보는 운영 판매 시스템에 저장되고 보조 제품 세부 정보는 다른 원본에 저장됩니다.
그러나 두 개의 팩트 테이블을 일대일 관계와 연관시키는 것은 드문 일입니다. 두 팩트 테이블 모두 차원과 세분성이 동일해야 하기 때문입니다. 또한 각 팩트 테이블에는 모델 관계를 만들 수 있도록 고유한 열이 필요합니다.
중복 제거 차원
팩트 테이블의 열이 필터링 또는 그룹화에 사용되는 경우, 별도의 테이블로 제공하는 것을 고려할 수 있습니다. 이렇게 하면 필터링 또는 그룹화에 사용되는 열을 팩트 행을 요약하는 데 사용되는 열과 구분합니다. 이러한 분리는 다음과 같은 효과가 있습니다.
- 스토리지 공간을 줄입니다.
- 모델 계산을 간소화합니다.
- 향상된 쿼리 성능에 기여합니다.
- 보고서 작성자에게 보다 직관적인 데이터 창 환경을 제공합니다.
판매 주문 줄 참조 세부 정보를 두 열에 저장하는 Sales
원본 테이블을 고려합니다.
OrderNumber
열은 주문 번호를 저장하고 OrderLineNumber
열은 순서 내에 선 시퀀스를 저장합니다.
다음 이미지에서는 주문 번호 및 주문 줄 번호 열이 Sales
테이블에 로드되지 않은 것을 확인합니다. 대신 해당 값은
판매와 판매 주문의 두 테이블을 보여 주는
Sales Order
차원 테이블은 Sales Order
및 Sales Order Line
두 개의 열을 사용하여 보고서 작성자들에게 풍부한 경험을 제공합니다. 이러한 특정 열은 주문 및 주문 항목을 필터링, 그룹화 또는 자세히 들여다봐야 하는 보고서 디자인을 지원합니다.
Sales Order
테이블은 판매 데이터에서 파생되므로 각 테이블에 정확히 동일한 수의 행이 있어야 합니다. 또한 각 OrderLineNumberID
열 간에 일치하는 값이 있어야 합니다.
행 데이터가 여러 테이블에 걸쳐 있음
Product
및 Product Category
두 개의 일대일 관련 차원 테이블이 포함된 예제를 생각해 보세요. 각 테이블은 가져온 데이터를 나타내며 고유한 값을 포함하는 SKU
(재고 유지 단위) 열이 있습니다.
다음은 두 테이블의 부분 모델 다이어그램입니다.
첫 번째 테이블은 Product
이름이 지정되며 Color
, Product
및 SKU
세 개의 열을 포함합니다. 두 번째 테이블은 Product Category
이름이 지정되며 Category
및 SKU
두 개의 열을 포함합니다. 일대일 관계는 두 SKU
열과 관련이 있습니다. 이 관계는 일 대 일 관계가 항상 그렇듯이 양방향으로 필터링됩니다.
관계 필터 전파의 작동 방식을 설명하기 위해 다음 이미지는 일부 테이블 행을 표시합니다. 이 문서의 모든 예제는 이 데이터를 기반으로 합니다.
제품 및 제품 범주 테이블과 일부 데이터 행을 보여 주는
두 테이블의 행 세부 정보는 다음 글머리 기호 목록에 설명되어 있습니다.
-
Product
테이블에는 세 개의 행이 있습니다.-
SKU
CL-01,Product
티셔츠,Color
그린 -
SKU
CL-02,Product
청바지,Color
블루 -
SKU
AC-01,Product
모자,Color
파란색
-
-
Product Category
테이블에는 두 개의 행이 있습니다.-
SKU
CL-01,Category
의류 -
SKU
AC-01,Category
액세서리
-
Product Category
테이블에는 제품 SKU CL-02대한 행이 포함되지 않습니다. 이 문서의 뒷부분에서 이 누락된 행의 결과를 설명합니다.
데이터 창에서 보고서 작성자는 Product
및 Product Category
두 테이블에서 제품 관련 필드를 찾습니다. 두 테이블의 필드가 테이블 시각적 개체에 추가될 때 어떤 일이 발생하는지 알아보겠습니다. 이 예제에서 SKU
열은 Product
테이블에서 가져옵니다.
두 개의 테이블이 있는 데이터 창과 4개의 열이 포함된 테이블 시각적 개체를 보여 주는
제품 SKU Category
의 값이 비어 있음을 주목하세요. 이 제품에 대한 Product Category
테이블에 해당 행이 없기 때문입니다.
권장 사항
행 데이터가 여러 모델 테이블에 걸쳐 있을 경우 가능하면 일 대 일 모델 관계를 만들지 않는 것이 좋습니다. 이 디자인은 다음을 수행할 수 있기 때문입니다.
- 데이터 창이 복잡해지도록 하여 필요한 것보다 많은 테이블을 나열합니다.
- 여러 테이블에 분산되어 있으므로 보고서 작성자가 관련 필드를 찾기 어렵게 만듭니다.
- 동일한 테이블의 열을 기반으로 해야 하므로 계층 구조를 생성하는 능력을 제한합니다.
- 테이블 간에 행이 완전히 일치하지 않으면 예기치 않은 결과를 생성합니다.
구체적인 권장 사항은 일대일 관계가 원본 그룹 내인지 또는 교차 원본 그룹인지에 따라 달라집니다. 관계 평가에 대한 자세한 내용은 Power BI Desktop
원본 그룹 내 일대일 관계
테이블 사이에 일대일 원본 그룹 내 관계가 있는 경우 데이터를 단일 모델 테이블로 통합하는 것이 좋습니다. 파워 쿼리 쿼리를 병합하여 이 작업을 수행할 수 있습니다.
다음 단계에서는 일대일 관련 데이터를 통합하고 모델링하는 방법을 제시합니다.
쿼리 병합: 두 쿼리를 결합할 경우 각 쿼리에서 데이터의 완전성을 고려해야 합니다. 하나의 쿼리에 전체 행 집합(예: 마스터 목록)이 포함된 경우 다른 쿼리와 병합합니다. 기본 조인 형식인 왼쪽 외부 조인사용하도록 병합 변환을 설정합니다. 이 조인 유형을 사용하면 첫 번째 쿼리의 모든 행을 유지하고 두 번째 쿼리의 일치하는 행으로 보충합니다. 두 번째 쿼리의 모든 필수 열을 첫 번째 쿼리로 확장합니다.
단일 제품 차원 테이블에 통합된 데이터를 보여 주는
쿼리 로드 사용 안 함: 두 번째 쿼리의 로드를 비활성화해야 합니다. 그러면 결과를 모델 테이블로 로드하지 않습니다. 이 구성은 데이터 모델 스토리지 크기를 줄이고 데이터 창을 정리하는 데 도움이 됩니다.
이 예제에서 보고서 작성자는 이제
Product
창에서 이라는 단일 테이블을 찾습니다. 이 테이블이 모든 제품 관련 필드를 포함합니다.누락된 값 바꾸기: 두 번째 쿼리에 일치하지 않는 행이 있으면 null 값이 해당 쿼리에서 도입된 열에 표시됩니다. 적절한 경우 null 값을 토큰 값으로 바꾸는 것이 좋습니다. 보고서 작성자가 열 값을 기준으로 필터링하거나 그룹화하는 경우 보고서 시각적 개체에 BLANK가 표시될 수 있기 때문에 누락 값을 바꾸는 것이 특히 중요합니다.
다음 이미지에서 제품 SKU CL-02 범주는 이제 [정의되지 않음]으로 표시됩니다. 쿼리에서 null 범주가 이 토큰 텍스트 값으로 바꼈습니다.
제품 테이블의 데이터 창을 보여 주는
계층 구조 만들기: 현재 통합된 테이블의 열 간에 관계가 존재하는 경우 계층 구조를 만드는 것이 좋습니다. 그러면 보고서 작성자가 시각적 개체 드릴링 기회를 빠르게 식별할 수 있습니다.
이 예제에서 보고서 작성자는 이제 두 가지 수준인
Category
및Product
계층을 사용할 수 있습니다.데이터 창을 보여 주는
개별 테이블이 필드를 구성하는 데 도움이 되는 경우에도 단일 테이블로 통합하는 것이 좋습니다. 필드를 계속 구성할 수는 있지만, 대신 표시 폴더를 사용합니다.
이 예제에서 보고서 작성자는 Category
표시 폴더 내에서 Marketing
필드를 찾을 수 있습니다.
모델에서 일대일 원본 그룹 내 관계를 정의하기로 결정하는 경우, 가능하면 연결된 테이블에 일치하는 행이 있어야 합니다. 일대일 원본 그룹 내 관계는 일반 관계로 평가되므로 데이터 무결성 문제는 보고서 시각적 개체에 BLANK로 표시될 수 있습니다. (이 문서에 나오는 첫 번째 테이블 시각적 개체에서 BLANK 그룹화의 예를 볼 수 있습니다.)
교차 원본 그룹 일대일 관계
테이블 사이에 일대일 교차 원본 그룹 관계가 있는 경우, 데이터 원본에서 데이터를 미리 통합하지 않으면 대안 모델 디자인이 없습니다. Power BI는 일 대 일 모델 관계를 제한된 관계로 평가합니다. 따라서 쿼리 결과에서 일치하지 않는 행이 제거되므로 관련 테이블에 일치하는 행이 있는지 확인합니다.
두 테이블의 필드가 테이블 시각적 개체에 추가되고 테이블 간에 제한된 관계가 있는 경우 어떻게 되는지 살펴보겠습니다.
원본 간 그룹 관계를 사용하는 첫 번째 테이블 시각화는 두 개의 행만 표시합니다.
테이블에 일치하는 행이 없으므로 제품 SKU Product Category
없습니다. 두 번째 테이블 시각적 요소는 모델의 하나의 통합된 테이블을 기반으로 3개의 행을 표시합니다.
관련 콘텐츠
이 문서와 관련된 보다 자세한 내용을 알아보려면 다음 리소스를 참조하세요.
- Power BI Desktop의 모델 관계
- 별모양 스키마 및 Power BI에서의 중요성 이해
- 관계 문제 해결 지침
- 궁금한 점이 더 있나요? 패브릭 커뮤니티에 문의해 보세요.
- 제안 사항은? 패브릭 개선 아이디어 기여하기