データ プロセッサ パイプライン内のデータをエンリッチする
重要
Azure Arc によって有効にされる Azure IoT Operations Preview は、 現在プレビュー段階です。 運用環境ではこのプレビュー ソフトウェアを使わないでください。
一般公開リリースが利用可能になった場合は、新しい Azure IoT Operations インストールをデプロイする必要があります。プレビュー インストールをアップグレードすることはできません。
ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用される法律条項については、「Microsoft Azure プレビューの追加使用条件」を参照してください。
"エンリッチ" ステージは、参照データ ストアのデータセットからのコンテキストおよび参照情報でパイプラインのデータをエンリッチすることができる、省略可能な中間パイプライン ステージです。 エンリッチ ステージでは、さまざまなデータ ソースからのデータをコンテキスト化して、パイプライン内のデータをより有意義で実用的なものにすることができます。
共通のタグ、ID、またはタイムスタンプを使用して、パイプラインのデータを参照データセットのデータに結び付けることができます。
前提条件
エンリッチ パイプライン ステージを構成して使用するには、オプションのデータ プロセッサ コンポーネントを含むデータ プロセッサのデプロイされたインスタンスが必要です。
ステージの構成
エンリッチ ステージ JSON 構成で、ステージの詳細を定義します。 ステージを作成するには、フォーム ベースの UI を操作するか、[詳細設定] タブで JSON 構成を指定します。
フィールド | Description | 必須 | [オプション] | 例 |
---|---|---|---|---|
名前 | データ プロセッサ UI に表示する名前。 | はい | - | ERP Context |
説明 | エンリッチ ステージの実行内容を示すわかりやすい説明。 | いいえ | - | Enrich with vendor dataset |
データセット | エンリッチメント用の参照データを含むデータセットを選択します。 | はい | - | Vendor dataset |
出力パス | 参照データを配置する送信メッセージ内の場所のパス。 | はい | - | .payload.erp |
配列としてエンリッチする | true の場合、エンリッチされたエントリは常に配列です。 | いいえ | No /Yes |
Yes |
制限 | 参照データセットから返されるエントリの数を制限します。 この設定は、メッセージ内のエンリッチされるレコードの数を制御します。 | いいえ | - | 100 |
条件 > 演算子 | データ エンリッチメントの結合条件演算子。 | いいえ | Key match /Past nearest /Future nearest |
Key match |
条件 > 入力パス | 各条件との照合に使用するキーのパス。 | いいえ | - | .payload.asset |
条件 > プロパティ | データセット構成で指定された結合条件操作のプロパティ名またはタイムスタンプ | いいえ | ドロップダウンからプロパティ名またはタイムスタンプを選択します。 | equipmentName |
条件演算子
結合条件 | 説明 |
---|---|
Key match |
エンリッチ ステージで指定されたキーまたはプロパティの名前と、参照データ ストア内のものが完全に一致するデータを結合する、ID ベースの結合。 |
Past nearest |
エンリッチ ステージで指定されたメッセージ タイムスタンプと比べて最も近い過去のタイムスタンプを持つ参照データ ストア内の参照データを結合する、タイムスタンプベースの結合。 |
Future nearest |
エンリッチ ステージで指定されたメッセージ タイムスタンプと比べて最も近い将来のタイムスタンプを持つ参照データ ストア内の参照データを結合する、タイムスタンプベースの結合。 |
注:
- 条件を指定しない場合、データセットからのすべての参照データがエンリッチされます。
- 入力パスがタイムスタンプを参照する場合、タイムスタンプは RFC3339 形式である必要があります。
Key match
では、大文字と小文字が区別されます。- 各エンリッチ ステージには、最大 10 個の条件を設定できます。
- 各エンリッチ ステージに設定できる時間ベースの結合条件は、
Past nearest
またはFuture nearest
のいずれか 1 つだけです。 - ID ベースの
Key match
結合をタイムスタンプ ベースのPast nearest
またはFuture nearest
結合条件と組み合わせた場合は、返されたエントリをフィルター処理するためにまずKey match
が適用されてから、Past nearest
またはFuture nearest
が適用されます。 - 返されたエントリに複数の
Key match
条件を適用することができます。 論理AND
操作は、複数のKey match
条件の間で実行されます。
パイプラインのポッドが予期せずにダウンした場合、バックログされたイベント データ パイプラインとの結合で、参照データ ストアのデータセットからの無効な、または将来の値が使用されている可能性があります。 この場合、不適切なデータ エンリッチメントとなるおそれがあります。 この問題に対処し、そのようなデータを除外するには、Past nearest
条件を使用します。
エンリッチ ステージで Past nearest
条件を使用すると、参照データからの過去の値のみがエンリッチメントの対象と見なされます。 この方法により、参照データ ストアのデータセットからの将来の値が、結合されるデータに含まれないようにすることができます。 Past nearest
条件によって将来の値が除外され、より正確で信頼性の高いデータ エンリッチメントが可能になります。
サンプル構成
エンリッチ ステージの構成では、次のプロパティを定義します。
フィールド | 例 |
---|---|
名前 | エンリッチメント |
説明 | 機器データを使用してエンリッチする |
データセット | equipment |
出力パス | .payload |
配列としてエンリッチする | はい |
条件 > 演算子 | Key match |
条件 > 入力パス | .payload.assetid |
条件 > プロパティ | equipment name |
結合では、受信メッセージ内の assetid
値と、参照データセット内の equipment name
フィールドが一致する条件を使用します。 この構成により、データセットからの関連データでメッセージをエンリッチします。
エンリッチ ステージで結合条件が適用されるときには、パイプラインを通過するメッセージに、参照データセットからのコンテキスト データが追加されます。
例
この例は、参照データセットの例に基づいています。 エンリッチ ステージを使用して、パイプラインが製造施設から受信する時系列データを参照データでエンリッチします。 この例では、次の JSON のような受信ペイロードを使用します。
payload: {
{
"assetid": "Oven",
"timestamp": "T05:15:00.000Z",
"temperature": 120,
"humidity": 99
},
{
"assetid": "Oven",
"timestamp": "T05:16:00.000Z",
"temperature": 127,
"humidity": 98
},
{
"AssetID": "Mixer",
"timestamp": "T05:17:00.000Z",
"temperature": 89,
"humidity": 95
},
{
"AssetID": "Slicer",
"timestamp": "T05:19:00.000Z",
"temperature": 56,
"humidity": 30
}
}
次の JSON は、前述の構成に基づいてエンリッチされた出力メッセージの例を示しています。
payload: {
{
"assetid": "Oven",
"timestamp": "2023-05-25T05:15:00.000Z",
"temperature": 120,
"humidity": 99,
"location": "Seattle",
"installationDate": "2002-03-05T00:00:00Z",
"isSpare": false
},
{
"assetid": "Oven",
"timestamp": "2023-05-25T05:16:00.000Z",
"temperature": 127,
"humidity": 98,
"location": "Seattle",
"installationDate": "2002-03-05T00:00:00Z",
"isSpare": false
},
{
"assetid": "Mixer",
"timestamp": "2023-05-25T05:17:00.000Z",
"temperature": 89,
"humidity": 95,
"location": "Tacoma",
"installationDate": "2005-11-15T00:00:00Z",
"isSpare": false
},
{
"assetid": "Slicer",
"Timestamp": "2023-05-25T05:19:00.000Z",
"Temperature": 56,
"humidity": 30,
"location": "Seattle",
"installationDate": "2021-04-25T00:00:00Z",
"isSpare": true
}
}