InfluxQL查询返回纪元0时间,如何获取当前有效时间?
解决InfluxQL聚合查询返回纪元0时间戳的问题
问题核心在于外层聚合查询未保留时间维度——即便内层添加了time(5m)分组,外层的sum()聚合会将所有结果合并为单条记录,此时InfluxDB无可用时间戳,便默认返回纪元0时间。
方法1:外层同步按时间分组
将内层的时间分组逻辑传递到外层,让外层也按相同时间窗口聚合,结果会保留对应时间戳:
SELECT sum("metrics written") FROM ( SELECT max("metrics_written") - min("metrics_written") as "metrics written" FROM "tsesre_gms"."anonymous"."internal_write" WHERE time > now() - 5m AND "alias" =~ /^output_.*_cp_v1$/ GROUP BY "alias", "cp_node", time(5m) ) GROUP BY time(5m)
方法2:手动添加当前时间字段
若无需按时间窗口统计,仅需让结果标记当前时间,可在内层或外层加入now()作为自定义时间字段:
SELECT sum("metrics written"), now() as query_time FROM ( SELECT max("metrics_written") - min("metrics_written") as "metrics written" FROM "tsesre_gms"."anonymous"."internal_write" WHERE time > now() - 5m AND "alias" =~ /^output_.*_cp_v1$/ GROUP BY "alias", "cp_node" )
此方案会生成query_time字段,显示查询执行时的当前时间,可替代原纪元0时间戳使用。
场景说明
- 方法1适用于需要按时间窗口统计的场景,结果会对应每个5分钟窗口的时间戳;
- 方法2适用于仅需单次汇总、并标记查询时间的场景。
内容的提问来源于stack exchange,提问作者SRM KTR
相关产品推荐
相关产品推荐

