次の方法で共有


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

重要

このページには、プレビュー段階にある 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
]

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

datasets: [
  {
    key: 'datasets.parag10.rule42 as position'
    inputs: [
      '$source.Position'  // - $1
      '$context.Position' // - $2
    ],
    expression: '$1 == $2'
  }
]

この構成では、キー datasets.parag10.rule42 を使用してデータセットの名前が position に変更されます。