ETL转换与写入金蝶云星空API接口的技术实现

  • 轻易云集成顾问-卢剑航
### 从旺店通·企业奇门到金蝶云星空:数据集成的落地实践 在系统集成工作中,将不同平台的数据高效且可靠地对接,是我们面临的重要任务。本文分享了一个典型案例,即通过`盘盈单4同步金蝶其他入库RK_查询覆盖`方案,实现旺店通·企业奇门与金蝶云星空之间的数据集成。 为确保旺店通·企业奇门中的数据不漏单,我们调用了其API接口`wdt.stockin.order.query`,从而定时可靠抓取库存相关的数据。针对大批量数据的处理,通过轻易云数据集成平台,我们可以快速写入这些数据到金蝶云星空,使用其提供的API接口`batchSave`完成批量操作。这一切不仅有效提高了效率,还保证了数据的一致性和准确性。 在整个过程中,需要特别注意处理分页和限流的问题,以避免因请求频率过高导致服务端响应压力。同时,由于两个系统间的数据格式可能存在差异,需要在映射关系上进行定制化设置,确保字段对应完美无误。此外,在错误重试机制上做足防护措施也是必不可少的一环,它能保障对接过程中万一出现异常情况时自动重新尝试,从而提升整体流程的稳定性。 最后,为进一步加强监控和日志管理,我们引入实时监控功能及详细日志记录,对每一步操作细节进行跟踪。这不仅让开发团队能够及时发现并解决潜在问题,也为后续优化提供详实依据。 ![钉钉与WMS系统接口开发配置](https://pic.qeasy.cloud/D28.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台调用旺店通·企业奇门接口wdt.stockin.order.query获取并加工数据 在数据集成生命周期的第一步中,调用源系统接口获取数据是至关重要的一环。本文将详细探讨如何使用轻易云数据集成平台调用旺店通·企业奇门接口`wdt.stockin.order.query`来获取盘盈单数据,并对其进行初步加工。 #### 接口调用配置 首先,我们需要配置接口的元数据,以确保能够正确地请求和接收所需的数据。以下是该接口的元数据配置: ```json { "api": "wdt.stockin.order.query", "method": "POST", "number": "order_no", "id": "stockin_id", "pagination": { "pageSize": 50 }, "condition_bk": [[]], "request": [ { "field": "start_time", "label": "开始时间", "type": "string", "value": "{{LAST_SYNC_TIME|datetime}}", "describe": "按最后修改时间增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss" }, { "field": "end_time", "label": "结束时间", "type": "string", "value": "{{CURRENT_TIME|datetime}}", "describe": "按最后修改时间增量获取数据,end_time作为结束时间,格式:yyyy-MM-dd HH:mm:ss" }, { "field": "order_type", "label": "源单据类别", "type": "string", "value": "4", "describe": "单据类别 1采购入库, 2调拨入库, 4盘盈入库, 5生产入库, 6其他入库, 7保修入库, 8纠错入库, 9初始化入库 10预入库11JIT退货入库12委外入库" }, { "field": "status", ... }, ... ], ... } ``` #### 请求参数详解 1. **开始时间和结束时间**:通过`start_time`和`end_time`字段,我们可以按最后修改时间增量获取数据。这两个字段分别使用占位符`{{LAST_SYNC_TIME|datetime}}`和`{{CURRENT_TIME|datetime}}`来动态生成请求时的具体时间点。 2. **源单据类别**:字段`order_type`设置为"4",表示我们只查询盘盈单的数据。 3. **分页处理**:为了处理大批量的数据,接口支持分页查询。我们通过设置`page_size`和`page_no`来控制每次请求的数据量和页码。 #### 数据请求与清洗 在完成接口配置后,我们可以发起POST请求以获取盘盈单的数据。以下是一个示例请求体: ```json { ... { ... { ... } } } ``` 返回的数据通常包含多个字段,如订单编号、仓库编号、上层单据编号等。在接收到这些数据后,需要进行初步清洗,以确保后续处理的准确性和一致性。例如: - **过滤无效数据**:移除状态为已取消或编辑中的记录。 - **格式转换**:将日期字符串转换为标准日期格式,以便于后续分析。 #### 数据转换与写入 经过清洗后的数据,可以进一步转换为目标系统所需的格式,并写入到相应的数据库或文件系统中。例如,将盘盈单信息同步到金蝶其他入库模块。此过程涉及到字段映射、值转换等操作。 ```json { ... } ``` 通过以上步骤,我们成功实现了从旺店通·企业奇门接口获取盘盈单数据,并进行了初步加工,为后续的数据处理打下了坚实基础。在实际应用中,还可以根据业务需求进一步优化和扩展这些操作,以提升整体效率和准确性。 ![用友与CRM系统接口开发配置](https://pic.qeasy.cloud/S30.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台:ETL转换与写入金蝶云星空API接口的技术案例 在数据集成生命周期的第二步,我们重点关注如何将已经集成的源平台数据进行ETL(提取、转换、加载)转换,并最终写入目标平台——金蝶云星空。以下是具体的技术实现过程。 #### API接口配置与请求参数 我们使用的是金蝶云星空的`batchSave` API接口,通过POST方法进行数据提交。以下是元数据配置中的关键字段及其解析方式: 1. **单据编号 (FBillNo)**: - 类型:字符串 - 来源:`{stockin_no}` 2. **单据类型 (FBillTypeID)**: - 类型:字符串 - 解析器:`ConvertObjectParser` - 参数:`FNumber` - 固定值:`QTRKD01_SYS` 3. **库存组织 (FStockOrgId)**: - 类型:字符串 - 解析器:`ConvertObjectParser` - 参数:`FNumber` - 固定值:`100` 4. **日期 (FDate)**: - 类型:字符串 - 来源:`{stockin_time}` 5. **供应商 (FSUPPLIERID)**: - 类型:字符串 - 解析器:`ConvertObjectParser` - 参数:`FNumber` 6. **部门 (FDEPTID)**: - 类型:字符串 - 解析器:`ConvertObjectParser` - 参数:`FNumber` - 固定值:`BM003` 7. **备注 (FNOTE)**: - 类型:字符串 - 来源:`{remark}` 8. **明细信息 (FEntity)**: 包含多个子字段,逐一介绍如下: a. **物料编码 (FMATERIALID)**: - 类型:字符串 - 解析器:`ConvertObjectParser` - 参数:`FNumber` - 来源于明细列表中的字段 `{{details_list.goods_no}}` b. **零售条形码 (FCMKBarCode)**: - 类型:字符串 c. **收货仓库 (FSTOCKID)**: - 类型:字符串 - 解析器:`ConvertObjectParser` - 参数:`FNumber` - 来源于 `warehouse_no` d. **实收数量 (FQty)**: - 类型:字符串 - 来源于明细列表中的字段 `{{details_list.goods_count}}` e. **批号 (FLOT)**: - 类型:字符串 - 解析器:`ConvertObjectParser` - 参数:`FNumber` - 来源于明细列表中的字段 `{{details_list.batch_no}}` f. **备注 (FEntryNote)**: - 类型:字符串 g. **成本价 (FPrice)**: - 类型:字符串 #### 请求示例 以下是一个完整的请求示例,展示了如何将上述元数据配置应用到实际的数据请求中: ```json { "FormId": "STK_MISCELLANEOUS", "IsVerifyBaseDataField": true, "Operation": "Save", "IsAutoSubmitAndAudit": true, "Model": { "FBillNo": "{stockin_no}", "FBillTypeID": {"FNumber": "QTRKD01_SYS"}, "FStockOrgId": {"FNumber": "100"}, "FDate": "{stockin_time}", "FSUPPLIERID": {"FNumber": "{supplier_id}"}, "FDEPTID": {"FNumber": "BM003"}, "FNOTE": "{remark}", "FEntity": [ { "FMATERIALID": {"FNumber": "{{details_list.goods_no}}"}, "FCMKBarCode": "{barcode}", "FSTOCKID": {"FNumber": "{warehouse_no}"}, "FQty": "{{details_list.goods_count}}", "FLOT": {"FNumber": "{{details_list.batch_no}}"}, "FEntryNote": "{entry_note}", "FPrice": "{price}" } // 可以有多个明细项,按照上述格式添加更多对象即可。 ] } } ``` #### 数据转换与写入流程 1. **提取**(Extract):从源系统中提取原始数据。假设我们已经完成了这一步并得到了所需的数据集。 2. **转换**(Transform):根据元数据配置对提取的数据进行格式转换。例如,将日期格式化为目标系统所需的格式,将编码字段通过解析器转化为目标系统识别的编码。 3. **加载**(Load):通过调用金蝶云星空的API接口,将转换后的数据加载到目标系统中。 在整个过程中,我们利用轻易云数据集成平台提供的全透明可视化操作界面,实时监控和调整每个环节的数据流动和处理状态,确保数据准确无误地写入目标平台。 通过以上步骤,我们成功实现了从源平台到金蝶云星空API接口的数据ETL转换和写入,为企业的数据集成提供了高效、可靠的解决方案。 ![打通企业微信数据接口](https://pic.qeasy.cloud/T26.png~tplv-syqr462i7n-qeasy.image)