Partilhar via


Transformar dados em um pipeline de processador de dados

Importante

Azure IoT Operations Preview – habilitado pelo Azure Arc está atualmente em visualização. Não deve utilizar este software de pré-visualização em ambientes de produção.

Você precisará implantar uma nova instalação do Azure IoT Operations quando uma versão disponível em geral for disponibilizada, você não poderá atualizar uma instalação de visualizaçã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.

Use o estágio de transformação para realizar transformações estruturais em mensagens em um pipeline, como:

  • Renomear tags e propriedades
  • Remover dados em lote
  • Adicionar novas propriedades
  • Adicionar valores calculados

O estágio de transformação usa jq para dar suporte à transformação de dados:

  • Cada partição de pipeline transforma mensagens independentemente umas das outras.
  • O palco gera uma mensagem transformada com base na expressão jq que você fornece.
  • Crie uma expressão jq para transformar uma mensagem com base na estrutura da mensagem recebida para o palco.

Pré-requisitos

Para configurar e usar um estágio de pipeline de transformação, você precisa:

  • Uma instância implantada do processador de dados que inclui o componente opcional do processador de dados.
  • Uma compreensão das expressões jq.

Configurar o palco

A configuração JSON do estágio de transformação define os detalhes do estágio. Para criar o palco, você pode interagir com a interface do usuário baseada em formulário ou fornecer a configuração JSON na guia Avançado :

Nome Valor Necessário Exemplo
Nome Um nome a ser exibido na interface do usuário do processador de dados. Sim Transform1
Description Uma descrição amigável do que o estágio de transformação faz. Não Rename Tags
Query A expressão jq da transformação. Sim .payload.values |= (map({(.tag): (.numVal // .boolVal)}) | add)

Configuração de exemplo

O exemplo de transformação a seguir converte a matriz de tags na mensagem de entrada em um objeto que contém todas as tags e seus valores:

{
    "displayName": "TransformInput", 
    "description": "Make array of tags into one object", 
    "query": ".payload.values |= (map({(.tag): (.numVal // .boolVal)}) | add)"
}

A saída do estágio de transformação se parece com o exemplo a seguir:

{
  "systemProperties": {
    "partitionKey": "foo",
    "partitionId": 5,
    "timestamp": "2023-01-11T10:02:07Z"
  },
  "qos": 1,
  "topic": "/assets/foo/tags/bar",
  "properties": {
    "responseTopic": "outputs/foo/tags/bar",
    "contentType": "application/json",
    "payloadFormat": 1,
    "correlationData": "base64::Zm9v",
    "messageExpiry": 412
  },
  "userProperties": [
    {
      "key": "prop1",
      "value": "value1"
    },
    {
      "key": "prop2",
      "value": "value2"
    }
  ],
  "payload": {
    "values": {
      "temperature": 250,
      "pressure": 30,
      "humidity": 10,
      "runningStatus": true
    }
  }
}