轻易云ETL实现跨平台数据转换:吉客云对接金蝶云星空

  • 轻易云集成顾问-贺强
### 系统对接集成案例分享:吉客云数据集成到金蝶云星空 在当今复杂多变的企业信息化环境中,如何高效、可靠地实现多个系统平台之间的数据互通和业务协同,成为了各大企业亟需解决的问题。本文将深入解析一个真实的技术实现案例——“JY-BDS新增/更新物料pro”,具体探讨如何借助轻易云数据集成平台,将吉客云中的关键业务数据无缝对接至金蝶云星空。 该方案主要通过调用吉客云提供的数据接口`erp.storage.goodslist`,获取需要处理的物料数据,并利用金蝶云星空的`batchSave`接口进行批量写入操作。在这一过程中,我们充分发挥了轻易云数据集成平台的高吞吐量、高性能监控、自定义转换逻辑等特性,以确保整个过程准确、高效且稳定。 **1. 高吞吐量的数据写入** 为了应对大量物料数据快速写入到金蝶云星空,我们优化了数据流设计,通过并发处理和批量提交机制,大幅提升了整体效率。结合轻易云的平台功能,实现了每小时数百万条记录的不间断传输,这为客户节省了大量时间成本,同时保证了业务连续性。 **2. 实时监控与告警** 在实际实施过程中,由于跨系统的数据同步存在诸多不确定因素,如网络波动、API限流等问题,为保证任务顺利进行,我们启用了实时监控和告警系统。这不仅能即时捕捉异常,还可以根据预设规则自动重试,提高事务处理成功率并降低人工干预需求。 **3. 数据质量控制与自定义转换** 面对不同系统之间的数据格式差异,我们采用了一系列自定义转换逻辑来适配特殊字段及格式要求。同时,通过内嵌的数据质量监控功能,对每个环节进行了严格把关,从源头上杜绝错误或冗余信息进入目标数据库。特别是在分页抓取和限流管理方面,我们设置了一定缓冲策略,以平衡负载和响应速度,实现全程顺畅运行。 通过上述几个核心步骤,该项目成功完成了从吉客云到金蝶云星空的大规模物料数据对接,为客户带来了显著的运维改进效果。下面我们将详细介绍各个技术模块以及具体实施细节,希望能为类似项目提供有益参考。 ![如何开发金蝶云星空API接口](https://pic.qeasy.cloud/D27.png~tplv-syqr462i7n-qeasy.image) ### 调用吉客云接口erp.storage.goodslist获取并加工数据 在轻易云数据集成平台的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过调用吉客云接口`erp.storage.goodslist`来获取并加工数据。 #### 接口概述 吉客云提供的`erp.storage.goodslist`接口用于查询物料信息。该接口采用POST方法进行数据请求,支持分页查询和多种过滤条件。以下是该接口的元数据配置: ```json { "api": "erp.storage.goodslist", "effect": "QUERY", "method": "POST", "number": "goodsNo", "id": "goodsNo", "request": [ {"field": "pageIndex", "label": "分页页码", "type": "int"}, {"field": "pageSize", "label": "分页页数", "type": "int", "value": "50"}, {"field": "goodsNo", "label": "货品编号", "type": "string"}, {"field": "skuBarcode", "label": "条码", "type": "string"}, {"field": "startDate", "label": "创建起始时间", "type": "string"}, {"field": "endDate", "label": "创建结束时间", "type": "string"}, {"field": "startDateModifiedSku", "label": "起始时间(规格修改时间)", "type":"string" }, {"field":"endDateModifiedSku","label":"终止时间(规格修改时间)","type":"string"}, {"field":"startDateModifiedGoods","label":"起始时间(货品修改时间)","type":"string","value":"{{LAST_SYNC_TIME|datetime}}"}, {"field":"endDateModifiedGoods","label":"终止时间(货品修改时间)","type":"string","value":"{{CURRENT_TIME|datetime}}"}, {"field":"isPackageGood","label":"是否组合装 0-否 1 - 是","type":"int"} ], "autoFillResponse" : true, "condition_bk":[[{"field":"isPackageGood","logic":"eqv2","value":"0"}]] } ``` #### 数据请求与清洗 在数据集成过程中,首先需要构建请求参数。根据元数据配置,我们可以设置以下参数: - `pageIndex`: 分页页码,从1开始。 - `pageSize`: 每页记录数,默认值为50。 - `goodsNo`: 可选的货品编号,用于精确查询特定物料。 - `skuBarcode`: 可选的条码,用于精确查询特定物料。 - `startDate` 和 `endDate`: 创建起始和结束时间,用于筛选特定时间段内创建的物料。 - `startDateModifiedSku` 和 `endDateModifiedSku`: 用于筛选特定规格修改时间段内的物料。 - `startDateModifiedGoods` 和 `endDateModifiedGoods`: 用于筛选特定货品修改时间段内的物料,默认值分别为上次同步时间和当前时间。 - `isPackageGood`: 是否组合装,0表示否,1表示是。 例如,我们可以构建如下请求体: ```json { "pageIndex" : 1, "pageSize" : 50, "startDateModifiedGoods" : "{{LAST_SYNC_TIME|datetime}}", "endDateModifiedGoods" : "{{CURRENT_TIME|datetime}}", "isPackageGood" : 0 } ``` 发送POST请求后,系统会返回符合条件的物料列表。为了确保数据质量,需要对返回的数据进行清洗,包括但不限于: - 去除重复记录 - 格式化日期字段 - 验证必填字段是否存在 #### 数据转换与写入 在完成数据清洗后,需要将数据转换为目标系统所需的格式,并写入目标数据库或系统。这一步通常包括以下操作: 1. **字段映射**:将源系统字段映射到目标系统字段。例如,将`goodsNo`映射到目标系统中的物料编号字段。 2. **数据类型转换**:确保所有字段的数据类型符合目标系统要求。例如,将字符串类型的日期转换为日期类型。 3. **批量写入**:为了提高效率,可以采用批量写入方式,将处理后的数据一次性写入目标系统。 通过以上步骤,我们可以高效地从吉客云获取并加工物料数据,实现不同系统间的数据无缝对接。 #### 自动填充响应 元数据配置中的`autoFillResponse: true`表示系统会自动处理响应结果,并填充到相应的数据结构中。这一功能极大简化了开发工作,使得我们只需关注业务逻辑,而无需处理繁琐的数据解析过程。 #### 条件过滤 配置中的`condition_bk`用于定义条件过滤逻辑。例如: ```json [ [ {"field":"isPackageGood","logic":"eqv2","value":"0"} ] ] ``` 这表示仅查询非组合装的物料(即`isPackageGood=0`)。这种灵活的条件过滤机制使得我们可以根据实际需求动态调整查询条件,提高了系统的适应性和灵活性。 通过上述步骤,我们成功实现了调用吉客云接口获取并加工数据,为后续的数据转换与写入打下坚实基础。 ![如何对接用友BIP接口](https://pic.qeasy.cloud/S25.png~tplv-syqr462i7n-qeasy.image) ### 通过轻易云数据集成平台实现数据ETL转换与写入金蝶云星空API接口 在使用轻易云数据集成平台进行数据处理时,ETL(提取、转换、加载)是一个关键步骤。本文将详细探讨如何将已集成的源平台数据通过ETL转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。 #### 数据请求与清洗 在数据请求与清洗阶段,我们已经从源平台获取了所需的数据,并进行了初步的清洗和规范化处理。这些处理后的数据现在需要通过ETL过程转换为金蝶云星空API接口所能接收的格式。 #### 数据转换与写入 为了将数据写入金蝶云星空,我们需要遵循其API接口规范。以下是一个典型的元数据配置示例,用于新增或更新物料信息: ```json { "api": "batchSave", "method": "POST", "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ { "label": "FMATERIALID", "field": "FMATERIALID", "type": "string", "value": "_findCollection find FMATERIALID from 894be6ba-255a-357a-b4fe-e7d711d123c2 where FNumber={goodsNo}" }, { "field": "FName", "label": "名称", "type": "string", "value": "{goodsName}" }, { "field": "FNumber", "label": "编码", "type": "string", "value": "{goodsNo}" }, { "field": "FDescription", "label": "描述", "type": "string", "value": "{cateFullName}" }, { ... } ], ... } ``` ##### 解析元数据配置 1. **API调用方式**: - `api`字段指定了调用的API接口,这里是`batchSave`。 - `method`字段指定了HTTP方法,这里是`POST`。 2. **操作配置**: - `operation`字段定义了操作方式,包括数组键值和行数等信息。 - `rowsKey`指定数组键值为`array`,`rows`设定为1,表示单条记录操作。 3. **请求参数**: - 每个字段都包含了详细的信息,如标签(label)、字段名(field)、类型(type)和值(value)。 - 例如,`FMATERIALID`字段通过一个查找表达式获取其值: `_findCollection find FMATERIALID from 894be6ba-255a-357a-b4fe-e7d711d123c2 where FNumber={goodsNo}`。 - 其他字段如名称、编码、描述等直接从源数据中映射过来。 4. **嵌套对象**: - 某些字段如`SubHeadEntity`包含子对象,这些子对象也需要按照特定规则进行解析和赋值。例如,物料属性(FErpClsID)根据条件进行赋值: `_function case {isPaidService} when 0 then '1' else '6' end`。 5. **其他请求参数**: - 包括业务对象表单Id(FormId)、执行操作(Operation)、是否自动提交并审核(IsAutoSubmitAndAudit)等。这些参数确保了在调用API时能够正确执行相应的业务逻辑。 #### 实际应用案例 假设我们有一组物料信息需要新增或更新到金蝶云星空系统中。通过上述元数据配置,我们可以将这些物料信息转换为符合金蝶云星空API接口要求的数据格式,并使用轻易云数据集成平台进行批量保存操作。 具体步骤如下: 1. **提取源数据**:从源系统中提取物料信息,包括物料编号、名称、描述等。 2. **清洗与规范化**:对提取的数据进行清洗和规范化处理,确保其符合目标系统要求。 3. **构建请求报文**:根据元数据配置构建符合金蝶云星空API接口要求的请求报文。 4. **调用API接口**:使用轻易云平台提供的功能调用金蝶云星空的批量保存接口,将构建好的请求报文发送至目标系统。 5. **监控与验证**:实时监控数据流动和处理状态,确保所有物料信息成功写入目标系统,并进行必要的验证和审核。 通过上述步骤,我们能够高效地将源平台的数据转换并写入到金蝶云星空系统中,实现不同系统间的数据无缝对接。这不仅提高了业务透明度和效率,也确保了数据的一致性和准确性。 ![金蝶与SCM系统接口开发配置](https://pic.qeasy.cloud/T3.png~tplv-syqr462i7n-qeasy.image)