从吉客云到MySQL:完整的ETL数据集成流程解析

  • 轻易云集成顾问-曹润

测试-查询货品信息-dange-03:吉客云数据集成到MySQL的技术案例分享

在实际项目中,我们常常需要将不同系统的数据进行对接和集成,以打破信息孤岛,实现数据的高效流动与共享。这次的技术案例针对一个具体需求:从吉客云通过API接口erp.storage.goodslist获取货品信息,并批量地、高效地写入到MySQL数据库。

本次方案命名为“测试-查询货品信息-dange-03”,整个流程利用了轻易云平台卓越的数据处理能力。该平台不仅支持可视化操作,确保每个步骤都一目了然,还提供高吞吐量的数据写入能力,使得大规模数据能快速、安全地实现跨系统迁移。在这个过程中,我们特别关注以下几个关键点:

  1. 定时可靠抓取吉客云接口数据: 使用轻易云设置定时任务,从吉客云调用API erp.storage.goodslist 定期提取最新货品信息。通过设立合适的频率确保数据实时性,同时避免过于频繁调度引发限流问题。

  2. 批量集成至MySQL: 为了应对大容量数据,可以采用批量处理机制,提高效率并减轻单次操作负担。这里涉及如何将获取的数据转换为符合 MySQL 写入格式,以及确保完整性、准确性的同时达成快速写入。

  3. 分页及限流管理: 吉客云 API 有分页和调用次数限制,因此我们实现了自动分页逻辑并设置合理间隔,以稳定且无缝地完成所有记录读取过程。同时,为防止超出速率限制导致请求失败,我们加入重试机制保障任务成功执行。

  4. 自定义数据转换逻辑: 在实际应用场景中,往往需要依据业务需求进行特定格式转换。例如,不同字段类型或结构要求我们灵活运用可视化工具来自定义映射关系,使得集成过程更贴近业务目标。

  5. 异常检测与错误重试机制: 数据传输过程中难免会发生意外,例如网络波动或服务临时不可用。因此,通过内置监控与告警系统,对异常状况进行即时探测,一旦发现问题即触发错误重试,保证整体流程鲁棒性(健壮性)。

  6. 实时监控与日志记录: 我们还利用轻易云集中监控功能,对每一步操作状态、性能指标等进行实时跟踪,并生成详尽日志以便后续审查和优化。这不仅提升透明度,也有助于迅速定位和解决潜在问题。

以上这些要点构建了一 钉钉与MES系统接口开发配置

调用吉客云接口erp.storage.goodslist获取并加工数据

在数据集成的生命周期中,调用源系统接口是关键的第一步。本文将深入探讨如何通过轻易云数据集成平台调用吉客云的erp.storage.goodslist接口,并对返回的数据进行初步加工。

接口概述

吉客云提供的erp.storage.goodslist接口用于查询货品信息。该接口采用POST请求方式,支持多种查询条件,包括货品编码、条码、货品名称、规格等。以下是该接口的元数据配置:

