反馈已提交

网络繁忙

人事系统数据仓库建设

  • 文档创建者:Roxy
  • 历史版本:11
  • 最近更新:Roxy 于 2023-03-05
  • 1. 背景

    1.1 现状

    「小数公司」的人事部门率先搭建了「报表OA系统」作为人事任务流程,将人事工作标准化、流程化,非常适合小数公司目前的人事工作现状

    而行政部门新采购了简道云应用进行业务的规范化流转,通过「简道云表单系统」进行行政后勤和薪资绩效管理录入。

    1.2 问题

    由于员工基础信息均存储在人事部门搭建的「报表OA系统」中,对于简道云系统录入的后勤和薪资绩效管理数据而言,无法与员工信息、考勤等数据进行联合分析,这样的数据孤岛影响了公司的数据融合和使用。

    同时,由于公司希望制作报表看板、进行业务的自助数据分析,通过数据反哺业务,降本增效,而当前公司没有统一的数据源,都是通过 IT 直接在原始数据库中取数,数据指标字段不统一,数据质量低。

    因此急需提升数据质量,搭建数据仓库,规范数据使用流程。

    本文中介绍的非功能性规范均为建议性规范,产品功能无强制,仅供指导。

    方案体验:https://demo.fanruan.com/

    2. 解决思路

    公司使用了 FineBI 集成 FineDataLink 「数据开发」模块。

    通过数据开发搭建数据仓库,将「简道云填报系统」中的表单数据和接口数据下云落库至指定数据库中;同时也将报表填报的人事数据取到同一数据库中,打破数据孤岛,生成数据仓库 ODS 层。

    使用 FineDataLink 进行数据清洗和整合计算,通过 ETL(Extract、Transform及Load)完成从 ODS 层到 DW、DM 层的数据处理,提升数据质量,同时输出满足业务需求的规整数据,输出至下游供给有使用需求的员工,让他们通过数据集市进行数据分析和看板制作。

    2.jpg

    3. 方案内容

    3.1 搭建 ODS 层数仓

    ODS 层,即数据引入层:存放未经过处理的原始数据至数据仓库系统,结构上与源系统保持一致,是数据仓库的数据准备区。

    此层级我们按照系统进行划分:「简道云系统」、「OA报表系统」

    • 将「简道云」表单应用中的行政后勤和薪资绩效表单数据通过配置简道云数据源 接入 FineDataLink 中,实现简道云数据下云,原表原样的将数据同步至指定的数据库。

    • 同时对于简道云的接口数据,也可通过数据同步-API 等方式实现数据同步。

    • 将「报表 OA系统」填报的数据(包括移动端和PC端)接入FineDataLink 中,原表原样将数据同步至指定的数据库。

    由于使用的是定时同步,因此需要根据数据量、数据更新频率等方式对数据同步设置更新方式。

    比如「部门职务表」、「员工信息表」等数据表数据量不大,且更新频率不高,因此可以使用清空后全量写入数据的更新方式;

    而「考勤记录表」、「请假明细表」数据量比较大,但是数据只会新增和修改,不会删除,因此可以根据 ID 字段进行比对更新;

    「办公资产录入」表数据量比较大,且可能会出现数据删除的情况,因此可以使用比对更新和比对删除进行数据更新。

    更多更新方式可参见:数据更新专题概述

    任务设计文档表如下图所示:

    模块ods_层任务名更新频率来源数据库来源表目标数据库目标数据表使用参数更新方式更新原因
    简道云系统ods_salary每天更新一次












    简道云数据源薪资基础表写_Data Warehouseods_salary

    /

    清空后全量写入

    首次更新,需要读取全量数据

    数据量不大

    ods_kpi简道云数据源绩效/职级录入表写_Data Warehouse

    ods_kpi

    /清空后全量写入

    数据量不大

    首次更新,需要读取全量数据

    ods_station

    简道云数据源


    办公工位录入

    写_Data Warehouse

    ods_station

    ods_station_id

    ods_station_aa

    ods_station_bb

    ods_station_cc

    比对更新

    比对字段 _id

    接口取数 循环取数 
    ods_materials简道云数据源办公资产录入写_Data Warehouseods_materials

    ods_materials_createTime

    ods_materials_deletetime

    比对更新

    比对删除

    数据量比较大

    OA报表系统





    ods_departmentMYSQL  FRDemoHr_部门职务表写_Data Warehouse

    ods_department

    /清空后全量写入首次更新,数据量不大 且更新频率不高 因此直接清空写入
    ods_employeeMYSQL  FRDemoHr_员工信息表写_Data Warehouseods_employee/清空后全量写入
    ods_positionMYSQL  FRDemoHr_岗位信息表写_Data Warehouseods_position/清空后全量写入
    ods_resignationMYSQL  FRDemoHr_离职转岗表写_Data Warehouseods_resignation/清空后全量写入
    ods_contractMYSQL FRDemoHr_员工合同信息写_Data Warehouseods_contract/清空后全量写入
    ods_recruitMYSQL FRDemoHr_招聘信息表写_Data Warehouseods_recruit/清空后全量写入
    ods_interviewMYSQL FRDemoHr_面试记录表写_Data Warehouseods_interview/清空后全量写入
    ods_attendanceMYSQL FRDemoHr_考勤记录表写_Data Warehouseods_attendance/

    比对更新

    比对字段 id

    数据量比较大
    ods_vacationMYSQL FRDemoHr_请假明细表写_Data Warehouseods_vacation/

    比对更新

    比对字段 id

    ods_workoutMYSQL FRDemoHr_出差明细表写_Data Warehouseods_workout/清空后全量写入

    3.2 搭建 DW 层数仓

    DW 层,即包括 DIM 维度表、DWD 和 DWS,由 ODS 层数据加工而成。主要完成数据加工与整合,建立一致性的维度,构建可复用的面向分析和统计的明细事实表,以及汇总公共粒度的指标。

    • 公共维度层(DIM):基于维度建模理念思想,建立整个数仓的一致性维度。降低数据计算口径和算法不统一风险。公共维度层的表通常也被称为逻辑维度表。

    比如某维度表中部门使用的是二级部门ID,而另一张数据表中使用的是部门2,这时候在 DW 层需要进行统一。

    • 公共汇总粒度事实层(DWS):以分析的主题对象作为建模驱动,基于上层的应用和产品的指标需求,构建公共粒度的汇总指标事实表,以宽表化手段物理化模型。构建命名规范、口径一致的统计指标,为上层提供公共指标,建立汇总宽表、明细事实表。公共汇总粒度事实层的表通常也被称为汇总逻辑表,用于存放派生指标数据。

    • 明细粒度事实层(DWD):以业务过程作为建模驱动,基于每个具体的业务过程特点,构建最细粒度的明细层事实表。可以结合企业的数据使用特点,将明细事实表的某些重要维度属性字段做适当冗余,即宽表化处理。

    此层级我们按照主题域进行划分:

    • 公共维度层(DIM):「dim_员工信息」

    任务设计文档表如下图所示:

    模块目标表dim_层任务节点更新频率来源表说明更新方式更新方式原因
    dim_员工信息

    dim_positiondim_position每天一次ods_position维度表

    清空后全量写入维表,数据量不大
    dim_employeedim_employeeods_employee清空后全量写入
    dim_departmentdim_departmentods_department清空后全量写入
    • 明细粒度事实层(DWD):「dwd_招聘」、「dwd_考勤」、「dwd_后勤」、「dwd_工资绩效」、「dwd_入离职」

    对于数据更新的策略,依然和 ODS 层中相同,详情参见:数据更新专题概述

    3.3 搭建 DM 层数仓

    DM 层,即数据应用层 ADS:存放数据产品个性化的统计指标数据,根据 DW 与 ODS 层加工生成。

    此层级中依据DW 与 ODS 层进行数据合并、计算,产出了「基础员工信息宽表」、「员工信息&办公工位」等宽表,「二级部门员工人数」等指标数据表,生成数据集市。

    3.4 配置调度任务

    对于已经搭建好的数据仓库,由于使用的是定时任务,因此需要设置调度配置,来实现数据的定时更新。

    对于数据仓库的调度任务,设置每一层的调度任务和总调度任务,以确保整个数仓的定时更新完整和秩序性。

    例如对于没有业务上下游关联的数据,可以使用并行排布的方式进行执行更新,提高运行效率,如下图所示:

    而对于有业务上下游关联的数据,则需要使用串联方式进行更新,确保上下游之间的更新时间和秩序,如下图所示:

    3.5 数据输出

    对于 DW 和 DM 层数据,可以将其直接输出至 BI 系统中,便于自助分析使用。

    同时 FineReport 也可以从 DW 和 DM 层数据库中取数进行看板制作。


    附件列表


    主题: 最佳实践
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持