轻易云平台如何实现复杂ETL转换并写入金蝶云

  • 轻易云集成顾问-蔡威
### Q7预入库ToOMS预入库单:旺店通·旗舰奇门数据集成到金蝶云星空 在系统对接与数据集成的实际项目中,如何高效、准确地将多个平台的数据无缝衔接,是每个技术团队都面临的挑战。本文将聚焦于一个具体案例——将旺店通·旗舰奇门的数据集成到金蝶云星空,通过该实例详细探讨技术实现细节。 首先,我们需要解决的是从旺店通·旗舰奇门获取待处理的预入库单数据。这一步主要通过调用`wdt.wms.stockin.prestockin.search`接口完成,此接口负责返回符合条件的预入库单信息。为了确保获取过程不漏单,需特别注意分页和限流问题,该接口支持分页查询参数,因此在实际操作中,可以采用循环调用并结合适当等待时间以应对限流限制。 接下来,将提取的数据快速且批量写入到金蝶云星空是另一个关键环节。在此过程中,需要使用金蝶提供的`batchSave` API 进行数据写入操作。要保证大数据量能迅速、高效地导入,并发机制和事务控制成为重中之重。此外,还必须针对两者之间的数据格式差异进行适当转换,这往往涉及字段映射以及单位转换等细微但至关重要的调整。 当然,在整个流程运行期间,对实时监控和日志记录也提出了较高要求。一旦出现异常情况,如网络波动导致连接断开或API响应超时,通过完善的错误捕捉与自动重试机制,能够有效避免因突发状况而造成业务中断。同时,为了进一步提高系统透明度,实现完整生命周期管理,每一次数据传输及处理状态都应该被详细记录与可视化展示。 综上所述,本案例旨在说明如何通过精准调用API、优化性能设置、健全监控体系,最终实现跨平台复杂场景下的数据顺畅迁移与同步。 ![用友与外部系统接口集成开发](https://pic.qeasy.cloud/D24.png~tplv-syqr462i7n-qeasy.image) ### 调用旺店通·旗舰奇门接口wdt.wms.stockin.prestockin.search获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用旺店通·旗舰奇门接口`wdt.wms.stockin.prestockin.search`,并对获取的数据进行加工处理。 #### 接口调用配置 首先,我们需要配置API接口的元数据,以确保能够正确地请求和处理数据。以下是该接口的元数据配置: ```json { "api": "wdt.wms.stockin.prestockin.search", "method": "POST", "number": "stockin_no", "id": "stockin_id", "idCheck": true, "request": [ { "field": "pager", "label": "分页参数", "type": "object", "children": [ { "field": "page_size", "label": "分页大小", "type": "int", "value": 50, "parent": "pager" }, { "field": "page_no", "label": "页号", "type": "int", "value": 1, "parent": "pager" } ] }, { "field": "params", "label": "业务参数", "type": "object", ... } ], ... } ``` #### 请求参数详解 在请求参数中,我们需要特别关注分页参数和业务参数: - **分页参数**:用于控制每次请求的数据量和页码。 - `page_size`:每页返回的数据条数,默认值为50。 - `page_no`:当前请求的页码,默认值为1。 - **业务参数**:用于指定查询条件。 - `mt_from` 和 `mt_to`:修改时间范围,使用模板变量动态生成时间。 - `status`:入库单状态,默认值为80。 - `warehouse_no`、`stockin_no`、`logistics_no`:分别为仓库编码、入库单号和寄回物流单号。 #### 数据过滤与清洗 在获取数据后,需要对数据进行过滤和清洗。根据元数据配置中的条件,我们可以设置过滤规则。例如: ```json "condition_bk":[[{"field":"logistics_no","logic":"notlike","value":"WP"}]], "condition":[[{"field":"logistics_no","logic":"notlike","value":"WP"}]] ``` 上述条件表示过滤掉物流单号包含“WP”的记录。这一步骤确保了我们只处理符合业务需求的数据。 #### 数据转换与写入 在完成数据清洗后,需要将数据转换为目标系统可接受的格式,并写入到目标系统中。这一步通常涉及字段映射和格式转换。例如,将源系统中的字段名映射到目标系统中的字段名,并根据目标系统的要求调整数据格式。 #### 异常处理与监控 在整个过程中,异常处理和监控也是不可忽视的部分。轻易云平台提供了全透明可视化的操作界面,可以实时监控数据流动和处理状态。一旦出现异常,可以及时采取措施进行修复。 通过以上步骤,我们实现了从调用源系统接口到数据清洗、转换和写入的一整套流程。在实际操作中,根据具体业务需求,还可以进一步优化和调整各个环节,以提升整体效率和准确性。 ![用友与CRM系统接口开发配置](https://pic.qeasy.cloud/S11.png~tplv-syqr462i7n-qeasy.image) ### 通过轻易云数据集成平台实现金蝶云星空API接口的数据ETL转换与写入 在数据集成过程中,ETL(提取、转换、加载)是至关重要的一环。本文将深入探讨如何通过轻易云数据集成平台,将源平台的数据进行转换,最终写入金蝶云星空API接口所能接收的格式。 #### 元数据配置解析 首先,我们需要理解元数据配置中的各个字段及其作用。以下是我们将使用的元数据配置: ```json { "api": "batchSave", "method": "POST", "operation": { "rowsKey": "array", "rows": 20, "method": "batchArraySave" }, "request": [ {"field":"FStockOrgId","label":"库存组织","type":"string","value":"106","parser":{"name":"ConvertObjectParser","params":"FNumber"}}, {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{stockin_no}"}, {"field":"Fwarehouse_no","label":"仓库代码","type":"string","describe":"组织","value":"{warehouse_no}"}, {"field":"Fstatus","label":"状态","type":"string","value":"{status}"}, {"field":"FRemark","label":"备注","type":"string","value":"{remark}"}, {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{{check_time|datetime}}"}, {"field":"Fshop_no","label":"店铺代码","type":"string"}, {"field":"Fshop_name","label":"店铺","type":"string"}, {"field":"Flogistics_no","label":"快递单号","type":"string","describe":"基础资料","value":"{logistics_no}"}, {"field":"Flogistics_code","label":"物流公司","type":"string","describe":"","value": "{logistics_name}"}, {"field": "FSrcBillNo", "label": "源单编号", "type": "string"}, { "field": "FEntity", "label": "明细信息", "type": "array", "children": [ {"field": "FMaterialID", "label": "料号", "type": "string", "value": "{{detail_list.goods_no}}", "parser":{"name": "ConvertObjectParser", "params": "FNumber"} }, {"field": "FGoodNo", "label": "", "type": "", "", "{{detail_list.goods_no}}", ""}, {"field": "", "", "", "{{detail_list.num}}", ""}, {"field":"","","","{{detail_list.remark}}"} ], "" } ], "", [ { "", "", "", "", "" }, { "", "", "", "" } ], "" } ``` #### 数据请求与清洗 在数据请求阶段,我们从源系统中提取原始数据。这些数据通常是杂乱无章且格式不统一的,因此需要进行清洗和标准化处理。在轻易云平台上,可以使用各种内置工具和自定义脚本来完成这一过程。 #### 数据转换与写入 接下来是关键的ETL转换步骤。在这个阶段,我们将清洗后的数据按照金蝶云星空API接口要求的格式进行转换。以下是具体操作步骤: 1. **设置API和请求方法**: - `api`字段指定了目标API接口为`batchSave`。 - `method`字段指定了HTTP请求方法为`POST`。 2. **配置操作参数**: - `operation`部分定义了批量保存操作的细节,包括每次批量处理的数据行数(20行)和方法名称(batchArraySave)。 3. **映射字段**: - 每个字段在`request`数组中都进行了详细配置。例如,`FBillNo`字段映射到源数据中的`stockin_no`,并且类型为字符串。 - 使用解析器(如`ConvertObjectParser`)对某些字段进行特殊处理,例如将库存组织ID从对象转换为数字。 4. **处理嵌套结构**: - 对于复杂的嵌套结构,如明细信息(`FEntity`),需要逐层定义每个子字段,并使用模板语言(如Mustache)来引用源数据中的相应值。 5. **其他请求参数**: - `otherRequest`部分包含了一些额外的参数,例如业务对象表单ID(FormId),验证基础资料有效性(IsVerifyBaseDataField),以及执行的操作(Operation)。 #### 实际案例 假设我们有一批预入库单,需要将其导入到金蝶云星空系统中。预入库单的数据结构如下: ```json { “stockin_no”: “SI20231001”, “warehouse_no”: “WH001”, “status”: “Pending”, “remark”: “Initial stock”, “check_time”: “2023-10-01T10:00:00Z”, “logistics_no”: “LN123456789”, “logistics_name”: “DHL”, “detail_list”: [ { “goods_no”: “G001”, “num”: 100, “remark”: “First batch” }, { “goods_no”: “G002”, “num”: 200, “remark”: “Second batch” } ] } ``` 通过上述元数据配置,我们可以将该预入库单的数据转换为金蝶云星空API所需的格式,并发送POST请求进行批量保存操作。 #### 总结 通过轻易云数据集成平台,我们能够高效地完成从源系统到目标系统的数据ETL转换和写入过程。本文详细介绍了如何利用元数据配置,实现对金蝶云星空API接口的数据集成,为实际业务场景提供了强有力的技术支持。 ![金蝶与CRM系统接口开发配置](https://pic.qeasy.cloud/T29.png~tplv-syqr462i7n-qeasy.image)