Componentes de unificación

Los componentes básicos de la unificación de datos: estandarización del formato, unificación de la estructura, unificación semántica, normalización y uso de los datos unificados.

Estandarización del formato

Todos los datos procedentes de fuentes distintas se convierten a un único formato.

Por ejemplo, los datos de los dispositivos IoT llegan en formato JSON:

example.json
{
  "device_id": "sensor-123",
  "temp": 27.3,
  "time": 1739960923
}

Unificación de la estructura de datos

Se define una única estructura para todos los datos, independientemente de su origen.

Todos los datos se almacenan en la tabla channel_data, que los asocia con el equipo, las sesiones, los canales y las unidades de medida:

CampoTipoDescripción
idbigintIdentificador único del registro (clave primaria).
equipment_idbigintReferencia al equipo (equipment.id).
seance_idbigintReferencia a la sesión (seances.id).
channel_idbigintReferencia al canal (channels.id).
unit_idbigintReferencia a la unidad de medida (units.id).
archive_type_idintegerReferencia al tipo de archivo (referenceparameters.id).
event_timeintegerMomento del evento (p. ej. marca de tiempo).
valuecharacter varying(100)Valor recibido del canal.
created_attimestamp(6) without time zoneMomento en que se creó la entrada.
updated_attimestamp(6) without time zoneMomento de la última actualización de la entrada.

Donde:

  • equipment_id: Identificador único del equipo.
  • seance_id: Identificador único de la sesión.
  • channel_id: Identificador único del canal.
  • unit_id: Identificador único de la unidad de medida.

Cuando los datos de distintos dispositivos se almacenan en un repositorio central:

  • los datos se convierten a un único formato y estructura;
  • se almacenan en la tabla de datos unificados channel_data.

Unificación semántica

Todos los datos tienen el mismo significado e interpretación en todos los sistemas.

Por ejemplo:

  • Todas las marcas de tiempo están en formato UTC. Esto se implementó en la etapa de diseño del sistema.
  • Todos los sistemas usan las mismas unidades de medida (p. ej. grados Celsius).

Para unificar las unidades de medida, se añadió al sistema el modelo Units. Almacena las unidades de medida utilizadas para los datos de canal.

CampoTipoDescripción
idbigintIdentificador único del registro (clave primaria).
namecharacter varying(30)Nombre de la unidad de medida.
varnamecharacter varying(30)Nombre de variable abreviado de la unidad de medida.
descriptioncharacter varying(100)Descripción de la unidad de medida.
conversion_factordouble precisionFactor de conversión de la unidad de medida.
roundingsmallintNúmero de decimales a los que redondear.
synonymscharacter varying[]Matriz de sinónimos de la unidad de medida.
created_attimestamp(6) without time zoneMomento en que se creó la entrada.
updated_attimestamp(6) without time zoneMomento de la última actualización de la entrada.

Normalización de datos

El modelo de datos del sistema se reduce a la forma normal de Boyce-Codd (tercera) en lo que respecta a los valores atómicos (escalares). Algunas entidades del modelo de datos emplean estructuras compuestas para optimizar el trabajo con atributos infrecuentes y no estándar.

Los datos se dividen en tablas lógicas (equipment, channels, units, sessions), lo que elimina la redundancia y la duplicación.

Por ejemplo:

  • La tabla channel_data hace referencia a las tablas equipment, channels, units y sessions mediante claves foráneas.

Uso de los datos unificados

Los datos unificados pueden utilizarse para análisis, visualización, aprendizaje automático y otras tareas.

Análisis de datos mediante SQL

sql
SELECT equipment_id, AVG(value) as avg_value
FROM channel_data
WHERE archive_type_id = 4 AND channel_id = 3
GROUP BY equipment_id
ORDER BY equipment_id

Consulta de datos a través de la API REST

Ejemplo de solicitud:

bash
GET /api/v1/channel_data?equipment_id=1&archive_type=daily&channel_id=3

Ejemplo de respuesta:

json
[
  {
    "id": 123,
    "equipment_id": 1,
    "seance_id": 2,
    "channel_id": 3,
    "archive_type_id": 4,
    "value": 42.5,
    "event_time": 1739950861
  }
]

Temas relacionados

Última actualización el

¿Te resultó útil esta página?