MySQL数据集成到金蝶云星空的系统对接案例分享
在本次技术案例中,我们将探讨如何通过轻易云数据集成平台,将MySQL的数据高效、安全地集成至金蝶云星空,完成SYF-模具费应付单-(制造一处以及广东天一)-OK方案。该方案充分利用了轻易云平台强大的可视化设计工具和高吞吐量的数据写入能力,实现了复杂业务场景下的数据处理和管理需求。
首先,让我们来了解一下具体的API使用情况。在这个项目中,主要涉及到两个关键API:一个是从MySQL中获取数据的select
API,另一个是将这些数据批量写入到金蝶云星空中的batchSave
API。
为了确保数据不漏单且能够快速、大规模地流转,从MySQL接口定时可靠抓取数据成为重点任务之一。在此基础上,还需特别注意处理MySQL与金蝶云星空之间可能存在的数据格式差异,这需要自定义特定的转换逻辑以适配不同系统间的要求。此外,通过设置分页和限流策略有效防止了接口调用超载的问题,使得对于大批量数据读取操作更加灵活稳定。而在异常处理方面,建立了一套完善的重试机制,以保证即使出现临时故障,也能顺利完成整个事务。
整个过程中,为确保每一步骤都能实时监控及追踪,我们引入了集中监控和告警系统。这不仅提供了一目了然的数据流动透明度,更能及时提醒潜在问题,并迅速采取措施加以解决。通过这种全程可视化管理模式,大幅提升了业务透明度和工作效率,同时也保障了最终用户体验质量。
接下来,将详细解析具体实施步骤,包括如何实现从数据库提取结构化信息、针对不同条件修改已有映射规则,以及最终对接方式等内容。让我们进入实战,对这一典型案例展开深入探究与技术分析。
使用轻易云数据集成平台调用MySQL接口获取并加工数据
在数据集成过程中,第一步是从源系统获取数据。本文将详细介绍如何通过轻易云数据集成平台调用MySQL接口select
获取并加工数据,重点探讨元数据配置和API接口的技术细节。
元数据配置解析
在本案例中,我们的目标是从MySQL数据库中提取模具费应付单的数据。以下是元数据配置的关键部分:
{
"api": "select",
"effect": "QUERY",
"method": "POST",
"id": "应付单号",
"idCheck": true,
"request": [
{
"field": "main_params",
"label": "主参数",
"type": "object",
"describe": "对应其它请求字段内SQL语句的主参数,必须一一对应。",
"value": "1",
"children": [
{
"field": "limit",
"label": "限制结果集返回的行数",
"type": "int",
"describe": "必要的参数!LIMIT 子句用于限制查询结果返回的行数。它指定了查询应该返回的最大行数。例如,LIMIT 10 表示查询结果只包含最多 10 行数据。这对于分页查询非常有用,可以在每次查询中返回一定数量的结果。",
"value": "{PAGINATION_PAGE_SIZE}"
},
{
"field": "offset",
"label": "偏移量",
"type": "int",
"describe": "OFFSET 子句用于指定查询结果的起始位置或偏移量。它表示查询应该从结果集的哪一行开始返回数据。例如,OFFSET 20 表示查询应该从结果集的第 21 行开始返回数据。结合 LIMIT 子句使用时,OFFSET 指定了查询结果的起始行数。",
"value": "{PAGINATION_START_ROW}"
}
]
}
],
...
}
主SQL语句解析
主SQL语句是整个操作的核心部分,它定义了从MySQL数据库中提取哪些字段以及如何进行加工处理。在本案例中,主SQL语句如下:
SELECT
CONCAT('AP_',CAST(a.id AS CHAR)) as 应付单号,
b.business_no as 采购订单号,
CONCAT(b.part_no,'-',b.pic_no) as 物料说明,
date(a.update_time) as 创建日期,
DATE_ADD(date(a.update_time), INTERVAL 90 DAY) as 业务日期,
c.supplier_short_code as 供应商编号,
c.tax_points*100 as 税率,
b.kai_mo_price as 含税价格,
(b.kai_mo_price/(1+c.tax_points)) as 单价,
1 as 数量,
e.company_code as 采购组织,
-- b.mode_no as 计划跟踪号,
-- b.ser_code as 条码,
-- b.part_no as 物料编号,
-- b.receive_numb,
-- b.instock_numb,
-- b.yn_kai_mo,
-- b.yn_send_jd,
-- d.F_ProductLine,
e.dict_value as 费用承担部门,
case
when e.company_code='T01.01' then 'T01'
when e.company_code='T04' then 'T04'
else 'T01'
end as 结算组织,
a.id as sourceid
FROM
wms_receive_main_task_detail a
LEFT JOIN wms_instock_purchase_task_detail b ON b.uuid = a.connect_uuid
LEFT JOIN basic_supplier_info c ON b.supplier_uuid = c.supplier_uuid
LEFT JOIN basic_material_info d ON d.part_no = b.part_no
LEFT JOIN sys_dict_data e ON e.dict_type = 'sys_cost_dpt'
AND e.company_code =(
CASE
WHEN LEFT ( b.mode_no, 1 )= 'S' THEN
'T01.01'
WHEN LEFT ( b.mode_no, 1 )= 'G' THEN
'T04' ELSE 'T01.01'
END
)
AND e.dict_label = d.F_ProductLine
WHERE
a.receive_numb >0
AND a.is_success2 <> '1'
AND a.company_code = 'tyzn'
AND b.yn_kai_mo = '1' and b.yn_send_jd<>'1'
limit :limit offset :offset;
该SQL语句主要完成以下几项任务:
- 字段拼接与转换:使用
CONCAT
和CAST
函数对字段进行拼接和类型转换,例如将ID转换为字符串并添加前缀。 - 日期处理:使用
DATE_ADD
函数计算业务日期。 - 条件过滤:通过
WHERE
子句筛选符合条件的数据。 - 分页处理:使用
LIMIT
和OFFSET
子句实现分页功能。
参数绑定与优化
为了确保动态语法字段与请求参数一一对应,我们采用参数绑定的方法:
- 将主SQL查询语句中的动态字段
:limit
替换为占位符(例如?
)。 - 在执行查询之前,将请求参数值与占位符进行绑定。
这种方式不仅提高了SQL语句的可读性和维护性,还确保了查询的准确性和安全性。
实际调用过程
在实际调用过程中,我们通过POST方法发送请求,并传递必要的参数,如下所示:
{
main_params: {
limit: PAGINATION_PAGE_SIZE, // 每页显示条数
offset: PAGINATION_START_ROW // 起始行数
},
main_sql: "<上述主SQL语句>"
}
通过这种方式,我们可以灵活地控制每次查询的数据量,实现高效的数据提取和加工。
综上所述,通过轻易云数据集成平台调用MySQL接口获取并加工数据,不仅简化了操作流程,还提升了系统间的数据交互效率。希望本文提供的技术细节能为您的实际应用提供参考和帮助。
轻易云数据集成平台生命周期第二步:ETL转换与写入金蝶云星空API接口
在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是关键的一步。本文将深入探讨如何利用轻易云数据集成平台将已经集成的源平台数据进行ETL转换,并转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。
元数据配置解析
在进行ETL转换之前,我们需要详细了解目标平台金蝶云星空API接口的元数据配置。以下是一个典型的元数据配置示例:
{
"api": "batchSave",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{{应付单号}}"},
{"field":"FDOCUMENTSTATUS","label":"单据状态","type":"string","describe":"单据状态","value":"B"},
{"field":"FDATE","label":"业务日期","type":"string","describe":"业务日期","value":"{{业务日期}}"},
{"field":"FSETTLEORGID","label":"结算组织","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{{结算组织}}"},
{"field":"FCURRENCYID","label":"币别","type":"string","describe":"币别","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"PRE001"},
{"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"YFD02_SYS"},
{"field":"FSUPPLIERID","label":"供应商","type":"string","describe":"客户","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{{供应商编号}}"},
{"field": "FPURCHASEORGID", "label": "采购组织", "type": "string", "describe": "采购组织", "value": "{{采购组织}}", "parser": {"name": "ConvertObjectParser", "params": "FNumber"}},
{"field": "FBUSINESSTYPE", "label": "业务类型", "type": "string", "describe": "单据编号", "value": "FY"},
{"field": "FENDDATE_H", "label": "到期日", "type": "string", "value": "{{创建日期}}"}
],
...
}
数据请求与清洗
在ETL过程开始前,首先需要从源系统中请求并清洗数据。假设我们已经完成了这一步,并获得了如下结构的数据:
{
“应付单号”: “AP20231001”,
“业务日期”: “2023-10-01”,
“结算组织”: “ORG001”,
“供应商编号”: “SUP001”,
“采购组织”: “PUR001”,
“创建日期”: “2023-10-01”
}
数据转换
接下来,我们需要将这些源数据转换为目标平台金蝶云星空API接口所能接受的格式。根据元数据配置,我们可以看到每个字段都有特定的要求,包括字段名称、类型、描述以及一些需要通过解析器转换的值。
例如,“结算组织”字段需要通过ConvertObjectParser
解析器将其值转换为金蝶系统所能识别的编码格式。类似地,“供应商编号”、“采购组织”等字段也需要进行相应的解析和转换。
{
“FBillNo”: “AP20231001”,
“FDOCUMENTSTATUS”: “B”,
“FDATE”: “2023-10-01”,
“FSETTLEORGID”: {“FNumber”:“ORG001”},
“FCURRENCYID”: {“FNumber”:“PRE001”},
“FBillTypeID”: {“FNumber”:“YFD02_SYS”},
“FSUPPLIERID”: {“FNumber”:“SUP001”},
“FPURCHASEORGID”: {“FNumber”:“PUR001”},
“FBUSINESSTYPE”: ”FY",
”FENDDATE_H”:"2023-10-01"
}
数据写入
完成数据转换后,我们使用HTTP POST方法将处理后的数据发送到金蝶云星空API接口进行写入操作。根据元数据配置中的api
和method
字段,我们调用的是batchSave
API,并且请求方法为POST。
以下是一个示例HTTP请求:
POST /k3cloud/api/batchSave HTTP/1.1
Host: k3cloud.kingdee.com
Content-Type: application/json
Authorization: Bearer <access_token>
{
...
// 转换后的请求体内容
...
}
在实际操作中,还需确保请求头中包含必要的认证信息,如Bearer Token等,以确保请求能够成功通过认证并被目标系统接受和处理。
实时监控与错误处理
在整个ETL过程中,实时监控和错误处理是不可或缺的一部分。轻易云平台提供了实时监控功能,可以帮助我们及时发现并解决可能出现的问题。例如,如果某个字段解析失败或值不符合预期格式,我们可以通过监控日志快速定位问题并进行修正。
总结来说,通过详细分析元数据配置,准确执行数据转换,并利用轻易云平台提供的工具和功能,可以高效地实现源系统到金蝶云星空API接口的数据集成。这不仅提高了业务透明度和效率,也确保了不同系统间的数据无缝对接。