如何在Kusto中将日期时间数据按小时补全并关联状态值
在Kusto中补全缺失小时级日期并关联状态值的解决方案
可以实现,核心思路是用generate-series生成完整的小时时间序列,再结合左连接与fill forward来填充缺失的状态值,具体步骤如下:
1. 定义时间范围与生成小时序列
先从原始数据中提取时间范围的起止点,再生成覆盖该范围的每小时时间点:
// 假设你的原始数据表名为StatusLogs,包含Timestamp(日期)和Status(状态)列 let start_time = toscalar(StatusLogs | summarize min(Timestamp)); let end_time = toscalar(StatusLogs | summarize max(Timestamp)); // 生成每小时的时间序列 let hourly_time_series = range Hour from start_time to end_time step 1h;
2. 关联原始数据并填充缺失状态
将生成的小时序列与原始数据左连接,保留所有小时点,再用fill forward把最近的已知状态值填充到缺失的行中:
hourly_time_series | join kind=leftouter (StatusLogs | project Timestamp, Status) on $left.Hour == $right.Timestamp | project Hour, Status | fill forward Status
补充说明
fill forward会自动延续上一个非空的状态值,适用于状态通常持续一段时间的场景;如果需要其他填充逻辑(比如固定默认值),可以替换为fill函数指定默认值。- 若原始数据中存在同一小时多条记录的情况,建议先对原始数据按小时聚合(比如取最新状态),再执行后续步骤。
内容的提问来源于stack exchange,提问作者Swathi Miney
相关产品推荐
相关产品推荐

