inweektodate - 스크립트 및 차트 함수
이 함수는 timestamp가 base_date의 마지막 밀리초까지 포함하여 base_date를 포함한 주의 일부에 속할 경우 True를 반환합니다.
구문:
InWeekToDate (timestamp, base_date, period_no [, first_week_day])
반환 데이터 유형: 부울
Qlik Sense에서 부울 true 값은 -1로 표시되고 false 값은 0으로 표시됩니다.
inweektodate() 함수는 base_date 매개 변수를 사용하여 FirstWeekDay 시스템 변수(또는 사용자 정의 first_week_day 매개 변수)를 기반으로 하는 주 세그먼트의 최대 경계 날짜와 해당 주의 시작 날짜를 식별합니다. 이번 주 세그먼트가 정의되면 이 함수는 규정된 날짜 값을 해당 세그먼트와 비교할 때 부울 결과를 반환합니다.
사용 시기
inweektodate() 함수는 부울 결과를 반환합니다. 일반적으로 이 유형의 함수는 if 표현식의 조건으로 사용됩니다. 평가된 날짜가 특정 날짜를 포함하는 분기까지의 해당 주 동안 발생했는지 여부에 따라 집계 또는 계산을 반환합니다.
예를 들어, inweektodate() 함수를 사용하여 특정 날짜까지 지정된 주 동안 발생한 모든 판매를 계산할 수 있습니다.
인수 | 설명 |
---|---|
timestamp | base_date와 비교할 날짜입니다. |
base_date | 주를 평가하는 데 사용되는 날짜입니다. |
period_no | 주는 period_no로 오프셋을 지정할 수 있습니다. period_no는 정수이며, 값 0은 base_date를 포함하는 주를 나타냅니다. period_no가 음수 값일 경우 이전 주, 양수 값일 경우 다음 주를 나타냅니다. |
first_week_day |
기본적으로 주의 첫 번째 요일은 토요일과 일요일 사이의 자정에 시작하는 일요일입니다(FirstWeekDay 시스템 변수에 의해 결정됨). first_week_day 매개 변수가 FirstWeekDay 변수를 대체합니다. 다른 날에 시작하는 주를 나타내려면 0에서 6 사이의 플래그를 지정합니다. 월요일에 시작하여 일요일에 끝나는 주의 플래그는 월요일에 0, 화요일에 1, 수요일에 2, 목요일에 3, 금요일에 4, 토요일에 5, 일요일에 6을 사용합니다.
|
예 | 상호 작용 |
---|---|
inweektodate('01/12/2006', '01/12/2006', 0) | TRUE을 반환합니다. |
inweektodate('01/12/2006', '01/11/2006', 0) | FALSE을 반환합니다. |
inweektodate('01/12/2006', '01/18/2006', -1) |
FALSE을 반환합니다. period_no가 -1로 지정되어 있기 때문으로, timestamp가 측정되는 유효 데이터는 01/11/2006입니다. |
inweektodate('01/11/2006', '01/12/2006', 0, 3 ) | first_week_day가 3(목요일)으로 지정되어 있으므로 FALSE를 반환합니다. 01/12/2006이 01/12/2006를 포함하는 주의 다음 주 첫 번째 날짜가 됩니다. |
다음 항목은 이 함수를 사용하는 데 도움이 될 수 있습니다.
항목 | 기본 플래그/값 | 설명 |
---|---|---|
FirstWeekDay | 6/Sunday | 각 주의 시작 날짜를 정의합니다. |
국가별 설정
달리 지정하지 않는 한 이 항목의 예에서는 다음 날짜 형식을 사용합니다. YYYY/MM/DD. 날짜 형식은 데이터 로드 스크립트의 SET DateFormat 문에 지정됩니다. 기본 날짜 형식은 지역 설정 및 기타 요인으로 인해 시스템에서 다를 수 있습니다. 아래 예의 형식을 요구 사항에 맞게 변경할 수 있습니다. 또는 이러한 예와 일치하도록 로드 스크립트의 형식을 변경할 수 있습니다.
앱의 기본 국가별 설정은 Qlik Sense가 설치된 컴퓨터 또는 서버의 국가별 시스템 설정을 기반으로 합니다. 액세스하는 Qlik Sense 서버가 스웨덴으로 설정된 경우 데이터 로드 편집기는 날짜, 시간 및 통화에 대해 스웨덴 지역 설정을 사용합니다. 이러한 국가별 형식 설정은 Qlik Sense 사용자 인터페이스에 표시되는 언어와 관련이 없습니다. Qlik Sense는 사용 중인 브라우저와 동일한 언어로 표시됩니다.
예 1 – 추가 인수 없음
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
-
Transactions라는 테이블에 로드되는 2022년 1월의 트랜잭션 집합이 포함된 데이터 집합.
-
TimestampFormat='M/D/YYYY h:mm:ss[.fff]' 서식으로 제공된 데이터 필드.
-
2022년 1월 14일까지의 주에 발생한 트랜잭션을 결정하는 필드 in_week_to_date 만들기.
-
weekday() 함수를 사용하여 weekday라는 추가 필드 만들기. 이 새 필드는 각 날짜에 해당하는 요일을 표시하기 위해 만들어집니다.
로드 스크립트
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff]';
SET FirstWeekDay=6;
Transactions:
Load
*,
weekday(date) as week_day,
inweektodate(date,'01/14/2022', 0) as in_week_to_date
;
Load
*
Inline
[
id,date,amount
8188,'2022-01-02 12:22:06',37.23
8189,'2022-01-05 01:02:30',17.17
8190,'2022-01-06 15:36:20',88.27
8191,'2022-01-08 10:58:35',57.42
8192,'2022-01-09 08:53:32',53.80
8193,'2022-01-10 21:13:01',82.06
8194,'2022-01-11 00:57:13',40.39
8195,'2022-01-12 09:26:02',87.21
8196,'2022-01-13 15:05:09',95.93
8197,'2022-01-14 18:44:57',45.89
8198,'2022-01-15 06:10:46',36.23
8199,'2022-01-16 06:39:27',25.66
8200,'2022-01-17 10:44:16',82.77
8201,'2022-01-18 18:48:17',69.98
8202,'2022-01-26 04:36:03',76.11
8203,'2022-01-27 08:07:49',25.12
8204,'2022-01-28 12:24:29',46.23
8205,'2022-01-30 11:56:56',84.21
8206,'2022-01-30 14:40:19',96.24
8207,'2022-01-31 05:28:21',67.67
];
결과
데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.
-
date
-
week_day
-
in_week_to_date
date | week_day | in_week_to_date |
---|---|---|
2022-01-02 12:22:06 | Sun | 0 |
2022-01-05 01:02:30 | Wed | 0 |
2022-01-06 15:36:20 | Thu | 0 |
2022-01-08 10:58:35 | Sat | 0 |
2022-01-09 08:53:32 | Sun | -1 |
2022-01-10 21:13:01 | Mon | -1 |
2022-01-11 00:57:13 | Tue | -1 |
2022-01-12 09:26:02 | Wed | -1 |
2022-01-13 15:05:09 |
Thu |
-1 |
2022-01-14 18:44:57 | Fri | -1 |
2022-01-15 06:10:46 | Sat | 0 |
2022-01-16 06:39:27 | Sun | 0 |
2022-01-17 10:44:16 | Mon | 0 |
2022-01-18 18:48:17 | Tue | 0 |
2022-01-26 04:36:03 | Wed | 0 |
2022-01-27 08:07:49 | Thu | 0 |
2022-01-28 12:24:29 | Fri | 0 |
2022-01-30 11:56:56 | Sun | 0 |
2022-01-30 14:40:19 | Sun | 0 |
2022-01-31 05:28:21 | Mon | 0 |
in_week_to_date 필드는 inweektodate() 함수를 사용하여 선행 LOAD 문에서 만들어집니다. 제공된 첫 번째 인수는 평가 중인 필드를 식별합니다. 두 번째 인수는 1월 14일에 대한 하드 코딩된 날짜이며, 세그먼트로 분할할 주를 식별하고 해당 세그먼트의 끝 경계를 정의하는 base_date입니다. period_no 0은 마지막 인수이며, 이는 함수가 세그먼트로 분할된 주 앞이나 뒤에 있는 주를 비교하지 않음을 의미합니다.
FirstWeekDay 시스템 변수는 주가 일요일에 시작하여 토요일에 끝나도록 결정합니다. 따라서 1월은 아래 다이어그램에 따라 주간으로 나뉘며 1월 9일과 14일 사이의 날짜가 inweekdodate() 계산에 유효한 기간을 제공합니다.
1월 9일과 14일 사이에 발생하는 모든 트랜잭션은 부울 결과 TRUE를 반환합니다. 이 날짜 전후의 트랜잭션은 부울 결과 FALSE를 반환합니다.
예 2 – period_no
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
-
첫 번째 예와 동일한 데이터 집합 및 시나리오.
-
2022년 1월 14일에 끝나는 주 세그먼트 이전의 전체 주에 발생하는 트랜잭션을 결정하는 필드 prev_week_to_date 만들기.
-
weekday() 함수를 사용하여 weekday라는 추가 필드 만들기. 이는 각 날짜에 해당하는 요일을 표시하기 위한 것입니다.
로드 스크립트
SET FirstWeekDay=6;
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff]';
Transactions:
Load
*,
weekday(date) as week_day,
inweektodate(date,'01/14/2022', -1) as prev_week_to_date
;
Load
*
Inline
[
id,date,amount
8188,'2022-01-02 12:22:06',37.23
8189,'2022-01-05 01:02:30',17.17
8190,'2022-01-06 15:36:20',88.27
8191,'2022-01-08 10:58:35',57.42
8192,'2022-01-09 08:53:32',53.80
8193,'2022-01-10 21:13:01',82.06
8194,'2022-01-11 00:57:13',40.39
8195,'2022-01-12 09:26:02',87.21
8196,'2022-01-13 15:05:09',95.93
8197,'2022-01-14 18:44:57',45.89
8198,'2022-01-15 06:10:46',36.23
8199,'2022-01-16 06:39:27',25.66
8200,'2022-01-17 10:44:16',82.77
8201,'2022-01-18 18:48:17',69.98
8202,'2022-01-26 04:36:03',76.11
8203,'2022-01-27 08:07:49',25.12
8204,'2022-01-28 12:24:29',46.23
8205,'2022-01-30 11:56:56',84.21
8206,'2022-01-30 14:40:19',96.24
8207,'2022-01-31 05:28:21',67.67
];
결과
데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.
-
date
-
week_day
-
prev_week_to_date
date | week_day | prev_week_to_date |
---|---|---|
2022-01-02 12:22:06 | Sun | -1 |
2022-01-05 01:02:30 | Wed | -1 |
2022-01-06 15:36:20 | Thu | -1 |
2022-01-08 10:58:35 | Sat | 0 |
2022-01-09 08:53:32 | Sun | 0 |
2022-01-10 21:13:01 | Mon | 0 |
2022-01-11 00:57:13 | Tue | 0 |
2022-01-12 09:26:02 | Wed | 0 |
2022-01-13 15:05:09 |
Thu |
0 |
2022-01-14 18:44:57 | Fri | 0 |
2022-01-15 06:10:46 | Sat | 0 |
2022-01-16 06:39:27 | Sun | 0 |
2022-01-17 10:44:16 | Mon | 0 |
2022-01-18 18:48:17 | Tue | 0 |
2022-01-26 04:36:03 | Wed | 0 |
2022-01-27 08:07:49 | Thu | 0 |
2022-01-28 12:24:29 | Fri | 0 |
2022-01-30 11:56:56 | Sun | 0 |
2022-01-30 14:40:19 | Sun | 0 |
2022-01-31 05:28:21 | Mon | 0 |
period_no 값 -1은 inweektodate () 함수가 입력 분기 세그먼트를 이전 주와 비교함을 나타냅니다. 주 세그먼트는 처음에 1월 9일과 1월 14일 사이에 해당합니다. 그런 다음 period_no는 이 세그먼트의 시작 및 끝 경계를 1주일 앞당겨 오프셋하여 날짜 경계가 1월 2일에서 1월 7일이 되도록 합니다.
따라서 1월 2일과 8일 사이에 발생하는 모든 트랜잭션(1월 8일은 제외)은 부울 결과 TRUE를 반환합니다.
예 3 – first_week_day
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
-
첫 번째 예와 동일한 데이터 집합 및 시나리오.
-
2022년 1월 14일까지의 주에 발생한 트랜잭션을 결정하는 필드 in_week_to_date 만들기.
-
weekday() 함수를 사용하여 weekday라는 추가 필드 만들기. 이는 각 날짜에 해당하는 요일을 표시하기 위한 것입니다.
이 예에서는 월요일을 주의 첫 번째 요일로 간주합니다.
로드 스크립트
SET FirstWeekDay=6;
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff]';
Transactions:
Load
*,
weekday(date) as week_day,
inweektodate(date,'01/14/2022', 0, 0) as in_week_to_date
;
Load
*
Inline
[
id,date,amount
8188,'2022-01-02 12:22:06',37.23
8189,'2022-01-05 01:02:30',17.17
8190,'2022-01-06 15:36:20',88.27
8191,'2022-01-08 10:58:35',57.42
8192,'2022-01-09 08:53:32',53.80
8193,'2022-01-10 21:13:01',82.06
8194,'2022-01-11 00:57:13',40.39
8195,'2022-01-12 09:26:02',87.21
8196,'2022-01-13 15:05:09',95.93
8197,'2022-01-14 18:44:57',45.89
8198,'2022-01-15 06:10:46',36.23
8199,'2022-01-16 06:39:27',25.66
8200,'2022-01-17 10:44:16',82.77
8201,'2022-01-18 18:48:17',69.98
8202,'2022-01-26 04:36:03',76.11
8203,'2022-01-27 08:07:49',25.12
8204,'2022-01-28 12:24:29',46.23
8205,'2022-01-30 11:56:56',84.21
8206,'2022-01-30 14:40:19',96.24
8207,'2022-01-31 05:28:21',67.67
];
결과
데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.
-
date
-
week_day
-
in_week_to_date
date | week_day | in_week_to_date |
---|---|---|
2022-01-02 12:22:06 | Sun | 0 |
2022-01-05 01:02:30 | Wed | 0 |
2022-01-06 15:36:20 | Thu | 0 |
2022-01-08 10:58:35 | Sat | 0 |
2022-01-09 08:53:32 | Sun | 0 |
2022-01-10 21:13:01 | Mon | -1 |
2022-01-11 00:57:13 | Tue | -1 |
2022-01-12 09:26:02 | Wed | -1 |
2022-01-13 15:05:09 |
Thu |
-1 |
2022-01-14 18:44:57 | Fri | -1 |
2022-01-15 06:10:46 | Sat | 0 |
2022-01-16 06:39:27 | Sun | 0 |
2022-01-17 10:44:16 | Mon | 0 |
2022-01-18 18:48:17 | Tue | 0 |
2022-01-26 04:36:03 | Wed | 0 |
2022-01-27 08:07:49 | Thu | 0 |
2022-01-28 12:24:29 | Fri | 0 |
2022-01-30 11:56:56 | Sun | 0 |
2022-01-30 14:40:19 | Sun | 0 |
2022-01-31 05:28:21 | Mon | 0 |
inweektodate() 함수의 first_week_day 인수로 0을 사용하면 이 함수 인수가 FirstWeekDay 시스템 변수를 대체하고 월요일을 주의 첫 번째 요일로 설정합니다.
따라서 1월 10일에서 14일 사이에 발생하는 모든 트랜잭션은 부울 결과 TRUE를 반환하는 반면 날짜가 이 경계를 벗어난 트랜잭션은 FALSE 값을 반환합니다.
예 4 – 차트 개체 예
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
이 로드 스크립트에는 첫 번째 예와 동일한 데이터 집합 및 시나리오가 포함되어 있습니다. 그러나 이 예에서는 변경되지 않은 데이터 집합이 응용 프로그램에 로드됩니다. 2022년 1월 14일까지의 주에 발생한 트랜잭션을 결정하는 계산이 차트 개체의 측정값으로 만들어집니다.
로드 스크립트
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*
Inline
[
id,date,amount
8188,'2022-01-02 12:22:06',37.23
8189,'2022-01-05 01:02:30',17.17
8190,'2022-01-06 15:36:20',88.27
8191,'2022-01-08 10:58:35',57.42
8192,'2022-01-09 08:53:32',53.80
8193,'2022-01-10 21:13:01',82.06
8194,'2022-01-11 00:57:13',40.39
8195,'2022-01-12 09:26:02',87.21
8196,'2022-01-13 15:05:09',95.93
8197,'2022-01-14 18:44:57',45.89
8198,'2022-01-15 06:10:46',36.23
8199,'2022-01-16 06:39:27',25.66
8200,'2022-01-17 10:44:16',82.77
8201,'2022-01-18 18:48:17',69.98
8202,'2022-01-26 04:36:03',76.11
8203,'2022-01-27 08:07:49',25.12
8204,'2022-01-28 12:24:29',46.23
8205,'2022-01-30 11:56:56',84.21
8206,'2022-01-30 14:40:19',96.24
8207,'2022-01-31 05:28:21',67.67
];
결과
다음과 같이 하십시오.
-
데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 이 필드를 차원으로 추가합니다. date.
-
트랜잭션이 1월 14일까지 같은 주에 발생했는지 여부를 계산하기 위해 다음 측정값을 만듭니다.
=inweektodate(date,'01/14/2022',0)
-
각 날짜에 해당하는 요일을 표시하려면 추가 측정값을 만듭니다.
=weekday(date)
date | week_day | in_week_to_date |
---|---|---|
2022-01-02 12:22:06 | Sun | 0 |
2022-01-05 01:02:30 | Wed | 0 |
2022-01-06 15:36:20 | Thu | 0 |
2022-01-08 10:58:35 | Sat | 0 |
2022-01-09 08:53:32 | Sun | -1 |
2022-01-10 21:13:01 | Mon | -1 |
2022-01-11 00:57:13 | Tue | -1 |
2022-01-12 09:26:02 | Wed | -1 |
2022-01-13 15:05:09 |
Thu |
-1 |
2022-01-14 18:44:57 | Fri | -1 |
2022-01-15 06:10:46 | Sat | 0 |
2022-01-16 06:39:27 | Sun | 0 |
2022-01-17 10:44:16 | Mon | 0 |
2022-01-18 18:48:17 | Tue | 0 |
2022-01-26 04:36:03 | Wed | 0 |
2022-01-27 08:07:49 | Thu | 0 |
2022-01-28 12:24:29 | Fri | 0 |
2022-01-30 11:56:56 | Sun | 0 |
2022-01-30 14:40:19 | Sun | 0 |
2022-01-31 05:28:21 | Mon | 0 |
in_week_to_date 필드는 inweektodate() 함수를 사용하여 차트 개체에서 측정값으로 만들어집니다. 제공된 첫 번째 인수는 평가 중인 필드를 식별합니다. 두 번째 인수는 1월 14일에 대한 하드 코딩된 날짜이며, 세그먼트로 분할할 주를 식별하고 해당 세그먼트의 끝 경계를 정의하는 base_date입니다. period_no 0은 마지막 인수이며, 이는 함수가 세그먼트로 분할된 주 앞이나 뒤에 있는 주를 비교하지 않음을 의미합니다.
FirstWeekDay 시스템 변수는 주가 일요일에 시작하여 토요일에 끝나도록 결정합니다. 따라서 1월은 아래 다이어그램에 따라 주간으로 나뉘며 1월 9일과 14일 사이의 날짜가 inweekdodate() 계산에 유효한 기간을 제공합니다.
1월 9일과 14일 사이에 발생하는 모든 트랜잭션은 부울 결과 TRUE를 반환합니다. 이 날짜 전후의 트랜잭션은 부울 결과 FALSE를 반환합니다.
예 5 – 시나리오
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
-
Products라는 테이블에 로드되는 데이터 집합.
-
제품 ID, 제조 날짜 및 원가에 관한 정보.
장비 오류로 인해 1월 12일 주에 제조된 제품에 결함이 있는 것으로 확인되었습니다. 문제는 1월 13일에 해결되었습니다. 최종 사용자는 제조된 제품이 '결함' 또는 '무결함'인 상태와 해당 주에 제조된 제품의 비용을 주별로 표시하는 차트 개체를 원합니다.
로드 스크립트
Products:
Load
*
Inline
[
product_id,manufacture_date,cost_price
8188,'2022-01-02 12:22:06',37.23
8189,'2022-01-05 01:02:30',17.17
8190,'2022-01-06 15:36:20',88.27
8191,'2022-01-08 10:58:35',57.42
8192,'2022-01-09 08:53:32',53.80
8193,'2022-01-10 21:13:01',82.06
8194,'2022-01-11 00:57:13',40.39
8195,'2022-01-12 09:26:02',87.21
8196,'2022-01-13 15:05:09',95.93
8197,'2022-01-14 18:44:57',45.89
8198,'2022-01-15 06:10:46',36.23
8199,'2022-01-16 06:39:27',25.66
8200,'2022-01-17 10:44:16',82.77
8201,'2022-01-18 18:48:17',69.98
8202,'2022-01-26 04:36:03',76.11
8203,'2022-01-27 08:07:49',25.12
8204,'2022-01-28 12:24:29',46.23
8205,'2022-01-30 11:56:56',84.21
8206,'2022-01-30 14:40:19',96.24
8207,'2022-01-31 05:28:21',67.67
];
결과
다음과 같이 하십시오.
-
데이터를 로드하고 시트를 엽니다. 새 테이블을 만듭니다. 주 이름을 표시할 차원을 만듭니다.
=weekname(manufacture_date)
-
다음으로 결함이 있는 제품과 무결함인 제품을 식별하는 차원을 만듭니다.
=if(inWeektodate(manufacture_date,makedate(2022,01,12),0),'Defective','Faultless')
-
제품의 cost_price 합계를 계산하는 측정값을 만듭니다.
=sum(cost_price)
-
측정값의 숫자 형식을 화폐로 설정합니다.
weekname(manufacture_date) | if(inweektodate(manufacture_date,makedate(2022,01,12),0),'Defective','Faultless') | Sum(cost_price) |
---|---|---|
2022/02 | Faultless | $200.09 |
2022/03 | Defective | $263.46 |
2022/03 | Faultless | $178.05 |
2022/04 | Faultless | $178.41 |
2022/05 | Faultless | $147.46 |
2022/06 | Faultless | $248.12 |
inweektodate() 함수는 각 제품의 제조 날짜를 평가할 때 부울 값을 반환합니다. 부울 값 TRUE를 반환하는 경우 제품을 'Defective'로 표시합니다. FALSE 값을 반환하는 제품의 경우 1월 12일까지의 주에 제조되지 않은 경우 제품을 ‘Faultless’로 표시합니다.