makeweekdate - 스크립트 및 차트 함수
이 함수는 연도 YYYY, 주 WW, 요일 D에서 계산한 날짜를 반환합니다.
구문:
MakeWeekDate(YYYY [ , WW [ , D ] ])
반환 데이터 유형: dual
makeweekdate() 함수는 스크립트 및 차트 함수로 모두 사용할 수 있습니다. 이 함수는 함수에 전달된 매개 변수를 기반으로 날짜를 계산합니다. 요일 매개 변수가 생략되면 이 함수는 해당 주의 월요일 날짜를 반환합니다.
makeweekdate() 함수는 BrokenWeek, ReferenceDay 또는 FirstWeekDay 시스템 변수를 고려하지 않습니다. 1주차는 1월 첫째 월요일에 시작됩니다. 예를 들어 2022년에는 1주차가 1월 3일에 시작됩니다.
인수 | 설명 |
---|---|
YYYY | 연도는 정수입니다. |
WW |
주는 정수입니다. 주는 양수 또는 음수일 수 있으며 다른 연도의 날짜를 반환하는 데 52보다 클 수 있습니다. |
D |
요일은 정수입니다. 요일을 지정하지 않으면 0(월요일)으로 가정됩니다. 나머지 요일은 화요일에 1, 수요일에 2, 목요일에 3, 금요일에 4, 토요일에 5, 일요일에 6으로 할당됩니다. |
사용 시기
makeweekdate() 함수는 일반적으로 데이터를 생성하여 날짜 목록을 생성하거나 입력 데이터에 연도, 주 및 요일이 제공될 때 날짜를 구성하기 위해 스크립트에서 사용됩니다.
예 | 결과 |
---|---|
makeweekdate(2014,6,6) | 반환 값: 02/09/2014 |
makeweekdate(2014,6,1) | 반환 값: 02/04/2014 |
makeweekdate(2014,6) | 02/03/2014을 반환합니다(평일 0 사용). |
국가별 설정
달리 지정하지 않는 한 이 항목의 예에서는 다음 날짜 형식을 사용합니다. YYYY/MM/DD. 날짜 형식은 데이터 로드 스크립트의 SET DateFormat 문에 지정됩니다. 기본 날짜 형식은 지역 설정 및 기타 요인으로 인해 시스템에서 다를 수 있습니다. 아래 예의 형식을 요구 사항에 맞게 변경할 수 있습니다. 또는 이러한 예와 일치하도록 로드 스크립트의 형식을 변경할 수 있습니다.
앱의 기본 국가별 설정은 Qlik Sense가 설치된 컴퓨터 또는 서버의 국가별 시스템 설정을 기반으로 합니다. 액세스하는 Qlik Sense 서버가 스웨덴으로 설정된 경우 데이터 로드 편집기는 날짜, 시간 및 통화에 대해 스웨덴 지역 설정을 사용합니다. 이러한 국가별 형식 설정은 Qlik Sense 사용자 인터페이스에 표시되는 언어와 관련이 없습니다. Qlik Sense는 사용 중인 브라우저와 동일한 언어로 표시됩니다.
예 1 – day 포함
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
-
Sales라는 테이블에 2022년의 주간 판매 합계가 포함된 데이터 집합.
-
3개 필드에 제공되는 트랜잭션 날짜: year, week 및 sales.
-
측정값 end_of_week를 만드는 데 사용되는 선행 로드, makeweekdate() 함수를 사용하여 해당 주의 금요일 날짜를 MM/DD/YYYY 서식으로 반환합니다.
반환된 날짜가 금요일임을 증명하기 위해 end_of_week 표현식도 요일을 표시하는 weekday() 함수로 래핑됩니다.
로드 스크립트
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
makeweekdate(transaction_year, transaction_week,4) as end_of_week,
weekday(makeweekdate(transaction_year, transaction_week,4)) as week_day
;
Load * Inline [
transaction_year, transaction_week, sales
2022, 01, 10000
2022, 02, 11250
2022, 03, 9830
2022, 04, 14010
2022, 05, 28402
2022, 06, 9992
2022, 07, 7292
];
결과
데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.
-
transaction_year
-
transaction_week
-
end_of_week
-
week_day
transaction_year | transaction_week | end_of_week | week_day |
---|---|---|---|
2022 | 01 | 01/07/2022 | Fri |
2022 | 02 | 01/14/2022 | Fri |
2022 | 03 | 01/21/2022 | Fri |
2022 | 04 | 01/28/2022 | Fri |
2022 | 05 | 02/04/2022 | Fri |
2022 | 06 | 02/11/2022 | Fri |
2022 | 07 | 02/18/2022 | Fri |
end_of_week 필드는 makeweekdate() 함수를 사용하여 선행 LOAD 문에서 만들어집니다. transaction_year, transaction_week 필드는 함수를 통해 연도 및 주 인수로 전달됩니다. day 인수에는 값 4가 사용됩니다.
그런 다음 함수는 이러한 값을 결합하고 날짜 필드로 변환하여 DateFormat 시스템 변수의 형식으로 결과를 반환합니다.
makeweekdate() 함수와 해당 인수도 weekday() 함수로 래핑되어 week_day 필드를 반환합니다. 위의 표에서 볼 수 있듯이 week_day 필드는 이러한 날짜가 금요일에 발생함을 보여 줍니다.
예 2 – day 제외
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
-
Sales라는 테이블에 2022년의 주간 판매 합계가 포함된 데이터 집합.
-
3개 필드에 제공되는 트랜잭션 날짜: year, week 및 sales.
-
makeweekdate() 함수를 사용하여 측정값 first_day_of_week를 만드는 데 사용되는 선행 로드. 이는 MM/DD/YYYY 서식으로 해당 주의 월요일 날짜를 반환합니다.
반환된 날짜가 월요일임을 증명하기 위해 first_day_of_week 표현식도 요일을 표시하는 weekday() 함수로 래핑됩니다.
로드 스크립트
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
Transactions:
Load
*,
makeweekdate(transaction_year, transaction_week) as first_day_of_week,
day(makeweekdate(transaction_year, transaction_week)) as week_day
;
Load * Inline [
transaction_year, transaction_week, sales
2022, 01, 10000
2022, 02, 11250
2022, 03, 9830
2022, 04, 14010
2022, 05, 28402
2022, 06, 9992
2022, 07, 7292
];
결과
데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.
-
transaction_year
-
transaction_week
-
first_day_of_week
-
week_day
transaction_year | transaction_week | first_day_of_week | week_day |
---|---|---|---|
2022 | 01 | 01/03/2022 | Mon |
2022 | 02 | 01/10/2022 | Mon |
2022 | 03 | 01/17/2022 | Mon |
2022 | 04 | 01/24/2022 | Mon |
2022 | 05 | 01/31/2022 | Mon |
2022 | 06 | 02/07/2022 | Mon |
2022 | 07 | 02/14/2022 | Mon |
first_day_of_week 필드는 makeweekdate() 함수를 사용하여 선행 LOAD 문에서 만들어집니다. transaction_year 및 transaction_week 매개 변수는 함수 인수로 전달되고 day 매개 변수는 비어 있습니다.
그런 다음 함수는 이러한 값을 결합하고 날짜 필드로 변환하여 DateFormat 시스템 변수의 형식으로 결과를 반환합니다.
makeweekdate() 함수와 해당 인수도 week_day 필드를 반환하는 weekday() 함수로 래핑됩니다. 위의 표에서 볼 수 있듯이 week_day 필드는 이러한 날짜가 월요일에 발생함을 보여 줍니다(FirstWeekDay 변수로 일요일을 주의 첫째 요일로 설정한 경우 포함). makeweekdate() 함수의 day 매개 변수가 비어 있기 때문입니다.
예 3 – 차트 개체 예
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
-
Sales라는 테이블에 2022년의 주간 판매 합계가 포함된 데이터 집합.
-
3개 필드에 제공되는 트랜잭션 날짜: year, week 및 sales.
이 예에서는 차트 개체를 사용하여 첫 번째 예에서 end_of_week 계산에 해당하는 측정값을 만듭니다. 이 측정값은 makeweekdate() 함수를 사용하여 해당 주의 금요일 날짜를 MM/DD/YYYY 서식으로 반환합니다.
반환된 날짜가 금요일임을 증명하기 위해 요일을 반환하는 두 번째 측정값이 만들어집니다.
로드 스크립트
SET DateFormat=’MM/DD/YYYY';
Master_Calendar:
Load * Inline [
transaction_year, transaction_week, sales
2022, 01, 10000
2022, 02, 11250
2022, 03, 9830
2022, 04, 14010
2022, 05, 28402
2022, 06, 9992
2022, 07, 7292
];
결과
다음과 같이 하십시오.
-
데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.
-
transaction_year
-
transaction_week
-
-
첫 번째 예의 end_of_week 필드와 동일한 계산을 수행하려면 다음 측정값을 만듭니다.
=makeweekdate(transaction_year,transaction_week,4)
-
각 트랜잭션의 요일을 계산하려면 다음 측정값을 만듭니다.
=weekday(makeweekdate(transaction_year,transaction_week,4))
transaction_year | transaction_week | =makeweekdate(transaction_year,transaction_week,4) | =weekday(makeweekdate(transaction_year,transaction_week,4)) |
---|---|---|---|
2022 | 01 | 01/07/2022 | Fri |
2022 | 02 | 01/14/2022 | Fri |
2022 | 03 | 01/21/2022 | Fri |
2022 | 04 | 01/28/2022 | Fri |
2022 | 05 | 02/04/2022 | Fri |
2022 | 06 | 02/11/2022 | Fri |
2022 | 07 | 02/18/2022 | Fri |
makeweekdate() 함수를 사용하여 측정값으로 차트 개체에 end_of_week에 해당하는 필드가 만들어집니다. transaction_year 및 transaction_week 필드는 연도 및 주 인수로 전달됩니다. day 인수에는 값 4가 사용됩니다.
그런 다음 함수는 이러한 값을 결합하고 날짜 필드로 변환하여 DateFormat 시스템 변수의 형식으로 결과를 반환합니다.
makeweekdate() 함수와 해당 인수도 weekday() 함수로 래핑되어 첫 번째 예의 week_day 필드와 동일한 계산을 반환합니다. 위의 표에서 볼 수 있듯이 오른쪽의 마지막 열은 이러한 날짜가 금요일에 발생했음을 보여 줍니다.
예 4 – 시나리오
개요
이 예에서는 2022년의 모든 금요일을 포함하는 날짜 목록을 만듭니다.
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트
SET DateFormat='MM/DD/YYYY';
Calendar:
load
*,
weekday(date) as weekday
where year(date)=2022;
load
makeweekdate(2022,recno()-2,4) as date
AutoGenerate 60;
결과
date | weekday |
---|---|
01/07/2022 | Fri |
01/14/2022 | Fri |
01/21/2022 | Fri |
01/28/2022 | Fri |
02/04/2022 | Fri |
02/11/2022 | Fri |
02/18/2022 | Fri |
02/25/2022 | Fri |
03/04/2022 | Fri |
03/11/2022 | Fri |
03/18/2022 | Fri |
03/25/2022 | Fri |
04/01/2022 | Fri |
04/08/2022 | Fri |
04/15/2022 | Fri |
04/22/2022 | Fri |
04/29/2022 | Fri |
05/06/2022 | Fri |
05/13/2022 | Fri |
05/20/2022 | Fri |
05/27/2022 | Fri |
06/03/2022 | Fri |
06/10/2022 | Fri |
06/17/2022 | Fri |
+ 27 추가 행 |
makeweekdate() 함수는 2022년에서 각각의 금요일을 찾습니다. 주 매개 변수가 -2이면 날짜가 누락되지 않습니다. 마지막으로 선행 로드는 명확성을 위해 추가 weekday 필드를 만들어 각 date 값이 금요일임을 보여 줍니다.