SSAS 第一篇:多维数据分析基础
多维数据分析是指按照多个维度(即多个角度)对数据进行观察和分析,多维的分析操作是指通过对多维形式组织起来的数据进行切片 、切块、聚合、钻取 、旋转等分析操作,以求剖析数据,使用户能够从多种维度、多个侧面 、多种数据综合度查看数据,从而深入地了解包含在数据中的信息和规律。
多维数据分析以数据仓库为基础,按照维度模型来设计数据仓库。在维度模型中,把存储度量的表称作事实表,把存储属性的表叫做维度表。事实表存储的是可概括的数据,维度中包含属性和层次结构。用户可以按照层次结构对数据进行聚合,从High Level上分析数据。
一,度量和度量值
度量(Measure)是事实表中一个数值类型的属性,对数值进行聚合计算是有意义的,例如,学生的分数,计算学生的平均分数是有意义的。
度量值是指可概括的数值,是度量的值,度量值又被称作事实(fact),这也是“事实表”名称的由来。
从维度模型来看,事实表中除了维度的外键列和主键列之外,其他的列都是度量,这些列的值是度量值。由此可以得出,事实表的构成是:主键列+维度外键+度量。
事实表存储数据的详细程度称作事实表的粒度,由于粒度是由事实表引用的外键列确定的,因此一个事实表只能有一个粒度,不同粒度的事实数据必须分别存储到不同的事实表中。
二,维度和层次结构
维度是分析数据的角度,维度和维度之间是相互独立的。在报表中,增加维度只是创建了一个新的、独立的细分度量值的方法。从数据分析的角度来讲,增加维度是把度量值更细分,增加新的属性来分解数据。
属性是维度表的一列,主键属性(Primary Key Attribution)唯一地确定了维度表中的其他属性,属性值是int类型;由于主键属性不具有可读性,通常为维度表创建一个名称属性(Name Attribution),是字符类型,用于说明主键属性标识的实体。维度表的每一行都是不同的实体,但是其名称属性可能是相同的,例如,人名。由于主键属性是int类型,值是唯一的,占用的存储空间小,因此大量应用于事实数据中,作为外键列。
维度的作用是提供数据分析的角度,通常在不同的维度上对度量值做聚合计算,从High Level上来分析数据。在维度中,把可以用于聚合的属性叫做分组属性,或可聚合属性(Aggregatable Attribution);把不可用于聚合的属性叫做成员属性(Member Attribution),成员属性的作用是提供额外的信息。
属性的值称作成员,例如,颜色属性,其成员是Black,White,Red等,还有一个特殊的成员All,是指所有的成员。在做聚合运算时,ALL成员的意义是:group by子句中忽略该属性。
维度的相关属性之间具有包含关系,通过把相关的属性添加到各个级别,可以创建层次结构。例如,2017年是2017年所有月份的上层级别,月份是其日期的上次级别,年,月,日构成了一个层次结构。在创建层次结构时,通常会在最底层添加一个ALL级别,ALL级别只包好一个成员:所有日期,是所有数据在日期的聚合。
在层次结构中,如果每一个子级成员都只有一个父级成员,那么该层次结构是自然层次结构,从数据结构上来看,自然层次结构是一个树形结构。在层次结构中,ALL级别也叫做根级成员,最底层的成员叫做叶级成员。
三,代理键和业务键
使用整数键值来代表维度成员是出于三个方面的考虑,第一个方面是减少事实表的大小,第二个方面是把名称属性重复的不同实体区分开来,第三个方面是简化实体的标识,具体原因是:由于数据仓库通过提取业务系统中的数据来构建,在不同的业务系统中,标识同一实体的主键(称作业务键)可能是不同的,而不同实体的业务键可能是相同的,这就使得数据仓库必须使用自己的唯一值来标识来自不同业务系统的实体,数据仓库产生的,用于唯一标识一个实体的主键,也叫做代理键。
业务键的类型可以是整数,也可以是字符类型,但是代理键是整数类型,只有使用代理键,事实表中的外键和维度表的主键才能真正被数据仓库所控制。
四,多维数据集
OLAP(Onlie Analytical Processing)是联机分析处理的简称,是一种把关系数据转换为多维数据集的工具。不同的OLAP工具以不同的方式定义、存储和管理多维数据集(Cube),Cube也称作数据立方体。数据立方体表示由若干个维度所描述的一个数据集合,每个维度各自表示一个可对此数据集合进行观察和分析的业务角度。
SSAS(SQL Server Analysis Service,简称分析服务)是一种实现OLAP功能的服务,它使用数据库模式来存储多维数据集。从理论上讲,分析服务不是BI系统的必要组成部分,因为所有的数据都来自于关系型数据库, 可以直接从数据库提取数据给报表服务供客户查询。但是当数据足够大时,从数据库中查询数据就会变的非常慢。
SSAS把数据从数据库中提取出来,经过加工和处理之后,形成Cube,报表软件就可以按照不同的属性和维度来分析数据,不仅速度快,而且计算灵活。因此,SSAS的定位实际上是一个数据库服务, 把在关系数据库中加工过的数据仓库或其他原始数据进行再次加工,作为报表使用的中间数据库。
分析服务作为报表数据源的优势主要有三个:快速的响应,基于元数据的查询和灵活的计算公式。
1,快速响应
一般来说,要么在查询时花更少的时间进行相关计算,要么在查询前就已经进行了相关的计算,而预先存储已经计算好的数值,是实现快速响应的最好方法。
分析服务预先存储计算好的数据值,这些数值不是最终的聚合值,而是中间级聚合,可以供多个查询使用,以计算出最终的聚合值。
注意,在分析服务中创建数据聚合,与在关系型数据库中创建聚合是相同,逻辑上都是先分组,再对每个分组进行聚合。由于聚合规则是关联的,例如,均值实际上是汇总值和总数量的商,因此不必计算每个可能的聚合,可以通过创建中间聚合,这样就可以使用较少的数据聚合满足不同级别的聚合查询需求。
2,基于元数据
元数据是指数据的数据,维度的元数据包括属性和层次结构,属性分为可聚合属性和不可聚合属性(又称作成员属性)。对于维度中的每个属性,分析服务都会自动创建包含两级的层次结构,顶层是单个All成员,它是该属性所有成员的聚合,选择属性层次结构中的All成员,相当于忽略该属性。
自存在(auto-exist)特性是指分析服务自动识别维度中确实存在的属性成员的组合。
分析服务基于维度层次结构自动对度量值进行聚合,并把细节级数据和聚合数据组织成度量值组。
3,计算
自动对每个维度的层次结构进行聚合计算,创建计算成员,
五,度量值组
分析服务可以 把多个相关的度量值组和维度构造成多维数据集,那什么是度量值组?
事实表中包含数值数据的列对应于维度模型中的度量值,因此,每个事实表都是一组度量值,分析服务使用一种称作度量值组(Measure Group)的逻辑结构来组织信息,度量值组对应于单个事实表及其相关的维度。
度量值组存储的数据主要分为两部分:
- 度量值组包含了代表每个维度的外键列和每个度量值,也就是事实表中的数据,称作细节数据;
- 度量值组包含了每个维度中的成员的可能组合所对应的聚合值,分析服务按照维度的层次结构对度量数据进行聚合,称作聚合数据。
度量值组和事实表的差别在于:事实表只包含最低粒度级别的度量值,而度量值组不仅包含了事实表的数据,还包含了全部更高粒度的聚合数据。
如果维度数据仓库中,只有一个事实表,那么OLAP数据库中只有一个度量值组。分析服务可以把若干个相关的度量值组和维度构造成多维数据集(Cube)。
参考文档:
SSAS 第一篇:多维数据分析基础的更多相关文章
- Python之路【第一篇】:Python基础1
本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...
- Python之路【第一篇】:Python基础
本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...
- 图解Python 【第一篇】:Python基础1
本节内容一览图 一.Python简介 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间, ...
- Shiro第一篇【Shiro的基础知识、回顾URL拦截】
Shiro基础知识 在学习Shiro这个框架之前,首先我们要先了解Shiro需要的基础知识:权限管理 什么是权限管理? 只要有用户参与的系统一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安 ...
- 《LDAP服务器的配置与客户端的测试》RHEL6——第一篇 运维工程师必考
ldap这种原始的服务器搭建起来比较复杂,同时它也是CE必考的(客户端的搭建). 服务器端的配置: 1.安装openldap-servers软件包 2.查看ldap模板文件的存放位置: 3.拷贝lda ...
- 第一篇.1、python基础之核心风格
一.语句和语法 #:注释 \:转译回车,继续上一行,在一行语句较长的情况下可以使用其来切分成多行,因其可读性差所以不建议使用 ::将两个语句连接到一行,可读性差,不建议使用 ::将代码的头和体分开 语 ...
- Vue入坑第一篇
写在前面的话:文章是个人学习过程中的总结,为方便以后回头在学习.文章中会参考官方文档和其他的一些文章,示例均为亲自编写和实践,若有写的不对的地方欢迎大家和我一起交流. 一.前言 本篇作为vue入门的一 ...
- BI之SSAS完整实战教程3 -- 创建第一个多维数据集
上一篇我们已经完成了数据源的准备工作,现在我们就开始动手,创建第一个多维数据集(Cube). 文章提纲 使用多维数据集向导创建多维数据集 总结Cube设计器简介 维度细化 总结 一.使用向导创建多维数 ...
- Python编程笔记(第一篇)Python基础语法
一.python介绍 1.编程语言排行榜 TIOBE榜 TIOBE编程语言排行榜是编程语言流行趋势的一个指标,每月更新,这份排行榜排名基于互联网有经验的程序员.课程和第三方厂商的数量. 2.pytho ...
随机推荐
- freecplus框架,Linux平台下C/C++程序员提高开发效率的利器
目录 一.freecplus框架简介 二.freecplus开源许可协议 三.freecplus框架内容 字符串操作 2.xml解析 3.日期时间 4.目录操作 5.文件操作 6.日志文件 7.参数文 ...
- Ansible-1 基本认识及清单与模块
ansible 一.常用的自动化运维工具 1.puppet 基于ruby开发,采用c/s架构,扩展性强,基于ssl,远程命令执行相对较弱, 2.saltstack 基于python开发,采用C/S架构 ...
- 每天都在用 Map,这些核心技术你知道吗?
本篇文章站在多线程并发安全角度,带你了解多线程并发使用 HashMap 将会引发的问题,深入学习 ConcurrentHashMap ,带你彻底掌握这些核心技术. 全文摘要: HashMap 核心技术 ...
- 菜鸟对java和Go的理解
1.go对比java go通过结构体嵌套+接口实现类似面向对象中的继承和多态.个人认为尤其是go的接口抓住了多态的本质.而Go提倡的面向接口的思想也可能使得架构上更加解耦. 2.关于Go不要通过共享内 ...
- ubutu 12.04
1.[系统设置]->[外观]->[行为]->[自动隐藏启动器],隐藏左侧边栏后,可以按快捷键[CTRL+a]弹出侧边栏. 2.QtCreator调试,提示[ptrace不允许的操作] ...
- Java 14 发布了,可以扔掉Lombok了?
2020年3月17日发布,Java正式发布了JDK 14 ,目前已经可以开放下载.在JDK 14中,共有16个新特性,本文主要来介绍其中的一个特性:JEP 359: Records 官方吐槽最为致命 ...
- 深入理解计算机系统 (CS:APP) - 高速缓存实验 Cache Lab 解析
原文地址:https://billc.io/2019/05/csapp-cachelab/ 这个实验是这学期的第四个实验.作为缓存这一章的配套实验,设计得非常精妙.难度上来讲,相比之前的修改现成文件, ...
- 在linux系统中安装LANMP
1.安装LANMP步骤 root@kali:~# wget http://dl.wdlinux.cn/files/lanmp_v3.tar.gz #下载 root@kali:~# tar xzvf l ...
- 重定向 CORS 跨域请求
TL;DR 非简单请求不可重定向,包括第一个preflight请求和第二个真正的请求都不行. 简单请求可以重定向任意多次,但如需兼容多数浏览器,只可进行一次重定向. 中间服务器应当同样配置相关 COR ...
- Js的new运算符
new运算符 在JavaScript中,new是一个语法糖,可以简化代码的编写,可以批量创建对象实例. 语法糖Syntactic sugar,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影 ...