适用于:✅Azure 数据资源管理器
分类过程会根据请求的特征将传入请求分配到工作负荷组。 通过编写用户定义的函数来定制分类逻辑,作为群集级别请求分类策略的一部分。
如果没有已启用的请求分类策略,所有请求都将分类到 default
工作负荷组。
策略对象
策略具有以下属性:
-
IsEnabled
:bool
- 指示是否启用策略。 -
ClassificationFunction
:string
- 用于对请求进行分类的函数主体。
分类函数
根据用户定义的函数对传入请求进行分类。 用于将请求分类到现有工作负荷组的函数的结果。
用户定义的函数具有以下特征和行为:
- 如果在策略中将
IsEnabled
设置为true
,则将为每个新请求评估用户定义函数。 - 用户定义函数为请求的整个生存期提供请求的工作负荷组上下文。
- 在以下情况中,将为请求提供
default
工作负荷组上下文:- 用户定义的函数返回一个空字符串、
default
或不存在的工作负荷组的名称。 - 函数由于任何原因运行失败。
- 用户定义的函数返回一个空字符串、
- 在任何给定时间只能指定一个用户定义函数。
重要
针对在群集上运行的每个请求计算请求分类函数。 建议尽量保持轻量级,且不包括大量计算。 例如,请避免在执行过程中计算多个正则表达式。
要求和限制
分类函数:
- 必须返回
string
类型的单个标量值。 这是要向其分配请求的工作负荷组的名称。 - 不得引用其他任何实体(数据库、表或函数)。
- 具体而言, 它可能不会使用以下函数和运算符:
cluster()
database()
table()
external_table()
externaldata
- 具体而言, 它可能不会使用以下函数和运算符:
- 有权访问特殊
dynamic
符号,即具有以下属性的request_properties
属性包:
名称 | 类型 | 说明 | 示例 |
---|---|---|---|
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 |
在查询中,指查询的一致性(strongconsistency 或 weakconsistency )。 调用方将此属性设置为请求 请求属性的一部分,:要设置的客户端请求属性为: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 |
请求的类型(Command 或 Query )。 |
"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 |
显示群集的请求分类策略 |