Enriquecer dados usando fluxos de dados

Importante

A Versão Prévia das Operações da Internet das Coisas do Azure – habilitadas pelo Azure Arc – está atualmente em versão prévia. Você não deve usar esse software em versão prévia em ambientes de produção.

Você precisará implantar uma nova instalação das Operações da Internet das Coisas do Azure quando uma versão em disponibilidade geral for disponibilizada. Você não poderá atualizar uma instalação de versão prévia.

Veja os Termos de Uso Complementares para Versões Prévias do Microsoft Azure para obter termos legais que se aplicam aos recursos do Azure que estão em versão beta, versão prévia ou que, de outra forma, ainda não foram lançados em disponibilidade geral.

Você pode enriquecer dados usando a função conjuntos de dados de contextualização. Quando os registros de entrada são processados, você pode consultar esses conjuntos de dados com base em condições relacionadas aos campos do registro de entrada. Essa funcionalidade permite interações dinâmicas. Os dados desses conjuntos de dados podem ser usados para complementar informações nos campos de saída e participar de cálculos complexos durante o processo de mapeamento.

Por exemplo, considere o seguinte conjunto de dados com alguns registros, representados como registros JSON:

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

O mapeador acessa o conjunto de dados de referência armazenado no repositório de estado distribuído (DSS) das Operações do Azure IoT usando um valor de chave com base em uma condição especificada na configuração de mapeamento. Os nomes de chave no DSS correspondem a um conjunto de dados na configuração do fluxo de dados.

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

Quando um novo registro está sendo processado, o mapeador executa as seguintes etapas:

  • Solicitação de dados: o mapeador envia uma solicitação ao DSS para recuperar o conjunto de dados armazenado sob a chave Position..
  • Correspondência de registro: o mapeador consulta esse conjunto de dados para localizar o primeiro registro em que o campo Position no conjunto de dados corresponde ao campo Position do registro de entrada.
{
  inputs: [
    '$context(position).WorkingHours' //  - $1 
  ]
  output: 'WorkingHours'
}
{
  inputs: [
    'BaseSalary' // - - - - - - - - - - - - $1
    '$context(position).BaseSalary' //  - - $2
  ]
  output: 'BaseSalary'
  expression: 'if($1 == (), $2, $1)'
}

Neste exemplo, o campo WorkingHours é adicionado ao registro de saída, enquanto o BaseSalary é usado condicionalmente somente quando o registro de entrada não contém o campo BaseSalary (ou o valor é null se for um campo anulável). A solicitação para os dados de contextualização não ocorre com todos os registros de entrada. O mapeador solicita o conjunto de dados e, em seguida, recebe notificações do DSS sobre as alterações, enquanto usa uma versão armazenada em cache do conjunto de dados.

É possível usar vários conjuntos de dados:

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'
  }
]

Em seguida, use as referências misturadas:

inputs: [
  '$context(position).WorkingHours'  // - $1
  '$context(permissions).NightShift' // - $2
]

As referências de entrada usam a chave do conjunto de dados como position ou permission. Se a chave no DSS for inconveniente para usar, você poderá definir um alias:

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

A configuração renomeia o conjunto de dados com a chave datasets.parag10.rule42 para position.