Power BI 比对两张表查找缺失培训课程及实现完成进度条方案
Power BI 员工必修课完成情况实现方案
前置数据准备
先确认两张基础表的核心字段,无对应字段可先补全:
- 《TRAINING 2021》(已完成培训表):员工ID/员工姓名、已完成课程名称、完成时间(可选)
- 《MANDATORY TRAINING 2021》(必修课表):必修课程名称,若需按岗位/部门区分必修要求可新增对应维度字段
两张表无需提前建关系,后续计算生成中间表后按需关联即可。
需求1:输出每位员工未完成的缺失必修课
按以下步骤操作即可得到每个员工的缺课清单:
- 生成独立员工维度表,避免遍历员工时出现遗漏,新建DAX计算表:
员工表 = DISTINCT('TRAINING 2021'[员工ID/员工姓名]) - 生成员工与所有必修课的全量映射表,即每个员工对应所有应完成的必修课,新建DAX计算表:
员工必修全量表 = CROSSJOIN('员工表', 'MANDATORY TRAINING 2021')
如果是按岗位区分必修课,将CROSSJOIN替换为按岗位关联的NATURALINNERJOIN即可 - 给全量映射表新增标记列,判断对应课程员工是否完成,新建计算列:
是否完成 = VAR CurrentEmp = '员工必修全量表'[员工ID/员工姓名] VAR CurrentCourse = '员工必修全量表'[必修课程名称] RETURN IF( COUNTROWS(FILTER('TRAINING 2021', 'TRAINING 2021'[员工ID/员工姓名] = CurrentEmp && 'TRAINING 2021'[已完成课程名称] = CurrentCourse)) > 0, "已完成", "未完成" )
- 最终展示时,将
员工必修全量表字段拖入表格可视化,筛选「是否完成=未完成」,行维度选择员工、必修课程名称,就能得到每个员工对应的缺失必修课清单,示例中Bruno会直接对应显示Course C。
需求2:员工培训完成进度条&完成率展示
- 先新建完成率计算度量值,格式设置为百分比,保留0-1位小数即可:
必修课完成率 = VAR TotalMandatory = COUNT('MANDATORY TRAINING 2021'[必修课程名称]) VAR FinishedCount = CALCULATE(COUNT('员工必修全量表'[必修课程名称]), '员工必修全量表'[是否完成] = "已完成") RETURN DIVIDE(FinishedCount, TotalMandatory, 0)
- 进度条实现两种可选方案:
- 条形图改造:轴维度选员工姓名,值选刚才的「必修课完成率」度量值,在可视化设置中开启数据标签,自定义标签格式为
[员工姓名]:[Value]课程已完成,调整条形图高度即可得到横向进度条效果,支持批量展示所有员工进度。 - 卡片图实现:选中卡片可视化,值选「必修课完成率」,在「条件格式-单元格元素」中开启「数据条」,设置对应填充色和最值,再自定义卡片显示文本即可得到带进度条的单员工完成情况卡片,适合搭配员工切片器使用。
小提示:如果需要按部门/岗位筛选统计,只要把员工维度表和其他表通过员工ID建立1对多的关联,就能正常联动筛选。
内容的提问来源于stack exchange,提问作者Bruno Tavares
相关产品推荐
相关产品推荐

