0

我想在评估检查之前的 3 小时内特定类型事件的计数小于 5 时发出警报,但我需要每 15 分钟进行一次检查。

由于我需要比我测量的时间跨度更频繁地检查,因此我无法根据我的原始数据执行此操作(根据文档,“[时间表] 间隔与检查查询的聚合函数间隔匹配” . 但我想我可以使用“任务”将我的数据转换成可以工作的形式。

我能够通过通量查询以我希望的方式聚合数据,甚至将生成的滚动计数保存到仪表板。

from(bucket: "myBucket")
    |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
    |> filter(fn: (r) =>
        (r._measurement == "measurementA"))
    |> filter(fn: (r) =>
        (r._field == "booleanAttributeX"))
    |> window(
        every: 15m,
        period: 3h,
        timeColumn: "_time",
        startColumn: "_start",
        stopColumn: "_stop",
        createEmpty: true,
    )
    |> count()
    |> yield(name: "count")
    |> to(bucket: "myBucket", org: "myOrg")

结果如下散点图。

滚动计数的散点图

我希望我可以将其复制粘贴为一项新任务,并获得我漂亮的新聚合数据集。在解决了几个清晰的语法错误之后,我确定了以下任务定义:

option v = {timeRangeStart: -12h, timeRangeStop: now()}
option task = {name: "blech", every: 15m}

from(bucket: "myBucket")
    |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
    |> filter(fn: (r) =>
        (r._measurement == "measurementA"))
    |> filter(fn: (r) =>
        (r._field == "booleanAttributeX"))
    |> window(
        every: 15m,
        period: 3h,
        timeColumn: "_time",
        startColumn: "_start",
        stopColumn: "_stop",
        createEmpty: true,
    )
    |> count()
    |> yield(name: "count")
    |> to(bucket: "myBucket", org: "myOrg")

不幸的是,我遇到了一个在任何地方都找不到的错误:could not execute task run; Err: no time column detected: no time column detected.

如果您能帮助我调试此任务运行错误,或通过以其他方式完成此任务来回避它,我将非常感激。

4

1 回答 1

2

我知道我在这里迟到了,但是该to函数需要一_time列,但是count您添加的聚合返回 a_start_stop列来指示计数的时间范围,而不是 a _time

您可以通过在函数|> duplicate(column: "_stop", as: "_time")之前添加to或利用aggregateWindow为您处理此问题的函数来解决此问题。

|> aggregateWindow(every: 15m, fn: count)

参考:

https://v2.docs.influxdata.com/v2.0/reference/flux/stdlib/built-in/transformations/aggregates/count

https://v2.docs.influxdata.com/v2.0/reference/flux/stdlib/built-in/transformations/duplicate/

https://v2.docs.influxdata.com/v2.0/reference/flux/stdlib/built-in/transformations/aggregate/aggregatewindow/

于 2020-02-26T19:25:22.223 回答