목차
인삿말
안녕하세요. 대기업 BI 입니다.
이번 포스팅에서는 "날짜 테이블 만들기" 에 대해 알아볼 예정입니다.
이번 게시글에서는 처음으로 Pbix 파일도 공유드리고,
구체적으로 Power BI Desktop 영역에서 DAX라는 것을 짜볼 겁니다.
자 그럼 바로 들어가볼게요 😀
DAX 란 무엇인가?
[자세한 내용이 궁금하다면? https://learn.microsoft.com/ko-kr/dax/ 링크 참조 😀]
DAX란,
"Data Analysis Expressions"의 약자이며, 데이터 모델링, 계산 및 데이터 분석을 위해 설계된 함수와 연산자를 제공한다.
그럼 날짜 테이블 (DAX)을 구성하기 전, 기초적인 이해도부터 가져가볼게요.
쉽게 말하면, 엑셀에서 사용하는 수식 (Function)이라고 보면 되는데,
엑셀 내 파워피봇 (파워쿼리)과 동일하게 Power BI 내에서는 DAX를 사용한다고 보시면 됩니다.
자 그럼, DAX가 무엇인지는 알겠고.. (사실 잘 이해 안됨..)
DAX는 Power BI 안에서 어떻게 구성하는건데? 바로 살펴볼게요!
측정값으로 DAX 구성하기
만약 Power BI가 처음이시면, "DAX도 생소한데 측정값은 뭐지?" 라는 생각이 드실겁니다.
측정값은 어떤 시각적 개체에서 동적으로 동작하는 값입니다.
예시를 보자면 아래와 같습니다.
설치대수 = COUNTA('엘리베이터_설치현황'[승강기번호])
처럼 단순히 개수를 세는 DAX (수식) 이지만, 테이블 시각적 개체에서는 왼쪽에 "승강기구분명"이 들어가면
설치대수가 그에 맞게 나누어집니다.
즉 이처럼 시각적 개체에 축 값, 기준 값이 무엇이냐에 따라 설치대수가 나누어지는 형태라고 보시면 됩니다.
이를 시각적 개체에서 "동적으로" 동작하는 값, 측정값이라고 칭하는 것입니다.
자 그럼, DAX는 이와 같이 대표적으로 측정값에 사용되며, "새 열" 이라는 테이블 내 하나의 새로운 열로도 구성되어 동작이 됩니다.
새열로 DAX 구성하기
그럼 측정값은 하나의 동적인 값인데, 새 열로 DAX (수식)을 구성하는 것과는 무엇이 다른걸까요?
차이는 크게 아래와 같습니다.
1) 측정값 : 동적으로 동작하는 값
2) 새 열 : 테이블 내 저장 및 구성되어 필터링, 정렬, 그룹핑 등에 활용가능한 값
그럼 바로 예시먼저 살펴볼게요.
우선 "새 열"은
(1) [테이블 뷰] 클릭
(2) [열 도구] 클릭
(3) [새 열] 클릭
(4) DAX 입력 후 [Enter] 키 입력 → 새로운 열 생성
순으로 구성이 가능합니다.

아까 측정값에 사용했던 동일한 DAX를 입력했는데, 결과는 사뭇 다릅니다.
이처럼 새 열로 구성했지만, 해당 테이블의 개수를 모든 행에 따라 반환되는 결과를 가져왔습니다.
즉 이처럼 DAX의 목적에 따라 알맞게 측정값 or 새열로 구성하여 사용해야합니다.
1) 그리고 새열은 필터링 적용에 유리하며 자유도가 높고

2) 데이터 그룹화가 간편하며,


3) 새 열 생성 후 열 기준 정렬 등을 이용해 표현되는 값을 내가 원하는 순서로 보여지게 할 수 있습니다.
예시에서는 기존 Part Code 기준으로 정렬되다가, 열 기준 정렬을 적용해 Quantity 기준으로 정렬 한 내용입니다.

[정렬 미적용 예시]

[정렬 적용 예시]

날짜 테이블 만들기
물론 이 외에도 DAX에 대해 더 구체적인 이야기를 할수도 있지만, 이번 토픽은 DAX가 아니기에
간략하게 오버뷰만 하고 넘어가구요.
자 그럼 DAX를 이용해 날짜 테이블을 만들어 볼건데, 왜 날짜 테이블을 만드냐면 이유는 아래와 같습니다.
1) 다른 날짜 형식의 테이블을 관계 모델링하여 다중 테이블 필터링, 슬라이싱 가능
2) 사용자가 원하는 형식의 날짜 형식 정의 가능
만약 아래처럼 단일 테이블에서 날짜 데이터를 넣어서 시각적 개체를 그리면,

아래와 같은 부분들이 해소가 되지 않습니다. 그럼 날짜 테이블을 이용하면 아래 내용들이 해소가 가능하다는 이야기겠죠?
예시를 바로 살펴보겠습니다.
- 나는 주 단위로도 보고싶은데..?
- 해당 테이블말고도 다른 테이블에도 날짜 데이터가 있는데, 하나의 날짜로 다른 날짜 값들을 조정하고 싶은데..
1) 아래는 DAX로 "주"라는 값을 만들고 시각적 개체에 적용한 예시 사진입니다.

