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 Cloud 사용자 인터페이스에 표시되는 언어와 관련이 없습니다. Qlik Cloud는 사용 중인 브라우저와 동일한 언어로 표시됩니다.
앱 작성자인 경우 만든 앱의 기본 지역을 설정할 수 있습니다. 자세한 내용은 Qlik Cloud 분석에서 앱 및 스크립트 만들기를 위한 기본 지역 설정 지정을 참조하십시오.
예 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로 나누어 이 기간 동안 발생한 유효 이자율을 반환합니다. 그런 다음 결과에 대출의 시작 잔액을 곱하여 이 기간의 지금까지 발생한 이자를 반환합니다.