借助轻易云平台进行ETL转换并写入敦煌种业先锋

  • 轻易云集成顾问-张妍琪

有赞云数据集成到敦煌种业先锋的技术实践分享

在当今复杂而多样化的业务环境中,跨系统的数据集成需求日益迫切。针对有赞云和敦煌种业先锋两大系统的对接,本案例展示了如何通过批量查询订单(总部)-ok方案,实现高效、稳定的数据同步。

我们首先需要从有赞云获取最新交易数据,这里使用其提供的API接口/youzan.trades.sold.get.4.0.4来抓取订单信息。在实际操作中,由于有赞云API具有分页和限流机制,因此必须设计合理的数据提取策略,以确保每个请求都能顺利执行并获得完整数据。为了避免漏单,我们采取了定时任务周期性调用该API,并结合事务管理进行异常重试处理。

随后,为将抓取到的大量订单数据快速写入到敦煌种业先锋,我们使用其提供的写入接口/Api/QEasyCloud/OtOOrder进行批量提交。在这个过程中,通过轻易云平台可视化的数据流设计工具,自定义转换逻辑,实现有序、高效的数据传输。同时,该平台支持实时监控与日志记录功能,使得整个数据处理过程透明可靠,一旦出现问题能够及时预警并进行修正。

特别值得一提的是,在处理两个系统之间的格式差异时,我们部署了一套定制化映射规则。这不仅使不同结构的数据得以无缝衔接,还提升了整体数据质量,有效减少了潜在错误。此外,针对可能发生的一些异常情况,例如网络波动或目标系统负载过高等,制定严格且有效地重试机制,确保最终一致性和可靠性。 用友与WMS系统接口开发配置

调用有赞云接口youzan.trades.sold.get.4.0.4获取并加工数据

在轻易云数据集成平台的生命周期中,调用源系统接口是数据处理的第一步。本文将深入探讨如何通过调用有赞云接口youzan.trades.sold.get.4.0.4来获取订单数据,并进行初步的数据加工。

接口概述

有赞云提供了丰富的API接口,其中youzan.trades.sold.get.4.0.4用于批量查询订单信息。该接口支持多种查询参数,可以根据不同的业务需求灵活配置。本次集成方案的元数据配置如下:

{
  "api": "/youzan.trades.sold.get.4.0.4",
  "effect": "QUERY",
  "method": "GET",
  "number": "{{order_info.tid}}",
  "id": "{{order_info.tid}}",
  "idCheck": true,
  "request": [
    {"field": "start_update", "label": "创建开始时间", "type": "string", "value": "{{LAST_SYNC_TIME|datetime}}"},
    {"field": "end_update", "label": "创建结束时间", "type": "string", "value": "{{CURRENT_TIME|datetime}}"},
    {"field": "page_no", "label": "页码", "type": "string", "value": "1"},
    {"field": "page_size", "label": "每页数量", "type": "string", "value":"100"},
    {"field":"status","label":"状态","type":"string","value":"WAIT_SELLER_SEND_GOODS"}
  ],
  "autoFillResponse": true,
  "beatFlat":["orders"],
  ...
}

请求参数解析

  1. start_updateend_update: 用于指定订单创建的时间范围。通过模板变量{{LAST_SYNC_TIME|datetime}}{{CURRENT_TIME|datetime}}动态生成。
  2. page_nopage_size: 分页参数,分别指定当前页码和每页返回的数据量。
  3. status: 筛选订单状态为“等待卖家发货”。

这些参数确保了我们能够精确地获取到所需时间范围内、特定状态的订单信息。

数据请求与清洗

在实际操作中,首先需要通过GET请求调用有赞云API,获取原始订单数据。以下是一个示例请求:

GET /youzan.trades.sold.get.4.0.4?start_update=2023-01-01T00:00:00&end_update=2023-01-02T00:00:00&page_no=1&page_size=100&status=WAIT_SELLER_SEND_GOODS HTTP/1.1
Host: open.youzan.com
Authorization: Bearer YOUR_ACCESS_TOKEN

响应结果通常包含多个字段,我们需要对其进行清洗和转换,以便后续处理。例如:

{
  ...
  "response":{
    ...
    "trades":[
      {
        ...
        // 原始订单数据
      }
    ]
  }
}

通过配置中的beatFlat:["orders"],我们可以将嵌套的订单列表平铺展开,方便后续的数据处理。

数据转换与写入

在获取并清洗了原始数据后,需要对其进行转换,以适应目标系统的数据结构。这一步通常包括字段映射、格式转换等操作。例如,将有赞云返回的时间戳转换为目标系统所需的日期格式。

{
  ...
  // 转换后的订单数据结构
}

最后,将处理好的数据写入目标系统,这一步可以通过轻易云平台提供的数据写入功能实现。

异常处理与补偿机制

为了确保数据集成过程的可靠性,我们需要设计异常处理和补偿机制。在元数据配置中,通过omissionRemedy字段定义了一个定时任务(crontab),用于定期检查和补偿可能遗漏的数据请求:

