정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

오늘은 정크 차원 이라는 데이터 모델링 개념에 대해 이야기하려고 합니다 . 이름에서 경멸적이고 피하고 싶은 기술이라고 생각할 수 있지만 실제로는 유용한 접근 방식입니다.

사실 저는 에서 질문에 대해 작업했으며 정크 차원이 완벽한 솔루션이었습니다. 일단 그것을 보고 이해하면, 당신의 작업에서 그것을 많이 적용할 수 있을 것입니다. 이 블로그 하단에서 이 튜토리얼의 전체 비디오를 볼 수 있습니다.

목차

정크 차원이란 무엇입니까?

차원 모델링의 바이블 중 하나인 Kimball 및 Ross의 The Data Warehouse Toolkit은 이를 일반적으로 낮은 카디널리티 플래그 및 표시기의 그룹화 로 정의합니다 . 낮은 카디널리티는 주어진 필드 내에서 적은 수의 고유한 관찰을 의미합니다.

이 예에는 맞춤형 PC 구축 비즈니스를 위한 데이터 모델이 있습니다. 데이터 모델은 주문 및 송장에 관한 것입니다. 또한 프로세서 유형, 타워 구성 유형 (Compact 또는 Full) 및 목적 (Gaming 또는 Workstation) 을 캡처할 수 있는 여러 플래그가 있습니다 .

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

주방 잡동사니 서랍 비유를 사용하여 잡동사니 치수 정의

이러한 각 필드를 보면 각 필드에 두 개의 고유한 관찰만 있습니다. 이것이 Kimball이 낮은 카디널리티 플래그 라고 부르는 것입니다 . 그는 추상적 차원을 생성함으로써 팩트 테이블에서 플래그를 제거하는 동시에 유용한 차원 프레임워크에 플래그를 배치한다고 말합니다.

정크 차원에 대한 부엌 정크 서랍의 비유는 좋은 것입니다. 누구에게나 고무줄, 스테이플, 배터리, 생일 양초 등으로 가득 찬 서랍이 있습니다. 이러한 것들이 자체 서랍을 갖는 것은 중요하지 않지만 보관할 장소가 필요합니다.

이를 유지하면 팩트 테이블의 크기가 커질 수 있습니다. 백만 개의 레코드가 있는 팩트 테이블이 있다고 가정해 보겠습니다. 우리는 많은 컴퓨터를 만들었고 우리가 만드는 각 컴퓨터에 대해 프로세서, 타워 및 목적을 표시해야 합니다. 이것은 주문된 PC의 백만 행에 대해 팩트 테이블에 3백만 개의 플래그가 있음을 의미합니다.

팩트 테이블의 크기 줄이기

이를 차원 테이블로 이동하고 모델 ID에만 연결하여 사실 테이블에서 3백만 개의 플래그를 제거할 수 있습니다. 이를 위해 이러한 각 플래그에 대해 별도의 테이블을 만들 수 있으며 작동합니다. 그러나이 프로세스는 일반적으로 단일 열 테이블을 피하려는 데이터 모델을 복잡하게 만듭니다.

이상적인 솔루션은 정크 차원을 사용하는 것입니다 . 여기에는 일반적인 방식으로 관련된 낮은 카디널리티 플래그가 많이 있습니다. 이것들은 모두 우리가 만들고 있는 컴퓨터의 속성과 관련이 있지만 일반적으로 특정 차원 테이블에 대해 갖는 직접적인 방식은 아닙니다.

포럼 회원의 문제 검토

포럼에 게시된 특정 애플리케이션을 살펴보겠습니다. 회원은 두 개의 서로 다른 필드, 즉 StalledActive 에 대한 필드를 만들고자 했습니다 . 클라이언트가 지난 45일 동안 거래를 한 경우 활성 상태로 표시됩니다. 그렇지 않으면 정지된 것으로 플래그가 지정됩니다.

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

구성원은 또한 다중 주문 또는 단일 주문인 클라이언트 유형에 대한 다른 차원 테이블을 원했습니다. 계정에 단일 계정 번호를 사용하여 내역을 통해 어느 시점에서든 두 개 이상의 거래가 있는 경우 다중 주문 클라이언트로 간주됩니다. 그리고 주어진 계좌 번호에 대한 주문이 하나만 있는 경우 단일 주문 고객이 됩니다.

이것이 우리가 개발하고자 하는 두 가지 플래그입니다. LuckyTemplates로 이동하여 이를 수행하는 방법을 알아봅시다.

정크 차원의 데이터 모델링

데이터 모델을 살펴보겠습니다. 정말 간단한 데이터 모델입니다. 확장 날짜 테이블트랜잭션 테이블이 있습니다 .

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

