轻易云平台实现ETL转换:金蝶云星空API数据写入案例

  • 轻易云集成顾问-冯潇
### 金蝶云星空与金蝶云星空的数据集成:收款退款单OK_腾晖copy案例分析 在系统集成和数据处理领域,确保不同业务系统间的无缝对接尤为重要。本次分享的技术案例即是通过轻易云数据集成平台,实现金蝶云星空之间的数据对接,即将“收款退款单OK_腾晖copy”方案成功运行。 本案例主要利用轻易云平台所提供的一系列高效功能,包括高吞吐量的数据写入能力、实时监控与告警系统、自定义数据转换逻辑,以及稳定可靠的API调用。通过这些特性,我们确保了海量数据能够快速、安全地被集成到目标金蝶云星空系统中,并实现全流程透明化管理。 首先,我们需要从源金蝶云星空系统获取必要的交易信息,这一过程采用executeBillQuery API进行定时可靠地抓取。在具体实施过程中,解决API分页和限流问题是关键,通过设置合理参数保证每次请求都能完整、高速返回所需数据。同时,自定义转换逻辑使得获取的数据格式完全符合目标系统要求。 其次,在进行批量数据写入操作时,使用batchSave API可以大幅提升处理效率。为了保障整个写入过程不漏单且准确无误,本方案引入了严格的数据质量监控机制及异常检测,一旦发现问题立即触发告警并执行错误重试机制,从而避免任何潜在风险。 另一方面,由于实际业务环境复杂多变,为适应具体需求,我们特别设计了一套灵活可扩展的映射规则以及控制台视图,使得开发者能够直观便捷地掌握每个环节。这些措施不仅优化了资源配置,还提高了整个接口调用流程的稳定性和安全性。 综上,本案例展示了如何在复杂业务场景下借助先进工具完成高效、稳定且可跟踪的数据集成任务。接下来我们将详细解析该方案中的各个技术细节与实现步骤。 ![钉钉与ERP系统接口开发配置](https://pic.qeasy.cloud/D9.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口,获取并加工收款退款单的数据。 #### 接口配置与请求参数 首先,我们需要配置接口的元数据,以确保能够正确调用金蝶云星空的API。以下是元数据配置的关键部分: ```json { "api": "executeBillQuery", "method": "POST", "number": "FBillNo", "id": "FREFUNDBILLENTRY_FEntryID", "pagination": {"pageSize": 500}, "idCheck": true, "request": [ {"field":"FREFUNDBILLENTRY_FEntryID","label":"FREFUNDBILLENTRY_FEntryID","type":"string","value":"FREFUNDBILLENTRY_FEntryID"}, {"field":"FID","label":"实体主键","type":"string","value":"FID"}, {"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"}, // ...(省略其他字段) ], "otherRequest": [ {"field":"Limit","label":"最大行数","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_PAGE_SIZE}"}, {"field":"StartRow","label":"开始行索引","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_START_ROW}"}, {"field":"FilterString","label":"过滤条件","type":"string","describe":"示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=","value":"FDATE ='2024-09-26 00:00:00' and FCONTACTUNIT.FNumber='PDD15'"}, {"field":"FieldKeys","label":"需查询的字段key集合","type":"array","describe":"金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber"} ] } ``` #### 请求构建与发送 根据上述元数据配置,我们可以构建请求体并发送POST请求。以下是一个示例请求体: ```json { "FormId": "AR_REFUNDBILL", "FieldKeys": [ "FBillNo", "FID", // ...(其他需要查询的字段) ], "FilterString": "FDATE ='2024-09-26 00:00:00' and FCONTACTUNIT.FNumber='PDD15'", "Limit": 500, "StartRow": 0 } ``` 通过轻易云平台,我们可以利用可视化界面方便地配置这些参数,并实时监控请求状态和返回结果。 #### 数据处理与清洗 获取到原始数据后,需要对其进行清洗和转换,以满足业务需求。例如,可能需要将日期格式统一、过滤掉无效记录或计算某些字段值。以下是一些常见的数据处理操作: 1. **日期格式转换**: 将所有日期字段统一转换为标准格式,如`YYYY-MM-DD`。 ```python from datetime import datetime def convert_date_format(date_str): return datetime.strptime(date_str, '%Y-%m-%d %H:%M:%S').strftime('%Y-%m-%d') ``` 2. **无效记录过滤**: 根据业务规则,过滤掉某些状态下的记录,例如只保留审核通过的单据。 ```python def filter_valid_records(records): return [record for record in records if record['FDOCUMENTSTATUS'] == 'C'] ``` 3. **字段计算**: 根据业务需求,计算新的字段值,例如计算应退金额和实退金额之间的差异。 ```python def calculate_difference(record): record['RefundDifference'] = float(record['FREFUNDTOTALAMOUNT']) - float(record['FREALREFUNDAMOUNT']) return record ``` #### 数据写入目标系统 经过清洗和转换的数据,需要写入目标系统。这一步通常涉及到调用目标系统的API,将处理后的数据批量插入或更新。轻易云平台支持多种异构系统间的数据无缝对接,可以方便地实现这一过程。 例如,将处理后的数据写入另一个数据库或ERP系统: ```python def write_to_target_system(processed_data): # 假设目标系统提供了一个批量插入API target_api_url = 'https://target-system.example.com/api/batch_insert' response = requests.post(target_api_url, json=processed_data) if response.status_code == 200: print("Data successfully written to target system.") else: print(f"Failed to write data: {response.text}") ``` 通过以上步骤,我们完成了从调用金蝶云星空接口获取数据,到清洗、转换,再到写入目标系统的整个过程。这一过程在轻易云平台上实现,全程可视化操作,大大提升了效率和透明度。 ![用友与外部系统接口集成开发](https://pic.qeasy.cloud/S1.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现ETL转换并写入金蝶云星空API接口的技术案例 在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL转换,并转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。本文将详细探讨如何通过轻易云数据集成平台配置元数据,实现这一过程。 #### 1. 配置API接口 首先,我们需要配置金蝶云星空的API接口。根据提供的元数据配置,使用`batchSave` API进行批量保存操作。请求方法为POST,并且需要进行ID校验。 ```json { "api": "batchSave", "method": "POST", "idCheck": true, ... } ``` #### 2. 定义操作方法与字段映射 在操作方法中,我们使用`merge`方法,将多个字段合并到一个请求体中。主要字段包括:单据类型(FBillTypeID)、日期(FDATE)、往来类型(FCONTACTUNITTYPE)、往来单位(FCONTACTUNIT)等。 ```json { "operation": { "method": "merge", "field": "FBillTypeID,FBillNo,FDATE,FPAYORGID", "bodyName": "details", ... } } ``` #### 3. 配置请求字段 接下来,我们需要配置每个请求字段及其解析器。例如,单据类型(FBillTypeID)使用`ConvertObjectParser`解析器,将其参数设置为`FNumber`,并指定值为`SKTKDLX01_SYS`。 ```json { "field": "FBillTypeID", "label": "单据类型", "type": "string", "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, "value": "SKTKDLX01_SYS" } ``` 其他字段如日期(FDATE)、往来单位类型(FCONTACTUNITTYPE)、收款单位类型(FRECTUNITTYPE)等也需要进行类似配置。 #### 4. 子级明细配置 对于明细部分,需要定义子级字段。例如,结算方式(FSETTLETYPEID)、原收款用途(FPURPOSEID)、退款金额(FREFUNDAMOUNTFOR)等。这些字段同样使用解析器进行转换,并指定其父级为`FREFUNDBILLENTRY`。 ```json { "field": "FSETTLETYPEID", "label": "结算方式", "type": "string", ... } ``` #### 5. 请求体结构 完整的请求体结构如下: ```json { ... { "field": "FormId", ... {"value":"AR_REFUNDBILL"}, ... {"value":"BatchSave"}, ... {"value":"false"}, ... {"value":"false"} } } ``` #### 6. 数据转换与写入 在完成上述配置后,轻易云数据集成平台会自动将源平台的数据进行ETL转换,并生成符合金蝶云星空API接口要求的数据格式。最终,通过POST请求将转换后的数据写入目标平台。 通过这种方式,我们能够高效地实现不同系统间的数据无缝对接,并确保数据在传输和处理过程中的准确性和一致性。这不仅提高了业务流程的透明度和效率,还大大简化了系统集成的复杂性。 ![用友与MES系统接口开发配置](https://pic.qeasy.cloud/T19.png~tplv-syqr462i7n-qeasy.image)