> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/workflows/ja/burokku/blocks/data-storage/data-aggregator.md).

# データアグリゲーター

収集し、設定可能な時間ベースまたは実行ベースの間隔でワークフローのステップからデータを処理して、統計要約と分析レポートを生成します。複数の集計操作（合計、平均、最大、最小、件数、重複のない値、値の件数）をサポートし、包括的なデータストリーム分析のために必要に応じて UQL ベースのデータ変換を利用できます。

## このブロックの仕組み

このブロックは、指定された間隔ごとにワークフローのステップからデータを収集・集計して、統計要約を生成します。ほとんどのブロックは各入力に対してデータを出力しますが、このブロックは内部状態を保持し、設定された間隔に達したときのみ集計結果を出力します。このブロックは、

1. 他のワークフローステップからデータ入力を受け取り（ `データ` ワークフローステップの出力に変数名を対応付けるフィールドマッピング）
2. 必要に応じて UQL（Query Language）操作を適用して、集計前にデータを変換します（例：検出結果からクラス名を抽出、シーケンス長を計算、値をフィルタリングまたは変換）を使用して `data_operations` 各入力変数ごとに
3. 指定された `aggregation_mode` 各変数ごとに
4. 経過時間または実行回数を追跡します。基準は `interval_unit` （秒、分、時間、または実行）
5. ほとんどの場合、内部でデータを収集しながら空の出力を返します（下流の処理を終了します）
6. 間隔のしきい値に達すると（経過時間または実行回数に基づいて）、集計統計を計算して出力します
7. 集計結果を出力した後に内部状態をフラッシュし、次の間隔のデータ収集を開始します
8. 動的に次のような名前の出力フィールドを生成します `{variable_name}_{aggregation_mode}` （例： `predictions_avg`, `classes_distinct`, `count_values_counts`)

このブロックは、数値データに対する複数の集計モード（`sum`, `avg`, `max`, `min`, `values_difference`）、集計操作（`count`, `count_distinct`）、および値の分析（`distinct`, `values_counts`）をサポートします。リストのようなデータでは、操作は各要素を自動的に処理します（例： `count` リストの長さを追加し、 `distinct` 各要素を distinct 集合に追加します）。間隔は時間ベース（壁時計時間が重要なビデオストリームに有用）または実行ベース（経過時間よりフレーム数が重要なビデオファイル処理に有用）にできます。

## 一般的な使用例

* **ビデオストリーム分析**：ライブビデオストリームから時間間隔ごとに検出結果を集計します（例：1分あたりの平均オブジェクト数を計算、1時間ごとに観測された重複のないクラスを追跡、30秒ウィンドウごとに検出数の最小/最大を計算）。これにより、継続的なビデオ処理ワークフローでリアルタイム分析と監視が可能になります
* **バッチビデオ処理**：ビデオフレーム全体を実行ベースの間隔で集計して統計を算出します（例：100フレームごとの平均検出数を計算、500フレームのウィンドウ全体で重複のないオブジェクトを数える、バッチごとの総検出数を合計）。これにより、経過時間よりフレーム数が重要な事前収録済みビデオファイルに対して意味のある分析が可能になります
* **時系列メトリクス収集**：時間の経過に伴ってワークフローメトリクスを収集・要約します（例：検出数を集計、平均信頼度スコアを計算、クラスの重複のない出現を追跡、値の分布を計算）。これにより、本番ワークフロー向けの統計分析とレポート作成が可能になります
* **モデル性能分析**：複数の入力にわたるモデル予測を分析します（例：平均予測数を計算、予測された重複のないクラスを追跡、信頼度スコアの最小/最大を計算、各クラスの出現回数を数える）。これにより、モデル性能を包括的に評価し、洞察を得ることができます
* **データストリーム要約**：高頻度データストリームを定期レポートに要約します（例：60秒ごとの検出結果を要約統計に集計、1時間ごとの平均を計算、実行ごとの要約を生成）。これにより、大量のワークフローに対して効率的なデータ削減と分析が可能になります
* **マルチモデル比較**：複数モデルの結果を比較用に集計します（例：モデル間で平均検出数を比較、モデルごとの重複のないクラスを追跡、モデルアンサンブルの集計統計を計算）。これにより、異なる推論パイプライン間で比較分析が可能になります

