实现企业数据无缝对接:轻易云平台数据集成案例

  • 轻易云集成顾问-彭亮

MySQL数据集成到金蝶云星空案例分享:CRM-KHWL-客户物料对应表同步金蝶-修改

在企业日常运营中,数据的高效传递和无缝对接对于提升业务处理效率至关重要。本文将详细解析如何通过轻易云数据集成平台将MySQL中的客户物料对应表(CRM-KHWL)实时同步到金蝶云星空。

首先,本案例涉及两大核心系统:MySQL和金蝶云星空。使用轻易云数据集成工具,我们能够实现从MySQL数据库接口获取最新的数据,并通过API调用有效地批量写入金蝶云星空,为企业提供一致、可靠的数据视图。

技术方案概述

  1. 定时抓取MySQL接口数据
    通过设置合适的定时任务,实现对MySQL中客户物料对应表(KHWL)的定期读取操作。在此过程中,我们利用 select API 获取最新变更的数据,确保所有增删改操作均不被遗漏。该过程需考虑分页与限流问题,以防止因大规模查询引起系统性能瓶颈。

  2. 自定义数据转换逻辑
    在部分情况下,源数据库(MySQL)和目标系统(金蝶云星空)之间的数据格式可能存在差异。这就需要我们设计灵活且强大的自定义转换逻辑,将拉取的数据进行必要的清洗、归一化处理,使其符合目标系统要求。同时,在这一阶段,还可以加入基本的数据质量监控功能,对异常值或重复记录进行过滤和处理。

  3. 批量写入至金蝶云星空
    使用 batchSave API 将经过转换后的规范化数据批量推送至金蝶云星空。在这个环节,通过配置合理的批次大小以及并发控制机制,可以极大提升整体写入效率,并降低网络传输压力。此外,通过实时监控与告警系统,动态跟踪每次写入任务的状态,一旦发现错误则启动重试机制或人工干预措施,以保障最终的一致性与可靠性。

  4. 集中式监控与告警
    最后一项关键技术点是建立一个全面、实时的监控体系,不仅要观察整个流程中的各项指标如延迟、吞吐量,还需要及时感知任何潜在的问题,如网络异常、中间件故障等,从而快速响应并恢复服务正常运行状态。

以上几点为本项目执行过程中的主要技术路径及策略实施基础,下文将深入探讨每个步骤具体实现细节及相关代码示例。 如何开发金蝶云星空API接口

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

在轻易云数据集成平台中,生命周期的第一步是从源系统获取数据并进行初步加工。本文将详细探讨如何通过调用MySQL接口select来实现这一过程,并结合具体的元数据配置实例,展示实际操作步骤和技术细节。

MySQL接口调用配置

在本案例中,我们需要从CRM系统中的客户物料对应表中获取数据,并同步到金蝶系统。为此,我们使用了MySQL的select接口。以下是元数据配置的详细说明:

{
  "api": "select",
  "effect": "QUERY",
  "method": "POST",
  "number": "单据编号",
  "id": "主键",
  "request": [
    {
      "field": "main_params",
      "label": "main_params",
      "type": "object",
      "describe": "111",
      "value": "1",
      "children": [
        {
          "field": "limit",
          "label": "limit",
          "type": "string",
          "value": "1000"
        },
        {
          "field": "offset",
          "label": "offset",
          "type": "string"
        }
      ]
    }
  ],
  "otherRequest": [
    {
      "field": "main_sql",
      ...
    }
  ],
  ...
}

SQL查询语句解析

元数据配置中的main_sql字段包含了具体的SQL查询语句,用于从CRM系统中提取所需的数据。以下是该SQL语句的详细解析:

select  
  CONCAT('',a.data_id) as sourceid,
  CONCAT(c.org_code,'_',b.customer_code) as '单据编号',
  c.org_code as '销售组织',
  b.customer_code as '客户编号',
  JSON_UNQUOTE(JSON_EXTRACT(a.customer_name, '$[0].value')) as '客户名称',
  a.f_pinpai as '品牌',
  a.product_id as '产品ID',
  a.cust_material_number as '客户物料编号',
  a.cust_material_name as '客户物料名称',
  a.cust_specification_model as '客户规格型号',
  a.material_number as '物料编号',
  a.material_name as '物料名称',
  a.specification_model as '规格型号',
  a.product_line as '产品线'
from wk_wodtop_customer_material_ref a
left join wk_wodtop_customer b on a.customer_id=b.data_id
left join wk_wodtop_sales_organization c on c.data_id=(JSON_UNQUOTE(JSON_EXTRACT(a.sales_org, '$[0].key')))
where 
  a.cust_material_number<>'' 
  and a.material_number<>'' 
  and c.org_code<>''  
  and sync_2='1'
  and update_time>='{{LAST_SYNC_TIME|datetime}}'
limit :limit offset :offset

该查询语句主要完成以下几项任务:

  1. 字段拼接与转换:使用CONCAT函数拼接字段,确保生成唯一标识符(如sourceid单据编号)。
  2. JSON处理:利用JSON_UNQUOTEJSON_EXTRACT函数从JSON字段中提取具体值。
  3. 表连接:通过左连接(LEFT JOIN)将多个表的数据整合到一起。
  4. 条件过滤:根据特定条件过滤数据,如非空检查、同步状态检查以及更新时间过滤。
  5. 分页控制:使用:limit:offset参数实现分页查询,避免一次性读取过多数据。

