On-demand テンプレート アプリの作成
On-demand テンプレート アプリは通常の Qlik Sense アプリですが、1 つ重要な違いがあります。そのロード スクリプトには、データ ソースに対するクエリの作成に使用されるデータ バインディング数式が含まれます。それらのデータ バインディング数式は、選択アプリの選択ステートから値を読み取り、その値をテンプレート アプリ スクリプトにバインドして、生成されたアプリがユーザー制御のデータ サブセットと一緒にロードされるようにするために、On-demand アプリの生成時に使用されます。
テンプレート アプリは、通常、選択アプリと同じデータ ソースに接続されます。選択アプリのロード スクリプトは通常、集計データをロードしてデータ量を減らしつつ、重要な軸やメジャーのインタラクティブなビジュアライゼーションを可能にします。テンプレート アプリのロード スクリプトは、制御されたより詳細なデータ サブセットをロードするクエリを使用します。
テンプレート アプリは、他のユーザーが On-demand アプリを生成するためにシートを公開する必要があります。詳細については、「シート、シート グループ、ブックマーク、ストーリーへのアクセス権の付与」を参照してください。
テンプレート アプリの構造
テンプレート アプリは、On-Demand アプリのナビゲーション リンクを使用して選択アプリにリンクされます。アプリのナビゲーション リンクには、On-demand アプリがデータと一緒にロードされるときにクエリされるレコードの数を制御するためのプロパティが含まれます。テンプレート アプリのロード スクリプトにはデータ バインディング数式が含まれています。その数式により、On-demand アプリにデータをロードするときに発行されるクエリを作成するために使用される、選択アプリの項目データが指定されます。
データ バインディング数式の新しい構文が 2020 年 6 月に導入されました。以前の構文とプレフィックス od_、ods_、odo_、odso_、odb_は、数量制約、_n サフィックス、フォーマット指定を含めて、以前と同じように動作します。アプリが 2020 年 6 月より前の Qlik Sense バージョンで動作する場合は、古い構文を使用してください。古い構文については、[On-demand テンプレート アプリの作成 (古いバージョン)] を参照してください。
新しいプレフィックスを使用する場合、_n サフィックスはサポートされません。
データ バインディング数式の形式は次のとおりです。
$(odag_FIELDNAME)
od_ プレフィックスは、選択アプリの選択ステートを On-demand アプリのロード スクリプトにバインドするために使用され、テンプレート アプリをコピーして作成されます。データ バインディング数式で od_ プレフィックスに続く部分は、選択アプリの項目と一致する名前にする必要があります。On-demand アプリが生成されると、選択アプリの現在の選択ステートを使用して、各項目をバインドするための適切な値が取得されます。新規作成された On-demand アプリのロード スクリプトに含まれる各 $(odag_FIELDNAME) 数式は、選択アプリの選択ステートの対応する項目において選択された値のリストに置き換えられます。
より特化したデータ バインディング用の他のプレフィックスが利用可能です。特殊なケースの調整とロード ステートメントの最適化の詳細については、On-demand テンプレート アプリのバインディング数式 を参照してください。
On-demand バインディングは、ロード スクリプトの SELECT ステートメントと WHERE ステートメントに直接挿入できます。バインディングを WHERE ステートメントに直接追加すると、ステートメント内の他の条件と簡単に組み合わせることができます。
ロード スクリプトを作成するときに、プレースホルダー変数 $(odagActive) を追加できます。これにより、サンプル データをテンプレート アプリにロードできるため、すべてのデータをロードしなくてもダイナミック ビューのマスター チャートを作成できます。
テンプレートアプリのスクリプトを変更し、新しいバインド変数を挿入した場合、既存のアプリのナビゲーションリンクを置き換えるために、新しい On-demand アプリのナビゲーション リンクを作成する必要があります。リンクを作成しないと、そのテンプレートアプリを使用している既存の On-demand アプリに対して、対応する項目の選択が送信されません。
次の例は、サンプルの On-demand テンプレート ロード スクリプトを示しています。
サンプル データの追加
この例では、サンプル値を追加して、バインディングが完了していなくてもアプリをロードできるようにします。
IF '$(odagActive)'='' THEN
trace ODAG variables not inserted! Loading sample data.;
SET 'odag_Origin Code' = '''LAX''';
SET 'odag_Destination Code' = '''JFK''';
SET odagn_Year = 2015;
SET odag_Quarter = '''1''';
SET 'odag_Ticket Carrier Code' = '''CA''';
SET 'odag_Fare Class' = '''X''';
END IF;
テンプレート アプリでのデータのロード
以下は、サンプルデータをロードし、生成された odag_FIELDNAME バインディングでフィルタリングするためのサンプル ロード スクリプトです。odagn_ <Field Name> バインディングは、デュアル値を選択し、既定では引用符なしで使用します。
SQL SELECT *
FROM FlightDB.Flights
WHERE "Origin Code" IN ($(odag_Origin Code))
AND "Destination Code" IN ($(odag_Destination Code))
AND "Year" IN ($(odagn_Year))
AND "Quarter" IN ($(odag_Quarter))
AND "Ticket Carrier Code" IN ($(odag_Ticket Carrier Code))
AND "Fare Class" IN ($(odag_Fare Class));
シングル サインオン (SSO)
On-Demand アプリでは、SSO をサポートするデータ ソースで シングル サインオン (SSO) を使用できます。エンジンとデータ ソースは、SSO を許容するように構成する必要があります。
エンジンおよびデータ ソースを SSO 用に構成したら、次の構文をテンプレート アプリのスクリプトに追加することによって、テンプレート アプリで SSO を有効にする必要があります。
///!ODAG_SSO
On-Demand アプリ サービス は、On-Demand アプリが生成されたとき、およびそのアプリがリロードされるごとに、スクリプトを解析します。
On-Demand アプリが SSO でロードされると、エンド ユーザーの ID がデータ ソースに送信されます。エンド ユーザーには、テンプレート アプリのデータ接続で使用されるソースへのアクセス権が必要です。大きなデータ セットが選択された場合でも、それらのソースで、そのユーザーがアクセス権を持っているデータのみがロードされます。