Power Pivot中筛选条件的使用

2020-03-23 18:42:41 浏览数 (1)

(一) 定义

在Power Pivot中,在大部分时间里,筛选是作为一个主要的功能运用到各个地方,筛选上下文,行上下文都和筛选相关。

(二) 可能涉及的函数

  1. Filter 含义:根据条件筛选。
  2. All 含义:忽略指定的维度条件。
  3. AllExpect 含义:忽略除保留维度外的其他条件。
  4. Calculate 含义:根据条件进行计算。大部分的筛选器最终需要与本函数进行组合运算。

(三) 案例分析

数据源:

姓名

成绩

学科

张三

100

数学

李四

90

语文

王五

80

英语

我们先定义几个公式,看下有什么样的区别:

代码语言:javascript复制
求和:=sum([成绩])
求和迭代:=sumx([成绩])
计算求和:=calculate([求和])
固定条件求和:=calculate([求和],'表'[姓名]="张三"))
筛选条件求和:=calculate([求和],filter('表','表'[姓名]="张三"))
忽略条件求和:=calculate([求和],filter(all('表'),'表'[姓名]="张三"))
忽略多条件求和:=calculate([求和],all('表'[姓名]),filter('表'="张三"))

我们先来看下几个计算的差异(数据透视表):

行标签

固定条件求和

筛选条件求和

忽略条件求和

忽略多条件求和

李四

100

100

王五

100

100

张三

100

100

100

100

总计

100

100

100

100


公式

差异

求和

不涉及上下文。如果放在计算列里面,则不会进行上下文筛选

计算求和

涉及上下文

迭代求和

涉及上下文


公式

差异

固定条件求和

不涉及上下文

筛选条件求和

涉及上下文


公式

差异

筛选条件求和

涉及上下文

忽略条件求和

在筛选时忽略字段筛选如果全部忽略相当于不涉及上下文,也就和固定条件求和一样


忽略多条件求和,因为calculate本身不存在绝对的筛选,所以条件all不产生作用,所以函数all以及allexpect只针对实际筛选函数filter起作用。

那我们来看下Filter和All以及AllExpect之间的联系。我们增加些数据

姓名

成绩

学科

张三

100

数学

李四

90

语文

王五

80

英语

张三

90

语文

李四

80

英语


代码语言:javascript复制
忽略全部:=CALCULATE([求和],FILTER(ALL('表'),[姓名]="张三"))
忽略姓名:=CALCULATE([求和],FILTER(all('表'[姓名]),'表'[姓名]="张三"))
忽略学科:=CALCULATE([求和],FILTER(all('表'[学科]),'表'[姓名]="张三"))
忽略姓名除外:=CALCULATE([求和],FILTER(ALLEXCEPT('表','表'[姓名]),'表'[姓名]="张三"))
忽略学科除外:=CALCULATE([求和],FILTER(ALLEXCEPT('表','表'[学科]),'表'[姓名]="张三"))

根据之前的内容,看看其中哪些是错误的?

在使用忽略函数的时候,要根据被筛选filter里面的实际筛选条件来定义,所以忽略学科忽略学科除外都是错误的。因为filter函数内部没有进行学科的实际筛选。也就不存在忽略的问题。

(四)总结

0 人点赞