页面树结构
转至元数据结尾
转至元数据起始

问题现象

使用ETL的Excel文件上传功能,英文括号会两个双引号,见下图


原因

数据源节点使用的excel节点。由于可能存在xss攻击问题,excel节点对于单元格内的一些特殊字符进行转义处理,其中就包括英文的括号。因此英文括号转义后会变成双引号,需用双引号来过滤;而中文括号不在特殊字符范围内,故可以筛选出来。

处理方案

可以采用以下三种方案进行规避处理:
方案一、先在excel上面用中文的括号来代替英文的,然后重新上传excel文件,后面再使用预处理节点把中文的括号替换回英文括号(如需要的話,不需要则无需再处理回英文括号);
方案二、用BI的excel文件数据源,将excel数据落到一张表中,然后ETL用关系数据源节点来读这张表;
方案三、用【数据清理】节点的正则替换(相关表达式:"([^"]*)"$),将引号转回括号,具体如下图。



  • 无标签

评论

  1. 王明星 发表:

    【方案三】只适用于当前截图中的数据(右侧括号后面没有数据的),不适用于括号右侧存在数据的,括号右侧存在数据的实现如下(仅供参考):

    数据是这样的:

    数据处理:使用spark sql函数处理Spark SQL函数说明,增加两个派生列

    第一个派生列:split([_c2], '""', 3)[0]

    第二个派生列:concat_ws(')', concat_ws('(', [part_1], [part_2]), [part_3])

    选择输出新的列即可