如何在KQL中将多查询的count统计结果合并到单条查询计算百分比
KQL单查询合并多统计值计算百分比方案
完全可以在单条KQL查询中完成所有计算,不需要手动拷贝统计值。核心是使用toscalar()函数将两个count查询的结果转换为可直接引用的标量,示例实现如下:
// 拉取实际参与足球比赛的人数统计值,转换为标量 let football_count = toscalar( database("database1").games_played | where game_type contains "football" | where Time > ago(1m) | count ); // 拉取注册足球项目的人数统计值,转换为标量 let registered_count = toscalar( database("db2").registerd_players | where EventInfo_Time > ago(1m) | where registered_game contains "football" | count ); // 直接计算输出结果 print cnt1 = football_count, cnt2 = registered_count | extend percentage = round(todouble(cnt1) * 100 / todouble(cnt2), 2) | project percentage, cnt2, cnt1
补充说明
toscalar()作用是将返回单行单列的查询结果转换为可直接调用的标量值,全程自动拉取数据,不需要人工复制数值- 可选优化:可以加分支判断避免分母为0的异常报错,写法如下:
| extend percentage = iif(cnt2 == 0, 0.0, round(todouble(cnt1) * 100 / todouble(cnt2), 2))
内容的提问来源于stack exchange,提问作者Shenron
相关产品推荐
相关产品推荐

