BI之SSAS完整实战教程2 -- 开发环境介绍及多维数据集数据源准备
上一篇我们已经完成所有的准备工作,现在我们就开始动手,通过接下来的三篇文章创建第一个多维数据集。
传统的维度和多维数据集设计方法主要是基于现有的单源数据集。
在现实世界中,当开发商业智能应用程序时,很可能需要处理多个关系数据源。
我们可以通过创建一个DSV提供一个整合的单源视图,其中仅包括你定义的一个或多个数据源中感兴趣的数据。数据源和数据源视图构成了后面要介绍的维度和多维数据集等结构的基础。
AS2012 支持的主要关系数据源包括SQL SERVER, Oracle, DB2,Teradata等。
对于某种特定的数据源,可能需要安装数据提供程序的其他客户端组件,以便可以在计算机上使用适用于该特定数据源的OLE DB提供程序或.NET提供程序。
这些客户端组件应该不仅可以在使用SSDT设计数据库的开发计算机上使用,还必须可以在运行AS实例的服务器计算机上使用。
另外,创建数据源时还可以通过Connection Manager对话框指定其他连接属性,例如连接查询超时、隔离级别以及最大连接数等。
本篇我们先准备好多维数据集要使用的数据源,为后续创建多维数据集打下基础。
文章提纲
- 主要步骤
- 新建项目及IDE中结构介绍
- 创建数据源
- 创建数据源视图(DSV,作为多维数据集的构建基础)
- 关于DSV必须掌握的六点
- 总结
紧接着上篇文章,我们打开SSDT后,按照如下步骤进行。
主要步骤
一、新建项目及IDE结构介绍
1. 主菜单中, File à New à Project
2. 选择 Analysis Services Multidimensional and Data Mining Project 模板
3. 输入ASMultidimensionalPOC名称,点击OK创建此项目。

SSDT环境包括多个工具窗口,需要重点关注 Solution Explorer, Properties, Output 窗口。

其中Solution Explorer 窗口需要说明下。
包括8个文件夹:
- Data Sources:数据源
- Data Source Views :数据源视图,后面简称为DSV,可包含一个或多个数据源的表
- Cubes :分析的基础。一个Cube(多维数据集)由一个度量值组集合和一个维度集合构成。
- Dimensions:维度,指的是对数据进行切片以查看感兴趣的特定数量数据时所依据的类别。
说明:
每个维度包含一个或多个层次结构。存在两种类型的层次结构:特性层次结构和用户层次结构。
约定:后面特性层次结构被称为特性,用户层次结构被称为层次结构。特性对应于维度表中的列,而层次结构是通过组合若干相关特性(列)构成的。例如, 绝大多数数据集都具有Time维度。通常情况下,Time维度包含Year、Month、Date和Day特性,以及一个Year – Month – Date 层次结构。
- Mining Structures (先不讨论)
- Roles (先不讨论)
- Assemblies (先不讨论)
- Miscellaneous (先不讨论)
二、创建数据源
使用微软示例数据库AdventureWorksDW2012为数据源,下载地址
http://msftdbprodsamples.codeplex.com/downloads/get/165405
下载完直接附加一下就可以了。
创建顺序基本按照Solution Explorer 窗口里面文件夹的顺序
右键 Data Sources à New Data Source…


新建一个源,参考下图进行填写。(注意选中Save my password)
指向我们事先准备的AdventureWorksDW2012, 点击Test Connection通过后点击OK

可以看到新建的数据源,继续点击 Next

选择 Use a specific Windows user name and password选项,输入对AdventureWorksDW数据库具有访问权限的账户凭证,单击 Next

最后一个页面,可以更改Data source name,我们使用默认名称, 点击Finish就完成了数据源的创建。

三、创建数据源视图
DSV提供了在OLAP数据库中使用的表的逻辑视图。DSV可以包含来自一个或多个数据源的表和视图。因为多维数据集和维度是从DSV创建的,而不是直接从数据源对象创建的,我们需要在AS数据库中创建DSV.
步骤:
右键 Data Source Views à New Data Source View…
点击 Next进入下一步

