新手求助:编写KQL脚本按销售代表及区域取销售额前三账户
KQL实现按销售代表+区域分组取销售额前3账户
首先需要先处理sales_amount字段——原数据里是带$的字符串,必须先转换为数值类型才能正确排序。接下来用Kusto的窗口函数实现分组内的排名筛选,具体脚本如下:
// 模拟你的示例数据,实际使用时替换为你的表名 datatable(Sales_rep:string, account_id:string, sales_amount:string, region:string) [ "John Smith", "1234", "$100", "North", "John Smith", "9876", "$400", "East", "John Smith", "1729", "$1000", "North", "John Smith", "9387", "$250", "South", "Maria Klaus", "4567", "$300", "West", "Maria Klaus", "7890", "$325", "South" ] | // 处理销售额:去掉$符号并转为数值类型 extend sales_amount_num = toreal(replace_string(sales_amount, "$", "")) | // 按销售代表和区域分区,每个分区内按销售额降序排名 partition by Sales_rep, region order by sales_amount_num desc serialize rank = row_number() | // 筛选每个分组的前3名 where rank <= 3 | // 保留原字段和排名(可选,可根据需要调整输出列) project Sales_rep, account_id, sales_amount, region, rank
关键步骤说明
- 数据类型转换:
replace_string(sales_amount, "$", "")去掉金额里的$,再用toreal()转为数值,确保排序逻辑正确。 - 分区排名:
partition by Sales_rep, region指定分组维度,order by sales_amount_num desc按销售额降序,row_number()生成每个分组内的排名序号。 - 筛选结果:
where rank <=3只保留每个分组的前3条记录。
如果你的实际表中sales_amount已经是数值类型,可以跳过数据转换的extend步骤,直接使用原字段排序即可。
内容的提问来源于stack exchange,提问作者SusanD
相关产品推荐
相关产品推荐

