.create function 命令

适用于:✅Azure 数据资源管理器

创建存储函数,该函数是具有给定名称的可重用 KQL 查询。 函数定义与数据库元数据一起保留。

Functions 可以调用其他函数(不支持递归)。 此外,允许 let 语句作为函数主体的一部分。 请参阅 let 语句

参数类型和 CSL 语句的规则与 let 语句的规则相同。

权限

你必须至少具有数据库用户权限才能运行此命令。

语法

.create function [ ifnotexists ] [ with (propertyName = propertyValue [, ...]) ] functionName (parameters) { body }

详细了解语法约定

参数

客户 类型​​ 必需 说明
ifnotexists string 如果指定此项,则只有在此函数不存在时才会创建此函数。
functionName string ✔️ 要创建或更改的函数的名称。
propertyName、propertyValue string 键值属性对的逗号分隔列表。 请参阅支持的属性
参数 string 函数所需参数的逗号分隔列表。 每个参数的格式必须为 ParameterName:ParameterDataType。
正文 string ✔️ 用户定义的函数表达式。

支持的属性

名称 Type 描述
docstring string 用于 UI 目的的函数说明。
folder string 用于 UI 函数分类的文件夹的名称。
view bool 将此函数指定为存储视图。 存储视图可以参与搜索联合*方案。 有关详细信息,请参阅视图
skipvalidation bool 确定是否对函数运行验证逻辑,如果函数无效,则让进程失败。 默认为 false

提示

如果函数涉及跨群集查询,并且你计划使用 Kusto 查询语言脚本重新创建函数,请将 skipvalidation 设置为 true

返回

输出参数 类型 说明
Name string 函数的名称。
参数 string 函数所需的参数。
Body string (零个或多个)let 语句,后跟有效的 CSL 表达式,该表达式在函数调用时求值。
Folder string 用于 UI 函数分类的文件夹。 此参数不会更改调用函数的方式。
DocString string 用于 UI 目的的函数说明。

注意

  • 如果函数已存在:
    • 如果指定了 ifnotexists 标志,则该命令将被忽略(不应用更改)。
    • 如果未指定 ifnotexists 标志,则将返回错误。
    • 若要更改现有函数,请参阅 .alter function
  • let 语句并非支持所有数据类型。 支持的类型为:布尔值、字符串、长整型、日期/时间、时间跨度、双精度型和动态型。
  • 使用 skipvalidation 跳过函数的语义验证。 如果以不正确的顺序创建函数,并且之前创建了使用 F2 的 F1,这会很有用。

示例

简单演示函数

以下示例将创建MyFunction1包含说明 (docstring) 的函数、名为 Demo 的文件夹,并定义该函数。

.create function 
with (docstring = 'Simple demo function', folder='Demo')
MyFunction1()
{StormEvents | take 100}
名称 parameters 正文 文件夹 DocString
MyFunction1 () {StormEvents | take 100} 演示 简单演示函数

带参数的演示函数

以下示例使用将创建包含说明 (docstring) 的 MyFunction2、名为 Demo 的文件夹,并定义 MyLimit 参数。

.create function
with (docstring = 'Demo function with parameter', folder='Demo')
 MyFunction2(myLimit: long)
{StormEvents | take myLimit}
名称 parameters 正文 文件夹 DocString
MyFunction2 (myLimit:long) {StormEvents | take myLimit} 演示 带参数的演示函数