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

【QlikView】データがNullの項目のみを対象に計算する方法

執筆者 玉城和志 更新日時 2019年12月28日

Topics: Tips Set分析

データがNullの項目のみを対象に計算する方法

こんにちは。Lioです。

今回は弊社内でも偶に出てくる疑問の解決方法を紹介させていただきます。

こちらは店舗ごとの売り上げデータなのですが、
flgという項目の中に値が入っていないレコードが存在しています。

この時、flgがNullのレコードのみを対象に計算を行うにはどのようにすればよいでしょうか?

ここではシンプルな方法を3つ紹介させていただきます。

1.Set分析で何かしらの値があるものを集計対象から除外する

Set分析とはQlik製品の集計において、特定の絞り込みを常に指定する方法です。

例えば、A店舗のみの売上の合計を求めたいならば、
sum({<店舗={'A'}>} value)
というような数式になります。
これを「flgに何かしらの値があるものを集計対象から除外」に当てはめると、
sum({$-<flg={"*"}>} value)
となります。
※Set分析の詳しい内容は以下を参照ください。
https://iw-qlikview.com/knowledge/functiontips/set_analsys/

2.ロードスクリプトにてあらかじめNullのレコードに対して別のフラグを作成する
2つ目はQlikViewでのデータの主な取得方法を記述するロードスクリプトにて、あらかじめNullのレコードに対してフラグを作成する方法です。
・ロードスクリプト部分:Nullに対してhogeフラグを作成
LOAD 店舗,
flg,
value,
if(len(flg)>=1,0,1) as hoge //もちろん、len()はisnullなどに代替可能です。
FROM Data_source;
・数式部分:hogeが1のレコードを対象に集計するSet分析
Sum({<hoge={1}>} value)

3.Set分析を利用せずに数式内の条件分岐で対象を絞り込む
最後に一番シンプルな方法を紹介します。
これはExcelなどでも流用できる考え方です。
Sum(if(isnull(flg)=-1,value))

上記3つの方法をそれぞれ実装したイメージがこちらです。

全て正しく集計されているのがわかります。

では、上記3パターンのどちらを実装したほうが良いのでしょうか?
これは利用シーンによって様々なので各々の想定されるメリット・デメリットを紹介いたします。

1.Set分析で何かしらの値があるものを集計対象から除外する
メリット:レコード数が多い場合に有効。
デメリット:Set分析を理解していない人は内容を把握できない
2.ロードスクリプトにてあらかじめNullのレコードに対して別のフラグを作成する
メリット:Set分析のみより数式の理解が易しい
デメリット:項目が増えることになるので、データサイズが大きくなる
3.Set分析を利用せずに数式内の条件分岐で対象を絞り込む
メリット:Qlik未経験の人でも内容が把握できる
デメリット:すべてのレコードに対してif文の処理が入るのでデータ量によって処理が重くなる

以上のことを踏まえて実装時に臨機応変に対応できると良いですね。

玉城和志

執筆者 玉城和志

2 分で読むことができます。

【QlikView】日付の型の変更方法と絞り込み

2 分で読むことができます。

QlikView / Qlik SenseでSet分析その② Count関数を使う