如何在DAX中每个列的每个不同值获取列的最新值

时间:2019-04-02 12:34:12

标签: powerbi dax calculated-columns powerbi-desktop

我渴望使用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
...        ...           ...

我希望生成一个保留目标值的cloumn,但前提是它是每个不同项目的最新“ 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的经验,因此我认为在此处共享这些想法没有帮助。

1 个答案:

答案 0 :(得分: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。