【问题标题】:DAX function that check if value is in range and return corresponding value in other table检查值是否在范围内并在其他表中返回相应值的 DAX 函数
【发布时间】:2020-09-24 13:40:59
【问题描述】:

我有两个表:一个包含范围及其对应值的“范围”表和一个包含我要检查范围的值的“数据”表。

My Data 表如下,但它的行数比 Range 表多。 “PM”值是我需要检查的值。

Location PM
B01      1,05
B02      1,04888
B15      1,05787
B16      1,05787
B03      2,03714
B04      2,03714
B09      2,03714
B10      2,03714
B17      2,03714

而“范围”表就是这样的示例:

P.E     P.S     PV
0,48    1,03    10,00%
1,03    2,02    10,03%
2,02    3,63    8,87%
3,63    6,23    8,24%
6,23    10,17   7,62%
10,17   15,79   6,46%
15,79   22,37   5,75%
22,37   30,70   5,29%
30,70   41,27   4,99%
41,27   54,88   4,86%
54,88   71,57   4,65%

所以,总而言之,我需要创建一个 DAX 度量或列来检查 PM 值是否介于 PE 和 PS 值之间并返回相应的 PV。

在 excel 上,我设法使用 LOOKUP 函数来执行此操作,因为该函数将搜索到的值四舍五入到相应表中最接近的较小值以进行匹配。在 Power Bi 上,我找不到复制这个的方法。

有人知道这是否可能吗?

感谢大家的帮助!

【问题讨论】:

    标签: powerbi powerquery powerbi-desktop


    【解决方案1】:

    您需要一个度量,如下所示-

    respected_pv = 
    CALCULATE(
        MAX(range[PV]),
        FILTER(
            ALL(range),
            range[P.E] <= MIN(data[PM])
                && range[P.S] >= MIN(data[PM])
        )
    )
    

    这是自定义列-

    的代码
    respected_pv_column = 
    CALCULATE(
        MAX(range[PV]),
        FILTER(
            ALL(range),
            range[P.E] <= data[PM]
                && range[P.S] >= data[PM]
        )
    )
    

    下面是示例输出。请记住,只有第一行获取 PV,因为您的示例数据中没有其他范围。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-26
      • 2019-03-23
      • 1970-01-01
      • 2011-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多