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

> Sincronize eventos personalizados do MotherDuck para o OneSignal para acionar Journeys automatizadas e campanhas de mensagens personalizadas com base no comportamento do usuário.

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"

## Visão geral

A integração OneSignal + MotherDuck permite a sincronização automática de eventos personalizados dos seus bancos de dados MotherDuck para o OneSignal para acionar campanhas de mensagens automatizadas e Journeys com base no comportamento do usuário.

MotherDuck é um serviço DuckDB-na-nuvem que fornece capacidades OLAP (Processamento Analítico Online) rápidas com a simplicidade do SQL.

***

## Requisitos

* Acesso a [Event Streams](/docs/pt-BR/event-streams) para eventos de mensagem de saída (Limitações de plano e excedentes se aplicam)
* Acesso a [Custom Events](/docs/pt-BR/custom-events) para sincronização de eventos de entrada (Limitações de plano e excedentes se aplicam)
* [Plano de Conta Atualizado](https://onesignal.com/pricing) (não disponível em apps gratuitos)

### MotherDuck

* **Conta MotherDuck** com acesso ao banco de dados
* **Token de serviço** para autenticação
* **Banco de dados** contendo dados de eventos
* **Tabelas ou visualizações** com informações de eventos estruturadas

***

## Configuração

<Steps>
  <Step title="Criar token de serviço MotherDuck">
    Gere um token de acesso para o OneSignal se conectar ao MotherDuck:

    1. Faça login na Interface Web do MotherDuck em `app.motherduck.com`
    2. Clique em seu perfil no canto superior esquerdo
    3. Navegue até **Settings** > **General** > **Access Tokens**
    4. Clique em **Create Token**
    5. Defina a data de expiração (ou deixe ilimitado)
    6. Copie o token de serviço gerado
  </Step>

  <Step title="Preparar seus dados de eventos">
    Certifique-se de que seu banco de dados MotherDuck contenha tabelas de eventos adequadamente estruturadas:

    ```sql theme={null}
    -- Example event table structure
    CREATE TABLE user_events (
        event_name VARCHAR,
        user_id VARCHAR,
        event_timestamp TIMESTAMP,
        event_properties JSON,
        session_id VARCHAR
    );
    ```
  </Step>

  <Step title="Conectar ao OneSignal">
    No OneSignal, vá para **Data > Integrations** e clique em **Add Integration**.

    Selecione **MotherDuck** e forneça:

    * **Service Token:** Token do Passo 1
    * **Database Name:** Nome do seu banco de dados MotherDuck
    * **Connection String:** `md:your_database_name`
  </Step>

  <Step title="Configurar sincronização de dados">
    Selecione as tabelas ou escreva consultas SQL personalizadas para definir quais dados de eventos sincronizar:

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

***

### Mapeamento de dados de evento

Mapeie seu {DATA_TYPE_0} {PLATFORM_0} para o formato de eventos personalizados do OneSignal:

| Campo OneSignal | {COLUMN_HEADER_0} | Descrição                  | Obrigatório |
| --------------- | ----------------- | -------------------------- | ----------- |
| `name`          | `event_name`      | Identificador de evento    | Sim         |
| `external_id`   | `user_id`         | Identificador de usuário   | Sim         |
| `timestamp`     | `event_timestamp` | Quando o evento ocorreu    | Não         |
| `properties`    | `event_data`      | {PROPERTIES_DESCRIPTION_0} | Não         |

### Exemplo de Consulta de Evento

```sql theme={null}
-- Optimized event query for OneSignal sync
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
```

***

## Modos de Processamento

### Modo de Tabela

Sincronize tabelas inteiras diretamente do seu banco de dados MotherDuck. O OneSignal mapeará automaticamente as colunas para campos de evento.

### Modo de Consulta SQL

Escreva consultas SQL DuckDB personalizadas para transformar e filtrar seus dados de eventos:

```sql theme={null}
-- Advanced event aggregation
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)
```

***

## Limitações

* A complexidade da consulta afeta o desempenho de sincronização
* Conjuntos de resultados grandes podem impactar a velocidade de sincronização
* A análise JSON requer tipagem adequada de coluna

***

## FAQ

### Como otimizo o desempenho de consulta no MotherDuck?

Use as vantagens de armazenamento colunar do DuckDB selecionando apenas as colunas necessárias e aplicando filtros no início de suas consultas.

### Posso sincronizar de múltiplos bancos de dados MotherDuck?

Sim, você pode criar integrações separadas para cada banco de dados MotherDuck em sua conta.

***
