---
title: "Σύνδεσμος Snowflake"
description: "Πλήρης οδηγός ενσωμάτωσης Snowflake για συγχρονισμό αναλυτικών αποθήκης δεδομένων, τμημάτων πελατών και επιχειρηματικής ευφυΐας με το Brevo μέσω Tajo."
url: https://tajo.io/gr/docs/connectors/custom/snowflake/
markdown: https://tajo.io/gr/docs/connectors/custom/snowflake.md
lang: el-GR
robots: noindex
---

Ζητήστε πρώιμη πρόσβαση

Συμπληρώστε το μικρό σας όνομα και την επαγγελματική διεύθυνση email. Θα σας στείλουμε σύνδεσμο για να επιβεβαιώσετε το αίτημα πρόσβασης στο Tajo.

# Σύνδεσμος Snowflake

Κατάσταση συνδέσμου: Προγραμματισμένο Δεν έχει κατασκευαστεί ακόμη. Το Tajo δεν εκτελεί σήμερα αυτόν τον σύνδεσμο.

| Πεδίο πηγής | Πεδίο προορισμού | Ενδεικτική τιμή |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Συνδέστε το Snowflake με το Brevo μέσω Tajo για συγχρονισμό τμημάτων πελατών από την αποθήκη δεδομένων σας, εμπλουτισμό προφίλ επαφών με δεδομένα ανάλυσης και τροφοδότηση εξατομικευμένων καμπανιών marketing με πληροφορίες από την αποθήκη.

## Επισκόπηση

| Ιδιότητα | Τιμή |
| --- | --- |
| **Πλατφόρμα** | Snowflake |
| **Κατηγορία** | Αποθήκη Δεδομένων (Προσαρμοσμένο) |
| **Πολυπλοκότητα Ρύθμισης** | Μεσαία |
| **Επίσημη Ενσωμάτωση** | Όχι |
| **Δεδομένα που Συγχρονίζονται** | Πελάτες, Τμήματα, Αναλυτικά, Εκδηλώσεις |
| **Μέθοδος Πιστοποίησης** | Ζεύγος Κλειδιών / OAuth 2.0 |

## Χαρακτηριστικά

- **Reverse ETL** - Προώθηση τμημάτων πελατών από Snowflake σε λίστες επαφών Brevo
- **Συγχρονισμός κοινού** - Συγχρονισμός κοινών υπολογισμένων από αποθήκη για στοχευμένες καμπάνιες
- **Εμπλουτισμός αναλυτικών** - Εμπλουτισμός επαφών Brevo με υπολογισμένες μετρικές (LTV, βαθμολογίες RFM)
- **Ερωτήματα SQL** - Χρήση Snowflake SQL REST API για εκτέλεση ερωτημάτων μέσω προγράμματος
- **Προγραμματισμένος συγχρονισμός** - Εκτέλεση αυτοματοποιημένων pipelines δεδομένων σε ρυθμιζόμενα διαστήματα
- **Υποστήριξη πολλαπλών εντολών** - Εκτέλεση σύνθετων μετασχηματισμών δεδομένων σε μεμονωμένες κλήσεις API

## Προαπαιτούμενα

Πριν ξεκινήσετε, βεβαιωθείτε ότι διαθέτετε:

1. Λογαριασμό Snowflake με ρόλο ACCOUNTADMIN ή SYSADMIN
2. Λογαριασμό Brevo με πρόσβαση API
3. Λογαριασμό Tajo με δικαιώματα συνδέσμου
4. Αποκλειστική αποθήκη Snowflake για ερωτήματα ενσωμάτωσης
5. Πολιτική δικτύου που επιτρέπει τις διευθύνσεις IP Tajo

## Πιστοποίηση

### Πιστοποίηση Ζεύγους Κλειδιών (Συνιστάται)

```bash
# Generate RSA key pair
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub

# Assign public key to Snowflake user
# In Snowflake:
# ALTER USER tajo_integration SET RSA_PUBLIC_KEY='MII...';
```

### Πιστοποίηση OAuth 2.0

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

```bash
# Using JWT token with the SQL API
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"}'
```

## Διαμόρφωση

### Βασική Ρύθμιση

```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 * * *"  # Every 6 hours

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

### Αντιστοίχιση Πεδίων

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

## Endpoints API

| Endpoint | Μέθοδος | Περιγραφή |
| --- | --- | --- |
| `/api/v2/statements` | POST | Υποβολή εντολών SQL για εκτέλεση |
| `/api/v2/statements/{statementHandle}` | GET | Έλεγχος κατάστασης εκτέλεσης |
| `/api/v2/statements/{statementHandle}/cancel` | POST | Ακύρωση εκτελούμενης εντολής |
| `/api/v2/statements/{statementHandle}?partition={id}` | GET | Ανάκτηση τμημάτων αποτελέσματος |

Τμήματα SQL API

Το Snowflake SQL API επιστρέφει μεγάλα σύνολα αποτελεσμάτων σε τμήματα. Κάθε τμήμα περιέχει έως περίπου 12MB δεδομένων. Χρησιμοποιήστε την παράμετρο partition για επανάληψη μέσω αποτελεσμάτων.

## Παραδείγματα Κώδικα

### Αρχικοποίηση Συνδέσμου

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

```javascript
// Execute a SQL query via Snowflake SQL REST API
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;

