SSAS 使用手册_第1页
SSAS 使用手册_第2页
SSAS 使用手册_第3页
SSAS 使用手册_第4页
SSAS 使用手册_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SQL SERVER 2008 SSAS使用手册1 BI、OLAP、Analysis Services1.1 BI概念简介BI系统负责从多个数据源中搜集数据,并将这些数据进行必要的转换后存储到一个统一的存储介质中,并提供给使用者将这些数据转换为使用者所需信息的功能。一个BI系统通常包括5层:1. 数据源层(data source layer):由每日的操作数据、文本数据、Excel表格、Access数据库、其他外部数据组成;2. 数据转换层(data transformation layer):转换数据源层为统一的连续数据,并放入数据存储层;3. 数据存储和提取层(data storage a

2、nd retrieval layer):数据仓库;4. 分析层(analytical layer):多维度的OLAP数据库,为决策者提供分析依据;5. 展示层(presentation layer):报表和可视化工具。与目前的RDC系统对应,BSERP数据库便相当于一个数据源层,它提供实时的事务数据。一个由SSIS(SQL Server Integration Services)提供的ETL功能可以将业务数据库中的操作性数据通过一定的规则转换为统一的连续数据,它提供的便是一个数据转换层的功能。通过SSIS转换后的数据,存储到DW_RDC数据仓库中。DW_RDC是一个关系型的数据仓库,包含两种类

3、型的表:维度表和事实表。它提供一个数据存储和提取的功能,但是这里的数据仍然不是多维数据,所以我们需要将这些数据通过SSAS(SQL Server Analysis Services)转换成多维数据并提供分析功能,这些多维数据,存储在BI_RDC中。最后,我们将BI_RDC的数据通过Analyzer展示工具进行多维可视化的展现。1.2 OLAP、Analysis Services由SSAS生成的BI_RDC是一个OLAP(On-Line Analysis Process)多维数据库。OLAP是与OLTP(On-Line Transaction Process)相对应的概念,OLTP是传统的关系型

4、数据库的主要应用,主要是基本的、日常的事物处理;OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。一些在BI系统中的重要概念,也是从OLAP中的概念延伸过来的,比如:属性、层次结构、维度,度量值等。Integration Services、Analysis Services以及Reporting Services是SQL Server提供的BI工具,分别提供BI系统的数据转换层、分析层和展示层的功能。可以看到使用微软的SQL SERVER 产品可以完全实现BI系统中能够提供的所有功能。其中,Microsoft SQL Server 2005 Ana

5、lysis Services 为商业智能应用程序提供了联机分析处理 (OLAP) 功能和数据挖掘功能。Analysis Services 支持 OLAP,能够设计、创建和管理包含从其他数据源(如,关系型数据库)聚合来的数据的多维结构。对于数据挖掘应用程序,Analysis Services 使您能够通过使用各种各样的业界标准数据挖掘算法,设计、创建和查看从其他数据源构造的数据挖掘模型。1.3 使用SSAS需要了解的概念1.3.1 Cube、Dimension和MeasureCube就像一个坐标系,每一个Dimension代表一个坐标轴,要想得到一个点,就必须在每一个坐标轴上取的一个值,而这个点

6、就是Cube中的Cell。见下图(来源于):上图很好的说明了Cube、Dimension、Measure之间的关系。这里需要注意的是:其实Measure也属于一个维度,即Measures Dimension。所有的Measure构成了Measures Dimension,这个维度的只有一个Hierarchy,而且这个Hierarchy只有一个层次(Level)。1.3.2 Hierarchy、Level和Member在上节的图中,每个Dimension只有一个Hierarchy,而在实际的环境中,一个Dimension往往有很多Hierarchy。因此,上一小节中关于“Cube就象一个坐标系,

7、每一个Dimension代表一个坐标轴”这句话其实不够准确,准确的说应该是每一个Hierarchy代表了一个坐标轴,而Hierarchy中每一个Member代表了坐标轴上的一个值。下图以时间维度为例展示了Dimension的内部结构。2 UDM统一维度模型 希望直接从诸如企业资源规划 (ERP) 数据库这样的数据源中检索信息的用户会面临几个重要挑战: 此类数据源的内容通常非常难于理解,因为它们的设计初衷是针对系统和开发人员,而不是用户。 用户所关心的信息通常分布在多个异类数据源中。即使只是使用其他关系数据库,用户也必须了解每个数据库的详细信息(例如,所用的 SQL 方言)。更糟糕的是,这些数据

8、源的类型可能各不相同,不仅包括关系数据库,而且还包括文件和 Web 服务。 尽管许多数据源都倾向于包含大量事务级别的详细信息,但是,支持业务决策制订所需的查询经常涉及汇总信息和聚合信息。随着数据量的增加,最终用户为进行交互式分析而检索此类汇总值所需的时间也会过长。 业务规则通常并不封装在数据源中。用户需要自行理解数据。统一维度模型 (UDM) 的作用是在用户和数据源之间搭建一座桥梁。UDM 构造于一个或多个物理数据源之上。用户使用多种客户端工具(例如,Microsoft Excel)向 UDM 发出查询。即使 UDM 只是作为数据源上的瘦层来构造,对于最终用户而言也有益处:更简单、更容易理解的

