数据转换与写入:ETL将数据集成到金蝶云星辰V2的流程解析

  • 轻易云集成顾问-钟家寿

旺店通·企业奇门与金蝶云星辰V2的采购入库集成案例分享

在如今复杂多变的供应链管理中,实现不同系统间的数据无缝对接,是确保业务高效运转的重要保障。本文将详细介绍如何利用轻易云数据集成平台,将旺店通·企业奇门的采购入库数据成功集成到金蝶云星辰V2,并实现稳定可靠的数据传输。

一、问题背景及需求分析

为了满足企业日益增长的信息化需求,我们需要从旺店通·企业奇门获取实时的采购入库信息(API接口:wdt.stockin.order.query.purchase),并将其准确地批量写入到金蝶云星辰V2系统(API接口:/jdy/v2/scm/pur_inbound)。考虑到这两个系统在数据格式和接口处理上的差异,我们面临如下几个技术挑战:

  1. 确保不漏单地抓取并传输旺店通·企业奇门的数据。
  2. 处理因数据量大带来的分页和限流问题,以保证大量数据快速写入。
  3. 在对接过程中,如何解决两者之间的数据格式差异,以及异常处理与错误重试机制。

二、主要技术实施步骤概述

我们采用了定时任务调度的方法,每隔固定时间段(如每小时)自动调用wdt.stockin.order.query.purchase API接口,从而保证新产生的库存订单能够被及时抓取。同时,通过分页查询来应对大规模数据请求,防止出现限流或超时情况。在具体实施过程中,我们重点关注以下几点:

  1. 调用接口细节

    遵循旺店通·企业奇门API文档,对每次请求进行参数校验与设置,确保能正确返回所需信息。例如,通过合理设定分页大小,可以有效避免频繁触发API速率限制。

  2. 数据转换与映射

    获得原始数据后,根据金蝶云星辰V2要求进行字段匹配和转换,完成JSON对象结构调整。这一步至关重要,因为两者采用完全不同的数据模型,需要准确映射以维持语义一致性。

  3. 错误重试及日志记录

    每次尝试写入操作均附加错误捕获机制。一旦发生失败,会通过预定义逻辑重新提交,同时保留完整过程日志,以便于追踪和审计。

三、结果展示与优化建议

经过多轮测试验证,该方案已成功上线运行,极大提高了跨系统协同工作的效率。此外,为进一步提升整体性能,可考虑引入更多优化策略,如动态调节查询频率、更精细化分片处理等。

下一部分 轻易云数据集成平台金蝶集成接口配置

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

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

接口调用配置

首先,我们需要配置接口调用的元数据。以下是该接口的主要配置参数:

  • API名称: wdt.stockin.order.query.purchase
  • 请求方法: POST
  • 分页设置: 每页50条记录
  • 过滤条件: 排除仓库编号为WH2024052601的数据
  • ID检查: 启用

请求参数详解

在实际调用过程中,我们需要传递多个请求参数,这些参数决定了我们能否成功获取所需的数据。

  1. 开始时间 (start_time)

    • 类型:datetime
    • 描述:增量获取数据的开始时间,格式为yyyy-MM-dd HH:mm:ss
    • 示例值:{{LAST_SYNC_TIME|datetime}}
  2. 结束时间 (end_time)

    • 类型:datetime
    • 描述:增量获取数据的结束时间,格式为yyyy-MM-dd HH:mm:ss
    • 示例值:{{CURRENT_TIME|datetime}}
  3. 状态 (status)

    • 类型:string
    • 描述:入库单状态,支持多个状态值,用逗号分隔
    • 示例值:60,80
  4. 上层单据编号 (src_order_no)

    • 类型:string
    • 描述:上层单据编号,默认为采购单号
  5. 仓库编号 (warehouse_no)

    • 类型:string
    • 描述:代表仓库所有属性的唯一编码,用于区分不同仓库的数据
  6. 分页大小 (page_size)

    • 类型:string
    • 描述:每页返回的数据条数,默认值为40,范围1~100
    • 示例值:{PAGINATION_PAGE_SIZE}
  7. 页号 (page_no)

    • 类型:string
    • 描述:分页页号,不传值默认从0页开始
    • 示例值:{PAGINATION_START_PAGE}

数据请求与清洗

在配置好元数据后,我们可以发起API请求。以下是一个典型的请求示例:

{
  "start_time": "2023-01-01 00:00:00",
  "end_time": "2023-01-31 23:59:59",
  "status": "60,80",
  "warehouse_no": "WH2023052602",
  "page_size": 50,
  "page_no": 0
}

此请求将返回指定时间范围内、状态为60或80、且仓库编号不为WH2024052601的采购入库单数据。

数据转换与写入

在成功获取到原始数据后,我们需要对其进行转换和清洗,以便后续处理和存储。以下是一些常见的数据清洗步骤:

  1. 字段映射与重命名 将原始字段映射到目标系统所需的字段。例如,将order_no映射为目标系统中的订单编号字段。

  2. 数据类型转换 确保所有字段的数据类型符合目标系统要求。例如,将字符串类型的日期字段转换为日期类型。

  3. 过滤无效数据 根据业务规则过滤掉无效或不完整的数据。例如,排除缺少关键字段(如订单编号或仓库编号)的记录。

  4. 去重处理 如果启用了ID检查,可以通过唯一标识符(如stockin_id)去重,确保不会重复处理相同的数据。

