使用轻易云进行ETL转换写入旺店通的解决方案

  • 轻易云集成顾问-吴伟

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

在本案例中,我们将详细探讨如何通过“物料同步旺店通08.10”方案,实现金蝶云星空的数据高效集成到旺店通·旗舰奇门系统。本次系统对接的核心任务是确保从金蝶云星空获取的各种物料数据能够快速、准确地写入到旺店通·旗舰奇门,并且能够在整个过程中处理分页和限流等问题。

1. 数据抓取与接口调用 - executeBillQuery

首先,采用定时可靠的方式抓取金蝶云星空接口数据。我们使用executeBillQuery API来实现批量数据抽取,通过适当配置可以灵活控制每次读取的数据量,从而避免因为单次请求过大导致失败。此外,为了有效应对API访问次数限制机制,还设计了分页抓取策略,以确保全面获取所需业务数据。

2. 数据格式转换与映射

由于金蝶云星空与旺店通·旗舰奇门之间存在显著的数据格式差异,对于提取出的原始数据,需要先进行规范化处理。这一步骤通常包括字段名称映射、一致性验证以及必要的数据清洗。同时,也要特别注意根据每个系统各自的要求,对特定字段内容间进行精确转换。例如,将日期格式由YYYY-MM-DD调整为DD/MM/YYYY。

3. 批量写入 - wdt.goods.goods.push

完成上述准备后,我们会利用批量操作将规范化后的物料信息推送至旺店通·旗舰奇门,使用其提供的wdt.goods.goods.push API接口。在这一环节,大量并发请求可能引发服务器性能瓶颈,因此需要合理设置并发数和重试机制。为了最大程度上保证事务一致性,还实现了一整套错误捕获及自动重试逻辑,一旦出现异常状况,即可迅速展开恢复动作。

4. 实时监控与日志记录

最后,为确保整个过程透明可控,每个关键步骤都附带详细的实时监控和日志记录功能。不管是源头抓取、流程变换还是目标写入均有相应日志条目,这不仅利于后期问题排查,更为长久优化提供参考依据。同时,在轻易云平台支持下,全流程以图形界面直观展示,让技术人员一览无余,有效提升整体运作效率。

以上就是这次“物料同步旺店通08.10”方案实施过程中涉及的一些关键技术点,下文我们将详解具体解决步骤及代码示范。 用友与外部系统接口集成开发

调用金蝶云星空接口executeBillQuery获取并加工数据

在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细介绍如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口来获取物料数据,并进行初步加工。

接口配置与调用

首先,我们需要配置接口的元数据。根据提供的元数据配置,我们可以看到以下关键参数:

  • API: executeBillQuery
  • Method: POST
  • FormId: BD_MATERIAL
  • FieldKeys: 包含多个字段,如FMATERIALID, FNumber, FName
  • Pagination: 分页参数,包括pageSizeStartRow

以下是一个典型的请求示例:

{
  "api": "executeBillQuery",
  "method": "POST",
  "FormId": "BD_MATERIAL",
  "FieldKeys": [
    "FMATERIALID", 
    "FNumber", 
    "FName", 
    "FSpecification", 
    // ...其他字段
  ],
  "FilterString": "FApproveDate>='{{LAST_SYNC_TIME|dateTime}}' AND (F_POIH_Combo='1' OR F_POIH_Combo='2')",
  "Limit": 100,
  "StartRow": 0
}

数据请求与清洗

在请求数据后,我们需要对返回的数据进行清洗和初步加工。以下是一些常见的数据清洗步骤:

  1. 字段映射:将返回的数据字段映射到目标系统所需的字段。例如,将FMATERIALID映射为目标系统中的物料ID。
  2. 数据格式转换:将日期、数值等字段转换为目标系统所需的格式。
  3. 过滤无效数据:根据业务规则过滤掉无效或不需要的数据。例如,过滤掉禁用状态的物料。

以下是一个简单的数据清洗示例:

def clean_data(raw_data):
    cleaned_data = []
    for item in raw_data:
        if item['FForbidStatus'] == 'A':  # 忽略禁用状态的数据
            continue
        cleaned_item = {
            'material_id': item['FMATERIALID'],
            'number': item['FNumber'],
            'name': item['FName'],
            'specification': item['FSpecification'],
            # ...其他字段映射
        }
        cleaned_data.append(cleaned_item)
    return cleaned_data

数据转换与写入

在完成数据清洗后,下一步是将数据转换为目标系统所需的格式,并写入目标系统。这一步通常涉及到调用目标系统的API接口。

例如,将清洗后的物料数据写入旺店通系统:

def write_to_target_system(cleaned_data):
    for item in cleaned_data:
        response = requests.post('https://target-system-api.com/materials', json=item)
        if response.status_code != 200:
            log.error(f"Failed to write data for material {item['material_id']}")

实时监控与错误处理

为了确保数据集成过程的稳定性和可靠性,需要对每个环节进行实时监控,并处理可能出现的错误。例如,可以设置日志记录和告警机制,以便在出现问题时及时发现并解决。

import logging

logging.basicConfig(level=logging.INFO)

def monitor_and_log():
    try:
        raw_data = fetch_raw_data()
        cleaned_data = clean_data(raw_data)
        write_to_target_system(cleaned_data)
        logging.info("Data integration completed successfully.")
    except Exception as e:
        logging.error(f"Data integration failed: {e}")

