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

  • 轻易云集成顾问-黄宏棵

旺店通·企业奇门数据集成到金蝶云星空案例分享:旺店通店铺==>金蝶客户

在本案例中,我们探讨如何将旺店通·企业奇门的数据无缝集成到金蝶云星空,以实现高效、可靠的业务流程自动化。主要关注通过轻易云数据集成平台配置元数据,确保从来源方—旺店通到目的方—金蝶云星空之间的数据流动和处理全程可视。

首先,我们需要调用旺店通·企业奇门接口wdt.shop.query抓取相关数据。在实际操作中,为了保证不漏单的问题,需要定时可靠地抓取这个接口的数据。同时,由于该接口存在分页和限流问题,我们引入了批量处理机制,通过多线程并行请求来加速这一过程。此外,实时监控与日志记录功能帮助我们及时发现并解决潜在问题。

然后,将获取到的订单信息进行格式转换以适应金蝶云星空的标准。这一过程中,会涉及对不同字段进行精准映射,同时处理两者间可能存在的数据类型差异。特别是对于复杂的自定义字段,以及源系统没有直接对应关系的时候,通过轻易云的数据加工能力,可以灵活调整映射规则。

紧接着,通过调用金蝶云星空提供的API batchSave 接口,实现大量数据快速写入到系统。在此环节,错误重试机制尤为重要。当遇到网络波动或操作失败等异常情况时,该机制能够自动重新尝试提交,从而提升整体稳健性。

最后,为确保整个过程透明且易于维护,全生命周期管理特性被充分利用,每一个步骤都有清晰的审计追踪和状态报告,使得技术人员能实时掌握每个环节的运行情况,并进行相应优化调整。

这只是项目实施的一部分内容,在后续文章里,我将详细介绍具体实现方案,包括所有代码示例及参数配置技巧。 钉钉与WMS系统接口开发配置

调用旺店通·企业奇门接口wdt.shop.query获取并加工数据

在数据集成生命周期的第一步,调用源系统接口获取数据是至关重要的一环。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口wdt.shop.query,并对获取的数据进行初步加工。

接口概述

wdt.shop.query接口用于查询旺店通平台上的店铺信息。该接口支持POST请求,并返回指定条件下的店铺数据。以下是该接口的元数据配置:

{
  "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开始。

这些参数可以通过轻易云数据集成平台的可视化界面进行配置,以确保请求的准确性和灵活性。

数据请求与清洗

在发送请求后,我们会收到包含多个字段的响应数据。为了确保数据质量和一致性,我们需要对原始数据进行清洗和预处理。以下是一个简单的数据清洗示例:

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不为空)过滤并提取必要字段。

数据转换与写入

在完成数据清洗后,我们需要将其转换为目标系统所需的格式,并写入到金蝶客户系统中。这一步通常涉及字段映射和格式转换。例如:

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系统接口开发配置

利用轻易云数据集成平台实现旺店通店铺数据向金蝶客户数据的ETL转换

在数据集成过程中,ETL(Extract, Transform, Load)是关键步骤之一。本文将重点探讨如何使用轻易云数据集成平台,将旺店通店铺的数据转换为金蝶云星空API接口所能接收的格式,并最终写入金蝶客户系统。

元数据配置解析

在进行ETL转换之前,我们首先需要理解元数据配置。以下是我们将要使用的元数据配置:

{
  "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流程中,首先需要从源平台(旺店通)请求数据,并对其进行清洗。假设我们已经完成了这个步骤,并获得了如下清洗后的数据:

{
  "shop_no": "S12345",
  "shop_name": "旺店旗舰店",
  "email": "admin@shop.com"
}

数据转换与写入

接下来,我们将对清洗后的数据进行转换,使其符合金蝶云星空API接口的要求。

  1. 字段映射

    • shop_no 映射到 FNumber
    • shop_name 映射到 FName
    • email 映射到 FCreateOrgIdFUseOrgId,并通过 ConvertObjectParser 转换为对应的组织编码。
  2. 构建请求体: 根据元数据配置,我们需要构建一个符合API要求的请求体。以下是构建后的请求体示例:

{
  "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
          // 则此处应填入相应的结构
          ...
        },
        ...
      }
      ...
      // 如果有多个记录,可以继续添加到数组中
      ...
    ]
  }
}
  1. 发送请求: 最后,通过轻易云平台提供的全异步、支持多种异构系统集成的特性,将构建好的请求体发送至金蝶云星空API接口。
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接口配置

更多系统对接方案