跳到主要內容 跳至補充內容

Constrain

Constrain 陳述式可以與 LetSet 陳述式合併使用,以定義指令碼變數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 API 上的 variables 屬性動態更新變數。Constrain 陳述式可防止在分析載入中納入惡意或格式不正確的變數定義。

載入時間變數更新以及 Constrain 陳述式支援以下使用情況:

  • 範本應用程式根據客戶 ID 或名稱等條件選擇性地載入資料 (可以在載入時間作為變數傳遞)

  • 集中控制分佈在多個 Qlik Cloud 租用戶的應用程式

  • 將變數導向的工作流程和任務從 QlikViewQlik Sense 用戶端管理 遷移到雲端

安全性、可靠性和共同作業

即使在載入時間變數更新情境之外使用,Constrain 也能增強載入指令碼撰寫的安全性控制——例如,在共同作業載入指令碼開發期間。例如,應用程式擁有者可以定義變數值的限制,告知共同作業者需要滿足的特定條件,才能可靠地成功載入應用程式。

考慮事項

  • 變數的 Constrain 定義必須是有效的 JSON 物件。

  • 您可以為單一變數指定多個限制。變數的所有限制都需要包含在單一限制物件內。如需範例,請參閱 範例 - 多個限制

  • 如果您已經將具有特定名稱的指令碼變數載入到應用程式中,則將來嘗試為該變數定義限制和值時,可能會因為原始變數和重新定義的變數之間發生衝突而失敗。

    若要解決這些衝突,請插入空白定義,以重設變數限制和值。範例:

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

    然後,您可以在載入指令碼的後續區段中重新定義變數及其限制。有關長格式範例,請參閱 範例 - 解決變數定義衝突

  • 變數定義和限制定義的順序並不重要。不過,如果與變數相關的載入失敗,則發生斷點的行將會有所不同。

  • Constrain 指令碼陳述式僅限制指令碼變數的變數定義。您也可以使用公用 API 對指令碼和最終使用者變數 (在工作表檢視中建立或更新的變數或使用 API 作為工作階段變數的變數) 套用限制。如需詳細資訊,請參閱定義變數限制的開發人員替代方案

定義變數限制的開發人員替代方案

您也可以使用公用 API 來定義變數限制,而不是使用載入指令碼中的 Constrain 陳述式。透過 API 定義限制時,所有更新變數值的嘗試 (無論是直接在載入指令碼中、在工作表檢視中或透過 Reloads API) 都會受到限制。

若要透過公用 API 定義變數限制,請使用 Qlik Sense Engine (qix) API 中的 GenericVariableConstraints 物件:GenericVariableConstraints

範例 - type

範例 - maxnum

範例 - minnum

範例 - valuesnum

範例 - valuestext

範例 - SETLET

這些範例顯示了在變數定義期間使用 SETLET 時套用限制的方式之差異。所有範例都使用套用 type 要求的限制,但這些原則通常適用於所有限制類型。

範例 - 多個限制

範例 - 解決變數定義衝突

此頁面是否對您有幫助?

若您發現此頁面或其內容有任何問題——錯字、遺漏步驟或技術錯誤——請告知我們!