---
title: "Snowflake Bağlayıcısı"
description: "Veri ambarı analitiklerini, müşteri segmentlerini ve iş zekasını Tajo üzerinden Brevo ile senkronize etmek için eksiksiz Snowflake entegrasyon kılavuzu."
url: https://tajo.io/tr/docs/connectors/custom/snowflake/
markdown: https://tajo.io/tr/docs/connectors/custom/snowflake.md
lang: tr-TR
robots: noindex
---

Erken erişim talep edin

Adınızı ve iş e-posta adresinizi girin. Tajo erişim talebinizi onaylamanız için size bir bağlantı göndereceğiz.

# Snowflake Bağlayıcısı

Bağlayıcı durumu: Planlandı Henüz oluşturulmadı. Tajo bu bağlayıcıyı bugün çalıştırmıyor.

| Kaynak alanı | Hedef alanı | Örnek değer |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Veri ambarınızdan müşteri segmentlerini senkronize etmek, kişi profillerini analitik verilerle zenginleştirmek ve ambar odaklı öngörülerle kişiselleştirilmiş pazarlama kampanyalarına güç katmak için Snowflake’i Tajo üzerinden Brevo’ya bağlayın.

## Genel Bakış

| Özellik | Değer |
| --- | --- |
| **Platform** | Snowflake |
| **Kategori** | Veri Ambarı (Özel) |
| **Kurulum Karmaşıklığı** | Orta |
| **Resmi Entegrasyon** | Hayır |
| **Senkronize Edilen Veri** | Müşteriler, Segmentler, Analitik, Olaylar |
| **Kimlik Doğrulama Yöntemi** | Anahtar Çifti / OAuth 2.0 |

## Özellikler

- **Ters ETL** - Snowflake’ten müşteri segmentlerini Brevo kişi listelerine aktarın
- **Kitle senkronizasyonu** - Hedefli kampanyalar için ambar tarafından hesaplanan kitleleri senkronize edin
- **Analitik zenginleştirme** - Brevo kişilerini hesaplanmış metriklerle (LTV, RFM puanları) zenginleştirin
- **SQL tabanlı sorgular** - Programatik olarak sorgu çalıştırmak için Snowflake SQL REST API’sini kullanın
- **Planlı senkronizasyon** - Yapılandırılabilir aralıklarla otomatik veri hatları çalıştırın
- **Çoklu ifade desteği** - Tek API çağrılarında karmaşık veri dönüşümleri yürütün

## Ön Koşullar

Başlamadan önce şunlara sahip olduğunuzdan emin olun:

1. ACCOUNTADMIN veya SYSADMIN rolüne sahip bir Snowflake hesabı
2. API erişimi olan bir Brevo hesabı
3. Bağlayıcı izinlerine sahip bir Tajo hesabı
4. Entegrasyon sorguları için adanmış bir Snowflake ambarı
5. Tajo IP adreslerine izin veren bir ağ politikası

## Kimlik Doğrulama

### Anahtar Çifti Kimlik Doğrulaması (Önerilen)

```bash
# RSA anahtar çifti oluşturun
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub

# Genel anahtarı Snowflake kullanıcısına atayın
# Snowflake'te:
# ALTER USER tajo_integration SET RSA_PUBLIC_KEY='MII...';
```

### OAuth 2.0 Kimlik Doğrulaması

```javascript
const tokenResponse = await fetch(
  'https://<account>.snowflakecomputing.com/oauth/token-request',
  {
    method: 'POST',
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
    body: new URLSearchParams({
      grant_type: 'client_credentials',
      client_id: process.env.SNOWFLAKE_CLIENT_ID,
      client_secret: process.env.SNOWFLAKE_CLIENT_SECRET,
      scope: 'session:role:TAJO_ROLE'
    })
  }
);
```

### SQL API Kimlik Doğrulaması

