实现跨系统数据集成:从金蝶云星空到轻易云平台的完整流程

  • 轻易云集成顾问-卢剑航
### 案例分享:金蝶云星空数据集成到轻易云集成平台 在本次技术案例中,我们将重点介绍如何通过轻易云数据集成平台,成功对接和处理金蝶云星空系统的数据。这一方案的核心目标是高效、安全且可靠地完成“查询金蝶辅助资料(公司)”这一任务,并确保每一步骤的透明度和可监控性。 为实现这一目标,我们利用了金蝶云星空提供的API接口`executeBillQuery`来获取业务所需的数据。该接口支持复杂查询条件并返回结构化数据,这使得我们可以精确地提取出特定公司的辅助资料。然而,面对大量查询结果及其分页特性,以及潜在的限流问题,需要仔细设计和优化调用逻辑,以确保数据完整无漏单。 一方面,通过调研与实验,我们发现轻易云集成平台不仅具备强大的批量写入能力,还能灵活应对不同格式的数据转换需求。在实际操作中,应用其"写入空操作" API,可以迅速将从金蝶系统获取的大量业务数据整合到统一的平台环境中。此外,该平台还内置了一套完善的异常处理与错误重试机制,大大提升了整体流程的稳定性。 在此过程中,针对跨系统间可能存在的数据格式差异问题,我们设计了一系列映射规则,将来自金蝶的数据准确转化为适配轻易云标准。通过实时监控及日志记录功能,每个步骤都被严密追踪,实现全程透明管理,从而及时发现并解决潜在的问题。 尽管这只是我们整个方案的一部分,但它展示了从API调用开始,到最终写入数据库,各环节之间紧密衔接的重要性。接下来,将详细描述如何具体实施这些关键步骤,并进一步探讨相关配置与技术要点。 ![用友BIP接口开发配置](https://pic.qeasy.cloud/D26.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口,以获取并加工数据。 #### 接口配置与请求参数 首先,我们需要理解元数据配置中的各个字段及其含义。以下是元数据配置的详细解析: - **api**: `"executeBillQuery"`,表示调用的API名称。 - **method**: `"POST"`,表示使用HTTP POST方法进行请求。 - **number**: `"FNumber"`,用于标识记录的唯一编号。 - **id**: `"FNumber"`,同样用于标识记录的唯一编号。 - **pagination**: `{"pageSize":500}`,分页参数,每页返回500条记录。 请求参数部分: - **request**: - `{"field":"FNumber","label":"编码","type":"string","value":"FNumber"}`:表示查询结果中包含编码字段。 - `{"field":"FDataValue","label":"数据状态","type":"string","value":"FDataValue"}`:表示查询结果中包含数据状态字段。 - `{"field":"FId","label":"FId","type":"string","value":"FId.fnumber"}`:表示查询结果中包含ID字段。 其他请求参数: - **otherRequest**: - `{"field":"Limit","label":"最大行数","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_PAGE_SIZE}"}`:设置每次查询返回的最大行数。 - `{"field":"StartRow","label":"开始行索引","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_START_ROW}"}`:设置查询起始行索引。 - `{"field":"TopRowCount","label":"返回总行数","type":"int","describe":"金蝶的查询分页参数"}`:设置返回总行数。 - `{"field":"FilterString","label":"过滤条件","type":"string","describe":"示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=","value":"FModifyDate>='{{LAST_SYNC_TIME|datetime}}' and FId.fnumber='GS'"}`:设置过滤条件,例如根据修改日期和ID进行过滤。 - `{"field":"FieldKeys","label":"需查询的字段key集合","type":"array","describe":"金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber"}`:设置需要查询的字段集合,并通过`ArrayToString`解析器将数组转换为字符串。 - `{"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"BOS_ASSISTANTDATA_DETAIL"}`:指定业务对象表单ID,这里为`BOS_ASSISTANTDATA_DETAIL`。 #### 实际调用与数据处理 在实际操作中,我们需要按照上述配置构建请求,并通过轻易云平台发送HTTP POST请求到金蝶云星空API。以下是一个示例请求体: ```json { "FormId": "BOS_ASSISTANTDATA_DETAIL", "FieldKeys": "FNumber,FDataValue,FId.fnumber", "FilterString": "FModifyDate>='2023-01-01' and FId.fnumber='GS'", "Limit": 500, "StartRow": 0 } ``` 该请求体包含了表单ID、需要查询的字段、过滤条件以及分页参数。发送此请求后,我们可以获得符合条件的数据记录。 #### 数据清洗与转换 获取到原始数据后,需要对其进行清洗和转换,以满足目标系统的数据格式要求。例如,将日期格式统一、去除无效字符等。以下是一个简单的数据清洗示例: ```python import pandas as pd # 假设我们已经从API获得了JSON格式的数据 data = [ {"FNumber": "001", "FDataValue": "Active", "FId.fnumber": "GS001"}, {"FNumber": "002", "FDataValue": "Inactive", "FId.fnumber": "GS002"} ] # 转换为DataFrame进行处理 df = pd.DataFrame(data) # 清洗和转换操作,例如去除无效字符、统一日期格式等 df['FDataValue'] = df['FDataValue'].str.strip() df['ProcessedDate'] = pd.to_datetime('now') print(df) ``` 通过上述步骤,我们可以完成从源系统获取数据并进行初步处理,为后续的数据转换与写入做好准备。 #### 小结 本文详细介绍了如何通过轻易云数据集成平台调用金蝶云星空接口`executeBillQuery`获取并加工数据,包括接口配置、实际调用和数据清洗等关键步骤。这一过程是整个数据集成生命周期中的重要环节,为实现不同系统间的数据无缝对接奠定了基础。 ![电商OMS与WMS系统接口开发配置](https://pic.qeasy.cloud/S7.png~tplv-syqr462i7n-qeasy.image) ### 利用轻易云数据集成平台进行ETL转换并写入目标平台 在数据集成的过程中,ETL(Extract, Transform, Load)是一个关键步骤。本文将重点探讨如何利用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,转为目标平台轻易云集成平台API接口所能够接收的格式,最终写入目标平台。 #### 数据提取与清洗 首先,从源系统中提取原始数据。这一步通常涉及到对不同系统的数据进行统一的抽取操作。在轻易云数据集成平台中,这一步可以通过配置相应的数据源连接和数据抽取规则来实现。为了确保数据质量,需要在提取过程中进行初步的数据清洗,包括去重、补全缺失值、规范化字段格式等。 ```json { "sourceSystem": "Kingdee", "dataExtractionRule": { "table": "AuxiliaryData", "fields": ["CompanyID", "CompanyName", "Address", "Contact"], "filter": { "status": "active" } } } ``` #### 数据转换 在完成数据提取和清洗之后,下一步是将这些数据转换为目标平台所能接受的格式。这个过程包括字段映射、数据类型转换以及业务逻辑处理等。 1. **字段映射**:将源系统中的字段映射到目标系统中对应的字段。例如,将`CompanyID`映射为`id`,将`CompanyName`映射为`name`。 2. **数据类型转换**:确保源系统中的数据类型与目标系统中的要求一致。例如,将字符串类型的日期转换为日期对象。 3. **业务逻辑处理**:根据业务需求,对某些字段进行计算或处理。例如,根据地址生成地理坐标等。 ```json { "transformationRule": { "mapping": { "CompanyID": "id", "CompanyName": "name", "Address": "location", "Contact": "contactInfo" }, "typeConversion": { "id": "integer", "name": "string", "location": { "type": "string", "format": "[Address]" }, "contactInfo": { "type": "object", "fields": ["phone", "email"] } }, "businessLogicProcessing": { // Custom logic here } } } ``` #### 数据写入 在完成了上述的数据转换之后,最后一步是将这些转换后的数据写入到目标平台。在轻易云集成平台中,可以通过调用相应的API接口来实现这一点。以下是一个示例配置,展示了如何通过POST请求将处理后的数据写入目标系统: ```json { "apiEndpoint": "/api/v1/companies", "method": "POST", "_metadataConfig_":{ "_api_":"写入空操作", "_method_":"POST", "_idCheck_":"true" }, "_payload_":{ "_id_":"{{id}}", "_name_":"{{name}}", "_location_":"{{location}}", "_contactInfo_":{ "_phone_":"{{contact.phone}}", "_email_":"{{contact.email}}" } } } ``` 在这个配置中,我们定义了API端点和HTTP方法,同时指定了元数据配置,包括是否需要进行ID检查等。然后,通过模板语法,将转换后的字段值插入到请求负载中。 #### 实时监控与错误处理 轻易云数据集成平台提供了实时监控功能,可以帮助我们跟踪每个ETL任务的执行状态。如果出现错误,可以通过日志和告警机制快速定位并解决问题。例如,如果某个记录因为ID冲突而无法插入,可以在日志中找到详细的错误信息,并采取相应措施进行修正。 ```json { "_monitoringConfig_":{ "_enableRealTimeMonitoring_":"true", "_errorHandlingStrategy_":{ "_onConflict_":"ignore" // Other strategies: retry, alert, etc. } } } ``` 综上所述,通过合理配置轻易云数据集成平台的各项功能,可以高效地完成从源系统到目标系统的数据ETL过程,实现不同系统间的数据无缝对接。 ![钉钉与WMS系统接口开发配置](https://pic.qeasy.cloud/T13.png~tplv-syqr462i7n-qeasy.image)