[已解决] 请问dax是否有vlookup近似匹配公式

  [复制链接]
查看165375 | 回复147 | 2020-11-6 00:18:14 | 显示全部楼层 |阅读模式
各位大大,

请问pb中是否有和excel相同之近似匹配公式或用法,

VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])之[range_lookup]=1,


因为常常需要匹配参数表,如果在pb中也可以像excel一样,可以省去很多if的公式
回复

使用道具 举报

cdefabg | 2020-11-6 00:24:14 | 显示全部楼层
是想问PowerPivot或者Power BI吧?这个问题有点笼统,能实现VLOOKUP功能的函数太多了,FILTER, RELATED/RELATEDTABLE, LOOKUPVALUE, INTERSECT, TREATAS等等,各有各的神通。
VLOOKUP能够实现不同区域/表间数据的匹配查询,而PP/PBI所应用的DATA MODEL就是为数据间的关联而生的,(理想的星型模型中)表与表之间天然就有关系,哪怕是最简单的选择某一个值,与之关联的数据也就自然被筛选出来了。

DAX或者说是Tabular data model是个神奇的玩意,有着不同于EXCEL或者说是“基于行”的思维模式,入坑吧,你会爱上它的
回复

使用道具 举报

鬼佬 | 2020-11-6 00:29:14 | 显示全部楼层
ThxAlot 发表于 2020-9-10 04:14
是想问PowerPivot或者Power BI吧?这个问题有点笼统,能实现VLOOKUP功能的函数太多了,FILTER, RELATED/REL ...


related的用法比较像是精確匹配,即[range_lookup]=0,但當要匹配不是1對1,是範圍查找時,要如何處理呢?如數值為0-9時,對應100;數值為10-20,對應200…,以此類推
回复

使用道具 举报

曼舞 | 2020-11-6 00:36:14 | 显示全部楼层
一般这种情况设一个参数表,应该可以用CALCULATE解决。但还是要看具体需求,不能笼统的定义为匹配的问题。建议上传具体附件。
回复

使用道具 举报

兵马俑 | 2020-11-6 00:41:14 | 显示全部楼层
一般这种情况设一个参数表,应该可以用CALCULATE解决。但还是要看具体需求,不能笼统的定义为匹配的问题。 ...


范例如下
如果有明细要依参数表进行模糊匹配,不知在PB中要使用何公式?
10692110016131.png
10692110016138.7z (7.77 KB, 下载次数: 0)
回复

使用道具 举报

lc3662018 | 2020-11-6 00:43:15 | 显示全部楼层
范例如下
如果有明细要依参数表进行模糊匹配,不知在PB中要使用何公式?


在PB中的语境下,用“筛选”比“匹配”更加确切,一切DAX公式的计算都是在“筛选”进行完成后得到的结果。对于你的模拟数据,可以这么处理:
1. 将“参数表”转化成如下形式,以便进行后续金额比较的处理,这一步可以在PQ里完成

10692110016132.png

2. 将销售数据表和变形后的参数表导入PQ或者PBI,编写度量值进行计算
  1. 比率:=CALCULATE (

  2.   MAX ( Segmt[奖金比率] ),

  3.   FILTER (

  4.   Segmt,

  5.   MAX ( Sales[销售量] ) >= Segmt[下限]

  6.     && MAX ( Sales[销售量] ) < Segmt[上限]

  7.   )

  8. )
复制代码
10692110016133.png


10692110016139.rar (66.06 KB, 下载次数: 0)
回复

使用道具 举报

潘老大 | 2020-11-6 00:52:15 | 显示全部楼层
ThxAlot 发表于 2020-9-11 20:25
在PB中的语境下,用“筛选”比“匹配”更加确切,一切DAX公式的计算都是在“筛选”进行完成后得到的结果 ...



谢谢,这正是我需要的答案
但有2個小问题请教﹕
filter一定要用吗?用不用的差异在什麼地方
&&是否与and()公式用法一样?
回复

使用道具 举报

ahwx | 2020-11-6 00:57:15 | 显示全部楼层
谢谢,这正是我需要的答案
但有2個小问题请教﹕
filter一定要用吗?用不用的差异在什麼地方


1. 我倒是没想出不用filter的方法来,等其他高人来解答这个问题;顺便提供另一种算法
  1. 比率 =

  2. MAXX (

  3.   FILTER (

  4.   Segmt,

  5.   Segmt[下限]  MAX ( Sales[销售量] )

  6.   ),

  7.   Segmt[奖金比率]

  8. )
复制代码
2. DAX中的AND/OR函数都只能接收两个参数,所以一般都推荐使用&&、||运算符以避免使用AND/OR嵌套公式。
回复

使用道具 举报

1382926094 | 2020-11-6 00:58:15 | 显示全部楼层
ThxAlot 发表于 2020-9-12 03:43
1. 我倒是没想出不用filter的方法来,等其他高人来解答这个问题;顺便提供另一种算法
2. DAX中的AND/OR ...


如果&&改用*、||改用+取代,也行吗?
回复

使用道具 举报

brassx | 2020-11-6 01:05:16 | 显示全部楼层
不改参数表结构,用这两个试试,道理都一样的
10692110016134.jpg 10692110016135.jpg
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则