powerbi - 没有完全匹配的查找表(找到大于的第一个值)
问题描述
我是 DAX 和 Power BI 的初学者。我想知道你将如何处理这样的问题:
我有两张桌子;表 A 包含我所有的对象和特征(例如建设年份或每月租金收入)。表 B 是一个“查找表”,该类的边界在哪里。
根据我的特点,我想在一个计算列(“出租类”)中对建筑物进行分类/分类。因此,如果租金收入为 423 欧元,则属于第 1 类,如果租金收入为 608 欧元,则属于第 4 类
表 A
Building Construction_year Rental_income
B1 2016 €423
B2 1995 €650
B3 1949 €720
表 B
Rental_class Rental_boundary
Under_class_1 €424
Under_class_2 €607
Under_class_3 €651
Under_class_4 €720
这将是我的预期结果
Building Construction_year Rental_income Rental_class
B1 2016 €423 Under_class_1
B2 1995 €650 Under_class_3
B3 1949 €720 Under_class_4
在 Excel 中,我会使用 VLOOKUP (TRUE),但在 DAX 中我不知道如何处理这个问题。
这种情况在我的数据中经常发生。
解决方案
您需要计算表 B 中边界大于表 A 中收入的第一类。
与这个问题类似,我们可以使用TOPN
找到合适的边界,然后取与之关联的类。
Lookup Rental_class =
VAR Income = SELECTEDVALUE ( TableA[Rental_income] )
VAR Boundary =
TOPN (
1,
FILTER ( TableB, TableB[Rental_boundary] >= Income ),
TableB[Rental_boundary], ASC
)
RETURN
MAXX ( Boundary, [Rental_class] )
或者你可以使用几个CALCULATE
函数。
Lookup Rental_class =
VAR Income = SELECTEDVALUE ( TableA[Rental_income] )
VAR Boundary =
CALCULATE ( MIN ( TableB[Rental_boundary] ), TableB[Rental_boundary] >= Income )
RETURN
CALCULATE (
VALUES ( TableB[Rental_class] ),
TableB[Rental_boundary] = Boundary
)
注意:如果要将这些用于计算列,请SELECTEDVALUE
删除TableA[Income]
.
推荐阅读
- tfs - 如何解决错误“system.security.principal.windowsidentity - 主域和可信域之间的真实关系失败”?
- caching - 错误:无法执行缓存操作(缓存已停止),服务空闲数小时后
- javascript - 在显示的特定选项卡上触发事件
- r - 我可以使用 R 中另一个数据帧的相应值来划分数据帧的每一列吗?
- postgresql - 使用 PostgreSQL 根据特定列和优先级删除数据
- c# - C# .NET EF 迁移无法将“System.Double”类型的对象转换为“System.Single”类型
- javascript - 我想反转 GSAP 时间轴中的动画
- jquery - 通过 webpack 在 head 中添加 jquery 作为单独的文件
- c - C传递嵌套结构作为参考
- python - 使用 python 在 JSON 中查找值