使用轻易云平台将数据ETL转换并写入金蝶云星空

  • 轻易云集成顾问-贺强

吉客云数据集成到金蝶云星空:其他出库(除菜鸟)(负数)对接-其他入库单

在本案例中,我们将探索如何使用轻易云数据集成平台高效地实现吉客云与金蝶云星空系统之间的数据对接。具体方案是通过API接口erp.storage.goodsdocout.v2从吉客云获取“其他出库(除菜鸟)(负数)”的数据,并利用金蝶云星空的API batchSave将处理后的数据批量写入到目标系统。

成功实施这一数据集成任务,我们采用了一系列关键技术和方法,确保整个过程高效、准确且具备可靠的异常处理机制。

首先,为了保证大量业务数据能够迅速被写入金蝶云星空,我们充分利用了平台支持的高吞吐量的数据写入功能。这不仅提升了数据处理时效性,还保障了在高并发情况下系统的稳定运行。同时,通过定时触发机制,可靠地抓取吉客云接口输出的数据,有效减少手动干预,提高自动化程度。

其次,在设计这次对接过程中,特别注重实时监控与日志记录。通过集中式监控和告警系统,对每个集成任务进行全程跟踪,及时发现可能出现的问题并快速响应。这一透明可视化操作界面,使得整个团队能够清晰了解当前各环节状态,实现更精确的管理和优化。

值得一提的是,两大系统间存在显著的数据格式差异。例如,从吉客云获得的数据常包含分页信息,而这些需要经过自定义转换逻辑才能适应金蝶云星空所需结构。此外,为防止分页限流问题导致部分订单漏单或重复处理,将辅助工具设置为多线程模式以提高抓取效率,同时引入严格的去重策略来确保所有记录唯一性与准确性。

最后,对于异常情况及错误重试机制,也进行了周密设计。当某步骤因临时故障未能成功执行时,该信息会被立即捕捉并发送至管理员,同时进入自动重试队列;反之,当确认失败后则由专门流程重新提交修正请求,这样既避免遗漏也减低整体风险水平。

总之,本次项目有效展示了如何借助专业工具完成复杂场景下的大规模行业应用需求集合整合工作。在随后的章节里我们将详细解析各主要组成部分以及实际操作示例,请继续关注。 如何对接金蝶云星空API接口

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

在数据集成生命周期的第一步,我们需要从源系统吉客云中调用接口erp.storage.goodsdocout.v2来获取出库单数据,并对其进行初步加工。本文将详细探讨该接口的调用方法、参数配置以及数据清洗过程。

接口调用与参数配置

我们使用POST方法来调用erp.storage.goodsdocout.v2接口,以下是主要的请求参数配置:

  • pageIndex: 分页页码,类型为字符串。
  • pageSize: 分页页数,类型为字符串,默认值为50。
  • goodsDocNo: 出库单号,类型为字符串。
  • startDate: 创建时间的起始时间,类型为字符串,值为{{LAST_SYNC_TIME|datetime}}
  • endDate: 创建时间的结束时间,类型为字符串,值为{{CURRENT_TIME|datetime}}
  • inouttype: 类型,类型为字符串,值为204(其他出库)。
  • sourceBillNo: 来源单号,类型为字符串。
  • warehouseCode: 仓库编号,类型为字符串。
  • vendCode: 供应商编号(往来单位),类型为字符串。
  • billNo: 上游单据号(关联单号),类型为字符串。
  • userName: 创建人名称,类型为字符串。
  • outBillNo: 外部单号(全模糊匹配),类型为字符串。
  • gmtModifiedStart: 主表更新时间起始,类型为字符串。
  • gmtModifiedEnd: 主表更新时间截至,类型为字符串。
  • selelctFields: 返回参数,类型为字符串,值包括多个字段,如goodsdocNo, inOutDate, gmtCreate, userName, inouttype, 等等。

这些参数确保了我们能够精准地获取到所需的数据,同时也方便后续的数据清洗和转换。

数据清洗与过滤条件

在获取数据后,我们需要对数据进行初步清洗和过滤。根据元数据配置中的条件,我们需要满足以下过滤条件:

  1. inOutReason 不包含 "菜鸟" 字样;
  2. userName 不包含 "外部" 字样;
  3. goodsDocDetailList.quantity 小于 0。

