Skip to content

Latest commit

 

History

History
10 lines (7 loc) · 2.42 KB

High-Cardinality.md

File metadata and controls

10 lines (7 loc) · 2.42 KB

(超出维度行数上限)

我们使用维度和指标来进行数据分析。维度用来决定一个分析的角度,指标用来展现这个角度的数据。例如,我们可以使用“网站/手机应用”作为维度,页面浏览量作为指标,在GrowingIO中制作出下面这张表:

“网站/手机应用”维度一共有三个值,分别是:Web、iOS、Android。那么右边的这三行数值分别代表这三个平台获得的页面浏览量指标。

维度就像一个集合,其中存放的是从某个角度分析的描述性字符串。集合论中有一个重要的概念,叫做“基数”,描述的就是集合中元素的个数。在上面的这个例子中,我们使用的“网站/手机应用”维度有三个值,分别是“Web、iOS、Android”。在这个情况下,我们可以称这个维度的“基数”为3。不难想到,在GrowingIO系统中,有些维度的基数是很大的,例如页面维度。很多电子商务类型的网站,产品详情页URL会是类似于:http://item.ecommerce.com/{productId}.html。那么如果这个网站有N个商品有页面浏览(至少一次页面浏览),页面这个维度的基数就是N,可见这个时候N的值是非常巨大的。 GrowingIO系统为了更加专注资源在用户关注的页面或者事件上,引入了处理“巨大基数维度“(High Cardinality Dimensions)”算法来区别对待产生巨大流量页面、事件和长尾的页面、事件。以页面维度为例,算法细节如下: 以天作为一个计算单位,天级别的数据中包含的不同的值如果低于2000,则正常计算所有的页面,这些所有的页面都会作为“页面”维度的维度值展示在报表中。当天级别的数据中页面维度的不同的值超过2000时,系统自动进入“巨大基数维度”的整理模式。在整理模式中,每当添加一个新的值到页面维度中,系统会自动计算出当前页面浏览量总数的前95%的维度的值按照从大到小排序的位置编号值,假设为x。如果x小于5000,则页面维度的不同的值保留到该位置为止,剩下的维度值和相应的指标数值合并到一个称为“超出维度行数上限”的行中。如果x大于5000,则按照页面浏览量数值大小,取前5000行,剩下的维度值和相应的指标数值合并到一个称为“超出维度行数上限”的行中。