BI学习之一创建一个简单的Olap多维数据集的展现

时间:2022-05-15 08:54:05

项目背景

  '博客园'是一家国内的大型日化用品,生活用品生产,销售公司,它的一部分销售是放在淘宝网上进行的,在淘宝网上这家公司有多个网店,线下有系统对每个网店的销售数据通过淘宝API进行抓取保存,用于每周,月出销售情况的报表.由于报表设计到多个方面,每一次有新的搭配或者比较的话就必须让程序人员修改代码,增加修改报表的内容.现在,'博客园'想通过数据分析人员自己来控制想得到的数据报表,想到什么,得到什么,并且能多角度,多层面的对数据进行分析. 

使用BI数据分析与传统报表的比较

  BI学习之一创建一个简单的Olap多维数据集的展现

  从上面这个比较图可以看出,右边的olap数据展示的话,操作者可以通过手动拖拽树中的度量值,KPI,维度使右边图片及表格动态变化,图片和表格能根据自己的需求进行点击(钻取)查看得到更细的,想要关注的报表,我们可以看到,olap数据分析让我们知道了目前是这样,还能知道为什么是这样,以及以往到如今,甚至未来的发展趋势

BI中的基本概念介绍(结合Analysis Services)

维度(Dimension):
  维度理解为数据的属性,是我们分析数据的角度,比如分析公司在全国各地的各种商品的销售情况,那么商品类别,地区,店铺等就是维度,维度中包含层级,比如说地区,省和省(湖北省,湖南省..)之间就是 水平层及,省下面有市和县等,比如湖北省->恩施市->来凤县,这就是 垂直层级,我们通过维度来定义获取数据分析的条件 

度量值(Measure):

  度量值是基于事实表的一列,是在多个维度下取值的共同点,比如事实表中有一个total_fee的字段,我们就可以通过按照地区维度和时间维度+total_fell这个度量值来分析相应的销售情况.

 

KPI:

  关键绩效指标,将传统的数值分析转变为状态及趋势分析.比如说公司这个月销售额到达了200W,那么这个销售额对于去年这月,或者以往的月份来说是涨了还是降了呢,这个月打了广告,那么就可以通过KPI知道广告带来了多少利润

 

Cube:

  多维数据集是由多个维度,度量值组成的多维数据模型.下图能直观的看到cube的模型:

BI学习之一创建一个简单的Olap多维数据集的展现

事实表:

   存放要分析的数据的表,只包括主键,外键和度量,比如下图: 在这个事实表中,度量为数量和价格,外键是FK打头的几个

BI学习之一创建一个简单的Olap多维数据集的展现

来点实在的吧,自己动手,完成一次olap展现

1.1 环境:

SQL 2008 安装了 Analysis Services,SQL Server Business Intelligence Development Studio

 

1.2  开始吧

  1.2.1 创建项目

   打开VS2008->SQL Server Business Intelligence Development Studio->文件->新建项目->商业智能项目->Analysis Services项目->确定

  1.2.2 

  创建数据源 添加一个数据库连接到我们的数据仓库

  1.2.3

  创建数据源视图, 数据源作为与我们的数据库的一个连接,在数据源中,我们则可以对数据源中我们设置好的维度表,事实表做关系处理,添加计算等

在选取我们想要分析的事实表和维度表之后,我们可以使用工具栏,放大镜来调整显示的百分比。

    1.2.3.1 设置基本维度表和事实表的关系,由于事实表的外键是各个维度表的主键,拖拽事实表中的外键字段匹配维度表中的主键字段来建立关联

    1.2.3.2 设置父子关系,在这个设计里面,由于通过商品的维度表才能知道商品的类目,这里存在一个维度引用,及在Dim商品表和Dim类目表之间,

由于类目表中通过类目的父及编号来保住层级关系,所以这里我们要设置一下父子关系,点击工具栏上面的新建关系,通过设置同表的主外键确定建立父子关系,如图:

  BI学习之一创建一个简单的Olap多维数据集的展现

 

  1.2.4 创建完成后的数据源视图

 

       BI学习之一创建一个简单的Olap多维数据集的展现

维度表和事实表结构如上,这里事实表中的度量只有销售额和销售数量,Dim类目表是个父子维度关系,表中含有一个类目父及编号字段来定义父子关系。

  1.2.5 创建维度      创建维度很简单,这里只说2个特殊的维度创建:

    1.2.5.1.新建类目维度,名称列请选择字段的名称的显示的列,在可用属性中,要把‘类目父及编号’勾选上,完成之后,点击面板上的处理按钮处理一下,这里可能遇见连不上数据源的错误,双击数据源,在模拟信息栏目选项卡选择继承。点击浏览器,我们发现每个类下面默认出现了父类名称,在类目最底下出现了Unknow,这时候需要做2个设置,右击Dim类目维度的属性‘类目父及编号’,将MemberWithData选择为NonLeafDataVisible,右击Dim类目项选择unknownmember里选择hidden,处理一下,浏览,刷新,OK~ 我们后面的维度浏览的时候出现unknow选项的时候,始终这样处理

    1.2.5.2.新建时间维度,时间维度的创建比较特殊,选择维度属性的时候,要记得为日期选择一个格式,比如年,在属性类型一项选择日期->日历->年,小时选择->日期->时间->小时,注意时间维度有一个层次结构,属性面板中的年属性->在新级别中依次拖入半年,季度….形成一个层次关系,记得在每个维度属性的NameCloum列选择相对应显示名称的列,处理之后浏览

  1.2.6 创建cube

     创建cube的时候,度量值选项选取事实表中的销售额和销售数量选项,维度表选择需要分析的几个已建立好的维度,完成之后处理在浏览窗口,我们拖入度量值和维度到右边的空白地方,可以看到这样的结果:(这里的地区我并没有做层次结构 0 0~)

 BI学习之一创建一个简单的Olap多维数据集的展现BI学习之一创建一个简单的Olap多维数据集的展现

 1.2.7 生成本地的cub文件

  这里,为了便于给客户展示效果,我们生成本地的cub文件作为数据源,生成方法:打开SQL2008 Analysis Services,右击数据库新建查询->MDX,输入命令:

 

CREATE GLOBAL CUBE [Hot Sale DW]
Storage 'D:\hotsale.cub'        --cube文件的保存路径
FROM [Hot Sale DW]
(
MEASURE  [Hot Sale DW].[销售总额],   --需要的度量值
MEASURE  [Hot Sale DW].[销售量],
DIMENSION [Hot Sale DW].[Dim地区],  --需要的维度
DIMENSION [Hot Sale DW].[Dim交易状态],
DIMENSION [Hot Sale DW].[Dim日期],
DIMENSION [Hot Sale DW].[Dim商品],
DIMENSION [Hot Sale DW].[Dim网店]
)

 执行之后在D盘就能看到生成的本地cub文件了.

使用dundas olap service 控件进行多维数据展示

  Dundas个人觉得是目前做的最好的图表,报表控件,Dundas chart也是非常的好用,用过一次就爱不释手。如果是管理系统项目推荐使用,网站项目自己决定吧.我这里使用的dundas olap for vs2005 6.1版,我到处没有找到for 2008的,如果谁有,希望发一个,多谢.首先看看完成后的效果吧:

  BI学习之一创建一个简单的Olap多维数据集的展现

额 写到这里实在不想写了,完成展现很简单,直接按照它的demo依葫芦画瓢~~~~ 总之先到这里吧~