ETL转换与数据写入金蝶云星空的实现方法

  • 轻易云集成顾问-卢剑航

MySQL数据集成到金蝶云星空的技术实践:以GC-机加采购入库单工序外协-新为例

在当前的信息系统环境中,如何高效、可靠地实现不同系统之间的数据对接和集成,是许多企业面临的重要挑战。本文将重点介绍一个实际的案例——通过轻易云数据集成平台,将MySQL数据库中的数据无缝对接到金蝶云星空。本次分享的方案名称为“GC-机加采购入库单工序外协-新”。

方案概述

此方案主要涉及两个核心API接口操作:

  1. MySQL获取数据API:select
  2. 金蝶云星空写入数据API:batchSave

该项目旨在确保从MySQL读取的大量采购及入库单数据信息能够快速且准确地传输并存储至金蝶云星空。

技术实施要点

  1. 支持高吞吐量的数据写入能力
    为了应对大量数据需要快速写入的问题,我们利用轻易云平台提供的数据处理通道,通过优化批量传输机制,实现了高吞吐量的数据流动。这不仅提升了处理时效性,还确保每条重要业务记录都得到了及时同步。

  2. 定时可靠的抓取MySQL接口数据
    我们采用了定时任务调度来自动触发MySQL select API,从而保证源端数据库内新增或变更的数据能够按既定时间间隔被捕获,并进行后续处理。这一过程包括分页和限流控制,以避免因大数据量抓取而导致性能瓶颈。

  3. 自定义数据转换逻辑适配业务需求
    在两套系统之间,由于各自字段和结构可能存在差异,我们编写了一系列自定义转换脚本。通过这些脚本,来自MySQL的原始表格与字段信息,被精确映射并重组为符合金蝶云星空要求的数据格式,为顺利完成batchSave API调用打下基础。

  4. 集中监控与告警系统保障实时跟踪
    集中化监控功能使整个流程透明可视,并设有完善的告警机制。一旦出现异常情况,如网络不稳定或接口返回错误,会立刻触发告警通知相关人员进行干预,同时启动重试机制,以尽最大可能降低因偶然故障带来的影响。

  5. 高级日志记录与异常检测
    每一次任务执行都会详尽记录日志,不仅涵盖了成功操作,还特别标注出任何潜在问题。这样,在完成全生命周期管理过程中,可以随时回溯检查具体步骤,发现并解决潜藏的问题,对 如何开发钉钉API接口

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

在数据集成过程中,调用源系统的API接口是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台,通过调用MySQL接口select来获取并加工数据。

元数据配置解析

元数据配置是实现数据请求与清洗的关键。以下是一个典型的元数据配置示例:

{
  "api": "select",
  "effect": "QUERY",
  "method": "POST",
  "id": "采购入库单号",
  "request": [
    {
      "field": "main_params",
      "label": "主参数",
      "type": "object",
      "describe": "对应其它请求字段内SQL语句的主参数,必须一一对应。",
      "value": "select \nc.business_no as 采购单号,\na.part_no as 成品编号,\nc.ser_code as 条码,\na.confirm_numb as 数量,\ne.pur_price as 含税单价,\nc.mode_no as 计划跟踪号,\nCONCAT(f.confrim_no,'_',CAST(a.id AS CHAR)) as 领料单号,\ndate(a.update_time) as 日期,\nCONCAT(a.part_no,concat('_',c.current_process_code)) as 物料编号,\na.uuid as sourceid\nfrom wms_instock_confirm_task_detail a\nleft join wms_instock_purchase_task_detail c on c.out_type='2' AND MATTERIAL_TYPE='3'\nleft join wms_instock_confirm_main_task_detail b on b.connect_uuid=c.uuid\nleft join mbs_pur_record_detail e on c.connect_id=e.id\nleft join wms_instock_confirm_task f on f.uuid=a.confirm_detail_task_uuid\nwhere a.connect_uuid=b.uuid\nand a.company_code='TYZN'\nand a.create_time>'2023-09-01'\nand f.confrim_no='RKQR20230905026'\n limit :limit offset :offset",
      "children": [
        {
          "field": "limit",
          "label": "行数",
          "type": "int",
          "value": "{PAGINATION_PAGE_SIZE}"
        },
        {
          "field": "offset",
          "label": "偏移量",
          "type": "int",
          "value": "{PAGINATION_START_ROW}"
        }
      ]
    }
  ],
  ...
}

