Capa Silver

circle-exclamation

¡Próximamente!

La capa Silver transforma datos telemáticos crudos e información de negocio en entidades normalizadas y listas para consultar con métricas y estructuras predefinidas. La capa Bronze contiene todo lo capturado desde dispositivos y sistemas: puntos individuales, eventos y valores de campo convenientes para verificación y solución de problemas. La capa Silver procesa estos datos crudos en entidades significativas como viajes, visitas a zonas y estados operativos mediante transformaciones configurables que limpian, estandarizan y agregan datos en objetos analíticos comprensibles.

💡 Capa Silver en resumen: Bronze es todo lo recogido, Silver es con lo que puede trabajar.

Esta capa intermedia elimina el trabajo ETL manual repetitivo y prepara los datos para análisis prácticos. Los operadores de flotas obtienen respuestas a preguntas comunes sin un extenso procesamiento de datos, mientras que los integradores disponen de una base estable para construir funcionalidades escalables.

Arquitectura y capacidades

La capa Silver organiza los datos procesados en dos esquemas distintos que reflejan diferentes orígenes de transformación y patrones de acceso. Ambos esquemas operan al nivel de la capa Silver de la arquitectura medallion, ubicados por encima de los esquemas de la capa Bronze (raw_business_data y raw_telematics_data) y por debajo de la capa Gold.

Estructura del esquema

La capa Silver utiliza un enfoque de esquema dinámico donde las estructuras de base de datos se forman automáticamente según las transformaciones activas. A diferencia de la capa Bronze con sus definiciones de esquema fijas, los esquemas de la capa Silver contienen solo las tablas que corresponden a las transformaciones configuradas y desplegadas. Esto significa que las tablas disponibles y sus estructuras dependen de qué transformaciones estén actualmente activas en su Consulta de IoT instancia.

Los datos de la capa Silver se organizan en dos esquemas de PostgreSQL:

  • processed_common_data: Contiene transformaciones desarrolladas y mantenidas por Navixy. Este esquema se comparte entre todos los clientes, proporcionando entidades analíticas estandarizadas que abordan casos de uso telemático comunes. Las tablas aparecen en este esquema a medida que Navixy desarrolla y despliega nuevas transformaciones para cubrir requisitos analíticos ampliamente aplicables.

  • processed_custom_data: Contiene transformaciones específicas del cliente creadas para abordar requisitos de negocio únicos. Cada cliente tiene una instancia aislada de este esquema, lo que permite entidades analíticas personalizadas sin afectar a otros clientes. Las tablas en este esquema corresponden a transformaciones configuradas específicamente para su organización.

Ambos esquemas operan mediante configuraciones de transformación basadas en JSON. Cuando una transformación se configura y activa, el sistema crea automáticamente la estructura de la tabla correspondiente dentro del esquema apropiado. Cuando las transformaciones se eliminan o desactivan, sus tablas pueden archivarse o eliminarse según las políticas de retención de datos.

circle-info

Esta formación dinámica es la razón por la que la documentación de la capa Silver no proporciona descripciones de esquema fijas como lo hace la capa Bronze. En su lugar, las tablas disponibles y sus estructuras reflejan las transformaciones específicas configuradas para su instancia de IoT Query. Para entender qué datos están disponibles en su capa Silver, revise la documentación de transformaciones de las entidades que se hayan desplegado en su instancia.

Arquitectura de procesamiento

Las transformaciones de la capa Silver operan mediante una arquitectura orientada por configuración que separa la lógica de negocio de la orquestación. Cada transformación se define mediante una configuración JSON que especifica la lógica de procesamiento SQL, parámetros, programación y comportamiento de recálculo. Apache Airflow gestiona el ciclo de vida de ejecución, aplicando estas configuraciones para procesar los datos de la capa Bronze en entidades de la capa Silver.

La estructura de configuración JSON permanece idéntica tanto para transformaciones comunes como personalizadas, garantizando patrones de procesamiento coherentes en todas las entidades de la capa Silver. Este enfoque unificado de configuración permite un despliegue flexible de transformaciones manteniendo una ejecución estandarizada y control de versiones.

Para información detallada sobre el sistema de configuración JSON, vea la Configuración JSON sección.

Frescura de los datos

