Compartilhar via


Transformar dados em um pipeline de processador de dados

Importante

O recurso Pré-visualização de Operações do Azure IoT — habilitado 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 do Azure IoT Operations quando uma versão geralmente disponível for disponibilizada, você não poderá atualizar uma instalação de visualizaçã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.

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

  • Renomear marcas e propriedades
  • Desfazer lote de dados
  • 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 estágio gera uma mensagem transformada com base na expressão jq que você fornece.
  • Crie uma expressão jq para transformar uma mensagem com base em como a estrutura da mensagem de entrada para o estágio.

Pré-requisitos

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

  • 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 estágio

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

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

Exemplo de configuração

O exemplo de transformação a seguir converte a matriz de marcas na mensagem de entrada em um objeto que contém todas as marcas 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 é semelhante ao 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
    }
  }
}