1. 概述
1.1 版本
FineDataLink 版本 | 功能变动 |
---|---|
4.0.26 | 新增「文件输出」算子,可将数据输出为 CSV 类型的文件 |
4.0.30 | 可将数据输出为 Excel 类型的文件 |
4.1.4 | 数据输出为 CSV 格式时,输出的文件名后缀支持自定义,例如:txt、log、tsv等 |
1.2 应用场景
用户希望将加工后的数据以文件形式分享给业务人员直接查看使用。
银行体系下,不允许直连数据库或开放接口,需要以文件形式下发数据给其他关联业务系统使用。
政企分享数据的过程中,需要将数据以文件形式留档。
对接部分大数据数据源时,需要 FDL 写数据文件,然后数据源通过读取文件的形式高速装载数据。
「文件输出」算子可满足上述场景。
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 文件拆分
1)勾选后将按行数拆分数据至多个文件,适用于大数据量的文件输出场景,例如数据量超过 Excel 支持的最大行数上限时,不拆分将无法写入。
2)数据(包括勾选「首行输出字段名称」后生成的字段名称行)每满足指定行数时,将生成一个新文件,同时自动在文件名后追加"_1、_2..."后缀。
3)如果没有勾选文件拆分,文件写入到达 Excel 上限,则直接后端报错处理。
4)如果勾选了「首行输出字段名」按钮,文件拆分后,每个拆分的文件或者 Sheet 仍将首行设置为输出字段名称。
5)当前文件拆分逻辑基于输入端拆分,若「文件重名策略」设置为文件重名,追加写入数据,目标文件的存量数据不会算入按行数拆分的数据量中,这种情况下,实际文件数据量会大于指定的拆分行数。
3.1.11 文件重名策略
注:若选择文件输出到 Excel 文件,「文件重名策略」无法选择「文件重名,追加写入数据」。
指同一文件夹中,文件不能重名。
有三种:
文件重名,停止写入并报错
文件重名,追加写入数据
文件重名,覆盖目标文件数据
3.1.12 字段映射
界面如下图所示:
1)字段匹配时,展示的目标字段类型固定为 string,不允许修改。
实际写入时,各数据类型的处理逻辑如下:
源头字段类型 | 目标文件中字段类型 |
---|---|
布尔 | 直接转字符串(真:true、假:false) |
日期时间 | yyyy-MM-dd HH:mm:ss格式的字符串 |
其他类型 | 字符串 |
「文件输出」算子前一算子的预览效果与输出值相同。用户如果有格式化的需求,可以在前置计算过程中通过公式完成日期和数字的格式化,以文本输出时,格式化的结果也会原样保留。
3.2 输出数据到 Excel 文件
设置界面如下图所示:
Excel 单文件支持的数据量说明:
Excel 2003 和更早版本: 单个工作表最多支持 65536 行和 256 列。
Excel 2007 和更新版本: 单个工作表最多支持 1048576 行和 16384 列。
注:目前文件输出的 Excel 格式为 xlsx 。
3.2.1 Sheet 名
填写要写入的 Sheet 名,不填写时则使用默认的 Sheet 名称;支持使用参数。
3.2.2 其他设置项
具体介绍请参见本文 3.1 节内容。
4. 特殊场景处理策略
场景 | 处理策略 |
---|---|
文件写入时已有同名文件 | 按照节点配置的文件重名策略执行冲突处理 |
写入 CSV 文件的数据中存在 NULL/空字符串 | NULL:按照空值写入,不使用文本限定符封闭,例如("a",,"b","c") 空字符串:按照空字符串写入,使用文本限定符封闭。例如("a","","b","c") |
写入 CSV 文件的数据中存在换行 | 通过文本限定符封闭,正常保留换行 |
写入Excel中含有图片、图标等非字符类型数据 | 尝试转换为字符串进行写入,如果转换失败则抛错处理 |