选择之前我们创建的数据源,下一步。

从左边Available objects选择需要的表移至右边 Included objects中。
下一步

使用默认提供的名字,点击Finish完成DSV的创建。

完成创建后会自动打开DSV.
DSV设计器包含三个窗格: Diagram Organizer, Tables, Diagram View.
可以通过在DSV设计器中添加、删除以及修改表和视图来对DSV进行更改。

下面我们分别介绍这三个窗格:
最右侧是 Diagram View 窗格。
Diagram View显示表及其关系的图形表示形式。显示的每个表都包含相应的列及是否有主外键标志的指示。表之间关系是通过连接两个表的线条表示的, 小钥匙表示主键列。连接线显示表之间的关系。如果双击某个连接线,可以找到用于构成该关系的联接的每个表的列。
若要查看DSV所指定的数据样本,右击表,选择Explore Data, 默认查询前5000行。通过单击Sampling Options更改检索的行数。

左上是Diagram Organizer(关系图组织程序) 。对关系图中的表所做的操作会实时反映在整个DSV中。默认情况下,有一个称为All Tables的关系图会包含DSV中的所有对象。
左下是Tables窗格,其中显示DSV中所有表的树视图,以及这些表及其他表的关系。
可以看到,主键是CurrencyKey
展开Relationships文件夹,DimCurrency通过CurrencyKey列联接到两个Fact表

右键Relationships à FactInternetSales(using CurrencyKey),选择Edit Relationship… 可以看到主外键关系

关于DSV必须掌握的六点
关于数据源视图的一些常用功能(针对三个窗格进行操作)需要掌握:
一、在DSV中添加/删除表
如果一开始表没有添加完全或需要删除一些表, 可以右击 Diagram View 窗格, 选择Add/Remove Tables 可以进行修改。


二、在DSV中指定主键和关系
DSV向导可以提取在基础关系数据库中指定的主键和关系,并将它们添加到DSV中。但是,你使用的某些OLTP数据可能并没有为相关表指定主键和关系。
DSV设计器提供了针对没有定义主键的表指定逻辑主键的功能。通过这种方式,可以高效的修改DSV中表之间的关系,或者在表之间添加新的关系。
若要为某个表设立逻辑主键,有两种方式
1. 在表中选择要指定为逻辑主键的一列或多列,右击并选择Set Logical Primary Key
2. 可以通过拖拽的方式设立主外键关系。(起点为外键, 目标是主键)
三、在DSV中添加一个基于命名查询的表
当现有物理表不能满足我们要求时,可以直接在DSV 设计器中通过SQL语句查询已有的表,产生自定义表。
如下图,在DSV设计器的关系图窗格中右击,选择 New Named Query,直接用一个SQL查询创建新表。

四、在某些情况下可能要在已有表中创建新列。
例如,员工的首名、中间名和姓氏创建一个包含该员工全名的列。
可以直接右击Employee,然后选择New Named Calculation

DSV在AS数据库的元数据中维护命名计算定义;不会将定义写到基础表中。
五、在Diagram Organizer中创建新的视图
数据仓库设计由一个或多个事实表以及关联的维度表构成。
小型数据仓库通常包含10~20个表, 而较大的数据仓库可能会包含一百多个表。
DSV中包含非常多的表肯定会在一定程度上增加导航和使用的复杂性。
可以按照主题新建一些自定义的视图以方便使用。
如下图方框处默认会创建一个<All Tables>关系图,你可以增加其他的,如HR主题,财务主题等。

若要创建新的关系图,请执行以下操作:
1.右击Diagram Organizer窗格,然后选择New Diagram
2.将新的关系图命名为Internet Sales
3.右击Diagram窗格并选择Show Tables,选择需要包含的表。


