1. 概述
1.1 应用场景
某国有企业旗下有 100 多家分公司,子公司财务每月需要向总部提交各种财务预算和决算表,如资产负债表、利润表、现金流量表等数据表。总部财务需要手动对相同类型的财务报表进行数据汇总,并将其整理后向领导做出统一汇报。
现存问题:
总部财务手动汇总数据耗时较长,效率低下。
汇总的数据出问题,异常数据无法快速追踪。
本文提供方案,可自动化读取相同类型的文件,为企业降本增效。
1.2 实现思路
4.0.24 及之后版本,「文件输入」算子支持读取同格式的 Excel 和 CSV 文件。
1.3 任务展示
FineDataLink 中的数据处理过程,详情参见:https://demo.finedatalink.com/ 「数据转换-文件输入」。
2. 前提条件
1)本文示例步骤适用于 4.0.24 及之后版本。
2)本文方案是使用「文件输入」算子实现的,「文件输入」算子批量读取文件相当于一次性将所有文件数据上下合并。若用户需要循环多次读取文件数据,每次读取文件后对文件数据进行处理,可参考:循环多次读取Linux环境文件同步数据、循环多次读取Windows环境文件同步数据
3)需要满足条件:文件夹中的 Excel 文件需要字段名相同;文件夹中的 CSV 文件需要分隔符相同。
注:Excel 需要支持满足的版本为 97~ 最新版本
本文示例主要是通过「文件输入」算子实现的,文件输入算子的功能说明请参见:文件输入功能说明
3. 操作步骤
本文示例是从 FineDataLink 服务器上,批量读取 CSV 文件数据并汇总到数据库表中。
注:本文方案支持从 FineDataLink 服务器本地和 FTP/SFTP 服务器上读取 Excel 和 CSV 文件数据。
3.1 场景模拟
某公司每月会定时上传文件到 csv 文件夹中,这些文件数据最终定时手工汇总到数据库中的某张表中,存在效率低下和容易出错的问题。
本文示例中,csv 文件夹包含两个 csv 文件。文件数据如下图所示:
3.2 准备工作
1)在 /data/demo_FR/webroot/WEB-INF/assets/local_files 目录下新建 test 文件夹,每月将需要扫描的文件上传到 test 文件夹中。如下图所示:
注:由于要 新建服务器本地目录数据连接,从 FineDataLink 本地服务器上读取 CSV/Excel 文件数据,所以存放待扫描文件的文件夹需要在%FDL_HOME%/webroot/WEB-INF/assets/local_files 下。
2)新建一个服务器本地目录数据连接,服务器本地目录选择存放 test 文件夹的路径。
3.3 读取文件夹中数据
1)新建定时任务,添加「数据转换」节点,进入「数据转换」节点内。
2)新增「文件输入」算子,读取 FDL 工程中的 test 文件夹,其他设置项默认即可。如下图所示:
注:文件输入算子的各个设置项说明请参见:文件输入算子功能说明
3)点击「数据预览」,可看到 test 文件夹中的文件已被读取。如下图所示:
3.4 输出数据
1)添加「DB表输出」算子,将读取到的数据汇总到数据库表中。如下图所示:
2)写入方式选择「清空目标表,再写入数据」,将全部数据写入到目标表中。
3)运行任务。
4)可点击「发布」按钮,将任务发布到「生产模式」下。
3.5 设置定时调度
每月末汇总一次数据。如下图所示:
3.6 结果展示
summary 表数据如下图所示: