使用轻易云实现MySQL数据向金蝶云星空的ETL处理

  • 轻易云集成顾问-曹润

MySQL数据集成到金蝶云星空的技术实现案例分享:GM广东天一模具费应收单新增-广东天一

在本案例中,我们致力于实现在MySQL数据库中的应收单数据自动化、批量地集成到金蝶云星空系统。为此,我们使用了轻易云提供的数据集成平台,通过其强大的高吞吐量数据写入能力和实时监控特性,确保大量数据能够快速、安全地完成从MySQL到金蝶云星空的传输与转化。

前期准备与环境搭建

首先,我们需要确定所需的数据接口并进行基础配置:

  1. 从MySQL获取数据的API接口 select 的使用;
  2. 向金蝶云星空写入数据的API接口 batchSave

通过可视化的数据流设计工具,可以直观地定义每个步骤。在这里特别详细介绍两项关键操作:

高效抓取与分页处理 为了保证我们从MySQL中抓取的大量记录不丢失且效率最优,需要设置定时任务来可靠地调用select API,从而实现对新增加记录的连续抓取。对于大规模分页查询,这种机制尤为必要,它不仅控制了服务器负载,还能减少网络带宽占用。

自定义转换逻辑及适配业务需求 由于MySQL和金蝶云星空的数据库结构有所不同,自定义的数据转换逻辑至关重要。这一步骤主要针对字段映射和格式变换,以确保最终存储在金蝶系统中的信息符合业务要求。例如,某些日期格式或数值类型可能需要在导入前进行调整,此处我们利用了轻易云平台内置的数据清洗功能,实现标准化处理并公平保障每条记录的一致性。

接下来的部分将具体说明各种API调用细节、异常处理策略以及监控手段,包括如何全面掌握Data Pipeline状态。通过这些方案,不仅优化了工作流,还提升了整体运维效率。 数据集成平台API接口配置

调用MySQL接口select获取并加工数据

在数据集成生命周期的第一步,我们需要从源系统MySQL中调用接口获取并加工数据。本文将详细探讨如何通过轻易云数据集成平台配置元数据,实现对MySQL数据库的查询操作,并对获取的数据进行初步加工。

元数据配置解析

首先,我们来看一下元数据配置的具体内容:

{
  "api": "select",
  "effect": "QUERY",
  "method": "POST",
  "id": "单据编号",
  "idCheck": true,
  "request": [
    {
      "field": "main_params",
      "label": "main_params",
      "type": "object",
      "describe": "主参数",
      "value": "1",
      "children": [
        {
          "field": "limit",
          "label": "limit",
          "type": "string",
          "value": "100"
        },
        {
          "field": "offset",
          "label": "offset",
          "type": "string"
        }
      ]
    }
  ],
  "otherRequest": [
    {
      "field": "main_sql",
      "label": "main_sql",
      "type": "string",
      "describe": "",
      "value": "
        select concat('AR_',a.id) as 单据编号,
               CONCAT('采购单号:',c.pur_no,' 图号:',a.pic_no) as 备注,
               curdate() as 日期,
               a.pic_no as 图号,
               a.part_no as 物料编号,
               a.bom_no as 计划跟踪号,
               DATE_ADD(CURDATE(), INTERVAL 30 DAY) as 到期日,
               a.id as sourceid,
               a.purchase_num as 数量,
               a.pur_price as 单价
        from mbs_pur_record_detail a 
        left join mbs_pur_record_detail b on a.pur_record_uuid=b.pur_record_uuid and a.part_no=b.part_no
        left join mbs_pur_record c on a.pur_record_uuid=c.pur_record_uuid
        where b.send_status<>'1' and b.supplier_uuid='804842' and b.if_mold='Y' and a.outsourced_way='开模' and a.is_success='0'
        limit :limit offset :offset"
    }
  ],
  ...
}

配置解析与实现

  1. API调用类型与方法

    • api字段指定了调用类型为select,表示我们将执行一个查询操作。
    • method字段为POST,表示我们将使用POST方法来发送请求。
  2. 主参数配置

    • request字段定义了请求参数,其中包含一个名为main_params的对象,该对象包含两个子参数:limitoffset
    • limit用于限制返回记录的数量,默认值为100。
    • offset用于指定查询结果的偏移量,便于分页处理。
  3. SQL查询语句

    • otherRequest字段中定义了实际执行的SQL查询语句,通过占位符:limit:offset实现动态参数绑定。
    • 查询语句从多个表中关联查询,并对结果进行了一定的格式化处理,例如使用concat函数生成自定义的单据编号和备注信息。

实际应用案例

假设我们需要从MySQL数据库中获取广东天一模具费应收单新增的数据,并进行初步加工。以下是具体步骤:

  1. 配置请求参数: 根据业务需求设置请求参数,例如:

    {
     main_params: {
       limit: '50',
       offset: '0'
     }
    }
  2. 执行SQL查询: 使用配置好的SQL语句,通过POST方法发送请求到MySQL数据库。系统会自动替换占位符:limit:offset,生成最终的SQL语句:

    select concat('AR_',a.id) as 单据编号,
          CONCAT('采购单号:',c.pur_no,' 图号:',a.pic_no) as 备注,
          curdate() as 日期,
          a.pic_no as 图号,
          a.part_no as 物料编号,
          a.bom_no as 计划跟踪号,
          DATE_ADD(CURDATE(), INTERVAL 30 DAY) as 到期日,
          a.id as sourceid,
          a.purchase_num as 数量,
          a.pur_price as 单价
    from mbs_pur_record_detail a 
    left join mbs_pur_record_detail b on a.pur_record_uuid=b.pur_record_uuid and a.part_no=b.part_no
    left join mbs_pur_record c on a.pur_record_uuid=c.pur_record_uuid
    where b.send_status<>'1' and b.supplier_uuid='804842' and b.if_mold='Y' and a.outsourced_way='开模' and a.is_success='0'
    limit 50 offset 0;
  3. 处理查询结果: 查询结果返回后,可以根据业务需求进行进一步处理,例如将结果写入目标系统或进行数据清洗等。

