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

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 作為工作階段變數的變數) 套用限制。如需詳細資訊,請參閱定義變數限制的開發人員替代方案

  • 限制會經過驗證,以避免變數無法比對任何值的情境。無效限制的範例:

    • {"minnum": 5000, "maxnum": 4}
    • {"type": "text", "maxnum": 4}

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

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

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

範例 - type

範例 - maxnum

範例 - minnum

範例 - valuesnum

範例 - valuestext

範例 - SETLET

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

範例 - 多個限制

範例 - 解決變數定義衝突

此頁面是否對您有幫助?

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