从吉客云到BI拉伯塔的数据ETL转换与写入

  • 轻易云集成顾问-潘裕

吉客云数据集成到MySQL:店铺信息查询案例

在处理吉客云与MySQL的数据对接过程中,我们遇到了诸多技术挑战和需求。本文将聚焦于具体的系统对接案例,探讨如何从吉客云平台实时抓取店铺信息并批量写入MySQL数据库,以实现BI拉伯塔的店铺信息表同步更新。

为此,我们采用了轻易云数据集成平台,通过其高吞吐量的数据写入能力和全面的监控告警系统,实现了大规模数据快速流转,同时确保每笔记录都不遗漏。这一过程涉及以下关键步骤:

  1. 定时抓取与分页处理:利用吉客云提供的erp.sales.get API接口,在定时任务中可靠地获取最新的店铺销售信息。由于该API接口具有分页机制,并且存在限流策略,我们必须设计合理的请求节奏以及分批次处理逻辑,以避免因超出访问频率限制而导致的数据丢失或延迟。

  2. 自定义数据转换与格式映射:在获取到原始JSON格式的数据后,将其转换为符合MySQL数据库表结构要求的信息,这一步通过编写自定义脚本完成。在这个过程中,不仅要考虑字段名称及类型的一致性,还需关注可能出现的数据异常,并及时进行修复和记录。

  3. 高效数据写入至MySQL:借助轻易云的平台特性,调用execute API接口以批量方式将转换后的数据导入目标库中的指定表格。我们制定了一套优化策略,包括事务控制、索引优化等方法,来提升插入性能,从而满足业务需要的时效性指标。

  4. 实时监控与日志管理:整个流程中,通过集中化监控系统持续跟踪每个任务状态,并设置告警机制。当出现任何异常情况,例如网络波动或API响应错误时,系统会即时通知相关人员,触发预设重试机制加以恢复。同时详细记录运行日志,为问题排查提供依据。

通过上述措施,不仅成功实现了吉客云与MySQL之间稳定、高效 的 数据对接,还保障了业务操作透明度和管理便利性。在实际部署中,这些技术手段极大提升了我们的工作效率,也为类似项目积累了宝贵经验。 金蝶与CRM系统接口开发配置

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

在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用吉客云接口erp.sales.get,获取并加工数据。

接口配置与请求参数

首先,我们需要了解元数据配置中的各个字段及其作用。以下是我们使用的元数据配置:

{
  "api": "erp.sales.get",
  "effect": "QUERY",
  "method": "POST",
  "number": "channelCode",
  "id": "channelId",
  "request": [
    {"field": "pageIndex", "label": "pageIndex", "type": "string", "describe": "111"},
    {"field": "pageSize", "label": "pageSize", "type": "string", "describe": "111", "value":"50"},
    {"field": "gmtModifiedStart", "label": "起始修改时间", "type": "string", 
        "value":"{{LAST_SYNC_TIME|datetime}}"},
    {"field": "gmtModifiedEnd", "label":"结束修改时间","type":"string",
        "value":"{{CURRENT_TIME|datetime}}"}
  ],
  "autoFillResponse": true
}
  • api: 指定了要调用的接口名称,这里是erp.sales.get
  • effect: 定义了操作类型,这里是查询(QUERY)。
  • method: 请求方法,这里使用的是POST。
  • numberid: 分别对应渠道代码和渠道ID,用于标识不同的数据源。
  • request: 包含了请求参数的详细信息。

请求参数详解

  1. pageIndex: 页码索引,用于分页请求。
  2. pageSize: 每页返回的数据条数,这里固定为50条。
  3. gmtModifiedStart: 起始修改时间,动态取值为上次同步时间({{LAST_SYNC_TIME|datetime}})。
  4. gmtModifiedEnd: 结束修改时间,动态取值为当前时间({{CURRENT_TIME|datetime}})。

这些参数确保我们能够按需分页获取在特定时间范围内修改的数据。

数据请求与清洗

