使用 QVD 檔案

QVD (QlikView Data) 檔案是包含從 Qlik Sense 所匯出之資料表格的檔案。QVD 是原生 Qlik 格式,而且只可寫入 Qlik SenseQlikView 並由其讀取。從指令碼讀取資料時,檔案格式的速度已經過最佳化處理,但是仍然十分精簡。從 QVD 檔案讀取資料通常比從其他資料來源讀取資料快 10-100 倍。

可用兩種模式讀取 QVD 檔案:標準 (快速) 與最佳化 (更快速)。指令碼引擎會自動決定選取的模式。

關於最佳化載入有一些限制。可以重新命名欄位,但此處提及的任何操作將會停用最佳化載入,並造成標準載入。

  • 載入欄位上的任何轉換。
  • 使用造成 Qlik Sense 解壓縮記錄的 where 子句。
  • 在載入的欄位上使用對應

QVD 檔案的目的

QVD 檔案可用於許多目的,在任何指定情況下,皆適用多種用途。至少有四個主要的用途:

  • 提高載入速度
  • 藉由緩衝 QVD 檔案中輸入資料的不變或緩慢變更的區塊,指令碼在大型資料集的執行可變得相當快速。

  • 減少資料庫伺服器上的負載
  • 另外也會大幅減少從外部資料來源擷取的資料量。這可減少外部資料庫上的工作負載與網路流量。此外,當數個指令碼共用相同的資料時,只需要將資料從來源資料庫載入 QVD 檔案一次即可。其他應用程式可透過此 QVD 檔案利用相同的資料。

  • 合併來自多個應用程式的資料
  • 可使用 binary 指令碼陳述式將來自單一應用程式的資料載入另一個應用程式,但若使用 QVD 檔案,指令碼可合併來自任何數目的應用程式的資料。例如,這可以使應用程式從不同的業務單位合併相似的資料。

  • 累加
  • 在許多常見案例中,可使用 QVD 功能來累加載入,亦即僅從增長中的資料庫載入新記錄。

    如需詳細資訊,請參閱 使用累加載入載入新的和更新的記錄

建立 QVD 檔案

建立 QVD 檔案的方法有兩種:

  • 使用指令碼中的 store 命令可明確建立與命名。在指令碼中陳述要將先前讀取的表格或部分匯出到您所選位置中明確命名的檔案。

    如需詳細資訊,請參閱 Store

  • 從指令碼自動建立與維護。在 LOADSELECT 陳述式前面加上 buffer 前置詞,Qlik Sense 會自動建立 QVD 檔案,在某些狀況中可在載入資料時使用此 QVD 檔案而不使用原始資料來源。

    如需詳細資訊,請參閱 Buffer

在讀取速度方面,產生的 QVD 檔案之間不會有任何差異。

QVD 檔案讀取資料

可使用下列方法讀取或存取 QVD 檔案:

  • QVD 檔案載入為明確的資料來源。QVD 檔案可由指令碼中的 LOAD 陳述式參考,如任何其他文字檔案 類型一樣 (csvfixdifbiff 等)

    例如 (Windows)

    • LOAD * from xyz.qvd (qvd)
    • LOAD Name, RegNo from xyz.qvd (qvd)
    • LOAD Name as a, RegNo as b from xyz.qvd (qvd)

    例如 (Kubernetes):

    • LOAD * from [lib://MyDataFiles/xyz.qvd];
    • LOAD Name, RegNo from [lib://MyDataFiles/xyz.qvd];
    • LOAD Name as a, RegNo as b from [lib://MyDataFiles/xyz.qvd];
  • 自動載入緩衝的 QVD 檔案。在 LOADSELECT 陳述式使用 buffer 前置詞時,不需要用於讀取的明確陳述式。Qlik Sense 會判斷其從 QVD 檔案使用資料的範圍,而不是透過原始 LOADSELECT 陳述式來取得資料。
  • 透過指令碼存取 QVD 檔案。可使用數個指令碼函數 (皆以 qvd 開頭) 來擷取 QVD 檔案 XML 標頭上所找到資料的各種資訊。

QVD 格式

QVD 檔案剛好只有一個資料表格,且包含三個部分:

  • 標頭。

    備註: 如果 QVD 檔案是使用 QlikView 產生的,則標頭為格式良好的 XML 標頭 (為 UTF-8 字元集),其中描述了表格中欄位、後續資訊的版面配置以及部分其他中繼資料。
  • 位元組填充格式的符號表格。
  • 些許填充格式的實際資料表。