> ## 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.

# Trino

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

export const PLATFORM_0 = "Trino"

export const DATA_TYPE_0 = "event data"

export const COLUMN_HEADER_0 = "Trino Column"

export const PROPERTIES_DESCRIPTION_0 = "Event metadata as JSON"

## Descripción general

La integración OneSignal + Trino habilita la sincronización de eventos personalizados desde tu clúster de Trino a OneSignal para activar campañas de mensajería automatizadas y Journeys basados en el comportamiento del usuario.

Trino es un motor de consulta SQL distribuido diseñado para ejecutar consultas de análisis rápidas contra conjuntos de datos grandes de múltiples fuentes.

***

## Requisitos

* Access to [Event Streams](/docs/en/event-streams) for outbound message events (Plan limitations and overages apply)
* Access to [Custom Events](/docs/en/custom-events) for inbound event syncing (Plan limitations and overages apply)
* [Updated Account Plan](https://onesignal.com/pricing) (not available on free apps)

### Trino

* **Clúster de Trino** con acceso de red
* **Credenciales de usuario** con permisos apropiados
* **Soporte de conexión TLS** (requerido por OneSignal)
* **Datos de eventos** accesibles a través de catálogos de Trino

***

## Configuración

<Steps>
  <Step title="Configurar conexión de Trino">
    In OneSignal, go to **Data > Integrations** and click **Add Integration**.

    Selecciona **Trino** y proporciona los siguientes detalles de conexión:

    * **Host:** El hostname de tu clúster de Trino
    * **Username:** Tu nombre de usuario de Trino
    * **Password:** Tu contraseña de Trino
    * **Port:** 443 (predeterminado) o tu puerto personalizado

    <Info>
      OneSignal requiere una conexión TLS a Trino. Si tu instancia no se ejecuta en el puerto 443, especifica tu puerto personalizado.
    </Info>
  </Step>

  <Step title="Configurar Motor de Sincronización Avanzado (Opcional)">
    Para rendimiento mejorado, configura un catálogo CENSUS dedicado:

    1. Crea un catálogo llamado `CENSUS` conteniendo un esquema llamado `CENSUS`
    2. Asegúrate de que tu conector soporte:
       * Operaciones `CREATE TABLE` y `DROP TABLE`
       * Escrituras de tabla (INSERT, DELETE, UPDATE)
       * Declaración `CREATE OR REPLACE TABLE`
    3. Otorga permisos completos en el esquema `CENSUS.CENSUS` a tu usuario de OneSignal

    <Info>
      Las configuraciones probadas incluyen conectores de MySQL, PostgreSQL, Snowflake, Iceberg y Delta Lake.
    </Info>
  </Step>
</Steps>

***

### Event data mapping

Map your {PLATFORM_0} {DATA_TYPE_0} to OneSignal's custom events format:

| OneSignal Field | {COLUMN_HEADER_0} | Description                | Required |
| --------------- | ----------------- | -------------------------- | -------- |
| `name`          | `event_name`      | Event identifier           | Yes      |
| `external_id`   | `user_id`         | User identifier            | Yes      |
| `timestamp`     | `event_timestamp` | When event occurred        | No       |
| `properties`    | `event_data`      | {PROPERTIES_DESCRIPTION_0} | No       |

### Ejemplo de consulta de eventos

```sql theme={null}
-- Ejemplo: Eventos recientes de alto valor a través de catálogos
SELECT
    event_name,
    user_id,
    event_timestamp,
    CAST(event_properties AS JSON) as event_properties
FROM catalog.schema.user_events
WHERE event_timestamp >= current_timestamp - INTERVAL '7' DAY
    AND JSON_EXTRACT_SCALAR(event_properties, '$.value') > '100'
ORDER BY event_timestamp DESC;
```

### Consultas de eventos entre catálogos

```sql theme={null}
-- Ejemplo: Consulta federada a través de múltiples fuentes de datos
SELECT
    'combined_activity' as event_name,
    u.user_id,
    current_timestamp as event_timestamp,
    JSON_FORMAT(JSON_OBJECT(
        'web_sessions', w.session_count,
        'mobile_events', m.event_count,
        'purchase_value', p.total_value
    )) as event_properties
FROM postgres_catalog.users.profiles u
LEFT JOIN web_catalog.analytics.sessions w ON u.user_id = w.user_id
LEFT JOIN mobile_catalog.events.activities m ON u.user_id = m.user_id
LEFT JOIN purchases_catalog.orders.summary p ON u.user_id = p.user_id
WHERE u.created_date >= current_date - INTERVAL '30' DAY;
```

***

## Opciones de motor de sincronización

### Motor de Sincronización Básico

* Funciona con cualquier catálogo y conector de Trino
* Seguimiento de estado gestionado por infraestructura de OneSignal
* Configuración más simple sin requisitos adicionales

### Motor de Sincronización Avanzado

* Rendimiento mejorado con seguimiento de estado local
* Requiere catálogo y esquema `CENSUS.CENSUS` dedicado
* Soporta conectores con operaciones de escritura de tabla
* Recomendado para procesamiento de eventos de alto volumen

***

## Conectores soportados

El Motor de Sincronización Avanzado de OneSignal ha sido probado con:

* **Conector MySQL** (modo lectura-escritura)
* **Conector PostgreSQL** (modo lectura-escritura)
* **Conector Snowflake** (modo lectura-escritura)
* **Conector Iceberg** (con S3 y AWS Glue)
* **Conector Delta Lake** (con AWS Glue y catálogos Starburst Galaxy)

***

## Limitaciones

* Conexión TLS requerida (requisito de seguridad de OneSignal)
* El Motor de Sincronización Avanzado requiere soporte de `CREATE OR REPLACE TABLE` (Trino Octubre 2023+)
* Warehouse Writeback aún no soportado (próximamente)
* No se pueden proporcionar opciones de tabla personalizadas en la cláusula `WITH`

***

## FAQ

### ¿Qué conectores de Trino funcionan con OneSignal?

Cualquier conector que soporte operaciones de lectura funciona con el Motor de Sincronización Básico. Para el Motor de Sincronización Avanzado, necesitas conectores que soporten escrituras de tabla y `CREATE OR REPLACE TABLE`.

### ¿Puedo consultar múltiples catálogos en una sola sincronización?

¡Sí! Las capacidades de consulta federada de Trino te permiten combinar datos de eventos de múltiples fuentes (PostgreSQL, MySQL, S3, etc.) en una sola consulta.

### ¿Necesito el Motor de Sincronización Avanzado?

No, el Motor de Sincronización Básico funciona bien para la mayoría de los casos de uso. Usa el Motor de Sincronización Avanzado si necesitas rendimiento mejorado y puedes configurar el catálogo `CENSUS.CENSUS` requerido.
