从源数据到金蝶云星空:深入分析数据ETL转换与API写入

  • 轻易云集成顾问-谢楷斌

MySQL数据集成到金蝶云星空案例分享:GLY生产领料单新增-原材料-好

在实现企业信息化过程中,数据的有效整合和实时同步是一个关键环节。本文将围绕"GLY生产领料单新增-原材料-好"这一具体场景,详述如何通过配置MySQL与金蝶云星空的数据接口,实现高效、可靠的数据集成。

数据获取与转换

首先,通过MySQL提供的select API从数据库中定时抓取生产领料单相关数据。为了确保无遗漏,我们设计了批量抓取机制,同时处理分页和限流问题,以保证在高并发环境下依然能稳定运行。此外,为解决两端之间的数据格式差异,我们自定义了数据转换逻辑,使得每条记录都能够准确映射至金蝶云星空所需字段格式。

集成过程可视化及监控

利用轻易云平台提供的可视化数据流设计工具,我们构建了一条完整且直观的数据管道。从MySQL抽取后的源数据会进行清洗、验证,并经过必要的业务逻辑处理后,再调用金蝶云星空batchSave API进行写入。同时,通过平台提供的集中监控系统,全程跟踪每个Data Pipeline节点的状态和性能,大大提升了调试效率和任务管理能力。在出现异常情况时,系统还具备错误重试机制,有效保障了数据一致性。

高吞吐量写入与API资产管理

对于大量生产领料单新增记录,在集成过程中,我们充分利用轻易云平台支持的大容量、高吞吐量特性,使得这些记录能快速地被批量写入到金蝶云星空中。基于统一视图和控制台,对API资产使用情况进行全面掌握,从而实现资源最大程度上的优化配置。

本案例展示的不仅是技术方案,更重要的是通过合理运用各种功能来提升整体集成质量及效率。在接下来的部分,将进一步深入探讨各步骤中的具体技术实现细节,包括数据抓取、转换、批量写入等操作方法,以及相应代码示例以供参考。 电商OMS与ERP系统接口开发配置

使用轻易云数据集成平台从MySQL接口select获取并加工数据

在数据集成过程中,调用源系统的接口是至关重要的一步。本文将详细介绍如何通过轻易云数据集成平台调用MySQL接口select获取并加工数据。我们将重点探讨元数据配置中的各个字段及其作用,并结合具体案例进行说明。

元数据配置解析

在本次集成方案中,我们需要从MySQL数据库中获取生产领料单的相关信息。以下是元数据配置的详细内容:

{
  "api": "select",
  "effect": "QUERY",
  "method": "POST",
  "number": "生产订单号",
  "id": "领料单号",
  "request": [
    {
      "field": "main_params",
      "label": "主参数",
      "type": "object",
      "describe": "对应其它请求字段内SQL语句的主参数,必须一一对应。",
      "value": "1",
      "children": [
        {
          "field": "limit",
          "label": "限制结果集返回的行数",
          "type": "int",
          "describe": "必要的参数!LIMIT 子句用于限制查询结果返回的行数。它指定了查询应该返回的最大行数。例如,LIMIT 10 表示查询结果只包含最多 10 行数据。这对于分页查询非常有用,可以在每次查询中返回一定数量的结果。",
          "value": "{PAGINATION_PAGE_SIZE}"
        },
        {
          "field": "offset",
          "label": "偏移量",
          "type": "int",
          "describe": "OFFSET 子句用于指定查询结果的起始位置或偏移量。它表示查询应该从结果集的哪一行开始返回数据。例如,OFFSET 20 表示查询应该从结果集的第 21 行开始返回数据。结合 LIMIT 子句使用时,OFFSET 指定了查询结果的起始行数。",
          "value": "{PAGINATION_START_ROW}"
        }
      ]
    }
  ],
  ...
}

主参数配置

主参数main_params包含两个子字段:limitoffset

  • limit:用于限制查询结果返回的行数,是分页查询的重要参数。
  • offset:用于指定查询结果的起始位置,与limit结合使用,实现分页功能。

这两个参数在实际请求中会被替换为具体值,以控制每次查询的数据范围。

主SQL语句

主SQL语句定义了具体的数据查询逻辑:

select b.dispatch_prefix as 生产订单号,
       CONCAT(c.business_no,'_',a.id) as 领料单号,
       date(a.update_time) as 日期,
       (select prod_part_no from mes_dispatch_record_process d where b.dispatch_prefix=d.dispatch and d.company_code='GDTY' LIMIT 1) as 成品料号,
       a.part_no as 物料编号,
       a.confirm_numb as 数量,
       a.picking_remark as 备注,
       a.create_name,
       a.uuid as sourceid
from wms_outstock_confirm_task_detail a
left join wms_outstock_confirm_main_task_detail b on a.connect_uuid=b.uuid
left join wms_outstock_confirm_main_task c on c.uuid=b.confirm_task_uuid
left join oms_order_bom f on b.bom_uuid=f.bom_uuid
where a.company_code='gdTY' and a.flag = '1' and a.is_success !='1'
and f.kingdee_FWL='0'
limit :limit offset :offset

该SQL语句通过多表连接和条件过滤,从多个表中提取所需的数据字段,并通过limitoffset实现分页。

参数绑定与执行

在执行上述SQL语句之前,需要将动态字段:limit:offset替换为具体值。这可以通过参数绑定的方法实现:

  1. 将动态字段:limit:offset替换为占位符(例如 ?)。
  2. 在执行查询之前,将请求参数与占位符进行绑定。

