データフローを使用してデータをエンリッチする
重要
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
入力参照では、position や permission などのデータセットのキーが使用されます。 DSS のキーを使用するのが適切でない場合は、エイリアスを定義できます。
datasets:
- key: datasets.parag10.rule42 as position
inputs:
- $source.Position # - $1
- $context.Position # - $2
expression: $1 == $2
キー datasets.parag10.rule42 を使用して、データセットの名前を positionに変更する構成。