[power bi]calculate

calculate

前提: 理解上下文——行上下文 & 筛选上下文

语法:

calculate(expression,condition1,condition2,...conditionN)

condition是表,可以用语法糖形式表示(只能用于单列的 布尔条件 : = 、<、>、in、逻辑运算符, 转为为表时自带ALL())或者调节器

调节器有:
ALL 剔除筛选器
ALLSELETED 取外部所有可见的筛选器

ALL VALUES & ALLEXPECT 的区别:
USERELATIONSHIP :激活非活动的关系,! calculate调节器总是在所有筛选器参数生效之前应用
CROSSFILTER :改变关系的交叉筛选方向或禁用筛选
KEEPFILTERS 保留筛选器 ;还有一种情况:用作迭代函数的顶层函数,意味着在每次上下文转换时,都运用keepfilters
ALL 类函数 : 都是calculate调节器,在显示筛选器参数之前作用于最终的筛选上下文

!无参数的ALL 和 ALLSELECTED 函数:
有参数–恢复当前视图之外的指定筛选条件
没有参数-- 恢复当前视觉对象之外所有活动的筛选上下文
没有参数的all-- 删除所有筛选上下文

避免使用完整的表作为筛选条件,特别时事实表,因为会包含扩展列,会影响性能

2>理解上下文转换
行上下文产生的场景: 迭代,计算列;calculate会将行上下文转换为筛选上下文(所有列)

计算列上的上下文转换
度量值上的上下文转换(度量值自带calculate):在任何行上下文中引用度量值,都将执行隐式的上下文转换

循环依赖:自动检测

规则总结:

计算顺序:
1-在初始计值上下文环境中计算所有的显示筛选器参数,包括原始行上下文(如有)和原始筛选上下文。
2-复制原始筛选上下文,丢弃原始行上下文
3-执行上下文转换。
4-计算调节器函数USERRELATIONSHIP\CROSSFILTER\ALL
5-将1的结果应用与现有上下文,并形成新的筛选上下文
1>上下文转换先执行,2>调节器再执行,可以改变上下文转换结果,但是不能改变显式筛选器 ,3>最后执行显示筛选器,形成新的筛选上下文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值