dayend - 스크립트 및 차트 함수
이 함수는 time에 포함된 날의 마지막 밀리초의 타임스탬프에 해당하는 값을 반환합니다. 기본 출력 형식은 스크립트에 설정된 TimestampFormat입니다.
구문:
DayEnd(time[, [period_no[, day_start]])
사용 시기
dayend() 함수는 일반적으로 사용자가 아직 발생하지 않은 하루 중 시간에 대한 분수를 사용하여 계산하려고 할 때 표현식의 일부로 사용됩니다. 예를 들어, 하루 동안 발생되는 총 비용을 계산합니다.
반환 데이터 유형: dual
인수 | 설명 |
---|---|
time | 평가할 타임스탬프입니다. |
period_no | period_no는 정수 또는 정수로 처리되는 표현식이며, 값 0은 time을 포함하는 날을 나타냅니다. period_no가 음수 값일 경우 이전 날, 양수 값일 경우 이후 날을 나타냅니다. |
day_start | 하루가 자정에 시작되지 않도록 지정하려면 day_start에 하루의 분위수로 오프셋을 지정합니다. 예를 들어 0.125는 오전 3:00을 나타냅니다. 즉, 오프셋을 만들려면 시작 시간을 24시간으로 나눕니다. 예를 들어, 하루를 오전 7시에 시작하도록 하려면 분수 7/24를 사용합니다. |
국가별 설정
달리 지정하지 않는 한 이 항목의 예에서는 다음 날짜 형식을 사용합니다. YYYY/MM/DD. 날짜 형식은 데이터 로드 스크립트의 SET DateFormat 문에 지정됩니다. 기본 날짜 형식은 지역 설정 및 기타 요인으로 인해 시스템에서 다를 수 있습니다. 아래 예의 형식을 요구 사항에 맞게 변경할 수 있습니다. 또는 이러한 예와 일치하도록 로드 스크립트의 형식을 변경할 수 있습니다.
앱의 기본 국가별 설정은 Qlik Sense가 설치된 컴퓨터 또는 서버의 국가별 시스템 설정을 기반으로 합니다. 액세스하는 Qlik Sense 서버가 스웨덴으로 설정된 경우 데이터 로드 편집기는 날짜, 시간 및 통화에 대해 스웨덴 지역 설정을 사용합니다. 이러한 국가별 형식 설정은 Qlik Sense 사용자 인터페이스에 표시되는 언어와 관련이 없습니다. Qlik Sense는 사용 중인 브라우저와 동일한 언어로 표시됩니다.
예 | 결과 |
---|---|
dayend('2013/01/25 16:45:00') | Returns 01/25/2013 23:59:59. 오후 |
dayend('2013/01/25 16:45:00', -1) | 2013/01/24 23:59:59를 반환합니다. 오후 |
dayend('2013/01/25 16:45:00', 0, 0.5) | Returns 01/26/2013 11:59:59. 오후 |
예 1 - 기본 스크립트
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
-
날짜 목록이 포함된 데이터 집합이 "Calendar"라는 테이블에 로드됩니다.
-
기본 DateFormat 시스템 변수 (MM/DD/YYYY).
-
dayend() 함수를 사용하여 추가 필드 'EOD_timestamp'를 만들기 위한 선행 로드입니다.
로드 스크립트
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT';
Calendar:
Load
date,
dayend(date) as EOD_timestamp
;
Load
date
Inline
[
date
03/11/2022 1:47:15 AM
03/12/2022 4:34:58 AM
03/13/2022 5:15:55 AM
03/14/2022 9:25:14 AM
03/15/2022 10:06:54 AM
03/16/2022 10:44:42 AM
03/17/2022 11:33:30 AM
03/18/2022 12:58:14 PM
03/19/2022 4:23:12 PM
03/20/2022 6:42:15 PM
03/21/2022 7:41:16 PM
];
결과
데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.
-
date
-
EOD_timestamp
날짜 | EOD_timestamp |
---|---|
03/11/2022 1:47:15 AM | 3/11/2022 11:59:59 PM |
03/12/2022 4:34:58 AM | 3/12/2022 11:59:59 PM |
03/13/2022 5:15:55 AM | 3/13/2022 11:59:59 PM |
03/14/2022 9:25:14 AM | 3/14/2022 11:59:59 PM |
03/15/2022 10:06:54 AM | 3/15/2022 11:59:59 PM |
03/16/2022 10:44:42 AM | 3/16/2022 11:59:59 PM |
03/17/2022 11:33:30 AM | 3/17/2022 11:59:59 PM |
03/18/2022 12:58:14 PM | 3/18/2022 11:59:59 PM |
03/19/2022 4:23:12 PM | 3/19/2022 11:59:59 PM |
03/20/2022 6:42:15 PM | 3/20/2022 11:59:59 PM |
03/21/2022 7:41:16 PM | 3/21/2022 11:59:59 PM |
위의 표에서 볼 수 있듯이 데이터 집합의 각 날짜에 대해 하루의 종료 타임스탬프가 생성됩니다. 타임스탬프는 시스템 변수 형식 TimestampFormat M/D/YYYY h:mm:ss[.fff] TT입니다.
예 2 – period_no
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
서비스 예약이 포함된 데이터 집합을 'Services'라는 테이블에 로드합니다.
데이터 집합에는 다음 필드가 포함됩니다.
-
service_id
-
service_date
-
amount
테이블에 두 개의 새 필드를 만듭니다.
-
deposit_due_date: 보증금을 받아야 하는 날짜입니다. 이는 service_date 3일 전 날짜의 끝입니다.
-
final_payment_due_date: 최종 지급을 받아야 하는 날짜입니다. 이는 service_date 7일 후 날짜의 끝입니다.
위의 두 필드는 dayend() 함수를 사용하여 이전 로드에서 만들어지고 처음 두 매개 변수 time 및 period_no를 제공합니다.
로드 스크립트
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT';
Services:
Load
*,
dayend(service_date,-3) as deposit_due_date,
dayend(service_date,7) as final_payment_due_date
;
Load
service_id,
service_date,
amount
Inline
[
service_id, service_date,amount
1,03/11/2022 9:25:14 AM,231.24
2,03/12/2022 10:06:54 AM,567.28
3,03/13/2022 10:44:42 AM,364.28
4,03/14/2022 11:33:30 AM,575.76
5,03/15/2022 12:58:14 PM,638.68
6,03/16/2022 4:23:12 PM,785.38
7,03/17/2022 6:42:15 PM,967.46
8,03/18/2022 7:41:16 PM,287.67
9,03/19/2022 8:14:15 PM,764.45
10,03/20/2022 9:23:51 PM,875.43
11,03/21/2022 10:04:41 PM,957.35
];
결과
데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.
-
service_date
-
deposit_due_date
-
final_payment_due_date
service_date | deposit_due_date | final_payment_due_date |
---|---|---|
03/11/2022 9:25:14 AM | 3/8/2022 11:59:59 PM | 3/18/2022 11:59:59 PM |
03/12/2022 10:06:54 AM | 3/9/2022 11:59:59 PM | 3/19/2022 11:59:59 PM |
03/13/2022 10:44:42 AM | 3/10/2022 11:59:59 PM | 3/20/2022 11:59:59 PM |
03/14/2022 11:33:30 AM | 3/11/2022 11:59:59 PM | 3/21/2022 11:59:59 PM |
03/15/2022 12:58:14 PM | 3/12/2022 11:59:59 PM | 3/22/2022 11:59:59 PM |
03/16/2022 4:23:12 PM | 3/13/2022 11:59:59 PM | 3/23/2022 11:59:59 PM |
03/17/2022 6:42:15 PM | 3/14/2022 11:59:59 PM | 3/24/2022 11:59:59 PM |
03/18/2022 7:41:16 PM | 3/15/2022 11:59:59 PM | 3/25/2022 11:59:59 PM |
03/19/2022 8:14:15 PM | 3/16/2022 11:59:59 PM | 3/26/2022 11:59:59 PM |
03/20/2022 9:23:51 PM | 3/17/2022 11:59:59 PM | 3/27/2022 11:59:59 PM |
03/21/2022 10:04:41 PM | 3/18/2022 11:59:59 PM | 3/28/2022 11:59:59 PM |
새 필드의 값은 TimestampFormat M/D/YYYY h:mm:ss[.fff] TT에 있습니다. 함수 dayend()가 사용되었으므로 타임스탬프 값은 모두 그날의 마지막 밀리초입니다.
dayend() 함수에 전달된 두 번째 인수가 음수이므로 보증금 기한 값 값은 서비스 날짜 3일 전입니다.
dayend() 함수에 전달된 두 번째 인수가 양수이므로 최종 지급 기한 값은 서비스 날짜 7일 후입니다.
예 3 – day_start 스크립트
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
이 예에서 사용된 데이터 집합 및 시나리오는 이전 예와 동일합니다.
이전 예에서와 같이 두 개의 새 필드를 만듭니다.
-
deposit_due_date: 보증금을 받아야 하는 날짜입니다. 이는 service_date 3일 전 날짜의 끝입니다.
-
final_payment_due_date: 최종 지급을 받아야 하는 날짜입니다. 이는 service_date 7일 후 날짜의 끝입니다.
그러나 회사에서 근무일이 오후 5시에 시작하여 다음 날 오후 5시에 끝나는 정책으로 운영하려고 합니다. 그러면 회사에서 해당 근무 시간에 발생하는 트랜잭션을 모니터링할 수 있습니다.
이러한 요구 사항을 달성하기 위해 위의 두 필드는 dayend() 함수를 사용하여 이전 로드에서 만들어지고 세 인수 time, period_no 및 day_start를 모두 사용합니다.
로드 스크립트
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT';
Services:
Load
*,
dayend(service_date,-3,17/24) as deposit_due_date,
dayend(service_date,7,17/24) as final_payment_due_date
;
Load
service_id,
service_date,
amount
Inline
[
service_id, service_date,amount
1,03/11/2022 9:25:14 AM,231.24
2,03/12/2022 10:06:54 AM,567.28
3,03/13/2022 10:44:42 AM,364.28
4,03/14/2022 11:33:30 AM,575.76
5,03/15/2022 12:58:14 PM,638.68
6,03/16/2022 4:23:12 PM,785.38
7,03/17/2022 6:42:15 PM,967.46
8,03/18/2022 7:41:16 PM,287.67
9,03/19/2022 8:14:15 PM,764.45
10,03/20/2022 9:23:51 PM,875.43
11,03/21/2022 10:04:41 PM,957.35
];
결과
데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.
-
service_date
-
deposit_due_date
-
final_payment_due_date
service_date | deposit_due_date | final_payment_due_date |
---|---|---|
03/11/2022 9:25:14 AM | 3/8/2022 4:59:59 PM | 3/18/2022 4:59:59 PM |
03/12/2022 10:06:54 AM | 3/9/2022 4:59:59 PM | 3/19/2022 4:59:59 PM |
03/13/2022 10:44:42 AM | 3/10/2022 4:59:59 PM | 3/20/2022 4:59:59 PM |
03/14/2022 11:33:30 AM | 3/11/2022 4:59:59 PM | 3/21/2022 4:59:59 PM |
03/15/2022 12:58:14 PM | 3/12/2022 4:59:59 PM | 3/22/2022 4:59:59 PM |
03/16/2022 4:23:12 PM | 3/13/2022 4:59:59 PM | 3/23/2022 4:59:59 PM |
03/17/2022 6:42:15 PM | 3/14/2022 4:59:59 PM | 3/24/2022 4:59:59 PM |
03/18/2022 7:41:16 PM | 3/15/2022 4:59:59 PM | 3/25/2022 4:59:59 PM |
03/19/2022 8:14:15 PM | 3/16/2022 4:59:59 PM | 3/26/2022 4:59:59 PM |
03/20/2022 9:23:51 PM | 3/17/2022 4:59:59 PM | 3/27/2022 4:59:59 PM |
03/21/2022 10:04:41 PM | 3/18/2022 4:59:59 PM | 3/28/2022 4:59:59 PM |
날짜는 예 2와 동일하게 유지되지만 dayend() 함수에 전달된 세 번째 인수 day_start의 값이 17/24였으므로 날짜에는 이제 오후 5시 이전의 마지막 밀리초의 타임스탬프가 있습니다.
예 4 – 차트 예
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
이 예에 사용된 데이터 집합과 시나리오는 앞의 두 예와 동일합니다. 회사에서 근무일이 오후 5시에 시작하여 다음 날 오후 5시에 끝나는 정책으로 운영하려고 합니다.
이전 예에서와 같이 두 개의 새 필드를 만듭니다.
-
deposit_due_date: 보증금을 받아야 하는 날짜입니다. 이는 service_date 3일 전 날짜의 끝입니다.
-
final_payment_due_date: 최종 지급을 받아야 하는 날짜입니다. 이는 service_date 7일 후 날짜의 끝입니다.
로드 스크립트
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT';
Services:
Load
service_id,
service_date,
amount
Inline
[
service_id, service_date,amount
1,03/11/2022 9:25:14 AM,231.24
2,03/12/2022 10:06:54 AM,567.28
3,03/13/2022 10:44:42 AM,364.28
4,03/14/2022 11:33:30 AM,575.76
5,03/15/2022 12:58:14 PM,638.68
6,03/16/2022 4:23:12 PM,785.38
7,03/17/2022 6:42:15 PM,967.46
8,03/18/2022 7:41:16 PM,287.67
9,03/19/2022 8:14:15 PM,764.45
10,03/20/2022 9:23:51 PM,875.43
11,03/21/2022 10:04:41 PM,957.35
];
결과
데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 이 필드를 차원으로 추가합니다.
service_date.
deposit_due_date 필드를 만들려면 다음 측정값을 만듭니다.
=dayend(service_date,-3,17/24).
그런 다음 final_payment_due_date 필드를 만들려면 다음 측정값을 만듭니다.
=dayend(service_date,7,17/24).
service_date | =dayend(service_date,-3,17/24) | =dayend(service_date,7,17/24 |
---|---|---|
03/11/2022 | 3/8/2022 16:59:59 PM | 3/18/2022 16:59:59 PM |
03/12/2022 | 3/9/2022 16:59:59 PM | 3/19/2022 16:59:59 PM |
03/13/2022 | 3/10/2022 16:59:59 PM | 3/20/2022 16:59:59 PM |
03/14/2022 | 3/11/2022 16:59:59 PM | 3/21/2022 16:59:59 PM |
03/15/2022 | 3/12/2022 16:59:59 PM | 3/22/2022 16:59:59 PM |
03/16/2022 | 3/13/2022 16:59:59 PM | 3/23/2022 16:59:59 PM |
03/17/2022 | 3/14/2022 16:59:59 PM | 3/24/2022 16:59:59 PM |
03/18/2022 | 3/15/2022 16:59:59 PM | 3/25/2022 16:59:59 PM |
03/19/2022 | 3/16/2022 16:59:59 PM | 3/26/2022 16:59:59 PM |
03/20/2022 | 3/17/2022 16:59:59 PM | 3/27/2022 16:59:59 PM |
03/21/2022 | 3/18/2022 16:59:59 PM | 3/28/2022 16:59:59 PM |
새 필드의 값은 TimestampFormat M/D/YYYY h:mm:ss[.fff] TT에 있습니다. 함수 dayend()가 사용되었으므로 타임스탬프 값은 모두 그날의 마지막 밀리초입니다.
dayend() 함수에 전달된 두 번째 인수가 음수이므로 지급 기한 값은 서비스 날짜 3일 전입니다.
dayend() 함수에 전달된 두 번째 인수가 양수이므로 최종 지급 기한 값은 서비스 날짜 7일 후입니다.
dayend() 함수에 전달된 세 번째 인수 day_start의 값이 17/24였으므로 날짜에는 오후 5시 이전의 마지막 밀리초의 타임스탬프가 있습니다.