实体名称

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

Kusto 实体按名称在查询中引用。 可按其名称引用的实体包括数据库、表、列,以及存储的函数,但不包括群集。 为实体分配的名称称为标识符。 除了实体,还可以将标识符分配给查询参数,或通过 let 语句设置的变量。

实体的名称对其所在容器内的实体类型是唯一的。 例如,同一数据库中的两个表不能同名,但数据库和表可以同名,因为它们是不同的实体类型。 同样,表和存储函数可以同名。

注意

实体名称(也反映为 Azure 资源)遵循 ARM 保留字规则

友好名称

除了实体名称之外,某些实体可能还具有友好名称。 与实体名称用法类似,友好名称可用于在查询中引用实体。 但与实体名称不同,友好名称在容器上下文中不一定是唯一的。 如果容器包含多个具有相同友好名称的实体,则不能使用该友好名称来指代实体。

友好名称允许中间层应用程序将自动创建的实体名称(如 UUID)映射到易于理解的名称,以便显示和引用。

有关如何分配友好名称的示例,请参阅 .alter database prettyname 命令

标识符命名规则

标识符是分配给实体查询参数或通过 let 语句设置的变量的名称。 有效标识符必须遵循以下规则:

  • 标识符区分大小写。 数据库名称不区分大小写,因此是此规则的例外。
  • 标识符的长度必须介于 1 到 1024 个字符之间。
  • 标识符可以包含字母、数字和下划线 (_)。
  • 标识符可以包含某些特殊字符:空格、点 (.) 和短划线 (-)。 有关如何引用具有特殊字符的标识符的信息,请参阅在查询中引用标识符

注意

  • 仅支持指定的 UTF-8 字符(字母、数字、下划线、点和短划线)。 例如,不支持分号和冒号。
  • 由 KQL 运算符生成时,$ 字符是可以在实体名称中使用的。

避免将标识符命名为语言关键字或文本

在 KQL 中,有些关键字和文本的命名规则与标识符类似。 标识符可以与关键字或文本同名。 但是,建议避免出现这种情况,因为在查询中引用此类标识符需要特别加引号

为了避免使用可能也是语言关键字或文本的标识符(例如 wheresummarize1day),可以根据以下约定选择实体名称,这些约定不适用于语言关键字:

  • 使用以大写字母(AZ)开头的名称。

  • 使用以单个下划线 (_) 开头或结尾的名称。

    注意

    KQL 保留以双下划线字符 (__) 序列开头或结尾的所有标识符;用户不能定义这样的名称供自己使用。

有关如何引用这些标识符的信息,请参阅在查询中引用标识符

在查询中引用标识符

下表提供了有关如何在查询中引用标识符的说明。

标识符类型 标识符 参考 解释
正文 entity entity 不包含特殊字符或映射到某些语言关键字的标识符 (entity) 无需用引号引起来。
特殊字符 entity-name ['entity-name'] 包含特殊字符(如 -)的标识符名称必须使用 [''] 或者 [""] 括起来。
语言关键字 where ["where"] 作为语言关键字的标识符名称必须用 [''] 或者 [""] 括起来。
literal 1day ["1day"] 作为文本的标识符名称必须用 [''] 或者 [""] 括起来。

注意

标识符区分大小写。 例如,不能将名为 ThisTable 的表引用为 thisTABLE