如何用DAX在PowerBI中生成员工跨月部门变动标识列
在PowerBI中用DAX实现员工部门变动标识列
你需要给现有表添加一个**变动标识(change)**计算列,逻辑是:同一员工编号下,若当前月份的部门和上一个相邻月份的部门不一致,标记为1;否则标记为0(员工的第一个月份直接标记0)。
实现的DAX公式
变动标识 = VAR CurrentEmp = [员工编号] VAR CurrentMonth = [月份] VAR PreviousSector = CALCULATE( MAX([部门]), FILTER( ALL('你的表名'), [员工编号] = CurrentEmp && [月份] = CurrentMonth - 1 ) ) RETURN IF( ISBLANK(PreviousSector), 0, IF([部门] <> PreviousSector, 1, 0) )
公式说明
- 先定义
CurrentEmp和CurrentMonth变量,分别获取当前行的员工编号和月份 PreviousSector变量通过CALCULATE+FILTER组合,筛选出同一员工、月份为当前月份减1的部门值(用MAX是因为每个员工每月仅一条记录,确保返回唯一值)- 最后判断:如果上一个月份的部门不存在(即当前是该员工的第一个统计月份),返回0;否则对比当前部门与上一部门,不同则返回1,相同返回0
原始数据
| 员工编号 | 部门 | 月份 |
|---|---|---|
| 1 | 111 | 4 |
| 2 | 222 | 4 |
| 1 | 111 | 5 |
| 2 | 222 | 5 |
| 1 | 222 | 6 |
| 2 | 222 | 6 |
| 1 | 222 | 7 |
| 2 | 222 | 7 |
预期结果
| 员工编号 | 部门 | 月份 | 变动标识 |
|---|---|---|---|
| 1 | 111 | 4 | 0 |
| 2 | 222 | 4 | 0 |
| 1 | 111 | 5 | 0 |
| 2 | 222 | 5 | 0 |
| 1 | 222 | 6 | 1 |
| 2 | 222 | 6 | 0 |
| 1 | 222 | 7 | 0 |
| 2 | 222 | 7 | 0 |
内容的提问来源于stack exchange,提问作者Leonardo Teles
相关产品推荐
相关产品推荐

