# オンデマンド テンプレート アプリケーションの作成

オンデマンド テンプレート アプリケーションは通常の Qlik Sense アプリケーションですが、1 つ重要な違いがあります。そのロード スクリプトには、データ ソースに対するクエリの作成に使用されるデータ バインディング数式が含まれます。それらのデータ バインディング数式は、選択アプリケーションの選択ステートから値を読み取り、その値をテンプレート アプリケーション スクリプトにバインドして、生成されたアプリケーションがユーザー制御のデータ サブセットと一緒にロードされるようにするために、オンデマンド アプリケーションの生成時に使用されます。

テンプレート アプリケーションは、通常、選択アプリケーションと同じデータ ソースに接続されます。選択アプリケーションのロード スクリプトは通常、集計データをロードしてデータ量を減らしつつ、重要な軸やメジャーのインタラクティブなビジュアライゼーションを可能にします。テンプレート アプリケーションのロード スクリプトは、制御されたより詳細なデータ サブセットをロードするクエリを使用します。

テンプレート アプリケーションは、他のユーザーがオンデマンド アプリケーションを生成するためにシートを公開する必要があります。詳細は、[シート、シート グループ、ブックマーク、ストーリーへのアクセス権の付与](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Share/make-public-or-private.htm)をご覧ください。

情報メモオンデマンド テンプレート アプリケーションは、データを直接ロードしません。テンプレート アプリケーション接続は有効である必要があり、正しく接続されているかどうかをテストするには、オンデマンド アプリケーションを生成する必要があります。オンデマンド アプリケーションが生成されると、オンデマンド アプリケーション サービスによってロード スクリプトが修正され、オンデマンド選択アプリケーションの選択ステートがロードされます。オンデマンド アプリケーションがエラーなく生成されれば、テンプレート アプリケーション内の接続が正しく機能していることが確認できます。

情報メモオンデマンド テンプレート アプリケーションを開発する際は、アプリケーションのサイズを考慮してください。展開によっては、ストレージに制限が設けられている場合や、大量のストレージを使用することでクラウド展開が拡張する可能性があります。詳細については、システム管理者に問い合わせてください。

## テンプレート アプリケーションの構造

テンプレート アプリケーションは、オンデマンド アプリケーションのナビゲーション リンクを使用して選択アプリケーションにリンクされます。アプリケーションのナビゲーション リンクには、オンデマンド アプリケーションがデータと一緒にロードされるときにクエリされるレコードの数を制御するためのプロパティが含まれます。テンプレート アプリケーションのロード スクリプトにはデータ バインディング数式が含まれています。その数式により、オンデマンド アプリケーションにデータをロードするときに発行されるクエリを作成するために使用される、選択アプリケーションの項目データが指定されます。

情報メモ

データ バインディング数式の新しい構文が 2020 年 6 月に導入されました。以前の構文とプレフィックス od\_、ods\_、odo\_、odso\_、odb\_は、数量制約、\_n サフィックス、フォーマット指定を含めて、以前と同じように動作します。アプリケーションが 2020 年 6 月より前の Qlik Sense バージョンで動作する場合は、古い構文を使用してください。古い構文については、[[オンデマンド テンプレート アプリケーションの作成 (古いバージョン)](https://help.qlik.com/ja-JP/sense/April2020/Subsystems/Hub/Content/Sense_Hub/LoadData/creating-OnDemand-template-app.htm)] を参照してください。

新しいプレフィックスを使用する場合、\_n サフィックスはサポートされません。

データ バインディング数式の形式は次のとおりです。

$(odag\_FIELDNAME)

odag\_ プレフィックスは、選択アプリケーションの選択ステートをオンデマンド アプリケーションのロード スクリプトにバインドするために使用され、テンプレート アプリケーションをコピーして作成されます。データ バインディング数式で odag プレフィックスに続く部分は、選択アプリケーションの項目と一致する名前にする必要があります。オンデマンド アプリケーションが生成されると、選択アプリケーションの現在の選択ステートを使用して、各項目をバインドするための適切な値が取得されます。新規作成されたオンデマンド アプリケーションのロード スクリプトに含まれる各 $(odag\_FIELDNAME) 数式は、選択アプリケーションの選択ステートの対応する項目において選択された値のリストに置き換えられます。

より特化したデータ バインディング用の他のプレフィックスが利用可能です。特殊なケースの調整とロード ステートメントの最適化の詳細については、[オンデマンド テンプレート アプリケーションのバインディング数式](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/bind-expressions-OnDemand-template-app.htm) を参照してください。

On-demand バインディングは、ロード スクリプトの SELECT ステートメントと WHERE ステートメントに直接挿入できます。バインディングを WHERE ステートメントに直接追加すると、ステートメント内の他の条件と簡単に組み合わせることができます。

ロード スクリプトを作成するときに、プレースホルダー変数 $(odagActive) を追加できます。これにより、サンプル データをテンプレート アプリケーションにロードできるため、すべてのデータをロードしなくてもダイナミック ビューのマスター チャートを作成できます。

情報メモ

テンプレート アプリケーションのスクリプトを変更し、新しいバインド変数を挿入した場合、既存のアプリケーションのナビゲーション リンクを置き換えるために、新しいオンデマンド アプリケーションのナビゲーション リンクを作成する必要があります。リンクを作成しないと、そのテンプレート アプリケーションを使用している既存のオンデマンド アプリケーションに対して、対応する項目の選択が送信されません。

次の例は、サンプルの 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\_ &lt;Field Name&gt; バインディングは、デュアル値を選択し、既定では引用符なしで使用します。

```

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)

オンデマンド アプリケーションでは、SSO をサポートするデータ ソースで シングル サインオン (SSO) を使用できます。エンジンとデータ ソースは、SSO を許容するように構成する必要があります。

エンジンおよびデータ ソースを SSO 用に構成したら、次の構文をテンプレート アプリケーションのスクリプトに追加することによって、テンプレート アプリケーションで SSO を有効にする必要があります。

`///!ODAG_SSO`

On-Demand アプリ サービス は、オンデマンド アプリケーションが生成されたとき、およびそのアプリケーションがリロードされるごとに、スクリプトを解析します。

オンデマンド アプリケーションが SSO でロードされると、エンド ユーザーの ID がデータ ソースに送信されます。エンド ユーザーには、テンプレート アプリケーションのデータ接続で使用されるソースへのアクセス権が必要です。大きなデータ セットが選択された場合でも、それらのソースで、そのユーザーがアクセス権を持っているデータのみがロードされます。