高效数据集成:MySQL与金蝶云星空的无缝对接方法

  • 轻易云集成顾问-吴伟

MySQL数据集成到金蝶云星空的系统对接实战案例——GJM-广东天一组织间结算价目表-每月新建

数据集成对于现代企业而言是一个至关重要的技术环节。在本次案例中,我们将重点分享如何通过轻易云数据集成平台,将MySQL中的数据高效且可靠地写入到金蝶云星空,具体应用场景为“GJM-广东天一组织间结算价目表-每月新建”。

在方案设计与实施过程中,我们利用了MySQL获取数据的API(select)和金蝶云星空写入数据的API(batchSave),确保大量的数据能够定时、批量地从MySQL接口抓取并快速写入到金蝶云星空。同时,通过可视化的数据流设计工具,使得整个流程直观清晰,大大提升了管理和监控效率。

为了保障集成过程中的信息准确性和实时性,我们特别采用了以下几个关键技术要点:

  1. 高吞吐量的数据写入能力:通过优化任务调度与队列机制,使得大量业务数据能够以极高的速度被提取并保存,显著提高了整体处理效率。
  2. 集中监控与告警系统:实时跟踪每个步骤中的任务状态及性能表现,一旦出现异常情况,立即触发告警机制,以便及时排查和解决问题。
  3. 自定义的数据转换逻辑:针对特定业务需求,对不同步格式进行转换处理,确保源端MySQL数据库中的结构能够无缝映射到目标端金蝶云星空中。
  4. 分页与限流控制:面对海量查询请求,通过合理设置分页策略及限流算法,有效避免接口超时或服务器过载等情况发生。

在实际操作时,我们格外注意如何调用MySQL接口(select)来获取所需的数据,以及如何使用批量存储API(batchSave)将这些数据稳妥传输至金蝶云星空。此外,为应对可能出现的对接异常,我们实现了一套完善的错误重试机制。 金蝶云星空API接口配置

使用轻易云数据集成平台调用MySQL接口获取并加工数据

在数据集成的生命周期中,第一步是从源系统获取数据。本文将详细介绍如何通过轻易云数据集成平台调用MySQL接口select来实现这一过程,并进行必要的数据加工。

元数据配置解析

在进行具体操作之前,我们需要理解元数据配置中的各个字段及其作用。以下是元数据配置的关键部分:

{
  "api": "select",
  "effect": "QUERY",
  "method": "POST",
  "request": [
    {
      "field": "main_params",
      "label": "主参数",
      "type": "object",
      "describe": "对应其它请求字段内SQL语句的主参数,必须一一对应。",
      "value": "1",
      "children": [
        {
          "field": "limit",
          "label": "限制结果集返回的行数",
          "type": "int",
          "describe": "必要的参数!LIMIT 子句用于限制查询结果返回的行数。",
          "value": 2000
        },
        {
          "field": "offset",
          "label": "偏移量",
          "type": "int",
          "describe": "OFFSET 子句用于指定查询结果的起始位置或偏移量。",
          "value": "{PAGINATION_START_ROW}"
        }
      ]
    }
  ],
  ...
}

配置主SQL语句

主SQL语句是整个数据获取过程的核心。我们需要确保SQL语句中的动态字段与请求参数一一对应。以下是提供的主SQL语句示例:

SELECT 
    DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m') AS 价目表,
    b.part_no AS 物料编号,
    (
        SELECT price   
        FROM oms_order_bom ob   
        WHERE ob.part_no = b.part_no   
        ORDER BY ob.create_time DESC   
        LIMIT 1  
    ) AS 含税价格  
FROM wms_instock_confirm_task_detail c  
LEFT JOIN wms_instock_confirm_main_task_detail a ON c.connect_uuid = a.uuid  
LEFT JOIN wms_instock_purchase_task_detail b ON b.uuid = a.connect_uuid  
WHERE a.company_code = 'TYZN'   
     AND b.supplier_uuid = '804842'  
     AND c.create_time >= (DATE_SUB(CURDATE(), INTERVAL DAY(CURDATE()) - 1 DAY) - INTERVAL 1 MONTH) 
     AND c.create_time <= DATE_SUB(LAST_DAY(CURDATE()), INTERVAL DAY(LAST_DAY(CURDATE())) - 1 DAY) 
GROUP BY b.part_no
LIMIT :limit OFFSET :offset

参数绑定与优化

为了提高查询语句的可读性和维护性,我们采用参数绑定的方法,将请求参数的值与占位符进行对应绑定。这种方式不仅能保证查询的准确性,还能提升安全性。

例如,在执行查询时,我们将:limit:offset替换为具体值:

LIMIT ? OFFSET ?

然后在执行查询前,通过代码将具体值绑定到占位符上。

调用API接口

使用轻易云平台提供的API接口,我们可以通过POST方法发送请求,获取所需的数据。以下是一个示例请求:

{
  "main_params": {
    "limit": 2000,
    "offset": 0
  },
  ...
}

该请求会触发MySQL数据库执行上述优化后的SQL查询,并返回结果集。

数据清洗与加工

