数据集成与ETL技术:从旺店通到金蝶云星空的完整流程

  • 轻易云集成顾问-吕修远

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

在实际业务处理中,电子商务平台与ERP系统的高效对接是提升运营效率的关键环节。本文将详细探讨如何通过轻易云数据集成平台,将旺店通·企业奇门的数据无缝集成到金蝶云星空。我们选择了“04-旺店通退换管理对接金蝶销售退货_TK”作为案例,通过具体技术实现和解决方案来展示此过程。

保障不漏单的数据抓取机制

为了确保从旺店通·企业奇门获取的数据不遗漏,我们采用定时可靠的抓取机制,通过调用wdt.refund.query接口,按照设定的时间间隔定时拉取退换管理的数据。此外,我们在每次调用API后进行分页处理,并处理API调用次数限制,以防止因大量请求而导致的数据丢失或错误。

数据快速写入及批量导入

针对大量数据需要高效写入至金蝶云星空的问题,我们使用其提供的batchSave接口,可以将大量数据分批次导入系统内。这不仅提高了数据传输速度,还减少了多次请求造成的网络开销。同时,结合实时监控与日志记录功能,每一次操作都会被完整记录,在出现异常情况时能够及时追溯并修正。

异常处理及重试机制

为保证整个数据流转过程中的稳定性和一致性,对接过程中设置了一套完善的异常处理与错误重试机制。一旦在向金蝶云星空写入数据时发生失败情况,系统会自动进行多次重试,并根据预设策略调整重试频率和次数,从而最大限度地降低因为网络波动或服务器压力带来的影响。

数据格式差异及映射转换

不同系统间存在着明显的数据格式差异。我们通过自定义映射规则,将旺店通·企业奇门返回的数据格式转换为符合金蝶云星空要求的一致形式。在这个过程中,不仅要注意字段类型的一致,还需考虑到部分必填项以及特殊字段(如备注、附加信息等)的兼容问题,使得两者之间顺利完成对接。

以上是此次项目实施过程中涉及的重要技术点,下篇文章将进一步深入探讨具体实现步骤,包括配置流程、代码示例以及遇到的问题与解决方案。 数据集成平台可视化配置API接口

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

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

接口配置与调用

首先,我们需要配置接口的元数据。以下是该接口的元数据配置:

