我需要帮助。 我有一个带有2列的表A-第一个只是一个名称,另一个是一个值。我也有3列的表B-第一个带有一些名称的拳头,第二个叫做valMin,第三个叫valMax。我想做的是从表B中获取名称(col1),并根据表A中的值放入表A中的新列中,以使表A中的val在表B中的valMin和valMax之间。示例:
TableA TableB Result
|NameA|valA| |NameB|ValMin|ValMax| |NameA|valA|NameB|
------------ --------------------- ------------------
|Name1| 7 | |BBBB | 1 | 5 | |Name1| 7 |CCCC |
|NAme2| 3 | |CCCC | 6 | 10 | |NAme2| 3 |BBBB |
是否可以使用DAX或Power Query M? 感谢您的帮助!
答案 0 :(得分:3)
尝试对“结果”表中的计算出的列NameB进行以下操作:
NameB =
CALCULATE (
MAX ( TableB[NameB] ),
FILTER (
TableB,
TableA[ValA] >= TableB[ValMin]
&& TableA[ValA] <= TableB[ValMax]
)
)
当TableB中的范围不重叠且没有孔时,该公式将始终返回一个值。当有重叠并且返回多个值时,MAX函数将防止错误。当有孔但找不到值时,它将返回空白。
答案 1 :(得分:1)
马可·鲁索(Marco Russo)在这里对此做得很好:Dax Patterns: Static Segmentation
将代码模式从该页面转换为您的需求,将得到类似的信息:
[Name B] =
CALCULATE (
VALUES ( TableB[NameB] ),
FILTER (
TableB,
TableA[valA] >= TableB[ValMin]
&& TableA[valA] < TableB[ValMax]
)
)