Optimeringsguide för Snowflakes händelsetabell
Du kommer att lära dig
Lär dig hur du tillämpar 2 rekommenderade Snowflake-optimeringar på händelsetabellen som exporterats från Klaviyo. De här ändringarna är avsedda att minska omfattande tabellsökningar och hjälpa Snowflake att fokusera på relevanta händelseposter och tidsintervall under synkroniseringen.
- Aktivera sökoptimering för equality lookups på id. Detta kräver Snowflake Enterprise Edition eller högre.
- Klustra händelsetabellen efter händelsedatum. Det här fungerar i alla Snowflake-utgåvor och bör göras oavsett om du även kan slutföra steget för sökoptimering.
Innan du börjar
Bekräfta följande med ditt team för dataplattformen:
- Du har en Snowflake-destination konfigurerad för att exportera Klaviyo-händelser. För installationsinstruktioner kan du läsa Förstå synkning till datalager i Klaviyo.
- Oavsett om ditt Snowflake-konto använder Enterprise Edition eller högre, om du planerar att slutföra steg 3 (sökoptimering). Klustering i steg 4 fungerar i alla Snowflake-utgåvor och bör göras oavsett.
- Din roll har OWNERSHIP på tabellen events och USAGE eller OWNERSHIP på dess databas och schema. Om du aktiverar Search Optimization behöver din roll också ADD SEARCH OPTIMIZATION på schemat.
- Du känner till det fullständiga namnet för Klaviyo händelsetabell i din miljö.
- Händelsetabellen innehåller en id-kolumn och kolumnen för händelsetidsstämpel heter DATETIME eller har ett motsvarande namn.
- Du har ett planerat testfönster, särskilt om en historisk synkronisering körs just nu.
Tabellnamnen i den här guiden är exempel. Ersätt <EVENTS_TABLE> med exakt databas-, schema- och tabellnamn i ditt Konto. Ersätt <EVENTS_SCHEMA> med databasen och schemat som innehåller tabellen, till exempel MY_DATABASE.PUBLIC.
Gå igenom Snowflake-kostnaderna med teamet för din dataplattform innan du tillämpar de här ändringarna. Search Optimization och Automatic Clustering kan medföra avgifter för konfiguration och löpande underhåll, samt lagringskostnader. Se kostnader för Search Optimization och kostnader för klustring, särskilt innan du optimerar en stor tabell.
Steg 1: identifiera och validera händelsetabellen
- Öppna ett Snowflake-kalkylblad med en roll som har de behörigheter som krävs.
- Bekräfta den exakta tabellidentifieraren som används av din Klaviyo-integration.
- Verifiera att tabellen innehåller de förväntade uppslags- och tidsstämpelkolumnerna.
Till exempel:
DESCRIBE TABLE <EVENTS_TABLE>;Bekräfta att:
- id är händelseidentifieraren som används för uppslag av likhet.
- DATETIME är händelsens tidsstämpel, eller identifiera den motsvarande tidsstämpelkolumnen som ska användas i klustringsuttrycket.
Steg 2: Fastställ en baslinje (valfritt)
Innan du tillämpar ändringarna ska du dokumentera tillräckligt med information för att kunna jämföra resultaten efteråt:
- Aktuell synkroniseringsstatus och varaktighet.
- Om synkroniseringen är historisk eller inkrementell.
- Snowflake-data warehouse som används av integrationen.
- Ungefärliga krediter eller beräkning som använts av nylig synkaktivitet.
- Alla relevanta fråge-ID:n, felmeddelanden eller tidsstämplar från Snowflake Query History.
Om en historisk synkronisering körs under ovanligt lång tid ska du samordna med Klaviyo innan du pausar eller startar om den.
Steg 3: aktivera sökoptimering för händelse-ID:t (valfritt)
Sökoptimering kräver Snowflake Enterprise Edition eller senare. Om ditt Konto är på Standard Edition hoppar du över det här steget och går till steg 4 – klustring har inget editionskrav och bör göras oavsett.
Innan du aktiverar sökoptimering ska du granska den befintliga konfigurationen:
DESCRIBE SEARCH OPTIMIZATION ON <EVENTS_TABLE>;Om utdata innehåller en Aktiv EQUALITY-post för id behåller du den befintliga konfigurationen och hoppar över ALTER TABLE-satserna i det här steget. Annars bekräftar du konfigurationen med din Snowflake-administratör innan du lägger till den.
Kör följande sats efter att du har ersatt platshållaren med ditt faktiska tabellnamn:
ALTER TABLE <EVENTS_TABLE>
ADD SEARCH OPTIMIZATION ON EQUALITY(id);Till exempel, om tabellen heter klaviyo_events:
ALTER TABLE klaviyo_events
ADD SEARCH OPTIMIZATION ON EQUALITY(id);Detta skapar en optimerad åtkomstsökväg för likhetspredikat på id, vilket är avsett att minska mängden i händelsetabellen som Snowflake måste skanna för riktade uppslagningar.
Steg 4: Lägg till datum-baserad klustring i händelsetabellen
Innan du ställer in clustering key kör du följande kommando och letar upp din händelsetabell i resultatet:
SHOW TABLES IN SCHEMA <EVENTS_SCHEMA>;Granska cluster_by. Om den redan anger TO_DATE() i kolumnen för händelsetidsstämpeln ska du behålla den nyckeln och hoppa över ALTER TABLE-satserna i det här steget. Om den anger en annan nyckel ska du först gå igenom ändringen med teamet för din dataplattform: CLUSTER BY ersätter den befintliga nyckeln.
Använd tidsstämpelkolumnen som bekräftades i steg 1. Om din kolumn har ett annat namn ersätter du den kolumnen i uttrycket.
Tillämpa en klustringsnyckel baserad på datumsdelen av händelsetidsstämpeln:
ALTER TABLE <EVENTS_TABLE>
CLUSTER BY (TO_DATE(DATETIME));Till exempel:
ALTER TABLE KLAVIYO_EVENT
CLUSTER BY (TO_DATE(DATETIME));Datumklustring är avsedd att hjälpa Snowflake att gallra bort orelaterade tidsintervall i stället för att skanna hela händelsetabellen.
Steg 5: låt Snowflake-underhållet slutföras
När de satser du körde lyckas, eller när du har bekräftat att de nödvändiga inställningarna redan finns på plats:
- Ge Snowflake tid att bygga upp eller underhålla sök- och klustringsstrukturerna.
- Undvik att bedöma resultatet från den första frågan direkt efter DDL-satserna.
- Fortsätt att övervaka lageranvändning, avgifter för optimeringsunderhåll och frågeprestanda medan tabellen underhålls.
Hur lång tid som krävs beror på tabellstorleken, den befintliga datalayouten och Snowflakes arbetsbelastning.
Innan du jämför synkroniseringsprestanda, kör SHOW TABLES igen och kontrollera raden för din händelsetabell:
SHOW TABLES IN SCHEMA <EVENTS_SCHEMA>;- Om Search Optimization är aktiverat ska du bekräfta att search_optimization är ON och att search_optimization_progress har nått 100 innan du utvärderar dess prestanda.
- Bekräfta att cluster_by visar det förväntade datumuttrycket och att automatic_clustering är PÅ. Om den är AV ber du din Snowflake-administratör att återuppta Automatic Clustering. Inställningen PÅ visar att underhåll är aktiverat, inte att den inledande omklustringen har slutförts. Be din administratör att kontrollera omklustringsaktiviteten innan du jämför resultaten.
Steg 6: Meddela Klaviyo
Skicka följande uppgifter till Klaviyo:
- Det fullständigt kvalificerade tabellnamnet för events.
- Vilka uttalanden du körde och när, eller vilka inställningar som redan var på plats.
- Oavsett om sökoptimering är aktiverat för ID eller om du hoppade över steg 3.
- Bekräftelse på att datumbaserad klustring är konfigurerad för kolumnen med tidsstämpeln för händelsen.
- Snowflake-kontot/regionen och lagret som används för synkroniseringen.
- Eventuellt relevant synk-ID, fråge-ID eller feluppgifter.
Be Klaviyo bekräfta om din händelseexport behöver en konfigurationsändring för att använda datumbaserad matchning med kolumnen för grupperad tidsstämpel.
Steg 7: kör en kontrollerad valideringssynkronisering (valfritt)
Samordna en kontrollerad valideringskörning med Klaviyo. Där det är möjligt, validera med en inkrementell eller på annat sätt begränsad synk innan du startar om en stor historisk återfyllning.
Om du hämtade in en baslinje i steg 2 ska du jämföra körningar med liknande datavolymer med hjälp av samma data warehouse. Granska:
- Dags att börja bearbeta.
- Total synkroniseringstid.
- Förloppsbeteende i Klaviyo-gränssnittet.
- Snowflake-byte som skannats.
- Förbrukade Snowflake-krediter, inklusive användning av lager och kostnader för optimeringsunderhåll.
- Om synkroniseringen slutförs utan nya försök eller upprepat arbete.
Utvärdera synkroniseringens varaktighet, antal skannade byte och de totala Snowflake-kostnaderna tillsammans. Lägre användning av warehouse i sig innebär inte en kostnadsbesparing om kostnaderna för optimeringsunderhåll eller lagring ökar.
Steg 8: övervaka de kommande synkroniseringarna
Spåra flera efterföljande synkroniseringar i stället för att förlita dig på en enda körning. Leta efter:
- Stabila eller sjunkande Snowflake-kostnader för jämförbara datavolymer, inklusive underhålls- och lagringsavgifter.
- Färre breda genomsökningar av historiska data.
- Mer förutsägbar synkroniseringsvaraktighet.
- Ingen ökning av misslyckade eller upprepade frågor.
Dela resultaten med Klaviyo, inklusive fråge-ID:n före och efter när det är möjligt.
Felsökning
Utsagan för sökoptimering misslyckas
Kontrollera att:
- Snowflake-kontot är på Enterprise Edition eller högre.
- Den exekverande rollen har OWNERSHIP på tabellen.
- Tabellnamnet och ID-kolumnen är korrekta.
- Den körande rollen har ADD SEARCH OPTIMIZATION på schemat som innehåller tabellen.
Klustringsuttrycket misslyckas
Kontrollera att:
- Tabellnamnet är korrekt.
- Tidsstämpelkolumnen finns och är en kompatibel tidsstämpel- eller datumtyp.
- Den exekverande rollen har OWNERSHIP på tabellen och USAGE eller OWNERSHIP på dess databas och schema.
- Klustringsuttrycket matchar det faktiska fältet för händelsetidsstämpel.
Synkningen är fortfarande långsam eller verkar ha fastnat
Skicka Klaviyo:
- De exakta tabelldefinitionerna och de statements som användes.
- Tiden då varje ändring tillämpades.
- Synkroniseringens starttid och aktuell status.
- Snowflake-fråge-ID:n och warehouse-användning.
- Alla tecken på att statusen i användargränssnittet inte går framåt.
Ta inte bort optimeringarna enbart för att den första synkningen inte blir bättre. Bekräfta först att Snowflake har slutfört relevant underhåll och att Klaviyo har verifierat sin konfiguration på exportsidan.
Checklista för slutförande
- Korrekt händelsetabell identifierad.
- Kolumnerna id och händelsetidsstämpel bekräftade.
- Grundläggande synk- och beräkningsmättal registrerade (valfritt).
- Search Optimization aktiverat för likhetsuppslag på id (valfritt).
- Händelsetabell klustrad efter händelsedatum.
- Klaviyo har informerats om ändringarna.
- Kontrollerad valideringssynkronisering har slutförts (valfritt).
- Följ upp synkprestanda och granskat beräkningsresultat (valfritt).