You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取每月首次出现日期对应的行值(DAX/Power Query实现)

每月首个日期对应数值提取方案

一、Power Query 预处理方案

既然你的Date列已经按升序排列,用Power Query做数据预处理最直接:

  1. 打开Power Query编辑器,选中目标表格
  2. 按月份分组提取首条数值:
    • 切换到「转换」选项卡,点击「分组依据」
    • 分组规则选「自定义」:
      • 新增分组列年月标识,用公式Date.Year([Date])*100 + Date.Month([Date])生成唯一的年月编号
      • 再新增一列月度首值,操作选「行→首行」,目标列选Values
  3. 完成分组后,你可以把结果合并回原表,或者直接用分组后的数据集做可视化

要是想在原表新增一列标记每月首条记录的数值,添加自定义列即可:

if [Date] = List.Min(Table.SelectRows(#"上一步骤名称", (x) => Date.Year(x[Date]) = Date.Year([Date]) and Date.Month(x[Date]) = Date.Month([Date]))[Date]) then [Values] else null

二、DAX 实现方案(适配可视化需求)

因为你要做12个月滚动折线图,DAX的计算列或度量值都能满足,推荐用度量值更灵活:

1. 计算列(添加到原表)

在Power BI数据视图里新建计算列:

月度首值 = 
VAR 当前年月 = YEAR('你的表名'[Date])*100 + MONTH('你的表名'[Date])
VAR 当月最早日期 = MINX(FILTER('你的表名', YEAR('你的表名'[Date])*100 + MONTH('你的表名'[Date]) = 当前年月), '你的表名'[Date])
RETURN
IF('你的表名'[Date] = 当月最早日期, '你的表名'[Values], BLANK())

2. 度量值(直接用于折线图)

如果不需要修改原表,用度量值直接计算每个月的首值,更适合滚动范围计算:

滚动12月首值 = 
VAR 滚动日期范围 = DATESINPERIOD('日期表'[Date], LASTDATE('日期表'[Date]), -12, MONTH)
VAR 每月最早日期 = ADDCOLUMNS(SUMMARIZE(滚动日期范围, '日期表'[年月标识]), "首日期", MINX(FILTER('你的表名', YEAR('你的表名'[Date])*100 + MONTH('你的表名'[Date]) = '日期表'[年月标识]), '你的表名'[Date]))
RETURN
SUMX(每月最早日期, CALCULATE(MAX('你的表名'[Values]), '你的表名'[Date] = [首日期]))

提示:建议搭配单独的日期表使用,能大幅优化时间智能函数的性能;如果没有日期表,直接替换成原表的Date列即可

三、可视化设置建议

制作12个月滚动折线图时:

  • 用日期表的「年月标识」作为横轴
  • 将DAX度量值或Power Query处理后的「月度首值」作为纵轴值
  • 开启视觉对象的滚动筛选,设置为最近12个月,或者用DAX度量值自动计算滚动范围

内容的提问来源于stack exchange,提问作者Derek Huggens

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 15:48:30