在轻易云平台上,我们可以通过配置上述元数据来自动生成API请求,并处理返回的数据。以下是具体步骤:

  1. 配置API请求:

    • 在轻易云平台上创建一个新的任务,选择数据源为吉客云。
    • 配置API请求参数,根据元数据中的定义填写相应字段。
  2. 发送请求并获取响应:

    • 平台会根据配置自动生成POST请求,并发送到吉客云的erp.sales.get接口。
    • 响应结果会自动填充到指定的数据结构中,方便后续处理。
  3. 数据清洗与转换:

    • 获取到原始数据后,需要进行清洗和转换。比如,可以过滤掉无效记录、标准化日期格式等。
    • 使用轻易云提供的可视化工具,可以方便地对数据进行各种操作,如字段映射、类型转换等。

数据写入目标系统

经过清洗和转换后的数据,需要写入到目标系统(如BI拉伯塔的店铺信息表)。这一步通常包括以下操作:

  1. 字段映射:

    • 将吉客云返回的数据字段映射到目标系统的字段。例如,将吉客云的销售记录映射到BI拉伯塔的店铺信息表中相应的字段。
  2. 批量写入:

    • 使用轻易云平台提供的批量写入功能,可以高效地将处理后的数据写入目标系统。
  3. 错误处理与重试机制:

    • 配置错误处理机制,如遇到网络问题或目标系统不可用时,可以自动重试或记录错误日志,以便后续排查和修复。

通过上述步骤,我们实现了从吉客云获取销售数据,并将其加工后写入BI拉伯塔店铺信息表的全过程。这不仅提高了数据处理效率,也确保了数据的一致性和准确性。 打通用友BIP数据接口

数据集成生命周期中的ETL转换:从吉客云到BI拉伯塔

在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL转换,使其符合目标平台MySQL API接口所能接收的格式,并最终写入目标平台。以下是具体的技术实现步骤。

1. 数据请求与清洗

首先,从吉客云获取店铺信息数据。这个过程涉及到对原始数据的请求和清洗,确保数据质量和一致性。假设我们已经完成了这一步,接下来将重点放在如何将这些数据转换并写入BI拉伯塔的MySQL数据库。

2. 数据转换与写入

为了将吉客云的数据转化为BI拉伯塔所需的格式,我们需要利用元数据配置中的字段映射关系。以下是具体的字段映射和SQL插入语句:

