设为首页 收藏本站
查看: 760|回复: 0

[经验分享] SQL SERVER BI 入门:(1)安装与基础概念

[复制链接]

尚未签到

发表于 2015-6-29 15:09:09 | 显示全部楼层 |阅读模式
SQL SERVER BI 入门
或许有很多同学和我一样,只是听说过BI这个词汇,但如果工作不涉及到数据统计分析或数据挖掘,很难接触这方面的知识。我以前一直向往能在这方面有所历练,恰巧最近公司需要做数据统计和分析的工作,这份工作我主动提出来做,荣幸之至。写这篇文章也是对我最近工作的总结。

下载并安装
我工作选用的SqlServer 2008 R2,由于在自己电脑上写博客,所以我这里尝试使用2012版本,顺便也能看看哪里不同。 下载地址是http://www.microsoft.com/en-us/download/details.aspx?id=29066如果你的系统是中文的则选择中文版。
安装时选择功能模块如下:[配图1]
DSC0000.jpg

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

今天就先写这么多,因为我为了截图,安装SQLServer费了好大劲,.NET Framework 3.5总是安装时下载失败。我的系统是windows8,需要单独安装3.5才行。
大家先了解这些概念,不太明白的概念,可以先百科一下。下节写关于Analysis services的使用。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-81581-1-1.html 上篇帖子: 在全文索引中同义词的使用(SQL SERVER 2005) 下篇帖子: 深入浅出SQL Server Replication第一篇:走近Replication(上)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表