请求参数配置

在请求参数部分,我们定义了分页控制的参数:

{
    ...
    {
        field: 'limit',
        label: 'limit',
        type: 'string',
        value: '1000'
    },
    {
        field: 'offset',
        label: 'offset',
        type: 'string'
    }
    ...
}

这些参数将用于控制每次查询返回的数据量,以提高查询效率并减少对数据库的压力。

数据加工与处理

在获取到原始数据后,轻易云平台会对其进行初步加工。这包括但不限于:

  • 数据类型转换:确保各字段的数据类型符合目标系统要求。
  • 数据清洗:去除无效或重复的数据记录。
  • 数据格式化:根据目标系统的需求调整数据格式。

通过上述步骤,我们可以确保从源系统获取的数据经过清洗和加工后,能够顺利写入目标系统,实现高效的数据同步。

综上所述,通过合理配置MySQL接口调用和SQL查询语句,并结合轻易云平台提供的可视化操作界面,我们能够高效地完成数据请求与清洗阶段,为后续的数据转换与写入打下坚实基础。 企业微信与ERP系统接口开发配置

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

在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,并将其转化为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。本文将详细探讨如何利用轻易云数据集成平台实现这一过程,重点关注API接口相关的技术细节。

元数据配置解析

在本案例中,我们使用以下元数据配置来实现数据转换和写入:

{
  "api": "batchSave",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {
      "field": "FID",
      "label": "FID",
      "type": "string",
      "value": "_findCollection find FID from 9c6a0715-febe-3a94-a928-6fbc7aae0aa1 where FBillNo={{单据编号}}"
    },
    {
      "field": "FBillNo",
      "label": "单据编号",
      "type": "string",
      "value": "{{单据编号}}"
    },
    {
      "field": "FSaleOrgId",
      "label": "FSaleOrgId",
      "type": "string",
      ...

数据请求与清洗

首先,我们需要从源系统中提取相关数据。通过_findCollection方法,我们可以根据单据编号从源系统中获取对应的FID和其他必要字段。这一步确保了我们能够准确定位并提取需要处理的数据。

{
  ...
  {
    "field": "FID",
    ...
    "value": "_findCollection find FID from 9c6a0715-febe-3a94-a928-6fbc7aae0aa1 where FBillNo={{单据编号}}"
  },
  ...
}

数据转换与解析

在提取到原始数据后,我们需要对其进行转换,使其符合金蝶云星空API接口的要求。这里我们利用了多个字段解析器(如ConvertObjectParser),将源系统中的字段值转换为目标系统可识别的格式。例如,将销售组织、客户编号等字段通过FNumber参数进行转换。

{
  ...
  {
    "field": "FSaleOrgId",
    ...
    "parser": {"name":"ConvertObjectParser","params":"FNumber"}
  },
  {
    ...
    {"name":"ConvertObjectParser","params":"FNumber"}
  },
  ...
}

此外,对于复杂的数据结构,如数组类型的字段,我们也进行了相应的处理。例如,FEntity字段包含多个子字段,这些子字段也需要逐一进行解析和转换。

{
  ...
  {
    ...
    {"field":"FEntity","label":"FEntity","type":"array","children":[
        {"field":"FEntryID",...},
        {"field":"FCustMatNo",...},
        {"field":"FMaterialId",...,"parser":{"name":"ConvertObjectParser","params":"FNumber"}},
        {"field":"FCustMatName",...},
        {"field":"FEffective",...},
        {"field":"F_FCustMatUom",...}
     ]}
   }
   ...
}

数据写入目标平台

完成数据转换后,我们使用配置中的batchSave API接口,将处理后的数据批量写入金蝶云星空。该接口支持POST方法,并且在请求体中包含了所有必要的字段和操作参数。

{
  ...
  {
    ...
    {"api":"batchSave","effect":"EXECUTE","method":"POST"},
    {"otherRequest":[{"field":"FormId",...},{"field":"Operation",...},{"field":"IsAutoSubmitAndAudit",...},{"field":"IsVerifyBaseDataField",...},{"field":"IsDeleteEntry",...}]}
   }
   ...
}

其中,关键参数包括业务对象表单Id(FormId)、执行操作(Operation)、是否提交并审核(IsAutoSubmitAndAudit)等。这些参数确保了我们能够精确控制数据写入过程,并根据业务需求进行相应调整。

操作方法与执行

最后,通过配置中的操作方法(operation),我们定义了具体的数据保存方式。在本案例中,采用了批量保存的方法(batchArraySave),以提高效率和性能。

{
   ...
   {"operation":{"rowsKey":"array","rows":1,"method":"batchArraySave"}}
   ...
}

综上所述,通过详细解析元数据配置并结合实际应用场景,我们成功实现了从源系统到金蝶云星空的数据ETL转换和写入过程。该方案不仅确保了数据的一致性和准确性,还极大提升了业务流程的自动化程度。 用友与外部系统接口集成开发

更多系统对接方案