メイン コンテンツをスキップする

QVD ファイル

QVD (QlikView Data) ファイルは、Qlik Sense または QlikView からエクスポートされたデータのテーブルを含むファイルです。QVD はネイティブの Qlik 形式で、Qlik Sense または QlikView でしか書き込みと読み出しを行えません。ファイル形式は、Qlik Sense スクリプトからデータを読み取る際の速度について最適化されていますが、それでも非常にコンパクトです。QVD ファイルからのデータの読み取りは、他のデータ ソースから読み取る場合よりも、一般に 10~100 倍速くなっています。

QVD ファイルは、標準 (高速) と最適化 (超高速) の 2 つのモードで読み取ることができます。使用されるモードは、Qlik Sense スクリプト エンジンによって自動的に決定されます。最適化モードは、ロードされたすべての項目が変換 (項目に対して実行される式) なしに読み取られる場合にのみ使用できます。ただし、項目名は変更することができます。Where 節は、Qlik Sense にレコードを解凍させ、最適化されたロードを無効にします。

QVD ファイルは、厳密に 1 つのデータ テーブルを保持し、次の 3 つの部分で構成されます。

  • テーブル内の項目や、後続情報およびその他のメタデータのレイアウトを記述する XML ヘッダー (UTF-8 文字セット)。
  • バイト埋め込み形式のシンボル テーブル。
  • ビット埋め込み形式の実際のテーブル データ。

QVD ファイルの用途はさまざまですが、主に 4 つの目的で使用されます。複数の目的を一度に達成できる場合もあります。

  • データ ロード速度の向上
  • QVD ファイルの入力データの変更されない部分または変化が遅い部分をバッファリングすることで、大きなデータ セットに対するスクリプトの実行が大幅に高速化します。

  • データベース サーバーの負荷の減少
  • 外部データ ソースから取得するデータ量を大幅に削減できます。これにより、外部データベースおよびネットワーク トラフィックの負荷が減少します。さらに、複数の Qlik Sense スクリプトが同じデータを共有する場合は、ソース データベースから QVD ファイルに一度データをロードするだけで済みます。他のアプリケーションは、この QVD ファイルから同じデータを使用できます。

  • 複数の Qlik Sense アプリケーションからのデータ統合
  • Binary スクリプト ステートメントでは、単一の Qlik Sense アプリケーションからのみ別のアプリケーションにデータをロードできます。しかし、QVD ファイルを使用すれば、Qlik Sense スクリプトは、任意の数の Qlik Sense アプリケーションからデータを統合できます。これにより、さまざまな部署の類似データを統合するなど、アプリケーションの可能性が広がります。

  • 増分ロード
  • 多くの場合、QVD の機能を活用することで、増大するデータベースから新しいレコードだけをロードする増分ロードを簡単に実行できます。

QVD ファイルの作成

QVD ファイルは 2 つの方法で作成できます。

  • Qlik Sense スクリプトで Store コマンドを使用した明示的な作成と命名。
  • スクリプトで、以前に読み取ったテーブルまたはその一部を、選択した場所にある明示的に指定されたファイルにエクスポートするように記述します。

  • スクリプトからの自動作成とメンテナンス。
  • load または select ステートメントの前に Buffer プレフィックスを付けると、Qlik Sense は自動的に QVD ファイルを作成します。この QVD ファイルは一定の条件下で、データのリロード時に元のデータ ソースの代わりに使用できます。

読み込み時間など、生成された QVD ファイルに違いはありません。

Store

このスクリプト関数は、明示的に命名された QVDCSVtxt ファイルを作成します。

Syntax:  

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

項目のエクスポートは 1 つのデータ テーブルからのみ行えます。複数のテーブルの項目がエクスポートされる場合、エクスポートされるデータ テーブルを作成するためには、事前にスクリプトで明示的に結合されている必要があります。

テキストの値は 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. 次の内容をスクリプトの最後に追加します。
  4. 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);

  5. [データのロード] をクリックします。
  6. これで Product.qvd ファイルがファイル リストに表示されるようになります。

    Crosstableスクリプトの結果であるこのデータ ファイルは、各カテゴリ (Product, Month, Sales) ごとに 1 つの列を持つ 3 列構成のテーブルです。このデータ ファイルは、Product スクリプト セクション全体を置換するために使用できます。

QVD ファイルからのデータのロード

