お問い合わせ
1 分で読むことができます。

【Qlik Sense】QVD(QlikView Data) を利用した増分ロードの方法

2025年12月11日

はじめに

データ量が増えるにつれ、ロード時間は徐々に長くなります。たとえば売上明細テーブルが 100万件 → 500万件 → 1000万件と増えると、毎回のフルロードを行うのは業務に大きな負担となります。今回その解決策として、QVD(QlikView Data) を利用した増分ロードの方法について紹介します。

QVD(QlikView Data) とは

QVDファイルQlik Sense または QlikView からエクスポートされたデータのテーブルを含むファイルであり、QVD ファイルからのデータの読み取りは、他のデータ ソースから読み取る場合よりも10~100 倍速くなります。

増分ロードとは

増分ロードとは、外部データソースから すべてのデータを毎回フルロードするのではなく、前回ロード以降に追加・更新されたデータだけを取り込む方式のことです。
すでに取得済みの過去データはQVDに蓄積しておき、次回以降のロードでは、新しいデータだけを追加することで処理時間を大幅に削減でき、データ量が増えてもロード時間がほとんど伸びず外部DBへの負荷を低減できます。

 

データロードエディタ

今回は、Sales.qvdに対してSales.qvd内の最新のオーダー日以降のExcelデータを増分ロードを行い、最新データを増分ロードしたSales.qvdに上書きする処理を記載しています。

増分ロード処理

※任意のデータを保持したSales.qvdを事前に作成されていることが前提条件となります。

//Excelから最新のオーダー日を基準に売上データを増分ロードしQVDに保存する処理
//既存QVDを読み込み
Sales_QVD:
    LOAD     
    [オーダー ID],
    Date([オーダー日],'YYYY/MM/DD') as オーダー日,
    [都道府県],
    [地域],
    [製品 ID],
    [カテゴリ],
    [製品名],
    [売上],
    [数量]
FROM [lib://DataFiles/Sales.qvd] (qvd);

//QVD内の最新オーダー日を取得
Temp_MaxDate:
LOAD
    Date(Max([オーダー日]),'YYYY/MM/DD') as 最新オーダー日
Resident Sales_QVD;

LET vLastOrderDate = Peek('最新オーダー日', 0, 'Temp_MaxDate');
DROP TABLE Temp_MaxDate;

//Excelから vLastOrderDate より新しいデータだけ取得
NoConcatenate
Sales_New:
LOAD
    [オーダー ID],
    Date([オーダー日],'YYYY/MM/DD') as オーダー日,
    [都道府県],
    [地域],
    [製品 ID],
    [カテゴリ],
    [製品名],
    [売上],
    [数量]
FROM [lib://DataFiles/サンプル.xlsx]
(ooxml, embedded labels, table is 注文)
WHERE Date([オーダー日],'YYYY/MM/DD') > '$(vLastOrderDate)';

//元のQVDに今回の増分データを統合
Concatenate (Sales_QVD)
LOAD * RESIDENT Sales_New;

//増分データを統合したテーブルを新しいQVDとして保存
 STORE Sales_QVD INTO 'lib://DataFiles/Sales.qvd' (qvd);

//不要なテーブルの削除
DROP TABLE Sales_New;

おわりに

今回QVD(QlikView Data) を利用した増分ロードの方法について紹介しました。大量のデータを扱う場合には、QVDの利用が最適です。ぜひ試してみてください。

Topics: Qlik Qlik Sense
Jiro

Written by Jiro

Qlik_No1_2022
QSナレッジ事例バナー
DXバナー
Qlikseminar
qs_trial
Qllikseminar
Vizlibナレッジ
Vizlibセミナー
qv_knowledge
book_kawaii
Snowflake_バナー

新着記事

タグ別の記事

全て表示