Qlikスクリプトもチャート更新すら不要なドロップダウン
前回ドロップダウンをスクリプトでまとめて管理する方法を記載しましたが、スクリプトを触らずにドロップダウンを更新出来たら素敵ですよね?
今回はその方法をご案内します。
ドロップダウン項目リスト化
まずは、Excelファイルでドロップダウンリストを作成します。
ListNo,Label,Value,Sortの順にリストの番号、表示名、フィールド名、並び替えの基準になるフィールド名を設定します。完成後Amazon_S3へ格納します。

Qlikスクリプトへ追加
データ取り込み後各フィールド名を変更したセクションの下にdoropdownセクションを作成します。
先ほど設置したExcelファイルを読み込みます。
1.データ行番号を連番として付与
2.値とラベルを’~’でつないだテキストを作成
3.vDropList用文字列(パイプ記号( | )で連結した文字列)作成
中身:値~ラベル|値~ラベル|値~ラベル という形の文字列
4.vDropSort、vDropValue、vDropLabelで使用する文字列(シングルクォーテーションで囲んでカンマ記号( , )で
連結した文字列)作成
中身: ’ ‘,’ ‘,’ ‘という形の文字列

For i = 1 to 2
DropList:
Load
RowNo() as SEQ,
Label,
Value,
Sort,
If(Value = Label,Value,Value & '~' & Label) as ValueLabel
FROM [lib://Amazon_S3_liner-notes/test_u/dropList/ブログ用ドロップダウンリスト.xlsx]
(ooxml, embedded labels, table is ドロップダウン)
Where ListNo = $(i);
drop:
Load
Concat(Distinct ValueLabel,'|',SEQ) as droplist
Resident DropList
Where Not Label Like '■*';
Let vDropList_0$(i) = FieldValue('droplist',1);
drop2:
Load
Concat(Distinct Chr(39) & Value & Chr(39),',',SEQ) as dropvalue,
Concat(Distinct Sort,',',SEQ) as dropsort,
Concat(Distinct Chr(39) & PurgeChar(Label,'■・01234567890. ') & Chr(39),',',SEQ) as droplabel
Resident DropList
Where Not Label Like '■*';
Let vDropValue_0$(i) = FieldValue('dropvalue',1);
Let vDropLabel_0$(i) = FieldValue('droplabel',1);
Let vDropSort_0$(i) = FieldValue('dropsort',1);
Drop Table drop,drop2,DropList;
Qlik変数設定
チャートで使用する変数を設定します。
シートの編集から変数ボタンをクリックし新規作成をクリック

vDim_01とvDim_02の変数を作成します。
名前と定義は下記テーブルの様に設定します。

| 名前 | 定義 |
|---|---|
| vDim_01 | 性別 |
| vDim_02 | 注文日 |
ドロップダウン作成
画面左のアセットのチャートからダッシュボードオブジェクトの変数入力をシートへクリックアンドドラッグします。

変数入力チャートをクリックし右のプロパティのVariableでNameに使用する変数、Show asでDrop downを選択し
ValuesではFixed or dynamic valuesでDynamicを選択、Dynamic valuesには$(対応するvDropList○○)で設定

これでドロップダウン完成です。
棒グラフをドロップダウンの下へ設定しました。
軸は$(vDim_01)と$(vDim_02)、メジャーは注文合計金額です。
チャートタイトルはスクリプトで作成したvDropValueとvDropLabelを使用しています。
='Sheet1 '
& Pick(
Match(vDim_01,$(vDropValue_01)),
$(vDropLabel_01)
)
& '別集計'これでリストから項目を取り込みドロップダウンに反映することができるようになりました!

メンテナンス
完成後Sheet1のドロップダウンに顧客IDと都道府県の分析軸が必要になったとします。
ここで真価を発揮するのが今回のリスト取り込み型のドロップダウンです。
手順はExcelファイルを更新してアプリをリロードするだけです。

変更後アプリをリロードすると...

非常に簡単な手順で分析軸を追加できました!
まとめ
今回は、ドロップダウンの設定をQlikスクリプトへ直接記述するのではなく、Excelファイルから読み込む仕組みを作成しました。
この方法により、新しい分析軸の追加や表示名の変更、並び順の変更はExcelファイルを更新してアプリをリロードするだけで反映できます。Qlikスクリプトを毎回修正する必要がないため、メンテナンス性が向上し、運用負荷も大幅に軽減できます。
分析軸が増えるたびにスクリプトを修正していた方は、ぜひ一度この方法を試してみてください。更新作業がシンプルになり、より柔軟にドロップダウンを管理できるようになります。


