使用轻易云平台实现金蝶云星空API接口的数据ETL转换

  • 轻易云集成顾问-钟家寿
### 金蝶云星空数据集成案例:收款单-新2024813浩悦新_copy 在企业复杂的数据管理需求中,实现不同系统间的数据高效集成是提高运营效率和决策质量的关键。本文将详细分享一个实际运行的技术案例——“金蝶云星空数据集成到金蝶云星空”,方案名称为“收款单-新2024813浩悦新_copy”。本文直接进入技术层面,探讨如何通过API接口实现高质量、高效能的系统对接。 在本次案例中,我们使用了金蝶云星空提供的一系列API,包括获取数据的`executeBillQuery`接口和写入数据的`batchSave`接口。我们的目标是确保大量收款单数据能够无缝、准确地从一个实例传输并存储至另一个实例,同时保持系统性能的稳定性和可靠性。 首先,为了满足业务需要,在设计过程中我们充分利用了以下几个关键特性: 1. **支持自定义数据转换逻辑**:为了适应两个系统之间可能存在的数据格式差异,我们实现了灵活的数据映射机制,确保所有字段都能够正确匹配,并且处理特殊字符和异常情况。 2. **集中监控与告警**:整个任务执行期间,通过实时监控完成对任务状态及性能指标的跟踪,及时发现并处理任何潜在问题,从而保障任务顺利进行。这极大提升了该方案在生产环境中的可操作性。 3. **高吞吐量的数据写入能力**:面对每天海量交易记录,我们充分利用轻易云平台所提供的大批量快速写入功能,使得大量收款单记录可以迅速、准确地同步到新的金蝶云星空环境中,不影响原有业务连续性。 4. **分页与限流机制处理**: 通过采用分页查询机制来分段拉取大规模记录,同时设置合理限流策略避免因请求频繁导致服务器压力过大的问题,进一步增强整体解决方案稳定性。 5. **异常处理与重试机制**:实施了一套健全错误捕捉及自动重试逻辑,对于网络波动或短暂失效等情况,可以自动重新尝试连接,有效减少人工介入次数,提高工作效率。 接下来章节,将具体阐述每一步骤实现细节,包括初始化配置、API调用流程、自定义转换规则以及相关日志输出分析等内容。希望通过这个实际应用场景,为用户提供更多实用性的技术参考。 ![如何开发企业微信API接口](https://pic.qeasy.cloud/D5.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据的技术案例 在数据集成过程中,调用源系统接口是关键的一步。本文将详细介绍如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口来获取并加工数据。 #### 接口调用配置 首先,我们需要配置调用金蝶云星空接口的元数据。以下是一个典型的元数据配置示例: ```json { "api": "executeBillQuery", "method": "POST", "number": "FBillNo", "id": "FRECEIVEBILLENTRY_FEntryID", "pagination": { "pageSize": 500 }, "idCheck": true, "condition_bk": [ [ { "field": "field1", "logic": "eqv2", "value": null } ] ], "request": [ {"field":"FID","label":"实体主键","type":"string","value":"FID"}, {"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"}, {"field":"FDOCUMENTSTATUS","label":"单据状态","type":"string","value":"FDOCUMENTSTATUS"}, {"field":"FCreatorId","label":"创建人","type":"string","value":"FCreatorId"}, {"field":"FAPPROVERID","label":"审核人","type":"string","value":"FAPPROVERID"}, {"field":"FCreateDate","label":"创建日期","type":"string","value":"FCreateDate"}, {"field":"FSETTLEORGID","label":"结算组织","type":"string","value":"FSETTLEORGID.FNumber"}, {"field":"FApproveDate","label":"审核日期","type":"string","value":"FApproveDate"}, {"field":"FSALEORGID","label":"销售组织","type":"string","value":"FSALEORGID.FNumber"}, {"field":"FEXCHANGETYPE","label":"汇率类型","type":"string","value":"FEXCHANGETYPE"}, {"field":"FRECEIVEAMOUNTFOR_H","label":"表头-应收金额","type":"string","value":"FRECEIVEAMOUNTFOR_H"}, // ...(省略部分字段) ], "otherRequest": [ { "field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "2000" }, { "field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}" }, { "field": "TopRowCount", "label": "返回总行数", "type": "int", "describe": "" }, { "field": "FilterString", "label": "", // 示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>= // value: 动态生成过滤条件 // e.g., FDATE >='{{LAST_SYNC_TIME|date}}' and ( FCONTACTUNIT.FNumber = 'TM0007' or FCONTACTUNIT.FNumber = 'FX133' or FCONTACTUNIT.FNumber = 'XHS09' ) }, { // FieldKeys: 金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber // parser: ArrayToString with params "," ``` #### 数据请求与清洗 在配置好元数据后,我们可以通过轻易云平台发起对金蝶云星空接口的请求。以下是一个示例代码片段,展示了如何通过HTTP POST方法调用`executeBillQuery`接口: ```python import requests url = 'https://api.kingdee.com/executeBillQuery' headers = {'Content-Type': 'application/json'} payload = { # 根据元数据配置填充请求体 } response = requests.post(url, headers=headers, json=payload) if response.status_code == 200: data = response.json() else: print(f"Error: {response.status_code}") ``` 在获取到原始数据后,需要对其进行清洗和转换,以便后续的数据处理和写入操作。清洗过程包括: 1. **字段映射**:将原始字段名映射为目标系统所需的字段名。 2. **数据类型转换**:确保每个字段的数据类型符合目标系统的要求。 3. **过滤无效数据**:去除不符合业务逻辑的数据记录。 #### 数据转换与写入 清洗后的数据需要进一步转换,以适应目标系统的数据结构。以下是一个简单的数据转换示例: ```python def transform_data(raw_data): transformed_data = [] for record in raw_data: transformed_record = { 'id': record['FID'], 'bill_no': record['FBillNo'], 'status': record['FDOCUMENTSTATUS'], # ...(其他字段映射) } transformed_data.append(transformed_record) return transformed_data ``` 最后,将转换后的数据写入目标系统。这一步通常涉及到调用目标系统的API接口,具体实现方式取决于目标系统的API规范。 #### 总结 通过上述步骤,我们实现了从金蝶云星空获取并加工数据的全过程。在实际操作中,需要根据具体业务需求调整元数据配置和处理逻辑,以确保数据集成过程高效、准确地完成。 ![金蝶与SCM系统接口开发配置](https://pic.qeasy.cloud/S8.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现金蝶云星空API接口的数据ETL转换 在数据集成的生命周期中,将源平台的数据进行ETL转换并写入目标平台是关键步骤之一。本文将详细探讨如何利用轻易云数据集成平台,将源平台的数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。 #### 1. API接口配置 首先,我们需要配置金蝶云星空的API接口。根据提供的元数据配置,目标API为`batchSave`,请求方法为`POST`。以下是主要的配置字段及其含义: - `FBillNo`:单据编号 - `FSETTLEORGID`:结算组织 - `FDATE`:业务日期 - `FCURRENCYID`:币别 - `FBillTypeID`:单据类型 - `FCONTACTUNITTYPE`:往来单位类型 - `FCONTACTUNIT`:往来单位 - `FPAYUNITTYPE`:付款单位类型 - `FPAYUNIT`:付款单位 - `FBUSINESSTYPE`:业务类型 - `FPAYORGID`:收款组织 - `FSETTLECUR`:结算币别 #### 2. 数据转换与映射 在进行数据转换时,需要特别注意字段的映射和解析。例如: ```json { "field": "FSETTLEORGID", "label": "结算组织", "type": "string", "describe": "结算组织", "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, "value": "111", "mapping": "6355fe20c4a6d536d27cd8dc", "mappingDirection": "positive" } ``` 上述配置中,使用了名为`ConvertObjectParser`的解析器,将结算组织字段(FSETTLEORGID)从源系统格式转换为目标系统所需的格式,并通过映射关系确保数据的一致性。 #### 3. 收款单明细处理 对于收款单明细(FRECEIVEBILLENTRY),我们需要处理多个子字段,如下所示: ```json { "field": "FRECEIVEBILLENTRY", "label": "收款单明细", "type": "array", "children": [ { "field": "FSETTLETYPEID", "label": "结算方式", "type": "string", "describe": "默认现金", ... }, { ... } ], ... } ``` 每个子字段都需要进行相应的解析和映射,例如: ```json { "field": "FACCOUNTID", "label": "我方银行账号", ... } ``` 通过这种方式,可以确保所有明细字段都能正确地转换和传输。 #### 4. 请求参数构建 在完成所有字段的解析和映射后,我们需要构建最终的请求参数。以下是一个示例请求体: ```json { "FormId": "AR_RECEIVEBILL", "Operation": { ... }, ... } ``` 其中,重要的是要确保所有必要字段都已填充,并且符合金蝶云星空API接口的要求。 #### 5. 数据写入与验证 最后一步是将构建好的请求体通过API接口写入金蝶云星空。在这一过程中,需要注意以下几点: 1. **提交并审核**:是否自动提交并审核,通常设置为false。 2. **验证基础资料**:是否验证所有基础资料有效性,通常设置为false。 ```json { ... { ... { ... { ... { ... } } } } } ``` 通过以上步骤,我们可以确保源平台的数据经过ETL转换后,能够无缝对接到金蝶云星空,实现高效的数据集成。 ![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/T3.png~tplv-syqr462i7n-qeasy.image)