本文將為您介紹如何建立Aviator函數。
前提條件
已建立完成商務程序,詳情請參見建立並管理商務程序。
已購買獨享資料服務資源群組,詳情請參見新增和使用獨享資料服務資源群組。
說明Aviator函數需要運行在獨享資料服務資源群組中。
背景資訊
您可以在資料服務中建立函數、測試函數、發布函數,發布後的函數可被進一步關聯至API,作為API的過濾器,對API的請求參數或返回結果進行加工處理,從而實現API的複雜查詢需求,靈活適配各類業務情境。常見情境的程式碼範例請參見:使用Aviator函數作為過濾器的最佳實務。
使用限制
Aviator函數需要運行在獨享資料服務資源群組中。
當使用函數作為API過濾器時,前置過濾器和後置過濾器的函數類型需要保持一致,即:均選擇Aviator函數類型或Python函數類型。暫不支援對同一API的前置和後置過濾器選擇不同的函數類型。
注意事項
基於安全和效能等因素的評估,Aviator函數需要運行在獨享資料服務資源群組中。因此:
當您編輯、測試函數時,需要對函數綁定獨享資料服務資源群組。詳情請參見管理函數。
當您在API開發時啟用了過濾器並關聯了目標函數,需要對API綁定獨享資料服務資源群組。詳情請參見通過嚮導模式產生API。
函數結構說明
對於Aviator函數,系統內建的模板函數如下。Aviator函數文法參考請參見Aviator函數文法。
## --- AviatorScript ---
## $0: the default name of the input param.
## Expressions must be separated by the semicolon ";".
## Example 1:
## $0.a: Get the attribute "a" from the input param "$0".
## $0.b[index]: Get the index of the array "b" from the input param "$0". The index cannot be an expression or a variable.
## Example 2:
## Input: {"keyA":[1,2],"keyB":"value"}
## Function: $0.keyA[0]=3; $0.keyB="new_value"; return $0;
## Output: {"keyA":[3,2],"keyB":"new_value"}
return $0;
您可以基於該函數進行修改。
Aviator函數的預設入參名稱是
$0
,且不可更改,您可以通過$0
來擷取函數的整體輸入。函數的輸入內容需要按照JSON形式。在資料服務中,函數的作用是作為API過濾器來處理請求參數和返回結果,並且請求參數的定義形式是單層JSON結構(深度為1),返回結果的定義形式是多層JSON結構(深度為N),因此函數的輸入內容也需要按照JSON形式,即:
$0
代表著一段JSON形式的資料內容。當函數被作為API的前置過濾器時,系統會將API請求參數或上個函數的輸出結果,從
key-value map
轉換為JSON形式,並使用該JSON對$0
參數進行傳參,且JSON中的value僅支援字串類型。當函數被作為API的前置過濾器時,函數的輸出結果為
key-value map
。該輸出結果將作為SQL語句執行入參,因此僅支援輸出深度為1的key-value map
。
進入資料服務頁面
登入DataWorks控制台,切換至目標地區後,單擊左側導覽列的 ,在下拉框中選擇對應工作空間後單擊進入資料服務。
建立函數
在服務開發頁面,滑鼠移至上方至表徵圖,單擊 。
您也可以找到相應的商務程序,按右鍵函數,選擇
。在建立Aviator函數對話方塊中,配置各項參數。
參數
描述
函數名稱
自訂函數的名稱,不能超過256個字元。
函數模板
僅支援AviatorScript Standard v1。
函數描述
對函數進行簡單描述,不得超過512個字元。
目標檔案夾
選擇函數存放的目錄。
說明請選擇具體的商務程序名稱、檔案夾名稱或函數類目。如果尚無商務程序,請先建立一個商務程序。
單擊確定。
在編輯代碼地區,輸入函數的代碼。
佈建服務資源群組。
在API編輯頁面的右側導覽列中,單擊服務資源群組,您可以在資源群組類型地區配置API調用時使用的資源群組類型。
當前僅支援選擇獨享服務資源群組。
說明若在列表中無法選中目標資源群組名稱,請進入DataWorks控制台通過“修改歸屬工作空間”將資源群組與工作空間進行綁定。您也可以單擊新購獨享服務資源群組,購買獨享服務資源群組,詳情請參見新增和使用獨享資料服務資源群組。
在環境配置地區,您可設定記憶體、逾時時間。
逾時時間配置建議:獨享資料服務資源群組不超過100ms。
單擊工具列中的表徵圖,完成函數建立。
建立完成後,您可以測試函數並將函數發布,便於後續使用函數作為API的前置過濾器或後置過濾器。
後續步驟
發布後的函數可以進一步關聯至API,作為API的前置和後置過濾器,對請求參數和返回結果進行加工處理,詳情請參見:使用函數作為API過濾器。