Hash-kollisioner
Dimensioner i Adobe Analytics samlar in strängvärden. 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 bearbetningen. I stället beräknas en hash för varje värde så att alla värden får en enhetlig storlek. Alla rapporter körs på dessa hash-kodade värden, vilket drastiskt ökar deras prestanda.
För de flesta fält konverteras strängen först till gemener. Vid konvertering med gemener minskas antalet unika värden. Värden hashas månadsvis - för ett givet värde används det första värdet som visas varje månad. Från månad till månad finns det en liten möjlighet att två unika variabelvärden hash-kodas till samma värde. Konceptet kallas en 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). En ny hash-tabell för varje dimension skapas varje månad. 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.
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
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.
- 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.