【问题标题】:Modelling influxdb data into tags and fields将 influxdb 数据建模为标签和字段
【发布时间】:2019-03-02 06:08:22
【问题描述】:

TL;DR
如何将数据建模为字段与标签,以防您同时执行分组和计数(distinct())

所以目前这是我的 influxdb 数据模型:

api_requests (database)
   - requests_stats (measurement)
        - api_path (tag)
        - app_version (tag)
        - host (tag)
        - platform (tag) 

        - account_id (field)
        - user_id (field)
        - function_name (field)
        - network (field)
        - network_type (field)
        - time_to_execute (field)

所以现在我想找出不同帐户(活动帐户)的数量。 所以我可以运行以下查询:

SELECT count(distinct("account_id")) AS "active_accounts"
FROM "api_requests"."autogen"."requests_stats"

这很好用,因为帐户 ID 是一个字段。

现在假设我想对 account_id 执行 group by 操作,例如查找每个帐户收到的请求数:

SELECT count("function_name") AS "request_count" 
FROM "api_requests"."autogen"."requests_stats"
GROUP BY "account_id"

我不能这样做,因为标签上建议使用 group by。

如何处理这种场景?

解决方案之一是将值存储在字段和值中,但这将是数据冗余。

另一个也是最优化的方法是让 count(distinct()) 处理标签。这可能吗?这实际上是他们 github repo 中的一个功能请求。

或者可以对数据模型做些什么来达到同样的效果?

【问题讨论】:

    标签: influxdb influxql


    【解决方案1】:

    tag 用于account_id。而不是计数查询:

    SELECT count(distinct("account_id")) AS "active_accounts"
    FROM "api_requests"."autogen"."requests_stats"
    

    使用查询,它将精确计算tag value cardinality

    SHOW TAG VALUES EXACT CARDINALITY WITH KEY = "account_id"
    

    这仅适用于您的用例,因为您不想在不同计数查询中使用任何额外的(时间、标签)过滤器。

    【讨论】:

    • 这是查询语言的一部分吗?我想在 chronograf 中创建一个仪表板,并通过合并此查询在仪表板内添加一个小部件。
    • 当然,我的回答中已经有查询语言规范的链接。
    • 好的,我看到了一个与 paul dix 在 2016 年提交的同一个问题 (github.com/influxdata/influxdb/issues/7195)
    • 好的,所以我尝试了以下查询(用于演示目的):SHOW TAG VALUES CARDINALITY ON "api_requests" FROM "requests_stats" WITH KEY = "api_path"。此查询产生一个准确的数字 281。但是此信息仅通过表格小部件而不是单个统计小部件显示。事实上,它在单个统计小部件中显示 NaN。这会是 chronograf 中的错误还是它的设计方式?尽管如此,您的解决方案仍然有效,因此将接受它作为答案。
    • SELECT count() 返回时间序列,但 SHOW TAG VALUES CARDINALITY 仅返回单个值。这可能是 singlestat 小部件的问题。
    猜你喜欢
    • 2021-10-29
    • 2021-02-03
    • 2022-07-31
    • 2020-08-24
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多