Łączenie Klaviyo i Redshift
Zaawansowana platforma danych klientów Klaviyo nie jest zawarta w standardowej aplikacji marketingowej Klaviyo, a dostęp do powiązanych funkcji wymaga subskrypcji. Przejdź do naszego przewodnika po rozliczeniach, aby dowiedzieć się, jak kupić ten plan.
Przegląd
Ten przewodnik prowadzi administratorów Redshift przez przygotowanie Amazon Redshift do Klaviyo, przyznanie minimalnego wymaganego dostępu i ukończenie połączenia, dzięki czemu możesz importować dane profilu zgodnie z harmonogramem. Dowiesz się, jak:
- Utwórz schematy
KLAVIYO_TMPiKLAVIYO_IMPORT_FROM_DWH - Utwórz dedykowanego użytkownika usługi dla Klaviyo
- Przyznaj uprawnienia o najniższych uprawnieniach
- (Opcjonalnie) Sprawdź uprawnienia i łączność.
- Połącz Redshift z Klaviyo i zacznij tworzyć synchronizacje
Aby dowiedzieć się, jak działa import z hurtowni danych - w tym obsługiwane obiekty i najlepsze praktyki dotyczące struktury tabeli - zapoznaj się z sekcją Zrozumienie importu z hurtowni danych na Klaviyo stronie.
Utwórz wymagane schematyUtwórz wymagane schematy
Utwórz dwa schematy w bazie danych, której Redshift będzie używać dla Klaviyo:
-- Uruchom jako administrator Redshift DB lub rola z CREATE SCHEMA CREATE SCHEMA IF NOT EXISTS klaviyo_import_from_dwh; CREATE SCHEMA IF NOT EXISTS klaviyo_tmp;
-
KLAVIYO_IMPORT_FROM_DWH- Umieść tutaj swoje ostateczne, gotowe do synchronizacji tabele lub widoki. Podczas konfiguracji Klaviyo wyświetla listę obiektów w tym schemacie do wyboru, więc uwzględnij tylko tabele, które planujesz zaimportować. -
KLAVIYO_TMP- Używany wyłącznie przez Klaviyo do tabel tymczasowych / przejściowych podczas zadań synchronizacji. Nie modyfikuj tutaj danych - Klaviyo automatycznie zarządza i czyści ten schemat.
Utwórz użytkownika serwisu Klaviyo
Utwórz dedykowanego użytkownika bazy danych dla Klaviyo z silnym hasłem, które możesz zmieniać niezależnie.
-- Zastąp własnymi nazwami i silnym hasłem CREATE USER klaviyo_data_transfer_user WITH PASSWORD 'REPLACE_WITH_STRONG_PASSWORD';
Utwórz rolę do zarządzania dotacjami dla użytkownika usługi:
CREATE ROLE klaviyo_data_transfer_role; GRANT ROLE klaviyo_data_transfer_role TO klaviyo_data_transfer_user;
Przechowuj bezpiecznie nazwę użytkownika i hasło - będziesz ich używać podczas łączenia Klaviyo z Redshift.
Przyznaj wymagane uprawnienia (najmniejsze uprawnienia)Przyznaj wymagane uprawnienia (najmniejsze uprawnienia)
-- 1) Zezwól na tabele tymczasowe GRANT TEMPORARY ON DATABASE your_database TO ROLE klaviyo_data_transfer_role; -- 2) Uprawnienia do schematu przejściowego, którym zarządza Klaviyo GRANT USAGE ON SCHEMA klaviyo_tmp TO ROLE klaviyo_data_transfer_role; GRANT CREATE ON SCHEMA klaviyo_tmp TO ROLE klaviyo_data_transfer_role; -- 3) Dostęp tylko do odczytu do schematu importu GRANT USAGE ON SCHEMA klaviyo_import_from_dwh TO ROLE klaviyo_data_transfer_role; GRANT SELECT ON ALL TABLES IN SCHEMA klaviyo_import_from_dwh TO ROLE klaviyo_data_transfer_role; -- Pamiętaj o przyznaniu dostępu do nowych tabel w przyszłości -- 3a) Grant SELECT on specific views (repeat as needed) GRANT SELECT ON VIEW klaviyo_import_from_dwh.example_view_name TO ROLE klaviyo_data_transfer_role;(Opcjonalnie) Zweryfikuj konfigurację
(Opcjonalnie) Zweryfikuj konfigurację
Przeprowadź kilka szybkich kontroli jako użytkownik Klaviyo, aby potwierdzić, że dotacje są prawidłowe.
-- Przełącz się do docelowej bazy danych SET search_path TO klaviyo_tmp; -- 4.1 Validate create/read in KLAVIYO_TMP CREATE TABLE IF NOT EXISTS permission_check (id INT); INSERT INTO permission_check VALUES (1); SELECT COUNT(*) FROM permission_check; -- expect 1 DROP TABLE permission_check; -- 4.2 Potwierdź widoczność tabel importu SET search_path TO klaviyo_import_from_dwh; SELECT tablename FROM pg_table_def WHERE schemaname = 'klaviyo_import_from_dwh' LIMIT 25; -- 4.3 Potwierdź SELECT na tabeli źródłowej lub widoku SELECT * FROM klaviyo_import_from_dwh.EXAMPLE_TABLE;Dostęp do sieci
Dostęp do sieci
Klaviyo musi być w stanie dotrzeć do Twojego Redshift punkt końcowy.
- Publiczny Redshift punkt końcowy: biała lista Klaviyostatycznych adresów IP w Twojej zaporze sieciowej lub grupie zabezpieczeń.
- Prywatny punkt końcowy (np. PrivateLink): zapewnij łączność za pośrednictwem wewnętrznej ścieżki sieciowej i zasad bezpieczeństwa.
Jeśli korzystasz z grup zabezpieczeń, zezwól na dostęp przychodzący na porcie Redshift (domyślnie 5439) dla zakresów IP Klaviyo:
184.72.183.187/32 52.206.71.52/32 3.227.146.32/32 44.198.39.11/32 35.172.58.121/32 3.228.37.244/32 54.88.219.8/32 3.214.211.176/32Przygotuj tabele importu (struktura & wydajność)
Przygotuj tabele importu (struktura & wydajność)
Upewnij się, że wszystkie tabele, które planujesz zaimportować, są zgodne z tymi konwencjami, aby zapewnić dokładną i wydajną synchronizację przyrostową:
-
Kolumna znacznika czasu: Uwzględnij znacznik czasu utworzenia wiersza lub ostatniej aktualizacji (np.
inserted_at,updated_at,modified_at). - Aktualizacje monotoniczne: Znacznik czasu powinien zwiększać się przy każdej zmianie wiersza.
- Strefa czasowa: Użyj UTC lub dołącz informacje o strefie czasowej. W przypadku braku, Klaviyo przyjmuje UTC.
-
Spójne identyfikatory: Używaj tych samych identyfikatorów profilu
(e-mail,telefon,external_iditp.) w tabelach importu, aby uniknąć duplikatów. - Formaty zgody: Synchronizując dane zgody, przestrzegaj tych samych prawidłowych wartości/formatów, które są używane podczas przesyłania plików lub SFTP.
- Wydajność: Rozważ sortowanie lub klucze rozproszone w kolumnie znacznika czasu, aby uzyskać wydajne odczyty przyrostowe.
-
Widoki: Możesz importować z tabel lub widoków, o ile prosty
SELECTdziała dla użytkownika Klaviyo.
Połącz Redshift z Klaviyo
- W Klaviyo otwórz lewy pasek boczny i przejdź do Zaawansowane → Synchronizacja.
- Kliknij przycisk Utwórz synchronizację.
- Wybierz opcję Importuj dane z hurtowni danych.
- Wybierz Redshift.
- Kliknij Connect to Redshift i wprowadź następujące szczegóły połączenia:
| Pole | Opis |
|---|---|
| Host | Twój punkt końcowy Redshift (np. example-cluster.abc123.us-east-1.redshift.amazonaws.com). |
| Port | 5439 (lub twój niestandardowy port) |
| Baza danych | Baza danych zawierająca klaviyo_tmp i klaviyo_import_from_dwh
|
| Nazwa użytkownika / Hasło | Poświadczenia użytkownika usługi Klaviyo |
Po nawiązaniu połączenia Klaviyo przetestuje Twoje dane uwierzytelniające i łączność sieciową. Po weryfikacji możesz tworzyć synchronizacje i wybierać tabele lub widoki z klaviyo_import_from_dwh.
Wskazówki dotyczące rozwiązywania problemów
Test połączenia nie powiódł się
- Sprawdź, czy reguły zapory sieciowej lub grupy zabezpieczeń zezwalają adresom IP Klaviyona dotarcie do Twojego Redshift punkt końcowy na właściwym porcie.
- Potwierdź ustawienia SSL i upewnij się, że używasz prawidłowego punktu końcowego (klaster vs. grupa robocza), regionu i portu.
Tabele nie są wyświetlane
- Upewnij się, że tabele znajdują się w
klaviyo_import_from_dwh. - Upewnij się, że użytkownik Klaviyo ma uprawnienia
USAGEdo schematu iSELECTdo tabel lub widoków.
Brak synchronizacji nowych wierszy
- Sprawdź, czy kolumna znacznika czasu aktualizuje się po zmianie wiersza i używa UTC lub zawiera informacje o strefie czasowej.
Błędy uprawnień w czasie wykonywania
- Uruchom ponownie SQL walidacji jako użytkownik Klaviyo.
- W razie potrzeby ponownie zastosuj dotacje lub domyślne uprawnienia.
Bezpieczeństwo i konserwacja
- Zmieniaj hasło użytkownika regularnie i po zmianie personelu.
- Ogranicz użytkownika Klaviyo do dwóch powyższych schematów i przyznaj
USAGEtylko tam, gdzie jest to wymagane. - Zachowaj prosty podręcznik dokumentujący dokładne instrukcje
GRANTi zakresy IP, na które zezwoliłeś.
Najczęściej zadawane pytania
Czy mogę importować z wielu baz danych Redshift?
Tak. Utwórz dwa schematy w każdej bazie danych i połącz obiekty z każdej z nich jako osobne synchronizacje.
Czy mogę używać widoków zmaterializowanych?
Tak. Przyznaj SELECT na widoku zmaterializowanym użytkownikowi Klaviyo.
Dodatek: Przykład DDL dla prostej tabeli importu
CREATE TABLE klaviyo_import_from_dwh.profile_base ( external_id VARCHAR(128), email VARCHAR(320), phone VARCHAR(32), first_name VARCHAR(128), last_name VARCHAR(128), country VARCHAR(64), inserted_at TIMESTAMP ); -- zapewnij monotonicznie rosnący znacznik czasu przy wstawianiu/aktualizacji -- (użyj ETL/ELT, aby ustawić inserted_at = GETDATE() w czasie ładowania)