使用轻易云平台进行ETL转换:将数据写入旺店通的详细步骤

  • 轻易云集成顾问-吕修远
### 用友BIP数据集成到旺店通·企业奇门:物料逐个查询对接(翼讯)技术案例分享 在现代化的企业管理中,数据的有效对接和集成成为了提升业务效率和透明度的重要环节。本篇文章将聚焦于一个具体的系统对接集成案例——“物料逐个查询对接(翼讯)”,详细探讨如何通过轻易云数据集成平台实现用友BIP的数据无缝迁移至旺店通·企业奇门。 为确保用友BIP与旺店通·企业奇门间的大量数据能够快速、准确地传输,我们采用了API接口方式,其中,用友BIP获取数据的API为`/yonbip/digitalModel/product/list`,而旺店通·企业奇门写入数据则使用`wdt.goods.push`。在整个过程中,我们需要特别关注以下几个关键技术点: 1. **确保用友BIP接口的数据不漏单**:通过设置定时任务,可靠抓取指定时间段内所有新增或更新的数据。 2. **处理分页和限流问题**:由于API在访问频率及返回结果数量上存在限制,我们需要设计合理的分页请求方案。 3. **解决两者之间的数据格式差异**:自定义映射规则,将用友BIP中的字段准确转换并匹配到旺店通·企业奇门中对应的位置。 本文将深入细致地展示从配置元数据、调用API接口再到处理过程中的异常重试机制等各个步骤,以及相应的问题解决方法,并实例说明操作过程和注意事项。希望此技术案例能为系统集成人员提供有价值的参考,助力其高效完成类似项目。 ![数据集成平台可视化配置API接口](https://pic.qeasy.cloud/D2.png~tplv-syqr462i7n-qeasy.image) ### 调用用友BIP接口获取并加工数据的技术案例 在数据集成生命周期的第一步,我们需要调用源系统用友BIP接口`/yonbip/digitalModel/product/list`来获取并加工数据。本文将详细介绍如何通过轻易云数据集成平台配置元数据,完成这一过程。 #### 1. 配置请求参数 首先,我们需要配置请求参数,以便正确调用用友BIP的API接口。根据提供的元数据配置,我们可以看到以下请求参数: - `pageIndex`: 当前页索引,默认值为1。 - `pageSize`: 页大小,默认值为10,这里我们设置为50。 - `code`: 物料编码。 - `name`: 物料名称。 - `modelDescription`: 规格说明。 - `manageClass`: 物料分类ID。 - `productClass`: 商品分类ID。 - `productTemplate`: 物料模板ID。 - `model`: 型号。 - `simple.pubts`: 时间戳,用于查询大于所传时间戳的数据。 我们可以将这些参数配置在轻易云平台的请求设置中,如下所示: ```json { "pageIndex": "1", "pageSize": "50", "code": "", "name": "", "modelDescription": "", "manageClass": "", "productClass": "", "productTemplate": "", "model": "", "simple": { "pubts": "{{LAST_SYNC_TIME|datetime}}" } } ``` #### 2. 设置过滤条件 为了确保我们只获取到特定类型的物料数据,我们需要设置过滤条件。在本案例中,我们只需要Materialtype等于2的数据。可以通过以下方式进行配置: ```json "condition": [ [ { "field": "Materialtype", "logic": "eqv2", "value": "2" } ] ] ``` #### 3. 调用API接口 接下来,通过轻易云平台发起POST请求,调用用友BIP的API接口`/yonbip/digitalModel/product/list`。以下是示例代码: ```json { "api": "/yonbip/digitalModel/product/list", "method": "POST", "requestBodyType": "application/json", "requestBodyContent": { // 请求参数 ... } } ``` #### 4. 数据格式化处理 在获取到原始数据后,需要对部分字段进行格式化处理。例如,将字段`unit`重命名为`unit_new`,并将其格式化为字符串类型。可以通过以下配置实现: ```json "formatResponse": [ { "old": "unit", "new": "unit_new", "format": "string" } ] ``` #### 5. 数据清洗与转换 在数据清洗与转换阶段,我们可能需要进一步处理和转换数据,以满足目标系统的要求。例如,可以对某些字段进行类型转换、单位换算或其他业务逻辑处理。 假设我们需要对获取到的数据进行简单的清洗操作,如去除空白字符、统一日期格式等,可以使用轻易云平台提供的数据清洗工具进行相应配置。 #### 实际应用案例 假设我们从用友BIP接口获取到如下原始数据: ```json { "id": 123, "code": "MAT001", "name": "物料A", ... } ``` 经过上述配置和处理后,最终得到的数据如下: ```json { "_id_123_code_MAT001_name_物料A_unit_new_kg" } ``` 通过这种方式,我们能够高效地从用友BIP系统中提取并加工所需的物料数据,为后续的数据写入和业务分析打下坚实基础。 以上就是调用用友BIP接口获取并加工数据的详细技术案例,希望能为您在实际操作中提供有价值的参考。 ![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/S3.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入旺店通·企业奇门API接口 在数据集成的生命周期中,ETL(提取、转换、加载)是关键步骤之一。本文将详细探讨如何使用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,并最终写入目标平台——旺店通·企业奇门API接口。 #### 1. 数据提取与清洗 首先,我们需要从源平台提取原始数据,并进行必要的清洗和预处理。这一步骤确保了数据的准确性和一致性,为后续的转换和加载打下基础。 #### 2. 数据转换 在完成数据提取与清洗后,我们进入数据转换阶段。此阶段的核心任务是将源平台的数据格式转换为目标平台所能接受的格式。以下是具体的元数据配置及其应用方法: ##### 元数据配置解析 根据提供的元数据配置,目标API接口为`wdt.goods.push`,使用POST方法提交请求。我们需要将货品信息转化为该接口能够接收的格式。 ```json { "api": "wdt.goods.push", "method": "POST", "idCheck": true, "request": [ { "field": "goods_list", "label": "货品节点", "type": "array", "describe": "货品表主键", "children": [ {"field": "goods_no", "label": "货品编号", "type": "string", "describe": "代表货品(spu)所有属性的唯一编号,用于系统货品区分,SPU概念介绍,单击这里", "value": "{code}", "parent": "goods_list"}, {"field": "goods_type", "label": "货品类别", "type": "string", "describe": "货品类别 1销售商品 2原材料 3包装 4周转材料5虚拟商品6固定资产 0其它", "value": "1", "parent": "goods_list"}, {"field": "goods_name", ... // 省略部分字段 { ... // 子节点spec_list { ... {"field": ... // 省略部分字段 } } ] } ] } ``` ##### 转换逻辑实现 以下是具体的数据映射和转换逻辑: 1. **货品节点(goods_list)**: - `goods_no`: 映射到源数据中的`code`字段。 - `goods_type`: 固定值为`1`,表示销售商品。 - `goods_name`: 映射到源数据中的`name`字段。 - `class_name`: 映射到源数据中的`manageClass_Name`字段。 - `brand_name`: 映射到源数据中的`brand_Name`字段。 - `unit_name`: 映射到源数据中的`unit_Name`字段。 - `props1`: 映射到源数据中的`modelDescription`字段,用于表示酒精度。 - `props2`: 映射到源数据中的`placeOfOrigin`字段,用于表示规格。 - `props3`: 映射到源数据中的`volume`字段,用于表示体积。 2. **单品节点(spec_list)**: - `spec_no`: 映射到源数据中的SKU编码,即`code`字段。 - `spec_code`: 映射到源数据中的规格编码,即`name`字段。 - `barcode`: 映射到子节点detail中的条码,即`detail.barCode`字段。 - `spec_name`: 映射到规格名称,即`specificName`. - `tax_rate`: 使用函数处理税率,若为空则设为0,否则按比例计算。 #### 3. 数据写入 完成上述转换后,我们将整理好的JSON对象通过POST请求写入旺店通·企业奇门API接口。以下是示例代码: ```python import requests import json url = 'https://api.wangdian.cn/openapi2/goods_push.php' headers = {'Content-Type': 'application/json'} data = { 'appkey': 'your_app_key', 'sid': 'your_sid', 'timestamp': 'current_timestamp', 'sign': 'generated_sign', 'goods_list': [ { 'goods_no': source_data['code'], 'goods_type': '1', 'goods_name': source_data['name'], ... } ] } response = requests.post(url, headers=headers, data=json.dumps(data)) print(response.json()) ``` 通过上述步骤,我们成功地将经过ETL处理的数据写入了旺店通·企业奇门API接口,实现了不同系统间的数据无缝对接。 ![钉钉与ERP系统接口开发配置](https://pic.qeasy.cloud/T21.png~tplv-syqr462i7n-qeasy.image)