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