MySQL 数据集成到金蝶云星空——SYB生产用料清单新增-深圳天一-半成品-好
作为一名系统集成顾问,本文将聚焦于如何使用轻易云数据集成平台,将MySQL的数据无缝接入到金蝶云星空系统中。本次案例,我们实现的是 SYB生产用料清单新增-深圳天一-半成品-好
的数据对接。该解决方案的核心目标是通过可靠和高效的数据传输,实现两个不同系统间的数据同步。
为了确保高吞吐量的数据传输,本次整合方案充分利用了轻易云提供的批量写入能力。通过调用MySQL接口 SELECT
获取源数据,并基于业务需求进行自定义转换,再利用金蝶云星空的API batchSave
实现目标数据库的大规模写入。
在具体实施过程中,包括以下关键技术点:
-
定时可靠的抓取与分页处理:我们首先设计并配置了一个定时任务,从MySQL接口中周期性地抓取最新的生产用料清单记录。在此过程中,通过分页机制来处理大规模数据,避免一次性获取过多记录导致内存溢出或网络延迟。
-
统一视图和控制台管理:为保证整个集成过程中的透明度与可控性,利用轻易云的平台特性提供集中监控和告警功能。任何异常情况都能被实时捕获,并触发相应告警以便工程师及时修复。
-
自定义转换逻辑:由于MySQL与金蝶云星空在数据结构上的差异,我们编写了专门的数据映射脚本,对原始数据进行格式转换,使其符合目标表结构要求。这一步不仅提升了兼容性,同时也确保了业务逻辑的一致性。
-
事务一致性和错误重试机制:考虑到实际运行环境的不确定因素,如网络波动、服务宕机等情况,我们引入了一套完善的事务一致性检查及错误重试机制,保证每条记录都能被准确且唯一地同步至金蝶云星空。
-
实时监控与日志记录:除了上述功能外,还重点关注对各类操作行为及状态变化进行详细日志记录。这不仅有助于问题排查,也为后期优化改进提供宝贵依据。
本文以下部分将详述每个步骤的具体实现细节,以及可能遇到的问题和对应解决方案,以帮助读者深入理解并应用这些技术要点。
调用MySQL接口select获取并加工数据
在轻易云数据集成平台的生命周期中,调用源系统接口获取数据是至关重要的第一步。本文将详细探讨如何通过配置元数据,从MySQL数据库中调用select接口获取并加工数据。
元数据配置解析
首先,我们来看一下元数据配置的具体内容:
{
"api": "select",
"effect": "QUERY",
"method": "POST",
"number": "生产订单号",
"id": "{{生产订单号}}{{物料编号}}",
"idCheck": true,
"request": [
{
"field": "main_params",
"label": "main_params",
"type": "object",
"describe": "111",
"value": "1",
"children": [
{
"field": "limit",
"label": "limit",
"type": "string",
"value": "100"
},
{
"field": "offset",
"label": "offset",
"type": "string"
}
]
}
],
...
}
配置要点
- API和Method:
api
字段指定了我们要调用的接口类型为select
,而method
字段则表明我们使用的是POST
请求方法。 - 查询参数:在
request
字段中,我们定义了一个名为main_params
的对象,其中包含两个子参数:limit
和offset
。这些参数用于分页查询,以避免一次性拉取过多数据导致性能问题。 - 主SQL语句:在
otherRequest
字段中,我们定义了实际执行的SQL查询语句。该语句通过多个表连接和条件过滤,最终生成所需的数据集。
SQL查询语句解析
SELECT
CASE m.delivery_org
WHEN 'T01.01' THEN CONCAT('HJ', CAST(i.id AS CHAR))
WHEN 'T04' THEN CONCAT('HJGD', CAST(i.id AS CHAR))
END AS 生产订单号,
a.part_no AS 成品编号,
DATE(a.update_time) AS 日期,
a.req_num AS 生产数量,
a.mold_no AS 计划跟踪号,
CONCAT(a.part_no, '_WW') AS 物料编号,
1 AS 分子,
1 AS 分母,
i.id AS sourceid,
a.req_num AS 领料数量,
m.delivery_org AS 供应组织
FROM mbs_nuclear_price_info i
LEFT JOIN mbs_nuclear_price_task a ON i.nuclear_price_task_uuid = a.nuclear_price_task_uuid
LEFT JOIN mbs_order_plan_bom l ON a.mold_no = l.bom_no
LEFT JOIN mbs_order_bom m ON m.bom_uuid = l.bom_uuid
WHERE
a.is_cancel = '1'
AND a.company_code = 'TYZN'
AND i.create_time > (SELECT config_value FROM sys_config WHERE config_id = 337)
AND a.if_close = '1'
AND i.outsourced_type = '1'
AND i.out_type = '4'
AND i.is_success2 != '1'
AND i.is_success = '1'
LIMIT :limit OFFSET :offset;
这段SQL语句主要完成以下任务:
- 条件过滤:通过多个条件过滤掉不符合要求的数据,例如取消状态、公司代码、创建时间等。
- 字段转换与计算:使用CASE语句和CONCAT函数对部分字段进行转换和拼接,以生成所需格式的数据。
- 分页处理:通过LIMIT和OFFSET实现分页查询,提高查询效率。
数据请求与清洗
在轻易云平台上,通过上述配置可以实现对MySQL数据库的高效查询,并将结果进行初步清洗。清洗后的数据将进一步进入下一个生命周期阶段,即数据转换与写入。
自动填充与遗漏补救
配置中的autoFillResponse: true
确保了响应结果自动填充到目标系统中。而对于可能出现的数据遗漏问题,通过设置定时任务(如crontab)进行补救,确保数据完整性。
"omissionRemedy":{
...
,"crontab":"1 1 * * *"
}
此处设置的crontab表达式表示每天凌晨1点执行一次补救任务。
总结
通过上述元数据配置,我们能够高效地从MySQL数据库中调用select接口获取并加工所需数据。这一步骤不仅是整个数据集成过程的重要环节,也是确保后续数据处理顺利进行的基础。在实际应用中,根据业务需求灵活调整SQL查询和参数配置,可以极大提升系统集成效率和数据质量。
使用轻易云数据集成平台实现金蝶云星空API接口的数据写入
在数据集成生命周期的第二阶段,重点在于将已经集成的源平台数据进行ETL转换,并转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。本文将详细介绍如何利用轻易云数据集成平台配置元数据,实现这一过程。
配置元数据
首先,我们需要理解并配置元数据,以确保数据能够正确地转换和写入金蝶云星空。以下是用于配置的元数据:
{
"api": "batchSave",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"operation": {
"rowsKey": "array",
"rows": 1,
"method": "batchArraySave"
},
"request": [
{
"field": "FID",
"label": "FID",
"type": "string",
"value": "_findCollection find FID from d9c54956-106b-36e1-8018-91a8855f6316 where FMoBillNo={{生产订单号}}"
},
{
"field": "FEntity",
"label": "子项明细",
"type": "array",
...
},
{
...
}
],
...
}
数据请求与清洗
在进行ETL转换之前,首先需要从源系统请求并清洗数据。假设我们已经完成了这一阶段,现在进入ETL转换阶段。
数据转换与写入
我们将重点放在如何将清洗后的数据转换为金蝶云星空API接口所需的格式,并通过API接口进行写入。
-
API调用配置
配置
api
字段为batchSave
,表示我们将调用金蝶云星空的批量保存接口。method
字段设置为POST
,表示使用HTTP POST方法进行请求。 -
操作定义
在
operation
字段中,我们定义了操作方式:rowsKey
: 指定数组键名为"array"。rows
: 设置每次操作的行数为1。method
: 使用batchArraySave
方法进行批量保存。
-
请求参数
请求参数定义了需要传递给API的数据结构:
-
FID
: 根据生产订单号查找对应的FID。{ "field": "FID", ... "value": "_findCollection find FID from d9c54956-106b-36e1-8018-91a8855f6316 where FMoBillNo={{生产订单号}}" }
-
FEntity
: 子项明细数组,其中包含多个子项字段,如子项物料编码、用量类型、分子、分母等。{ ... { ... { "field": "FMaterialID2", ... "value": "{{物料编号}}" }, { ... { ... } } } }
-
-
其他请求参数
除了主要的数据字段外,还需要配置一些其他参数,如业务对象表单Id、执行操作等:
{ ... { ... { ... { ... { ... } } } } }
数据写入示例
通过上述配置,我们可以构建出一个完整的数据请求,并通过HTTP POST方法发送到金蝶云星空API接口。以下是一个示例请求:
{
"FormId":"PRD_PPBOM",
...
{
...
[
{
...,
[
...,
{
...,
[
...,
{
...
}
]
}
]
}
]
}
}
实际应用
在实际应用中,通过轻易云数据集成平台,我们可以实时监控整个ETL过程,确保每个环节都清晰可见,从而提高业务透明度和效率。同时,通过全异步处理和多种异构系统支持,实现不同系统间的数据无缝对接。
综上所述,通过正确配置元数据和合理使用API接口,可以高效地将源平台的数据转换并写入到金蝶云星空,实现跨系统的数据集成和业务流程自动化。