迴圈上下文和.CurrentMember函數

來源:互聯網
上載者:User

      出了當前單元的上下文,還有但前迭代或迴圈的上下文。Generate()函數用來提供迭代。彙總函式(如Sum(),Max()等等)同樣提供迴圈上下文,每迭代一次就對錶達式求值一次。

例1.
       考慮一下的查詢,選出一組作品集,這個集計算其[Unit Sales]對其同類最大[Unit Sales]的比例。

with
member [Measures].[Pct of Max Siblings] as
'[Measures].[Unit Sales]/
Max(
[Product].[Category].CurrentMember.Siblings,
[Measures].[Unit Sales]
)
' 

select 
{[Measures].[Unit Sales], [Measures].[Pct of Max Siblings]}
on axis(0),
{[Product].[Doing].Children} on axis (1)
from Sales
where [Time].[2005] 

1)Max()對[Product].[Category]的子成員啟動迴圈,CurrentMember是每迴圈一次[Category]的一個成員引用,Siblings返回指定成員的同級,包括該成員本身
2)Max()每次迴圈的單元值為41,808。

例2.

      上下文也有嵌套關係。通常情況下,一系列不同的公式同時執行時,會以嵌套上下文來結束。例如有這樣的分析需求:選出所包含的月份中各時期增長率至少為13%的季度。

 

select
filter([Time].[Quarter].members,   
    Max(
        [Time].[YQMD].CurrentMember.Children,   
        ([Time].[YQMD].CurrentMember
        /[Time].[YQMD].CurrentMember.PrevMember)
    )>=1.13
)
on axis(0)
from Sales
where ([Measures].[Unit Sales], [Product].[Tools])

過程分解如下:

1)Filter對所有季度啟動迴圈
2)Max()的第一個參數CurrentMember在這些季度上迴圈
3)附加的.Children在每個月上啟動迴圈。
4)Max()第二部分的比值運算式和Time.CurrentMember輪流設定每個月。
5)只有當Max()返回的值>=1.13時,則Max() >= 1.13為真。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.