从Influxdb查询时有大小限制吗?

时间:2019-11-21 03:43:09

标签: python influxdb

我使用以下代码查询,我确定还有更多数据,但唯一的输出本可以延续5天的数据。日内数据很多(每15分钟一次)。数据下载有限制吗?在这种情况下,我每天需要查询1行,但无法执行。任何帮助将不胜感激。

我的代码:

SELECT "account_entity" as app_vendor_id, "balance", "source", "base_ccy" as currency 
FROM "data_feeds"
WHERE "type" = 'LPACCOUNT' and ("base_ccy" = 'BCH' OR "base_ccy"='BTC' OR  "base_ccy"='ETH' 
OR "base_ccy"='ETC' OR "base_ccy"='NEO' OR "base_ccy"='QTUM' OR "base_ccy"='XRP' OR "base_ccy"='DASH' OR "base_ccy"='ENJ' OR "base_ccy"='LTC' OR "base_ccy"='MCO' OR "base_ccy"='TRX' 
OR "base_ccy"='XMR' OR "base_ccy"='USDC' OR "base_ccy"='BSV' OR "base_ccy"='BTG' OR "base_ccy"='GAS' OR "base_ccy"='UDC')
AND ("account_entity" = 'CORP')
ORDER BY "time" DESC

编辑: 我找到了一种使用|> hourSelection(start: 23, stop: 00, timeColumn: "time")来减少数据数组的方法,但是在运行代码时出现错误:

SELECT "account_entity" as app_vendor_id, "balance", "source", "base_ccy" as currency 
FROM "data_feeds"
  |> hourSelection(start: 9, stop: 17, timeColumn: "time") 
WHERE "type" = 'LPACCOUNT' and ("base_ccy" = 'BCH' OR "base_ccy"='BTC' 
OR  "base_ccy"='ETH' OR "base_ccy"='ETC' OR "base_ccy"='NEO' OR "base_ccy"='QTUM' OR "base_ccy"='XRP' OR "base_ccy"='DASH' OR "base_ccy"='ENJ' OR "base_ccy"='LTC' OR "base_ccy"='MCO' OR "base_ccy"='TRX' OR "base_ccy"='XMR' OR "base_ccy"='USDC' OR "base_ccy"='BSV' OR "base_ccy"='BTG' OR "base_ccy"='GAS' OR "base_ccy"='UDC')
AND ("account_entity" = 'CORP' OR "account_entity" = 'PTE')
ORDER BY "time" DESC

错误:

Traceback (most recent call last):
  File "inventory_position.py", line 66, in <module>
query_res = db_client.query(query_str)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/influxdb/client.py", line 416, in query
expected_response_code=expected_response_code
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/influxdb/client.py", line 286, in request
raise InfluxDBClientError(response.content, response.status_code)
influxdb.exceptions.InfluxDBClientError: 400: {"error":"error parsing query: found |, expected ; at line 3, char 3"}

有人知道如何使用此语句选择小时吗?

编辑2:

我使用汇总并将数据过滤到每天1行,如下所示。

SELECT ("account_entity") as app_vendor_id, MEAN("balance") as balance, "source" as source, "base_ccy" as currency 
FROM "data_feeds" 
WHERE "type" = 'LPACCOUNT' and ("base_ccy" = 'BCH' OR "base_ccy"='BTC' 
OR  "base_ccy"='ETH' OR "base_ccy"='ETC' OR "base_ccy"='NEO' OR "base_ccy"='QTUM' OR "base_ccy"='XRP' OR "base_ccy"='DASH' OR "base_ccy"='ENJ' OR "base_ccy"='LTC' OR "base_ccy"='MCO' OR "base_ccy"='TRX' OR "base_ccy"='XMR' OR "base_ccy"='USDC' OR "base_ccy"='BSV' OR "base_ccy"='BTG' OR "base_ccy"='GAS' OR "base_ccy"='UDC')
AND ("account_entity" = 'CORP' OR "account_entity" = 'PTE')
GROUP BY time(1d), *
ORDER BY "time" DESC

但是,我仍然有一个错误,而且我不知道如何解决。我的意思是,当我按...分组时,它应该在传统的sql查询中工作。

influxdb.exceptions.InfluxDBClientError: mixing aggregate and non-aggregate queries is not supported

结论:

我的问题没有解决方案,因为该语言不允许使用聚合函数并按同一SELECT语句中列出的其他元素进行分组。

1 个答案:

答案 0 :(得分:0)

“ |>”是新的Flux syntax,但是您使用的InfluxDBClient仅支持InfluxQL和Flux。

不清楚您要问什么:

  • 如果您需要时间条件(例如,从-到时间),请在条件中使用正确的time syntax
  • 如果您需要更改数据粒度,请使用GROUP BY time +适当的聚合函数