利用数据集成平台将清洗数据写入金蝶云星空

  • 轻易云集成顾问-孙传友
### 吉客云数据集成到金蝶云星空:其他入库-报废入库案例分享 在本次技术案例中,我们将探讨如何通过轻易云数据集成平台实现吉客云的数据高效对接至金蝶云星空,具体应用于“其他入库-报废入库”的业务场景。该集成方案的核心目标是确保每一条有关报废物品的记录能够稳定、高效地由吉客云写入到金蝶云星空系统中,无论是在数据量巨大时还是在面对复杂的数据转换需求时,均能保持高度的可靠性与一致性。 首先,通过调用吉客云提供的API接口`erp.storage.goodsdocin.v2`,我们能够定期、可靠地抓取所需的数据。这些数据随后会经过自定义转换逻辑,以适应金蝶云星空系统的数据结构和格式要求。在转换过程中,对分页及限流问题进行有效处理,以保证大规模数据写入进程不中断。此外,为了确保任务执行过程中的透明度和可控性,通过中心化监控和告警系统,可以及时追踪每个步骤的状态,并对可能出现的问题进行预警与处理。 接下来,这些清洗后的数据显示可以通过金蝶云星空提供的API接口`batchSave`批量写入其系统,实现从抓取、处理到存储全流程的一体化运作。同时,为了进一步提升实际操作中的效率与稳定性,我们还采取了一系列优化措施,如实现异常检测、错误重试机制以及定制化映射规则等,从而确保整个体系在极端情况下依然表现卓越。 总之,本次案例展示了利用先进的平台工具,将两个不同生态环境下的信息无缝对接并达到高效协同工作的实施方案。下一步将详细介绍具体配置和运行流程,以便深入理解其技术细节。 ![打通用友BIP数据接口](https://pic.qeasy.cloud/D32.png~tplv-syqr462i7n-qeasy.image) ### 调用吉客云接口erp.storage.goodsdocin.v2获取并加工数据的技术案例 在数据集成生命周期的第一步,调用源系统接口获取并加工数据是至关重要的一环。本文将深入探讨如何通过轻易云数据集成平台调用吉客云接口`erp.storage.goodsdocin.v2`来实现这一过程。 #### 接口配置与调用 首先,我们需要配置元数据,以便正确调用吉客云的API接口。以下是元数据配置的详细内容: ```json { "api": "erp.storage.goodsdocin.v2", "effect": "QUERY", "method": "POST", "number": "goodsdocNo", "id": "goodsdocNo", "idCheck": true, "request": [ {"field": "pageIndex", "label": "分页页码", "type": "int"}, {"field": "pageSize", "label": "分页页数", "type": "int", "value": "50"}, {"field": "startDate", "label": "创建时间的起始时间", "type": "string", "value":"{{LAST_SYNC_TIME|datetime}}"}, {"field": "endDate", "label": "创建时间的结束时间", "type":"string","value":"{{CURRENT_TIME|datetime}}"}, {"field":"selelctFields","label":"返回字段","type":"string","value": "goodsdocNo,inOutDate,gmtCreate,inouttype,vendCustomerCode,warehouseCode,warehouseName,redStatus,goodsDocDetailList.goodsNo,goodsDocDetailList.estCost,goodsDocDetailList.quantity,goodsDocDetailList"}, {"field":"inouttype","label":"入库类型","type":"int","value":"109"} ], "autoFillResponse": true, ... } ``` #### 请求参数解析 1. **分页参数**: - `pageIndex`:分页页码,类型为整数。 - `pageSize`:分页页数,默认值为50。 2. **时间参数**: - `startDate`:创建时间的起始时间,使用模板变量`{{LAST_SYNC_TIME|datetime}}`来动态获取上次同步时间。 - `endDate`:创建时间的结束时间,使用模板变量`{{CURRENT_TIME|datetime}}`来动态获取当前时间。 3. **返回字段**: - `selelctFields`:指定需要返回的字段,包括单据编号、出入库日期、创建时间、入库类型等详细信息。 4. **入库类型**: - `inouttype`:固定值为109,表示报废入库。 #### 数据请求与清洗 在发送请求后,我们会收到包含多个字段的数据响应。由于我们只关心特定字段,因此需要对数据进行清洗和过滤。以下是一个示例响应: ```json { ... "data":[ { "goodsdocNo":"GD20230901001", ... "goodsDocDetailList":[ { ... "quantity":10, ... } ] }, ... ] } ``` 在这个过程中,我们可以利用配置中的`autoFillResponse: true`自动填充响应数据,并通过条件过滤器确保只处理符合条件的数据。例如: - 条件过滤器 `condition_bk` 中定义了两个条件: - `inouttype = 101` - `goodsDocDetailList.quantity > 0` 这些条件确保我们只处理特定类型且数量大于零的记录。 #### 异常处理与补救机制 为了保证数据集成过程的稳定性和连续性,我们还需要配置异常处理和补救机制。例如,通过定时任务(crontab)定期检查并补救遗漏的数据请求: ```json "omissionRemedy":{ ... { ... {"field":"startDate","value": "_function FROM_UNIXTIME( unix_timestamp() -259200 , '%Y-%m-%d %H:%i:%s' )"} ... } } ``` 这个配置项确保即使在系统出现异常时,也能通过回溯三天的数据来进行补救,从而保证数据完整性。 #### 数据转换与写入 在完成数据清洗后,我们需要将处理后的数据转换为目标系统所需的格式,并写入目标数据库。这一步通常涉及到字段映射和格式转换,例如将日期格式从字符串转换为标准日期格式等。 通过上述步骤,我们能够高效地调用吉客云接口获取并加工所需的数据,为后续的数据转换与写入打下坚实基础。 ![钉钉与WMS系统接口开发配置](https://pic.qeasy.cloud/S29.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将源数据转换并写入金蝶云星空API接口 在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,并转为目标平台(如金蝶云星空API接口)所能够接收的格式,最终写入目标平台。以下将详细探讨如何利用轻易云数据集成平台完成这一过程。 #### 数据请求与清洗 首先,我们需要从源系统获取原始数据,并进行必要的清洗和预处理。这一步骤确保了数据的准确性和一致性,为后续的转换和写入打下基础。在此步骤中,可以利用轻易云提供的各种数据处理工具,如过滤、排序、去重等。 #### 数据转换与写入 接下来是核心步骤:将清洗后的数据进行ETL转换,并通过金蝶云星空API接口写入目标系统。以下是具体操作步骤: 1. **配置API请求参数** 根据提供的元数据配置,我们需要定义请求参数。这里主要涉及到请求方法、字段映射以及一些固定值设置。 ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "operation": { "method": "merge", "field": "goodsDocDetailList_ownerName,inOutMonth", "bodyName": "Fentity", "bodySum": ["goodsDocDetailList_quantity"], "header": ["goodsDocDetailList_ownerName", "inOutMonth", "goodsDocDetailList_ownerName"], "body": ["goodsDocDetailList_goodsNo", "warehouseCode", "goodsDocDetailList_quantity"] }, ... } ``` 2. **字段映射与转换** 在配置文件中,我们定义了如何将源系统的数据字段映射到目标系统所需的字段。例如,将`goodsDocDetailList_ownerName`映射到`FStockOrgId`,并使用`ConvertObjectParser`解析器进行必要的转换。 ```json { "field": "FStockOrgId", "label": "库存组织", ... "parser": { "name": "ConvertObjectParser", ... }, ... } ``` 3. **设置固定值** 某些字段需要设置固定值,如单据类型、库存方向等。这些值在配置文件中直接指定,例如: ```json { "field": "FBillTypeID", ... "value": "QTRKD94_SYS" }, { ... "field": "FStockDirect", ... "value": "GENERAL" } ``` 4. **构建请求体** 根据元数据配置,构建API请求体。这里我们需要将多个子字段组合成一个完整的JSON对象,以满足金蝶云星空API接口的要求。 ```json { ... { ... field: 'FEntity', children: [ { field: 'FMATERIALID', value: '{{Fentity.goodsDocDetailList_goodsNo}}' }, ... { field: 'FQty', value: '{{Fentity.goodsDocDetailList_quantity}}' } ], value: 'Fentity' }, ... } ``` 5. **发送API请求** 最后,通过HTTP POST方法发送构建好的请求体到金蝶云星空API接口,并处理返回结果。确保每个步骤都记录日志,以便于后续调试和问题排查。 #### 关键技术点 - **异步处理**:确保整个ETL过程中的各个步骤可以异步执行,提高效率。 - **实时监控**:利用轻易云平台提供的实时监控功能,随时掌握数据流动和处理状态。 - **错误处理**:对可能出现的错误进行捕获和处理,确保系统稳定运行。 通过上述步骤,我们可以高效地将源系统的数据转换为金蝶云星空API接口所需的格式,并成功写入目标系统。这不仅提升了业务透明度和效率,也为企业的数据管理提供了强有力的支持。 ![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/T20.png~tplv-syqr462i7n-qeasy.image)