Hash-kollisioner

I Adobe Analytics samlas strängvärden in. Ibland är de här strängarna hundratals tecken långa, medan andra gånger de är korta. För att förbättra prestandan används dessa strängvärden inte direkt i rapporttidsbearbetningen. I stället beräknas en hash för varje värde, vilket ger en identifierare med enhetlig storlek. För de flesta fält konverteras värdet till gemener före hash-kodning, vilket minskar det totala antalet unika värden. Alla rapporter körs på dessa hash-kodade värden, vilket drastiskt ökar deras prestanda.

Adobe Analytics har en separat hash-tabell för varje variabel och varje tabell byggs om varje månad. I en av tabellerna kan två olika källvärden ibland ge samma hash, en så kallad hash-kollision.

Hash-kollisioner kan visas i rapporter på följande sätt:

  • Om du visar en rapport över tiden och ser en oväntad topp, är det möjligt att flera unika värden för den variabeln använder samma hash.
  • Om du använder ett segment och ser ett oväntat värde är det möjligt att det oväntade dimensionsobjektet använder samma hash som en annan dimensionsobjekt som matchade ditt segment.

Oddsen för en hash-kollision

Adobe Analytics använder 32-bitars hash för de flesta dimensioner, vilket betyder att det finns 232 möjliga hash-kombinationer (ungefär 4,3 miljarder). De ungefärliga oddsen för en hash-kollision baserad på antalet unika värden är följande. Oddsen baseras på en enda dimension för en månad.

Unika värden
Oddning
1,000
0.01%
10,000
1%
50,000
26%
100,000
71%

På samma sätt som födelsedagsparadox ökar sannolikheten för hash-kollisioner drastiskt när antalet unika värden ökar. Vid 1 miljon unika värden är det troligt att det förekommer minst 100 hash-kollisioner för den dimensionen.

Minska hashkollisioner

Hash-kollisioner kan inte elimineras helt, men deras inverkan på rapporter kan minskas. De flesta hash-kollisioner inträffar med två mindre vanliga värden, som inte har någon meningsfull inverkan på rapporter. Även om en hash kolliderar med ett vanligt och ovanligt värde är resultatet försumbart. I sällsynta fall där två populära värden upplever en hash-kollision är det dock möjligt att se effekten tydligt. Adobe rekommenderar följande för att minska effekten i rapporter:

  • Ändra datumintervallet: Hash-tabeller ändras varje månad. Om du ändrar datumintervallet så att det sträcker sig över en annan månad kan du ge varje värde olika hash-värden som inte kolliderar. Det är vanligtvis det snabbaste sättet att avlägsna synliga avvikelser från en viss rapport.
  • Minska antalet unika värden: Du kan justera implementeringen eller använda Bearbetningsregler för att minska antalet unika värden som en dimension samlar in. Om dimensionen till exempel samlar in en URL-adress kan du ta bort frågesträngar eller protokoll.
  • Använd Data Warehouse eller Dataflöden: Dessa verktyg är inte beroende av hashtabeller.
  • Flytta till Customer Journey Analytics: Customer Journey Analytics har inget hash-lager och inga kardinalitetsbegränsningar för dimensioner. Överväg att byta till den här produkten om hash-kollisioner eller Low-Traffic ofta påverkar dina rapporter.
recommendation-more-help
analytics-help-implement