实时监控与调试

在整个过程中,通过轻易云平台提供的实时监控功能,可以随时查看数据流动和处理状态。这有助于及时发现并解决潜在问题,提高整体效率和透明度。

通过上述步骤,我们可以高效地调用旺店通·企业奇门接口获取采购入库单数据,并对其进行初步加工,为后续的数据处理和分析奠定坚实基础。 金蝶与SCM系统接口开发配置

数据集成与ETL转换:将数据写入金蝶云星辰V2API接口

在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,转为目标平台金蝶云星辰V2API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨如何使用轻易云数据集成平台配置元数据,实现采购入库V2.0方案的数据写入。

API接口与元数据配置

为了实现数据的无缝对接,我们需要了解目标平台API接口的具体要求和元数据配置。以下是金蝶云星辰V2API接口的相关元数据配置:

{
  "api": "/jdy/v2/scm/pur_inbound",
  "effect": "EXECUTE",
  "method": "POST",
  "number": "1",
  "id": "1",
  "name": "1",
  "idCheck": true,
  "request": [
    {"field": "bill_date", "label": "单据日期", "type": "string", "describe": "单据日期", "value": "{check_time}"},
    {"field": "bill_no", "label": "单据编码", "type": "string", "describe": "单据编码", "value": "{order_no}"},
    {"field": "transtype", "label": "业务类型", "type": "string", "describe": "数量", "value":"4"},
    {"field": "supplier_number", 
        "label":"供应商编码","type":"string","describe":"供应商编码","value":"{provider_no}"},
    {"field":"remark","label":"备注","type":"string","describe":"商品编码","value":"{purchase_no}"},
    {"field":"operation_key","label":"操作类型","type":"string","describe":"仓库编码","value":"audit"},
    {"field":"material_entity","label":"商品分录","type":"array","describe":"含税单价","value":"details_list",
        "children":[
            {"field":"material_number","label":"商品编码","type":"string","value":"{{details_list.goods_no}}"},
            {"field":"stock_number","label":"仓库编码","type":"string","value":"{{details_list.warehouse_no}}"},
            {"field":"qty","label":"数量","type":"string","value":"{{details_list.right_num}}"},
            {"field":"unit_id",
                "label" :   "单位",
                "type" :    "string",
                "value" :   "_mongoQuery d476a55d-acc7-3156-9c7f-b9f9dce596b5 findField=content.base_unit_id where={\"content.number\": {\"$eq\":\"{{details_list.goods_no}}\"}}"
            },
            {"field" :      "tax_price",
                "label" :   "含税单价",
                "type" :    "string",
                "value" :   "{{details_list.tax_price}}"
            },
            {"field" :      "cess",
                "label" :   "税率",
                "type" :    "string",
                "value" :   "_function  {{details_list.tax}} * (100)"
            },
            {"field" :      "is_free",
                "label" :   "是否赠品",
                "type" :    int,
                "value" : "_function case '{{details_list.tax_price}}' when '0.0000' then '1' else '0' end"
            }
        ]
    }
  ]
}

数据转换与写入

在进行ETL转换时,我们需要特别注意以下几个关键字段和其对应的处理逻辑:

  1. 单据日期(bill_date):该字段需要从源数据中的check_time字段提取,并直接映射到目标字段。

  2. 单据编码(bill_no):从源数据中的order_no字段提取,并映射到目标字段。

  3. 业务类型(transtype):固定值为“4”,无需动态映射。

  4. 供应商编码(supplier_number):从源数据中的provider_no字段提取,并映射到目标字段。

  5. 备注(remark):从源数据中的purchase_no字段提取,并映射到目标字段。

  6. 操作类型(operation_key):固定值为“audit”,无需动态映射。

  7. 商品分录(material_entity)

    • 商品编码(material_number):从子对象details_list.goods_no中提取。
    • 仓库编码(stock_number):从子对象details_list.warehouse_no中提取。
    • 数量(qty):从子对象details_list.right_num中提取。
    • 单位(unit_id):通过MongoDB查询获取,查询条件为子对象details_list.goods_no
    • 含税单价(tax_price):从子对象details_list.tax_price中提取。
    • 税率(cess):通过函数计算,将子对象details_list.tax乘以100。
    • 是否赠品(is_free):通过函数判断,如果子对象details_list.tax_price为“0.0000”,则值为1,否则为0。

实际应用案例

假设我们有如下源平台的数据:

{
  "check_time": "2023-10-01T00:00:00Z",
  "order_no": "#12345678",
  ...
}

我们需要将其转换并写入到金蝶云星辰V2API接口。首先,通过元数据配置,我们可以生成如下请求体:

{
  ...
}

通过上述步骤,我们能够确保源平台的数据准确、无误地转换并写入到目标平台,从而实现系统间的数据无缝对接。这不仅提高了业务流程的自动化程度,也确保了数据的一致性和完整性。 如何对接金蝶云星空API接口

更多系统对接方案