我正在使用InfluxQL查询InfluxDB。我需要获取具有特定标签的数据。使用where
子句,我可以做到这一点。但是,如果不存在此数据,则需要用另一个标签中的值替换它。
我该怎么做才能获得这样的结果?可以在单个查询中吗?
我的数据看起来有点像(相同时间戳的不同标签)。我需要提取标记为C的行,如果标记为C则不行。
time field tag
---- ----------------- ----------
2017-01-25T18:00:00Z 0.029411764705882353 A
2017-01-25T18:00:00Z 0.005454354378732234 B
2017-01-25T18:05:00Z 0.05555555555555555 A
2017-01-25T18:05:00Z 0.35837468955789967 B
2017-01-25T18:10:00Z 0.13333333333333333 A
2017-01-25T18:10:00Z 0.11112346774679865 B
2017-01-25T18:10:00Z 0.24321111111111111 C
2017-01-25T18:15:00Z 0.16129032258064516 A
2017-01-25T18:15:00Z 0.86543456789876546 B
2017-01-25T18:15:00Z 0.25765382928464382 C
预期结果
time field tag
---- ----------------- ----------
2017-01-25T18:00:00Z 0.029411764705882353 A
2017-01-25T18:05:00Z 0.05555555555555555 A
2017-01-25T18:10:00Z 0.24321111111111111 C
2017-01-25T18:15:00Z 0.25765382928464382 C
我曾经考虑过在子查询中使用诸如count之类的方法,但是我找不到能满足我所有需求的方法
SELECT field, cnt FROM
(
SELECT field, count() as cnt
FROM "series"
WHERE
"tag" =~ /A|C/ AND
GROUP BY tag
)
WHERE
"cnt" = 2 AND
"tag" = 'C'
GROUP BY tag