如何从XDB的HTTP API获取CSV而不是JSON?

如何从XDB的HTTP API获取CSV而不是JSON?,json,csv,business-intelligence,influxdb,Json,Csv,Business Intelligence,Influxdb,我想在商业智能环境中使用XDB: ETL,连接来自其他数据库的数据,创建实时仪表盘。 现在,我们正在使用标准的BI工具,如QLIK或Microsoft PowerBI 根据文档,HTTP API应用于查询() 我的问题是API的输出似乎只是JSON。这意味着每个分析人员在连接其他数据之前,首先必须弄清楚如何将JSON转换为表格式 是否可以告诉API生成类似csv的表输出? 您是否建议使用哪些工具来制作好的仪表盘?我尝试了grafana,但在加入其他数据时,这似乎不够。您可以在curl中使用-H“

我想在商业智能环境中使用XDB: ETL,连接来自其他数据库的数据,创建实时仪表盘。 现在,我们正在使用标准的BI工具,如QLIK或Microsoft PowerBI

根据文档,HTTP API应用于查询() 我的问题是API的输出似乎只是JSON。这意味着每个分析人员在连接其他数据之前,首先必须弄清楚如何将JSON转换为表格式

是否可以告诉API生成类似csv的表输出? 您是否建议使用哪些工具来制作好的仪表盘?我尝试了grafana,但在加入其他数据时,这似乎不够。

您可以在
curl
中使用
-H“Accept:application/csv”
以获得csv响应。例如:

$ curl -G 'http://localhost:8086/query' --data-urlencode "db=my_db" --data-urlencode "q=SELECT * FROM \"cpu\"" -H "Accept: application/csv"
name,tags,time,host,region,value
cpu,,1493031640435991638,serverA,us_west,0.64

您可以使用
jq
将JSON输出转换为CSV,如下所示,这也允许您获取RFC3339格式的时间戳:

jq -r "(.results[0].series[0].columns), (.results[0].series[0].values[]) | @csv"
它给出了输出

"time","ppm","T"
"2019-01-17T19:45:00Z",864.5,18.54
"2019-01-17T19:50:00Z",861.4,18.545
"2019-01-17T19:55:00Z",866.2,18.5
"2019-01-17T20:00:00Z",863.9,18.47
之所以有效,是因为:

  • (.results[0].series[0].columns)
    将列名作为数组获取
  • 连接输出
  • (.results[0].series[0].values[])
    以数组形式获取数据值
  • |@csv
    使用jq csv格式化程序
  • -r
    用于获取原始输出
其他资源:

  • 用于生成查询
  • 其他例子:

这是文档中的某个地方,而我只是错过了它吗?我在github中关注这个问题:,这就是我知道的原因。但我在文档中也找不到:(此功能在此处的手册中有描述: