让 jq 检测 influxdb json 输出中的错误

have jq detect errors in influxdb json output

我有一个 jq 过滤器,可以将 (influxdb) json 输入转换为 csv 以供进一步解析。但是,此过滤器在 influxdb returns 错误时失败。我正在尝试改进我的 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

根据您的尝试,并假设每个对象包含 resultserror,应该这样做:

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

REPL demo