轻易云平台ETL方案:从数据清洗到写入旺店通·企业奇门

  • 轻易云集成顾问-吴伟
### 金蝶云星空数据集成到旺店通·企业奇门采购入库对接案例 在企业信息化管理过程中,系统间的数据集成与自动化处理成为关键一环。本文将分享我们如何通过轻易云数据集成平台,实现金蝶云星空与旺店通·企业奇门之间的无缝对接,以 "采购入库对接其他入库CGRK" 为实际运行方案,实现了从获取、处理到同步的大规模高效数据流转。 首先,我们采用金蝶云星空的executeBillQuery API接口,定时可靠地抓取其接口数据。这一步骤不仅保证了实时性,还确保不会出现漏单情况。在设计这一环节时,我们着重考虑了分页和限流问题,通过合理配置参数和优化查询逻辑来提升接口调用效率,从而避免因频繁请求导致的性能瓶颈或超时问题。 获取到原始数据后,需要解决金蝶云星空与旺店通·企业奇门之间的数据格式差异。由于两者使用不同的数据结构,因此必须进行精细的数据映射和转换。通过自定义脚本及映射配置,我们将金蝶云星空返回的复杂JSON格式数据解析并重新构建为符合旺店通·企业奇门API要求的标准格式,以便大批量快速写入目标系统。 随后,利用wdt.vip.wms.stockinout.order.push API,将整理后的数据信息推送至旺店通·企业奇门,为此制定了一系列异常处理机制。一旦遇到网络不稳定或者服务器故障等意外情况,该机制确保所有错误均能被详细记录并触发自动重试功能,有效保障了接口调用的成功率和稳定性。此外,为进一步监控整个流程中的每一个操作步骤,我们实现了实时日志记录,并且设置多级告警通知,一旦发生异常即可及时响应。 这种全生命周期管理方式,让整个采购入库流程变得更加透明可追溯,不仅显著提高了工作效率,也降低了人为操作失误带来的风险。在实际应用中,这种基于API接口深度整合的方法展现出优越的灵活性及扩展能力,使得业务能够随着需求变化迅速调整和优化。 ![如何开发金蝶云星空API接口](https://pic.qeasy.cloud/D13.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口,以获取并加工采购入库对接其他入库(CGRK)的数据。 #### 接口配置与调用 首先,我们需要配置元数据以便正确调用金蝶云星空的API接口。以下是关键的元数据配置: ```json { "api": "executeBillQuery", "method": "POST", "number": "FBillNo", "id": "FInStockEntry_FEntryId", "pagination": { "pageSize": 500 }, "idCheck": true, "request": [ {"field":"FInStockEntry_FEntryId","label":"id","type":"string","value":"FInStockEntry_FEntryId"}, {"field":"FID","label":"实体主键","type":"string","value":"FID"}, {"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"}, {"field":"FDocumentStatus","label":"单据状态","type":"string","value":"FDocumentStatus"}, {"field":"FStockOrgId_FNumber","label":"收料组织","type":"string","value":"FStockOrgId.FNumber"}, {"field":"FDate","label":"入库日期","type":"string","value":"FDate"}, {"field":"FBillTypeID_FNumber","label":"单据类型","type":"string","value":"FBillTypeID.FNumber"}, {"field":"FOwnerTypeIdHead","label":"货主类型","type":"string","value":"FOwnerTypeIdHead"}, {"field":"FOwnerIdHead_FNumber","label":"货主","type":"string","value":"FOwnerIdHead.FNumber"}, {"field":"FDemandOrgId_FNumber","label":"需求组织","type":"string","value":"FDemandOrgId.FNumber"}, {"field":"FPurchaseOrgId_FNumber","label":"采购组织","type":"string","value":"FPurchaseOrgId.FNumber"}, {"field":"FSupplierId_FNumber","label":"供应商","type": "string", "value": "FSupplierId.FNumber"} ], "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": "", // 示例过滤条件:仅获取审核日期大于上次同步时间且库存状态为线上云仓的数据 // 并排除源单类型为销售出库的数据 // 注意:{{LAST_SYNC_TIME|dateTime}} 是一个占位符,实际使用时会被替换为具体时间 // FApproveDate>='{{LAST_SYNC_TIME|dateTime}}' and FStockId.F_QKZI_CheckBox=1 and FSRCBILLTYPEID<>'SAL_OUTSTOCK' // value字段可以根据实际需求进行调整 // value: `FSupplierId.FNumber = 'VEN00010' and FApproveDate>='{{LAST_SYNC_TIME|dateTime}}' and FStockId.F_QKZI_CheckBox=1 and FSRCBILLTYPEID<>'SAL_OUTSTOCK'` value: `FSupplierId.FNumber = 'VEN00010' and FApproveDate>='{{LAST_SYNC_TIME|dateTime}}'` } ] } ``` #### 数据请求与清洗 在调用接口之前,需要确保请求参数的正确性和完整性。以下是请求参数的详细说明: - **api**: `executeBillQuery`,表示调用金蝶云星空的查询接口。 - **method**: `POST`,HTTP请求方法。 - **number**: `FBillNo`,用于标识单据编号。 - **id**: `FInStockEntry_FEntryId`,用于标识分录主键ID。 - **pagination**: 分页配置,每页大小为500条记录。 - **idCheck**: 启用ID检查,确保唯一性。 请求字段包括但不限于: - `FInStockEntry_FEntryId`: 分录主键ID。 - `FID`: 实体主键。 - `FBillNo`: 单据编号。 - `FDocumentStatus`: 单据状态。 - `FStockOrgId_FNumber`: 收料组织编号。 - `FDate`: 入库日期。 此外,还有一些其他请求参数如分页参数和过滤条件: - **Limit**: 最大行数,由分页配置决定。 - **StartRow**: 开始行索引,由分页配置决定。 - **FilterString**: 用于过滤数据的条件,例如仅获取审核日期大于上次同步时间且库存状态为线上云仓的数据,并排除源单类型为销售出库的数据。 #### 数据转换与写入 获取到原始数据后,需要对其进行清洗和转换,以便后续处理和写入目标系统。常见的数据清洗操作包括: 1. **字段映射**:将原始字段映射到目标系统所需的字段。例如,将`FBillNo`映射到目标系统中的单据编号字段。 2. **数据格式转换**:将日期、数字等字段转换为目标系统所需的格式。例如,将日期格式从`YYYY-MM-DD`转换为`MM/DD/YYYY`。 3. **数据验证与校验**:确保所有必填字段都有值,并且值符合预期范围。例如,验证供应商编号是否存在于目标系统中。 清洗后的数据可以通过轻易云平台提供的数据转换工具进行处理,然后写入目标系统。以下是一个简单的数据转换示例: ```json { // 原始数据 "_sourceData_":{ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... }, "_targetData_":{ ... ... ... ... ... ... ... ... ... ... ... ... } } ``` #### 实时监控与错误处理 在整个数据集成过程中,实时监控和错误处理也是至关重要的一环。轻易云平台提供了强大的监控功能,可以实时查看每个步骤的数据流动和处理状态。如果出现错误,可以快速定位并解决问题。例如,如果某个字段值不符合预期,可以通过日志查看具体原因,并进行相应调整。 综上所述,通过合理配置元数据并调用金蝶云星空的API接口,我们可以高效地获取并加工采购入库对接其他入库(CGRK)的数据。这不仅提升了业务透明度和效率,也为后续的数据处理和分析奠定了坚实基础。 ![金蝶与WMS系统接口开发配置](https://pic.qeasy.cloud/S30.png~tplv-syqr462i7n-qeasy.image) ### 利用轻易云数据集成平台进行采购入库数据的ETL转换与写入 在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,最终写入目标平台——旺店通·企业奇门API接口。本文将详细介绍如何通过轻易云数据集成平台配置元数据,实现这一过程。 #### 数据请求与清洗 在数据请求与清洗阶段,我们从源平台获取原始数据,并进行必要的清洗和预处理。这一步骤确保了数据的准确性和一致性,为后续的ETL转换打下基础。 #### 数据转换与写入 接下来,我们进入关键步骤:将清洗后的数据转换为目标平台能够接收的格式,并通过API接口写入目标平台。以下是具体操作步骤和技术细节。 #### 元数据配置解析 根据提供的元数据配置,我们需要将采购入库的数据转换为旺店通·企业奇门API接口所需的格式。以下是关键字段及其配置: 1. **接口外部单号 (`api_outer_no`)**: - 该字段用于标识每个推送请求的唯一单据编号,避免重复推送。 - 配置值:`{FBillNo}-{{spec_list.FMaterialId_FNumber}}-{{spec_list.FLot}}-{FStockId_FNumber}` 2. **仓库编号 (`warehouse_no`)**: - 代表仓库所有属性的唯一编码,用于区分不同仓库。 - 配置值:`{FStockId_FNumber}` 3. **出入类型 (`order_type`)**: - 标识出库或入库操作。 - 配置值:`2`(表示入库) 4. **货品明细节点 (`goods_list`)**: - 包含多个子字段,描述货品的详细信息。 - 重要子字段包括: - 商家编码 (`spec_no`): `{{spec_list.FMaterialId_FNumber}}` - 入库数量 (`num`): `{{spec_list.FRealQty}}` - 批次 (`batch_no`): `{{spec_list.FLot}}` - 价格 (`price`): `{{spec_list.FTaxPrice}}` #### 实际操作步骤 1. **提取源数据**: 使用轻易云平台的数据提取工具,从源系统中获取采购入库相关的数据。这些数据通常包含单据编号、仓库编号、货品明细等信息。 2. **配置ETL规则**: 在轻易云平台上,根据上述元数据配置,设置ETL规则。确保每个字段都能正确映射到目标系统所需格式。例如,将源系统中的单据编号映射到 `api_outer_no` 字段。 3. **执行转换**: 运行ETL流程,将提取到的数据进行转换。此过程中,确保所有必需字段都已正确填充,并且格式符合旺店通·企业奇门API接口要求。 4. **调用API接口**: 使用HTTP POST方法,将转换后的数据推送到旺店通·企业奇门API接口。以下是一个示例请求体: ```json { "api": "wdt.vip.wms.stockinout.order.push", "method": "POST", "data": { "api_outer_no": "20231001-001-LOT001-WH001", "warehouse_no": "WH001", "order_type": "2", "logistics_fee": "0", "other_fee": "0", "province": "", "city": "", "district": "", "address": "", "contact": "", "mobile": "", "telno": "", "auto_check": "1", "goods_list": [ { "spec_no": "SKU001", "num": "100", "position_no": "", "price": "10.00", "batch_no": "LOT001", "remark": "" } ] } } ``` 5. **监控与验证**: 在轻易云平台上实时监控数据流动和处理状态,确保每个环节都顺利完成。如果出现错误,及时调整ETL规则或修正原始数据。 通过上述步骤,我们成功实现了从源平台到旺店通·企业奇门API接口的数据集成。这不仅提高了业务效率,还确保了数据的一致性和准确性。在实际应用中,可以根据具体需求进一步优化和调整ETL规则,以适应不同场景和业务需求。 ![数据集成平台API接口配置](https://pic.qeasy.cloud/T24.png~tplv-syqr462i7n-qeasy.image)