数据集成模块中如何配置脚本模式输入组件

作者:终古


1 组件简介

脚本模式组件采用的是配置json的方式配置同步任务。

主要使用场景:

    • 当表单模式透出的配置参数无法支持同步场景诉求:
      • 比如mysql等数据库输入组件读取多表join等任何复杂sql的结果
      • 比如读取一些数据库的元数据表
      • 比如某些组件需要一些额外的配置
      • 比如表、字段存在关键字,表单模式组件无法处理
    • 配置项比较复杂,目前dataphin自定义组件UI不支持时

本文将介绍如何同步Mysql 多表join的结果数据作为示例,其余场景均可参照此例的配置。

2 组件配置介绍

数据集成模块中如何配置脚本模式输入组件

如上图所以,依次操作选择数据源类型、数据源、生成同步配置文件

  • 数据源类型

dataphin离线数据集成支持的数据源以及自定义数据源

  • 数据源实例

相应的数据源实例

  • 生成同步配置文件

会根据所选的数据源类型生成配置json的模板,可根据自己的业务需求删减配置项、修改配置项的值

  • 模版配置说明

主要有三部分组成: table、column、parameter

{
    "table":"tableName",
    "column":[
        {
            "name":"",
            "type":""
        }
    ],
    "parameter":{
    }
}


    • table

配置输入表,多表情况可以只写一个表

    • column

作为输入表的输入字段,为了能让其下游组件后去输入字段及类型,所以要求字段对象至少具备 name 和 type 两个值,有些输入组件可能需要字段在字段列表中的索引位置 index。

    • parameter

同步配置相关的参数,数据源不通配置不同

3 组件使用

本节,将介绍同步mysql(所有rdbms数据库都支持) 多表join的结果数据至odps。

join sql:

select a.id, b.name
from sff_id_name a
         join sff_id_name_1 b on a.id = b.id


3.1 rdbms数据库-querySql

数据集成模块中如何配置脚本模式输入组件

  • 配置内容:
{
    "table": "sff_id_name",
    "parameter": {
        "connection": [
            {
                "querySql": [
                    "select a.id, b.name from sff_id_name a join sff_id_name_1 b on a.id = b.id"
                ]
            }
        ]
    },
    "column": [
        {
            "name": "id",
            "type": "Long"
        },
        {
            "name": "name",
            "type": "String"
        }
    ]
}


配置如上图所以,对于使用复杂的sql,则需要使用querySql配置项,该配置项是个字符串数组,即支持多个结构一致的select语句。且该配置项必须嵌套在connection中,可以看到connection也是个数组,也说明了是支持多个connection,即多个数据库连接。

  • 预览结果:

数据集成模块中如何配置脚本模式输入组件

3.2 rdbms数据库-connection

如上所述,支持多个数据库连接,比如我有一张表,分布在多个数据库下,想一次性读取,那使用这种方式也是可以的。但前提是多个数据库连接的用户名、密码相同。

{
    "table": "sff_id_name",
    "parameter": {
        "connection": [
            {
                "querySql": [
                    "select a.id, b.name from sff_id_name a join sff_id_name_1 b on a.id = b.id"
                ]
            },
            {
                "jdbcUrl": [
                    "jdbc:mysql://xxxxxxxxxx.mysql.rds.aliyuncs.com:3306/dataphin"
                ],
                "querySql": [
                    "select id,name from sff_id_name"
                ]
            }
        ]
    },
    "column": [
        {
            "name": "id",
            "type": "Long"
        },
        {
            "name": "name",
            "type": "String"
        }
    ]
}


如上所示,多个数据库连接,第一个可以不配置jdbcUrl,这个会使用数据源配置的url,第二个开始便需要配置jdbcUrl,每个连接配置自己的querySql,但一定要保持select 字段名称、顺序、类型一致。

当然,多connection既支持querySql也支持直接配置表,直接使用"table":["tab1","tab"2]即可。注意querySql和table不能同时配置,只能选择一种

4 总结

脚本模式输入输出组件比较强大、灵活。使用的前提是对json的配置比较了解,尤其是了解每个数据源的配置项格式。

也就是说,每个数据源其实有很多配置项,这些配置项有的是用于性能,有的是用于业务,这些配置可以参见脚本模式输入输出组件的右上角的"组件说明"。这里也介绍了组件的脚本模式配置模板及常见配置参数

数据集成模块中如何配置脚本模式输入组件

上一篇:数据集成模块转换组件之过滤组件介绍


下一篇:懒人的小技巧, 批处理修改IP