`
netxdiy
  • 浏览: 728245 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

《Microsoft SQL Server 2008 MDX Step by Step》学习笔记十一:计算成员和动态命名集

 
阅读更多

SQL Server 2008中SQL应用系列及BI学习笔记系列--目录索引

导读:前面几篇介绍MDX的基本函数,从本文起,开始介绍一些简单的MDX应用。本文是Cube的增强篇,包括:

■1、构建Cube范围的简单计算成员(Calculated Members)

■2、构建Cube范围的复杂计算成员(Calculated Members)

■3、动态命名集(Dynamic Named Sets)

本文所用数据库和所有源码,请到微软官网下载

另外文尾提供两个项目源码:Chapter10_Begin.Rar和Chapter10_End.Rar,顾名思义,开始和完成。请读者自行修改数据源ds的连接串。

1、构建简单的计算成员(Calculated Members)

每个AS的Cube都包含一个单个的MDX脚本,它由一系列声明(statement)组成,其中绝大多数MDX的第一个声明是CALCULATE。下面我们组建一个最基本的计算成员。

例10-1

WITH
MEMBER [Product].[Category].[All Products].[Bikes & Accessories] AS
([Product].[Category].[Bikes]) + ([Product].[Category].[Accessories])
SELECT
{
([Measures].[Reseller Sales Amount]),
([Measures].[Reseller Order Count]),
([Measures].[Discount Percentage])
} ON COLUMNS,
{[Product].[Category].AllMembers} ON ROWS
FROM [Step-by-Step]
;

邀月工作室

更灵活的方式

例10-2

WITH
MEMBER [Product].[Category].[All Products].[Bikes & Accessories] AS
Aggregate(
{
([Product].[Category].[Bikes]),
([Product].[Category].[Accessories])
},
[Measures].CurrentMember
)
SELECT
{
([Measures].[Reseller Sales Amount]),
([Measures].[Reseller Order Count]),
([Measures].[Discount Percentage])
} ON COLUMNS,
{[Product].[Category].AllMembers} ON ROWS
FROM [Step-by-Step]
;

邀月工作室

现在我们用create Mmeber在开发环境中设计这个计算成员:

首先,打开vs2008,打开本文提供的示例:MDX Step-by-Step.sln

如下图:

邀月工作室

选择Step-By-Step.cube,Calculations选项卡,点击“New Calculated Member”按钮,修改名称为“[Bikes & Accessories]”,
Parent Properties选项,选择“Product.Category”维度,Parent Member选项,选择“[All Products]”,在Expression中输入:

Aggregate(
{
([Product].[Category].[Bikes]),
([Product].[Category].[Accessories])
},
[Measures].CurrentMember
)

最后如下图:

邀月工作室

切换到script视图以查看语法:

邀月工作室

设计完计算变量后,下一步是部署,步骤如下:

邀月工作室

邀月工作室

邀月工作室

部署完成!

可以通过下例验证刚部署的Cube范围的计算成员

例10-3

SELECT
{
([Measures].[Reseller Sales Amount]),
([Measures].[Reseller Order Count]),
([Measures].[Discount Percentage])
} ON COLUMNS,
{[Product].[Category].AllMembers} ON ROWS
FROM [Step-by-Step]
;

邀月工作室

2、构建复杂计算成员(Calculated Members)

对于以下查询:

例10-4

WITH
MEMBER [Measures].[Reseller Sales Amount Average] AS
([Measures].[Reseller Sales Amount])/
([Measures].[Reseller Transaction Count])
,FORMAT_STRING="Currency"
MEMBER [Measures].[Reseller Sales Amount Variance] AS
(
([Measures].[Squared Reseller Sales Amount]) /
(([Measures].[Reseller Transaction Count])-1)
) -
(([Measures].[Reseller Sales Amount Average])^2)
,FORMAT_STRING="Currency"
MEMBER [Measures].[Reseller Sales Amount Std Dev] AS
([Measures].[Reseller Sales Amount Variance])^(0.5)
,FORMAT_STRING="Currency"
SELECT
{
([Measures].[Reseller Sales Amount Average]),
([Measures].[Reseller Sales Amount Variance]),
([Measures].[Reseller Sales Amount Std Dev])
} ON COLUMNS
FROM [Step-by-Step]
;

例10-4也可以通过计算成员实现

邀月工作室

邀月工作室

检验后如上部署,

此时,我们在SSMS管理界面,可以看到:

邀月工作室

再用下列查询重新实现10-4

例10-5

SELECT
{
([Measures].[Reseller Sales Amount Average]),
([Measures].[Reseller Sales Amount Variance]),
([Measures].[Reseller Sales Amount Std Dev])
} ON COLUMNS
FROM [Step-by-Step]
;

邀月工作室

顺便介绍一下NON_EMPTY_BEHAVIOR属性的应用。

在MDX查询器中执行下例:
例10-6

SELECT
{
([Measures].[Reseller Sales Amount]),
([Measures].[Reseller Sales Amount Average]),
([Measures].[Reseller Sales Amount Std Dev])
} ON COLUMNS,
{[Product].[Subcategory].Members} ON ROWS
FROM [Step-by-Step]
;

邀月工作室

在BIDS中如下图设置:

邀月工作室

勾选后部署,效果:

邀月工作室

3、组装一个命名集(Assembling Named Sets)

看下例查询

例10-7

SELECT
{([Measures].[Reseller Sales Amount])} ON COLUMNS,
TopCount(
[Product].[Product].[Product].Members,
5,
([Measures].[Reseller Sales Amount])
) ON ROWS
FROM [Step-by-Step]
;

例10-8

WITH
SET [Top 5 Products] AS
TopCount(
[Product].[Product].[Product].Members,
5,
([Measures].[Reseller Sales Amount])
)
SELECT
{([Measures].[Reseller Sales Amount])} ON COLUMNS,
{[Top 5 Products]} ON ROWS
FROM [Step-by-Step]
;

上面两个例子的查询是一致的。[Top 5 Products]就是一个命名集。

邀月工作室

在BIDS界面中如下设置(增加一个命名集):

邀月工作室

保存并部署,

再调用该命名集

例10-9

SELECT
{([Measures].[Reseller Sales Amount])} ON COLUMNS,
{[Top 5 Products]} ON ROWS
FROM [Step-by-Step]
;

结果同上。

提示:在Analysis service的2008版本中提供了“Dynamic Named Sets”,之所以称为动态,是因为这个集并不缓存,而是每次使用时动态调用。区别在于Create后面紧跟一个Dynamic关键字

CREATE DYNAMIC SET CURRENTCUBE.[Top 5 Products]
AS TopCount(
[Product].[Product].[Product].Members,
5,
([Measures].[Reseller Sales Amount])
), DISPLAY_FOLDER = 'Sets';

源码下载:

1、 Chapter10_Begin.rar

2、Chapter10_End.rar

小结:

本文介绍Cube的增强功能,主要包括构建计算成员和动态命名集。下文将继续学习实现动态安全。

参考资源:

1、MDX官方教程(http://msdn.microsoft.com/zh-cn/library/ms145506.aspx


邀月注:本文版权由邀月和CSDN共同所有,转载请注明出处。
助人等于自助!
3w@live.cn





分享到:
评论

相关推荐

    Microsoft SQL Server 2008 MDX Step by Step Feb 2009

    ### Microsoft SQL Server 2008 MDX Step by Step (Feb 2009) #### 知识点一:Multidimensional Expressions (MDX) 基础 **Multidimensional Expressions (MDX)** 是一种用于查询多维数据集的语言。MDX 提供了一种...

    Microsoft SQL Server 2008 Analysis Services Step by Step 随书光盘

    《Microsoft SQL Server 2008 Analysis Services Step by Step》随书光盘包含了大量实践性的文件,旨在帮助读者深入理解并掌握SQL Server 2008的Analysis Services(简称SSAS)这一强大的数据仓库和商务智能工具。...

    Microsoft+SQL+Server+2008+MDX+Step+by+Step

    《Microsoft SQL Server 2008 MDX Step by Step》是一本专为SQL Server数据库管理员、数据分析师和开发人员设计的教程,旨在深入探讨多维表达式(Multidimensional Expressions,简称MDX)在SQL Server 2008中的应用...

    Microsoft SQL Server2005 Analysis Step by Step

    Provides information on the fundamentals of Microsoft SQL Server 2005 Analysis Services. Teach yourself the fundamentals of SQL Server Analysis Services—one step at a time. With this practical, ...

    SQL-Server-2008---Step-by-Step.rar_SQL SERVER 2008_step by step

    《SQL Server 2008 Step by Step》是微软出版社发布的一本针对SQL Server 2008的全面教程,适合初学者和有一定基础的数据库管理员。这本书通过逐步指导的方式,帮助读者掌握SQL Server 2008的核心功能和操作技巧。 ...

    Microsoft.Press.Microsoft.SQL.Server.2008.MDX.Step.by.Step.Feb.2009.rar

    《Microsoft SQL Server 2008 MDX 步步为营》是微软出版社于2009年2月推出的一本专门针对SQL Server 2008中的多维表达式(Multidimensional Expressions,简称MDX)技术的实战指南。这本书详细介绍了如何在SQL ...

    Microsoft SQL Server 2005 Analysis Services Step by Step

    Provides information on the fundamentals of Microsoft SQL Server 2005 Analysis Services. Teach yourself the fundamentals of SQL Server Analysis Services—one step at a time. With this practical, ...

    Microsoft SQL Server 2008 分析服务从入门到精通(全套资料)

    电子书《Microsoft SQL Server 2008 Analysis Services Step by Step》很可能是逐步教程,涵盖了从安装配置到实际操作的整个过程。书中可能涉及以下内容: 1. **安装与配置**:如何在服务器上安装SQL Server 2008,...

    SQL Server 2005 BI系列课程(7):MDX解决方案

    7. **工具支持**:了解如何在Microsoft Excel和SQL Server Management Studio(SSMS)中使用MDX,以及如何配合Power Pivot等工具进行更高级的数据分析。 提供的资源,如PPT、视频和文档,将为学习者提供丰富的交互...

    SQL_Server_SSAS_MDX_翻译资料

    它起源于微软在1998年的SQL Server Analysis Services 7.0版本,现在已经成为一个标准化的语言,被其他OLAP(在线分析处理)供应商如Microstrategy Intelligence Server、Hyperion Essbase Server和SAS的Enterprise ...

    Professional SQL Server 2012 Analysis Services with MDX and DAX part2

    This title serves as an authoritative guide to Microsofts new "SQL Server 2012 Analysis Services" BI product and is written by key members of the Microsoft Analysis Services product development team....

    MDX step by step CD

    在该文件夹中,你可能会找到各种与MDX相关的练习、脚本、数据模型或演示案例,这些都旨在帮助读者通过实践来理解和学习MDX语言。 MDX语言的核心概念包括: 1. **维度(Dimensions)**:在多维数据模型中,维度是...

    SQLServerBI MDX常用函数

    在SQL Server BI环境中,MDX(Multi-Dimensional Expressions)是一种强大的查询语言,主要用于操作多维数据集,尤其是在SQL Server Analysis Services (SSAS)中。MDX提供了丰富的函数库,帮助用户进行复杂的数据...

    Microsoft SQL Server 2012 Analysis Services 高级教程 pdf

    《Microsoft SQL Server 2012 Analysis Services 高级教程》是针对数据库管理员、数据分析师以及IT专业人士的一本深入指南,旨在帮助读者掌握SQL Server 2012中的Analysis Services(简称SSAS)的各项高级功能。...

    SQL Server 2005 Analysis Services Step by Step

    ### SQL Server 2005 Analysis Services Step by Step #### 概述 SQL Server 2005 Analysis Services (SSAS) 是一个强大的商业智能工具,用于构建多维数据集和数据挖掘模型。本书旨在为用户提供一个逐步指南,帮助...

    SQL Server 2005 BI系列课程(8):MDX高级应用

    - 掌握如何使用MDX中的计算成员和命名集来解决复杂业务需求。 - 学会如何在不同的BI工具中应用这些技术。 #### 目标受众 - 中高级BI项目人员 - 已具备一定的BI项目实施经验 - 对MDX基本概念、语法及使用范围有一定...

    Microsoft.SQL.Server.2005_Analysis_Services_Step_by_Step

    通过MDX,用户可以浏览维度、选择成员、执行计算,并获取多维数据集的切片和切块。 6. **数据挖掘**:SQL Server 2005 Analysis Services还支持数据挖掘,这是一种预测性分析技术,可以从历史数据中发现模式并建立...

Global site tag (gtag.js) - Google Analytics