重设切片上下文

select  
{Filter(
   
[ Product ] . [ Category ] .Members,
    (
[ Measures ] . [ Unit Sales ] , [ Time ] . [ Quarter ] . [ Q4, 2005 ] )
   
> 1.4   * ( [ Measures ] . [ Unit Sales ] , [ Time ] . [ Q4, 2004 ] )
)}
on axis( 0 )
From sales
where ( [ Time ] . [ 2005 ] , [ Measures ] . [ Dollar Sales ] )

      切片设置[Time].[2005]和[Measures].[Dollar Sales],但Filter()函数表达式在[Time].[q4,2005]和[Time].[q4,2004]上比较[Measures].[Unite Sales]。用于Filter()函数中的表达式,或用于决定任何其他部分的表达式,能够有选择性地去依靠或者重设单元上下文的任何部分。所以结果是2005年的Dollar Sales,但筛选条件完全是其他时间周期的Unit Sales。

      尽管我们突出了列轴,但下面的说法对所有轴都是成立的:

      1)每个轴的求值都从Where子句中获得单元上下文。

      2)每个轴都可以独立地求值。

      比如上面的例子,虽然轴axis(0)where中获得的上下文是 ([Time].[2005], [Measures].[Dollar Sales]),但axis(0)中的Filter函数重设[Time]维度和 [Measures]维度的上下文为[Q4, 2005][Unit Sales],搜索的结果是:2005年第四季度[Unit Sales]比2004年第四季度大1.4倍的所有产品类别在2005年的[Dollar Sales]

 image

      查询的解析顺序是:from(求值)——》where(处理)——》With Set(求值)——》Axis(求值)每个轴——》Result cell(求值)

你可能感兴趣的:(重设切片上下文)