Azure Workbook中KQL查询如何统计两列数据并同表展示?
解决KQL多列统计与变量合并问题
一、直接实现两列统计(避免语法错误)
根据需求,分两种常见场景给出正确写法:
1. 统计两列的非空条目总数
如果需要分别统计values_in_use_connections_d和values_available_connection_d的非空行数,用countif配合isnotempty实现:
SWFLogOSot_CL | summarize 在用连接数统计 = countif(isnotempty(values_in_use_connections_d)), 可用连接数统计 = countif(isnotempty(values_available_connection_d))
2. 按两列组合分组统计计数
如果需要按两列的取值组合分组,统计每组出现的次数,直接在by后同时指定两列即可:
SWFLogOSot_CL | summarize 计数 = count() by values_in_use_connections_d, values_available_connection_d
之前添加第二列报错大概率是语法格式错误(比如漏写逗号、列名拼写错误),按上述写法即可避免。
二、合并变量存储的统计结果
如果已经用两个变量分别存储单列统计数据,可根据需求选择以下合并方式:
1. 纵向合并(将两个统计结果按行拼接)
给两个变量的统计结果统一添加标识列,再用union合并:
let 在用连接统计 = SWFLogOSot_CL | summarize 计数 = count() by 取值 = values_in_use_connections_d | extend 指标类型 = "在用连接"; let 可用连接统计 = SWFLogOSot_CL | summarize 计数 = count() by 取值 = values_available_connection_d | extend 指标类型 = "可用连接"; union 在用连接统计, 可用连接统计
2. 横向合并(将两个汇总值放在同一行展示)
如果变量存储的是单列的总计数,用toscalar将变量转为标量值,再用print输出:
let 在用连接总数 = toscalar(SWFLogOSot_CL | summarize countif(isnotempty(values_in_use_connections_d))); let 可用连接总数 = toscalar(SWFLogOSot_CL | summarize countif(isnotempty(values_available_connection_d))); print 在用连接总数, 可用连接总数
内容的提问来源于stack exchange,提问作者howard
相关产品推荐
相关产品推荐

