網路上剛好看到網友的問題,這時後就要用到這個Function。
HIERARCHIZE:以階層式架構排列集合成員。
1.先模擬網友的情況,累加後,計算累計值但時間從3月到1月由大到小排序。
2.使用HIERARCHIZE FUNCTION依SET排序。
3.由此可知如果需要讓SET做排序而不是使用Measures(通常Measures是用ORDER)排序,那麼HIERARCHIZE是最佳的選擇。
2011年8月2日 星期二
2011年7月27日 星期三
MDX:Ascendants Function
用法:Ascendants(Member_Expression)
範例1:找出2003年4月的所有上層的成員
上面的範例會傳回2003年4月所屬的季、半年、年和All Periods,用維度來看可以看更清楚
通常被用來顯示在不同階層的比例:
範例1:找出2003年4月的所有上層的成員
上面的範例會傳回2003年4月所屬的季、半年、年和All Periods,用維度來看可以看更清楚
通常被用來顯示在不同階層的比例:
MDX:Ancestors Function
如果想要知道某一個member的上層階級使用Ancestors是個不錯的選擇。
範例1:查出產品[Mountain-100 Silver, 38]的Category與Subcategory的member
範例2:範例1的另一種寫法
範例3:同時例出某一產品的父與祖父的成員。
2011年7月26日 星期二
MDX:Rank Function
Rank Function可以依條件顯示排名。
範例1:[Date].[Calendar Year]依照年份排名。
範例2:[Date].[Calendar Year]依照[Internet Sales Amount]排名。
範例3:搭配ORDER,列出[Reseller Sales Amount]的排名後,按照排名做排序。
範例4:依照百分比做排名後使用排名排序。
範例1:[Date].[Calendar Year]依照年份排名。
範例2:[Date].[Calendar Year]依照[Internet Sales Amount]排名。
範例3:搭配ORDER,列出[Reseller Sales Amount]的排名後,按照排名做排序。
範例4:依照百分比做排名後使用排名排序。
2011年7月23日 星期六
MDX:Hierarchy Function
之前在寫MDX時有遇到比重的問題,之前都傻傻的把Measures使用Sum加總後在個別相除,後來無意間發現可以使用Hierarchy Function來處理比重的問題。
範例如下:
短短幾行就完成了,想到之前寫的亂七八糟,現在想想真是Orz,那時後真是年少不懂事阿!呵~
範例如下:
短短幾行就完成了,想到之前寫的亂七八糟,現在想想真是Orz,那時後真是年少不懂事阿!呵~
2011年7月22日 星期五
MDX:ParallelPeriod Function Part3
之前在MDX:ParallelPeriod Function Part2比較過去與目前的數值,搭配PeriodsToDate Function 可以比較過去與目前的累計值。
範例:先使用PeriodsToDate計算2004年1月到2004年7月Internet Sales Amount的累加值,接著使用ParallelPeriod計算2003年1月到2003年7月Internet Sales Amount的累加值。
範例:先使用PeriodsToDate計算2004年1月到2004年7月Internet Sales Amount的累加值,接著使用ParallelPeriod計算2003年1月到2003年7月Internet Sales Amount的累加值。
MDX:ParallelPeriod Function Part2
之前有介紹過ParallelPeriodn Function的特性,而ParallelPeriod Function大多用來比較過去與目前的數值,以下是幾個簡單的範例。
範例1:使用ParallelPeriod Function列出200401到200407去年和前年的Member集合
範例2:列出2004、2003與2002同一時期的[Measures].[Internet Sales Amount]
範例1:使用ParallelPeriod Function列出200401到200407去年和前年的Member集合
範例2:列出2004、2003與2002同一時期的[Measures].[Internet Sales Amount]
MDX:PeriodsToDate Function
PeriodsToDate的用法為PeriodsToDate([«Level»[, «Member»]])
PeriodsToDate會回傳«Level»第一個member到指定的«Member»為止
以PERIODSTODATE([Date].[Calendar].[Calendar Year],[Date].[Calendar].[Month].[MAY 2002])這段mdx
來看,會回傳2002的第一個member:2002年1月開始,在2002年5月結束。
此外PeriodsToDate的用途為累計總合(Accumulating Total):
右邊紅色的區塊為左邊藍色的累計總合
如果有跨年度的話,譬如從200107到200205時,到了2002年時,會從200201累加到200205。
另外也可以做同時段的比較,例如2002年前八月與2003年前八月的Measures比較
PeriodsToDate會回傳«Level»第一個member到指定的«Member»為止
以PERIODSTODATE([Date].[Calendar].[Calendar Year],[Date].[Calendar].[Month].[MAY 2002])這段mdx
來看,會回傳2002的第一個member:2002年1月開始,在2002年5月結束。
此外PeriodsToDate的用途為累計總合(Accumulating Total):
右邊紅色的區塊為左邊藍色的累計總合
如果有跨年度的話,譬如從200107到200205時,到了2002年時,會從200201累加到200205。
紅色部分的[Year Reseller Sales Amount]:200107到200112
藍色部分的[Year Reseller Sales Amount]:200201到200205
另外也可以做同時段的比較,例如2002年前八月與2003年前八月的Measures比較
2011年7月14日 星期四
MDX:ParallelPeriod Function
ParallelPeriod在msdn的解釋是;傳回先前跟特定成員在同樣相對位置上的成員。
不過有看沒有懂,所以做了以下的測試:
1. 先看一下dimension的結構
2.依照ParallelPeriod的語法寫了一段MDX,發現產生出來的值是200401。
在dimension上就是下一個quqrter的第一個member。
3.將上述的mdx語法把-1改成1,顯示的是200307的資料
也就是在dimension上就是上一個quqrter的第一個member。
接著使用mdx找出每一年與當年前一年的資料
也可以在不同的level找到使用ParallelPeriod找到相同的member
從上面的測試可以知道使用ParallelPeriod在比較同期數值時特別有用。
2011年7月13日 星期三
MDX:SUBQUERY
昨天在測試MDX的SUBQUERY發現了一個很特別的現象:
1.首先在MDX中我加入的WHERE條件,可以看到產生出來的數字是700,759.96
2.然後把有WHERE條件的MDX當作SUBQUERY使用,發現數字跟沒有使用WHERE條件的情況下是一樣的,也就是取得的值沒有跟沒有使用WHERE是一樣的。
3. 如果把SUBQUERY中的MDX條件設在ROW上,會發現產生的結果跟SUBQUERY中的MDX是一樣的。
1.首先在MDX中我加入的WHERE條件,可以看到產生出來的數字是700,759.96
2.然後把有WHERE條件的MDX當作SUBQUERY使用,發現數字跟沒有使用WHERE條件的情況下是一樣的,也就是取得的值沒有跟沒有使用WHERE是一樣的。
2011年7月11日 星期一
MDX語法:YTD FUNCTION的介紹
說明:YTD主要是用來計算累加數值。
1.列出200301到200307的SET
2.列出200301到200307的Measures值
3.另一種列出200301到200307的Measures值的寫法
4.計算從2003年1月累加到2003年7月的數值
5.計算2001年7月到2002年10月的累計數值
6.計算產品從2003年1月到2003年8月的累計數值
1.列出200301到200307的SET
2.列出200301到200307的Measures值
3.另一種列出200301到200307的Measures值的寫法
4.計算從2003年1月累加到2003年7月的數值
5.計算2001年7月到2002年10月的累計數值
6.計算產品從2003年1月到2003年8月的累計數值
訂閱:
文章 (Atom)