配置脚本模式输入组件

更新时间:2025-04-15 06:37:34

脚本模式组件用于配置系统组件不支持的配置项,以满足业务场景。

操作步骤

  1. Dataphin首页顶部菜单栏,选择研发 > 数据集成

  2. 在集成页面顶部菜单栏选择项目(Dev-Prod模式需要选择环境)。

  3. 在左侧导航栏中单击离线集成,在离线集成列表中单击需要开发的离线管道,打开该离线管道的配置页面。

  4. 单击页面右上角的组件库,打开组件库面板。

  5. 组件库面板左侧导航栏中需选择输入,在右侧的输入组件列表中找到脚本模式输入组件,并拖动该组件至画布。

  6. 单击脚本模式输入组件卡片中的image图标,打开脚本模式输入配置对话框。

  7. 脚本模式输入配置对话框,配置参数。

    参数

    描述

    参数

    描述

    步骤名称

    即脚本模式输入组件的名称。Dataphin自动生成步骤名称,您也可以根据业务场景修改。命名规则如下:

    • 只能包含中文、字母、下划线(_)、数字。

    • 不能超过64个字符。

    数据源类型

    选择数据源类型。

    数据源

    选择相应的数据源实例。

    生成同步配置文件

    单击生成同步配置文件,系统将自动根据所选的数据源类型,在右侧配置文件区域生成配置JSON的模板,您可根据实际业务需求删减配置项或修改配置项的值。

    配置文件

    模板配置中主要由三部分组成:

    • tabletables:输入组件的单输入表和多输入表。多输入表的key值为tables,单输入表的key值为table。如果组件不涉及表,则没有该参数。

    • column:输入表的输入字段,字段至少有nametype

    • parameter:同步配置相关的参数,数据源不同则配置不同,组件参数请参见对应组件的说明。

    {
      "table":"tableName",// "tables":["tableName"]
      "column":[{
        "name":"",
        "type":""
      }],
      "parameter":{}
    }
  8. 单击确认,完成脚本模式输入组件的属性配置。

最佳实践

脚本模式组件采用配置JSON的方式来配置离线集成任务,其主要使用场景包含:

  • 使用无法白屏配置的组件高级配置项。

  • 当元数据不支持(例如查表、查字段时出现错误或不可用),需手动配置相关表及字段。

  • 解决关键字问题,例如表名、字段名等特殊关键字。

  • 使用数据库函数。

  • 分库分表。

  • 直接使用查询SQL。

下文将以同步MySQL多表JOIN的结果数据为例进行说明,其他场景均可参照本例进行配置。

一:配置介绍

脚本模式输入配置对话框中,配置参数。

参数

描述

参数

描述

步骤名称

输入脚本模式输入组件的名称。

数据源类型

选择MySQL

数据源

选择相应数据源实例。

生成同步配置文件

单击生成同步配置文件,系统将自动根据所选的数据源类型,在右侧配置文件区域生成配置JSON的模板,您可根据实际业务需求删减配置项或修改配置项的值。

配置文件

模板配置中主要由三部分组成:

  • table:配置输入表,若为多表,可以仅输入其中一个表。

  • column:输入表的输入字段,字段至少有nametype两个值。部分输入组件可能还需输入字段在字段列表中的索引位置,即index的值。

  • parameter:同步配置相关的参数,数据源不同则配置不同,组件参数请参见对应组件的说明。

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

    }
}

二:组件使用

不同使用场景,组件的使用示例如下。

使用查询SQL
分库分表
使用函数
关键字

例如,同步一个多表JOIN的结果数据或其他自定义SQL取数,配置文件内容如下。

{
    "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,即多个数据库连接。

分库分表是指在表结构一致的前提下,数据分布在多个数据库和多个表中。

  • 使用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"
                    ]
                },
                {
                    "jdbcUrl": [
                        "jdbc:mysql://ip:3306/dataphin"
                    ],
                    "querySql": [
                        "select id,name from sff_id_name"
                    ]
                }
            ]
        },
        "column": [
            {
                "name": "id",
                "type": "Long"
            },
            {
                "name": "name",
                "type": "String"
            }
        ]
    }
  • 直接配置表名

    {
        "table": "sff_id_name1",
        "parameter": {
            "connection": [
                {
                    "table": [
                        "sff_id_name1","sff_id_name2"
                    ]
                },
                {
                    "jdbcUrl": [
                        "jdbc:mysql://xxx:3306/dataphin1"
                    ],
                    "table": [
                        "sff_id_name3","sff_id_name4"
                    ]
                },
                {
                    "jdbcUrl": [
                        "jdbc:mysql://xxx:3306/dataphin2"
                    ],
                    "table": [
                        "sff_id_name5","sff_id_name6"
                    ]
                }
            ]
        },
        "column": [
            {
                "name": "id",
                "type": "Long"
            },
            {
                "name": "name",
                "type": "String"
            }
        ]
    }

直接使用数据库支持的函数,比如使用MySQLupper函数。

{
  "tables":[
    "sff_id_name_2"
  ],
  "parameter":{
    "where":"id>0",
    "splitPk":"id"
  },
  "column":[
    {
      "name":"id",
      "type":"Long"
    },
    {
      "name":"upper(name)",
      "type":"String"
    }
  ]
}

根据数据库对关键字的处理,MySQL使用反引号(``)来标识关键字。例如,关键字为id,则可使用`id`

{
	"tables":[
		"sff_id_name_2"
	],
	"parameter":{
		"where":"id>0",
		"splitPk":"id"
	},
	"column":[
		{
			"name":"`id`",
			"type":"Long"
		},
        {
			"name":"upper(name)",
			"type":"String"
		}
	]
}
  • 本页导读 (0)
  • 操作步骤
  • 最佳实践
  • 一:配置介绍
  • 二:组件使用
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等