h.yamada/ 2025年 8月 21日/ 技術

今回は Qlik のデータフロー(DataFlow)を実際に触ってみたので、その概要と所感を紹介します。

データフローとは

データフローは、Qlik Cloud Analytics(以降QCA) 上で利用できるデータ前処理機能です。
ロードスクリプトがコードベースで記述するのに対し、データフローは GUI(ローコード)で設定できる点が特徴です。

データフローの構成要素

データフローは「ソース」「プロセッサ」「ターゲット」の3つで構成されます。
ソースは「入力」、プロセッサは「処理」、ターゲットは「出力」を置き換えて頂ければよろしいかと思います。

ソース

ファイルやデータベースと接続し、データを取得します。

プロセッサ

取得したデータを加工・変換します。代表的な処理は以下のとおりです。

機能 内容
フィルター 項目ごとの条件指定
項目の選択・削除・名称変更 必要な項目のみを利用可能
結合/集合 内部結合・外部結合や UNION 処理
集計/ウィンドウ 合計・平均・最大・最小など
文字列・日付・数値処理 型ごとの変換や演算
ピボット解除 列→行の変換処理
フォーク 1つの入力を複数に分岐(最大10出力)
スクリプト 一部コードによる処理も可能

ターゲット

出力先として、Qlik Cloud のストレージ領域や、Google Drive・Amazon S3 など外部ストレージを指定できます。

データフローの作成

以下の処理を作成してみました。

  • トランザクションを入力、フィルタをかける
  • マスタを結合
  • 新規項目を作成し計算
  • ファイル出力
    データフローでは以下になります。

データーフローのスクリプトをプレビュー表示してみました。

[transaction_data]:
NOCONCATENATE
LOAD
    [date],
    [product_code],
    [quantity],
    [unit_price]
FROM [lib://DataFiles/transaction_data.csv] (txt, utf8, embedded labels, delimiter is ',', msq);

[商品マスタ結合]:
NOCONCATENATE
LOAD
    [date],
    [product_code],
    [quantity],
    [unit_price]
RESIDENT [transaction_data]
WHERE [product_code] = 'P003';

LEFT JOIN([商品マスタ結合])
    // [product_master]:
    LOAD
        [product_code],
        [product_name]
    FROM [lib://DataFiles/product_master.csv] (txt, codepage is 28591, embedded labels, delimiter is ',', msq);

[計算]:
NOCONCATENATE
LOAD
    [product_code],
    [date],
    [quantity],
    [quantity] * [unit_price] AS [amount],
    [unit_price],
    [product_name]
RESIDENT [商品マスタ結合];
DROP TABLE [商品マスタ結合];

STORE [計算] INTO [lib://DataFiles/test.csv] (txt);

DROP TABLE [計算];

スクリプトを見る限り、処理毎にResidentロードされているようでした。件数が多くなると処理時間を注意する必要がありそうですね。

ちなみにロードスクリプトではResidentなしで記述できます。

[transaction_data]:
LOAD
    [date],
    [product_code],
    [quantity],
    [unit_price],
    [quantity] * [unit_price] AS [amount]
FROM [lib://DataFiles/transaction_data.csv] (txt, utf8, embedded labels, delimiter is ',', msq)
WHERE [product_code] = 'P003';

LEFT JOIN([transaction_data])
    // [product_master]:
    LOAD
        [product_code],
        [product_name]
    FROM [lib://DataFiles/product_master.csv] (txt, codepage is 28591, embedded labels, delimiter is ',', msq);

STORE [transaction_data] INTO [lib://DataFiles/test.csv] (txt);

DROP TABLE [transaction_data];

活用方法のイメージ

QCA ではアプリごとにデータのリロード処理が必要なので、その前段でデータフローを用いて前処理を行うことで、アプリ側のスクリプトを簡素化できます。
ただし、既存の複雑なロードスクリプトをそのまま置き換えるのは難しいケースも想定されます。

データフローの強み

ロードスクリプトは柔軟にロジックを記述できますが、学習コストが高い傾向があります。
一方でデータフローは GUI ベースのため、プログラミング知識がなくても利用しやすく、初学者にとって導入しやすい点がメリットです。
また、作成したデータフローは Application Automation、Qlik Predict の前処理や Qlik Talend での再利用も可能で、Qlik 製品間での親和性が高いことも特長です。

留意点

データフローはQlik Cloud Analyticsの機能です。
出力形式は CSV、Parquet、QVD に限定されているため、利用シーンに応じた設計が必要です。また、同じく Qlik が提供する Qlik Talend とは別製品として位置づけられているのでご注意下さい。

まとめ

データフローは、コードベースのロードスクリプトに比べて習得しやすく、GUI 操作で直感的にデータ前処理を行えるのが特長です。
今後、Qlik Cloud を活用したデータ分析基盤の運用において、スクリプトとデータフローをどう使い分けるかが重要になってくると考えられます。

ではまた!

About h.yamada

BIで気になったことを書いていきます。 一番長いのはQlik(歴10年)です。 ※BIパートナーに所属後、NorthTorchへJOIN