哈希冲突

Adobe Analytics中的Dimension收集字符串值。 这些字符串有时长达数百个字符,有时则较短。 为了提高性能,在处理过程中不会直接使用这些字符串值。 而是为每个值计算散列,以使所有值的大小一致。 所有报表都基于这些哈希值运行,这会显着提升其性能。

对于大多数字段,字符串首先会转换为全部小写。 小写转换可减少唯一值的数量。 值按月进行哈希处理 — 给定值的大小写使用每月看到的第一个值。 月复一月,可能会出现两个唯一的变量值经过哈希运算后变成同一个值的情况,但这种可能性很小。 这一概念就是所谓的​ 哈希冲突

哈希冲突可如下所示显示在报表中:

  • 如果您查看一段时间的报表并看到意外的尖峰,则该变量的多个唯一值可能会使用相同的哈希。
  • 如果您使用区段并看到意外值,则意外维度项可能会使用与您的区段匹配的其他维度项相同的哈希。

哈希冲突发生概率

Adobe Analytics对大多数维度使用32位哈希,这意味着有2个32 可能的哈希组合(约43亿)。 每月为每个维度创建一个新的哈希表。 根据唯一值的数量,遇到哈希冲突的大致概率如下。 这些赔率基于单个维度单个月。

唯一值
赔率
1,000
0.01%
10,000
1%
50,000
26%
100,000
71%

类似于 生日悖论,哈希冲突出现的可能性会随着唯一值数量的增加而急剧增加。 至少100万个唯一值,该维度可能至少有100个哈希冲突。

缓解哈希冲突

大多数哈希冲突都发生在两个不常见的值中,这些值对报表没有任何实际影响。 即使哈希与某个通用值和不通用值发生冲突,结果也几乎可以忽略。 但是,在极少数情况下,当两个常用值遇到哈希冲突时,可以清楚地看到其影响。 Adobe建议采取以下措施以减少它在报表中的影响:

  • 更改日期范围:哈希表每月更改。 将日期范围更改为跨越另一个月,可能会为每个值赋予不同的哈希值,而不会产生冲突。
  • 减少唯一值的数量:您可以调整实施或使用 处理规则 以帮助减少维度收集的唯一值的数量。 例如,如果您的维度收集URL,则可以剥离查询字符串或协议。
recommendation-more-help
b4f6d761-4a8b-4322-b801-c85b9e3be690