轻易云平台在旺店通与金蝶云间的数据转换与ETL应用

  • 轻易云集成顾问-彭萍

旺店通·旗舰奇门数据集成到金蝶云星空案例分享:物料同步

在本次技术案例中,将重点介绍如何实现旺店通·旗舰奇门平台上的商品数据(物料)高效而准确地同步至金蝶云星空ERP系统。通过配置轻易云数据集成平台,我们巧妙利用了多个关键API接口,确保整个流程的可靠性和实时监控。

首先,为了抓取旺店通·旗舰奇门的数据,我们使用其提供的wdt.goods.goods.querywithspec接口。这一接口允许我们在支持分页查询的情况下,高效获取所有商品及规格信息。由此,我们需要解决分页和限流问题,以避免因频繁请求造成的数据遗漏或访问受限。

其次,考虑到两端系统的数据格式差异,为确保数据一致性,在导入前需进行定制化的数据映射对接。在这一过程中,通过轻易云平台内置的大量转换工具,对接不同格式的数据成为可能,可以自动处理并统一转换,以适配金蝶云星空要求的标准格式。

为了高效批量写入大量商品数据至金蝶云星空ERP系统,我们调用其batchSave API接口,该接口支持多条记录一次性提交,有效减少请求次数,与此同时也最大程度提升了传输效率。此外,通过精密设计的重试机制与异常处理策略,当遇到网络不稳定或其他突发情况时,能够保障数据传输过程中的完整性和一致性。

不仅如此,整个集成过程还设置了定时任务,从而周期性地从旺店通·旗舰奇门抓取最新更新的数据,并增量同步至目标系统。同时,由于轻易云提供全透明可视化操作界面,每个环节都清晰呈现,即便是复杂环境下依然能做到实时监控与日志记录,让运维管理更加得心应手。 企业微信与ERP系统接口开发配置

调用旺店通·旗舰奇门接口wdt.goods.goods.querywithspec获取并加工数据

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

接口配置与调用

首先,我们需要配置元数据以便正确调用wdt.goods.goods.querywithspec接口。以下是该接口的元数据配置:

{
  "api": "wdt.goods.goods.querywithspec",
  "method": "POST",
  "number": "goods_no",
  "id": "goods_id",
  "pagination": {
    "pageSize": 100
  },
  "idCheck": true,
  "request": [
    {
      "field": "pager",
      "label": "分页",
      "type": "object",
      "children": [
        {
          "field": "page_size",
          "label": "page_size",
          "type": "string",
          "value": "{PAGINATION_PAGE_SIZE}"
        },
        {
          "field": "page_no",
          "label": "page_no",
          "type": "string",
          "value": "1"
        }
      ]
    },
    {
      "field": "params",
      "label": "查询参数",
      "type": "object",
      "children": [
        {
          "field": "start_time",
          "label": "开始时间",
          "type": "string",
          "value":"{{LAST_SYNC_TIME|datetime}}"
        },
        {
          {
            field: 'end_time',
            label: '结束时间',
            type: 'string',
            value: '{{CURRENT_TIME|datetime}}'
        }
        }
      ]
    }
  ],
  'effect': 'QUERY',
  'autoFillResponse': true
}

分页机制与请求参数

为了高效处理大批量数据,接口支持分页机制。每次请求的数据量由page_size字段控制,这里设置为100条记录。通过page_no字段指定当前页码,从第一页开始逐页获取。

查询参数包括start_timeend_time,分别表示上次同步时间和当前时间。这些参数确保我们只获取在特定时间范围内更新或新增的数据。

数据请求与清洗

在实际操作中,调用该接口时需要注意以下几点:

  1. 分页处理:由于一次请求只能返回有限数量的数据,需要循环调用接口直到所有数据都被获取完毕。
  2. 时间戳转换:确保传递给接口的时间戳格式正确,以避免查询结果不准确。
  3. 错误处理:在每次请求后检查返回状态码和错误信息,并根据情况进行重试或记录日志。

示例代码如下:

import requests
import datetime

def fetch_data(last_sync_time, current_time):
    page_no = 1
    page_size = 100
    all_data = []

    while True:
        payload = {
            'pager': {
                'page_size': page_size,
                'page_no': page_no
            },
            'params': {
                'start_time': last_sync_time.strftime('%Y-%m-%d %H:%M:%S'),
                'end_time': current_time.strftime('%Y-%m-%d %H:%M:%S')
            }
        }

        response = requests.post('https://api.wangdian.cn/flagship/wdt.goods.goods.querywithspec', json=payload)

        if response.status_code != 200:
            print(f"Error fetching data: {response.text}")
            break

        data = response.json()

        if not data['data']:
            break

        all_data.extend(data['data'])

        if len(data['data']) < page_size:
            break

        page_no += 1

    return all_data