这种方式提高了SQL语句的可读性和维护性,并确保了动态字段与请求参数的一一对应关系,从而保证了查询的准确性和安全性。

实际应用案例

假设我们需要获取第2页,每页10条记录的数据,可以设置以下请求参数:

{
  main_params: {
    limit: 10,
    offset: 10 // 第二页,从第11条记录开始
  }
}

执行后的SQL语句如下:

select b.dispatch_prefix as 生产订单号,
       CONCAT(c.business_no,'_',a.id) as 领料单号,
       date(a.update_time) as 日期,
       (select prod_part_no from mes_dispatch_record_process d where b.dispatch_prefix=d.dispatch and d.company_code='GDTY' LIMIT 1) as 成品料号,
       a.part_no as 物料编号,
       a.confirm_numb as 数量,
       a.picking_remark as 备注,
       a.create_name,
       a.uuid as sourceid
from wms_outstock_confirm_task_detail a
left join wms_outstock_confirm_main_task_detail b on a.connect_uuid=b.uuid
left join wms_outstock_confirm_main_task c on c.uuid=b.confirm_task_uuid
left join oms_order_bom f on b.bom_uuid=f.bom_uuid
where a.company_code='gdTY' and a.flag = '1' and a.is_success !='1'
and f.kingdee_FWL='0'
limit ? offset ?

通过绑定参数,最终生成如下实际执行的SQL:

select b.dispatch_prefix as 生产订单号,
       CONCAT(c.business_no,'_',a.id) as 领料单号,
       date(a.update_time) as 日期,
       (select prod_part_no from mes_dispatch_record_process d where b.dispatch_prefix=d.dispatch and d.company_code='GDTY' LIMIT 1) as 成品料号,
       a.part_no as 物料编号,
       a.confirm_numb as 数量,
       a.picking_remark as 备注,
       a.create_name,
       a.uuid as sourceid
from wms_outstock_confirm_task_detail a
left join wms_outstock_confirm_main_task_detail b on a.connect_uuid=b.uuid
left join wms_outstock_confirm_main_task c on c.uuid=b.confirm_task_uuid
left join oms_order_bom f on b.bom_uuid=f.bom_uuid
where a.company_code='gdTY' and a.flag = '1' and a.is_success !='1'
and f.kingdee_FWL='0'
limit 10 offset 10

通过上述步骤,我们成功地调用了MySQL接口并获取了所需的数据。这种方法不仅简化了复杂的数据处理过程,还提高了系统集成效率。 金蝶与CRM系统接口开发配置

数据集成与ETL转换:将源平台数据写入金蝶云星空API接口

在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。以下是一个详细的技术案例,展示如何使用轻易云数据集成平台完成这一过程。

API接口配置

首先,配置API接口以便与金蝶云星空进行交互。我们使用的是batchSave接口,该接口支持批量保存操作,并且可以通过POST方法提交数据。

{
  "api": "batchSave",
  "effect": "EXECUTE",
  "method": "POST",
  "number": "FBillNo",
  "id": "FID",
  "name": "FBillNo",
  "idCheck": true,
  ...
}

请求参数构建

在构建请求参数时,需要将源平台的数据字段映射到金蝶云星空API所需的字段。以下是主要字段的映射和转换规则:

  • 单据编号 (FBillNo): 映射到源数据中的领料单号
  • 单据类型 (FBillType): 固定值SCLLD01_SYS
  • 日期 (FDate): 映射到源数据中的日期
  • 发料组织 (FStockOrgId): 固定值T04
  • 生产订单号 (FMOBillNO1): 映射到源数据中的生产订单号
  • 产品编码 (FMaterialID1): 映射到源数据中的成品料号
{
  "field": "FBillNo",
  "label": "单据编号",
  "type": "string",
  "value": "{{领料单号}}"
},
{
  "field": "FDate",
  "label": "日期",
  "type": "string",
  "value": "{{日期}}"
},
{
  ...
}

明细项配置

对于明细项(即物料清单),我们需要处理每一项物料的具体信息,包括物料编码、数量、仓库等。这些信息同样需要映射和转换:

  • 产品编码 (FParentMaterialId): 映射到源数据中的成品料号
  • 物料编码 (FMaterialId): 映射到明细项中的物料编号
  • 申请数量 (FAppQty)实发数量 (FActualQty): 映射并四舍五入处理明细项中的数量
{
  ...
},
{
  "field": "FEntity",
  "label": "明细",
  "type": "array",
  ...
}

子字段配置

在每个明细项中,还包含了多个子字段,这些子字段需要进一步映射和转换。例如:

  • 系统源单内码 (FEntrySrcInterId)系统源单分录内码 (FEntrySrcEnteryId): 使用查询函数从其他表中获取相应值
  • 更新库存标志 (FStockFlag): 固定值false
{
  ...
},
{
  ...
}

完整请求示例

以下是一个完整的请求示例,展示了如何将所有配置整合在一起,以便发送给金蝶云星空API:

{
    ...
    {
        {
            ...
        },
        {
            {
                ...
            }
        }
    }
}

通过上述步骤,我们实现了从源平台到金蝶云星空API接口的数据ETL转换,并成功将数据写入目标平台。这一过程充分利用了轻易云数据集成平台的强大功能,实现了高效、准确的数据集成。 电商OMS与WMS系统接口开发配置

更多系统对接方案