1 数据现状

目前人员考勤相关数据比较分散,具体如下:

2 方案说明

1、将数据同步、复杂sql处理等步骤放在数据开发平台中进行,对两个业务数据库中的表和接口数据进行如下处理:
1)将人员考勤相关数据原表原样同步至 qyyy_originaldata 应用库,形成ODS层数据;
2)对ODS层的请假、因公出差、异动补卡数据进行简单处理,并与ODS层的汉王考勤、接口数据关联处理,产生完整的考勤明细数据,并输出到 qyyy_originaldata 应用库,形成DW层数据。
3)对DW层数据按照总部考勤、分公司考勤、离职人员考勤进行汇总,产生考勤汇总数据,并输出到 qyyy_originaldata 应用库,形成DM层数据。
2、在数据开发平台中,通过将任务设置为周期调度,保证该数据定时更新到 qyyy_originaldata 应用库。
3、使用 lczreport 设计器连接 qyyy_originaldata 应用库,使用简单SQL语句进行取数后,制作报表。

3 实现步骤

3.1 数据源准备

从“数据现状”可以看出数据来源包括:OA系统、汉王系统、接口,并且要将业务数据同步至指定应用库中(企业运营管理,即数据仓库),因此,需要创建三个数据连接和一个数据集(http查询数据视图)。
1、创建数据连接
系统管理员登录系统,进入“数据开发演示”应用,点击“数据连接管理”选择对应的数据库类型进行对应数据库连接的配置,创建[OA]、[汉王]和[企业运营管理]三个数据连接,如下图:

2、创建数据集
进入设计器,选择“数据开发演示”应用,创建“http查询”数据视图,通过接口获取考勤数据,如下图:

3.2 数据开发

3.2.1 构建ODS层数据

ODS 层,即数据引入层:存放未经过处理的原始数据至数据仓库系统,结构上与源系统保持一致,是数据仓库的数据准备区。
根据业务要求,需要将需要使用的业务数据均同步至指定数据库(qyyy_originaldata),具体如下:
1、数据库数据同步
将数据现状表格中[汉王系统]和[OA系统]对应的表进行同步,以“汉王考勤表”为例,实现步骤如下:
针对大数据量数据,为保证数据的时效性,同时避免每次全量更新数据造成的大数据量读写对数据库造成的压力,缩短更新时间,采用每月定时更新前一个月的数据。
添加[数据同步]组件“汉王考勤”,进行数据来源和数据去向配置。
1)数据来源配置

选择对应的数据连接和数据库表,数据过滤中直接写“where”后面的SQL语句即可,业务中需要查询前一个月的数据。
点击“数据预览”可查看对应的数据,如下图:

此处最多可以查看前1000条数据。
2)数据去向配置

数据去向是配置读取的数据同步至哪个数据库中的哪张表,配置好源表和目标表的映射关系以及写入方式即可。
目标表可以选择已存在的表,也可以选择“自动建表”输入表名、表描述、字段信息,点击“手动建表”进行建表操作。如下图:

由于近一个月的考勤数据量较大,写入模式如果选择“更新/插入”方式会影响效率,因此选择“追加”方式,因为这一个月内可能会产生一些数据,需要先清除目标表对应时间的数据再插入的方式。
那么就需要在数据同步节点前增加一个[SQL脚本]组件实现数据清除的功能。如下图:

到此,运行该节点,“汉王考勤”的近一个月的考勤数据就可以从[汉王系统]同步 至qyyy_originaldata 应用库了。
以同样的方式,依次将请假、出差、异动补卡、异动补卡明细、流程基础的数据进行同步即可,对于数据量小的写入方式选择“插入/更新”方式,无需先删除数据直接同步即可。

2、接口数据同步
目前数据来源为接口时,只能通过“http查询”数据视图的方式获取接口数据,视图创建好之后,在数据开发平台添加[数据同步]节点“考勤接口”,数据来源的来源类型选择“数据集”并选择准备好的接口数据视图,并设置参数值获取从2024年1月1日开始的考勤数据,如下图:

数据去向配置同业务数据的配置,同步至 qyyy_originaldata 应用库。如下图:

3.2.2 构建DW层数据

将ODS层的考勤打卡、接口数据、请假、因公出差、异动补卡数据进行关联得到考勤明细汇总数据(即DW层数据)。具体步骤如下:
1、对请假数据进行简单处理,得到请假明细数据
1)请假数据与请假基础、人员信息关联产生请假明细数据
添加数据转换节点”请假流程明细”,与ODS层的[请假流程]和[请假基础]节点连接,因为需要等待这两张表的数据同步完成后再进行数据处理,如下图:

