Trình Kết Nối Snowflake

Kết nối Snowflake với Brevo qua Tajo để thực hiện reverse ETL — truy vấn data warehouse của bạn và đồng bộ dữ liệu phân tích, hành vi khách hàng và chỉ số tương tác vào Brevo.

Tổng Quan

Thuộc TínhGiá Trị
Nền TảngSnowflake
Danh MụcTùy Chỉnh
Độ Phức Tạp Thiết LậpNâng Cao
Tích Hợp Chính ThứcKhông
Dữ Liệu Đồng BộTables, Views, Kết Quả Truy Vấn
Loại APISnowflake SQL API + Driver
Xác ThựcKey Pair Authentication

Tính Năng

  • Reverse ETL - Đẩy dữ liệu warehouse vào Brevo contacts và events
  • SQL linh hoạt - Viết bất kỳ SQL query nào để lấy dữ liệu cần đồng bộ
  • Lên lịch đồng bộ - Cấu hình đồng bộ định kỳ với khoảng thời gian tùy chỉnh
  • Cập nhật tăng dần - Chỉ đồng bộ rows mới hoặc thay đổi kể từ lần đồng bộ cuối
  • Data models tùy chỉnh - Đồng bộ từ bảng tùy chỉnh, views, hoặc materialized views

Yêu Cầu

Trước khi bắt đầu, hãy đảm bảo bạn có:

  1. Tài khoản Snowflake với quyền truy cập API
  2. Service user với key pair authentication
  3. Warehouse và database đã được gán
  4. Tài khoản Brevo với quyền truy cập API
  5. Tài khoản Tajo

Xác Thực

Key Pair Authentication (Khuyến Nghị)

Snowflake khuyến nghị key pair authentication cho service accounts.

Terminal window
# Tạo private key
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
# Tạo public key
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
# Gán public key cho user Snowflake
ALTER USER tajo_service SET RSA_PUBLIC_KEY='<public_key_contents>';
Terminal window
tajo connectors install snowflake \
--account $SNOWFLAKE_ACCOUNT \
--username $SNOWFLAKE_USER \
--private-key-path ./rsa_key.p8 \
--warehouse $SNOWFLAKE_WAREHOUSE \
--database $SNOWFLAKE_DATABASE

Cấu Hình

Thiết Lập Cơ Bản

connectors:
snowflake:
enabled: true
account: "${SNOWFLAKE_ACCOUNT}"
username: "${SNOWFLAKE_USER}"
private_key_path: "${SNOWFLAKE_PRIVATE_KEY_PATH}"
warehouse: "COMPUTE_WH"
database: "ANALYTICS"
schema: "PUBLIC"
sync_models:
- name: "brevo_contacts"
query: |
SELECT email, first_name, last_name, plan, ltv
FROM customers
WHERE is_active = true
target: brevo_contacts
primary_key: email
schedule: "0 2 * * *" # Hàng ngày lúc 2 giờ sáng

Ánh Xạ Trường

field_mapping:
email: email
first_name: FIRSTNAME
last_name: LASTNAME
plan_tier: PLAN_TYPE
lifetime_value: LIFETIME_VALUE
last_login: LAST_LOGIN_DATE
is_paid: IS_PAID_CUSTOMER
product_score: ENGAGEMENT_SCORE

SQL Queries Ví Dụ

Query Đồng Bộ Contacts

-- Lấy customers hoạt động với tất cả thuộc tính cần thiết
SELECT
c.email,
c.first_name,
c.last_name,
c.phone,
s.plan_name as plan,
s.mrr,
c.created_at as signup_date,
DATEDIFF('day', MAX(e.event_time), CURRENT_TIMESTAMP()) as days_since_active
FROM customers c
LEFT JOIN subscriptions s ON c.id = s.customer_id AND s.status = 'active'
LEFT JOIN events e ON c.id = e.user_id AND e.event_time >= DATEADD('day', -30, CURRENT_DATE())
WHERE c.email IS NOT NULL
AND c.deleted_at IS NULL
GROUP BY 1,2,3,4,5,6,7

Ví Dụ Code

Khởi Tạo Trình Kết Nối

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,
username: process.env.SNOWFLAKE_USER,
privateKeyPath: process.env.SNOWFLAKE_PRIVATE_KEY_PATH,
warehouse: process.env.SNOWFLAKE_WAREHOUSE,
database: process.env.SNOWFLAKE_DATABASE
});

Chạy Reverse ETL Sync

// Đồng bộ kết quả query sang Brevo
await tajo.connectors.reverseETL('snowflake', {
model: 'brevo_contacts',
mode: 'upsert',
primaryKey: 'email'
});

SQL API Partitions

Snowflake SQL API hỗ trợ phân vùng kết quả cho queries lớn. Tajo tự động chia kết quả lớn thành nhiều phần để tối ưu hóa bộ nhớ và thông lượng.

Chi Phí Warehouse

Mỗi query đồng bộ khởi động Snowflake warehouse của bạn và phát sinh chi phí. Hãy nhóm các đồng bộ lại và lên lịch vào giờ thấp điểm để giảm thiểu chi phí.

Giới Hạn Tốc Độ

Tài NguyênGiới Hạn
SQL API requests1000 yêu cầu/giờ
Kết quả mỗi trang10.000 rows
Kết nối đồng thờiDựa trên warehouse size

Khắc Phục Sự Cố

Sự CốNguyên NhânGiải Pháp
Lỗi xác thực keyPublic key không khớpTạo lại key pair và gán lại trong Snowflake
Warehouse suspendedWarehouse không hoạt độngĐặt AUTO_RESUME = TRUE cho warehouse
Query timeoutQuery quá phức tạpThêm LIMIT hoặc tối ưu hóa query
Quota exceededCredit limitKiểm tra Snowflake usage và credit settings

Tài Nguyên Liên Quan

Subscribe to updates

developer-docs

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

auto-detect
Trợ lý AI

Xin chào! Hãy hỏi tôi về tài liệu.