轻易云平台的ETL转换:从聚水潭到金蝶云星辰V2

  • 轻易云集成顾问-杨嫦
### 聚水潭数据集成到金蝶云星辰V2的技术实现:调拨单对接其他出库单【调拨出库】 在本文中,我们将探讨如何通过轻易云数据集成平台,实现聚水潭中的调拨单快速、可靠地集成至金蝶云星辰V2的其他出库单。该实施方案不仅利用了高吞吐量的数据写入能力,还确保了每一批次数据都能精准且高效地传输。 #### 高吞吐量与实时监控:应对海量数据 首先,针对大规模的数据处理需求,使用轻易云提供的平台,可以显著提高从聚水潭系统获取和处理调拨单数据的时效性。我们通过调用聚水潭API `/open/allocate/query` 定期抓取最新的调拨单信息,并解决接口分页和限流问题,以此保证不会出现漏单现象。此外,通过平台自带的集中监控和告警系统,我们能够实时跟踪所有任务状态,一旦某个环节出现异常,可立即触发告警并进行重试机制补救。 #### 数据转换与映射:适配业务需求 在完成初步的数据抓取后,需要根据特定业务需求,进行必要的数据转换与映射。由于聚水潭和金蝶云星辰V2之间存在数据格式差异,这就要求我们充分利用轻易云提供的可视化数据流设计工具,自定义转换逻辑,将调拨单转化为符合金蝶规定格式的其他出库单。同时,也可以结合金蝶API `/jdy/v2/scm/inv_other_out` 完成最终的数据写入操作。在这一过程中,有效管理API资产也显得尤为重要,通过统一视图掌握各类API调用情况,提高资源配置效率。 本技术案例旨在呈现一个完整、高效且可扩展的数据集成解决方案,为企业实现跨系统平滑对接提供参考。本节仅介绍主要特点及相应处理方法,具体细节将在后续内容中详细说明。 ![如何对接金蝶云星空API接口](https://pic.qeasy.cloud/D7.png~tplv-syqr462i7n-qeasy.image) ### 调用聚水潭接口/open/allocate/query获取并加工数据 在数据集成生命周期的第一步,我们需要调用源系统的API接口来获取原始数据。本文将详细探讨如何通过轻易云数据集成平台调用聚水潭的`/open/allocate/query`接口,获取调拨单数据并进行初步加工。 #### 接口概述 聚水潭的`/open/allocate/query`接口用于查询调拨单信息。该接口采用POST请求方式,支持分页查询和多种过滤条件。以下是元数据配置中的关键字段: - **api**: `/open/allocate/query` - **method**: `POST` - **number**: `io_id` - **id**: `io_id` - **name**: `name` - **idCheck**: `true` #### 请求参数配置 根据元数据配置,我们需要设置以下请求参数: 1. **modified_begin**: 修改起始时间,使用模板变量`{{DAYS_AGO_1|datetime}}`表示一天前的时间。 2. **modified_end**: 修改结束时间,使用模板变量`{{CURRENT_TIME|datetime}}`表示当前时间。 3. **page_index**: 第几页,默认值为1。 4. **page_size**: 每页多少条记录,默认值为30,最大值为50。 5. **type**: 调拨类型,固定值为“调拨出”。 6. **date_type**: 时间类型,固定值为2。 请求参数示例如下: ```json { "modified_begin": "{{DAYS_AGO_1|datetime}}", "modified_end": "{{CURRENT_TIME|datetime}}", "page_index": "1", "page_size": "30", "type": "调拨出", "date_type": "2" } ``` #### 条件过滤 为了确保我们获取到的是符合业务需求的数据,需要添加条件过滤。根据元数据配置,我们需要满足以下条件: - 状态为“Confirmed” - 仓库在指定列表中(如浙江濮院分仓主仓、销退仓等) 条件过滤示例如下: ```json { "condition": [ { "field": "status", "logic": "in", "value": ["Confirmed"] }, { "field": "warehouse", "logic": "in", "value": ["浙江濮院分仓主仓", "浙江濮院分仓销退仓", ...] } ] } ``` #### 数据请求与清洗 在完成上述配置后,通过轻易云平台发起API请求,并自动填充响应数据。响应的数据将包含多个调拨单记录,每个记录都包含详细的信息,如调拨单号、状态、仓库等。 为了进一步处理这些数据,我们可以进行初步的数据清洗。例如,可以过滤掉不需要的字段,只保留必要的信息,并对某些字段进行格式转换或校验。 清洗后的数据示例如下: ```json [ { "io_id": "123456", "name": "调拨单123456", ... }, ... ] ``` #### 数据转换与写入 在完成数据清洗后,我们可以将这些数据转换成目标系统所需的格式,并写入目标系统。在本案例中,我们需要将清洗后的调拨单数据转换成星辰系统的其他出库单格式,并通过相应的API接口写入星辰系统。 总结来说,通过轻易云平台调用聚水潭的`/open/allocate/query`接口,可以高效地获取并处理调拨单数据。这一步骤不仅确保了数据的一致性和准确性,还为后续的数据转换与写入奠定了坚实基础。 ![如何对接企业微信API接口](https://pic.qeasy.cloud/S7.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星辰V2 API接口 在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是关键的一步。本文将详细探讨如何使用轻易云数据集成平台,将源平台的数据转换为目标平台金蝶云星辰V2 API接口所能接收的格式,并最终写入目标平台。 #### 元数据配置解析 元数据配置是实现ETL转换的核心。以下是针对金蝶云星辰V2 API接口的具体元数据配置: ```json { "api": "/jdy/v2/scm/inv_other_out", "effect": "EXECUTE", "method": "POST", "number": "id", "id": "id", "name": "id", "idCheck": true, "request": [ {"field":"bill_date","label":"单据日期","type":"string","describe":"单据日期","value":"{io_date}"}, {"field":"bill_no","label":"单据编码","type":"string","describe":"单据编码","value":"{io_id}"}, {"field":"trans_type_id","label":"业务类型id","type":"string","describe":"业务类型id","value":"13"}, {"field":"custom_field","label":"自定义字段","type":"object","children":[{"field":"custom_field__1__3uapqb6ot43jia","label":"出库类型","type":"string","value":"调拨出库"}]}, {"field":"operation_key","label":"操作类型","type":"string","describe":"操作类型,审核audit、提交submit","value":"audit"}, {"field":"remark","label":"备注","type":"string","value":"{remark}"}, {"field":"material_entity","label":"商品分录","type":"array","describe":"商品分录","value":"items", "children":[ {"field": "material_id", "label": "商品", "type": "string", "describe": "商品", "value": "_findCollection find id from ac1d70fd-05db-3961-a168-b5617749605e where number={{items.sku_id}}"}, {"field": "qty", "label": "数量", "type": "string", "describe": "数量", "value": "{{items.qty}}"}, {"field": "unit_id", "label": "单位", "type": "string", "describe": "单位", "value": "4"}, {"field": "stock_id", "label": "仓库", "type": "string", "describe": "仓库", "value": "_findCollection find id from f05acc4f-b637-3497-86d3-3ed5423f226a where name={warehouse}"}, {"field": "cost", "label" : "出库成本" , "type" : "string" , "value" : "_findCollection find skus_cost_price from 152f8a9b-100c-34b4-8dd4-3eab4deba9b3 where skus_sku_id={{items.sku_id}}"} ]} ] } ``` #### 数据请求与清洗 在进行ETL转换之前,首先需要从源平台获取原始数据并进行清洗。假设我们从聚水潭系统中提取调拨单数据,该数据可能包含多个字段如`io_date`、`io_id`、`remark`以及包含商品信息的`items`数组。 #### 数据转换 根据上述元数据配置,我们需要将源平台的数据字段映射到目标平台所需的字段格式: 1. **单据日期(bill_date)**:直接映射为源数据中的`io_date`。 2. **单据编码(bill_no)**:直接映射为源数据中的`io_id`。 3. **业务类型ID(trans_type_id)**:固定值为`13`。 4. **自定义字段(custom_field)**:嵌套对象,固定值“调拨出库”。 5. **操作类型(operation_key)**:固定值“audit”。 6. **备注(remark)**:直接映射为源数据中的`remark`。 7. **商品分录(material_entity)**:这是一个数组,需要逐项处理每个商品条目: - **商品ID(material_id)**:通过SKU ID在特定集合中查找对应的商品ID。 - **数量(qty)**:直接映射为源数据中的数量字段。 - **单位ID(unit_id)**:固定值为`4`。 - **仓库ID(stock_id)**:通过仓库名称在特定集合中查找对应的仓库ID。 - **出库成本(cost)**:通过SKU ID在特定集合中查找对应的成本价格。 #### 数据写入 完成上述转换后,使用POST方法将处理好的JSON对象发送到金蝶云星辰V2 API接口: ```json { 'bill_date': '2023-10-01', 'bill_no': 'DB20231001001', 'trans_type_id': '13', 'custom_field': { 'custom_field__1__3uapqb6ot43jia': '调拨出库' }, 'operation_key': 'audit', 'remark': '这是一个测试备注', 'material_entity': [ { 'material_id': '1234567890abcdef', 'qty': '10', 'unit_id': '4', 'stock_id': 'abcdef1234567890', 'cost': '100' } // 更多商品条目... ] } ``` 通过轻易云的数据集成平台,我们可以高效地完成从源平台到目标平台的数据ETL转换和写入过程,实现不同系统间的数据无缝对接。这不仅提高了业务流程的自动化程度,也确保了数据的一致性和准确性。 ![用友与CRM系统接口开发配置](https://pic.qeasy.cloud/T2.png~tplv-syqr462i7n-qeasy.image)