inday - 指令碼與圖表函數
此函數會傳回 True,前提是如果 timestamp 位於包含 base_timestamp 的日中。
語法:
InDay (timestamp, base_timestamp, period_no[, day_start])
傳回的資料類型: 布林
在 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 時。 |
函數範例
主題 |
互動 |
inday ('12/01/2006 12:23:00', '12/01/2006 00:00:00', 0) |
傳回 True |
inday ('12/01/2006 12:23:00', '13/01/2006 00:00', 0) |
傳回 False |
inday ('12/01/2006 12:23:00', '12/01/2006 00:00:00', -1) |
傳回 False |
inday ('11/01/2006 12:23:00', '12/01/2006 00:00:00', -1) |
傳回 True |
inday ('12/01/2006 12:23:00', '12/01/2006 00:00:00', 0, 0.5) |
傳回 False |
inday ('12/01/2006 11:23:00', '12/01/2006 00:00:00', 0, 0.5) |
傳回 True |
範例 1 – LOAD 陳述式 (指令碼)
概覽
開啟資料載入編輯器並將下面的載入指令碼新增至新的索引標籤。
載入指令碼包含:
在資料載入編輯器中,建立欄位 in_day,這決定交易是否發生在 2022 年 1 月 5 日。
載入指令碼
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
Inline
[
id,date,amount
9497,'01/05/2022 7:04:57 PM',47.25
9498,'01/03/2022 2:21:53 PM',51.75
9499,'01/05/2022 5:40:49 AM',73.53
9500,'01/04/2022 6:49:38 PM',15.35
9501,'01/01/2022 10:10:22 PM',31.43
9502,'01/01/2022 7:34:46 PM',13.24
9503,'01/04/2022 10:58:34 PM',74.34
9504,'01/05/2022 11:29:38 AM',50.00
9505,'01/02/2022 8:35:54 AM',36.34
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 欄位在前置 LOAD 陳述式中的建立方式是使用 inday() 函數並傳遞日期欄位,即 1 月 5 日的硬式編碼時間戳記和值為 0 的 period_no 作為函數的引數。
範例 2 – period_no
概覽
載入指令碼使用與第一個範例中相同的資料集和情境。
不過,在此範例中,任務要計算交易日期是否發生在 1 月 5 日之前的兩天。
載入指令碼
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
Inline
[
id,date,amount
9497,'01/05/2022 7:04:57 PM',47.25
9498,'01/03/2022 2:21:53 PM',51.75
9499,'01/05/2022 5:40:49 AM',73.53
9500,'01/04/2022 6:49:38 PM',15.35
9501,'01/01/2022 10:10:22 PM',31.43
9502,'01/01/2022 7:34:46 PM',13.24
9503,'01/04/2022 10:58:34 PM',74.34
9504,'01/05/2022 11:29:38 AM',50.00
9505,'01/02/2022 8:35:54 AM',36.34
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 |
在此實例中,因為值為 -2 的 period_no 作為 inday() 函數中的偏移引數使用,所以函數會決定每個交易日期是否發生在 1 月 3 日。這可以在輸出表格中驗證,其中有一筆交易傳回布林值結果 TRUE - 01/03/2022 2:21:53 PM.。
範例 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
Inline
[
id,date,amount
9497,'01/05/2022 7:04:57 PM',47.25
9498,'01/03/2022 2:21:53 PM',51.75
9499,'01/05/2022 5:40:49 AM',73.53
9500,'01/04/2022 6:49:38 PM',15.35
9501,'01/01/2022 10:10:22 PM',31.43
9502,'01/01/2022 7:34:46 PM',13.24
9503,'01/04/2022 10:58:34 PM',74.34
9504,'01/05/2022 11:29:38 AM',50.00
9505,'01/02/2022 8:35:54 AM',36.34
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 |
在此實例中,因為 inday() 函數中使用的 start_day 引數為 7/24,亦即上午 7 時,所以該函數會決定每個交易日期是否發生在 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/05/2022 7:04:57 PM',47.25
9498,'01/03/2022 2:21:53 PM',51.75
9499,'01/05/2022 5:40:49 AM',73.53
9500,'01/04/2022 6:49:38 PM',15.35
9501,'01/01/2022 10:10:22 PM',31.43
9502,'01/01/2022 7:34:46 PM',13.24
9503,'01/04/2022 10:58:34 PM',74.34
9504,'01/05/2022 11:29:38 AM',50.00
9505,'01/02/2022 8:35:54 AM',36.34
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 |