> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ClickHouse

> Sincronice eventos personalizados desde ClickHouse a OneSignal para activar Journeys automatizados y campañas de mensajería personalizadas basadas en el comportamiento del usuario.

export const DATA_TYPE_0 = "columnas de tabla de eventos"

export const PLATFORM_0 = "ClickHouse"

export const COLUMN_HEADER_0 = "Columna de ClickHouse"

export const PROPERTIES_DESCRIPTION_0 = "Columna JSON o múltiples columnas"

## Descripción general

La integración de OneSignal + ClickHouse permite la sincronización automática de eventos personalizados desde su base de datos de análisis ClickHouse a OneSignal. Esto le permite activar Journeys automatizados y campañas de mensajería personalizadas basadas en datos de comportamiento del usuario almacenados en su base de datos columnar de alto rendimiento.

***

## Requisitos

* Acceso a [flujos de eventos](/docs/es/event-streams) para eventos de mensajes salientes (Se aplican limitaciones del plan y sobrecargos)
* Acceso a [eventos personalizados](/docs/es/custom-events) para sincronización de eventos entrantes (Se aplican limitaciones del plan y sobrecargos)
* [Plan de cuenta actualizado](https://onesignal.com/pricing) (no disponible en aplicaciones gratuitas)

### ClickHouse

* **Servidor ClickHouse** (autoalojado o en la nube)
* **Credenciales de base de datos** con acceso de lectura a las tablas de eventos
* **Tablas de datos de eventos** que contengan datos de comportamiento con el esquema adecuado

***

## Configuración

<Steps>
  <Step title="Crear usuario de ClickHouse para OneSignal">
    Cree una cuenta de usuario dedicada para OneSignal con acceso de solo lectura a sus tablas de eventos:

    ```sql theme={null}
    CREATE USER onesignal_reader IDENTIFIED BY 'strong_password';
    GRANT SELECT ON event_database.* TO onesignal_reader;
    ```
  </Step>

  <Step title="Configurar el acceso a la red">
    Asegúrese de que OneSignal pueda conectarse a su instancia de ClickHouse:

    * **Autoalojado**: Permita conexiones desde las direcciones IP de OneSignal
    * **ClickHouse Cloud**: Agregue las IPs de OneSignal a su lista de permitidos
    * **Puerto**: El puerto predeterminado de ClickHouse es 8123 (HTTP) o 9000 (nativo)
  </Step>

  <Step title="Agregar integración en OneSignal">
    En OneSignal, vaya a **Datos > Integraciones** y haga clic en **Agregar integración**.

    Seleccione **ClickHouse** y proporcione:

    * **Host**: El nombre de host o IP de su servidor ClickHouse
    * **Port**: Puerto de ClickHouse (predeterminado: 8123 para HTTP, 9000 para nativo)
    * **Database**: Nombre de la base de datos que contiene las tablas de eventos
    * **Username**: `onesignal_reader` (o el nombre de usuario que eligió)
    * **Password**: Contraseña para el usuario de ClickHouse
    * **Protocol**: HTTP o Native (se recomienda HTTP por simplicidad)
  </Step>

  <Step title="Configurar la fuente de datos de eventos">
    Especifique la tabla de ClickHouse que contiene sus datos de eventos:

    * **Table**: Nombre de la tabla que contiene registros de eventos (por ejemplo, `user_events`)
    * **Event Query**: Consulta SQL opcional para filtrar o transformar datos de eventos

    Su tabla de eventos debe contener columnas para:

    * Nombre/tipo de evento (String)
    * Identificador de usuario (String)
    * Marca de tiempo del evento (DateTime)
    * Propiedades adicionales del evento (JSON o columnas individuales)
  </Step>

  <Step title="Probar la conexión">
    Haga clic en **Test Connection** para verificar que OneSignal pueda acceder a su base de datos de ClickHouse y leer los datos de eventos.
  </Step>
</Steps>

***

### Mapeo de datos de eventos

Mapee su {DATA_TYPE_0} de {PLATFORM_0} al formato de eventos personalizados de OneSignal:

| Campo de OneSignal | {COLUMN_HEADER_0} | Descripción                | Requerido |
| ------------------ | ----------------- | -------------------------- | --------- |
| `name`             | `event_name`      | Identificador de evento    | Sí        |
| `external_id`      | `user_id`         | Identificador de usuario   | Sí        |
| `timestamp`        | `event_timestamp` | Cuándo ocurrió el evento   | No        |
| `properties`       | `event_data`      | {PROPERTIES_DESCRIPTION_0} | No        |

***

## Configuración avanzada

### Consultas SQL personalizadas

Use SQL personalizado para filtrar o transformar datos de eventos antes de sincronizarlos con OneSignal:

```sql theme={null}
SELECT
  event_name,
  user_id,
  toDateTime(event_timestamp) as timestamp,
  toJSONString(
    map(
      'product_id', product_id,
      'purchase_amount', purchase_amount,
      'category', category
    )
  ) as payload
FROM user_events
WHERE event_timestamp >= now() - INTERVAL 7 DAY
  AND event_name IN ('purchase', 'signup', 'upgrade')
ORDER BY event_timestamp DESC
```

### Optimización del rendimiento

ClickHouse está optimizado para consultas analíticas. Considere:

* **Particionamiento**: Use particionamiento basado en fechas en la marca de tiempo del evento
* **Indexación**: Cree índices apropiados en user\_id y event\_name
* **Vistas materializadas**: Preagregue los datos de eventos para consultas más rápidas

<Warning>
  ClickHouse está optimizado para cargas de trabajo de solo anexado. Asegúrese de que sus datos de eventos sigan este patrón para un mejor rendimiento.
</Warning>

***

## Preguntas frecuentes

### ¿Con qué frecuencia OneSignal sincroniza eventos desde ClickHouse?

OneSignal sincroniza los datos de eventos según su programación configurada, con un intervalo mínimo de 15 minutos.

### ¿Puedo sincronizar eventos de múltiples tablas de ClickHouse?

Sí, puede crear múltiples integraciones para diferentes tablas o usar consultas UNION para combinar datos de múltiples tablas.
