MDX常用函數


1.ParallelPeriod

--ParallelPeriod
with member [Measures].[a1] As 'ParAllelPeriod(Year,2,[時間].[月].&[2011]&[12])'
select ParAllelPeriod([時間].[].&[2011]&[10].level,1,[時間].[].&[2011]&[10]) on columns,
[Measures].[會員人數] on rows
from [BSUSYS_New]

 

2.Topcount

select [Measures].[會員人數] on 0,
topcount([時間].[].[],5,[Measures].[會員人數]) on 1
from [BSUSYS_New]

3.bottomcount

select [Measures].[會員人數] on 0,
bottomcount([時間].[].[],5,[Measures].[會員人數]) on 1
from [BSUSYS_New]

4.Toppercent(這些元素的累積合計至少為指定的百分比即指定月份的會員人數總和至少是總會員人數的50%)

select [Measures].[會員人數] on 0,
Toppercent([時間].[].[],50,[Measures].[會員人數]) on 1
from [BSUSYS_New]

5.bottompercent

select [Measures].[會員人數] on 0,
bottompercent([時間].[].[],50,[Measures].[會員人數]) on 1
from [BSUSYS_New]

6.TOPSUM(這些月份的累計會員>=1600000)

select [Measures].[會員人數] on 0,
TOPSUM([時間].[].[],1600000,[Measures].[會員人數]) on 1
from [BSUSYS_New]

7.BOTTOMSUM

select [Measures].[會員人數] on 0,
BOTTOMSUM([時間].[].[],500,[Measures].[會員人數]) on 1
from [BSUSYS_New]

8.Filter

select [Measures].[會員人數] on 0,
filter([時間].[].[],[Measures].[會員人數]>100000) on 1
from [BSUSYS_New]

9.generate(將集合應用到另一集合的每個成員)

--Generate 最常見的實際用法是為一組成員計算復雜集表達式,如 TopCount。
select [Measures].[會員人數] on 0,
generate ([時間].[].[].members,
TOPcount([時間].[].currentmember*[會員 - 注冊門店].[].[].members,2,[Measures].[會員人數])) on 1
from  [BSUSYS_New]
/*將年份跟會員人數排名前2名的省份的集進行簡單交叉聯接將
顯示所有時間的前2個省份(每年都重復),而不是每年的前兩名省份*/
select [Measures].[會員人數] on 0,
[時間].[].[].members*TOPcount([會員 - 注冊門店].[].[].members,2,[Measures].[會員人數]) on 1
from  [BSUSYS_New]
--以下示例說明如何使用 Generate 返回字符串:
with member MEASURES.GENERATESTRINGDEMO AS
generate ([時間].[].[].members,[時間].[].currentmember.name)
member MEASURES.GENERATEDELIMITEDSTRINGDEMO AS
generate ([時間].[].[].members,[時間].[].currentmember.name," and ")
select {MEASURES.GENERATESTRINGDEMO,MEASURES.GENERATEDELIMITEDSTRINGDEMO }on 0
from [BSUSYS_New]

10.Descendants(Descendants 函數中的成員和級別必須屬於同一層次結構)

select [Measures].[訂單數] on 0,
descendants([創建時間].[年季月層次].[].&[2011],[創建時間].[年季月層次].[],SELF)  on 1
from YHDJBLMDataDW

11.Ancestor(在同一層次結構才行)

WITH MEMBER Measures.x AS [Measures]. [Measures].[商品小票數]/ 
   (
   [Measures].[Measures].[商品小票數],  
      Ancestor 
         (
         [商品].[舊品類層次].CurrentMember,
         [商品].[舊品類層次].[舊大品類]
         )
   ), FORMAT_STRING = '0%'
SELECT {[Measures].[商品小票數], Measures.x} ON 0,
{
   Descendants 
      (
        [商品].[舊品類層次].[舊大品類].&[糖果類],
         [商品].[舊品類層次].[舊小品類], SELF 
      )
} ON 1
FROM [YHD_NEW]

12.RANK

WITH 
MEMBER [Measures].[Rank] AS
Rank(
[商品].[舊品類層次].CurrentMember,
[商品].[舊品類層次].CurrentMember.Siblings,
([Measures].[商品小票數])
)
SELECT
{
[Measures].[商品小票數],
[Measures].[Rank]
} ON COLUMNS,
order ({[商品].[舊品類層次].[舊大品類].Members} ,[Measures].[Rank]
,asc)ON ROWS
FROM [YHD_NEW]

