专栏首页数据技巧选择维度筛选AllSelect和All函数的差异

选择维度筛选AllSelect和All函数的差异

(三) 判断维度筛选

1. Allselected

根据选择筛选的维度进行计算(忽略未选择的维度),不会生成事实表。

A. 语法

ALLSELECTED ( [TableNameOrColumnName] )

参数

描述

TableNameOrColumnName

表或者列名

B. 返回

C. 注意事项

  • 带参数时可以作为表达式用
  • 不带参数时只能用于Calculate和CalculateTable中

D. 作用

只针对被筛选的维度进行计算。

E. 案例

平均成绩Allselect:=Calculate(Average('表1'[成绩]),AllSelected())
平均成绩Allselect_教师:=Calculate(Average('表1'[成绩]),AllSelected('表1'[教课老师]))
平均成绩Allselect_学科:=Calculate(Average('表1'[成绩]),AllSelected('表1'[学科]))
平均成绩Allselect_filter教师:=Calculate(Average('表1'[成绩]),Filter(
                               AllSelected('表1'[教课老师]),
                               '表1'[教课老师]="张老师" || 
                               '表1'[教课老师]="王老师" || 
                               '表1'[教课老师]="陈老师"))

看看这3个函数的差异及效果。

  • 我们先来看 平均成绩AllSelect这个度量。
平均成绩Allselect:=Calculate(Average('表1'[成绩]),AllSelected())

解释: 因为AllSelect只涉及选择筛选器的计算,平均成绩AllSelect,未使用参数,在未选择筛选的时候效果和AllSelect('表1')一样,实际上的效果是把字段置于透视表中的筛选位置。而且因为默认已选择任何全部的筛选条件,此时的效果和单独放入一个平均成绩一样。

此时的度量计算的结果就是数学的平均成绩。如果我们想知道数学和英语的这两门课的综合平均分呢?则在切片器中选择数学和英语即可。

相当于(数学汇总70+英语汇总66.67)/2=68.33。

  • 接下来我们来看下后面二个度量 平均成绩Allselect_教师平均成绩Allselect_学科
平均成绩Allselect_教师:=Calculate(Average('表1'[成绩]),AllSelected('表1'[教课老师]))
平均成绩Allselect_学科:=Calculate(Average('表1'[成绩]),AllSelected('表1'[学科]))

这个度量只不过在使用AllSelect的时候,添加了列的参数。我们来看下和之前函数的差异。这里我们看下一共选择了2个含维度的AllSelect度量(学科和老师)。

解释:我们理解只针对筛选器选则的内容产生的效果进行计算。AllSelect()代表所有产生的筛选都要进行计算。怎么去判断所产生的筛选呢?我们只需要看透视表所显示出来的字段信息即可。 被选择的维度有:学科(数学,英语);姓名(全部),教课老师(王老师,张老师,陈老师)

解释: 被选择的维度有:学科(数学,英语根据实际切片来定),教课老师(全部),姓名(全部)

解释:外部筛选的学科存在,平均成绩AllSelect_学科是不对学科进行筛选,因为AllSelect代表了全部选择。所以学科的维度就不会再做筛选。 被选中的维度有:教课老师(根据行列实际情况筛选),学科(全部),姓名(根据行列实际情况筛选)

从上面的实例中我们大致了解了其构成的原因。那我们把姓名这个字段同时放进来,并同时选择了李四和王五:

解释:这个是AllSelect(),所有被选择的都需要进行筛选计算。 被筛选的维度:姓名(李四,王五),学科(数学,英语),教课老师(王老师,陈老师)。

这样我们看到,因为是AllSelected('表1'[教课老师]),所以教师是被全部选择。同理AllSelected('表1'[学科]),学科相当于全部选择没有被筛选。

  • 最后我们来看下平均成绩Allselect_filter教师这个度量
平均成绩Allselect_filter教师:=Calculate(Average('表1'[成绩]),Filter(
                               AllSelected('表1'[教课老师]),
                               '表1'[教课老师]="张老师" || 
                               '表1'[教课老师]="王老师" || 
                               '表1'[教课老师]="陈老师"))

解释: 我们看,因为通过Filter首先把教课老师给过滤掉了李老师,而李老师对应着张三和李四的语文课。

所以被过滤掉的,就会用空值显示。而最后的总计求的平均值也是根据显示的数据来进行计算。

AllSelect和All筛选器函数的差异

我们在来看个案例:

All产品名称求和:=Calculate(Sum('表4'[销售额]),All('表4'[销售额])
AllSelect产品名称求和:= Calculate(Sum('表4'[销售额]),AllSelect('表4'[销售额])

解释:AllSelect(维度)只计算被选择的维度产品,而All(维度)则会计算全部被选中产品所属的维度所属的全部产品。

请点个赞,转发分享给更多的人。

本文分享自微信公众号 - 数据技巧(Data-Skill),作者:逍遥跨境

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Power Pivot中如何不使用Filter函数进行同样效果的筛选?

    通过||来表达”或”的意思,也就是3个人的姓名是平行的。 不用filter函数是否也能计算出如上效果呢?

    逍遥之
  • 同样是从Web导入,为什么PowerBI里的Power Query就比Excel的强?

    Power Query我们知道是一种数据清洗的工具,在Excel中就能直接进行使用,而在Power BI中也有着同样功能的Power Query,但是其功能却比...

    逍遥之
  • Power Pivot中共享多端的1端如何进行计算?

    此外我们加个Calculate,可以更加灵活的应用函数。例如计算产品相关成本,统计客户分布情况等。

    逍遥之
  • 关于织物操作的多步骤、多任务的视觉空间预见(CS AI)

    机械手的织物处理在布和电缆管理,高级护理,手术等方面都有应用。但是,现有的结构处理技术是为特定任务而设计的,因此很难概括不同但相关的任务。我们通过扩展最近提出的...

    RockNPeng
  • ArrayBlockingQueue与LinkedBlockingQueue

    本文主要简单介绍下ArrayBlockingQueue与LinkedBlockingQueue。

    codecraft
  • 《深入浅出Node.js》:Node异步编程解决方案 之 async函数

    关于async函数,需要明确它是generator函数的语法糖,即将生成器函数的*换成async关键字,将yield关键字换成await关键字。使用async函...

    前端_AWhile
  • JavaScript学习总结(五)——jQuery插件开发与发布

    jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非...

    张果
  • JavaScript学习总结(五)——jQuery插件开发与发布

    jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非...

    张果
  • 如何迁移SSDB数据到Tendis解决方案

    SSDB是一个高性能的KV存储数据库,个人开发作品,已开源。凭借其兼容redis协议、支持数据硬盘存储、简单易用等特性在业界有一定知名度。SSDB主要解决场景是...

    温球良
  • java activity传值

    葫芦

扫码关注云+社区

领取腾讯云代金券