# lunarweekname 指令碼與圖表函數

此函數會傳回一個顯示值，顯示相當於包含 date 之農曆週第一天的第一毫秒的時間戳記的年和農曆週數。將 1 月 1 日視為該週的第一天，以定義 Qlik Sense 中的農曆週，而除了該年的最後一週，會確切包含七天。

語法：

LunarWeekName(date [, period\_no[, first\_week\_day]])

傳回的資料類型： 雙值

`lunarweekname()` 函數的範例圖表

`lunarweekname()` 函數的範例圖表

`lunarweekname()`lunarweekname() 函數的範例圖表 ![範例圖表顯示 lunarweekname 函數如何將輸入日期轉換為顯示年和農曆週數組合的值。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-lunarweekname-general.png)

`lunarweekname()` 函數判定日期落在哪個農曆週，週計數開始於 1 月 1 日。然後這會傳回由 `year/weekcount` 組成的值。

引數

| 引數 | 描述 |
| --- | --- |
| date | 要評估的時間戳記。 |
| period\_no | period\_no 是一個整數，或者解析為整數的運算式，其中值 0 表示包含 date 的農曆週。負值的 period\_no 表示之前的農曆週，正值表示之後的農曆週。 |
| first\_week\_day | 可能大於或小於零的位移。這會使用指定的天數及/或一天的片段變更一年的開始。 |

## 何時使用 lunarweekname

若您想要按農曆週比較彙總，則 `lunarweekname()` 函數很實用。例如，該函數可用來按農曆週決定產品的總銷售額。若您想要確保該年第一週包含的所有值僅包含最早從 1 月 1 日的值，則農曆週很實用。

可以使用該函數建立主要行事曆表格中的欄位，以在載入指令碼中建立這些維度。也可以直接在圖表中使用該函數作為計算維度。

函數範例

| 範例 | 結果 |
| --- | --- |
| `lunarweekname('01/12/2013')` | 傳回 2006/02。 |
| `lunarweekname('01/12/2013', -1)` | 傳回 2006/01。 |
| `lunarweekname('01/12/2013', 0, 1)` | 傳回 2006/02。 |

## 區域設定

除非另有說明，否則此主題中的範例皆使用下列日期格式：MM/DD/YYYY。日期格式是在資料載入指令碼的 `SET DateFormat` 陳述式中指定。由於地區設定和其他因素，您系統中的預設日期格式可能會不同。您可以變更以下範例中的格式，以滿足您的需求。或者，您可以在載入指令碼中變更格式，以符合這些範例。如需詳細資訊，請參閱 [修改用於應用程式和指令碼的區域設定](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/regional-settings-in-apps.htm)。

應用程式中的預設地區設定是根據使用者設定檔。這些地區格式設定與 Qlik Cloud 使用者介面中顯示的語言無關。Qlik Cloud 顯示的語言將與您正在使用的瀏覽器相同。

若您是應用程式建立者，可以為您建立的應用程式設定預設地區。如需詳細資訊，請參閱[Qlik Cloud 分析 中設定用於建立應用程式和指令碼的偏好區域設定](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/UserInterface/Languages.htm#Setting)。

## 範例 1 – 無其他引數的日期

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/lunarweekname.htm)

#### 載入指令碼和結果

概述

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 包含一組 2022 年交易的資料集，這載入到稱為 `Transactions` 的表格中。

* 以 `DateFormat` 系統變數 (MM/DD/YYYY) 格式提供的日期欄位。

* 建立欄位 `  lunar_week_name `，傳回交易發生之農曆週的年份和週數。

載入指令碼

```
SET DateFormat='MM/DD/YYYY';

Transactions:
    Load
        *,
        lunarweekname(date) as lunar_week_name
        ;
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`

* `lunar_week_name`

結果表格

| 日期 | 農曆週名稱 |
| --- | --- |
| 1/7/2022 | 2022/01 |
| 1/19/2022 | 2022/03 |
| 2/5/2022 | 2022/06 |
| 2/28/2022 | 2022/09 |
| 3/16/2022 | 2022/11 |
| 4/1/2022 | 2022/13 |
| 5/7/2022 | 2022/19 |
| 5/16/2022 | 2022/20 |
| 6/15/2022 | 2022/24 |
| 6/26/2022 | 2022/26 |
| 7/9/2022 | 2022/28 |
| 7/22/2022 | 2022/29 |
| 7/23/2022 | 2022/30 |
| 7/27/2022 | 2022/30 |
| 8/2/2022 | 2022/31 |
| 8/8/2022 | 2022/32 |
| 8/19/2022 | 2022/33 |
| 9/26/2022 | 2022/39 |
| 10/14/2022 | 2022/41 |
| 10/29/2022 | 2022/44 |

