如何根据DAX中另一列的每个不同值获取列的最新值

问题描述 投票:1回答:1

我渴望使用DAX在Power BI中创建计算列。从我的表中的形式

projects   valid_date    target
2M         03/24/2019    0.9
3D         03/25/2019    1
5K         03/25/2019    0.9
2M         03/26/2019    0.9
3D         03/26/2019    0.5
5K         03/24/2019    0.6
...        ...           ...

我希望生成一个包含target值的列,但前提是它是每个不同项目的最新“valid_date”之一。

结果(“latest_target”)应如下所示:

projects   valid_date    target    latest_target
2M         03/24/2019    0.9       NULL
3D         03/25/2019    1         NULL
5K         03/25/2019    0.9       0.9
2M         03/26/2019    0.9       0.9
3D         03/26/2019    0.5       0.5
5K         03/24/2019    0.6       NULL
...        ...           ...       ...

对于这样一个列,DAX公式会是什么样的?我已经尝试了一些公式,但由于我没有有效地将我的T-SQL思想转换为DAX,我认为在这里分享这些并不会有帮助。

powerbi dax calculated-columns powerbi-desktop
1个回答
2
投票

假设您的表名是“My_Table”:

Latest Target =
   VAR 
     Latest_Date = CALCULATE(MAX(My_Table[valid_date]), ALLEXCEPT(My_Table[projects]))
   RETURN 
     IF(My_Table[valid_date]=Latest_Date, My_Table[target])

工作原理:首先,我们找到每个“项目”的最新(最大)日期。 ALLEXCEPT允许我们这样做 - 对于每条记录,我们看到整个表由此记录“项目”过滤。 - 然后,通过比较最大日期和记录的日期,我们发现它是否是最新的。

确保根据需要调整新列的小数位数,因为默认情况下它可能设置为0。

© www.soinside.com 2019 - 2024. All rights reserved.