Qlik変数入力のドロップダウンをスクリプトでまとめて管理!

目次

Qlikのシート開発で便利なドロップダウン機能

チャートの切替に便利なドロップダウンですが、1つのアプリ内でシートごとに複数パターンのドロップダウンを配置すると、どこでどのドロップダウンを使用しているのか把握しづらくなります。その結果、管理やメンテナンスが複雑になります。

ドロップダウンを個別管理する問題点

まずは各パターンのドロップダウンを作成し複数のチャートへ設置した場合、どこに何を設定したかわからなくなり、1ヵ所のドロップダウンに変更を加えると他のシートへ不具合が出てしまいます。
変数vDim_01~04を作成しドロップダウンに設定します。

上記Dynamic valuesに下記を設定しています。
vDim_01 : ‘年齢|性別|都道府県名~エリア|注文カテゴリ~カテゴリ|商品コード名~商品コード’
vDim_02 : ‘都道府県名~エリア|注文カテゴリ~カテゴリ|商品コード名~商品コード’
vDim_03 : ‘年齢|性別|都道府県名~エリア’
vDim_04 : ‘年齢|性別’
このドロップダウンを複数シート(チャートは省略)に展開した場合どこに何を設置したかわかりますか?

例えば、Sheet2のドロップダウン(vDim_03)で商品コードが必要になったとします。商品コードを追加して選択するとどうなるでしょうか。
新しく追加した商品コードは、vDim_03を使用した他のシートには存在しないため空白になってしまいます。
1ヵ所変更するたびに、すべてのシートを確認しながら修正しなければなりません。

Qlikスクリプトで解決

スクリプトで一元管理することで煩わしいドロップダウンメンテナンスから解放されます。
方法は、スクリプトの初期設定直後に変数を定義するだけです。
変数リスト、Value、Labelに分けて3種類を記載します。

//変数リスト 
SET vDropList_01 = '年齢|性別|都道府県名~エリア|注文カテゴリ~カテゴリ|商品コード名~商品コード';
SET vDropList_02 = '都道府県名~エリア|注文カテゴリ~カテゴリ|商品コード名~商品コード';
SET vDropList_03 = '年齢|性別|都道府県名~エリア|商品コード名~商品コード';
SET vDropList_04 = '年齢|性別';

//Value
SET vDropValue_01 ='年齢','性別','都道府県名','注文カテゴリ','商品コード名';
SET vDropValue_02 = '都道府県名','注文カテゴリ','商品コード名';
SET vDropValue_03 = '年齢','性別','都道府県名','商品コード名';
SET vDropValue_04 = '年齢','性別';

//Label
SET vDropLabel_01 ='年齢','性別','エリア','カテゴリ','商品コード';
SET vDropLabel_02 ='エリア','カテゴリ','商品コード';
SET vDropLabel_03 ='年齢','性別','エリア','商品コード';
SET vDropLabel_04 ='年齢','性別';

その後、vDim_01 ~ vDim_04のドロップダウンのDynamic valuesへ対応するvDropList_01 ~ vDropList_04を設定します。

ドロップダウン入替後シートタイトルも変更します。
シートの編集→チャートを選択→プロパティ→スタイル→基本設定で
個別に変換対象を判定する処理からvDropValueとvDropLabelを利用して対応する表示名を取得する処理へ変更します。

='Sheet1 '
& Pick(
    Match(vDim_01,$(vDropValue_01)),
    $(vDropLabel_01)
)
& ' × '
& Pick(
    Match(vDim_03,$(vDropValue_03)),
    $(vDropLabel_03)
)
& '別集計'

入替完了!

一元管理が可能にした簡単なメンテナンス

冒頭で空白になったドロップダウン(vDim_03)に商品コードを追加してみます。
Dynamic valuesにはvDropList_03を使用してますのでスクリプト側の変数リスト、Value、Labelの03へ商品コードを追加します。

スクリプトに追加を終えたら、データロードをクリックします。

これで変更完了です。
sheet2のドロップダウンで商品コードを選択します。
冒頭では空白になっていたSheet1、Sheet5のドロップダウンも、意図したとおり商品コードが表示されるようになりました。

まとめ

Qlikのドロップダウンをシートごとに個別管理していると、設定箇所の把握が難しくなり、仕様変更のたびに複数シートを確認・修正する必要があるため、メンテナンス性が大きく低下します。

今回紹介した方法では、ドロップダウンの選択肢(Value・Label・変数リスト)をスクリプトで一元管理し、各シートでは共通の変数を参照する構成に変更しました。これにより、選択肢の追加・変更はスクリプトを修正してデータロードするだけで全シートへ反映され、個別の修正作業が不要になります。

シートタイトルなどの表示名も同じ仕組みで管理できるため、開発効率だけでなく保守性や設定ミスの防止にもつながります。複数の分析シートを運用するQlikアプリでは、ドロップダウンをスクリプトで一元管理する構成を採用することで、変更に強く、メンテナンスしやすいアプリを実現できます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次