通过轻易云平台实现ETL转换并写入MySQL

  • 轻易云集成顾问-孙传友

聚水潭-销售出库单-->BI崛起-销售出库表【历史订单】数据集成方案

在本案例中,我们将详细探讨如何通过轻易云平台实现聚水潭·奇门系统的销售出库单数据高效、可靠地集成到MySQL数据库,具体以历史订单为例。我们的目标是确保数据不漏单、快速写入,同时支持实时监控和异常处理。

首先,需要调用聚水潭·奇门API jushuitan.saleout.list.query 获取销售出库单信息。该接口提供了丰富的数据字段,但由于涉及分页和限流问题,因此要求我们特别注意每次请求的数据量和频率。在这里,我们可以利用平台自带的定时调度功能,每隔一定时间自动抓取最新的订单数据,确保及时性与稳定性。

随后,将从聚水潭获取的数据批量写入到MySQL数据库中,对于这一步,我们需要特别关注以下几个技术要点:

  1. 大吞吐量的数据写入:因为处理的是大量历史订单,所以高性能、高吞吐量的数据写入能力显得尤为重要。这不仅需要优化MySQL端的配置,也需要在轻易云平台上设定合理的并发参数。
  2. 自定义数据转换逻辑:由于聚水潭·奇门接口返回的数据格式可能与目标MySQL表结构不一致,我们利用平台提供的可视化数据流设计工具,对原始数据进行必要的转换,以适应特定业务需求。
  3. 实时监控与日志记录:为了确保整个集成过程透明且可追踪,集中化监控与告警系统会实时跟踪任务状态,并对异常情况进行日志记录和告警提醒。不仅可以即时发现问题,还能迅速定位解决。

针对上述提及的问题,例如分页处理、限流策略以及潜在的数据质量问题,都将在实践中被一一验证。本案例中的关键点就在于平衡效率与准确性,在保证完整性的同时,实现快速稳定的数据同步,这是本案成功实施的重要保障。

接下来文章将深入介绍具体实现步骤,包括API调用细节、分页策略实现、自定义映射规则设定等,以及如何在轻易云平台上进行这些操作设置。 泛微OA与ERP系统接口开发配置

调用聚水潭·奇门接口jushuitan.saleout.list.query获取并加工数据

在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用聚水潭·奇门接口jushuitan.saleout.list.query,并对获取的数据进行初步加工。

接口调用配置

首先,我们需要配置接口调用的元数据。以下是针对jushuitan.saleout.list.query接口的元数据配置:

{
  "api": "jushuitan.saleout.list.query",
  "effect": "QUERY",
  "method": "POST",
  "number": "io_id",
  "id": "{io_id}{modified}",
  "name": "name",
  "idCheck": true,
  "request": [
    {
      "field": "page_index",
      "label": "页数",
      "type": "string",
      "describe": "第几页,从第一页开始,默认1",
      "value": "{PAGINATION_START_PAGE}"
    },
    {
      "field": "page_size",
      "label": "每页行数",
      "type": "string",
      "describe": "每页多少条,默认25,最大50",
      "value": "{PAGINATION_PAGE_SIZE}"
    },
    {
      "field": "start_time",
      "label": "修改开始时间",
      "type": "string",
      "describe": "修改起始时间,和结束时间必须同时存在,时间间隔不能超过七天,与线上单号不能同时为空",
      "value": "_function LEFT( '{{DAYS_AGO_1|datetime}}' , 10)"
    },
    {
      "field": "end_time",
      "label": "修改结束时间",
      "type": "string",
      "describe": "修改结束时间,和起始时间必须同时存在,时间间隔不能超过七天,与线上单号不能同时为空",
      "value": "_function LEFT( '{{CURRENT_TIME|datetime}}' , 10)"
    },
    {
      "field": "status",
      "label": "单据状态",
      ``type``: ``string``,
``describe``: ``单据状态: WaitConfirm=待出库; Confirmed=已出库; Cancelled=作废``
},
{
"field``: ``date_type``,
``label``: ``时间类型``,
``type``: ``string``
}
],
"autoFillResponse``: true,
"beatFlat":["items"]
}

参数说明

  • page_index: 页数,从第一页开始。默认值为1。
  • page_size: 每页行数,默认25条记录,最大50条记录。
  • start_time: 修改开始时间,需要与结束时间一起使用。这里使用了函数 _function LEFT( '{{DAYS_AGO_1|datetime}}' , 10) 来自动生成日期。
  • end_time: 修改结束时间,同样需要与开始时间一起使用。使用 _function LEFT( '{{CURRENT_TIME|datetime}}' , 10) 自动生成当前日期。
  • status: 单据状态,可以是待出库、已出库或作废。
  • date_type: 时间类型。

数据请求与清洗

在配置好元数据后,我们通过轻易云平台发起HTTP POST请求来获取销售出库单的数据。由于平台支持全异步操作,我们可以高效地处理大量数据请求。

{
  // 请求示例
  {
    page_index: '1',
    page_size: '25',
    start_time: '2023-09-01',
    end_time: '2023-09-07',
    status: 'Confirmed'
  }
}

在接收到响应后,我们可以利用平台提供的自动填充功能(autoFillResponse)来简化数据清洗过程。这一步骤确保了返回的数据结构一致且便于后续处理。

数据转换与写入

在完成数据请求与清洗后,我们需要对数据进行转换,以便写入目标系统。在这个案例中,我们将销售出库单的数据写入BI崛起的销售出库表【历史订单】。

