学习BI时,有些迷茫呢,请老师们指点

0
我大学毕业后进入公司(主要是烟草行业的),就开始参与到项目中,使用的SSRS做报表,对于SSRS,还是比较熟练的,对SQL Server数据库比较熟悉,sql语句、存过、函数也都熟练掌握;后面的项目中,有接触过SSIS,使用过SSIS写过一些相对简单的抽取包,熟悉SSIS部署。现在公司的一个项目中,后期有大量的分析,会使用到SSAS,我参考了书籍《SQL Server 2008 商业智能完美解决方案.pdf》,着重看了前两部分,对SSAS有了一些了解,我下载了实例AdventureWorksDW2012,跟着书上操作了下,但是对于数据仓库,我又找了些相关资料看了下,现在的我,还是觉得有些迷茫。。若是给我个业务数据库,让我创建数据仓库,对于维度表和事实表那些,我还是觉得不太能够去实施。。我想请各位老师给点意见。。我怎样才能更深入的掌握好SSAS,应用在公司后面的项目上?
已邀请:
1

梁勇 - 天道酬勤、上善若水。爱好商业智能 2014-11-21 回答

新手入门,你可以看下这个,里面的内容全部过一下,多整个BI有个了解。
天善问答社区精选问题集,每周更新【新手篇】 http://www.flybi.net/question/1069

1.jpg


熟悉完毕后,看下数据仓库建模的视频 数据仓库精品教程【特点,数据仓库和ETL设计思想、架构(自上而下、自下而上)、常用概念】 http://school.flybi.net/course/9


感觉不错的话,考虑下我录制的天善微软BI全套视频讲解,结合项目案例的,包括SSIS+SSAS+SSRS+MDX 微软商业智能实战入门及提高视频教程(含天善独家认证证书) http://school.flybi.net/course/8 平常都有服务和支持的。
1

梁勇 - 天道酬勤、上善若水。爱好商业智能 2014-11-21 回答

给你发一个数据仓库的使用手册,里面有一个数据仓库五步法的步骤,详细看看。


