weekend - 스크립트 및 차트 함수
이 함수는 date를 포함하는 캘린더 주의 마지막 날(일요일)의 마지막 밀리초의 타임스탬프에 해당하는 값을 반환합니다. 기본 출력 형식은 스크립트에 설정된 DateFormat입니다.
구문:
WeekEnd(date [, period_no[, first_week_day]])
반환 데이터 유형: dual
weekend() 함수는 날짜가 속하는 주를 결정합니다. 그런 다음 해당 주의 마지막 밀리초에 대한 타임스탬프를 날짜 서식으로 반환합니다. 주의 첫 번째 요일은 FirstWeekDay 환경 변수에 의해 결정됩니다. 그러나 이는 weekend() 함수의 first_week_day 인수로 대체될 수 있습니다.
인수 | 설명 |
---|---|
date | 평가할 날짜 또는 타임스탬프입니다. |
period_no | shift는 정수이며, 값 0은 date를 포함하는 주를 나타냅니다. shift가 음수 값일 경우 이전 주, 양수 값일 경우 다음 주를 나타냅니다. |
first_week_day |
주의 시작 요일을 지정합니다. 생략하면 변수 FirstWeekDay의 값이 사용됩니다. first_week_day의 가능한 값은 월요일에 0, 화요일에 1, 수요일에 2, 목요일에 3, 금요일에 4, 토요일에 5, 일요일에 6입니다. 시스템 변수에 대한 자세한 내용은 FirstWeekDay를 참조하십시오. |
broken_weeks |
broken_weeks를 지정하지 않으면 BrokenWeeks 변수의 값이 주를 분리할지 여부를 정의하는 데 사용됩니다. 시스템 변수에 대한 자세한 내용은 BrokenWeeks를 참조하십시오. |
사용 시기
weekend() 함수는 일반적으로 사용자가 지정된 날짜에 대해 해당 주의 나머지 일 수를 계산하려고 할 때 표현식의 일부로 사용됩니다. 예를 들어, 사용자가 한 주 동안 아직 발생하지 않은 총 이자를 계산하려는 경우 사용할 수 있습니다.
예 | 결과 |
---|---|
weekend('01/10/2013') | 01/12/2013 23:59:59를 반환합니다. |
weekend('01/10/2013', -1) | 01/05/2013 23:59:59.를 반환합니다. |
weekend('01/10/2013', 0, 1) | 01/14/2013 23:59:59를 반환합니다. |
국가별 설정
달리 지정하지 않는 한 이 항목의 예에서는 다음 날짜 형식을 사용합니다. YYYY/MM/DD. 날짜 형식은 데이터 로드 스크립트의 SET DateFormat 문에 지정됩니다. 기본 날짜 형식은 지역 설정 및 기타 요인으로 인해 시스템에서 다를 수 있습니다. 아래 예의 형식을 요구 사항에 맞게 변경할 수 있습니다. 또는 이러한 예와 일치하도록 로드 스크립트의 형식을 변경할 수 있습니다.
앱의 기본 국가별 설정은 Qlik Sense가 설치된 컴퓨터 또는 서버의 국가별 시스템 설정을 기반으로 합니다. 액세스하는 Qlik Sense 서버가 스웨덴으로 설정된 경우 데이터 로드 편집기는 날짜, 시간 및 통화에 대해 스웨덴 지역 설정을 사용합니다. 이러한 국가별 형식 설정은 Qlik Sense 사용자 인터페이스에 표시되는 언어와 관련이 없습니다. Qlik Sense는 사용 중인 브라우저와 동일한 언어로 표시됩니다.
예 1 – 기본 예
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
-
Transactions라는 테이블에 로드되는 2022년 트랜잭션 집합이 포함된 데이터 집합.
-
DateFormat 시스템 변수(MM/DD/YYYY) 서식으로 제공된 날짜 필드.
-
트랜잭션이 발생한 주의 마지막에 대한 타임스탬프를 반환하는 필드 end_of_week 만들기.
로드 스크립트
SET FirstWeekDay=6;
Transactions:
Load
*,
weekend(date) as end_of_week,
timestamp(weekend(date)) as end_of_week_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
-
end_of_week
-
end_of_week_timestamp
date | end_of_week | end_of_week_timestamp |
---|---|---|
1/7/2022 | 01/08/2022 | 1/8/2022 11:59:59 PM |
1/19/2022 | 01/22/2022 | 1/22/2022 11:59:59 PM |
2/5/2022 | 02/05/2022 | 2/5/2022 11:59:59 PM |
2/28/2022 | 03/05/2022 | 3/5/2022 11:59:59 PM |
3/16/2022 | 03/19/2022 | 3/19/2022 11:59:59 PM |
4/1/2022 | 04/02/2022 | 4/2/2022 11:59:59 PM |
5/7/2022 | 05/07/2022 | 5/7/2022 11:59:59 PM |
5/16/2022 | 05/21/2022 | 5/21/2022 11:59:59 PM |
6/15/2022 | 06/18/2022 | 6/18/2022 11:59:59 PM |
6/26/2022 | 07/02/2022 | 7/2/2022 11:59:59 PM |
7/9/2022 | 07/09/2022 | 7/9/2022 11:59:59 PM |
7/22/2022 | 07/23/2022 | 7/23/2022 11:59:59 PM |
7/23/2022 | 07/23/2022 | 7/23/2022 11:59:59 PM |
7/27/2022 | 07/30/2022 | 7/30/2022 11:59:59 PM |
8/2/2022 | 08/06/2022 | 8/6/2022 11:59:59 PM |
8/8/2022 | 08/13/2022 | 8/13/2022 11:59:59 PM |
8/19/2022 | 08/20/2022 | 8/20/2022 11:59:59 PM |
9/26/2022 | 10/01/2022 | 10/1/2022 11:59:59 PM |
10/14/2022 | 10/15/2022 | 10/15/2022 11:59:59 PM |
10/29/2022 | 10/29/2022 | 10/29/2022 11:59:59 PM |
end_of_week 필드는 weekend() 함수를 사용하고 날짜 필드를 함수의 인수로 전달하여 선행 LOAD 문에서 만들어집니다.
weekend() 함수는 날짜 값이 속하는 주를 식별하고 해당 주의 마지막 밀리초에 대한 타임스탬프를 반환합니다.
트랜잭션 8191은 2월 5일에 발생했습니다. FirstWeekDay 시스템 변수는 주의 첫 번째 요일을 일요일로 설정합니다. weekend() 함수는 2월 5일 이후의 첫 번째 토요일(따라서 주의 끝)이 2월 5일임을 식별합니다. 따라서 해당 트랜잭션의 end_of_week 값은 해당 날짜의 마지막 밀리초인 2월 5일 오후 11:59:59를 반환합니다.
예 2 – period_no
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
-
첫 번째 예와 동일한 데이터 집합 및 시나리오.
-
트랜잭션이 발생하기 전 주의 시작에 대한 타임스탬프를 반환하는 필드 previous_week_end 만들기.
로드 스크립트
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
weekend(date,-1) as previous_week_end,
timestamp(weekend(date,-1)) as previous_week_end_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
-
previous_week_end
-
previous_week_end_timestamp
date | end_of_week | end_of_week_timestamp |
---|---|---|
1/7/2022 | 01/01/2022 | 1/1/2022 11:59:59 PM |
1/19/2022 | 01/15/2022 | 1/15/2022 11:59:59 PM |
2/5/2022 | 01/29/2022 | 1/29/2022 11:59:59 PM |
2/28/2022 | 02/26/2022 | 2/26/2022 11:59:59 PM |
3/16/2022 | 03/12/2022 | 3/12/2022 11:59:59 PM |
4/1/2022 | 03/26/2022 | 3/26/2022 11:59:59 PM |
5/7/2022 | 04/30/2022 | 4/30/2022 11:59:59 PM |
5/16/2022 | 05/14/2022 | 5/14/2022 11:59:59 PM |
6/15/2022 | 06/11/2022 | 6/11/2022 11:59:59 PM |
6/26/2022 | 06/25/2022 | 6/25/2022 11:59:59 PM |
7/9/2022 | 07/02/2022 | 7/2/2022 11:59:59 PM |
7/22/2022 | 07/16/2022 | 7/16/2022 11:59:59 PM |
7/23/2022 | 07/16/2022 | 7/16/2022 11:59:59 PM |
7/27/2022 | 07/23/2022 | 7/23/2022 11:59:59 PM |
8/2/2022 | 07/30/2022 | 7/30/2022 11:59:59 PM |
8/8/2022 | 08/06/2022 | 8/6/2022 11:59:59 PM |
8/19/2022 | 08/13/2022 | 8/13/2022 11:59:59 PM |
9/26/2022 | 09/24/2022 | 9/24/2022 11:59:59 PM |
10/14/2022 | 10/08/2022 | 10/8/2022 11:59:59 PM |
10/29/2022 | 10/22/2022 | 10/22/2022 11:59:59 PM |
이 경우 weekend() 함수에서 period_no -1을 오프셋 인수로 사용했으므로 이 함수는 먼저 트랜잭션이 발생한 주를 식별합니다. 그런 다음 1주일 전을 찾아 해당 주의 마지막 밀리초를 식별합니다.
트랜잭션 8196은 6월 15일에 발생했습니다. weekend() 함수는 주가 6월 12일에 시작함을 식별합니다. 따라서 이전 주는 6월 11일 오후 11:59:59에 끝납니다. 이는 previous_week_end 필드에 대해 반환된 값입니다.
예 3 – first_week_day
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
이 로드 스크립트에는 첫 번째 예와 동일한 데이터 집합 및 시나리오가 포함되어 있습니다. 그러나 이 예에서는 화요일을 근무 주의 첫 번째 요일로 설정해야 합니다.
로드 스크립트
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
weekend(date,0,1) as end_of_week,
timestamp(weekend(date,0,1)) as end_of_week_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
-
end_of_week
-
end_of_week_timestamp
date | end_of_week | end_of_week_timestamp |
---|---|---|
1/7/2022 | 01/10/2022 | 1/10/2022 11:59:59 PM |
1/19/2022 | 01/24/2022 | 1/24/2022 11:59:59 PM |
2/5/2022 | 02/07/2022 | 2/7/2022 11:59:59 PM |
2/28/2022 | 02/28/2022 | 2/28/2022 11:59:59 PM |
3/16/2022 | 03/21/2022 | 3/21/2022 11:59:59 PM |
4/1/2022 | 04/04/2022 | 4/4/2022 11:59:59 PM |
5/7/2022 | 05/09/2022 | 5/9/2022 11:59:59 PM |
5/16/2022 | 05/16/2022 | 5/16/2022 11:59:59 PM |
6/15/2022 | 06/20/2022 | 6/20/2022 11:59:59 PM |
6/26/2022 | 06/27/2022 | 6/27/2022 11:59:59 PM |
7/9/2022 | 07/11/2022 | 7/11/2022 11:59:59 PM |
7/22/2022 | 07/25/2022 | 7/25/2022 11:59:59 PM |
7/23/2022 | 07/25/2022 | 7/25/2022 11:59:59 PM |
7/27/2022 | 08/01/2022 | 8/1/2022 11:59:59 PM |
8/2/2022 | 08/08/2022 | 8/8/2022 11:59:59 PM |
8/8/2022 | 08/08/2022 | 8/8/2022 11:59:59 PM |
8/19/2022 | 08/22/2022 | 8/22/2022 11:59:59 PM |
9/26/2022 | 09/26/2022 | 9/26/2022 11:59:59 PM |
10/14/2022 | 10/17/2022 | 10/17/2022 11:59:59 PM |
10/29/2022 | 10/31/2022 | 10/31/2022 11:59:59 PM |
이 경우 weekend() 함수에서 first_week_date 인수 1을 사용하므로 주의 첫 번째 날을 화요일로 설정합니다.
트랜잭션 8191은 2월 5일에 발생했습니다. weekend() 함수는 이 날짜 이후의 첫 번째 월요일(따라서 한 주의 끝과 반환된 값)이 2월 6일 오후 11:59:59임을 식별합니다.
예 4 – 차트 개체 예
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
이 로드 스크립트에는 첫 번째 예와 동일한 데이터 집합 및 시나리오가 포함되어 있습니다. 그러나 이 예에서는 변경되지 않은 데이터 집합이 응용 프로그램에 로드됩니다. 트랜잭션이 발생한 주의 끝에 대한 타임스탬프를 반환하는 계산은 응용 프로그램의 차트 개체에서 측정값으로 만들어집니다.
로드 스크립트
Transactions:
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.
트랜잭션이 발생한 주의 시작을 계산하려면 다음 측정값을 추가합니다.
-
=weekend(date)
-
=timestamp(weekend(date))
date | =weekend(date) | =timestamp(weekend(date)) |
---|---|---|
1/7/2022 | 01/08/2022 | 1/8/2022 11:59:59 PM |
1/19/2022 | 01/22/2022 | 1/22/2022 11:59:59 PM |
2/5/2022 | 02/05/2022 | 2/5/2022 11:59:59 PM |
2/28/2022 | 03/05/2022 | 3/5/2022 11:59:59 PM |
3/16/2022 | 03/19/2022 | 3/19/2022 11:59:59 PM |
4/1/2022 | 04/02/2022 | 4/2/2022 11:59:59 PM |
5/7/2022 | 05/07/2022 | 5/7/2022 11:59:59 PM |
5/16/2022 | 05/21/2022 | 5/21/2022 11:59:59 PM |
6/15/2022 | 06/18/2022 | 6/18/2022 11:59:59 PM |
6/26/2022 | 07/02/2022 | 7/2/2022 11:59:59 PM |
7/9/2022 | 07/09/2022 | 7/9/2022 11:59:59 PM |
7/22/2022 | 07/23/2022 | 7/23/2022 11:59:59 PM |
7/23/2022 | 07/23/2022 | 7/23/2022 11:59:59 PM |
7/27/2022 | 07/30/2022 | 7/30/2022 11:59:59 PM |
8/2/2022 | 08/06/2022 | 8/6/2022 11:59:59 PM |
8/8/2022 | 08/13/2022 | 8/13/2022 11:59:59 PM |
8/19/2022 | 08/20/2022 | 8/20/2022 11:59:59 PM |
9/26/2022 | 10/01/2022 | 10/1/2022 11:59:59 PM |
10/14/2022 | 10/15/2022 | 10/15/2022 11:59:59 PM |
10/29/2022 | 10/29/2022 | 10/29/2022 11:59:59 PM |
end_of_week 측정값은 weekend() 함수를 사용하고 날짜 필드를 함수의 인수로 전달하여 차트 개체에서 만들어집니다. weekend() 함수는 날짜 값이 속하는 주를 식별하고 해당 주의 마지막 밀리초에 대한 타임스탬프를 반환합니다.
트랜잭션 8191은 2월 5일에 발생했습니다. FirstWeekDay 시스템 변수는 주의 첫 번째 요일을 일요일로 설정합니다. weekend() 함수는 2월 5일 이후의 첫 번째 토요일(따라서 주의 끝)이 2월 5일임을 식별합니다. 따라서 해당 트랜잭션의 end_of_week 값은 해당 날짜의 마지막 밀리초인 2월 5일 오후 11:59:59를 반환합니다.
예 5 – 시나리오
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
-
Employee_Expenses라는 테이블에 로드되는 데이터 집합.
-
직원 ID, 직원 이름 및 각 직원의 평균 일일 비용 클레임으로 구성된 데이터.
최종 사용자는 직원 ID와 직원 이름별로 해당 주에 남은 기간 동안 발생할 것으로 예상되는 비용 청구를 표시하는 차트 개체를 원합니다.
로드 스크립트
Employee_Expenses:
Load
*
Inline
[
employee_id,employee_name,avg_daily_claim
182,Mark, $15
183,Deryck, $12.5
184,Dexter, $12.5
185,Sydney,$27
186,Agatha,$18
];
결과
다음과 같이 하십시오.
-
데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.
-
employee_id
-
employee_name
-
-
다음으로 누적 이자를 계산하는 측정값을 만듭니다.
=(weekend(today(1))-today(1))*avg_daily_claim
-
측정값의 숫자 형식을 화폐로 설정합니다.
employee_id | employee_name | =(weekend(today(1))-today(1))*avg_daily_claim |
---|---|---|
182 | Mark | $90.00 |
183 | Deryck | $75.00 |
184 | Dexter | $75.00 |
185 | Sydney | $162.00 |
186 | Agatha | $108.00 |
weekend() 함수는 오늘 날짜를 유일한 인수로 사용하여 현재 주의 종료 날짜를 반환합니다. 그런 다음 이 표현식은 주 끝 날짜에서 오늘 날짜를 빼서 이번 주에 남아 있는 일 수를 반환합니다.
그런 다음 이 값에 각 직원의 평균 일일 비용 청구를 곱하여 각 직원이 남은 주에 예상되는 청구 금액을 계산합니다.