zoukankan      html  css  js  c++  java
  • 重设切片上下文

    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(求值)

  • 相关阅读:
    【5.3】dict的子类
    【5.2】dict的常用方法
    【5.1】dict的abc继承关系
    【4.5】列表推导式、生成器表达式、字典推导式
    【4.4】bisect维护已排序序列
    【4.3】实现可切片的对象
    【4.2】Python序列中+、+=和extend的区别
    【4.1】Python中的序列分类
    【3.12】contextlib简化上下文管理器
    【3.11】Python中的with语句
  • 原文地址:https://www.cnblogs.com/timy/p/1607827.html
Copyright © 2011-2022 走看看