ged_2357

2020-06-19   阅读量: 1315

Power BI

DAX 表达式

扫码加入数据分析学习群


  1. DAX表达式的结果应用在数据透视表中

  2. DAX表达式的结果作用于整列或者表中所有行

  3. 还需注意以下几点:

a. 表名用''引用。
b. 字段名(列名)用[]引用。
c. 要注意函数表达式中参数的数据类型,尤其是要将“表”与“数值”正确区分。
d. 与Excel公式相同,除了直接在编辑器的公式区域输入公式外还可以通过单击公式编辑栏前的“fx”图标启动“插入函数”对话框,在对话框中选择需要的函数使用。
e. 表达式中的函数名不分大小写,比如“ALL”函数也可以记作“all”。
f.输入公式选择字段时,英文单引号'可以索引所有表的所有字段,英文中括号[可索引当前表的所有字段

  • PP的DAX表达式中,主要是进行数据透视,既可以创建列值(例如:新建一列值=原列值*1000,但是这种尽量在PQ中完成),也可以创建度量值,还可以创建表。

  • 使用DAX表达式时,先测试,再使用,避免掉坑

案例:用数据透视表求出每名销售人员手中高赢单率低风险商机金额占总商机金额的百分比

案例步骤及涉及的函数:
1、switch(表达式,值1,结果1,值2,结果2,....其他情况结果)

  • switch函数中不能出现逻辑符号判断,只能是一个结果替换一个值

  • 例如:将赢单率字段中0.15替换为"L"、0.25替换为"L"、0.5替换为"M"、0.75替换为"H"、其他替换为"-"

WinOdds = SWITCH([赢单率],0.15,"L",0.25,"L",0.5,"M",0.75,"H","-")

2、related(合并字段)

  • 在表创建连接关系的情况下,用related直接写字段名,就可以合并到其他表中需要合并的字段

  • 例如:将商机相关企业信息表中的有无拖欠还款情况字段合并到本表中。

Risk = RELATED('商机相关企业信息'[有无拖欠还款情况])

3、filter(表,筛选条件)

  • 第一个参数是筛选的表范围,第二个参数是筛选的条件。

4、calculate(计算规则,条件 ,条件2...)

  • 用来求条件下的任意规则的计算,条件可以有多个

  • 例如:对商机记录表中WinOdds="H",并且Risk="无"的数据进行汇总

1高赢单率低风险金额合计 = CALCULATE
(SUM('商机记录'[商机金额(M)]),FILTER('商机记录','商机记录'[WinOdds]="H"),FILTER('商机记录','商机记录'[Risk]="无"))

5、all和all selected

all

  • 既能忽略筛选维度(切片器),也能忽略汇总维度(行列)。

  • 指定参数失去筛选能力,计算总合计值,合计值不随指定维度而合并同类项,指定维度对度量失去筛选能力。

  • 参数可为字段名,忽略该字段的筛选;也可为表名,忽略该表所有字段的筛选能力

allselected

  • 之忽略汇总维度(行列),不忽略筛选维度(切片器)

  • 其他用法和all一致

注意事项:

  1. all函数如果引用同一张表的不同列时,写法all(表1列1,表1列2);

  2. 如果引用不同表的列时,写法all(表1列1),all(表2列1);

  3. 同时引用不同表时,写法all(表1),all(表2),用逗号“,”连接多条件清除筛选

6、sum函数

  • 基本汇总规则中(sum、max、min、count、avg),若该汇总在下文中有引用,则必须用sum,反之也可直接拖拽字段到透视区


0.0002 2 5 关注作者 收藏

评论(1)

玛奇朵朵
2020-09-15

一句话概括all 和all selected的区别:all 即是all,计算总合计值,使得所有筛选(包含维度筛选以及切片器筛选)失效

0.0000 0 0 回复

推荐课程