【问题标题】:Calculate sum of unique tag values计算唯一标签值的总和
【发布时间】:2020-12-09 12:47:48
【问题描述】:

有时似乎必须计算 InfluxDB 中唯一 TAG 值的总和。怎么办?

例如,我有多个下载软件的用户。现在我想提取有多少唯一用户下载了它。

【问题讨论】:

    标签: grafana influxdb


    【解决方案1】:

    在 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)
    • @JanGaraj,试过这个,这不起作用。而如果你求和的意思是每个用户为 1,那么你得到的唯一用户数
    猜你喜欢
    • 2022-01-10
    • 2019-01-23
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    • 2011-06-09
    • 2017-03-13
    • 2022-12-22
    • 1970-01-01
    相关资源
    最近更新 更多