거래 테이블에는 계좌 번호 , 송장 날짜판매 수량의 세 가지 필드만 있습니다 .

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

일반적으로 변환을 소스에 더 가깝게 푸시할 수 있다면 그렇게 할 것입니다. 이는 보고 세션 과정 내에서 동적이지 않으므로 DAX 에서 수행할 필요가 없습니다 .

해당 옵션이 있는 경우 파워 쿼리 또는 데이터 웨어하우스/SQL에서 수행해야 합니다. 하지만 지금은 하지 않고 파워 쿼리 에서 수행한다고 가정해 보겠습니다 .

정크 차원의 클라이언트 유형 식별

가장 먼저 할 일은 단일 주문인지 다중 주문인지 클라이언트 유형을 파악하는 것입니다. Group By , CountCount Rows 를 사용합니다 .

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

그런 다음 모든 데이터를 추가하고 집계된 테이블이 아니라 각 행에서 해당 행 개수가 포함된 초기 테이블을 반환하도록 모든 행 작업을 만듭니다.

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

결과를 살펴보고 확장해 보겠습니다.

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

사용자 지정 열을 추가하고 이름을 클라이언트 유형으로 지정한 다음 IF 문을 만들 수 있습니다. 문은 Count가 1이면 단일 주문입니다. 그렇지 않으면 다중 주문입니다.

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

열을 텍스트 유형으로 변경하기만 하면 됩니다. 이제 팩트 테이블에 설정된 두 차원 중 하나가 있습니다.

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

두 번째 차원 테이블을 완성해 봅시다. 이 경우 가장 최근 주문이 오늘 날짜로부터 45일 이내이면 클라이언트가 활성 상태로 간주됩니다. 오늘부터 45일 이내에 주문이 없으면 클라이언트는 비활성 상태입니다.

사용자 지정 열을 추가하고 열 이름을 Today 로 지정합니다 . 그런 다음 DateTime.LocalNow를 추가하여 현재 날짜와 시간을 제공한 다음 Date.From을 추가하여 날짜 부분만 제공하십시오.

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

이것을 날짜 데이터 형식으로 변경한 다음 열을 맨 앞으로 이동시키겠습니다.

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

두 날짜 열 사이에 빼기를 만드는 간단한 방법이 있습니다. 이 두 날짜를 강조 표시하고 리본에서 날짜를 클릭 한 다음 날짜 빼기를 클릭하십시오 .

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

이렇게 하면 일수 측면에서 두 날짜의 차이를 알 수 있습니다. 이 새 열의 이름을 오늘 전일로 지정하겠습니다 .

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

다음 단계는 오늘 이전의 최소 날짜를 찾는 것입니다. 즉, 각 계좌 번호에 대한 가장 최근 주문을 의미합니다. 해당 숫자가 45보다 작거나 같으면 활성 상태입니다.

또 다른 Group By , Advanced , Account Number 를 수행해 보겠습니다 .

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

다시 한 번 새 열 이름에 모든 데이터를 사용 하고 작업에 모든 행을 사용합니다.

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

이번에는 Minimum Days Between을 작업으로 추가 하고 Days Prior to Today를 해당 열로 추가합니다. 이것은 우리에게 가장 최근의 주문을 줄 것입니다.

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

그런 다음 모든 데이터를 확장 하고 계정 번호를 제거합니다 .

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

이를 확장하면 계정 번호에 대한 최소 일수를 갖게 됩니다.

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

마지막으로 다른 사용자 정의 열을 추가하고 이를 Client Timing 이라고 합니다 . Min Days Between이 45보다 작거나 같으면 Active 또는 Stalled 인 what-if 매개변수를 입력합니다 .

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

불필요한 열 제거

이제 많은 지원 열이 있으므로 열 선택을 클릭 하고 필요하지 않은 열을 제거해 보겠습니다.

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

Count , Today , Days Prior to TodayMin Days Between 열을 제거합니다 . 이제 원본 팩트 테이블과 Client TypeClient Timing 열만 있습니다 .

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

팩트 테이블에 보관하는 대신 이 테이블을 복제해 보겠습니다.

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

중복 테이블을 Account Flags 라고 합니다 .

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

트랜잭션 테이블 로 돌아가서 클라이언트 유형클라이언트 타이밍 필드를 제거해 보겠습니다 .

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

이제 원본 팩트 테이블과 Account Flags 테이블이 있습니다.

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

Account Flags 테이블의 경우 Client TypeClient Timing 필드가 필요하지 않으므로 이를 제거합니다. 이러한 모든 필드를 강조 표시하고 행을 제거하고 중복을 제거하기만 하면 됩니다.

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