// Poll for results
let status = result.statementStatusUrl;
while (result.code !== '090001') {
  const check = await fetch(status, {
    headers: { 'Authorization': `Bearer ${jwtToken}` }
  });
  result = await check.json();
}

// Sync to Brevo via Tajo
for (const row of result.data) {
  await tajo.contacts.sync({
    email: row[0],
    attributes: { SEGMENT: row[1], LTV: row[2] }
  });
}
```

### Pipeline Reverse ETL

```javascript
// Push computed audiences from Snowflake to Brevo lists
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'
    }
  }
});
```

## Όρια Ρυθμού

| Πόρος | Όριο | Σημειώσεις |
| --- | --- | --- |
| Ταυτόχρονα ερωτήματα SQL API | 20 ανά χρήστη | Ανά λογαριασμό Snowflake |
| Μέγεθος αποτελέσματος SQL API | 12MB ανά τμήμα | Σελιδοποίηση με IDs τμήματος |
| Λήξη εντολής | 172.800 δευτ. (48ώρ) | Ρυθμιζόμενο ανά ερώτημα |
| Αιτήματα API | Ποικίλει βάσει πλάνου | Βάσει έκδοσης Snowflake |

Κόστος Αποθήκης

Το Snowflake χρεώνει βάσει χρόνου υπολογισμού. Χρησιμοποιήστε αποκλειστική αποθήκη κατάλληλου μεγέθους για ερωτήματα Tajo και ορίστε αυτόματη αναστολή για ελαχιστοποίηση κόστους.

## Αντιμετώπιση Προβλημάτων

| Πρόβλημα | Αιτία | Λύση |
| --- | --- | --- |
| Αποτυχία πιστοποίησης | Ληγμένο JWT token | Αναγέννηση JWT με έγκυρη λήξη |
| Λήξη ερωτήματος | Μεγάλο σύνολο δεδομένων | Προσθέστε φίλτρα ή χρησιμοποιήστε σταδιακό συγχρονισμό |
| Σφάλμα δικτύου | Η IP δεν βρίσκεται στη whitelist | Προσθέστε IPs Tajo στην πολιτική δικτύου Snowflake |
| Λείπουν στήλες | Αλλαγή σχήματος | Ενημερώστε τη διαμόρφωση αντιστοίχησης πεδίων |
| Σφάλμα τμήματος | Το αποτέλεσμα είναι πολύ μεγάλο | Επεξεργαστείτε αποτελέσματα σε μικρότερα τμήματα |

### Λειτουργία Εντοπισμού Σφαλμάτων

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

## Βέλτιστες Πρακτικές

1. **Χρησιμοποιήστε αποκλειστική αποθήκη** - Αποφύγετε ανταγωνισμό με φόρτο εργασίας παραγωγής
2. **Εφαρμόστε σταδιακό συγχρονισμό** - Ερωτήστε μόνο τροποποιημένες εγγραφές από τον τελευταίο συγχρονισμό
3. **Ορίστε αυτόματη αναστολή** - Ρυθμίστε αποθήκη να αναστέλλεται μετά από 5 λεπτά αδράνειας
4. **Χρησιμοποιήστε πιστοποίηση ζεύγους κλειδιών** - Προτιμήστε ζεύγος κλειδιών έναντι πιστοποίησης με κωδικό
5. **Βελτιστοποιήστε ερωτήματα** - Φιλτράρετε και προβάλετε μόνο τις απαραίτητες στήλες για ταχύτερους συγχρονισμούς
6. **Παρακολουθήστε credits** - Παρακολουθήστε κατανάλωση credit Snowflake για ερωτήματα ενσωμάτωσης

## Ασφάλεια

- **Πιστοποίηση ζεύγους κλειδιών** - Κρυπτογράφηση RSA 2048-bit για πρόσβαση API
- **OAuth 2.0** - Πιστοποίηση βάσει token με εύρος ρόλου
- **Πολιτικές δικτύου** - Allowlisting IP για endpoints υπηρεσίας Tajo
- **Πρόσβαση βάσει ρόλου** - Αποκλειστικός ρόλος Snowflake με ελάχιστα απαιτούμενα δικαιώματα
- **Κρυπτογραφημένη μεταφορά δεδομένων** - TLS 1.2+ για όλες τις επικοινωνίες API
- **Απόκρυψη δεδομένων** - Χρήση Snowflake dynamic data masking για ευαίσθητα πεδία

## Σχετικοί Πόροι

- [Σύνδεσμος Segment](https://tajo.io/gr/docs/connectors/custom/segment)
- [Σύνδεσμος PostHog](https://tajo.io/gr/docs/connectors/custom/posthog)
- [Δεξιότητα Συγχρονισμού Πελατών](https://tajo.io/gr/docs/skills/data-sync/customer-sync)
- [Τεκμηρίωση SQL API Snowflake](https://docs.snowflake.com/en/developer-guide/sql-api/guide)
