ETL转换技术案例:轻易云至金蝶云星空的实践

  • 轻易云集成顾问-叶威宏

旺店通·旗舰奇门数据集成到金蝶云星空的实施案例:20 赠品销售出库单集成方案-P-T(无关联)

在现代企业管理中,跨系统的数据集成是确保业务高效运转的关键环节。本文将探讨一个实际运行中的技术案例:如何通过轻易云数据集成平台,将旺店通·旗舰奇门的赠品销售出库单数据无遗漏、高效率地集成到金蝶云星空。本方案采用了“20 赠品销售出库单集成方案-P-T(无关联)”,重点解决了分页限流、格式差异化处理以及高效写入等技术挑战。

首先,我们讨论接口对接的问题。在此方案中,使用了旺店通·旗舰奇门的API wdt.wms.stockout.sales.querywithdetail 来获取详细的出库单信息。该接口能够提供丰富且全面的数据,但同时也伴随着分页和限流问题。这些问题通过灵活调度与实时监控得以有效解决,从而保证了访问频次和系统稳定性。此外,通过定时抓取机制,我们能够确保数据不会漏单,并能批量导入到目标系统——金蝶云星空。

接下来,对接接口方面,为保证数据写入过程的不间断和高效性,本方案选用了金蝶云星空提供的batchSave API。这个API支持批量数据存储,大幅提升了传输速度。同时,为应对两者之间的数据格式差异,在轻易云平台上进行了精细化映射配置,从而实现了数据的一致性转换。

为了进一步提高可靠性,本方案还设置了一系列异常处理与错误重试机制。当出现网络抖动或临时服务不可用等异常情况时,系统会自动触发重试逻辑,同时记录详细日志,以便进行后续分析。这种设计不仅提升了操作透明度,也使整个流程具备更强自恢复能力。

以上内容只是本案例的一部分核心技术点,后续将详细阐述具体实现步骤及更多技术挑战应对策略。希望通过这一实例分享,为从事类似工作的专业人士提供有益借鉴。

金蝶与外部系统打通接口

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

在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·旗舰奇门接口wdt.wms.stockout.sales.querywithdetail获取并加工数据。

接口调用配置

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

