- 您的操作系统(或发行版)的完整详细信息,例如 64 位 Ubuntu 14.04。
- 在 MacOSX 上运行 InfluxDB/Kapacitor/Chronograf 作为 Docker 容器,最新的 Docker。
- 您正在运行的 Kapacitor 版本
- 最新,1.4。
- 无论您是使用预构建的软件包安装它,还是从源代码构建它。
- 官方 Docker 容器
我们遇到了 TICKscript 及其 groupBy 行为的问题。
我们有两组测量值,室内温度和室外温度,我们用批处理查询。
查询如下所示:
var out_temp = batch
|query('SELECT mean(temperature) FROM yyyy')
.every(10s)
.period(120d)
.groupBy(time(1h))
.fill(0)
var in_temp = batch
|query('SELECT mean(temperature) FROM xxxx')
.every(10s)
.period(120d)
.groupBy(time(1h))
.fill(0)
如果我们将它们都用 HTTP 发送出去,它们会创建以下数据集:
{
"series": [
{
"name": "outdoor_temperatures",
"columns": [
"time",
"mean"
],
"values": [
[
"2017-09-20T17:00:00Z",
0
],
[
"2017-09-20T18:00:00Z",
11.5
]
... the rest
]
}
]
}
{
"series": [
{
"name": "indoor_measurements",
"columns": [
"time",
"mean"
],
"values": [
[
"2017-09-20T17:00:00Z",
585.44012944984
],
[
"2017-09-20T18:00:00Z",
592.94890510949
]
... the rest
]
}
]
}
现在我们对它们进行完全连接,这给了我们预期的结果
out_temp
|join(in_temp)
.as('out_temp_mean', 'in_temp_mean')
.tolerance(5m)
.fill(0)
http输出:
{
"series": [
{
"name": "outdoor_temperatures",
"columns": [
"time",
"in_temp_mean.mean",
"out_temp_mean.mean"
],
"values": [
[
"2017-09-20T17:00:00Z",
586.10175438596,
0
],
[
"2017-09-20T18:00:00Z",
592.94890510949,
11.5
]
... the rest
]
}
]
}
看起来很完美。当我们想要四舍五入out_temp_mean.mean
并分组时,问题就出现了
所以我们继续扩展脚本
out_temp
|join(in_temp)
.as('out_temp_mean', 'in_temp_mean')
.tolerance(5m)
.fill(0)
|eval(lambda: string(floor("out_temp_mean.mean")))
.as('bucket')
.tags('bucket')
.keep('out_temp_mean.mean', 'in_temp_mean.mean')
之后输出仍然看起来应该:
{
"series": [
{
"name": "outdoor_temperatures",
"columns": [
"time",
"in_temp_mean.mean",
"out_temp_mean.mean",
"bucket"
],
"values": [
[
"2017-09-20T17:00:00Z",
586.99190283401,
0,
"0"
],
[
"2017-09-20T18:00:00Z",
592.94890510949,
11.5,
"11"
]
]
}
]
}
现在唯一剩下的就是按新标签桶对值进行分组:
out_temp
|join(in_temp)
.as('out_temp_mean', 'in_temp_mean')
.tolerance(5m)
.fill(0)
|eval(lambda: string(floor("out_temp_mean.mean")))
.as('bucket')
.tags('bucket')
.keep('out_temp_mean.mean', 'in_temp_mean.mean')
|groupBy('bucket')
之后一切都出错了,我们受到了欢迎series: null
{
"series": null
}
这是预期的行为吗?一个错误?或者是其他东西?
如果有人想知道,也将其归档为https://github.com/influxdata/kapacitor/issues/1765 。