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

> Synchronisez les événements personnalisés de Greenplum vers OneSignal pour déclencher des Journeys automatisés et des campagnes de messagerie personnalisées basées sur le comportement des utilisateurs.

export const DATA_TYPE_0 = "table columns"

export const PLATFORM_0 = "Greenplum"

export const COLUMN_HEADER_0 = "Greenplum Column"

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

## Aperçu

L'intégration OneSignal + Greenplum permet la synchronisation d'événements personnalisés de votre base de données Greenplum vers OneSignal pour déclencher des campagnes de messagerie automatisées et des Journeys basés sur le comportement des utilisateurs.

Greenplum est une base de données à traitement massivement parallèle (MPP) construite sur PostgreSQL, conçue pour les charges de travail d'analyse à grande échelle.

***

## Prérequis

* Accès aux [Event Streams](/docs/en/event-streams) pour les événements de message sortants (Les limitations de forfait et les dépassements s'appliquent)
* Accès aux [Événements personnalisés](/docs/en/custom-events) pour la synchronisation des événements entrants (Les limitations de forfait et les dépassements s'appliquent)
* [Forfait de compte mis à jour](https://onesignal.com/pricing) (non disponible sur les applications gratuites)

### Greenplum

* **Instance Greenplum** avec accès réseau
* **Utilisateur de base de données** avec les autorisations appropriées
* **Tables d'événements** contenant des données comportementales structurées

***

## Moteurs de synchronisation et autorisations

OneSignal lit les données des tables et des vues dans Greenplum et les synchronise pour déclencher des campagnes de messagerie automatisées. Pour limiter la charge sur votre base de données, OneSignal maintient des tables de suivi d'état qui lui permettent de synchroniser uniquement les données qui ont été modifiées depuis la dernière synchronisation (synchronisations incrémentielles). Lors de la configuration de votre connexion Greenplum, vous choisirez un moteur de synchronisation qui détermine comment le suivi d'état est géré.

Le **moteur de synchronisation basique** maintient les tables de suivi d'état sur l'infrastructure appartenant à OneSignal et est plus simple à configurer, ne nécessitant qu'un accès en lecture seule.

Le **moteur de synchronisation avancé** offre des performances améliorées en maintenant les tables de suivi d'état dans un schéma dédié au sein de votre propre instance Greenplum.

## Configuration

<Steps>
  <Step title="Créer un utilisateur Census">
    Créez un utilisateur de base de données dédié pour OneSignal :

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

  <Step title="Choisir votre moteur de synchronisation et configurer les autorisations">
    **Pour le moteur de synchronisation basique (Accès en lecture seule) :**

    Accordez un accès en lecture à votre schéma de données d'événements. Remplacez `<your schema>` par le nom de votre schéma :

    ```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;
    ```

    **Pour le moteur de synchronisation avancé (Performances améliorées) :**

    Complétez d'abord les étapes du moteur de synchronisation basique ci-dessus, puis ajoutez :

    ```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="Se connecter à OneSignal">
    Dans OneSignal, allez dans **Data > Integrations** et cliquez sur **Add Integration**.

    Sélectionnez **Greenplum** et fournissez :

    * **Host :** Votre hôte maître Greenplum
    * **Port :** 5432 (ou port personnalisé)
    * **Database :** Le nom de votre base de données
    * **Username :** `CENSUS`
    * **Password :** Mot de passe de l'étape 1
    * **Sync Engine :** Choisissez Basique ou Avancé en fonction de l'étape 2
  </Step>
</Steps>

***

### Mappage des données d'événement

Mappez vos {DATA_TYPE_0} {PLATFORM_0} au format des événements personnalisés de OneSignal :

| Champ OneSignal | {COLUMN_HEADER_0} | Description                     | Requis |
| --------------- | ----------------- | ------------------------------- | ------ |
| `name`          | `event_name`      | Identifiant de l'événement      | Oui    |
| `external_id`   | `user_id`         | Identifiant de l'utilisateur    | Oui    |
| `timestamp`     | `event_timestamp` | Quand l'événement s'est produit | Non    |
| `properties`    | `event_data`      | {PROPERTIES_DESCRIPTION_0}      | Non    |

### Exemple de schéma de table d'événements

```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)
);
```

***

## Modes de traitement

### Mode Table

Synchronisez des tables ou des vues entières directement depuis votre base de données Greenplum. OneSignal mappera automatiquement les colonnes aux champs d'événements.

### Mode Requête SQL

Écrivez des requêtes personnalisées compatibles PostgreSQL pour transformer vos données d'événements :

```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;
```

### Optimisation des requêtes MPP

Profitez du traitement parallèle de Greenplum en vous assurant que vos requêtes d'événements sont optimisées pour une exécution distribuée. Utilisez des clés de distribution appropriées et évitez les mouvements de données entre segments pour de meilleures performances.

***

## Configuration réseau avancée

OneSignal peut se connecter avec succès aux instances Greenplum qui utilisent des contrôles réseau avancés, y compris les contraintes de région, les listes d'autorisation d'adresses IP ou le tunneling SSH.

Nous recommandons de configurer votre instance Greenplum pour utiliser TLS v1.2 ou ultérieur pour toutes les connexions.

## Limitations

* Les requêtes analytiques volumineuses peuvent impacter les performances du cluster
* Les opérations JSON/JSONB doivent être optimisées pour la distribution
* Les jointures entre segments doivent être minimisées pour les performances

***

## FAQ

### Quel moteur de synchronisation dois-je choisir ?

Utilisez le **moteur de synchronisation basique** si vous préférez une configuration plus simple et un accès en lecture seule. Choisissez le **moteur de synchronisation avancé** si vous avez besoin de performances améliorées et pouvez autoriser OneSignal à créer des tables dans votre instance Greenplum.

### Comment optimiser les requêtes pour l'architecture MPP de Greenplum ?

Assurez-vous que les requêtes utilisent les clés de distribution efficacement, évitez les mouvements de données inutiles entre les segments et tirez parti du stockage en colonnes de Greenplum pour l'analyse.

### Puis-je utiliser les tables externes de Greenplum pour les données d'événements ?

Oui, OneSignal peut lire à partir de tables externes qui référencent des données dans des formats comme Parquet ou CSV stockées dans des systèmes externes.

***