在获取到原始数据后,可能需要对其进行清洗和加工。例如,可以根据业务需求过滤掉不必要的数据,或者对某些字段进行格式转换。

假设我们需要将含税价格转换为不含税价格,可以在数据清洗阶段添加如下逻辑:

def calculate_net_price(gross_price):
    tax_rate = 0.13 # 假设增值税率为13%
    net_price = gross_price / (1 + tax_rate)
    return net_price

# 对每条记录进行处理
for record in result_set:
    record['不含税价格'] = calculate_net_price(record['含税价格'])

通过这种方式,我们可以确保最终的数据符合业务需求,并且质量得到保证。

实时监控与反馈

轻易云平台提供了实时监控功能,可以随时查看数据流动和处理状态。这有助于及时发现并解决问题,提高整体效率。

总结以上步骤,通过合理配置元数据、优化SQL语句、调用API接口以及进行必要的数据清洗和加工,我们可以高效地从MySQL源系统获取并处理所需的数据。这不仅提升了业务透明度,也为后续的数据分析和决策提供了坚实基础。 用友与WMS系统接口开发配置

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

在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,并转为目标平台——金蝶云星空API接口所能够接收的格式,最终写入目标平台。以下是具体的技术实现过程。

数据请求与清洗

首先,我们从源平台获取原始数据,并对其进行必要的清洗和预处理。假设我们已经完成了这一阶段,接下来我们将重点放在如何利用轻易云数据集成平台配置元数据,将清洗后的数据转换为金蝶云星空API可接受的格式,并通过API接口写入目标系统。

元数据配置解析

根据提供的元数据配置,我们需要将数据转换为适配金蝶云星空API接口batchSave方法的格式。以下是关键字段及其配置解析:

  • FAuditStatus: 整单审核状态,固定值为"A"
  • FCreateOrgId: 核算组织,通过ConvertObjectParser解析,值为"T04"
  • FName: 标题,通过函数拼接生成,例如:"广东天一调拨深圳天一2023-09组织间价目表"。
  • FUseOrgId: 使用组织,通过ConvertObjectParser解析,值为"T04"
  • FPRICETYPE: 价目表对象,固定值为"Material"
  • FCURRENCYID: 币别,通过ConvertObjectParser解析,值为"PRE001"
  • FIsIncludedTax: 含税,固定值为"true"

明细信息部分(数组类型):

  • FMATERIALID: 物料编码,通过ConvertObjectParser解析,例如:物料编号。
  • FTRADETYPE: 交易类型,固定值为"Material"
  • FPRICEUNITID: 定价单位,通过查找集合获取,例如:从某个集合中查找物料编号对应的定价单位。
  • FRowAuditStatus: 行审核状态,固定值为"A"
  • FTaxPrice: 含税单价,例如:含税价格。
  • FTaxRate: 税率,固定值为"13"

其他请求参数:

  • FormId: 业务对象表单Id,例如:IOS_PriceList
  • Operation: 执行的操作,例如:batchSave
  • IsAutoSubmitAndAudit: 提交并审核,布尔值,例如:true
  • IsVerifyBaseDataField: 验证基础资料有效性,布尔值,例如:false

数据转换与写入

  1. 将源数据按照上述元数据配置进行字段映射和转换。以下是一个示例代码片段,用于将源数据转换为目标格式:
{
  "FormId": "IOS_PriceList",
  "Operation": "batchSave",
  "IsAutoSubmitAndAudit": true,
  "IsVerifyBaseDataField": false,
  "Model": {
    "FAuditStatus": "A",
    "FCreateOrgId": { "FNumber": "T04" },
    "FName": "广东天一调拨深圳天一2023-09组织间价目表",
    "FUseOrgId": { "FNumber": "T04" },
    "FPRICETYPE": "Material",
    "FCURRENCYID": { "FNumber": "PRE001" },
    "FIsIncludedTax": true,
    "FEntity": [
      {
        "FMATERIALID": { "FNumber": "{{items.物料编号}}" },
        "FTRADETYPE": "Material",
        "FPRICEUNITID": { 
          "_findCollection find FBaseUnitId_FNumber from c7812b37-c4fa-3e9d-9d52-974e0c2b53df where FNumber={{items.物料编号}}" 
        },
        "FRowAuditStatus": "A",
        "FTaxPrice": "{{items.含税价格}}",
        "FTaxRate": 13
      }
    ]
  }
}
  1. 配置HTTP请求参数,并调用金蝶云星空API接口。以下是一个示例HTTP请求:
POST /k3cloud/api/batchSave HTTP/1.1
Host: your-k3cloud-host.com
Content-Type: application/json
Authorization: Bearer your-access-token

{
  // 上述转换后的JSON内容
}
  1. 检查响应结果,以确保数据成功写入。如果有错误,需要根据返回的信息进行相应调整和重试。

通过上述步骤,我们可以高效地将源平台的数据进行ETL转换,并通过金蝶云星空API接口实现无缝对接和写入。这不仅提升了业务流程的自动化程度,也确保了数据的一致性和准确性。 打通金蝶云星空数据接口

更多系统对接方案