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

> Kullanıcı davranışına dayalı otomatik Journey'leri ve kişiselleştirilmiş mesajlaşma kampanyalarını tetiklemek için ClickHouse'tan OneSignal'a özel olayları senkronize edin.

export const PLATFORM_0 = "ClickHouse"

export const DATA_TYPE_0 = "olay tablo sütunları"

export const COLUMN_HEADER_0 = "ClickHouse Sütunu"

export const PROPERTIES_DESCRIPTION_0 = "JSON sütunu veya birden fazla sütun"

## Genel Bakış

OneSignal + ClickHouse entegrasyonu, ClickHouse analitik veritabanınızdan OneSignal'a özel olayların otomatik senkronizasyonunu sağlar. Bu, yüksek performanslı sütunlu veritabanınızda depolanan kullanıcı davranışsal verilerine dayalı olarak otomatik Journey'leri ve kişiselleştirilmiş mesajlaşma kampanyalarını tetiklemenize olanak tanır.

***

## Gereksinimler

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

### ClickHouse

* **ClickHouse sunucusu** (kendi barındırılan veya bulut)
* Olay tablolarına okuma erişimi olan **Veritabanı kimlik bilgileri**
* Uygun şema ile davranışsal veriler içeren **Olay veri tabloları**

***

## Kurulum

<Steps>
  <Step title="OneSignal için ClickHouse kullanıcısı oluşturun">
    Olay tablolarınıza salt okunur erişimi olan OneSignal için özel bir kullanıcı hesabı oluşturun:

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

  <Step title="Ağ erişimini yapılandırın">
    OneSignal'ın ClickHouse örneğinize bağlanabildiğinden emin olun:

    * **Kendi barındırılan**: OneSignal'ın IP adreslerinden bağlantılara izin verin
    * **ClickHouse Cloud**: OneSignal IP'lerini izin listenize ekleyin
    * **Port**: Varsayılan ClickHouse portu 8123 (HTTP) veya 9000 (yerel)
  </Step>

  <Step title="OneSignal'da entegrasyon ekleyin">
    In OneSignal, go to **Data > Integrations** and click **Add Integration**.

    **ClickHouse**'u seçin ve şunları sağlayın:

    * **Host**: ClickHouse sunucunuzun ana bilgisayar adı veya IP'si
    * **Port**: ClickHouse portu (varsayılan: HTTP için 8123, yerel için 9000)
    * **Database**: Olay tablolarını içeren veritabanı adı
    * **Username**: `onesignal_reader` (veya seçtiğiniz kullanıcı adı)
    * **Password**: ClickHouse kullanıcısı için şifre
    * **Protocol**: HTTP veya Yerel (basitlik için HTTP önerilir)
  </Step>

  <Step title="Olay veri kaynağını yapılandırın">
    Olay verilerinizi içeren ClickHouse tablosunu belirtin:

    * **Table**: Olay kayıtlarını içeren tablo adı (örn., `user_events`)
    * **Event Query**: Olay verilerini filtrelemek veya dönüştürmek için isteğe bağlı SQL sorgusu

    Olay tablonuz şunlar için sütunlar içermelidir:

    * Olay adı/türü (String)
    * Kullanıcı tanımlayıcısı (String)
    * Olay zaman damgası (DateTime)
    * Ek olay özellikleri (JSON veya bireysel sütunlar)
  </Step>

  <Step title="Bağlantıyı test edin">
    OneSignal'ın ClickHouse veritabanınıza erişebileceğini ve olay verilerini okuyabileceğini doğrulamak için **Bağlantıyı Test Et**'e tıklayın.
  </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       |

***

## Gelişmiş Yapılandırma

### Özel SQL Sorguları

OneSignal'a senkronize etmeden önce olay verilerini filtrelemek veya dönüştürmek için özel SQL kullanın:

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

### Performans Optimizasyonu

ClickHouse analitik sorgular için optimize edilmiştir. Şunları düşünün:

* **Bölümleme**: Olay zaman damgasında tarih tabanlı bölümleme kullanın
* **İndeksleme**: user\_id ve event\_name üzerinde uygun indeksler oluşturun
* **Materyalize Görünümler**: Daha hızlı sorgulama için olay verilerini önceden toplayın

<Warning>
  ClickHouse yalnızca ekleme iş yükleri için optimize edilmiştir. En iyi performans için olay verilerinizin bu modeli izlediğinden emin olun.
</Warning>

***

## SSS

### OneSignal ClickHouse'tan olayları ne sıklıkta senkronize eder?

OneSignal, minimum 15 dakikalık aralıklarla yapılandırdığınız programa göre olay verilerini senkronize eder.

### Birden fazla ClickHouse tablosundan olay senkronize edebilir miyim?

Evet, farklı tablolar için birden fazla entegrasyon oluşturabilir veya birden fazla tablodan veri birleştirmek için UNION sorguları kullanabilirsiniz.
