轻易云平台ETL技术:从金蝶云到MySQL全流程案例

  • 轻易云集成顾问-张妍琪

金蝶云星空数据集成MySQL案例分享:SD校验金蝶生产订单是否变更-新

在企业的日常运营中,确保关键业务数据的实时性和准确性至关重要。本文将重点介绍通过轻易云数据集成平台,将金蝶云星空中的生产订单数据高效集成到MySQL数据库的一次成功实现。

案例背景

我们的目标是利用轻易云的数据处理功能,实现对金蝶云星空系统中生产订单变化的实时监控,并将这些变化可靠地写入到MySQL数据库,以便进一步的数据分析和决策支持。本项目所使用的方案名称为“SD校验金蝶生产订单是否变更-新”。

API接口调用与数据抓取

为了达成这一目标,我们依赖于两个主要API接口:

  1. 金蝶云星空获取数据的API:executeBillQuery
  2. MySQL写入数据的API: execute

通过调用executeBillQuery接口,从金蝶云星空中定期抓取最新的生产订单信息。这一步尤为关键,需要处理好分页和限流问题,以确保完整且高效的数据获取。同时,必须设计可靠的数据抓取计划,保证及时捕获所有更新的信息。

数据转换与映射

由于金蝶云星空与MySQL之间存在一定的数据格式差异,我们借助自定义的数据转换逻辑,对抓取到的新旧生产订单进行对比后,将结果映射并格式化为适合存储在MySQL中的结构。在此过程中,充分利用了轻易云提供的可视化数据流设计工具,使得整个过程更加直观且易于管理。

高吞吐量批量写入

考虑到大量订单信息需要被迅速、高效地转移至MySQL数据库,我们特意配置了具有高吞吐能力的数据写入通道。这样不仅提高了处理效率,也有效避免了可能出现的写入瓶颈问题。

实时监控与异常处理

为了确保整个集成过程不会遗漏任何一个环节,还专门设置了一套集中式监控和告警机制。该系统能够实时跟踪每个任务节点状态,并在发生异常情况时发出告警信号。此外,通过实施错误重试机制,即使出现短暂网络波动或其它不确定故障,也能最大程度保障数据传输的一致性和完整性。

上述步骤概述了解决方案核心部分,为下一步详细探讨具体技术实现打下基础。在接下来的内容里,我们将更深入剖析从创建、测试到部署各环节中的实际操作细节,以及如何妥善应对实施过程中可能遇到的问题与挑战。 如何对接企业微信API接口

调用金蝶云星空接口executeBillQuery获取并加工数据

在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口,获取生产订单数据并进行初步加工。

接口配置与调用

首先,我们需要配置和调用金蝶云星空的executeBillQuery接口。该接口采用POST方法,主要用于查询业务单据信息。以下是元数据配置中的关键字段及其含义:

  • api: executeBillQuery
  • method: POST
  • number: FBillNo
  • id: FTreeEntity_FEntryId
  • name: FBillNo

这些字段定义了接口的基本信息和操作方式。

请求参数配置

请求参数是接口调用成功与否的关键因素。根据元数据配置,我们需要设置以下请求参数:

  1. 单据编号 (FBillNo):
    {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"FBillNo"}
  2. 数量 (FQty):
    {"field":"FQty","label":"数量","type":"string","describe":"数量","value":"FQty"}
  3. 物料编码 (FMATERIALID.FNumber):
    {"field":"FMATERIALID_FNumber","label":"物料编码","type":"string","describe":"物料编码","value":"FMATERIALID.FNumber"}

此外,还有一些其他请求参数,用于分页和过滤:

  1. 最大行数 (Limit):
    {"field":"Limit","label":"最大行数","type":"string","describe":"金蝶的查询分页参数","value":"2000"}
  2. 开始行索引 (StartRow):
    {"field":"StartRow","label":"开始行索引","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_START_ROW}"}
  3. 返回总行数 (TopRowCount):
    {"field":"TopRowCount","label":"返回总行数","type":"int","describe":"金蝶的查询分页参数"}
  4. 过滤条件 (FilterString):
    {"field":"FilterString","label":"过滤条件","type":"string","describe":"示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=","value":"FPrdOrgId.FNumber in ('T01.06','T04') and left(FBillNo,2)='HJ' and  FApproveDate>='2024-05-01'"}
  5. 需查询的字段key集合 (FieldKeys):
    {"field":"FieldKeys","label":"需查询的字段key集合","type":"array","describe":"金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber"}

这些参数确保了我们能够准确地获取所需的数据,并进行有效的分页处理。

数据处理与清洗

