利用轻易云平台进行ETL转换并写入MySQL数据库

  • 轻易云集成顾问-冯潇

金蝶云星空数据集成到MySQL:ZZ组装生产订单-表体-制造一处

在系统集成领域,高效、稳定的数据对接对于企业运营的持续优化至关重要。本文将分享一个实际操作案例,通过轻易云数据集成平台,实现金蝶云星空的数据精准获取与MySQL数据库的快速写入任务。

本次案例中,目标是将金蝶云星空系统中的“ZZ组装生产订单-表体-制造一处”数据批量导出,并高效地同步到MySQL数据库中。这不仅要求处理大量数据,还必须确保在整个流程中没有任何遗漏单据,同时具备实时监控和异常处理能力。

数据提取与API接口调用

为了从金蝶云星空系统获取所需的生产订单数据,我们采用了其提供的executeBillQuery API接口。这个API可以通过指定查询条件,返回符合条件的数据集。实施过程中需要特别关注分页和限流问题,以确保大规模数据能够被顺利抓取:

POST /k3cloud/api/executeBillQuery HTTP/1.1
Host: your_kd_cloud_hostname
Content-Type: application/json

{
  "formId": "PRD_MO", 
  "fieldKeys": ["FMoNumber", "FMATERIALID",...], 
  ...
}

上述请求示例展示了如何通过调用 executeBillQuery 接口来获取特定字段的信息。

MySQL数据库写入与自定义转换逻辑

获得原始数据后,我们利用轻易云的平台特性,将这些信息高吞吐量地写入至MySQL数据库。在此过程中,需要使用一个类似于execute 的API接口,这样我们可以直接进行批量插入:

INSERT INTO production_orders (order_number, material_id, ...) VALUES (?, ?, ...);

同时,在执行这些操作时,需要根据业务需求及各个系统间可能存在的数据格式差异,自定义必要的数据转换逻辑。例如,将时间戳格式统一处理或数值类型矫正等,这一步骤尤其关键,可以避免因格式问题导致后续分析或业务决策上的误判。

实时监控与可靠性保证

为保障整个过程的可靠性和及时响应潜在的问题,通过轻易云内置的集中监控和告警功能,可以全方位了解各个任务状态。同时,对每一次的数据传输事件记录日志并设置错误重试机制,使得即使遇到网络波动等不可预见情况,也能自动恢复并完成既定的数据集成任务。

综上所述,本次实践从多个角度探索了如何有效、安全、高速地实现两个复杂系统间的大规模数据对接,而技术细节中的每一步都 钉钉与CRM系统接口开发配置

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

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

接口调用配置

我们首先需要配置接口调用的元数据。根据提供的元数据配置,我们可以看到以下关键字段:

  • api: executeBillQuery
  • method: POST
  • id: FEntryId
  • name: FBillNo
  • idCheck: true

这些字段定义了我们将要调用的API名称、请求方法以及主键和名称字段。

请求参数配置

在请求参数中,我们需要特别关注以下几个部分:

  1. 请求字段(request)

    • 这些字段定义了我们需要从金蝶云星空中查询的数据项。例如,生产订单表头ID(FID)、成品编号(FMaterialId.FNumber)、数量(FQty)等。
    • 每个字段都有明确的标签、类型和描述,确保我们能够准确地映射和处理这些数据。
  2. 其他请求参数(otherRequest)

    • 这些参数主要用于分页和过滤条件设置。例如,最大行数(Limit)、开始行索引(StartRow)、过滤条件(FilterString)等。
    • 过滤条件示例:FPrdOrgId.fnumber in ('T01.01','T04') and left(FBillNo,2)='MO' and F_ESYNCMOM=0 and FBillType.fnumber='SCDD01_SYS' and FApproveDate>'2023-09-10' and FDocumentStatus ='C'

实际调用示例

下面是一个实际的API调用示例,通过POST方法向金蝶云星空发送请求:

{
  "api": "executeBillQuery",
  "method": "POST",
  "id": "FEntryId",
  "name": "FBillNo",
  "idCheck": true,
  "request": [
    {"field":"FID","label":"生产订单表头id","type":"string","value":"FID"},
    {"field":"FEntryId","label":"实体主键","type":"string","value":"FTreeEntity_FEntryId"},
    {"field":"FMaterialId","label":"成品编号","type":"string","value":"FMaterialId.FNumber"},
    {"field":"FQty","label":"数量","type":"string","value":"FQty"},
    {"field":"FPlanStartDate","label":"计划开工时间","type":"string","value":"FPlanStartDate"},
    {"field":"FMTONO","label":"计划跟踪号","type":"string","value":"FMTONO"},
    {"field":"FLot","label":"批号","type":"string","value":"FLot.FNumber"},
    {"field":"FBomId","label":"BOM版本","type":"string","value":"FBomId.FNumber"},
    {"field":"FStatus","label":"业务状态","type":"string","value":"FStatus"},
    {"field":"FBaseUnitId","label":"基本单位","type":"string","value":"FBaseUnitId.FNumber"},
    {"field":"FWorkShopID","label":"生产车间","type":"string","value":"FWorkShopID.FNumber"},
    {"field":"Fseq","label":"生产订单行号","type":"","value":""},
    {"field":""}
  ],
  "otherRequest": [
    {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "2000"},
    {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
    {"field": "", ""}
  ]
}

数据清洗与转换

在获取到原始数据后,我们需要对其进行清洗和转换,以便后续的数据处理步骤。以下是一些常见的数据清洗与转换操作:

  1. 去除冗余字段:只保留必要的数据项,去除不需要的字段。
  2. 格式转换:将日期、数字等字段转换为标准格式,确保一致性。
  3. 数据校验:检查数据完整性和准确性,例如主键是否唯一、必填字段是否为空等。

实践中的注意事项

  1. 性能优化:在大规模数据查询时,需要合理设置分页参数,以避免一次性查询过多数据导致性能问题。
  2. 错误处理:对API调用过程中可能出现的错误进行捕获和处理,如网络异常、权限不足等。
  3. 日志记录:记录每次API调用的详细日志,包括请求参数、响应结果和执行时间,以便后续分析和排查问题。

通过以上步骤,我们可以高效地从金蝶云星空中获取所需的数据,并为后续的数据处理打下坚实基础。这一过程不仅提升了业务透明度,还极大地提高了工作效率。 打通钉钉数据接口

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

在轻易云数据集成平台中,数据生命周期的第二步是将已经集成的源平台数据进行ETL(提取、转换、加载)处理,并将其转化为目标平台所能接收的格式。在本案例中,我们将探讨如何将生产订单表体数据转换为MySQL API接口能够接收的格式,并最终写入目标平台。

配置元数据

首先,我们需要配置元数据,以便定义如何将源数据映射到目标数据库中的字段。以下是用于本案例的元数据配置:

{
  "api": "execute",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {
      "field": "main_params",
      "label": "main_params",
      "type": "object",
      "describe": "111",
      "value": "1",
      "children": [
        {"field": "FID", "label": "生产订单表头id", "type": "string", "value": "{FID}"},
        {"field": "FEntryId", "label": "实体主键", "type": "string", "value": "{FEntryId}"},
        {"field": "FMaterialId", "label": "成品编号", "type": "string", "value": "{FMaterialId}"},
        {"field": "FQty", "label": "数量", "type": "string", "value": "{FQty}"},
        {"field": "FPlanStartDate", 
            "label":"计划开工时间","type":"string","value":"{FPlanStartDate}"},
        {"field":"FMTONO","label":"计划跟踪号","type":"string","value":"{FMTONO}"},
        {"field":"FLot","label":"批号","type":"string","value":"{FLot}"},
        {"field":"FBomId","label":"BOM版本","type":"string","value":"{FBomId}"},
        {"field":"FStatus","label":"业务状态","type":"string","value":"{FStatus}"},
        {"field":"FBaseUnitId","label":"基本单位","type":"string","value":"{FBaseUnitId}"},
        {"field":"FWorkShopID","label":"生产车间","type":"string","value":"{FWorkShopID}"},
        {"field":"Fseq","label":"生产订单行号","type":"string","value":"{Fseq}"},
        {"field":"FPickMtrlStatus","label":"领料状态","type":"string","value":"{FPickMtrlStatus}"},
        {"field":"FWorkShopName","label":"车间名称","type":"string","value":"{FWorkShopName}"}
      ]
    }
  ],
  ...
}

数据请求与清洗

在这一阶段,我们从源系统提取原始数据,并对其进行必要的清洗和预处理,以确保其符合目标系统的要求。通过配置main_params对象,我们可以定义每个字段的数据类型和映射关系。

例如,FID字段表示生产订单表头ID,其值通过占位符{FID}从源数据中提取。同样地,其他字段如FEntryIdFMaterialId等也按照类似方式进行映射。

数据转换与写入

完成数据清洗后,我们进入关键的ETL转换和写入阶段。我们使用SQL语句将清洗后的数据插入到目标MySQL数据库中。以下是用于插入操作的SQL模板:

INSERT INTO mbs_assemble_detail 
(FID, FEntryId, FMaterialId, FQty, FPlanStartDate, FMTONO, FLot, FBomId, FStatus, FBaseUnitId, FWorkShopID, Fseq, FPickMtrlStatus, FWorkShopName) 
VALUES (:FID, :FEntryId, :FMaterialId, :FQty, :FPlanStartDate, :FMTONO, :FLot, :FBomId, :FStatus, :FBaseUnitId, :FWorkShopID, :Fseq, :FPickMtrlStatus,: FWorkShopName)

在这个SQL语句中,每个字段都对应于前面定义的元数据配置中的字段。通过使用占位符(如:FID, :FEntryId),我们可以动态地将清洗后的数据填充到SQL语句中,从而实现灵活的数据插入操作。

调用API接口

最后一步是通过API接口将转换后的数据写入目标MySQL数据库。在轻易云平台上,这一过程通常通过HTTP POST请求来实现。根据元数据配置中的method: POST,我们可以构建一个POST请求,将包含转换后数据的JSON对象发送到指定的API端点。

以下是一个示例POST请求:

POST /execute HTTP/1.1
Host: target-mysql-api.com
Content-Type: application/json
{
  ...
  // JSON对象包含所有映射后的字段和值
}

通过上述步骤,我们成功地将源平台的数据进行了ETL转换,并最终写入到了目标MySQL数据库中。这一过程不仅保证了数据的一致性和完整性,还提高了系统集成的效率和透明度。 企业微信与OA系统接口开发配置

更多系统对接方案