monthsstart - 스크립트 및 차트 함수
이 함수는 기준일을 포함하는 월, 2개월, 분기, 4개월 기간 또는 6개월의 첫 번째 밀리초의 타임스탬프에 해당하는 값을 반환합니다. 또한 이전 기간 또는 다음 기간에 대한 타임스탬프를 찾을 수도 있습니다.기본 출력 형식은 스크립트에 설정된 DateFormat입니다.
구문:
MonthsStart(n_months, date[, period_no [, first_month_of_year]])
반환 데이터 유형: dual
monthsstart() 함수는 제공된 n_months 인수를 기반으로 연도를 세그먼트로 나눕니다. 그런 다음 제공된 각 날짜가 속하는 세그먼트를 평가하고 해당 세그먼트의 첫 번째 밀리초를 날짜 서식으로 반환합니다. 이 함수는 또한 이전 또는 다음 세그먼트에서 시작 타임스탬프를 반환하고 연도의 첫 번째 달을 재정의하는 기능을 제공합니다.
함수에서 n_month 인수로 사용할 수 있는 연도의 다음 세그먼트:
기간 | 개월 수 |
---|---|
1개월 | 1 |
2개월 | 2 |
분기 | 3 |
4개월 |
4 |
6개월 | 6 |
인수 | 설명 |
---|---|
n_months | 기간을 정의하는 개월 수입니다. 정수 또는 정수로 처리되는 표현식으로, 1(inmonth() 함수와 동일), 2(2개월), 3(inquarter() 함수와 동일), 4(4개월 기간) 또는 6(6개월) 중 하나여야 합니다. |
date | 평가할 날짜 또는 타임스탬프입니다. |
period_no | 기간은 period_no, 정수 또는 정수로 처리되는 표현식으로 오프셋을 지정할 수 있습니다. 값 0은 base_date를 포함하는 기간을 나타냅니다. period_no가 음수 값일 경우 이전 기간, 양수 값일 경우 다음 기간을 나타냅니다. |
first_month_of_year |
1월에 시작되지 않는 (회계)연도를 사용하려는 경우 first_month_of_year에 2와 12 사이의 값을 지정하십시오. |
사용 시기
monthsstart() 함수는 일반적으로 사용자가 아직 발생하지 않은 기간을 사용하여 계산하려고 할 때 표현식의 일부로 사용됩니다. 예를 들어 사용자가 월, 분기 또는 6개월 동안 누적된 총 이자를 계산할 수 있도록 입력 변수를 제공하는 데 사용할 수 있습니다.
예 | 결과 |
---|---|
monthsstart(4, '10/19/2013') | 09/01/2013를 반환합니다. |
monthsstart(4, '10/19/2013, -1) | 05/01/2013을 반환합니다. |
monthsstart(4, '10/19/2013', 0, 2 ) | 2개월차에 연도가 시작되므로 10/01/2013을 반환합니다. |
국가별 설정
달리 지정하지 않는 한 이 항목의 예에서는 다음 날짜 형식을 사용합니다. YYYY/MM/DD. 날짜 형식은 데이터 로드 스크립트의 SET DateFormat 문에 지정됩니다. 기본 날짜 형식은 지역 설정 및 기타 요인으로 인해 시스템에서 다를 수 있습니다. 아래 예의 형식을 요구 사항에 맞게 변경할 수 있습니다. 또는 이러한 예와 일치하도록 로드 스크립트의 형식을 변경할 수 있습니다.
앱의 기본 국가별 설정은 Qlik Sense가 설치된 컴퓨터 또는 서버의 국가별 시스템 설정을 기반으로 합니다. 액세스하는 Qlik Sense 서버가 스웨덴으로 설정된 경우 데이터 로드 편집기는 날짜, 시간 및 통화에 대해 스웨덴 지역 설정을 사용합니다. 이러한 국가별 형식 설정은 Qlik Sense 사용자 인터페이스에 표시되는 언어와 관련이 없습니다. Qlik Sense는 사용 중인 브라우저와 동일한 언어로 표시됩니다.
예 1 – 추가 인수 없음
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
-
Transactions라는 테이블에 로드되는 2022년 트랜잭션 집합이 포함된 데이터 집합.
-
DateFormat 시스템 변수(MM/DD/YYYY) 서식으로 제공된 날짜 필드.
-
트랜잭션을 2개월 세그먼트로 그룹화하고 각 트랜잭션에 대한 세그먼트의 시작 타임스탬프를 반환하는 필드 bi_monthly_start 만들기.
로드 스크립트
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
monthsstart(2,date) as bi_monthly_start,
timestamp(monthsstart(2,date)) as bi_monthly_start_timestamp
;
Load
*
Inline
[
id,date,amount
8188,2/19/2022,37.23
8189,3/7/2022,17.17
8190,3/30/2022,88.27
8191,4/5/2022,57.42
8192,4/16/2022,53.80
8193,5/1/2022,82.06
8194,5/7/2022,40.39
8195,5/22/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
-
bi_monthly_start
-
bi_monthly_start_timestamp
date | bi_monthly_start | bi_monthly_start_timestamp |
---|---|---|
2/19/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
3/7/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
3/30/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
4/5/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
4/16/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
5/1/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
5/7/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
5/22/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
6/15/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
6/26/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
7/9/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
7/22/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
7/23/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
7/27/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
8/2/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
8/8/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
8/19/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
9/26/2022 | 09/01/2022 | 9/1/2022 12:00:00 AM |
10/14/2022 | 09/01/2022 | 9/1/2022 12:00:00 AM |
10/29/2022 | 09/01/2022 | 9/1/2022 12:00:00 AM |
'bi_monthly_start' 필드는 monthsstart() 함수를 사용하여 선행 LOAD 문에서 만들어집니다. 제공된 첫 번째 인수는 2이며, 연도를 2개월 세그먼트로 나눕니다. 두 번째 인수는 평가 중인 필드를 식별합니다.
트랜잭션 8195는 5월 22일에 발생합니다. monthsstart() 함수는 처음에 연도를 2개월 세그먼트로 나눕니다. 트랜잭션 8195는 5월 1일에서 6월 30일 사이의 세그먼트에 속합니다. 따라서 이 함수는 이 세그먼트의 첫 번째 밀리초, 즉 2022년 4월 1일 오전 12:00:00를 반환합니다.
예 2 – period_no
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
-
첫 번째 예와 동일한 데이터 집합 및 시나리오.
-
트랜잭션이 발생하기 전 2개월 세그먼트의 첫 번째 밀리초를 반환하는 필드 prev_bi_monthly_start 만들기.
로드 스크립트
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
monthsstart(2,date,-1) as prev_bi_monthly_start,
timestamp(monthsstart(2,date,-1)) as prev_bi_monthly_start_timestamp
;
Load
*
Inline
[
id,date,amount
8188,2/19/2022,37.23
8189,3/7/2022,17.17
8190,3/30/2022,88.27
8191,4/5/2022,57.42
8192,4/16/2022,53.80
8193,5/1/2022,82.06
8194,5/7/2022,40.39
8195,5/22/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
-
prev_bi_monthly_start
-
prev_bi_monthly_start_timestamp
date | prev_bi_monthly_start | prev_bi_monthly_start_timestamp |
---|---|---|
2/19/2022 | 11/01/2021 | 11/1/2021 12:00:00 AM |
3/7/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
3/30/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
4/5/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
4/16/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
5/1/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
5/7/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
5/22/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
6/15/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
6/26/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
7/9/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
7/22/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
7/23/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
7/27/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
8/2/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
8/8/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
8/19/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
9/26/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
10/14/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
10/29/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
초기에 1년을 2개월 세그먼트로 나눈 후 monthsstart() 함수의 period_no 인수로 -1을 사용하면 이 함수는 트랜잭션이 발생할 때 이전 2개월 세그먼트의 첫 번째 밀리초를 반환합니다.
트랜잭션 8195는 5월과 6월 사이의 세그먼트에서 발생합니다. 따라서 이전의 2개월 세그먼트는 3월 1일과 4월 30일 사이에 있었으므로 이 함수는 이 세그먼트의 첫 번째 밀리초인 2022년 3월 1일 오전 12:00:00를 반환합니다.
예 3 – first_month_of_year
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
-
첫 번째 예와 동일한 데이터 집합 및 시나리오.
-
트랜잭션을 2개월 세그먼트로 그룹화하고 각 트랜잭션에 대한 집합의 시작 타임스탬프를 반환하는 필드 bi_monthly_start 만들기.
그러나 이 예에서는 4월을 회계 연도의 첫 번째 달로 설정해야 합니다.
로드 스크립트
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
monthsstart(2,date,0,4) as bi_monthly_start,
timestamp(monthsstart(2,date,0,4)) as bi_monthly_start_timestamp
;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
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
-
bi_monthly_start
-
bi_monthly_start_timestamp
date | bi_monthly_start | bi_monthly_start_timestamp |
---|---|---|
2/19/2022 | 02/01/2022 | 2/1/2022 12:00:00 AM |
3/7/2022 | 02/01/2022 | 2/1/2022 12:00:00 AM |
3/30/2022 | 02/01/2022 | 2/1/2022 12:00:00 AM |
4/5/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
4/16/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
5/1/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
5/7/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
5/22/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
6/15/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
6/26/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
7/9/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
7/22/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
7/23/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
7/27/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
8/2/2022 | 08/01/2022 | 8/1/2022 12:00:00 AM |
8/8/2022 | 08/01/2022 | 8/1/2022 12:00:00 AM |
8/19/2022 | 08/01/2022 | 8/1/2022 12:00:00 AM |
9/26/2022 | 08/01/2022 | 8/1/2022 12:00:00 AM |
10/14/2022 | 10/01/2022 | 10/1/2022 12:00:00 AM |
10/29/2022 | 10/01/2022 | 10/1/2022 12:00:00 AM |
monthsstart() 함수의 first_month_of_year 인수로 4를 사용하면 이 함수는 연도를 4월 1일에 시작합니다. 그런 다음 연도를 2개월 세그먼트로 나눕니다. Apr-May,Jun-Jul,Aug-Sep,Oct-Nov,Dec-Jan,Feb-Mar.
트랜잭션 8195는 5월 22일에 발생했으며 4월 1일에서 5월 31일 사이에 해당합니다. 따라서 이 함수는 2022년 4월 1일 오전 12:00:00에 이 세그먼트의 첫 번째 밀리초를 반환합니다.
예 4 – 차트 개체 예
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
이 로드 스크립트에는 첫 번째 예와 동일한 데이터 집합 및 시나리오가 포함되어 있습니다.
그러나 이 예에서는 변경되지 않은 데이터 집합이 응용 프로그램에 로드됩니다. 트랜잭션을 2개월 세그먼트로 그룹화하고 각 트랜잭션에 대한 집합의 시작 타임스탬프를 반환하는 계산은 응용 프로그램의 차트 개체에서 측정값으로 만들어집니다.
로드 스크립트
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*
Inline
[
id,date,amount
8188,2/19/2022,37.23
8189,3/7/2022,17.17
8190,3/30/2022,88.27
8191,4/5/2022,57.42
8192,4/16/2022,53.80
8193,5/1/2022,82.06
8194,5/7/2022,40.39
8195,5/22/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.
다음 측정값을 만듭니다.
=monthsstart(2,date)
=timestamp(monthsstart(2,date))
이러한 계산은 각 트랜잭션이 발생한 2개월 세그먼트의 시작 타임스탬프를 검색합니다.
date | =monthsstart(2,date) | =timestamp(monthsstart(2,date)) |
---|---|---|
9/26/2022 | 09/01/2022 | 9/1/2022 12:00:00 AM |
10/14/2022 | 09/01/2022 | 9/1/2022 12:00:00 AM |
10/29/2022 | 09/01/2022 | 9/1/2022 12:00:00 AM |
7/9/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
7/22/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
7/23/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
7/27/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
8/2/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
8/8/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
8/19/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
5/1/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
5/7/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
5/22/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
6/15/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
6/26/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
3/7/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
3/30/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
4/5/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
4/16/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
2/19/2022 | 01/01/2022 | 1/1/2021 12:00:00 AM |
트랜잭션 8195는 5월 22일에 발생했습니다. monthsstart() 함수는 처음에 연도를 2개월 세그먼트로 나눕니다. 트랜잭션 8195는 5월 1일에서 6월 30일 사이의 세그먼트에 속합니다. 따라서 이 함수는 이 세그먼트의 첫 번째 밀리초, 즉 2022년 5월 1일 오전 12:00:00를 반환합니다.
예 5 – 시나리오
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
-
Loans라는 테이블에 로드되는 대출 잔액 집합이 포함된 데이터 집합.
-
대출 ID, 월초 잔액, 각 대출에 연간 부과되는 단순 이자율로 구성된 데이터.
최종 사용자는 선택한 기간 동안 각 대출에 대해 발생한 현재 이자를 대출 ID별로 표시하는 차트 개체를 원합니다. 회계 연도는 1월에 시작됩니다.
로드 스크립트
SET DateFormat='MM/DD/YYYY';
Loans:
Load
*
Inline
[
loan_id,start_balance,rate
8188,$10000.00,0.024
8189,$15000.00,0.057
8190,$17500.00,0.024
8191,$21000.00,0.034
8192,$90000.00,0.084
];
결과
데이터를 로드하고 시트를 엽니다.
로드 스크립트 시작 시 변수 입력 컨트롤에 연결될 변수(vPeriod)가 만들어졌습니다. 그런 다음 시트에서 변수를 사용자 지정 개체로 구성합니다.
다음과 같이 하십시오.
-
자산 패널에서 사용자 지정 개체를 클릭합니다.
-
Qlik 대시보드 번들을 선택하고 변수 입력 개체를 만듭니다.
-
차트 개체의 제목을 입력합니다.
-
변수에서 이름으로 vPeriod를 선택하고 드롭다운으로 표시할 개체를 설정합니다.
-
값에서 동적 값을 사용하도록 개체를 구성합니다. 다음을 입력합니다.
='1~month|2~bi-month|3~quarter|4~tertial|6~half-year'
다음으로 결과 테이블을 만듭니다.
다음과 같이 하십시오.
-
새 테이블을 만듭니다. 다음 필드를 차원으로 추가합니다.
-
employee_id
-
employee_name
-
-
누적 이자를 계산하는 측정값을 만듭니다.
=start_balance*(rate*(today(1)-monthsstart($(vPeriod),today(1)))/365)
-
측정값의 숫자 형식을 화폐로 설정합니다. 편집 완료를 클릭합니다. 이제 변수 개체에서 시간 세그먼트를 조정하여 테이블에 표시된 데이터를 수정할 수 있습니다.
month 기간 옵션을 선택하면 결과 테이블이 다음과 같이 표시됩니다.
loan_id | start_balance | =start_balance*(rate*(today(1)-monthsstart($(vPeriod),today(1)))/365) |
---|---|---|
8188 | $10000.00 | $7.95 |
8189 | $15000.00 | $67.93 |
8190 | $17500.00 | $33.37 |
8191 | $21000.00 | $56.73 |
8192 | $90000.00 | $600.66 |
사용자의 입력을 첫 번째 인수로 사용하고 오늘 날짜를 두 번째 인수로 사용하는 monthsstart() 함수는 사용자가 선택한 기간의 시작 날짜를 반환합니다. 이 표현식은 현재 날짜에서 해당 결과를 빼서 이 기간에 지금까지 경과한 일수를 반환합니다.
그런 다음 이 값에 이자율을 곱하고 365로 나누어 이 기간 동안 발생한 유효 이자율을 반환합니다. 그런 다음 결과에 대출의 시작 잔액을 곱하여 이 기간의 지금까지 발생한 이자를 반환합니다.