ETL转换:将聚水潭运费数据写入金蝶云星空

  • 轻易云集成顾问-冯潇
### 聚水潭·奇门数据集成到金蝶云星空:线上销售运费对接案例 在实际项目中,如何高效、可靠地将聚水潭·奇门的数据集成到金蝶云星空,是一个亟需解决的技术课题。本篇文章将分享一则具体案例,展示如何通过轻易云平台实现“聚水潭线上销售运费对接金蝶应收单ok----奇门”方案。 首先,我们从获取聚水潭·奇门数据开始。利用`jushuitan.saleout.list.query` API接口,可以定时抓取线上销售订单及其关联的运费信息。这一步尤为关键,需要处理分页和限流问题,以保证数据抓取不漏单且高效执行。例如,通过设定合理的分页大小,并在调用间隔时间内进行任务调度来避免触发API限制。 获取的数据需要快速写入到金蝶云星空,这里用到了`batchSave` API接口。而为了应对不同系统之间的数据格式差异,对接过程中必须进行必要的数据转换。通过自定义映射规则,将聚水潭返回的JSON格式业务数据转化为适合金蝶数据库字段结构的信息,这是确保双方系统能够无缝交互的重要步骤之一。 此外,在整个数据传输和处理过程中,还涉及异常处理与错误重试机制。当API调用失败或网络异常时,引入自动重试策略,以提高成功率和稳定性。同时,为了全面监控每个环节,有助于工程师实时排查问题,实现日志记录功能必不可少,从而做到透明可视化管理。 本文旨在详解这一系列操作中的技术要点,为有类似需求的企业提供参考。 ![如何开发金蝶云星空API接口](https://pic.qeasy.cloud/D13.png~tplv-syqr462i7n-qeasy.image) ### 调用聚水潭·奇门接口jushuitan.saleout.list.query获取并加工数据 在数据集成的生命周期中,第一步是调用源系统接口获取原始数据,并对其进行初步加工。本文将详细探讨如何使用轻易云数据集成平台配置元数据,通过调用聚水潭·奇门接口`jushuitan.saleout.list.query`来实现这一目标。 #### 接口配置与请求参数 首先,我们需要配置元数据以便正确调用`jushuitan.saleout.list.query`接口。以下是该接口的关键元数据配置: ```json { "api": "jushuitan.saleout.list.query", "effect": "QUERY", "method": "POST", "number": "o_id", "id": "o_id", "name": "name", "idCheck": true, "request": [ { "field": "page_index", "label": "页数", "type": "string", "describe": "第几页,从第一页开始,默认1", "value": "{PAGINATION_START_PAGE}" }, { "field": "page_size", "label": "每页行数", "type": "string", "describe": "每页多少条,默认25,最大50", "value": "{PAGINATION_PAGE_SIZE}" }, { "field": "start_time", "label": "修改开始时间", "type": "string", "describe": "修改起始时间,和结束时间必须同时存在,时间间隔不能超过七天,与线上单号不能同时为空", "value": "{{LAST_SYNC_TIME|datetime}}" }, { "field": "end_time", "label": "修改结束时间", "type": "string", "describe": "(修改结束时间,和起始时间必须同时存在,时间间隔不能超过七天,与线上单号不能同时为空)", "(value)": "{{CURRENT_TIME|datetime}}" }, { "(field)": "(status)", "(label)": "(单据状态)", "(type)": "(string)", "(describe)": "(单据状态: WaitConfirm=待出库; Confirmed=已出库; Cancelled=作废)", "(value)": "(Confirmed)" }, { "(field)": "(so_ids)", "(label)": "(线上单号)", "(type)": "(string)" } ], (autoFillResponse): (true), (condition): [ [ {"field":"shop_id","logic":"notlike","value":"12385719"}, {"field":"labels","logic":"notlike","value":"特殊单"}, {"field":"freight","logic":"gt","value":"0"} ] ] } ``` #### 请求参数详解 1. **分页参数**: - `page_index`: 页数,从第一页开始。默认值为1。 - `page_size`: 每页行数,默认25条记录,最大50条记录。 2. **时间参数**: - `start_time`: 修改开始时间。必须与`end_time`同时存在且时间间隔不超过七天。 - `end_time`: 修改结束时间。必须与`start_time`同时存在且时间间隔不超过七天。 3. **状态参数**: - `status`: 单据状态,此处设置为"Confirmed"表示已出库。 4. **其他参数**: - `so_ids`: 线上单号,可选字段,用于指定特定订单。 #### 数据过滤条件 在请求返回的数据中,我们可以通过设置条件来过滤不需要的数据。本例中设置了以下条件: - 排除`shop_id`为"12385719"的记录。 - 排除标签为"特殊单"的记录。 - 运费大于0的记录。 这些条件确保我们只获取到符合业务需求的数据,提高了数据处理的效率和准确性。 #### 数据请求与清洗 在发送请求后,我们会接收到一组原始数据。这些数据需要经过清洗和转换,以便后续处理。轻易云平台提供了自动填充响应(autoFillResponse)功能,可以自动将响应中的字段映射到预定义的结构中,大大简化了清洗过程。 例如,对于返回的每条记录,我们可以提取出订单ID(o_id)、订单名称(name)等关键字段,并根据业务逻辑进行进一步处理,如计算运费、生成应收单等。 #### 实践案例 假设我们需要获取最近一天内所有已出库且运费大于0的订单信息,并生成相应的应收单。我们可以通过以下步骤实现: 1. 配置元数据并发送请求。 2. 获取返回的数据并进行初步清洗。 3. 根据业务逻辑生成应收单,并写入目标系统(如金蝶)。 通过上述步骤,我们能够高效地完成从数据请求到初步加工,再到生成业务结果的一系列操作。这不仅提升了工作效率,还确保了数据的一致性和准确性。 ![金蝶云星空API接口配置](https://pic.qeasy.cloud/S29.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口 在数据集成的过程中,将源平台的数据转换为目标平台所能接收的格式是至关重要的一步。本文将详细介绍如何使用轻易云数据集成平台,将聚水潭线上销售运费数据通过ETL转换,最终写入金蝶云星空API接口。 #### 数据转换与写入配置 首先,我们需要明确金蝶云星空API接口的元数据配置。以下是详细的配置内容: ```json { "api": "batchSave", "method": "POST", "pagination": {"pageSize": 100}, "operation": {"rowsKey": "array", "rows": 1, "method": "batchArraySave"}, "idCheck": true, "request": [ {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"YSD02_SYS"}, {"field":"FSETTLEORGID","label":"结算组织","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find F_XC_Base_Fnumber from 8ea1287e-05cd-3ce7-b0e6-4a9a7daa783e where FNumber={shop_id}"}, {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{io_id}"}, {"field":"FBUSINESSTYPE","label":"业务类型","type":"string","describe":"单据编号","value":"FY"}, {"field":"FDATE","label":"业务日期","type":"string","describe":"业务日期","value":"{io_date}"}, {"field":"FCURRENCYID","label":"币别","type":"string","describe":"币别","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"PRE001"}, {"field":"FCUSTOMERID","label":"客户","type":"string","describe":"","value":"{shop_id}"}, {"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":""}, {"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":""}, {"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":""}, {"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":""}, {"field":"", ... ``` #### 数据字段解析与映射 在配置中,每个字段都有明确的解析和映射规则。例如: - `FBillTypeID`:使用`ConvertObjectParser`解析器,将值转换为金蝶系统识别的编号。 - `FSETTLEORGID`:通过SQL查询获取结算组织的编号,并进行相应的映射。 - `FBillNo`、`FDATE`等字段直接从源数据中获取并填充。 特别注意的是,子对象和数组类型的数据需要进行嵌套处理。例如,明细部分`FEntityDetail`包含多个字段,这些字段同样需要进行解析和映射: ```json { "field": "FEntityDetail", "label": "明细", "type": "array", "describe": "明细", "children":[ { "field": "FCOSTID", ... ... ... ``` #### API请求构建与发送 根据上述配置,我们可以构建出符合金蝶云星空API要求的请求体。以下是一个示例请求体: ```json { "FormId": "AR_receivable", "Operation": "BatchSave", ... } ``` 通过轻易云数据集成平台,我们可以自动化地生成并发送这个请求,实现数据从源平台到目标平台的无缝对接。 #### 实际案例应用 在实际应用中,我们可以通过轻易云平台的可视化界面,监控每一步的数据流动和处理状态,确保数据转换和写入过程的准确性和高效性。例如,在处理聚水潭线上销售运费对接金蝶应收单时,我们可以实时查看每一笔订单的处理状态,并及时调整配置以应对可能出现的问题。 #### 总结 通过合理配置元数据,并利用轻易云数据集成平台强大的ETL功能,我们可以高效地将源平台的数据转换为目标平台所需的格式,并成功写入金蝶云星空API接口。这不仅提升了数据处理效率,也确保了业务流程的顺畅运行。 ![如何开发用友BIP接口](https://pic.qeasy.cloud/T1.png~tplv-syqr462i7n-qeasy.image)