# coalesce - 指令碼與圖表函數

coalesce 函數會傳回參數中第一個具有效 non-NULL 表示法的參數。可使用任意數目的參數。

語法：

coalesce(expr1[ , expr2 , expr3 , ...])

傳回的資料類型： 雙值

引數

| 引數 | 描述 |
| --- | --- |
| expr1 | 要檢查非 NULL 表示的有效性的第一個運算式。 |
| expr2 | 要檢查非 NULL 表示的有效性的第二個運算式。 |
| expr3 | 要檢查非 NULL 表示的有效性的第三個運算式。 |

範例：圖表運算式

| 範例 | 結果 |
| --- | --- |
| `Coalesce(ProductDescription, ProductName, ProductCode, 'no description available')` | 若某些欄位沒有適用於產品的值，此運算式將會在三個不同的產品描述欄位之間選取。依照函數中列出的順序，傳回第一個具有非 Null 值的欄位。若沒有任何欄位包含值，結果將會是 `no description available`。 |
| `Coalesce(TextBetween(FileName, '"', '"'), FileName)` | 此運算式將會從欄位 `FileName` 修剪可能加括號的引用。若給定的 `FileName` 被引用，會移除這些內容，並傳回加上括號、未引用的 `FileName`。若 `TextBetween` 函數沒有找到 Coalesce 拒絕、傳回 NULL 的分隔符號，會改為傳回原始 `FileName`。 |

## 範例 - Coalesce 基礎事項

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/coalesce.htm)

#### 圖表運算式

概述

載入了包含產品和價格資料的資料表格。您想要確保以替代值取代任何 Null 值。

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

載入指令碼包含：

* 載入到稱為 `Example` 之資料表格的資料集。

* 資料表格中的欄位如下：

  * `ProductID`

  * `ProductName`

  * `Price`

* `NullInterpret` 變數陳述式可確保將任何缺漏的值視為 NULL。

載入指令碼

```
Set NullInterpret = '';
Example:
LOAD * INLINE [
ProductID, ProductName, Price
1, Laptop, 1000
2, , 800
3, Desktop, 1200
4, , 500
5, Tablet, 600
];
```

結果

1. 載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度：

   * `ProductID`

   * `ProductName`

2. 建立下列計算維度：

   * `=Coalesce(ProductName, 'Unknown Product')`

3. 建立下列量值：

   * `=Sum(Price)`，用來傳回有效的數字呈現。

4. 建立新的表格並新增下列運算式作為計算維度：

   * `=Coalesce(ProductName, 'Unknown Product')`

5. 建立下列量值：

   * `=Sum(Price)`，用來傳回有效的數字呈現。

下表中的結果顯示了 `Coalesce` 函數如何使用替代值 `Unknown Product` 取代原始資料集中的 Null 值。

結果表格 1

| ProductID | ProductName | Coalesce(ProductName, 'Unknown Product') | Sum(Price) |  |
| --- | --- | --- | --- | --- |
| Totals |  |  | 4100 |  |
| 1 | Laptop | Laptop | 1000 |  |
| 2 | - | Unknown Product | 800 |  |
| 3 | Desktop | Desktop | 1200 |  |
| 4 | - | Unknown Product | 500 |  |
| 5 | Tablet | Tablet | 600 |  |

結果表格 2

| Coalesce(ProductName, 'Unknown Product') | Sum(Price) |
| --- | --- |
| Totals | 5 |
| Desktop | 600 |
| Laptop | 1000 |
| Tablet | 600 |
| Unknown Product | 1300 |

## 範例 - 使用優先替代值取代 Null 值

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/coalesce.htm)

#### 圖表運算式

概述

此範例使用 `Coalesce` 函數，根據指定的優先順序邏輯，以替代值取代缺漏的位置資料。

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

載入指令碼包含：

* 載入到稱為 `Example` 之資料表格的資料集。

* 資料表格中的欄位如下：

  * `LocationID`

  * `Country`

  * `State`

  * `City`

* `NullInterpret` 變數陳述式可確保將任何缺漏的值視為 NULL。

載入指令碼

```
Set NullInterpret = '';
Example:
LOAD * INLINE [
LocationID, Country, State, City
L001, USA, California, Los Angeles
L002, USA, ,
L003, Canada, Ontario,
L004, , New South Wales, Sydney
L005, UK, , London
L006, , , London
];
```

結果

1. 載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度：

   * `LocationID`

   * `Country`

   * `State`

   * `City`

2. 建立下列計算維度：

   * `=Coalesce(Country, State, City)`，用來以替代值填入任何 Null 值。

結果表格

| LocationID | Country | State | City | Coalesce(Country, State, City) |
| --- | --- | --- | --- | --- |
| L001 | USA | California | Los Angeles | USA |
| L002 | USA | - | - | USA |
| L003 | Canada | Ontario | - | Canada |
| L004 | - | New South Wales | Sydney | New South Wales |
| L005 | UK | - | London | UK |
| L006 | - | - | London | London |

結果顯示，雖然有缺漏的值，但您可以使用 `Coalesce` 函數提供邏輯，指示如何使用替代值填入這些執行個體以完成資料集。例如，`L004` 缺少 `Country` 值。`Coalesce` 函數傳回 `New South Wales`，因為 `State` 是優先順序邏輯中列出的第二個欄位，可在 `Country` 的值缺漏時使用。