# 使用對應作為聯結的替代選項

Qlik Sense 中的 Join 前置詞是結合資料模型中數個資料表格的極有效方法。

一個不足之處是結合的表格可能較大，並造成效能問題。在您需要從另一個表格中查閱單一值時，Join 的替代選項是改為使用對應。這可讓您無需載入不必要的資料來拖慢下載計算，並且還可能造成計算錯誤，因為聯結可能變更表格中記錄的數目。

對應表格包含兩個資料行，比較欄位 (輸入) 和對應值欄位 (輸出)。

在此範例中，我們有一個順序表格 (Orders)，並且需要知道客戶的國家，這些資料儲存在客戶表格 (Customers) 中。

OrdersOrders 資料表格

| OrderID | OrderDate | ShipperID | 運費 | 設定 CustomerID： |
| --- | --- | --- | --- | --- |
| 12987 | 2007-12-01 | 1 | 27 | 3 |
| 12988 | 2007-12-01 | 1 | 65 | 4 |
| 12989 | 2007-12-02 | 2 | 32 | 2 |
| 12990 | 2007-12-03 | 1 | 76 | 3 |

CustomersCustomers 資料表格

| 設定 CustomerID： | 名稱 | 國家/地區 | ... |
| --- | --- | --- | --- |
| 1 | DataSales | 西班牙 | ... |
| 2 | BusinessCorp | 義大利 | ... |
| 3 | TechCo | 德國 | ... |
| 4 | Mobecho | 法國 | ... |

為了查閱客戶的國家或地區 (Country)，我們需要類似於下列項目的對應表格：

對應表格

| 設定 CustomerID： | 國家/地區 |
| --- | --- |
| 1 | 西班牙 |
| 2 | 義大利 |
| 3 | 德國 |
| 4 | 法國 |

命名為 MapCustomerIDtoCountry 的對應表格在指令碼中定義，如下所示：

```
     MapCustomerIDtoCountry:
     Mapping LOAD CustomerID, Country From Customers ;
     
```

下一步是在載入順序表格時，使用 ApplyMap 函數套用對應。

```
Orders:
     LOAD *,
          ApplyMap('MapCustomerIDtoCountry', CustomerID, null()) as Country
          From Orders ;
     
```

ApplyMap 函數的第三個參數用來定義在對應表格中找不到值時傳回的項目，在此情況下為 Null()。

產生的表格將如下所示：

結果表格

| OrderID | OrderDate | ShipperID | 運費 | 設定 CustomerID： | 國家/地區 |
| --- | --- | --- | --- | --- | --- |
| 12987 | 2007年12月01日 | 1 | 27 | 3 | 德國 |
| 12988 | 2007年12月01日 | 1 | 65 | 4 | 法國 |
| 12989 | 2007年12月02日 | 2 | 32 | 2 | 義大利 |
| 12990 | 2007年12月03日 | 1 | 76 | 3 | 德國 |

## 瞭解更多資訊

* [ApplyMap 指令碼函數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/MappingFunctions/ApplyMap.htm)
* [對應](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Mapping.htm)