MySQL数据集成到金蝶云星空的技术实现案例分享:GM广东天一模具费应收单新增-广东天一
在本案例中,我们致力于实现在MySQL数据库中的应收单数据自动化、批量地集成到金蝶云星空系统。为此,我们使用了轻易云提供的数据集成平台,通过其强大的高吞吐量数据写入能力和实时监控特性,确保大量数据能够快速、安全地完成从MySQL到金蝶云星空的传输与转化。
前期准备与环境搭建
首先,我们需要确定所需的数据接口并进行基础配置:
- 从MySQL获取数据的API接口
select
的使用; - 向金蝶云星空写入数据的API接口
batchSave
。
通过可视化的数据流设计工具,可以直观地定义每个步骤。在这里特别详细介绍两项关键操作:
高效抓取与分页处理
为了保证我们从MySQL中抓取的大量记录不丢失且效率最优,需要设置定时任务来可靠地调用select
API,从而实现对新增加记录的连续抓取。对于大规模分页查询,这种机制尤为必要,它不仅控制了服务器负载,还能减少网络带宽占用。
自定义转换逻辑及适配业务需求 由于MySQL和金蝶云星空的数据库结构有所不同,自定义的数据转换逻辑至关重要。这一步骤主要针对字段映射和格式变换,以确保最终存储在金蝶系统中的信息符合业务要求。例如,某些日期格式或数值类型可能需要在导入前进行调整,此处我们利用了轻易云平台内置的数据清洗功能,实现标准化处理并公平保障每条记录的一致性。
接下来的部分将具体说明各种API调用细节、异常处理策略以及监控手段,包括如何全面掌握Data Pipeline状态。通过这些方案,不仅优化了工作流,还提升了整体运维效率。
调用MySQL接口select获取并加工数据
在数据集成生命周期的第一步,我们需要从源系统MySQL中调用接口获取并加工数据。本文将详细探讨如何通过轻易云数据集成平台配置元数据,实现对MySQL数据库的查询操作,并对获取的数据进行初步加工。
元数据配置解析
首先,我们来看一下元数据配置的具体内容:
{
"api": "select",
"effect": "QUERY",
"method": "POST",
"id": "单据编号",
"idCheck": true,
"request": [
{
"field": "main_params",
"label": "main_params",
"type": "object",
"describe": "主参数",
"value": "1",
"children": [
{
"field": "limit",
"label": "limit",
"type": "string",
"value": "100"
},
{
"field": "offset",
"label": "offset",
"type": "string"
}
]
}
],
"otherRequest": [
{
"field": "main_sql",
"label": "main_sql",
"type": "string",
"describe": "",
"value": "
select concat('AR_',a.id) as 单据编号,
CONCAT('采购单号:',c.pur_no,' 图号:',a.pic_no) as 备注,
curdate() as 日期,
a.pic_no as 图号,
a.part_no as 物料编号,
a.bom_no as 计划跟踪号,
DATE_ADD(CURDATE(), INTERVAL 30 DAY) as 到期日,
a.id as sourceid,
a.purchase_num as 数量,
a.pur_price as 单价
from mbs_pur_record_detail a
left join mbs_pur_record_detail b on a.pur_record_uuid=b.pur_record_uuid and a.part_no=b.part_no
left join mbs_pur_record c on a.pur_record_uuid=c.pur_record_uuid
where b.send_status<>'1' and b.supplier_uuid='804842' and b.if_mold='Y' and a.outsourced_way='开模' and a.is_success='0'
limit :limit offset :offset"
}
],
...
}
配置解析与实现
-
API调用类型与方法:
api
字段指定了调用类型为select
,表示我们将执行一个查询操作。method
字段为POST
,表示我们将使用POST方法来发送请求。
-
主参数配置:
request
字段定义了请求参数,其中包含一个名为main_params
的对象,该对象包含两个子参数:limit
和offset
。limit
用于限制返回记录的数量,默认值为100。offset
用于指定查询结果的偏移量,便于分页处理。
-
SQL查询语句:
otherRequest
字段中定义了实际执行的SQL查询语句,通过占位符:limit
和:offset
实现动态参数绑定。- 查询语句从多个表中关联查询,并对结果进行了一定的格式化处理,例如使用concat函数生成自定义的单据编号和备注信息。
实际应用案例
假设我们需要从MySQL数据库中获取广东天一模具费应收单新增的数据,并进行初步加工。以下是具体步骤:
-
配置请求参数: 根据业务需求设置请求参数,例如:
{ main_params: { limit: '50', offset: '0' } }
-
执行SQL查询: 使用配置好的SQL语句,通过POST方法发送请求到MySQL数据库。系统会自动替换占位符
:limit
和:offset
,生成最终的SQL语句:select concat('AR_',a.id) as 单据编号, CONCAT('采购单号:',c.pur_no,' 图号:',a.pic_no) as 备注, curdate() as 日期, a.pic_no as 图号, a.part_no as 物料编号, a.bom_no as 计划跟踪号, DATE_ADD(CURDATE(), INTERVAL 30 DAY) as 到期日, a.id as sourceid, a.purchase_num as 数量, a.pur_price as 单价 from mbs_pur_record_detail a left join mbs_pur_record_detail b on a.pur_record_uuid=b.pur_record_uuid and a.part_no=b.part_no left join mbs_pur_record c on a.pur_record_uuid=c.pur_record_uuid where b.send_status<>'1' and b.supplier_uuid='804842' and b.if_mold='Y' and a.outsourced_way='开模' and a.is_success='0' limit 50 offset 0;
-
处理查询结果: 查询结果返回后,可以根据业务需求进行进一步处理,例如将结果写入目标系统或进行数据清洗等。
通过上述步骤,我们成功实现了从MySQL数据库中调用接口获取并加工数据,为后续的数据转换与写入打下基础。这种全透明可视化的操作方式,不仅提高了业务透明度,还极大提升了效率。
使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口
在数据集成的生命周期中,将源平台的数据转换为目标平台所需格式是关键步骤。本文将重点探讨如何使用轻易云数据集成平台将源数据进行ETL(提取、转换、加载)处理,并通过金蝶云星空API接口写入目标平台。
配置元数据与API接口
在进行数据转换和写入之前,首先需要配置元数据。以下是我们在轻易云平台上配置的元数据示例:
{
"api": "batchSave",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{{单据编号}}"},
{"field":"FDATE","label":"业务日期","type":"string","describe":"业务日期","value":"{{日期}}"},
{"field":"FCURRENCYID","label":"币别","type":"string","describe":"币别","value":"PRE001","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
{"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","value":"YSD02_SYS","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
{"field":"FALLAMOUNTFOR","label":"价税合计","type":"string","describe":"价税合计","value":"{{单价}}"},
{"field":"FENDDATE_H","label":"到期日","type":"string","describe":"到期日","value":"{{到期日}}"},
{"field":"FOWNERTYPE","label":"货主类型","type":"string","describe":"货主类型","value":"BD_OwnerOrg"},
{"field":"FCancelStatus","label":"作废状态","type":"string","describe":"作废状态","value":"A"},
{"field":"FCUSTOMERID","label":"客户","type":"string","describe":"","value":"","parser":{"name":"","params":""}},
{"field":"","label":"","type":"","describe":"","value":"","parser":{"name":"","params":""}},
{"field":"","label":"","type":"","describe":"","value":"","parser":{"name":"","params":""}},
{"field":"","label":"","type":"","describe":"","value":"","parser":{"name":"","params":""}},
{"field":"","label":"","type":"","describe":"","value":""},
{"field":"",
数据提取与清洗
在ETL流程中,第一步是从源系统中提取原始数据,并进行必要的清洗和预处理。通过轻易云的数据集成平台,我们可以利用其全透明可视化操作界面,轻松实现对源数据的提取和清洗。例如,我们可以从ERP系统中提取应收单据的数据,并去除重复记录或无效数据。
数据转换
接下来,我们需要将清洗后的数据转换为金蝶云星空API能够接受的格式。这一步骤至关重要,因为不同系统之间的数据格式和结构可能存在较大差异。根据上述元数据配置,我们需要将字段映射到金蝶云星空API所需的字段。例如:
FBillNo
对应源数据中的单据编号
FDATE
对应源数据中的业务日期
FCURRENCYID
固定值为PRE001
FBillTypeID
固定值为YSD02_SYS
FALLAMOUNTFOR
对应源数据中的价税合计
此外,还需要使用特定的解析器(如 ConvertObjectParser
)来处理一些复杂字段,如币别、单据类型等。
数据加载与写入
完成数据转换后,我们使用轻易云平台提供的批量保存功能,通过POST请求将转换后的数据写入金蝶云星空API接口。以下是一个简化的请求示例:
{
"FormId": "AR_receivable",
"Operation": "BatchSave",
"IsAutoSubmitAndAudit": true,
"IsVerifyBaseDataField": false,
"Model": {
"FBillNo": "{{单据编号}}",
"FDATE": "{{业务日期}}",
...
}
}
通过这种方式,我们可以确保所有必要的数据字段都按照金蝶云星空API要求的格式进行传递,并且实现了自动提交和审核功能,大大提高了工作效率。
实践案例
假设我们有一条来自广东天一模具费应收单新增的数据记录,其主要字段如下:
- 单据编号:GM20231001
- 日期:2023-10-01
- 单价:1000.00
- 到期日:2023-12-31
- 客户:T01
- 数量:10
- 备注:测试备注
根据上述配置和处理步骤,我们最终生成并发送给金蝶云星空API接口的数据如下:
{
"FormId": "AR_receivable",
"Operation": "BatchSave",
"IsAutoSubmitAndAudit": true,
"IsVerifyBaseDataField": false,
"Model": {
"FBillNo": "GM20231001",
"FDATE": "2023-10-01",
...
}
}
通过这种方式,我们成功地将源系统的数据无缝地集成到目标系统,实现了高效的数据流转和业务处理。
总结而言,利用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口,不仅简化了复杂的数据处理流程,还提升了整体业务效率。