瞭解指令碼語法和資料結構

擷取、轉換和載入

一般來說,您將資料載入應用程式的方式可以依擷取、轉換和載入處理程序加以說明:

  • 擷取

    第一個步驟是從資料來源系統擷取資料。在指令碼中,您會使用 SELECTLOAD 陳述式來加以定義。這些陳述式之間的差異在於:

    • SELECT 是用來選取來自 ODBC 資料來源或 OLE DB 提供者的資料。SELECT SQL 陳述式是由資料提供者評估,而不是 Qlik Sense
    • LOAD 是用來從檔案、指令碼中定義的資料、先前載入的表格、網頁、後續 SELECT 陳述式的結果或自動產生的資料載入欄位。
  • 轉換

    轉換階段涉及使用指令碼函數和規則來操縱資料,以衍生所需的資料模型結構。一般的操作如下:

    • 計算新的值
    • 轉譯編碼值
    • 重新命名欄位
    • 聯結表格
    • 彙總值
    • 樞紐分析中
    • 資料驗證
  • 載入

    在最後階段中,您會執行指令碼以載入您已定義到應用程式中的資料模型。

您的目標應為建立一個能夠在 Qlik Sense 中有效處理資料的資料模型。通常這表示您的目標應該是建立一個合理標準化的星型或雪花狀模型,而不含任何循環參照,即各實體留在單獨表格裡的一個模型。換言之,典型的資料模型應如下所示:

  • 中心事實型表格,包含維度的索引鍵以及用於計算量值 (例如單位數目、銷售額和預算額)的數字。
  • 環繞型表格,包含各種維度並帶有它們所有的屬性 (例如產品、客戶、類別、日曆和供應商)。
備註: 在許多情況下,都可以透過在載入指令碼中建立一個更豐富的資料模型,或在圖表運算式中執行彙總,進而解決任務 (例如彙總)。一般規則是,如果您始終在載入指令碼中執行資料轉換,會得到更出色的效能。
提示: 在紙上起草您的資料模型是個不錯的做法。這樣為要擷取哪些資料、要執行何種轉換提供了一個結構,對您會有幫助。

資料載入陳述式

資料是透過 LOADSELECT 陳述式載入。這些陳述式都會產生一個內部表格。表格一律可視為某種清單,每筆記錄 (列) 是該物件類型的一個新執行個體,每個欄位 (資料行) 是該物件的一個特定屬性。

這些陳述式之間的差異在於:

  • SELECT 是用來選取來自 ODBC 資料來源或 OLE DB 提供者的資料。SELECT SQL 陳述式是由資料提供者評估,而不是 Qlik Sense
  • LOAD 是用來從檔案、指令碼中定義的資料、先前載入的表格、網頁、後續 SELECT 陳述式的結果或自動產生的資料載入欄位。

規則

Qlik Sense 載入資料時適用下列規則:

  • Qlik Sense 不會區別 LOADSELECT 陳述式所產生的表格。這表示如果載入數個表格,完全不會去管表格是由 LOADSELECT 陳述式載入,還是由兩者混合的方式載入。
  • 陳述式中的欄位順序,或資料庫內原始表格中的欄位順序,對 Qlik Sense 邏輯而言都是任意排序的。
  • 欄位名稱接下來會用於識別欄位及產生關聯。欄位名稱會區分大小寫,因此通常需要在指令碼中重新命名欄位。

執行指令碼

對於典型的 LOADSELECT 陳述式,事件的順序約略如下:

  1. 評估運算式
  2. as 重新命名欄位
  3. alias 重新命名欄位
  4. 限定欄位名稱
  5. 如果欄位名稱相符,則對應資料
  6. 將資料儲存在內部表格中