## 他のブロックへの接続

このブロックはワークフローステップからデータを受け取り、定期的に集計統計を出力します：

* **検出または解析ブロックの後** （例：Object Detection、Instance Segmentation、Classification）を用いて、時間経過またはフレーム全体にわたり予測結果を集計し、モデル出力と検出パターンの統計分析を可能にします
* **データ処理ブロックの後** （例：Expression、Property Definition、Detections Filter）で、数値またはリストの出力を生成し、間隔ごとに計算値、メトリクス、または変換済みデータを集計します
* **出力先ブロックの前に** （例：CSV Formatter、Local File Sink、Webhook Sink）で、定期的な集計レポートを保存し、個々のデータポイントではなく要約済み分析データの効率的な保存とエクスポートを可能にします
* **動画処理ワークフローでは** 時間ベースまたはフレームベースの分析レポートを生成し、フレームごとの出力ではなく定期的な統計要約による包括的なビデオ分析を可能にします
* **可視化またはレポート作成ブロックの前に** ダッシュボード、チャート、または要約を時系列データから作成するために集計データを必要とし、傾向と統計の可視化を可能にする
* **分析パイプラインでは** 高頻度データを定期的な要約へ削減する必要があり、元の大量データストリームではなく統計的な洞察の効率的な下流処理と保存を可能にします

### 型識別子

ステップで次の識別子を使用してください `"type"` フィールド： `roboflow_core/data_aggregator@v1` ワークフローにこのブロックをステップとして追加するには。

### プロパティ

| **名前**             | **型**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | **説明**                                                                                                                                                                                                                                                                                                                                                                                                        | 参照 |
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
| `name`             | `str`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | このステップの一意の識別子を入力してください。                                                                                                                                                                                                                                                                                                                                                                                       | ❌  |
| `data_operations`  | `Dict[str, List[Union[ClassificationPropertyExtract, ConvertDictionaryToJSON, ConvertImageToBase64, ConvertImageToJPEG, DetectionsFilter, DetectionsOffset, DetectionsPropertyExtract, DetectionsRename, DetectionsSelection, DetectionsShift, DetectionsToDictionary, Divide, ExtractDetectionProperty, ExtractFrameMetadata, ExtractImageProperty, LookupTable, Multiply, NumberRound, NumericSequenceAggregate, PickDetectionsByParentClass, RandomNumber, SequenceAggregate, SequenceApply, SequenceElementsCount, SequenceLength, SequenceMap, SortDetections, StringMatches, StringSubSequence, StringToLowerCase, StringToUpperCase, TimestampToISOFormat, ToBoolean, ToNumber, ToString]]]` | データ）から、集計前にデータを変換する UQL（Query Language）操作チェーンへの、変数名をキーとする任意の辞書。操作は順番に適用され、値の抽出、フィルタリング、または変換を行います（例：DetectionsPropertyExtract を使用して検出結果からクラス名を抽出し、SequenceLength を使用してシーケンス長を計算し、値をフィルタリングし、計算を実行します）。キーはデータ内の変数名と一致している必要があります。変換が不要な変数は空のままにするか省略してください。例：{'predictions': \[{'type': 'DetectionsPropertyExtract', 'property\_name': 'class\_name'}]}..                                                      | ❌  |
| `aggregation_mode` | `Dict[str, List[str]]`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | 各変数名（データ由来）を、計算する集計操作のリストに対応付ける辞書。各集計は、'{variable\_name}\_{aggregation\_mode}' という名前の出力フィールドを生成します。サポートされる操作：'sum'（数値の合計）、'avg'（数値の平均）、'max'/'min'（数値の最大/最小）、'count'（値の件数、リストの場合はリスト長を追加）、'distinct'（一意の値のリスト）、'count\_distinct'（一意の値の数）、'values\_counts'（値の出現回数を示す辞書）、'values\_difference'（数値の最大値と最小値の差）。リストの場合、操作は各要素を処理します。変数ごとに複数の集計をサポートします。例：{'predictions': \['distinct', 'count\_distinct', 'avg']}.. | ❌  |
| `interval_unit`    | `str`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | 集計間隔を測定する単位：'seconds'、'minutes'、'hours'（時間ベースで、前回の出力から経過した実際の時間を使用します。ビデオストリームに有用）、または 'runs'（実行ベースで、ワークフローの実行回数を数えます。経過時間よりフレーム数が重要なビデオファイル処理に有用）。時間ベースの間隔は、集計出力間の経過時間を追跡します。実行ベースの間隔は、ブロックがデータを受け取った回数を数えます。ブロックは、間隔のしきい値に達すると、集計結果を出力して状態をフラッシュします..                                                                                                                                                       | ❌  |
| `間隔`               | `整数`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | interval\_unit で指定された単位での集計間隔の長さ。0 より大きくなければなりません。ブロックは内部でデータを蓄積し、この間隔のしきい値に達すると集計結果を出力します。時間ベースの単位（seconds、minutes、hours）の場合、これは前回の出力から経過した期間です。'runs' の場合、これは前回の出力以降のワークフロー実行回数（例：処理されたフレーム数）です。結果を出力した後、ブロックは内部状態をリセットし、新しい集計ウィンドウを開始します。ほとんどの場合、ブロックはデータを収集している間は空の出力を返します..                                                                                                                              | ❌  |