在成功获取数据后,我们需要对数据进行初步处理和清洗。这一步骤包括但不限于:

  1. 字段映射与转换:将原始数据字段映射到目标系统所需的字段格式。例如,将FMATERIALID.FNumber转换为目标系统中的物料编码。
  2. 数据过滤:根据业务需求进一步过滤不必要的数据。例如,只保留批准日期在特定范围内的数据。
  3. 异常处理:处理可能出现的数据异常情况,如缺失值或格式错误。

自动填充响应

轻易云平台提供了自动填充响应功能,这意味着在配置好元数据后,平台会自动解析并填充响应数据。这极大地简化了开发工作,提高了效率。

"autoFillResponse": true

定时任务与补偿机制

为了确保数据同步的及时性和完整性,可以配置定时任务和补偿机制。例如,每天凌晨1点执行一次同步任务,并在必要时进行补偿请求:

"omissionRemedy": {
    "crontab": "1 1 1 1 1",
    "takeOverRequest": []
}

通过以上步骤,我们可以高效地调用金蝶云星空接口executeBillQuery,获取并加工生产订单数据,为后续的数据转换与写入打下坚实基础。 企业微信与OA系统接口开发配置

轻易云数据集成平台:ETL转换与MySQLAPI接口写入技术案例

在轻易云数据集成平台的生命周期中,第二步是将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,并转为目标平台 MySQL API 接口所能够接收的格式,最终写入目标平台。以下是一个详细的技术案例,展示如何通过配置元数据,实现这一过程。

元数据配置解析

元数据配置是实现ETL转换和写入目标平台的核心。以下是我们使用的元数据配置:

{
    "api": "execute",
    "effect": "EXECUTE",
    "method": "POST",
    "idCheck": true,
    "request": [
        {
            "field": "main_params",
            "label": "main_params",
            "type": "object",
            "describe": "111",
            "value": "1",
            "children": [
                {
                    "field": "FBillNo",
                    "label": "单据编号",
                    "type": "string",
                    "value": "_function REPLACE('{FBillNo}','GD','')"
                },
                {
                    "field": "FQty",
                    "label": "数量",
                    "type": "string",
                    "value": "{FQty}"
                },
                {
                    "field": "FMATERIALID_FNumber",
                    "label": "物料编号",
                    "type": "string",
                    "value": "{FMATERIALID_FNumber}"
                }
            ]
        }
    ],
    "otherRequest": [
        {
            "field": "main_sql",
            "label": "main_sql",
            "type": "string",
            "describe": ":111:",
            ``"value":"update mbs_nuclear_price_info set Kingdee_part_no=:FMATERIALID_FNumber,KingDee_req_num=:FQty where id=substring(:FBillNo,3)"
        }
    ]
}

数据请求与清洗

首先,我们需要从源系统中提取原始数据,并进行初步清洗。这一步骤主要通过定义request部分来实现。在这个案例中,request部分定义了一个名为main_params的对象,其中包含三个字段:

  • FBillNo: 单据编号,通过函数REPLACE('{FBillNo}','GD','')去除前缀"GD"。
  • FQty: 数量,直接映射为源数据中的{FQty}
  • FMATERIALID_FNumber: 物料编号,直接映射为源数据中的{FMATERIALID_FNumber}

这些字段将在后续步骤中用于生成SQL查询语句。

数据转换与写入

在完成初步清洗后,我们需要将清洗后的数据转换为目标平台可以接受的格式,并通过API接口写入MySQL数据库。这一步骤主要通过定义otherRequest部分来实现。在这个案例中,otherRequest部分定义了一个名为main_sql的字符串,其中包含一条SQL更新语句:

update mbs_nuclear_price_info set Kingdee_part_no=:FMATERIALID_FNumber,KingDee_req_num=:FQty where id=substring(:FBillNo,3)

这条SQL语句将使用清洗后的字段值更新目标表中的记录:

  • Kingdee_part_no: 使用物料编号字段值(:FMATERIALID_FNumber)。
  • KingDee_req_num: 使用数量字段值(:FQty)。
  • id: 使用单据编号去除前缀后的值(通过函数 substring(:FBillNo,3))。

API接口调用

最后,通过API接口将生成的SQL语句发送到MySQL数据库。元数据配置中的以下字段定义了API调用的细节:

  • api: 指定API操作类型,这里是执行操作(execute)。
  • effect: 定义操作效果,这里也是执行(EXECUTE)。
  • method: 指定HTTP方法,这里使用POST方法。
  • idCheck: 启用ID检查以确保唯一性。

通过这些配置,可以确保生成的SQL语句正确地发送到MySQL数据库并执行,从而完成整个ETL转换和写入过程。

总结

本文详细介绍了如何使用轻易云数据集成平台进行ETL转换,并通过API接口将转换后的数据写入MySQL数据库。通过合理配置元数据,可以高效地实现不同系统间的数据无缝对接和处理。 金蝶与CRM系统接口开发配置

更多系统对接方案