資料清理

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

對應表格

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

規則:

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

使用對應表格

在載入數個含國家/地區清單的表格時,可能會發現同一個國家有幾個不同的名稱。在此範例中,美國就列為 USU.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 陳述式會載入表格 CountryACountryB。這些表格會因為有相同的一組欄位而進行串連,其中包含欄位 Country,其欄位值會與對應表格中第一個資料行的值進行比較。找到的欄位值 US.、U.S.United States,會由對應表格中第二個資料行的值 (亦即 USA) 所取代。

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

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

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

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

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

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