没有完全匹配的查找表(查找第一个大于的值)
Lookup tables with no exact match (find first value greater than)
我是 DAX 和 Power BI 的初学者。我想知道你会如何处理这样的问题:
我有两个table; Table A 包含我所有的对象和特征(例如建造年份或每月租金收入)。 Table B 一个“查找 table”,其中 class 的边界是
根据我的特点,我想bin/class计算列中的建筑物(“租金class”)。因此,如果租金收入为 423 欧元,则低于 class 1,如果租金收入为 608 欧元,则低于 class 4
Table一个
Building Construction_year Rental_income
B1 2016 €423
B2 1995 €650
B3 1949 €720
Table 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中我不知道如何处理这个问题。
这种情况在我的数据中经常发生
你需要计算TableB中第一个class边界大于TableA中收入的class
类似于,我们可以使用TOPN
找到合适的边界,然后取与之关联的class。
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
)
注意:如果您想将这些用于计算列,请删除 TableA[Income]
周围的 SELECTEDVALUE
包装器。
我是 DAX 和 Power BI 的初学者。我想知道你会如何处理这样的问题:
我有两个table; Table A 包含我所有的对象和特征(例如建造年份或每月租金收入)。 Table B 一个“查找 table”,其中 class 的边界是
根据我的特点,我想bin/class计算列中的建筑物(“租金class”)。因此,如果租金收入为 423 欧元,则低于 class 1,如果租金收入为 608 欧元,则低于 class 4
Table一个
Building Construction_year Rental_income
B1 2016 €423
B2 1995 €650
B3 1949 €720
Table 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中我不知道如何处理这个问题。
这种情况在我的数据中经常发生
你需要计算TableB中第一个class边界大于TableA中收入的class
类似于TOPN
找到合适的边界,然后取与之关联的class。
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
)
注意:如果您想将这些用于计算列,请删除 TableA[Income]
周围的 SELECTEDVALUE
包装器。