- オペレーティング システム (またはディストリビューション) の完全な詳細 (例: 64 ビット Ubuntu 14.04)。
- InfluxDB/Kapacitor/Chronograf を Docker コンテナーとして MacOSX、最新の Docker で実行します。
- 実行している Kapacitor のバージョン
- 最新、1.4。
- ビルド済みパッケージを使用してインストールしたか、ソースからビルドしたか。
- 公式の Docker コンテナ
TICKscript とその groupBy の動作で問題が発生しています。
2 つの測定セット、indoor_temperatures と outdoor_temperatures があり、バッチでクエリを実行します。
クエリは次のようになります。
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
]
}
]
}
これは完璧に見えます。この問題は、切り捨てて groupBy にしたい場合に発生します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として提出してください。