创建时间感知标记:动态识别新/活跃用户并实现时间维度可视化
动态标记活跃/新用户 + 按时间层级展示的解决方案
先明确核心:所有判断都基于你筛选的时间范围的最后一天,而非固定日期,这样才能实现动态性。
第一步:搞定日期表关联
- 你的日期表必须有日、周、月层级字段(比如
日期、年-周、年-月) - 把日期表的
日期字段和用户表的date_created、date_last_login都建立非活动关系(防止自动筛选干扰后续计算,要是已经建了活动关系,后面度量里要加清除筛选的逻辑)
第二步:写DAX度量值
1. 活跃用户数(筛选时间范围最后30天内登录)
活跃用户 = VAR 所选结束日期 = MAX('日期表'[日期]) VAR 活跃阈值 = 所选结束日期 - 30 RETURN CALCULATE( DISTINCTCOUNT('用户表'[id]), '用户表'[date_last_login] > 活跃阈值, '用户表'[date_last_login] <= 所选结束日期 )
2. 新用户数(筛选时间范围最后15天内注册)
新用户 = VAR 所选结束日期 = MAX('日期表'[日期]) VAR 新用户阈值 = 所选结束日期 - 15 RETURN CALCULATE( DISTINCTCOUNT('用户表'[id]), '用户表'[date_created] > 新用户阈值, '用户表'[date_created] <= 所选结束日期 )
3. 老活跃用户数(活跃但不是新用户)
老活跃用户 = [活跃用户] - [新用户]
第三步:做可视化
- 选时间线图或者柱状图,把日期表的层级字段(日/周/月)拖到轴上
- 把
新用户、老活跃用户这两个度量拖到值区域 - 加个日期范围切片器,调整筛选范围时,度量会自动用新的结束日期重新计算30/15天的阈值,完全动态
踩坑提醒
- 如果日期表和用户表是活动关系,要改一下度量里的
所选结束日期,用ALL清除行级筛选,确保取的是整个筛选范围的最后一天:所选结束日期 = CALCULATE(MAX('日期表'[日期]), ALL('日期表')) - 检查用户表的
date_last_login和date_created是不是真的日期格式,文本格式会导致计算出错
内容的提问来源于stack exchange,提问作者Nitekat
相关产品推荐
相关产品推荐

