上一篇我们已经完成所有的准备工作,现在我们就开始动手,通过接下来的三篇文章创建第一个多维数据集。

传统的维度和多维数据集设计方法主要是基于现有的单源数据集。

在现实世界中,当开发商业智能应用程序时,很可能需要处理多个关系数据源。

我们可以通过创建一个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完整实战教程2 -- 开发环境介绍及多维数据集数据源准备的更多相关文章

  1. BI之SSAS完整实战教程7 -- 设计维度、细化维度中 :浏览维度,细化维度

    上篇文章我们已经将Dim Geography维度设计好. 若要查看维度的成员, AS需要接收该维度的详细信息(包括已创建的特性.成员属性以及多级层次结构), 通过XMLA与AS的实例进行通信. 今天我 ...

  2. BI之SSAS完整实战教程6 -- 设计维度、细化维度上:创建维度定义特性关系

    前面我们使用过数据源向导.数据源视图向导.Cube向导来创建相应的对象. 本篇我们将学习使用维度向导来创建维度. 通过前面几个向导的学习,我们归纳一下共同点,主要分成两步 1. 使用某种对象类型的向导 ...

  3. BI之SSAS完整实战教程5 -- 详解多维数据集结构

    之前简单介绍过多维数据集(Cube)的结构. 原来计划将Cube结构这部分内容打散,在实验中穿插讲解, 考虑到结构之间不同的部分都有联系,如果打散了将反而不好理解,还是直接一次性全部讲完. 本篇我们将 ...

  4. BI之SSAS完整实战教程4 -- 部署至SSAS进行简单分析

    上一篇已经创建了多维数据集的结构. 接下来我们将多维数据集的架构定义发送到Analysis Services实例,部署到AS上去. 文章提纲 部署和浏览多维数据集 SSMS使用简介 总结 一.部署和浏 ...

  5. BI之SSAS完整实战教程1 -- 开篇, BI简介 & SSAS简介

    文章提纲 商业智能(BI, Business Intelligence)基本概念 SSAS(SQL Server Analysis Services)相关工具(开发.管理和客户端) 总结 一.商业智能 ...

  6. BI之SSAS完整实战教程3 -- 创建第一个多维数据集

    上一篇我们已经完成了数据源的准备工作,现在我们就开始动手,创建第一个多维数据集(Cube). 文章提纲 使用多维数据集向导创建多维数据集 总结Cube设计器简介 维度细化 总结 一.使用向导创建多维数 ...

  7. Arduino可穿戴开发入门教程Arduino开发环境介绍

    Arduino可穿戴开发入门教程Arduino开发环境介绍 Arduino开发环境介绍 Arduino不像我们使用的PC端操作系统一样,可以直接在操作系统中安装软件为操作系统编程.Arduino的软件 ...

  8. [译]Vulkan教程(03)开发环境

    [译]Vulkan教程(03)开发环境 这是我翻译(https://vulkan-tutorial.com)上的Vulkan教程的第3篇. In this chapter we'll set up y ...

  9. vue.js2.0实战(1):搭建开发环境及构建项目

    Vue.js学习系列: vue.js2.0实战(1):搭建开发环境及构建项目 https://my.oschina.net/brillantzhao/blog/1541638 vue.js2.0实战( ...

随机推荐

  1. SQL Server 2008|2012 阻止保存要求重新创建表的更改

    不是很理解为什么在SQL Server 2008及以后的版本中会加入阻止保存要求重新创建表的更改这个选项.太麻烦了,每次修改表结构的时候会被"阻止".很不方便. 问题描述: SQL ...

  2. LESS详解之函数(四)

    之前已经为大家介绍了一些LESS函数,大家应该对之前介绍的有所了解了.下面依旧为大家介绍LESS的函数,附加着一些小例子.希望这些有关LESS的函数能在大家编写LESS的时候有所帮助. saturat ...

  3. iOS-Xcode上传后iTunes Connect构建版本不显示

    在升级到Xcode8版本以后大多数人会碰到这个问题-开开心心开发好一款app以后上传到iTunes后台提交审核,然而iTunes Connect后台活动栏里没有出现我们上传的app,确切的说是显示一会 ...

  4. Rxlifecycle(三):坑

    坑1 Observable.just("hello world!") .compose(this.<String>bindUntilEvent(ActivityEven ...

  5. .NET 相关工具

    加密工具,反DUMP,反调试,反编译,加密代码资源内容,混淆流程,变量.Confuser is a protector/obfuscator for .NET, providing great sec ...

  6. 【Thinking in Java-CHAPTER 3】操作符

    优先级 赋值 对象在使用c=d,那么c和d都指向原本只有d指向的那个对象. 方法调用中的别名问题:当一个对象作为参数传递到一个函数中,函数改变了这个参数,则改变了传递进来的对象: 自增和自减 浮点型的 ...

  7. PyAMF and django ForeignKey

    In order to support this, PyAMF needs to provide a synonym mapping between fields. Until then, you c ...

  8. iOS时间那点事儿–NSTimeZone

    NSTimeZone **时区是一个地理名字,是为了克服各个地区或国家之间在使用时间上的混乱. 基本概念: GMT 0:00 格林威治标准时间; UTC +00:00 校准的全球时间; CCD +08 ...

  9. 3-5年的PHPer常见的面试题

    看到有很多,的总结一下,比较适合有一定经验的PHPer 1.平时喜欢哪些php书籍及博客?CSDN.虎嗅.猎云 2.js闭包是什么? 3.for与foreach哪个更快? 4.php鸟哥是谁?能不能讲 ...

  10. 使用tomcat作为web应用容器时,启用新线程找不到Session的问题

    今天做一个功能,为了快速响应前端,业务完成后,另起了一个线程做一些不影响业务的统计工作,然后立即将业务操作结果返回给前台. 结果在新线程里报空指针找不到request对象.检查了下,我们用的是stru ...