データ プロセッサ パイプライン内のデータをエンリッチする

重要

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  
    } 
}