数据请求与清洗

  1. 定义主参数: 主参数包含了SQL查询语句以及动态字段,如:limit:offset。这些字段用于分页查询,以避免一次性获取大量数据导致性能问题。

  2. SQL语句解析: SQL语句中使用了多个表连接(join),以便从不同表中获取所需的数据字段。例如:

    select 
       c.business_no as 采购单号,
       a.part_no as 成品编号,
       c.ser_code as 条码,
       a.confirm_numb as 数量,
       e.pur_price as 含税单价,
       c.mode_no as 计划跟踪号,
       CONCAT(f.confrim_no,'_',CAST(a.id AS CHAR)) as 领料单号,
       date(a.update_time) as 日期,
       CONCAT(a.part_no,concat('_',c.current_process_code)) as 物料编号,
       a.uuid as sourceid
    from wms_instock_confirm_task_detail a
    left join wms_instock_purchase_task_detail c on c.out_type='2' AND MATTERIAL_TYPE='3'
    left join wms_instock_confirm_main_task_detail b on b.connect_uuid=c.uuid
    left join mbs_pur_record_detail e on c.connect_id=e.id
    left join wms_instock_confirm_task f on f.uuid=a.confirm_detail_task_uuid
    where a.connect_uuid=b.uuid
     and a.company_code='TYZN'
     and a.create_time>'2023-09-01'
     and f.confrim_no='RKQR20230905026'
    limit :limit offset :offset
  3. 动态字段绑定: 在执行查询之前,需要将动态字段:limit:offset替换为实际值。这可以通过参数绑定的方法实现,以确保查询的准确性和安全性。

  4. 执行查询: 使用POST方法发送请求,并传递必要的参数。轻易云平台会自动处理这些参数,并生成最终的SQL查询语句。

数据转换与写入

在获取到原始数据后,下一步是对数据进行转换和写入目标系统。这一步通常包括以下几个步骤:

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

  2. 字段映射: 将源系统中的字段映射到目标系统中的相应字段。例如,将源系统中的“采购单号”映射到目标系统中的“OrderID”。

  3. 写入目标系统: 使用轻易云平台提供的API接口,将转换后的数据写入目标系统。这一步通常涉及到事务处理,以确保数据的一致性和完整性。

通过上述步骤,我们可以高效地实现从MySQL数据库中获取并加工数据,为后续的数据处理和分析奠定基础。轻易云平台提供了全生命周期管理和全透明可视化操作界面,使得整个过程更加直观和高效。 用友与MES系统接口开发配置

使用轻易云数据集成平台将源数据转换并写入金蝶云星空API接口的技术案例

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

元数据配置解析

在本案例中,我们使用了以下元数据配置来实现从源平台到金蝶云星空的ETL转换:

{
  "api": "batchSave",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"RKD01_SYS"},
    {"field":"FBusinessType","label":"业务类型","type":"string","describe":"下拉列表","value":"CG"},
    {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{{采购入库单号}}"},
    {"field":"FStockOrgId","label":"收料组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"T04"},
    {"field":"FStockDeptId","label":"收料部门","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
    {"field":"FPurchaseOrgId","label":"采购组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"T04"},
    {"field":"FSupplierId","label":"供应商","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{{供应商代码}}"},
    {"field": "FDate", "label": "入库日期", "type": "string", "describe": "日期", "value": "{{日期}}"}
  ],
  ...
}

数据请求与清洗

首先,我们需要确保从源系统获取的数据是完整且准确的。通过轻易云的数据请求模块,可以从不同的数据源(如数据库、文件系统、API等)提取原始数据。提取后的数据可能包含冗余信息或格式不一致的问题,因此需要进行清洗和标准化处理。

例如,假设我们从ERP系统中提取了采购入库单的数据,需要对这些数据进行清洗,将其转换为金蝶云星空所要求的格式。在此过程中,字段映射和数据转换是关键步骤。

数据转换与写入

在完成数据清洗后,我们需要将其转换为目标平台所需的格式,并通过API接口写入金蝶云星空。在本案例中,我们使用了batchSave API接口,该接口支持批量保存操作。

  1. 字段映射与转换

    我们通过元数据配置中的parser字段定义了字段映射和转换规则。例如,FBillTypeID字段使用了ConvertObjectParser解析器,将源系统中的单据类型编码转换为金蝶云星空所需的编码格式:

    {
     "field": "FBillTypeID",
     "label": "单据类型",
     "type": "string",
     "describe": "单据类型",
     "parser": {
       "name": "ConvertObjectParser",
       "params": "FNumber"
     },
     "value": "RKD01_SYS"
    }
  2. 构建请求体

    根据元数据配置,我们构建了一个包含所有必要字段的请求体。每个字段都按照目标平台的要求进行了适当的转换和映射:

    {
     ...
     {
       "field": "FSupplierId",
       "label": "供应商",
       "type": "string",
       ...
       },
       ...
     }
  3. 发送请求

    构建好请求体后,通过HTTP POST方法将其发送到金蝶云星空的API接口:

    {
     ...
     {
       ...
       },
       ...
     }
  4. 处理响应

    最后,我们需要处理API响应,确保数据成功写入目标平台。如果出现错误,需要记录错误信息并采取相应措施进行修正。

小结

通过上述步骤,我们可以利用轻易云数据集成平台高效地完成从源系统到金蝶云星空的数据ETL转换和写入操作。这不仅简化了复杂的数据处理流程,还提高了业务运作效率。 打通用友BIP数据接口

更多系统对接方案