monthsname - 指令碼與圖表函數在此頁面
此函數會傳回一個顯示值,代表期間月份 (根據 MonthNames 指令碼變數進行格式設定) 和年度。基礎數值相當於包含基本日期的月、雙月、季度、四月期或半年的第一毫秒的時間戳記。
語法:
MonthsName( n_months, date[, period_no[, first_month_of_year]] )
傳回的資料類型: 雙值
monthsname 函數的圖表
monthsname() 函數根據提供的 n_months 引數將該年分為幾個區段。然後這評估每個提供的 date 所屬的區段,並傳回該區段的開始和結束月份名稱以及該年。該函數也能夠從之前或之後的區段傳回這些邊界,以及重新定義哪個是該年的第一個月。
一年中的下列區段可作為 n_month 引數用於函數:
可能的 n_month 引數
月
1
兩個月
2
季
3
四個月
4
半年
6
引數
n_months
定義期間的月數。整數或解析為整數的運算式,必須是下列其中一項:1 (相當於 inmonth() 函數)、2 (雙月)、3 (相當於 inquarter() 函數)、4 (四月期) 或 6 (半年)。
date
要評估的時間戳記。
period_no
期間可以使用 period_no 位移,是一個整數或解譯為整數的運算式,其中值 0 表示包含 base_date 的期間。負值的 period_no 表示之前的期間,正值表示之後的期間。
first_month_of_year
如果要使用不起始於 1 月的 (會計) 年度,可在 first_month_of_year 中指定介於 2 和 12 之間的值。
什麼情況下使用
若您想要向使用者提供透過所選期間比較彙總的功能,則 monthsname() 函數很實用。例如,您可以提供輸入變數 ,以讓使用者按月、季或半年查看產品的總銷售額。
這些維度的建立方式可以是新增函數作為主要行事曆表格中的欄位,以在載入指令碼中建立,或直接在圖表中建立維度作為計算維度。
函數範例
monthsname(4, '10/19/2013')
傳回「Sep-Dec 2013 」。因為在此範例和其他範例中, SET Monthnames 陳述式設為 Jan;Feb;Mar ,以此類推。
monthsname(4, '10/19/2013', -1)
傳回「May-Aug 2013 」。
monthsname(4, '10/19/2013', 0, 2)
傳回「Oct-Jan 2014 」,因為該年指定以月份 2 開始。因此,四個月期間結束於下一年的第一個月。
區域設定
除非另有說明,否則此主題中的範例皆使用下列日期格式:MM/DD/YYYY。日期格式是在資料載入指令碼的 SET DateFormat 陳述式中指定。由於地區設定和其他因素,您系統中的預設日期格式可能會不同。您可以變更以下範例中的格式,以滿足您的需求。或者,您可以在載入指令碼中變更格式,以符合這些範例。如需詳細資訊,請參閱 修改用於應用程式和指令碼的區域設定 。
應用程式中的預設地區設定是根據使用者設定檔。這些地區格式設定與 Qlik Cloud 使用者介面中顯示的語言無關。Qlik Cloud 顯示的語言將與您正在使用的瀏覽器相同。
若您是應用程式建立者,可以為您建立的應用程式設定預設地區。如需詳細資訊,請參閱Qlik Cloud 分析 中設定用於建立應用程式和指令碼的偏好區域設定 。
範例 1 – 基本範例
載入指令碼和結果
概覽
開啟資料載入編輯器並將下面的載入指令碼新增至新的索引標籤。
載入指令碼包含:
包含一組 2022 年交易的資料集 ,這載入到稱為 Transactions 的表格中。
以 DateFormat 系統變數 (MM/DD/YYYY) 格式提供的日期欄位 。
建立欄位 bi_monthly_range ,這將交易組成兩個月區段,並為每個交易傳回該區段的邊界名稱。
載入指令碼
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
monthsname(2,date) as bi_monthly_range
;
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
];
結果
載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度:
結果表格
2/19/2022
2022 年 1 月至 2 月
3/7/2022
2022 年 3 月至 4 月
3/30/2022
2022 年 3 月至 4 月
4/5/2022
2022 年 3 月至 4 月
4/16/2022
2022 年 3 月至 4 月
5/1/2022
2022 年 5 月至 6 月
5/7/2022
2022 年 5 月至 6 月
5/22/2022
2022 年 5 月至 6 月
6/15/2022
2022 年 5 月至 6 月
6/26/2022
2022 年 5 月至 6 月
7/9/2022
2022 年 7 月至 8 月
7/22/2022
2022 年 7 月至 8 月
7/23/2022
2022 年 7 月至 8 月
7/27/2022
2022 年 7 月至 8 月
8/2/2022
2022 年 7 月至 8 月
8/8/2022
2022 年 7 月至 8 月
8/19/2022
2022 年 7 月至 8 月
9/26/2022
2022 年 9 月至 10 月
10/14/2022
2022 年 9 月至 10 月
10/29/2022
2022 年 9 月至 10 月
「bi_monthly_range 」欄位使用 monthsname() 函數在前置 LOAD 陳述式中建立。提供的第一個引數為 2,將該年分為兩個月區段。第二個引數識別正在評估哪個欄位。
monthsname 函數的圖表,基本範例
交易 8195 發生在 5 月 22 日。monthsname() 函數原本將該年分為兩個月區段。交易 8195 落在 5 月 1 日和 6 月 30 日之間的區段內。因此,該函數會以 MonthNames 系統變數格式傳回這些月份以及年份,即 2022 年 5 月至 6 月。
範例 2 – period_no
載入指令碼和結果
概覽
開啟資料載入編輯器並將下面的載入指令碼新增至新的索引標籤。
載入指令碼包含:
按需要在此新增其他文字,可附上清單等。
載入指令碼
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
MonthsName(2,date,-1) as prev_bi_monthly_range
;
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_range
結果表格
2/19/2022
2021 年 11 月至 12 月
3/7/2022
2022 年 1 月至 2 月
3/30/2022
2022 年 1 月至 2 月
4/5/2022
2022 年 1 月至 2 月
4/16/2022
2022 年 1 月至 2 月
5/1/2022
2022 年 3 月至 4 月
5/7/2022
2022 年 3 月至 4 月
5/22/2022
2022 年 3 月至 4 月
6/15/2022
2022 年 3 月至 4 月
6/26/2022
2022 年 3 月至 4 月
7/9/2022
2022 年 5 月至 6 月
7/22/2022
2022 年 5 月至 6 月
7/23/2022
2022 年 5 月至 6 月
7/27/2022
2022 年 5 月至 6 月
8/2/2022
2022 年 5 月至 6 月
8/8/2022
2022 年 5 月至 6 月
8/19/2022
2022 年 5 月至 6 月
9/26/2022
2022 年 7 月至 8 月
10/14/2022
2022 年 7 月至 8 月
10/29/2022
2022 年 7 月至 8 月
在此範例中,-1 作為 monthsname() 函數中的 period_no 引數使用。原本將年分為兩個月區段後,該函數就會針對交易發生時間傳回上一個區段邊界。
monthsname 函數的圖表,period_no 範例
交易 8195 發生在 5 月 和 6 月 之間的區段內。因此,上一個兩個月區段為 3 月 1 日和 4 月 30 日之間,因此該函數會傳回 2022 年 3 月至 4 月。
範例 3 – first_month_of_year
載入指令碼和結果
概覽
開啟資料載入編輯器並將下面的載入指令碼新增至新的索引標籤。
載入指令碼包含:
不過,在此範例中,我們也需要將 4 月設定為會計年度的第一個月。
載入指令碼
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
MonthsName(2,date,0,4) as bi_monthly_range
;
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
];
結果
載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度:
結果表格
2/19/2022
2021 年 2 月至 3 月
3/7/2022
2021 年 2 月至 3 月
3/30/2022
2021 年 2 月至 3 月
4/5/2022
2022 年 4 月至 5 月
4/16/2022
2022 年 4 月至 5 月
5/1/2022
2022 年 4 月至 5 月
5/7/2022
2022 年 4 月至 5 月
5/22/2022
2022 年 4 月至 5 月
6/15/2022
2022 年 6 月至 7 月
6/26/2022
2022 年 6 月至 7 月
7/9/2022
2022 年 6 月至 7 月
7/22/2022
2022 年 6 月至 7 月
7/23/2022
2022 年 6 月至 7 月
7/27/2022
2022 年 6 月至 7 月
8/2/2022
2022 年 8 月至 9 月
8/8/2022
2022 年 8 月至 9 月
8/19/2022
2022 年 8 月至 9 月
9/26/2022
2022 年 8 月至 9 月
10/14/2022
2022 年 10 月至 11 月
10/29/2022
2022 年 10 月至 11 月
若使用 4 作為 monthsname() 函數中的 first_month_of_year 引數,該函數會讓該年從 4 月 1 日開始,然後將該年分為兩個月區段:4 月至 5 月、6 月至 7 月、8 月至 9 月、10 月至 11 月、12 月至 1 月、2 月至 3 月。
結果的段落文字。
交易 8195 發生在 5 月 22 日並落在 4 月 1 日和 5 月 31 日之間的區段內。因此,該函數會傳回 2022 年 4 月至 5 月。
monthsname 函數的圖表,first_month_of_year 範例
範例 4 – 圖表物件範例
載入指令碼和圖表運算式
概覽
開啟資料載入編輯器 並將下面的載入指令碼 新增至新的索引標籤。
載入指令碼包含與第一個範例相同的內嵌資料集和情境。不過,在此範例中,不變的資料集會載入到應用程式中。會建立將交易組成兩個月區段並為每個交易傳回區段邊界的計算,作為應用程式圖表物件中的量值 。
載入指令碼
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 。
建立下列量值:
=monthsname(2,date)
結果表格
2/19/2022
2022 年 1 月至 2 月
3/7/2022
2022 年 3 月至 4 月
3/30/2022
2022 年 3 月至 4 月
4/5/2022
2022 年 3 月至 4 月
4/16/2022
2022 年 3 月至 4 月
5/1/2022
2022 年 5 月至 6 月
5/7/2022
2022 年 5 月至 6 月
5/22/2022
2022 年 5 月至 6 月
6/15/2022
2022 年 5 月至 6 月
6/26/2022
2022 年 5 月至 6 月
7/9/2022
2022 年 7 月至 8 月
7/22/2022
2022 年 7 月至 8 月
7/23/2022
2022 年 7 月至 8 月
7/27/2022
2022 年 7 月至 8 月
8/2/2022
2022 年 7 月至 8 月
8/8/2022
2022 年 7 月至 8 月
8/19/2022
2022 年 7 月至 8 月
9/26/2022
2022 年 9 月至 10 月
10/14/2022
2022 年 9 月至 10 月
10/29/2022
2022 年 9 月至 10 月
會使用 monthsname() 函數在圖表物件中建立 bi_monthly_range 欄位作為量值。提供的第一個引數為 2,將該年分為兩個月區段。第二個引數識別正在評估哪個欄位。
monthsname 函數的圖表,圖表物件範例
交易 8195 發生在 5 月 22 日。monthsname() 函數原本將該年分為兩個月區段。交易 8195 落在 5 月 1 日和 6 月 30 日之間的區段內。因此,該函數會以 MonthNames 系統變數格式傳回這些月份以及年份,即 2022 年 5 月至 6 月。
範例 5 – 情境
載入指令碼和圖表運算式
概覽
開啟資料載入編輯器並將下面的載入指令碼新增至新的索引標籤。
載入指令碼包含:
最終使用者希望圖表物件按自己選擇的期間顯示總銷售額。即使此維度 無法用於資料模型,這仍可以達成,方法是使用 monthsname() 函數作為透過變數輸入控制所動態修改的計算維度。
載入指令碼
SET vPeriod = 1;
SET DateFormat='MM/DD/YYYY';
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
];
結果
載入資料並開啟工作表 。
在載入指令碼開頭,已建立將會與變數輸入控制繫結的變數 (vPeriod )。接下來,設定變數作為工作表中的自訂物件 。
請執行下列動作:
在資產面板中,按一下自訂物件 。
選取 Qlik 儀表板搭售 ,並建立變數輸入 物件。
輸入圖表物件的標題。
在變數 之下,選取 vPeriod 作為名稱並設定物件以顯示為下拉式清單 。
在值 之下,設定物件以使用動態值。輸入下列內容:
='1~month|2~bi-month|3~quarter|4~tertial|6~half-year'
接下來,建立結果表格。
請執行下列動作:
建立新的表格並新增下列計算維度:
=monthsname($(vPeriod),date)
新增此量值以計算總銷售額:
=sum(amount)
將量值的數字格式 設定為金錢 。按一下完成編輯 。您現在可以調整變數物件中的時間區段,以修改顯示在表格中的資料。
這是結果表格在選取 tertial 選項時看起來的樣子:
結果表格
2022 年 1 月至 4 月
253.89
2022 年 5 月至 8 月
713.58
2022 年 9 月至 12 月
248.12