13.IsLeaf

WITH
MEMBER [Measures].[ss] AS
IIF(
IsLeaf([商品].[舊品類層次].CurrentMember),
"N/A",
COUNT(
[商品].[舊品類層次].CurrentMember.Children
)
)
SELECT
{[Measures].[ss]} ON COLUMNS,
{[商品].[舊品類層次].[舊小品類].Members} ON ROWS
FROM [YHD_NEW]

14.OpeningPeriod/ClosingPeriod

SELECT OpeningPeriod
([時間].[日歷層次].[],[時間].[日歷層次].[].&[2010]) ON 0,
[Measures].[商品小票數] on 1
FROM [YHD_NEW]

SELECT ClosingPeriod
([時間].[日歷層次].[季度],[時間].[日歷層次].[].&[2010]) ON 0,
[Measures].[商品小票數] on 1
FROM [YHD_NEW]

15.AGGREGATE

with member [商品].[aa]
AS AGGREGATE({[商品].[舊品類層次].[舊大品類].&[NULL], 
[商品].[舊品類層次].[舊大品類].&[N元系列], 
[商品].[舊品類層次].[舊大品類].&[車用產品], 
[商品].[舊品類層次].[舊大品類].&[寵物專用]})
SELECT [商品].[aa] ON COLUMNS,
[Measures].[商品小票數] on ROWS
FROM [YHD_NEW]

16.VisualTotals

with member [aa]
 AS 

        VISUALTOTALS(
                { 
                    [商品].[舊品類層次].[All], 
                    [商品].[舊品類層次].[舊大品類].&[NULL], 
                    [商品].[舊品類層次].[舊大品類].&[N元系列], 
                    [商品].[舊品類層次].[舊大品類].&[車用產品], 
                    [商品].[舊品類層次].[舊大品類].&[寵物專用]
                }
        )
        
SELECT 
{[Measures].[不重復商品小票數]}    ON COLUMNS, 
[aa]    ON ROWS
FROM [YHD_NEW]
CELL PROPERTIES VALUE, FORMATTED_VALUE, FORE_COLOR, BACK_COLOR


SELECT [Measures].[商品小票數] ON Columns,
   VisualTotals
   ({[商品].[舊大品類].[ALL]
,[商品].[舊大品類].&[NULL]
,[商品].[舊大品類].&[N元系列]
     }
      , '* - Visual Total'
   ) ON Rows
FROM [YHD_NEW]


SELECT {[Measures].[商品小票數],[Measures].[不重復商品小票數],
[Measures].[不重復滲透率]} ON Columns,
 VisualTotals({[商品].[舊大品類].[ALL]
,[商品].[舊大品類].&[NULL]
,[商品].[舊大品類].&[N元系列]
     })
 ON Rows
FROM [YHD_NEW]

17.DrilldownLevel

SELECT {[Measures].[商品小票數],
[Measures].[滲透率],
[Measures].[不重復商品小票數]} 
ON COLUMNS , 
{DrilldownLevel({[商品].[舊品類層次].[All]})}
ON ROWS  
FROM 
(
SELECT 
({[商品].[舊品類層次].[舊大品類].&[寵物專用], 
[商品].[舊品類層次].[舊大品類].&[車用產品], 
[商品].[舊品類層次].[舊大品類].&[N元系列], 
[商品].[舊品類層次].[舊大品類].&[NULL]}) 
ON COLUMNS  
FROM [YHD_NEW]
) 

18.雜項

/*instr*/
SELECT 
[Measures].[積金幣次數] ON 0,
FILTER([產品].[產品名].CHILDREN,
INSTR([產品].[產品名].CURRENTMEMBER.NAME,'西王')>0
and INSTR([產品].[產品名].CURRENTMEMBER.NAME,'玉米')>0) ON 1
FROM [YHDJBLMDataDW]

/*rank*/
with set [aa] 
as filter (order (([產品].[產品名].children,[金幣聯盟會員].[].children)
,[Measures].[積金幣次數],bdesc),[Measures].[積金幣次數]>10000)

