Enriqueça dados usando fluxos de dados
Importante
Esta página inclui instruções para gerenciar componentes do Azure IoT Operations usando manifestos de implantação do Kubernetes, que está em visualização. Esse recurso é fornecido com várias limitações e não deve ser usado para cargas de trabalho de produção.
Veja Termos de Utilização Complementares da Pré-visualizações do Microsoft Azure para obter os termos legais que se aplicam às funcionalidades do Azure que estão na versão beta, na pré-visualização ou que ainda não foram lançadas para disponibilidade geral.
Você pode enriquecer dados usando a função de conjuntos de dados de contextualização. Quando os registros de entrada são processados, você pode consultar esses conjuntos de dados com base nas condições relacionadas aos campos do registro de entrada. Esta capacidade 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.
Para carregar dados de exemplo no repositório de estado, use a CLI do repositório de estado.
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 de 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 armazenamento de estado correspondem a um conjunto de dados na configuração de 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 armazenamento de estado para recuperar o conjunto de dados armazenado sob a chave
Position
. - Correspondência de registros: em seguida, o mapeador consulta esse conjunto de dados para encontrar o primeiro registro em que o
Position
campo no conjunto de dados corresponde aoPosition
campo 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 WorkingHours
campo é adicionado ao registro de saída, enquanto o BaseSalary
é usado condicionalmente somente quando o registro de entrada não contém o BaseSalary
campo (ou o valor é null
se for um campo anulável). A solicitação dos dados de contextualização não acontece com todos os registros recebidos. O mapeador solicita o conjunto de dados e, em seguida, recebe notificações do armazenamento de estado sobre as alterações, enquanto usa uma versão 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 armazenamento de estado for inconveniente de usar, você pode 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
.