函數
|
描述
|
向集合中添加計算成員。
|
|
|
WITHMEMBER [Time].[1997].[1到6月的] AS 'SUM([Time].[1]:[Time].[6])'
MEMBER [Time].[1997].[1到9月的] AS 'SUM([Time].[1]:[Time].[9])' SELECT
AddCalculatedMembers([Time].[1997].Children) ONCOLUMNS, [Product].ChildrenONrowsfrom sales
|
返回包含指定維度或級別的所有成員的集合,包括計算成員。
|
|
|
SELECT
{[Product].Children} ONCOLUMNS, [Time].allmembersONrowsfrom sales
|
返回指定距離上某個成員的所有祖先。
|
|
1
|
withmember [measures].[1] as 'settostr(Ancestors(time.currentmember,[Time].[Year]) ) '
member [measures].[2] as 'settostr(Ancestors(time.currentmember,1) )'
member [measures].[3] as 'settostr(Ancestors(time.currentmember,2) )'
SELECT
{ [Measures].[Unit Sales],[measures].[1],[measures].[2],[measures].[3] } ONCOLUMNS, [Time].allmembersONrowsfrom sales
|
2
|
withmember [measures].[1] as 'sum(Ancestors(time.currentmember,[Time].[Year]),[Measures].[Unit Sales]) '
member [measures].[2] as 'sum(Ancestors(time.currentmember,1),[Measures].[Unit Sales])'
member [measures].[3] as 'sum(Ancestors(time.currentmember,2),[Measures].[Unit Sales])'
SELECT
{ [Measures].[Unit Sales],[measures].[1],[measures].[2],[measures].[3] } ONCOLUMNS, [Time].allmembersONrowsfrom sales
|
返回成員祖先的集合,包括成員本身。
|
|
1
|
withmember [measures].[1] as 'settostr(Ascendants(time.currentmember ) ) '
SELECT
{ [Measures].[Unit Sales],[measures].[1] } ONCOLUMNS, [Time].allmembersONrowsfrom sales
|
2
|
withmember [measures].[1] as 'sum(Ascendants(time.currentmember ),[Measures].[Unit Sales]) '
SELECT
{ [Measures].[Unit Sales],[measures].[1] } ONCOLUMNS, [Time].allmembersONrowsfrom sales
|
返回與主軸關聯的集合。
|
|
|
withmember [measures].[COLUMNS] as 'settostr(Axis(1)) '
member [measures].[rows] as 'settostr(Axis(1)) '
SELECT
{[measures].[rows],[measures].[COLUMNS] } ONCOLUMNS, [Time].allmembersONrowsfrom sales
|
從集合底端開始返回指定數目的項,可以選擇首先對集合排序。
|
|
|
SELECT
{[Measures].[Store Sales] } ONCOLUMNS,
BottomCount(Descendants([Store],[Store].[Store Name]),20,[Measures].[Store Sales] ) ONrowsfrom sales
|
對集合排序,並返回底端的 n 個元素,這些元素的累積合計至少爲指定的百分比。
|
|
|
select {[Unit Sales]} onCOLUMNS,
NonEmptyBottomPercent([Product].[Brand Name].Members, 10, [Unit Sales]) onROWS
from Sales
|
對集合排序,並返回底端的 n 個元素,這些元素的累積合計至少爲指定的值。
|
|
|
select {[Unit Sales]} onCOLUMNS,
NonEmptyBottomSum([Product].[Brand Name].Members, 600, [Unit Sales]) onROWS
from Sales
|
返回成員的子代。
|
|
|
withmember [measures].[CurrentChildren] as 'settostr(time.currentmember.Children)'
select {[Unit Sales],[measures].[CurrentChildren]} onCOLUMNS,
{[time].allmembers} onROWS
from Sales
|
返回兩個集合的矢量積。
|
|
|
替代語法
«Set1» * «Set2»
select {time.allmembers*{[Unit Sales],[store sales]} } onCOLUMNS,
{[Store].[Store Name].members} onROWS
from Sales
或者
select Crossjoin({time.allmembers},{[Unit Sales],[store sales]}) onCOLUMNS,
{[Store].[Store Name].members} onROWS
from Sales
|
返回某一成員在指定級別上的或者距某一成員指定距離的後代集合,可以選擇包含或不包含其它級別上的後代。
|
|
Descendants([Time].[1997])
|
SELECT
{[Measures].[Store Sales] } ONCOLUMNS,
{Descendants([Time].[1997])} ONrowsfrom sales
|
Descendants
([Time].[1997],[time].[month])
|
SELECT
{[Measures].[Store Sales] } ONCOLUMNS,
{Descendants([Time].[1997],[time].month)} ONrowsfrom sales
|
Descendants
([Time].[1997],
[time].[ month],
SELF)
|
SELECT
{[Measures].[Store Sales] } ONCOLUMNS,
{Descendants([Time].[1997],[time].[month],SELF)} ONrowsfrom sales
|
Descendants
([Time].[1997],
[time].[month],
before)
|
SELECT
{[Measures].[Store Sales] } ONCOLUMNS,
{Descendants([Time].[1997],[time].[month],before)} ONrowsfrom sales
|
Descendants
([Time].[1997],
[time].[quarter],
AFTER)
|
SELECT
{[Measures].[Store Sales] } ONCOLUMNS,
{Descendants([Time].[1997],[time].[quarter],AFTER)} ONrowsfrom sales
|
Descendants
([Time].[1997],
[time].[quarter],
BEFORE_AND_AFTER)
|
SELECT
{[Measures].[Store Sales] } ONCOLUMNS,
{Descendants([Time].[1997],[time].[quarter],BEFORE_AND_AFTER)} ONrowsfrom sales
|
Descendants
([Time].[1997],
[time].[quarter],
SELF_BEFORE_AFTER)
|
SELECT
{[Measures].[Store Sales] } ONCOLUMNS,
{Descendants([Time].[1997],[time].[quarter],SELF_BEFORE_AFTER)} ONrowsfrom sales
|
Descendants
([Time].[1997],
[time].[quarter],
LEAVES)
|
SELECT
{[Measures].[Store Sales] } ONCOLUMNS,
{Descendants([Time].[1997],[time].[quarter],LEAVES)} ONrowsfrom sales
|
Descendants
([Time].[1997],1)
|
SELECT
{[Measures].[Store Sales] } ONCOLUMNS,
{Descendants([Time].[1997],1)} ONrowsfrom sales
|
Descendants
([Time].[1997],2,
SELF_BEFORE_AFTER)
|
SELECT
{[Measures].[Store Sales] } ONCOLUMNS,
{Descendants([Time].[1997],2,SELF_BEFORE_AFTER)} ONrowsfrom sales
|
從集合中刪除重複的元組。
|
|
|
SELECT
{[Measures].[Store Sales] } ONCOLUMNS,
{ distinct({
([Time].[1997],[Store].[All Stores].[USA]),
([Time].[1997],[Store].[All Stores].[Mexico]),
([Time].[1997],[Store].[All Stores].[USA])
})} ONrowsfrom sales
|
對比
|
SELECT
{[Measures].[Store Sales] } ONCOLUMNS,
{{
([Time].[1997],[Store].[All Stores].[USA]),
([Time].[1997],[Store].[All Stores].[Mexico]),
([Time].[1997],[Store].[All Stores].[USA])
} } ONrowsfrom sales
|
將集合中的成員從指定級別深化一個級別。
另一種方法是,在集合中的指定維度上深化。
|
|
|
SELECT
{[Measures].[Store Sales] } ONCOLUMNS,
{ DrilldownLevel({[Time].[1997],[Time].[1997].[Q1],
[Time].[1997].[Q3],[Time].[1998]}) } ONrowsfrom sales
|
time.month
和
time.quarter
效果對比
|
SELECT
{[Measures].[Store Sales] } ONCOLUMNS,
{ DrilldownLevel({[Time].[1997],[Time].[1997].[Q1],[Time].[1997].[Q3],
[Time].[1998]},
time.quarter
) } ONrowsfrom sales
|
將集合底端的 n 個成員從指定級別深化一個級別。
|
|
|
SELECT
{[Measures].[Store Sales] } ONCOLUMNS,
{ DrilldownLevelBottom({[Time].[1997],[Time].[1997].[Q1],
[Time].[1997].[Q3],[Time].[1998]}
,2,,[Store Sales]
) } ONrowsfrom sales
|
有意思,分析一下結果
|
SELECT
{[Measures].[Store Sales] } ONCOLUMNS,
{ DrilldownLevelBottom({[Time].[1997],[Time].[1997].[Q1],[Time].[1997].[Q3],[Time].[1998]}
,5,time.year,[Store Sales]
) } ONrowsfrom sales
|
將集合頂端的 n 個成員從指定級別深化一個級別。
|
|
|
SELECT
{[Measures].[Store Sales] } ONCOLUMNS,
{ DrilldownLevelTop({[Time].[1997],[Time].[1997].[Q1],[Time].[1997].[Q3],[Time].[1998]}
,2, ,[Store Sales]
) } ONrowsfrom sales
|
在第一個集合與第二個集合的交集中深化。
|
|
1
|
SELECT
{[Measures].[Store Sales] } ONCOLUMNS,
{ DrilldownMember({[Store].[All Stores].[USA],[Store].[All Stores].[Canada],[Store].[All Stores].[Mexico]}
,{[Store].[All Stores].[USA], [Store].[All Stores].[USA].[or],[Store].[All Stores].[Mexico] }
) } ONrowsfrom sales
|
注意第2個set的寫法
|
SELECT
{[Measures].[Store Sales] } ONCOLUMNS,
{ DrilldownMember({[Store].[All Stores].[USA],[Store].[All Stores].[Canada],[Store].[All Stores].[Mexico]}
,{[Store].[All Stores].[USA], [Store].[All Stores].[USA].[or],
[Store].[All Stores].[Canada],[Store].[All Stores].[Canada].[BC],
[Store].[All Stores].[Mexico] } ,RECURSIVE
) } ONrowsfrom sales
|
2
|
SELECT
{[Measures].[Store Sales] } ONCOLUMNS,
{ DrilldownMember({[Store].[All Stores].[USA],[Store].[All Stores].[Canada],[Store].[All Stores].[Mexico]}
,{[Store].[All Stores].[USA], [Store].[All Stores].[USA].[or],[Store].[All Stores].[Mexico] },RECURSIVE
) } ONrowsfrom sales
|
備註
|
幫助中有個錯誤的地方:
……示例
DrilldownMember({USA, Canada, Mexico}, {USA, Washington, Mexico},RECURSIVE)
返回集合:
{USA, <all states in USA before Washington>,
WA, <all cities in Washington>, <all cities(應該是states) in USA after Washington>,
Canada, Mexico, <all states in Mexico>}……..
|
3
|
SELECT
{time.[1997] } ONCOLUMNS,
{ DrilldownMember(
{
([Store].[All Stores].[USA],[Measures].[Store Sales]),
([Store].[All Stores].[Canada],[Measures].[Store Sales]),
([Store].[All Stores].[Mexico],[Measures].[Store Sales])
}
,{[Store].[All Stores].[USA],[Store].[All Stores].[USA].[wa]}
) } ONrowsfrom sales
|
4
加RECURSIVE
|
SELECT
{time.[1997] } ONCOLUMNS,
{ DrilldownMember(
{
([Store].[All Stores].[USA],[Measures].[Store Sales]),
([Store].[All Stores].[Canada],[Measures].[Store Sales]),
([Store].[All Stores].[Mexico],[Measures].[Store Sales])
}
,{[Store].[All Stores].[USA],[Store].[All Stores].[USA].[wa]}
,RECURSIVE) } ONrowsfrom sales
|
類似於 DrilldownMember,除了只包括底端的 n 個子代。
|
|
1,RECURSIVE含義同上,且遞歸部分的成員同樣受count控制
|
SELECT {[Measures].[Store Sales] } ONCOLUMNS,
{ DrilldownMemberBottom({[Store].[All Stores].[USA],[Store].[All Stores].[Canada],[Store].[All Stores].[Mexico]} ,
{[Store].[All Stores].[USA], [Store].[All Stores].[USA].[or],[Store].[All Stores].[Mexico] },
2,[Measures].[Store Sales],RECURSIVE
) }
ONrowsfrom sales
|
|
對元組的深化同DrilldownMember
|
類似於 DrilldownMember,除了只包括頂端的 n 個子代。
|
|
|
同DrilldownMemberBottom
|
從集合的某一指定級別之下的成員淺化。
|
|
1
|
SELECT {[Measures].[Store Sales] } ONCOLUMNS,
{ DrillUpLevel({USA, Ca, [Los Angeles], Wa , Seattle, Canada, [BC]},[store country])
} ONrowsfrom sales
|
2
|
SELECT {[Measures].[Store Sales] } ONCOLUMNS,
{ DrillUpLevel({USA, Ca, [Los Angeles], Wa , Seattle, Canada, [BC]})
}
ONrowsfrom sales
|
在第一個集合與第二個集合的交集中淺化。
|
|
|
SELECT {[Measures].[Store Sales] } ONCOLUMNS,
{ DrillupMember({Canada, Mexico, USA, Wa, Seattle},{Wa})
} ONrowsfrom sales
|
查找兩個集合之間不同的項,可以選擇保留重複項。
|
|
1
|
SELECT {[Measures].[Store Sales] } ONCOLUMNS,
{ Except({Canada, [BC], Mexico, [BC], USA, Wa}, {Canada, Mexico, Ca})
}
ONrowsfrom sales
|
2,呵呵,普科顯示的也有點問題
|
SELECT {[Measures].[Store Sales] } ONCOLUMNS,
{ Except({Canada, [BC], Mexico, [BC], USA, Wa}, {Canada, Mexico, Ca},all)
}
ONrowsfrom sales
|
從析取的維度元素中返回元組集合。即 Crossjoin 的反運算。
|
|
Extract 函數執行的操作與 Crossjoin 函數相反
|
SELECT {[Measures].[Store Sales] } ONCOLUMNS,
{ Extract({([1997], Wa ), ([1997], Ca ), ([1998], Ca )}, Time)
} ONrowsfrom sales
|
返回根據搜索條件對集合進行篩選所得到的集合。
|
|
|
SELECT {[Measures].[Store Sales] } ONCOLUMNS,
{ filter(time.allmembers,[Measures].[Store Sales]>50000)
} ONrowsfrom sales
|
將集合應用到另一集合的每個成員,然後用 union 運算合併所得的集合。
|
|
1
|
SELECT {[Measures].[Store Sales] } ONCOLUMNS,
{ Generate({ USA, Canada }, Descendants(store.CurrentMember, [store state]))
} ONrowsfrom sales
|
2,ca,wa是USA的,加all則簡單複製
|
SELECT {[Measures].[Store Sales] } ONCOLUMNS,
{ Generate({USA, Canada}, {ca, wa} ,all)
} ONrowsfrom sales
如果通過 CurrentMember,«Set1» 與 «set_expression» 無關,那麼 Generate 生成 «set_expression» 所指的集合的簡單複製,它包含的複製與 «Set1» 中的元組一樣多。如果指定了可選的 ALL 標誌,結果中將保留所有重複項。如果未指定 ALL,重複項將被刪除。
|
3,字符串的
|
withmember [Measures].[合字符串] as 'Generate({Time.allmembers}, Time.CurrentMember.name," and ")'
SELECT { [Measures].[合字符串] } ONCOLUMNS,
{[Store].[All Stores]
} ONrowsfrom sales
|
3, 應用擴展
|
withmember [Measures].[合字符串] as 'Generate({Time.[1997].children}, cstr((Time.CurrentMember, [Measures].[Unit Sales],store.[all stores]))," and ")'
SELECT { [Measures].[合字符串] } ONCOLUMNS,
{[Store].[All Stores]
} ONrowsfrom sales
|
返回集合中指定數目的前若干個元素。
|
|
|
SELECT { Head(Descendants([Time].[1997],2,SELF_BEFORE_AFTER), 3) } ONCOLUMNS,
{[measures].[store sales]
} ONrowsfrom sales
|
在層次結構中對集合的成員排序。
|
|
|
SELECT Hierarchize
( {[Time].[1997].[Q1],[Time].[1997].[Q2].[5],[Time].[1997].[Q1].[2],[Time].[1997].[Q2].[5],[Time].[1997].[Q2] },post) ONCOLUMNS,
{[measures].[store sales]
} ONrowsfrom sales
和下面的語句比較一下就知道了
SELECT {[Time].[1997].[Q1],[Time].[1997].[Q2].[5],[Time].[1997].[Q1].[2],[Time].[1997].[Q2].[5],[Time].[1997].[Q2] } ONCOLUMNS,
{[measures].[store sales]
} ONrowsfrom sales
|
返回兩個輸入集合的交集,可以選擇保留重複項。
|
|
|
SELECT
Intersect({[Time].[1997].[Q1],[Time].[1997].[Q2].[5],[Time].[1997].[Q1].[2],[Time].[1997].[Q2].[5] },
{[Time].[1997].[Q2].[5],[Time].[1997].[Q2] },all) ONCOLUMNS,
{[measures].[store sales]
} ONrowsfrom sales
注意帶ALL和不帶ALL 的區別
|
返回指定的成員之前(包含該成員)的成員集合。
|
|
|
withmember measures.test as 'Generate({LastPeriods(3,time.currentmember)}, Time.CurrentMember.name," and ") '
SELECT {measures.test } ONCOLUMNS,
{[Time].members} ONrowsfrom sales
|
返回維度、層次結構或級別中所有成員的集合。
|
|
|
SELECT
{measures.[store sales] } ONCOLUMNS,
{[Time].members} ONrowsfrom sales
|
PeriodsToDate函數的快捷函數,將級別指定爲 Month。
|
|
|
到目前沒有發現其意義
|
基於包含成員名稱的字符串表達式,返回一個包含單個成員的集合。
|
|
|
SELECT {measures.[store sales] } ONCOLUMNS,
{NameToSet("[Time].[1997]")} ONrowsfrom sales
|
返回兩個或多個集合的矢量積,除空成員之外。
|
|
|
SELECT {measures.[store sales] } ONCOLUMNS,
{NonEmptyCrossJoin([Store].[Beverly Hills].Children, [Customers].[CA].Children, {[Promotions].[Big Time Savings]},2)
} ONrowsfrom sales
請詳細看聯機幫助,這個函數在使用的時候慎用,因爲NonEmptyCrossjoin 函數以一個集合的形式返回兩個或多個集合的矢量積,不包括空元組或無基礎事實數據表提供的數據的元組,因此所有計算成員均被自動排除。
|
排列集合的成員,可以選擇保留或打破層次結構。
|
|
|
SELECT {measures.[store sales] } ONCOLUMNS,
Order([Store].[Store State].allmembers, measures.[store sales], BASC) ONrowsfrom sales
|
返回指定級別上的一個時期(成員)集合,從第一個時期開始到指定的成員爲止。
|
|
1
|
SELECT {measures.[store sales] } ONCOLUMNS,
PeriodsToDate([Time].[Quarter],[Time].[1997].[Q3].[8]) ONrowsfrom sales
|
2
|
SELECT {measures.[store sales] } ONCOLUMNS,
PeriodsToDate([Store].[Store Country],[Store].[All Stores].[USA].[OR]) ONrowsfrom sales
|
PeriodsToDate函數的快捷函數,將級別指定爲 Quarter。
|
|
|
同上
|
返回成員的兄弟,包括成員本身。
|
|
|
SELECT {measures.[store sales] } ONCOLUMNS,
{[Time].[1997].[Q2].Siblings} ONrowsfrom sales
|
從集合中刪除計算成員。
|
|
此函數從某個集合中刪除計算成員,該集合包含使用 AddCalculatedMembers 添加的計算成員。
|
WITHMEMBER [Time].[1997].[1到6月的] AS 'SUM([Time].[1]:[Time].[6])'
MEMBER [Time].[1997].[1到9月的] AS 'SUM([Time].[1]:[Time].[9])' SELECT
StripCalculatedMembers(
AddCalculatedMembers([Time].[1997].Children)
) ONCOLUMNS, [Product].ChildrenONrowsfrom sales
|
用字符串表達式構造一個集合。
|
|
|
SELECT {measures.[store sales] } ONCOLUMNS,
{StrToSet("Time.Members")} ONrowsfrom sales
|
從集合中返回元素的子集。
|
|
|
SELECT {measures.[store sales] } ONCOLUMNS,
{Subset(Time.allMembers,0,7)} ONrowsfrom sales
|
從集合尾部返回子集。
|
|
|
SELECT {measures.[store sales] } ONCOLUMNS,
{tail(Subset(Time.allMembers,0,7),4)} ONrowsfrom sales
|
切換對成員的鑽取狀態。此函數是 DrillupMember 和 DrilldownMember 的組合。
|
|
*
|
SELECT {[Measures].[Store Sales] } ONCOLUMNS,
ToggleDrillState({Product.Members},{Product.Bagels, Product.Muffins}, RECURSIVE)
ONrowsfrom sales
|
從集合頂端開始返回指定數目的項,可以選擇首先對集合排序。
|
|
|
SELECT {[Measures].[Store Sales] } ONCOLUMNS,
Topcount(Descendants([Store].[All Stores].[USA],[Store].[Store City] ), 10, [store sales]) ONrowsfrom sales
|
對集合排序,並返回頂端的 n 個元素,這些元素的累積合計至少爲指定的百分比。
|
|
|
SELECT {[Measures].[Store Sales] } ONCOLUMNS,
TopPercent(Descendants([Store].[All Stores].[USA],[Store].[Store City] ), 90, [store sales]) ONrowsfrom sales
|
對集合排序,並返回頂端的 n 個元素,這些元素的累積合計至少爲指定的值。
|
|
|
SELECT {[Measures].[Store Sales] } ONCOLUMNS,
TopSum(Descendants([Store].[All Stores].[USA],[Store].[Store City] ), 90000, [store sales]) ONrowsfrom sales
|
返回兩個集合的並集,可以選擇保留重複項。
|
|
|
SELECT {[Measures].[Store Sales] } ONCOLUMNS,
Union(USA.Children, CANADA.Children, ALL)
ONrowsfrom sales
|
動態計算集合中指定的子成員的合計,並在結果集中對合計的標籤使用某種模式來顯示。
|
|
|
select
{[Measures].[Unit Sales]} oncolumns,
{ [Time].[1997],
[Time].[1997].[Q2],
[Time].[1997].[Q4]
} onrows
from Sales
和下面的對比着理解
select
{[Measures].[Unit Sales]} oncolumns,
{VisualTotals({ [Time].[1997],
[Time].[1997].[Q2],
[Time].[1997].[Q4]
}, "**Subtotal - *")
} onrows
from Sales
|
PeriodsToDate函數的快捷函數,將級別指定爲 Week。
|
|
|
略
|
PeriodsToDate函數的快捷函數,將級別指定爲 Year。
|
|
|
略
|
MDX函數使用介紹(三):聚合函數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.