你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用数据流扩充数据

重要

本页包含使用 Kubernetes 部署清单(目前为预览版)管理 Azure IoT 操作组件的说明。 此功能存在若干限制,不应该用于生产工作负载。

有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Microsoft Azure 预览版的补充使用条款

可以使用上下文化数据集功能来扩充数据。 在处理传入记录时,可以根据与传入记录的字段相关的条件来查询这些数据集。 此功能可以实现动态交互。 这些数据集中的数据可用于补充输出字段中的信息,并在映射过程中参与复杂的计算。

若要将示例数据加载到状态存储中,请使用状态存储 CLI

例如,来看看以下数据集,其中包含几条记录,这些记录以 JSON 记录形式表示:

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

映射器根据映射配置中指定的条件,使用一个键值来访问存储在 Azure IoT 操作状态存储中的引用数据集。 状态存储中的键名称对应于数据流配置中的数据集。

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

处理新记录时,映射器将执行以下步骤:

  • 数据请求:映射器向状态存储发送请求,以检索存储在 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 字段(如果该字段是可为 null 的字段,则值为 null)时,才会按条件使用 BaseSalary。 并非每条传入记录都会触发对上下文化数据的请求。 映射器请求数据集,然后从状态存储收到有关更改的通知,同时它使用数据集的缓存版本。

可以使用多个数据集:

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