Las entidades de la capa Silver se mantienen automáticamente mediante procesos programados definidos en las configuraciones de transformación. Cuando consulte datos de la capa Silver, considere estas características de procesamiento:

  • Actualizaciones programadas: Cada transformación procesa nuevos datos de la capa Bronze según su calendario configurado. Las actualizaciones normalmente ocurren cada hora o cada pocas horas según la complejidad de la transformación.

  • Ventanas de procesamiento: Las transformaciones operan sobre ventanas temporales para procesar eficientemente segmentos de datos manejables en lugar de conjuntos de datos completos.

  • Impacto del recálculo: Cuando los cambios de configuración provocan recálculo, los datos recientes pueden mostrar breves inconsistencias durante las ventanas de procesamiento.

  • Comportamiento específico por esquema: Las transformaciones en processed_common_data se actualizan simultáneamente para todos los clientes que comparten ese esquema. Las transformaciones en processed_custom_data se ejecutan de forma independiente por cliente, permitiendo programación y lógica de procesamiento personalizadas.

Configuración JSON

circle-exclamation

La capa Silver opera sobre una arquitectura orientada por configuración donde las transformaciones se definen mediante especificaciones JSON. Cada configuración contiene la lógica de procesamiento, parámetros de transformación, reglas de programación y políticas de recálculo que determinan cómo los datos de la capa Bronze se convierten en entidades de la capa Silver.

Estructura JSON

Una configuración de transformación consta de cuatro secciones:

  • version (cadena): Versión de la configuración siguiendo versionado semántico

  • metadata (objeto): Información básica que incluye nombre, descripción, marca temporal de creación e identificador del creador

  • sql_template (objeto): Especificación de la lógica de procesamiento que incluye rutas de archivos SQL, definiciones de tabla de destino y parámetros de transformación

  • target (objeto): Ubicación de salida que especifica esquema y tabla

  • scheduler (objeto): Control de ejecución que incluye programación cron, estado de habilitación y configuración de backfill

Esquema de configuración

Parametrización de scripts SQL

Los scripts SQL de transformación hacen referencia a parámetros de configuración usando marcadores de posición con prefijo de dos puntos. El sistema sustituye los valores reales de la configuración al ejecutar los scripts y proporciona automáticamente parámetros estándar de ventana temporal:

  • :window_start - Inicio de la ventana de procesamiento (marca temporal ISO-8601)

  • :window_end - Fin de la ventana de procesamiento (marca temporal ISO-8601)

Los parámetros personalizados se definen en la sql_template.parameters sección y controlan la lógica específica de la transformación, como umbrales de calidad, reglas de negocio y métodos de cálculo.

Ejemplo de SQL con parámetros:

Control de versiones de configuración

Cuando cambia cualquier parámetro de configuración, se crea una nueva versión. Cada versión representa un conjunto específico de reglas de procesamiento que estuvieron activas durante un periodo de tiempo, lo que permite rastrear cómo evolucionó la lógica de transformación.

Desencadenantes de creación de versión:

  • Cualquier parámetro en sql_template.parameters cambios

  • Se modifican las rutas de archivos de scripts SQL

  • Cambio de esquema o tabla de destino

  • Se ajustan la programación o la configuración de backfill

Aplicación de la versión: Cuando se crea y aplica una nueva versión de configuración, el sistema procesa los datos según el modo de recálculo seleccionado.

Modos de recálculo

El sistema de configuración admite tres modos de recálculo que controlan cómo los cambios de parámetros afectan a los datos históricos y futuros. Estos modos ofrecen flexibilidad para equilibrar los requisitos de consistencia de datos con la eficiencia del procesamiento.

Recálculo hacia adelante únicamente

El modo hacia adelante aplica los nuevos parámetros de configuración solo a los datos procesados después del cambio de versión. Los datos históricos permanecen sin cambios, conservando los valores calculados con parámetros anteriores.

Cuándo usar: Ajustes menores de parámetros que no cambian fundamentalmente las definiciones de entidades, probar nuevos parámetros antes de un recálculo completo o gestionar costos de computación evitando el reprocesamiento histórico.

Comportamiento: Si cambia min_speed_kmh de 3 a 5 el 8 de diciembre, solo los viajes procesados a partir del 8 de diciembre usan el nuevo umbral. Los viajes calculados antes del 8 de diciembre mantienen sus valores originales.

