如何用Power BI新版卡片图按周/月/季统计唯一ID数量?
基于自定义周数统计时段唯一ID数量的实现方案
完全可以基于你创建的UpdatedAtWeek分组统计对应时段的唯一ID数量,以下是具体实现步骤:
1. 先创建基础度量值
先做一个通用的唯一ID计数度量值,后续复用:
总唯一ID数 = DISTINCTCOUNT('conversations'[id])
2. 各固定时段的度量值(上周/上月/上季度/上年)
上周唯一ID数
考虑跨年周的情况,用DAX计算目标周和年份:
上周唯一ID数 = VAR 当前年份 = YEAR(TODAY()) VAR 当前周数 = WEEKNUM(TODAY() + 1) + IF(WEEKDAY(DATE(当前年份,1,1))=7, -1, 0) VAR 目标周数 = 当前周数 - 1 VAR 目标年份 = IF(目标周数 < 1, 当前年份 - 1, 当前年份) VAR 跨年调整周数 = IF(目标周数 < 1, 52 + 目标周数, 目标周数) RETURN CALCULATE( [总唯一ID数], YEAR('conversations'[updatedAt]) = 目标年份, [UpdatedAtWeek] = 跨年调整周数 )
上月唯一ID数
直接通过年月筛选:
上月唯一ID数 = VAR 当前年月 = EOMONTH(TODAY(), -1) RETURN CALCULATE( [总唯一ID数], YEAR('conversations'[updatedAt]) = YEAR(当前年月), MONTH('conversations'[updatedAt]) = MONTH(当前年月) )
上季度唯一ID数
处理跨年度季度的情况:
上季度唯一ID数 = VAR 当前季度 = QUARTER(TODAY()) VAR 当前年份 = YEAR(TODAY()) VAR 目标季度 = 当前季度 - 1 VAR 目标年份 = IF(目标季度 < 1, 当前年份 - 1, 当前年份) VAR 目标季度调整 = IF(目标季度 < 1, 4, 目标季度) RETURN CALCULATE( [总唯一ID数], YEAR('conversations'[updatedAt]) = 目标年份, QUARTER('conversations'[updatedAt]) = 目标季度调整 )
上年唯一ID数
直接筛选上一年的记录:
上年唯一ID数 = VAR 目标年份 = YEAR(TODAY()) - 1 RETURN CALCULATE( [总唯一ID数], YEAR('conversations'[updatedAt]) = 目标年份 )
3. 支持可选时段的交互配置
如果要让用户从全表中自由选择任意周/月/季/年,按以下步骤操作:
- 新建日期表:在「建模」选项卡点击「新建表」,输入
日期表 = CALENDARAUTO(),然后把日期表[Date]和conversations[updatedAt]建立关系(关联日期部分) - 在日期表中添加和你一致的周数字段:
日期表周数 = WEEKNUM('日期表'[Date] + 1) + IF(WEEKDAY(DATE(YEAR('日期表'[Date]),1,1))=7, -1, 0)
- 创建通用度量值:
选中时段唯一ID数 = DISTINCTCOUNT('conversations'[id]) - 添加切片器:选择日期表的「年份」「季度」「月份」或「日期表周数」字段,用户选择后,卡片图自动显示对应时段的唯一ID数
4. 新版卡片图设置
- 把对应的度量值(比如
上周唯一ID数)拖到卡片图的「Data」字段栏 - 若要显示时段提示,把时段名称(如“上周”)或日期范围字段拖到「Tooltips」栏,方便查看
内容的提问来源于stack exchange,提问作者lugger1
相关产品推荐
相关产品推荐

