Compartir por


Transformación de datos en una canalización de versión preliminar del procesador de datos de Azure IoT

Importante

Operaciones de IoT de Azure, habilitado por Azure Arc, está actualmente en VERSIÓN PRELIMINAR. No se debería usar este software en versión preliminar en entornos de producción.

Consulte Términos de uso complementarios para las versiones preliminares de Microsoft Azure para conocer los términos legales que se aplican a las características de Azure que se encuentran en la versión beta, en versión preliminar o que todavía no se han publicado para que estén disponibles con carácter general.

Use la fase de transformación para llevar a cabo transformaciones estructurales en los mensajes de una canalización como:

  • Cambio del nombre de etiquetas y propiedades
  • Desenlace datos
  • Adición de nuevas propiedades
  • Adición de valores calculados

La fase de transformación usa jq para admitir la transformación de datos:

  • Cada partición de canalización transforma mensajes de forma independiente entre sí.
  • La fase genera un mensaje transformado en función de la expresión jq que proporcione.
  • Cree una expresión jq para transformar un mensaje en función de la estructura del mensaje entrante en la fase.

Requisitos previos

Para configurar y usar una fase de canalización de transformación, necesita:

  • Una instancia implementada de la versión preliminar del procesador de datos de Azure IoT que incluye el componente opcional del procesador de datos.
  • Descripción de las expresiones jq.

Configuración de la fase

La configuración JSON de la fase de transformación define sus detalles. Para crear la fase, puede interactuar con la interfaz de usuario basada en formularios o proporcionar la configuración JSON en la pestaña Opciones avanzadas:

NOMBRE Valor Obligatorio Ejemplo
Nombre Un nombre para mostrar en la interfaz de usuario del procesador de datos. Transform1
Descripción Una descripción sencilla de lo que hace la fase de transformación. No Rename Tags
Consultar Expresión JQ de la transformación. .payload.values |= (map({(.tag): (.numVal // .boolVal)}) | add)

Configuración de ejemplo

En el ejemplo de transformación siguiente se convierte la matriz de etiquetas del mensaje de entrada en un objeto que contiene todas las etiquetas y sus valores:

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

La salida de la fase de transformación tiene un aspecto similar al del ejemplo siguiente:

{
  "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
    }
  }
}