双击“请假流程明细”节点,进入设计界面,设计如下:

①[DB输入]节点“请假流程”:获取ODS层近一个月的请假数据,配置如下:

②[DB输入]节点“请假基础”:获取ODS层近一个月已归档的请假流程数据,配置如下:

③[DB输入]节点“人员信息”:获取ODS层最新人员信息,配置如下:

预览数据如下:

该数据是基础数据,同步操作参考“附:基础数据维护”章节说明。

④[SparkSQL]节点“请假流程汇总”,用于将请假流程、流程基础和人员信息关联查询出近一个月已归档的请假流程明细,配置如下图:

通过“数据预览”可查看最终处理后的数据,如下图:

可以看到,这里没有匹配的数据,因为多个输入聚合场景下,任务调试时是根据显示的数据进行匹配的(比如:A输入有200条数据,B输入有1000条数据,最终聚合时会以A的200条数据去与B的1000条数据去匹配,有可能会存在无匹配数据的情况,但任务实际执行时可能会有匹配的数据。)

注:任务调试时,若多个输入聚合没有匹配数据时,可在输入节点中增加过滤条件缩小范围,使聚合后能够有相关的匹配数据,调试好之后可以再将对应的过滤条件去除。

⑤[DB输出]节点“请假流程”,用于将处理好的请假明细数据输出到
qyyy_originaldata 应用库,配置如下图:

选择输出的目标数据连接、目标表,配置映射关系和写入模式。

2)将请假明细数据进行字段拆分
由于请假明细数据的请假时间是一个时间区间,想要把请假时间段以天为单位显示出上午/下午是否请假的明细数据,可以使用存储过程进行处理,在“请假流程明细”节点后连接一个[SQL脚本]节点“拆分请假明细”,选择该存储过程即可,如下图:

2、对因公出差数据进行简单处理,得到因公出差明细数据
同“请假流程”数据处理方式,先将因公出差流程与流程基础、人员信息关联产生因公出差明细数据,如下图:

再将因公出差明细数据拆分成以天为单位显示出上午/下午是否出差的明细数据,在“请假流程明细”节点连接一个[SQL脚本]节点“拆分因公出差明细”选择对应的存储过程,如下图:

3、对异动补卡数据进行简单处理,得到补卡明细数据
同“请假流程”数据的数据关联处理方式,将异动补卡流程与异动补卡明细、流程基础、人员信息、项目基本信息关联产生异动补卡明细数据,如下图:

4、将处理后的考勤相关数据进行关联处理,得到考勤明细汇总数据
添加[数据转换]节点“考勤明细汇总”,与“拆分请假明细”、“拆分因公出差明细”、“异动补卡明细”、“汉王考勤”、“考勤接口”节点进行连接,如下图:

双击进入设计界面,设计效果如下:

①四个[DB输入]节点,其中:
“请假流程”、“因公出差”和“异动补卡”节点分别获取是以上1、2、3步骤处理后的明细数据;
“考勤导入”节点获取的是ODS层接口数据;
“考勤打卡”节点获取的是ODS层汉王考勤数据。
②[SparkSQL]节点“考勤明细汇总”用于将处理后的请假明细、因公出差明细、异动补卡明细数据与ODS层汉王考勤、接口数据进行关联处理,按照考勤规则(比如:同一天上午有打卡和请假,优先显示“上午请假”)产生近一个月的考勤明细汇总数据(即DW层数据),如下图:

通过“数据预览”可查看最终处理后的数据,如下图:

③[DB输出]节点“考勤明细”,用于将处理好的请假明细数据输出到
qyyy_originaldata 应用库,配置如下图:

3.2.3 构建DM层数据

将DW层的考勤明细数据进一步处理后产生实际业务中需要使用的考勤汇总数据(即DW层数据)。具体步骤如下:
添加[数据转换]节点“考勤汇总”,与DW层“考勤明细汇总”节点进行连接,双击进入设计界面,设计效果如下:

需要先添加两个[DB输入]节点“考勤明细”和“每月人员表”,先获取到DW层最终产生的“考勤明细汇总”近一个月的数据和基础数据维护中处理后的DW层“人员信息转存”数据。
然后对其进行如下处理:
1、按照总部考勤制度产生总部考勤汇总数据
1)先获取总部人员考勤明细
SparkSQL节点“总部考勤汇总”连接两个输入节点,使用SQL语句进行关联处理得出总部人员的考勤明细数据,如下图:

