什么是等效通量查询
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
答案 0 :(得分:0)
如果您(或其他居住在这里的人)只是想要最小值和最大值之间的差异,则需要内置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
)。