【问题标题】:How can you get CSV instead of JSON from the HTTP API of InfluxDB?如何从 InfluxDB 的 HTTP API 获取 CSV 而不是 JSON?
【发布时间】:2017-09-16 21:40:27
【问题描述】:

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

根据文档,应该使用 HTTP API 进行查询 (https://docs.influxdata.com/influxdb/v1.2/guides/querying_data/) 我的问题是 API 的输出似乎只是 JSON。这意味着每个分析师首先必须弄清楚如何将 JSON 转换为表格格式,然后再加入其他数据等。

是否可以告诉 API 生成类似 csv 的表格输出? 你有建议使用哪些工具来制作好的仪表板吗?我尝试了 grafana,但在加入其他数据时似乎达不到要求。

【问题讨论】:

    标签: json csv business-intelligence influxdb


    【解决方案1】:

    您可以在 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
    

    【讨论】:

    【解决方案2】:

    您可以使用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 用于获取原始输出

    更多资源:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-23
      • 2020-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多