5.4.1 确定主题
即确定数据分析或前端展现的某一方面的分析主题,例如我们分析某年某月某一地区的啤酒销售情况,就是一个主题。主题要体现某一方面的各分析角度(维度)和统计数值型数据(量度),确定主题时要综合考虑,一个主题在数据仓库中即为一个数据集市,数据集市体现了某一方面的信息,多个数据集市构成了数据仓库。
5.4.2 确定量度
在确定了主题以后,我们将考虑要分析的技术指标,诸如年销售额此类,一般为数值型数据,或者将该数据汇总,或者将该数据取次数,独立次数或取最大最小值 等,这样的数据称之为量度。量度是要统计的指标,必须事先选择恰当,基于不同的量度可以进行复杂关键性能指标(KPI)等的计算。
5.4.3 确定事实粒度
在确定了量度之后我们要考虑到该量度的汇总情况和不同维度下量度的聚合情况,考虑到量度的聚合程度不同,我们将采用“最小粒度原则”,即将量度的粒度设置 到最小,例如我们将按照时间对销售额进行汇总,目前的数据最小记录到天,即数据库中记录了每天的交易额,那么我们不能在ETL时将数据进行按月或年汇总, 需要保持到天,以便于后续对天进行分析。而且我们不必担心数据量和数据没有提前汇总带来的问题,因为在后续的建立CUBE时已经将数据提前汇总了
5.4.4 确定维度
维度是要分析的各个角度,例如我们希望按照时间,或者按照地区,或者按照产品进行分析,那么这里的时间、地区、产品就是相应的维度,基于不同的维度我们可 以看到各量度的汇总情况,我们可以基于所有的维度进行交叉分析。这里我们首先要确定维度的层次(Hierarchy)和级别(Level)(图 四:pic4.jpg),维度的层次是指该维度的所有级别,包括各级别的属性;维度的级别是指该维度下的成员,例如当建立地区维度时我们将地区维度作为一 个级别,层次为省、市、县三层,考虑到维度表要包含尽量多的信息,所以建立维度时要符合“矮胖原则”,即维度表要尽量宽,尽量包含所有的描述性信息,而不 是统计性的数据信息。
还有一种常见的情况,就是父子型维度(图五:pic5.jpg),该维度一般用于非叶子节点含有成员等情况,例如公司员工的维度,在统计员工的工资时,部 门主管的工资不能等于下属成员工资的简单相加,必须对该主管的工资单独统计,然后该主管部门的工资等于下属员工工资加部门主管的工资,那么在建立员工维度 时,我们需要将员工维度建立成父子型维度,这样在统计时,主管的工资会自动加上,避免了都是叶子节点才有数据的情况。
另外,在建立维度表时要充分使用代理键,代理键是数值型的ID号码,好处是代理键唯一标识了每一维度成员信息,便于区分,更重要的是在聚合时由于数值型匹 配,JOIN效率高,便于聚合,而且代理键对缓慢变化维度有更重要的意义,它起到了标识历史数据与新数据的作用,在原数据主键相同的情况下,代理键起到了 对新数据与历史数据非常重要的标识作用。
有时我们也会遇到维度缓慢变化的情况,比如增加了新的产品,或者产品的ID号码修改了,或者产品增加了一个新的属性,此时某一维度的成员会随着新的数据的加入而增加新的维度成员,这样我们要考虑到缓慢变化维度的处理,对于缓慢变化维度,有三种情况:
1、缓慢变化维度第一种类型:历史数据需要修改。这样新来的数据要改写历史数据,这时我们要使用UPDATE,例如产品的ID号码为123,后来发现ID 号码错误了,需要改写成456,那么在修改好的新数据插入时,维度表中原来的ID号码会相应改为456,这样在维度加载时要使用第一种类型,做法是完全更 改。
2、缓慢变化维度第二种类型:历史数据保留,新增数据也要保留。这时要将原数据更新,将新数据插入,需要使用UPDATE / INSERT,比如某一员工2005年在A部门,2006年时他调到了B部门。那么在统计2005年的数据时就应该将该员工定位到A部门;而在统计 2006年数据时就应该定位到B部门,然后再有新的数据插入时,将按照新部门(B部门)进行处理,这样我们的做法是将该维度成员列表加入标识列,将历史的 数据标识为“过期”,将目前的数据标识为“当前的”。另一种方法是将该维度打上时间戳,即将历史数据生效的时间段作为它的一个属性,在与原始表匹配生成事 实表时将按照时间段进行关联,这样的好处是该维度成员生效时间明确。
3、缓慢变化维度第三种类型:新增数据维度成员改变了属性。例如某一维度成员新加入了一列,该列在历史数据中不能基于它浏览,而在目前数据和将来数据中可 以按照它浏览,那么此时我们需要改变维度表属性,即加入新的列,那么我们将使用存储过程或程序生成新的维度属性,在后续的数据中将基于新的属性进行查看。
5.4.5 创建事实表
在确定好事实数据和维度后,我们将考虑加载事实表。
在公司的大量数据堆积如山时,我们想看看里面究竟是什么,结果发现里面是一笔笔生产记录,一笔笔交易记录… 那么这些记录是我们将要建立的事实表的原始数据,即关于某一主题的事实记录表。
我们的做法是将原始表与维度表进行关联,生成事实表(图六:pic6.jpg)。注意在关联时有为空的数据时(数据源脏),需要使用外连接,连接后我们将 各维度的代理键取出放于事实表中,事实表除了各维度代理键外,还有各量度数据,这将来自原始表,事实表中将存在维度代理键和各量度,而不应该存在描述性信 息,即符合“瘦高原则”,即要求事实表数据条数尽量多(粒度最小),而描述性信息尽量少。
如果考虑到扩展,可以将事实表加一唯一标识列,以为了以后扩展将该事实作为雪花型维度,不过不需要时一般建议不用这样做。
事实数据表是数据仓库的核心,需要精心维护,在JOIN后将得到事实数据表,一般记录条数都比较大,我们需要为其设置复合主键和索引,以为了数据的完整性和基于数据仓库的查询性能优化,事实数据表与维度表一起放于数据仓库中,如果前端需要连接数据仓库进行查询,我们还需要建立一些相关的中间汇总表或物化视图,以方便查询。

要回复问题请先登录注册