【问题标题】:How do I get at values other than a filtered field in Flux?如何获得 Flux 中过滤字段以外的值?
【发布时间】:2021-03-29 15:31:54
【问题描述】:

查看 InfluxDb 2.0 最佳实践中的“错误 3”: https://www.influxdata.com/blog/data-layout-and-schema-design-best-practices-for-influxdb/

错误 3:将 id(例如 eventid、orderid 或 userid)设置为标签。如果标签值没有作用域,这是另一个可能导致无限基数的示例。

解决方案 3:将这些指标设为字段。”

这一切都是公平和花哨的,但是我如何得出结果呢?它似乎没有在任何地方描述。所有示例都显示按标签过滤,而不是按字段过滤。因此,如果我正在记录“SensorId、Temp、Humidity”并且这些都是字段,我如何获取 SensorId 97 的 Temp 图表?

为了在 Flux 中按字段过滤,您需要编写:

from(bucket: "TestBucket")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "sensor" and r["_field"] == "sensorid" and r["_value"]  == 97)

但现在我只停留在 sensorid 值上。温度和嗡嗡声值已经消失。我正在尝试围绕 Flux 进行思考,但考虑到您将数据作为记录写入,而这就是您在设计解决方案时的想法,这很难。但是在 Flux 中,当您尝试缩小结果集时,这些列似乎突然消失了。

【问题讨论】:

    标签: influxdb


    【解决方案1】:

    在这些情况下,Pivot 是您的朋友。所以这段代码:

    |> pivot(
        rowKey:["_time"],
        columnKey: ["_field"],
        valueColumn: "_value"
      )
    

    转换结果表以将字段用作列名,将 _value 用作这些列的值。我仍然想知道这是否比为 id 列使用标签更有效。或者,更准确地说,在什么时候一个变得比另一个更有效。

    【讨论】:

    • 您能否发布您的完整通量查询?我有一个类似的例子,在为其中一个字段的值设置条件后无法获取所有字段。
    猜你喜欢
    • 2021-03-29
    • 2020-07-30
    • 2021-01-29
    • 2010-11-07
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    相关资源
    最近更新 更多