如何用 CSV 创建组织结构图

如何把一份 HRIS 的 CSV 导出文件变成一张汇报线图:把 employee_id 和 manager_id 解析成行号,把经理列指向的方向反过来,并处理孤儿行和成环。

运作方式

  1. 把路由所依赖的那些列导出来

    你需要 employee_id、manager_id 和每个人一个可读的姓名。再加上职位、成本中心、审批权限和任何代理人列,因为决定一份申请爬到哪里为止的正是这些。凡是图上永远不会显示的都别导——薪酬、住址、入职日期——因为一份更窄的文件用眼睛核对起来容易得多,而且不认识的列本来就会被粘贴过程带过并忽略。

  2. 在电子表格之前,先把文件当文本读一遍

    先用文本编辑器打开这份导出文件。检查分隔符是逗号而不是分号,含逗号的姓名被双引号包住了,文件是 UTF-8 好让带重音的姓名活下来,以及第一个表头真的是 employee_id 而不是一个字节顺序标记后面跟着 employee_id。这些每一项都是悄无声息地失败:列是按表头名称匹配的,所以一个和你以为的不完全一样的表头,什么都匹配不上。

  3. 先决定你要做的是哪一种图

    一个人一个方框、按谁向谁汇报排布,那是一棵树,属于组织结构图编辑器。一份申请穿过汇报线所走的路径,那是一张流程图,属于这里:一行一个步骤而不是一行一个人,由导出文件提供层级、权限和代理人。请在开始给行编号之前就定下来,因为这两种形状彼此转换不过去。

  4. 把 manager_id 反转成行号

    先把这些行排成你想要的编号顺序,因为连线到指的是位置,事后重新编号会把一切重新接线。然后对每个人,把所有 manager_id 等于此人 employee_id 的那些行的行号收集起来,用逗号分隔填进这个人的连线到。下属成为向外的箭头;manager_id 只是查找用的键,它本身永远不会被粘进连线到。

  5. 在文件里解决孤儿行和成环

    按 manager_id 排序,确认每一个取值都在同一份文件里作为某个 employee_id 出现过。没出现的就是孤儿,通常是因为导出被限定在一个部门或只导了在职员工。然后顺着每条链往上走,一旦重新走到某一行就停下:两行互相指向对方就是成环,它要么是一个无人收尾的代理安排,要么是两行在同一天被不同的人改过。

  6. 粘贴进去,再补上形状和泳道

    把 .csv 拖到一张新图表的表格区域上,或者把 CSV 文本粘贴进去。把提问的那些行的形状设为决策,把终止行设为开始、成功和拒绝,把答案按与连线到数字相同的顺序填进连线文字,再把审批权限的层级填进横向泳道列,让汇报线上每一级各占一条泳道。

常见问题

QueryChart 能直接导入一份组织结构图 CSV 吗?

把行弄进来的方式,是把 .csv 拖到表格区域上或者把 CSV 文本粘贴进去,而列是按表头名称而不是按位置匹配的,所以它们排成什么顺序都无所谓,不认识的任何东西都会被原样带过并忽略。它不会做的,是替你推断出一个层级:没有导入向导,没有列映射界面,也没有连接人力系统的连接器。文件必须已经在连线到这一列里说明了,每一行连向哪些行号。

我该用流程图编辑器还是组织结构图编辑器?

如果产出是一棵编制树——一个人一个方框、经理在下属上方、用来回答谁向谁汇报——请用专门的组织结构图编辑器,它就是为这种形状而做的,并且保证一个人只有一个父节点。当汇报线是一条路线而不是一张画时,请用流程图编辑器:一份一路上爬直到遇见权限足够的人的审批、一条上报路径、一份必须绕道财务的申请。这些里面有判断和例外,而判断不是一棵树画得出来的东西。

如果两个人互相汇报会怎样?

图会把它画出来——一对互相指着对方的箭头——但任何要把这条链一路走到顶的程序都不会终止,这也正是要在文件里而不是粘贴之后检查成环的原因。实际当中,成环要么是一个无人收尾的代理安排,要么是两行在同一天被不同的人改过。示例图用判断“申请人是否处在自己的审批链上?”防住了同一个问题在路由上的版本,它选择跳过一级而不是绕圈。

我的导出文件是分号分隔的,而且有些姓名含逗号。

两者对 HRIS 导出文件来说都很正常,而且都能在文件里解决。分号分隔的导出文件——系统按欧洲区域设置配置时很常见——应当重新导出或转换成逗号;就这么粘贴进来,整个表头行会落进一列,这至少还算是明显地失败而不是隐蔽地失败。含逗号的取值只要用双引号包住就是合法的,所以 "Nakamura, Yuki" 是一个字段,而同样的文字不加引号就成了两个。

HRIS 变了之后,怎么让图保持是最新的?

靠重新导出并重新粘贴,而不是把两者连起来——QueryChart 和人力系统之间没有实时链路。这件事没听上去那么要紧,因为你画的是路由规则而不是花名册:“金额超过直属经理权限时上报部门负责人”这条规则,能在一次让文件里每个名字都变了的重组中活下来。层级或者权限变了就重做导出,只有人变了就别去动它。

流程图指南中的更多内容