使用轻易云平台完成ETL转换并高效写入班牛

  • 轻易云集成顾问-彭亮

吉客云·奇门数据集成到班牛:高效、精准的数据对接方案

在实际业务运作中,企业经常会遇到不同系统间的数据交互和整合需求。本文将专注于一个具体的技术案例——如何实现吉客云·奇门平台中的退换货单(发货)数据,通过轻易云数据集成平台,高效、精准地回写至班牛系统。

此次项目的主要任务是利用jackyun.tradenotsensitiveinfos.list.get接口,从吉客云·奇门获取相关数据,并通过task.update接口,将这些信息批量、高速地写入班牛库中。从而使两个系统之间保持数据的一致性和实时更新。

首先,我们需要解决几个关键技术问题,包括如何确保从吉客云·奇门提取的数据不遗漏,处理分页和限流机制,以及应对两者之间的数据格式差异。在此基础上,还需兼顾以下几点:

  1. 高吞吐量:支持大量退换货单的快速写入,使得大规模订单信息能够迅速被集成到班牛系统。
  2. 自定义数据转换逻辑:根据特定业务需求,对数据信息进行适配与转换,以满足输出要求。
  3. 异常处理与重试机制:为确保整个流程稳健运行,当出现错误时及时采取重试策略。
  4. 集中监控与告警:通过可视化工具实时监控整个集成过程,即时发现并处理潜在问题,提高整体效率和可靠性。

在接下来的文章内容中,我们将详细探讨如何配置轻易云平台,实现上述功能点及各环节的重要操作步骤,包括API调用细节、参数设置以及异常检出处理等方面,为读者提供一个全面且实用的参考案例。 用友与SCM系统接口开发配置

调用吉客云·奇门接口jackyun.tradenotsensitiveinfos.list.get获取并加工数据

在数据集成生命周期的第一步中,调用源系统接口以获取数据是至关重要的一环。本文将深入探讨如何使用轻易云数据集成平台配置元数据,通过调用吉客云·奇门接口jackyun.tradenotsensitiveinfos.list.get来获取并加工数据。

接口概述

吉客云·奇门接口jackyun.tradenotsensitiveinfos.list.get主要用于查询销售单的非敏感信息。该接口采用POST请求方式,支持多种查询条件和分页功能,能够高效地返回所需的订单数据。

元数据配置解析

在轻易云平台上,我们需要配置元数据来定义如何调用该接口。以下是关键的元数据配置项及其含义:

  • api: jackyun.tradenotsensitiveinfos.list.get
    • 指定要调用的API接口名称。
  • effect: QUERY
    • 表示这是一个查询操作。
  • method: POST
    • 指定请求方法为POST。
  • number: tradeNo
    • 定义销售单号字段,用于标识订单。
  • id: tradeId
    • 定义订单ID字段。
  • name: tradeNo
    • 再次定义销售单号字段,确保唯一性检查。
  • idCheck: true
    • 启用ID唯一性检查。

请求参数配置

请求参数是接口调用的重要组成部分,通过这些参数可以灵活地筛选和分页查询订单信息。以下是一些关键的请求参数:

  1. modified_beginmodified_end

    • 用于指定修改时间的起始和结束时间,必须同时存在且时间间隔不能超过七天。
  2. startModifiedendModified

    • 用于指定最后修改时间的起始和截止时间。
  3. tradeNo

    • 销售单号,可以传入多个单号,用半角逗号分隔。
  4. pageSize

    • 每页记录数,默认50,最大1000。此处我们设置为100。
  5. pageIndex

    • 页码,从0开始表示第一页。
  6. hasTotal

    • 是否返回总记录数,首次调用时可以传1获取总记录数。
  7. startConsignTimeendConsignTime

    • 发货时间的起始和截止时间,这里使用了函数from_unixtime来动态计算时间范围。
  8. tradeStatus

    • 订单状态,用于筛选特定状态的订单。
  9. tradeType

    • 订单类型,此处设置为92表示特定类型的订单。
  10. fields

    • 需要返回的字段列表,用逗号分隔。

自动填充响应

在轻易云平台上,我们可以启用自动填充响应功能(autoFillResponse),这将自动将API响应的数据填充到目标系统中,大大简化了数据处理流程。

条件过滤

为了进一步精确地筛选所需的数据,我们可以配置条件过滤。例如:

"condition":[
    [{"field":"tradeStatus","logic":"in","value":"6000,9090"},
     {"field":"buyerMemo","logic":"like","value":"班牛"}]
]

上述条件表示仅查询订单状态为6000或9090,并且买家备注包含“班牛”的订单。这些条件确保了我们获取的数据更加符合业务需求。

数据清洗与转换