{
  // 转换示例
  items.map(item => ({
    io_id: item.io_id,
    modified: item.modified,
    name: item.name,
    status: item.status,
    date_type: item.date_type
  }))
}

通过这种方式,我们可以确保从聚水潭·奇门获取的数据能够无缝对接到BI崛起系统中,实现不同系统间的数据集成。

总结

通过上述步骤,我们成功地调用了聚水潭·奇门接口jushuitan.saleout.list.query并对获取的数据进行了初步加工。这不仅展示了轻易云平台在处理异构系统数据集成方面的强大能力,也为后续的数据转换与写入奠定了基础。 如何开发金蝶云星空API接口

使用轻易云数据集成平台进行ETL转换并写入MySQL

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

数据请求与清洗

在数据请求阶段,我们从源系统获取原始数据。此过程通常涉及调用API接口或从数据库中提取数据。清洗步骤则包括去除重复项、处理缺失值以及标准化数据格式等操作。这些步骤确保了后续的数据转换和加载过程的顺利进行。

数据转换与写入

接下来,我们进入ETL流程的核心部分:数据转换与写入。以下是具体操作步骤和技术细节。

元数据配置

元数据配置是整个ETL过程中的关键环节,它定义了如何将源系统的数据映射到目标系统的数据结构中。在本案例中,我们需要将聚水潭的销售出库单数据转换为BI崛起销售出库表【历史订单】所需的格式,并写入MySQL数据库。

元数据配置如下:

{
  "api": "execute",
  "effect": "EXECUTE",
  "method": "SQL",
  "number": "id",
  "id": "id",
  "name": "id",
  "idCheck": true,
  "request": [
    {
      "field": "main_params",
      "label": "主参数",
      "type": "object",
      "describe": "对应主语句内的动态参数",
      "children": [
        {"field": "id", ...},
        {"field": "co_id", ...},
        ...
        {"field": "order_staff_name", ...}
      ]
    }
  ],
  "otherRequest": [
    {
      "field": "main_sql",
      "label": "主语句",
      "type": "string",
      ...
      ...
    }
  ]
}
SQL语句构建

在元数据配置中,main_sql字段定义了要执行的SQL插入语句。该语句包含了所有需要插入到目标表中的字段,并使用占位符表示动态参数:

INSERT INTO saleout_list_query(
    id, co_id, shop_id, io_id, o_id, so_id, created, modified, status,
    invoice_title, shop_buyer_id, receiver_country, receiver_state,
    receiver_city, receiver_district, buyer_message, remark, is_cod,
    pay_amount, l_id, io_date, lc_id, stock_enabled, labels,
    paid_amount, free_amount, freight, weight, warehouse,
    drp_co_id_from, f_weight, order_type, open_id,
    is_print_express,is_print ,drp_info,buyer_tax_no ,
    logistics_company,sns_sku_id,sns_sn ,merge_so_id ,
    wms_co_id ,items_i_id ,items_sale_base_price ,
    items_is_gift ,items_oi_id ,items_outer_oi_id ,
    items_raw_so_id ,items_pay_amount ,items_combine_sku_id ,
    items_ioi_id ,items_sku_id ,items_qty ,items_name ,
    items_properties_value ,items_sale_price ,items_sale_amount ,
    shop_name,f_freight,business_staff,currency,node,pay_date,seller_flag,wave_id,
    order_staff_id ,order_staff_name)
VALUES (
    :id,:co_id,:shop_id,:io_id,:o_id,:so_id,:created,:modified,:status,
    :invoice_title,:shop_buyer_id,:receiver_country,:receiver_state,
    :receiver_city,:receiver_district,:buyer_message,:remark,:is_cod,
    :pay_amount,:l_id,:io_date,:lc_id,:stock_enabled,:labels,
    :paid_amount,:free_amount,:freight,:weight,:warehouse,
    :drp_co_id_from,:f_weight,:order_type,:open_id,
    :is_print_express,:is_print ,:drp_info,:buyer_tax_no ,
    :logistics_company,:sns_sku_id,:sns_sn ,:merge_so_id ,
    :wms_co_id ,:items_i_id ,:items_sale_base_price ,
    :items_is_gift ,:items_oi_id ,:items_outer_oi_id ,
    :items_raw_so_id ,:items_pay_amount ,:items_combine_sku_id ,
    :items_ioi_id ,:items_sku_id ,:items_qty ,:items_name ,
   : items_properties_value ,: items_sale_price ,: items_sale_amount ,
   : shop_name,:,f_freight,:,business_staff,:,currency,:,node,:,pay_date,:,seller_flag,:,wave _id,:,:order_staff _id,:,:order_staff _name)
动态参数填充

在执行SQL语句时,轻易云平台会自动替换占位符为实际的数据值。这些值来自于前面提到的main_params字段中的子字段。例如:

  • :id 将被替换为 {o_i}-{item_ioi}-{modified}
  • :co_i 将被替换为 {co_i}

这样一来,我们就能确保每个字段都能正确地映射到目标表中的相应列。

执行SQL插入

最后一步是执行构建好的SQL插入语句,将转换后的数据写入MySQL数据库。轻易云平台提供了全异步和高效的数据处理机制,确保了大规模数据写入时的性能和可靠性。

通过以上步骤,我们成功地完成了从聚水潭销售出库单到BI崛起销售出库表【历史订单】的数据ETL转换,并将其无缝写入到MySQL数据库中。这一过程充分利用了轻易云平台强大的元数据配置和自动化处理能力,大大简化了复杂的数据集成任务。 金蝶与CRM系统接口开发配置

更多系统对接方案