跳到主要內容
轉換資料

在此頁面

轉換資料

您可以使用資料載入編輯器中的許多不同技術轉換和操縱資料。

資料處理的其中一個好處是您可以選擇只從檔案中載入資料的子集 (例如從表格中載入幾個選定資料行),從而更有效地處理資料。您還可以多次載入資料,以將原始資料分割成幾個新的邏輯表格。還可從多個來源載入資料,然後在 Qlik Sense 中合併成一個表格。

在本主題中,您將會使用 Resident 載入、然後使用 Preceding 載入執行一些基本資料轉換。

Resident LOAD

您可以在 LOAD 陳述式中使用 Resident 來源限定詞,從先前載入的表格中載入資料。當您想要對使用 SELECT 陳述式載入的資料執行計算,但是您無法使用 Qlik Sense 函數 (例如日期或數值處理) 時,這也很有用。

在此範例中,您將會建立稱為 Sales_Buckets 的新表格,然後使用駐留載入從 Table1 載入資料。在 Sales_Buckets 表格中,您將會建立稱為 quantity_threshold 的變數,然後使用 Where 陳述式僅載入符合該閾值的資料。

  1. Scripting Tutorial 應用程式中開啟資料載入編輯器
  2. 按一下 Sales 標籤。
  3. 將下列內容新增至指令碼結尾:
  4. SET quantity_threshold = 12000; Sales_Buckets: LOAD "Sales Qty" as "High_Quantity", "Item Description" as "Item", "Customer Number" as "Customer" Resident Table1 Where ("Sales Qty" > $(quantity_threshold)); 

    您的指令碼應如下所示:

    含有指令碼的載入指令碼視窗可建立稱為 Sales_Buckets 的新表格
    Load script window with script to create new table called Sales_Buckets.

  5. 按一下載入資料
  6. 開啟資料模型檢視器。 您可以看見您建立了稱為 Sales_Buckets 的新表格,其中含有根據您指定的欄位載入的資料,以及您設定的閾值。
  7. 資料模型檢視器中的 Sales_Buckets 表格
    Sales_Buckets table in data model viewer.

  8. 將資料新增至應用程式中的表格。新增 ItemCustomer 作為維度。新增 High-Quantity 作為在 Count 彙總的量值,然後於 Sum 再次彙總。接下來,以下列公式新增新的資料行作為量值:
  9. = Sum(High_Quantity) / Count(High_Quantity)

    使用公式的新量值
    New measure with formula.

    例如,您的表格顯示 Customer 10025737 進行了 4 筆 高冠乾燥洋菇的大訂單,平均數量為 14,800。若要在欄位中的資料執行排序,按一下完成以關閉編輯模式。

    顯示客戶下訂大筆訂單的表格
    Table showing customers that have made large orders.

  10. 現在我們已完成了此範例,請註解 quantity_threshold 變數和 Sales_Buckets 表格的指令碼。
  11. 指令碼結尾現在應顯示如下:

    已註解的指令碼
    Commented out script.

前置 LOAD

前置載入可讓您執行轉換並套用篩選條件,以便在一次傳遞中載入資料。基本上,它是 LOAD 陳述式,從下方的 LOADSELECT 陳述式載入,而不指定您通常執行的來源限定詞,例如 FromResident。您可以使用此方法堆疊任何數目的 LOAD 陳述式。將首先評估位於下層的陳述式,然後是其上的陳述式,以此類推,直到評估完成上層陳述式為止。

如同之前在本教學課程中所提及,您可以使用 LOADSELECT 陳述式將資料載入 Qlik Sense。這些陳述式都會產生一個內部表格。LOAD 用來從檔案或從內嵌表格載入資料,而 SELECT 用來從資料庫載入資料。您已使用來自本教學課程檔案的資料。在此範例中,您將會使用內嵌表格。不過,值得注意的是,前置載入可用於 SELECT 陳述式之上,以操縱資料。基本內容與使用 LOAD 時在此看見的內容相同。

此範例與我們在本教學課程中載入的資料無關。只是用來示範前置載入的樣子而已。您將會在資料載入編輯器中建立稱為交易的表格。日期解譯將會在前置 LOAD 中執行,在此將會建立稱為 transaction_date 的新欄位。此欄位從 sale_date 欄位建立。

  1. 建立新的應用程式並稱為 ReformatDate
  2. 開啟資料載入編輯器,然後建立稱為 TransactionData 的新標籤。
  3. 新增下列指令碼:
  4. 交易:Load *, Date(Date#(sale_date,'YYYYMMDD'),'DD/MM/YYYY') as transaction_date; Load * Inline [ transaction_id, sale_date, transaction_amount, transaction_quantity, customer_id, size, color_code 3750, 20180830, 23.56, 2, 2038593, L, Red 3751, 20180907, 556.31, 6, 203521, m, orange 3752, 20180916, 5.75, 1, 5646471, S, blue 3753, 20180922, 125.00, 7, 3036491, l, Black 3754, 20180922, 484.21, 13, 049681, xs, Red 3756, 20180922, 59.18, 2, 2038593, M, Blue 3757, 20180923, 177.42, 21, 203521, XL, Black ];

    您的指令碼應如下所示:

    含有前置載入的載入指令碼
    Load script with preceding load.

  5. 按一下載入資料
  6. 開啟資料模型檢視器。 選取並展開交易表格。您可以看見已按照前置載入陳述式中 * 的指定載入所有欄位。已建立稱為 transaction_date 的新欄位。該欄位具有重新格式化的日期。
  7. 資料模型檢視器中稱為 transaction_date 的新欄位
    New field called transaction_date in data model viewer.