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 语句中列出的其他元素进行分组。
解决方案
“|>” 是一种新的Flux 语法,但您使用的是 InfluxDBClient,它仅支持InfluxQL和 Flux。
目前还不清楚你在问什么:
- 如果您需要时间条件(例如从 - 到),则在条件中使用正确的时间语法
- 如果您需要更改数据粒度,则使用GROUP BY time + 适当的聚合函数
推荐阅读
- c - sprintf() 出错:'__builtin___sprintf_chk' 可能会在目标末尾写入终止 nul
- monaco-editor - 第二个编辑器的摩纳哥代码编辑器自定义行号
- c++ - const 和 non-const 函数作为模板参数参数
- docker - 如何从 Jenkinsfile 停止 Docker 容器
- android-studio - 更改已托管的使用 java 构建的 android 应用程序以颤振和更新
- header - 响应标头中的 ms-cv 是什么
- python-3.x - 打开文本文件并在python中更改它
- django - 在 AWS 服务器中使用 Outlook REST API Oauth2 时出现凭据不允许错误
- reactjs - 无法在包含到 React 组件的富文本编辑器(react-draft-wysiwyg)中获取输入的数据
- php - 在 ionic 4 上使用 Angular 7 帖子时出现 Cors 策略错误