哈希冲突

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

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

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

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

哈希冲突发生概率

Adobe Analytics对大多数维度使用32位哈希,这意味着可能有232个哈希组合(约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