inmonthtodate - 스크립트 및 차트 함수
이 함수는 date가 basedate의 마지막 밀리초까지 포함하여 basedate를 포함한 월의 일부에 속할 경우True를 반환합니다.
구문:
InMonthToDate (timestamp, base_date, period_no)
반환 데이터 유형: 부울
inmonthtodate() 함수는 선택한 월을 세그먼트로 식별합니다. 시작 경계는 월의 시작입니다. 끝 경계는 해당 월의 이후 날짜로 설정할 수 있습니다. 그런 다음 날짜 집합이 이 세그먼트에 속하는지 여부를 확인하여 TRUE 또는 FALSE 부울 값을 반환합니다.
인수 | 설명 |
---|---|
timestamp | base_date와 비교할 날짜입니다. |
base_date | 월을 평가하는 데 사용되는 날짜입니다. |
period_no |
월은 period_no로 오프셋을 지정할 수 있습니다. period_no는 정수이며, 값 0은 base_date를 포함하는 월을 나타냅니다. period_no가 음수 값일 경우 이전 달, 양수 값일 경우 다음 달을 나타냅니다. |
사용 시기
inmonthtodate() 함수는 부울 결과를 반환합니다. 일반적으로 이 유형의 함수는 if expression의 조건으로 사용됩니다. inmonthtodate() 함수는 날짜가 해당 날짜를 포함하여 해당 날짜까지 해당 월에 발생했는지 여부에 따라 집계 또는 계산을 반환합니다.
예를 들어, inmonthtodate() 함수를 사용하여 특정 날짜까지 월에 제조된 모든 장비를 식별할 수 있습니다.
국가별 설정
달리 지정하지 않는 한 이 항목의 예에서는 다음 날짜 형식을 사용합니다. YYYY/MM/DD. 날짜 형식은 데이터 로드 스크립트의 SET DateFormat 문에 지정됩니다. 기본 날짜 형식은 지역 설정 및 기타 요인으로 인해 시스템에서 다를 수 있습니다. 아래 예의 형식을 요구 사항에 맞게 변경할 수 있습니다. 또는 이러한 예와 일치하도록 로드 스크립트의 형식을 변경할 수 있습니다.
앱의 기본 국가별 설정은 Qlik Sense가 설치된 컴퓨터 또는 서버의 국가별 시스템 설정을 기반으로 합니다. 액세스하는 Qlik Sense 서버가 스웨덴으로 설정된 경우 데이터 로드 편집기는 날짜, 시간 및 통화에 대해 스웨덴 지역 설정을 사용합니다. 이러한 국가별 형식 설정은 Qlik Sense 사용자 인터페이스에 표시되는 언어와 관련이 없습니다. Qlik Sense는 사용 중인 브라우저와 동일한 언어로 표시됩니다.
예 | 결과 |
---|---|
inmonthtodate ('01/25/2013', '25/01/2013', 0) | True를 반환합니다. |
inmonthtodate ('01/25/2013', '24/01/2013', 0) | False를 반환합니다. |
inmonthtodate ('01/25/2013', '28/02/2013', -1) | True를 반환합니다. |
예 1 – 추가 인수 없음
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
-
'Transactions'라는 테이블에 로드되는 2022년 트랜잭션 집합을 포함하는 데이터 집합.
-
날짜 필드가 DateFormat 시스템 변수 (MM/DD/YYYY) 형식으로 제공됩니다.
-
다음을 포함하는 선행 LOAD 문:
-
'in_month_to_date' 필드로 설정되는 inmonthtodate() 함수. 이는 2022년 7월 1일에서 7월 26일 사이에 발생한 트랜잭션을 확인합니다.
-
로드 스크립트
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
inmonthtodate(date,'07/26/2022', 0) as in_month_to_date
;
Load
*
Inline
[
id,date,amount
8188,'1/19/2022',37.23
8189,'1/7/2022',17.17
8190,'2/28/2022',88.27
8191,'2/5/2022',57.42
8192,'3/16/2022',53.80
8193,'4/1/2022',82.06
8194,'5/7/2022',40.39
8195,'5/16/2022',87.21
8196,'6/15/2022',95.93
8197,'6/26/2022',45.89
8198,'7/9/2022',36.23
8199,'7/22/2022',25.66
8200,'7/23/2022',82.77
8201,'7/27/2022',69.98
8202,'8/2/2022',76.11
8203,'8/8/2022',25.12
8204,'8/19/2022',46.23
8205,'9/26/2022',84.21
8206,'10/14/2022',96.24
8207,'10/29/2022',67.67
];
결과
데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.
-
date
-
in_month_to_date
date | in_month_to_date |
---|---|
1/7/2022 | 0 |
1/19/2022 | 0 |
2/5/2022 | 0 |
2/28/2022 | 0 |
3/16/2022 | 0 |
4/1/2022 | 0 |
5/7/2022 | 0 |
5/16/2022 | 0 |
6/15/2022 | 0 |
6/26/2022 | 0 |
7/9/2022 | -1 |
7/22/2022 | -1 |
7/23/2022 | -1 |
7/27/2022 | 0 |
8/2/2022 | 0 |
8/8/2022 | 0 |
8/19/2022 | 0 |
9/26/2022 | 0 |
10/14/2022 | 0 |
10/29/2022 | 0 |
in_month_to_date 필드는 inmonthtodate() 함수를 사용하여 선행 LOAD 문에서 만들어집니다.
첫 번째 인수는 평가 중인 필드를 식별합니다. 두 번째 인수는 하드 코딩된 날짜인 7월 26일이며 base_date입니다. 이 base_date 인수는 분할된 월과 해당 세그먼트의 끝 경계를 식별합니다.
period_no 0은 마지막 인수이며, 이는 함수가 세그먼트로 분할된 월 앞이나 뒤에 있는 월을 비교하지 않음을 의미합니다.
결과적으로 7월 1일과 7월 26일 사이에 발생하는 모든 트랜잭션은 부울 결과 TRUE를 반환합니다. 7월 26일 이후 7월에 발생한 모든 트랜잭션은 해당 연도의 다른 달의 모든 트랜잭션과 마찬가지로 부울 결과 FALSE를 반환합니다.
예 2 – period_no
개요
첫 번째 예와 동일한 데이터 집합 및 시나리오가 사용됩니다.
이 예에서 작업은 7월 1일과 7월 26일 전에 6개월 동안 발생한 트랜잭션을 확인하는 필드 'six_months_prior'를 만드는 것입니다.
로드 스크립트
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
inmonthtodate(date,'07/26/2022', -6) as six_months_prior
;
Load
*
Inline
[
id,date,amount
8188,'1/19/2022',37.23
8189,'1/7/2022',17.17
8190,'2/28/2022',88.27
8191,'2/5/2022',57.42
8192,'3/16/2022',53.80
8193,'4/1/2022',82.06
8194,'5/7/2022',40.39
8195,'5/16/2022',87.21
8196,'6/15/2022',95.93
8197,'6/26/2022',45.89
8198,'7/9/2022',36.23
8199,'7/22/2022',25.66
8200,'7/23/2022',82.77
8201,'7/27/2022',69.98
8202,'8/2/2022',76.11
8203,'8/8/2022',25.12
8204,'8/19/2022',46.23
8205,'9/26/2022',84.21
8206,'10/14/2022',96.24
8207,'10/29/2022',67.67
];
결과
데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.
-
date
-
six_months_prior
date | six_months_prior |
---|---|
1/7/2022 | -1 |
1/19/2022 | -1 |
2/5/2022 | 0 |
2/28/2022 | 0 |
3/16/2022 | 0 |
4/1/2022 | 0 |
5/7/2022 | 0 |
5/16/2022 | 0 |
6/15/2022 | 0 |
6/26/2022 | 0 |
7/9/2022 | 0 |
7/22/2022 | 0 |
7/23/2022 | 0 |
7/27/2022 | 0 |
8/2/2022 | 0 |
8/8/2022 | 0 |
8/19/2022 | 0 |
9/26/2022 | 0 |
10/14/2022 | 0 |
10/29/2022 | 0 |
inmonthtodate() 함수에서 period_no 인수로 -6을 사용하면 비교 월 세그먼트의 경계가 6개월만큼 시프트합니다. 초기에 월 세그먼트는 7월 1일과 7월 26일 사이에 해당합니다. 그런 다음 period_no가 이 세그먼트를 6개월 뒤로 오프셋하면 날짜 경계가 시프트되어 1월 1일과 1월 26일 사이에 포함됩니다.
결과적으로 1월 1일과 1월 26일 사이에 발생하는 모든 트랜잭션은 부울 결과 TRUE를 반환합니다.
예 3 – 차트 예
개요
첫 번째 예와 동일한 데이터 집합 및 시나리오가 사용됩니다.
이 예에서 데이터 집합은 변경되지 않고 앱에 로드됩니다. 작업은 앱의 차트에서 측정값으로 7월 1일에서 7월 26일 사이에 트랜잭션이 발생했는지 여부를 확인하는 계산을 만드는 것입니다.
로드 스크립트
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*
Inline
[
id,date,amount
8188,'1/19/2022',37.23
8189,'1/7/2022',17.17
8190,'2/28/2022',88.27
8191,'2/5/2022',57.42
8192,'3/16/2022',53.80
8193,'4/1/2022',82.06
8194,'5/7/2022',40.39
8195,'5/16/2022',87.21
8196,'6/15/2022',95.93
8197,'6/26/2022',45.89
8198,'7/9/2022',36.23
8199,'7/22/2022',25.66
8200,'7/23/2022',82.77
8201,'7/27/2022',69.98
8202,'8/2/2022',76.11
8203,'8/8/2022',25.12
8204,'8/19/2022',46.23
8205,'9/26/2022',84.21
8206,'10/14/2022',96.24
8207,'10/29/2022',67.67
];
결과
데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 이 필드를 차원으로 추가합니다.
date
트랜잭션이 7월 1일과 7월 26일 사이에 발생했는지 여부를 계산하려면 다음 측정값을 만듭니다.
=inmonthtodate(date,'07/26/2022', 0)
date | =inmonthtodate(date,'07/26/2022', 0) |
---|---|
1/7/2022 | 0 |
1/19/2022 | 0 |
2/5/2022 | 0 |
2/28/2022 | 0 |
3/16/2022 | 0 |
4/1/2022 | 0 |
5/7/2022 | 0 |
5/16/2022 | 0 |
6/15/2022 | 0 |
6/26/2022 | 0 |
7/9/2022 | -1 |
7/22/2022 | -1 |
7/23/2022 | -1 |
7/27/2022 | 0 |
8/2/2022 | 0 |
8/8/2022 | 0 |
8/19/2022 | 0 |
9/26/2022 | 0 |
10/14/2022 | 0 |
10/29/2022 | 0 |
'in_month_to_date' 필드 측정값은 inmonthtodate() 함수를 사용하여 차트에 만들어집니다.
첫 번째 인수는 평가 중인 필드를 식별합니다. 두 번째 인수는 하드 코딩된 날짜인 7월 26일이며 base_date입니다. 이 base_date 인수는 세그먼트로 분할된 월과 해당 세그먼트의 끝 경계를 식별합니다. period_no 0은 마지막 인수입니다. 이는 함수가 세그먼트로 분할된 월의 이전 또는 이후 월을 비교하지 않음을 의미합니다.
결과적으로 7월 1일과 7월 26일 사이에 발생하는 모든 트랜잭션은 부울 결과 TRUE를 반환합니다. 7월 26일 이후 7월에 발생한 모든 트랜잭션은 해당 연도의 다른 달의 모든 트랜잭션과 마찬가지로 부울 결과 FALSE를 반환합니다.
예 4 – 시나리오
개요
이 예에서 데이터 집합은 'Products'라는 테이블에 로드됩니다. 테이블에는 다음 필드가 포함됩니다.
-
Product ID
-
제조 날짜
-
가격
2022년 7월에 제조된 제품은 장비 오류로 인해 결함이 있는 것으로 확인되었습니다. 이 문제는 2022년 7월 27일에 해결되었습니다.
최종 사용자는 '결함'(부울 TRUE) 또는 '무결함'(부울 FALSE)으로 제조된 제품의 상태와 해당 월에 제조된 제품의 비용을 월별로 표시하는 차트를 원합니다.
로드 스크립트
Products:
Load
*
Inline
[
product_id,manufacture_date,cost_price
8188,'1/19/2022',37.23
8189,'1/7/2022',17.17
8190,'2/28/2022',88.27
8191,'2/5/2022',57.42
8192,'3/16/2022',53.80
8193,'4/1/2022',82.06
8194,'5/7/2022',40.39
8195,'5/16/2022',87.21
8196,'6/15/2022',95.93
8197,'6/26/2022',45.89
8198,'7/9/2022',36.23
8199,'7/22/2022',25.66
8200,'7/23/2022',82.77
8201,'7/27/2022',69.98
8202,'8/2/2022',76.11
8203,'8/8/2022',25.12
8204,'8/19/2022',46.23
8205,'9/26/2022',84.21
8206,'10/14/2022',96.24
8207,'10/29/2022',67.67
];
결과
데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.
-
=monthname(manufacture_date)
-
=if(Inmonthtodate(manufacture_date,makedate(2022,07,26),0),'Defective','Faultless')
제품의 총 비용을 계산하려면 다음 측정값을 만듭니다.
=sum(cost_price)
측정값의 숫자 형식을 화폐로 설정합니다.
monthname(manufacture_date) | if(Inmonthtodate(manufacture_date,makedate(2022,07,26),0),'Defective','Faultless') | Sum(cost_price) |
---|---|---|
Jan 2022 | Faultless | $54.40 |
Feb 2022 | Faultless | $145.69 |
Mar 2022 | Faultless | $53.80 |
Apr 2022 | Faultless | $82.06 |
May 2022 | Faultless | $127.60 |
Jun 2022 | Faultless | $141.82 |
Jul 2022 | Defective | $144.66 |
Jul 2022 | Faultless | $69.98 |
Aug 2022 | Faultless | $147.46 |
Sep 2022 | Faultless | $84.21 |
Oct 2022 | Faultless | $163.91 |
inmonthtodate() 함수는 각 제품의 제조 날짜를 평가할 때 부울 값을 반환합니다.
부울 값 TRUE를 반환하는 날짜의 경우 제품이 'Defective'로 표시됩니다. FALSE 값을 반환하여 7월 26일까지의 월에 제조되지 않은 제품의 경우 제품을 'Faultless'로 표시합니다.