这些条件确保了我们只获取到符合业务需求的数据,从而提高数据处理的效率和准确性。

自动填充与平铺处理

为了简化数据处理过程,我们启用了自动填充响应功能(autoFillResponse),并对嵌套结构的数据进行了平铺处理(beatFlat)。具体来说,对于嵌套字段 goodsDocDetailList 我们进行了平铺,以便于后续的数据处理和分析。

数据接管机制

为了确保数据的连续性和完整性,我们还配置了一个数据接管机制(omissionRemedy)。该机制通过定时任务(crontab)每两小时执行一次,从当前时间向前推三天的时间范围内重新拉取数据。具体配置如下:

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

该机制确保了在任何情况下都能及时补充遗漏的数据,从而保证了数据集成过程的完整性和可靠性。

通过以上步骤,我们成功实现了从吉客云接口获取并加工出库单数据,为后续的数据转换与写入奠定了坚实基础。 如何对接金蝶云星空API接口

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

在数据集成过程中,将源平台的数据转换为目标平台所能接受的格式是关键步骤。本文将详细探讨如何使用轻易云数据集成平台将已经集成的源平台数据进行ETL转换,并通过金蝶云星空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"]
  },
  "request": [
    {"field":"FJKYNo","label":"吉客云单号","type":"string","value":"{goodsdocNo}"},
    {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号"},
    {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"QTRKD01_SYS"},
    {"field":"FStockOrgId","label":"库存组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{goodsDocDetailList_ownerName}","mapping":{"target":"6441f0214af70a2f240adb22","direction":"positive"}},
    {"field":"FStockDirect","label":"库存方向","type":"string","describe":"下拉列表","value":"GENERAL"},
    {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{inOutDate}"},
    {"field":"FDeptId","label":"领料部门","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"BM000029"},
    {"field":"FOwnerTypeIdHead","label":"货主类型","type":"","describe":"","value":"","mapping":{"target":"","direction":""}},
    {"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":"","mapping":{"target":"","direction":""}},
    {"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":"","mapping":{"target":"","direction":""}},
    {"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":"",
      ...

数据请求与清洗

在ETL过程中,首先需要从源系统请求数据并进行清洗。轻易云提供了全透明可视化的操作界面,使得这一过程变得直观且高效。

  • 请求字段:如goodsdocNoinOutDategoodsDocDetailList_ownerName等。
  • 清洗规则:可以通过自定义脚本或内置函数对数据进行清洗和格式化。例如,将日期格式统一,去除无效字符等。

数据转换与写入

接下来,我们需要将清洗后的数据转换为金蝶云星空API能够接受的格式,并通过API接口写入目标系统。

  • API接口配置:根据元数据配置,选择适当的API接口,如batchSave
  • HTTP方法:通常使用POST方法发送请求。
  • 字段映射:将源系统的数据字段映射到目标系统所需的字段。例如:
    • FJKYNo映射到{goodsdocNo}
    • FBillTypeID固定值为QTRKD01_SYS
    • FStockOrgId映射到{goodsDocDetailList_ownerName},并通过ConvertObjectParser进行解析。

明细信息处理

对于复杂的数据结构,如明细信息,需要逐条处理并嵌套在主表中:

{
  "field": "FEntity",
  "label": "明细信息",
  "type": "array",
  ...
}

每个明细项包含多个字段,如物料编码、发货仓库、实收数量等。这些字段同样需要通过映射和解析进行转换:

  • FMATERIALID: 映射到 {items.goodsDocDetailList_goodsNo}
  • FSTOCKID: 映射到 {items.warehouseCode}
  • FQty: 实收数量需要乘以-1,以符合负数出库的业务逻辑。

提交与审核

最后,通过设置其他请求参数,实现自动提交和审核:

{
  ...
  {"field": "IsAutoSubmitAndAudit", "label": "提交并审核", "type": "bool", "value": true},
  ...
}

这一步确保了数据在写入后能够立即生效,提升了业务处理效率。

总结

通过以上步骤,我们实现了从源平台到金蝶云星空API接口的数据ETL转换和写入。轻易云的数据集成平台提供了丰富的功能和灵活性,使得这一过程变得高效且透明。在实际应用中,可以根据具体需求调整配置,实现更加复杂的数据集成任务。 系统集成平台API接口配置

更多系统对接方案