member [Measures].[bb] as 
rank(([產品].[產品名].currentmember,[金幣聯盟會員].[].currentmember),[aa])

select 
{[Measures].[bb],[Measures].[積金幣次數]} on 0,
[aa] on 1 
from [YHDJBLMDataDW]

/*lastperiods和lastchild*/
with set [aa] as filter(order(lastperiods(4,[創建時間].[季度].&[2012]&[1])
,[Measures].[積金幣次數],desc)
,[Measures].[積金幣次數]>0)

member [Measures].[bb] as 
rank(([創建時間].[季度].currentmember),[aa])

select {[Measures].[bb],[Measures].[積金幣次數]} on 0,
[aa] on 1 
from [YHDJBLMDataDW]

/*head 和tail*/
with set [top10province] as 
tail(topcount([產品].[產品名].children*[金幣聯盟會員].[].children,10,
[Measures].[積金幣次數]),5)

select [Measures].[積金幣次數] on 0,
[top10province] on 1
from [YHDJBLMDataDW]

/*children/sibling/parent*/
select [Measures].[積金幣次數] on 0,
filter([產品].[產品層次].
[商家].&[shengyuan].&[58優博].
&[08版新優博2段900g聽裝較大嬰兒配方奶粉].siblings,[Measures].[積金幣次數]>10000) on 1
from [YHDJBLMDataDW]

select [Measures].[積金幣次數] on 0,
[產品].[產品層次].
[商家].&[shengyuan].&[58優博].
&[08版新優博2段900g聽裝較大嬰兒配方奶粉].parent on 1
from [YHDJBLMDataDW]

/*Descendants/ancestors/ascendants*/
select [Measures].[積金幣次數] on 0,
order(filter(Descendants([產品].[產品層次].[商家].&[shengyuan].&[58優博],
[產品].[產品層次].[產品名],self_and_before),[Measures].[積金幣次數]>150000),[Measures].[積金幣次數],desc) on 1
from [YHDJBLMDataDW]

select [Measures].[積金幣次數] on 0,
order(filter(ancestors([產品].[產品層次].[商家].&[shengyuan].
&[58優博].&[10版優博4段400g盒裝奶粉],
[產品].[產品層次].[商家]),[Measures].[積金幣次數]>150000),[Measures].[積金幣次數],desc) on 1
from [YHDJBLMDataDW]

select [Measures].[積金幣次數] on 0,
ascendants([產品].[產品層次].[商家].&[shengyuan].&[58優博])on 1
from [YHDJBLMDataDW]

/*hierarchize 整理回層次結構的正常順序*/
select [Measures].[積金幣次數] on 0,
hierarchize(union(ascendants([產品].[產品層次].[商家].&[shengyuan].&[58優博]),
Descendants([產品].[產品層次].[商家].&[shengyuan].&[58優博],
[產品].[產品層次].[產品名],self_and_before)))
on 1
from [YHDJBLMDataDW]

select [Measures].[積金幣次數] on 0,
[產品].[產品層次].[商家].&[shengyuan].firstchild.parent.children on 1
from [YHDJBLMDataDW]
/*openingperiod/closingperiod*/
with member [firstmonth] as
([Measures].[積金幣次數]
,closingperiod([創建時間].[年季月層次].[],[創建時間].[年季月層次]))

select {[firstmonth],[Measures].[積金幣次數]} on 0,
[產品].[產品層次].[商家].&[shengyuan].children 
having [Measures].[積金幣次數]>10000 and [firstmonth]>6028 on 1
from [YHDJBLMDataDW]
where [創建時間].[年季月層次].[].&[2011]

19.前12個月有積金幣次數的情況,且倒序排列

with set [lastmonth] as 
tail(filter([創建時間].[].[],[Measures].[積金幣次數]),1)

set [last12months] as
order(lastperiods(12,[lastmonth].item(0).item(0)),
[創建時間].[].currentmember.properties("Key0")
+VBA!Right([創建時間].[].currentmember.properties("Key1"),2),desc)

select
[Measures].[積金幣次數] on 0,
[last12months] on 1
from [YHDJBLMDataDW]


select
[Measures].[積金幣次數] on 0,
Mtd([創建時間].[].&[2012]&[5])on 1
from [YHDJBLMDataDW]

先這些吧,以后再慢慢添加。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM