【问题标题】:QuestDB - Declaring variables or performing math in SAMPLE BY functionQuestDB - 在 SAMPLE BY 函数中声明变量或执行数学运算
【发布时间】:2021-12-06 19:08:38
【问题描述】:

背景:

我正在使用 TelegrafQuestDBGrafana 来可视化高频时间序列数据。为了减少 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 无法识别我希望执行数学运算并失败。

我已采取的步骤:

我已尝试执行以下解决方法:

  1. 通过DECLARE @sampler声明变量——失败
  2. 在查询前通过WITH sampler as (SELECT concat($__interval_ms / 1000, 'T') 执行WITH 语句,然后在末尾通过SAMPLE BY sampler 引用sampler -- 失败
  3. 在 Grafana 变量中执行数学运算(通过其标准仪表板变量 GUI)- 失败
  4. SAMPLE BY 函数中嵌入 SELECT 语句 -- 失败

到目前为止,我完全没有运气。

如何在 QuestDB 中存储变量(类似于 Postgres 中的 DECLARE)或在 SAMPLE by 函数中执行数学运算?或者有没有其他我没有想到的方法来解决这个问题?

【问题讨论】:

    标签: sql grafana questdb


    【解决方案1】:

    QuestDB 自 6.0.9 起无法解析非常量 SAMPLE BY 句点,这是一种可以执行 SAMPLE BY 100s 但不能像 SAMPLE BY 1000/10s 这样的算术表达式的方法。

    【讨论】:

      猜你喜欢
      • 2021-08-26
      • 1970-01-01
      • 2022-01-12
      • 2019-02-01
      • 2011-05-12
      • 2021-04-12
      • 1970-01-01
      • 1970-01-01
      • 2015-08-15
      相关资源
      最近更新 更多