.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} | 演示 | 带参数的演示函数 |