"omissionRemedy":{
  ...
  // 定时任务配置
}

该机制确保即使在某些情况下出现请求失败或数据遗漏,也能及时进行补偿,保证数据的一致性和完整性。

通过以上步骤,我们完成了从调用有赞云接口获取原始订单数据,到清洗、转换并写入目标系统的全过程。这一系列操作不仅提高了数据处理效率,也增强了业务透明度和可靠性。 用友与SCM系统接口开发配置

使用轻易云数据集成平台进行ETL转换并写入敦煌种业先锋API接口

在数据集成的生命周期中,将已经集成的源平台数据进行ETL转换是关键步骤之一。本文将重点探讨如何利用轻易云数据集成平台,将源平台的数据转换为目标平台敦煌种业先锋API接口所能够接收的格式,并最终写入目标平台。

元数据配置解析

在进行ETL转换之前,我们首先需要理解元数据配置。以下是针对敦煌种业先锋API接口的元数据配置:

{
  "api": "/Api/QEasyCloud/OtOOrder",
  "effect": "EXECUTE",
  "method": "POST",
  "number": "id",
  "id": "id",
  "name": "id",
  "idCheck": true,
  "request": [
    {"field":"OrderNo","label":"订单号","type":"string","value":"{bfn_num}"},
    {"field":"OrderTime","label":"下单时间","type":"string","value":"{{order_info.created}}"},
    {"field":"StoreId","label":"门店id","type":"string","value":"{{order_info.node_kdt_id}}"},
    {"field":"CustomerId","label":"客户id","type":"string","value":"{{buyer_info.yz_open_id}}"},
    {"field":"ProductName","label":"产品名称","type":"string","value":"{orders_newtitle}"},
    {"field":"ProductSPec","label":"产品编码","type":"string","value":"{orders_newSpecNo}"},
    {"field":"Num","label":"数量","type":"string","value":"{orders_num}"},
    {"field":"Amount","label":"金额","type":"string","value":"{orders_price}"},
    {"field":"Name","label":"收货人姓名","type":"string","value":"{{address_info.receiver_name}}"},
    {"field":"MobilePhone","label":"收货人电话","type":"string","value":"{{address_info.receiver_tel}}"},
    {"field":"ProvinceName","label":"省","type":"string","value":"{{address_info.delivery_province}}"},
    {"field":"CityName","label":"市","type":"string","value":"{{address_info.delivery_city}}"},
    {"field":"DistrictName","label":"区","type":"string","value":"{{address_info.delivery_district}}"},
    {"field":"Address","label":"详细地址","type":"","value":{"address_info.delivery_address}}
  ]
}

数据请求与清洗

在数据请求阶段,我们从源系统中提取所需的数据。这些数据通常包括订单信息、客户信息和地址信息等。在清洗过程中,我们会对这些数据进行标准化处理,确保其符合目标系统的要求。例如,日期格式的统一、字符串长度的校验等。

数据转换与写入

在完成数据清洗后,我们进入数据转换阶段。此时,需要将清洗后的数据映射到目标系统所需的字段格式,并通过API接口将其写入目标系统。以下是具体操作步骤:

  1. 设置API接口参数

    • api: 接口路径 /Api/QEasyCloud/OtOOrder
    • method: 请求方法 POST
    • effect: 执行类型 EXECUTE
    • number, id, name, idCheck: 用于唯一标识请求的参数配置
  2. 字段映射

    • 将源系统中的字段映射到目标系统所需的字段。例如:
      • {bfn_num} 映射到 OrderNo(订单号)
      • {{order_info.created}} 映射到 OrderTime(下单时间)
      • {orders_newtitle} 映射到 ProductName(产品名称)
  3. 构建请求体: 根据元数据配置构建请求体,确保每个字段都正确映射并包含相应的数据。例如:

    {
     "OrderNo": "{bfn_num}",
     "OrderTime": "{{order_info.created}}",
     "StoreId": "{{order_info.node_kdt_id}}",
     ...
     "Address": "{{address_info.delivery_address}}"
    }
  4. 发送请求: 使用POST方法将构建好的请求体发送到目标API接口 /Api/QEasyCloud/OtOOrder

  5. 处理响应: 接收并处理API接口返回的响应,确保数据成功写入目标系统。如果出现错误,需要根据错误信息进行调试和修正。

技术要点

  • 异步处理:由于轻易云平台支持全异步处理,确保在大批量数据传输时不会阻塞主线程,提高效率。
  • 实时监控:利用平台提供的实时监控功能,可以随时查看数据流动和处理状态,及时发现并解决问题。
  • 多系统兼容性:该平台支持多种异构系统集成,能够灵活适应不同业务场景和技术需求。

通过以上步骤,我们可以高效地将源平台的数据进行ETL转换,并成功写入敦煌种业先锋API接口,从而实现不同系统间的数据无缝对接。 泛微OA与ERP系统接口开发配置

更多系统对接方案