如何利用轻易云实现金蝶与聚水潭的ETL转换

  • 轻易云集成顾问-卢剑航
### 金蝶云星空数据集成到聚水潭案例分享:从销售出库单到其他出库单的系统对接 在企业数字化运营过程中,跨系统的数据实时交互、同步和管理是提升效率与透明度的重要手段。本文将探讨如何通过轻易云数据集成平台实现金蝶云星空中的销售出库单数据高效、无缝地集成到聚水潭的其他出库单模块,为企业构建可靠的数据桥梁。 为了完成这项任务,我们主要关注以下技术要点: 1. **API接口调用和处理**: - 使用金蝶云星空提供的 `executeBillQuery` API 接口来定时抓取销售出库单。 - 将抓取的数据转换并映射为适合聚水潭格式后,通过 `/open/jushuitan/otherinout/upload` API 接口批量写入目标系统。 2. **高吞吐量与实时性**: 为了确保能够快速处理大量数据,本方案特别注重了增强传输链路的吞吐能力,并使用集中监控和告警机制进行全程跟踪。 3. **数据质量监控与异常处理**: 通过自定义逻辑设置,精确匹配业务需求,实现多层次的数据质量监控。一旦发现异常情况,如分页限流问题或接口返回错误,即可迅速定位并触发自动重试机制,保证任务执行不漏掉任何一条重要记录。 4. **日志记录与立体监控体系**: 在整个流程中,包括API调用、数据传输及转换环节,都广泛采用实时日志记录功能,以便于事后的审计分析和持续改进。同时,通过可视化工具对各个阶段进行展示,使得运维人员可以清晰直观掌握当前状态,大幅减少排障时间。 以下章节将会详细说明具体配置步骤及实现细节,其中涵盖了接口调用参数设置、分页请求策略优化以及自定义转换规则等关键内容。 ![如何对接金蝶云星空API接口](https://pic.qeasy.cloud/D38.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,第一步是调用源系统接口获取数据。本文将详细探讨如何使用轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口,以获取销售出库单的数据,并进行必要的加工处理。 #### 接口配置与调用 首先,我们需要配置和调用金蝶云星空的`executeBillQuery`接口。根据提供的元数据配置,我们可以看到该接口采用POST方法进行请求,主要用于查询(QUERY)操作。 ```json { "api": "executeBillQuery", "effect": "QUERY", "method": "POST", ... } ``` #### 请求参数设置 请求参数是接口调用的关键部分。根据元数据配置,我们需要设置多个字段以构建完整的请求体。这些字段包括单据类型、单据编号、日期、销售组织等。 例如,以下是一些关键字段及其描述: - `FBillTypeID_FNumber`: 单据类型 - `FBillNo`: 单据编号 - `FDate`: 日期 - `FSaleOrgId_FNumber`: 销售组织 - `FCustomerID_FNumber`: 客户 这些字段在实际请求中需要填充具体值,以便从金蝶云星空系统中获取相应的数据。 ```json { "FBillTypeID_FNumber": "XSCKD01", "FBillNo": "SO202109001", "FDate": "2021-09-01", ... } ``` #### 分页参数与过滤条件 为了优化查询性能和结果处理,我们通常会使用分页参数和过滤条件。元数据配置中提供了分页参数如`Limit`(最大行数)、`StartRow`(开始行索引)等,以及过滤条件`FilterString`。 例如,过滤条件可以设置为: ```json { "FilterString": "FApproveDate>='2021-09-01' AND FDocumentStatus='C'" } ``` 这样可以确保只查询到特定日期之后且状态为已审核的单据。 #### 字段集合与表单ID 我们还需要指定需查询的字段集合和业务对象表单ID。字段集合通过`FieldKeys`指定,而表单ID通过`FormId`指定。例如: ```json { "FieldKeys": ["FBillNo", "FDate", "FSaleOrgId.FNumber", ...], "FormId": "SAL_OUTSTOCK" } ``` #### 数据清洗与转换 在获取到原始数据后,需要对数据进行清洗和转换,以满足目标系统的要求。例如,将金蝶云星空中的销售出库单转换为聚水潭中的其他出库单。在这个过程中,可以利用轻易云平台提供的数据处理功能,对字段进行映射、格式转换等操作。 例如,将金蝶云星空中的客户编码转换为聚水潭中的客户编码: ```json { "FCustomerID_FNumber": { "sourceField": "FCustomerID.FNumber", "targetField": "CustomerCode" } } ``` #### 自动填充响应 元数据配置中还提到了自动填充响应(autoFillResponse),这意味着在成功调用接口并获取到数据后,系统会自动将响应结果填充到相应的数据结构中,简化了后续的数据处理工作。 ```json { "autoFillResponse": true } ``` #### 条件逻辑 最后,根据元数据配置中的条件逻辑,可以对特定字段进行检查。例如,确保某个字段不为空: ```json { "condition": [ [ { "field": "F_POKM_JSTSTOCKNUMBER", "logic": "notnull" } ] ] } ``` 通过上述步骤,我们可以高效地调用金蝶云星空接口获取所需的数据,并进行必要的清洗和转换,为后续的数据写入做好准备。这一过程充分利用了轻易云平台的强大功能,实现了不同系统间的数据无缝对接。 ![打通用友BIP数据接口](https://pic.qeasy.cloud/S24.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现金蝶销售出库单到聚水潭其他出库单的ETL转换 在数据集成过程中,将金蝶的销售出库单数据转换并写入到聚水潭的其他出库单API接口是一个典型的ETL(Extract, Transform, Load)任务。本文将详细探讨如何通过轻易云数据集成平台配置元数据,完成这一复杂的数据转换和写入操作。 #### 数据请求与清洗 在ETL生命周期的第一步,我们已经从金蝶系统中提取了销售出库单的数据,并进行了必要的清洗操作。接下来,我们将进入生命周期的第二步:数据转换与写入。 #### 数据转换与写入 为了将清洗后的源数据转化为聚水潭API能够接受的格式,我们需要根据提供的元数据配置进行详细配置。 ##### API接口配置 根据元数据配置,目标平台为聚水潭,其API接口路径为`/open/jushuitan/otherinout/upload`,使用POST方法进行请求。以下是关键字段及其配置: - **is_confirm**: 是否确认单据。通过函数判断`{F_POKM_JSTSTOCKNUMBER}`是否等于10816570,如果是则返回1,否则返回0。 ```json "field": "is_confirm", "value": "_function IF({F_POKM_JSTSTOCKNUMBER} = 10816570 , 1 , 0 )" ``` - **excute_confirming**: 是否审核单据。固定值为`false`。 ```json "field": "excute_confirming", "value": "false" ``` - **wms_co_id**: 仓库编号。直接映射金蝶字段`{F_POKM_JSTSTOCKNUMBER}`。 ```json "field": "wms_co_id", "value": "{F_POKM_JSTSTOCKNUMBER}" ``` - **type**: 出入库类型。固定值为`out`。 ```json "field": "type", "value": "out" ``` - **external_id**: 外部单号。由多个字段拼接而成,包括`{FBillNo}`, `{F_POKM_JSTSTOCKNUMBER}`, `{F_POKM_JSTSTOCKNUMBER2}`。 ```json "field": "external_id", "value": "{FBillNo}{F_POKM_JSTSTOCKNUMBER}{F_POKM_JSTSTOCKNUMBER2}" ``` - **remark**: 备注信息。包含固定文本和变量`{FBillNo}`。 ```json "field": "remark", "value": "金蝶线下销售出库单据推送,单号:{FBillNo}" ``` - **items**: 商品明细列表。每个商品包含两个字段: - `sku_id`: 商品编码,对应金蝶中的物料编码`{{list.FMaterialID_FNumber}}` - `qty`: 入库数量,对应金蝶中的实际数量`{{list.FRealQty}}` ```json { "field": "items", "children": [ { "field": "sku_id", "value": "{{list.FMaterialID_FNumber}}" }, { "field": "qty", "value": "{{list.FRealQty}}" } ] } ``` - **drp_co_name**: 出库类型,固定值为“线下销售出库”。 ```json { "field": "drp_co_name", "value": "线下销售出库" } ``` - **warehouse**: 分仓,对应金蝶中的仓库编号2`{F_POKM_JSTSTOCKNUMBER2}`。 ```json { "field": "warehouse", "value": "{F_POKM_JSTSTOCKNUMBER2}" } ``` ##### 操作配置 在操作部分,我们定义了如何处理和合并数据: ```json { "method":"merge", "field":"FBillNo,F_POKM_JSTSTOCKNUMBER,F_POKM_JSTSTOCKNUMBER2", "bodyName":"list", "header":["FBillNo","F_POKM_JSTSTOCKNUMBER","F_POKM_JSTSTOCKNUMBER2"], "body":["FMaterialID_FNumber","FRealQty"], "bodySum":["FRealQty"] } ``` 此处定义了合并操作的方法、字段以及主体名称和头部信息。这些配置确保了从源系统提取的数据能够正确地映射到目标系统所需的格式,并且能够处理多条记录的合并与汇总。 #### 实际应用案例 假设我们从金蝶系统中提取到如下销售出库单数据: ```json { "FBillNo":"SO12345", "F_POKM_JSTSTOCKNUMBER":"10816570", "F_POKM_JSTSTOCKNUMBER2":"WH001", "items":[ { "FMaterialID_FNumber":"SKU12345", "FRealQty":"10" }, { "FMaterialID_FNumber":"SKU67890", "FRealQty":"5" } ] } ``` 根据上述元数据配置,该数据将被转换为如下格式,并通过POST方法发送至聚水潭API: ```json { "is_confirm":"1", "excute_confirming":"false", "wms_co_id":"10816570", "type":"out", "external_id":"SO123451081657010816570", "remark":"金蝶线下销售出库单据推送,单号:SO12345", "items":[ {"sku_id":"SKU12345","qty":"10"}, {"sku_id":"SKU67890","qty":"5"} ], "drp_co_name":"线下销售出库", "warehouse":"WH001" } ``` 通过这种方式,我们实现了从金蝶系统到聚水潭系统的数据无缝对接,确保了业务流程的顺畅运行。 #### 总结 通过轻易云数据集成平台,我们能够高效地完成复杂的数据转换和写入操作。在实际应用中,通过合理配置元数据,可以极大地简化跨系统的数据集成任务,提高业务效率和透明度。 ![如何开发企业微信API接口](https://pic.qeasy.cloud/T6.png~tplv-syqr462i7n-qeasy.image)