2)按照总部考勤制度汇总考勤数据
按照总部的考勤制度(上班时间为“8:00-17:00”)与考勤打卡时间进行重新计算得出总部人员近一个月最终的考勤数据。

2、按照分公司考勤制度产生分公司考勤汇总数据
与总部考勤数据处理方式一样,按照分公司的考勤制度(上班时间为“8:30-17:00”)与分公司人员的打卡时间进行计算得出分公司人员近一个月最终的考勤数据。

3、按人员状态产生离职人员考勤数据汇总数据
先通过考勤明细与人员信息进行关联过滤出离职人员考勤,再根据分公司考勤制度计算出近一个月离职人员的考勤数据。

4、按类型汇总总部、分公司和离职人员数据并产生最终的考勤汇总数据(即DM层数据)
1)增加[SparkSQL]节点“类型汇总”,与“总部考勤汇总、分公司考勤汇总、离职人员考勤汇总”节点连接,将以上数据汇总在一张明细表中并增加类型进行区分,比如:总部考勤标记为1,分公司考勤为2,离职人员考勤标记为3,配置如下图:

预览数据效果如下:

2)增加[DB输出]节点,与“类型汇总”节点连接,将最终汇总的考勤汇总数据输出到qyyy_originaldata 应用库的“dm_kqhz”表中,产生DM层数据,如下图:

3.5 任务调试和发布

具体参考文档:任务调试和发布

3.6 调度及告警

按照业务要求,考勤数据是需要每月进行一次统计,因此,我们可以将该任务设置为周期任务进行定时调度执行任务,并且任务执行时希望能够及时通知相关人员进行处理。具体实现如下:
1、任务调度配置和任务运行日志查看
点击“运维中心”tab,进入“周期任务>调度管理”界面,点击”新建调度”创建调度,任务选择制作好的“每月考勤统计任务”,并设置开始时间以及执行频率(每月27号0点),如下图:

执行频率支持四种类型,可按需进行选择:
只执行一次:顾名思义,按照设置的开始时间去执行任务,仅执行一次,不重复执行;
简单重复执行:支持按周、天、时、分、秒进行时间间隔配置,任务执行后,按配置的间隔时间(比如间隔2天)到时间会重复执行任务;

自定义频率执行:当简单的间隔时间不能满足时,可自定义执行频率去执行任务,如下图:

CRON表达式:通过自定义CRON表达式的方式定义任务的执行频率,如下图:

注意:调度只能选择已发布的任务,支持选择多个任务,多个任务之间是并行执行的。

通过调度执行的任务运行情况,可进入“调度日志”查看该调度的任务运行情况,如下图:

点击对应调度的“查看详情”可查看该调度中对应任务的所有运行记录,包括运行开始时间、运行结束时间、耗时,运行状态等,如下图:

运行失败的可查看失败原因,如下图:

需要查看详细的运行日志信息,可点击某个任务运行记录的“查看详情”进行查看,如下图:

若想要手动重新运行该任务,可点击列表上或详情页面的“重试”按钮执行任务。
也可以通过“任务实例”菜单查看每个任务的运行记录,包括调度运行、手动运行和手动重试的。如下图:

2、告警规则配置和消息通知
点击“运维中心”tab,进入“监控告警>告警规则”界面,点击“新建规则”制作好的“每月考勤统计任务”,触发条件勾选“失败”,如下图:

若想要暂时停用该规则,可在列表上点击“禁用”操作,禁用后该规则将不再生效。
告警规则满足触发条件时需要发送告警通知,则点击“消息通知”进行消息配置,选择通知方式以及接收人,如下图:

该实例发送平台消息,勾选“平台消息”即可。
当该任务满足设置的告警规则中的触发条件时,将会发送平台消息给对应接收人,接收人登录系统后即可收到消息通知,如下图:

另外,还会产生告警记录,通过“告警信息”可查看,如下图:

点击“查看详情”可查看对应任务的运行日志信息,对于失败告警的任务方便进行原因排查。

3.6 数据应用

通过“数据开发平台”处理后的DM层“考勤汇总”数据,可直接用于报表制作,查看总部人员考勤、分公司人员考勤和离职人员考勤。效果如下图:
1、总部人员考勤

2、分公司人员考勤

3、离职人员考勤

作者:fancy  创建时间:2024-07-01 16:30
最后编辑:fancy  更新时间:2025-03-27 15:47