コンテンツにスキップ

Aggregationコネクタ

Aggregationコネクタは、ウィンドウ内で受信ペイロードをバッファリングし、ウィンドウフラッシュごとに集約された単一のペイロードを発行します。フィールドごとに複数の集約関数を持つ時間ベースおよびカウントベースのウィンドウをサポートします。

コネクタタイプ: MeddleAggregation

固定された重複しない時間ウィンドウ。フラッシュごとにバッファが完全にドレインされます。

{
"type": "MeddleAggregation",
"config": {
"windowType": "tumbling",
"windowSize": 60000,
"fields": [
{ "key": "temperature", "function": "avg", "outputKey": "temperature_avg" },
{ "key": "temperature", "function": "max", "outputKey": "temperature_max" }
]
}
}

60秒ごとに、ウィンドウ中に収集されたtemperatureの平均と最大を発行し、その後バッファをリセットします。

重複する時間ウィンドウ。各フラッシュ後、バッファの後半は保持され、次の発行が前のものと重複するようにします。

{
"type": "MeddleAggregation",
"config": {
"windowType": "sliding",
"windowSize": 60000,
"slideSize": 30000,
"fields": [
{ "key": "pressure", "function": "avg", "outputKey": "pressure_avg" }
]
}
}

各発行が前のウィンドウとサンプルの半分を共有するため、よりスムーズな移動平均に役立ちます。

経過時間に関係なく、バッファにcountSize個のペイロードが含まれた時点でフラッシュします。

{
"type": "MeddleAggregation",
"config": {
"windowType": "count",
"countSize": 100,
"fields": [
{ "key": "vibration", "function": "max", "outputKey": "vibration_peak" },
{ "key": "vibration", "function": "count", "outputKey": "samples" }
]
}
}

受信した100サンプルごとに1つのペイロードを発行します。

  • windowType(必須):tumblingsliding、またはcount
  • windowSize: ミリ秒単位のウィンドウ期間(tumblingslidingに必須)
  • slideSize: ミリ秒単位のスライド間隔(slidingで使用)
  • countSize: ウィンドウごとのサンプル数(countに必須)
  • fields(必須、最小1):集約フィールド定義の配列
  • groupByKeys: 集約をグループ化するためのペイロードキーのオプションリスト
  • key: 読み取り元の入力ペイロードキー
  • function: sumavgminmaxcountfirstlastのいずれか
  • outputKey: 集約された値を書き込むキー
  • sum — ウィンドウ内の数値の合計
  • avg — 数値の算術平均
  • min / max — 最小/最大数値
  • count — ウィンドウ内のペイロード数
  • first / last — キーで観測された最初/最後の値(任意の型)

非数値は数値関数ではスキップされ、エラーチャネルで型不一致エラーとして報告されます。

  1. スライディング平均でノイズの多いセンサー読み取りを平滑化
  2. ダッシュボード用の分単位または時間単位のKPI
  3. データベースまたはメッセージブローカーに書き込む前のイベントのバッチ化
  4. 固定サンプル数でのピーク検出

例: マルチフィールドタンブリングウィンドウ

Section titled “例: マルチフィールドタンブリングウィンドウ”
{
"type": "MeddleAggregation",
"config": {
"windowType": "tumbling",
"windowSize": 30000,
"fields": [
{ "key": "temperature", "function": "avg", "outputKey": "temperature_avg" },
{ "key": "temperature", "function": "min", "outputKey": "temperature_min" },
{ "key": "temperature", "function": "max", "outputKey": "temperature_max" },
{ "key": "status", "function": "last", "outputKey": "status_last" }
]
}
}
  • 整然とした定期レポートにはtumblingを、よりスムーズなトレンドにはslidingを選択
  • 時間が自然な単位ではない高頻度ストリームにはcountウィンドウを使用
  • メモリを制限するには十分小さく、統計的に意味のある十分大きさのウィンドウを保つ
  • 数値集約と並んで非数値コンテキスト(例:マシン状態)を運ぶにはfirst / lastを使用