1. 概述
1.1 版本
FineDataLink 版本 | 功能变动 |
---|---|
4.0.26 | 新增「文件输出」算子,可将数据输出为 CSV 类型的文件 |
4.0.30 | 可将数据输出为 Excel 类型的文件 |
4.1.4 | 数据输出为 CSV 格式时,输出的文件名后缀支持自定义,例如:txt、log、tsv等 |
4.2.10.3 | 1)新增支持输出数据到自定义类型文件 2)若选择文件输出到 Excel 文件:
3)字段映射中,支持修改字段名,修改字段类型 |
1.2 应用场景
用户希望将加工后的数据以文件形式分享给业务人员直接查看使用。
银行体系下,不允许直连数据库或开放接口,需要以文件形式下发数据给其他关联业务系统使用。
政企分享数据的过程中,需要将数据以文件形式留档。
对接部分大数据数据源时,需要 FDL 写数据文件,然后数据源通过读取文件的形式高速装载数据。
输出数据到自定义类型文件,单行单列的 XML/JSON 格式数据可直接原样输出为对应文件供后续的操作。
将输出的数据按行数拆分至多个 sheet ,适用于大数据量的文件输出场景。
「文件输出」算子可满足上述场景。
1.3 功能简介
「文件输出」算子可将处理后的数据输出到指定目标与路径的结构化文件中。如下图所示:
注:若数据不需要进行复杂处理,可使用 数据同步 节点将数据输出为文件形式。
2. 前提条件
若需要将文件输出到 FineDataLink,需要新建一个「服务器本地目录」数据连接,并将要读取的文件放到%FDL%/webroot/WEB-INF/local_files/路径下,并且有该数据连接的使用权限。具体请参见:配置服务器本地目录数据连接
若需要将文件输出到 FTP/SFTP 服务器中,需要配置 FTP/SFTP数据连接,并且有该数据连接的使用权限。具体请参见:配置FTP/SFTP数据连接
3. 功能说明
注:避免多个任务/节点同时写入同一文件。
3.1 数据输出到 CSV 文件中
设置界面如下图所示:
3.1.1 文件目标
文件输出的位置。可将文件输出到「FTP/SFTP 服务器」中或者「服务器本地目录」中。
3.1.2 文件类型
支持数据输出为 CSV/Excel 类型的文件。
3.1.3 文件夹地址
选择文件输出目录,将以「数据连接」中所选路径作为写入目录;不允许为空;支持使用参数。
3.1.4 文件名
1)填写文件名称:支持填写参数;不允许为空。
2)4.1.4 及之后版本,文件名后缀支持自定义,可输入:txt、log、tsv等,不区分字母大小写,可以为空。如下图所示:
3.1.5 列分隔符
注:列分隔符、文本限定符、行分隔符彼此不可重复。
根据指定的列分隔符,分隔数据为多列。
分隔符可选择:英文逗号,、制表符\t、英文分号;、管道符|、空格、ASCII字符、自定义
ASCII字符:可以手动输入十进制的 ASCII 编码,指定 ASCII 字符作为特殊的列分隔符。支持的十进制 ASCII 编码为 0~32。
十进制 ASCII 编码为 0~32 的含义如下表所示: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
3.1.6 行分隔符
指定 CSV 文件中的行分隔符
CR+LF(在 Windows 系统中使用)
LF(在 Unix、Linux 等系统中使用)
CR(在早期的 Mac OS 系统中使用)
3.1.7 文本限定符
用于标识数据值的开始和结束,以避免数据中包含的特殊字符干扰 CSV 文件的解析。
可选择指定、自定义、无,如下图所示:
指定:可选择双引号""、单引号''
自定义:可以手动输入十进制的 ASCII 编码,指定 ASCII 字符作为特殊的文本限定符。支持的十进制 ASCII 编码为 0~32,具体含义可见本文 3.1.5 节内容。
3.1.8 编码
指定 CSV 文件编码,编码可选择 GBK、BIG5、ISO-8859-1、UTF-8、UTF-16、EUC_JP、EUC_KR、CP850。
3.1.9 首行输出字段名
勾选时,将字段名写入文件第一行;不勾选时,则直接将数据写入文件第一行。
3.1.10 文件拆分
「文件拆分」适用于大数据量的文件输出场景,例如数据量超过 Excel 支持的最大行数上线时,使用此功能将按行数拆分数据。
详情参见本文 3.2.2 节
3.1.11 文件重名策略
指同一文件夹中,文件不能重名。
有三种:
文件重名,停止写入并报错
文件重名,追加写入数据:若指定 sheet 名在目标文件已经存在,则追加写入对应 sheet;否则新增 sheet 写入
注:4.2.10.3 之前版本,若选择文件输出到 Excel 文件,「文件重名策略」无法选择「文件重名,追加写入数据」。
文件重名,覆盖目标文件数据:将修改已有目标文件,请谨慎确认文件路径
3.1.12 字段映射
4.2.10.3 之前版本中,字段匹配时,展示的目标字段类型固定为 string,不允许修改。实际写入时,各数据类型的处理逻辑见:历史版本
4.2.10.3 及之后版本,支持重命名字段、更改字段类型。界面如下图所示:
字段类型默认映射逻辑如下表所示,无法支持的类型则统一为 string。
原始类型 | 输出类型 |
---|---|
null | 空字符串 |
int | int |
double | double |
float | float |
long | string |
decimal | decimal |
BigInteger | BigInteger |
BigDecimal | BigDecimal |
boolean | boolean |
date | date |
string | string |
timestamp | timestamp |
any | string |
vachar | vachar |
「文件输出」算子前一算子的预览效果与输出值相同。用户如果有格式化的需求,可以在前置计算过程中通过公式完成日期和数字的格式化,以文本输出时,格式化的结果也会原样保留。
3.2 输出数据到 Excel 文件
设置界面如下图所示:
Excel 单文件支持的数据量说明:
Excel 2003 和更早版本: 单个工作表最多支持 65536 行和 256 列。
Excel 2007 和更新版本: 单个工作表最多支持 1048576 行和 16384 列。
注:目前文件输出的 Excel 格式为 xlsx 。
3.2.1 Sheet 名
填写要写入的 Sheet 名,不填写时则使用默认的 Sheet 名称;支持使用参数。
3.2.2 文件拆分
「文件拆分」适用于大数据量的文件输出场景,例如数据量超过 Excel 支持的最大行数上线时,使用此功能将按行数拆分数据。
注 :4.2.10.3 及之后版本,新增支持将数据按行数拆分至多个 sheet。
文件命名说明:
数据(包括勾选「首行输出字段名称」后生成的字段名称行)每满足指定行数时,将生成一个新文件,同时自动在文件名后追加"_1、_2..."后缀。
Sheet 命名说明:
如果指定了 Sheet 名,则自动在 Sheet 名后追加”_1”、”_2"后缀
如果未指定 Sheet 名,则使用“Sheet1”、"Sheet2"等默认 Sheet 名
注意事项:
1)如果没有勾选文件拆分,文件写入到达 Excel 上限,则直接后端报错处理。
2)如果勾选了「首行输出字段名」按钮,文件拆分后,每个拆分的文件或者 Sheet 仍将首行设置为输出字段名称。
3)当前文件拆分逻辑基于输入端拆分,如果文件重名策略选择了追加写入到同一个sheet,目标sheet的存量数据不会算入按行数拆分的数据量中,这种情况,实际文件数据量会大于指定的拆分行数。
3.2.3 其他设置项
具体介绍请参见本文 3.1 节内容。
3.3 输出数据到自定义类型文件
4.2.10.3 及之后版本,新增支持输出数据到自定义文件类型,例如 xml、json 文件。若用户数据实际为 xml 文件,可使用此功能原样输出文件。
设置界面如下图所示:
配置项 | 说明 |
---|---|
文件夹地址 | 详情参见本文 3.1.3 节 |
文件名 |
|
值来源 |
|
编码 | 详情参见本文 3.1.8 节 |
文件重名策略 | 详情参见本文 3.1.11 节 |
4. 特殊场景处理策略
场景 | 处理策略 |
---|---|
文件写入时已有同名文件 | 按照节点配置的文件重名策略执行冲突处理 |
写入 CSV 文件的数据中存在 NULL/空字符串 | NULL:按照空值写入,不使用文本限定符封闭,例如("a",,"b","c") 空字符串:按照空字符串写入,使用文本限定符封闭。例如("a","","b","c") |
写入 CSV 文件的数据中存在换行 | 通过文本限定符封闭,正常保留换行 |
写入Excel中含有图片、图标等非字符类型数据 | 尝试转换为字符串进行写入,如果转换失败则抛错处理 |
5. 示例
「文件输出」算子的简单使用请参见:文件输出典型示例