Aggregationコネクタ
Aggregationコネクタは、ウィンドウ内で受信ペイロードをバッファリングし、ウィンドウフラッシュごとに集約された単一のペイロードを発行します。フィールドごとに複数の集約関数を持つ時間ベースおよびカウントベースのウィンドウをサポートします。
コネクタタイプ: MeddleAggregation
タンブリングウィンドウ
Section titled “タンブリングウィンドウ”固定された重複しない時間ウィンドウ。フラッシュごとにバッファが完全にドレインされます。
{ "type": "MeddleAggregation", "config": { "windowType": "tumbling", "windowSize": 60000, "fields": [ { "key": "temperature", "function": "avg", "outputKey": "temperature_avg" }, { "key": "temperature", "function": "max", "outputKey": "temperature_max" } ] }}60秒ごとに、ウィンドウ中に収集されたtemperatureの平均と最大を発行し、その後バッファをリセットします。
スライディングウィンドウ
Section titled “スライディングウィンドウ”重複する時間ウィンドウ。各フラッシュ後、バッファの後半は保持され、次の発行が前のものと重複するようにします。
{ "type": "MeddleAggregation", "config": { "windowType": "sliding", "windowSize": 60000, "slideSize": 30000, "fields": [ { "key": "pressure", "function": "avg", "outputKey": "pressure_avg" } ] }}各発行が前のウィンドウとサンプルの半分を共有するため、よりスムーズな移動平均に役立ちます。
カウントウィンドウ
Section titled “カウントウィンドウ”経過時間に関係なく、バッファにcountSize個のペイロードが含まれた時点でフラッシュします。
{ "type": "MeddleAggregation", "config": { "windowType": "count", "countSize": 100, "fields": [ { "key": "vibration", "function": "max", "outputKey": "vibration_peak" }, { "key": "vibration", "function": "count", "outputKey": "samples" } ] }}受信した100サンプルごとに1つのペイロードを発行します。
設定パラメータ
Section titled “設定パラメータ”- windowType(必須):
tumbling、sliding、またはcount - windowSize: ミリ秒単位のウィンドウ期間(
tumblingとslidingに必須) - slideSize: ミリ秒単位のスライド間隔(
slidingで使用) - countSize: ウィンドウごとのサンプル数(
countに必須) - fields(必須、最小1):集約フィールド定義の配列
- groupByKeys: 集約をグループ化するためのペイロードキーのオプションリスト
フィールド定義
Section titled “フィールド定義”- key: 読み取り元の入力ペイロードキー
- function:
sum、avg、min、max、count、first、lastのいずれか - outputKey: 集約された値を書き込むキー
- sum — ウィンドウ内の数値の合計
- avg — 数値の算術平均
- min / max — 最小/最大数値
- count — ウィンドウ内のペイロード数
- first / last — キーで観測された最初/最後の値(任意の型)
非数値は数値関数ではスキップされ、エラーチャネルで型不一致エラーとして報告されます。
ユースケース
Section titled “ユースケース”- スライディング平均でノイズの多いセンサー読み取りを平滑化
- ダッシュボード用の分単位または時間単位のKPI
- データベースまたはメッセージブローカーに書き込む前のイベントのバッチ化
- 固定サンプル数でのピーク検出
例: マルチフィールドタンブリングウィンドウ
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" } ] }}ベストプラクティス
Section titled “ベストプラクティス”- 整然とした定期レポートには
tumblingを、よりスムーズなトレンドにはslidingを選択 - 時間が自然な単位ではない高頻度ストリームには
countウィンドウを使用 - メモリを制限するには十分小さく、統計的に意味のある十分大きさのウィンドウを保つ
- 数値集約と並んで非数値コンテキスト(例:マシン状態)を運ぶには
first/lastを使用
関連コネクタ
Section titled “関連コネクタ”- Trigger - 集約値の条件付きロジック
- Anomaly Detection - 外れ値を検出
- Chart - 集約系列を可視化