Kimball Design Tips #1: 点击流数据集市设计指导

来源:互联网 发布:海盗港新域名 编辑:程序博客网 时间:2024/05/21 13:55

by Ralph Kimball

点击流是Web服务器收集的页面点击事件,原始的点击流数据,每一次访问者的点击就会产生一条记录。点击流因此包含了用户对网络站点做出的每个动作空前详细的记录。

点击流的源数据量是巨大的,即使是一个中等规模的站点就可以每天产生1亿次的页面事件记录。为我们重要的分析,我们必须把记录数量减少到一个可以控制的范围内。本设计想到的目的就是寻找到一个方法,不需要遍历一亿条记录,同时数据仍然保留在一个有用的水平上,注意应付我们对网站访问行为的分析。

点击流事件包括了一些列有用的维度,包括日历日期,时间,访问者,页面对象,上下文,以及访问方法(Get or Post).

建议的点击流行为事实表的粒度是:一条事实表记录=一个访问者对话期间

如果平均每个会话包括20个点击事件,那么以上例子中的数据记录大概是5百万个,相当于一个中等规模的零售数据库的大小。

通常事实表建议的维度有:

Web服务器时间(日历日期)

Web服务器时间(用整数表示,从0点开始过去的秒的数量)

访问者日期

访问者时间

访问者(匿名或者用网站记录的唯一代号)

开始页

结束页面

上下文

会话特征(一个简单的描述符号,表示该会话的种类)

建议的数值事实有:

总的访问页面数量

总的停留时间(估计值,应为我们不能准确计算出停留时间)

这个设计非常强大,可以让我们很容易地评估页面访问行为。最重要的特征是会话特征维度,你必须开发一个非常完善的ETL程序,从详细的页面访问序列中提取会话的特征标识符号。

关于一号指导的再讨论:

关于1号指导,在我1999年1月5日发表这篇文章后,我看到了一系列的关于维度建模的有趣的补充评论,一些人问我,为什么要设置粒度为一条记录=一次完整的页面会话,这些人问我时候改变了主意。我没有改变主意,相反,我对这个问题有了更深入地理解,对于点击流数据,至少有3中有用的粒度:

1)事实表记录=单个页面访问事件;在这个粒度,能够记录每一次页面访问的轨迹,对于繁忙的页面访问来讲,数据量巨大。你需要花大量的钱来存储和分析数据。而统计学的分析告诉我们,大约采样1%的数据就可以很好地分析用户的使用模式,从而支持重要的决策。

2)事实表记录=完整页面访问会话;在这个粒度,你可以很好地做分析,因为你有每个用户页面访问的数据。

3)事实表记录=网页每天的页面访问;这个粒度大大地减少了记录的数据量,但是汇总的数据也过滤掉了很多有用的信息。

对于粒度的问题,往往是一种权衡的过程,如果非要追求每个细节,那可能我们需要所有的最细的数据,就像我们很多其他数据仓库所做的那样。Kimball把粒度问题放在Tips的第一个Tips,可见粒度问题的重要性。

 

原文请见http://www.ralphkimball.com/html/designtipsPDF/DesignTips2000%20/KimballDT1GuidelinesFor.pdf 任何转载本文翻译请注明出处

原创粉丝点击