last_sync_time = datetime.datetime.strptime('2023-01-01 00:00:00', '%Y-%m-%d %H:%M:%S')
current_time = datetime.datetime.now()

data = fetch_data(last_sync_time, current_time)
print(f"Fetched {len(data)} records")

数据清洗与转换

获取到的数据通常需要进行清洗和转换,以便后续处理。常见的清洗操作包括:

  • 去重:根据商品编号(goods_no)或商品ID(goods_id)去重。
  • 格式转换:将日期、金额等字段转换为标准格式。
  • 缺失值处理:填充或删除缺失值。

示例代码如下:

import pandas as pd

def clean_data(raw_data):
    df = pd.DataFrame(raw_data)

    # 去重
    df.drop_duplicates(subset=['goods_no'], inplace=True)

    # 格式转换
    df['created_at'] = pd.to_datetime(df['created_at'])

    # 缺失值处理
    df.fillna({'price': 0}, inplace=True)

    return df

cleaned_data = clean_data(data)
print(cleaned_data.head())

通过上述步骤,我们成功地从旺店通·旗舰奇门系统中获取了物料数据,并进行了初步的清洗和转换,为后续的数据写入和进一步处理奠定了基础。 打通钉钉数据接口

使用轻易云数据集成平台将源数据转换并写入金蝶云星空API接口

在数据集成生命周期的第二阶段,我们需要将已经集成的源平台数据进行ETL转换,使其符合目标平台金蝶云星空API接口的要求,并最终写入目标平台。本文将详细探讨如何利用元数据配置完成这一任务。

元数据配置解析

我们使用的元数据配置如下:

{
  "api": "batchSave",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {"field": "FName", "label": "名称", "type": "string", "describe": "名称", "value": "{goods_name}"},
    {"field": "FNumber", "label": "编码", "type": "string", "describe": "编码", "value": "{goods_no}"},
    {"field": "FDescription", "label": "描述", "type": "string", "describe": "描述"},
    {"field": "FCreateOrgId", "label": "创建组织", ...
  ],
  ...
}

该配置中,api字段指定了我们要调用的金蝶云星空API接口为batchSave,并且采用POST方法提交请求。idCheck字段设置为true,表示在执行操作前会检查ID是否存在。

请求参数解析

请求参数部分定义了需要传递给API的字段及其对应的数据映射关系。以下是几个关键字段及其解释:

  • FName: 名称,对应源数据中的goods_name
  • FNumber: 编码,对应源数据中的goods_no
  • FDescription: 描述,无需映射具体值
  • FCreateOrgId: 创建组织,使用固定值100并通过ConvertObjectParser进行转换
  • SubHeadEntity: 嵌套对象,包含物料属性、基本单位等信息

例如,基本单位(FBaseUnitId)字段使用了一个名为ConvertObjectParser的解析器,将源数据中的单位名称(即 {unit_name})转换为目标系统所需格式。

操作参数解析

除了请求参数,还需要设置一些操作参数:

"otherRequest":[
  {"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"BD_MATERIAL"},
  {"field":"Operation","label":"执行的操作","type":"string","value":"Save"},
  {"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","value":"true"},
  ...
]

这些参数定义了具体的业务操作,例如表单ID(FormId: BD_MATERIAL)、执行操作类型(Operation: Save)以及是否自动提交和审核(IsAutoSubmitAndAudit: true)。

数据转换与写入流程

  1. 数据请求与清洗:从源平台获取原始物料数据,并进行初步清洗和预处理。
  2. ETL转换
    • 利用元数据配置,将源数据字段映射到目标API所需格式。
    • 应用必要的数据解析器(如 ConvertObjectParser) 对特定字段进行转换。
  3. 构建请求体
    • 根据元数据配置生成符合API要求的JSON请求体。
  4. 发送请求
    • 使用HTTP POST方法将构建好的请求体发送至金蝶云星空API接口。
  5. 结果处理
    • 接收并处理API返回结果,根据返回状态判断操作是否成功。

实际案例应用

假设我们有一条源物料记录如下:

{
  "goods_name": "电子元件",
  "goods_no": "ELEC123",
  ...
}

通过上述元数据配置和ETL流程,我们可以生成如下符合金蝶云星空API要求的请求体:

{
  ...
  {
    "FName": "电子元件",
    "FNumber": "ELEC123",
    ...
    {
      ...
      {
        ...
        {
          ...
          {
            ...
          }
        }
      }
    }
  }
}

最后,通过HTTP POST方法将该请求体发送至金蝶云星空API接口,实现物料同步。

以上就是利用轻易云数据集成平台进行ETL转换并将数据写入金蝶云星空API接口的技术案例。通过合理配置元数据和精确执行ETL流程,可以确保不同系统间的数据无缝对接和高效传输。 数据集成平台可视化配置API接口

更多系统对接方案