この **参照** 列は、で利用可能な動的値を使ってプロパティをパラメータ化できる可能性を示します `ワークフロー` 実行時。参照 *バインディング* 詳細は。

### ランタイム互換性

`soft` - ランタイム `hosted_serverless`, `dedicated_deployment`；実行 `リモート`; 入力 `動画` このブロックは、プロセスメモリ内に動画ごとの状態を保持します（video\_metadata.video\_identifier をキーとする）。ステートレスまたは複数レプリカのHTTPランタイムでリモートステップ実行を行うと、連続するリクエストが別々のワーカープロセスによって処理される可能性があるため、呼び出し間で状態がリセットされ、追跡／カウント／集計には意味のない出力になります。安定したフレーム間結果を得るには、永続的な WebRTC セッションでローカルステップ実行を使用してください。

`soft` - 入力 `image` このブロックは、動画または繰り返しフレームのワークフローからの時間的コンテキストに依存します。静止画像／写真では、追跡、比較、集計、可視化に使える意味のある履歴がないため、このブロックの利点はほとんど、またはまったくありません。

### 入力と出力のバインディング

利用可能な接続は、そのバインディング種別によって異なります。どのバインディング種別が `データアグリゲーター` のバージョン `v1` あるか確認してください。

<details>

<summary>入力と出力のバインディング</summary>

* 入力
  * `データ` ([*`*`*](/workflows/ja/gaido/developer-guide/kinds/wildcard.md)）：ワークフローステップからのデータソースへの変数名マッピング辞書。各キーは集計用の変数名となり、各値はワークフローステップの出力（例：predictions、metrics、計算値）を参照するセレクタです。これらの変数は、aggregation\_mode でどの集計を計算するかを指定するために使用されます。例：{'predictions': '$steps.model.predictions', 'count': '$steps.counter.total'}..
* 出力
  * `*` ([`*`](/workflows/ja/gaido/developer-guide/kinds/wildcard.md))：任意の要素に相当します。

</details>

<details>

<summary>JSON 定義の例</summary>

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/data_aggregator@v1",
	    "data": {
	        "predictions": "$steps.model.predictions",
	        "reference": "$inputs.reference_class_names"
	    },
	    "data_operations": {
	        "predictions": [
	            {
	                "property_name": "class_name",
	                "type": "DetectionsPropertyExtract"
	            }
	        ]
	    },
	    "aggregation_mode": {
	        "predictions": [
	            "distinct",
	            "count_distinct"
	        ]
	    },
	    "interval_unit": "seconds",
	    "interval": 10
	}
```

</details>
