2020. 7. 17. 12:31ㆍ엑셀/파워피벗 공부
이번 포스팅은 매출실적 데이터를 원본으로 파워 쿼리와 파워 피벗을 통해서 구성된 결과물을 보면서 테이블 구성 요령에 대해서 정리해봅니다.
사실 저도 잘 안지키고 마구 사용하는 경우가 많습니다. 하지만 이런 작업들은 습관이 중요합니다. 헤매지 않고 바로 원하는 결과에 도달하려면 작업계획을 잘 세우고 또 실행한 내용을 점검하기 용이하게 정리를 하는 것이 중요합니다.
▶이름을 잘 정리하자.
이름 정의는 필수 입니다. 엑셀의 표, 피벗 테이블, 쿼리 등은 모두 이름 정의가 기본입니다. 그리고 이름 정의를 할 때는 이름만 가지고 어떤 데이터인지 알아볼 수 있도록 규칙을 정하는 것이 중요합니다.
제가 만든 규칙은 아니지만 여러 유투브나 블로그를 보다가 따라 하게 된 것이 있어 그 기준으로 정리해서 소개합니다. 그리고 이번 포스팅을 기회로 저도 각 작업과 포스팅 예제에 일관성 있는 규칙을 적용해서 습관을 들이는 것에 도전할 생각입니다.
1) 파워 쿼리/피벗을 사용할 때 이름 정의가 필요한 항목들
- 표 (Table)
- 피벗테이블
- 데이터모델 Table (파워 피벗)
- 쿼리 (파워 쿼리)
이들의 공통점은 모두 테이블 형태로 구성될 수 있다는 것이죠. 물론 쿼리는 상수, 함수, 목록(List) 형태로 로드가 가능합니다. 하지만 테이블 형태가 일반적인 쓰임이라서 같은 이름 규칙을 정해보려 합니다.
2) 이름 정의 규칙을 무엇으로 할까?
이리저리 고민을 하며 검색을 하다가 MS 사이트의 스타 스키마 권장 글을 보고 정했습니다.
https://docs.microsoft.com/ko-kr/power-bi/guidance/star-schema (원문)
별모양 스키마 및 Power BI에서의 중요성 이해 - Power BI
별모양 스키마와 성능 및 유용성에 최적화된 Power BI 데이터 모델 개발과의 관련성을 이해합니다.
docs.microsoft.com
별 모양 스키마 개요
별모양 스키마는 관계형 데이터 웨어하우스에서 널리 채택되는 안정적인 모델링 방법입니다. 이 방법을 사용하려면 모델러가 모델 테이블을 차원 또는 _팩트_로 분류해야 합니다.
차원 테이블은 모델링 _대상_인 비즈니스 엔터티를 설명합니다. 엔터티에는 제품, 사람, 장소, 시간 자체를 포함하는 개념 등이 있습니다. 별모양 스키마에서 가장 일관된 테이블은 날짜 차원 테이블입니다. 차원 테이블에는 고유 식별자 역할을 하는 키 열과 설명 열이 포함되어 있습니다.
팩트 테이블은 관찰이나 이벤트를 저장하며 판매 주문, 재고 잔액, 환율, 온도 등이 될 수 있습니다. 팩트 테이블은 차원 테이블과 관련된 차원 키 열 및 숫자 측정값 열을 포함합니다. 차원 키 열은 팩트 테이블의 _차원성_을 결정하는 반면, 차원 키 값은 팩트 테이블의 _세분성_을 결정합니다. 예를 들어 판매 목표를 저장하도록 디자인된 팩트 테이블에 Date 및 ProductKey라는 두 개의 차원 키 열이 있다고 가정합니다. 테이블에 두 개의 차원이 있음을 쉽게 파악할 수 있습니다. 하지만 차원 키 값을 고려하지 않으면 세분성을 확인할 수 없습니다. 이 예제에서는 Date 열에 저장된 값이 매월 1일임을 고려합니다. 이 경우 세분성은 월-제품 수준입니다.
일반적으로 차원 테이블의 행 수는 비교적 적습니다. 반면, 팩트 테이블은 행 수가 매우 많을 수 있으며 시간이 지남에 따라 계속 증가합니다.

