こんにちは。Lioです。
こちらは店舗ごとの売り上げデータなのですが、
flgという項目の中に値が入っていないレコードが存在しています。
この時、flgがNullのレコードのみを対象に計算を行うにはどのようにすればよいでしょうか?
ここではシンプルな方法を3つ紹介させていただきます。
Set分析とはQlik製品の集計において、特定の絞り込みを常に指定する方法です。
例えば、A店舗のみの売上の合計を求めたいならば、sum({<店舗={'A'}>} value)
というような数式になります。
これを「flgに何かしらの値があるものを集計対象から除外」に当てはめると、sum({$-<flg={"*"}>} value)
となります。
※Set分析の詳しい内容は以下を参照ください。
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)
最後に一番シンプルな方法を紹介します。
これはExcelなどでも流用できる考え方です。
Sum(if(isnull(flg)=-1,value))
上記3つの方法をそれぞれ実装したイメージがこちらです。
全て正しく集計されているのがわかります。
では、上記3パターンのどちらを実装したほうが良いのでしょうか?
これは利用シーンによって様々なので各々の想定されるメリット・デメリットを紹介いたします。
メリット:レコード数が多い場合に有効。
デメリット:Set分析を理解していない人は内容を把握できない
メリット:Set分析のみより数式の理解が易しい
デメリット:項目が増えることになるので、データサイズが大きくなる
メリット:Qlik未経験の人でも内容が把握できる
デメリット:すべてのレコードに対してif文の処理が入るのでデータ量によって処理が重くなる
以上のことを踏まえて実装時に臨機応変に対応できると良いですね。