엑셀을 사용하거나, BI 툴을 사용할 경우 날짜 함수에 대하여 정확한 이해를 갖고 있어야 합니다. 보이는 형식이 날짜형식이지만 실제는 문자인 경우 혹은 날짜 형식의 숫자를 갖고 있는 경우가 있습니다. 정확한 분석을 위해서는 반드시 날짜 함수에 대한 명확한 이해를 갖고 있어야 합니다.
이번 글은 Qlik에서 사용할 수 있는 날짜 함수에 대하여 설명하려고 합니다.
해석함수 vs 서식함수 (Interpretation vs Formatting)
가장 먼저 알아야 할 것은 Date#() 및 Date()의 두 가지 다른 함수가 있다는 것입니다. 첫 번째는 해석 기능이고 두 번째는 서식 기능입니다.
- 해석 함수는 입력에 텍스트 값을 사용하고 이를 숫자로 변환합니다.
- 서식 지정 함수는 입력에 숫자 값을 사용하고 이를 텍스트로 변환합니다.
두 경우 모두 출력은 이중입니다. 즉, 내부에는 텍스트 값과 숫자 값이 모두 있습니다. 텍스트 값이 표시되는 반면 숫자 값은 모든 숫자 계산 및 정렬에 사용됩니다.
아래 표는 해석 함수 Date#()를 사용하는 방법을 보여줍니다. 형식 코드는 입력 매개변수와 일치해야 합니다.
함수 | 출력.텍스트 | 출력.숫자 |
Date#('20210301', 'YYYYMMDD') | 20210301 | 44256 |
Date#('2021-03-01', 'YYYY-MM-DD') | 2021-03-01 | 44256 |
Date#('2021-03', 'YYYY-MM’) | 2021-03 | 44256 |
출력.숫자 값은 모두 동일한 값을 갖고 있습니다.
다음은 서식 지정 함수 Date()입니다. 형식 코드는 출력 텍스트의 형식과 일치합니다.
함수 | 출력.텍스트 | 출력.숫자 |
Date(44256, 'YYYY.MM.DD') | 2021.03.01 | 44256 |
Date(44256, 'YYYY-MM-DD') | 2021-03-01 | 44256 |
Date(44256, 'YYYY-MM’) | 2021-03 | 44256 |
Date(44256, 'YYYY-MMM’) | 2021-3월 | 44256 |
실업무에서는 종종 형식화 함수 안에 해석 함수를 중첩여 사용하는 것이 많이 발생합니다. 실제 날짜의 데이터 형식이 문자형을 날짜형으로 변환시킬 때 사용됩니다.
함수 | 출력.텍스트 | 출력.숫자 |
Date(Date#('20210301', 'YYYYMMDD'), ‘YYYY.DD.MM’) | 2021.03.01 | 44256 |
Date(Date#('2021-03-01', 'YYYY-MM-DD') , ‘YYYY.DD.MM’) | 2021.03.01 | 44256 |
Date(Date#('2021-03', 'YYYY-MM’) , ‘YYYY.DD.MM’) | 2021.03.01 | 44256 |
형식 vs 반올림 (Formatting vs Rounding)
두 번째로 알아야 할 점은 Date() 함수 및 기타 형식 지정 함수는 입력 값의 숫자 값을 변경하지 않는다는 것입니다.
즉, 시간 정보 없이 타임스탬프를 날짜로만 형식화할 수 있습니다. "숨겨진" 값이 있기 때문에 때때로 혼동될 수 있습니다. 아래 표에서 입력 값이 한낮의 12:00에 해당하는 것을 볼 수 있지만 Date() 함수는 이를 텍스트 출력에서 효과적으로 숨기지만 숫자 값에는 남아 있습니다.
함수 | 출력.텍스트 | 출력.숫자 |
Date(44256.5, 'YYYY.MM.DD') | 2021.03.01 | 44256.50 |
TimeStamp(44256.5, 'YYYY-MM-DD') | 2021-03-01 12:00:01 | 44256.5 |
그러면 필드의 시간 부분을 제거하고 날짜 부분만 유지하려면 어떻게 해야 합니까? 분명히 숫자 값을 변경하는 함수를 사용해야 합니다. 반올림 함수가 필요합니다. DayStart() 또는 Floor()를 사용합니다.
아래 표에서 Date() 함수의 출력을 몇 가지 다른 반올림 및 서식 옵션과 비교할 수 있습니다.
함수 | 출력.텍스트 | 출력.숫자 |
Date(44256.5, 'YYYY.MM.DD') | 2021.03.01 | 44256.5 |
DayStart(44256.5) | 2021. 3. 1 AM12시0분0초 | 44256 |
Date(Floor(44256.5)) | 2021. 3. 1 | 44256 |
요약
위의 설명은 날짜에만 관련이 있는 것이 아닙니다. 년, 주, 시간, 초 및 기타 시간 간격과 마찬가지로 관련이 있습니다. 또한 다음과 같은 여러 다른 기능과도 관련이 있습니다.
Interpretation functions: Date#(), TimeStamp#(), Time#(), Interval#() 등
Formatting functions: Date(), TimeStamp(), Time(), Interval() 등
Rounding functions: Round(), Floor(), Ceil(), DayStart(), WeekStart(), MonthStart() 등
이러한 기능을 현명하게 결합하면 원하는 방식으로 반올림하거나 형식을 지정할 수 있습니다.
날짜 함수를 제대로 이해하기
클릭센스에는 사용자가 속한 지역과 관계없이 날짜를 인식하는 지능형 알고리즘이 있습니다. 대부분의 경우 날짜를 로드하는데 문제가 없습니다. 그것은 단지 작동하고 그것에 대해 생각할 필요가 없습니다. 그러나 경우에 따라 날짜가 제대로 인식되지 않아 스크립트에 일부 코드를 추가해야 작동하는 경우가 있습니다.
우선 클릭센스에는 데이터 유형이 없습니다. 대신 클릭센스는 모든 필드 값에 대해 이중 데이터 저장소를 사용합니다. 모든 필드 값은 문자열과(해당되는 경우) 숫자로 표시됩니다. 개발자의 임무는 클릭센스가 날짜를 올바르게 인식하여 날짜의 텍스트 부분과 숫자 부분이 모두 생성되도록 하는 것입니다.
날짜의 숫자 부분은 일련 번호(Excel과 동일), 즉 2012년 날짜의 경우 약 41000의 숫자입니다.
다음은 날짜를 올바르게 로드하는데 도움이 되고 날짜 처리가 어떻게 작동하는지 더 잘 이해하는 데 도움이 되는 몇 가지 팁입니다.
1. 해석 기능 사용
날짜가 텍스트로 있는 경우 해석 기능을 사용해야 할 수도 있습니다. Date#() 또는 Timestamp#().
2. 중첩 기능
날짜를 특정 방식으로 표시하려면 서식 지정 함수 안에 해석 함수를 중첩해야 할 수도 있습니다.
Date(Date#(DateField, 'YYYYMMDD'), 'YYYY-MM-DD').
Date(Date#(DateField, 'YYYYMMDD'))
3. MakeDate 함수 사용
년, 월 및 일이 별도의 필드로 있는 경우 MakeDate() 함수를 사용하여 날짜 일련 번호를 생성합니다.
Date(MakeDate(2021, 3, 1))
4. 반올림 함수 사용
타임스탬프가 있고 날짜를 원하면 반올림 함수를 사용해야 합니다. Date(Floor(Timestamp#(DateTimeField, 'YYYYMMDD hh:mm:ss')), 'YYYY-MM-DD').
5. 변수에 숫자 값 사용
비교를 위해 변수를 사용하려는 경우 텍스트 표현보다 날짜 일련 번호를 사용하는 것이 더 간단합니다. vToday = Num( Today()) 이라고 선언하여 vToday 변수를 사용하세요.
6. 조합 필드를 사용하십시오.
년과 월을 하나의 필드로 한 필드에 연도와 월을 모두 표시하는 것이 종종 실용적입니다. Date(MonthStart(DateField),'YYYY-MM')
실제 값은 변하지 않습니다. 문자로 변환시켜 사용할 필요도 있습니다.
Text(Date(MonthStart(DateField),'YYYY-MM'))
7. Dual 기능 사용
연결된 숫자 값이 있는 문자열의 더 복잡한 조합을 원하는 경우 Dual() 함수를 사용하여 거의 모든 작업을 수행할 수 있습니다.
8. 날짜 형식이 혼합된 필드에 Alt 함수를 사용합니다.
날짜 형식이 혼합된 필드가 있는 경우 Alt() 함수를 사용하여 해결할 수 있습니다.
Date(Date#(DateField, 'YYYYMMDD')) 사용할 경우 DataField 값이 날짜에 해당하지 않은 문자일 경우 Null값이 반환됩니다. Null 값을 Alt 함수로 대체시킬 수 있습니다.
클릭센스에 대한 기술자료는
https://qliksense.tistory.com/
클릭커
차체대 시각화 솔루션 Qlik Sense 란? Qlik Sense 에 대하여 살펴보자.
qliksense.tistory.com
클릭센스에 대한 기술문의는
qliker@kakao.com
'Qlik Sense 개발가이드' 카테고리의 다른 글
클릭센스(Qlik Sense)에 워터마크 추가 방법 (0) | 2021.10.19 |
---|---|
IF() 문을 사용하는 팁 (0) | 2021.10.10 |
클릭센스 콤보차트에 누적막대 표현 (0) | 2021.09.26 |
콤보차트에서 차원별 색상지정 및 옵셋지정 (0) | 2021.09.26 |
필드 정렬순서 사용자 지정 - Dual함수 (0) | 2021.09.22 |