如果你想要每秒的结果不变,你会想要GROUP BY time(1s)
。这将为您提供准确的perSecond
结果。
考虑以下示例:
假设计数器的值每秒变化如下
0s → 1s → 2s → 3s → 4s
1 → 2 → 5 → 8 → 11
根据我们如何对上面的序列进行分组,我们会看到不同的结果。
考虑一下我们将事物分组为的情况2s
桶。
0s-2s → 2s-4s
(5-1)/2 → (11-5)/2
2 → 3
与1s
buckets
0s-1s → 1s-2s → 2s-3s → 3s-4s
(2-1)/1 → (5-2)/1 → (8-5)/1 → (11-8)/1
1 → 3 → 3 → 3
寻址
所以对我来说,这意味着在扩展时间视图时给定点的值不应该改变那么多,因为该值应该是每单位的变化率(在上面的示例查询中为 1s)。
The rate of change per unit
是一个标准化因子,独立于GROUP BY
时间单位。解释我们前面的例子,当我们将导数区间更改为2s
可能会提供一些见解。
确切的方程是
∆y/(∆x/tu)
考虑一下我们将事物分组为的情况1s
导数区间为2s
。我们应该看到的结果是
0s-1s → 1s-2s → 2s-3s → 3s-4s
2*(2-1)/1 → 2*(5-2)/1 → 2*(8-5)/1 → (11-8)/1
2 → 6 → 6 → 6
这可能看起来有点奇怪,但如果你考虑一下这句话的意思,它应该是有道理的。当我们指定导数区间时2s
我们所要求的是2s
变化率是针对1s
GROUP BY
bucket.
如果我们将类似的推理应用于以下情况2s
导数区间为2s
is then
0s-2s → 2s-4s
2*(5-1)/2 → 2*(11-5)/2
4 → 6
我们在这里要求的是2s
变化率是针对2s
GROUP BY
桶并且在第一个间隔中2s
变化率将是4
和第二个间隔2s
变化率将是6
.