轻易云助力ETL实现从金蝶云到旺店通的数据转换

  • 轻易云集成顾问-曾平安

金蝶云星辰V2数据集成到旺店通·企业奇门:星辰物料对接方案

在金蝶云星辰V2与旺店通·企业奇门进行系统对接的过程中,确保数据不漏单和高效的数据传输至关重要。本次技术案例将详细探讨如何通过调用API接口 /jdy/v2/bd/material 获取金蝶云星辰V2的物料数据,并通过 wdt.goods.push 将这些数据可靠地写入到旺店通·企业奇门。

首先,我们需要解决的是金蝶云星辰V2接口的数据分页和限流问题。为了避免过多请求导致服务器负载过重或超时,我们采用批量抓取的方法,通过分段获取大量的物料数据。同时,还要注重处理接口返回的数据格式差异,以确保能够顺利导入到目标系统中。

此外,针对实时监控与日志记录的问题,我们配置了全透明可视化操作界面,以便实时监控每一个环节的运行状态。这不仅能提升业务流程的透明度,还为后续可能出现的问题提供详细日志支持,有助于迅速排查并解决异常情况。

在整个集成过程中,定时任务非常关键。我们设置了稳定、可靠的数据抓取机制,定期从金蝶云星辰V2拉取最新更新的信息,并及时推送到旺店通·企业奇门。此举不仅保证了信息传递的及时性,还有效防止遗漏任何一条重要数据。

最后,在面对两者之间不同的数据映射需求时,通过自定义映射规则,实现对各种复杂场景下字段转换和匹配,为应用层带来更高的一致性和准确性,同时也实现了错误重试机制,对偶发性的网络故障或服务不可用状况进行自动恢复,提高整体集成过程中的鲁棒性。 金蝶与CRM系统接口开发配置

调用金蝶云星辰V2接口获取并加工数据的技术案例

在数据集成过程中,调用源系统的API接口是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台调用金蝶云星辰V2接口/jdy/v2/bd/material,获取并加工物料数据。

接口调用配置

首先,我们需要配置API接口的元数据。以下是元数据配置的详细内容:

{
  "api": "/jdy/v2/bd/material",
  "method": "GET",
  "number": "number",
  "id": "id",
  "pagination": {
    "pageSize": 100
  },
  "idCheck": true,
  "autoFillResponse": true,
  "request": [
    {"field":"enable","label":"可用状态","type":"string","describe":"可用状态,1:可用,0:禁用,-1:全部","value":"1"},
    {"field":"search","label":"模糊搜索","type":"string","describe":"模糊搜索-名称、编码、规格、条形码"},
    {"field":"parent_id","label":"商品类别","type":"string","describe":"商品类别ID"},
    {"field":"isdataperm","label":"数据权限","type":"string","describe":"是否添加数据权限校验,默认false"},
    {"field":"create_start_time","label":"创建开始时间戳","type":"string","describe":"开始时间(格式:“时间戳”,-1表示不过滤),创建时间"},
    {"field":"create_end_time","label":"创建结束时间戳","type":"string","describe":"结束时间(格式:“时间戳”,-1表示不过滤),创建时间"},
    {"field":"modify_start_time","label":"修改开始时间戳","type":"string","describe":"开始时间(格式:“时间戳”,-1表示不过滤),修改时间","value":"_function {LAST_SYNC_TIME}*1000"},
    {"field":"modify_end_time","label":"修改结束时间戳","type":"string","describe":"结束时间(格式:“时间戳”,-1表示不过滤),修改时间","value":"_function {CURRENT_TIME}*1000"},
    {"field":"page","label":"当前页","type":"string","describe":"当前页(默认1)","value":"1"},
    {"field":"page_size","label":"每页显示条数","type":"string","describe":"每页显示条数(默认10,最大100)","value":"100"},
    {"field": "show_units", "label": "多单位信息", "type": "string", "describe": "是否返回多单位信息,true:返回,默认false"},
    {"field": "show_images", "label": "图片信息", "type": "string", "describe": "是否返回图片信息,true:返回,默认false"}
  ],
  "otherRequest":[
    {"field": "detailAPI", "label": "detailAPI", "type": "string", "value": "/jdy/v2/bd/material_detail"}
  ]
}

数据请求与清洗

在调用接口时,我们需要传递必要的参数以确保能够正确获取所需的数据。以下是一些关键参数及其作用:

  • enable: 设置为1表示只获取可用状态的物料。
  • modify_start_timemodify_end_time: 用于过滤在特定时间范围内修改过的物料记录。
  • pagepage_size: 用于分页获取数据,每次请求最多返回100条记录。

通过这些参数,我们可以精确控制请求的数据范围和数量,从而提高数据处理效率。

数据转换与写入

在成功获取到物料数据后,需要对数据进行必要的转换和清洗,以便后续写入目标系统。以下是一个简单的数据转换示例:

def transform_data(raw_data):
    transformed_data = []
    for item in raw_data:
        transformed_item = {
            'material_id': item['id'],
            'material_number': item['number'],
            'material_name': item['name'],
            'category_id': item['parent_id'],
            'status': 'active' if item['enable'] == '1' else 'inactive',
            # 添加更多字段转换逻辑
        }
        transformed_data.append(transformed_item)
    return transformed_data

