0
  • オペレーティング システム (またはディストリビューション) の完全な詳細 (例: 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として提出してください。

4

0 に答える 0