データフローを使用してデータをエンリッチする

重要

Azure Arc によって有効にされる Azure IoT Operations Preview は、 現在プレビュー段階です。 運用環境ではこのプレビュー ソフトウェアを使わないでください。

一般公開されたリリースが利用可能になった場合に、新しい Azure IoT Operations を表示する必要があります。プレビュー段階のインストールをアップグレードすることはできません。

ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用される法律条項については、「Microsoft Azure プレビューの追加使用条件」を参照してください。

コンテキスト化データセット 機能を使用してデータをエンリッチできます。 受信レコードを処理する場合、これらのデータセットは、受信レコードのフィールドに関連する条件に基づいてクエリを実行できます。 この機能により、動的な相互作用が可能になり、これらのデータセットからのデータを使って出力フィールドの情報を補完でき、マッピング過程で複雑な計算に参加できます。

たとえば、JSON レコードとして表されるいくつかのレコードを含む次のデータセットを考えてみましょう。

{
  "Position": "Analyst",
  "BaseSalary": 70000,
  "WorkingHours": "Regular"
},
{
  "Position": "Receptionist",
  "BaseSalary": 43000,
  "WorkingHours": "Regular"
}

マッパーは、マッピング構成で指定された条件に基づくキー値を使用し、分散状態ストア (DSS) を介してこのデータセットにアクセスします。

datasets:
- key: position
  inputs:
    - $source.Position # - $1
    - $context.Position # -$2
  expression: $1 == $2

新しいレコードが処理されている場合、マッパーは次の手順を実行します。

  • データ要求: マッパーは DSS に要求を送信して、キー Positionに格納されているデータセットを取得します。
  • レコードの一致: マッパーはこのデータセットに対してクエリを実行し、データセット内の Position フィールドが受信レコードの Position フィールドと一致する最初のレコードを検索します。
- inputs:
  - $context(position).WorkingHours #  - $1 
  output: WorkingHours

- inputs:
  - BaseSalary   # - - - - - - - - - - - $1
  - $context(position).BaseSalary #  - - $2 
  output: BaseSalary
  expression: if($1 == (), $2, $1)

この例では、 WorkingHours フィールドが出力レコードに追加されますが、BaseSalary は、受信レコードに BaseSalary フィールドが含まれていない場合にのみ条件付きで使用されます (null 許容フィールドの場合は、null 値)。 コンテキスト化データの要求は、すべての受信レコードで行われるわけではありません。 マッパーはデータセットを要求し、変更に関する通知を DSS から受信しますが、データセットのキャッシュされたバージョンを使用します。

これは、複数のデータセットを使用できます。

datasets:
- key: position
  inputs:
    - $source.Position  # - $1
    - $context.Position # - $2
  expression: $1 == $2

- key: permissions
  inputs:
    - $source.Position  # - $1
    - $context.Position # - $2
  expression: $1 == $2

次に、混合された参照を使用します。

- inputs:
  - $context(position).WorkingHours  #    - - $1
  - $context(permission).NightShift  #    - - $2

入力参照では、positionpermission などのデータセットのキーが使用されます。 DSS のキーを使用するのが適切でない場合は、エイリアスを定義できます。

datasets:
  - key: datasets.parag10.rule42 as position
    inputs:
      - $source.Position  # - $1
      - $context.Position # - $2
    expression: $1 == $2

キー datasets.parag10.rule42 を使用して、データセットの名前を positionに変更する構成。