PowerBI当前周数据筛选问题:制作多行列卡片统计本周打包量
PowerBI 当前周数据筛选解决方案
问题原因
直接类比今日筛选的逻辑行不通,因为周是一个日期范围,不是单个日期,不能用简单的等于判断,得判断日期是否落在当前周的区间内。
方案1:日期表添加计算列(和你今日筛选逻辑一致的思路)
在你的Date表中新建计算列,判断日期是否属于当前周:
GetCurrentWeek = IF( WEEKNUM('Date'[Date], 2) = WEEKNUM(TODAY(), 2) && YEAR('Date'[Date]) = YEAR(TODAY()), "Yes", "No" )
- 参数说明:
WEEKNUM的第二个参数2代表周一为周起始,如果你的仓库周起始是周日,改成1即可。 - 加
YEAR判断是为了避免跨年时,去年的同周数日期被误判为当前周。
如果需要更标准的ISO周(周一为起始,每年最多53周,符合国际标准),可以用ISOWEEKNUM替代:
GetCurrentWeek_ISO = IF( ISOWEEKNUM('Date'[Date]) = ISOWEEKNUM(TODAY()) && YEAR('Date'[Date]) = YEAR(TODAY()), "Yes", "No" )
建好列后,在筛选器中选择GetCurrentWeek = "Yes",就能只显示当前周的数据。
方案2:直接用度量值计算当前周总量(更轻量化)
不需要在日期表加计算列,直接写度量值统计当前周的打包总量,适合卡片可视化:
当前周打包总量 = VAR CurrentWeekStart = TODAY() - WEEKDAY(TODAY(), 2) + 1 // 计算本周一日期 VAR CurrentWeekEnd = CurrentWeekStart + 6 // 计算本周日日期 RETURN CALCULATE( SUM('打包数据'[数量]), // 替换成你实际的打包数量字段(CLL/PLL/KG的总量或单独统计) 'Date'[Date] >= CurrentWeekStart && 'Date'[Date] <= CurrentWeekEnd )
如果需要分别统计CLL、PLL、KG的周总量,复制度量值修改SUM的字段即可,比如:
当前周CLL总量 = VAR CurrentWeekStart = TODAY() - WEEKDAY(TODAY(), 2) + 1 VAR CurrentWeekEnd = CurrentWeekStart + 6 RETURN CALCULATE( SUM('打包数据'[CLL数量]), 'Date'[Date] >= CurrentWeekStart && 'Date'[Date] <= CurrentWeekEnd )
注意事项
- 确保你的
Date表已经被标记为日期表(PowerBI菜单栏「建模」>「标记为日期表」),时间智能函数会更稳定。 - 如果你的数据中有未来日期,记得在度量值或筛选中排除,避免统计未发生的打包数据。
内容的提问来源于stack exchange,提问作者Philip Jensen
相关产品推荐
相关产品推荐