{
  "api": "execute",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {
      "field": "main_params",
      "label": "main_params",
      "type": "object",
      "describe": "111",
      "children": [
        {"field": "channelId", "label": "销售渠道id", "type": "string", "value": "{channelId}"},
        {"field": "channelCode", "label": "渠道编码", "type": "string", "value": "{channelCode}"},
        {"field": "channelName", "label": "销售渠道名称", "type": "string", "value": "{channelName}"},
        {"field": "channelType", "label":"渠道类型","type":"string","value":"{channelType}"},
        {"field":"onlinePlatTypeCode","label":"店铺平台编码","type":"string","value":"{onlinePlatTypeCode}"},
        {"field":"onlinePlatTypeName","label":"店铺平台名称","type":"string","value":"{onlinePlatTypeName}"},
        {"field":"channelDepartId","label":"负责部门id","type":"string","value":"{channelDepartId}"},
        {"field":"channelDepartName","label":"负责部门名称","type":"string","value":"{channelDepartName}"},
        {"field":"linkMan","label":"联系人","type":"string","value":"{linkMan}"},
        {"field":"linkTel","label":"联系电话","type":"string","value":"{linkTel}"},
        {"field":"officeAddress","label":"办公地址","type":"string","value":"{officeAddress}"},
        {"field":"groupId","label":"销售商品分组id","type":"string","value":"{groupId}"},
        {"field":"email","label":"邮箱","type":"string","value":"{email}"},
        {"field":"companyId","label":"公司id","type":"string","value":"{companyId}"},
        {"field" :"postcode" ,"label" :"邮编" ,"type" :"string" ,"value" :"{postcode}" },
        {"field" :"companyName" ,"label" :"公司名称" ,"type" :"string" ,"value" :"{companyName}" },
        {"field" :"countryId" ,"label" :"国家id" ,"type" :"string" ,"value" :"{countryId}" },
        {"field" :"countryName" ,"label" :"国家名称" ,"type" :"string" ,"value" :"{countryName}" },
        {"field" :"provinceId ","label ":"省id ","type ":"string ","value ":"{provinceId}" },
        {"field ":"provinceName ","label ":"省名称 ","type ":"string ","value ":"{provinceName}" },
        {"field ":"cityId ","label ":"市id ","type ":"string ","value ":"{cityId}" },
        {"field ":"cityName ","label ":"市名称 ","type ":"string ","value ":"{cityName}" },
        {"field ":"townName ","label ":"镇/区名称 ","type ":"string ","value ":"{townName}" },
        {"field ":"streetName ","label ":"街道名称 ","type ":"string ","value ":"{streetName}" },
        {"field ":“townId”," label ":“区id”," type ":“字符串”," value ":“ {townId }”},
         {“ field ”:“ streetId ”,“ label ”:“街道id”,“ type ”:“ string”,“ value ”:“ {streetId }”},
         {“ field ”:“ memo ”,“ label ”:“备注”,“ type ”:“ string”,“ value ”:“ {memo }”},
         {“ field ”:“ warehouseCode ”,“ label ”:“默认仓库编码”,“ type ”:“ string”,“ value ”:“ {warehouseCode }”},
         {“ field ”:“ warehouseName ”,“ label ”:“默认仓库名称”,“ type ”:“ string”,“ value ”:“ {warehouseName }”},
         {“ field ”:“ chargeType ”,“ label ”:“结算方式”,“ type ”: “字符串”, “值”: “ {chargeType }”},
         {“ field”: “ cateId”, “ label”: “ channel classification id”, “ type”: “ string”, “ value”: “ {cateId }”},
         {“ field”: “ cateName”, “ label”: “ channel classification”, “ type”: “ string”, “ value”: “ {cateName }”}
      ]
    }
  ],
  otherRequest: [
    {
      field: 'main_sql',
      label: 'main_sql',
      type: 'string',
      describe: '111',
      value: `REPLACE INTO erp_sales_get (channelId, channelCode, channelName, channelType, onlinePlatTypeCode, onlinePlatTypeName, channelDepartId, channelDepartName, linkMan, linkTel, officeAddress, groupId, email, companyId, postcode, companyName, countryId, countryName, provinceId, provinceName, cityId, cityName, townName, streetName, townId, streetId,memo ,warehouseCode ,warehouse Name ,charge Type ,cate Id ,cate Name ) VALUES (: channel Id,: channel Code,: channel Name,: channel Type,: online Plat Type Code,: online Plat Type Name,: channel Depart Id,: channel Depart Name,: link Man,: link Tel,: office Address,: group Id,: email,: company Id,: postcode,: company Name,: country Id,: country Name,: province Id,: province Name,: city Id ,: city Name ,: town Name ,: street Name ,: town Id ,: street Id ,: memo ,: warehouse Code ,: warehouse Name ,: charge Type ,: cate Id ,: cate Name );`
    }
  ]
}

3. API接口调用

通过POST方法调用API接口,将清洗后的数据发送至目标平台。以下是一个示例请求:

POST /execute HTTP/1.1
Host: target-platform.com
Content-Type: application/json
{
  main_params:{
    channel_id:"12345",
    channel_code:"ABC123",
    ...
  }
}

4. 数据写入

API接口接收到的数据会根据main_sql中的SQL语句插入到MySQL数据库中。使用REPLACE INTO语句可以确保如果记录已经存在,则更新记录;如果不存在,则插入新记录。

REPLACE INTO erp_sales_get (channel_id,...)
VALUES (:channel_id,...);

通过以上步骤,我们实现了从吉客云到BI拉伯塔的数据ETL转换和写入,确保数据在目标平台中正确存储和使用。这种方法不仅提高了数据处理效率,还保证了数据的一致性和准确性。 金蝶与MES系统接口开发配置

更多系统对接方案