轻易云平台实现ETL转换及数据对接金蝶云星空的最佳实践

  • 轻易云集成顾问-彭亮

旺店通·企业奇门数据集成到金蝶云星空:线上订单对接(all)技术案例分享

在本次技术案例中,我们将深入探讨如何利用轻易云数据集成平台,实现旺店通·企业奇门的线上订单及时、准确地对接到金蝶云星空。在该方案实施过程中,充分发挥了API接口调用、高并发数据写入以及实时监控和告警系统等功能,确保整个集成过程高效且无缝衔接。

数据获取与处理

首先,通过调用旺店通·企业奇门的wdt.stockout.order.query.trade API接口,从其系统中定时抓取最新的出库订单数据。为了保证大规模数据采集的可靠性,我们设立了分页机制来逐步获取全量数据,并采用限流策略以避免因请求频繁导致的数据拥堵或服务拒绝问题。

{
  "api_name": "wdt.stockout.order.query.trade",
  "params": {
    "page_no": 1,
    "page_size": 100
  }
}

数据转换与映射

获得原始订单数据后,需要进行必要的数据清洗和格式转换,使之符合金蝶云星空所需的数据结构。为此,使用自定义的数据转换逻辑,将旺店通特有字段标准化,并映射至相应的金蝶云字段。例如,对日期格式、金额单位以及商品分类进行规范化处理。

高效写入与批量集成

为了尽可能提升效率,大量预处理后的订单通过batchSave API一次性批量写入到金蝶云星空。这种方式不仅降低了网络传输成本,还显著减少了API调用次数,从而提高整体性能。同时,为保障每一条记录都能顺利写入,在设计上引入异常重试机制,以防止偶发错误影响最终结果。

{
  "api_name": "batchSave",
  "data_list": [
    // 转换后的订单信息数组
  ]
}

实时监控与告警系统

在整个执行过程中,全程启用实时监控和日志记录功能,不仅能随时掌握各任务节点状态,还能快速响应任何异常情况。集中式告警系统可及时通知相关人员,确保问题被迅速定位和解决,这对于维持业务连续性至关重要。

以上是我们关于旺店通·企业奇门与金蝶云星空之间线上订单对接的一部分核心实现细节及技术要点。下文中将详细讲解具体实施步骤及更多实际操作内容。 打通钉钉数据接口

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

在数据集成生命周期的第一步中,调用源系统接口获取数据是至关重要的一环。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口wdt.stockout.order.query.trade来获取线上订单数据,并进行初步的数据加工。

接口调用配置

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

  • API: wdt.stockout.order.query.trade
  • Method: POST
  • Pagination: 每页返回100条记录
  • Condition: 排除特定店铺编号的数据
  • Request Parameters:
    • start_time: 增量获取数据的开始时间
    • end_time: 增量获取数据的结束时间
    • status: 订单状态
    • src_order_no: 系统订单编号
    • src_tid: 原始单号
    • stockout_no: 出库单号
    • shop_no: 店铺编号
    • warehouse_no: 仓库编号
    • is_by_modified: 是否按修改时间筛选

数据请求与清洗

在实际操作中,我们需要通过POST请求向接口发送参数,以获取所需的订单数据。以下是一个示例请求体:

