如何根据 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。
我很想使用 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。