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

# MotherDuck

> Synchronisez les événements personnalisés de MotherDuck vers OneSignal pour déclencher des parcours 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 = "MotherDuck"

export const COLUMN_HEADER_0 = "MotherDuck Column"

export const PROPERTIES_DESCRIPTION_0 = "JSON object with event metadata"

## Vue d'ensemble

L'intégration OneSignal + MotherDuck permet la synchronisation automatique des événements personnalisés depuis vos bases de données MotherDuck vers OneSignal pour déclencher des campagnes de messagerie automatisées et des parcours basés sur le comportement des utilisateurs.

MotherDuck est un service DuckDB dans le cloud qui offre des capacités OLAP (Traitement analytique en ligne) rapides avec la simplicité du SQL.

***

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

### MotherDuck

* **Compte MotherDuck** avec accès à la base de données
* **Token de service** pour l'authentification
* **Base de données** contenant les données d'événement
* **Tables ou vues** avec des informations d'événement structurées

***

## Configuration

<Steps>
  <Step title="Créer un token de service MotherDuck">
    Générez un token d'accès pour permettre à OneSignal de se connecter à MotherDuck :

    1. Connectez-vous à l'interface web MotherDuck sur `app.motherduck.com`
    2. Cliquez sur votre profil dans le coin supérieur gauche
    3. Naviguez vers **Paramètres** > **Général** > **Tokens d'accès**
    4. Cliquez sur **Créer un token**
    5. Définissez la date d'expiration (ou laissez illimité)
    6. Copiez le token de service généré
  </Step>

  <Step title="Préparer vos données d'événement">
    Assurez-vous que votre base de données MotherDuck contient des tables d'événements correctement structurées :

    ```sql theme={null}
    -- Exemple de structure de table d'événements
    CREATE TABLE user_events (
        event_name VARCHAR,
        user_id VARCHAR,
        event_timestamp TIMESTAMP,
        event_properties JSON,
        session_id VARCHAR
    );
    ```
  </Step>

  <Step title="Se connecter à OneSignal">
    Dans OneSignal, allez dans **Data > Integrations** et cliquez sur **Add Integration**.

    Sélectionnez **MotherDuck** et fournissez :

    * **Token de service :** Token de l'étape 1
    * **Nom de la base de données :** Le nom de votre base de données MotherDuck
    * **Chaîne de connexion :** `md:votre_nom_de_base_de_données`
  </Step>

  <Step title="Configurer la synchronisation des données">
    Sélectionnez les tables ou rédigez des requêtes SQL personnalisées pour définir quelles données d'événement synchroniser :

    ```sql theme={null}
    SELECT
        event_name,
        user_id,
        event_timestamp,
        event_properties
    FROM user_events
    WHERE event_timestamp >= CURRENT_DATE - INTERVAL 7 DAYS
    ```
  </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 requête d'événement

```sql theme={null}
-- Requête d'événement optimisée pour la synchronisation OneSignal
SELECT
    event_name,
    user_id,
    event_timestamp,
    {
        'source': 'motherduck',
        'session_id': session_id,
        'device_type': device_type,
        'value': event_value
    }::JSON as event_properties
FROM analytics.user_events
WHERE event_timestamp >= CURRENT_TIMESTAMP - INTERVAL 1 DAY
ORDER BY event_timestamp DESC
```

***

## Modes de traitement

### Mode table

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

### Mode requête SQL

Rédigez des requêtes SQL DuckDB personnalisées pour transformer et filtrer vos données d'événement :

```sql theme={null}
-- Agrégation d'événements avancée
SELECT
    'daily_summary' as event_name,
    user_id,
    DATE_TRUNC('day', event_timestamp) as event_timestamp,
    {
        'total_events': COUNT(*),
        'unique_sessions': COUNT(DISTINCT session_id),
        'last_activity': MAX(event_timestamp)
    }::JSON as event_properties
FROM user_events
WHERE event_timestamp >= CURRENT_DATE - INTERVAL 7 DAYS
GROUP BY user_id, DATE_TRUNC('day', event_timestamp)
```

***

## Limitations

* La complexité des requêtes affecte les performances de synchronisation
* Les grands ensembles de résultats peuvent impacter la vitesse de synchronisation
* L'analyse JSON nécessite un typage de colonne approprié

***

## FAQ

### Comment optimiser les performances des requêtes dans MotherDuck ?

Utilisez les avantages du stockage en colonnes de DuckDB en sélectionnant uniquement les colonnes nécessaires et en appliquant les filtres tôt dans vos requêtes.

### Puis-je synchroniser depuis plusieurs bases de données MotherDuck ?

Oui, vous pouvez créer des intégrations distinctes pour chaque base de données MotherDuck dans votre compte.

***
