Запросить InfluxDB с помощью оператора CASE или IF? - PullRequest
0 голосов
/ 23 апреля 2019

Я собираю метрики из моего моста Филипса Хью и помещаю их в InfluxDB. Я хотел бы иметь возможность отображать некоторые из этих показателей на панели инструментов.

Базовый запрос выглядит так:

SELECT mean("state.bri") AS "mean_state.bri" FROM "telegraf_hue"."autogen"."hue" WHERE time > :dashboardTime: AND "lamp"='Couch' GROUP BY time(:interval:) FILL(null)

Возвращает хороший график, который показывает уровень яркости света.

Основные результаты запроса

Проблема с этим запросом заключается в том, что на самом деле свет не горит все это время. Hue Bridge возвращает последний уровень яркости, даже если он выключен.

Я могу увидеть, включен ли он, проверив "state.on" для значения true или false.

SELECT mean("state.bri") AS "mean_state.bri" FROM "telegraf_hue"."autogen"."hue" WHERE "state.on" = true AND time > :dashboardTime: AND "lamp"='Couch' GROUP BY time(:interval:) FILL(null)

Возвращает только те точки, где свет включен.

Запрос при включенном свете

Что бы я хотел сделать, например, оператор CASE, как в MySQL:

SELECT CASE WHEN "state.on" = true THEN mean("state.bri") ELSE 0 END FROM "telegraf_hue"."autogen"."hue" WHERE time > :dashboardTime: AND "lamp"='Couch' GROUP BY time(:interval:) FILL(null)

Это не работает. Сбой с:

Request failed with status code 400

Как мне добиться чего-то похожего с InfluxDB? В конечном счете, я буду строить панели инструментов в Графане, если это имеет значение.

...