データフローを使用してデータをエンリッチする
重要
このページには、プレビュー段階にある Kubernetes デプロイ マニフェストを使用して Azure IoT Operations コンポーネントを管理する手順が含まれます。 この機能はいくつかの制限を設けて提供されており、運用環境のワークロードには使用しないでください。
ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用される法律条項については、「Microsoft Azure プレビューの追加使用条件」を参照してください。
コンテキスト化データセット機能を使用してデータをエンリッチできます。 受信レコードが処理されると、受信レコードのフィールドに関連する条件に基づいて、これらのデータセットに対してクエリを実行できます。 この機能により、動的な対話が可能になります。 これらのデータセットのデータを使用して、出力フィールドの情報を補完し、マッピング プロセス中に複雑な計算に参加できます。
サンプル データを状態ストアに読み込むには、状態ストア CLI を使用します。
たとえば、JSON レコードとして表されるいくつかのレコードを含む次のデータセットを考えてみましょう。
{
"Position": "Analyst",
"BaseSalary": 70000,
"WorkingHours": "Regular"
},
{
"Position": "Receptionist",
"BaseSalary": 43000,
"WorkingHours": "Regular"
}
Mapper は、マッピング構成で指定された "条件" に基づくキー値を使用して、Azure IoT Operations 状態ストアに格納されている参照データセットにアクセスします。 状態ストア内のキー名は、データフロー構成のデータセットに対応します。
datasets: [
{
key: 'position',
inputs: [
'$source.Position' // - $1
'$context.Position' // - $2
],
expression: '$1 == $2'
}
]
新しいレコードが処理されている場合、マッパーは次の手順を実行します。
- データ要求: Mapper は状態ストアに要求を送信して、キー
Position
に格納されているデータセットを取得します。 - レコードの一致: Mapper はこのデータセットに対してクエリを実行し、データセット内の
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
)。 コンテキスト化データの要求は、すべての受信レコードで行われるわけではありません。 Mapper はデータセットを要求し、キャッシュされたバージョンのデータセットを使用しながら、状態ストアから変更に関する通知を受け取ります。
これは、複数のデータセットを使用できます。
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(permissions).NightShift' // - $2
]
入力参照では、position
や permission
などのデータセットのキーが使用されます。 状態ストアのキーが使用しにくい場合は、エイリアスを定義できます。
datasets: [
{
key: 'datasets.parag10.rule42 as position'
inputs: [
'$source.Position' // - $1
'$context.Position' // - $2
],
expression: '$1 == $2'
}
]
この構成では、キー datasets.parag10.rule42
を使用してデータセットの名前が position
に変更されます。