Recálculo completo del historial

El modo de recálculo completo procesa todos los datos históricos dentro del rango de fechas de backfill configurado usando los nuevos parámetros. El sistema reemplaza todas las entidades existentes con valores recalculados.

Cuándo usar: Cambios fundamentales en las definiciones de entidades o en los algoritmos de detección, corregir errores sistemáticos en cálculos previos o estandarizar todos los datos históricos con las reglas de negocio actuales.

Comportamiento: Cambiar la lógica de detección de viajes requiere recalcular todos los viajes para asegurar definiciones de entidad coherentes en todo el rango temporal.

Recálculo parcial

El modo de recálculo parcial procesa una ventana temporal limitada de datos históricos, normalmente días o semanas recientes.

Cuándo usar: Corregir problemas recientes de calidad de datos, actualizar parámetros que afectan principalmente patrones operativos recientes o implementar cambios con impacto histórico limitado.

Configuración: Especifique un backfill_days parámetro (p. ej., 7 para la última semana) ya sea en la configuración o al activar manualmente el recálculo. El sistema actualiza los registros existentes dentro de la ventana temporal especificada.

Transformaciones disponibles

La capa Silver actualmente ofrece dos grupos de transformaciones que demuestran el enfoque orientado por configuración y sirven como plantillas para desarrollar entidades personalizadas.

Viajes

Es una transformación de rastreo de movimiento que identifica segmentos de movimiento continuo a partir de datos de seguimiento crudos y calcula métricas completas de viaje.

Referencia rápida:

  • Propósito: Convertir datos de ubicación a nivel de punto en análisis a nivel de viaje

  • Tabla principal: business_data.tracks

  • Métricas principales: Distancia, duración, estadísticas de velocidad, límites geográficos

  • Datos fuente: raw_telematics_data.tracking_data_core, raw_telematics_data.states

Tabla: business_data.tracks

La tabla tracks almacena información agregada sobre segmentos de movimiento continuo con métricas precalculadas y contexto geográfico.

Clave primaria: track_id (identificador único con incremento automático)

Descripciones de campos:

La track_id campo identifica de forma única cada segmento de viaje. El device_id campo referencia el dispositivo de seguimiento desde la capa Bronze. El track_start_time y track_end_time campos definen los límites temporales del viaje. El track_duration campo proporciona el formato de duración legible por humanos mientras que track_duration_seconds permite cálculos numéricos. El track_distance_meters campo contiene la distancia total recorrida. Los campos de velocidad (avg_speed, max_speed, min_speed) proporcionan un resumen estadístico en kilómetros por hora. Las coordenadas de inicio (latitude_start, longitude_start, altitude_start) y las coordenadas de fin (latitude_end, longitude_end, altitude_end) definen los límites geográficos. El points_in_track campo indica la calidad de los datos mediante el recuento de puntos. Los start_zone y end_zone campos enlazan con los datos de referencia de zonas cuando los viajes comienzan o terminan dentro de zonas definidas.

Relaciones de datos:

Algoritmo de detección de viajes

La transformación identifica viajes usando detección de movimiento que analiza velocidad, distancia y patrones temporales. Un viaje representa un segmento continuo de movimiento separado de otros viajes por periodos de estacionamiento o brechas de datos.

El sistema inicia un nuevo viaje cuando aparece el primer punto de seguimiento para un dispositivo, cuando comienza el movimiento después de una duración de estacionamiento que excede el umbral configurado, cuando se reanuda el movimiento tras una brecha de datos que excede el tiempo de espera configurado o cuando se registra un único punto de ubicación LBS (torre celular). El sistema finaliza un viaje cuando el movimiento se detiene y la duración de estacionamiento alcanza el umbral configurado, o cuando ocurre una brecha de datos que excede el tiempo de espera.

Clasificación del movimiento:

  • En movimiento: Velocidad ≥ umbral configurado

  • Estacionado: Velocidad < umbral Y duración ≥ duración de estacionamiento configurada

  • Brecha de datos: Tiempo entre puntos ≥ tiempo de separación configurado