{
  "api": "erp.storage.goodslist",
  "effect": "QUERY",
  "method": "POST",
  "number": "goodsNo",
  "id": "goodsId",
  "request": [
    {"field": "pageIndex", "label": "页码", "type": "string", "describe": "111"},
    {"field": "pageSize", "label": "页数", "type": "string", "describe": "111", "value": "100"},
    {"field": "goodsNo", "label": "货品编码", "type": "string", "describe": "111"},
    {"field": "skuBarcode", "label": "条码", "type": "string", "describe": "111"},
    {"field": "goodsName", "label": "货品名称", "type": "string", 
![轻易云数据集成平台金蝶集成接口配置](https://pic.qeasy.cloud/S28.png~tplv-syqr462i7n-qeasy.image)
### 数据集成平台生命周期中的ETL转换:将源平台数据写入MySQL API接口

在数据集成过程中,ETL(Extract, Transform, Load)是一个关键步骤。本文将详细探讨如何利用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,转为目标平台 MySQL API 接口所能够接收的格式,并最终写入目标平台。

#### 元数据配置解析

元数据配置是整个ETL过程的核心部分,它定义了如何从源系统提取数据、如何转换数据以及如何将其加载到目标系统。以下是一个典型的元数据配置示例:

```json
{
  "api": "execute",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {
      "field": "main_params",
      "label": "主参数",
      "type": "object",
      "describe": "111",
      "children": [
        {"field": "goods_code", "label": "货品编号", "type": "string", "value": "{goodsNo}"},
        {"field": "goods_name", "label": "货品名称", "type": "string", "value": "{goodsName}"},
        {"field": "category_name", "label": "分类名称", "type": "string", "value": "{cateName}"},
        {"field": "second_category", "label": "二级分类", "type": "string", "value":"{goodsField5}"},
        {"field":"third_category","label":"三级分类","type":"string","value":"{goodsField6}"},
        {"field":"brand_name","label":"品牌名称","type":"string","value":"{brandName}"},
        {"field":"default_vend_name","label":"默认供应商","type":"string","value":"{defaultVendName}"},
        {"field":"warehouse_name","label":"默认仓库","type":"string","value":"{warehouseName}"},
        {"field":"sku_name","label":"规格","type":"string","value":"{skuName}"},
        {"field":"sku_bar_code","label":"条码","type":"string","value":"{skuBarcode}"},
        {"field":"goods_attr","label":"货品属性","type":"string","value":"{goodsAttr}"},
        {"field":"retail_price","label":"固定成本价","type":"string","value":"{retailPrice}"},
        {"field":"underwriting","label":"包销属性","type":"string","value":"{goodsField7}"},
        {"field":"first_vend_name","label":"上游一级供应商","type":"string","value":" { goodsField8 }" },
        {“ field”:“ second_vend_name”,“ label”:“上游二级供应商”,“ type”:“ string”,“ value”:“ { goodsField9 }”},
        {“ field”:“ third_vend_name”,“ label”:“上游三级供应商”,“ type”:“ string”,“ value”:“ { goodsField10 }”},
        {“ field”:“ color”,“ label”:“颜色”,“ type”:“ string”,“ value”:“ { colorName }”},
        {“ field”:“ volume”,“ label”:“体积(cm³)”,“ type”:“ string”,“ value”:“ { volume }”},
        {“ field”:“ size”,“ label”:“大小”,“ type”:“ string”,“ value”:“ { sizeName }”,
         “ field ” : “ length ” , “ label ” : “ 长度 ” , “ type ” : “ string ” , “ value ” : “ { skuLength } ” },
         “ field ” : “ width ” , “ label ” : “ 宽度 ” , “ type ” : “ string ” , “ value ” : “ { skuWidth } ” },
         “ field ” : “ height ” , “ label ” : “ 高度 ” , “ type ” : “ string ” , “ value ” :“ { skuHeight } ”
         ... // 省略部分字段
      ]
    }
  ],
  ...
}

数据请求与清洗

在这个阶段,我们需要从源系统中提取原始数据,并进行必要的数据清洗和预处理。例如,将时间戳转换为标准日期格式,去除无效字符等。这些操作可以通过自定义函数或内置函数来实现。

例如,将时间戳 gmtCreate 转换为标准日期格式:

{"field": "create_time", 
"label": 
"创建时间",
"type":
"datetime",
"value":
"_function FROM_UNIXTIME(  ( {gmtCreate} \/ 1000 ) , '%Y-%m-%d %H:%i:%s' )"
}

数据转换与写入

在完成数据清洗后,我们需要将其转换为目标系统所能接受的格式,并通过API接口写入目标系统。以下是一个典型的SQL语句,用于将清洗后的数据插入到MySQL数据库中:

REPLACE INTO `lehua`.`sc_goods_main`
(`goods_code`, `goods_name`, `category_name`, `second_category`, `third_category`, `brand_name`,
`default_vend_name`, `warehouse_name`, `sku_name`, `sku_bar_code`, `goods_attr`, `retail_price`,
`underwriting`, `first_vend_name`, `second_vend_name`, `third_vend_name`, `color`, `volume`,
`size`, `length`, `width`, `height`, `weight`, `unit_name`,
`is_delete`,`is_blockup`,`is_package_good`,`sku_is_blockup`,`create_time`,`create_by`,
`update_time`,`update_by`,`owner_type`,`owner_name`,`flag_data`,`goods_alias`)
VALUES
(<{goods_code: }>, <{goods_name: }>, <{category_name: }>, <{second_category: }>, <{third_category: }>,
<{brand_name: }>, <{default_vend_name: }>, <{warehouse_name: }>, <{sku_name: }>, <{sku_bar_code: }>
<{goods_attr: }>, <{retail_price: }>, <{underwriting: }> ,<{first_vend_name: }> ,<{second_vend_name: }>
,<third_vend_ name : },<color : },<volume : },<size : },<length : },<width : },<height : },<weight : },
<unit_ name : },<is_delete : },<is_blockup : },<is_package_good : },<sku_is_blockup : },<create_time :
},<create_by : },<update_time : },<update_by : },<owner_type : },<owner_ name : },<flag_data :
},< goods_alias:>);

API接口调用

在完成SQL语句的构建后,通过HTTP POST方法调用API接口,将构建好的SQL语句发送到目标MySQL数据库。

{
  api:"execute",
  effect:"EXECUTE",
  method:"POST"
}

总结

通过上述步骤,我们可以实现从源系统到目标MySQL数据库的数据无缝对接。在这个过程中,元数据配置起到了至关重要的作用,它不仅定义了如何提取和清洗数据,还详细描述了如何将其转换并写入目标系统。通过合理配置和使用API接口,我们可以高效地完成复杂的数据集成任务。 打通用友BIP数据接口

更多系统对接方案