{
  "api": "wdt.refund.query",
  "method": "POST",
  "number": "refund_no",
  "id": "refund_no",
  "pagination": {
    "pageSize": 40
  },
  "idCheck": true,
  "request": [
    {
      "field": "process_status",
      "label": "退换单处理状态",
      "type": "string",
      "describe": "退换单处理状态 5 补款 10已取消 20待审核 30已同意 40已拒绝 50待财审 60待收货 63待推送 64推送失败 65委外待收货 69待收货(已结算) 70部分到货 71部分到货(已结算) 80待结算 90已完成"
    },
    {
      "field": "time_type",
      "label": "时间类型",
      "type": "string",
      "describe": "0,最后更新时间,1,结算时间。默认值0"
    },
    {
      "field": "start_time",
      "label": "开始时间",
      "type": "datetime",
      "describe": "按最后修改(结算)时间增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss",
      "value": "{{LAST_SYNC_TIME|datetime}}"
    },
    {
      "field": "end_time",
      "label": "结束时间",
      "type": "datetime",
      "describe": "按最后修改时间(结算)增量获取数据,end_time作为结束时间,格式:yyyy-MM-dd HH:mm:ss",
      "value": "{{CURRENT_TIME|datetime}}"
    },
    {
      "field": "page_size",
      ...

请求参数详解

  1. process_status: 用于过滤退换单的处理状态,例如5表示补款,10表示已取消等。
  2. time_type: 指定时间类型,0表示最后更新时间,1表示结算时间。
  3. start_timeend_time: 用于增量获取数据,这两个字段分别表示开始和结束时间。
  4. page_size: 每页返回的数据条数,默认值为40。

这些参数确保了我们可以灵活地控制请求的范围和粒度,从而高效地获取所需的数据。

数据请求与清洗

在调用接口后,我们需要对返回的数据进行清洗和预处理。这一步骤包括但不限于:

  • 字段映射:将源系统中的字段映射到目标系统所需的字段。例如,将refund_no映射为目标系统中的退换单编号。
  • 数据过滤:根据业务需求过滤不必要的数据。例如,只保留处理状态为“已完成”的记录。
  • 格式转换:将日期、金额等字段转换为目标系统所需的格式。
def clean_data(raw_data):
    cleaned_data = []
    for record in raw_data:
        if record['process_status'] == '90': # 已完成
            cleaned_record = {
                'refund_no': record['refund_no'],
                'shop_no': record['shop_no'],
                'amount': float(record['amount']),
                'date': datetime.strptime(record['date'], '%Y-%m-%d %H:%M:%S')
            }
            cleaned_data.append(cleaned_record)
    return cleaned_data

数据转换与写入

在清洗完数据后,我们需要将其转换为目标系统可接受的格式,并写入目标系统。这一步骤通常包括:

  • 批量插入:为了提高效率,可以将清洗后的数据批量插入到目标数据库中。
  • 错误处理:记录并处理插入过程中出现的错误,以确保数据一致性。
def insert_to_target_system(cleaned_data):
    try:
        for record in cleaned_data:
            # 假设target_db是目标数据库连接对象
            target_db.insert('sales_return', record)
        target_db.commit()
    except Exception as e:
        target_db.rollback()
        log_error(e)

通过上述步骤,我们实现了从旺店通·企业奇门接口获取、清洗、转换并写入数据的全过程。这不仅提高了数据处理的效率,也确保了数据的一致性和准确性。 金蝶与WMS系统接口开发配置

数据集成与ETL转换:将源平台数据写入金蝶云星空API接口

在数据集成生命周期的第二步,我们重点关注如何将已经集成的源平台数据进行ETL转换,并最终写入目标平台——金蝶云星空。本文将详细探讨这一过程中涉及的技术细节和实现方法。

1. API接口配置与请求方法

在轻易云数据集成平台中,配置元数据是实现数据转换和写入的关键。本文使用的元数据配置如下:

{
    "api": "batchSave",
    "method": "POST",
    "condition": [
        [
            {"field":"shop_no","logic":"neq","value":"10"},
            {"field":"shop_no","logic":"neq","value":"20"},
            ...
        ]
    ],
    "idCheck": true,
    "operation": {
        "rowsKey": "array",
        "rows": 20,
        "method": "batchArraySave"
    },
    ...
}

该配置定义了批量保存(batchSave)的API接口,使用POST方法进行请求。同时,设置了过滤条件condition,确保只有符合条件的数据才会被处理。

2. 数据字段映射与转换

为了确保数据能够被金蝶云星空API正确接收,我们需要对源平台的数据进行字段映射和转换。以下是一些关键字段的映射规则:

  • 单据类型(FBillTypeID):固定值为XSTHD01_SYS
  • 单据编号(FBillNo):通过函数计算得出,具体逻辑如下:
    CASE '_findCollection find email from f9720649-c4cb-3d51-8bb0-e633ee48e23c where shop_no={shop_no} _endFind' 
    WHEN '' THEN 'TK2402291737' 
    ELSE '{refund_no}' 
    END
  • 销售组织(FSaleOrgId):根据shop_no字段动态确定:
    CASE '_findCollection find email from f9720649-c4cb-3d51-8bb0-e633ee48e23c where shop_no={shop_no} _endFind' 
    WHEN '100' THEN '100' 
    WHEN '200' THEN '200' 
    ELSE '100' 
    END
  • 日期(FDate):通过判断日期长度来选择合适的日期字段:
    IF(LENGTH('{modified_date}') > 5 ,' {modified_date} ', '{modified}')

3. 明细信息处理

对于明细信息,我们需要处理多个子字段,如物料编码、实退数量、退换货类型等。以下是一些关键子字段的处理逻辑:

  • 物料编码(FMaterialId)
    CASE '_findCollection find email from f9720649-c4cb-3d51-8bb0-e633ee48e23c where shop_no={shop_no} _endFind' 
    WHEN '' THEN 'FX-0001' 
    ELSE '{{refund_order_list.goods_no}}' 
    END
  • 实退数量(FRealQty):直接取自refund_order_list.refund_num
  • 含税单价(FTaxPrice):通过计算得出:
    round({{{refund_order_list.refund_order_amount}}\/{{refund_order_list.refund_num}},7)

4. 财务信息处理

财务信息包含结算组织等字段,这些字段同样需要根据业务逻辑进行动态设置:

  • 结算组织(FSettleOrgId)
    CASE '_findCollection find email from f9720649-c4cb-3d51-8bb0-e633ee48e23c where shop_no={shop_no} _endFind' 
    WHEN '100' THEN '100' 
    WHEN '200' THEN '200'
    ELSE '100'
    END

实现批量写入

最后,我们通过调用API接口,将处理后的数据批量写入金蝶云星空。以下是请求参数示例:

{
    "FormId": "SAL_RETURNSTOCK",
    "Operation": "Save",
    "IsAutoSubmitAndAudit": true,
    ...
}

该请求参数确保了数据在保存后自动提交并审核,提高了操作效率。

总结

通过上述步骤,我们实现了将源平台的数据进行ETL转换,并成功写入到金蝶云星空API接口。这一过程不仅提高了数据处理的效率,还确保了数据的一致性和准确性。在实际应用中,根据具体业务需求调整配置和映射规则,可以进一步优化数据集成效果。 金蝶与WMS系统接口开发配置

更多系统对接方案