MySQL数据集成到金蝶云星空的实施案例分享
在本次技术案例中,我们重点探讨如何将MySQL数据库中的制造一处领料单新增信息,通过轻易云数据集成平台高效、稳定地写入到金蝶云星空系统。具体方案名称为"ZZ组装机加件生产领料单新增-制造一处-last1",该方案具备较强的实际操作意义及参考价值。
数据获取与处理
首先,MySQL作为源系统,通过API接口select
从定义好的表字段中提取待集成的数据。在这一过程中,我们需要确保以下几点关键技术:
- 定时可靠的数据抓取:通过设定计划任务,实现周期性、多频率地对数据进行访问和抓取,以保证所获取的数据实时性。
- 分页与限流策略:为了避免大规模数据查询导致网络堵塞或数据库服务器过载,对API调用加入分页处理,并设置合理限流策略,确保每次请求都能顺利返回。
数据转换与映射
在源头成功抓取数据后,面临的下一个挑战是如何将MySQL中的原始数据转换为符合金蝶云星空接收格式的数据结构。这里我们采用自定义转换逻辑,根据业务需求调整字段映射关系以及数值单位等参数,从而使两端系统无缝对接。这一部分主要涉及两个核心功能:
- 自定义数据转换逻辑:根据业务需求和目标系统要求,自行编写转化规则,使得不同格式和结构类型的数据能够正确匹配。
- 可视化设计工具:使用轻易云提供的直观可视化界面,将多个步骤串联起来,如同流程图般简洁明了,使整体过程更容易管理、调试和优化。
数据推送与监控
当完成所有必要的转换工作后,就可以利用金蝶云星空提供的API接口batchSave
,批量快速地将经过处理后的数据信息写入目标系统。这一步骤注重的是高吞吐、高效率及异常情况下错误重试机制:
- 大量数据快速写入:借助于轻易云强大的并发能力,高效且有序地向金蝶云星空推送大量加工后的领料单信息。
- 集中监控与告警:实时跟踪整个过程中每个环节的状态,一旦出现任何故障或性能瓶颈,即刻触发告警机制以便及时排查解决问题。
通过这种方式,不仅实现了从MySQL至金蝶云星空之间全面完整的数据传输,还保证了整个过程透明、高效、可靠。本篇文章开头部分
调用源系统MySQL接口select获取并加工数据
在轻易云数据集成平台的生命周期中,调用源系统MySQL接口select获取并加工数据是至关重要的一步。本文将深入探讨如何通过配置元数据,实现从MySQL数据库中高效、安全地获取所需数据,并进行初步加工。
配置元数据详解
首先,我们需要理解元数据配置中的各个字段及其作用。以下是一个详细的元数据配置示例:
{
"api": "select",
"effect": "QUERY",
"method": "POST",
"id": "sourceid",
"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语句优化
在这个配置中,main_sql
字段定义了主要的SQL查询语句。为了确保动态字段与请求参数一一对应,我们采用参数绑定的方法:
select a.fmobillno as 生产订单号,
a.fmaterialid as 成品编号,
c.fqty as 订单数量,
a.fmtono as 计划跟踪号,
a.requisit_no as 领料单号,
a.FMOID as 生产订单内码,
a.fmoentryid as 生产订单明细内码,
b.Fbillno as 用料清单编号,
b.fid as 用料清单内码,
b.fentity_fentryid as 用料清单明细内码,
date(a.create_time) as 日期,
b.fmaterialid2 as 物料编号,
b.picking_num as 数量,
c.FWorkShopID as 车间,
CONVERT(b.id, CHAR) as sourceid,
d.real_name as kingdee_user_id,
m.delivery_org as 供应组织,
c.fseq as 生产订单行号
from production_material_requisition_head a
left join production_material_requisition_info b on a.requisit_no=b.requisit_no
left join mbs_assemble_detail c on c.fid=a.FMOID and c.fentryid=a.fmoentryid
left join sys_user d on a.create_by=d.user_id
left join mbs_order_plan_bom l on a.fmtono=l.bom_no
left join mbs_order_bom m on m.bom_uuid=l.bom_uuid
where a.is_success<>1
limit ? offset ?
在执行查询之前,通过参数绑定方法,将请求参数值与占位符进行对应绑定。这种方式不仅提高了查询语句的可读性和维护性,还确保了动态字段与请求参数的正确对应关系,从而保证了查询的准确性和安全性。
请求参数设置
在元数据配置中,我们定义了两个关键请求参数:limit
和offset
。这些参数用于控制分页查询:
limit
: 限制返回的数据行数。offset
: 指定从哪一行开始返回数据。
例如,当我们设置{PAGINATION_PAGE_SIZE}
为10,{PAGINATION_START_ROW}
为20时,生成的SQL语句将会是:
select ... from ... where ... limit 10 offset 20;
这意味着查询将从第21行开始,最多返回10行数据。
数据加工与处理
通过上述配置,我们成功地从MySQL数据库中获取了所需的数据。在实际应用中,这些数据通常需要进一步加工,例如格式转换、字段映射等,以满足业务需求。
轻易云平台提供了一系列工具和功能,可以帮助我们实现这些操作。例如,我们可以使用平台自带的数据转换功能,将日期格式转换为标准格式,或者将某些字段值映射到特定业务含义上。
实时监控与调试
为了确保整个过程顺利进行,我们可以利用平台提供的实时监控功能,对每一步的数据流动和处理状态进行监控。一旦发现异常情况,可以立即进行调试和修正,从而极大提升业务透明度和效率。
通过上述步骤,我们可以高效、安全地调用源系统MySQL接口select获取并加工所需数据,为后续的数据转换与写入奠定坚实基础。
使用轻易云数据集成平台实现金蝶云星空API接口的数据转换与写入
在数据集成的生命周期中,ETL(提取、转换、加载)是至关重要的一环。本文将深入探讨如何使用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,转为金蝶云星空API接口所能够接收的格式,并最终写入目标平台。
数据请求与清洗
在此阶段,我们假设已经完成了对源数据的请求和初步清洗。接下来,我们将重点关注如何利用元数据配置,将这些源数据转换为金蝶云星空API所需的格式。
数据转换与写入
我们将使用提供的元数据配置来实现这一过程。以下是具体步骤和技术细节:
-
API接口定义
根据元数据配置,我们需要调用金蝶云星空的
batchSave
API接口,使用POST方法提交数据。接口主要字段如下:FBillNo
:单据编号FDate
:日期FStockOrgId
:发料组织FPrdOrgId
:生产组织FMOBillNO1
:生产订单号FMaterialID1
:产品编码FQty
:订单数量- 其他字段如仓管员、车间等信息也需一并提交。
-
字段映射与转换
在进行数据转换时,需要将源数据字段映射到目标API字段。例如:
{ "FBillNo": "{{领料单号}}", "FDate": "{{日期}}", "FStockOrgId": "_function case '{{供应组织}}' when 'T01.01' then 'T01.01' when 'T04' then 'T04' else '' end", "FPrdOrgId": "_function case '{{供应组织}}' when 'T01.01' then 'T01.01' when 'T04' then 'T04' else '' end", "FMOBillNO1": "{{生产订单号}}", "FMaterialID1": "{{成品编号}}", "FQty": "{{订单数量}}" }
-
复杂字段处理
对于一些复杂字段,如单位、仓库等,需要通过特定函数或查找表进行转换。例如:
{ "FUnitID1": "_findCollection find FBaseUnitId_FNumber from 9f845ce5-cf31-3ae6-ab67-21f2d881489b where FNumber={{items.成品编号}}" }
-
明细处理
明细部分需要特别注意,其结构较为复杂,包含多层嵌套。每个明细项需逐一映射。例如:
{ "FEntity": [ { "FParentMaterialId": "{{成品编号}}", "FMaterialId": "{{items.物料编号}}", "FAppQty": "_function ROUND(\"{{items.数量}}\" , 2 )", "FActualQty": "_function ROUND(\"{{items.数量}}\" , 2 )", ... } ] }
-
关联关系表
在处理关联关系表时,需要确保每个关联项都准确无误。例如:
{ "FEntity_Link": [ { "FEntity_Link_FRuleId": "PRD_PPBOM2PICKMTRL_NORMAL", "FEntity_Link_FSBillId": "{{items.用料清单内码}}", ... } ] }
-
其他请求参数
除了主要的数据字段外,还需要设置一些控制参数,例如业务对象表单ID、操作类型等:
{ "FormId": "PRD_PickMtrl", "Operation": "BatchSave", "IsAutoSubmitAndAudit": true, ... }
实际案例应用
假设我们有一个领料单,其源数据如下:
{
"领料单号": "LLD202309001",
"生产订单号": "PO202309001",
"日期": "2023-09-01",
...
}
通过上述步骤,我们可以将其转换为符合金蝶云星空API要求的数据格式,并通过POST方法提交到目标平台。
总结
通过以上步骤,我们成功地将源平台的数据进行了ETL转换,并写入到了金蝶云星空平台。这不仅提高了系统间的数据互操作性,也确保了业务流程的高效运行。在实际应用中,可以根据具体需求进一步调整和优化元数据配置,以适应不同场景。