轻易云平台在ETL转换中的应用:从金蝶系统到旺店通的实践

  • 轻易云集成顾问-王敏
### 案例分享:金蝶云星空数据集成到旺店通·企业奇门的技术实现 在“库存校准-金蝶无仓位-2”方案中,我们成功地将金蝶云星空系统的数据高效集成到了旺店通·企业奇门。整个过程不仅确保了数据的准确性和及时性,还利用了多个关键技术特性来提升整体性能和稳定性。 首先,通过调用`executeBillQuery`接口,我们从金蝶云星空提取了最新的库存基础数据。为了避免漏单问题,我们采用定时可靠抓取的方法,每隔一段时间自动触发API请求,确保所有待处理的数据被完整获取。此外,针对分页和限流等常见难题,设计了一套智能化的调度策略,以便分批次、高效地获取大规模数据。 在获得原始数据后,为解决两系统之间的数据格式差异问题,我们自定义了一系列转换逻辑。这些转换规则借助可视化的数据流设计工具进行配置,使得整个映射过程直观易管理,并能灵活适应不断变化的业务需求。 最后,通过调用`wdt.stock.sync.by.pd`接口,实现了将处理完毕后的库存信息快速写入到旺店通·企业奇门系统。在此过程中,特别结合实时监控与告警机制,对每个环节进行严格把控。任何异常情况都会立即触发预警并记录详细日志,以便迅速定位并排除故障,从而保证集成任务顺利运行且高效完成。 以上就是我们在该案例中的一些关键步骤及其背后的技术要点,下篇内容中我们会进一步深入剖析各具体实现细节。 ![打通用友BIP数据接口](https://pic.qeasy.cloud/D28.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口来获取库存校准相关的数据,并对这些数据进行初步加工。 #### 接口配置与请求参数 首先,我们需要配置调用金蝶云星空接口的元数据。根据提供的元数据配置,可以看到我们需要使用POST方法来调用`executeBillQuery`接口,并传递一系列参数以获取所需的数据。 以下是关键的请求参数及其含义: - **FormId**: 表单ID,指定要查询的业务对象表单ID,这里为`STK_Inventory`。 - **FieldKeys**: 需查询的字段key集合,包含多个字段如`FID`, `FStockId`, `FMaterialId`, `FBaseQty`等。 - **FilterString**: 过滤条件,用于筛选符合条件的数据记录。 - **Limit**: 最大行数,控制每次查询返回的数据条数。 - **StartRow**: 开始行索引,用于分页查询。 - **TopRowCount**: 返回总行数,用于确定分页查询的总记录数。 #### 请求示例 基于上述配置,我们可以构建一个请求示例: ```json { "FormId": "STK_Inventory", "FieldKeys": "FID,FStockId,FMaterialId,FBaseQty,FBaseAVBQty,FLot,FUpdateTime,FOwnerId,FKeeperId,FStockOrgId,FOwnerTypeId,FStockId.FNumber,FMaterialId.FNumber,FOwnerId.FNumber,FKeeperId.FNumber,FStockOrgId.FNumber,FProduceDate,FMtoNo,FStockStatusId,FStockLocId", "FilterString": "FStockLocId = 0 AND FUpdateTime >= '{{LAST_SYNC_TIME|datetime}}' AND FStockOrgId.FNumber NOT IN ('200','2001','2002','300','3001') AND FStockID.FNumber <> 'JCM042'", "Limit": 500, "StartRow": 0 } ``` 在这个请求中,我们指定了需要查询的字段、过滤条件以及分页参数。通过这种方式,可以有效地从金蝶云星空系统中获取到符合条件的库存数据。 #### 数据清洗与转换 获取到原始数据后,需要对其进行清洗和转换,以便后续处理和存储。在轻易云平台上,可以通过可视化界面和内置的数据处理工具实现这一过程。以下是一些常见的数据清洗和转换操作: 1. **字段映射**:将原始字段映射到目标系统所需的字段。例如,将`FMaterialId_FNumber`映射为目标系统中的物料编码字段。 2. **数据格式转换**:将日期格式统一为目标系统所需的格式,例如将`FUpdateTime`转换为标准的ISO日期格式。 3. **数据过滤**:进一步筛选不符合业务规则的数据记录。例如,剔除库存量为零或负值的记录。 #### 实践案例 假设我们需要将获取到的库存数据导入到另一个系统中进行分析和报表生成。以下是一个简单的数据处理流程: 1. **调用接口获取数据**:使用上述请求示例,通过轻易云平台调用金蝶云星空接口,获取原始库存数据。 2. **初步清洗与转换**: - 映射字段:将原始字段名映射为目标系统所需的字段名。 - 转换日期格式:将所有日期字段统一转换为ISO格式。 - 筛选有效记录:剔除库存量为零或负值的记录。 3. **写入目标系统**:将清洗和转换后的数据写入目标分析系统,供后续报表生成和分析使用。 通过这种方式,可以高效地实现不同系统间的数据集成和处理,确保数据的一致性和准确性。这不仅提升了业务透明度,还极大地提高了工作效率。 ![电商OMS与ERP系统接口开发配置](https://pic.qeasy.cloud/S13.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台生命周期中的ETL转换与写入 在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是至关重要的一步。本文将深入探讨如何利用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,并转为目标平台——旺店通·企业奇门API接口所能够接收的格式,最终写入目标平台。 #### 元数据配置解析 在本案例中,我们需要将库存校准数据从金蝶无仓位系统转换并写入到旺店通·企业奇门API接口。以下是关键的元数据配置: ```json { "api": "wdt.stock.sync.by.pd", "method": "POST", "operation": { "method": "merge", "field": "FStockId_FNumber", "bodyName": "detail_list", "header": ["FStockId_FNumber"], "body": ["FBaseQty", "FBaseAVBQty", "FMaterialId_FNumber"] }, "idCheck": true, "request": [ { "field": "warehouse_no", "label": "仓库编号", "type": "string", "describe": "代表仓库所有属性的唯一编码,用于仓库区分,ERP内支持自定义(ERP仓库界面设置),用于创建指定仓库单据信息", "value": "{FStockId_FNumber}" }, { "field": "mode", "label": "盘点方式", "type": "string", "describe": "0表示单品盘点,1表示货位盘点,如果mode没有传参或数值无效 默认为0单品盘点" }, { "field": "api_outer_no", "label": "API单号", "type": "string", "describe": "外部单号唯一标识" }, { "field": "is_check", "label": "是否审核", ... ``` #### 数据请求与清洗 在进行ETL转换之前,首先需要从源系统获取原始数据,并进行必要的数据清洗。这一步骤确保我们获得的数据是准确且一致的,为后续的转换和写入奠定基础。 #### 数据转换 在本案例中,我们需要将金蝶无仓位系统的数据字段映射到旺店通·企业奇门API接口所要求的字段格式。以下是具体的字段映射关系: - `FStockId_FNumber` 映射到 `warehouse_no` - `FMaterialId_FNumber` 映射到 `spec_no` - `FBaseQty` 映射到 `stock_num` 此外,还需要根据业务需求添加一些固定值或默认值,例如: - `is_check` 设置为 `"1"` 表示自动审核 - `is_create_stock` 设置为 `"1"` 表示自动添加库存记录 #### 数据写入 完成数据转换后,即可通过HTTP POST请求将数据写入目标平台。以下是一个示例请求体: ```json { ... { ... { ... { ... {"warehouse_no":"001","mode":"0","api_outer_no":"20231001","is_check":"1","is_post_error":"1","is_create_stock":"1","goods_list":[{"spec_no":"SKU12345","stock_num":"100"},{"spec_no":"SKU67890","stock_num":"200"}]} } ``` 在这个请求体中,我们可以看到已经完成了字段映射和数据填充,并且按照旺店通·企业奇门API接口的要求组织了JSON结构。 #### 实践中的注意事项 1. **字段匹配**:确保所有必需字段都已正确映射并赋值,避免因缺少关键字段导致请求失败。 2. **数据类型**:严格遵循目标API接口的数据类型要求,例如字符串、整数等。 3. **错误处理**:设置严格模式参数(如`is_post_error`)以便更好地处理可能出现的数据不一致问题。 通过以上步骤,我们实现了从源平台到目标平台的数据无缝对接。这不仅提升了业务效率,也保证了数据的一致性和准确性。 ![打通金蝶云星空数据接口](https://pic.qeasy.cloud/T29.png~tplv-syqr462i7n-qeasy.image)