inday - 스크립트 및 차트 함수이 페이지에서
timestamp 가 base_timestamp 를 포함하는 날에 속할 경우 이 함수는 True 를 반환합니다.
구문:
InDay ( timestamp, base_timestamp, period_no[, day_start] )
inday 함수 다이어그램
inday() 함수는 base_timestamp 인수를 사용하여 타임스탬프가 속하는 날짜를 식별합니다. 날짜의 시작 시간은 기본적으로 자정입니다. 그러나 inday() 함수의 day_start 인수를 사용하여 날짜의 시작 시간을 변경할 수 있습니다. 이 날짜가 정의되면 함수는 규정된 타임스탬프 값을 해당 날짜와 비교할 때 부울 결과를 반환합니다.
사용 시기
inday() 함수는 부울 결과를 반환합니다. 일반적으로 이 유형의 함수는 if expression 의 조건으로 사용됩니다. 평가된 날짜가 해당 타임스탬프의 날짜에 발생했는지 여부에 따라 집계 또는 계산을 반환합니다.
예를 들어, inday() 함수를 사용하여 지정된 날짜에 제조된 모든 장비를 식별할 수 있습니다.
반환 데이터 유형: 부울
Qlik Sense 에서 부울 true 값은 -1로 표시되고 false 값은 0으로 표시됩니다.
인수
timestamp
base_timestamp 와 비교할 날짜 및 시간입니다.
base_timestamp
타임스탬프를 평가하는 데 사용되는 날짜와 시간입니다.
period_no
일은 period_no 로 오프셋을 지정할 수 있습니다. period_no 는 정수이며, 값 0은 base_timestamp 를 포함하는 날을 나타냅니다. period_no 가 음수 값일 경우 이전 날, 양수 값일 경우 이후 날을 나타냅니다.
day_start
작업일이 자정부터 시작되지 않도록 하려면 day_start 에 일의 분위수 형식으로 오프셋을 지정하십시오(예: 0.125 = 오전 3시).
국가별 설정
달리 지정하지 않는 한 이 항목의 예에서는 다음 날짜 형식을 사용합니다. YYYY/MM/DD. 날짜 형식은 데이터 로드 스크립트의 SET DateFormat 문에 지정됩니다. 기본 날짜 형식은 지역 설정 및 기타 요인으로 인해 시스템에서 다를 수 있습니다. 아래 예의 형식을 요구 사항에 맞게 변경할 수 있습니다. 또는 이러한 예와 일치하도록 로드 스크립트의 형식을 변경할 수 있습니다.
앱의 기본 국가별 설정은 Qlik Sense 가 설치된 컴퓨터 또는 서버의 국가별 시스템 설정을 기반으로 합니다. 액세스하는 Qlik Sense 서버가 스웨덴으로 설정된 경우 데이터 로드 편집기는 날짜, 시간 및 통화에 대해 스웨덴 지역 설정을 사용합니다. 이러한 국가별 형식 설정은 Qlik Sense 사용자 인터페이스에 표시되는 언어와 관련이 없습니다. Qlik Sense 는 사용 중인 브라우저와 동일한 언어로 표시됩니다.
함수 예
예
결과
inday ('01/12/2006 12:23:00 PM', '01/12/2006 12:00:00 AM', 0)
True 반환
inday ('01/12/2006 12:23:00 PM', '01/13/2006 12:00:00 AM', 0)
False 반환
inday ('01/12/2006 12:23:00 PM', '01/12/2006 12:00:00 AM', -1)
False 반환
inday ('01/11/2006 12:23:00 PM', '01/12/2006 12:00:00 AM', -1)
True 반환
inday ('01/12/2006 12:23:00 PM', '01/12/2006 12:00:00 AM', 0, 0.5)
False 반환
inday ('01/12/2006 11:23:00 AM', '01/12/2006 12:00:00 AM', 0, 0.5)
True 반환
예 1 – LOAD 문(스크립트)
로드 스크립트 및 결과
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
Transactions 라는 테이블에 로드되는 타임스탬프별 트랜잭션을 포함하는 데이터 집합.
TimeStamp 시스템 변수 (M/D/YYYY h:mm:ss[.fff] TT) 형식으로 제공되는 날짜 필드.
inday() 필드로 설정된 in_day 함수를 포함하는 선행 LOAD입니다.
로드 스크립트
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT';
Transactions:
Load
*,
inday(date,'01/05/2022 12:00:00 AM', 0) as in_day
;
Load
*
Inline
[
id,date,amount
9497,'01/01/2022 7:34:46 PM',13.24
9498,'01/01/2022 10:10:22 PM',31.43
9499,'01/02/2022 8:35:54 AM',36.34
9500,'01/03/2022 2:21:53 PM',51.75
9501,'01/04/2022 6:49:38 PM',15.35
9502,'01/04/2022 10:58:34 PM',74.34
9503,'01/05/2022 5:40:49 AM',73.53
9504,'01/05/2022 11:29:38 AM',50.00
9505,'01/05/2022 7:04:57 PM',47.25
9506,'01/06/2022 8:49:09 AM',74.23
];
결과
데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.
결과 테이블
날짜
in_day
01/01/2022 7:34:46 PM
0
01/01/2022 10:10:22 PM
0
01/02/2022 8:35:54 AM
0
01/03/2022 2:21:53 PM
0
01/04/2022 6:49:38 PM
0
01/04/2022 10:58:34 PM
0
01/05/2022 5:40:49 AM
-1
01/05/2022 11:29:38 AM
-1
01/05/2022 7:04:57 PM
-1
01/06/2022 8:49:09 AM
0
in_day 필드는 inday() 함수를 사용하고 날짜 필드, 1월 5일에 대한 하드 코딩된 타임스탬프 및 period_no 에 0 을 함수의 인수로 전달하여 이전 LOAD 문에서 만들어집니다.
예 2 – period_no
로드 스크립트 및 결과
개요
로드 스크립트는 첫 번째 예에서 사용한 것과 동일한 데이터 집합 및 시나리오를 사용합니다.
그러나 이 예에서 작업은 트랜잭션 날짜가 1월 5일 2일 이전에 발생했는지 여부를 계산하는 것입니다.
로드 스크립트
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT';
Transactions:
Load
*,
inday(date,'01/05/2022 12:00:00 AM', -2) as in_day
;
Load
*
Inline
[
id,date,amount
9497,'01/01/2022 7:34:46 PM',13.24
9498,'01/01/2022 10:10:22 PM',31.43
9499,'01/02/2022 8:35:54 AM',36.34
9500,'01/03/2022 2:21:53 PM',51.75
9501,'01/04/2022 6:49:38 PM',15.35
9502,'01/04/2022 10:58:34 PM',74.34
9503,'01/05/2022 5:40:49 AM',73.53
9504,'01/05/2022 11:29:38 AM',50.00
9505,'01/05/2022 7:04:57 PM',47.25
9506,'01/06/2022 8:49:09 AM',74.23
];
결과
데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.
결과 테이블
날짜
in_day
01/01/2022 7:34:46 PM
0
01/01/2022 10:10:22 PM
0
01/02/2022 8:35:54 AM
0
01/03/2022 2:21:53 PM
-1
01/04/2022 6:49:38 PM
0
01/04/2022 10:58:34 PM
0
01/05/2022 5:40:49 AM
0
01/05/2022 11:29:38 AM
0
01/05/2022 7:04:57 PM
0
01/06/2022 8:49:09 AM
0
이 경우 inday() 함수에서 오프셋 인수로 period_no 에 -2 를 사용했으므로 함수는 각 트랜잭션 날짜가 1월 3일에 발생했는지 여부를 확인합니다. 이는 한 트랜잭션이 TRUE의 부울 결과를 반환하는 출력 테이블에서 확인할 수 있습니다.
예 3 – day_start
로드 스크립트 및 결과
개요
로드 스크립트는 이전 예에서 사용한 것과 동일한 데이터 집합 및 시나리오를 사용합니다.
그러나 이 예에서 회사 정책은 근무일이 오전 7시에 시작되고 끝나는 것입니다.
로드 스크립트
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT';
Transactions:
Load
*,
inday(date,'01/05/2022 12:00:00 AM', 0, 7/24) as in_day
;
Load
*
Inline
[
id,date,amount
9497,'01/01/2022 7:34:46 PM',13.24
9498,'01/01/2022 10:10:22 PM',31.43
9499,'01/02/2022 8:35:54 AM',36.34
9500,'01/03/2022 2:21:53 PM',51.75
9501,'01/04/2022 6:49:38 PM',15.35
9502,'01/04/2022 10:58:34 PM',74.34
9503,'01/05/2022 5:40:49 AM',73.53
9504,'01/05/2022 11:29:38 AM',50.00
9505,'01/05/2022 7:04:57 PM',47.25
9506,'01/06/2022 8:49:09 AM',74.23
];
결과
데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.
결과 테이블
날짜
in_day
01/01/2022 7:34:46 PM
0
01/01/2022 10:10:22 PM
0
01/02/2022 8:35:54 AM
0
01/03/2022 2:21:53 PM
0
01/04/2022 6:49:38 PM
-1
01/04/2022 10:58:34 PM
-1
01/05/2022 5:40:49 AM
-1
01/05/2022 11:29:38 AM
0
01/05/2022 7:04:57 PM
0
01/06/2022 8:49:09 AM
0
start_day 인수가 7/24(오전 7시)로 inday() 함수에 사용되므로 이 함수는 각 트랜잭션 날짜가 1월 4일 오전 7시와 1월 5일 오전 7시 이전에 발생했는지 여부를 확인합니다.
이는 1월 4일 오전 7시 이후에 발생한 트랜잭션이 TRUE의 부울 결과를 반환하고 1월 5일 오전 7시 이후에 발생한 트랜잭션이 FALSE의 부울 결과를 반환하는 출력 테이블에서 확인할 수 있습니다.
예 4 – 차트 개체
로드 스크립트 및 차트 표현식
개요
로드 스크립트는 이전 예에서 사용한 것과 동일한 데이터 집합 및 시나리오를 사용합니다.
그러나 이 예에서 데이터 집합은 변경되지 않고 응용 프로그램에 로드됩니다. 차트 개체에서 측정값을 만들어 트랜잭션이 1월 5일에 발생하는지 확인하기 위해 계산합니다.
로드 스크립트
Transactions:
Load
*
Inline
[
id,date,amount
9497,'01/01/2022 7:34:46 PM',13.24
9498,'01/01/2022 10:10:22 PM',31.43
9499,'01/02/2022 8:35:54 AM',36.34
9500,'01/03/2022 2:21:53 PM',51.75
9501,'01/04/2022 6:49:38 PM',15.35
9502,'01/04/2022 10:58:34 PM',74.34
9503,'01/05/2022 5:40:49 AM',73.53
9504,'01/05/2022 11:29:38 AM',50.00
9505,'01/05/2022 7:04:57 PM',47.25
9506,'01/06/2022 8:49:09 AM',74.23
];
결과
데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 이 필드를 차원으로 추가합니다.
트랜잭션이 1월 5일에 발생했는지 여부를 계산하려면 다음 측정값을 만듭니다.
=inday(date,'01/05/2022 12:00:00 AM',0)
결과 테이블
날짜
inday(date,'01/05/2022 12:00:00 AM',0)
01/01/2022 7:34:46 PM
0
01/01/2022 10:10:22 PM
0
01/02/2022 8:35:54 AM
0
01/03/2022 2:21:53 PM
0
01/04/2022 6:49:38 PM
0
01/04/2022 10:58:34 PM
0
01/05/2022 5:40:49 AM
-1
01/05/2022 11:29:38 AM
-1
01/05/2022 7:04:57 PM
-1
01/06/2022 8:49:09 AM
0
예 5 – 시나리오
로드 스크립트 및 결과
개요
이 예에서는 1월 5일에 제조된 제품이 장비 오류로 인해 결함이 있는 것으로 확인되었습니다. 최종 사용자는 제조된 제품이 '결함' 또는 '무결함'인 상태와 1월 5일에 제조된 제품의 비용을 날짜별로 표시하는 차트 개체를 원합니다.
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
로드 스크립트
Products:
Load
*
Inline
[
product_id,manufacture_date,cost_price
9497,'01/01/2022 7:34:46 PM',13.24
9498,'01/01/2022 10:10:22 PM',31.43
9499,'01/02/2022 8:35:54 AM',36.34
9500,'01/03/2022 2:21:53 PM',51.75
9501,'01/04/2022 6:49:38 PM',15.35
9502,'01/04/2022 10:58:34 PM',74.34
9503,'01/05/2022 5:40:49 AM',73.53
9504,'01/05/2022 11:29:38 AM',50.00
9505,'01/05/2022 7:04:57 PM',47.25
9506,'01/06/2022 8:49:09 AM',74.23
];
결과
데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 이 필드를 차원으로 추가합니다.
=dayname(manufacture_date)
다음 측정값을 만듭니다.
=if(only(InDay(manufacture_date,makedate(2022,01,05),0)),'Defective','Faultless')
=sum(cost_price)
측정값의 숫자 형식 을 화폐 로 설정합니다.
모양 에서 합계 를 끕니다.
결과 테이블
dayname(manufacture_date)
=if(only(InDay(manufacture_date,makedate(2022,01,05),0)),'결함','무결함')
=sum(cost_price)
01/01/2022
무결함
44.67
01/02/2022
무결함
36.34
01/03/2022
무결함
51.75
01/04/2022
무결함
89.69
01/05/2022
결함
170.78
01/06/2022
무결함
74.23
inday() 함수는 각 제품의 제조 날짜를 평가할 때 부울 값을 반환합니다. 1월 5일에 제조된 모든 제품의 경우 inday() 함수는 부울 값 TRUE를 반환하고 제품을 '결함'으로 표시합니다. FALSE 값을 반환하여 당일 제조되지 않은 제품의 경우 제품을 '무결함'으로 표시합니다.