날짜 함수
날짜는 많은 데이터 원본에서 공통 요소입니다. 필드에 식별 가능한 날짜가 포함되어 있으면 날짜 또는 날짜 시간 데이터 유형이 사용됩니다. 비주얼리제이션에서 날짜 필드를 사용하면 자동 날짜 계층 구조 드릴다운, 날짜별 필터 옵션, 특수 날짜 서식 옵션 등 특별한 기능 집합을 사용할 수 있습니다.
날짜 함수를 사용하여 데이터 원본의 날짜를 조작할 수 있습니다.
날짜 함수
날짜 함수는 date_part
인수, 선택적 [start_of_week]
매개 변수 및 날짜 리터럴(#)을 비롯한 날짜 관련 요소를 참조하는 경우가 있습니다. 이러한 내용은 이 항목의 끝 부분에서 자세히 다룹니다.
날짜 함수에 속하지 않지만 관심을 가질 만한 다음 몇 가지 항목도 참조하십시오.
- 비주얼리제이션에서 날짜를 표시하는 서식 지정: 사용자 지정 날짜 형식
- 기본 날짜 속성 설정: 데이터 원본의 날짜 속성
- 회계 날짜를 사용한 작업: 회계 날짜
- ISO-8601 달력 사용: ISO-8601 주 단위 달력
DATE
인식할 수 있는 형식의 문자열 및 숫자 식을 날짜로 변경하는 형식 변환 함수입니다.
구문 | DATE(expression) |
출력 | 날짜 |
정의 | 숫자, 문자열 또는 날짜 식이 주어진 날짜를 반환합니다. |
예 | DATE([Employee Start Date]) DATE("September 22, 2018") DATE("9/22/2018") DATE(#2018-09-22 14:52#) |
참고 | DATEPARSE와 달리 DATE는 다양한 표준 날짜 형식을 자동으로 인식하므로 패턴을 제공할 필요가 없습니다. 그러나 DATE가 입력을 인식하지 못하면 DATEPARSE를 사용하여 형식을 지정해 보십시오. MAKEDATE도 비슷한 함수이지만 MAKEDATE에는 연도, 월, 일에 대한 숫자 값을 입력해야 합니다. |
DATEADD
시작 날짜에 지정된 수의 날짜 부분(월, 일 등)을 추가합니다.
구문 | DATEADD(date_part, interval, date) |
출력 | 날짜 |
정의 | 지정된 숫자 간격을 해당 날짜의 지정된 date_part에 더해 지정된 날짜를 반환합니다. 예를 들어 시작 날짜에 3개월 또는 12일을 추가합니다. |
예 | 모든 만기 날짜를 1주일 단위로 푸시 DATEADD('week', 1, [due date])
날짜 2021년 2월 20일에 280일을 더하기 DATEADD('day', 280, #2/20/21#) = #November 27, 2021# |
참고 | ISO 8601 날짜를 지원합니다. |
DATEDIFF
두 날짜 사이의 날짜 부분(주, 년 등) 수를 반환합니다.
구문 | DATEDIFF(date_part, date1, date2, [start_of_week]) |
출력 | 정수 |
정의 | date_part 단위로 표시된 date1과 date2의 차이를 반환합니다. 예를 들어 누군가가 밴드를 가입하고 탈퇴한 날짜를 빼면 해당 밴드 체류 기간을 확인할 수 있습니다. |
예 | 1986년 3월 25일과 2021년 2월 20일 사이의 일 수 DATEDIFF('day', #3/25/1986#, #2/20/2021#) = 12,751
밴드 체류 개월 수 DATEDIFF('month', [date joined band], [date left band]) |
참고 | ISO 8601 날짜를 지원합니다. |
DATENAME
지정된 날짜 부분의 이름을 불연속형 문자열로 반환합니다.
구문 | DATENAME(date_part, date, [start_of_week]) |
출력 | 문자열 |
정의 | 날짜의 date_part를 문자열로 반환합니다. |
예 | DATENAME('year', #3/25/1986#) = "1986" DATENAME('month', #1986-03-25#) = "March" |
참고 | ISO 8601 날짜를 지원합니다. 매우 유사한 계산은 DATEPART이며, 이 계산에서는 지정된 날짜 부분의 값을 연속형 정수로 반환합니다. DATEPART는 숫자 연산이므로 속도가 더 빠릅니다. 계산 결과의 특성(차원 또는 측정값, 연속형 또는 불연속형)과 날짜 형식을 변경하면 DATEPART 및 DATENAME의 결과 서식이 동일하게 지정될 수 있습니다. 역함수는 DATEPARSE로, 문자열 값을 가져와 날짜 형식으로 지정합니다. |
DATEPARSE
특정 형식의 문자열을 날짜로 반환합니다.
구문 | DATEPARSE(date_format, [date_string]) |
출력 | 날짜 |
정의 | date_format 인수는 [string] 필드가 정렬되는 방식을 설명합니다. 문자열 필드를 정렬할 수 있는 방법이 다양하므로 date_format이 정확히 일치해야 합니다. 이에 대한 전체 설명은 필드를 날짜 필드로 변환을 참조하십시오. |
예 | DATEPARSE('yyyy-MM-dd', "1986-03-25") = #March 25, 1986# |
참고 | DATE는 다양한 표준 날짜 형식을 자동으로 인식하는 유사한 함수입니다. DATE가 입력 패턴을 인식하지 못하는 경우 DATEPARSE가 더 나은 옵션이 될 수 있습니다. MAKEDATE도 비슷한 함수이지만 MAKEDATE에는 연도, 월, 일에 대한 숫자 값을 입력해야 합니다. 날짜를 구분하고 해당 부분 값을 반환하는 역함수는 DATEPART(정수 출력)와 DATENAME(문자열 출력)입니다. |
데이터베이스 제한 사항 | DATEPARSE는 레거시가 아닌 Excel 및 텍스트 파일 연결, Amazon EMR Hadoop Hive, Cloudera Hadoop, Google 스프레드시트, Hortonworks Hadoop Hive, MapR Hadoop Hive, MySQL, Oracle, PostgreSQL 및 Tableau 추출 커넥터를 통해 사용할 수 있습니다. 일부 형식은 일부 연결에 사용할 수 없습니다. DATEPARSE는 Hive 버전에서 지원되지 않습니다. Denodo, Drill 및 Snowflake에서만 지원됩니다. |
DATEPART
지정된 날짜 부분의 이름을 정수로 반환합니다.
구문 | DATEPART(date_part, date, [start_of_week]) |
출력 | 정수 |
정의 | 날짜의 date_part를 정수로 반환합니다. |
예 | DATEPART('year', #1986-03-25#) = 1986 DATEPART('month', #1986-03-25#) = 3 |
참고 | ISO 8601 날짜를 지원합니다. 매우 유사한 계산은 DATENAME이며, 이 계산에서는 지정된 날짜 부분의 이름을 불연속형 문자열로 반환합니다. DATEPART는 숫자 연산이므로 속도가 더 빠릅니다. 필드 특성(차원 또는 측정값, 연속형 또는 불연속형)과 날짜 형식을 변경하면 DATEPART 및 DATENAME의 결과 서식이 동일하게 지정될 수 있습니다. 역함수는 DATEPARSE로, 문자열 값을 가져와 날짜 형식으로 지정합니다. |
DATETRUNC
이 함수는 날짜 반올림이라고 할 수 있습니다. 특정 날짜를 사용하여 원하는 특이성으로 해당 날짜의 버전을 반환합니다. 모든 날짜에는 일, 월, 분기 및 연도 값이 있어야 하므로 DATETRUNC는 이 값을 지정된 날짜 부분까지 각 날짜 부분에 대해 가장 낮은 값으로 설정합니다. 자세한 내용은 예를 참조하십시오.
구문 | DATETRUNC(date_part, date, [start_of_week]) |
출력 | 날짜 |
정의 | 날짜를 date_part에 지정된 정확도에 따라 잘라냅니다. 이 함수는 새 날짜를 반환합니다. 예를 들어 월 수준에서 월의 가운데에 있는 날짜를 잘라내면 이 함수는 월의 첫째 날을 반환합니다. |
예 | DATETRUNC('day', #9/22/2018#) = #9/22/2018# DATETRUNC('week', #9/22/2018#) = #9/16/2018# (9/22/2018을 포함하는 주의 일요일) DATETRUNC('iso-week', #9/22/2018#) = #9/17/2018# (9/22/2018을 포함하는 주의 월요일) DATETRUNC(month, #9/22/2018#) = #9/1/2018# (9/22/2018을 포함하는 월의 첫째 날) DATETRUNC(quarter, #9/22/2018#) = #7/1/2018# (9/22/2018을 포함하는 분기의 첫째 날) DATETRUNC('year', #9/22/2018#) = #1/1/2018# (9/22/2018을 포함하는 년의 첫째 날) 참고: 주 및 ISO 주의 경우 |
참고 | ISO 8601 날짜를 지원합니다. 예를 들어 비주얼리제이션의 날짜/시간 필드에 시간 표시를 중지하기 위해 DATETRUNC를 사용하지는 않을 것입니다. 날짜 표시를 반올림하지 않고 자르려면 서식을 조정합니다. 예를 들어, 비주얼리제이션에 초까지 표시될 경우 |
DAY
특정 월의 일자(1~31)를 정수로 반환합니다.
구문 | DAY(date) |
출력 | 정수 |
정의 | 주어진 날짜의 일을 정수로 반환합니다. |
예 | Day(#September 22, 2018#) = 22 |
참고 | WEEK, MONTH, QUARTER, YEAR 및 해당 ISO 날짜도 참조하십시오. |
ISDATE
문자열이 유효한 날짜 형식인지 확인합니다.
구문 | ISDATE(string) |
출력 | 부울 |
정의 | 주어진 문자열이 유효한 날짜이면 true를 반환합니다. |
예 | ISDATE(09/22/2018) = true ISDATE(22SEP18) = false |
참고 | 필수 인수는 문자열이어야 합니다. 날짜 데이터 유형이 있는 필드에는 ISDATE를 사용할 수 없습니다. 계산 시 오류가 반환됩니다. |
MAKEDATE
구문 | MAKEDATE(year, month, day) |
출력 | 날짜 |
정의 | 지정된 년, 월, 일로 구성된 날짜 값을 반환합니다. |
예 | MAKEDATE(1986,3,25) = #1986-03-25# 참고로, 값을 잘못 입력하면 4월 31일이 없다는 오류를 반환하는 대신 |
참고 | Tableau 데이터 추출에 사용할 수 있습니다. 다른 데이터 원본에서는 사용 가능한지 확인해야 합니다. MAKEDATE에는 날짜 부분에 대한 숫자 입력이 필요합니다. 데이터가 날짜를 나타내는 문자열이면 DATE 함수를 사용해 보십시오. DATE는 다양한 표준 날짜 형식을 자동으로 인식합니다. DATE가 입력을 인식하지 못하면 DATEPARSE를 사용해 보십시오. |
MAKEDATETIME
구문 | MAKEDATETIME(date, time) |
출력 | 날짜/시간 |
정의 | 날짜 및 시간을 결합하는 날짜/시간을 반환합니다. 날짜는 날짜, 날짜/시간 또는 문자열 유형일 수 있습니다. 시간은 날짜/시간이어야 합니다. |
예 | MAKEDATETIME("1899-12-30", #07:59:00#) = #12/30/1899 7:59:00 AM# MAKEDATETIME([Date], [Time]) = #1/1/2001 6:00:00 AM# |
참고 | 이 함수는 MySQL 호환 연결에만 사용할 수 있습니다(Tableau에서는 MySQL 및 Amazon Aurora). MAKETIME은 Tableau 데이터 추출 및 일부 다른 데이터 원본에 사용할 수 있는 유사한 함수입니다. |
MAKETIME
구문 | MAKETIME(hour, minute, second) |
출력 | 날짜/시간 |
정의 | 지정된 시, 분, 초로 구성된 날짜 값을 반환합니다. |
예 | MAKETIME(14, 52, 40) = #1/1/1899 14:52:40# |
참고 | Tableau는 시간 데이터 유형을 지원하지 않고 날짜/시간만 지원하므로 출력은 datetime입니다. 필드의 날짜 부분은 1/1/1899입니다. MAKEDATETIME과 유사한 함수, MYSQL 호환 연결에서만 사용할 수 있습니다. |
MAX
구문 | MAX(expression) 또는 MAX(expr1, expr2) |
출력 | 날짜(참고 사항 참조) |
정의 | MAX는 일반적으로 숫자에 적용되지만 날짜에도 작동합니다. 날짜 필드 하나 또는 둘의 최대값(가장 최근 날짜)을 반환합니다. |
예 | MAX(#Sept 22, 2018#, #Feb 20, 2021#) = #Feb 20, 2021# MAX([Ship date]) |
참고 |
인수가 Null이면 Null을 반환합니다. |
MIN
구문 | MIN(expression) 또는 MIN(expr1, expr2) |
출력 | 날짜(참고 사항 참조) |
정의 | MIN는 일반적으로 숫자에 적용되지만 날짜에도 작동합니다. 날짜 필드 하나 또는 둘의 최소값(가장 빠른 날짜)을 반환합니다. |
예 | MIN(#Sept 22, 2018#, #Feb 20, 2021#) = #Sept 22, 2018# MIN(Ship date]) |
참고 |
인수가 Null이면 Null을 반환합니다. |
MONTH
구문 | MONTH(date) |
출력 | 정수 |
정의 | 주어진 날짜의 월을 정수로 반환합니다. |
예 | MONTH(#1986-03-25#) = 3 |
참고 | DAY, WEEK, QUARTER, YEAR 및 해당 ISO 날짜도 참조하십시오. |
NOW
구문 | NOW() |
출력 | 날짜/시간 |
정의 | 현재 로컬 시스템 날짜 및 시간을 반환합니다. |
예 | NOW() = 1986-03-25 1:08:21 PM |
참고 | NOW는 인수를 사용하지 않습니다. 날짜/시간 대신 날짜를 반환하는 유사한 계산인 TODAY도 참조하십시오. 데이터 원본이 라이브 연결인 경우 시스템 날짜 및 시간이 다른 시간대에 있을 수 있습니다. 이 문제를 해결하는 방법에 대한 자세한 내용은 기술 자료를 참조하십시오. |
QUARTER
구문 | QUARTER(date) |
출력 | 정수 |
정의 | 주어진 날짜의 분기를 정수로 반환합니다. |
예 | QUARTER(#1986-03-25#) = 1 |
참고 | DAY, WEEK, MONTH, YEAR 및 해당 ISO 날짜도 참조하십시오. |
TODAY
구문 | TODAY() |
출력 | 날짜 |
정의 | 현재 로컬 시스템 날짜를 반환합니다. |
예 | TODAY() = 1986-03-25 |
참고 | TODAY는 인수를 사용하지 않습니다. 날짜 대신 날짜/시간을 반환하는 유사한 계산인 NOW도 참조하십시오. 데이터 원본이 라이브 연결인 경우 시스템 날짜가 다른 시간대에 있을 수 있습니다. 이 문제를 해결하는 방법에 대한 자세한 내용은 기술 자료를 참조하십시오. |
WEEK
구문 | WEEK(date) |
출력 | 정수 |
정의 | 주어진 날짜의 주를 정수로 반환합니다. |
예 | WEEK(#1986-03-25#) = 13 |
참고 | DAY, MONTH, QUARTER, YEAR 및 해당 ISO 날짜도 참조하십시오. |
YEAR
구문 | YEAR(date) |
출력 | 정수 |
정의 | 주어진 날짜의 연도를 정수로 반환합니다. |
예 | YEAR(#1986-03-25#) = 1,986 |
참고 | DAY, WEEK, MONTH, QUARTER 및 해당 ISO 날짜도 참조하십시오. |
ISOQUARTER
구문 | ISOQUARTER(date) |
출력 | 정수 |
정의 | 주어진 날짜의 ISO8601 주 기반 분기를 정수로 반환합니다. |
예 | ISOQUARTER(#1986-03-25#) = 1 |
참고 | ISOWEEK, ISOWEEKDAY, ISOYEAR 및 해당 ISO 이외의 날짜도 참조하십시오. |
ISOWEEK
구문 | ISOWEEK(date) |
출력 | 정수 |
정의 | 주어진 날짜의 ISO8601 주 기반 주를 정수로 반환합니다. |
예 | ISOWEEK(#1986-03-25#) = 13 |
참고 | ISOWEEKDAY, ISOQUARTER, ISOYEAR 및 해당 ISO 이외의 날짜도 참조하십시오. |
ISOWEEKDAY
구문 | ISOWEEKDAY(date) |
출력 | 정수 |
정의 | 주어진 날짜의 ISO8601 주 기반 요일을 정수로 반환합니다. |
예 | ISOWEEKDAY(#1986-03-25#) = 2 |
참고 | ISOWEEK, ISOQUARTER, ISOYEAR 및 해당 ISO 이외의 날짜도 참조하십시오. |
ISOYEAR
구문 | ISOYEAR(date) |
출력 | 정수 |
정의 | 주어진 날짜의 ISO8601 주 기반 연도를 정수로 반환합니다. |
예 | ISOYEAR(#1986-03-25#) = 1,986 |
참고 | ISOWEEK, ISOWEEKDAY, ISOQUARTER 및 해당 ISO 이외의 날짜도 참조하십시오. |
date_part
인수
Tableau의 수많은 날짜 함수는 일, 주, 분기 등과 같이 고려해야 할 날짜 부분을 함수에 알려주는 문자열 상수인 date_part
인수를 사용합니다.
사용할 수 있는 올바른 date_part
값은 다음과 같습니다.
date_part | 값 |
---|---|
'year' | 4자리 연도 |
'quarter' | 1-4 |
'month' | 1-12 또는 "1월", "2월" 등 |
'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, 주의 시작은 항상 월요일 |
[start_of_week]
매개 변수
일부 함수에는 선택적 매개 변수 [start_of_week]
가 있습니다. start_of_week
매개 변수는 "일요일" 또는 "월요일"과 같이 주의 첫번째 요일로 간주되는 요일을 지정하는 데 사용할 수 있습니다. 생략되면 주의 시작은 데이터 원본에 의해 결정됩니다. 데이터 원본의 날짜 속성을 참조하십시오.
아래 예에서 9월 22일은 일요일이고 9월 24일은 화요일입니다. DATEDIFF 함수는 이러한 날짜 사이의 주를 계산하는 데 사용됩니다.
DATEDIFF('week', #2013-09-22#, #2013-09-24#, 'monday') = 1
- start_of_week는 'monday'이므로 이들 날짜는 다른 주에 있습니다.
DATEDIFF('week', #2013-09-22#, #2013-09-24#, 'sunday') = 0
- start_of_week는 'sunday'이므로 이들 날짜는 같은 주에 있습니다.
날짜 리터럴(#)
예에서는 파운드 기호(#)를 날짜 식과 함께 사용하는 경우가 많습니다. 이는 텍스트 문자열에 따옴표를 사용하는 것과 유사한 날짜 리터럴이며 기호 내의 값이 날짜임을 Tableau에 알립니다.
날짜 리터럴이 없으면 날짜는 다양한 다른 데이터 유형으로 해석될 수 있습니다. 예:
형식 | 데이터 유형 | 값 |
'March 25, 1986' | 문자열 | 'March 25, 1986' |
#1986-03-25# | 날짜 | #1986-03-25# |
03/25/1986 | 부동 소수점 | 0.00006042 |
1986-03-25 | 정수 | 1,958 |
March 25, 1986 | 유효하지 않음 |
자세한 내용은 리터럴 식 구문을 참조하십시오.
날짜 계산 만들기
Superstore 샘플 데이터 원본을 사용하여 날짜 계산을 만들어 보겠습니다.
- Tableau Desktop에서 Tableau와 함께 제공된 샘플 – 슈퍼스토어라는 저장된 데이터 원본에 연결합니다.
- 워크시트를 엽니다.
- 데이터 패널의 차원에서 Order Date(주문 날짜)를 행 선반에 끌어 놓습니다.
- 행 선반에서 YEAR(Order Date) 필드에 있는 더하기 아이콘(+)을 클릭합니다.
QUARTER(Order Date)가 행 선반에 추가되고 뷰가 업데이트됩니다.
- 행 선반에서 QUARTER(Order Date) 필드에 있는 더하기 아이콘(+)을 클릭하여 MONTH(Order Date)로 드릴다운합니다.
- 분석 > 계산된 필드 만들기를 선택합니다.
- 계산 에디터가 열리면 다음을 수행합니다.
- 계산된 필드의 이름을 Quarter Date로 지정합니다.
- 다음 수식을 입력합니다.
DATETRUNC('quarter', [Order Date])
- 작업을 마쳤으면 확인을 클릭합니다.
새 날짜의 계산된 필드가 데이터 패널의 차원 아래에 나타납니다. 다른 필드와 마찬가지로, 하나 이상의 비주얼리제이션에서 이 필드를 사용할 수 있습니다.
- 데이터 패널의 차원 아래에서 Quarter Date(분기 날짜)를 행 선반으로 끌어 MONTH(Order Date) 오른쪽에 놓습니다. 연도 값을 사용하여 비주얼리제이션이 업데이트됩니다. 이렇게 되는 이유는 Tableau가 날짜 데이터를 가장 높은 세부 수준까지 롤업하기 때문입니다.
- 행 선반에서 YEAR(Quarter Date)를 마우스 오른쪽 단추로 클릭하고 정확한 날짜를 선택합니다.
- 행 선반에서 YEAR(Quarter Date)를 다시 마우스 오른쪽 단추로 클릭하고 불연속형을 선택합니다.
테이블의 각 행에 대한 정확한 분기 날짜를 사용하여 비주얼리제이션이 업데이트됩니다.