> For the complete documentation index, see [llms.txt](https://navixy.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://navixy.com/docs/analytics/es/iot-query/schema-overview/transformation-layer/common-transformations/rule-based-driver-events.md).

# Eventos de conductor basados en reglas

Cómo la tabla de eventos de conductor basados en reglas convierte sus reglas de alerta en registros de infracciones de manejo, y cómo consultarla.

La transformación basada en reglas de eventos del Conductor registra infracciones de Manejo como registros de eventos individuales, evaluadas según las reglas de alerta configuradas en su cuenta. Cada fila en `processed_common_data.eventos_de_conductores_basados_en_reglas` representa una infracción: qué regla la detectó, qué tipo fue, cuándo y dónde ocurrió, y a qué velocidad se movía el vehículo en ese momento.

A diferencia de la transformación basada en disparadores que reemplaza, esta se ejecuta según un horario fijo. Una función de actualización vuelve a evaluar una ventana de datos recientes cada 15 minutos, por lo que una nueva fila puede retrasarse hasta 15 minutos con respecto al evento en el dispositivo.

{% hint style="info" %}

* Los umbrales para sobre exceso de velocidad y Ralentí provienen de sus propias reglas de alerta, no de los valores predeterminados de toda la plataforma. Dos dispositivos pueden generar eventos diferentes a partir de Manejo idéntico si se les aplican reglas diferentes.
* Los eventos de hardware repetidos del mismo tipo provenientes del mismo dispositivo dentro de 10 segundos se combinan en una sola fila, ya que un dispositivo puede enviar múltiples señales por un solo incidente.
* Los eventos basados en el Acelerómetro se ignoran mientras el vehículo está En movimiento por debajo de 3 km/h. Esto evita marcar la vibración por la carga o el estacionamiento como una infracción.
* Todas las marcas de tiempo se almacenan en UTC.
  {% endhint %}

## Tabla de salida: processed\_common\_data.rule\_based\_conductor\_events

Cada fila representa una infracción detectada. La tabla se indexa por `device_id`, `device_time`, `rule_id`, y `hw_event_id`.

Varias columnas son copias desnormalizadas de valores almacenados en otro lugar, por lo que las consultas de panel más comunes no necesitan ninguna unión: `etiqueta de objeto` proviene del registro del Objeto, y `límite de velocidad`, `event_comment1`, y `event_comment2` provienen de la regla que produjo el evento.

<table><thead><tr><th width="180">Campo</th><th width="100">Tipo</th><th>Descripción</th></tr></thead><tbody><tr><td><code>device_id</code></td><td>entero</td><td>Identificador del dispositivo.</td></tr><tr><td><code>id de objeto</code></td><td>entero</td><td>Identificador del Objeto (vehículo o Activo) asociado con el dispositivo en el momento del evento.</td></tr><tr><td><code>etiqueta de objeto</code></td><td>texto</td><td>Nombre del Objeto legible para humanos. Ya está desnormalizado en esta tabla, por lo que no es necesario hacer join con <code>raw_business_data.objects</code> es necesario.</td></tr><tr><td><code>device_time</code></td><td>marca de tiempo</td><td>Marca de tiempo del evento, en UTC.</td></tr><tr><td><code>rule_id</code></td><td>entero</td><td>La Alerta que produjo el evento. Hace referencia a <code>raw_business_data.rules</code>. Establecer en <code>0</code> para <code>rpm_exceeded</code> eventos, que no están controlados por reglas. Consulte <a href="#how-rules-shape-the-output">Cómo las reglas dan forma al resultado</a>.</td></tr><tr><td><code>event_type</code></td><td>texto</td><td>Categoría de la infracción. Uno de cuatro valores. Consulte <a href="#violation-types">Tipos de infracción</a> a continuación.</td></tr><tr><td><code>hw_event_id</code></td><td>entero</td><td>Código de evento de hardware para acelerómetro e infracciones detectadas por el sensor. <code>0</code> para <code>aceleración</code> y <code>Ralentí_suave</code>, que se derivan en lugar de ser reportados por el dispositivo.</td></tr><tr><td><code>event_comment1</code></td><td>texto</td><td>Etiqueta de texto libre copiada de la regla. Se establece cuando se configuró la regla y es útil para agrupar eventos por sus propias categorías. Nulo para <code>rpm_exceeded</code>.</td></tr><tr><td><code>event_comment2</code></td><td>texto</td><td>Segunda etiqueta de texto libre copiada de la regla. Nulo para <code>rpm_exceeded</code>.</td></tr><tr><td><code>límite de velocidad</code></td><td>entero</td><td>El umbral configurado en la regla, desnormalizado de <code>raw_business_data.rules</code>. Para <code>aceleración</code> las reglas, este es el límite de velocidad en km/h; para <code>Ralentí_suave</code> las reglas, es la tolerancia de ralentí en minutos.</td></tr><tr><td><code>speed_kmh</code></td><td>numeric</td><td>Velocidad del vehículo en el momento del evento, en km/h.</td></tr><tr><td><code>duration_sec</code></td><td>entero</td><td>Duración de la infracción en segundos, para los tipos de evento que abarcan un período de tiempo en lugar de ocurrir instantáneamente.</td></tr><tr><td><code>zone_id</code></td><td>entero</td><td>Zona en la que ocurrió el evento, cuando la regla está delimitada a zonas específicas. Nulo cuando la regla no tiene zonas asociadas y también cuando la regla está configurada para activarse fuera de sus zonas. Vea <a href="#zone-scoping">Delimitación por zonas</a>.</td></tr><tr><td><code>zone_label</code></td><td>texto</td><td>Nombre legible de la Zona, desnormalizado junto con <code>zone_id</code>.</td></tr><tr><td><code>latitud</code></td><td>double precision</td><td>Latitud en grados.</td></tr><tr><td><code>longitud</code></td><td>double precision</td><td>Longitud en grados.</td></tr><tr><td><code>extra_value</code></td><td>numeric</td><td>Medición dependiente del contexto, establecida para tipos de eventos que registran una lectura distinta de la velocidad. Para <code>rpm_exceeded</code> eventos, la lectura de RPM que desencadenó el evento.</td></tr><tr><td><code>created_at</code></td><td>marca de tiempo</td><td>Cuando la fila fue escrita por la función de actualización. Más tarde que <code>device_time</code> hasta por la duración de un ciclo de actualización.</td></tr></tbody></table>

### Tipos de infracción

La tabla a continuación enumera cada tipo de violación que la transformación registra, el valor exacto `event_type` almacenado para este y de dónde proviene su umbral. Use el `event_type` valor de la columna directamente al filtrar o agrupar consultas.

<table><thead><tr><th width="150">valor de event_type</th><th width="230">Lo que significa</th><th width="150">hw_event_id</th><th>Umbral</th></tr></thead><tbody><tr><td><code>aceleración</code></td><td>El vehículo excedió el límite de velocidad establecido en la regla</td><td><code>0</code></td><td>Por regla, en km/h</td></tr><tr><td><code>manejo_brusco</code></td><td>Acelerómetro o evento de hardware reportado por el dispositivo: aceleración brusca, frenado, giros, cambios de carril e infracciones del cinturón de seguridad</td><td><code>900</code>, <code>931</code>, <code>987</code>–<code>991</code>, <code>996</code></td><td>Detectado por el dispositivo. Se ignora por debajo de 3 km/h</td></tr><tr><td><code>Ralentí_suave</code></td><td>Vehículo detenido con la ignición encendida por más tiempo del que permite la regla</td><td><code>0</code></td><td>Por regla, en minutos</td></tr><tr><td><code>rpm_exceeded</code></td><td>RPM del motor por encima del umbral de la plataforma</td><td><code>9002</code></td><td>Fijo en 5,000 RPM</td></tr></tbody></table>

{% hint style="warning" %}
El `event_type` valores, y el `hw_event_id` la numeración difiere de la tabla de eventos de desempeño del conductor que esta transformación reemplaza. Las consultas escritas para la tabla anterior necesitan actualizar sus valores de filtro, no solo el nombre de la tabla. En particular, las infracciones del cinturón de seguridad ya no tienen su propio tipo de evento: llegan como `manejo_brusco` con `hw_event_id = 931`.
{% endhint %}

Los ejemplos a continuación muestran patrones comunes de consulta. La consulta básica devuelve infracciones recientes ordenadas por dispositivo y hora. La segunda agrega la definición de la regla detrás de cada evento. La tercera filtra solo la conducción peligrosa detectada por hardware.

{% tabs %}
{% tab title="Consulta básica" %}
{% code overflow="wrap" expandable="true" %}

```sql
SELECT
    device_id,
    etiqueta_del_objeto,
    hora del dispositivo,
    event_type,
    speed_kmh,
    límite de velocidad,
    latitud,
    longitud
DESDE processed_common_data.rule_based_driver_events
WHERE device_time >= CURRENT_DATE - INTERVAL '7 days'
ORDER BY device_id, device_time;
```

{% endcode %}
{% endtab %}

{% tab title="Con los detalles de la regla" %}
{% code overflow="wrap" expandable="true" %}

```sql
SELECT
    e.device_id,
    e.etiqueta_objeto,
    e.device_time,
    e.event_type,
    e.speed_kmh,
    e.speed_limit,
    e.event_comment1,
    r.maximum AS rule_threshold
FROM processed_common_data.rule_based_driver_events e
LEFT JOIN raw_business_data.rules r
    ON r.rule_id = e.rule_id
WHERE e.device_time >= CURRENT_DATE - INTERVAL '7 days'
ORDER BY e.device_id, e.device_time;
```

{% endcode %}

Use un `LEFT JOIN` en lugar de un inner join. `rpm_exceeded` los eventos tienen `rule_id = 0` y no tienen una fila coincidente en `raw_business_data.rules`, por lo que un inner join los descarta silenciosamente.
{% endtab %}

{% tab title="Solo Conducción peligrosa" %}
{% code overflow="wrap" expandable="true" %}

```sql
SELECT
    device_id,
    etiqueta_del_objeto,
    hora del dispositivo,
    hw_event_id,
    speed_kmh
DESDE processed_common_data.rule_based_driver_events
WHERE event_type = 'harsh_driving'
  AND device_time >= CURRENT_DATE - INTERVAL '7 days'
ORDER BY device_id, device_time;
```

{% endcode %}

Filtrado en un solo `event_type` el valor reemplaza el largo `EN` Enumera la tabla anterior requerida, ya que ahora todas las infracciones del Acelerómetro y del hardware comparten una categoría. Sepáralas con `hw_event_id` cuando necesite la maniobra individual.
{% endtab %}
{% endtabs %}

## Cómo las reglas dan forma al resultado

Las filas de esta tabla no son generadas por la lógica de detección de toda la plataforma. Con la excepción de `rpm_exceeded`, cada evento es el resultado de una Alerta configurada en su cuenta, y la regla determina tanto el umbral como el alcance.

{% stepper %}
{% step %}

#### La regla establece el umbral

Cada regla almacena su umbral en `raw_business_data.rules.maximum`: una velocidad en km/h para `aceleración` reglas, una duración en minutos para `Ralentí_suave` reglas. La transformación copia ese valor en `límite de velocidad` en cada fila que escribe, para que pueda ver contra qué se midió el vehículo sin volver a unir con la regla.
{% endstep %}

{% step %}

#### La regla establece el alcance

Una regla se aplica a los objetos vinculados a ella a través de `rules2objects`, y opcionalmente a las geocercas vinculadas a través de `reglas2zonas`. Un dispositivo fuera de la lista de Objeto de una regla no produce eventos para esa regla, sin importar cómo se controle.
{% endstep %}

{% step %}

#### La regla proporciona sus propias etiquetas

`event_comment1` y `event_comment2` Son campos de texto libre que se completan cuando se configura la regla. Se copian en cada evento para que los paneles puedan mostrar su propia terminología sin una unión.
{% endstep %}

{% step %}

#### La función de actualización evalúa la ventana

Cada 15 minutos, `actualizar_eventos_de_conductor_basados_en_reglas` reexamina una ventana de 40 minutos de datos recientes y registra cualquier evento que cumpla los criterios. La ventana es deliberadamente más larga que el intervalo, por lo que los registros que llegan tarde a la plataforma aún se capturan en una pasada posterior.
{% endstep %}

{% step %}

#### RPM es la excepción

`rpm_exceeded` Los eventos no están regidos por reglas. Usan un umbral fijo de 5,000 RPM de la plataforma, llevan `rule_id = 0`, y no tienen `event_comment1` o `event_comment2` valores.
{% endstep %}
{% endstepper %}

### Delimitación por zonas

Cuando una regla tiene geocercas adjuntas a través de `reglas2zonas`, esas zonas deciden tanto si se registra un evento como si `zone_id` se completa. La geometría de la zona se lee de `processed_common_data.zones_geom`, materializado a partir de `raw_business_data.zones`.

<table><thead><tr><th width="260">Configuración de la regla</th><th width="200">Eventos registrados</th><th>valor de zone_id</th></tr></thead><tbody><tr><td>Sin zonas adjuntas</td><td>En todas partes</td><td>Nulo</td></tr><tr><td>Zonas adjuntas, <code>zone_inverted = false</code></td><td>Solo dentro de las zonas</td><td>La zona en la que ocurrió el evento</td></tr><tr><td>Zonas adjuntas, <code>zone_inverted = true</code></td><td>Solo fuera de las zonas</td><td>Nulo</td></tr></tbody></table>

{% hint style="warning" %}
Un valor nulo `zone_id` es ambiguo por sí solo: significa ya sea que la regla no tenía zonas, o que la regla se activa fuera de sus zonas. Al filtrar con `WHERE zone_id IS NULL` mezclará ambos casos. Haga una unión con `reglas2zonas` cuando necesite distinguirlos.
{% endhint %}

<details>

<summary>Constantes fijas de la plataforma</summary>

Estos valores son los mismos para todas las cuentas y no se pueden configurar mediante una regla. Los umbrales definidos por la regla se tratan en [Cómo las reglas dan forma al resultado](#how-rules-shape-the-output).

<table><thead><tr><th width="220">Constante</th><th width="160">Valor</th><th>Descripción</th></tr></thead><tbody><tr><td>Velocidad mínima para eventos del Acelerómetro</td><td>3 km/h</td><td>Las infracciones basadas en Acelerómetro por debajo de esta velocidad se ignoran, para evitar marcar vibración mientras está Aparcado o cargando.</td></tr><tr><td>Umbral de RPM</td><td>5,000 RPM</td><td>Las RPM del motor deben superar este valor para que se registre un <code>rpm_exceeded</code> evento.</td></tr><tr><td>Ventana de deduplicación de hardware</td><td>10 segundos</td><td>Los eventos de hardware repetidos del mismo tipo del mismo dispositivo dentro de esta ventana se fusionan en uno solo.</td></tr><tr><td>Intervalo de actualización</td><td>15 minutos</td><td>Con qué frecuencia se ejecuta la función de actualización.</td></tr><tr><td>Ventana retrospectiva de actualización</td><td>40 minutos</td><td>Hasta qué punto cada ejecución vuelve a examinar los datos, para que no se omitan los registros que llegan tarde.</td></tr></tbody></table>

</details>

## Personalizar la transformación

Para `aceleración` y `Ralentí_suave`, la personalización no requiere ningún flujo de trabajo. Ambos umbrales se leen de la Alerta, por lo que cambiar la regla cambia lo que la transformación registra a partir de la siguiente actualización. Lo mismo aplica para el alcance: ajuste los objetos o geocercas adjuntos a la regla para cambiar qué vehículos y áreas generan eventos.

{% hint style="warning" %}
La función de actualización que llena `processed_common_data.eventos_de_conductores_basados_en_reglas` no se puede editar directamente. Los umbrales que no están definidos por la regla, como el umbral mínimo de 3 km/h de Acelerómetro o el límite de 5,000 RPM, solo pueden cambiarse creando un flujo de trabajo paralelo en Transformation Builder y programándolo como una transformación independiente en `processed_custom_data`. Eso no cambia la tabla descrita en esta página.
{% endhint %}

Si su escenario operativo necesita umbrales fijos diferentes, póngase en contacto con **<iotquery@navixy.com>** para solicitar la plantilla de flujo de trabajo correspondiente. Una vez que la tenga, cárguela en [Transformation Builder](/docs/analytics/es/iot-query/schema-overview/transformation-layer/transformation-builder.md), ajuste los valores relevantes y programe el flujo de trabajo modificado como una transformación personalizada.

## Próximos pasos

* [**Transformaciones comunes**](/docs/analytics/es/iot-query/schema-overview/transformation-layer/common-transformations.md): Volver al índice de transformaciones.
* [**Viajes**](/docs/analytics/es/iot-query/schema-overview/transformation-layer/common-transformations/trips.md): Una transformación hermana que produce registros de recorridos de vehículos a partir de datos telemáticos sin procesar.
* [**Agregación de datos del sensor**](/docs/analytics/es/iot-query/schema-overview/transformation-layer/common-transformations/sensor-data-aggregation.md): Una transformación hermana que agrega las lecturas de los sensores en intervalos de tiempo.
* [**Capa de Datos brutos**](/docs/analytics/es/iot-query/schema-overview/bronze-layer.md): Explorar `Seguimiento_datos_núcleo`, `estados`, y `entradas`, las tablas de origen que alimentan los eventos del conductor basados en reglas.
* [**Transformation Builder**](/docs/analytics/es/iot-query/schema-overview/transformation-layer/transformation-builder.md): Aprenda cómo crear una versión personalizada de esta transformación.
* [**Panel de calificación de manejo**](https://github.com/Navixy/navixy-iot-query-dashboard/blob/main/schemas/12-driver-performance-dashboard.md): Usa eventos del conductor basados en reglas para la calificación de seguridad de manejo para toda la flota.
* [**Panel de impacto del comportamiento**](https://github.com/Navixy/navixy-iot-query-dashboard/blob/main/schemas/13-behavior-impact-dashboard.md): Usa eventos del conductor basados en reglas para dar seguimiento a las tendencias de comportamiento a lo largo del tiempo.
* [**Panel de seguridad y seguridad**](https://github.com/Navixy/navixy-iot-query-dashboard/blob/main/schemas/10-premium-safety-security-dashboard.md): Usa eventos del conductor basados en reglas junto con datos de zona y recorrido.
* [**Panel de arrendamiento**](https://github.com/Navixy/navixy-iot-query-dashboard/blob/main/schemas/06-leasing-dashboard.md): Usa consultas de Conducción peligrosa y de detección de ralentí a partir de eventos del conductor basados en reglas.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://navixy.com/docs/analytics/es/iot-query/schema-overview/transformation-layer/common-transformations/rule-based-driver-events.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
