카디널리티 줄이기

완료됨

카디널리티는 열에 있는 값의 고유성을 설명하는 데 사용되는 용어입니다. 카디널리티는 두 테이블 간 관계의 컨텍스트에서도 사용되어 관계의 방향을 설명합니다.

열에서 카디널리티 수준 식별

이전에는 Power Query 편집기를 사용하여 메타데이터를 분석할 때 보기 탭의 열 배포 옵션에서 데이터의 각 열에 있는 개별 항목 및 고유 항목의 수에 대한 통계가 표시되었습니다.

  • 개별 값 수 - 지정된 열에 있는 서로 다른 값의 총 개수입니다.

  • 고유 값 수 - 지정된 열에 한 번만 표시되는 값의 총 개수입니다.

열 배포 통계의 스크린샷

범위에 반복되는 값이 많은 열(고유 개수가 낮음)은 카디널리티 수준이 낮습니다. 반대로, 범위에 고유 값이 많은 열(고유 카운트가 높음)은 카디널리티 수준이 높습니다.

카디널리티가 낮을수록 성능이 더 최적화되므로 의미 체계 모델에서 카디널리 열 수를 줄여야 할 수 있습니다.

관계 카디널리티 줄이기

여러 테이블을 가져올 때는 이 모든 테이블의 데이터를 사용하여 일부 분석을 수행하게 됩니다. 결과를 정확하게 계산하고 보고서에 올바른 정보를 표시하려면 이 테이블 간의 관계가 필요합니다. Power BI Desktop을 통해 이러한 관계를 더 쉽게 만들 수 있습니다. 자동 검색 기능을 통해 처리되므로, 실제로 아무 작업도 수행할 필요가 없는 경우가 대부분입니다. 그러나 관계를 만들거나 관계를 변경해야 하는 경우가 가끔 있을 수 있습니다. 어떤 경우든, Power BI Desktop에서 관계를 이해하고 관계를 만들고 편집하는 방법을 이해하는 것이 중요합니다.

관계를 만들거나 편집할 때 추가 옵션을 구성할 수 있습니다. 기본적으로 Power BI Desktop에서는 최상의 추측에 따라 추가 옵션이 자동으로 구성되며, 이러한 옵션은 열의 데이터를 기반으로 하여 관계별로 다를 수 있습니다.

관계마다 카디널리티가 다를 수 있습니다. 카디널리티는 관계의 방향이며, 각 모델 관계는 카디널리티 유형으로 정의해야 합니다. Power BI의 카디널리티 옵션은 다음과 같습니다.

  • 다대일(*:1) - 이 관계는 가장 일반적인 기본 유형입니다. 한 테이블의 열은 둘 이상의 값 인스턴스를 가질 수 있고, 다른 관련 테이블(조회 테이블이라고도 함)은 하나의 값 인스턴스만 가질 수 있습니다.

  • 일대일(1:1) - 이 관계 유형에서는 한 테이블의 열과 다른 관련 테이블이 하나의 특정 값 인스턴스만 가집니다.

  • 일대다(1:*) - 이 관계 유형에서는 한 테이블의 열이 하나의 특정 값 인스턴스만 가지고, 다른 관련 테이블은 둘 이상의 값 인스턴스를 가질 수 있습니다.

  • 다대다(:) - 복합 모델을 사용하면 테이블 간에 다대다 관계를 설정할 수 있으며, 이 관계에서는 테이블의 고유 값에 대한 요구 사항이 제거됩니다. 또한 관계 설정 목적으로만 새 테이블을 도입하는 것과 같은 이전 해결 방법도 제거됩니다.

개발하는 동안 모델에서 관계를 만들고 편집하므로, 모델에서 새 관계를 작성할 때는 선택한 카디널리티에 관계없이 관계에 참여하는 데 사용하는 두 열이 모두 동일한 데이터 형식을 공유하고 있는지 항상 확인하시기 바랍니다. 두 열 사이에 관계를 만들려고 하는 경우 한 열에 텍스트 데이터 형식이 있고 다른 열에 정수 데이터 형식이 있다면 모델이 작동하지 않습니다.

다음 예에서는 Product 테이블과 Sales 테이블에서 ProductID 필드의 데이터 형식이 정수입니다. 데이터 형식이 정수인 열은 데이터 형식이 텍스트인 열보다 성능이 좋습니다.

ProductID의 데이터 형식을 확인하는 방법을 보여 주는 스크린샷

카디널리티 수준을 줄여 성능 향상

Power BI Desktop 요약과 같은 의미 체계 모델에 로드되는 데이터를 줄이는 데 사용할 수 있는 다양한 기술을 제공합니다. 모델에 로드되는 데이터를 줄이면 보고서의 관계 카디널리티가 향상됩니다. 이런 이유로, 모델에 로드되는 데이터를 최소화하도록 노력하는 것이 중요합니다. 이는 크기가 큰 모델 또는 시간 경과에 따라 커질 것으로 예상되는 모델의 경우 특히 그렇습니다.

모델 크기를 줄이는 가장 효과적인 방법은 데이터 원본의 요약 테이블을 사용하는 것입니다.  세부 정보 테이블에 모든 트랜잭션이 포함될 수 있는 반면 요약 테이블에는 일별, 주별 또는 월별로 하나의 레코드가 포함됩니다. 예를 들어 일별 모든 트랜잭션의 평균이 될 수도 있습니다.

예를 들어 원본 판매 팩트 테이블은 각 주문 라인에 대해 하나의 행을 저장합니다. 날짜, 고객 및 제품별로 그룹화하는 경우 모든 판매 메트릭을 요약하여 데이터를 크게 줄일 수 있으며, 개별 트랜잭션 정보는 필요하지 않습니다.

월 수준에서 날짜별로 그룹화하면 데이터를 훨씬 더 많이 줄일 수 있습니다. 모델 크기를 99% 줄이는 것이 가능합니다. 그러나 일 수준 또는 개별 주문 수준에서 보고하는 것은 더 이상 가능하지 않습니다. 팩트 유형 데이터를 요약하기로 결정하는 경우에는 항상 데이터의 세부 정보와 절충해야 합니다. 단점은 세부 정보가 더 이상 존재하지 않기 때문에 데이터를 자세히 파악하지 못할 수도 있다는 점입니다.  이러한 절충은 혼합 모델 디자인을 사용하여 완화할 수 있습니다.

Power BI Desktop에서 혼합 모드 디자인은 복합 모델을 생성합니다. 기본적으로 각 테이블에 대한 스토리지 모드를 결정할 수 있습니다. 따라서 각 테이블의 스토리지 모드 속성을 Import 또는 DirectQuery로 설정할 수 있습니다.

모델 크기를 줄이는 효과적인 방법은 크기가 큰 팩트 유형 테이블의 스토리지 모드 속성을 DirectQuery로 설정하는 것입니다. 이러한 접근 방식은 데이터를 요약하는 데 사용되는 기술과 함께 잘 작동할 수 있습니다. 예를 들어 요약된 판매 데이터를 사용하여 고성능 “요약” 보고를 달성할 수 있습니다. 특정(좁은) 필터 컨텍스트에 대한 세분화된 판매량을 표시하는 드릴스루 페이지를 만들어 모든 상황별 판매 주문을 표시할 수 있습니다. 드릴스루 페이지에는 판매 주문 데이터(판매 주문 세부 정보)를 검색하기 위한 DirectQuery 테이블 기반의 시각적 개체가 포함됩니다.

자세한 내용은 가져오기 모델링을 위한 데이터 축소 방법을 참조하세요.