在获取到原始数据后,我们通常需要进行一定的数据清洗与转换,以便后续处理。例如,可以通过自定义脚本或内置函数对日期格式进行转换,对字段进行重命名等操作。这一步骤确保了数据的一致性和可用性,为后续的数据写入奠定基础。

通过以上步骤,我们成功地完成了从吉客云·奇门接口获取并加工数据的全过程。这不仅提高了数据集成效率,也确保了业务流程的顺畅运行。 金蝶与WMS系统接口开发配置

使用轻易云数据集成平台进行ETL转换并写入班牛API接口

在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL转换,转为目标平台班牛API接口所能够接收的格式,最终写入目标平台。本文将详细介绍如何使用轻易云数据集成平台配置元数据,实现这一过程。

API接口配置

我们需要通过POST方法调用班牛的task.update接口,具体的元数据配置如下:

{
  "api": "task.update",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {"field": "app_id", "label": "小程序id", "type": "int", "value": "17000"},
    {"field": "project_id", "label": "群组ID", "type": "int", "value": "25821"},
    {"field": "task_id", "label": "工单id", 
     "type": "int", 
     "value": "_function substring_index( '{buyerMemo}' , ':' , -1)"
    },
    {
      "field": "contents",
      "label": "contents",
      "type": "object",
      "children": [
        {
          "field": "26644",
          "label": "补发/换货快递",
          "type": "string",
          "value": "_mongoQuery b3fe44c1-0495-3153-b6d4-3941b5fc359a findField=content.options_id where={\"content.options_title\":{\"$eq\":\"{logisticName}\"}}"
        },
        {
          "field": "26645",
          "label": "补发/换货物流单号",
          "type": "string",
          "value": "{mainPostid}"
        },
        {
          "field": "26643",
          "label":"补发/换货日期",
          ,"type":"string"
          ,"value":"{consignTime}"
        },
        {
          ,"field":"78594"
          ,"label":"补发出库"
          ,"type":"int"
          ,"value":"78590"
        },
        {
          ,"field":"5"
          ,"label":"工单状态"
          ,"type":"int"
          ,"value":"1"
        }
      ]
    }
  ]
}

数据请求与清洗

首先,我们从源平台获取原始数据,并进行必要的清洗和预处理。假设我们从吉客云获取了退换货单信息,这些信息包含了买家备注、物流名称、物流单号和发货时间等字段。

在清洗过程中,需要对这些字段进行标准化处理。例如,将买家备注中的特定部分提取出来作为工单ID,或者根据物流名称查询对应的选项ID。

数据转换与写入

接下来,我们需要将清洗后的数据按照班牛API接口要求进行转换,并写入目标平台。以下是具体步骤:

  1. 设置基础字段

    • app_idproject_id 是固定值,分别为17000和25821。
    • task_id 通过函数 _function substring_index( '{buyerMemo}' , ':' , -1) 从买家备注中提取。
  2. 设置嵌套对象字段

    • contents 字段是一个对象,包含多个子字段。
    • 26644 字段通过 _mongoQuery 查询MongoDB数据库,根据物流名称获取对应的选项ID。
    • 26645, 26643, 78594, 和 5 字段分别对应物流单号、发货日期、出库状态和工单状态。

以下是一个示例代码片段,用于实现上述逻辑:

import requests
import json

# 定义请求URL和头部信息
url = 'https://api.banniu.com/task.update'
headers = {'Content-Type': 'application/json'}

# 构建请求体
payload = {
    'app_id': 17000,
    'project_id': 25821,
    'task_id': extract_task_id(buyer_memo),
    'contents': {
        '26644': query_logistic_option(logistic_name),
        '26645': main_postid,
        '26643': consign_time,
        '78594': 78590,
        '5': 1
    }
}

# 将请求体转换为JSON格式
data = json.dumps(payload)

# 发起POST请求
response = requests.post(url, headers=headers, data=data)

# 检查响应状态码
if response.status_code == 200:
    print("Data successfully written to Banniu")
else:
    print(f"Failed to write data: {response.text}")

函数实现

为了完成上述步骤,我们需要实现两个辅助函数:extract_task_idquery_logistic_option

def extract_task_id(buyer_memo):
    # 假设买家备注格式为: xxx:taskId
    return buyer_memo.split(':')[-1]

def query_logistic_option(logistic_name):
    # 模拟MongoDB查询,根据物流名称获取选项ID
    # 实际实现中需要连接MongoDB并执行查询操作
    mongo_query_result = {
        '顺丰速运': '12345',
        '圆通速递': '67890'
    }
    return mongo_query_result.get(logistic_name, '')

通过以上步骤,我们成功地将源平台的数据进行了ETL转换,并通过班牛API接口写入了目标平台。 轻易云数据集成平台金蝶集成接口配置

更多系统对接方案