GYY生产用料清单-原材料-好的MySQL到金蝶云星空数据集成技术案例
在这个技术案例中,我们将分享如何高效地将MySQL中的数据集成到金蝶云星空,从而实现GYY生产用料清单的自动化管理。具体来说,我们重点介绍通过API接口select抓取MySQL数据库中的原材料数据,并使用batchSave接口对接入金蝶云星空。
数据获取与处理
首要任务是从MySQL数据库中获取需要的数据。在本次方案中,主要利用了MySQL的select
API接口来查询和提取所需的数据,例如GYY生产用料清单的信息。轻易云提供的可视化工具使这一过程变得简便,通过拖拽操作即可完成复杂查询,并能够实时监控每一步的数据流动与状态。
数据转换与格式匹配
由于MySQL和金蝶云星空之间的数据格式可能存在差异,在实际操作中我们必须利用自定义数据转换逻辑,确保两者之间无缝衔接。该平台支持灵活的字段映射和类型转换,这样即使面对复杂的业务需求和不同结构的数据,也能准确、高效地进行处理。此外,将这些转换规则可视化后,可以更简单直观地进行管理及调试。
数据写入与性能优化
为了保障大量数据可以快速写入至金蝶云星空,需要充分利用批量写入API——batchSave
。这一功能不仅提升了吞吐能力,还极大简化了多次调用API的繁琐过程。同时,为避免因异常导致数据漏登或错误,系统内置了稳健的异常处理机制,包括错误重试机制。当发生网络故障或服务器响应延迟时,系统会自动重新尝试发送请求,以最大限度保证信息完整性。
实时监控与告警
整个过程中,通过集中式监控和告警系统,实时跟踪所有数据集成任务状态及性能表现。一旦出现任何问题,如延迟、失败等情况,将立即发出告警通知相关人员,从而确保问题能够及时被发现并解决。这些措施不仅提高了整体运行效率,还大幅提升了业务透明度。
上述内容只是初步展示了一部分关键步骤,后续将详细讲解如何通过具体代码配置实现每个环节,以及应对常见挑战的方法。
使用轻易云数据集成平台调用MySQL接口获取并加工数据
在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台,通过调用MySQL接口select
获取并加工数据。
元数据配置解析
在进行具体操作之前,我们需要理解元数据配置metadata
的各个部分:
{
"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
: 指定要调用的API类型,这里是select
。effect
: 定义API的作用,这里是查询(QUERY)。method
: HTTP请求方法,这里使用POST。number
: 标识字段,这里是生产订单号。id
: 唯一标识符,由生产订单号和原材料编号组合而成。idCheck
: 是否检查ID唯一性,设置为true。request
: 请求参数部分,包含主参数和子参数。
SQL查询语句解析
元数据配置中的SQL查询语句如下:
select
(select dispatch from mes_dispatch_record_process c
where c.to_be_dispatch_uuid=a.to_be_dispatch_uuid LIMIT 1) as 生产订单号,
a.prod_part_no as 成品编号,
date(now()) as 日期,
a.dispatched_num as 生产数量,
b.bom_no as 计划跟踪号,
e.part_no as 原材料编号,
d.quantity/d.layout_ratio as 分子,
1 as 分母,
d.id as sourceid,
d.quantity/d.layout_ratio*a.dispatched_num as 领料数量
from mes_to_be_dispatched a
left join oms_order_bom b on a.bom_uuid=b.bom_uuid
left join eng_bom_item d on b.bom_uuid=d.oms_order_bom_uuid
left join basic_material_info e on d.material_id=e.id
where a.company_code='GDTY' and a.status='3' and b.material_source='2' and d.is_success !='1' and b.is_close='1' and b.kingdee_fwl='0'
limit :limit offset :offset
该查询语句从多个表中提取信息,并通过JOIN操作将这些信息整合在一起。主要字段包括:
生产订单号
成品编号
日期
生产数量
计划跟踪号
原材料编号
分子
分母
sourceid
领料数量
配置与调用
在轻易云平台上进行配置时,需要按照以下步骤操作:
- 定义API接口:根据元数据配置,定义一个新的API接口,类型为
select
,方法为POST。 - 设置请求参数:将请求参数
main_params
及其子参数limit
和offset
添加到接口配置中。默认值可以设置为100,但也可以根据实际需求调整。 - 编写SQL查询:将上述SQL查询语句复制到接口的SQL配置部分,并确保参数占位符(如
:limit
,:offset
)正确无误。 - 测试与验证:通过平台提供的测试功能,输入不同的参数值进行测试,确保返回的数据符合预期。
数据处理与清洗
在获取到原始数据后,可以利用轻易云平台提供的数据清洗功能,对数据进行进一步处理。例如,可以对日期格式进行标准化处理,对数值字段进行单位转换等。
通过以上步骤,我们成功实现了从MySQL数据库中调用接口获取并加工数据。这不仅提高了数据处理的效率,也确保了数据的一致性和准确性。
使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口
在数据集成的生命周期中,ETL(提取、转换、加载)是至关重要的一环。本文将详细探讨如何使用轻易云数据集成平台,将源平台的数据进行ETL转换,并最终写入到金蝶云星空API接口中。
元数据配置解析
我们需要根据元数据配置,将原始数据转换为金蝶云星空API接口所能接受的格式。以下是元数据配置的详细解析:
-
API基本信息
api
:batchSave
method
:POST
idCheck
:true
-
操作定义
operation
:{ "rowsKey": "array", "rows": 1, "method": "batchArraySave" }
-
请求字段
request
字段定义了需要提交的数据结构,包括主表和子表字段。
数据请求与清洗
首先,我们需要从源系统中提取相关数据。假设我们已经从源系统中获取了生产订单号、原材料编号等关键字段。接下来,我们将这些字段映射到目标系统所需的格式。
{
"FID": "_findCollection find FID from ce5b116a-97a3-30ea-bfdf-a7a3fa3be3cd where FMoBillNo={{生产订单号}}",
"FEntity": [
{
"FMaterialID2": "{{原材料编号}}",
"FMaterialType": "1",
"FDosageType": "2",
"FNumerator": "{{分子}}",
"FDenominator": "{{分母}}",
"FUseRate": "100",
"FStdQty": "_function ROUND(GREATEST(\"{{领料数量}}\",0.001) , 3 )",
"FNeedQty2": "_function ROUND(GREATEST(\"{{领料数量}}\",0.001) , 3 )",
"FMustQty": "_function ROUND(GREATEST(\"{{领料数量}}\",0.001) , 3 )",
"FIssueType": "1",
"FSupplyOrg": {
"parser": {
"name": "ConvertObjectParser",
"params": "FNumber"
},
"value": "T04"
},
...
}
],
...
}
数据转换与写入
在完成数据清洗后,我们需要将其转换为目标系统所需的格式,并通过API接口进行写入。以下是具体步骤:
-
主表字段映射
- 将生产订单号映射为
FID
:{ "field":"FID", ... "value":"_findCollection find FID from ce5b116a-97a3-30ea-bfdf-a7a3fa3be3cd where FMoBillNo={{生产订单号}}" }
- 将生产订单号映射为
-
子表字段映射
- 子项物料编码、类型、用量类型等:
{ ... { "field":"FMaterialID2", ... "value":"{{原材料编号}}" }, { ... ... ... ... } }
- 子项物料编码、类型、用量类型等:
-
计算字段处理
-
使用函数计算标准用量、需求数量和应发数量:
{ ... { ... ... ... ... ..., { ..., ..., ..., ..., ..., ..., ..., ..., ..., ..., ..., { ..., ..., ..., ..., ..., ..., ..., ..., ..., { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
-
4. **其他请求参数**
- 设置业务对象表单Id和操作类型:
```json
[
{"field":"FormId","value":"PRD_PPBOM"},
{"field":"Operation","value":"batchSave"},
{"field":"IsAutoSubmitAndAudit","value":"false"},
{"field":"IsVerifyBaseDataField","value":"true"},
{"field":"IsDeleteEntry","value":"false"}
]
实际应用案例
假设我们有一个生产订单,其订单号为PO123456
,包含如下原材料信息:
- 原材料编号:
RM001
- 分子:
10
- 分母:
100
- 领料数量:
50
通过上述配置,我们可以生成如下请求体:
{
"FID": "_findCollection find FID from ce5b116a-97a3-30ea-bfdf-a7a3fa3be3cd where FMoBillNo=PO123456",
"FEntity": [
{
"FMaterialID2": RM001,
...
}
],
....
}
最终,通过POST请求将该数据提交至金蝶云星空API接口,实现了从源系统到目标系统的数据无缝对接。
通过上述步骤,我们能够高效地完成ETL转换,并将清洗后的数据准确地写入到目标平台。这不仅提升了数据处理的效率,还确保了业务流程的顺畅运行。