9、数据模型,与异构的后端数据源相隔离,并且汇总类型查询的性能也有所提高。在某些方案中,可以自动构造简单的 UDM。如果在构造 UDM 的过程中再增加一些投资,则可以从该模型提供的丰富元数据中获得其他收益。UDM 具有下列优点: 极大地丰富了用户模型。 提供了支持交互式分析的高性能查询,即使是数据量非常大也不例外。 捕获模型中的业务规则,以支持更丰富的分析。 支持“关闭循环”:允许用户按照所看到的数据进行操作。 2.1 基本的最终用户模型 现在考虑一个示例,在该示例中,用户希望比较不同时间段的销售额和配额。 销售额数据存储在主数据库“销售额和库存”,其中包含许多其他的表。甚至在标识出了相关表之后,

10、该用户也可能发现单个实体(例如,产品)的数据分散在很多表中。由于引用完整性由应用程序逻辑强制实施,因此没有定义这些表之间的关系。销售配额存储在另一个应用程序的数据库中。这两个数据库都不会捕获任何业务规则,例如以下事实:为比较配额和实际销售额,必须使用订单发货日期,而不能使用与订单有关的其他日期(订单日期、订单到期日期、计划日期等)。2.1.1 直接访问数据源首先考虑用户直接访问数据源的情况。下图显示了一个使用示例工具构造的查询示例。到目前为止,用户已经完成了大量的工作。其中包括: 从大量名称隐晦的表中筛查出所需的表。 确定了应将哪些列用于联接表。 从很多包含大量针对系统的详细信息的表中,选择那

11、些包含所需详细信息的列。例如,在存储了有关产品类别的详细信息的表中的 11 个列中,只有两个名称列与用户实际相关。 现在用户专注于定义应当在哪里使用“外部”联接与“内部”联接,以及如何对详细信息进行分组以提供所需的聚合。 然而,用户还要面对更艰巨的任务。例如,用户如何联接来自其他数据源的数据?即使其中的一个数据库支持分布式查询,大多数用户仍然无法构造所需查询,而且在此任务中工具可能无法向用户提供足够的支持。代码示例显示了一个查询外部数据的方法。SELECT Quotas.QuotaAmount, Quotas.EmployeeId, ?FROM OPENROWSET(SQLOLEDB,seat

12、tle1;Sales;MyPass,SELECT * FROM Forecasts.dbo.SalesQuota?) As Quotas如果使用其他数据源(如 Web 服务),则在确定如何执行正确的远程调用,然后又如何处理返回的XML以将其与其他数据合并时,用户将遇到另一个巨大的障碍。 最后还有一点:对一个查询执行此项工作之后,进行下一个查询时,此工作的很大一部分又将重复一遍。 2.1.2 使用 UDM 访问数据源与前面的情形相反,以下关系图例示了如何为访问某个基于这些数据源而构造的简单 UDM 的用户生成查询。 Microsoft SQL Server 2005 附带的开发工具提供了此示例中

13、显示的设计界面。但可以使用支持 UDM 的任何接口,包括客户端工具,例如,Office Excel 或 Office Web 组件 (OWC),或很多报表和分析工具中的一种。左边的树视图显示了 UDM 的内容。注意该示例中的以下几点:只为用户显示面向用户的相关项目。系统列(例如,行 GUID 或最后修改日期)是不可见的。所用的名称为友好名称,而没有使用基础数据库中采用的面向开发人员的命名约定。UDM 还将每个业务实体的所有属性分组为单独的“维度”,如产品或雇员。因此,客户端便可引用该示例中的“产品颜色”、“子类别”以及“类别”,而无需在所涉及的大量表之间显式执行联接。 这些表示事务值或度量值的

14、列随后将显示为“度量值”。例如,用户通常都喜欢对销售量或销售配额之类的列进行聚合。这种将数据显示为“度量值”和“维度”的方法称为“维度建模”。 右边的关系图显示了当前查询中包含的元素。在这种情况下,为了请求“按产品类别分类的销售额和配额”,用户只需通过从树视图中将三个相关项目拖动到右侧设计界面中,即可定义查询。用户不必指定实际访问两个不同数据源时所需的详细信息,或在很多相关表之间执行正确的联接。 模型定义了简单的默认格式:例如,使用货币符号。还可以定义更复杂的格式,包括条件格式,例如,如果某个值低于特定的阈值,则以红色显示该值。 同一模型可支持多种查询。例如,只需通过拖动雇员维度中的一个属性便

15、可按雇员对结果进行细分。2.2 扩展基本模型 虽然上面的示例阐释了即使简单的 UDM 也可以显著地简化基本的数据浏览。但是,当用户访问数据时,还会遇到更多的挑战。例如: 支持来自不同用户的众多不同类型查询的 UDM 的规模可能会变得非常庞大。如何才能确保处理特定任务的用户不会受到与之无关的信息的干扰?如何满足全球用户希望看到以其自己的母语显示的报表的要求?如何才能简化所有与时间相关的常见问题?例如,用户可能希望显示与上一年同期进行比较的销售额。 本部分探讨了上述部分问题,说明 UDM 如何支持对基本模型进行扩展以帮助用户实现更高级的数据浏览操作。 2.2.1 层次结构虽然将一个实体的所有属性合