```bash
# SQL API ile JWT belirteci kullanma
curl -X POST \
  'https://<account>.snowflakecomputing.com/api/v2/statements' \
  -H 'Authorization: Bearer <jwt_token>' \
  -H 'Content-Type: application/json' \
  -H 'X-Snowflake-Authorization-Token-Type: KEYPAIR_JWT' \
  -d '{"statement": "SELECT * FROM customers LIMIT 10", "warehouse": "TAJO_WH"}'
```

## Yapılandırma

### Temel Kurulum

```yaml
connectors:
  snowflake:
    enabled: true
    account: "your-account.snowflakecomputing.com"
    warehouse: "TAJO_WH"
    database: "MARKETING_DB"
    schema: "PUBLIC"
    role: "TAJO_ROLE"

    sync:
      customers: true
      segments: true
      analytics: true
      schedule: "0 */6 * * *"  # Her 6 saatte bir

    queries:
      customer_segments: |
        SELECT email, segment_name, ltv_score, rfm_class
        FROM customer_segments
        WHERE updated_at > :last_sync
```

### Alan Eşleştirme

```yaml
field_mapping:
  email: email
  first_name: FIRSTNAME
  last_name: LASTNAME
  ltv_score: LTV_SCORE
  rfm_class: RFM_SEGMENT
  total_orders: ORDER_COUNT
  last_purchase_date: LAST_ORDER_DATE
  predicted_churn: CHURN_RISK
  customer_segment: SEGMENT_NAME
```

## API Uç Noktaları

| Uç Nokta | Yöntem | Açıklama |
| --- | --- | --- |
| `/api/v2/statements` | POST | Yürütme için SQL ifadeleri gönder |
| `/api/v2/statements/{statementHandle}` | GET | Yürütme durumunu kontrol et |
| `/api/v2/statements/{statementHandle}/cancel` | POST | Çalışan bir ifadeyi iptal et |
| `/api/v2/statements/{statementHandle}?partition={id}` | GET | Sonuç bölümlerini al |

SQL API Bölümleri

Snowflake SQL API büyük sonuç kümelerini bölümler halinde döndürür. Her bölüm yaklaşık 12MB’a kadar veri içerir. Sonuçlar arasında yinelemek için partition parametresini kullanın.

## Kod Örnekleri

### Bağlayıcıyı Başlatma

```javascript
import { TajoClient } from '@tajo/sdk';

const tajo = new TajoClient({
  apiKey: process.env.TAJO_API_KEY,
  brevoApiKey: process.env.BREVO_API_KEY
});

await tajo.connectors.connect('snowflake', {
  account: process.env.SNOWFLAKE_ACCOUNT,
  privateKey: process.env.SNOWFLAKE_PRIVATE_KEY,
  warehouse: 'TAJO_WH',
  database: 'MARKETING_DB',
  schema: 'PUBLIC'
});
```

### SQL API ile Müşteri Segmentlerini Senkronize Etme

