# QVD 檔案

一個 QVD (QlikView Data) 檔案是包含從 Qlik Sense 或 QlikView 匯出之資料表格的檔案。QVD 是原生的 Qlik 格式，且只能由 Qlik Sense 或 QlikView 寫入和讀取。從 Qlik Sense 指令碼讀取資料時，此檔案格式已針對速度進行最佳化，但仍然非常精簡。從 QVD 檔案讀取資料的速度通常比從其他資料來源讀取快 10-100 倍。

QVD 檔案可以兩種模式讀取：標準 (快) 和最佳化 (更快)。選取的模式由 Qlik Sense 指令碼引擎自動決定。只有在讀取所有載入的欄位而沒有任何轉換 (作用於欄位的公式) 時，才能使用最佳化模式，不過允許重新命名欄位。導致 Qlik Sense 解壓縮記錄的 Where 子句也會停用最佳化載入。

一個 QVD 檔案只包含一個資料表格，並由三個部分組成：

* 描述表格中欄位、後續資訊的版面配置以及一些其他中繼資料的 XML 標頭 (採用 UTF-8 字元集)。
* 採用位元組填充格式的符號表。
* 採用位元填充格式的實際表格資料。

QVD 檔案可用於許多用途。可以輕鬆識別出三個主要用途。在任何給定情況下，可能適用多個用途：

* 減少資料庫伺服器上的負載

  從外部資料來源擷取的資料量也可以大幅減少。這會減少外部資料庫的工作負載和網路流量。此外，當數個 Qlik Sense 指令碼共用相同的資料時，只需從來源資料庫將其載入到 QVD 檔案一次即可。其他應用程式可以透過此 QVD 檔案使用相同的資料。
* 彙總來自多個 Qlik Sense 應用程式的資料。

  使用 Binary 指令碼陳述式，只能將資料從單一 Qlik Sense 應用程式載入到另一個應用程式，但使用 QVD 檔案，Qlik Sense 指令碼可以合併來自任意數量之 Qlik Sense 應用程式的資料。這為應用程式彙總來自不同業務單位等類似資料開啟了可能性。
* 累加載入

  在許多常見情況下，QVD 功能可用於透過專門從不斷增長的資料庫載入新記錄來促進累加載入。

資訊備註

若要查看 Qlik 社群如何使用 Qlik Automate 來改善 QVD 載入時間，請參閱 [如何使用自動化分割 QVD 以改善重新載入](https://community.qlik.com/t5/Official-Support-Articles/How-to-split-QVDs-using-an-automation-to-improve-reloads/ta-p/1997153)。

## 建立 QVD 檔案

可以使用指令碼中的 store 命令建立和命名 QVD 檔案。在指令碼中聲明，先前讀取的表格或其一部分將匯出到您選擇的位置中明確命名的檔案。

### Store

此指令碼陳述式會建立明確命名的 QVD、Parquet、CSV 或 TXT 檔案。

```
Store[ *fieldlist from] table into filename [ format-spec ];
```

該陳述式只能從一個資料表格匯出欄位。如果要匯出數個表格中的欄位，則必須事先在指令碼中進行明確的聯結，以建立應匯出的資料表格。

文字值會以 UTF-8 格式匯出到 CSV 檔案。可以指定分隔符號，請參閱 LOAD。儲存到 CSV 檔案的 store 陳述式不支援 BIFF 匯出。

範例：

```
Store mytable into [lib://DataFiles/xyz.qvd]; 
Store * from mytable into [lib://DataFiles/xyz.qvd]; 
Store myfield from mytable into [lib://DataFiles/xyz.qvd]; 
Store myfield as renamedfield, myfield2 as renamedfield2 from mytable into [lib://DataFiles/xyz.qvd]; 
Store mytable into [lib://DataFiles/myfile1.txt]; 
Store mytable into [lib://DataFiles/myfile2.csv]; 
```

請執行下列動作：

1. 開啟進階指令碼教學課程應用程式。
2. 按一下 Product 指令碼區段。
3. 將以下內容新增至指令碼的結尾：
   ```
   Store * from Product into [lib://DataFiles/ProductData.qvd](qvd);
   ```

   您的指令碼應如下所示：
   ```
   CrossTable(Month, Sales)
   LOAD
       Product,
       "Jan 2014",
       "Feb 2014",
       "Mar 2014",
       "Apr 2014",
       "May 2014"
   FROM [lib://DataFiles/Product.xlsx] 
   (ooxml, embedded labels, table is Product);

   Store * from Product into [lib://DataFiles/ProductData.qvd](qvd);
   ```
4. 按一下載入資料。

   Product.qvd 檔案現在應該在檔案清單中。

   此資料檔案是 Crosstable 指令碼的結果，並且是一個三欄表格，每個類別一欄 (Product, Month, Sales)。現在可以使用此資料檔案來取代整個 Product 指令碼區段。

## 從 QVD 檔案讀取資料

可以透過以下方法將 QVD 檔案讀入或由 Qlik Sense 存取：

* 將 QVD 檔案載入為明確的資料來源。QVD 檔案可以由 Qlik Sense 指令碼中的 load 陳述式參考，就像任何其他類型的文字檔案 (csv、fix、dif、biff 等) 一樣。

  範例：

  LOAD \* from [lib://DataFiles/xyz.qvd] (qvd); LOAD fieldname1, fieldname2 from [lib://DataFiles/xyz.qvd] (qvd); LOAD fieldname1 as newfieldname1, fieldname2 as newfieldname2 from [lib://DataFiles/xyz.qvd](qvd);

* 從指令碼存取 QVD 檔案。許多指令碼函數 (全部以 QVD 開頭) 可用於擷取在 QVD 檔案的 XML 標頭中找到之資料的各種資訊。

請執行下列動作：

1. 註解掉 Product 指令碼區段中的整個指令碼。
2. 輸入以下指令碼：
   ```
   Load * from [lib://DataFiles/ProductData.qvd](qvd);			
   ```
3. 按一下載入資料。

   資料是從 QVD 檔案載入。

   資料載入進度視窗

   資料載入進度視窗

   資料載入進度視窗 ![資料載入進度視窗。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/tutorial-load-qvd.png)

資訊備註若要了解如何使用 QVD 檔案進行累加載入，請參閱 Qlik Community 中的這篇部落格文章：[Qlik 累加載入概觀](https://community.qlik.com/t5/Qlik-Design-Blog/Overview-of-Qlik-Incremental-Loading/ba-p/1466780)

## 謝謝您！

現在您已完成本教學課程，希望您已獲得更多關於在 Qlik Sense 中編寫指令碼的知識。請造訪我們的網站，以取得有關可用進階訓練的詳細資訊。