メイン コンテンツをスキップする 補完的コンテンツへスキップ

Constrain

Constrain ステートメントは、スクリプト変数を定義するために Let または Set ステートメントと組み合わせて使用できます。Constrain ステートメントを使用すると、これらの変数の取り得る値に制約を定義できます。変数定義が制約に違反すると、リロードは失敗します。制約を使用すると、変数の値が特定の型に一致し、特定の数値範囲内にあり、定義した許容値と一致することを要求できます。

構文:  

Constrain variablename = json

説明:

  • variablename はスクリプト変数です。

  • json は制約を指定する有効な JSON オブジェクトです。個々の制約は、キーと値のペアとしてこのオブジェクト内に追加されます。

制約タイプ
制約タイプ (キー) 意味 制約要件 (値)
"type" 変数の値を特定のデータ型に制限します。

"text" はテキスト タイプを指定します。

"number" は数値型を指定します。

CONSTRAIN vExampleText = {"type": "text"}
CONSTRAIN vExampleNumeric = {"type": "number"}
"maxnum" 変数の最大値を設定します。 数値のみ (整数または浮動小数点)。科学的記数法は許可されます。
CONSTRAIN vExample = {"maxnum": 5000}
"minnum" 変数の最小値を設定します。 数値のみ (整数または浮動小数点)。科学的記数法は許可されます。
CONSTRAIN vExample = {"minnum": 250}
"valuesnum" 変数に許容される数値のリストを定義します。 角括弧で囲まれた数値のカンマ区切りリスト。例: [1,2,3]
CONSTRAIN vExample = {"valuesnum": [1,2,3]}
"valuestext" 変数に許容されるテキストのリストを定義します。 角括弧で囲まれた文字列のカンマ区切りリスト。例: ["a","b","c"]
CONSTRAIN vExample = {"valuestext": ["Department A", "Department B", "Department C"]}

Constrain ステートメントを使用する場合

Constrain ステートメントを使用して、不要な変数値が分析アプリに読み込まれるのを防ぎます。 次のセクションでは、具体的な使用方法について説明します。

リロード時の変数更新

Constrain は、リロード時の変数更新と組み合わせて使用すると特に便利です。リロード時の変数更新では、Reloads APIvariables プロパティを使用して、アプリのリロード中に変数を動的に更新できます。Constrain ステートメントは、悪意のある変数定義や不適切な形式の変数定義が分析のリロードに組み込まれるのを防ぎます。

リロード時の変数の更新は、Constrain ステートメントとともに、次のユース ケースをサポートします。

  • 顧客 ID や名前などの条件に基づいてデータを選択的にロードするテンプレート アプリ (ロード時に変数として渡すことができます)

  • 多数の Qlik Cloud テナントに分散されたアプリを一元管理する

  • QlikViewQlik Sense Client-Managed からクラウドへの変数指向のワークフローとタスクを移行する

セキュリティ、信頼性、コラボレーション

Constrain は、リロード時の変数更新シナリオ以外で使用する場合でも、共同ロード スクリプトの開発中など、ロード スクリプト作成のセキュリティ制御を強化します。たとえば、アプリ所有者は変数値の制約を定義し、アプリが確実に正常にリロードされるために満たす必要がある特定の条件を共同作業者に通知できます。

考慮事項

  • 変数の Constrain 定義は有効な JSON オブジェクトである必要があります。

  • 1 つの変数に対して複数の制約を指定できます。変数のすべての制約は、単一の制約オブジェクト内に含める必要があります。例については、「例 - 複数の制約」を参照してください。

  • 特定の名前のスクリプト変数をすでにアプリにロードしている場合、その変数の制約と値を定義しようとすると、元の変数と再定義された変数の競合により失敗する可能性があります。

    これらの競合を解決するには、空の定義を挿入して変数の制約と値をリセットします。例:

    CONSTRAIN x;
    LET x;
    
    CONSTRAIN x;
    SET x;

    その後、ロード スクリプトの後続のセクションで変数とその制約を再定義できます。長い形式の例については、 「例 - 変数定義の競合の解決」を参照してください。

  • 変数定義と制約定義の順序は重要ではありません。ただし、変数関連のリロードに失敗した場合、ブレークポイントが発生する行は異なります。

  • Constrain スクリプト ステートメントは、スクリプト変数の変数定義のみを制限します。パブリック API を使用して、スクリプト変数およびエンド ユーザー変数 (シート ビューで作成または更新される変数、または API を使用してセッション変数として作成または更新される変数) に制約を適用することもできます。詳細については、「変数制約を定義するための開発者の代替方法」を参照してください。

変数制約を定義するための開発者の代替方法

ロード スクリプト内の Constrain ステートメントを使用する代わりに、パブリック API を使用して変数制約を定義することもできます。API 経由で制約を定義すると、ロード スクリプト内で直接、シート ビューで、または Reloads API 経由で変数値を更新しようとするすべての試みは、制約の対象になります。

パブリック API 経由で変数制約を定義するには、Qlik Sense Engine (qix) API: GenericVariableConstraintsGenericVariableConstraints オブジェクトを使用します。

例 - type

例 - maxnum

例 - minnum

例 - valuesnum

例 - valuestext

例 - SETLET

これらの例は、変数定義中に SET または LET を使用する場合に制約が適用される方法の違いを示しています。すべての例では type 要件を適用する制約を使用していますが、これらの原則は一般にすべての制約タイプに適用されます。

例 - 複数の制約

例 - 変数定義の競合の解決

このページは役に立ちましたか?

このページまたはコンテンツにタイポ、ステップの省略、技術的エラーなどの問題が見つかった場合はお知らせください。