`lunar_week_name` 欄位在前置 LOAD 陳述式中的建立方式是使用 `lunarweekname()` 函數，並傳遞 `date` 欄位，作為函數的引數。

`lunarweekname()` 函數識別日期值落在哪一個農曆週，傳回該日期的年份和週數。

`lunarweekname()` 函數的圖表，無其他引數的範例

`lunarweekname()` 函數的圖表，無其他引數的範例

`lunarweekname()`lunarweekname() 函數的圖表，無其他引數的範例 ![圖表顯示 lunarweekname 函數如何將輸入日期轉換為顯示年和農曆週數組合的值。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-lunarweekname-examples-no-add-arg.png)

交易 8189 發生在 1 月 19 日。`lunarweekname()` 函數識別此日期落在開始於 1 月 15 日的農曆週，這是該年的第三個農曆週。因此，為該交易傳回的 `lunar_week_name` 值是 2022/03。

## 範 2 – 有 period\_no 引數的日期

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/lunarweekname.htm)

#### 載入指令碼和結果

概述

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 與第一個範例相同的資料集和情境。

* 建立欄位 `previous_lunar_week_name`，傳回交易發生前農曆週的年份和週數。

載入指令碼

```
SET DateFormat='MM/DD/YYYY';

Transactions:
    Load
        *,
        lunarweekname(date,-1) as previous_lunar_week_name
        ;
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_lunar_week_name`

結果表格

| 日期 | 上一個農曆週名稱 |
| --- | --- |
| 1/7/2022 | 2021/52 |
| 1/19/2022 | 2022/02 |
| 2/5/2022 | 2022/05 |
| 2/28/2022 | 2022/08 |
| 3/16/2022 | 2022/10 |
| 4/1/2022 | 2022/12 |
| 5/7/2022 | 2022/18 |
| 5/16/2022 | 2022/19 |
| 6/15/2022 | 2022/23 |
| 6/26/2022 | 2022/25 |
| 7/9/2022 | 2022/27 |
| 7/22/2022 | 2022/28 |
| 7/23/2022 | 2022/29 |
| 7/27/2022 | 2022/29 |
| 8/2/2022 | 2022/30 |
| 8/8/2022 | 2022/31 |
| 8/19/2022 | 2022/32 |
| 9/26/2022 | 2022/38 |
| 10/14/2022 | 2022/40 |
| 10/29/2022 | 2022/43 |

在此例中，因為 `period_no` 的值 -1 已作為 `lunarweekname()` 函數中的偏移引數使用，所以該函數首先會識別交易發生的農曆週。然後這會傳回年份和前一週的週數。

`lunarweekname()` 函數的圖表，period\_no 範例

`lunarweekname()` 函數的圖表，period\_no 範例

`lunarweekname()`lunarweekname() 函數的圖表，period\_no 範例 ![圖表顯示 lunarweekname 函數如何將交易的輸入日期轉換為顯示交易發生之農曆週的年份和農曆週數的組合值。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-lunarweekname-examples-period-no.png)

交易 8189 發生在 1 月 19 日。`lunarweekname()` 函數識別此交易發生在該年的第三個農曆週，因此為 `previous_lunar_week_name` 欄位傳回前一週的年份和值 2022/02。

## 範例 3 – 有 first\_week\_day 引數的日期

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/lunarweekname.htm)

#### 載入指令碼和結果

概述

開啟資料載入編輯器並將下面的載入指令碼新增至新的索引標籤。

載入指令碼包含與第一個範例相同的資料集和情境。在此範例中，我們將農曆週設定為在 1 月 5 月開始。

載入指令碼

```
SET DateFormat='MM/DD/YYYY';

Transactions:
    Load
        *,
        lunarweekname(date,0,4) as lunar_week_name
        ;
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`

* `lunar_week_name`

結果表格

| 日期 | 農曆週名稱 |
| --- | --- |
| 1/7/2022 | 2022/01 |
| 1/19/2022 | 2022/03 |
| 2/5/2022 | 2022/05 |
| 2/28/2022 | 2022/08 |
| 3/16/2022 | 2022/11 |
| 4/1/2022 | 2022/13 |
| 5/7/2022 | 2022/18 |
| 5/16/2022 | 2022/19 |
| 6/15/2022 | 2022/24 |
| 6/26/2022 | 2022/25 |
| 7/9/2022 | 2022/27 |
| 7/22/2022 | 2022/29 |
| 7/23/2022 | 2022/29 |
| 7/27/2022 | 2022/30 |
| 8/2/2022 | 2022/30 |
| 8/8/2022 | 2022/31 |
| 8/19/2022 | 2022/33 |
| 9/26/2022 | 2022/38 |
| 10/14/2022 | 2022/41 |
| 10/29/2022 | 2022/43 |

`lunarweekname()` 函數的圖表，first\_week\_day 範例

`lunarweekname()` 函數的圖表，first\_week\_day 範例

