数据映射
“数据映射”处理器用于将源端数据转换为目标端格式的数据。后续节点可通过payload方式引用数据映射处理器的输出数据。
支持映射的类型:
- 数据库:DB2、MySql、Oracle、PostgreSQL/openGauss、Sql Server
- 消息系统:ActiveMQ、ArtemisMQ、RabbitMQ
- 普通数据类型:JSON、XML、CSV
配置参数
参数 |
说明 |
---|---|
源端数据源 |
设置源端数据源,数据库类型的数据源在选择完表之后会自动显示字段信息,其他格式的数据源需要通过导入文件或者手动增加的形式来添加字段。导入的文件目前主要支持json,xml和csv格式导入。 |
目的端数据源 |
设置目的端数据源,数据库类型的数据源在选择完表之后会自动显示字段信息,其他格式的数据源需要通过导入文件或者手动增加的形式来添加字段。导入的文件目前主要支持json,xml和csv格式导入。 |
使用技巧:
源端与目标端均为数据库类型
目的端-数据格式为XML样例
当目的端数据源,选择数据格式“XML”时,根标签:root(默认),用户可修改为其他字段,但不可为“空”。
源端MySQL数据库表 demo.statistics 中的数据:
id |
city |
---|---|
uuid1 |
suzhou |
uuid2 |
shanghai |
数据映射输出数据为:
<root> <custom> <key1>uuid1</key1> <key2> <level2>suzhou</level2> </key2> </custom> <custom> <key1>uuid2</key1> <key2> <level2>shanghai</level2> </key2> </custom> </root>
目的端-数据格式为CSV样例
是否跳过标题:CSV文件的表头,数值 true/false:输出数据是/否含有表头。
分隔符:文件中每列数据通过单元格进行分隔,单元格可以为“制表符”、“空格”、“逗号”、“分号”。
场景1:目的端数据源选择数据格式“CSV”,是否跳过标题:true,字段分隔符:逗号 。
导入文件时,当是否跳过标题选择“true”,默认解析csv第一行为字段名。
源端MySQL数据库表 demo.statistics 中的数据:
id |
city |
---|---|
uuid1 |
suzhou |
uuid2 |
shanghai |
数据映射输出数据为:
ManufacturerId, ProductName uuid1, suzhou uuid2, shanghai
场景2:目的端数据源选择数据格式“CSV”,是否跳过标题:false,字段分隔符:逗号。
导入文件时,当是否跳过标题选择“false”,不使用导入文件的头字段,系统默认设置字段filedN。
源端MySQL数据库表 demo.statistics 中的数据:
id |
city |
---|---|
uuid1 |
suzhou |
uuid2 |
shanghai |
数据映射输出数据为:
uuid1, suzhou uuid2, shanghai
源端-数据格式为JSON样例
以下面的组合应用为例,该组合应用的主要功能是调用Open API获取OBS指定桶的对象列表,并将结果中的桶名称和对象名称通过数据映射,映射到MySql指定表中的相关字段,然后使用MySql添加记录的操作将桶名和对象名存储到MySql中。
其中,对象存储服务 OBS产生的结果是数据映射的源端数据源,MySql是目的端数据源。
可以通过使用Open API调用OBS连接器执行获取桶内对象列表的操作结果获得源端数据源的导入文件,或者根据OBS连接器执行获取桶内对象列表的操作结果手动添加字段信息。
当源端数据源的类型为“JSON”时,在使用数据映射时选择数据格式“JSON”,将源端数据源的输出作为源端数据源页签中“导入文件”的输入,根据文件的编码格式选择导入文件编码,可选项有GB2312、UTF-8和ASCII。此时源端数据源页签中会根据导入的文件内容自动生成相应的字段。
目的端数据格式选择“MySQL”,在选择表名后,目的端数据源页签会自动生成数据库表中的字段。
以下面的组合应用为例,该组合应用的主要功能是调用Open API获取OBS指定桶的对象列表,并将结果中的桶名称和对象名称通过数据映射,映射到MySql指定表中的相关字段,然后使用MySql添加记录的操作将桶名和对象名存储到MySql中。其中,对象存储服务 OBS产生的结果是数据映射的源端数据源,MySql是目的端数据源。可以通过使用Open API调用OBS连接器执行获取桶内对象列表的操作结果获得源端数据源的导入文件。也可以根据OBS连接器执行获取桶内对象列表的操作结果手动添加字段信息。
源端导入的文件内容:
{ "responseHeaders": { "bucket-location": "cn", "connection": "keep-alive" }, "objectSummaries": [ { "bucketName": "test0223", "objectKey": "test0424.txt", "owner": { "displayName": null, "id": "uuid" }, "metadata": { "responseHeaders": {}, "originalHeaders": {} }, "objectContent": null } ] }
数据映射输出结果为: