.create function 命令

使用 “版本 ”下拉列表切换服务。 了解有关导航的详细信息
适用于:✅ 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 带日期参数的演示函数