Validación de calidad: Los viajes generados deben cumplir umbrales de calidad configurables para ser incluidos: mínimo 2 puntos de seguimiento, velocidad máxima ≥ umbral configurado, distancia total ≥ umbral configurado y tiempos de inicio y fin definidos. El sistema filtra datos anómalos incluyendo velocidades irreales para puntos LBS, coordenadas cero y cobertura satelital insuficiente.

Cálculo de métricas: Las métricas del viaje se calculan a partir de puntos de seguimiento validados. La distancia representa la longitud geométrica total. Las estadísticas de velocidad incluyen valores promedio, máximo y mínimo a partir de las velocidades de los puntos. La duración es la diferencia temporal entre los tiempos de fin e inicio. Los límites geográficos capturan las coordenadas del primer y último punto. La asociación a zonas coincide con las zonas de inicio y fin desde los datos de referencia cuando los viajes comienzan o terminan dentro de zonas definidas.

Parámetros de configuración

Parámetro
Descripción
Unidad

min_parking_seconds

Umbral de duración para la detección de estacionamiento

segundos

tracks_split_timeout_seconds

Brecha máxima entre puntos antes de dividir viajes

segundos

min_distance_meters

Distancia mínima del viaje para la validación de calidad

metros

min_speed_kmh

Umbral mínimo de velocidad para la detección de movimiento

km/h

max_lbs_speed_kmh

Velocidad máxima realista para puntos LBS

km/h

min_satellites

Recuento mínimo de satélites para calidad GPS

conteo

Ejemplo de configuración

Ejemplo de script SQL

El siguiente SQL simplificado demuestra el uso de parámetros en la lógica de transformación:

chevron-rightConsultas de ejemplohashtag

Obtener todos los viajes de un dispositivo específico:

Calcular resumen de distancia diario:

Encontrar viajes entre zonas específicas:

Geocercas

La transformación Geofences pre-calcula límites geográficos como geometrías PostGIS y rastrea cuándo los dispositivos entran, permanecen dentro y salen de estas áreas definidas. Este procesamiento elimina la necesidad de cálculos espaciales en tiempo real durante las consultas, mejorando significativamente el rendimiento para análisis basados en ubicación.

Esta transformación demuestra el procesamiento de datos espaciales y la detección de eventos a partir de flujos continuos de ubicación.

Referencia rápida:

  • Propósito: Precalcular geometrías de geocercas y rastrear la presencia de dispositivos en áreas geográficas

  • Tablas principales: business_data.geofence_geometries, business_data.geofence_visits

  • Métricas principales: Duración de la visita, tiempos de entrada/salida, utilización de geocercas

  • Beneficio de rendimiento: Consultas espaciales 10-100x más rápidas frente al cálculo de geometría en tiempo real

  • Datos fuente: raw_business_data.zones, raw_business_data.geofence_points, raw_telematics_data.tracking_data_core

Tabla: business_data.geofence_geometries

La tabla geofence_geometries almacena representaciones geométricas optimizadas de las geocercas para consultas espaciales eficientes.

Clave primaria: geofence_id

Descripciones de campos:

La geofence_id campo identifica de forma única cada geocerca y referencia raw_business_data.zones.zone_id. El geofence_type campo indica la forma de la geocerca (círculo, polígono o ruta). El geofence_label campo contiene el nombre de la geocerca para visualización y referencia. El address campo almacena la descripción de la ubicación de la geocerca. El color campo contiene el código de color HEX para visualización. El geofence_geom campo contiene la representación geográfica para operaciones espaciales. Los created_at y updated_at campos registran los cambios temporales.

Especificaciones por tipo de geocerca:

  • Círculo: Definido por punto central y radio

  • Polígono: Puntos ordenados que forman una forma cerrada

  • Ruta: Camino lineal con radio de búfer

Comportamiento de sincronización: La tabla se sincroniza automáticamente cuando los datos fuente de geocercas cambian en la capa Bronze.

Tabla: business_data.geofence_visits

La tabla geofence_visits registra la presencia histórica de dispositivos dentro de geocercas incluyendo hora de entrada, hora de salida y duración de la visita.

Clave primaria: Clave compuesta en (device_id, geofence_id, enter_time)

Descripciones de campos:

La device_id campo referencia el dispositivo de seguimiento. El geofence_id campo referencia la geocerca desde geofence_geometries. El enter_time campo marca cuando el dispositivo entró en la geocerca. El exit_time campo marca cuando el dispositivo salió (NULL para visitas en curso). El duration campo contiene la longitud de la visita calculada.

