使用轻易云数据集成平台进行ETL转换和数据写入MySQL

  • 轻易云集成顾问-杨嫦
### 金蝶云星空数据集成到MySQL:一个高效的系统对接案例分享 在复杂多变的业务环境中,如何实现快速、可靠的数据集成成为企业数字化转型中的一大挑战。针对这个需求,我们提出了一个具体的解决方案,即将金蝶云星空的数据通过轻易云平台无缝对接至MySQL数据库。在本文中,我们将详细介绍名为"kd-金蝶查询付款退款单-->mysql(鸿巢)付款退款"的数据集成方案。 首先,在本次集成任务中使用到了金蝶云星空API接口`executeBillQuery`来获取付款及退款单据数据,并通过自定义的转换逻辑和批量写入操作,最终将这些数据导入到MySQL数据库。这种方法不仅提升了数据处理的效率,还确保了每一笔单据信息都能准确传输,不漏单。 为了应对大量数据需要快速写入的问题,我们采用了高吞吐量的数据写入能力,使得我们能够在较短时间内完成海量数据的迁移。此外,通过实时监控与告警系统,对每个步骤状态进行跟踪,可以及时发现并处理潜在问题,从而保障整个流程顺利进行。 值得注意的是,由于金蝶云星空和MySQL两者之间存在一定的数据格式差异,因此在调用API接口时进行了必要的数据映射调整。此外,为了解决分页和限流问题,我们设计了一套可靠抓取策略,通过定时任务分批次有效地从金蝶获取所需信息,再按序进行处理。 我们还特别关注到了异常处理与错误重试机制,这对于保证数据一致性至关重要。一旦发生错误或异常情况,轻易云平台会自动执行重试操作,以确保最终所有关键业务数据信息都能成功传递到目标系统中去。同时,通过日志记录功能,可以全面回溯各阶段操作历史,便于后期分析和优化改进。 总之,此次案例展示的不仅是一次成功的数据整合,更体现了一套完整且高效的方法论,希望可以为同类开发工作提供有益参考。 ![电商OMS与ERP系统接口开发配置](https://pic.qeasy.cloud/D28.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成过程中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口,以获取并加工付款退款单的数据。 #### 接口配置与请求参数 首先,我们需要配置元数据,以便正确调用金蝶云星空的API接口。以下是元数据配置的关键部分: ```json { "api": "executeBillQuery", "effect": "QUERY", "method": "POST", "number": "FBillNo", "id": "FREFUNDBILLENTRY_FEntryID", "idCheck": true, "formatResponse": [ { "old": "FDATE", "new": "FDate_new", "format": "date" } ], "request": [ {"field":"FBillNo","label":"FBillNo","type":"string","describe":"单据编号","value":"FBillNo"}, {"field":"FDOCUMENTSTATUS","label":"FDOCUMENTSTATUS","type":"string","describe":"单据状态","value":"FDOCUMENTSTATUS"}, {"field":"FDATE","label":"FDATE","type":"string","describe":"业务日期","value":"FDATE"}, {"field":"FREFUNDAMOUNTFOR","label":"FREFUNDAMOUNTFOR","type":"string","describe":"表体-应退金额","value":"FREFUNDAMOUNTFOR"}, {"field":"FREFUNDBILLENTRY_FEntryID","label":"FREFUNDBILLENTRY_FEntryID","type":"string","describe":"111","value":"FREFUNDBILLENTRY_FEntryID"} ], "otherRequest": [ {"field":"Limit","label":"Limit","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_PAGE_SIZE}"}, {"field":"StartRow","label":"StartRow","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_START_ROW}"}, {"field":"TopRowCount","label":"TopRowCount","type":"int","describe":"金蝶的查询分页参数"}, {"field":"FilterString","label":"FilterString","type":"string","describe":"","value":"'{{LAST_SYNC_TIME|date}}' and FCreaterId= '100796' and FBillTypeID.FNUMBER='FKTKDLX02_SYS' and FBillNo LIKE 'LHHYBXD%'"}, {"field":"FieldKeys","label":"","type":"","describe":"","value":""}, {"field":"","label":"","type":"","describe":"","value":""}, {"field":"","label":"","type":"","describe":"","value":""} ], "autoFillResponse": true } ``` #### 请求构建 在构建请求时,需要注意以下几点: 1. **API Endpoint**: `executeBillQuery` 2. **HTTP Method**: POST 3. **请求字段**: 根据元数据中的`request`字段,构建请求体。 例如,构建一个简单的请求体如下: ```json { "FormId": "AP_REFUNDBILL", "FieldKeys": ["FBillNo", "FDOCUMENTSTATUS", "FDATE", "FREFUNDAMOUNTFOR", "FREFUNDBILLENTRY_FEntryID"], "FilterString": "'2023-01-01' and FCreaterId= '100796' and FBillTypeID.FNUMBER='FKTKDLX02_SYS' and FBillNo LIKE 'LHHYBXD%'", "Limit": 100, "StartRow": 0, } ``` #### 数据处理与格式化 在获取到原始数据后,需要对数据进行处理和格式化。例如,将日期字段`FDATE`格式化为新的字段`FDate_new`。这是通过元数据中的`formatResponse`字段实现的: ```json "formatResponse":[{"old":"FDATE", "new" :"FDate_new", "format" :"date"}] ``` 这意味着我们需要将返回的数据中的`FDATE`字段转换为新的字段名`FDate_new`,并确保其格式为日期类型。 #### 实际应用案例 假设我们从金蝶云星空获取到以下原始数据: ```json [ { "FBillNo": "LHHYBXD001", "FDOCUMENTSTATUS": "A", "FDATE": "/Date(1672531200000)/", "FREFUNDAMOUNTFOR": 1000.00, "FREFUNDBILLENTRY_FEntryID": 12345 } ] ``` 根据我们的元数据配置,我们需要将其转换为: ```json [ { "FBillNo": "LHHYBXD001", "FDOCUMENTSTATUS": "A", "FDate_new": "/Date(1672531200000)/", // 转换后的日期格式 ... } ] ``` #### 数据写入目标系统 最后,将处理后的数据写入目标系统(如MySQL)。这一步通常涉及到使用轻易云平台提供的数据写入功能,将转换后的数据存储到指定的数据库表中。 通过以上步骤,我们成功地完成了从调用源系统接口、获取原始数据、进行数据处理与格式化,到最终将处理后的数据写入目标系统的全过程。这不仅提高了业务透明度和效率,也确保了不同系统间的数据无缝对接。 ![用友BIP接口开发配置](https://pic.qeasy.cloud/S22.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入MySQLAPI接口 在数据集成生命周期的第二步,我们将重点探讨如何将已经集成的源平台数据通过ETL(Extract, Transform, Load)转换,最终写入目标平台MySQLAPI接口。以下是具体的技术实现过程。 #### 数据请求与清洗 首先,我们需要从源平台(金蝶)中提取付款退款单的数据。在此过程中,确保数据的完整性和准确性是至关重要的。我们假设已经完成了这一阶段,并获得了所需的数据。 #### 数据转换与写入 接下来,我们进入数据转换与写入阶段。这一步骤主要涉及将源数据转换为目标平台能够接受的格式,并通过API接口将其写入到MySQL数据库中。 ##### 元数据配置解析 根据提供的元数据配置,我们可以看到以下关键字段: - `api`: `"execute"` - `method`: `"POST"` - `idCheck`: `true` - `request`: 包含一个`main_params`对象,内含多个子字段 - `otherRequest`: 包含一个`main_sql`字段,用于定义SQL插入语句 ##### 请求参数解析 `main_params`对象包含以下子字段: - `FEntity_FEntryID`: 明细id,对应源数据中的`FREFUNDBILLENTRY_FEntryID` - `order_no_new`: 单号,对应源数据中的`FBillNo` - `FDocumentStatus`: 状态,对应源数据中的`FDOCUMENTSTATUS` - `qty_count`: 数量,固定值为`1` - `sales_count`: 金额,对应源数据中的`FREFUNDAMOUNTFOR` - `datetime_new`: 时间,对应源数据中的`FDate_new` - `Document_Type`: 单据类型,固定值为`付款退款` 这些字段将被映射到目标数据库表中的相应列。 ##### SQL插入语句解析 在`otherRequest`中定义了一个SQL插入语句: ```sql INSERT INTO `hc_kd_fktk` (`FEntity_FEntryID`, `order_no_new`, `FDocumentStatus`, `qty_count`, `sales_count`, `datetime_new`, `Document_Type`) VALUES (:FEntity_FEntryID, :order_no_new, :FDocumentStatus, :qty_count, :sales_count, :datetime_new, :Document_Type) ``` 该语句用于将转换后的数据插入到目标表`hc_kd_fktk`中。 ##### 实现步骤 1. **提取和清洗源数据**:假设我们已经从金蝶系统中提取了付款退款单的数据,并进行了必要的清洗。 2. **构建请求参数**:根据元数据配置,将提取的数据映射到请求参数中。例如: ```json { "main_params": { "FEntity_FEntryID": "12345", "order_no_new": "ORD67890", "FDocumentStatus": "Approved", "qty_count": "1", "sales_count": "1000.00", "datetime_new": "2023-10-01T12:00:00Z", "Document_Type": "付款退款" } } ``` 3. **调用API接口**:使用POST方法调用MySQLAPI接口,将构建好的请求参数传递给接口。 4. **执行SQL插入操作**:API接口接收到请求后,执行预定义的SQL插入语句,将数据写入目标数据库表中。 ##### 示例代码 以下是一个示例代码片段,展示如何通过Python脚本实现上述过程: ```python import requests import json # 构建请求参数 data = { "main_params": { "FEntity_FEntryID": "12345", "order_no_new": "ORD67890", "FDocumentStatus": "Approved", "qty_count": "1", "sales_count": "1000.00", "datetime_new": "2023-10-01T12:00:00Z", "Document_Type": "付款退款" } } # API URL url = 'http://your-mysql-api-endpoint/execute' # 发送POST请求 response = requests.post(url, json=data) # 检查响应状态 if response.status_code == 200: print("Data inserted successfully") else: print("Failed to insert data:", response.text) ``` 通过上述步骤和代码示例,我们实现了从金蝶系统提取付款退款单的数据,并通过ETL转换后,成功地将其写入到目标平台MySQL数据库中。这一过程充分利用了轻易云数据集成平台的强大功能,实现了异构系统间的数据无缝对接。 ![钉钉与ERP系统接口开发配置](https://pic.qeasy.cloud/T11.png~tplv-syqr462i7n-qeasy.image)