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

# Amazon Redshift

> Amazon Redshift'ten OneSignal'e özel etkinlikleri senkronize edin ve kullanıcı davranışına dayalı otomatik Journey'ler ve kişiselleştirilmiş mesajlaşma kampanyaları tetikleyin.

export const PLATFORM_0 = "Amazon Redshift"

export const DATA_TYPE_0 = "columns"

export const COLUMN_HEADER_0 = "Redshift Column"

export const PROPERTIES_DESCRIPTION_0 = "JSON object with event details"

## Genel Bakış

OneSignal + Amazon Redshift entegrasyonu, Redshift veri ambarınızdan OneSignal'e özel etkinliklerin senkronize edilmesini sağlayarak kullanıcı davranışına dayalı otomatik mesajlaşma kampanyaları ve Journey'leri tetiklemenize olanak tanır.

Amazon Redshift, mevcut iş zekası araçlarınızı kullanarak büyük veri hacimlerini analiz etmenizi uygun maliyetli hale getiren, tam yönetimli, petabayt ölçeğinde bir veri ambarı hizmetidir.

***

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

### Amazon Redshift

* Ağ erişimi olan **Redshift kümesi**
* Uygun izinlere sahip **veritabanı kullanıcısı**
* Yapılandırılmış davranışsal veriler içeren **etkinlik tabloları**
* OneSignal'den Redshift kümenize **ağ bağlantısı**

***

## Kurulum

<Steps>
  <Step title="OneSignal için özel kullanıcı oluşturma">
    Uygun izinlere sahip özel bir kullanıcı hesabı oluşturun:

    ```sql theme={null}
    -- Create OneSignal user with strong password
    CREATE USER CENSUS WITH PASSWORD '<strong-unique-password>';

    -- Create private bookkeeping schema for sync state (skip if read-only mode)
    CREATE SCHEMA CENSUS;

    -- Grant full access to bookkeeping schema (skip if read-only mode)
    GRANT ALL ON SCHEMA CENSUS TO CENSUS;

    -- Ensure access to existing objects in bookkeeping schema (skip if read-only mode)
    GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA CENSUS TO CENSUS;
    ```
  </Step>

  <Step title="Etkinlik verilerine izin verme">
    Etkinlik verilerinizi içeren şemalara okuma erişimi sağlayın:

    ```sql theme={null}
    -- Grant schema access (repeat for each schema with event data)
    GRANT USAGE ON SCHEMA "<your_schema>" TO CENSUS;

    -- Grant read access to existing tables
    GRANT SELECT ON ALL TABLES IN SCHEMA "<your_schema>" TO CENSUS;

    -- Grant read access to future tables
    ALTER DEFAULT PRIVILEGES IN SCHEMA "<your_schema>" GRANT SELECT ON TABLES TO CENSUS;

    -- Grant execute permissions on functions
    GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA "<your_schema>" TO CENSUS;
    ALTER DEFAULT PRIVILEGES IN SCHEMA "<your_schema>" GRANT EXECUTE ON FUNCTIONS TO CENSUS;
    ```
  </Step>

  <Step title="Ağ erişimini yapılandırma">
    OneSignal'in IP adreslerini Redshift güvenlik gruplarınıza ekleyin. Redshift varsayılan olarak harici erişimi engeller.

    Bölgeniz için OneSignal'in IP adreslerini entegrasyon ayarlarında bulabilirsiniz. Daha fazla bilgi için AWS Redshift Yardım Merkezi'ni ziyaret edin.
  </Step>

  <Step title="OneSignal'e bağlanma">
    In OneSignal, go to **Data > Integrations** and click **Add Integration**.

    1. Listeden **Amazon Redshift**'i seçin
    2. Bağlantı ayrıntılarınızı girin:
       * **Host:** Redshift küme uç noktanız
       * **Port:** Genellikle 5439
       * **Database:** Veritabanı adınız
       * **Username:** `CENSUS`
       * **Password:** Oluşturduğunuz şifre
    3. Bağlantıyı test edin
    4. Hangi tabloların etkinlik verilerinizi içerdiğini yapılandırı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       |

### Örnek Etkinlik Tablosu Şeması

```sql theme={null}
-- Example Redshift event table
CREATE TABLE analytics.user_events (
    event_id BIGINT IDENTITY(1,1),
    event_name VARCHAR(100) NOT NULL,
    user_id VARCHAR(255) NOT NULL,
    event_timestamp TIMESTAMP DEFAULT GETDATE(),
    event_data SUPER,
    session_id VARCHAR(255),
    created_at TIMESTAMP DEFAULT GETDATE()
)
DISTKEY(user_id)
SORTKEY(event_timestamp);
```

