у jq обнаруживаются ошибки в притоке effxdb json - PullRequest
0 голосов
/ 21 марта 2020

У меня есть фильтр jq, который преобразует входные данные (influxdb) json в csv для дальнейшего анализа. Однако этот фильтр не работает, когда influxdb возвращает ошибку. Я пытаюсь улучшить свой фильтр JQ, чтобы обнаружить это, однако я не могу заставить это работать. Мне нужно что-то вроде { ссылка }, но я не могу заставить это работать. Есть идеи?

Пример данных

{"results":[{"statement_id":0,"series":[{"name":"energyv3","columns":["time","value"],"values":[["2015-07-30T23:59:00Z",56980800],["2015-07-31T23:59:00Z",95108400]]}]}]}
{"error":"error parsing query: found EOF, expected integer at line 1, char 34"}

Желаемый результат

"\"time\",\"value\""
"\"2015-07-30T23:59:00Z\",56980800"
"\"2015-07-31T23:59:00Z\",95108400"
"error parsing query: found EOF, expected integer at line 1, char 34"

т.е.

  1. Для ввода с помощью клавиши .results: данные в формате csv (работает нормально)
  2. Для ввода с помощью клавиши .error: только строка ошибки (не работает)

Текущий фильтр используется

select(.results) | (.results[0].series[0].columns), (.results[0].series[0].values[]) | @csv

Попытка объединить фильтры

((select(.error) | {error}) // null) + select(.results) | (.results[0].series[0].columns), (.results[0].series[0].values[]) | @csv

1 Ответ

0 голосов
/ 21 марта 2020

Исходя из ваших попыток и предположения, что каждый объект содержит results или error, это должно сделать это:

( .results[0].series | .[0].columns, .[]?.values[] ) // [ .error ] | @csv

REPL demo

...