基于财年日期重置新登录用户计数的DAX计算咨询
解决方案
你原有逻辑的问题是计算历史用户时取了当前日期前的全量数据,没有限制在当前所属财年范围内,只要把历史用户的统计范围锁定在当前财年区间内即可实现财年重置的效果。
假设你的财年从每年2月1日开始(和你测试用的硬编码日期一致),以下是可用的Measure代码:
Count of New Individuals = VAR currentUsers = VALUES('Log-Ins'[姓名]) // 若字段名为英文直接替换为[Name]即可 VAR currentMinDate = MIN('Log-Ins'[日期]) // 计算当前上下文日期所属财年的起始日期 VAR currentFiscalStart = IF( MONTH(currentMinDate) >= 2, DATE(YEAR(currentMinDate),2,1), DATE(YEAR(currentMinDate)-1,2,1) ) // 仅统计当前财年起始日到当前最小日期之前的登录用户 VAR pastUsersInFiscal = CALCULATETABLE( VALUES('Log-Ins'[姓名]), ALL('Log-Ins'[日期]), 'Log-Ins'[日期] >= currentFiscalStart, 'Log-Ins'[日期] < currentMinDate ) // 差集即为当前财年内首次登录的新用户 VAR newUsers = EXCEPT(currentUsers, pastUsersInFiscal) RETURN COUNTROWS(newUsers)
效果验证
拿你给出的测试数据举例:
- 筛选2020年1月数据:Sam、Dave、Jack为当前财年首次登录,计数为3
- 筛选2020年2月数据:James为当前财年首次登录,计数为1
- 筛选2021年2月(新财年首月)数据:即使Sam上一财年有登录记录,本次登录仍会被判定为新用户计入统计
优化建议
如果后续财年规则可能调整,建议单独新建日期维度表,提前维护好每个日期对应的财年、财年起始日期字段,后续只需关联登录表和日期维度表直接取值即可,不需要在Measure里硬编码财年起始逻辑,维护更灵活。
内容的提问来源于stack exchange,提问作者Insan3
相关产品推荐
相关产品推荐

