ETL转换:从旺店通到金蝶云星空的数据处理全解析

  • 轻易云集成顾问-曾平安

案例分享:调拨出库管理旺店通数据集成到金蝶云星空

在本案例中,我们将详细探讨如何成功实现「调拨出库」类型的数据从旺店通·企业奇门系统的出库单管理模块,集成到金蝶云星空中的其他出库单模块。通过API接口 wdt.stockout.order.query 获取旺店通数据,并使用 batchSave 接口实现数据在金蝶云星空的写入。

为了确保整个数据集成过程高效、可靠和准确,采用了以下几个关键技术方案:

  1. 定时可靠抓取:利用定时任务机制,每隔一段时间自动调用旺店通·企业奇门接口 wdt.stockout.order.query 以获取最新的出库单数据。这些任务均配置了重试策略,以防止网络波动或临时故障导致的数据漏采问题。

  2. 处理分页与限流:由于旺店通接口存在返回结果分页及请求频率限制,因此设计了一种智能分页抓取方案,确保每次获取最大量有效数据,同时避免触发限流限制,从而保证大批量数据快速、稳定地导入目标系统。

  3. 格式转换与映射:针对两套系统间可能的字段不一致和格式差异,通过自定义映射规则,将旺店通返回的数据转换为符合金蝶云星空要求的结构。在此过程中,还会捕捉并记录所有异常情况以便后续分析与优化。

  4. 批量写入优化:为了提高整体写入性能,在经过预处理和验证后的数据信息,会被打包成适当大小的一组,通过调用 batchSave 接口进行批量写入操作,大幅提升传输效率和速度。

  5. 实时监控与日志记录:提供全程透明化的数据处理监控体系,可以实时追踪每一个环节。所有操作日志被自动记录并归档,对于出现的问题可以迅速定位原因并及时响应,提高整体运维效果及用户体验。

接下来,我们将深入剖析这些技术点在实际项目实施中的具体应用细节,以及应对挑战的方法。 钉钉与ERP系统接口开发配置

使用轻易云数据集成平台调用旺店通·企业奇门接口wdt.stockout.order.query获取并加工数据

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

接口概述

接口wdt.stockout.order.query用于查询出库单信息。该接口采用POST请求方式,支持多种参数配置以实现精确的数据查询。以下是该接口的主要参数配置:

  • start_time: 开始时间,用于增量获取数据,格式为yyyy-MM-dd HH:mm:ss
  • end_time: 结束时间,用于增量获取数据,格式为yyyy-MM-dd HH:mm:ss
  • status: 出库单状态,例如110表示已完成。
  • order_type: 出库单类型,例如2表示调拨出库。
  • src_order_no: 系统订单编号。
  • src_tid: 原始单号。
  • stockout_no: 出库单号。
  • shop_no: 店铺编号,用于区分不同店铺的数据。
  • warehouse_no: 仓库编号,用于区分不同仓库的数据。

此外,还支持分页参数:

  • page_size: 每页返回的数据条数,默认值为40。
  • page_no: 页号,默认从0页开始。

元数据配置

在轻易云数据集成平台中,我们可以通过以下元数据配置来调用该接口:

