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

# ClickHouse

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

export const DATA_TYPE_0 = "colunas da tabela de eventos"

export const PLATFORM_0 = "ClickHouse"

export const COLUMN_HEADER_0 = "Coluna ClickHouse"

export const PROPERTIES_DESCRIPTION_0 = "coluna JSON ou múltiplas colunas"

## Visão geral

A integração OneSignal + ClickHouse permite a sincronização automática de eventos personalizados do seu banco de dados analítico ClickHouse para o OneSignal. Isso permite que você acione Jornadas automatizadas e campanhas de mensagens personalizadas com base em dados comportamentais de usuários armazenados em seu banco de dados colunar de alta performance.

***

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

### ClickHouse

* **Servidor ClickHouse** (auto-hospedado ou em nuvem)
* **Credenciais de banco de dados** com acesso de leitura às tabelas de eventos
* **Tabelas de dados de eventos** contendo dados comportamentais com esquema apropriado

***

## Configuração

<Steps>
  <Step title="Criar usuário ClickHouse para o OneSignal">
    Crie uma conta de usuário dedicada para o OneSignal com acesso somente leitura às suas tabelas de eventos:

    ```sql theme={null}
    CREATE USER onesignal_reader IDENTIFIED BY 'strong_password';
    GRANT SELECT ON event_database.* TO onesignal_reader;
    ```
  </Step>

  <Step title="Configurar acesso de rede">
    Certifique-se de que o OneSignal possa se conectar à sua instância ClickHouse:

    * **Auto-hospedado**: Permita conexões dos endereços IP do OneSignal
    * **ClickHouse Cloud**: Adicione os IPs do OneSignal à sua lista de permissões
    * **Porta**: A porta padrão do ClickHouse é 8123 (HTTP) ou 9000 (nativo)
  </Step>

  <Step title="Adicionar integração no OneSignal">
    No OneSignal, vá para **Data > Integrations** e clique em **Add Integration**.

    Selecione **ClickHouse** e forneça:

    * **Host**: Nome do host ou IP do seu servidor ClickHouse
    * **Port**: Porta do ClickHouse (padrão: 8123 para HTTP, 9000 para nativo)
    * **Database**: Nome do banco de dados contendo as tabelas de eventos
    * **Username**: `onesignal_reader` (ou o nome de usuário escolhido)
    * **Password**: Senha para o usuário ClickHouse
    * **Protocol**: HTTP ou Native (HTTP recomendado para simplicidade)
  </Step>

  <Step title="Configurar fonte de dados de eventos">
    Especifique a tabela ClickHouse contendo seus dados de eventos:

    * **Table**: Nome da tabela contendo registros de eventos (por exemplo, `user_events`)
    * **Event Query**: Consulta SQL opcional para filtrar ou transformar dados de eventos

    Sua tabela de eventos deve conter colunas para:

    * Nome/tipo do evento (String)
    * Identificador do usuário (String)
    * Timestamp do evento (DateTime)
    * Propriedades adicionais do evento (JSON ou colunas individuais)
  </Step>

  <Step title="Testar a conexão">
    Clique em **Test Connection** para verificar se o OneSignal pode acessar seu banco de dados ClickHouse e ler dados de eventos.
  </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         |

***

## Configuração avançada

### Consultas SQL personalizadas

Use SQL personalizado para filtrar ou transformar dados de eventos antes de sincronizar com o OneSignal:

```sql theme={null}
SELECT
  event_name,
  user_id,
  toDateTime(event_timestamp) as timestamp,
  toJSONString(
    map(
      'product_id', product_id,
      'purchase_amount', purchase_amount,
      'category', category
    )
  ) as payload
FROM user_events
WHERE event_timestamp >= now() - INTERVAL 7 DAY
  AND event_name IN ('purchase', 'signup', 'upgrade')
ORDER BY event_timestamp DESC
```

### Otimização de performance

O ClickHouse é otimizado para consultas analíticas. Considere:

* **Particionamento**: Use particionamento baseado em data no timestamp do evento
* **Indexação**: Crie índices apropriados em user\_id e event\_name
* **Visões materializadas**: Pré-agregue dados de eventos para consultas mais rápidas

<Warning>
  O ClickHouse é otimizado para cargas de trabalho somente anexar. Certifique-se de que seus dados de eventos sigam esse padrão para melhor performance.
</Warning>

***

## FAQ

### Com que frequência o OneSignal sincroniza eventos do ClickHouse?

O OneSignal sincroniza dados de eventos com base no seu cronograma configurado, com um intervalo mínimo de 15 minutos.

### Posso sincronizar eventos de múltiplas tabelas ClickHouse?

Sim, você pode criar múltiplas integrações para diferentes tabelas ou usar consultas UNION para combinar dados de múltiplas tabelas.