{
    "start_time": "{{LAST_SYNC_TIME|datetime}}",
    "end_time": "{{CURRENT_TIME|datetime}}",
    "status": "95",
    "page_size": 100,
    "page_no": 0,
    "shop_no": {"$nin": ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14"]}
}

在这个请求体中,我们使用了动态变量{{LAST_SYNC_TIME|datetime}}{{CURRENT_TIME|datetime}}来指定增量同步的时间范围。此外,通过设置status为"95",我们只获取已发货的订单。

数据转换与写入

在接收到响应数据后,需要对其进行初步清洗和转换。例如,可能需要将日期格式标准化、字段重命名或过滤无效记录。以下是一个简单的数据转换示例:

import pandas as pd

# 假设response_data是从接口返回的JSON数据
response_data = [
    {
        "order_no": "12345",
        "shop_no": "16",
        ...
    },
    ...
]

# 转换为DataFrame进行处理
df = pd.DataFrame(response_data)

# 标准化日期格式
df['order_date'] = pd.to_datetime(df['order_date'], format='%Y-%m-%d %H:%M:%S')

# 重命名字段以符合目标系统要求
df.rename(columns={'order_no': 'OrderNumber', 'shop_no': 'ShopNumber'}, inplace=True)

# 过滤无效记录(例如:空订单号)
df = df[df['OrderNumber'].notnull()]

# 将处理后的数据写入目标系统(例如:数据库)
df.to_sql('target_table', con=database_connection, if_exists='append', index=False)

通过上述步骤,我们完成了从源系统调用接口、获取数据、清洗和转换,最终将处理后的数据写入目标系统的全过程。

小结

本文详细介绍了如何通过轻易云数据集成平台调用旺店通·企业奇门接口wdt.stockout.order.query.trade来获取线上订单数据,并进行了初步的数据清洗和转换。这一过程展示了如何高效地实现不同系统间的数据无缝对接,为后续的数据处理和分析奠定了坚实基础。 企业微信与OA系统接口开发配置

轻易云数据集成平台:ETL转换与金蝶云星空API接口对接

在数据集成生命周期的第二步中,我们将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。以下是详细的技术实现步骤和关键配置。

API接口配置

我们使用batchSave API接口,通过POST方法将数据批量写入金蝶云星空。以下是具体的元数据配置:

{
    "api": "batchSave",
    "method": "POST",
    "idCheck": true,
    "operation": {
        "rowsKey": "array",
        "rows": 1,
        "method": "batchArraySave"
    },
    "request": [
        {"field":"FBillNo","label":"出库单号","type":"string","describe":"出库单号"},
        {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"XSCKD01_SYS"},
        {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{consign_time}"},
        {"field":"FSaleOrgId","label":"销售组织","type":"string","describe":"组织","value":"_findCollection find FSaleOrgId_FNumber from 9b7e7d5b-6768-3b31-9910-af21746cbc34 where FNumber={shop_no}","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
        {"field":"FCustomerID","label":"客户","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find FCustomerId_FNumber from 9b7e7d5b-6768-3b31-9910-af21746cbc34 where FNumber={shop_no}"},
        {"field":"FCarriageNO","label":"运输单号","type":"string","describe":"文本","value":"{logistics_no}"},
        {"field":"FStockOrgId","label":"发货组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find UseOrgId_Number from 59d709dd-3a4c-3a44-8473-147141e53801 where Number={warehouse_no}"},
        {"field":"FLinkPhone","label":"联系电话","type":"","describe":"","value":""},
        {"field":"","label":"","type":"","describe":"","value":""},
        ...
    ],
    ...
}

数据转换与映射

在数据转换过程中,我们需要将源数据字段映射到目标平台所需的字段,并进行必要的数据清洗和格式转换。例如:

  1. 日期字段转换

    • 源数据中的consign_time需要映射到目标平台的FDate字段。
      {"field": "FDate", "label": "日期", "type": "string", "describe": "日期", "value": "{consign_time}"}
  2. 组织编码转换

    • 使用_findCollection函数从指定集合中查找对应的组织编码,并通过ConvertObjectParser进行对象解析。
      {
      "field": "FSaleOrgId",
      "label": "销售组织",
      "type": "string",
      "describe": "组织",
      "value": "_findCollection find FSaleOrgId_FNumber from 9b7e7d5b-6768-3b31-9910-af21746cbc34 where FNumber={shop_no}",
      "parser": {"name": "ConvertObjectParser", "params": "FNumber"}
      }
  3. 明细信息处理

    • 明细信息通过数组形式传递,每个明细项包含多个字段,如物料编码、实发数量、含税单价等。
      {
      "field": "FEntity",
      ...
      {
         ...
         {"field": "FMaterialID", ...},
         {"field": "", ...},
         ...
      },
      ...
      }

特殊字段处理

对于一些特殊字段,我们需要进行特定的处理逻辑。例如:

  1. 是否赠品
    • 根据源数据中的赠品类型判断是否为赠品。
      
      {
      ...
      {"field": "", ...},
      {
         ...
         {
             ...
             {
                 ...
                 {
                     ...
                     {
                         ...
                         {
                             ...
                             {
                                 ...
                                 {
                                     ...
                                     {
                                         ...
                                         {
                                             ...
      ![用友与MES系统接口开发配置](https://pic.qeasy.cloud/T20.png~tplv-syqr462i7n-qeasy.image)
更多系统对接方案