03、最难理解的上下文

什么是上下文:

在Power BI中,表是由行和列构成的,我们的上下文也分为两种:

筛选上下文和行上下文
我们之前接触的都是:筛选上下文
提到“筛选条件”就是筛选上下文

  1. 什么是行上下文:

例如:新建列,公式=[销售数量]+10
当前所在行,将每一行的销售数量都加上10

我们把每节课都用到的度量值放在商品表中新建列试试:
销售总量= SUM(‘销售明细表’[销量数量] )
行上下文是商品表中的当前行,而销售总量是销售明细表中的销售数量那一列的总计。它是两张表。总结:商品表的行上下文不影响销售明细表输出的销售数量合计的结果,所以这一列都是一个数字。回到模型中看一下商品表和销售明细表的关系是一对多。那为什么没有算出每个商品应有的销售数量呢?我们建立模型了?
行上下文本身没有筛选功能,要达到筛选这个目的,必需借助我们的引擎:Calculate函数
在这里插入图片描述
计算销售明细表中数量的总和,它的行上下文是当前所在行
所以:行上下文不会自动转换成筛选上下文。
借助我们的引擎:Calculate函数
新销售总量=calculate(SUM(‘销售明细表’[销量数量]))
例子:
需求:每一天果汁销售量大于100杯的门店
销售c = CALCULATE([销售数量],FILTER(‘店名表’,[销售数量]>100 ))
初始筛选条件:每一天,门店
不能是销售c = CALCULATE([销售数量],FILTER(‘店名表‘,sum(‘销售明细表’ [销售数量])>100 ))
原因
FILTER函数是行上下文函数:
行上下文不会自动转换成筛选上下文,所以公式sum(‘销售明细表’ [销售数量])>100 并没有受到行上下文的影响,它计算的是销售数量那一列的数量合计。
在这里插入图片描述

切记:

度量值都自带Calculate函数的功能!
销售总量= SUM(‘销售明细表’[销量数量] )
[总金额]、[总毛利额]等
等同于
Calculate(SUM(‘销售明细表’[销量数量] ))

总结:

1.行上下文不会自动转换筛选上下文,要转换,必需套一个Calculate引擎。

2.度量值天生就是Calculate函数。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值