实体名称
Kusto 实体按名称在查询中引用。 可按其名称引用的实体包括数据库、表、列,以及存储的函数,但不包括群集。 为实体分配的名称称为标识符。 除了实体,还可以将标识符分配给查询参数,或通过 let 语句设置的变量。
实体的名称对其所在容器内的实体类型是唯一的。 例如,同一数据库中的两个表不能同名,但数据库和表可以同名,因为它们是不同的实体类型。 同样,表和存储函数可以同名。
友好名称
除了实体名称之外,某些实体可能还具有友好名称。 与实体名称用法类似,友好名称可用于在查询中引用实体。 但与实体名称不同,友好名称在容器上下文中不一定是唯一的。 如果容器包含多个具有相同友好名称的实体,则不能使用该友好名称来指代实体。
友好名称允许中间层应用程序将自动创建的实体名称(如 UUID)映射到易于理解的名称,以便显示和引用。
有关如何分配友好名称的示例,请参阅 .alter database prettyname 命令。
标识符命名规则
标识符是分配给实体、查询参数或通过 let 语句设置的变量的名称。 有效标识符必须遵循以下规则:
- 标识符区分大小写。 数据库名称不区分大小写,因此是此规则的例外。
- 标识符的长度必须介于 1 到 1024 个字符之间。
- 标识符可以包含字母、数字和下划线 (
_
)。 - 标识符可以包含某些特殊字符:空格、点 (
.
) 和短划线 (-
)。 有关如何引用具有特殊字符的标识符的信息,请参阅在查询中引用标识符。
注意
- 仅支持指定的 UTF-8 字符(字母、数字、下划线、点和短划线)。 例如,不支持分号和冒号。
- 由 KQL 运算符生成时,
$
字符是可以在实体名称中使用的。
避免将标识符命名为语言关键字或文本
在 KQL 中,有些关键字和文本的命名规则与标识符类似。 标识符可以与关键字或文本同名。 但是,建议避免出现这种情况,因为在查询中引用此类标识符需要特别加引号。
为了避免使用可能也是语言关键字或文本的标识符(例如 where
、summarize
和 1day
),可以根据以下约定选择实体名称,这些约定不适用于语言关键字:
使用以大写字母(
A
至Z
)开头的名称。使用以单个下划线 (
_
) 开头或结尾的名称。注意
KQL 保留以双下划线字符 (
__
) 序列开头或结尾的所有标识符;用户不能定义这样的名称供自己使用。
有关如何引用这些标识符的信息,请参阅在查询中引用标识符。
在查询中引用标识符
下表提供了有关如何在查询中引用标识符的说明。
标识符类型 | 标识符 | 参考 | 解释 |
---|---|---|---|
正文 | entity |
entity |
不包含特殊字符或映射到某些语言关键字的标识符 (entity ) 无需用引号引起来。 |
特殊字符 | entity-name |
['entity-name'] |
包含特殊字符(如 - )的标识符名称必须使用 [' 和 '] 或者 [" 和 "] 括起来。 |
语言关键字 | where |
["where"] |
作为语言关键字的标识符名称必须用 [' 和 '] 或者 [" 和 "] 括起来。 |
literal | 1day |
["1day"] |
作为文本的标识符名称必须用 [' 和 '] 或者 [" 和 "] 括起来。 |
注意
标识符区分大小写。 例如,不能将名为 ThisTable
的表引用为 thisTABLE
。