ETL转换:从旺店通到金蝶云星空的数据处理方法

  • 轻易云集成顾问-黄宏棵
### 旺店通·企业奇门数据集成到金蝶云星空案例分享:旺店通店铺==>金蝶客户 在本案例中,我们探讨如何将旺店通·企业奇门的数据无缝集成到金蝶云星空,以实现高效、可靠的业务流程自动化。主要关注通过轻易云数据集成平台配置元数据,确保从来源方—旺店通到目的方—金蝶云星空之间的数据流动和处理全程可视。 首先,我们需要调用旺店通·企业奇门接口`wdt.shop.query`抓取相关数据。在实际操作中,为了保证不漏单的问题,需要定时可靠地抓取这个接口的数据。同时,由于该接口存在分页和限流问题,我们引入了批量处理机制,通过多线程并行请求来加速这一过程。此外,实时监控与日志记录功能帮助我们及时发现并解决潜在问题。 然后,将获取到的订单信息进行格式转换以适应金蝶云星空的标准。这一过程中,会涉及对不同字段进行精准映射,同时处理两者间可能存在的数据类型差异。特别是对于复杂的自定义字段,以及源系统没有直接对应关系的时候,通过轻易云的数据加工能力,可以灵活调整映射规则。 紧接着,通过调用金蝶云星空提供的API `batchSave` 接口,实现大量数据快速写入到系统。在此环节,错误重试机制尤为重要。当遇到网络波动或操作失败等异常情况时,该机制能够自动重新尝试提交,从而提升整体稳健性。 最后,为确保整个过程透明且易于维护,全生命周期管理特性被充分利用,每一个步骤都有清晰的审计追踪和状态报告,使得技术人员能实时掌握每个环节的运行情况,并进行相应优化调整。 这只是项目实施的一部分内容,在后续文章里,我将详细介绍具体实现方案,包括所有代码示例及参数配置技巧。 ![钉钉与WMS系统接口开发配置](https://pic.qeasy.cloud/D2.png~tplv-syqr462i7n-qeasy.image) ### 调用旺店通·企业奇门接口wdt.shop.query获取并加工数据 在数据集成生命周期的第一步,调用源系统接口获取数据是至关重要的一环。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口`wdt.shop.query`,并对获取的数据进行初步加工。 #### 接口概述 `wdt.shop.query`接口用于查询旺店通平台上的店铺信息。该接口支持POST请求,并返回指定条件下的店铺数据。以下是该接口的元数据配置: ```json { "api": "wdt.shop.query", "effect": "QUERY", "method": "POST", "number": "shop_no", "id": "shop_id", "name": "shop_no", "idCheck": true, "request": [ {"field": "platform", "label": "平台ID", "type": "string", "describe": "平台ID"}, {"field": "shop_no", "label": "店铺编号", "type": "string", "describe": "代表店铺所有属性的唯一编码,用于店铺区分,ERP内支持自定义(ERP店铺界面设置),用于获取指定店铺数据信息"}, {"field": "is_disabled", "label": "是否停用", "type": "string", "describe": "0未停用 1停用"} ], ... } ``` #### 请求参数配置 在调用该接口时,需要配置以下几个关键参数: 1. **platform**:平台ID,用于标识不同的平台。 2. **shop_no**:店铺编号,是代表店铺所有属性的唯一编码。 3. **is_disabled**:是否停用,0表示未停用,1表示停用。 此外,为了处理分页,我们还需要配置以下两个参数: - **page_size**:每页返回的数据条数,范围为1到100。 - **page_no**:页号,从0开始。 这些参数可以通过轻易云数据集成平台的可视化界面进行配置,以确保请求的准确性和灵活性。 #### 数据请求与清洗 在发送请求后,我们会收到包含多个字段的响应数据。为了确保数据质量和一致性,我们需要对原始数据进行清洗和预处理。以下是一个简单的数据清洗示例: ```python def clean_data(raw_data): cleaned_data = [] for item in raw_data: if item['email'] is not None: # 根据元数据中的条件过滤 cleaned_item = { 'shop_id': item['shop_id'], 'shop_no': item['shop_no'], 'platform': item['platform'], 'is_disabled': item['is_disabled'] } cleaned_data.append(cleaned_item) return cleaned_data ``` 上述代码段展示了如何根据元数据中的条件(如email不为空)过滤并提取必要字段。 #### 数据转换与写入 在完成数据清洗后,我们需要将其转换为目标系统所需的格式,并写入到金蝶客户系统中。这一步通常涉及字段映射和格式转换。例如: ```python def transform_and_write(cleaned_data): transformed_data = [] for item in cleaned_data: transformed_item = { 'CustomerID': item['shop_id'], 'CustomerName': item['shop_no'], 'PlatformID': item['platform'], 'Status': 'Active' if item['is_disabled'] == '0' else 'Inactive' } transformed_data.append(transformed_item) # 假设write_to_kingdee是一个写入金蝶系统的函数 write_to_kingdee(transformed_data) ``` 通过上述步骤,我们实现了从旺店通·企业奇门接口获取、清洗、转换并写入到金蝶客户系统的数据集成过程。 #### 实时监控与调试 在整个过程中,通过轻易云平台提供的实时监控功能,可以随时查看每个环节的数据流动和处理状态。如果出现问题,可以利用平台提供的调试工具进行排查和修正,以确保集成流程顺利进行。 以上内容详细介绍了如何通过轻易云数据集成平台调用`wdt.shop.query`接口,并对获取的数据进行初步加工。这一过程不仅提升了业务透明度,还极大地提高了数据处理效率。 ![企业微信与OA系统接口开发配置](https://pic.qeasy.cloud/S29.png~tplv-syqr462i7n-qeasy.image) ### 利用轻易云数据集成平台实现旺店通店铺数据向金蝶客户数据的ETL转换 在数据集成过程中,ETL(Extract, Transform, Load)是关键步骤之一。本文将重点探讨如何使用轻易云数据集成平台,将旺店通店铺的数据转换为金蝶云星空API接口所能接收的格式,并最终写入金蝶客户系统。 #### 元数据配置解析 在进行ETL转换之前,我们首先需要理解元数据配置。以下是我们将要使用的元数据配置: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ {"field":"FNumber","label":"编码","type":"string","describe":"编码","value":"{shop_no}"}, {"field":"FName","label":"名称","type":"string","describe":"名称","value":"{shop_name}"}, {"field":"FCreateOrgId","label":"创建组织","type":"string","describe":"创建组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{email}"}, {"field":"FUseOrgId","label":"使用组织","type":"string","describe":"使用组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{email}"} ], "otherRequest": [ {"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"BD_Customer"}, {"field":"Operation","label":"执行的操作","type":"string","describe":"执行的操作","value":"BatchSave"}, {"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","describe":"提交并审核","value":true}, {"field":"IsVerifyBaseDataField","label":"验证基础资料","type":"bool","describe":"是否验证所有的基础资料有效性,布尔类,默认false(非必录)", "value":true} ], "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" } } ``` #### 数据请求与清洗 在ETL流程中,首先需要从源平台(旺店通)请求数据,并对其进行清洗。假设我们已经完成了这个步骤,并获得了如下清洗后的数据: ```json { "shop_no": "S12345", "shop_name": "旺店旗舰店", "email": "admin@shop.com" } ``` #### 数据转换与写入 接下来,我们将对清洗后的数据进行转换,使其符合金蝶云星空API接口的要求。 1. **字段映射**: - `shop_no` 映射到 `FNumber` - `shop_name` 映射到 `FName` - `email` 映射到 `FCreateOrgId` 和 `FUseOrgId`,并通过 `ConvertObjectParser` 转换为对应的组织编码。 2. **构建请求体**: 根据元数据配置,我们需要构建一个符合API要求的请求体。以下是构建后的请求体示例: ```json { "FormId": "BD_Customer", "Operation": "BatchSave", "IsAutoSubmitAndAudit": true, "IsVerifyBaseDataField": true, "Model": { "FID": "", "FBillNo":"", ... //其他必要字段 ... [ { "FNumber": "{shop_no}", "FName": "{shop_name}", // 使用 ConvertObjectParser 转换 email 为 FCreateOrgId 和 FUseOrgId 的值 // 假设转换后的值为 Org001 "FCreateOrgId": { // 示例:如果 ConvertObjectParser 将 email 转换为 FNumber 的值为 Org001 // 则此处应填入相应的结构 ... }, ... } ... // 如果有多个记录,可以继续添加到数组中 ... ] } } ``` 3. **发送请求**: 最后,通过轻易云平台提供的全异步、支持多种异构系统集成的特性,将构建好的请求体发送至金蝶云星空API接口。 ```python import requests url = 'https://api.kingdee.com/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.BatchSave' headers = {'Content-Type': 'application/json'} data = { # 上述构建好的请求体内容 } response = requests.post(url, headers=headers, json=data) if response.status_code == 200: print("Data successfully written to Kingdee Cloud.") else: print("Failed to write data to Kingdee Cloud:", response.text) ``` 通过上述步骤,我们成功地将旺店通店铺的数据经过ETL转换后写入了金蝶客户系统。这不仅实现了不同系统间的数据无缝对接,也确保了业务流程的高效和透明。 ![系统集成平台API接口配置](https://pic.qeasy.cloud/T5.png~tplv-syqr462i7n-qeasy.image)