命名集是一个多维表达式 (MDX) 表达式,该表达式返回一组维度成员。 可以定义命名集并将其保存为多维数据集定义的一部分;还可以在客户端应用程序中创建命名集。 通过组合多维数据集数据、算术运算符、数字和函数来创建命名集。 命名集可由客户端应用程序中的 MDX 查询中的用户使用,也可用于在子多维数据集中定义集。 子多维数据集是交叉联接集的集合,用于将多维数据集空间限制为为后续操作定义的子空间。 定义受限的立方体空间是 MDX 脚本中的基本概念。
命名集简化了 MDX 查询,并为复杂且通常使用的集表达式提供有用的别名。 例如,可以定义名为“大型经销商”的命名集,该集包含“经销商”维度中具有最多员工的一组成员。 然后,最终用户可以在查询中使用名为“大型经销商”的命名集,也可以使用该命名集在子多维数据集中定义一个集。 命名集的定义存储在数据立方体中,但它们的值只保存在内存中。 若要创建命名集,请使用多维数据集设计器的“计算”选项卡上的“新建命名集”命令。 有关详细信息,请参阅 “计算”、“ 创建命名集”。
在本主题的任务中,你将定义两个命名集:一个名为“核心产品”的命名集和一个名为“大型经销商”的命名集。
定义一个核心产品命名集合
切换到 Analysis Services 教程多维数据集的多维数据集设计器的 “计算 ”选项卡,然后单击工具栏上的 “窗体视图 ”。
单击“脚本管理器”窗格中的“总销售额比率与所有产品”,然后单击“计算”选项卡工具栏上的“新建命名集”。
在“ 计算 ”选项卡上定义新计算时,请记住,计算按照计算 在脚本管理器 窗格中显示的顺序解析。 创建新计算时,该窗格中的焦点决定了计算的执行顺序;将立即定义一个新计算,然后根据所关注的计算进行计算。
在“ 名称 ”框中,将新命名集的名称更改为
[Core Products]。在 “脚本管理器 ”窗格中,请注意唯一的图标,该图标将命名集与脚本命令或计算成员区分开来。
在“计算工具”窗格中的“元数据”选项卡上,展开“产品”、“类别”、“展开
Members”和“所有产品”。注释
如果无法在 “计算工具 ”窗格中查看任何元数据,请单击工具栏上的“ 重新连接 ”。 如果这没有效果,您可能需要处理该多维数据集或启动分析服务的实例。
将 自行车 拖到 “表达式 ”框中。
现已创建一个集表达式,该表达式将返回产品维度的 Bike 类别中的成员集。
定义名为 Set 的大型经销商
[Core Products]右键单击“脚本管理器”窗格中,然后单击“新建命名集”。在 “名称 ”框中,将此命名集的名称更改为
[Large Resellers]。在 “表达式 ”框中,键入
Exists()。你将使用 Exists 函数从“经销商名称”属性层次结构中返回一组成员,该层次结构与员工数量最大的员工数的“员工数”属性层次结构中的成员集相交。
在“计算工具”窗格中的“元数据”选项卡上,展开“经销商”维度,然后展开“经销商名称”属性层次结构。
将 “经销商名称” 层级拖到 Exists 集合表达式的括号内。
你将使用 Members 函数返回此集的所有成员。 有关更多信息,请参阅Members (Set) (MDX)。
在部分集表达式之后,键入句点,然后添加 Members 函数。 表达式应如下所示:
Exists([Reseller].[Reseller Name].[Reseller Name].Members)现在,您已经为 Exists 集表达式定义了第一个集,准备好添加第二个集—包含最大员工数量的 Reseller 维度的成员集。
在“计算工具”窗格中的“元数据”选项卡上,展开“经销商”维度中的“员工数”,展开
Members,然后展开“所有经销商”。请注意,此属性层次结构的成员不会分组。
打开经销商维度的维度设计器,然后单击属性窗格中的员工数。
在“属性”窗口中,将
DiscretizationMethod属性更改为 “自动”,然后将属性更改为DiscretizationBucketCount5。 有关详细信息,请参阅组属性成员(离散化)。在 SQL Server Data Tools (SSDT) 的“构建”菜单上,单击“部署 Analysis Services 教程”。
部署成功完成后,切换到用于 Analysis Services 教程多维数据集的多维数据集设计器,然后在计算选项卡的工具栏上单击重新连接。
在“计算工具”窗格中的“元数据”选项卡上,展开“经销商”维度中的“员工数”,展开
Members,然后展开“所有经销商”。请注意,此属性层次结构的成员现在包含在五个组中,编号为 0 到 4。 若要查看组数,请在该组上悬停鼠标指针以查看信息提示。 对于范围
2 -17,InfoTip 应包含[Reseller].[Number of Employees].&[0]。此属性层次结构的成员将分组,因为 DiscretizationBucketCount 属性设置为,
5并且 DiscretizationMethod 属性设置为 Automatic。在“表达式”框中,在 Members 函数之后和右括号之前,在 Exists 集表达式中添加一个逗号,然后从“元数据”窗格中拖动 83 - 100 并将其置于逗号之后。
现在您已经完成了 Exists 集合表达式,该表达式将返回与这两个指定集合相交的成员集合,拥有 83 到 100 名员工的经销商集合和所有经销商集合,当“大型经销商”命名集合放置在坐标轴上时。
下图显示了命名集的
[Large Resellers]“计算表达式”窗格。
在 “计算 ”选项卡的工具栏上,单击“ 脚本视图”,然后查看刚刚添加到计算脚本的两个命名集。
在第一个 CREATE SET 命令之前立即在计算脚本中添加一个新行,然后将以下文本添加到脚本自己的行:
/* named sets */现已定义两个命名集,这些集在 脚本管理器 窗格中可见。 您已准备好部署这些命名集合,然后在 Analysis Services 教程多维数据集中浏览这些度量值。
通过使用新的命名集来浏览多维数据集。
在 SQL Server Data Tools 的“构建”菜单上,单击“分析服务教程部署”。
部署成功完成后,单击 “浏览器 ”选项卡,然后单击“ 重新连接”。
清除数据窗格中的网格。
将 Reseller Sales-Sales Amount 度量值添加到数据区域。
展开“产品”维度,然后将“类别”和“子类别”添加到行区域,如下图所示。
在 “元数据 ”窗格中的“ 产品 ”维度中,将 核心产品 拖到筛选区域。
请注意,只有 Category 属性的 Bike 成员和 Bike 子类别的成员保留在多维数据集中。 这是因为名为核心产品的集合用于定义子立方体。 此子多维数据集将子多维数据集内 Product 维度中的 Category 属性的成员限制为核心产品命名集的成员,如下图所示。
在 “元数据 ”窗格中,展开“ 经销商”,将 大型经销商 添加到筛选区域。
请注意,“数据”窗格中的“经销商销售额”度量值仅显示大型自行车经销商的销售金额。 另请注意,“筛选器”窗格现在显示用于定义此特定子多维数据集的两个命名集,如下图所示。