16、并为一个维度可以显著简化用户的模型,但是,还有一些属性关系是用简单列表所无法表达的。在前面的示例中,“类别”、“子类别”以及 SKU 定义了其中一种可用于组织产品的层次结构。由于用户经常希望基于此类层次结构执行分析,因此 UDM 允许定义此类层次结构。例如,按“类别”查看总计之后,用户可能要深入到“子类别”,然后深入到最低的 SKU 级别。每个层次结构都是序列属性,可以在查询中使用这些属性来简化这种向下深化和向上深化的情形。以下关系图示例显示了层次结构可能以何种形式出现在最终用户的界面中。该模型包含若干种不同的层次结构,产品便是按照这些层次结构来组织的。这里显示的查询回答了这个问题:“显示以产

17、品类别分组的销售额和配额,然后细分到子类别。”该查询是通过将“按类别分类的产品”层次结构拖到网格中来定义的。为了查看详细数据,该用户双击“自行车”类别以展开子级别。 UDM 处理如何在层次结构的级别之间进行移动的详细信息。UDM 还处理诸如配额在“子类别”级别不可用而只在“类别”级别可用这样的详细信息。其中一种特殊的层次结构是父子层次结构,这种结构中包含相互之间具有复杂关系的实体。在下一个图中,“雇员”维度具有名为“按组织结构分类的雇员”层次结构。使用此层次结构,您可以更容易地在组织的每个级别浏览父子关系并分析汇总值。例如,主管销售的 Charles Marshall 的销售配额包括其所有员工

18、的销售配额总和再加上与其直接相关的所有销售配额。2.2.2 分类用户通常会为其数据应用分类。例如,用户可能说“这些属性包含了雇员个人详细信息的方方面面”或“此属性是电子邮件地址”。UDM 提供有两种机制,专用于根据此分类来提供其他值:维度、属性和其他对象可以放在语义上有意义的类别中,以便于客户端工具更加合理地使用它们。例如,属性可以标记为 URL。然后,包含此属性的报表便可根据 URL 的值进行导航。另一个属性可能标记为电子邮件地址。在这种情况下,报表客户端就可能根据某些用户的操作自动打开新的电子邮件。 度量值、层次结构和其他对象都可以分组到对用户有意义的文件夹中。使用此分组,报表工具能够以更

19、易于管理的方式显示大量属性。例如,可能有一组标签为“Customer Demographics”的属性。2.2.3 时间时间信息通常使用“日期时间”或“日期”数据类型记录在基础数据源中。尽管精通 SQL 或 XPath 的用户可以提取按年度总计数据所需要的日期信息,但即使是这样的用户也可能会发现很难基于时间的其他方面来为问题编写查询,例如“按星期几显示销售额”或“从七月一日开始,按会计年度显示明细。”但是,UDM 有内置的时间知识,包括以下日历: 自然 会计 报告(“445”等) 生产(13个期间) ISO8601因此,该模型可能包括一个时间维度,该时间维度提供了一组丰富的属性用于定义每日的详

20、细信息。下图显示了当用户选择查看 2001 会计年度的销售量和配额时的结果。若要执行此操作,用户只需将相关项从树拖到筛选区域。UDM 知道如何将该用户操作翻译为日期范围,此外,它还了解业务规则,即查询中必须包括在这些日期发货的订单,而不是在这些日期到期的订单或在这些日期定购的订单。由 UDM 隐式执行正确的联接。 此外,UDM 为回答与时间相关的常见问题提供了特定的支持,这些问题包括诸如“本月与上一年度同一月份的比较”这样的同期比较。 2.2.4 翻译在上面的示例中,模型内容和数据都以一种语言显示。但是,国际用户通常需要查看以他们本地语言显示的元数据。 为了解决此问题,UDM 允许将元数据翻译

21、为其他任何语言。使用特定区域设置连接的客户端应用程序便可接收以相应语言显示的所有元数据。 该模型还可以进行数据翻译。属性可以映射到数据源中的其他元素,并且可以为这些元素提供不同语言的翻译。例如,如果用户在连接时使用了我们在上一示例中一直使用的相同工具,但这是从采用法语区域设置的客户端计算机上执行的,则 UDM 和查询结果都会以法语显示,如图所示。2.2.5 透视虽然此处所用的示例模型的大小非常适度,但是,真实的模型可能涉及更广的范围,包含数十种度量值和维度,并且每个维度都包含数十种或数百种属性。执行特定任务的用户通常不必查看完整的模型。为了避免模型的完整大小对用户产生干扰,我们需要定义一个视图

22、来显示该模型的一个子集。 UDM 提供了这种称为透视的视图。一个 UDM 可以具有多个透视,每个透视都只表示一个与特殊用户组相关的特定模型子集(度量值、维度、属性等)。然后,每个透视都可与用户安全角色(定义应当看到该透视的用户)进行关联。例如,名为“西雅图库存”的透视可以定义为只包含来自库存度量值组的度量值,隐藏“按位置分类的仓库”层次结构,并将默认的“城市”设置为“西雅图”。2.2.6 属性语义UDM 提供了属性的其他语义。这些语义的目标是为了使信息更容易使用。下面是可以应用于属性的语义的某些示例:名称与键:查看关系数据库时,可能无法理解 EmployeeID 是一个系统生成的无意义的唯一键

