SQL SERVER BI 入门:(1)安装与基础概念
SQL SERVER BI 入门
或许有很多同学和我一样,只是听说过BI这个词汇,但如果工作不涉及到数据统计分析或数据挖掘,很难接触这方面的知识。我以前一直向往能在这方面有所历练,恰巧最近公司需要做数据统计和分析的工作,这份工作我主动提出来做,荣幸之至。写这篇文章也是对我最近工作的总结。
下载并安装
我工作选用的SqlServer 2008 R2,由于在自己电脑上写博客,所以我这里尝试使用2012版本,顺便也能看看哪里不同。 下载地址是http://www.microsoft.com/en-us/download/details.aspx?id=29066如果你的系统是中文的则选择中文版。
安装时选择功能模块如下:[配图1]
请注意右下角的Prerequisites for selected features的提示内容,需要4.0,其实还需要3.5。
基本概念介绍
数据分析主要包含如下内容:
原始数据库
原始数据库主要是用于一些数据上报的数据存储,它包含的是最原始的信息,比如一个用户在什么时间访问了什么页面或点击了哪些按钮。这些数据可以通过js、as、或后端代码进行上报。
这种日志性的数据上报一般量非常大,一天可能就产生几亿条数据,之前我在一家广告公司呆过,广告的量大的惊人,因为广告都是在各大门户展现的,所以页面的PV就是广告的条数,用户的相关操作还会有数据产生,每天十来G的数据量都不成问题,所以原始数据库表的设计要注意几点:
1、不能有索引(除了主键),也不需要索引,因为相关的分析统计都在数据仓库里进行。
2、主键必须是有序的主键,如果是GUID之类的,就无法保证顺序,在这数据插入时会调整数据存储的物理顺序,这是非常恐怖的事情,影响速度。
3、如果数据非常大,要考虑采用分区或分库存储。
4、如果瞬间插入的太多数据库压力大,则需要考虑增加一个缓存层来缓解压力,这便需要编写服务对缓存层数据进行整理插入到数据库的工作。这样也的缺点是万一缓存服务挂掉,有可能会有数据丢失的情况,可以选用会持久化的缓存服务。总之,这些是需要权衡的。
数据仓库数据库
数据仓库数据库,是必须的,所有的统计分析都需要以此为基础。数据仓库的表分为两种:维度表(dimension)和事实表(fact)。
1. 维度表
维度很容易理解。例如,我们想知道每天有多少用户使用了产品,那么“每天”就是一个维度,因为我们需要安装“天”来查询有多少用户。同样,年、月、周、季度、地区等都是我们最常见的维度。
2. 事实表
事实表的理解可能会模糊一些。一般可以理解为我们要对哪种数据做统计,这种数据事实产生了哪些记录。比如每个用户每一个操作,这是一个事实。那么我们对用户的操作行为做统计的时就需要行为的事实表。
3. 事实表和维度表的关系
如果我们使用时间维度对用户行为做统计,那么事实表必须要有一个时间字段。而时间字段的存储其实是时间维度表的主键ID,而不是真正的时间,如图:[配图2]
注意,我的事实表FactUserAction(用户操作行为事实)的OperateDate是int类型,和维度表DimDate建立了关系,而且DimDate把日期拆成了年月日三个字段,因为统计可能需要对年和月进行统计,所以这么设计;他们之间有一个层次关系,我们后面会讲。原始表的设计如图
细心的朋友可能会发现,事实表的UserAction也是一个int,是的,其实这也是一个查询维度,只是我们暂时只拿时间做例子。
4. 如何设计事实表和维度表
事实表和维度的设计主要是运维和产品人员的需求而决定的。程序员必能因为开发的复杂而拒绝他们的需求。当然,也不能无理的需求。这篇文章就以时间维度的需求做讲解吧,这个一般也是必须的需求。
5. 事实表和维度表的数据填充
这一项对我们程序员来讲是最为简单的,因为我们可以开发一个服务,定时从原始数据库把数据按照仓库的设计重组,并插入。SQLSERVER BI也提供了现有的工具,这种工具称之为ETL(Extraction-Transformation-Loading数据提取、转换和加载),在SQLSERVERBI里叫SSIS(SqlServer Integration Service)。
图片里三个方块是从一个表里读出数据,然后通过一个列的转换,最后把转换后的列映射到目标库的表里,我这里做的是把CreateTime字段转换成Year Month 和 Day,然后插入到DimDate表
使用ETL要比自己写导入程序更能方便的和Analysis Services交互。比如导入程序后执行唯独表,比如各种数据源的集成,非常方便。不过我没有做深入研究。暂时就不写这一块了,有兴趣的朋友可以慢慢摸索下。
今天就先写这么多,因为我为了截图,安装SQLServer费了好大劲,.NET Framework 3.5总是安装时下载失败。我的系统是windows8,需要单独安装3.5才行。
大家先了解这些概念,不太明白的概念,可以先百科一下。下节写关于Analysis services的使用。