このページ上
On-demand テンプレート アプリの作成
On-demand テンプレート アプリは通常の Qlik Sense アプリですが、1 つ重要な違いがあります。そのロード スクリプトには、データ ソースに対するクエリの作成に使用されるデータ バインディング数式が含まれます。それらのデータ バインディング数式は、選択アプリの選択ステートから値を読み取り、その値をテンプレート アプリ スクリプトにバインドして、生成されたアプリがユーザー制御のデータ サブセットと一緒にロードされるようにするために、On-demand アプリの生成時に使用されます。
テンプレート アプリは、通常、選択アプリと同じデータ ソースに接続されます。選択アプリのロード スクリプトは通常、集計データをロードしてデータ量を減らしつつ、重要な軸やメジャーのインタラクティブなビジュアライゼーションを可能にします。テンプレート アプリのロード スクリプトは、制御されたより詳細なデータ サブセットをロードするクエリを使用します。
テンプレート アプリの構造
テンプレート アプリは、On-Demand アプリのナビゲーション リンクを使用して選択アプリにリンクされます。アプリのナビゲーション リンクには、On-demand アプリがデータと一緒にロードされるときにクエリされるレコードの数を制御するためのプロパティが含まれます。テンプレート アプリのロード スクリプトにはデータ バインディング数式が含まれています。その数式により、On-demand アプリにデータをロードするときに発行されるクエリを作成するために使用される、選択アプリの項目データが指定されます。
データ バインディング数式の形式は次のとおりです。
$(od_FIELDNAME)
od_ プレフィックスは、選択アプリの選択ステートを On-demand アプリのロード スクリプトにバインドするために使用され、テンプレート アプリをコピーして作成されます。データ バインディング数式で od_ プレフィックスに続く部分は、選択アプリの項目と一致する名前にする必要があります。On-demand アプリが生成されると、選択アプリの現在の選択ステートを使用して、各項目をバインドするための適切な値が取得されます。新規作成された On-demand アプリのロード スクリプトに含まれる各 $(od_FIELDNAME) 数式は、選択アプリの選択ステートの対応する項目において選択された値のリストに置き換えられます。
INLINE Load ステートメントを使用する値をバインドする方法については、「On-demand テンプレート アプリのバインディング数式」を参照してください。
複数の値をフィルタリングするテンプレートアプリの SELECT ステートメントを有効な
SUB ExtendWhere(Name, ValVarName) LET T = Name & '_COLNAME'; LET ColName = $(T); LET Values = $(ValVarName); IF len(Values) > 0 THEN IF len(WHERE_PART) > 0 THEN LET WHERE_PART = '$(WHERE_PART) AND $(ColName) IN ( $(Values) )'; ELSE LET WHERE_PART = ' WHERE $(ColName) IN ( $(Values) )'; ENDIF ENDIF END SUB;
選択アプリによって挿入される節に加えて、SQL ステートメントに、変化しない WHERE 節を組み込みたい場合は、SET ステートメントに
以下は、
FOR EACH fldname IN 'ORIGIN', 'DEST', 'YEAR', 'QUARTER', 'ORIGIN_STATE_ABR', 'DEST_STATE_ABR' LET vallist = $(fldname); WHEN (IsNull(vallist)) LET vallist = ''; IF len(vallist) > 0 THEN CALL ExtendWhere('$(fldname)','vallist'); ENDIF NEXT fldname
項目名のリストは、作成した各項目バインディングで使用される項目名に一致する必要があります。
各項目の値のリストを作成したら、SELECT ステートメントを記述できます。例:
SQL SELECT "MKT_ID", "YEAR", "QUARTER", "ORIGIN", "ORIGIN_STATE_ABR", "DEST", "DEST_STATE_ABR", "TICKET_CARRIER", "FARE_CLASS", "PASSENGERS", "DISTANCE", 1 AS "FLIGHT_COUNT" FROM "SAPH7T"."/QT/AIRPORT_FACT" $(WHERE_PART);
この SELECT ステートメントの
シングル サインオン (SSO)
On-Demand アプリでは、SSO をサポートするデータ ソースで single sign-on (SSO) を使用できます。エンジンとデータ ソースは、SSO を許容するように構成する必要があります。
詳細については、「Qlik Sense で SAML シングル サインオンを有効にするための SAP HANA の設定」および「シングル サインオンを有効にするための Cloudera Impala の構成」を参照してください。
エンジンおよびデータ ソースを SSO 用に構成したら、次の構文をテンプレート アプリのスクリプトに追加することによって、テンプレート アプリで SSO を有効にする必要があります。
///!ODAG_SSO
On-Demand App Service は、On-Demand アプリが生成されたとき、およびそのアプリがリロードされるごとに、スクリプトを解析します。
On-Demand アプリが SSO でロードされると、エンド ユーザーの ID がデータ ソースに送信されます。エンド ユーザーには、テンプレート アプリのデータ接続で使用されるソースへのアクセス権が必要です。大きなデータ セットが選択された場合でも、それらのソースで、そのユーザーがアクセス権を持っているデータのみがロードされます。
テンプレート アプリのノードのリロード
管理者は、テンプレート アプリに対して負荷分散ルールを設定することにより、マルチノード環境において On-demand アプリをリロードする場所を制御できます。負荷分散ルールを設定する場合、テンプレート アプリへのリンクから生成されるアプリはすべて、テンプレート アプリに適用されるルールに従ってロードされます。