该函数将原始数据中的字段映射到新的字段名称,并根据业务需求进行状态转换。

实践案例

假设我们需要从金蝶云星辰V2中获取所有在过去24小时内修改过的可用物料,并将其同步到旺店通系统。我们可以按照以下步骤进行操作:

  1. 设置请求参数

    • enable: 1
    • modify_start_time: _function {LAST_SYNC_TIME}*1000
    • modify_end_time: _function {CURRENT_TIME}*1000
    • page: 1
    • page_size: 100
  2. 调用API接口: 使用轻易云平台提供的工具发送GET请求,并获取响应数据。

  3. 处理响应数据: 调用上述transform_data函数对原始数据进行转换。

  4. 写入目标系统: 将转换后的数据通过相应的API接口或数据库连接写入旺店通系统。

通过以上步骤,我们可以实现从金蝶云星辰V2到旺店通系统的数据无缝对接,有效提升业务流程的自动化程度和效率。 系统集成平台API接口配置

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

在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是关键的一步。本文将详细探讨如何使用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,并转为目标平台旺店通·企业奇门API接口所能够接收的格式,最终写入目标平台。

数据请求与清洗

在ETL转换之前,我们首先需要从源系统中提取数据,并对其进行清洗和预处理。这一步骤确保了数据的完整性和一致性,为后续的转换和加载打下坚实基础。

数据转换与写入

接下来,我们重点关注如何将清洗后的数据进行转换,并通过API接口写入旺店通·企业奇门。以下是具体的技术实现步骤:

  1. 配置元数据

    根据提供的元数据配置,我们需要将源数据映射到目标系统所需的数据结构中。以下是元数据配置的示例:

    {
     "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)所有属性的唯一编号,用于系统货品区分", "value": "{number}", "parent": "goods_list"},
           {"field": "goods_type", "label": "货品类别", "type": "string", "describe": "", "value": 1,  parent: 'goods_list'},
           {"field":"goods_name","label":"货品名称","type":"string","describe":"货品名称","value":"{name}","parent":"goods_list"},
           {"field":"short_name","label":"货品简称","type":"string","describe":"货品简称","value":"{name}","parent":"goods_list"},
           {"field":"alias","label":"货品别名","type":"string","describe":"别名","parent":"goods_list"},
           {"field":"pinyin","label":"拼音名称","type":"string","describe":"拼音名称","parent":"goods_list"},
           {"field":"origin","label":"产地","type":"string","describe":"产地","parent":"goods_list"},
           {"field":"class_name","label":"分类","type":"string","describe":"","value" : "{parent_name}", parent: 'goods_list'},
           {"field" : 'brand_name', label: '品牌', type: 'string', describe: '', value: '{brandid_id}', parent: 'goods_list'},
           {"field" : 'unit_name', label: '基本单位', type: 'string', describe: '', value: '{base_unit_name}', parent: 'goods_list'},
           {"field" : 'remark', label: '备注', type:' string', describe:' 备注', parent:' goods_list'},
           // ... 其他字段省略
         ]
       }
     ]
    }
  2. 映射字段

    在映射过程中,我们需要确保每个字段都正确匹配。例如,{number} 映射到 goods_no{name} 映射到 goods_nameshort_name{brandid_id} 映射到 brand_name 等等。

  3. 生成请求报文

    根据上述映射关系,我们生成符合旺店通·企业奇门API接口要求的请求报文。示例如下:

    {
     "api": "wdt.goods.push",
     "method": "POST",
     // ... 其他参数
     {
       goods_list:[
         {
            goods_no:"12345",
            goods_type:"1",
            goods_name:"商品A",
            short_name:"商品A",
            alias:"",
            pinyin:"",
            origin:"",
            class_name:"分类A",
            brand_name:"品牌A",
            unit_name:"个",
            remark:"",
            spec_list:[
              {
                spec_no:"12345-1",
                spec_code:"",
                barcode:"",
                spec_name:"规格A",
                is_allow_neg_stock:"1"
                // ... 其他规格字段
              }
             // ... 其他规格项
            ]
          }
        // ... 其他商品项
       ]
     }
    }
  4. 调用API接口

    最后,通过HTTP POST方法,将生成的请求报文发送到旺店通·企业奇门API接口,实现数据写入。

import requests

url = 'https://api.wangdian.cn/openapi2/goods_push.php'
headers = {'Content-Type': 'application/json'}
data = {
    # 上述生成的请求报文
}

response = requests.post(url, json=data, headers=headers)

if response.status_code == 200:
    print("Data successfully pushed to Wangdian Tong")
else:
    print(f"Failed to push data. Status code: {response.status_code}, Response: {response.text}")

通过上述步骤,我们实现了从源系统到目标系统的数据ETL转换和写入。轻易云数据集成平台提供了强大的可视化操作界面,使得这一过程更加高效和透明。在实际应用中,可以根据业务需求灵活调整元数据配置,以满足不同场景下的数据集成需求。 轻易云数据集成平台金蝶集成接口配置

更多系统对接方案