如何解决Flux查询语言中的SELECT firstcolumn,lastcolumn等效于什么?
什么是等效通量查询
SELECT first(column) as first,last(column) as last FROM measurement ?
SELECT last(column) - first(column) as column FROM measurement ?
(我指的是InfluxData开发的新查询语言FluxQL)
有first()和last()函数,但是我找不到在同一查询中同时使用这两个示例。
这些是FluxQL的文档,可供您更好地参考:
https://docs.influxdata.com/flux/v0.50/introduction/getting-started
https://v2.docs.influxdata.com/v2.0/query-data/get-started/
解决方法
如果您(或其他居住在这里的人)只是想要最小值和最大值之间的差异,则需要内置spread function。
spread()函数输出指定列中的最小值和最大值之差。
但是,您要查询流中的第一个值和最后一个值之间的差异,并且似乎没有内置函数(可能是因为预期大多数流的范围是动态的)。为此,您可以编写a similar answer中的自定义聚合函数。或者,您可以将两个查询合并在一起,然后进行区别:
data = from(bucket: "example-bucket") |> range(start: -1d) |> filter(fn: (r) => r._field == "field-you-need")
temp_earlier_number = data |> first() |> set(key: "_field",value: "delta")
temp_later_number = data |> last() |> set(key: "_field",value: "delta")
union(tables: [temp_later_number,temp_earlier_number])
|> difference()
此操作是用名为delta
的字段创建两个表,然后将它们联接在一起,从而形成一个具有两行的表-一个代表第一个值,另一个代表最后一个值。然后,我们计算这两行之间的差。如果您不想要负数,只需确保以正确的顺序减去数据即可(或使用math.abs
)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。