```javascript
// Snowflake SQL REST API aracılığıyla bir SQL sorgusu yürüt
const response = await fetch(
  `https://${account}.snowflakecomputing.com/api/v2/statements`,
  {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${jwtToken}`,
      'Content-Type': 'application/json',
      'X-Snowflake-Authorization-Token-Type': 'KEYPAIR_JWT'
    },
    body: JSON.stringify({
      statement: `SELECT email, segment, ltv FROM customer_segments
                  WHERE updated_at > '${lastSync}'`,
      warehouse: 'TAJO_WH',
      database: 'MARKETING_DB',
      schema: 'PUBLIC',
      timeout: 120
    })
  }
);

const result = await response.json();
const statementHandle = result.statementHandle;

// Sonuçları yoklamayla kontrol et
let status = result.statementStatusUrl;
while (result.code !== '090001') {
  const check = await fetch(status, {
    headers: { 'Authorization': `Bearer ${jwtToken}` }
  });
  result = await check.json();
}

// Tajo aracılığıyla Brevo'ya senkronize et
for (const row of result.data) {
  await tajo.contacts.sync({
    email: row[0],
    attributes: { SEGMENT: row[1], LTV: row[2] }
  });
}
```

### Ters ETL Hattı

```javascript
// Snowflake'ten hesaplanmış kitleleri Brevo listelerine aktar
await tajo.connectors.sync('snowflake', {
  type: 'reverse-etl',
  query: `
    SELECT email, first_name, last_name, predicted_ltv, churn_score
    FROM ml_predictions.customer_scores
    WHERE score_date = CURRENT_DATE()
  `,
  destination: {
    list_id: 42,
    attribute_mapping: {
      predicted_ltv: 'PREDICTED_LTV',
      churn_score: 'CHURN_SCORE'
    }
  }
});
```

## Hız Sınırları

| Kaynak | Sınır | Notlar |
| --- | --- | --- |
| SQL API eşzamanlı sorgular | Kullanıcı başına 20 | Snowflake hesabı başına |
| SQL API sonuç boyutu | Bölüm başına 12MB | Bölüm kimlikleriyle sayfalayın |
| İfade zaman aşımı | 172.800 sn (48 s) | Sorgu başına yapılandırılabilir |
| API istekleri | Plana göre değişir | Snowflake sürümüne göre |

Ambar Maliyetleri

Snowflake işlem süresine göre ücretlendirir. Tajo sorguları için adanmış, uygun boyutlu bir ambar kullanın ve maliyetleri en aza indirmek için otomatik askıya alma ayarlayın.

## Sorun Giderme

| Sorun | Neden | Çözüm |
| --- | --- | --- |
| Kimlik doğrulama başarısız | Süresi dolmuş JWT belirteci | Geçerli son kullanma tarihiyle JWT’yi yeniden oluşturun |
| Sorgu zaman aşımı | Büyük veri kümesi | Filtre ekleyin veya artımlı senkronizasyon kullanın |
| Ağ hatası | IP izin listesinde yok | Tajo IP’lerini Snowflake ağ politikasına ekleyin |
| Eksik sütunlar | Şema değişikliği | Alan eşleştirme yapılandırmasını güncelleyin |
| Bölüm hatası | Sonuç çok büyük | Sonuçları daha küçük bölümlerde işleyin |

### Hata Ayıklama Modu

```yaml
connectors:
  snowflake:
    debug: true
    log_level: verbose
    log_queries: true
```

## En İyi Uygulamalar

1. **Adanmış bir ambar kullanın** - Üretim iş yükleriyle çekişmeyi önleyin
2. **Artımlı senkronizasyon uygulayın** - Yalnızca son senkronizasyondan bu yana değişen kayıtları sorgulayın
3. **Otomatik askıya almayı ayarlayın** - Ambarı 5 dakikalık inaktiflik sonrası askıya alacak şekilde yapılandırın
4. **Anahtar çifti kimlik doğrulamasını kullanın** - Parola kimlik doğrulamasına göre anahtar çiftini tercih edin
5. **Sorguları optimize edin** - Daha hızlı senkronizasyon için yalnızca gerekli sütunları filtreleyin ve seçin
6. **Kredileri izleyin** - Entegrasyon sorguları için Snowflake kredi tüketimini takip edin

## Güvenlik

- **Anahtar çifti kimlik doğrulaması** - API erişimi için RSA 2048-bit şifreleme
- **OAuth 2.0** - Rol kapsamlı belirteç tabanlı kimlik doğrulama
- **Ağ politikaları** - Tajo hizmet uç noktaları için IP izin verme
- **Rol tabanlı erişim** - Minimum gerekli ayrıcalıklarla adanmış Snowflake rolü
- **Şifrelenmiş veri aktarımı** - Tüm API iletişimleri için TLS 1.2+
- **Veri maskeleme** - Hassas alanlar için Snowflake dinamik veri maskeleme kullanın

## İlgili Kaynaklar

- [Segment Bağlayıcısı](https://tajo.io/tr/docs/connectors/custom/segment)
- [PostHog Bağlayıcısı](https://tajo.io/tr/docs/connectors/custom/posthog)
- [Müşteri Senkronizasyonu Yeteneği](https://tajo.io/tr/docs/skills/data-sync/customer-sync)
- [Snowflake SQL API Belgeleri](https://docs.snowflake.com/en/developer-guide/sql-api/guide)
