度量值是数值值的聚合,例如总和、计数、最小值、最大值、平均值或创建的自定义 MDX 表达式。 度量值组是一个或多个度量值的容器。 所有度量值都存在于度量值组中,即使只有一个度量值。 多维数据集必须至少有一个度量值和度量值组。
本主题包含下列部分:
创建度量值的方法
度量值可以是多维数据集的静态元素,在设计时创建,每当访问多维数据集时始终存在。 但是,您还可以通过使用 MDX 根据多维数据集中的其他度量值定义计算值,将度量值定义为 计算成员。 可以将计算成员限定为会话或用户。
若要创建度量值或度量值组,请使用以下方法之一:
多维数据集向导 | 在 SQL Server Data Tools (SSDT) 中运行多维数据集向导以创建多维数据集。 在解决方案资源管理器中,右键单击 多维数据集 并选择 “新建多维数据集”。 如需这些步骤的帮助 ,请参阅多维建模(Adventure Works 教程 )。 基于现有数据仓库中的表创建多维数据集时,度量值和度量值组的定义在多维数据集创建过程中具体化。 在向导中,您将选择哪些事实和事实数据表用作数据立方体中度量和度量组对象的基础。 |
“新建度量值”对话框 | 假设多维数据集已存在于 SQL Server Data Tools (SSDT)中,请双击解决方案资源管理器中的多维数据集名称,在多维数据集设计器中将其打开。 在“度量值”窗格中,通过指定源表、列和聚合类型,右键单击顶部节点以创建新的度量值组或新度量值。 使用此方法需要从固定的预生成函数列表中选择聚合方法。 有关更常用聚合的讨论,请参阅 “使用聚合函数 ”。 |
计算成员 | 计算成员将灵活性和分析功能添加到 Analysis Services 中的多维数据集,因为你可以控制创建它们的时间和方式。 有时,只需在用户会话期间或在 Management Studio 中临时需要度量值,作为调查的一部分。 在 SQL Server Data Tools (SSDT)中,打开“计算”选项卡以创建新的计算成员。 选择这种方法当使用 MDX 表达式定义度量时。 有关详细信息,请参阅以下主题:在 MDX 中构建度量值、计算、多维模型中的计算和 MDX 脚本基础知识(Analysis Services)。 |
MDX 或 XMLA | 在 SQL Server Management Studio 中,可以执行 MDX 或 XMLA 来更改数据库以包含新的计算度量值。 将解决方案部署到服务器后,此方法可用于临时测试数据。 请参阅 文档和脚本 Analysis Services 数据库。 |
度量值的组件
度量值是具有属性的对象。 除了其名称之外,度量值还必须具有聚合类型和源列或表达式,以便用数据加载度量值。 可以通过设置度量值定义的属性来修改度量值定义。
源 | 大多数度量值来自外部数据仓库中事实数据表中的数值列,例如 AdventureWorks 数据仓库中 Internet Sales 和 Reseller Sales 表中的 Sales Amount 列,但也可以完全基于定义的计算创建新度量值。 维度表中的属性列可用于定义度量值,但此类度量值在聚合行为方面通常为半累加性或非累进性。 有关半累加性行为的详细信息,请参阅 “定义半累加性行为”。 |
集合体 | 默认情况下,度量值按每个维度求和。 但是,该 AggregateFunction 属性允许修改此行为。 请参阅使用聚合函数以获取列表。 |
性能 | 有关其他属性说明,请参阅 “配置度量值属性 ”。 |
对事实和事实数据表的度量值和度量值组进行建模
在运行向导之前,它有助于了解度量值定义背后的建模原则。
度量值和度量值组是表示外部数据仓库中事实和事实数据表的多维对象。 在大多数情况下,度量值和度量值组将基于数据源视图中的对象,后者又基于基础数据仓库创建。
下图表示 FactSalesQuota 事实数据表及其关联的两个维度表, DimTime 和 DimEmployee。 在 Adventure Works 示例数据模型中,这些表用作“销售配额”度量值组以及“时间”和“员工”维度的基础。
事实数据表包含两种基本类型的列:属性列和度量值列。
属性列用于创建维度表的外键关系,以便度量值列中的可量化数据可由维度表中包含的数据组织。 属性列还用于定义事实数据表及其度量值组的粒度。
度量值列定义度量值组包含的度量值。
运行多维数据集向导时,会筛选掉外键。在要从中选择的剩余列列表中,你将看到度量值列,以及不被识别为外键的属性列。 在 FactSalesQuote 示例中,向导除了 SalesAmountQuota 外,还将提供 CalendarYear 和 CalendarQuarter。 只有 SalesAmountQuota 度量值列才能为多维模型生成可行的度量值。 其他基于日期的列存在于此以限定每个配额的数量。 应从多维数据集向导中的度量值列表中排除其他列 CalendarYear 和 CalendarQuarter,或者以后在设计器中将其从度量值组中删除。
此次讨论的要点是,向导提供的所有列并不都是作为度量有用的。 根据你对数据的理解和其用途,决定哪些列用于度量。 请记住,可以右键单击数据源视图中的表以浏览数据,这有助于确定要用作度量值的列。 有关详细信息,请参阅 “在数据源视图”(Analysis Services)中浏览数据 。
注释
并非所有度量值都直接从存储在事实数据表列中的值派生。 例如,Adventure Works 示例多维数据集的 Sales Quota 度量值组中定义的 Sales Person Count 度量值实际上基于 FactSalesQuota 事实数据表 EmployeeKey 列中的唯一值(或非重复计数)计数。
度量值组的粒度
度量值组具有关联的粒度,该粒度是指事实数据表所支持的细节级别。 粒度是通过与一个维度建立外键关系来设置的。
例如, FactSalesQuota 事实数据表与 DimEmployee 表有外键关系, FactSalesQuota 表中的每个记录都与单个员工相关,因此从 Employee 维度查看的度量值组的粒度位于单个员工级别。
度量组的粒度永远不能设置得比该粒度所查看的维度中的最低级别更精细,但可以通过使用额外的属性来使粒度更粗。 例如, FactSalesQuota 事实数据表使用三列 TimeKey、 CalendarYear 和 CalendarQuarter 来建立与 DimTime 表的关系粒度。 因此,从时间维度查看的度量值组的粒度按日历季度而不是按天显示,这是时间维度的最低级别。
可以通过多维数据集设计器的维度使用情况选项卡,指定度量组相对于特定维度的粒度。 有关维度关系的详细信息,请参阅 维度关系。