Spotfire:基于报告周期的员工姓名变更标记实现咨询
在Spotfire中创建员工变更标记列的方案
前提条件
确保你的数据集包含以下核心字段:
班组:员工所属的分组报告日期:报告的时间节点(需为可排序的日期类型)员工姓名:需追踪变更的员工标识
方案一:标记现有行的变更(仅针对数据中存在的员工)
适用于只需要标记当前存在员工与上一报告期的对比变化,若需标记消失的员工,请使用方案二。
排序数据集
点击菜单栏数据->数据属性,选中目标数据集后进入排序选项卡,添加排序规则:- 第一优先级:按
班组升序 - 第二优先级:按
报告日期升序
- 第一优先级:按
创建「当前存在」计算列
点击插入->计算列,命名为CurrentExists,输入公式:1(表示当前报告日期下该员工存在)
创建「上一报告期存在状态」计算列
新建计算列PreviousExists,输入公式:If(RowId() Over (Partition By [班组] Order By [报告日期]) = 1, 0, Lag([CurrentExists]) Over (Partition By [班组] Order By [报告日期]))逻辑说明:
Partition By [班组]:限定仅在同一班组内对比Order By [报告日期]:按时间顺序遍历报告期Lag():获取上一个报告期的存在状态;首个报告期无历史数据,设为0
创建最终变更标记列
新建计算列变更标记,输入公式:Case When [PreviousExists] = 0 And [CurrentExists] = 1 Then "新增" When [PreviousExists] = 1 And [CurrentExists] = 0 Then "离职/移除" Else "无变更" End
方案二:完整标记所有变更(含消失的员工)
如果需要标记那些在某报告期从名单中消失的员工(原数据无对应行),需先生成全量组合数据:
生成班组-报告日期全量数据集
- 点击
数据->新建数据集,选择交叉表 - 行字段选
班组,列字段选报告日期,值字段任选(如员工姓名的计数) - 导出该数据集,命名为
班组日期全集
- 点击
生成班组-员工全量数据集
- 重复新建交叉表步骤,行字段选
班组,列字段选员工姓名 - 导出数据集,命名为
班组员工全集
- 重复新建交叉表步骤,行字段选
合并全量组合
- 点击
数据->合并数据,选择班组日期全集与班组员工全集,按班组字段做全外连接,得到所有可能的班组-报告日期-员工姓名组合,命名为全量员工日期组合
- 点击
关联原数据集
- 将原数据集与
全量员工日期组合按班组、报告日期、员工姓名做左外连接 - 新建计算列
CurrentExists:If(IsNull([原数据集的员工姓名]), 0, 1)
- 将原数据集与
后续步骤同方案一
按方案一的步骤3、4创建PreviousExists和变更标记列,即可完整标记新增、移除的所有员工变更。
内容的提问来源于stack exchange,提问作者Morgan McIntyre
相关产品推荐
相关产品推荐

