【发布时间】:2020-12-09 12:47:48
【问题描述】:
有时似乎必须计算 InfluxDB 中唯一 TAG 值的总和。怎么办?
例如,我有多个下载软件的用户。现在我想提取有多少唯一用户下载了它。
【问题讨论】:
有时似乎必须计算 InfluxDB 中唯一 TAG 值的总和。怎么办?
例如,我有多个下载软件的用户。现在我想提取有多少唯一用户下载了它。
【问题讨论】:
在 Grafana 中测试了以下查询,以计算唯一用户并考虑应用于数据库的时间过滤器。
为此,我们需要先应用子查询来计算平均值,这基本上会产生一个为每个用户关联值 1 的表:
SELECT mean("count") FROM "autogen"."downloads" WHERE $timeFilter GROUP BY "username"
这里count是一个整数值,用户每下载一次软件就等于1。
在我们可以计算出这些平均值的总和之后,是的,如果您有一个庞大的数据库,这并不便宜,但仍然是一个可行的解决方案:
SELECT SUM(mean) FROM (
SELECT mean("count") FROM "autogen"."downloads" WHERE $timeFilter GROUP BY "username"
)
请继续提出最佳性能/更原生的解决方案,这将很适合申请更大的数据库
【讨论】:
SELECT COUNT(mean) 而不是 SELECT SUM(mean)。