2) 그리고, 아래는 "날짜" 테이블과 "엘리베이터 설치현황", "엘리베이터 검사이력" 테이블 간 관계 모델링을 통해 "날짜" 테이블의 값으로 다른 두개의 테이블의 값을 한번에 조정하는 (필터링) 예시 사진입니다.



이처럼, "날짜" 테이블을 DAX로 구성하는 것은 앞으로 pbix 파일을 효율적으로 구성하고,
또 사용자 입맛에 맞게 시각적 개체를 구성하는데 필수적인 요소입니다.
또 아직 배우지 않았지만, 관계 모델링을 통해 여러 테이블을 한꺼번에 핸들링 할 수도 있어서,
아마 거의 모든 Power BI 유저가 날짜 테이블을 DAX로 구성하여 사용하고 있을 것 같네요.
자 그럼, 날짜 테이블을 DAX로 어떻게 만들까요?
(1) [테이블 뷰] 클릭
(2) 리본 메뉴 탭에 [홈] 클릭
(3) [새 테이블] 클릭
(4) 날짜 테이블 생성하는 DAX 복사/붙여넣기 후 Enter 클릭

그럼 아래와 같은 날짜 테이블이 보이게 되실겁니다.
DAX는 아래 DAX문을 복사+붙여넣기 해주시면 됩니다.
날짜 = ADDCOLUMNS(
CALENDAR(DATE(2023,1,1), DATE(2025,12,31)),
"연도", FORMAT([Date], "yyyy년"),
"분기", FORMAT([Date], "Q") & "분기",
"월No", MONTH([Date]),
"영문월", FORMAT([Date], "mmm"),
"연월", FORMAT([Date], "YYYY-MM"),
"연월2", FORMAT([Date], "YYYY년 MM월"),
"월", FORMAT([Date], "m월"),
"요일", FORMAT([Date], "ddd"),
"주",
1 + (WEEKNUM([Date]) - WEEKNUM(DATE(YEAR([Date]), MONTH([Date]), 1))) & "주",
"주2", WEEKNUM([Date]),
"일", DAY([Date]),
"일2", DAY([Date]) &"일"
)
매우 간단하죠? 😀
다만 한가지 바꿔주셔야 할 부분은 위 빨간색 음영 부분입니다.
처음 DATE(2023,1,1), 그다음 DATE(2023,12,31)은
시작날짜, 마지막 날짜를 의미하므로, 더 넓은 날짜 범위가 필요하신분은 시작, 끝 날짜를 바꿔주셔야합니다.
날짜 범위를 바꿔주면 아래 처럼 1986년 1월 1일 부터 2025년 12월 31일까지 날짜를 보실 수 있습니다.
맺음말
글을 적다보니 많이 길어졌는데, 개인적으로 "날짜" 테이블을 이해하는 것이 향후
모델링, DAX를 이해하는데도 많이 도움이 되기에 조금 급하게 진행해봤습니다 😁
이번 포스팅도 따라오시느라고 고생 많으셨고, 혹시 pbix 파일이 필요하신 분들께서는 댓글로 이메일 남겨주세요!
추가로 이번 포스팅에서 "날짜" 테이블을 파워쿼리로 구성해보기도 다뤄보려고 했는데,
게시글이 너무 길어질 듯 해서,
이메일 주소 남겨주신 분께 같이 전달드리도록 할게요 😀
자, 오늘도 즐거운 BI 하시고 다음에 뵐게요!
Power BI 문의하기
아래는 Power BI에 대해 더 알아보고 싶으신 분들에게 남겨드리는 글 입니다.
개인적인 궁금증이나, 기업/공공기관의 공식적인 의뢰 모두 환영이니 언제든지 연락주세요!
❒ Power BI 교육, 프로젝트 의뢰 : bigcorpbi0419@naver.com
❒ 크몽 의뢰하기 (첫 의뢰 할인) : https://kmong.com/gig/396278
제조업 관리 Power BI 시각화 대시보드 구축 - 크몽
대기업BI전문가 전문가의 IT·프로그래밍 서비스를 만나보세요. 전문가 소개- 해커스 HRD Power BI 대표 강사 - 현) 대기업 내 BI 코디네이터...
kmong.com
❒ 해커스 HRD 인터넷 강의 : https://www.hackershrd.com/lecture.php?mode=lecView&product_key=01::refu%3E4%3EB004%3EM029&p_id=17282a0d5e4c6aa48f5a2fa2a51ae9f3&s_id=Y23M080031
기업교육의 중심 :: 해커스HRD 챔프스터디
재직자 내일배움카드, 기업단체교육, 실무역량 강화 교육, 직급별 필수교육, 고용노동부 인증 훈련기관
www.hackershrd.com