이제 정크 차원 테이블이 있습니다. 남은 것은 닫기 및 적용 을 누르는 것입니다 . 다음 단계는 Account Flags 테이블의 Account Number를 Transactions 테이블의 Account Number 에 연결하는 것입니다 .

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

트랜잭션 테이블(사실 테이블)과 계정 플래그 테이블(정크 차원 테이블) 사이에는 일대다 관계가 있습니다.


LuckyTemplates에서 데이터 모델 관계 구축
LuckyTemplates에서 데이터 모델링: 팁 및 모범 사례

결론

클라이언트 타이밍클라이언트 유형 차원을 캔버스에 드롭하고 슬라이서로 전환해 보겠습니다 . 이제 우리는 멤버가 초기에 하고자 했던 것을 정확하게 할 수 있습니다. 바로 이러한 속성을 기반으로 슬라이스하는 것입니다.

다중 주문을 클릭하면 여러 주문이 있는 항목만 표시되고 단일 주문으로 이동하면 한 번 구매한 항목만 표시됩니다.

정크 디멘션: 그것이 무엇이며 정크가 아닌 이유

요약하면 이것은 기본적으로 정크 차원이 무엇이며 이를 생성하는 방법입니다. 이는 효율적인 방법으로 데이터 모델에 통합하려는 다양한 낮은 카디널리티 플래그가 있는 경우 매우 유용한 기술입니다.

모든 행별 그룹화 기술은 이러한 정크 차원을 생성하는 데 매우 유용합니다. 이것이 도움이 되었기를 바랍니다.

Leave a Comment

SharePoint의 계산된 열 | 개요

SharePoint의 계산된 열 | 개요

SharePoint에서 계산된 열의 중요성과 목록에서 자동 계산 및 데이터 수집을 수행하는 방법을 알아보세요.

Power Apps에서 변수 만들기: 컬렉션 작업

Power Apps에서 변수 만들기: 컬렉션 작업

컬렉션 변수를 사용하여 Power Apps에서 변수 만드는 방법 및 유용한 팁에 대해 알아보세요.

Microsoft Flow HTTP 트리거 | Power Automate 자습서

Microsoft Flow HTTP 트리거 | Power Automate 자습서

Microsoft Flow HTTP 트리거가 수행할 수 있는 작업과 Microsoft Power Automate의 예를 사용하여 이를 사용하는 방법을 알아보고 이해하십시오!

Power Automate 흐름: 사용법 및 유형 설명

Power Automate 흐름: 사용법 및 유형 설명

Power Automate 흐름 및 용도에 대해 자세히 알아보세요. 다양한 작업 및 시나리오에 사용할 수 있는 다양한 유형의 흐름에 대해 설명합니다.

흐름에서 Power Automate 종료 작업 제어

흐름에서 Power Automate 종료 작업 제어

조건이 충족되지 않는 경우 흐름에서 작업을 종료하는 Power Automate 종료 작업 컨트롤을 올바르게 사용하는 방법을 알아봅니다.

PowerApps 시작 기능: 앱에서 다른 서비스를 시작하는 방법

PowerApps 시작 기능: 앱에서 다른 서비스를 시작하는 방법

PowerApps 실행 기능에 대해 자세히 알아보고 자신의 앱에서 바로 웹사이트, 전화, 이메일 및 기타 앱과 같은 기타 서비스를 실행하십시오.

Power Automate의 HTTP 요청 – 소개

Power Automate의 HTTP 요청 – 소개

타사 애플리케이션 통합과 관련하여 Power Automate의 HTTP 요청이 작동하는 방식을 배우고 이해합니다.

Power Automate Desktop: 마우스 클릭 보내기 기능을 사용하는 방법

Power Automate Desktop: 마우스 클릭 보내기 기능을 사용하는 방법

Power Automate Desktop에서 Send Mouse Click을 사용하는 방법을 알아보고 이것이 어떤 이점을 제공하고 흐름 성능을 개선하는지 알아보십시오.

PowerApps 변수: 컨텍스트 및 전역 변수 식별

PowerApps 변수: 컨텍스트 및 전역 변수 식별

PowerApps 변수의 작동 방식, 다양한 종류, 각 변수가 앱에 기여할 수 있는 사항을 알아보세요.

Power Automate에서 실행할 데스크톱 흐름 예약

Power Automate에서 실행할 데스크톱 흐름 예약

이 자습서에서는 Power Automate를 사용하여 웹 또는 데스크톱에서 작업을 자동화하는 방법을 알려줍니다. 데스크톱 흐름 예약에 대한 포괄적인 가이드를 제공합니다.