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

折线图同屏展示当期与同期数据及切片器适配问题(含DAX代码)

解决Power BI中当期与同期销售数据展示及切片器兼容问题

问题分析

现有DAX代码存在三个核心问题,导致同期数据筛选时归零:

  • 类型不匹配:SELECTEDVALUE(sales[date], YEAR(TODAY()))中,sales[date]是日期类型,YEAR(TODAY())是数值类型,变量赋值逻辑错误
  • 聚合字段错误:SUM(sales[date])是对日期字段求和,而非销售额字段,逻辑完全错误
  • 筛选上下文未处理:选择特定月份/日期时,筛选上下文会限制仅计算当前年份的数据,导致去年同期数据无法被检索

修正后的DAX代码

假设你的销售表包含sales_amount(销售额字段)、date(日期字段),以下是适配RLS要求的解决方案:

当期销售额(CY sales)

CY sales = 
VAR SelectedDate = SELECTEDVALUE(sales[date], TODAY())
VAR SelectedYear = YEAR(SelectedDate)
VAR SelectedMonth = MONTH(SelectedDate)
RETURN
CALCULATE(
    SUM(sales[sales_amount]),
    YEAR(sales[date]) = SelectedYear,
    MONTH(sales[date]) = SelectedMonth
)

去年同期销售额(PY sales)

PY sales = 
VAR SelectedDate = SELECTEDVALUE(sales[date], TODAY())
VAR PYYear = YEAR(SelectedDate) - 1
VAR SelectedMonth = MONTH(SelectedDate)
RETURN
CALCULATE(
    SUM(sales[sales_amount]),
    REMOVEFILTERS(sales[date]), // 移除当前日期筛选,避免限制去年数据
    YEAR(sales[date]) = PYYear,
    MONTH(sales[date]) = SelectedMonth
)

关键说明

  • 类型修正:通过YEAR()/MONTH()从选中日期中提取年份、月份,避免类型不匹配错误
  • 筛选上下文处理:使用REMOVEFILTERS(sales[date])清除当前日期的筛选限制,确保能检索到去年同期的对应月份数据
  • RLS兼容:未使用任何内置时间智能函数(如SAMEPERIODLASTYEAR),完全通过基础DAX函数实现,支持行级安全规则
  • 切片器适配:无论选择全年、特定月份还是单个日期,都会自动匹配当期和去年同期的对应月份数据,折线图可正常展示两组数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 20:55:13