首页 > 解决方案 > 从 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 语句中列出的其他元素进行分组。

标签: pythoninfluxdb

解决方案


“|>” 是一种新的Flux 语法,但您使用的是 InfluxDBClient,它仅支持InfluxQL和 Flux。

目前还不清楚你在问什么:

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

推荐阅读