Compartilhar via


Mapear 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ão em VERSÃO PRÉVIA. Esse recurso é fornecido com várias limitações, e não deve ser usado para cargas de trabalho de produção.

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.

Dica

Os grafos de fluxo de dados oferecem uma linguagem de mapeamento expandida com funções adicionais, transformações redigiráveis e recursos como roteamento condicional e agregação baseada em tempo. Para novos projetos que usam endpoints MQTT, Kafka ou OpenTelemetry, veja Transformar dados com mapa em fluxos de dados.

Use a linguagem de mapeamento de fluxo de dados para transformação de dados nas Operações do Azure IoT. A sintaxe é uma maneira simples, mas poderosa, de definir os mapeamentos que transformam um formato de dados em outro. Este artigo fornece uma visão geral sobre a linguagem de mapeamento de fluxo de dados e principais conceitos.

O mapeamento permite transformar um formato de dados em outro. Pense no seguinte registro de entrada de dados:

{
  "Name": "Grace Owens",
  "Place of birth": "London, TX",
  "Birth Date": "19840202",
  "Start Date": "20180812",
  "Position": "Analyst",
  "Office": "Kent, WA"
}

Compare-o com o registro de saída:

{
  "Employee": {
    "Name": "Grace Owens",
    "Date of Birth": "19840202"
  },
  "Employment": {
    "Start Date": "20180812",
    "Position": "Analyst, Kent, WA",
    "Base Salary": 78000
  }
}

No registro de saída, as seguintes alterações foram feitas nos dados do registro de entrada:

  • Campos renomeados: o campo Birth Date agora é Date of Birth.
  • Campos reestruturados: ambos Name e Date of Birth agrupados sob a nova categoria Employee.
  • Campo excluído: o campo Place of birth é removido porque não está presente na saída.
  • Campo adicionado: o campo Base Salary é um novo campo na categoria Employment.
  • Valores de campos alterados ou mesclados: o campo Position na saída combina os campos Position e Office da entrada.

As transformações são obtidas por meio do mapeamento, que normalmente envolve:

  • Definição de entrada: identifica os campos nos registros de entrada que foram utilizados.
  • Definição de saída: especifica onde e como os campos de entrada são organizados nos registros de saída.
  • Conversão (opcional): modifica os campos de entrada para que caibam nos campos de saída. expression é necessário quando diversos campos de entrada são combinados em um único campo de saída.

O mapeamento a seguir é um exemplo:

{
  inputs: [
    'BirthDate'
  ]
  output: 'Employee.DateOfBirth'
}
{
  inputs: [
    'Position'  // - - - - $1
    'Office'    // - - - - $2
  ]
  output: 'Employment.Position'
  expression: '$1 + ", " + $2'
}
{
  inputs: [
    '$context(position).BaseSalary'
  ]
  output: 'Employment.BaseSalary'
}

O exemplo mapeia:

  • Mapeamento um para um: BirthDate é mapeado diretamente para Employee.DateOfBirth sem conversão.
  • Mapeamento de muitos para um: combina Position e Office em um único campo Employment.Position. A fórmula de conversão ($1 + ", " + $2) mescla esses campos em uma cadeia de caracteres formatada.
  • Dados contextuais: BaseSalary é adicionado a partir de um conjunto de dados contextuais chamado position.

Referências de campo

As referências do campo mostram como especificar caminhos na entrada e saída usando notação de ponto como Employee.DateOfBirth ou acessando dados de um conjunto de dados contextuais por meio de $context(position).

Propriedades de metadados

Ao usar MQTT ou Kafka como origem ou destino, você pode acessar propriedades de metadados, como tópicos, propriedades do usuário e cabeçalhos em seus mapeamentos. Para obter detalhes e exemplos de sintaxe completos, consulte campos de metadados na referência de expressões.

Seletores de conjunto de dados de contextualização

Esses seletores permitem que os mapeamentos integrem dados extras de bancos de dados externos, que são chamados de conjuntos de dados de contextualização. Para obter detalhes, consulte Conjuntos de dados de contextualização na referência de expressões e enriquecer dados usando fluxos de dados.

Filtragem de registros

A filtragem de registros envolve condições de configuração para selecionar quais registros devem ser processados e quais devem ser descartados.

Notação de ponto

Os caminhos de campo de fluxo de dados usam notação de ponto para fazer referência a campos aninhados, com escape para caracteres especiais. Para ver as regras de sintaxe completas e exemplos, consulte Notação de ponto e escapamento na referência de expressões.

Escapando

Para obter regras sobre como escapar de ponto e caracteres especiais em caminhos de campo, consulte Notação de ponto e escape na referência de expressões.

Curingas

Curingas usam o asterisco (*) para corresponder a vários campos de uma só vez, o que simplifica os mapeamentos quando a saída se assemelha muito à entrada. Para obter a sintaxe de curinga completa, regras de posicionamento, curingas de múltiplas entradas e comportamento especializado, consulte Curingas na referência de expressões.

Último valor conhecido

Você pode acompanhar o último valor conhecido de uma propriedade. Adicione ? $last como sufixo do campo de entrada para capturar o último valor conhecido do campo. Quando falta um valor em uma propriedade em um conteúdo de entrada subsequente, o último valor conhecido é mapeado para o conteúdo de saída.

Por exemplo, considere o seguinte mapeamento:

inputs: [
  'Temperature ? $last'
]
output: 'Thermostat.Temperature'

Neste exemplo, o último valor conhecido de Temperature é rastreado. Se um conteúdo de entrada subsequente não contiver um valor Temperature, o último valor conhecido será usado na saída.