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

How to get the latest values of a column per each distinct value of another column in DAX

我很想使用 DAX 在 Power BI 中创建一个计算列。 来自我的 table 形式

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
...        ...           ...

我希望生成一个包含目标值的列,但前提是它是每个不同项目的最新 "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,我认为在这里分享这些不会有帮助。

假设您的 table 名字是 "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])

工作原理: 首先,我们找到每个 "projects" 的最新(最大)日期。 ALLEXCEPT 允许我们这样做 - 对于每条记录,我们看到整个 table 被这条记录 "project" 过滤。 - 然后,通过比较最大日期和记录的日期,我们确定它是否是最新的。

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