Colisões de hash
As dimensões no Adobe Analytics coletam valores de string. Às vezes, essas cadeias de caracteres têm centenas de caracteres, enquanto outras vezes são curtas. Para melhorar o desempenho, esses valores de sequência de caracteres não são usados diretamente no processamento do tempo do relatório. Em vez disso, um hash é calculado para cada valor, produzindo um identificador de tamanho uniforme. Para a maioria dos campos, o valor é convertido em minúsculas antes do hash, o que reduz o número total de valores únicos. Todos os relatórios são executados nesses valores com hash, o que aumenta drasticamente seu desempenho.
O Adobe Analytics mantém uma tabela de hash separada para cada variável e cada tabela é recriada todo mês. Em qualquer uma dessas tabelas, dois valores de origem diferentes podem produzir ocasionalmente o mesmo hash, conhecido como colisão de hash.
Colisões de hash podem se manifestar nos relatórios da seguinte maneira:
- Se você visualizar um relatório ao longo do tempo e observar um pico inesperado, é possível que vários valores únicos para essa variável usem o mesmo hash.
- Se você usar um segmento e ver um valor inesperado, é possível que o item de dimensão inesperado use o mesmo hash que outro item de dimensão que correspondeu ao seu segmento.
Probabilidades de colisão de hash
O Adobe Analytics usa hashes de 32 bits para a maioria das dimensões, o que significa que há 232 combinações de hash possíveis (aproximadamente 4,3 bilhões). As chances aproximadas de encontrar uma colisão de hash com base no número de valores únicos são as seguintes. Essas probabilidades são baseadas em uma única dimensão para um único mês.
Semelhante ao paradoxo de aniversário, a probabilidade de colisões de hash aumenta drasticamente à medida que o número de valores únicos aumenta. Com 1 milhão de valores únicos, é provável que haja pelo menos 100 colisões de hash para essa dimensão.
Reduzindo colisões de hash
As colisões de hash não podem ser totalmente eliminadas, mas seu impacto nos relatórios pode ser atenuado. A maioria das colisões de hash ocorre com dois valores incomuns, que não têm impacto significativo nos relatórios. Mesmo que um hash colida com um valor comum e incomum, o resultado é insignificante. However, in rare cases where two popular values experience a hash collision, it is possible to see its effect clearly. Adobe recommends the following to reduce its effect in reports:
- Change the date range: Hash tables change each month. Changing the date range to span another month can give each value different hashes that don’t collide. It is usually the fastest way to clear a visible anomaly from a specific report.
- Reduce the number of unique values: You can adjust your implementation or use Processing rules to help reduce the number of unique values that a dimension collects. For example, if your dimension collects a URL, you can strip query strings or protocol.
- Use Data Warehouse or Data Feeds: These tools do not rely on hash tables.
- Move to Customer Journey Analytics: Customer Journey Analytics has no hashing layer and no cardinality limits on dimensions. Consider moving to this product if hash collisions or Low-Traffic frequently affect your reports.