{
  "api": "wdt.wms.stockout.sales.querywithdetail",
  "method": "POST",
  "number": "order_no",
  "id": "stockout_id",
  "idCheck": true,
  "request": [
    {
      "field": "pager",
      "label": "分页参数",
      "type": "object",
      "children": [
        {"field": "page_size", "label": "分页大小", "type": "int", "value":"50", "parent":"pager"},
        {"field": "page_no", "label": "页号", "type": "int", "value":"1", "parent":"pager"}
      ]
    },
    {
      "field": "params",
      "label": "业务参数",
      "type": "object",
      "children": [
        {"field": "start_time", 
         "label": "开始时间", 
         "type":"string", 
         "value":"{{MINUTE_AGO_30|datetime}}", 
         "parent":"params"},
        {"field":"end_time", 
         ...

请求参数详解

  1. 分页参数

    • page_size: 每页返回的数据条数,默认设置为50。
    • page_no: 当前请求的页码,默认设置为1。
  2. 业务参数

    • start_timeend_time: 用于限定查询时间范围。start_time默认值为30分钟前,end_time默认值为当前时间。
    • status_type: 出库单状态,默认值为3(按照指定的status状态字段查询)。
    • status: 出库单状态详细,配合status_type=3使用,此处设置为110。
    • warehouse_no, stockout_no, shop_nos, src_order_no, need_sn, position: 这些字段用于进一步过滤和排序数据。

数据请求与清洗

在完成元数据配置后,我们可以发起API请求获取原始数据。此过程包括以下步骤:

  1. 发起HTTP POST请求: 使用配置好的元数据,通过HTTP POST方法向接口发送请求。

  2. 接收响应并解析: 接收接口返回的数据,并进行初步解析。确保返回的数据结构符合预期,例如检查是否包含必要的字段如order_nostockout_id

  3. 数据清洗: 对接收到的数据进行清洗,包括但不限于以下操作:

    • 去除重复记录:根据唯一标识符如stockout_id去重。
    • 数据格式转换:将日期字符串转换为标准日期格式,将数值字段转换为整数或浮点数等。
    • 数据校验:确保关键字段不为空,并符合业务逻辑要求。

数据转换与写入

在完成数据清洗后,下一步是将处理后的数据转换并写入目标系统。这一步通常包括以下操作:

  1. 字段映射: 将源系统中的字段映射到目标系统中的相应字段。例如,将源系统的order_no映射到目标系统的订单编号字段。

  2. 格式转换: 根据目标系统的要求,对数据格式进行必要的转换。例如,将日期格式从YYYY-MM-DD HH:MM:SS转换为YYYYMMDD。

  3. 写入目标系统: 使用轻易云平台提供的写入功能,将处理后的数据批量写入目标系统中。确保写入过程中的事务管理和错误处理,以保证数据一致性和完整性。

通过上述步骤,我们可以高效地调用旺店通·旗舰奇门接口获取并加工出库单相关的数据,为后续的数据分析和业务决策提供可靠的数据支持。在整个过程中,轻易云平台提供了全透明可视化的操作界面,使得每个环节都清晰可见,大大提升了业务透明度和效率。 如何开发用友BIP接口

轻易云数据集成平台ETL转换至金蝶云星空API接口技术案例

在轻易云数据集成平台中,将源平台的数据进行ETL转换并写入目标平台(金蝶云星空API接口)是一个关键步骤。本文将深入探讨如何通过配置元数据,实现这一过程。

配置元数据解析

元数据配置是实现ETL转换的核心。以下是我们针对赠品销售出库单集成方案的具体元数据配置:

{
    "api": "batchSave",
    "method": "POST",
    "idCheck": true,
    "operation": {
        "rowsKey": "array",
        "rows": 1,
        "method": "batchArraySave"
    },
    "request": [
        {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{order_no}"},
        {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"QTCKD01_SYS","mappingDirection":"positive"},
        {"field":"FStockOrgId","label":"库存组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"106"},
        {"field":"FPickOrgId","label":"领用组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"},
        {"field":"FStockDirect","label":"库存方向","type":"string","describe":"下拉列表"},
        {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{consign_time}"},
        {"field":"FCustId","label":"客户","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
        {"field":"FDeptId","label":"领料部门","type":"","describe":"","parser":{"name":"","params":""},"value":"","mapping":"","mappingDirection":""},
        {"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":"","mappingDirection":""},
        {"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":"","mappingDirection":""},
        {"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":"","mappingDirection":""},
        {"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":"",
            ...
    ],
    "otherRequest":[
        {"field": "FormId", "label": "业务对象表单Id", "type": "string", "describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder", "value": "STK_MisDelivery"},
        {"field": "IsAutoSubmitAndAudit", "label": "提交并审核", "type": "bool", "value": true},
        {"field": "", ...}
    ]
}

数据请求与清洗

在开始ETL转换之前,首先需要从源平台请求并清洗数据。假设我们已经获取了如下格式的源数据:

{
    "order_no": "SO123456",
    ...
}

数据转换与写入

  1. 字段映射与转换

    • FBillNo(单据编号):直接映射为order_no
    • FBillTypeID(单据类型):使用固定值QTCKD01_SYS,并通过ConvertObjectParser解析。
    • FStockOrgId(库存组织):固定值106,同样通过ConvertObjectParser解析。
    • FPickOrgId(领用组织):固定值100,通过解析器处理。
    • FDate(日期):映射为源数据中的consign_time
  2. 复杂字段处理

    • FEntity(明细信息)包含多个子字段,如物料编码、零售条形码、实发数量等。这些字段需要逐一映射并处理。例如,物料编码映射为源数据中的details_list.goods_no, 实发数量映射为 details_list.goods_count.
  3. 其他请求参数

    • 设置业务对象表单ID (FormId) 为 STK_MisDelivery.
    • 自动提交并审核 (IsAutoSubmitAndAudit) 设置为 true.

API 请求示例

最终生成的API请求如下:

{
    ...
}

通过上述配置和处理,我们能够将源平台的数据成功转换并写入到金蝶云星空API接口中。这个过程不仅确保了数据的一致性和准确性,还提高了系统间的数据交互效率。 如何对接用友BIP接口

更多系统对接方案