On-Demand template 應用程式中的繫結運算式
範本應用程式中的資料繫結可指定來自對應 selection 應用程式的哪些資料用於闡明載入資料到 On-demand 應用程式時發出的查詢。
繫結運算式的基本格式--$(odag_FIELDNAME)--不是唯一可用於繫結運算式的方法。其他前置詞可用來調整選項並確保範本應用程式正確載入資料。
可用繫結前置詞
一般前置詞格式為 odag[s|o][n][cnt],其中:
- s - 僅包括所選值
- o - 僅包括可選值
- n - 選取數字版本,依預設沒有引號
- cnt - 插入值的數量,而非實際值
下列表格提供可用繫結前置詞的所有版本清單。範例假定一個名為 MyField 的欄位,其中 1、2、3 作為所選值 (綠色值),而 4 作為選用值 (白色值)。
前置詞 | 描述 | 範例 | 取代成 |
---|---|---|---|
odag_ | 以所選 (綠色) 和可選 (白色) 值取代。選取文字版本的值。 這是字串值的標準前置詞。 | $(odag_MyField) | '1','2','3','4' |
odagcnt_ | 在對應的 odag_ 繫結中以值的數量取代。 此前置詞用於查詢最佳化。 | $(odagcnt_MyField) | 4 |
odagn_ |
以所選 (綠色) 和可選 (白色) 值取代。選取數字版本的值。 這是數值的標準前置詞。 資訊備註
若資料模型可以沒有任何所選或可選的欄位值,則必須在運算式中指定 noValue。例如 $(odagn_MyField){"noValue":"-99999"}。 如需詳細資訊,請參閱變更值的引號和分隔符號字元。 |
$(odagn_MyField) | 1,2,3,4 |
odagncnt_ | 在對應的 odagn_ 繫結中以值的數量取代。 這用於查詢最佳化。 | $(odagncnt_MyField) | 4 |
odago_ |
以可選 (白色) 值取代。選取文字版本的值。 這用於查詢最佳化。 |
$(odago_MyField) | '4' |
odagocnt_ | 在對應的 odago_ 繫結中以值的數量取代。 這用於查詢最佳化。 | $(odagocnt_MyField) | 1 |
odagon_ |
以可選 (白色) 值取代。選取數字版本的值。 這用於查詢最佳化。 |
$(odagon_MyField) | 4 |
odagoncnt_ | 在對應的 odagon_ 繫結中以值的數量取代。 這用於查詢最佳化。 | $(odagoncnt_MyField) | 1 |
odags_ |
以所選 (綠色) 值取代。選取文字版本的值。 這用於查詢最佳化。 |
$(odags_MyField) | '1','2','3' |
odagscnt_ | 在對應的 odags_ 繫結中以值的數量取代。 這用於查詢最佳化。 | $(odagscnt_MyField) | 3 |
odagsn_ |
以所選 (綠色) 值取代。選取數字版本的值。 這用於查詢最佳化。 |
$(odagsn_MyField) | 1,2,3 |
odagsncnt_ | 在對應的 odagsn_ 繫結中以值的數量取代。 這用於查詢最佳化。 | $(odagsncnt_MyField) | 3 |
文字版本會篩選掉空的值。數字版本會篩選掉非數字和 NaN 值。
為大型資料庫最佳化
odags_ 和 odagsn_ 前置詞的用途為查詢最佳化。若繫結欄位中沒有選項,則 odag_ 包括所有值,而 odags_ 則不包括任何值。在某些情況下,使用 odags_ 和 odagscnt_ 前置詞更有效率。這可讓您測試值的集合是否為空。例如,若在 MyField 中沒有進行任何選取,則比起測試 odag_MyField 中的所有值,下列方式更有效率。
若在不是 on-demand 欄位的 selection 應用程式中,有要選取的替代欄位,則無法使用 odags_。例如,若使用者在 CountryName 中進行選取,但繫結運算式位於關聯欄位 CountryCode,則無法使用 odags_。在這些情況下,可以改用 odago_。若 odago_ 繫結中沒有任何值,可以表示應納入所有值,或者不應納入任何值。
繫結數值
當要繫結至 On-demand app (On-demand 應用程式) 的資料包含數字而非字串時,停用數值欄位的引號括住行為非常實用。例如,如果銷售記錄包含數值 DAY_OF_WEEK 資料行,且您想要 selection 應用程式的使用者選擇 DAY_OF_WEEK 的任意組合,則您可以增加用於載入 selection 應用程式的彙總查詢,以便將 DAY_OF_WEEK 同時包含在選取清單和組成群組依據清單中。選取 DAY_OF_WEEK 值時,如果其用引號括住,且資料庫不支援自動從字串類型轉換為數值,則會導致執行時間查詢錯誤。
若要處理此情況,可以使用數字版本的繫結運算式後置詞。這迫使欄位繫結使用來自 selection 應用程式的數值,而非字串值。下列數字版本可供使用:
- odagn_
- odagon_
- odagsn_
透過使用數字版本,會從儲存所選值之雙值的數字部分選取值,依照預設,值不會加上引號。
需要特定數目的選取項目
在某些情況下,可能必須要求 On-demand 應用程式查詢包含特定欄位的特定數目或範圍的值。例如,如果 On-demand 應用程式的查詢包含 BETWEEN 子句,以便取得開始和結束日期之間的所有銷售,則 YEARQUARTER 欄位的繫結運算式可以採用後置詞語法 [2],這表示將需要針對 YEARQUARTER 正好選取兩個值,亦即:
只要不是正好選取兩個 YEARQUARTER 值,selection 應用程式上的 On-demand 應用程式導覽點將保持停用。將顯示一則訊息,指出必須正好選取兩個 YEARQUARTER 值。
選取數量限制可在 selection app (選取應用程式) 和 On-demand app (On-demand 應用程式) 之間建立必要連結。這不同於不使用數量限制式的繫結運算式。例如,template app (範本應用程式) 的指令碼包含沒有數量限制的繫結運算式時,亦即:
不需要 selection 應用程式包含名為 MYFIELD 的欄位,也不需要該欄位有任何選定的值 (如果不存在)。如果 selection 應用程式未包含名為 MYFIELD 的欄位,或者使用者只是忘記做出任何選擇,則當做出其他選擇以滿足記錄限制值條件時,On-demand 應用程式導覽點仍可以變為啟用狀態。
如果是另一種情況,則繫結運算式:
現在對 selection app (選取應用程式) 設定了兩項需求:
- Selection 應用程式必須包含名為 MYFIELD 的欄位。
- 使用者必須針對 MYFIELD 至少選取一個值。
此類型的繫結運算式必須謹慎使用,因為這會限制哪些 selection 應用程式可以搭配範本應用程式使用。您不應在範本應用程式的繫結上使用此數量限制式,除非您確定要強制執行連結至該範本應用程式的所有 selection 應用程式上的選項數量需求。
若要執行資料繫結程序,On-demand 應用程式服務會使用對指令碼中的註解不起作用的字串替代方式。這表示您不應在註解中使用繫結運算式,除非您希望這些註解包含應用程式產生後的繫結值清單。
可以設定其他數量限制。下表概述了不同的選取數量限制組合。
限制模式 | 選取需求 |
---|---|
$(odag_YEARQUARTER)[2] | 必須選取正好 2 個 YEARQUARTER 值。 |
$(odag_YEARQUARTER)[2-4] | 必須選取 2 到 4 個 YEARQUARTER 值。 |
$(odag_YEARQUARTER)[2+] | 必須至少選取 2 個 YEARQUARTER 值。 |
$(odag_YEARQUARTER)[2-] | 最多可選取 2 個 YEARQUARTER 值。 |
變更值的引號和分隔符號字元
將 selection 應用程式中選定欄位中的值清單插入 template 應用程式的指令碼中時,值會以單引號括住並以逗號分隔。這些是引號和分隔符號的預設字元。在附加到每個欄位之繫結陳述式的語法中,這些值可以變更。例如︰
隨後可在制訂從 selection 應用程式取用的繫結值清單時使用這些新的值。例如,若選取的值是該年的前三個月,則清單建構方式如下:
引號和分隔符號的預設值適用於大多數標準 SQL 資料庫。但是,它們可能不適用於某些 SQL 資料庫,且無法用於許多動態資料來源,如 NoSQL 和 REST。針對這些來源,您需要附加此繫結運算式,以變更引號和分隔符號字元。
下列表格概述用於變更引號和分隔符號字元的格式參數。
參數 | 預設值 | 定義 |
---|---|---|
引號 |
' (單引號) 用於文字前置詞 空白用於數字前置詞 |
將新增於每個值之前和之後 |
分隔符號 | , (逗號) | 將新增於所有值之間 |
quoteReplace | '' (雙單引號) |
若值不是空白,且引號不是空白,則值內部出現引號的所有地方將會以指定字串取代。 資訊備註對於 odagn_ 等數字前置詞,quoteReplace 作為參數不受支援。quoteReplace 被數字前置詞忽略。
|
noValue | (空白) |
若沒有對欄位選取任何值,將會改用此值。若選項中可以沒有特定欄位的值,此參數十分實用。 值應設定為不存在於來源資料的值。例如,對於數值,若資料庫中的所有值都是正值,則使用負值。 資訊備註對於沒有引號的值,若欄位的所選值可以是空集合,則必須指定 noValue。
|
下列表格概述 odag_ 和 odagn_ 的格式規格和產生的值。產生的插入值是根據 VAL1、VAL2 的預設資料值。
格式規格 | 描述 | 產生的插入值 |
---|---|---|
未指定 |
以逗號分隔的值清單,使用 ' 加上引號。 |
'VAL1','VAL2' |
{"quote": "", "delimiter": ""} | 串連值 | VAL1VAL2 |
{"quote": "X", "delimiter": "Y"} |
以 X 加上引號並以 Y 分隔的值。 | XVAL1XYXVAL2X |
{"quote": "XX", "delimiter": "YY"} | 以 XX 加上引號並以 YY 分隔的值。 | XXVAL1XXYYXXVAL2XX |
{"quote": "X"} | 以 X 加上引號並以 , (預設) 分隔的值。 | XVAL1X,XVAL2X |
{"delimiter": "YY"} | 以 ' (預設) 加上引號並以 YY 分隔的值 | 'VAL1'YY'VAL2' |
{"quote": ""} | 以 , 分隔且沒有引號的值。 | VAL1,VAL2 |
{"quote": "A", "quoteReplace": "\\A"} |
以 A 加上引號並以逗號 (預設) 分隔的值。將以 \A 取代欄位內部的 A 值。 資訊備註
在此範例中,需要使用雙 \,因為 \ 在 json 格式中為逸出字元。 |
AV\AL1A,AV\AL2A |
格式規格 | 描述 | 產生的插入值 |
---|---|---|
未指定 |
以逗號分隔且沒有引號的值清單。請注意,將會使用數值。 |
VAL1,VAL2 |
{"delimiter": "YY"} | 以 YY 分隔且沒有引號的值 | VAL1YYVAL2 |
{"quote": "A", "quoteReplace": "\\A"} | 相較於 odag_ 前置詞,將會忽略 quoteReplace 參數。 | AVAL1A,AVAL2A |
處理個別值
若需要個別處理欄位值,可以使用內嵌方法,以產生變數 Values 中的值,並透過 Replace 或另一個函數執行任意處理。在以下範例中,Replace 搭配預留位置值使用。