如何使用ETL实现吉客云到金蝶云星空的数据集成:技术步骤与最佳实践

  • 轻易云集成顾问-潘裕

吉客云数据集成到金蝶云星空的技术案例分享:其他出库对接(菜鸟)-已测试

在系统对接和数据集成的实际应用中,如何高效、可靠地实现吉客云与金蝶云星空之间的数据流动,是各企业IT团队常见并迫切需要解决的问题。本文将分享一个具体的技术案例——“其他出库对接(菜鸟)”,重点解析如何通过API接口确保业务流程无缝衔接,并达到预期效果。

在这个项目中,吉客云提供出库数据,通过调用其erp.storage.goodsdocout.v2接口获取相关信息。而这些数据需要被准确、高效地写入到金蝶云星空平台,我们使用的是其batchSaveAPI进行批量数据写入。在此过程中,需要确保以下几个关键点:

  1. 定时可靠的数据抓取:设置合适的时间间隔来抓取吉客云中的最新出库数据,以保证业务处理的及时性。
  2. 高吞吐量的数据写入支持:针对大量订单和复杂业务场景,我们设计了高性能的数据批量写入机制,使得大规模的数据能够快速并准确提交至金蝶云星空。
  3. 自定义转换逻辑与映射关系:由于两个系统的数据结构存在差异,需要根据具体业务需求定制化转换逻辑,并做好映射关系以保持一致性。
  4. 分页与限流控制:处理每次请求返回的大量分页结果,同时防止因频繁请求导致服务器过载。从而实现稳定、连续的数据传输。
  5. 实时监控与异常处理机制:搭建了一套全面的监控和告警体系,实时跟踪任务执行状态,一旦发现异常情况迅速响应并自动重试,确保集成过程稳健可靠。

以上方案架构合理配置,并经过多轮测试验证,不仅增强了系统间的互通性,也提升了整体运行效率。下面将从详细步骤展开解析这一技术实施过程。 轻易云数据集成平台金蝶集成接口配置

调用吉客云接口erp.storage.goodsdocout.v2获取并加工数据

在数据集成生命周期的第一步,我们需要从源系统吉客云调用接口erp.storage.goodsdocout.v2获取数据,并进行初步的加工处理。以下是详细的技术实现过程和关键点。

接口调用配置

首先,我们需要配置接口调用的元数据。根据提供的元数据配置,接口调用采用POST方法,主要参数如下:

  • pageIndex: 分页页码
  • pageSize: 分页页数,默认值为50
  • goodsDocNo: 出库单号
  • startDate: 创建时间的起始时间,使用变量{{LAST_SYNC_TIME|datetime}}
  • endDate: 创建时间的结束时间,使用变量{{CURRENT_TIME|datetime}}
  • inouttype: 类型,固定值为204(其他出库)
  • 其他可选参数如sourceBillNo, warehouseCode, vendCode, billNo, userName, outBillNo, gmtModifiedStart, gmtModifiedEnd

这些参数确保了我们可以灵活地查询不同条件下的数据,并且通过分页机制来处理大量数据。

请求示例

以下是一个请求示例:

{
  "pageIndex": "1",
  "pageSize": "50",
  "startDate": "{{LAST_SYNC_TIME|datetime}}",
  "endDate": "{{CURRENT_TIME|datetime}}",
  "inouttype": "204"
}

数据过滤与条件设置

为了确保获取的数据符合业务需求,我们在元数据中定义了过滤条件:

"condition":[
    [
        {"field":"inOutReason","logic":"like","value":"菜鸟"},
        {"field":"userName","logic":"notlike","value":"外部"},
        {"field":"goodsDocDetailList.quantity","logic":"gt","value":"0"}
    ]
]

这些条件确保了只获取出库原因包含“菜鸟”、创建人名称不包含“外部”且商品数量大于0的数据。

数据加工与处理

在获取到原始数据后,我们需要对其进行初步加工。根据元数据配置中的beatFlat字段,我们将嵌套的goodsDocDetailList字段展平,以便后续处理和分析。

此外,通过autoFillResponse: true设置,系统会自动填充响应数据,这简化了我们对返回结果的处理。

异常处理与补偿机制

