翻译介绍15个经典的MDX查询-02and03
来源:互联网 发布:真实的鲁迅很变态知乎 编辑:程序博客网 时间:2024/05/19 02:42
15个很具代表性的MDX查询语句
出处 www.sqlmag.com 原作者Russ Whitney
02. 所有商店中销售前10名的产品类别有哪些?
Listing 2 直接利用TopCount()函数查询销售前10名的产品。
(这是一种最直接的方法,TopCount()函数本身自带排序(降序)的功能)
LISTING 2: Determining Top 10 Product Categories
说明:查询销售前10名的产品类别
select {[Unit Sales]} on COLUMNS,
TopCount( [Product].[Product Category].Members, 10, ([Unit Sales]) ) on ROWS
from Sales
查询结果展示:
03. 在美国,刚刚过去的三个季度里都有销售量的食品和饮料有哪些?
(这个查询也可以理解为“过去三个季度里食品和饮料销售量都不为0的产品有哪些?”)。查询Listing 3 示范了如何动态的确定对应的时间集合—这是一项很有价值的技巧。时间集合动态随着cube数据的更新而改变(也就是说该查询无论你在什么时候执行,无论cube的数据作了多少次更新,结果都是最近三个月的数据)。首先,自定义集合LastQuarter定义了时间维度中有销售记录的最近一个季度。自定义集合Last3Quarters在LastQuarter的基础上利用Range()函数(实际没有range()函数,冒号:就是作者说的函数)指定了以LastQuarter为最后一个季度的连续的三个季度。我不直接在Last3Quarter(原文是LastQuarter,我认为是作者笔误)的定义中使用Tail()函数是因为这样做返回的可能不是连续的三个季度;因为空记录的季度肯能出现在任何季度,Filter()函数只能排除掉空季度。Lag()函数结合range()函数,确保了返回的三个季度是连续的。
在这个查询中,item(0).item(0) 函数取得指定集合的第一个成员,因为集合在技术上就是一组元组[如:来自不同维度的一系列成员也可以组成一个元组],所以用第一个Item()函数选择元组,第二个Item()选择该元组里的成员。(我们可以这样理解,集合由元组组成,元组由成员组成)。
Listing_03.Determining Brands Sold During the Past Three Quarters.txt
说明:在过去三个季度里都存在销售量的商品销售记录
with set [LastQuarter] as 'Tail(Filter([Time].[Quarter].Members, Not
IsEmpty([Time].CurrentMember)),1)'
set [Last3Quarters] as ' [LastQuarter].item(0).item(0).Lag(2) : [LastQuarter].item(0).item(0)'
select [Last3Quarters] on COLUMNS,
Non Empty
[Product].[Brand Name] )) on ROWS
from Sales
查询结果展示:
注:
TopCount
从集合顶端开始返回指定数目的项,可以选择首先对集合排序。
例子
SELECT {[Measures].[Store Sales] } ON COLUMNS,
Topcount(Descendants([Store].[All Stores].[
Subset
从集合中返回元素的子集。
例子
SELECT {measures.[store sales] } ON COLUMNS,
{Subset(Time.allMembers,0,6)} ON rows from sales
Tail
从集合尾部返回子集。
例子
SELECT {measures.[store sales] } ON COLUMNS,
{tail(Subset(Time.allMembers,0,6),4)} ON rows from sales
Lag
返回指定成员的所在维度上的上一个成员。
例子
with member [measures].[a1] as 'time.currentmember.lag(1).name'
SELECT {[measures].[a1] } ON COLUMNS , { [Time].allmembers } ON ROWS FROM [Sales]
Filter
返回根据搜索条件对集合进行筛选所得到的集合。
例子
SELECT {[Measures].[Store Sales] } ON COLUMNS,
{ filter(time.allmembers,[Measures].[Store Sales]>50000)
} ON rows from sales
Item
从集合中返回指定元组或者从元组中返回指定成员。
例子
with set kkk as '{{[Time].[1997], [Time].[1998]}*{[Store].[All Stores].[
member measures.jjj as 'TupleToStr(kkk.item(0).item(0))',solve_order=1
select { measures.[store sales],measures.jjj } on columns,
{kkk} on rows
from Sales
Union
返回两个集合的并集,可以选择保留重复项。
例子
SELECT {[Measures].[Store Sales] } ON COLUMNS,
ON rows from sales
- 翻译介绍15个经典的MDX查询-02and03
- 翻译介绍15个经典的MDX查询-02and03
- 翻译介绍15个经典的MDX查询-02and03
- 翻译介绍15个经典的MDX查询-01
- 翻译介绍15个经典的MDX查询-01
- 翻译介绍15个经典的MDX查询-04&05
- 翻译介绍15个经典的MDX查询-06&07
- 翻译介绍15个经典的MDX查询-08&09
- 翻译介绍15个经典的MDX查询-01
- 翻译介绍15个经典的MDX查询-04&05
- 翻译介绍15个经典的MDX查询-06&07
- 翻译介绍15个经典的MDX查询-08&09
- MDX查询几个经典示例
- 15个很具代表性的MDX查询语句
- 15个很具代表性的MDX查询语句
- 简单的MDX查询
- 典型的15个MDX应用
- 多维查询表达式MDX基础知识介绍
- 泛型编程
- 轻松掌握Windows窗体间的数据交互
- 关于手机的故事
- 分类测试
- Eclipse开发入门与项目实践
- 翻译介绍15个经典的MDX查询-02and03
- MIDP3.0简介
- "分段好啊分段好"求最大M个数的程序 (上)2006-07-18
- IT创业所需的9项企业家精神
- UML与Rational Rose2002从入门到精通
- c语言学习零碎整理(7):数组名是指针吗?(补)
- GPRS应用中TCP/IP/PPP的基本概念
- 批评一些大学生的工作观问题——什么时候能踏实?
- 我不做大哥好多年--------