如何创建Measure按NIF统计Trainee转Graduate的月度及累计晋升人数
实现步骤与DAX代码
核心需求拆解
需要统计两类数据:
- 单月内从上月的
Internship(对应需求中的Trainee)转为Graduate的人员数量 - 筛选月份时,展示从4月到该筛选月的累计晋升总数
1. 单月晋升人数Measure
首先创建一个计算单月晋升人数的基础Measure,用于识别满足"上月是实习、本月转正"条件的人员:
当月晋升人数 = VAR 当前月份 = MAX('youth'[MONTH]) VAR 当前年份 = MAX('youth'[YEAR]) RETURN CALCULATE( DISTINCTCOUNT('youth'[NIF]), FILTER( ALL('youth'), 'youth'[YEAR] = 当前年份 && 'youth'[MONTH] = 当前月份 && 'youth'[CARREIRAYOUTH] = "Graduate" && EXISTS( FILTER( ALL('youth'), 'youth'[NIF] = EARLIER('youth'[NIF]) && 'youth'[YEAR] = 当前年份 && 'youth'[MONTH] = 当前月份 - 1 && 'youth'[CARREIRAYOUTH] = "Internship" ) ) ) )
2. 累计晋升人数Measure
基于上面的基础Measure,创建累计统计的Measure,确保筛选任意月份时,自动汇总4月到该月份的所有晋升:
累计晋升人数 = VAR 选中月份 = MAX('youth'[MONTH]) VAR 选中年份 = MAX('youth'[YEAR]) RETURN SUMX( FILTER( ALL('youth'[MONTH]), 'youth'[MONTH] >= 4 && 'youth'[MONTH] <= 选中月份 ), [当月晋升人数] )
注意事项
- 数据中需求描述的
Trainee对应表中的Internship,代码中已匹配该值,若实际字段值不同需对应修改 - 上述代码默认处理单年份数据,若存在跨年场景,需调整逻辑关联年份与月份的连续性(例如处理1月对应上年12月的情况)
- 使用时直接将
累计晋升人数Measure拖入视觉对象,配合MONTH列筛选即可展示符合要求的结果
内容的提问来源于stack exchange,提问作者Álvaro Matos
相关产品推荐
相关产品推荐

