1、概述
读取文件数据主要有以下方式:
1)使用Excel导入模型:要根据模板导入,并且一次只能导入一个文件
2)数据源/ 加载文件数据: 一次只能导入一个文件
3)ETL的”FTP数据源"节点: 一次只能读取一个文件
而在V10.5.8版本中,支持一次性批量读取多个excel文件数据并且合并成大宽表存储到指定表中,业务人员无需重复导入,提高了其工作效率。
2、场景举例
零售行业,店面可能分布在不同的国家、城市里,每个店面每个月都会生成一份Execl文件数据,到了月底客户把所有店面的文件收集起来,统一存放在一个文件夹中;
客户要求文件夹下所有文件的数据落地整合成一份数据,然后再用于可视化分析;
2.1 操作步骤
2.1.1、准备ftp文件
先把excel、csv文件上传到ftp,如下图:
所有的文件内容格式要一致:
由于Foreach循环器只是读取文件的名称FileName和sheetName,真正要读取ftp数据是通过ETL节点“FTP数据源”,所以先要建立ETL资源
2.1.2、建立ETL资源读取、处理、存放数据
首先打开ETL,并且拖入“ftp数据源”节点,并且建立参数,如下图所示,定义参数fileName和sheetName;
参数一定要填写默认值,如果不填写默认值,会运行报错。
把定义好的参数配置到“FTP数据源”,如下图:
处理、加工数据、并且存储到指定表:
保存ETL资源并命名:hxy-2-文件。
2.1.3、在作业流中使用“Foreach 循环器”
在作业流中拖入“Foreach循环器”节点,选择“Foreach FTP文件枚举器”
在基础配置中配置ftp连接信息以及读取文件的路径、类型等
序号 | 选项 | 说明 |
---|---|---|
1 | Ftp服务器或主机名 | 必填 |
2 | Ftp服务器端口 | 必填 |
3 | 用户名 | 默认是匿名anyonymous,密码为空 |
4 | 目录路径 | 绝对路径 |
5 | 文件类型 | 目前只支持:execl、csv 2种类型 |
6 | 文件后缀 | 根据文件类型改变,也可以手动更改,比如execl,默认是.xls,可以改成.xlsx |
选择循环资源:循环资源可以是ETL资源也可以是作业流资源;我们选择之前建立的“hxy-2-文件”资源,如下图:
参数映射:“hxy-2-文件”资源定义好的参数名称(只有事先定义好,映射的时候才能选择),映射名列固定了FileName和SheetName;
顾名思义,FileName即是execl或csv的文件名称,SheetName是execl或csv里sheet名称
配置好之后,点击【确定】,运行节点,运行成功之后,可以查看到数据已经到了表中,如下图:
2.1.4、做可视化报表
基于目标表建立数据模型,如下图:
再基于该数据模型建立可视化分析:
3、场景举例
读取具体区间范围的数据;使用“Foreach Item 枚举器”实现
3.1 、操作步骤
3.1.1、建立读取数据的ETL资源
首先定义参数,如下图,需要设置默认值
拖入关系数据源,并且选好数据库和表名
写SQL语句+参数,获取想要的数据并插入到关系目标表;
3.1.2、作业流定义Foreach Item 枚举器
如下图,选择了“Foreach Item 枚举器”,在"基础配置"tab 添加列名,列名索引从0开始,依次自增:
数据行也可以自定义;可以删除行,也可以删除列;
“循环资源”tab选择3.1.1节定义好的资源
“参数映射”tab会根据“基础配置”上新增的列数,自动长出对应的映射列名;原则上有多少个列名必须有多少个参数;然后关联映射,就能读取“基础配置”的值到对应的“循环资源”
点击【确定】并且运行可以把根据参数追加到关系目标源中;其他的操作请参考2.1.4;
4、场景举例
参数值是根据SQL语句动态获取的,然后再根据参数值进行筛选数据,再进行可视化. 使用“Foreach 参数枚举器”实现。
其他的循环资源、参数映射可以参考“Foreach ftp文件枚举器”和“Foreach item枚举器”,运行逻辑是一致的。