Relaciones de datos:

Algoritmo de detección de visitas

La transformación rastrea la presencia del dispositivo dentro de geocercas comparando puntos de seguimiento contra las geometrías de geocercas. Los registros de visita capturan cuándo los dispositivos entran, permanecen dentro y salen de geocercas definidas.

Detección de entrada: El sistema detecta la entrada cuando un punto de seguimiento del dispositivo cae dentro de la geometría de la geocerca y el punto anterior estaba fuera de esa geocerca o no existe punto anterior.

Detección de salida: El sistema detecta la salida cuando un punto de seguimiento del dispositivo cae fuera de la geometría de la geocerca y el punto anterior estaba dentro de la geocerca.

Agrupamiento de visitas: Pares consecutivos de entrada-salida forman un registro de visita único. Las visitas abiertas (no se detectó salida) muestran NULL en exit_time y se actualizan cuando la salida ocurre en ciclos de procesamiento posteriores.

Cálculo de duración: La duración de la visita se calcula como la diferencia temporal entre los eventos de entrada y salida. Las visitas abiertas muestran duración NULL hasta que se detecte una salida.

Parámetros de configuración

Parámetro
Descripción
Unidad

spatial_buffer_meters

Distancia de búfer para la detección del límite de la geocerca

metros

min_visit_duration_seconds

Duración mínima de la visita para registrar

segundos

max_visit_gap_seconds

Brecha de tiempo máxima antes de considerar la visita finalizada

segundos

Ejemplo de configuración

chevron-rightConsultas de ejemplohashtag

Obtener todas las visitas a una geocerca específica:

Calcular estadísticas de utilización de geocercas:

Encontrar dispositivos actualmente presentes:

Analizar patrones de entrada/salida de geocercas por hora:

Identificar dispositivos con mayores tiempos de permanencia:

Desarrollo de entidades personalizadas

La capa Silver demuestra patrones de transformación mediante sus transformaciones disponibles, que sirven como plantillas para desarrollar entidades analíticas personalizadas. Usando datos de la capa Bronze, capacidades SQL y la arquitectura de configuración, se pueden desarrollar entidades personalizadas para abordar requisitos de negocio específicos.

Enfoque de desarrollo

Las entidades personalizadas de la capa Silver siguen la arquitectura orientada por configuración descrita en este documento. El enfoque implica definir la lógica de transformación en scripts SQL y crear configuraciones JSON que especifiquen parámetros y horarios para la ejecución automatizada.

Capacidades clave: Agregar múltiples puntos de datos crudos en objetos analíticos únicos, aplicar lógica de negocio y reglas de validación, precalcular métricas para acelerar consultas, mantener precisión temporal mediante procesamiento programado e integrar operaciones espaciales con contexto de negocio.

Tipos potenciales de entidades personalizadas

  • Entidades operativas: Estados operativos y modos de trabajo específicos de la empresa, patrones de turnos y seguimiento de ciclos de trabajo, métricas de utilización de activos, detección de ventanas de mantenimiento

  • Entidades comportamentales: Puntuación de riesgo personalizada basada en múltiples factores, análisis y clasificación de patrones de conducción, supervisión de cumplimiento con umbrales configurables, agregación de indicadores de seguridad

  • Entidades de rendimiento: Métricas y KPI específicos por industria, cálculos de eficiencia mediante fórmulas personalizadas, indicadores de optimización de recursos, seguimiento del cumplimiento de niveles de servicio

  • Entidades basadas en eventos: Detección de eventos personalizada con condiciones complejas, agregación de alertas y reconocimiento de patrones, identificación de anomalías mediante métodos estadísticos, seguimiento de violaciones de umbrales

Plantilla de configuración

Directrices para scripts SQL

Use valores parametrizados:

Aproveche ventanas de tiempo estándar:

Estructure el procesamiento en etapas:

Recursos adicionales

Para patrones de consulta detallados y trabajo con datos de la capa Silver, consulte el IoT Query SQL Recipe Bookarrow-up-right.

Si está interesado en acceso anticipado o tiene preguntas sobre esta funcionalidad, por favor contacte a [email protected]envelope.

Última actualización

¿Te fue útil?