# 資料清理

請注意，從不同表格載入資料時，代表相同事物的欄位值不一定命名會一致。因為缺乏一致性不僅很擾人，還會阻礙關聯，所以需要解決這個問題。透過建立欄位值比較的對應表，即可漂亮地解決此問題。

## 對應表

透過 mapping load 或 mapping select 載入的表格，與其他表格的處理方式有所不同。它們會儲存在記憶體的不同區域，並且僅在指令碼執行期間作為對應表之用。指令碼執行完畢之後，這些對應表就會自動卸除。

### 規則：

* 對應表必須有兩個資料行：第一個包含比較值，第二個包含所需的對應值。
* 必須對這兩個資料行加以命名，但名稱本身沒有相關性。該資料行名稱和一般內部表格的欄位名稱並無關聯。

## 使用對應表

在載入數個含國家/地區清單的表格時，可能會發現同一個國家有幾個不同的名稱。在此範例中，美國就列為 US、U.S. 及 United States。

為了避免在串連表格中出現三筆皆代表美國的不同記錄，可建立與所顯示表格類似的表格，然後將其載入為對應表。

完整的指令碼如下所示：

`CountryMap:` `Mapping LOAD x,y from MappingTable.txt` `(ansi, txt, delimiter is ',', embedded` `labels);` `Map Country using CountryMap;` `LOAD Country,City from CountryA.txt` `(ansi, txt, delimiter is ',', embedded labels);` `LOAD Country, City from CountryB.txt` `(ansi, txt, delimiter is ',', embedded labels);`

mapping 陳述式會將檔案 MappingTable.txt 載入為對應表格，其標籤為 CountryMap。

map 陳述式會使用先前載入的對應表格 CountryMap 來啟用欄位 Country 的對應。

LOAD 陳述式會載入表格 CountryA 和 CountryB。這些表格會因為有一組相同欄位的事實而進行串連，其中包含欄位 Country，其欄位值會與對應表格中第一個資料行的值進行比較。找到的欄位值 US.、U.S. 及 United States，會由對應表格中第二個資料行的值 (亦即 USA) 所取代。

自動對應是這一串連鎖事件中最後執行的動作，之後欄位即儲存在 Qlik Sense 表格中。對於典型的 LOAD 或 SELECT 陳述式，事件的順序約略如下：

1. 評估運算式
2. 以 as 重新命名欄位
3. 以 alias 重新命名欄位
4. 限定表格名稱 (如適用)
5. 如果欄位名稱相符，則對應資料

這表示，並不是每次在運算式中遇到欄位名稱就會進行對應，而是在要根據欄位名稱將值儲存在 Qlik Sense 表格時才會進行對應。

若要停用對應，請使用 unmap 陳述式。

若要在運算式層級上進行對應，請使用 applymap 函數。

若要在子字串層級上進行對應，請使用 mapsubstring 函數。

## 瞭解更多資訊

* [對應](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Mapping.htm)
* [Map](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Map.htm)
* [Unmap](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Unmap.htm)
* [對應函數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/MappingFunctions/mapping-functions.htm)