使用 “版本 ”下拉列表切换服务。 了解有关导航的详细信息。
适用于:✅ Azure Data Explorer
创建存储函数,该函数是具有给定名称的可重用 KQL 查询。 函数定义与数据库元数据一起保留。
Functions 可以调用其他函数(不支持递归)。 此外,允许 let 语句作为函数主体的一部分。 请参阅 let 语句。
参数类型和 CSL 语句的规则与 let 语句的规则相同。
Permissions
必须至少具有 Database User 权限才能运行此命令。
Syntax
.create
function[ ] [ ifnotexistswith( propertyName =propertyValue [, ...]) ]functionName(参数){身体}
详细了解语法约定。
Parameters
| Name | 类型 | Required | Description |
|---|---|---|---|
ifnotexists |
string |
如果指定此项,则只有在此函数不存在时才会创建此函数。 | |
| functionName | string |
✔️ | 要创建或更改的函数的名称。 |
| propertyName、propertyValue | string |
键值属性对的逗号分隔列表。 请参阅支持的属性。 | |
| parameters | string |
函数所需参数的逗号分隔列表。 每个参数的格式必须为 ParameterNameParameterDataType。 | |
| body | string |
✔️ | 用户定义的函数表达式。 |
支持的属性
| Name | 类型 | Description |
|---|---|---|
docstring |
string |
用于 UI 的函数的说明。 |
folder |
string |
用于 UI 函数分类的文件夹的名称。 |
view |
bool |
将此函数指定为存储视图。 存储视图可以参与搜索和联合*方案。 有关详细信息,请参阅视图。 |
skipvalidation |
bool |
确定是否对函数运行验证逻辑,如果函数无效,则让进程失败。 默认值为 false。 |
Tip
如果函数涉及跨群集查询,并且你计划使用 Kusto 查询语言脚本重新创建函数,请将 skipvalidation 设置为 true。
Returns
| 输出参数 | 类型 | Description |
|---|---|---|
| Name | string |
函数的名称。 |
| Parameters | string |
函数所需的参数。 |
| Body | string |
(零个或多个) let 语句后跟在函数调用时计算的有效 CSL 表达式。 |
| Folder | string |
用于 UI 函数分类的文件夹。 此参数不会更改调用函数的方式。 |
| DocString | string |
用于 UI 的函数的说明。 |
Note
- 如果函数已存在:
- 如果指定了
ifnotexists标志,则该命令将被忽略(不应用更改)。 - 如果未指定
ifnotexists标志,则将返回错误。 - 若要更改现有函数,请参阅
.alter function
- 如果指定了
-
let语句并非支持所有数据类型。 支持的类型为:布尔值、字符串、长整型、日期/时间、时间跨度、双精度型和动态型。 - 使用
skipvalidation跳过函数的语义验证。 如果以不正确的顺序创建函数,并且之前创建了使用 F2 的 F1,这会很有用。
Examples
简单函数
以下示例将创建MyFunction1包含说明 (docstring) 的函数、名为 Demo 的文件夹,并定义该函数。
.create function
with (docstring = 'Simple demo function', folder='Demo')
MyFunction1()
{StormEvents | take 100}
| Name | Parameters | Body | Folder | DocString |
|---|---|---|---|---|
| MyFunction1 | () | {StormEvents | 需要 100} | Demo | 简单演示函数 |
具有参数的函数
以下示例使用名为 MyFunction2的说明(docstring)文件夹创建 Demo 函数,并定义 Mytimestamp 参数。
.create function with (docstring = "Demo function with date parameter",folder = "Demo")
MyFunction2(Mytimestamp:datetime) {
StormEvents
| where EndTime <= Mytimestamp
}
| Name | Parameters | Body | Folder | DocString |
|---|---|---|---|---|
| MyFunction2 | (Mytimestamp:datetime) | {StormEvents | where EndTime <= Mytimestamp} | Demo | 带日期参数的演示函数 |