23、。UDM 解决此问题的方法是让“雇员”属性同时具有键(唯一的 EmployeeID)和名称(例如,名称由 FirstName 和 LastName 串联而成)。诸如“显示雇员”这样的查询便可通过使用其唯一ID来正确地区分同名雇员,但是显示对用户有意义的名称。排序:属性的值通常必须以某个固定顺序显示,而该顺序并不是简单的字母或数值顺序。UDM 允许定义默认的排序设置以管理此要求。例如:按星期日、星期一、星期二等星期日期出现。顺序中的优先级显示为高、中、低。离散化:对于数值属性,显示属性的每个非重复值通常毫无意义。例如,查看某个产品所有不同价格 ($9.97, $10.05, $10.10,) 的

24、销售额与查看每一价格范围 ( $10, $10 - $15,) 的销售额相比,后者更有用。UDM 允许使用各种条件将属性离散到上述范围中。 2.2.7 关键性能指标 (KPI)企业通常会定义关键性能指标 (KPI),这些指标是用于衡量业务发展状况的重要标准。UDM 允许创建这样的 KPI,以便企业可以按更易于理解的方式分组和呈现数据。KPI 还可以使用图形来显示状态和走向,例如,表示好、一般或糟糕的指示灯。UDM 中的每个 KPI 可以为每个性能指标最多定义四个表达式:实际值目标值状态 一个介于 -1 和 1 之间的规范化值,表示实际状态与目标的比率(-1 表示“非常差”,1 表示“非常好”)

25、走向 一个介于 -1 和 1 之间的规范化值,表示一段时间的走向(-1 表示“显著变差”,1 表示“显著变好”)使用 KPI,客户端工具可以用一种用户更容易理解的方式来提供相关的度量值。下图中的示例显示了客户端工具如何显示三个 KPI(已组织到显示文件夹)。2.3 性能 用户执行的交互式浏览需要具有快速的响应时间。由于这种数据浏览频繁进行,而它所涉及的数据集又非常大,因此这个要求给人们提出了一道难题。 为了提高性能,UDM 提供了缓存服务。缓存可以存储从基础数据源读取的详细数据,以及基于该数据预先计算的聚合值。然而,使用这些缓存值可能会暗示数据在某种程度上有些陈旧。业务要求决定对信息的时效性要

26、求。在某些情况下,要求必须显示最新的数据;而在其他情况下,显示已存在两小时甚至两天的数据也是完全可以的。为了反映这种指定数据状态的策略,UDM 既允许显式管理缓存(例如,可以将计划定义为在每天凌晨 2 点刷新缓存),也允许使用“主动缓存”进行透明管理。用户可以指定对数据的时效性要求,而 UDM 将自动创建和管理缓存,以尽可能提高对查询的响应速度。 2.4 分析 前面的部分解决了 UDM 如何支持交互式数据浏览的问题。但是,只是使信息可从基础数据源中获得,即使以更容易理解和易用的形式,也显然不符合将业务逻辑并入用户模型中这一目标。因此,UDM 提供了用来定义对数据执行简单和复杂计算的功能。 2.

27、4.1 基本分析查询通常返回聚合数据。例如,典型的查询将按类别显示销售额,而不是逐一显示每个销售订单。但是,并没有可以定义应当如何聚合特定度量值的基础关系数据。例如,可以明显地对销售量进行汇总,但单位价格应当是平均值。UDM 添加了这种语义。 可以使用多种方案定义聚合的方法:可以使用简单的聚合函数,比如 Sum、Count、Distinct Count、Max 或 Min 等。可以将聚合定义为半累加。这表示将使用诸如 Sum 这样的简单函数来计算除“时间”(在其中使用了“最后期间”)外的所有维度。例如,虽然可以从“产品”到“产品类别”对库存级别进行求和,但是“月份”的库存级别不是每天库存级别之

28、和;相反,该月的库存级别是该月最后一天的库存级别。聚合可以基于账户类型(如收入与支出)。 可以自定义聚合以满足任何特殊的要求。UDM 还可以包含计算成员。这些成员未与源数据直接关联,但是派生自源数据。例如,计算成员(方差)可以定义为计算销售额和配额之间的差异。同样,UDM 可以定义用户关心的实体集:例如,按销售量排名的前 10 名客户或最重要的产品。然后可以轻松使用这些集将查询范围限制到特定的实体集。 2.4.2 高级分析有时,用户需要的计算比前面给出的“方差”示例更复杂。下面是复杂计算的一些示例:显示每个时间段的本三个月移动平均值。比较此时间段和上一年相同时间段的逐年增长率。如果销售额以基本

