ETL流程解析:从聚水潭到金蝶云星空的数据转换与加载

  • 轻易云集成顾问-杨嫦
### 聚水潭数据集成到金蝶云星空:一个系统对接案例分享 在企业的日常运营中,确保各个业务系统之间的数据准确、及时地同步是保障业务连续性和高效运作的关键步骤。本文将重点分享如何通过轻易云数据集成平台,实现聚水潭其他入库单数据无缝对接到金蝶云星空,通过具体技术细节探讨API接口调用及处理方法。 本案例方案名为“聚水潭其他入库单对接金蝶其他入库单ok”,核心任务是实现从聚水潭获取数据并写入到金蝶云星空。首先,我们需要调用聚水潭提供的`other.inout.query`接口来抓取所需的供货商入库单信息,这一过程中需要特别注意分页和限流问题,以避免因请求过多导致接口不可用或响应超时。在获取完所有相关数据后,我们将利用轻易云的数据转换功能处理不同系统间的数据格式差异,并最终使用金蝶云星空提供的批量保存API (`batchSave`) 将整合后的数据快速、安全地写入目的数据库中。 为了确保整个流程的可靠性和实时性,定期执行自动化脚本成为必不可少的一环。这不仅可以有效减少漏单现象,还能实时监控每个环节的数据状态。此外,在面对异常情况时,如网络延迟或意外中断等,我们实现了错误重试机制,即在出现故障后可自动重新尝试传输,大大提升了整体集成方案的健壮性。 总之,通过针对性的技术设置与操作规范化,本案例完美展示了一种高效且稳定的数据跨平台同步解决方案,为同类项目实施提供了宝贵经验与参考依据。 ![钉钉与WMS系统接口开发配置](https://pic.qeasy.cloud/D22.png~tplv-syqr462i7n-qeasy.image) ### 调用聚水潭接口other.inout.query获取并加工数据 在轻易云数据集成平台的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过调用聚水潭的`other.inout.query`接口来获取并加工数据,为后续的数据转换与写入奠定基础。 #### 接口配置与请求参数 首先,我们需要配置元数据,以便正确调用聚水潭的`other.inout.query`接口。以下是元数据配置的关键部分: ```json { "api": "other.inout.query", "method": "POST", "number": "io_id", "id": "io_id", "pagination": { "pageSize": 50 }, "idCheck": true, "request": [ {"field":"modified_begin","label":"修改起始时间","type":"string","value":"{{LAST_SYNC_TIME|datetime}}"}, {"field":"modified_end","label":"修改结束时间","type":"string","value":"{{CURRENT_TIME|datetime}}"}, {"field":"so_ids","label":"指定线上订单","type":"string"}, {"field":"types","label":"单据类型","type":"string","describe":"单据类型 :其它退货,其它出库,其它进仓"}, {"field":"status","label":"单据状态","type":"string","describe":"单据状态,Confirmed=生效,WaitConfirm待审核,Archive=归档,Cancelled=取消","value":"Confirmed"}, {"field":"page_index","label":"开始页码","type":"string","value":"1"}, {"field":"page_size","label":"每页行数","type":"string","value":"{PAGINATION_PAGE_SIZE}"} ], "condition_bk": [ [{"field": "drop_co_name", "logic": "neq", "value": "销售退货"}, {"field": "type", "logic": "eq", "value": "其它退货"}] ], "condition":[ [{"field": "drop_co_name", "logic": "neq", "value": "销售退货"}, {"field": "type", "logic": "eq", "value": "其它退货"}] ] } ``` #### 请求参数详解 1. **modified_begin 和 modified_end**: 用于指定查询的时间范围。通过模板变量`{{LAST_SYNC_TIME|datetime}}`和`{{CURRENT_TIME|datetime}}`动态生成。 2. **so_ids**: 可选参数,用于指定特定的线上订单。 3. **types**: 单据类型,包括“其它退货”、“其它出库”、“其它进仓”。 4. **status**: 单据状态,默认值为“Confirmed”,表示只查询已生效的单据。 5. **page_index 和 page_size**: 分页参数,用于控制每次请求的数据量和分页索引。 #### 数据请求与清洗 在发送请求时,我们需要确保请求参数的正确性和完整性。以下是一个示例请求: ```json { "modified_begin": "<LAST_SYNC_TIME>", "modified_end": "<CURRENT_TIME>", "status": "Confirmed", "page_index": 1, "page_size": 50 } ``` 通过上述请求,我们可以获取到符合条件的数据集。在接收到响应后,需要对数据进行初步清洗和过滤。例如,根据业务需求,可以过滤掉“销售退货”的记录,只保留“其它退货”的记录。这一步骤可以通过配置中的条件来实现: ```json "condition":[ [{"field": "drop_co_name", "logic": "neq", "value": "销售退货"}, {"field": "type", "logic": "eq", value:="其它退货"}] ] ``` #### 数据转换与写入准备 在完成数据清洗后,需要对数据进行必要的转换,以便适配目标系统的数据格式。例如,将聚水潭的字段映射到金蝶系统所需的字段,并进行相应的数据格式转换。这一步骤将在生命周期的下一阶段详细处理。 #### 实时监控与日志记录 为了确保数据处理过程的透明度和可追溯性,轻易云平台提供了实时监控和日志记录功能。通过这些功能,可以实时查看数据流动和处理状态,并在出现异常时及时进行排查和修正。 以上内容详细阐述了如何调用聚水潭接口`other.inout.query`获取并加工数据,为后续的数据转换与写入打下坚实基础。在实际操作中,应根据具体业务需求灵活调整参数配置,以确保数据集成过程顺利高效地进行。 ![电商OMS与WMS系统接口开发配置](https://pic.qeasy.cloud/S10.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台生命周期第二步:ETL转换与写入金蝶云星空API接口 在数据集成的生命周期中,ETL(提取、转换、加载)是至关重要的一环。本文将深入探讨如何利用轻易云数据集成平台,将源平台聚水潭的其他入库单数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。 #### API接口配置与元数据解析 在本案例中,我们使用金蝶云星空的`batchSave` API接口,通过POST方法提交数据。以下是具体的元数据配置: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{io_id}"}, {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"QTRKD01_SYS"}, {"field":"FStockOrgId","label":"库存组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"}, {"field":"FStockDirect","label":"库存方向","type":"string","describe":"下拉列表","value":"GENERAL"}, {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{io_date}"}, {"field":"FOwnerTypeIdHead","label":"货主类型","type":"string","describe":"多类别基础资料列表","value":"BD_OwnerOrg"}, {"field":"FOwnerIdHead","label":"货主","type":"string","describe":"多类别基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"}, {"field":"FNOTE","label":"备注","type": "string", "describe": "多行文本", "value": "{remark}"}, { "field": "FEntity", "label": "明细信息", "type": "array", "children": [ {"field": "FMATERIALID", "label": "物料编码", "type": "string", "describe": "基础资料", "parser":{"name": "ConvertObjectParser", "params": "FNumber"}, "value": "{{batchs.sku_id}}", "parent": "FEntity" }, {"field": "FSTOCKID", "label": "收货仓库", "type": "string", "describe": "基础资料", "parser": {"name": "ConvertObjectParser", "params": "FNumber" }, "value": "{wms_co_id}", "parent": "FEntity" }, { ... } ], ... } ], ... } ``` #### 数据请求与清洗 首先,从聚水潭系统中提取其他入库单的数据。在这个过程中,需要对原始数据进行清洗和预处理,以确保其符合目标系统的数据要求。例如,确保日期格式统一,字符串字段去除多余空格等。 #### 数据转换 接下来,使用轻易云的数据转换功能,将清洗后的数据映射到金蝶云星空API所需的格式。以下是关键字段的转换规则: - **FBillNo(单据编号)**:直接映射自聚水潭系统中的`io_id`。 - **FBillTypeID(单据类型)**:固定值为`QTRKD01_SYS`,并通过`ConvertObjectParser`解析为金蝶系统可识别的对象。 - **FStockOrgId(库存组织)**:固定值为`100`,同样需要通过解析器进行转换。 - **FDate(日期)**:映射自聚水潭系统中的`io_date`。 - **FOwnerTypeIdHead(货主类型)**和**FOwnerIdHead(货主)**:分别固定值为`BD_OwnerOrg`和`100`。 对于明细信息字段,需要特别注意数组结构的处理: - **FMATERIALID(物料编码)**:从批次信息中的`sku_id`字段映射,并通过解析器进行转换。 - **FSTOCKID(收货仓库)**:从批次信息中的`wms_co_id`字段映射,并通过解析器进行转换。 - **其他字段**:如生产日期、有效期至、实收数量等,都需要从批次信息中提取相应字段并进行映射。 #### 数据写入 完成数据转换后,通过POST请求将处理好的数据提交到金蝶云星空的API接口。以下是一个示例请求体: ```json { ... { FBillNo: '20231010', FBillTypeID: { FNumber: 'QTRKD01_SYS' }, FStockOrgId: { FNumber: '100' }, FStockDirect: 'GENERAL', FDate: '2023-10-10', FOwnerTypeIdHead: 'BD_OwnerOrg', FOwnerIdHead: { FNumber: '100' }, FNOTE: '备注信息', FEntity: [ { FMATERIALID: { FNumber: 'MAT001' }, FSTOCKID: { FNumber: 'STK001' }, ... } ] } } ``` 在实际操作中,还需要考虑错误处理和日志记录,以便在出现问题时能够快速定位和解决。 通过上述步骤,我们实现了从聚水潭系统到金蝶云星空的无缝数据集成,确保了各业务环节的数据一致性和准确性。这不仅提升了业务效率,也为企业决策提供了可靠的数据支持。 ![数据集成平台API接口配置](https://pic.qeasy.cloud/T4.png~tplv-syqr462i7n-qeasy.image)