这一篇讲一下LOOKUPVALUE函数,官方给它放在了筛选器函数里面,可能是它结合FILTER函数可以其他筛选表的作用吧。这个函数熟悉Excel的人还是有点眼熟,只是名字稍微不太一样,作用和Excel里面的vlookup很相似,都是用来根据两个表格相同字段来查找其他字段的。但是这个LOOKUPVALUE函数还是要更强大一点,Vlookup函数只能单条件匹配,LOOKUPVALUE函数可以多条件进行匹配,下面这个是语法↓

LOOKUPVALUE( <result_columnName>, <search_columnName>, <search_value> [, <search2_columnName>, <search2_value>]… [, <alternateResult>] )

power bi中all函数用法(PowerBILOOKUPVALUE匹配函数)(1)

简单解释一下,后面看一下案例就完全明白了↓

下面先演示一下单个关系的匹配,准备了两个表格,一个是省份、人员的表格;另一个是省份对应大区的表格,现在需要用LOOKUPVALUE函数,通过省份字段匹配出所属的大区,表格数据如下↓

power bi中all函数用法(PowerBILOOKUPVALUE匹配函数)(2)

然后通过LOOKUPVALUE函数把大区匹配过来,DAX语句如下,两个斜线数备注说明,不参与计算↓

所属大区 = LOOKUPVALUE( '大区'[大区], //需要得到的值 '大区'[省份], //匹配表对应关键字段 'LOOKUP数据'[省份] //当前表关键字段 )

power bi中all函数用法(PowerBILOOKUPVALUE匹配函数)(3)

现在我们就通过省份匹配出了对应的大区,这里只使用了一个省份条件进行匹配。下面介绍一下两个条件匹配的效果,我们有一个省份、人员对应的销售数量表格,我们需要通过省份、人员两个字段来匹配出每个人在每个省份的销售数量,DAX语句如下↓

销售数量 = LOOKUPVALUE( '维度数据'[数量], //第一个匹配条件↓ '维度数据'[人员id], 'LOOKUP数据'[人员id], //第二个匹配条件↓ '维度数据'[省份], 'LOOKUP数据'[省份] )

power bi中all函数用法(PowerBILOOKUPVALUE匹配函数)(4)

现在我们完成了两个条件的匹配,当然多个条件方法也是一样的,只需要继续在后面增加字段对应关系就行了。

下面在讲一些特殊情况,如果没有匹配到对应的关系,就会默认返回空白值,比如我们把湖南的张三、李四两个人数据删了,上面那个公式返回的结果就是如下↓

power bi中all函数用法(PowerBILOOKUPVALUE匹配函数)(5)

我们也可以自定义没有查找到的值,比如我们把没有找到的值定义为999,DAX语句如下↓

销售数量 = LOOKUPVALUE( '维度数据'[数量], //第一个匹配条件↓ '维度数据'[人员id], 'LOOKUP数据'[人员id], //第二个匹配条件↓ '维度数据'[省份], 'LOOKUP数据'[省份], //没有匹配上的默认值 999 )

power bi中all函数用法(PowerBILOOKUPVALUE匹配函数)(6)

还有一个可能出现问题的地方,这也是和Excel里面vlookup很不一样的地方。如果出现了重复的值,我们没有指定返回的数据,就会报错。所以我们匹配的数据表最好不要有重复的值,不然数据很容易出现错误。我们把黑龙江的张三、李四复制一个,这两列就重复了,我们制定返回888,否则整列都会报错,DAX语句如下↓

销售数量 = LOOKUPVALUE( '维度数据'[数量], //第一个匹配条件↓ '维度数据'[人员id], 'LOOKUP数据'[人员id], //第二个匹配条件↓ '维度数据'[省份], 'LOOKUP数据'[省份], //重复或没有匹配上的默认值 888 )

power bi中all函数用法(PowerBILOOKUPVALUE匹配函数)(7)

power bi中all函数用法(PowerBILOOKUPVALUE匹配函数)(8)

End

,