刚来公司一个月,老板就让我负责了公司数据仓库的建设,但我一点思路都没有这可咋整!
在了解公司人事部门和行政部门的相关数据存在数据孤岛的问题后,我决定从人事系统入手。目前公司的数据还存在一些问题亟待解决:
1.员工基础信息均存储在人事部门搭建的OA系统中,对于行政部门系统录入的后勤和薪资绩效管理数据而言,无法与员工信息、考勤等数据进行联合分析。
2.同时,公司希望制作报表看板、进行业务的自助数据分析,通过数据反哺业务,降本增效,而当前公司没有统一的数据源,都是通过 IT 直接在原始数据库中取数,数据指标字段不统一,数据质量低。
因此急需提升数据质量,搭建数据仓库,规范数据使用流程。
通过自学,我掌握了一些关键工具,如FineDataLink,它帮助我轻松实现了数据仓库的搭建。今天,我想分享一下我在这个过程中积累的经验和心得,希望能对大家有所帮助。
那到底如何搭建呢?只需以下五个步骤,下面我们一起来看下:
1.搭建 ODS 层数仓
ODS 层,即数据引入层:存放未经过处理的原始数据至数据仓库系统,结构上与源系统保持一致,是数据仓库的数据准备区。
此层级我们按照系统进行划分:「简道云系统」、「OA报表系统」
- 将「简道云」表单应用中的行政后勤和薪资绩效表单数据通过配置【简道云数据源】接入 FineDataLink 中,实现简道云数据下云,原表原样的将数据同步至指定的数据库。配置简道云数据源- FineDataLink帮助文档https://help.fanruan.com/finedatalink/doc-view-191.html
- 同时对于简道云的接口数据,也可通过【数据同步-API】等方式实现数据同步。数据同步-API- FineDataLink帮助文档https://help.fanruan.com/finedatalink/doc-view-8.html
- 将「报表 OA系统」填报的数据(包括移动端和PC端)接入FineDataLink 中,原表原样将数据同步至指定的数据库。
由于使用的是定时同步,因此需要根据数据量、数据更新频率等方式对数据同步设置更新方式。比如「部门职务表」、「员工信息表」等数据表数据量不大,且更新频率不高,因此可以使用清空后全量写入数据的更新方式;而「考勤记录表」、「请假明细表」数据量比较大,但是数据只会新增和修改,不会删除,因此可以根据 ID 字段进行比对更新;「办公资产录入」表数据量比较大,且可能会出现数据删除的情况,因此可以使用比对更新和比对删除进行数据更新。
2.搭建 DW 层数仓
DW 层,即包括 DIM 维度表、DWD 和 DWS,由 ODS 层数据加工而成。主要完成数据加工与整合,建立一致性的维度,构建可复用的面向分析和统计的明细事实表,以及汇总公共粒度的指标。
此层级我们按照主题域进行划分:
- 公共维度层(DIM):基于维度建模理念思想,建立整个数仓的一致性维度。降低数据计算口径和算法不统一风险。公共维度层的表通常也被称为逻辑维度表。
公共维度层(DIM):「dim_员工信息」
任务设计文档表
- 明细粒度事实层(DWD):以业务过程作为建模驱动,基于每个具体的业务过程特点,构建最细粒度的明细层事实表。可以结合企业的数据使用特点,将明细事实表的某些重要维度属性字段做适当冗余,即宽表化处理。
明细粒度事实层(DWD):「dwd_招聘」、「dwd_考勤」、「dwd_后勤」、「dwd_工资绩效」、「dwd_入离职」
3.搭建 DM 层数仓
DM 层,即数据应用层 ADS:存放数据产品个性化的统计指标数据,根据 DW 与 ODS 层加工生成。
此层级中依据DW 与 ODS 层进行数据合并、计算,产出了「基础员工信息宽表」、「员工信息&办公工位」等宽表,「二级部门员工人数」等指标数据表,生成数据集市。
4. 配置调度任务
对于已经搭建好的数据仓库,由于使用的是定时任务,因此需要设置调度配置,来实现数据的定时更新。对于数据仓库的调度任务,设置每一层的调度任务和总调度任务,以确保整个数仓的定时更新完整和秩序性。
例如对于没有业务上下游关联的数据,可以使用并行排布的方式进行执行更新,提高运行效率,如下图所示:
而对于有业务上下游关联的数据,则需要使用串联方式进行更新,确保上下游之间的更新时间和秩序,如下图所示:
5.数据输出
对于 DW 和 DM 层数据,可以将其直接输出至 BI 系统中,便于自助分析使用。
同时 FineReport 也可以从 DW 和 DM 层数据库中取数进行看板制作。
以上就是我在搭建人事系统数据仓库中的思路和经验了,希望对您有所帮助,更多详情可以点击FineDataLink官网咨询。
ETL/ELT|数据融合|数据清洗-FineDataLink数据集成平台