[DAY 1 - 2] 시간의 지배자: 데이터 유형,역할, 함수
1. 데이터 유형 변경
태블로 데스크톱에서 자동으로 숫자, 문자열, 날짜 데이터 유형을 인식한다. 날짜의 경우 날짜의 형식이나 날짜 리터럴을 따르는 경우 자동 인식한다.
파운드 기호(#)를 날짜 식과 함께 사용하며 날짜 리터럴이 없으면 날짜는 다양한 다른 데이터 유형으로 인식될 수 있다. 이것도 버전마다 상이하다.
- 년월 > 년월일로 변경하는 경우 1일로 기본 인식
- 날짜 > 날짜 및 시간 변경하는 경우 12:00:00 AM 인식
구분 | 예시 | 변경방법 |
날짜 및 시간/날짜 | #2023-05-13# 20230513 5/13/2023 |
월,일을 잘못 인식한 경우 DATEPARSE(형식, 문자열) 로 교정 후 "날짜" 변경 예. DATEPARSE("M/d/yyyy",[월/일/년]) > 2023.05.13 |
숫자 | 202305 | "날짜" 변경 > 2023.5.1 |
글자 | May.2023 2023-05 |
DATEPARSE("MMM.yyyy",[월년]) > 5/1/2023 12:00:00 AM |
연도, 월,일 필드 합쳐야 하는 경우 | 2023 5 1 |
1. 데이터 유형을 문자열로 변경 2. 필드 조합하고 날짜 문자로 파싱 DATEPARSE('yyyy-M-d', [연도] +'-'+[월]+'-'+[일]) 3. 날짜유형 변경 |
2. 날짜 속성
기본 달력, 주시작, 회계 연도시작, 날짜 형식을 설정 가능
3. 날짜의 역할 : 연속형/불연속형
연속형과 불연속형의 차이
연속형 날짜 | 불연속형 날짜 | |
기본값 여부 | X | O |
함수 | DATETRUNC(date_part, 날짜,[주 시작]) 출력: 날짜 |
DATEPART(date_part, 날짜,[주 시작]) 출력: 정수 |
date_part 예시 | date_part 기준으로 집계 2023-05-13 9:49:23 year : 2023-01-01 00:00:00 quarter: 2023-04-01 00:00:00 month : 2023-05-01 00:00:00 hour :2023-05-13 9:00:00 |
날짜의 일부를 불연속형의 수치형 데이터로 변환 2023-05-13 9:49:23 year :2023 quarter: 4 month : 5 hour :9 |
비고 | YEAR, QUARTER, MONTH, WEEK, DAY 함수로 대체 가능 숫자연산으로 빠름 |
4. 날짜 함수
데이터 유형 날짜 및 시간/ 날짜인 경우 날짜 함수를 활용 가능
기준날짜의 월 매출, 전월매출, YTD, MTD 등을 구할 수 있음
구분 | 설명 | 예시 |
DATEPARSE(date_format, [date_string]) |
특정 형식의 문자열을 날짜로 반환 | DATEPARSE('yyyy-MM-dd', "2023-05-13") = #May 13, 2023# |
DATETRUNC(date_part, 날짜,[주 시작]) | 날짜를 date_part에 따라 잘라내고 나머지 값을 최소 값으로 반환 | DATETRUNC(‘week’, #13/05/2023#) → #14/05/2023# * 날짜를 포함하는 주의 일요일 |
DATEPART(date_part, 날짜,[주 시작]) | 날짜의 date_part를 정수로 반환 | DATEPART('year', #2923-03-25#) → 2023 |
DATEDIFF(date_part, 날짜1, 날짜2) | 날짜1과 날짜2의 차이를 date_part 기준으로 계산 | DATEDIFF(‘month’,#2023. 05. 01#,#2023. 06. 23#) → 1 |
DATEADD (date_part, 지정한 숫자, 날짜) | date_part에 지정한 숫자만큼 더해 새로운 날짜를 반환 | DATEADD (‘month’, -1, #2020. 10. 23#) → 2020. 09. 23 |
date_part 인수
날짜 함수는 문자열 상수인 date_part 인수를 사용하여 일, 주, 분기 등을 구분합니다.
date_part 인수 | 설명 |
'year' | 4자리 연도 |
'quarter' | 1-4 |
'month' | 1-12 |
'dayofyear' | 일년 중 몇째 날. 1월 1일은 1, 2월 1일은 32 등 |
'day' | 1-31 |
'weekday' | 1-7 ("일요일"~"월요일" ) |
'week' | 1-52 |
'hour' | 0-23 |
'minute' | 0-59 |
'second' | 0-60 |
'iso-year' | 4자리 ISO 8601 연도 |
'iso-quarter' | 1-4 |
'iso-week' | 1-52, 주의 시작은 월요일 |
'iso-weekday' | 1-7, 주의 시작은 월요일 |
5. 회고
실무에서 많이 활용하는 날짜함수와 관련 시각화 및 계산 활용하는 방법을 중점적으로 다루어 유용했다.
기준이 되는 날짜 매개변수를 활용한 수식으로 여러 중첩되는 계산을 시행하여 원하는 결과까지 만들 수 있다.
5.1 날짜 함수
특정 날짜 기준 집계 구하는 방법을 DATEPART, DATETRUNC & DATEADD, DATEDIFF 함수를 활용해서 3가지 방법으로 구현해 봤다.
하나의 계산식에 if문/case문 처리하는 경우 :return값 string으로 처리하는 경우 필터를 통해서 집계하려 카디날러티가 많은 경우 유용
예. then '기준월'
각 계산식으로 처리하는 경우 : return은 집계할 값으로 바로 적용 가능
예. then [매출]
1) DATEPART
날짜의 연, 월, 일을 각각 비교
IF
DATEPART('year',[주문 일자]) = DATEPART('year', [p_기준날짜])
AND
DATEPART('month',[주문 일자]) = DATEPART('month', [p_기준날짜])
THEN '기준월'
ELSEIF
DATEPART('year',[주문 일자]) = DATEPART('year', [p_기준날짜])
AND
DATEPART('month',[주문 일자]) = DATEPART('month', [p_기준날짜]) - 1
THEN '전월'
END
2) DATETRUNC & DATEADD
월 기준으로 초기화하여 집계(예. 5월의 모든 날짜를 05-01 변환)
IF
DATETRUNC('month',[주문 일자]) = DATETRUNC('month',[p_기준날짜])
THEN '기준월'
ELSEIF
DATETRUNC('month', [주문 일자]) = DATETRUNC('month',DATEADD('month',-1,[p_기준날짜]))
THEN '전월'
END
3) DATEDIFF
각 일자의 월을 구하여 차이를 계산(동일한 경우 0)
IF
DATEDIFF('month',[주문 일자],[p_기준날짜]) = 0 THEN '기준월'
ELSEIF
DATEDIFF('month',[주문 일자],[p_기준날짜]) = 1 THEN '전월'
END
5.2 MTD, YTD, YoY 구하기
전월/전년 동기간 기준으로 작성하였으므로 dateadd를 제외하면 기준기간 기준이 됨
1) MTD(월초 누계, Month To Date)
기준이 되는 달과 그 전달의 특정시점까지의 누적값(해당월 1일~해당일자)
IF
[주문 일자] >= DATETRUNC('month', DATEADD('year',-1,[p_기준날짜]))
AND
[주문 일자] <= DATEADD('year',-1,[p_기준날짜])
THEN [매출]
END
2) YTD(연초 누계, Year To Date)
기준이 되는 해와 그 전연도의 특정시점의 수치를 비교한 증감율(해당 연도 1월 1일~해당일자)
IF
[주문 일자] >= DATETRUNC('year', DATEADD('year',-1,[p_기준날짜]))
AND
[주문 일자] <= DATEADD('year',-1,[p_기준날짜])
THEN [매출]
END
3) YoY(전년 동기 대비 증감률, Year on Year)
작년과 올해의 특정 시점을 비교로 기간은 주, 월, 분기, 반기, 년도가 된다.
위의 YTD를 이용해서 기준연도의 누적값과 그전의 누적값의 증감률을 하단과 같이 구할 수 있다.
( SUM([기준기간 매출])-SUM([전년동기간 매출]) ) / SUM([전년동기간 매출])
출처
https://help.tableau.com/current/pro/desktop/ko-kr/functions_functions_date.htm
관련글
[리뷰] 누구나 바로 시작하는 태블로, 나도? 나도!(+실습 후기)
[Tableau] Tableau Prep 시작- 설치, 세팅, 데이터 연결, 정리
[Tableau] Tableau Desktop Specialist 태블로 데스크탑 스페셜리스트 자격증 합격 후기(소개,시험 팁)
[Tableau]태블로 UDT(소개,일정,신청,커리큘럼,난이도,무료 교육)
[Tableau] Tableau Desktop Specialist 태블로 데스크탑 스페셜리스트 자격증 합격 후기(소개,시험 팁)
'Data > BI' 카테고리의 다른 글
[Tableau] Tableau Desktop Specialist 태블로 데스크탑 스페셜리스트 자격증 합격 후기(소개,시험 팁) (0) | 2023.08.14 |
---|---|
[Tableau]태블로 UDT(소개,일정,신청,커리큘럼,난이도,무료 교육) (0) | 2023.08.06 |
[Tableau] 태블로 동적으로 카테고리 별 상위 Top N개/순위 시각화/계산하기 (0) | 2023.04.10 |
[Tableau] 태블로-두 기간을 동일한 축에 동적으로 시계열 시각화하는 법 (0) | 2023.03.20 |
[Tableau] Tableau Prep 시작- 설치, 세팅, 데이터 연결, 정리 (0) | 2023.01.11 |