### SQL Sorgu Modu

Etkinlik verilerinizi dönüştürmek için özel SQL sorguları yazın:

```sql theme={null}
-- Example: Recent high-value events
SELECT
    event_name,
    user_id,
    event_timestamp,
    event_data
FROM analytics.user_events
WHERE event_timestamp >= DATEADD(day, -7, GETDATE())
    AND JSON_EXTRACT_PATH_TEXT(event_data, 'value')::NUMERIC > 100
ORDER BY event_timestamp DESC;
```

***

## dbt Entegrasyonu

Redshift ile dbt kullanıyorsanız, her dbt çalıştırmasından sonra OneSignal'in erişimi koruduğundan emin olun:

### Seçenek 1: Ayrıntılı İzinler

Her model oluşturulduktan sonra erişim vermek için dbt projenize post-hook'lar ekleyin:

```sql theme={null}
-- In your dbt model
{{ config(
    post_hook="GRANT SELECT ON {{ this }} TO CENSUS"
) }}
```

### Seçenek 2: Varsayılan Ayrıcalıklar (Önerilen)

dbt üretim kullanıcınız için varsayılan izinler verin:

```sql theme={null}
-- Must be run by Redshift superuser
ALTER DEFAULT PRIVILEGES FOR USER "<your_dbt_run_user>"
IN SCHEMA "<your_dbt_target_schema>"
GRANT SELECT ON TABLES TO CENSUS;
```

***

## Gelişmiş Ağ Yapılandırması

### SSH Tüneli Kurulumu

Özel ağlardaki Redshift kümeleri için:

1. **SSH kullanıcısı oluşturma**: SSH ana bilgisayarınızda özel bir kullanıcı oluşturun
2. **Tüneli yapılandırma**: OneSignal entegrasyon ayarlarında "Use SSH Tunnel" seçeneğini etkinleştirin
3. **Anahtar çifti yükleme**: OneSignal'in genel anahtarını `~/.ssh/authorized_keys` dosyasına ekleyin
4. **Bağlantıyı test etme**: Tünel bağlantısını doğrulayın

### VPC Dağıtımı

AWS VPC içindeki Redshift için:

OneSignal, verimli toplu veri çıkarma için `UNLOAD` komutunu kullanır. VPC dağıtımları, Redshift'in S3 ile iletişim kurmasına izin vermek için bir **S3 VPC Uç Noktası** gerektirir.

**S3 VPC Uç Noktası Kurulumu:**

1. AWS Console'da VPC hizmetine gidin
2. S3 hizmeti için VPC Uç Noktası oluşturun
3. Redshift alt ağınızla ilişkilendirin
4. Yönlendirme tablolarını yapılandırın

***

## Performans Optimizasyonu

### Dağıtım ve Sıralama Anahtarları

Etkinlik tablolarınızı analitik iş yükleri için optimize edin:

```sql theme={null}
-- Distribute by user_id for user-centric queries
CREATE TABLE analytics.user_events (
    -- columns
)
DISTKEY(user_id)
SORTKEY(event_timestamp, event_name);
```

### Sütunsal Depolama

Analitik için Redshift'in sütunsal depolamasından yararlanın:

* **Sıkıştırma**: Redshift sütunları otomatik olarak sıkıştırır
* **Bölge Haritaları**: Sıralanmış verilerle sorgu performansını artırır
* **Sütun odaklı**: Etkinlik verileri üzerindeki analitik sorgular için verimlidir

***

## Sınırlamalar

* Birden fazla şema ayrı izin verilmesini gerektirir
* Çapraz şema tablolarına referans veren görünümler ek izinler gerektirir
* Karmaşık saklı yordam erişimi ek kurulum gerektirebilir
* VPC dağıtımları S3 VPC Uç Noktası yapılandırması gerektirir

***

## SSS

### OneSignal büyük etkinlik veri kümelerini nasıl işler?

OneSignal, büyük ölçekli analitik iş yükleri için optimize edilmiş, verimli toplu veri çıkarma için Redshift'in `UNLOAD` komutunu kullanır.

### Salt okunur modu kullanabilir miyim?

Evet, daha basit kurulum tercih ediyorsanız ve OneSignal'in tablo oluşturmasına izin veremiyorsanız, defter tutma şeması oluşturmayı atlayabilir ve salt okunur modu kullanabilirsiniz.

### dbt uyumluluğu ne durumda?

OneSignal, dbt çalıştırmalarından sonra izinlerin korunmasını sağlamak için özel dbt entegrasyon kalıpları sağlar. Kurulumunuza bağlı olarak post-hook'ları veya varsayılan ayrıcalıkları kullanın.
