sql - QuestDB - 在 SAMPLE BY 函数中声明变量或执行数学运算
问题描述
背景:
我正在使用Telegraf、QuestDB和Grafana来可视化高频时间序列数据。为了减少 Grafana 查询长时间范围数据的时间,我需要利用 QuestDB 的SAMPLE BY
功能。
目标:
我需要根据利用 Grafana 的系统变量$__interval_ms和任意数字的简单数学方程使我的 QuestDB 查询动态化。
预期的:
在下面的查询中,我试图利用 Grafana 的系统变量来使我的查询动态化。我希望 QuestDB 能够理解并执行完成该SAMPLE BY
功能所需的数学运算。
SELECT ts time, last(x), last(y), last(z)
FROM accelerometer
WHERE $__timeFilter(ts)
SAMPLE BY ($__interval_ms/1000)T
在 Grafana 处理此查询后,它被传递给 QuestDB 作为...
SELECT ts time, last(x), last(y), last(z)
FROM accelerometer
WHERE ts BETWEEN '2021-10-12T00:00:00.000Z' AND '2021-10-12T01:00:00.000Z'
SAMPLE BY (30000/1000)T
注意:如果我替换SAMPLE BY (300000/1000)T
为SAMPLE BY 30T
,查询将按预期执行。
结果:
QuestDB 无法识别我希望执行数学运算并失败。
我已采取的步骤:
我已尝试执行以下操作作为解决方法:
- 通过 -- 声明一个变量
DECLARE @sampler
失败 - 在查询前执行
WITH
语句 viaWITH sampler as (SELECT concat($__interval_ms / 1000, 'T')
,然后sampler
在末尾引用 viaSAMPLE BY sampler
-- failed - 在 Grafana 变量中执行数学运算(通过他们的标准仪表板变量 GUI)——失败
- 在函数中嵌入
SELECT
语句SAMPLE BY
——失败
到目前为止,我完全没有运气。
如何在 QuestDB 中存储变量(类似于DECLARE
Postgres)或在函数中执行数学运算SAMPLE by
?还是有另一种我没有想到的解决这个问题的方法?
解决方案
QuestDB 从 6.0.9 开始无法解析非常数SAMPLE BY
周期,这是一种可以SAMPLE BY 100s
但不能像SAMPLE BY 1000/10s
.
推荐阅读
- typescript - Firebase实时数据库如何添加具有自动ID的孩子
- windows - windows上安装日晷包
- javascript - Vue JS 从方法返回数据属性到 HTML
- javascript - 如何删除浏览器自动生成的 iframe 中的 PDF 标题
- javascript - javascript中是否有一个不包含两个数字范围的随机函数?
- html - 使用 headless chrome 在 PDF 中生成命名目的地或书签
- python - 从随机到 XPath
- python - 如何获取用户选择的文件并将其提供给 Tkinter 中的 python 程序
- data-cleaning - 如何使用 OpenRefine 更好地清理极其混乱的数据?
- git - 如何将数千个本地版本添加到 GitHub?