从一个表中获取值,然后根据另一列DAX / Power Query M

时间:2018-09-17 23:18:31

标签: powerbi dax powerquery powerbi-datasource powerbi-desktop

我需要帮助。 我有一个带有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? 感谢您的帮助!

2 个答案:

答案 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] 
        )
    )