通过上述步骤,我们可以实现从金蝶云星空获取物料数据,并将其同步到旺店通系统。这不仅提高了业务流程的自动化程度,还确保了数据的一致性和准确性。 如何对接钉钉API接口

使用轻易云数据集成平台进行ETL转换并写入旺店通·旗舰奇门API接口

在数据集成的生命周期中,ETL(提取、转换、加载)过程是至关重要的一步。本文将深入探讨如何使用轻易云数据集成平台将已经集成的源平台数据进行ETL转换,并最终写入目标平台——旺店通·旗舰奇门API接口。

元数据配置解析

在本次集成任务中,我们需要将源平台的数据转换为旺店通·旗舰奇门API接口所能接受的格式。以下是元数据配置的详细解析:

{
  "api": "wdt.goods.goods.push",
  "method": "POST",
  "idCheck": true,
  "request": [
    {
      "field": "goodsInfo",
      "label": "货品信息",
      "type": "object",
      "describe": "货品信息",
      "children": [
        {"field": "goods_no", "label": "货品编号", "type": "string", "describe": "货品编号", "value": "{FNumber}", "parent": "goodsInfo"},
        {"field": "goods_name", "label": "货品名称", "type": "string", "describe":"货品名称’","value":"{FName}","parent":"goodsInfo"},
        {"field":"class_name","label":"分类名称","type":"string","describe":"分类名称,不传或为空则默认为’无’","value":"{FMaterialGroup_FNumber}","parent":"goodsInfo"},
        {"field":"brand_name","label":"品牌名称","type":"string","describe":"品牌名称, 不传或为空则默认为’无’","parent":"goodsInfo"},
        {"field":"unit_name","label":"基本单位名称","type":"string","describe":"基本单位名称, 不传或为空则默认为’无’","value":"{FBaseUnitId_FNumber}","parent":"goodsInfo"},
        {"field":"aux_unit_name","label":"辅助单位名称","type":"string","describe":"辅助单位名称, 不传或为空则默认为’无’","parent":"goodsInfo"},
        {"field":"flag_name","label":"货品标记名称","type":"string","describe":"货品标记名称, 不传或为空则默认为’无’","parent":"goodsInfo"},
        {"field":"goods_type","label":"货品类型","type":"string","describe":"默认0, 0:其它1:销售货品2:原材料3:包装物4:周转材料5:虚拟商品6:固定资产8:分装箱","parent":"goodsInfo"},
        {"field":"short_name","label":"简称","type":"string","describe":"简称","parent":"goodsInfo"},
        {"field":"alias","label":"别名","type":"string","describe":"别名","parent":"goodsInfo"},
        {"field":"origin","label":"产地","type":"string","describe":"产地","parent":"goodsInfo"},
        {"field":"remark","label":"货品备注","type":"string","describe":"货品备注","parent":"goodsInfo"},
        {"field“:“prop1”,“label”:“货品自定义属性1”,“type”:“string”,“describe”:“货品自定义属性1”,“value”:“{F_POIH_Text1}”,“parent”:“goodsInfo”},
        // 省略部分字段...
      ]
    },
    {
      “field”: “specInfoList”,
      “label”: “单品信息列表”,
      “type”: “object”,
      “describe”: “规格信息列表”,
      “children”: [
        {“field”: “wms_process_mask”, “label”: “仓库流程”, “type”: “string”, “describe”: “默认0 (需要的仓库流程相加)2、无需验货 8、需要质检 16、无需拣货32、无需唯一码64、无需自动打印吊牌”, “parent”: “specInfoList”},
        {“field”:”spec_no”,”label”:”商家编码”,”type”:”string”,”describe”:”商家编码”,”value”:"{FNumber}",”parent”:”specInfoList"},
        // 省略部分字段...
      ]
    }
  ]
}

数据转换与映射

在ETL过程中,首先需要对源数据进行提取,然后按照目标平台的要求进行格式转换。以下是具体步骤:

  1. 提取源数据: 从源系统中提取所需的数据字段。例如,从ERP系统中提取物料编号(FNumber)、物料名称(FName)等。

  2. 字段映射: 根据元数据配置,将源系统中的字段映射到目标系统中。例如:

    • FNumber 映射到 goods_no
    • FName 映射到 goods_name
    • FMaterialGroup_FNumber 映射到 class_name
    • FBaseUnitId_FNumber 映射到 unit_name
  3. 数据清洗: 对提取的数据进行必要的清洗和处理。例如,对于空值字段,可以设置默认值或者进行特殊处理。

  4. 构建请求体: 根据映射关系构建API请求体。例如:

{
  "goodsInfo": {
    "goods_no": "{FNumber}",
    "goods_name": "{FName}",
    // 更多字段...
  },
  // 更多对象...
}

调用API接口

完成数据转换后,通过HTTP POST方法调用旺店通·旗舰奇门API接口,将处理后的数据写入目标系统。

import requests

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',
    'format': 'json',
    'v': '1.0',
    'method': 'wdt.goods.goods.push',
    'data': {
        # 构建好的请求体
    }
}

response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
    print('Data pushed successfully')
else:
    print('Failed to push data:', response.text)

通过上述步骤,我们可以实现从源平台到旺店通·旗舰奇门API接口的数据无缝对接。轻易云数据集成平台提供了强大的可视化操作界面和实时监控功能,使得整个ETL过程更加透明和高效。 金蝶与WMS系统接口开发配置

更多系统对接方案