ヤマダです。
2023年もコツコツ投稿していこうと思います。今年もよろしくお願いいたします。
今回はQlikSenseのオンデマンドアプリ(On Demand App Generation:ODAG)を実装してみました。QlikViewとどのような違いがあるか調査してみようと思います。
ODAGとは?
公式ドキュメントはこちらになります。
簡単に言うと、アプリ(qvfファイル)から引数を渡し、別アプリをリロードする手法となります。リロードするアプリは引数を受け取り、ロードスクリプトのリロード条件に設定することでデータ件数を少なくすることができます。
ODAGの構成
アプリは2つ作成する必要があります。
・引数を渡すアプリ(以降、選択アプリ)
リストボックスを表示し、データを選択できる画面を作成します。
・引数を貰うアプリ(以降、テンプレートアプリ)
選択アプリから引数を受け取り、ロードスクリプトに設定します。
実装方法
1.サンプルデータの説明
2.管理コンソールでODAGの設定をONにする
3.選択アプリの実装
4.テンプレートアプリの実装
5.選択アプリのODAGボタンの作成
サンプルデータの説明
分類コード、商品コード、金額の項目があるデータを使用します。
分類コード | 商品コード | 金額 |
---|---|---|
S02 | A001 | 400000 |
S01 | B001 | 5000 |
S01 | C001 | 2000 |
S01 | D001 | 20000 |
S03 | E001 | 150000 |
S02 | A001 | 200000 |
S01 | B001 | 15000 |
S01 | C001 | 10000 |
S01 | D001 | 60000 |
S03 | E001 | 180000 |
S02 | A001 | 1000000 |
S01 | B001 | 10000 |
S01 | C001 | 8000 |
S01 | D001 | 120000 |
S03 | E001 | 210000 |
S02 | A001 | 600000 |
S01 | B001 | 20000 |
管理コンソールの設定
サーバーのODAGの設定をOFF→ONにします。
選択アプリの実装
分類コード、商品コードをロードし、シートにリストボックスを設定します。
アプリ名は「uriage_selection」とし保存します。
テンプレートアプリの実装
ロードスクリプトで引数の設定を行います。
IF '$(odagActive)'='' THEN
SET odags_商品コード='''A001''';
END IF;
LOAD
商品コード,
分類コード,
金額
FROM [lib://DataFiles/売上データ.xlsx]
(ooxml, embedded labels, table is Sheet1)
Where Match(商品コード,$(odags_商品コード));
変数$(odagActive)
は選択アプリからリロードされた場合に「1」がセットされます。自身でリロードした場合は空白になります。1~3行目は開発用のコードとなります。
5行目のデータロードで商品コードの抽出を記載をしております。変数$(odag_商品コード)
には選択アプリで選択した商品コードの値がセットされます。
(今回の例は商品コードのみですが、分類コードも設定することは可能です)
アプリ名は「uriage_detail」とし保存します。
ODAGまわりの変数名は全てプレフィックスにがつきます。リファレンスはこちらになります。主に使用するのはODAG_
とODAGA_
くらいかと思います。
選択アプリのODAGボタンの作成
シートの編集画面で画面左側の「アプリのナビゲーションリンク」→「新規作成」をクリックします。
設定画面が表示されますので、各情報を入力します。
設定情報は以下になります。
項目 | 説明 | 設定値 |
---|---|---|
名前 | ボタンのラベルを入力 | odag実行 |
テンプレートアプリ | テンプレートアプリの設定 | uriage_detail |
数式 | ODAGの実行条件の数式を設定 | count(distinct [商品コード]) |
最大行数 | ODAGの実行条件の最大行数を設定 | 1 |
生成されたアプリの最大数 | ODAGのアプリの保持数を設定 | 1 |
生成されたアプリを上書き | ODAGのアプリを上着きするかの設定 | チェックOFF |
保持期間 | ODAGアプリの保存期間 | 有効期限なし |
起動時のデフォルト表示 | 初期表示するシート名を設定 | シート1 |
数式、最大行数の補足ですが、今回の例では数式で商品コードの件数を集計し、集計結果が「1」のみODAG実行となっております。つまり、選択アプリで商品コードを1つ選択した場合のみODAGが実行可能となります。
設定後はODAGのオブジェクトをドラッグしてボタンを作成します。
ODAGの実行
選択アプリを開き商品コードを1つ選択し以下の操作を行います。
アプリを開くと選択したデータのみ取り込まれていることがわかります。
まとめ
QlikViewではODAGサポート対象外だったのですが、QlikSenseからはサポート対象となりました。また、GUIで全て設定できるようになりました。(QlikViewではdllのデプロイ、ローカルユーザの作成などが必要でした)
ODAGはユーザがリロードを任意に実行できる分、都度メモリを消費します。また、アプリ数も増えますので、運用面、サーバーリソースの十分な検討が必要です。
次回はDynamicViewについて触れようと思います。
ではまた!