`lunarweekname()`lunarweekname() 函數的圖表，first\_week\_day 範例 ![圖表顯示 lunarweekname 函數如何將每個交易的輸入日期轉換為顯示年和農曆週數的組合值。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-lunarweekname-examples-first-week-day.png)

在此例中，因為 `first_week_date` 引數 4 用於 `lunarweekname()` 函數，這會將該農曆週的開始從 1 月 1 日偏移至 1 月 5 日。

交易 8188 發生在 1 月 7 日。由於農曆週開始於 1 月 5 日，`lunarweekname()` 函數識別包含 1 月 7 日的農曆週是該年的第一個農曆週。因此，為該交易傳回的 `lunar_week_name` 值是 2022/01。

## 範例 4 – 圖表物件範例

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/lunarweekname.htm)

#### 載入指令碼和圖表運算式

概述

開啟資料載入編輯器並將下面的載入指令碼新增至新的索引標籤。

載入指令碼包含與第一個範例相同的資料集和情境。

不過，在此範例中，不變的資料集會載入到應用程式中。會建立傳回交易發生之農曆週數和年份的計算，作為應用程式圖表物件中的量值。

載入指令碼

```
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。

若要計算交易發生的該農曆週開始日期，建立下列量值：

=lunarweekname(date)

結果表格

| 日期 | =lunarweekname(date) |
| --- | --- |
| 1/7/2022 | 2022/01 |
| 1/19/2022 | 2022/03 |
| 2/5/2022 | 2022/06 |
| 2/28/2022 | 2022/09 |
| 3/16/2022 | 2022/11 |
| 4/1/2022 | 2022/13 |
| 5/7/2022 | 2022/19 |
| 5/16/2022 | 2022/20 |
| 6/15/2022 | 2022/24 |
| 6/26/2022 | 2022/26 |
| 7/9/2022 | 2022/28 |
| 7/22/2022 | 2022/29 |
| 7/23/2022 | 2022/30 |
| 7/27/2022 | 2022/30 |
| 8/2/2022 | 2022/31 |
| 8/8/2022 | 2022/32 |
| 8/19/2022 | 2022/33 |
| 9/26/2022 | 2022/39 |
| 10/14/2022 | 2022/41 |
| 10/29/2022 | 2022/44 |

lunar\_week\_name 量值在圖表物件中的建立方式是使用 lunarweekname() 函數並傳遞 date 欄位，作為函數的引數。

lunarweekname() 函數識別日期值落在哪一個農曆週，傳回該日期的年份和週數。

lunarweekname() 函數的圖表，圖表物件範例

lunarweekname() 函數的圖表，圖表物件範例

lunarweekname()lunarweekname() 函數的圖表，圖表物件範例 ![圖表顯示 lunarweekname 函數如何將輸入日期轉換為顯示年和農曆週數組合的值。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-lunarweekname-examples-chart-object.png)

交易 8189 發生在 1 月 19 日。lunarweekname() 函數識別此日期落在開始於 1 月 15 日的農曆週，這是該年的第三個農曆週。因此，該交易的 lunar\_week\_name 值是 2022/03。

## 範例 5 – 情境

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/lunarweekname.htm)

#### 載入指令碼和圖表運算式

概述

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 包含一組 2022 年交易的資料集，這載入到稱為 Transactions 的表格中。

* 以 DateFormat 系統變數 (MM/DD/YYYY) 格式提供的日期欄位。

最終使用者希望圖表物件按目前年份的週呈現總銷售額。長度七天的第 1 週應於 1 月 1 日開始。當資料模型中無法使用此維度時，在圖表中將 lunarweekname() 函數作為計算維度可達成這一點。

載入指令碼

```
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
];
```

結果

請執行下列動作：

1. 載入資料並開啟工作表。建立新的表格。

2. 使用下列運算式建立計算維度：

   =lunarweekname(date)

3. 使用下列彙總量值計算總銷售額：

   =sum(amount)

4. 將量值的數字格式設定為金錢。

結果表格

| =lunarweekname(date) | =sum(amount) |
| --- | --- |
| 2022/01 | $17.17 |
| 2022/03 | $37.23 |
| 2022/06 | $57.42 |
| 2022/09 | $88.27 |
| 2022/11 | $53.80 |
| 2022/13 | $82.06 |
| 2022/19 | $40.39 |
| 2022/20 | $87.21 |
| 2022/24 | $95.93 |
| 2022/26 | $45.89 |
| 2022/28 | $36.23 |
| 2022/29 | $25.66 |
| 2022/30 | $152.75 |
| 2022/31 | $76.11 |
| 2022/32 | $25.12 |
| 2022/33 | $46.23 |
| 2022/39 | $84.21 |
| 2022/41 | $96.24 |
| 2022/44 | $67.67 |