Łączenie Klaviyo i Redshift
Zaawansowana platforma danych klientów Klaviyo nie wchodzi w skład standardowej aplikacji marketingowej Klaviyo, a dostęp do powiązanych z nią funkcji wymaga subskrypcji. Przejdź do naszego przewodnika po rozliczeniach, aby dowiedzieć się, jak kupić ten plan.
Przegląd
Ten przewodnik przeprowadza administratorów Redshift przez przygotowanie Amazon Redshift do Klaviyo, przyznanie minimalnego wymaganego dostępu oraz ukończenie połączenia, aby móc 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 zgodnie z zasadą najmniejszych uprawnień
- (Opcjonalnie) Zweryfikuj uprawnienia i łączność
- Połącz Redshift z Klaviyo i zacznij tworzyć synchronizacje
Aby dowiedzieć się więcej o tym, jak działa import z hurtowni danych — w tym o obsługiwanych obiektach i najlepszych praktykach dotyczących struktury tabel — zobacz Informacje o imporcie z hurtowni danych w Klaviyo.
Utwórz wymagane schematy
Utwórz dwa schematy w bazie danych, których Redshift będzie używać dla Klaviyo:
-- Run as a Redshift DB admin or a role with CREATE SCHEMA
CREATE SCHEMA IF NOT EXISTS klaviyo_import_from_dwh;
CREATE SCHEMA IF NOT EXISTS klaviyo_tmp; KLAVIYO_IMPORT_FROM_DWH– Umieść tutaj ostateczne tabele lub widoki gotowe do synchronizacji. Podczas konfiguracji Klaviyo wyświetla obiekty w tym schemacie do wyboru, więc uwzględnij tylko tabele, które planujesz zaimportować.KLAVIYO_TMP– Używane wyłącznie przez Klaviyo do tymczasowych/tabel przejściowych podczas zadań synchronizacji. Nie modyfikuj tutaj danych — Klaviyo automatycznie zarządza tym schematem i go czyści.
Utwórz użytkownika usługi Klaviyo Service
Utwórz dedykowanego użytkownika bazy danych dla Klaviyo z silnym hasłem, które możesz niezależnie rotować.
-- Replace with your own names and a strong password
CREATE USER klaviyo_data_transfer_user WITH PASSWORD 'REPLACE_WITH_STRONG_PASSWORD'; Utwórz rolę do zarządzania przyznaniami dla użytkownika usługi:
CREATE ROLE klaviyo_data_transfer_role;
GRANT ROLE klaviyo_data_transfer_role TO klaviyo_data_transfer_user; Przechowuj nazwę użytkownika i hasło w bezpiecznym miejscu — będą potrzebne podczas łączenia Klaviyo z Redshift.
Przyznaj wymagane uprawnienia (najmniejsze niezbędne uprawnienia)
-- 1) Allow temporary tables
GRANT TEMPORARY ON DATABASE your_database TO ROLE klaviyo_data_transfer_role;
-- 2) Permissions on the staging schema Klaviyo manages
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) Read-only access to your import schema
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;
-- Remember to grant access to new tables in the future
-- 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ę
Wykonaj kilka szybkich kontroli jako użytkownik Klaviyo, aby potwierdzić, że uprawnienia są prawidłowe.
-- Switch to the target database
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 Confirm visibility of import tables
SET search_path TO klaviyo_import_from_dwh;
SELECT tablename FROM pg_table_def
WHERE schemaname = 'klaviyo_import_from_dwh'
LIMIT 25;
-- 4.3 Confirm SELECT on a source table or view
SELECT * FROM klaviyo_import_from_dwh.EXAMPLE_TABLE; Dostęp do sieci
Klaviyo musi mieć możliwość połączenia się z Twoim punktem końcowym Redshift.
- Publiczny punkt końcowy Redshift: dodaj statyczne adresy IP Klaviyo do białej listy w zaporze sieciowej lub w grupie zabezpieczeń.
- Prywatny punkt końcowy (np. PrivateLink): zapewnij łączność za pośrednictwem wewnętrznej ścieżki sieciowej i zasad bezpieczeństwa.
Jeśli używasz grup zabezpieczeń, zezwól na dostęp przychodzący na porcie Redshift (domyślnie 5439) dla zakresów adresó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/32 Przygotuj tabele importu (struktura i wydajność)
Upewnij się, że wszystkie tabele, które planujesz zaimportować, są zgodne z tymi konwencjami, aby zapewnić dokładne i wydajne przyrostowe synchronizacje:
- Kolumna znacznika czasu: Uwzględnij znacznik czasu utworzenia lub ostatniej aktualizacji dla każdego wiersza (np.
inserted_at,updated_at,modified_at). - Aktualizacje monotoniczne: znacznik czasu powinien się zwiększać za każdym razem, gdy wiersz ulega zmianie.
- Strefa czasowa: Użyj UTC lub dodaj informacje o strefie czasowej. Jeśli ich brakuje, Klaviyo przyjmuje UTC.
- Spójne identyfikatory: Używaj tych samych identyfikatorów profilu (
email,phone,external_iditd.) w tabelach importu, aby uniknąć duplikatów. - Formaty zgód: Podczas synchronizowania danych o zgodzie stosuj te same prawidłowe wartości/formaty co w przypadku przesyłania plików lub przez SFTP.
- Wydajność: Rozważ użycie kluczy sortowania lub dystrybucji w kolumnie znacznika czasu, aby zapewnić wydajne odczyty przyrostowe.
- Widoki: Możesz importować z tabel lub widoków, o ile dla użytkownika Klaviyo działa proste
SELECT.
Połącz Redshift z Klaviyo
- W Klaviyo otwórz lewy pasek boczny i przejdź do Advanced → Syncing.
- Kliknij Utwórz synchronizację.
- Wybierz Importuj dane z hurtowni danych.
- Wybierz Redshift.
- Kliknij Połącz z Redshift i wprowadź poniższe szczegóły połączenia:
Pole | Opis |
|---|---|
Host | Twój punkt końcowy Redshift (np. |
Port | 5439 (lub port niestandardowy) |
Baza danych | Baza danych zawierająca |
Nazwa użytkownika / Hasło | Dane logowania użytkownika usługi Klaviyo Service |
Po połączeniu 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ń umożliwiają adresom IP Klaviyo dotarcie do punktu końcowego Redshift na właściwym porcie.
- Potwierdź ustawienia SSL oraz to, że używasz prawidłowego punktu końcowego (klaster vs. grupa robocza), regionu i portu.
Tabele się nie wyświetlają
- Upewnij się, że tabele są w
klaviyo_import_from_dwh. - Potwierdź, że użytkownik Klaviyo ma
USAGEw schemacie orazSELECTw tabelach lub widokach.
Brak synchronizacji nowych wierszy
- Sprawdź, czy kolumna ze znacznikiem czasu aktualizuje się przy zmianach w wierszach i używa UTC lub zawiera informacje o strefie czasowej.
Błędy uprawnień w czasie wykonywania
- Uruchom ponownie weryfikację SQL jako użytkownik Klaviyo.
- W razie potrzeby ponownie zastosuj uprawnienia lub domyślne przywileje.
Zabezpieczenia i konserwacja
- Regularnie zmieniaj hasło użytkownika usługi oraz po zmianach kadrowych.
- Ogranicz użytkownika Klaviyo do dwóch powyższych schematów i przyznaj
USAGEtylko tam, gdzie jest to wymagane. - Prowadź prosty runbook, w którym dokumentujesz dokładne instrukcje
GRANTi zakresy adresów IP, które dodałeś(-aś) do listy dozwolonych.
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 materializowanych?
Tak. Przyznaj SELECT na widoku zmaterializowanym użytkownikowi Klaviyo.
Załącznik: przykładowy kod 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
);
-- ensure monotonically increasing timestamp on inserts/updates
-- (use your ETL/ELT to set inserted_at = GETDATE() at load time)