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

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

データフローとは

データフローは、Qlik Cloud(SaaS 版)の 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 製品間での親和性が高いことも特長です。

留意点

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

まとめ

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

ではまた!

About h.yamada

初めに触ったBIはPentaho、QlikView約10年、特にQlikを使用した基盤構築やってます。 Tableau Desktop Certified Associateの資格も持ってました(有効期限切れ)