ETL转换与写入:使用轻易云对接金蝶云星空

  • 轻易云集成顾问-林峰
### 案例分享:旺店通·跨境版数据集成到金蝶云星空 在企业构建高效的数据处理流程中,系统对接与数据集成是至关重要的一环。本案例将聚焦于“二期-旺店通跨境销售退货单&星空销售退货单(订单接口)11”项目,通过轻易云数据集成平台实现旺店通·跨境版的数据顺利转移和实时写入至金蝶云星空系统。 本次项目的核心任务包括从旺店通·跨境版获取销售退货单明细,并批量写入到金蝶云星空系统。以下详细解析技术方案中的关键步骤与挑战解决: 1. **API接口设计与对接** 旺店通·跨境版提供了一个专门用于获取销售退货单明细的API接口`/api/openservices/trade/v1/getSalesRefundList`。我们需要定时抓取这些数据,并且确保在过程中不漏单。此外,这些数据还会被转换并写入到金蝶云星空的API `batchSave` 中。 2. **高吞吐量支持与优化** 由于业务场景下存在大量的数据交互需求,我们必须保障高吞吐量的数据写入能力。这不仅能够提高处理速度,还能提升整体效率。在此过程中,考虑分页和限流现象尤为重要,以避免服务过载或请求丢失的问题。 3. **自定义数据转换逻辑** 在实际开发中,需要对两种不同结构的数据格式进行映射和转换。例如,将旺店通·跨境版中的某些字段准确无误地对应到金蝶云星空所需的格式。同时,我们利用轻易云平台可视化的数据流设计工具,使得整个转化过程直观且便于管理。 4. **异常处理机制及监控告警体系** 数据传输过程难免遇到各种异常情况,例如网络延迟、权限问题等。因此,我们提前设定了一套完善的异常处理机制,包括重试策略以及错误日志记录。此外,搭建集中式的监控和告警系统,通过统一视图及时跟踪每个步骤中的状态变化,一旦发现问题即可迅速响应和修正。 5. **保证数据质量** 支持自动化的数据质量监控功能,在源头上就能检测并排除错误或不一致性,从而保证最终导入金蝶云数据库中的每条记录都是准确可靠的。这一措施大幅减少了后续人工纠错成本,提高了整体执行效率。 通过以上几个关键点,本案例成功打破了两个系统间的信息隔阂,不仅提高了运营效率,也为今后的业务扩展 ![用友与CRM系统接口开发配置](https://pic.qeasy.cloud/D9.png~tplv-syqr462i7n-qeasy.image) ### 调用旺店通·跨境版接口获取并加工销售退货单数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·跨境版的`/api/openservices/trade/v1/getSalesRefundList`接口来获取销售退货单数据,并进行初步的数据加工。 #### 接口调用配置 首先,我们需要配置元数据,以便正确调用接口并获取所需的数据。以下是该接口的元数据配置: ```json { "api": "/api/openservices/trade/v1/getSalesRefundList", "effect": "QUERY", "method": "POST", "number": "{returnNo}", "id": "{returnNo}", "name": "{stockinNo}", "idCheck": true, "request": [ { "field": "createTimeBegin", "label": "开始创建时间", "type": "datetime", "describe": "开始创建时间", "value": "{{DAYS_AGO_3|datetime}}" }, { "field": "createTimeEnd", "label": "结束创建时间", "type": "datetime", "describe": "结束创建时间", "value": "{{CURRENT_TIME|datetime}}" } ], "otherRequest": [ { "field": "pageNo", "label": "当前页码", "type": "string", "describe": "当前页码", "value": "_function {PAGINATION_START_PAGE}+1" }, { "field": "pageSize", "label": "分页大小", "type": "string", "describe": "分页大小", "value": "{PAGINATION_PAGE_SIZE}" } ], ``` #### 请求参数设置 在请求参数中,我们需要设置查询时间范围和分页信息: - `createTimeBegin` 和 `createTimeEnd` 分别表示查询的起始和结束时间,使用动态变量 `{{DAYS_AGO_3|datetime}}` 和 `{{CURRENT_TIME|datetime}}` 来自动填充。 - `pageNo` 和 `pageSize` 用于分页控制,确保我们能够逐页获取所有数据。 #### 数据过滤条件 为了确保获取的数据符合业务需求,我们还需要设置一些过滤条件: ```json "condition_bk":[ [ { "field":"shopName", ... ``` 这些条件可以帮助我们排除不必要的数据,例如特定店铺的订单。 #### 数据请求与清洗 一旦配置完成,我们可以发送请求并接收响应。响应中的数据可能包含多个字段,但我们只关注以下几个关键字段: - `returnNo`: 销售退货单号 - `stockinNo`: 入库单号 - `confirmInStockTime`: 确认入库时间 在接收到响应后,我们需要对数据进行清洗和转换。例如,确认入库时间不能为空: ```json "condition":[ [ { ... ``` 通过这种方式,我们可以确保只有有效的数据被进一步处理。 #### 数据转换与写入 在清洗完数据后,我们可以将其转换为目标格式,并写入到目标系统中。这一步通常包括字段映射、格式转换等操作。 例如,将返回的 JSON 数据转换为数据库表格记录,或者将其导出为 CSV 文件供其他系统使用。 #### 实时监控与调试 为了确保整个过程顺利进行,我们可以利用平台提供的实时监控功能,查看每个环节的数据流动和处理状态。如果出现问题,可以及时调试和修正。 通过以上步骤,我们实现了从旺店通·跨境版获取销售退货单数据,并进行了初步加工,为后续的数据处理打下了坚实基础。 ![如何对接金蝶云星空API接口](https://pic.qeasy.cloud/S7.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现金蝶云星空销售退货单的ETL转换与写入 在数据集成生命周期的第二步中,关键任务是将已经集成的源平台数据进行ETL(提取、转换、加载)转换,并转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。本文将深入探讨如何利用轻易云数据集成平台完成这一过程。 #### 1. API接口配置 首先,我们需要了解金蝶云星空API接口的配置要求。根据提供的元数据配置,目标API为`batchSave`,请求方法为`POST`,并且需要验证基础资料有效性。 以下是主要字段及其配置: - **FBillTypeID**:单据类型,例如标准销售退货单(XSTHD07_SYS)。 - **FBillNo**:单据编号,对应源数据中的`{returnNo}`。 - **FStockOrgId**和**FSaleOrgId**:库存组织和销售组织,对应源数据中的`{shopName}`。 - **FDate**:日期,对应源数据中的`{confirmInStockTime}`。 - **FRetcustId**:退货客户,对应源数据中的`{shopName}`。 - **FSettleCurrId**:结算币别,例如人民币(PRE001),对应源数据中的`{shopName}`。 - **FHeadNote**:备注。 - **FOwnerIdHead**:货主,对应源数据中的`{shopName}`。 #### 2. 数据转换与映射 在进行ETL转换时,需要特别注意字段的映射和转换逻辑。例如: ```json { "field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "标准销售退货单:XSTHD01_SYS\n寄售退货单:XSTHD02_SYS\n零售退货单:XSTHD03_SYS\n分销购销销售退货单:XSTHD04_SYS\nVMI销售退货单:XSTHD05_SYS\n现销退货单:XSTHD06_SYS\nB2C销售退货单:XSTHD07_SYS\nBBC销售退货单:XSTHD08_SYS\n直运销售退货单:XSTHD09_SYS", "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, "value": "XSTHD07_SYS" } ``` 在上述配置中,使用了`ConvertObjectParser`解析器,将值转换为金蝶云星空所需的格式。 #### 3. 明细信息处理 对于明细信息(FEntity),需要处理多个SKU信息,每个SKU包含多个字段,如物料编码、实退数量、含税单价等: ```json { "field": "FEntity", "label": "明细信息", "type": "array", "describe": "明细信息", "value": "skuSpuInfoList", "children": [ { "field": "FMaterialId", "label": "物料编码", "type": "string", "describe": "物料编码", "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, "value": "{{skuSpuInfoList.specNo}}" }, { ... } ] } ``` 这里使用了嵌套结构来处理数组类型的数据,每个子字段都需要进行相应的解析和映射。 #### 4. 财务信息处理 财务信息(SubHeadEntity)包括结算组织、结算币别和汇率类型等字段: ```json { ... { "field": "SubHeadEntity", ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... } } } } } } } } } } } } } } } }, ... } ``` 这些字段同样需要通过解析器进行值的转换和映射,以确保符合金蝶云星空的API要求。 #### 5. 提交与审核 最后,在提交请求时,需要设置一些额外参数,如业务对象表单ID(FormId)、执行操作(Operation)、是否自动提交并审核(IsAutoSubmitAndAudit)等: ```json { ... {"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"SAL_RETURNSTOCK"}, {"field":"Operation","label":"执行的操作","type":"string","describe":"执行的操作","value":"BatchSave"}, {"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","describe":"提交并审核","value":"true"}, {"field":"IsVerifyBaseDataField","label":"验证基础资料","type":"bool","describe":"是否验证所有的基础资料有效性,布尔类,默认false(非必录)","value":"true"} } ``` 这些参数确保了请求能够正确地被金蝶云星空系统接收和处理。 通过上述步骤,我们可以利用轻易云数据集成平台,将源平台的数据经过ETL转换后,无缝对接到金蝶云星空系统,实现高效的数据集成。 ![数据集成平台可视化配置API接口](https://pic.qeasy.cloud/T8.png~tplv-syqr462i7n-qeasy.image)