使用轻易云平台进行ETL转换并将数据写入金蝶云星空

  • 轻易云集成顾问-吴伟
### 案例分享:金蝶云星空数据集成到金蝶云星空 - 收款退款单OK方案 在本案例中,我们将探讨如何实现金蝶云星空的数据从一个系统安全快捷地集成到另一个系统,特别是针对收款退款单(OK)的具体应用。为了保证这一过程的高效和精准,我们采用了轻易云数据集成平台,通过该平台提供的一系列功能,实现对数据处理全过程的严密监控与管理。 #### 技术背景及挑战 在执行收款退款单的对接过程中,面临着多个技术难题需要解决: 1. **大量数据快速写入**:确保大批量的数据能够及时,同步至目标系统。 2. **实时监控与异常检测**:监测任务状态及性能,并及时处理可能出现的错误。 3. **接口调用优化**:执行executeBillQuery获取源数据后,正确调用batchSave完成目标存储,需要兼顾分页、限流等问题。 #### 方案设计 首先,我们通过`executeBillQuery` API 从源金蝶云星空获取所需的收款退款单数据。这一步骤要求我们处理API返回的大量分页结果,同时确保不遗漏任何一条必要的信息。在这过程中,为应对API限制和潜在网络问题,还需要设计健壮的数据抓取重试机制,以提升整体稳定性。 随后,通过自定义转换逻辑,将源数据映射到符合目标系统接受格式的数据结构。考虑到业务需求差异,自定义转换不仅可以保护已有业务流程免受变更影响,还能进一步优化并简化新的业务操作流程。 最后,在将处理好的数据信息,通过`batchSave` API 写入到目标金蝶云星空之前,再次进行完整性检查以及格式校验。从而确保所有传输和存储步骤都满足高质量标准,不泄露、不丢失关键业务信息。 #### 实现细节 - **高吞吐量写入能力**: 借助轻易云平台强大的高吞吐能力,大幅缩短了从原始提取、处理中间层再至最终保存每个环节所需时间,有效提高C端用户体验感知速度。 - **集中监控告警系统**: 集中式控制台实现在整个实施过程中,对各节点,包括API请求状态、成功率、响应时间等进行全方位实时预警管理,便捷地定位排障,提高项目稳定运行保障。 - **自定义转化工具支持**: 强大的可视化编辑环境使多维字段映射关系,可以根据不同输出导向灵活配置生成最优质匹配设置实例。 以上只是构建经济型, 高效性实践中的部分亮点展示。详细内容将在下一节深入 ![打通用友BIP数据接口](https://pic.qeasy.cloud/D36.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在轻易云数据集成平台的生命周期中,调用源系统接口获取数据是关键的第一步。本文将详细探讨如何通过调用金蝶云星空的`executeBillQuery`接口来获取收款退款单的数据,并进行必要的加工处理。 #### 接口配置与请求 首先,我们需要配置调用金蝶云星空接口的元数据。以下是元数据配置示例: ```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"}, {"field":"FDOCUMENTSTATUS","label":"单据状态","type":"string","value":"FDOCUMENTSTATUS"}, {"field":"FCreaterId","label":"创建人","type":"string","value":"FCreaterId"}, {"field":"FCreateDate","label":"创建日期","type":"string","value":"FCreateDate"}, {"field":"FSETTLEORGID.FNumber","label":"结算组织","type":"string","value":"FSETTLEORGID"}, {"field":"FApproveDate","label":"审核日期","type":"string","value":"FApproveDate"} ], "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": "FApproveDate>='{{LAST_SYNC_TIME|date}}'"}, {"field": "FieldKeys", "label": "需查询的字段key集合", "type": "array", "describe": "金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber", "parser":{ "name": "ArrayToString", "params": "," } }, {"field": "FormId", "label": "业务对象表单Id", "type": "string", "describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder", "value": "AR_REFUNDBILL" } ] } ``` #### 请求参数解析 1. **API和方法**: - `api`: 指定要调用的API名称,这里是`executeBillQuery`。 - `method`: HTTP请求方法,使用`POST`。 2. **分页设置**: - `pagination.pageSize`: 设置每次请求返回的数据条数,这里设置为500。 3. **字段映射**: - `number`: 单据编号字段。 - `id`: 分录主键字段。 4. **请求字段**: - 配置了多个字段,如`FBillNo`(单据编号)、`FID`(实体主键)、`FDOCUMENTSTATUS`(单据状态)等。这些字段将用于构建请求体。 5. **其他请求参数**: - `Limit`, `StartRow`: 用于分页控制。 - `FilterString`: 用于过滤条件,例如按审核日期过滤。 - `FieldKeys`: 指定需要查询的字段集合。 - `FormId`: 指定业务对象表单ID,这里是`AR_REFUNDBILL`。 #### 构建请求体 根据上述配置,我们可以构建一个具体的请求体。例如: ```json { "FormId": "AR_REFUNDBILL", "FieldKeys": [ "FBillNo", ... ], ... } ``` #### 数据清洗与转换 在获取到原始数据后,需要对数据进行清洗和转换,以便后续处理。以下是一些常见的数据清洗与转换操作: 1. **数据类型转换**:将字符串类型的数据转换为适当的数据类型,如日期、数字等。 2. **缺失值处理**:处理缺失值,可以选择填充默认值或删除记录。 3. **格式化**:对日期、金额等字段进行格式化处理。 例如,对于日期字段,可以使用如下代码进行格式化: ```python from datetime import datetime def format_date(date_str): return datetime.strptime(date_str, '%Y-%m-%d').strftime('%Y-%m-%d') ``` #### 数据写入 经过清洗和转换后的数据,可以写入目标系统或数据库。这里我们假设目标系统支持批量写入操作,可以一次性提交多条记录,提高效率。 ```python def write_to_target_system(data): # 假设target_system_api是目标系统的API客户端 target_system_api.bulk_insert(data) ``` 通过以上步骤,我们实现了从金蝶云星空获取收款退款单数据,并进行了必要的数据清洗和转换,最终将处理后的数据写入目标系统。这一过程确保了数据的一致性和准确性,为后续的数据分析和业务决策提供了可靠的数据基础。 ![企业微信与ERP系统接口开发配置](https://pic.qeasy.cloud/S21.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将源数据转换并写入金蝶云星空API接口 在数据集成的生命周期中,ETL(Extract, Transform, Load)过程是至关重要的一环。本文将重点探讨如何使用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,最终写入金蝶云星空API接口。 #### 元数据配置解析 在本案例中,我们需要将收款退款单的数据转换为金蝶云星空API所能接受的格式,并通过`batchSave`接口写入目标平台。以下是元数据配置的详细解析: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "method": "merge", "field": "FBillTypeID,FBillNo,FDATE,FPAYORGID", "bodyName": "details", "header": ["FBillTypeID", "FDATE", "FCONTACTUNITTYPE", "FCONTACTUNIT", "FRECTUNITTYPE", "FRECTUNIT", "FCURRENCYID", "FSETTLEORGID", "FSALEORGID", "FBUSINESSTYPE", "FEXCHANGERATE", "FPAYORGID", "FSETTLEMAINBOOKID", "FBillNo", "FSALEORDERNUMBER"], "body": ["FSETTLETYPEID", "FPURPOSEID", "FRECTOTALAMOUNTFOR", "FACCOUNTID", "FNOTE", "FPayType", "FREALREFUNDAMOUNTFOR_D","FREFUNDAMOUNTFOR_E","FPOSTDATE","FSALEORDERNUMBER"] }, ... } ``` #### 数据请求与清洗 首先,确保从源系统获取的数据能够匹配目标系统的字段要求。在元数据配置中,通过`request`字段定义了每个需要转换的字段及其对应关系。例如: ```json { ... { "field": "FBillTypeID", "label": "单据类型", ... "value": "{FBillTypeID}" }, { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... ![如何对接金蝶云星空API接口](https://pic.qeasy.cloud/T29.png~tplv-syqr462i7n-qeasy.image)