Snowflake konnektor

Csatlakoztasd a Snowflake-et a Brevóhoz a Tajo segítségével, hogy szinkronizáld az ügyfélszegmenseket az adattárházadból, gazdagítsd a kapcsolatprofilokat analitikai adatokkal, és adattárház alapú insightokkal táplált személyre szabott marketingkampányokat futtass.

Áttekintés

TulajdonságÉrték
PlatformSnowflake
KategóriaAdattárház (Egyéni)
Telepítés bonyolultságaKözepes
Hivatalos integrációNem
Szinkronizált adatokÜgyfelek, Szegmensek, Analitika, Események
Hitelesítési módszerKulcspár / OAuth 2.0

Funkciók

  • Fordított ETL – Ügyfélszegmensek küldése a Snowflake-ből Brevo kapcsolatlistákba
  • Közönség-szinkronizáció – Adattárházban számított közönségek szinkronizálása célzott kampányokhoz
  • Analitika-gazdagítás – Brevo kapcsolatok gazdagítása számított mutatókkal (LTV, RFM pontszámok)
  • SQL alapú lekérdezések – A Snowflake SQL REST API használata lekérdezések programozott végrehajtásához
  • Ütemezett szinkronizáció – Automatizált adatcsővezetékek futtatása konfigurálható időközönként
  • Több utasítás támogatása – Összetett adatátalakítások végrehajtása egyetlen API hívásban

Előfeltételek

Mielőtt elkezdenéd, győződj meg róla, hogy rendelkezel:

  1. Egy Snowflake fiókkal ACCOUNTADMIN vagy SYSADMIN szerepkörrel
  2. Egy Brevo fiókkal API-hozzáféréssel
  3. Egy Tajo fiókkal konnektor engedélyekkel
  4. Egy dedikált Snowflake adattárházzal az integráció lekérdezéseihez
  5. Hálózati szabályzattal, amely engedélyezi a Tajo IP-címeket

Hitelesítés

Kulcspár hitelesítés (Ajánlott)

Terminal window
# 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 hitelesítés

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 hitelesítés

Terminal window
# 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"}'

Konfiguráció

Alapbeállítás

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

Mezőleképezés

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 végpontok

VégpontMódszerLeírás
/api/v2/statementsPOSTSQL utasítások beküldése végrehajtásra
/api/v2/statements/{statementHandle}GETVégrehajtási státusz ellenőrzése
/api/v2/statements/{statementHandle}/cancelPOSTFutó utasítás megszakítása
/api/v2/statements/{statementHandle}?partition={id}GETEredmény-partíciók lekérése

SQL API partíciók

A Snowflake SQL API nagy eredménykészleteket partíciókban adja vissza. Minden partíció körülbelül 12 MB adatot tartalmaz. Használd a partition paramétert az eredmények bejárásához.

Kódpéldák

A konnektor inicializálása

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'
});

Ügyfélszegmensek szinkronizálása SQL API-n keresztül

// 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] }
});
}

Fordított ETL csővezeték

// 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'
}
}
});

Ráta-korlátok

ErőforrásKorlátMegjegyzések
SQL API párhuzamos lekérdezések20 felhasználónkéntSnowflake fiókonként
SQL API eredmény mérete12 MB/partícióOldalazás partíció azonosítókkal
Utasítás időtúllépés172 800 mp (48 óra)Lekérdezésenként konfigurálható
API kérésekTerv szerint változóSnowflake kiadástól függően

Adattárház-költségek

A Snowflake számítási idő alapján számol fel díjat. Használj dedikált, megfelelően méretezett adattárházat a Tajo lekérdezésekhez, és állíts be automatikus felfüggesztést a költségek minimalizálásához.

Hibaelhárítás

ProblémaOkMegoldás
Hitelesítés sikertelenLejárt JWT tokenGeneráld újra a JWT tokent érvényes lejárati idővel
Lekérdezési időtúllépésNagy adatkészletAdj hozzá szűrőket vagy használj növekményes szinkronizálást
Hálózati hibaIP nincs fehérlistánAdd hozzá a Tajo IP-ket a Snowflake hálózati szabályzathoz
Hiányzó oszlopokSémaváltozásFrissítsd a mezőleképezés konfigurációt
Partíciós hibaEredmény túl nagyDolgozd fel az eredményeket kisebb partíciókban

Hibakeresési mód

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

Legjobb gyakorlatok

  1. Használj dedikált adattárházat – Kerüld a versenyhelyzetet az éles munkaterhelésekkel
  2. Implementálj növekményes szinkronizálást – Csak az utolsó szinkronizálás óta megváltozott rekordokat kérdezd le
  3. Állíts be automatikus felfüggesztést – Konfiguráld az adattárházat, hogy 5 perc tétlenség után felfüggessze magát
  4. Használj kulcspár hitelesítést – A kulcspárt részesítsd előnyben a jelszavas hitelesítéssel szemben
  5. Optimalizáld a lekérdezéseket – Csak a szükséges oszlopokat szűrd és vetítsd ki a gyorsabb szinkronizáláshoz
  6. Figyeld a krediteket – Kövesd a Snowflake kredit-fogyasztást az integrációs lekérdezéseknél

Biztonság

  • Kulcspár hitelesítés – RSA 2048 bites titkosítás az API-hozzáféréshez
  • OAuth 2.0 – Token alapú hitelesítés szerepkör-hatókörrel
  • Hálózati szabályzatok – IP engedélyezési lista a Tajo szolgáltatásvégpontokhoz
  • Szerepkör alapú hozzáférés – Dedikált Snowflake szerepkör minimálisan szükséges jogosultságokkal
  • Titkosított adatátvitel – TLS 1.2+ minden API kommunikációhoz
  • Adatmaszkolás – Snowflake dinamikus adatmaszkolás használata érzékeny mezőkhöz

Kapcsolódó források

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AI asszisztens

Szia! Kérdezz bármit a dokumentációról.