数据清洗与ETL转换:金蝶云星空和旺店通的无缝集成

  • 轻易云集成顾问-张妍琪
### 案例分享:金蝶云星空数据集成到旺店通·企业奇门 在本次案例中,我们将探讨如何实现从金蝶云星空到旺店通·企业奇门的数据对接,具体方案名称为“01-金蝶物料对接旺店通货品-P”。该方案主要涉及如下几个关键技术点: 一、确保集成数据不漏单 要确保所有从金蝶云星空获取的物料信息都能准确无误地写入到旺店通·企业奇门,需要构建一个强大的错误重试机制。通过调用executeBillQuery接口抓取金蝶云星空上的物料数据,并使用批量处理技术显著提高写入速度,这样可以减少因为接口限流导致的数据丢失问题。 二、大量数据快速写入 当大规模数据需要快速导入时,通过分段式抓取和并行处理可以极大提升效率。在这个过程中,可以采取分页策略来解决executeBillQuery接口的分页和限流问题,将每页返回的数据经过格式转换后,调用wdt.goods.push API进行批量提交,实现高效的数据传输。 三、可靠定时任务调度 为了保证每日更新频繁且可靠,每天固定时间执行定时任务,从金蝶云星空抓取最新的物料数据。这不仅要求定时器精准,还需有健壮性,以应对可能出现的网络波动或服务临时不可用等情况。 四、异常处理与日志记录 为了便于监控与问题排查,在整个集成过程中,对各个环节进实施详细日志记录。例如,当wdt.goods.push API返回错误码或网络超时时,会触发预定义的重试逻辑,同时将相关信息记录下来。这样既能迅速响应问题,又能为后续分析提供依据。 五、数据格式差异转换与映射 由于两个系统之间的数据格式存在差异,需要设计一套灵活、高效的数据映射规则。从字段类型转换,到某些特殊业务场景下的信息补全,都通过自定义脚本自动化完成,确保两端系统能够无缝协作,提高整体流程的一致性和正确性。 以上是前期准备工作中的几个核心技术难点以及对应解决办法,通过这一系列优化措施,不仅使得整个集成交互更加顺畅,也让实时监控成为现实,为日常运营带来了极大的便利。在下面的章节中,我们将深入探讨具体实现细节及实际操作步骤。 ![用友BIP接口开发配置](https://pic.qeasy.cloud/D22.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在轻易云数据集成平台中,调用源系统接口是数据集成生命周期的第一步。本文将详细探讨如何通过调用金蝶云星空的`executeBillQuery`接口获取并加工数据。 #### 接口配置与调用 首先,我们需要配置元数据以便正确调用金蝶云星空的`executeBillQuery`接口。根据提供的元数据配置,我们可以看到该接口使用POST方法进行调用,并且需要传递一系列请求参数。 ```json { "api": "executeBillQuery", "effect": "QUERY", "method": "POST", "number": "FNumber", "id": "FMATERIALID", "name": "FName", ... } ``` 这些参数包括实体主键、编码、名称等字段,以及一些其他请求参数如分页参数和过滤条件。以下是一个典型的请求示例: ```json { "FormId": "BD_MATERIAL", "FieldKeys": ["FMATERIALID", "FNumber", "FName", ...], "FilterString": "FApproveDate>='2023-01-01' and F_UBGN_CheckBox=1", "Limit": 100, "StartRow": 0 } ``` #### 数据清洗与加工 在获取到原始数据后,下一步是对数据进行清洗和加工。这一步非常关键,因为它直接影响到后续的数据转换与写入过程。我们需要确保数据的完整性、一致性和准确性。 1. **字段映射与转换**:根据业务需求,将原始数据中的字段映射到目标系统所需的字段。例如,将金蝶中的`FMATERIALID`映射为目标系统中的`MaterialID`。 2. **数据格式化**:对日期、数字等特殊格式的数据进行处理。例如,将日期格式从`YYYY-MM-DD`转换为目标系统所需的格式。 3. **缺失值处理**:对于缺失值或异常值进行处理,可以选择填充默认值、删除记录或标记为异常。 4. **数据合并与拆分**:根据业务逻辑,对数据进行合并或拆分。例如,将多个物料记录合并为一个综合记录,或者将一个复杂记录拆分为多个简单记录。 #### 实际案例 以下是一个实际案例,通过调用金蝶云星空接口获取物料信息,并对其进行清洗和加工: ```python import requests import json # 配置请求参数 url = 'https://api.kingdee.com/executeBillQuery' headers = {'Content-Type': 'application/json'} payload = { 'FormId': 'BD_MATERIAL', 'FieldKeys': ['FMATERIALID', 'FNumber', 'FName', 'FSpecification', 'FBARCODE'], 'FilterString': "FApproveDate>='2023-01-01' and F_UBGN_CheckBox=1", 'Limit': 100, 'StartRow': 0 } # 发起请求 response = requests.post(url, headers=headers, data=json.dumps(payload)) data = response.json() # 数据清洗与加工 cleaned_data = [] for item in data: cleaned_item = { 'MaterialID': item['FMATERIALID'], 'Code': item['FNumber'], 'Name': item['FName'], 'Specification': item['FSpecification'], 'Barcode': item['FBARCODE'] } cleaned_data.append(cleaned_item) # 输出清洗后的数据 print(json.dumps(cleaned_data, indent=2)) ``` 在这个示例中,我们首先配置了请求参数,包括表单ID、查询字段、过滤条件等。然后,通过POST方法发起请求获取原始数据。接着,对返回的数据进行清洗和加工,最终得到符合目标系统要求的数据格式。 #### 总结 通过以上步骤,我们成功地调用了金蝶云星空的`executeBillQuery`接口,并对获取的数据进行了有效的清洗和加工。这一步骤不仅确保了数据的一致性和准确性,也为后续的数据转换与写入奠定了坚实基础。在实际应用中,根据具体业务需求,还可以进一步优化和扩展这些操作,以实现更复杂的数据集成任务。 ![打通用友BIP数据接口](https://pic.qeasy.cloud/S6.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台生命周期第二步:ETL转换与写入目标平台 在数据集成的过程中,将源平台的数据转换为目标平台所需的格式,并最终写入目标平台,是一个至关重要的步骤。本文将详细探讨如何利用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,转为旺店通·企业奇门API接口所能够接收的格式,并最终写入目标平台。 #### ETL转换过程 ETL(Extract, Transform, Load)是数据集成中的关键环节。首先从源系统中提取数据,然后对其进行清洗和转换,最后将其加载到目标系统中。在本案例中,我们需要将金蝶物料的数据转化为旺店通·企业奇门API接口所能接收的格式。 #### 元数据配置解析 根据提供的元数据配置,我们需要将金蝶物料的数据映射到旺店通·企业奇门API接口的各个字段中。以下是元数据配置的详细解析: ```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": "{FNumber}", "parent": "goods_list" }, { "field": "goods_type", ... } ] } ], ... } ``` #### 数据字段映射 1. **货品节点(goods_list)**: - **货品编号(goods_no)**:映射到金蝶物料中的`FNumber`字段。 - **货品类别(goods_type)**:固定值为`1`,表示销售商品。 - **货品名称(goods_name)**:映射到金蝶物料中的`FName`字段。 - **品牌名称(brand_name)**:映射到金蝶物料中的`FMaterialGroup_FNumber`字段。 2. **单品节点(spec_list)**: - **商家编码(spec_no)**:映射到金蝶物料中的`F_UBGN_Text3`字段。 - **主条码(barcode)**:同样映射到`F_UBGN_Text3`字段。 - **规格名称(spec_name)**:映射到金蝶物料中的`FSpecification`字段。 #### 数据转换与写入 在完成上述字段映射后,我们需要通过轻易云数据集成平台将这些数据发送至旺店通·企业奇门API接口。具体步骤如下: 1. **提取数据**: 从金蝶系统中提取所需的物料数据,确保包含上述所有需要映射的字段。 2. **清洗与转换**: 根据元数据配置,对提取的数据进行清洗和转换。例如,将金蝶物料中的`FNumber`字段值赋给目标系统中的`goods_no`字段。 3. **构建请求体**: 根据API文档构建请求体,例如: ```json { "goods_list": [ { "goods_no": "{FNumber}", ... } ] } ``` 4. **发送请求**: 使用HTTP POST方法将构建好的请求体发送至旺店通·企业奇门API接口: ```python import requests url = 'https://api.wangdian.cn/openapi2/goods_push.php' headers = {'Content-Type': 'application/json'} data = { 'goods_list': [ { 'goods_no': '12345', ... } ] } response = requests.post(url, headers=headers, json=data) print(response.json()) ``` 通过以上步骤,我们成功地将源平台的数据进行了ETL转换,并写入了目标平台。轻易云数据集成平台在这一过程中提供了全透明可视化操作界面,使得每个环节都清晰易懂,并实时监控数据流动和处理状态,大大提升了业务透明度和效率。 ![如何开发用友BIP接口](https://pic.qeasy.cloud/T12.png~tplv-syqr462i7n-qeasy.image)