跳转至
开发版采用单机部署,无需产品 License 文件。需要多机部署或大规模性能测试? 了解企业版

预处理配置

本文介绍将数据导入悦数图数据库开发版时可选的数据预处理配置。

配置示例

sources: [
  {
//    type:"hdfs"
//    format:"csv"
//    header:false
//    separator:","
//    path: "hdfs://127.0.0.1:9000/import_movie/sub_movie.csv"
    pre_processes: {
        concat: [
          {
            oldFields: [a, b]
            newField: "ab"
            splicer: "_"
          }
        ]
        separate: [
          {
            oldField: "aaa"
            newFields: [a, b]
            sep: "&"
          }
        ]
        filter: ["age>=10 AND firstName=='Tom' OR lastName!='Li'", "aa>='ss'"]
        concatConstant: [
          {
            field: "name"
            prefixValue: "test_"
            suffixValue: "_test"
          }
        ]
        newConstantColumn: [
          {
            field: "newColumn"
            value: "AAA"
          }
        ]        
        nonValue: ""
        udfSql: "select * from $exchange"
      }
//    nodetypes: []
//    edgetypes: []
  }
]

配置项

选项 描述 类型 是否必选 默认值
pre_processes.concat 将多个字段连接为一个新字段。 List 否 无
pre_processes.concat.oldFields 要连接的旧字段列表。 List 否 无
pre_processes.concat.newField 连接后创建的新字段的名称。 String 否 无
pre_processes.concat.splicer 用于连接旧字段的拼接符。 String 否 无
pre_processes.separate 将一个字段分割为多个字段。 List 否 无
pre_processes.separate.oldField 要分割的旧字段的名称。 String 否 无
pre_processes.separate.newFields 分割后创建的新字段列表。 List 否 无
pre_processes.separate.sep 用于分割旧字段的分隔符。 String 否 无
pre_processes.filter 过滤数据的条件。过滤条件中的字符串值必须用英文单引号括起来。 List 否 无
pre_processes.concatConstant 将字段与常量连接。 List 否 无
pre_processes.concatConstant.field 要与常量连接的字段名称。 String 否 无
pre_processes.concatConstant.prefixValue 作为前缀的常量值。 String 否 无
pre_processes.concatConstant.suffixValue 作为后缀的常量值。 String 否 无
pre_processes.newConstantColumn 添加新的常量字段。 List 否 无
pre_processes.newConstantColumn.field 新字段的名称。 String 否 无
pre_processes.newConstantColumn.value 新字段的常量值。 String 否 无
pre_processes.nonValue 用于替换 NULL 值的值。 String 否 无
pre_processes.udfSql 用于数据预处理的 Spark SQL 语句。此语句必须遵循格式select <custom_statement> from $exchange <custom_statement>,其中<custom_statement>是自定义的 SQL 语句。例如,select LENGTH(ab) as ab, REVERSE(newColumn) as newColumn from $exchange。
若要查看常用的 SQL 操作,请参见 SQL 参考。
String No N/A

预处理顺序

若设置了所有配置项,则按照以下顺序执行:concat->separate->filter->concatConstant->newConstantColumn->nonValue->udfSql。

SQL 参考

悦数数据迁移支持使用 Spark SQL 在数据导入时进行数据处理。本章节列举了常用的 SQL 操作供您参考。

Note

所有 SQL 语句必须遵循格式select <custom_statement> from $exchange <custom_statement>,其中<custom_statement>是自定义的 SQL 语句。

运算符/函数 示例 描述
current_timestamp select *, current_timestamp as current_time from $exchange 添加一个名为current_time的新字段,并将其值设置为当前时间戳。
current_date select *, current_date as current_date from $exchange 添加一个名为current_date的新字段,并将其值设置为当前日期。
least和greatest select *, least(col1,col2) as new_col from $exchange 添加一个名为new_col的新字段,并将其值设置为col1和col2中较小的值。
=、!=、>、<、>=、<=、<> select * from $exchange where col1='abc' 过滤出col1的值为abc的行。
IS NULL、IS NOT NULL select * from $exchange where col1 IS NULL 过滤出col1的值为NULL的行。
LIKE、NOT LIKE select * from $exchange where col1 LIKE '%abc%' 过滤出col1的值包含abc的行。
LIKE ALL、NOT LIKE ALL select * from $exchange where col1 LIKE ALL('%abc%','%ABC%') 过滤出col1的值同时包含abc和ABC的行。
LIKE ANY、NOT LIKE ANY select * from $exchange where col1 LIKE ANY('%abc%','ABC%') 过滤出col1的值包含abc或以ABC开头的行。
AND、OR select * from $exchange where col1<10 AND col2>20 过滤出col1的值小于10且col2的值大于20的行。
NVL select *, NVL(col1, 10) as new_col from $exchange 添加一个名为new_col的新字段,并在col1的值不为NULL时将其值设置为col1的值;否则将其值设置为10。
COALESCE select *, COALESCE(col1,col2) as new_col from $exchange 添加一个名为new_col的新字段,并在col1的值不为NULL时将其值设置为col1的值;否则将其值设置为col2的值。
LENGTH select *, LENGTH(col1) as new_col from $exchange 添加一个名为new_col的新字段,并将其值设置为col1的值的长度。
CONCAT select *, CONCAT(col1,'abc') as new_col from $exchange 添加一个名为new_col的新字段,并将其值设置为col1的值和abc的拼接。
REVERSE select *, REVERSE(col1) as new_col from $exchange 添加一个名为new_col的新字段,并将其值设置为col1的值的反转。
LEFT、RIGHT select *, LEFT(col1,2) as new_col from $exchange 添加一个名为new_col的新字段,并将其值设置为col1的值的前两个字符。
SUBSTR select *, SUBSTR(col1,2,3) as new_col from $exchange 添加一个名为new_col的新字段,并将其值设置为col1的值的子字符串。该字符串从第二个字符开始,长度为3。
UPPER、LOWER select *, UPPER(col1) as new_col from $exchange 添加一个名为new_col的新字段,并将其值设置为col1的值的大写形式。
REGEXP_REPLACE select *, REGEXP_REPLACE(col1,'a','b') as new_col from $exchange 添加一个名为new_col的新字段,并将其值设置为col1的值中所有a替换为b后的结果。

关于 Spark SQL 的更多信息,请参见 Spark SQL 文档。