4.选择FactInternetSales表,单击OK
5.右击刚刚添加的表的标题,然后选择Show Related Tables.

上述操作可以获得一个包含FactInternetSales事实表以及相关维度表的关系图。
如果不想看到某个关系图中的某个特定表,可以右击该表并选择Hide
如果要添加单个表,也可以直接从左下Tables窗格拖拽到Diagram窗格。
六、查看数据源视图属性
AS项目中每个对象(表,视图,列和关系)都具有特定的属性。
这些属性就不一一讲述了,大家可以自己打开看看。
有几个简单提一下。
1. 普通列有Length属性,仅适用于字符串数据类型,其他数据类型均为 -1.
2. 不能更改的属性,显示为灰色(只读属性)
3. 可以更改FriendlyName属性,DSV关系图视图中右击,通过选择Show FriendlyName选项在用户友好名称和原始列名称直接切换。
4. 命名计算列不包含FriendlyName属性。
5. 表属性中TableType显示基础数据源时表还是视图。
总结
现在,你已经成功使用SSDT创建了一个DSV,可以使用这些表来构建多维数据集和维度,后续将会围绕这个例子继续进行扩展。
另外说明一下,我们示例中DSV的表都来自于一个数据源,DSV设计器可以在单个DSV中包含来自多个数据源的表。
新增不同源表的步骤类似,只需要将我们提到的步骤稍加组合,简单说明一下:
首先, 使用数据源向导定义涉及的各个表的数据源。
完成该操作后,可以创建一个DSV, 并在其中包含来自上述数据源之一的表。
这第一个数据源被称为主要数据源,要求必须是SQL Server数据源。
然后,在DSV设计器中可以选择其他数据源来添加表(通过Add/Remove Tables)
欢迎大家多多评论与支持, 祝学习进步:)
相关文章列表:
- BI之SSAS完整实战教程4 -- 部署至SSAS进行简单分析 @20160908
- BI之SSAS完整实战教程3 -- 创建第一个多维数据集 @20160907
- BI之SSAS完整实战教程2 -- 开发环境介绍及多维数据集数据源准备 @20160823
- BI之SSAS完整实战教程1 -- 开篇, BI简介 & SSAS简介 @20160816
BI之SSAS完整实战教程2 -- 开发环境介绍及多维数据集数据源准备的更多相关文章
- BI之SSAS完整实战教程7 -- 设计维度、细化维度中 :浏览维度,细化维度
上篇文章我们已经将Dim Geography维度设计好. 若要查看维度的成员, AS需要接收该维度的详细信息(包括已创建的特性.成员属性以及多级层次结构), 通过XMLA与AS的实例进行通信. 今天我 ...
- BI之SSAS完整实战教程6 -- 设计维度、细化维度上:创建维度定义特性关系
前面我们使用过数据源向导.数据源视图向导.Cube向导来创建相应的对象. 本篇我们将学习使用维度向导来创建维度. 通过前面几个向导的学习,我们归纳一下共同点,主要分成两步 1. 使用某种对象类型的向导 ...
- BI之SSAS完整实战教程5 -- 详解多维数据集结构
之前简单介绍过多维数据集(Cube)的结构. 原来计划将Cube结构这部分内容打散,在实验中穿插讲解, 考虑到结构之间不同的部分都有联系,如果打散了将反而不好理解,还是直接一次性全部讲完. 本篇我们将 ...
- BI之SSAS完整实战教程4 -- 部署至SSAS进行简单分析
上一篇已经创建了多维数据集的结构. 接下来我们将多维数据集的架构定义发送到Analysis Services实例,部署到AS上去. 文章提纲 部署和浏览多维数据集 SSMS使用简介 总结 一.部署和浏 ...
- BI之SSAS完整实战教程1 -- 开篇, BI简介 & SSAS简介
文章提纲 商业智能(BI, Business Intelligence)基本概念 SSAS(SQL Server Analysis Services)相关工具(开发.管理和客户端) 总结 一.商业智能 ...
- BI之SSAS完整实战教程3 -- 创建第一个多维数据集
上一篇我们已经完成了数据源的准备工作,现在我们就开始动手,创建第一个多维数据集(Cube). 文章提纲 使用多维数据集向导创建多维数据集 总结Cube设计器简介 维度细化 总结 一.使用向导创建多维数 ...
- Arduino可穿戴开发入门教程Arduino开发环境介绍
Arduino可穿戴开发入门教程Arduino开发环境介绍 Arduino开发环境介绍 Arduino不像我们使用的PC端操作系统一样,可以直接在操作系统中安装软件为操作系统编程.Arduino的软件 ...
- [译]Vulkan教程(03)开发环境
[译]Vulkan教程(03)开发环境 这是我翻译(https://vulkan-tutorial.com)上的Vulkan教程的第3篇. In this chapter we'll set up y ...
- vue.js2.0实战(1):搭建开发环境及构建项目
Vue.js学习系列: vue.js2.0实战(1):搭建开发环境及构建项目 https://my.oschina.net/brillantzhao/blog/1541638 vue.js2.0实战( ...
随机推荐
- Https 公钥、私钥、证书
.https的握手协议: http://blog.csdn.net/clh604/article/details/221799072.证书的概念:http://blog.csdn.net/sealya ...
- [原创]android开源项目源码解析(一)----CircleImageView的源码解析
CircleImageView的代码很简洁,因此先将此工程作为源码解析系列的第一篇文章. 解析说明都在代码里了. /* * Copyright 2014 - 2015 Henning Dodenhof ...
- C# 读取JSON
引用 Newtonsoft.Json.dll //C# 读取JSON Newtonsoft.Json.Linq.JObject jsonStr = Newtonsoft.Json.Linq.JObje ...
- 用Unity模仿CSGO里的火焰效果
CSGO里的火焰效果和真实的情况比较像,能沿着遮挡物前进,如下是模仿效果. 思路比较简单,开始想的是一圈一圈发出去,但是前圈与后圈的联系不好做,换种思路,每个方向发射一条线,这样根据上一个位置的方位先 ...
- HTML5图片旋转
HTML5图片旋转 首先我们使用Cococs2dx-Js-Lite版,来创建一个工程,我们所需要的开发环境如下: 1,webstrom 2,google chrome浏览器 3,cocos2dx-Js ...
- Swift 正式开源, 包括 Swift 核心库和包管理器
Swift 正式开源!Swift 团队很高兴宣布 Swift 开始开源新篇章.自从苹果发布 Swfit 编程语言,就成为了历史上发展最快的编程语言之一.Swift 通过设计使得软件编写更加快速更加安全 ...
- Spring进阶教程之在ApplicationContext初始化完成后重定义Bean
前言 很久没有写博客了,也是两个原因:一是自己觉得一直在班门弄斧,其实自己没什么技术可言:二是很多朋友的问题实际上可以自行解决,我经常觉得不该我来过问,或者是有时候我认为技术还得靠自己钻研,我一两句话 ...
- 实现让Lync client也能够"潜水"隐身聊天
看到MSN或QQ,都支持隐身聊天. Lync Server 2013也是支持的. 1.Server端:Lync 2013 Server 缺省策略是没有设置显示脱机功能.(设置前截图) 2.直 ...
- 【转载】C#之int与Java之Integer的区别
本文涉及到一些JVM原理和Java的字节码指令,推荐感兴趣的读者阅读一本有关JVM的经典书籍<深入Java虚拟机(第2版)>,将它与我在<.NET 4.0面向对象编程漫谈>中介 ...
- Java知多少(下)
Java知多少(78)Java向量(Vector)及其应用 Java知多少(79)哈希表及其应用 Java知多少(80)图形界面设计基础 Java知多少(81)框架窗口基础 Java知多少(82)标签 ...