1.はじめに
Qlik SenseやQlikViewでのフィルター機能は基本的にOR一致です。
フィルターパネルでリンゴとバナナを選択した場合、リンゴもしくはバナナを条件として絞り込まれます。
リンゴかつバナナを絞り込み条件としたい場合はAND検索用テーブルの作成とSet分析で実装できます。
2.準備
以下のようなデータを利用します。
上記のデータをInlineか何かでQlikにLoadしましょう。
適当なチャートを作成したうえで、Category項目で果物と飲料水を絞り込んでみました。
QlikではOR検索が基本のためチャート上ではId1~4が集計対象として計算されます。
3.AND検索の実装
スクリプトにて、Name毎にCategoryを文字結合したAND検索用テーブルを新規で作成します。
東京であれば果物,雑誌,飲料水、大阪であれば果物,飲料水という具合です。
AND検索用テーブルが作成できたらSet分析用の文字列を作っていきます。
まずは選択しているCategoryを文字結合しましょう。
concat(distinct Category,'*')
そうすると「果物*飲料水」という文字列が作られます。
更に生成した文字列でName2を文字結合します。
concat(distinct {<Category2={"$(=concat(distinct Category,'*'))"}>}Name2,chr(39)&','&chr(39))
こうすることで「東京','大阪」という文字列が生成されます。
あとは本来の集計用数式の部分に文字列を生成した数式でSet分析を組み込むことで実装完了です。