为了应对可能出现的数据遗漏或异常情况,我们配置了补偿机制:

"omissionRemedy":{
    "crontab":"1 2 * * *",
    "takeOverRequest":[
        {
            "field":"startDate",
            "value":"_function FROM_UNIXTIME( unix_timestamp() -259200 , '%Y-%m-%d %H:%i:%s' )",
            "label":"接管字段",
            "formModel":{"enable":false},
            "tableModel":{"enable":false},
            "physicalModel":{"enable":false},
            "type":"string"
        }
    ]
}

该补偿机制通过定时任务(每天凌晨2:01)重新拉取过去三天的数据,以确保没有遗漏。

实践案例

假设我们需要获取2023年10月1日至2023年10月2日期间所有符合条件的出库单信息,可以构造如下请求:

{
  "pageIndex": "1",
  "pageSize": "50",
  "startDate": "2023-10-01T00:00:00",
  "endDate": "2023-10-02T23:59:59",
  "inouttype": "204"
}

返回的数据将经过上述过滤条件和展平处理,最终得到符合业务需求的结构化数据。

通过以上步骤,我们完成了从吉客云调用接口获取并加工数据的全过程。这一步骤不仅是整个数据集成生命周期的重要环节,也是确保后续数据转换与写入顺利进行的基础。 如何对接金蝶云星空API接口

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

在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨如何利用轻易云数据集成平台配置元数据,实现这一过程。

配置元数据

我们首先来看一下元数据配置,这是实现ETL转换和写入的关键。以下是一个具体的元数据配置示例:

{
  "api": "batchSave",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "rowsKey": "array",
    "rows": 1,
    "method": "merge",
    "field": "goodsDocDetailList_ownerName,goodsdocNo",
    "bodyName": "items",
    "header": ["goodsdocNo", "inOutDate", "goodsDocDetailList_ownerName"],
    "body": ["goodsDocDetailList_goodsNo", "goodsDocDetailList_quantity", "warehouseCode"]
  },
  ...
}

数据请求与清洗

在这一步,我们从源平台获取原始数据,并对其进行清洗和预处理,以确保数据质量和一致性。这个过程包括去除冗余字段、标准化数据格式以及校验数据完整性。

数据转换

接下来,我们将清洗后的数据进行转换,使其符合金蝶云星空API接口的要求。根据上述元数据配置,我们可以看到以下关键字段及其对应关系:

  • FJKYNo 对应 {goodsdocNo}
  • FBillTypeID 固定值 QTCKD97_SYS
  • FStockOrgId 对应 {goodsDocDetailList_ownerName}
  • FDate 对应 {inOutDate}
  • FOwnerIdHead 对应 {goodsDocDetailList_ownerName}

此外,明细信息(FEntity)中的字段也需要进行相应的映射和转换:

  • FMATERIALID 对应 {{items.goodsDocDetailList_goodsNo}}
  • FStockId 对应 {warehouseCode}
  • FQty 对应 {{items.goodsDocDetailList_quantity}}

这些字段通过解析器(如 ConvertObjectParser)进行必要的转换,以确保符合目标平台的数据格式要求。

数据写入

完成数据转换后,使用HTTP POST方法将处理后的数据写入金蝶云星空API接口。具体请求示例如下:

{
  "FormId": "STK_MisDelivery",
  "IsAutoSubmitAndAudit": true,
  "IsVerifyBaseDataField": true,
  ...
}

该请求包含了业务对象表单ID、是否自动提交并审核、是否验证基础资料等参数,这些参数确保了写入过程的顺利进行。

API调用与响应处理

在实际操作中,我们需要处理API调用的响应,确保每个请求都成功执行。如果出现错误,需要根据错误信息进行调试和修正。例如,如果某个字段映射错误或缺失,会导致API调用失败,此时需要重新检查元数据配置和源数据。

通过以上步骤,我们可以实现从源平台到金蝶云星空API接口的数据无缝对接。这不仅提高了数据处理效率,还保证了业务流程的一致性和准确性。在实际项目中,根据具体需求调整元数据配置,可以灵活地适应不同的数据集成场景。 如何开发用友BIP接口

更多系统对接方案