欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[power bi]calculate

程序员文章站 2024-02-24 13:32:10
...

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>最后执行显示筛选器,形成新的筛选上下文

相关标签: PowerBI 大数据