29、货币进行报告,请使用销售时的当天平均汇率将销售额转换为原始货币。按照比今年销售额增长 10% 条件计算下一年每个类别的预算销售额,然后根据过去 3 年的相对平均销售额将该预算销售额向下分配给每个产品。 UDM 提供了一个完备的模型用于定义上述计算,与多维度电子表格类似,它可以基于其他单元中的值来计算某个单元的值。但是,甚至上述比喻也不足以描述 UDM 中计算的丰富性。某个单元中的值可能不仅根据其他单元中的值进行计算,而且还根据该单元过去的值进行计算。因此,它可以支持联立方程;例如,利润等于收入减去支出,但是奖金(包括在支出中)来自利润。除了提供专用于编写此类计算的功能强大的多维度表达式 (MD

30、X) 语言以外,UDM 还启用了与 Microsoft .NET 的集成。此集成允许以任何可验证的 .NET 语言(例如,C#.NET 或 Visual Basic .NET)编写存储过程和函数。然后,可以从 MDX 调用存储过程或函数,以便在计算中使用。 客户端不能查看此类计算的详细信息。对于客户端应用程序,这只意味着模型现在有了更有用的度量值。在下面的示例中,用户要查看在美国销售的利润最高的产品的各种计算度量值(基于销售额)。2.4.3 与数据挖掘的集成能够以丰富、容易理解的形式显示数据很重要,但用户还需要能通过数据推导出新的信息。 UDM 紧密集成了数据挖掘技术,允许对数据进行挖掘,并在

31、以后使用发现的模式执行预测。 2.5 使数据可操作 对于用户而言,查看数据通常会立即引发更多的问题,或者引起采取某种操作的需要。例如: “加入该编号的详细销售额包括哪些?” “配额太低 - 我必须增加配额。” “这有些不正常 - 我想要使用注释对该编号进行标记。” “我们在网站上针对该促销提供了哪些详细信息?” 通过易于理解的方式为用户提供数据是不够的。还需要使用户能够更容易地根据他们所看到的数据执行操作。 UDM 通过下列两种方式提供这种支持: 允许将更改写回数据中 使操作与数据关联。2.5.1 写回UDM 不是只读的。也可以通过 UDM 更新数据。在使用度量值的情况下,更新可以像这些值的增

32、量那样,与原始值分开存储。 此外,还可以更新汇总数字。例如,请考虑预算方案。虽然预算量可能最终在详细级别(例如,按组和帐户)上公开,但是值可能首先在汇总程度较高的级别(按部门和帐户类型)上公开。 2.5.2 操作UDM 支持的操作包括数据和基于该数据执行的操作之间的链接。主要的操作种类包括:URL:转到指定的 URL。此类型的操作支持将用户引向某些 URL,以获得进一步的信息,并将用户引向允许执行新任务的某些基于 Web 的应用程序。例如:对于产品,转到说明该产品的公司网站。对于产品/仓库组合,转到基于 Web 的库存管理应用程序(将产品/仓库作为参数进行传递)以允许提高安全存货水平。 报表:

33、执行指定的报表。例如,对于给定产品,该操作可以执行一个参数化产品报表,以用来提供产品说明和当前的订单状态。 钻取:钻取到可用详细信息的最低级别。例如,按产品和客户查看总销售额的用户可以钻取查看构成总销售额的所有销售事务。 操作可以与特定区域的数据进行关联。例如,导航到网页的操作可能应用于每个产品,但是查看详细存货转移事务的操作将应用于每个产品和仓库的数量值。虽然操作已定义为 UDM 的一部分,但是客户端应用程序应当负责检索适用操作的详细信息,并将操作提供给用户,然后根据需要启动操作。 2.6 安全性 对 UDM 的访问是可控制的。安全性的主要功能包括:UDM 提供基于角色的安全性。可以定义角色

34、,可以将权限授予这些角色以及作为每个角色的成员的用户。用户的实际权限是授予用户所属每个角色的权限的联合。角色的权限也可包括“强拒绝”,是指删除与用户可能所属的其他角色无关的权利。 管理权限(例如,更改 UDM)可以独立于数据访问权限而进行授予。而且,可以为读取对象的元数据,以及为数据的读/写访问权,定义单独的权限。可以在直至单个单元的粒度级别上对数据进行安全设置。例如,可以将查看产品“器材”销售额的用户限制为客户“ACME”。安全性也可以是有条件的:例如,只有当某个部门具有五名以上的雇员时才允许某个角色查看该部门的薪金总额。 权限可以定义是否应使用直观合计(在这种情况下,合计只反映用户对其具有

35、权限的较低级别的成员)。单元访问也可以是有条件的,这表示只有当其他所有单元也是可查看的时,从其他单元派生的单元才是可查看的。例如,如果利润派生自收入和成本,则用户只能查看他们有权同时查看其收入和成本的产品的利润。3 创建一个SSAS项目SQL Server是以解决方案来管理一个BI项目,BI项目可以是Analysis Services项目、Integration Services项目或者是Reporting Services项目,一个解决方案可以包含以上三类项目的任意一种或几种,这取决于使用者在创建这些项目时是使用同一个解决方案还是另创建一个新的解决方案。创建任意BI项目,都是在SQL Ser

36、ver提供的“SQL Server Business Intelligence Development Studio”环境中实现的。(1)首先在“开始程序Microsoft SQL Server 2008”中,找到“SQL Server Business Intelligence Development Studio”并点击打开。(2)在打开的页面中,可以选择新建一个新的Analysis Services项目。新建项目的方法有两种:在页面顶部工具栏中选择“文件”,在弹出的菜单中选择“新建项目”在页面的“最近的项目”中,点击“创建”右侧的项目(3)在打开的“新建项目”对话框的“模板”中,点选“A

37、nalysis Services项目”,并且在底部输入该项目的名称,存放的位置,并且勾选“创建爱你解决方案的目录”,随后可以另外给解决方案命名或者保持与项目名称一致;如果是在已经打开一个项目后选择创建新项目,还可以选择是新建解决方案还是将该项目添入已存在的解决方案。(4)点击“新建项目”对话框中的确定按钮,新的Analysis Services项目创建成功。4 创建数据源与数据源视图4.1 创建数据源在新建成功的项目的“解决方案资源管理器”中,可以开到一个Analysis Services项目中包括几个空的文件夹,分别是数据源、数据源视图、多维数据集、维度、挖掘结构、角色、程序集、杂项。其中的

38、数据挖掘文件夹是用来创建数据挖掘功能的,本文档并不包括。一个Analysis Services项目的数据源是为将要生成的OLAP多维数据库提供数据的。一个Analysis Services项目的数据源文件夹可以包含多个数据源,但是一般的BI系统都会将来自业务系统中的数据经过ETL过程抽取、转换后加载到一个数据仓库或者是ODS系统的数据库中。在RDC系统中,数据源是来自于DW_RDC数据仓库中的。DW_RDC中汇总了创建OLAP多维数据库所需的所有维度和度量数据。(1)在“解决方案资源管理器”中,右键单击“数据源”文件夹,在弹出的菜单中选择“新建数据源”(2)随后会弹出“数据源向导”。在“数据源

39、向导”欢迎页面中点击下一步。(3)在“选择如何定义连接”也页面中选择“基于现有连接或新连接创建数据源”并且点击“新建”按钮。(4)在弹出的“连接管理器”中,键入“服务器名”;在“登录到服务器”中选择“使用SQL Server身份验证”,并且键入用户名和密码;在“连接或输入一个数据库名”中选择为Analysis Services提供数据源的数据库。(5)点击“测试连接”,弹出显示“连接测试成功”信息的对话框黄总点击“确定”回到“连接管理器”对话框中并再次点击“确定”回到“数据源向导”的“选择如何定义连接”页面中。(6)在“选择如何定义连接”页面的“数据连接”中会存在上一步骤中创建的数据连接。点击

40、下一步。(7)在“模拟信息”页面中选择“使用服务账户”并点击“下一步”(8)在“完成向导”页面中,可以键入数据源的名称或者保持默认。点击完成,数据源创建成功。(9)在“解决方案资源管理器”中可以在“数据源”文件夹下看到后缀为ds的数据源文件。4.2 创建和设计数据源视图4.2.1 创建数据源视图 Microsoft SQL Server 中的联机分析处理 (OLAP) 和数据挖掘项目是根据一个或多个数据源中相关表、视图和查询的逻辑数据模型来设计的。此逻辑数据模型称为数据源视图。数据源视图是一个对象,它包含来自所选数据源对象(其中包括在基础数据源或数据源视图中定义的这些对象之间的所有关系)的元数

41、据。数据源视图缓存生成视图所基于数据源中的元数据。使用缓存元数据可以在不具备持续有效的数据源连接的情况下开发 Analysis Services 项目。使用数据源视图可以定义填充大型数据仓库的数据子集。此外,通过数据源视图还可以定义基于异类数据源或数据源子集的同源架构。因为数据源视图代表一个独立的架构,所以可以根据需要添加任何批注,而不会影响基础数据源的架构。(1)右键单击“数据源视图”文件夹,在弹出的菜单中选择“新建数据源视图”。(2)在“数据源视图向导”的欢迎页面中点击“下一步”。(3)在“选择数据源”页面中,选中“DW RDC”数据源,并点击下一步。(4)在“名称匹配”页面中,保持默认并

42、点击“下一步”。(5)在“选择表和视图”页面中,选择创建OLAP多维数据库需要的表和视图。(6)在可用对象中选中需要使用到的表并点击箭头按钮,将该表添加进包含对象中。这里以RDC系统的OM主题为例,仅选择该主题需要到的表和视图。选择好之后点击“下一步”。(7)在“完成向导”页面中,键入数据源视图的名称或者保持默认。点击“完成”结束创建数据源视图。(8)在“解决方案资源管理器”中,出现后缀为dsv的数据源视图。4.2.2 设计数据源视图创建成功数据源视图之后,SQL Server Business Intelligence Development Studio会自动弹出DW RDC.dsv设计界

43、面,并且归属到“DW RDC.dsv设计”选项卡中。设计界面包括三部分的内容分别为:“关系图组织程序”窗格:可在其中创建子关系图,用于查看数据源视图的子集。“表”窗格:其中将以树的形式显示各个表及其架构元素。“关系图”窗格:其中将以图形方式显示各个表及其相互关系。数据源视图设计选项卡中主要的操作就是定义维度和维度、维度和事实表之间的关系。定义关系的操作既可以在“表”窗格也可以在“关系图组织程序”窗格中实现。由于在设计数据仓库时都会事先定义好维度表的主键,所以在创建数据源视图之后有些关系是自动创建好的,但是仍然会存在需要手动设定不同表之间关系的操作。上图的“关系图组织程序”中,Dim_Date表

44、便不存在任何与其他表的关系。这里我们通过两种方式说明创建Dim_Date表与其他表关系的方法。 这里应该了解的是,关系都是从包含外键的表指向包含主键的表的。根据维度表和事实表的特征,维度表中一定会包含主键,有可能包含外键;而事实表中包含的键通常都是外键,因此一张事实表通常都是指向外部的关系,而维度表则既有指向自己的关系,也有指向外部的关系。l 在“表”窗格中创建关系(1)在表窗格中,展开Dim_Date表,右键Dim_Date或者右键Dim_Date中包含的“关系”文件夹,选择弹出菜单中的“新建关系”功能。 (2)在弹出的“指定关系”对话框中,在“源(外键)表”选择框中选择Fact_OM事实表

45、(此次示例中仅有Fact_OM表中包含外键DateKey),在“目标(主键)表”中选择Dim_Date表;在源列和目标列中都选择“DateKey”。随后点击确定。(3)创建成功之后,会在Dim_Date表的“关系”文件夹中出现一个关系。并且在“关系图组织程序”窗格中也会相应的出现Fact_OM到Dim_Date的指向关系。 l 在“关系图组织程序”窗格中创建关系(1)在“关系图组织程序”窗格中,Dim_Date表和Fact_OM开始不存在任何关系。(2)选中“Fact_OM”表中的DateKey并将它拖动到Dim_Date表中的DateKey的位置,会在两者之间创建关系,由于最初并未将Dim_

46、Date表中DateKey设置为主键,所以在创建关系时会弹出“是否创建逻辑主键?”的对话框,点击是会在DateKey之前标记主键。 (3)创键成功后会在“表”窗格中Dim_Date表中的“表”文件夹中出现两者之间的关系。5 创建和部署维度在一个Analysis Services项目中,创建维度和多维数据集的前后顺序可以任意。如果先创建多维数据集并且在创建多维数据集的过程中创建维度,不利于维度的设计和维护。因此在开发过程中首先创建需要使用到的维度,然后再创建多维数据集。任何维度和多维数据集中的度量值,都是以数据源视图中的表为基础的,如果想要创建的维度和多维数据集度量值在数据源视图中并不存在,则必

47、须首先在数据源视图中首先添加表之后才能创建。本实例中的数据源视图中一共包含了11张表,其中两张表是事实表,另外九张表都是维度表,其中Dim_Date维度表可以创建时间维度,Dim_Channel维度表可以创建父子维度,其他维度表,都创建为标准维度。5.1 标准维度标准维度是最基本的维度。其他特殊的维度都可以通过首先将该维度创建成标准维度后改进维度的属性特性等操作实现。维度的数据源便是数据仓库中的维度表,原则上维度表中的任意一个字段都可以对应一个维度中的属性,但是并不是每一个维度表中的字段都有必要转换成维度的属性,这需要根据实际需求设计。这里以Dim_Customer维度表为例,演示说明如何通过

48、该维度表创建一个Dim Customer 维度。(1)右键单击“解决方案资源管理器”中的BI项目的“维度”文件夹,在弹出的菜单中选择“新建维度”。(2)在“维度向导”欢迎页面中点击“下一步”。(3)在“选择创建方法”页面中,选择“使用现有表”,点击“下一步”(4)在“指定源信息”页面中,选择所要创建的维度的主表,选择该维度的键列以及名称列(5)在“选择相关表”中,取消勾选“Dim_Channel”和“Dim_Area”,点击“下一步”。(6)在“选择维度属性”页面中,勾选需要用到的维度属性,在该步骤中可以在属性类型中设置维度中每一个属性的类型。由于这里创建的是常规维度,所以在属性类型保持默认的

49、“常规”就可以。选择好之后点击“下一步”。(7)在“完成向导”页面中,键入维度的名称或者保持默认。之后点击“完成”。(8)在“解决方案资源管理器中”的“维度”文件夹中出现后缀为dim的维度文件。并且SSAS会自动打开维度设计器。(9)在解决方案资源管理器中右键单击Dim Customer.dim维度,在弹出的菜单中选择“处理”。(10)SSAS会弹出对话框,直接选“是”,首先对该维度进行部署(11)部署成功后,点击“运行”对该维度进行处理(在“处理维度”对话框中可以配置处理设置,并且设置处理选项,但此处我们保持默认)(12)维度处理成功后点击“关闭”。这是可以通过“维度设计器”的“浏览器”选项

50、卡中浏览维度数据。(13)打开“维度设计器”中“浏览器”选项卡,并在“层次结构”中选择“Customer Name”。在“当前级别ALL”之前的“+”。会看到客户名称属性包含的数据。(14)我们以同样的方法为除了Dim_Date表以及Dim_Channel表以外的其他维度类型表创建标准维度,创建成功之后,“解决方案资源管理器”中的“维度”文件夹下共包含6个标准维度5.2 时间维度任何BI系统特别是商业应用BI系统都应该包含一个时间维度。通常,一个时间维度的粒度精确到月,但是仍然有很多商业需求要求将时间维度的粒度精确到每一天。在SSAS中创建时间维度的方式有三种,第一种方式是像创建标准维度那样基

51、于一张时间维度表创建时间维度;第二种方式是通过维度创建向导创建,基础数据源中创建一个新的时间维度表。维度将包含用户指定的日期范围、属性和日历的数据;最后一种方式是直接在服务器上创建时间维度,而不使用基础数据源。维度将包含用户指定的日期范围、属性和日历的数据。本文档以第一种方式来介绍如何生成一个基于时间维度表的时间维度。以这种方式创建时间维度表,指定维度属性的属性类型的方式有两种。第一种是首先向创建常规维度那样创建时间维度,创建成功之后,在时间维度的属性特性处修改时间类型;或者是在创建时间维度的过程中指定时间维度属性的类型。(1)在“解决方案资源管理器”中,右键单击“维度”文件夹,在弹出的菜单中

52、选择“新建维度”。(2)在“维度向导”的“选择创建方法”页面中选择“使用现有表”。点击“下一步”。(3)在“指定源信息”也卖弄中选择Dim_Date表为主表,并点击“下一步”。(4)在“选择维度属性”页面中选择进行BI分析所需的时间维度属性,并点击“下一步”(5)在“完成向导”页面中,键入名称或保持默认,点击“完成”。(6)在“解决方案资源管理器”中的“维度”文件夹下中出现“Dim Date.dim”维度。(7)在Dim Date.dim维度设计器中,右键单击“Date Key”属性并在弹出的菜单中选择“属性”。(8)在“Date Key DimensionAtteibute”窗口中,找到“T

53、ype”特性,并在右侧窗口中点击倒三角图表。(9)在“Type”特性的菜单中,展开“日期”,接着展开“日历”。选择“Days”。(10)接着为其他时间维度属性定义“Type”。Month属性“Type”定义成“Month”;为Month CN属性的“Type”定义为“Month”;为Period Of Ten Days属性的“Type”定义为“TenDays”;为Quarter EN属性的“Type”定义为“Quarter EN”;为Week Of Year属性的“Type”定义为“Weeks”;为Year属性的“Type”定义为“Years”。时间维度创建成功。(11)另外一种指定维度属性的

54、属性类型的方式,是在创建时间维度的过程中,在“维度向导”的“选择维度属性”页面中指定时间属性的属性类型。(12)时间维度创建完成之后,对该维度进行部署和处理,之后便能在“维度设计器”的“浏览器”选项卡中浏览数据。5.3 父子维度父子维度与其他维度不同的地方就是维度中的数据是递归层次关系的。如adventureWorksDW库中的DimEmployee表中数据(上级和下级雇员的层次关系)就是递归关系。表中的主键是EmployeeKey列,对应于每个雇员的ID,雇员上级的ID保存在ParentEmployeeKey列。也就是说ParentEmployeeKey和EmployeeKey列是外键关系。

55、本实例中的Dim_Channer表中的数据存在递归关系,即包含父渠道的渠道代码也包括子渠道的渠道代码,所以以Dim_Channel表为数据源创建的维度需要创建成父子维度。(1)首先应该在数据源视图中创建Channel的自关联关系。右键单击数据源视图中的Dim_Channel表,选择“新建关系”。(2)在“指定关系”页面中,选择“源(外键)表”和“目标(主键)表”都为Dim_Channel,随后在源列中选择“ParentChannel”字段,在目标列中选择“Channel”字段。点击“确定”。(3)在Dim_Channel表上会出现一个指向自己的关系。(4)关系创建成功后,右键单击“解决方案资源

56、管理器”下的“维度”文件夹,在弹出的菜单中选择“新建维度”(5)创建维度的过程与创建标准维度的过程完全相同。当Dim Channel维度创建成功之后,在Dim Channel设计器中,Parent Channel属性会出现父子维度的标识,同时在Parent Channel的属性窗口的用法为Parent,而其他的属性均为Regular。 5.4 用户自定义层次结构用户自定义层次结构是相对于属性层次结构的概念,在创建维度之后,SSAS会自动将每一个维度属性定义为一个属性层次结构,该属性层次结构一般只有两层,顶层为默认成员,子层为该属性包含的所有值。用户自定义层次结构是用户在创建维度后按照需求自己定

57、义的层次,这种层次可以有任意多层,层次之间的关系不是自然关系。本示例中的Dim Customer维度中,可以按照“区域代码渠道代码客户代码”的顺序创建用户自定义层次结构,而这种层次结构中的各层次之间的关系并不是自然关系而是用户自定义的。(1)在Dim Customer维度设计其中,点击“Area Code”并按住鼠标左键将其拖动到“层次结构”窗格中。(2)在“层次结构”窗格中会出现“层次结构”。(3)依次将Channel属性和Customer Code属性拖到层次结构的“新级别”位置。设置好的层次结构如下图的左图。层次结构创建成功。 (4)部署并处理该维度,在维度的“浏览器”窗格中,可以浏览刚刚创建的层次结构。6 创建和部署多维数据集6.1 创建多维数据集(1)在“解决方案资源管理器”中,右键单击“

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论