从数据获取到写入:轻易云集成平台和金蝶云星空的ETL技术案例

  • 轻易云集成顾问-曾平安
### 旺店通·旗舰奇门数据集成到金蝶云星空的技术实现 在本案例中,我们将分享如何通过21赠品销售退库单集成方案(无关联),成功地将旺店通·旗舰奇门的数据高效、安全地对接至金蝶云星空系统。该方案重点解决的问题包括:确保数据不漏单、快速批量写入以及处理分页和限流等实际操作中的挑战。 首先,通过调用`wdt.wms.stockin.refund.querywithdetail` API,我们能够从旺店通·旗舰奇门平台抓取详细的退库单数据。在这个过程中,我们设定了可靠的定时任务,以确保接口按计划自动运行,避免因手动操作造成的数据遗漏。这一机制不仅保障了我们所有必要数据的及时获取,还为后续的数据处理奠定了坚实基础。 获取到原始数据后,面临的重要一步便是如何有效地将其转换并写入至金蝶云星空。由于两个系统所采用的数据格式存在差异,我们运用了自定义映射策略,将源系统中的字段精确对应到目标系统。此外,为应对大批量数据传输需求及提高效率,我们利用金蝶云星空提供的`batchSave` API进行高速写入,并设计了一套异常处理与错误重试机制,可在出现失败时自动重新执行,无须人工干预,从而保证整个过程稳定性和一致性。 另外,在面对API接口常见的分页与限流问题上,本方案充分考虑到了实际应用情况,通过合适间隔时间分批次抓取,使得每个请求都能得到妥善处理,不会触发限流。同时,实时监控模块帮助团队清晰掌握各环节执行状态,一旦检测到异常情况,可以迅速响应调整。 以上讲述的是该集成方案的一部分核心技术点,在随后的章节中,将进一步详细分析具体配置及实施步骤。希望此篇案例能为行业内类似需求提供具有参考价值的方法论和实践经验。 ![企业微信与ERP系统接口开发配置](https://pic.qeasy.cloud/D31.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台调用旺店通·旗舰奇门接口wdt.wms.stockin.refund.querywithdetail获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何使用轻易云数据集成平台调用旺店通·旗舰奇门接口`wdt.wms.stockin.refund.querywithdetail`,并对获取的数据进行初步加工。 #### 接口调用配置 首先,我们需要配置元数据以便正确调用接口。以下是接口的基本配置信息: - **API**: `wdt.wms.stockin.refund.querywithdetail` - **Method**: `POST` - **ID字段**: `order_no` - **分页参数**: - `page_size`: 每页记录数,默认值为50 - `page_no`: 页码,默认值为1 - **业务参数**: - `start_time`: 开始时间,使用上次同步时间(`{{LAST_SYNC_TIME|datetime}}`) - `end_time`: 结束时间,使用当前时间(`{{CURRENT_TIME|datetime}}`) - `status`: 入库单状态,默认值为80(已完成) - `time_type`: 时间条件类型,默认为0(修改时间) - `warehouse_no`: 仓库编码 - `shop_nos`: 店铺编号,多个店铺编号使用英文逗号分隔 - `stockin_no`: 入库单号 #### 请求参数构建 根据元数据配置,我们需要构建请求参数。以下是一个示例请求体: ```json { "pager": { "page_size": "50", "page_no": "1" }, "params": { "start_time": "{{LAST_SYNC_TIME|datetime}}", "end_time": "{{CURRENT_TIME|datetime}}", "status": "80", "time_type": "0", "warehouse_no": "", "shop_nos": "B0002", "stockin_no": "" } } ``` 在实际操作中,我们会动态替换`{{LAST_SYNC_TIME|datetime}}`和`{{CURRENT_TIME|datetime}}`为实际的时间戳。 #### 数据过滤条件 为了确保我们获取的数据符合业务需求,需要设置特定的过滤条件。以下是一些示例条件: - 平台ID为127且退款单号不包含"THTZD",店铺编号为B0002 - 平台ID为0且店铺编号为B0002 - 平台ID为127且店铺编号为B0887 - 平台ID为0且店铺编号为B0887 这些条件可以通过逻辑运算符进行组合,以实现复杂的过滤逻辑。 #### 数据清洗与转换 获取到原始数据后,需要对其进行清洗和转换。主要步骤包括: 1. **字段映射**:将源系统中的字段映射到目标系统所需的字段。例如,将源系统中的`order_no`映射到目标系统中的订单编号。 2. **数据格式转换**:将日期、金额等字段转换为目标系统所需的格式。 3. **异常数据处理**:过滤掉不符合业务规则的数据,例如状态不为80的记录。 以下是一个简单的数据清洗示例: ```python def clean_data(raw_data): cleaned_data = [] for record in raw_data: if record['status'] == '80': cleaned_record = { 'order_id': record['order_no'], 'warehouse': record['warehouse_no'], 'shop_id': record['shop_nos'], 'timestamp': convert_to_iso(record['update_time']) } cleaned_data.append(cleaned_record) return cleaned_data def convert_to_iso(date_str): # 假设date_str格式为"YYYY-MM-DD HH:MM:SS" from datetime import datetime dt = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S") return dt.isoformat() ``` 以上代码片段展示了如何对原始数据进行清洗,并将日期格式转换为ISO标准格式。 #### 数据写入 清洗后的数据需要写入目标系统。这一步通常涉及到调用目标系统的API或数据库操作。在轻易云平台上,可以通过配置相应的写入步骤来实现这一过程。 综上所述,通过正确配置元数据和编写相应的数据处理逻辑,我们可以高效地调用旺店通·旗舰奇门接口获取并加工数据,为后续的数据集成奠定坚实基础。 ![电商OMS与ERP系统接口开发配置](https://pic.qeasy.cloud/S11.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台:ETL转换与金蝶云星空API接口集成技术案例 在轻易云数据集成平台的生命周期中,数据转换与写入是关键步骤之一。本文将详细探讨如何将已经集成的源平台数据进行ETL转换,并通过金蝶云星空API接口写入目标平台。 #### 元数据配置解析 在本案例中,我们需要将赠品销售退库单的数据通过ETL转换,最终写入金蝶云星空。以下是元数据配置的详细解析: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ {"field": "FBillNo", "label": "单据编号", "type": "string", "describe": "单据编号", "value": "{order_no}"}, {"field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型", "parser":{"name":"ConvertObjectParser","params":"FNumber"}, "value":"QTCKD01_SYS"}, {"field": "FPickOrgId", ... } ], ... } ``` #### 数据请求与清洗 首先,我们需要从源平台获取原始数据,并进行必要的清洗和预处理。这一步骤确保了数据的准确性和一致性,为后续的ETL转换打下基础。 #### 数据转换与写入 接下来,我们进入关键步骤:将清洗后的数据进行ETL转换,并通过API接口写入金蝶云星空。 1. **API接口调用配置** 我们使用`batchSave` API,通过POST方法提交数据。此API支持批量保存操作,能够高效地处理大规模数据集。 2. **字段映射与解析** 在元数据配置中,每个字段都有详细的映射和解析规则。例如: - `FBillNo` 映射到 `{order_no}`,表示单据编号。 - `FBillTypeID` 使用 `ConvertObjectParser` 解析为 `FNumber` 类型,值为 `QTCKD01_SYS`。 3. **复杂对象处理** 对于复杂对象,如明细信息 `FEntity`,我们使用嵌套结构来定义每个子字段。例如: ```json { ... {"field":"FEntity","label":"明细信息","type":"array","children":[ {"field":"FMaterialId","label":"物料编码","type":"string", ... }, {"field":"FQty","label":"实发数量","type":"string", ... } ]} ... } ``` 4. **特殊字段处理** 某些字段需要特殊处理,例如库存状态 `FSTOCKSTATUSID` 和保管者类型 `FKeeperTypeId` 等,这些字段通过特定的解析器(如 `ConvertObjectParser`)进行转换。 5. **提交并审核** 配置中的 `IsAutoSubmitAndAudit` 设置为 `true`,表示在保存后自动提交并审核单据。这一步骤简化了流程,提高了效率。 6. **验证基础资料** 虽然默认情况下不验证所有基础资料有效性,但可以通过设置 `IsVerifyBaseDataField` 为 `true` 来开启此功能,以确保数据的准确性。 #### 实际应用示例 以下是一个实际应用示例,将源平台的数据转换并写入金蝶云星空: ```json { "api": "batchSave", ... { ... {"field":"FBillNo","value":"SO12345"}, {"field":"FBillTypeID","value":"QTCKD01_SYS"}, {"field":"FPickOrgId","value":"106"}, ... {"field":"FEntity","children":[ {"field":"FMaterialId","value":"MAT001"}, {"field":"FQty","value":"10"}, ... ]} } } ``` 通过上述配置,我们成功实现了从源平台到金蝶云星空的数据无缝对接。每个字段都经过精确映射和解析,确保了数据的一致性和完整性。 #### 总结 本文深入探讨了轻易云数据集成平台中的ETL转换过程,并通过具体案例展示了如何利用金蝶云星空API接口实现数据写入。通过合理配置元数据和API调用,我们能够高效、准确地完成复杂的数据集成任务。 ![钉钉与ERP系统接口开发配置](https://pic.qeasy.cloud/T2.png~tplv-syqr462i7n-qeasy.image)