Mapear datos mediante flujos de datos

Sugerencia

Los gráficos de flujo de datos ofrecen un lenguaje de asignación expandido con funciones adicionales, transformaciones que se pueden componer y características como el enrutamiento condicional y la agregación basada en tiempo. Para los nuevos proyectos que usan puntos de conexión MQTT, Kafka o OpenTelemetry, consulte Transformación de datos con mapa en gráficos de flujo de datos.

Use el lenguaje de asignación de flujos de datos para transformar datos en Operaciones de IoT de Azure. La sintaxis es una manera sencilla, pero poderosa, de definir mapeos que transforman datos de un formato a otro. En este artículo se proporciona información general sobre el lenguaje de asignación de flujos de datos y los conceptos clave.

El mapeo permite transformar datos de un formato a otro. Tenga en cuenta el registro de entrada siguiente:

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

Compárelo con el registro de salida:

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

En el registro de salida, se realizan los cambios siguientes en los datos del registro de entrada:

  • Campos a los que se ha cambiado de nombre: el campo Birth Date ahora es Date of Birth.
  • Campos reestructurados: tanto Name como Date of Birth se agrupan en la nueva categoría de Employee.
  • Campo eliminado: el campo Place of birth se quita porque no está presente en la salida.
  • Campo agregado: el campo Base Salary es un campo nuevo en la categoría Employment.
  • Valores de campo modificados o combinados: el campo Position de la salida combina los campos Position y Office de la entrada.

Las transformaciones se logran mediante el mapeo, que normalmente implica lo siguiente:

  • Definición de entrada: identificación de los campos de los registros de entrada que se usan.
  • Definición de salida: especificación de dónde y cómo se organizan los campos de entrada en los registros de salida.
  • Conversión (opcional): modificación de los campos de entrada que caben en los campos de salida. expression es necesario cuando se combinan varios campos de entrada en un único campo de salida.

A continuación se muestra un mapeo de ejemplo:

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

Los mapas de ejemplo:

  • Asignación uno a uno: BirthDate se asigna directamente a Employee.DateOfBirth sin conversión.
  • Asignación de varios a uno: combina Position y Office en un solo campo Employment.Position. La fórmula de conversión ($1 + ", " + $2) combina estos campos en una cadena con formato.
  • Datos contextuales: BaseSalary se agrega desde un conjunto de datos contextual denominado position.

Referencias de campo

Las referencias de campo muestran cómo especificar rutas de acceso en la entrada y salida mediante la notación de puntos, como Employee.DateOfBirth, o bien el acceso a datos desde un conjunto de datos contextual mediante $context(position).

Propiedades de metadatos

Al usar MQTT o Kafka como origen o destino, puede acceder a las propiedades de los metadatos como temas, propiedades de usuario y encabezados, en las asignaciones. Para obtener detalles y ejemplos completos de sintaxis, vea Campos de metadatos en la referencia de expresiones.

Selectores de conjuntos de datos de contextualización

Estos selectores permiten que los mapeos integren datos adicionales de bases de datos externas, denominadas conjuntos de datos de contextualización. Para más información, consulte Conjuntos de datos de contextualización en la referencia de expresiones y Enriquecimiento de datos mediante flujos de datos.

Filtrado de registros

El filtrado de registros implica establecer condiciones para seleccionar qué registros se deben procesar o quitar.

Notación de puntos

Las rutas de los campos de flujo de datos utilizan la notación de puntos para hacer referencia a campos anidados, mediante secuencias de escape de caracteres especiales. Para obtener reglas y ejemplos completos de sintaxis, vea Notación de puntos y escape en la referencia de expresiones.

Escapando

Para conocer las reglas sobre los métodos de escape de puntos y caracteres especiales en rutas de campos, consulte Notación de puntos y mecanismos de escape en la referencia de expresiones.

Caracteres comodín

Los caracteres comodín utilizan el asterisco (*) para encontrar varios campos a la vez, lo que facilita las asignaciones cuando los resultados se parecen mucho a los datos de entrada. Para conocer la sintaxis completa de comodines, las reglas de ubicación, el uso de varios comodines y el método de especialización, consulte Caracteres comodín en la referencia de expresiones.

Último valor conocido

Puede realizar un seguimiento del último valor conocido de una propiedad. Sufijo el campo de entrada con ? $last para capturar el último valor conocido del campo. Cuando falta un valor en una carga de entrada posterior, el último valor conocido se asigna a la carga de salida.

Por ejemplo, considere el siguiente mapeo:

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

En este ejemplo, se realiza el seguimiento del último valor conocido de Temperature. Si una carga de entrada posterior no contiene un valor Temperature, el último valor conocido se usa en la salida.