{
  "api": "wdt.stockout.order.query",
  "effect": "QUERY",
  "method": "POST",
  "number": "order_no",
  "id": "stockout_id",
  "name": "order_no",
  "idCheck": true,
  "request": [
    {
      "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": "status",
      "label": "状态",
      "type": "string",
      "describe": "5已取消,55已审核,95已发货,105 部分打款,110已完成,113:异常发货",
      "value": 110
    },
    {
      "field": "order_type",
      ...

数据请求与清洗

在实际操作中,我们首先需要设置好请求参数。通过使用模板变量如{{LAST_SYNC_TIME|datetime}}{{CURRENT_TIME|datetime}}来动态填充开始和结束时间,可以确保每次调用都是增量获取最新的数据。

例如:

{
  ...
  {
    ...
    {
      ...
      {
        ...
        {
          ...
          {
            ...
            {
              ...
              {
                ...
                {
                  ...
                  {
                    ...
                    {
                      ...
                      {
                        ...
                        {
                          ...
                          {
                            ...
                            {
                              ...
                              {
                                ...
                                {
                                  ...
                                  {
                                    ...
![金蝶云星空API接口配置](https://pic.qeasy.cloud/S29.png~tplv-syqr462i7n-qeasy.image)
### 轻易云数据集成平台生命周期的第二步:ETL转换与数据写入金蝶云星空API接口

在数据集成过程中,ETL(Extract, Transform, Load)转换是至关重要的一环。本文将详细探讨如何利用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,并转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。

#### 数据请求与清洗

在开始ETL转换之前,首先需要从源平台(如旺店通)获取出库单管理的数据。假设我们已经完成了这一阶段,并且获得了结构化的原始数据。接下来,我们将进入数据转换与写入阶段。

#### 数据转换

在数据转换过程中,需要将源平台的数据字段映射到目标平台金蝶云星空API接口所需的字段格式。以下是元数据配置示例,该配置定义了如何将源平台的数据映射到金蝶云星空的其他出库单API接口:

```json
{
    "api": "batchSave",
    "effect": "EXECUTE",
    "method": "POST",
    "idCheck": true,
    "request": [
        {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{order_no}"},
        {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"标准其他出库单:QTCKD01_SYS\n资产出库:QTCKD02_SYS\nVMI出库:QTCKD03_SYS\n费用物料出库:QTCKD04_SYS\n库存调整:QTCKD05_SYS","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"QTCKD07_SYS"},
        {"field":"FStockOrgId","label":"库存组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"},
        {"field":"FPickOrgId","label":"领用组织","type":"string","describe":"领用组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"},
        {"field":"FStockDirect","label":"库存方向","type":"string","describe":"库存方向","value":"GENERAL"},
        {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{consign_time}"},
        {"field":"FDeptId","label":"领料部门","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"BM000003"},
        {"field":"FOwnerTypeIdHead","label":"货主类型","type":"string","describe":"","value":""},
        {"field":"","label":"","type":"","describe":"","value":""},
        ...
    ],
    "otherRequest":[
        {"field":"","label":"","type":"","describe":"","value":""},
        ...
    ],
    "operation":{
        "rowsKey":"",
        "rows":"",
        "method":"",
    }
}

上述配置中,每个字段都详细描述了其在目标系统中的映射关系。例如:

  • FBillNo 映射为 {order_no},即源系统中的订单编号。
  • FBillTypeID 固定为 QTCKD07_SYS,表示标准其他出库单。
  • FStockOrgIdFPickOrgId 都固定为 100,表示库存组织和领用组织。

数据写入

完成数据转换后,需要将这些结构化的数据通过API接口写入到金蝶云星空。以下是一个实际的HTTP POST请求示例,用于将转换后的数据提交到金蝶云星空:

POST /k3cloud/api/batchSave HTTP/1.1
Host: api.kingdee.com
Content-Type: application/json
Authorization: Bearer <token>

{
  "FormId": "STK_MisDelivery",
  "IsAutoSubmitAndAudit": false,
  "IsVerifyBaseDataField": true,
  "Operation": "Save",
  "InterationFlags": ["STK_InvCheckResult"],
  "Model": {
    ...
  }
}

在这个请求中:

  • FormId 指定业务对象表单ID,这里为 STK_MisDelivery
  • IsAutoSubmitAndAudit 设置为 false,表示不自动提交和审核。
  • IsVerifyBaseDataField 设置为 true,表示验证所有基础资料有效性。
  • Operation 设置为 Save,执行保存操作。
  • InterationFlags 包含 "STK_InvCheckResult",允许负库存。

通过上述配置和请求,我们实现了从源平台到目标平台的数据无缝对接。这一过程不仅确保了数据的一致性和准确性,还大大提高了业务处理效率。

总结

通过轻易云数据集成平台,我们可以高效地完成从源平台到目标平台的数据ETL转换和写入操作。在实际应用中,只需根据具体业务需求调整元数据配置,即可实现不同系统间的数据无缝对接,为企业的信息化建设提供强有力的支持。 打通钉钉数据接口

更多系统对接方案