如何汇总多表count()结果,无数据时返回0而非空值
解决方案
要实现无数据的表也返回计数0并保留表名,不需要使用make-series,可以通过预定义表名列表 + 左连接补全的方式实现,具体步骤如下:
1. 构造目标表名列表
用datatable明确列出所有需要统计的表名,确保即使表无数据也能被纳入结果。
2. 执行原有统计逻辑
保留你原本的union withsource+条件过滤+聚合统计逻辑,得到有数据的表的计数结果。
3. 左连接补全0值
将预定义的表名列表与统计结果做左连接,用coalesce函数将缺失的计数值替换为0。
针对你的示例的完整查询语句
// 定义所有需要统计的表名 let target_tables = datatable(source:string) ["TableOne", "TableTwo"]; // 统计有数据的表的今日dcount结果 let counted_data = union withsource=source TableOne, TableTwo | where TimeGenerated >= ago(1d) | summarize dcount_TimeGenerated = dcount(TimeGenerated) by source; // 左连接补全0值 target_tables | left join counted_data on source | project source, dcount_TimeGenerated = coalesce(dcount_TimeGenerated, 0)
执行结果
| source | dcount_TimeGenerated |
|---|---|
| TableOne | 2 |
| TableTwo | 0 |
内容的提问来源于stack exchange,提问作者Equalsk
相关产品推荐
相关产品推荐

