MDX中函数的应用
成员百分比分析 函数:CurrentMember、Parent等;
分析各城市的销售所占全部城市的总销售额百分比。
WITH MEMBER Measures.[Unit Sales Percent] AS '((Store.CURRENTMEMBER, Measures.[Unit Sales]) / (Store.CURRENTMEMBER.PARENT, Measures.[Unit Sales])) ', FORMAT_STRING = 'Percent' SELECT {Measures.[Unit Sales], Measures.[Unit Sales Percent]} ON COLUMNS, ORDER(DESCENDANTS(Store.[USA].[CA], Store.[Store City], SELF),[Measures].[Unit Sales], ASC) ON ROWS FROM Sales
重要顾客分布分析 函数:Count、Sum、Filter、Descendants等;
分析各个省份中重要顾客的数量及他们的总购买量,"重要顾客"的定义是一个顾客的购买金额或者购买数目达到或超过一定的数值。
WITH MEMBER [Measures].[Qualified Count] AS ‘ COUNT(FILTER(DESCENDANTS(Customers.CURRENTMEMBER, [Customers].[Name]), ([Measures].[Store Sales]) > 10000 OR ([Measures].[Unit Sales]) > 10))' MEMBER [Measures].[Qualified Sales] AS 'SUM(FILTER(DESCENDANTS(Customers.CURRENTMEMBER, [Customers].[Name]), ([Measures].[Store Sales]) > 10000 OR ([Measures].[Unit Sales]) > 10), ([Measures].[Store Sales]))' SELECT {[Measures].[Qualified Count], [Measures].[Qualified Sales]} ON COLUMNS, DESCENDANTS([Customers].[All Customers], [State Province], SELF_AND_BEFORE) ON ROWS FROM Sales
排序 函数:Order
对各个产品类别按照Store Sales指标降序排列,排序分为维内排序/整体排序。
select {[Measures].[Unit Sales], [Measures].[Store Sales]} on columns, Order([Product].[Product Department].members, [Measures].[Store Sales], DESC) on rows from Sales
历史相关的累计值 函数:YTD、 Sum、Descendants
求销售额的本年累计值YTD(),类似还可以求解历史累计YTD()、本月累计MTD()、本周累计WTD()等, 以及更通用的函数PeriodToDate()。
with member [Measures].[Accumulated Sales] as 'Sum(YTD(),[Measures].[Store Sales])' select {[Measures].[Store Sales],[Measures].[Accumulated Sales]} on columns, {Descendants([Time].[1997],[Time].[Month])} on rows from [Warehouse and Sales]
四则运算 函数:四则运算函数;
在成员上及指标上均可以进行四则运算,动态派生出新的成员及指标。
WITH MEMBER MEASURES.ProfitPercent AS '([Measures].[Store Sales]-[Measures].[Store Cost])/([Measures].[Store Cost])',FORMAT_STRING = '#.00%' MEMBER [Time].[First Half 97] AS '[Time].[1997].[Q1] + [Time].[1997].[Q2]' MEMBER [Time].[Second Half 97] AS '[Time].[1997].[Q3] + [Time].[1997].[Q4]' SELECT {[Time].[First Half 97], [Time].[Second Half 97], [Time].[1997].CHILDREN} ON COLUMNS, {[Store].[Store Country].[USA].CHILDREN} ON ROWS FROM [Sales] WHERE (MEASURES.ProfitPercent)
逻辑判断 函数:IIf
逻辑判断可以根据不同的条件产生不同的结果。下例判断各商店是否是啤酒及白酒的大卖家。
WITH MEMBER [Product].[BigSeller] AS 'IIf([Product].[Drink].[Alcoholic Beverages].[Beer and Wine] > 100, "Yes","No")' SELECT {[Product].[BigSeller],[Product].children} ON COLUMNS, {[Store].[All Stores].[USA].[CA].children} ON ROWS FROM Sales
成员属性 函数:Properties、Dimension Properties
成员属性是与成员绑定的,其对应关系导致很难选择合适的使用方式。以下是使用成员属性的例子,它对应每个商店成员列出了商店类型属性,相应的,商店经理、商店规模、商店地址等属性也可以被列出。该用法稍加灵活应用就可以解决过去遇到的企业名称——〉企业代码对应展示问题。
WITH MEMBER [Measures].[StoreType] AS '[Store].CurrentMember.Properties("Store Type")', MEMBER [Measures].[ProfitPct] AS '(Measures.[Store Sales] - Measures.[Store Cost]) / Measures.[Store Sales]', FORMAT_STRING = '##.00%' SELECT { Descendants([Store].[USA], [Store].[Store Name])} ON COLUMNS, {[Measures].[Store Sales], [Measures].[Store Cost], [Measures].[StoreType], [Measures].[ProfitPct] } ON ROWS" FROM Sales 另外一种用法: SELECT {[Measures].[Units Shipped], [Measures].[Units Ordered]} ON COLUMNS, [Store].[Store Name].MEMBERS DIMENSION PROPERTIES [Store].[Store Name].[Store Type] ON ROWS FROM Warehouse
多步计算实现复杂逻辑 函数:其实可以是任意函数合乎逻辑的组合
求出从来没有买过乳制品的顾客,求解过程是先求出每位顾客在过去购买的乳制品的数量累计,然后找出累计值为0的顾客。同样,过去遇到的求税额大于平均税额的海关的问题可以类似求出。
with member [Measures].[Dairy ever] as 'sum([Time].members, ([Measures].[Unit Sales],[Product].[Food].[Dairy]))' set [Customers who never bought dairy] as 'filter([Customers].members, [Measures].[Dairy ever] = 0)' select {[Measures].[Unit Sales], [Measures].[Dairy ever]} on columns, [Customers who never bought dairy] on rows from Sales
同期、前期 函数:PrevMember、ParellelPeriod
求解各产品销售额的去年同期值,年增长率。
with member [Measures].[Store Sales Last Period] as '([Measures].[Store Sales], Time.PrevMember)', format='#,###.00' member [Measures].[Yearly Increase Rate] as ‘([Measures].[Store Sales] - [Measures].[Store Sales Last Period])/ [Measures].[Store Sales Last Period]', FORMAT_STRING = 'Percent' select {[Measures].[Store Sales], [Measures].[Store Sales Last Period]} on columns, { [Product].members} on rows from Sales where ([Time].[1998])
另一个例子,使用ParellelPeriod函数。
WITH MEMBER [Measures].[YTD Unit Sales] AS 'COALESCEEMPTY(SUM(YTD(), [Measures].[Unit Sales]), 0)' MEMBER [Measures].[Previous YTD Unit Sales] AS '(Measures.[YTD Unit Sales], PARALLELPERIOD([Time].[Year]))' MEMBER [Measures].[YTD Growth] AS '[Measures].[YTD Unit Sales] - ([Measures].[Previous YTD Unit Sales])' SELECT {[Time].[1998]} ON COLUMNS, {[Measures].[YTD Unit Sales], [Measures].[Previous YTD Unit Sales], [Measures].[YTD Growth]} ON ROWS FROM Sales;
Top N分析 函数:TopCount
求解1998年总购买量处于前5名的顾客;
select {[Measures].[Store Sales]} on columns, {TopCount([Customers].[Customer Name].members,5, [Measures].[Store Sales])} on rows from Sales where ([time].[1998])
成员过滤 函数:Filter、Except
求解1998年所有顾客中购买总额得到1万元以上的顾客,列出满足条件的顾客的名字、年购买数量、年购买金额。
Select {[measures].[Store Sales],[measures].[unit sales]} on columns, FILTER(Customers.[Name].Members,[Measures].[Store Sales] > 10000) on rows From sales Whare ([time].[1998]) 另外一种成员过滤(从所有的媒体类型中剔除No Media类型),确切的说应该是集合运算。 select {[Measures].[Unit Sales]} on columns, except([Promotion Media].[Media Type].members,{[Promotion Media].[Media Type].[No Media]}) on rows from Sales
时间段 函数:sum、":"运算符
求美国的商店在指定时间段内的销售额。
WITH MEMBER [Time].[1997].[Six Month] AS 'SUM([Time].[1]:[Time].[6])' MEMBER [Time].[1997].[Nine Month] AS 'SUM([Time].[1]:[Time].[9])' SELECT {[Time].[1997].[Six Month],[Time].[1997].[Nine Month]} ON COLUMNS, {[measures].[store salse]} ON ROWS FROM Sales Where ([Store].[USA])
分享到:
相关推荐
在实际的商务智能应用中,MDX函数能够帮助用户动态地分析数据,创建复杂的钻取和切片功能,实现深度洞察业务。例如,通过调整MDX查询,用户可以在销售报表中查看不同地区的最畅销产品,或者按时间维度查看销售额的...
在这个文档“MDX 函数的使用介绍_打印.doc”中,我们可以深入理解MDX函数的分类、用法以及通过实例和运行结果截图来学习它们的实际应用。 一、MDX函数分类 MDX函数大致可以分为以下几类: 1. **聚合函数**:如SUM...
为了更好地理解MDX函数的应用,以下是一些具体示例: 1. **获取时间维度中的特定级别名称**: ```mdx WITH Member [Measures].[abc] As '[Time].CurrentMember.Dimension.Name' SELECT {[Time].&[1997]} ON ...
通过这些示例,我们可以看出MDX函数在微软的OLAP服务中的强大应用。它们不仅提供了对数据的深入洞察,还极大地提高了数据分析师的工作效率,使得复杂的多维数据分析变得简单易行。在实际的商务智能项目中,结合使用...
本文将详细介绍MDX函数的不同类型及其具体用法,帮助读者更好地理解和掌握MDX函数的应用场景和技术细节。 #### 二、MDX函数分类 MDX函数按照功能可以大致分为以下几类: 1. **数组函数** 2. **层次结构函数** 3. ...
### BI OLAP MDX函数使用大全 #### 一、引言 在商业智能(BI)领域,联机分析处理(OLAP)技术被广泛应用于数据分析和报表制作中。多维表达式(MDX)作为OLAP的核心语言之一,提供了一系列强大的函数支持,使得分析...
MDX(Multidimensional ...这些MDX函数在构建复杂的查询和计算时非常有用,允许用户以灵活的方式访问和分析多维数据。通过熟练掌握这些函数,开发者能够设计出高效的分析解决方案,以满足不同业务场景的需求。
MDX函数的应用不仅限于上述列出的,还包括其他许多功能,如日期和时间函数、字符串函数、计算和过滤函数等。它们提供了一种强大而灵活的方式来处理多维数据集,帮助开发者构建复杂的数据分析和报告解决方案。在软件...
标题中的“cognos mdx函数实现同比环比”是指在IBM Cognos分析环境中,通过使用多维表达式(MDX)语言来计算数据的同比增长率和环比增长率。Cognos是一款强大的商业智能和数据分析工具,而MDX是用于查询多维数据集的...
12. **MDX函数和运算符**:MDX提供了丰富的函数(如Sum, Avg, Max等)和运算符(如+、-、*、/等)用于数据操作和计算。 13. **上下文(Context)**:在MDX中,成员和函数的计算会受到当前查询上下文的影响。 通过...
通过理解并熟练运用这些MDX函数和技巧,可以有效地分析多维数据,提取有价值的信息,支持决策制定。在实际应用中,应根据具体的数据模型和业务需求灵活调整和组合这些方法,以实现更精细的数据探索和洞察。
- **同比增长率问题**:使用MDX中的时间维度和相应的函数来计算不同时间段之间的增长率。 - **客户满意度问题**:根据客户反馈数据,通过MDX来分析客户的满意度水平。 - **销售排名**:使用MDX的排序功能来找出销售...
通过一系列精心设计的查询示例,我们可以掌握MDX在实际业务分析中的应用技巧。下面列出的15个MDX查询案例,是针对不同查询场景的经典示例,它们将有助于我们深入理解MDX的多功能性和灵活性。 第一个查询示例涉及到...
第9章 Hyperion Essbase中属性维度和成员属性的用法 第10章 通过外部函数扩展MDX 第11章 通过MDX改变多维数据集和维度环境 第12章 Microsoft Analysis Services中计算的多种方法 第13章 Analysis Services 2005...
4. MDX函数列表 - **维度函数**:如`CurrentMember`获取当前上下文中的成员,`FirstChild`和`LastChild`找到层次中的第一个和最后一个成员。 - **成员函数**:如`Member_Name`返回成员的名称,`Member_Value`获取...
1. **MDX函数与语法**:深入讲解MDX的各类函数,如DrilldownLevel, Parent, Child, Hierarchize等,以及如何构建复杂的MDX查询。 2. **MDX子查询和脚本**:说明如何在MDX中嵌套查询,以及如何编写脚本来实现更复杂...
MDX 语法包括多种函数和运算符,可以用来查询和操作多维数据。MDX 支持多种数据类型,包括数字、字符串、日期时间等。 MDX 应用场景 MDX 广泛应用于 OLAP 数据库、数据挖掘和商业智能等领域。它可以用来查询和...
本书主要内容:针对Microsoft与Hyperion产品的具体应用,组合不同的MDX函数来解决各种问题的技术与技巧,SQL Server 2005 Analysis Services的功能,以及与先前版本相比它与MDX之间关系的变化,MDX的标准语法,...
第9章 Hyperion Essbase中属性维度和成员属性的用法 第10章 通过外部函数扩展MDX 第11章 通过MDX改变多维数据集和维度环境 第12章 Microsoft Analysis Services中计算的多种方法 第13章 Analysis Services 2005...