跳到主要內容

資料清理

在此頁面

資料清理

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

對應表

透過 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) 所取代。

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

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

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

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

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

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

Join the Analytics Modernization Program

Modernize by leveraging your QlikView investment to begin using Qlik Sense on the Cloud.

Want to know more?
Remove banner from view