轻易云ETL转换与金蝶云星空API数据写入方法

  • 轻易云集成顾问-黄宏棵
### 旺店通·旗舰奇门数据集成到金蝶云星空:08-其他出库单 在本次技术案例中,我们将探讨如何通过轻易云数据集成平台,将旺店通·旗舰奇门系统中的“其他出库单”数据高效对接到金蝶云星空,实现快速、可靠的数据同步。为了确保整个流程的顺畅,本文将重点阐述以下几个关键技术点。 #### 高吞吐量的数据写入能力 在对接过程中,旺店通·旗舰奇门提供了API接口`wdt.wms.stockout.otherquery.querywithdetail`用于获取“其他出库单”的详细数据,而这些数据需要迅速录入到金蝶云星空中。轻易云平台支持高吞吐量的数据写入能力,使得大量的业务数据能够在短时间内被转移并存储,大幅提升了处理时效性。 #### 实时监控与告警系统 为了确保整个数据集成过程的透明度和安全性,集中化的实时监控和告警系统不可或缺。通过该系统,可以实时跟踪每个任务节点的状态与性能,并及时发现潜在问题。例如,当出现接口响应延迟或批量传输失败时,自动触发告警机制,以便快速采取纠正措施。 #### 自定义数据转换逻辑 不同系统之间的数据格式差异是常见的问题。在从旺店通·旗舰奇门向金蝶云星空进行迁移时,需要处理字段映射和格式转换。这就依赖于自定义的数据转换逻辑功能,通过灵活配置满足特定业务需求,为后续步骤铺平道路。 #### API调用限流与分页处理 对于大规模且频繁调用API 的场景,需要特别注意调用次数限制及分页问题。例如,当使用旺店通·旗舰奇门接口获取大量“其他出库单”记录时,应实现合理的分批请求策略,以避免触发限流规则。同时,对于结果集合过大的情况,通过分页参数有效拆分,提高整体效率。 本案例中,我们将在具体集成解决方案部分详解如何利用轻易云提供的平台工具,实现上述技术要点,从而成功完成"08-其他出库单" 的全链路对接过程。 ![系统集成平台API接口配置](https://pic.qeasy.cloud/D20.png~tplv-syqr462i7n-qeasy.image) ### 调用旺店通·旗舰奇门接口获取并加工数据 在轻易云数据集成平台中,调用源系统的API接口是数据集成生命周期的第一步。本文将深入探讨如何通过调用旺店通·旗舰奇门接口`wdt.wms.stockout.otherquery.querywithdetail`来获取并加工数据。 #### 接口配置与请求参数 该接口采用POST方法进行调用,主要用于查询其他出库单的详细信息。为了实现这一功能,我们需要配置相应的元数据,并构建请求参数。 ##### 元数据配置 根据提供的元数据配置,我们可以看到该接口包含两个主要部分:分页参数和业务参数。 ```json { "api": "wdt.wms.stockout.otherquery.querywithdetail", "method": "POST", "number": "order_no", "id": "stockout_id", "idCheck": true, "request": [ { "field": "pager", "label": "分页参数", "type": "object", "children": [ { "field": "page_size", "label": "分页大小", "type": "string", "value": "50", "parent": "pager" }, { "field": "page_no", "label": "页号", "type": "string", "value": "1", "parent": "pager" } ] }, { "field": "params", "label": "业务参数", "type": "object", ... } ] } ``` ##### 分页参数 分页参数用于控制每次请求返回的数据量和页码,以便处理大量数据时能够分批次获取。以下是分页参数的具体配置: - `page_size`: 分页大小,默认为50。 - `page_no`: 页号,默认为1。 ##### 业务参数 业务参数用于指定查询条件,包括时间范围、仓库编号、出库单号等。以下是一些关键字段: - `time_type`: 时间类型(1:发货时间;2:创建时间;3:最后修改时间)。 - `start_time` 和 `end_time`: 起始时间和结束时间,通常使用上次同步时间和当前时间。 - `warehouse_no`: 仓库编号。 - `src_order_no`: 源单号。 - `stockout_no`: 出库单号。 - `status`: 业务单据状态(例如:编辑中、待审核、已审核等)。 - `position`: 是否按照货位分组(0: 否)。 - `reason_name`: 出库原因。 #### 请求示例 基于上述元数据配置,我们可以构建一个具体的请求示例: ```json { "pager": { "page_size": 50, "page_no": 1 }, "params": { ... // 根据实际需求填充其他字段 ... } } ``` #### 数据清洗与转换 在获取到原始数据后,需要对其进行清洗和转换,以便后续的数据处理和分析。以下是一些常见的数据清洗与转换操作: 1. **去除无效字段**: 删除不必要的字段,保留关键数据。 2. **格式化日期**: 将日期字段格式化为统一标准,例如ISO8601格式。 3. **字段映射**: 将源系统中的字段名映射为目标系统中的标准字段名。 4. **数据校验**: 检查关键字段是否为空或格式是否正确,确保数据质量。 #### 实施步骤 1. **配置元数据**: 在轻易云平台中,根据上述元数据配置创建相应的API调用任务。 2. **构建请求**: 使用平台提供的可视化界面或脚本工具,构建并发送API请求。 3. **接收响应**: 获取API响应,并将其存储在临时存储区或直接写入目标数据库。 4. **清洗与转换**: 对接收到的数据进行清洗和转换,确保其符合目标系统要求。 5. **监控与日志记录**: 实时监控API调用状态,并记录日志以便排查问题。 通过以上步骤,我们可以高效地从旺店通·旗舰奇门系统中获取其他出库单的详细信息,并对其进行必要的数据处理,为后续的数据分析和决策提供可靠的数据支持。 ![打通金蝶云星空数据接口](https://pic.qeasy.cloud/S30.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台生命周期中的ETL转换:实现金蝶云星空API接口的数据写入 在数据集成的过程中,ETL(Extract, Transform, Load)转换是一个关键步骤。本文将深入探讨如何通过轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,并转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。 #### 元数据配置解析 为了实现数据的顺利转换和写入,我们需要详细解析元数据配置。以下是我们要处理的主要字段及其配置: 1. **单据编号 (FBillNo)**: ```json {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{order_no}"} ``` - 类型:字符串 - 描述:单据编号 - 来源:`{order_no}` 2. **单据类型 (FBillTypeID)**: ```json {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"QTCKD01_SYS"} ``` - 类型:字符串 - 描述:单据类型 - 转换器:`ConvertObjectParser` - 固定值:`QTCKD01_SYS` 3. **库存组织 (FStockOrgId)** 和 **领用组织 (FPickOrgId)**: ```json {"field":"FStockOrgId","label":"库存组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"}, {"field":"FPickOrgId","label":"领用组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"} ``` - 类型:字符串 - 描述:组织 - 转换器:`ConvertObjectParser` - 固定值:`100` 4. **日期 (FDate)**: ```json {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{{consign_time|datetime}}"} ``` - 类型:字符串 - 描述:日期 - 来源:`{{consign_time|datetime}}` 5. **明细信息 (FEntity)**: 明细信息是一个复杂的数组结构,其中包含多个子字段,如物料编码、实发数量、发货仓库等。这些字段需要逐一进行处理和转换。 ```json { "field": "FEntity", "label": "明细信息", "type": "array", "children": [ { "field": "FMaterialId", "label": "物料编码", "type": "string", "describe": "基础资料", "parser": {"name": "ConvertObjectParser", "params": "FNumber"}, "value": "{{detail_list.spec_no}}" }, ... ], "value": "detail_list" } ``` #### 数据转换与写入过程 1. **提取源数据**: 从源系统中提取原始数据,并根据元数据配置中的字段映射关系进行初步处理。例如,将订单号、日期等基本信息提取出来。 2. **数据清洗与转换**: 使用元数据配置中的转换器对特定字段进行处理。例如,使用 `ConvertObjectParser` 将特定字段值转化为金蝶云星空系统所需的格式。 示例代码(伪代码): ```python def convert_object_parser(value, params): # 模拟 ConvertObjectParser 的处理逻辑 return f"{params}_{value}" # 处理 FBillTypeID 字段 FBillTypeID = convert_object_parser("QTCKD01_SYS", "FNumber") ``` 3. **构建请求体**: 根据元数据配置构建最终的请求体。需要特别注意数组类型字段(如 `FEntity`),确保每个子字段都正确映射并填充相应的数据。 示例代码(伪代码): ```python request_body = { "FormId": "STK_MisDelivery", ... "Model": { ... "FBillNo": source_data["order_no"], ... "FEntity": [ { ... "FMaterialId": convert_object_parser(detail["spec_no"], "FNumber"), ... } for detail in source_data["detail_list"] ] } } ``` 4. **发送请求**: 使用 HTTP POST 方法将构建好的请求体发送到金蝶云星空 API 接口 `batchSave`。确保请求头和认证信息正确无误。 示例代码(伪代码): ```python import requests response = requests.post( url="https://api.kingdee.com/batchSave", json=request_body, headers={"Content-Type": "application/json", ...} ) if response.status_code == 200: print("Data successfully written to Kingdee Cloud.") else: print(f"Failed to write data: {response.text}") ``` 通过以上步骤,我们可以实现从源系统到金蝶云星空系统的数据无缝对接,确保每个环节都准确无误地完成。这个过程不仅提升了业务透明度和效率,也确保了数据的一致性和可靠性。 ![用友与外部系统接口集成开发](https://pic.qeasy.cloud/T9.png~tplv-syqr462i7n-qeasy.image)