ETL过程中的数据转换与聚水潭平台写入指南

  • 轻易云集成顾问-潘裕
### 畅捷通T+数据集成到聚水潭的技术案例分享:T+进货单【红字】-->聚水潭其他出库单--ikk 在企业日常业务流程中,如何高效、安全地将不同系统的数据进行无缝对接是一个重要课题。本文将重点介绍使用轻易云数据集成平台,实现从畅捷通T+到聚水潭的一次成功系统对接。具体来说,我们将探讨如何配置元数据,将畅捷通T+中的进货单【红字】实时、批量写入聚水潭的其他出库单。 #### 确保集成的准确性与完整性 首先,为了保证从畅捷通T+提取的数据不漏单,我们利用其API接口`/tplus/api/v2/PurchaseArrivalOpenApi/FindVoucherList`进行定时可靠的数据抓取。这不仅确保了数据获取频率和稳定性,还通过灵活设置参数来实现分页处理,以应对接口限流的问题。 #### 批量高效写入到聚水潭 在完成从畅捷通T+的数据抓取后,下一步是将这些已经格式化好的数据快速、批量地传输并写入到聚水潭。为此,我们调用其开放的API ` /open/jushuitan/otherinout/upload` 实现大规模、高并发的数据导入。在这一过程中,特别注意根据业务需求进行字段映射,以及处理两者之间可能存在的数据格式差异。 #### 异常与日志管理 为了提高整个数据流动过程中的透明度与可靠性,对异常处理机制及日志记录进行了专门设计。一旦出现意外错误或网络波动导致写入失败,将触发重试机制,并详细记录每个环节的状态信息,从而便于问题追溯和解决。 本文所述方案借助轻易云强大的生命周期管理特性,通过全透明可视化界面提供清晰直观的数据监控,有效提升了业务效率。以下我们将深入讨论各步骤中的技术细节以及对应代码示例。 ![如何对接钉钉API接口](https://pic.qeasy.cloud/D9.png~tplv-syqr462i7n-qeasy.image) ### 调用畅捷通T+接口获取并加工数据的技术案例 在数据集成过程中,调用源系统接口获取数据是至关重要的一步。本文将深入探讨如何使用轻易云数据集成平台调用畅捷通T+接口`/tplus/api/v2/PurchaseArrivalOpenApi/FindVoucherList`来获取进货单【红字】的数据,并进行初步加工。 #### 接口配置与请求参数 首先,我们需要配置接口的元数据,以便正确调用畅捷通T+的API。以下是元数据配置的详细信息: ```json { "api": "/tplus/api/v2/PurchaseArrivalOpenApi/FindVoucherList", "effect": "QUERY", "method": "POST", "number": "Code", "id": "Code", "idCheck": true, "request": [ {"field":"selectFields","label":"查询字段","type":"string","describe":"部门编码","value":"VoucherCode"}, {"field":"pageIndex","label":"pageIndex","type":"string","describe":"部门名称"}, {"field":"pageSize","label":"pageSize","type":"string","describe":"指定返回字段","value":"10"}, { "field":"paramDic_1", "label":"paramDic参数", "type":"object", "describe":"上级部门", "children":[ {"field":"key","label":"业务类型","type":"string","describe":"上级部门编码","value":"PurchaseArrival__BusinessType__Code"}, {"field":"value","label":"value","type":"string","describe":"上级部门名称","value":"02,02"} ] }, { "field":"paramDic_2", "label":"paramDic_2", "type":"object", "children":[ {"field":"key","label":"单据状态","type":"string","value":"PurchaseArrival__VoucherState"}, {"field":"value","label":"value","type":"string","value":"01,01"} ] }, { "field":"paramDic_3", "label":"paramDic_3", "type":"object", "children":[ {"field":"key","label":"单据日期","type":"string","value":"PurchaseArrival__VoucherDate"}, {"field":"value","label":"","type":"","value":"'{{LAST_SYNC_TIME|date}},{{CURRENT_TIME|date}}'"} ] } ], "otherRequest": [ {"field": "detailkey1", "label": "detailkey1", "type": "string", "value": "voucherCode"}, {"field": "detailkey2", "label": "", "type": "", value: ""}, {"field": "", label: "", type: "", value: ""}, {"field": "", label: "", type: "", value: ""} ], autoFillResponse: true } ``` #### 请求参数解析 1. **selectFields**:指定要查询的字段,这里我们选择了`VoucherCode`。 2. **pageIndex**和**pageSize**:用于分页查询,分别表示当前页码和每页返回的数据条数。 3. **paramDic_1**、**paramDic_2**、**paramDic_3**:这些是复杂的对象参数,用于进一步筛选数据。 - **paramDic_1**:业务类型,值为`02,02`。 - **paramDic_2**:单据状态,值为`01,01`。 - **paramDic_3**:单据日期,动态值为上次同步时间到当前时间。 #### 数据请求与清洗 通过上述配置,我们可以发送POST请求到畅捷通T+接口以获取所需的进货单【红字】数据。以下是一个示例请求体: ```json { selectFields: 'VoucherCode', pageIndex: '1', pageSize: '10', paramDic_1: { key: 'PurchaseArrival__BusinessType__Code', value: '02,02' }, paramDic_2: { key: 'PurchaseArrival__VoucherState', value: '01,01' }, paramDic_3: { key: 'PurchaseArrival__VoucherDate', value: '{{LAST_SYNC_TIME|date}},{{CURRENT_TIME|date}}' } } ``` 在接收到响应后,我们需要对数据进行初步清洗和加工,以确保其符合后续处理步骤的要求。这包括但不限于: - 数据格式转换 - 字段重命名或删除无用字段 - 数据校验和过滤 #### 实际应用案例 假设我们从接口中获取到以下原始数据: ```json { data:[ { VoucherCode:'VC001', BusinessType:'02', VoucherState:'01', VoucherDate:'2023-10-01' }, ... ] } ``` 我们可以通过轻易云平台提供的数据清洗工具,对这些数据进行处理。例如,将`VoucherDate`字段格式化为标准日期格式,或根据业务需求筛选出特定状态的数据。 ```json { data:[ { VoucherCode:'VC001', BusinessType:'02', VoucherState:'已审核', VoucherDate:'2023-10-01' }, ... ] } ``` 通过上述步骤,我们完成了从畅捷通T+接口获取进货单【红字】数据并进行初步加工,为后续的数据转换与写入奠定了基础。 这种方法不仅提高了数据处理效率,还确保了数据的一致性和准确性,为企业实现多系统间的数据无缝对接提供了强有力的支持。 ![钉钉与CRM系统接口开发配置](https://pic.qeasy.cloud/S4.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台ETL转换与写入目标平台的技术案例 在轻易云数据集成平台的生命周期中,ETL(Extract, Transform, Load)过程是关键步骤之一。本文将深入探讨如何将已经集成的源平台数据进行ETL转换,并转为目标平台聚水潭API接口所能够接收的格式,最终写入目标平台。 #### API接口配置 元数据配置如下: ```json { "api": "/open/jushuitan/otherinout/upload", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ {"field": "is_confirm", "label": "是否确认单据", "type": "string", "value": "1"}, {"field": "excute_confirming", "label": "是否审核单据", "type": "string", "value": "true"}, {"field": "warehouse", "label": "仓库编号", "type": "int", "value": "_function case '{{Warehouse.Code}}' when '2' then '4' else '1' end"}, {"field": "type", "label": "出入库类型", "type": "string", "value": "_function case '{{Type}}' when 'out' then '出库' else '入库' end"}, {"field": "external_id", "label": "外部单号", "type": "string", "value":"{Code}"}, {"field":"remark","label":"备注","type":"string","value":"{Memo}"}, {"field":"items","label":"items","type":"array","value":"Details", children:[ {"field":"sku_id","label":"商品编码","type":"string","value":"{{Details.Inventory.Code}}"}, {"field":"qty","label":"入库数量","type":"string","value":"_function ({{Details.Quantity}}*-1)"}, {"field":"sale_price","label":"单价","type":"bool","value":"{{Details.OrigTaxPrice}}"} ]} ] } ``` #### 数据请求与清洗 首先,我们需要从源平台获取原始数据并进行清洗。假设我们从T+系统获取进货单【红字】的数据,这些数据可能包含多种格式和类型的信息。通过轻易云的数据清洗功能,可以将这些原始数据标准化,确保其符合后续处理的要求。 #### 数据转换与映射 接下来,我们需要将清洗后的数据进行转换,以符合聚水潭API接口的格式要求。以下是关键字段的映射和转换逻辑: - **是否确认单据(is_confirm)**: 固定值"1",表示确认单据。 - **是否审核单据(excute_confirming)**: 固定值"true",表示审核单据。 - **仓库编号(warehouse)**: 使用条件判断,根据`Warehouse.Code`字段值进行映射。如果`Warehouse.Code`为"2",则映射为"4",否则映射为"1"。 - **出入库类型(type)**: 根据`Type`字段值进行映射,如果`Type`为"out",则映射为“出库”,否则映射为“入库”。 - **外部单号(external_id)**: 映射自源数据中的`Code`字段。 - **备注(remark)**: 映射自源数据中的`Memo`字段。 - **商品明细(items)**: 是一个数组,每个元素包含以下子字段: - **商品编码(sku_id)**: 映射自`Details.Inventory.Code`字段。 - **入库数量(qty)**: 将数量乘以-1,以表示红字进货单的负数数量。 - **单价(sale_price)**: 映射自`Details.OrigTaxPrice`字段。 #### 数据写入目标平台 完成上述转换后,我们使用POST方法调用聚水潭的API接口,将处理后的数据发送到目标平台。以下是一个示例请求体: ```json { "is_confirm": "1", "excute_confirming": true, "warehouse": 4, "type": out, ... } ``` 通过这种方式,轻易云数据集成平台实现了从源系统到目标系统的数据无缝对接,确保了各环节的数据准确性和一致性。 ![钉钉与MES系统接口开发配置](https://pic.qeasy.cloud/T29.png~tplv-syqr462i7n-qeasy.image)