Тернарный оператор в потоке притока - PullRequest
0 голосов
/ 14 мая 2019

Я делаю соединение в притоке, чтобы получить первое и последнее значения для интервала, а затем получаю разницу.

Preset = 600

FirstValues = from(bucket: "Historian/oneday")
  |> range(start: dashboardTime)
  |> filter(fn: (r) => 
    r._measurement == "TestMeasurement" and
    r._field =="Value"  and
    r.Loc=="TXS"
  )
 |>window(every:15m)
 |>first()


 LastValues = from(bucket: "Historian/oneday")
  |> range(start: dashboardTime)
  |> filter(fn: (r) => 
    r._measurement == "TestMeasurement" and
    r._field =="Value"  and
    r.Loc=="TXS"
  )
 |>window(every:15m)
 |>last()

 CombinedValues = join (
    tables:{first:FirstValues,last:LastValues},
    on:["_stop","_start"]
 )
 totaliser = CombinedValues
                |>map(fn: (r) => ({   
                    _time: r._start,
                    //Want to do this, r._value_first < r._value_last ? Preset : r._value_first
                    _value: r._value_first - r._value_last
                }))
 totaliser
 |>window(every:inf)

Это прекрасно работает, пока разница во времени не вернет положительное число.

Но если 1-е значение из возвращаемых объединений меньше 2-го значения, я хочу обновить его с помощью заданного значения.

Пример:

Preset = 600

totaliser = CombinedValues
                |>map(fn: (r) => ({   
                    _time: r._start,

                    //Want to do this, r._value_first < r._value_last ? Preset : r._value_first

                    _value: r._value_first - r._value_last
                }))

1 Ответ

0 голосов
/ 15 мая 2019

Условная логика довольно новая для Flux, но она существует. В настоящее время существует только if, else if и else:

// Pattern
if <condition> then <action> else <alternative-action>

// Example
if color == "green" then "008000" else "ffffff"

Но это будет расширяться со временем.

https://v2.docs.influxdata.com/v2.0/query-data/guides/conditional-logic/

...