使用轻易云平台实现聚水潭至金蝶云星辰V2的数据ETL转换

  • 轻易云集成顾问-叶威宏
### 聚水潭数据集成到金蝶云星辰V2案例分享 在系统对接与数据集成的实际应用中,确保数据准确无误地从一个平台传输到另一个平台是至关重要的。本文将详细探讨如何通过轻易云平台实现聚水潭数据集成到金蝶云星辰V2环境中的具体技术方法和注意事项。 首先,在进行实际的数据对接时,需要处理聚水潭接口编写分页和限流的问题。由于聚水潭提供的数据量庞大,如果不采取适当的方法进行分页获取,很容易导致网络延迟或超时。这时候,我们调用聚水潭API `/open/other/inout/query`,结合合理的分页策略,可以有效解决这个问题。 其次,为了保证大量数据能够快速而准确地写入到金蝶云星辰V2,我们需要充分利用其提供的API接口 `/jdy/v2/scm/inv_other_in` 实现高效的数据写入。在此过程中,必须考虑如何处理两者之间的数据格式差异,这样才能确保每条记录都能正确映射并存储在目标数据库中。 为了避免漏单以及提升抓取效率,我们将在方案中加入定时任务模块,通过定时可靠地抓取聚水潭接口数据,再批量集成这些数据到金蝶云星辰V2。同时,为应对可能出现的数据对接异常情况,设计了详细的错误重试机制,以确保即使在发生小概率失误时也能及时修复并恢复正常运行状态。 实时监控与日志记录是本次实施的重要环节,通过轻易云提供的平台监控功能,实现对整个过程全生命周期管理,每一步操作都透明可视,并且可以实时查看各个节点状况,有效提高业务透明度及整体执行效率。 我们将在后续部分继续展开具体实现方案、细节配置及技术难点攻克,希望这篇文章能为同类需求场景下寻求高效、稳定、安全的数据集成解决方案提供有益参考。 ![打通企业微信数据接口](https://pic.qeasy.cloud/D38.png~tplv-syqr462i7n-qeasy.image) ### 调用聚水潭接口获取并加工数据的技术案例 在数据集成过程中,调用源系统的API接口是关键的一步。本文将详细探讨如何通过轻易云数据集成平台调用聚水潭接口`/open/other/inout/query`,获取并加工数据,以实现高效的数据集成。 #### 接口调用配置 首先,我们需要配置元数据,以便正确调用聚水潭的API接口。以下是元数据配置的详细信息: ```json { "api": "/open/other/inout/query", "effect": "QUERY", "method": "POST", "number": "io_id", "id": "io_id", "idCheck": true, "request": [ {"field": "modified_begin", "label": "修改起始时间", "type": "datetime", "value": "{{MINUTE_AGO_20|datetime}}"}, {"field": "modified_end", "label": "修改结束时间", "type": "datetime", "value": "{{CURRENT_TIME|datetime}}"}, {"field": "status", "label": "单据状态", "type": "string", "value":"Confirmed"}, {"field": "page_index", "label":"第几页","type":"string","value":"1"}, {"field":"page_size","label":"每页多少条","type":"string","value":"30"}, {"field":"date_type","label":"抓取时间类型","type":"string","describe":"0:修改时间,modified。 2:出入库时间 io_date,未传入时默认为0"}, {"field":"wms_co_id","label":"仓库编号","type":"string","value":"13599842"} ], "autoFillResponse": true, "condition_bk":[[{"field":"type","logic":"notin","value":"其它出库"}]], "condition":[[{"field":"type","logic":"notin","value":"其它出库"}]], "omissionRemedy":{ "crontab":"2 */3 * * *", "takeOverRequest":[ {"field":"modified_begin","value":"_function FROM_UNIXTIME( unix_timestamp() -86400 , '%Y-%m-%d %H:%i:%s' )","type":"string","label":"接管字段"} ] } } ``` #### 请求参数详解 1. **modified_begin** 和 **modified_end**:用于指定查询的时间范围,分别表示修改起始时间和结束时间。这里使用了动态值`{{MINUTE_AGO_20|datetime}}`和`{{CURRENT_TIME|datetime}}`,确保查询的是最近20分钟内的数据。 2. **status**:固定为"Confirmed",表示只查询已确认的单据。 3. **page_index** 和 **page_size**:分页参数,分别表示当前页码和每页记录数。 4. **date_type**:用于指定抓取时间类型,这里默认使用修改时间(0)。 5. **wms_co_id**:仓库编号,用于指定查询哪个仓库的数据。 #### 数据过滤与条件设置 为了确保获取的数据符合业务需求,我们设置了过滤条件: - `condition_bk` 和 `condition`:排除“其它出库”类型的数据。通过逻辑运算符`notin`实现过滤。 #### 数据接管机制 为了应对可能出现的数据遗漏问题,我们设置了数据接管机制: - `omissionRemedy`:通过定时任务(crontab)每三小时执行一次补偿操作。 - `takeOverRequest`:如果出现遗漏,将自动补偿过去24小时内的数据。 #### 实际调用与处理 在实际操作中,通过POST请求方式调用API,并根据上述配置参数获取数据。以下是一个示例请求: ```json { "modified_begin": "{{MINUTE_AGO_20|datetime}}", "modified_end": "{{CURRENT_TIME|datetime}}", "status": "Confirmed", "page_index": 1, "page_size": 30, "date_type": 0, "wms_co_id": 13599842 } ``` 响应结果会自动填充到预设的响应结构中,并根据业务需求进行进一步处理,如数据清洗、转换等。 #### 数据清洗与转换 获取到原始数据后,需要进行清洗和转换,以便写入目标系统。在轻易云平台上,可以通过可视化界面定义清洗规则和转换逻辑。例如: - 清洗无效字段或空值。 - 转换字段格式,如日期格式转换。 - 根据业务规则合并或拆分字段。 通过上述步骤,可以高效地完成从聚水潭系统到目标系统的数据集成,实现不同系统间的数据无缝对接。 以上就是利用轻易云数据集成平台调用聚水潭接口并加工数据的详细技术案例,希望能为您的项目提供参考和帮助。 ![如何对接企业微信API接口](https://pic.qeasy.cloud/S29.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星辰V2API接口 在数据集成生命周期的第二阶段,我们需要将已经从源平台(如聚水潭)获取的数据进行ETL(Extract, Transform, Load)转换,并最终写入目标平台(金蝶云星辰V2)。本文将详细探讨如何利用轻易云数据集成平台的元数据配置,将源数据转换为金蝶云星辰V2API接口所能接收的格式。 #### 数据请求与清洗 首先,我们假设已经完成了从聚水潭获取其他入库单数据的过程。接下来,我们需要对这些数据进行清洗和转换,以符合金蝶云星辰V2API接口的要求。 #### 数据转换与写入 根据提供的元数据配置,目标API接口为`/jdy/v2/scm/inv_other_in`,我们需要通过POST方法将处理后的数据发送到这个接口。以下是具体的字段映射和转换逻辑: 1. **单据日期(bill_date)** - 源字段:`io_date` - 目标字段:`bill_date` - 类型:字符串 - 描述:单据日期 ```json {"field":"bill_date","label":"单据日期","type":"string","describe":"单据日期","value":"{io_date}"} ``` 2. **单据编码(bill_no)** - 源字段:`io_id` - 目标字段:`bill_no` - 类型:字符串 - 描述:单据编码 ```json {"field":"bill_no","label":"单据编码","type":"string","describe":"单据编码","value":"{io_id}"} ``` 3. **自定义字段(custom_field)** - 具体子字段: - 其他入库类型:固定值 "其它退货" ```json {"field":"custom_field__1__3urq5p9yivjiam","label":"其他入库类型","type":"string","value":"其它退货"} ``` 4. **业务类型ID(trans_type_id)** - 固定值:"12" ```json {"field":"trans_type_id","label":"业务类型id","type":"string","describe":"业务类型id","value":"12"} ``` 5. **操作类型(operation_key)** - 固定值:"audit" ```json {"field":"operation_key","label":"操作类型","type":"string","describe":"操作类型,审核audit、提交submit","value":"audit"} ``` 6. **备注(remark)** - 源字段:`remark` - 目标字段:`remark` - 类型:字符串 ```json {"field":"remark","label":"备注","type":"string","value":"{remark}"} ``` 7. **商品分录(material_entity)** 商品分录是一个数组,每个商品项包含多个子字段: ```json { "field": "material_entity", "label": "商品分录", "type": "array", "describe": "商品分录", "value": "items", "children": [ { "field": "material_id", "label": "商品", "type": "string", "describe": "商品", "value": "_findCollection find id from a481458e-26be-330f-a8ab-69c01d1837e1 where number={{items.sku_id}}" }, { "field": "qty", "label": "数量", "type": "string", "describe": "数量", "value": "{{items.qty}}" }, { "field": "unit_id", "label": "单位", "type": "string", "describe": "单位", // 假设单位固定为"4" // 可以根据实际情况调整单位ID的映射逻辑 // 例如,可以通过查找表或其他方式动态确定单位ID。 // 在这里,我们使用固定值"4"作为示例。 // 如果需要动态确定单位ID,可以替换为相应的查找逻辑。 // 请根据实际需求进行调整。 value: '4' }, { field: 'stock_id', label: '仓库', type: 'string', describe: '仓库', value: '_findCollection find id from 6346526e-1f90-33cf-8c77-05d1fc7d9134 where name={warehouse}' }, { field: 'cost', label: '入库成本', type: 'string', value: '_function {{items.cost_price}}*{{items.qty}}' } ] } ``` #### 实际应用案例 假设我们从聚水潭获取到以下一条其他入库单的数据: ```json { io_date: '2023-10-01', io_id: 'IO202310010001', remark: '测试备注', items: [ { sku_id: 'SKU12345', qty: 10, cost_price: 100, } ], warehouse: '主仓库' } ``` 根据上述元数据配置,我们可以将其转换为符合金蝶云星辰V2API接口要求的数据格式: ```json { bill_date: '2023-10-01', bill_no: 'IO202310010001', custom_field: { custom_field__1__3urq5p9yivjiam: '其它退货' }, trans_type_id: '12', operation_key: 'audit', remark: '测试备注', material_entity: [ { material_id: '_findCollection find id from a481458e-26be-330f-a8ab-69c01d1837e1 where number=SKU12345', qty: '10', unit_id:'4', stock_id: '_findCollection find id from 6346526e-1f90-33cf-8c77-05d1fc7d9134 where name=主仓库', cost:'_function {{items.cost_price}}*{{items.qty}}' } ] } ``` 通过轻易云数据集成平台,我们可以实现上述转换,并通过POST方法将处理后的数据发送到金蝶云星辰V2API接口,实现数据的无缝对接和高效传输。 ![用友与CRM系统接口开发配置](https://pic.qeasy.cloud/T4.png~tplv-syqr462i7n-qeasy.image)