通过上述步骤,我们成功实现了从MySQL数据库中调用接口获取并加工数据,为后续的数据转换与写入打下基础。这种全透明可视化的操作方式,不仅提高了业务透明度,还极大提升了效率。 如何对接金蝶云星空API接口

使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口

在数据集成的生命周期中,将源平台的数据转换为目标平台所需格式是关键步骤。本文将重点探讨如何使用轻易云数据集成平台将源数据进行ETL(提取、转换、加载)处理,并通过金蝶云星空API接口写入目标平台。

配置元数据与API接口

在进行数据转换和写入之前,首先需要配置元数据。以下是我们在轻易云平台上配置的元数据示例:

{
  "api": "batchSave",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{{单据编号}}"},
    {"field":"FDATE","label":"业务日期","type":"string","describe":"业务日期","value":"{{日期}}"},
    {"field":"FCURRENCYID","label":"币别","type":"string","describe":"币别","value":"PRE001","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
    {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","value":"YSD02_SYS","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
    {"field":"FALLAMOUNTFOR","label":"价税合计","type":"string","describe":"价税合计","value":"{{单价}}"},
    {"field":"FENDDATE_H","label":"到期日","type":"string","describe":"到期日","value":"{{到期日}}"},
    {"field":"FOWNERTYPE","label":"货主类型","type":"string","describe":"货主类型","value":"BD_OwnerOrg"},
    {"field":"FCancelStatus","label":"作废状态","type":"string","describe":"作废状态","value":"A"},
    {"field":"FCUSTOMERID","label":"客户","type":"string","describe":"","value":"","parser":{"name":"","params":""}},
    {"field":"","label":"","type":"","describe":"","value":"","parser":{"name":"","params":""}},
    {"field":"","label":"","type":"","describe":"","value":"","parser":{"name":"","params":""}},
    {"field":"","label":"","type":"","describe":"","value":"","parser":{"name":"","params":""}},
    {"field":"","label":"","type":"","describe":"","value":""},
    {"field":"",

数据提取与清洗

在ETL流程中,第一步是从源系统中提取原始数据,并进行必要的清洗和预处理。通过轻易云的数据集成平台,我们可以利用其全透明可视化操作界面,轻松实现对源数据的提取和清洗。例如,我们可以从ERP系统中提取应收单据的数据,并去除重复记录或无效数据。

数据转换

接下来,我们需要将清洗后的数据转换为金蝶云星空API能够接受的格式。这一步骤至关重要,因为不同系统之间的数据格式和结构可能存在较大差异。根据上述元数据配置,我们需要将字段映射到金蝶云星空API所需的字段。例如:

  • FBillNo 对应源数据中的 单据编号
  • FDATE 对应源数据中的 业务日期
  • FCURRENCYID 固定值为 PRE001
  • FBillTypeID 固定值为 YSD02_SYS
  • FALLAMOUNTFOR 对应源数据中的 价税合计

此外,还需要使用特定的解析器(如 ConvertObjectParser)来处理一些复杂字段,如币别、单据类型等。

数据加载与写入

完成数据转换后,我们使用轻易云平台提供的批量保存功能,通过POST请求将转换后的数据写入金蝶云星空API接口。以下是一个简化的请求示例:

{
  "FormId": "AR_receivable",
  "Operation": "BatchSave",
  "IsAutoSubmitAndAudit": true,
  "IsVerifyBaseDataField": false,
  "Model": {
    "FBillNo": "{{单据编号}}",
    "FDATE": "{{业务日期}}",
    ...
  }
}

通过这种方式,我们可以确保所有必要的数据字段都按照金蝶云星空API要求的格式进行传递,并且实现了自动提交和审核功能,大大提高了工作效率。

实践案例

假设我们有一条来自广东天一模具费应收单新增的数据记录,其主要字段如下:

  • 单据编号:GM20231001
  • 日期:2023-10-01
  • 单价:1000.00
  • 到期日:2023-12-31
  • 客户:T01
  • 数量:10
  • 备注:测试备注

根据上述配置和处理步骤,我们最终生成并发送给金蝶云星空API接口的数据如下:

{
  "FormId": "AR_receivable",
  "Operation": "BatchSave",
  "IsAutoSubmitAndAudit": true,
  "IsVerifyBaseDataField": false,
  "Model": {
    "FBillNo": "GM20231001",
    "FDATE": "2023-10-01",
    ...
  }
}

通过这种方式,我们成功地将源系统的数据无缝地集成到目标系统,实现了高效的数据流转和业务处理。

总结而言,利用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口,不仅简化了复杂的数据处理流程,还提升了整体业务效率。 系统集成平台API接口配置

更多系统对接方案