適用於: ✅Microsoft網狀架構✅Azure 數據總管
建立預存函式,這是具有指定名稱的可重複使用 KQL 查詢。 函式定義會與資料庫元數據一起保存。
函式可以呼叫其他函式(不支援遞歸性)。 此外,let允許語句做為函式主體的一部分。 請參閱 let 語句。
參數類型和 CSL 語句的規則與 語句let的規則相同。
權限
您必須至少有 資料庫使用者 許可權才能執行此命令。
語法
.create
function [ ifnotexists ] [ with(propertyName=propertyValue [, ...]) ] functionName( 參數){主體}
深入瞭解 語法慣例。
參數
| 姓名 | 類型 | 必要 | 描述 |
|---|---|---|---|
ifnotexists |
string |
如果指定,則只有在函式尚不存在時,才會建立函式。 | |
| functionName | string |
✔️ | 要建立或改變之函式的名稱。 |
| propertyName、 propertyValue | string |
索引鍵/值屬性組的逗號分隔清單。 請參閱 支持的屬性。 | |
| parameters | string |
函式所需的參數逗號分隔清單。 每個參數的格式必須是 ParameterName:ParameterDataType。 |
|
| 身體 | string |
✔️ | 用戶定義的函數表達式。 |
支援的屬性
| 姓名 | 類型 | 描述 |
|---|---|---|
docstring |
string |
UI 用途之函式的描述。 |
folder |
string |
用於 UI 函式分類的資料夾名稱。 |
view |
bool |
將此函式指定為預存檢視。 預存檢視可以參與 搜尋 和聯集 * 案例。 如需詳細資訊,請參閱 檢視。 |
skipvalidation |
bool |
判斷是否要在函式上執行驗證邏輯,並在函式無效時失敗進程。 預設值為 false。 |
提示
如果函式牽涉到跨叢集查詢,而且您打算使用 Kusto 查詢語言 腳本重新建立函式,請將 設定skipvalidation為 true。
傳回
| 輸出參數 | 類型 | 描述 |
|---|---|---|
| 姓名 | string |
函數的名稱。 |
| 參數 | string |
函式所需的參數。 |
| 本文 | string |
(零或更多) let 語句後面接著在函式調用時評估的有效 CSL 表達式。 |
| Folder | string |
用於 UI 函式分類的資料夾。 此參數不會變更叫用函式的方式。 |
| DocString | string |
UI 用途之函式的描述。 |
注意
- 如果函式已經存在:
- 如果
ifnotexists指定旗標,則會忽略命令(未套用任何變更)。 - 如果未
ifnotexists指定旗標,則會傳回錯誤。 - 如需變更現有的函式,請參閱
.alter function
- 如果
- 語句中
let不支援所有數據類型。 支持的類型包括:布爾值、字串、long、datetime、timespan、double 和 dynamic。 - 用來
skipvalidation略過函式的語意驗證。 當函式以不正確的順序建立,且稍早建立使用 F2 的 F1 時,這會很有用。
範例
簡單函式
下列範例會 MyFunction1 使用 description (docstring)、名為 Demo的資料夾來建立函式,並定義函式。
.create function
with (docstring = 'Simple demo function', folder='Demo')
MyFunction1()
{StormEvents | take 100}
| 姓名 | 參數 | 本文 | Folder | DocString |
|---|---|---|---|---|
| MyFunction1 | () | {StormEvents | take 100} | 示範 | 簡單示範函式 |
具有參數的函式
下列範例會使用名為 MyFunction2的描述 (docstring), 資料夾來建立 Demo 函式,並定義 Mytimestamp 參數。
.create function with (docstring = "Demo function with date parameter",folder = "Demo")
MyFunction2(Mytimestamp:datetime) {
StormEvents
| where EndTime <= Mytimestamp
}
| 姓名 | 參數 | 本文 | Folder | DocString |
|---|---|---|---|---|
| MyFunction2 | (Mytimestamp:datetime) | {StormEvents | where EndTime <= Mytimestamp} | 示範 | 具有 date 參數的示範函式 |