作者:终古
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的配置比较了解,尤其是了解每个数据源的配置项格式。
也就是说,每个数据源其实有很多配置项,这些配置项有的是用于性能,有的是用于业务,这些配置可以参见脚本模式输入输出组件的右上角的"组件说明"。这里也介绍了组件的脚本模式配置模板及常见配置参数