Power Query中如何实现每月新增员工数量统计?
Power Query 统计每月新增员工数方案
前提说明
假设你的数据包含员工编码字段,编码内嵌了日期和姓名信息;如果还没拆分出单独的「统计月份」字段,先按以下步骤处理。
步骤1:从编码中提取统计月份
如果编码格式类似202405张三(前6位为年月),用Table.AddColumn生成标准月份列:
// 替换「源」为你的数据表名 Table.AddColumn(源, "统计月份", each Date.StartOfMonth(Date.FromText(Text.Start([员工编码], 6), [Format="yyyyMM"])))
这一步会把编码里的年月转成当月第一天的日期,方便后续按月份分组。
步骤2:按员工分组,记录所有出现过的月份
通过分组操作,收集每个员工的历史出现月份:
// 先从编码提取员工姓名(假设编码格式是「年月+姓名」,这里取第7位及以后的内容) 添加姓名列 = Table.AddColumn(源, "员工姓名", each Text.Middle([员工编码], 6)), // 按姓名分组,生成该员工的历史月份列表 分组表 = Table.Group(添加姓名列, {"员工姓名"}, {{"历史月份列表", each List.Distinct([统计月份]), type list}})
步骤3:标记新增员工
将原表和分组表合并,判断当前月份是否为该员工的首次出现:
// 合并原表与分组表 合并表 = Table.NestedJoin(添加姓名列, {"员工姓名"}, 分组表, {"员工姓名"}, "员工历史数据", JoinKind.LeftOuter), // 新增标记:首次出现则为1,否则为0 添加新增标记 = Table.AddColumn(合并表, "是否新增", each if [统计月份] = List.Min([员工历史数据][历史月份列表]) then 1 else 0)
步骤4:按月统计新增人数
最后按月份分组求和,得到每月新增员工数:
Table.Group(添加新增标记, {"统计月份"}, {{"当月新增员工数", each List.Sum([是否新增]), type number}})
高效替代方案(适用于超大数据集)
如果数据量极大,避免全表筛选的性能损耗,可直接用List.Contains结合分组后的历史编码列表:
// 先按月份排序 排序表 = Table.Sort(源, {"统计月份", Order.Ascending}), // 生成所有历史编码的累积列表 添加历史编码列 = Table.AddColumn(排序表, "历史编码列表", each List.RemoveLastN(排序表[员工编码], Table.RowCount(排序表) - [Index])), // 判断当前编码是否不在历史列表中 添加新增标记 = Table.AddColumn(添加历史编码列, "是否新增", each not List.Contains([历史编码列表], [员工编码]))
之后同样按「统计月份」分组求和即可。
内容的提问来源于stack exchange,提问作者Camila S
相关产品推荐
相关产品推荐

