利用轻易云平台进行ETL转换并向金蝶云星空写入数据

  • 轻易云集成顾问-吴伟

旺店通·企业奇门数据集成到金蝶云星空:采购入库同步方案

在电商和ERP系统的无缝对接中,确保数据准确传输和实时更新是至关重要的。本文将详细介绍如何通过使用轻易云平台,实现旺店通·企业奇门的数据与金蝶云星空的高效集成,这一过程涵盖了从数据获取、处理到最终写入的全流程管理。在这里,我们重点分享一个具体实例——“采购入库旺店通同步金蝶”的实施细节。

数据获取与分页处理

首先,我们需要从旺店通·企业奇门API接口wdt.stockin.order.query.purchase中抓取采购入库订单数据。该接口允许我们根据特定条件查询已完成的采购订单,但由于其返回结果有一定限制,因此必须实现分页抓取以避免漏单问题。

{
    "purchase_number": "20231001",
    "start_time": "2023-10-01 00:00:00",
    // 分页参数
    "page_no": 1,
    "page_size": 100
}

每次请求后,根据响应中的总记录数计算出需要多少页,并按顺序逐页拉取,直至所有数据全部获取完毕。同时,通过设置合理的限流策略,以应对旺店通接口调用频率的限制,确保不会因过度调用而导致IP被封或服务降级。

批量写入优化

当成功获取并整理好原始订单数据后,需要将这些信息快速批量写入到金蝶云星空。此时我们采用的是batchSave API,该API允许一次性提交大批量的数据,提高了操作效率并减少了网络延迟带来的影响。

为了进一步增强可靠性,每次批量提交过程中,我们会记录操作日志,并进行错误重试。如果遇到部分失败,则仅重新尝试失败的数据条目,而不是重复整个批次,从而提升整体执行效率和稳定性。

{
    "entries":[
        {
            "orderNumber":"PO123456789",
            // more fields...
        },
        {
            "orderNumber":"PO987654321",
            // more fields...
        }
        // batch entries..
    ]
}

实时监控与日志记录

为了跟踪整个流程中的每个环节进展情况及快速定位问题,结合实时监控机制,通过轻易云平台提供的一些工具来生成细粒度日志。这种透明化操作不仅利于开发人员排查故障,还为运营团队提供及时反馈支持,使得业务运转更为平稳、安全。例如,当某个步骤发生异常时,可以即时通知相关负责人采取补救措施,而无需等待 打通用友BIP数据接口

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

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

接口调用配置

首先,我们需要配置接口调用的元数据。以下是对元数据配置的详细解析:

{
  "api": "wdt.stockin.order.query.purchase",
  "method": "POST",
  "number": "order_no",
  "id": "stockin_id",
  "pagination": {
    "pageSize": 50
  },
  "idCheck": true,
  "omissionRemedy": {
    "crontab": "44 * * * *",
    "takeOverRequest": [
      {
        "field": "start_time",
        "label": "开始时间",
        "type": "datetime",
        "value": "{{HOURE_AGO_1|datetime}}"
      },
      {
        "field": "end_time",
        "label": "结束时间",
        "type": "datetime",
        "value": "{{CURRENT_TIME|datetime}}"
      }
    ]
  },
  ...
}
  • API和方法api字段指定了要调用的接口为wdt.stockin.order.query.purchase,请求方法为POST
  • 标识字段numberid分别表示订单编号和入库单ID,用于唯一标识每条记录。
  • 分页配置:通过pagination.pageSize设置每次请求返回的数据条数为50。
  • ID检查idCheck: true确保在处理过程中检查每条记录的唯一性。

请求参数配置

为了实现有效的数据请求,我们需要设置请求参数:

"request":[
  {"field":"start_time","label":"开始时间","type":"datetime","value":"{{LAST_SYNC_TIME|datetime}}"},
  {"field":"end_time","label":"结束时间","type":"datetime","value":"{{CURRENT_TIME|datetime}}"},
  {"field":"status","label":"状态","type":"string"},
  {"field":"src_order_no","label":"上层单据编号","type":"string"},
  {"field":"warehouse_no","label":"仓库编号","type":"string"}
],
"otherRequest":[
  {"field":"page_size","label":"分页大小","type":"string","value":"{PAGINATION_PAGE_SIZE}"},
  {"field":"page_no","label":"页号","type":"string","value":"{PAGINATION_START_PAGE}"}
]
  • 时间范围:通过动态变量设置开始时间和结束时间,确保每次同步时只获取最新的数据。
  • 状态、上层单据编号、仓库编号等字段根据业务需求进行过滤。
  • 分页参数:通过动态变量控制分页大小和页号,确保大数据量情况下的高效处理。

