请求分类策略

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

分类过程会根据请求的特征将传入请求分配到工作负荷组。 通过编写用户定义的函数来定制分类逻辑,作为群集级别请求分类策略的一部分。

如果没有已启用的请求分类策略,所有请求都将分类到 default 工作负荷组。

策略对象

策略具有以下属性:

  • IsEnabledbool - 指示是否启用策略。
  • ClassificationFunctionstring - 用于对请求进行分类的函数主体。

分类函数

根据用户定义的函数对传入请求进行分类。 用于将请求分类到现有工作负荷组的函数的结果。

用户定义的函数具有以下特征和行为:

  • 如果在策略中将 IsEnabled 设置为 true,则将为每个新请求评估用户定义函数。
  • 用户定义函数为请求的整个生存期提供请求的工作负荷组上下文。
  • 在以下情况中,将为请求提供 default 工作负荷组上下文:
    • 用户定义函数会返回空字符串、default 或不存在的工作负荷组的名称
    • 函数由于任何原因运行失败。
  • 在任何给定时间只能指定一个用户定义函数。

重要

将为在群集上运行的每个请求计算请求分类函数。 建议尽可能让其保持精简状态,不要在其中包含繁重的计算。 例如,请避免在执行过程中计算多个正则表达式。

要求和限制

分类函数:

  • 必须返回 string 类型的单个标量值,这是要向其分配请求的工作负荷组的名称。

  • 不得引用其他任何实体(数据库、表或函数)。

    • 具体而言,不得使用以下函数和运算符:
      • cluster()
      • database()
      • table()
      • external_table()
      • externaldata
  • 有权访问特殊 dynamic 符号,即具有以下属性的 request_properties 属性包:

    名称 Type 说明 示例
    current_database string 请求数据库的名称。 "MyDatabase"
    current_application string 发送请求的应用程序的名称。 "Kusto.Explorer", "KusWeb"
    current_principal string 发送请求的主体标识的完全限定名称。 "aaduser=1793eb1f-4a18-418c-be4c-728e310c86d3;83af1c0e-8c6d-4f09-b249-c67a2e8fda65"
    query_consistency string 在查询中,指查询的一致性(strongconsistencyweakconsistency)。 调用方可将此属性设置为请求的请求属性的一部分:要设置的客户端请求属性为 queryconsistency "strongconsistency", "weakconsistency"
    request_description string 请求的作者可以包含的自定义文本。 调用方可将此文本设置为请求的客户端请求属性的一部分:要设置的客户端请求属性为 request_description "Some custom description";为仪表板自动填充:"dashboard:{dashboard_id};version:{version};sourceId:{source_id};sourceType:{tile/parameter}"
    request_text string 请求的混淆文本。 查询文本中包含的混淆字符串字面量被多个星号 (*) 字符替换。 注意: 仅计算请求文本的前导 65,536 个字符。 ".show version"
    request_type string 请求的类型(CommandQuery)。 "Command", "Query"

注意

使用 set 语句设置上述请求选项时,不允许按它们进行分类。 需要在客户端请求属性对象中设置这些选项。

示例

单个工作负荷组

iff(request_properties.current_application == "Kusto.Explorer" and request_properties.request_type == "Query",
    "Ad-hoc queries",
    "default")

多个工作负荷组

case(current_principal_is_member_of('aadgroup=somesecuritygroup@contoso.com'), "First workload group",
     request_properties.current_database == "MyDatabase" and request_properties.current_principal has 'aadapp=', "Second workload group",
     request_properties.current_application == "Kusto.Explorer" and request_properties.request_type == "Query", "Third workload group",
     request_properties.current_application == "Kusto.Explorer", "Third workload group",
     request_properties.current_application == "KustoQueryRunner", "Fourth workload group",
     request_properties.request_description == "this is a test", "Fifth workload group",
     hourofday(now()) between (17 .. 23), "Sixth workload group",
     "default")

管理命令

使用以下管理命令来管理群集的请求分类策略。

命令 描述
.alter cluster request classification policy 更改群集的请求分类策略
.alter-merge cluster request classification policy 启用或禁用群集的请求分类策略
.delete cluster request classification policy 删除群集的请求分类策略
.show cluster request classification policy 显示群集的请求分类策略