目次
はじめに
本記事では、Qlik Senseにおいて表示するレコードを簡単に切り替えられるボタンの作成方法をご紹介いたします。
例えば、「年齢が30歳以上である人のレコードのみを表示させたい」というときは、SET分析を用いることで、その条件に合致するレコードのみを表示することができます。しかし、「条件付きではない、全てのレコードもすぐに確認したいな」というときは、数式を書き換えたり、新しくチャートを用意したりすることが必要になります。
今回ご紹介する手法を使うと、1つのチャートで「条件に合致するレコードのみ表示された状態」と「全体のレコードが表示された状態」を切り替えることができます。
(完成形)
今回は、先日まで行われていた「WBSCプレミア12」という世界野球の、日本人野手の打撃成績のデータを用いて、「打率が.280未満の選手のレコードの表示状態を切り替える」ボタンを作成していきます(※筆者の趣味にお付き合いください!)。
手順
1.ボタンのON/OFFを切り替えるための変数v1を作成する
ロードスクリプトで、ボタンのONとOFFを切り替えるための変数を作成し、値は「0」とします。
例:
Let v1 = '0';
2.変数v1を用いてボタンを作成する
アセット>チャート から、「ボタン」をシートにドラッグアンドドロップします。
ボタンを選択し、アクションとナビゲーション>アクションの追加 から、「変数値の設定」を選択します。「変数」には「v1」を設定し、「値」には以下の通り記述します。
例:
=if($(v1)=0,1,0)
※この数式は、「変数v1が0の状態でボタンを押すと1に切り替わり、変数v1が1の状態でボタンを押すと0に切り替わる」という処理を表しています。
3.ボタンの詳細設定を行う
ボタンのラベルや色を変更すると、今ボタンがどんな状態であるのかが視覚的にわかりやすくなります。
例:
ラベルの変更・・・スタイル>基本設定>ラベル に以下の通り記述します。
=if($(v1)=0,'打率.280未満 非表示','打率.280未満 表示')
色の変更・・・スタイル>プレゼンテーション>スタイル指定>チャート>背景のオプション>色:数式を使用 に以下の通り記述します。
=if(v1=0,RGB(160,160,160),RGB(50,50,50))
※vOffColor=RGB(160,160,160)、
vOnColor=RGB(50,50,50) などとボタンの色用の変数を設定しておくと、他のチャートにも流用でき、ボタンの色を変更したいときのメンテナンスもしやすくなります
4.表示切替対象の値にflgを立てるスクリプトを書く
表示状態を切り替えたい値にフラグを立てるよう、ロードスクリプトを編集します。
ここでは、打率が.280未満の選手のレコードを対象に表示・非表示状態を切り替えたいので、打率が.280未満の選手のレコードにflg=1が立つよう、下記の通り記載します。
例:
プレミア12野手成績:
LOAD
背番号,
選手名,
打率,
出場試合数,
If(打率 < 0.28,1,0) as 打率flg
FROM [lib://ドキュメント/プレミア12野手成績.xlsx]
(ooxml, embedded labels, table is Sheet1);
5.変数v1の値によってSET文の中身を書き換えられる変数v2を作成する
ここで作成する2つ目の変数の役割は、「変数v1の値によってSET文の中身を書き換えること」です。ここでは、下記2つの状態を切り替えます。
・v1=0でボタンがOFFの場合(=打率が.280未満の選手のレコードを非表示にしたい場合)は、flg=0のレコードのみ集計する
・v1=1でボタンがONの場合(=打率が.280未満の選手のレコードを表示にしたい場合)は、flg=0,1のレコードを集計する
これを数式に表すと以下のようになります。シート作成画面の左下にある変数作成ボタンから、v2という変数を作成し、以下の通り定義してください。
例:
=if($(v1)=0, '0', '0,1')
これでようやく下準備の完了です…!
6.チャートに使用するすべてのメジャーにSET文を組み込む
手順5で作成した変数を使っていく前に、まずはテーブルチャートをシート上にドラッグアンドドロップします(ここではテーブルチャートを使用して説明します)。選手名と出場試合数と打率flgは軸として、打率はメジャーとして列を追加します。
チャート内のすべてのメジャー(今回は打率のみ)に、下記の通りSET文を組み込みます。
例:
=Avg({<打率flg={$(v2)}>}[打率])
v1が「0」(=ボタンOFF)のとき、v2は「'0'」になるので、上記のSET文は「=Avg({<打率flg={'0'}>}[打率])
」となります。
v1が「1」(=ボタンON)のとき、v2は「'0,1'」になるので、上記のSET文は「=Avg({<打率flg={'0,1'}>}[打率])
」となります。
変数を駆使することで、SET文の中身は書き換えることができるのです!
7.ボタンを押すとデータの表示状態を切り替えられる
シートの編集完了ボタンを押し、チャートを見てみましょう。
デフォルトの表示は、「ボタンOFF」の状態のはずです(手順1でv1を「0」にしたため。「1」にすると、「ボタンON」がデフォルト表示になります)。
(変化がわかりやすいよう打率を降順にしています)
それでは、ボタンを押してみましょう! どきどき・・・
!!!
ボタンがONになり、打率が.280未満の選手のレコードも表示されるようになりました!
打率flgを見ると、ボタンをONにしたことで、打率flg=1であるレコードも表示されるようになったことがわかります。
おわりに
このように、ボタン・変数・SET分析を組み合わせることで、Qlik Senseでのデータ表示を柔軟にコントロールすることができます。今回はテーブルチャートでの活用方法をご紹介しましたが、棒チャートなどほかのチャートにも実装が可能なので、ぜひ皆さんも試してみてください!
参考
- 個人成績 - プレミア12(侍ジャパン) - スポーツナビ - プロ野球(https://baseball.yahoo.co.jp/premier12/teams/360/memberlist?kind=b)