Snowflake کنیکٹر

اپنے ڈیٹا ویئر ہاؤس سے گاہک سیگمنٹس سنک کرنے، اینالیٹکس ڈیٹا کے ساتھ رابطہ پروفائلز کو افزودہ کرنے، اور ویئر ہاؤس سے چلنے والی بصیرتوں کے ساتھ ذاتی نوعیت کی مارکیٹنگ مہمات کو طاقت دینے کے لیے Tajo کے ذریعے Snowflake کو Brevo سے منسلک کریں۔

جائزہ

خاصیتقدر
پلیٹ فارمSnowflake
زمرہڈیٹا ویئر ہاؤس (کسٹم)
سیٹ اپ کی پیچیدگیدرمیانی
آفیشل انٹیگریشننہیں
سنک شدہ ڈیٹاگاہک، سیگمنٹس، اینالیٹکس، ایونٹس
تصدیق کا طریقہKey Pair / OAuth 2.0

خصوصیات

  • Reverse ETL - Snowflake سے گاہک سیگمنٹس کو Brevo رابطہ فہرستوں پر دھکیلیں
  • آڈیئنس سنک - ٹارگٹڈ مہمات کے لیے ویئر ہاؤس سے تیار شدہ آڈیئنسز سنک کریں
  • اینالیٹکس افزودگی - حساب شدہ میٹرکس (LTV, RFM اسکورز) کے ساتھ Brevo رابطوں کو افزودہ کریں
  • SQL پر مبنی کوئریز - پروگرامی طور پر کوئریز انجام دینے کے لیے Snowflake SQL REST API استعمال کریں
  • شیڈولڈ سنک - قابل ترتیب وقفوں پر خودکار ڈیٹا پائپ لائنز چلائیں
  • ملٹی اسٹیٹمنٹ سپورٹ - ایک ہی API کالز میں پیچیدہ ڈیٹا تبدیلیاں انجام دیں

شرائط

شروع کرنے سے پہلے، یقینی بنائیں کہ آپ کے پاس ہے:

  1. ACCOUNTADMIN یا SYSADMIN رول کے ساتھ Snowflake اکاؤنٹ
  2. API رسائی کے ساتھ Brevo اکاؤنٹ
  3. کنیکٹر اجازتوں کے ساتھ Tajo اکاؤنٹ
  4. انٹیگریشن کوئریز کے لیے ایک مخصوص Snowflake ویئر ہاؤس
  5. Tajo IP پتوں کی اجازت دینے والی نیٹ ورک پالیسی

تصدیق

Key Pair تصدیق (تجویز کردہ)

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 تصدیق

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 تصدیق

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"}'

تشکیل

بنیادی سیٹ اپ

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

فیلڈ میپنگ

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 اینڈ پوائنٹس

اینڈ پوائنٹطریقہتفصیل
/api/v2/statementsPOSTعمل درآمد کے لیے SQL اسٹیٹمنٹس جمع کرائیں
/api/v2/statements/{statementHandle}GETعمل درآمد کی حیثیت چیک کریں
/api/v2/statements/{statementHandle}/cancelPOSTچلتی اسٹیٹمنٹ کو منسوخ کریں
/api/v2/statements/{statementHandle}?partition={id}GETنتیجہ پارٹیشنز حاصل کریں

SQL API پارٹیشنز

Snowflake SQL API بڑے نتیجہ سیٹس کو پارٹیشنز میں واپس کرتا ہے۔ ہر پارٹیشن میں تقریباً 12MB تک ڈیٹا ہوتا ہے۔ نتائج کے ذریعے دہرانے کے لیے partition پیرامیٹر استعمال کریں۔

کوڈ کی مثالیں

کنیکٹر کو انیشیلائز کریں

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 کے ذریعے گاہک سیگمنٹس سنک کریں

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

Reverse ETL پائپ لائن

// 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 ٹوکندرست میعاد ختم ہونے کے ساتھ JWT دوبارہ بنائیں
کوئری ٹائم آؤٹبڑا ڈیٹا سیٹفلٹرز شامل کریں یا انکریمنٹل سنک استعمال کریں
نیٹ ورک کی غلطیIP وائٹ لسٹ نہیںSnowflake نیٹ ورک پالیسی میں Tajo IPs شامل کریں
غائب کالمزاسکیما تبدیلیفیلڈ میپنگ تشکیل اپ ڈیٹ کریں
پارٹیشن کی غلطینتیجہ بہت بڑاچھوٹے پارٹیشنز میں نتائج پروسیس کریں

ڈیبگ موڈ

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

بہترین طرز عمل

  1. مخصوص ویئر ہاؤس استعمال کریں - پروڈکشن ورک لوڈز کے ساتھ تنازعہ سے بچیں
  2. انکریمنٹل سنک نافذ کریں - آخری سنک کے بعد صرف تبدیل شدہ ریکارڈز کوئری کریں
  3. آٹو سسپنڈ سیٹ کریں - 5 منٹ کی غیر فعالیت کے بعد ویئر ہاؤس کو سسپنڈ کرنے کے لیے ترتیب دیں
  4. Key pair auth استعمال کریں - پاس ورڈ تصدیق پر key pair کو ترجیح دیں
  5. کوئریز کو بہتر بنائیں - تیز سنک کے لیے صرف ضروری کالمز فلٹر اور پروجیکٹ کریں
  6. کریڈٹس کی نگرانی کریں - انٹیگریشن کوئریز کے لیے Snowflake کریڈٹ کھپت ٹریک کریں

سیکیورٹی

  • Key pair تصدیق - API رسائی کے لیے RSA 2048-bit انکرپشن
  • OAuth 2.0 - رول اسکوپنگ کے ساتھ ٹوکن پر مبنی تصدیق
  • نیٹ ورک پالیسیز - Tajo سروس اینڈ پوائنٹس کے لیے IP اجازت دینا
  • رول پر مبنی رسائی - کم از کم مطلوبہ مراعات کے ساتھ مخصوص Snowflake رول
  • انکرپٹڈ ڈیٹا منتقلی - تمام API مواصلات کے لیے TLS 1.2+
  • ڈیٹا ماسکنگ - حساس فیلڈز کے لیے Snowflake ڈائنامک ڈیٹا ماسکنگ استعمال کریں

متعلقہ وسائل

Subscribe to updates

developer-docs

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

auto-detect
AI معاون

السلام علیکم! دستاویزات کے بارے میں کچھ بھی پوچھیں۔