Power BI 的主要对象是数据,而对数据进行各种运算是数据分析的基本工作。
运算符
运算符 | 含义 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
^ | 乘幂 |
= | 等于(包括判断等号和赋值等号) |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
<> | 不等于 |
&& | 与 |
|| | 或 |
not | 非 |
& | 字符串拼接 |
in | 包含 |
not in | 不包含 |
- 对能够转换为数值的文本进行数值运算时,系统会尝试将其当做数值进行运算
- 不论是数值还是能够转换为数值的文本,字符串拼接都会将它们当做文本进行拼接
- 数据元素集合使用
{}
定义,元素间使用,
分隔
新建数据
数据的组织形式主要有三种:
- 数据表
- 数据列
- 度量值
度量值和数据列不能脱离数据表单独存在,但数据列和度量值之间不一定必须包含某种关系。
即使是只包含一个数据列或一个度量值的表,形式上也是一个数据表
取用数据
使用表中数据的方法为'表名'[数据列名]
或'表名'[度量值名]
。在同张表的状况下,表名项可以省略。
从其他表获取数据主要分为两种:
- 从多端获取一端:
RELATED
函数 - 从一端获取多端:
RELATEDTABLE
函数
数据筛选计算
LOOKUPVALUE
当两个表之间具有部分相同的数据列时,可以通过 LOOKUPVALUE
函数来筛选具有相同数据列的指定数据。例如在表 A 的新建列中输入 P = LOOKUPVALUE('B'[X],'B'[Y],'A'[Z])
会在表 A 中新生成列 P ,列 P 中的值为表 A 列 Z 的值与表 B 列 Y 的值相同的行的列 X 的值。
LOOKUPVALUE 的参数不一定只有三个,例如在这三个后面继续附加 B[M] 和 A[N] ,会在筛选过程中再附加一个限制,即筛选行还要满足表 A 列 N 与表 B 列 M 相同
CALCULATE
当想对度量值内具有某些特性的数值进行计算时,可以使用 CALCULATE
函数来筛选出度量值内符合指定要求的行进行原有运算。例如表达式 CALCULATE(a,'A'[X]=x)
会将度量值 a 中符合“ A 表的 X 列的值为 x ”的行提取出来,再进行度量值 a 原本定义的计算。
- CALCULATE 函数不仅能处理度量值,而且还能处理除它之外的其它筛选器上下文
- CALCULATE 函数的筛选项可以是定义筛选器或筛选器修饰符函数的布尔表达式或表表达式,并且不限制数量
- 如果想在报表中实现筛选显示,那么就要求视觉对象的行或列的来源表与筛选条件中的表不一致
CALCULATETABLE
类似地,当想对数据表内具有某些特性的数值进行计算时,可以使用 CALCULATETABLE
函数来筛选出表内符合指定要求的行。例如表达式 CALCULATETABLE('A','B'[X]=x)
会将表 A 中符合“ B 表的 X 列的值为 x ”的行提取出来,将这些行相关联的 A 表的对应行抽取副本,构成新表。为简化说明,将第一参数的表称为样式表,其他参数的表称为筛选表。
- CALCULATETABLE 函数不仅能处理表,而且还能处理表函数等值为表的内容
- CALCULATETABLE 函数的筛选项可以是定义筛选器或筛选器修饰符函数的布尔表达式或表表达式,并且不限制数量
- 作为筛选项的表可以是样式表(如示例中的表 A),也可以是与之在模型中有关系的表(如示例中的表 B),但不能是与样式表无关系的表
- 样式表必须是筛选表的事实表,或者两者是同一张表,即“只能由维度表筛选事实表”
FILTER
若想对数据表中具有某些特性的行进行筛选,可以使用 FILTER
函数。例如表达式 FILTER('A','A'[X]=x)
会提取出满足 A 表 X 列值为 x 的行,重组成新表返回。
FILTER
函数只能处理表,不能处理表达式FILTER
函数只能处理维度表,不能处理事实表FILTER
函数可以使用一些CALCULATE
函数不能使用的表筛选表达式
FILTER 函数与 CALCULATE 函数在表达情况相同的表筛选表达式时,表现出的结果在形式上会有些许不同
ALL
由于某些函数或度量值具有筛选器上下文特性,因此在某些需要去除掉筛选功能的状况下,可以使用 ALL
函数来返回表中的所有行或列中的所有值,同时忽略可能已应用的任何筛选器。
- 当参数为表的时候,该函数会忽略所有的筛选条件,不论是图表还是切片器
- 当参数为列的时候,该函数只会忽略针对该列的所有筛选条件,而表的其他列和表本身的筛选条件不受影响
ALLSELECT
该函数整体用法与 ALL
函数相似,区别在于 ALLSELECT
函数会删除当前查询的列和行中的上下文筛选器,同时保留所有其他上下文筛选器或显式筛选器。
ALLEXCEPT
该函数的整体用法与 ALL
函数的列用法相近,区别在于该函数列出的列是指ALL
函数的列参数用法一致。
数据统计计算
COUNTROWS
可以使用 COUNTROWS
函数来计算表中行的数量。例如 COUNTROWS(A)
会计算表 A 中行的数量。
COUNTROWS 函数最常见的用法是结合行上下文、新表或表函数等进行计数