Power BI 모델과 별모양 스키마의 관련성
별모양 스키마 디자인 및 이 문서에 소개된 많은 관련 개념은 성능과 유용성에 최적화된 Power BI 모델 개발과 관련성이 높습니다.
각 Power BI 보고서 시각적 개체는 Power BI 서비스에서 데이터 세트라고 불리는 Power BI 모델에 전송되는 쿼리를 생성한다는 점을 고려합니다. 이러한 쿼리는 모델 데이터를 필터링, 그룹화 및 요약하는 데 사용됩니다. 따라서 잘 디자인된 모델은 필터링 및 그룹화에 사용할 테이블과 요약에 사용할 테이블을 제공하는 모델입니다. 이 디자인은 별모양 스키마 원칙에 잘 맞습니다.
- 차원 테이블은 필터링 및 _그룹화_를 지원합니다.
- 팩트 테이블은 _요약_을 지원합니다.
모델러가 테이블 유형을 차원 또는 팩트로 구성하도록 설정하는 테이블 속성은 없습니다. 실제로 모델 관계에 따라 결정됩니다. 모델 관계는 두 테이블 간의 필터 전파 경로를 설정하며, 테이블 유형을 결정하는 관계의 카디널리티 속성입니다. 일반적인 관계 카디널리티는 일 대 다 또는 역으로 _다 대 일_입니다. “일” 쪽은 항상 차원 유형 테이블인 반면, “다” 쪽은 항상 팩트 유형 테이블입니다. 관계에 대한 자세한 내용은 Power BI Desktop의 모델 관계를 참조하세요.

잘 구성된 모델 디자인에는 차원 유형 테이블 또는 팩트 유형 테이블인 테이블이 포함되어야 합니다. 단일 테이블에서 두 가지 유형을 함께 사용하지 마세요. 또한 올바른 관계가 설정된 테이블을 적절한 개수만큼 제공하는 것이 좋습니다. 팩트 유형 테이블에서 항상 일관된 세분성으로 데이터를 로드하는 것도 중요합니다.
마지막으로, 최적 모델 디자인은 과학과 예술의 결합임을 이해하는 것이 중요합니다. 타당한 이유가 있을 때는 권장 지침대로 하지 않아도 됩니다.
[나의 이름 규칙]
- Fact 테이블과 Dimension 테이블을 구분해서 사용한다.
- Fact 테이블은 소문자 "f"를 앞에 붙인다.
- Dimension 테이블은 소문자 "d"를 앞에 붙인다.
- Fact 테이블과 Dimension 테이블의 구분 없이 단일 테이블을 사용할 경우에는 Fact 테이블로 보고 "f"를 붙인다.
- 이 규칙은 모든 테이블과 쿼리에 적용한다.
- 파워 쿼리의 예외 (테이블이 아닌 함수, 상수, 목록의 쿼리인 경우) : 함수 -> g , 상수와 목록 -> c로 한다.
- 피벗테이블 : 데이터 원본의 종류와 관계없이 모든 피벗테이블은 "p_"로 시작하는 이름으로 정의한다.
- 모든 이름은 가급적 영문으로 사용하는 것을 기준으로 하며 한글도 가능하다. 영문인 경우 첫 글자는 대문자로 나머지는 소문자로 사용한다.
- 예시 : (Fact 테이블) "fSales plan" , "f매출 계획"
좋은 습관이 되도록 잘 지키자.
▶이름 정의를 쉽게 관리하는 팁
이름을 쉽게 확인하고 수정하기 위해서 "빠른 실행 도구"에 추가해두는 것이 좋습니다.
표(Table) 이름
피벗테이블 이름
이렇게 빠른 실행 도구 모음에 추가해놓으면 해당 표나 피벗테이블을 클릭했을 때 바로 이름을 확인할 수 있으므로 매우 편리합니다.
파워 피벗의 데이터 모델이나 파워 쿼리의 쿼리는 항상 편집기나 목록에 이름이 있어 확인이 쉬운 반면에 표나 피벗테이블은 그렇지 않아서 매번 리본 메뉴를 찾아서 이름을 수정해주어야 합니다. 그러다 보니 항상 '표 1', '피벗테이블 1'로 사용하게 되죠.
특히 표의 경우에는 이름 정의를 한번 해두게 되면 그 표를 참조하는 데이터 모델이나 쿼리에서 표 이름과 동일하게 테이블 명을 자동으로 지정해주기 때문에 반드시 잘 정리하면서 사용하는 것이 중요합니다.
'엑셀 > 파워피벗 공부' 카테고리의 다른 글
[파워피벗] 누적측정값으로 일자별 재고 만들기 (0) | 2020.10.15 |
---|---|
파워쿼리로 데이터모델구성 예제 (0) | 2020.07.17 |
[파워피벗] DAX 함수- CALCULATE (0) | 2020.06.18 |
[파워피벗 공부] 계획 대비 실적 차이분 예제 (0) | 2020.06.15 |
엑셀 슬라이서 사용법(2/2) (0) | 2020.06.12 |