Qlik Sense は次の方法で QVD ファイルの読み込みやアクセスを実行します。

  • 明示的なデータ ソースとしての QVD ファイルのロード。QVD ファイルは、その他のテキスト ファイル (csvfixdifbiff など) と同様に、Qlik Sense スクリプトの load ステートメントで参照できます。
  • 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 ファイルの自動ロード。load または select ステートメントで buffer プレフィックスを使用する場合、読み取り用の明示的なステートメントは必要ありません。Qlik Sense は元の LOAD ステートメントまたは SELECT ステートメントを使用してデータを取得するのではなく、QVD ファイルからどの範囲のデータを使用するかを決定します。
  • スクリプトからの QVD ファイルへのアクセス。(QVD で始まる) いくつかのスクリプト関数を使用して、QVD ファイルの XML ヘッダーにあるデータのさまざまな情報を取得できます。

次の手順を実行します。

  1. Product スクリプト セクションのスクリプト全体をコメント アウトします。
  2. 次のスクリプトを入力します。
  3. Load * from [lib://DataFiles/ProductData.qvd](qvd); 

  4. [データのロード] をクリックします。
  5. データは QVD ファイルからロードされます。

    データ ロード進捗状況ウィンドウ
    Data load progress window.

情報メモ増分ロードでの QVD ファイルの使用について詳しくは、Qlik Community の次のブログ投稿を参照してください。「Overview of Qlik Incremental Loading」 (Qlik 増分ロードの概要)

Buffer

QVD ファイルは、Buffer プレフィックスを使用して、自動的に作成、管理することができます。このプレフィックスは、スクリプトの LOAD ステートメントおよび SELECT ステートメントのほとんどで使用できます。つまり、ステートメントの結果をキャッシュ/バッファする際には、QVD ファイルが使用されます。

Syntax:  

Buffer [ (option [ , option])] ( loadstatement | selectstatement ) option::= incremental | stale [after] amount [(days | hours)]

オプションを使用していない場合、最初のスクリプト実行で作成された QVD バッファが無限に使用されます。

Example:  

Buffer load * from MyTable;

stale [after] amount [(days | hours)]

Amount は期間を指定する数字で、Decimals を使用できます。単位が省略されている場合は、日数と見なされます。

通常、stale after オプションは、元のデータに一般的なタイムスタンプがないデータベース ソースで使用します。stale after 節は、QVD バッファが作成されてから有効期限切れになるまでの期間を指定します。それまでの間、QVD バッファがデータ ソースとして使用され、期間終了後は元のデータ ソースが使用されます。その後、QVD バッファ ファイルが自動更新され、新しい期間が開始します。

Example:  

Buffer (stale after 7 days) load * from MyTable;

Incremental

incremental オプションを使用すると、基底ファイルの一部のみを読み取る機能が有効になります。以前のファイル サイズは、QVD ファイルの XML ヘッダーに保存されます。これは、ログ ファイルで特に便利です。過去にロードされたレコードは、すべて QVD ファイルから読み取られますが、以降の新しいレコードについては元のソースから読み取った上で QVD ファイルを更新します。

incremental オプションは LOAD ステートメントとテキスト ファイルでのみ使用でき、古いデータが変更されたり削除されている場合、増分ロードは使用できませんのでご注意ください。

Example:  

Buffer (incremental) load * from MyLog.log;

通常、バッファを作成したアプリのスクリプトで一切参照されなくなったり、アプリが存在しなくなると、QVD バッファは削除されます。Store ステートメントは、バッファのコンテンツを QVD または CSV ファイルとして保持したい場合に使用します。

次の手順を実行します。

  1. 新しいアプリを作成し、名前を付けます。
  2. データ ロード エディターで新しいスクリプト セクションを追加します。
  3. 右のメニューの [DataFiles] で、[データを選択] をクリックします。

  4. Cutlery.xlsx をアップロードして選択します。
  5. [Select data from] (データの選択元) ウィンドウで、[スクリプトを挿入] をクリックします。
  6. Load ステートメントの項目をコメント アウトして、Load ステートメントを次のように変更します。
  7. Buffer LOAD *

    これで、スクリプトは次のようになります。

    Buffer LOAD * // "date", // item, // quantity FROM [lib://DataFiles/Cutlery.xlsx] (ooxml, embedded labels, table is Sheet1);

  8. [データのロード] をクリックします。
  9. 初めてデータをロードするときは、Cutlery.xlsx からロードされます。

    データ ロード進捗状況ウィンドウ
    Data load progress window.

    Buffer ステートメントは QVD ファイルを作成し、このファイルを Qlik Sense に保存します。クラウド展開では、クラウド内のディレクトリに保存されます。

  10. [データのロード] を再度クリックします。
  11. 今回は、初めてデータをロードしたときに Buffer ステートメントによって作成された QVD ファイルからデータがロードされます。
  12. データ ロード進捗状況ウィンドウ
    Data load progress window.

お疲れ様でした!

以上でチュートリアルは終了です。ここでご紹介した基本情報を Qlik Sense でのスクリプト作成にお役立てください。ウェブサイトでは、ご利用可能なトレーニングについての情報を公開しています。ぜひご覧ください。