数据清洗与加工

在获取到原始数据后,需要进行初步清洗和加工,以便后续的数据转换与写入。以下是一些常见的数据清洗操作:

  1. 去重:根据唯一标识字段(如订单编号)去除重复记录。
  2. 格式转换:将日期、金额等字段转换为统一格式,确保数据一致性。
  3. 异常处理:过滤掉不符合业务规则或存在异常值的记录。

例如,对于日期字段,可以使用以下代码进行格式转换:

import datetime

def convert_date_format(date_str):
    return datetime.datetime.strptime(date_str, '%Y-%m-%d %H:%M:%S').strftime('%Y%m%d')

异常补救机制

为了保证数据的完整性,我们还需要配置异常补救机制:

"omissionRemedy":{
  ...
}

通过定时任务(如每小时运行一次)重新请求遗漏的数据,并根据时间范围进行补充。这一机制可以有效避免由于网络波动或其他原因导致的数据丢失。

综上所述,通过合理配置元数据、请求参数以及实施必要的数据清洗与异常处理,可以高效地从旺店通·企业奇门接口获取并加工采购入库数据,为后续的数据转换与写入打下坚实基础。 数据集成平台可视化配置API接口

使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口

在数据集成生命周期的第二步中,我们将已经集成的源平台数据进行ETL(提取、转换、加载)处理,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨如何通过轻易云数据集成平台实现这一过程。

配置API接口元数据

我们使用的API接口为batchSave,通过POST方法提交数据,并启用ID检查功能。以下是具体的元数据配置:

{
  "api": "batchSave",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "rowsKey": "array",
    "rows": 1,
    "method": "batchArraySave"
  },
  "request": [
    {
      "field": "FBillTypeID",
      "label": "单据类型",
      "type": "string",
      "parser": {
        "name": "ConvertObjectParser",
        "params": "FNumber"
      },
      "value": "RKD01_SYS"
    },
    {
      ...
    }
  ],
  ...
}

数据字段解析与转换

每个字段都需要根据业务需求进行解析和转换。例如,FBillTypeID字段表示单据类型,通过ConvertObjectParser解析器将其值转换为金蝶云星空系统所需的格式:

{
  "field": "FBillTypeID",
  "label": "单据类型",
  "type": "string",
  "parser": {
    "name": "ConvertObjectParser",
    "params": "FNumber"
  },
  "value": "RKD01_SYS"
}

类似地,其他字段如FBillNo(单据编号)、FDate(入库日期)、FSupplierId(供应商)等也需要进行相应的解析和转换。

嵌套对象与数组处理

对于嵌套对象和数组,需要特别注意其层级结构。例如,财务信息FInStockFin字段包含多个子字段:

{
  ...
  {
    "field": "FInStockFin",
    "label": "财务信息",
    ...
    {
      ...
      {
        ...
        {
          ...
          {
            ...
          }
        }
      }
    }
  }
}

同样地,明细信息FInStockEntry也是一个数组,其中包含多个子字段:

{
  ...
  {
    ...
    {
      ...
      {
        ...
        {
          ...
          {
            ...
          }
        }
      }
    }
  }
}

动态数据填充

在实际应用中,一些字段的数据需要动态填充。例如,通过查找集合来获取某些值:

{
  ...
  {
    ...
    {
      ...
      "_findCollection find FTaxPrice from ... where FBillNo={outer_no} FMaterialId={{details_list.spec_no}}"
      ...
    }
  }
}

这段代码表示从指定集合中查找符合条件的数据并填充到相应字段。

提交与审核

最后,我们需要设置一些操作参数,例如是否自动提交并审核:

{
  ...
  {
    ... 
    {"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","value":"true"}
    ... 
  } 
}

以上内容展示了如何通过轻易云数据集成平台配置元数据,实现将源平台的数据进行ETL转换,并最终写入目标平台金蝶云星空。通过合理配置API接口和解析器,可以确保数据无缝对接,提高业务效率。 如何对接用友BIP接口

更多系统对接方案