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

# Greenplum

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

export const PLATFORM_0 = "Greenplum"

export const DATA_TYPE_0 = "table columns"

export const COLUMN_HEADER_0 = "Greenplum Column"

export const PROPERTIES_DESCRIPTION_0 = "JSON/JSONB object with event metadata"

## Descripción general

La integración OneSignal + Greenplum permite la sincronización de eventos personalizados desde tu base de datos Greenplum a OneSignal para activar campañas de mensajería automatizadas y Journeys basados en el comportamiento del usuario.

Greenplum es una base de datos de procesamiento masivamente paralelo (MPP) construida sobre PostgreSQL, diseñada para cargas de trabajo de análisis a gran escala.

***

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

### Greenplum

* **Instancia de Greenplum** con acceso de red
* **Usuario de base de datos** con permisos apropiados
* **Tablas de eventos** que contengan datos de comportamiento estructurados

***

## Motores de sincronización y permisos

OneSignal lee datos de tablas y vistas en Greenplum y los sincroniza para activar campañas de mensajería automatizadas. Para limitar la carga en tu base de datos, OneSignal mantiene tablas de seguimiento de estado que le permiten sincronizar solo datos que han sido modificados desde la última sincronización (sincronizaciones incrementales). Al configurar tu conexión Greenplum, elegirás un Motor de Sincronización que determina cómo se maneja el seguimiento de estado.

El **Basic Sync Engine** mantiene tablas de seguimiento de estado en infraestructura propiedad de OneSignal y es más simple de configurar, requiriendo solo acceso de lectura.

El **Advanced Sync Engine** ofrece rendimiento mejorado al mantener tablas de seguimiento de estado en un esquema dedicado dentro de tu propia instancia Greenplum.

## Configuración

<Steps>
  <Step title="Crear un usuario Census">
    Crea un usuario de base de datos dedicado para que OneSignal lo use:

    ```sql theme={null}
    -- Create CENSUS user and set password
    CREATE USER CENSUS WITH PASSWORD '<strong unique password>';
    ```
  </Step>

  <Step title="Elegir tu motor de sincronización y configurar permisos">
    **Para Basic Sync Engine (Acceso de solo lectura):**

    Otorga acceso de lectura a tu esquema de datos de eventos. Reemplaza `<your schema>` con el nombre de tu esquema:

    ```sql theme={null}
    -- Let the census user read all existing tables in this schema
    GRANT SELECT ON ALL TABLES IN SCHEMA "<your schema>" TO CENSUS;

    -- Let the census user read any new tables added to this schema
    ALTER DEFAULT PRIVILEGES IN SCHEMA "<your schema>" GRANT SELECT ON TABLES TO CENSUS;

    -- Let the census user execute any existing functions in this schema
    GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA "<your schema>" TO CENSUS;

    -- Let the census user execute any new functions added to this schema
    ALTER DEFAULT PRIVILEGES IN SCHEMA "<your schema>" GRANT EXECUTE ON FUNCTIONS TO CENSUS;
    ```

    **Para Advanced Sync Engine (Rendimiento mejorado):**

    Primero completa los pasos de Basic Sync Engine anteriores, luego agrega:

    ```sql theme={null}
    -- Create a private bookkeeping schema where Census can store sync state
    CREATE SCHEMA CENSUS;

    -- Give the census user full access to the bookkeeping schema
    GRANT ALL ON SCHEMA CENSUS TO CENSUS;

    -- Ensure the census user has access to any existing objects in the bookkeeping schema
    GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA CENSUS TO CENSUS;

    -- Let the census user see your data schema
    GRANT USAGE ON SCHEMA "<your schema>" TO CENSUS;
    ```
  </Step>

  <Step title="Conectar a OneSignal">
    In OneSignal, go to **Data > Integrations** and click **Add Integration**.

    Selecciona **Greenplum** y proporciona:

    * **Host:** Tu host maestro de Greenplum
    * **Port:** 5432 (o puerto personalizado)
    * **Database:** El nombre de tu base de datos
    * **Username:** `CENSUS`
    * **Password:** Contraseña del Paso 1
    * **Sync Engine:** Elige Basic o Advanced basándote en el Paso 2
  </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 esquema de tabla de eventos

```sql theme={null}
-- Example Greenplum event table
CREATE TABLE analytics.user_events (
    event_id BIGSERIAL,
    event_name VARCHAR(100) NOT NULL,
    user_id VARCHAR(255) NOT NULL,
    event_timestamp TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
    event_properties JSONB,
    session_id VARCHAR(255),
    device_type VARCHAR(50)
);
```

***

## Modos de procesamiento

### Modo de tabla

Sincroniza tablas o vistas completas directamente desde tu base de datos Greenplum. OneSignal mapeará automáticamente las columnas a campos de eventos.

### Modo de consulta SQL

Escribe consultas personalizadas compatibles con PostgreSQL para transformar tus datos de eventos:

```sql theme={null}
-- Example: Recent high-value events
SELECT
    event_name,
    user_id,
    event_timestamp,
    event_properties
FROM analytics.user_events
WHERE event_timestamp >= NOW() - INTERVAL '7 days'
    AND (event_properties->>'value')::NUMERIC > 100
ORDER BY event_timestamp DESC;
```

### Optimización de consultas MPP

Aprovecha el procesamiento paralelo de Greenplum asegurándote de que tus consultas de eventos estén optimizadas para ejecución distribuida. Usa claves de distribución apropiadas y evita el movimiento de datos entre segmentos para mejor rendimiento.

***

## Configuración de red avanzada

OneSignal puede conectarse exitosamente a instancias Greenplum que usan controles de red avanzados incluyendo restricciones de región, listas de permiso de direcciones IP o túneles SSH.

Recomendamos configurar tu instancia Greenplum para usar TLS v1.2 o posterior para todas las conexiones.

## Limitaciones

* Las consultas analíticas grandes pueden impactar el rendimiento del clúster
* Las operaciones JSON/JSONB deben optimizarse para distribución
* Las uniones entre segmentos deben minimizarse para rendimiento

***

## FAQ

### ¿Qué motor de sincronización debo elegir?

Usa el **Basic Sync Engine** si prefieres una configuración más simple y acceso de solo lectura. Elige el **Advanced Sync Engine** si necesitas rendimiento mejorado y puedes permitir que OneSignal cree tablas en tu instancia Greenplum.

### ¿Cómo optimizo consultas para la arquitectura MPP de Greenplum?

Asegúrate de que las consultas utilicen claves de distribución efectivamente, evita el movimiento innecesario de datos entre segmentos y aprovecha el almacenamiento columnar de Greenplum para análisis.

### ¿Puedo usar tablas externas de Greenplum para datos de eventos?

Sí, OneSignal puede leer desde tablas externas que referencian datos en formatos como Parquet o CSV almacenados en sistemas externos.

***
