# The importance of Only()

若群組中只有一個可能值，則 Only() 會傳回值。此值將會是彙總結果。若沒有指定彙總函數，則 Qlik Sense 預設為 Only()。

若 圖表維度 和參數之間有一對一關係，則 Only() 函數只會傳回可能值。若有數個值，則會傳回 NULL。例如，如果多個產品有單價 12，則僅搜尋單價 = 12 的產品將傳回 NULL。

下列影像顯示一對一和一對多關係之間的差異：

表格顯示 Manager Number 和 Manager 之間的一對一關係。

![兩欄表格](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/tutorial-only-table1.png)

表格顯示 Sales Rep Name 和 Manager 的一對多關係

![兩欄表格](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/tutorial-only-table2_382x482.png)

Only() 函數是彙總函數。這使用許多記錄作為輸入並且僅傳回一個值，類似於 Sum() 或 Count()。Qlik Sense 幾乎會在其所有計算中使用彙總。圖表、排序運算式、文字方塊、進階搜尋和計算標籤中的運算式都是彙總，若沒有涉及彙總函數，就無法計算。

但是，若使用者輸入缺乏明確彙總函數的運算式，會怎麼樣？例如，若排序運算式設定為 Date？或者，若有個進階搜尋可用於購買啤酒和紅酒產品的客戶，其中使用運算式 =[Product Type]='Beer and Wine'？

這就是 Only() 函數影響計算的地方。若運算式中沒有明確的彙總函數，Qlik Sense 會隱含使用 Only() 函數。在上述案例中，Only(Date) 用於排序運算式，而 Only([Product Type])='Beer and Wine' 用來作為搜尋條件。

有時候，新的運算式會傳回使用者沒有預期的結果。若只有一個 Date 或 Product Type 的可能值，則以上兩個範例都可以運作，但若有多個值，則兩者都無法在各自的情況下運作。

## 使用 Only() 的不同運算式

我們將使用類似的運算式建立四個 KPI。藉此方式，我們可以比較在運算式中的不同位置具有裸欄位參考或是具有 Only() 會如何對您的選項結果產生重大影響。

在 應用程式 內部，您將在 Importance of Only()工作表 找到含有 Invoice Date 作為維度的篩選窗格。

請執行下列動作：

1. 建立 KPI。
2. 按一下新增量值。按一下 the 運算式 icon 符號。  
   運算式編輯器就會開啟。
3. 輸入下列內容：Month([Invoice Date])
4. 使用量值建立其他三個 KPIs：Month(Only([Invoice Date]))、Month(Max([Invoice Date])) 和 Only(Month([Invoice Date]))。
5. 按一下套用。

四個 KPIs 和篩選窗格顯示三個不同但類似的運算式。

![KPI 結果](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/tutorial-only-table3.png)

提示備註在每個 KPI 中，數字格式已設定為量值運算式。

若您有裸欄位參考，會在最低層級插入 Only() 函數。這表示，前兩個 KPI、Month([Invoice Date]) 和 Month(Only([Invoice Date])) 將會解譯為相同內容，並且永遠提供相同結果。

如您所見，四個 KPI 當中的三個傳回 NULL。第三個 KPI (即 Month(Max([Invoice Date]))) 已傳回值，即使沒有選取任何選項。

撰寫運算式時，務必問問自己想要使用哪個彙總，或者若有數個值，則要問問自己想要使用哪個值。若您想要使用 NULL 呈現數個值，可以讓運算式保留原來的樣子。對於數字，您可能會想要改用 Sum()、Avg()、Min() 或 Max()。對於字串，您可能會想要使用 Only() 或 MinString()。

請執行下列動作：

1. 停止編輯工作表。
2. 在篩選窗格中，選取一月的日期。
3. 按一下 the 核取記號 icon 以確認選項。

若選取單一選項，KPI 結果會變更。

![KPI 結果](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/tutorial-only-table4.png)

若選取單一選項，所有 KPI 都會傳回正確答案。即使運算式包含裸欄位參考，例如 Month([Invoice Date]) 中的運算式，我們選取唯一選項的事實仍允許傳回正確的值。

請執行下列動作：

1. 在篩選窗格中，選取一月的其他日期。
2. 按一下 the 核取記號 icon 以確認選項。

若對一月的兩個日期都選取兩個選項，KPI 結果會變更。

![KPI 結果](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/tutorial-only-table5.png)

前兩個 KPI 會傳回 NULL，而其他兩個 KPI 會傳回一月的適當值。特別的是，第四個 KPI 會傳回正確答案，因為我們選取的日期選項用於一月的日期。

請執行下列動作：

1. 在篩選窗格中，選取一月以外月份的其他日期。
2. 按一下 the 核取記號 icon 以確認選項。

對不同月份的日期選取多個選項時，KPI 結果會變更。

![KPI 結果](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/tutorial-only-table6.png)

使用不同月份的日期選取多個選項時，只有第三個 KPI 會傳回值。這會根據運算式 Month(Max([Invoice Date]))，傳回所選選項中最大月份的值。由於 Only() 會自動插入含有裸欄位參考的運算式中，您無法永遠假定最低層級一定適用於運算式。Only() 的位置十分重要。

如需更多資訊，請參閱 [Only - 圖表函數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/BasicAggregationFunctions/only.htm)