Power BI中使用DAX度量值获取指定ID对应的最新值
解决方案
方案1:DAX度量值(仅返回最新Value,适合用在视觉对象中)
假设你的源表名为源数据表,新建度量值代码如下:
最新Value = VAR 当前ID = SELECTEDVALUE('源数据表'[Name_ID]) VAR 对应ID最大时间 = CALCULATE(MAX('源数据表'[DateTime]), ALL('源数据表'), '源数据表'[Name_ID] = 当前ID) RETURN CALCULATE( SELECTEDVALUE('源数据表'[Value]), ALL('源数据表'), '源数据表'[Name_ID] = 当前ID, '源数据表'[DateTime] = 对应ID最大时间 )
使用方法:将Name_ID、Name、DateTime字段拖入表格视觉对象的行维度,再添加这个度量值,最后在视觉筛选器中筛选Name_ID为6、32、48,就能得到你要的结果。
方案2:新建计算表(直接生成完整的结果表,可用于后续计算)
如果需要直接生成完整的结果表,可点击「建模」选项卡-「新建表」,粘贴以下代码:
父ID最新结果表 = // 定义你需要的父ID集合 VAR 指定父ID集合 = {6, 32, 48} // 先过滤出目标ID的记录,再按ID分组取每个ID的最大时间 VAR 分组取最大时间 = GROUPBY( FILTER('源数据表', '源数据表'[Name_ID] IN 指定父ID集合), '源数据表'[Name_ID], "最新执行时间", MAXX(CURRENTGROUP(), '源数据表'[DateTime]) ) // 匹配对应时间的Name和Value字段 RETURN ADDCOLUMNS( 分组取最大时间, "Name", CALCULATE(SELECTEDVALUE('源数据表'[Name]), '源数据表'[DateTime] = EARLIER([最新执行时间])), "Value", CALCULATE(SELECTEDVALUE('源数据表'[Value]), '源数据表'[DateTime] = EARLIER([最新执行时间])) )
注意事项
- 请先确认你源表中的
DateTime字段已经被Power BI识别为「日期/时间」类型,否则MAX函数无法正常计算最大时间 - 如果存在同一个ID同一时间有多条记录的情况,可以把代码中的
SELECTEDVALUE替换为LASTNONBLANK('源数据表'[对应字段], 1)处理极端场景
内容的提问来源于stack exchange,提问作者Tin
相关产品推荐
相关产品推荐

