轻易云平台ETL转换:从吉客云到金蝶云星空的最佳实践

  • 轻易云集成顾问-陈洁琳

案例分享:吉客云账单查询(负数)对接金蝶付款退款单

在实现系统间的数据无缝集成时,确保数据的准确性、及时性与可靠性至关重要。本次我们将探讨如何通过轻易云数据集成平台,将吉客云中的负数账单数据高效地对接至金蝶云星空,并生成对应的付款退款单。这个具体案例中,我们将利用各自API接口完成有关操作,包括从吉客云获取账单信息,以及写入到金蝶云星空。

首先,要确保每一条从吉客云拉取的数据都能被准确捕捉并传递给金蝶,是本次方案的关键挑战之一。我们使用了acs.billinfo.get API来抓取吉客云中的账单数据,通过设计定时任务和限流策略保障数据不会遗漏,且可应对高并发场景:

  • 定时可靠的抓取机制:为了避免漏单现象发生,我们设置了多个定时任务,每个任务按照预设时间间隔调用acs.billinfo.get接口,从而保证数据按需实时更新。
  • 分页与限流处理:由于大量请求可能触发API调用限制,我们采用分页技术,在每次请求中指定页码和页大小,通过循环方式逐步获取全量账单。同时也增加重试机制以应对偶发错误。

其次,当这些来自于吉客云的数据被成功拉取后,需要进行相应格式变换,以便符合目标系统——金蝶云星空所要求的数据结构。这一步骤涉及字段映射、类型转换等操作,通过定制化脚本进行处理:

  • 格式差异处理:针对不同字段名称及格式问题,例如金额单位、日期格式等内容,我们编写了一系列转换规则,确保源系统与目标系统之间的信息无缝衔接。
  • 批量写入优化:使用batchSave API 将整理后的大批量记录高效注入到金蝶。如果遇见部分失败情况,可依据日志信息进行分段重试。

最后,为了全面监控整个处理过程,有必要引入实时监控与日志记录功能。在实际运行过程中,各环节状态均会被详细记录下来,一旦出现异常,可以迅速定位问题所在,实现有效的错误修复和重试机制:

  • 异常处理与重试机制:任何一环节出错都会即时触发告警,同时保留现场日志。根据前述策略重新初始化相关步骤以确认已解决潜在问题。

以上只是整体方案的一部分,引子读者了解背景及关键技术点。未来章节将深入剖析代码搭建细节以及更多实战经验,使得此集成方案 数据集成平台API接口配置

调用吉客云接口acs.billinfo.get获取并加工数据

在数据集成生命周期的第一步,我们需要调用源系统吉客云的接口acs.billinfo.get来获取账单信息,并对数据进行初步加工。本文将详细探讨如何通过轻易云数据集成平台配置元数据,完成这一过程。

接口调用与元数据配置

首先,我们需要了解如何调用吉客云的接口acs.billinfo.get。该接口用于获取账单信息,特别是我们关注的负数账单(即退款相关的数据)。以下是元数据配置的详细说明:

{
  "api": "acs.billinfo.get",
  "method": "Get",
  "number": "billAccountNo",
  "id": "billAccountNo",
  "pagination": {
    "pageSize": 50
  },
  "condition": [
    [
      {
        "field": "outAmount",
        "logic": "lt",
        "value": "0"
      }
    ]
  ],
  "idCheck": true,
  "request": [
    {
      "field": "pageIndex",
      "label": "分页页码",
      "type": "string"
    },
    {
      "field": "pageSize",
      "label": "分页页数",
      "type": "string",
      "value": "100"
    },
    {
      "field": "settleAccountNameHeader",
      "label": "账户名",
      "type": "string"
    },
    {
      "field": "bookTimeStart",
      ...

数据请求与清洗

在进行数据请求时,我们需要传递必要的参数以确保获取到所需的数据。上述配置中,pageIndexpageSize用于分页控制,默认每页返回100条记录。其他字段如settleAccountNameHeaderbookTimeStartbookTimeEnd等则用于过滤和限定查询范围。

特别注意的是,我们使用了一个条件过滤器:

"condition":[[{"field":"outAmount","logic":"lt","value":"0"}]]

这意味着我们只获取那些出账金额小于0的记录,即负数账单。这些记录通常代表退款或其他负向交易,需要特别处理。

数据转换与写入

在获取到原始数据后,我们需要对其进行转换,以便能够写入目标系统(如金蝶付款退款单)。以下是一些关键字段及其转换逻辑:

  • billAccountNo: 原始账务流水号,作为唯一标识。
  • tradeNos: 网店订单号,用于关联具体交易。
  • bizNos: 业务流水号,用于进一步追踪。
  • bookTimeStart, bookTimeEnd: 时间范围,用于限定查询时间段。

此外,还需要处理一些固定值字段,如:

{
  ...
  {"label":"账单类型","field":"billType","type":"string","value":"1"},
  {"label":"账单状态","field":"auditStatus","type":"string","value":"1"},
  {"label":"对账状态","field":"checkStatus","type":"string","value":"1"},
  ...
}

这些字段在每次请求中都保持不变,用于确保查询结果的一致性和准确性。

实际案例分析

假设我们要从吉客云中获取最近两个月内所有负数账单,并将其写入金蝶系统。首先,我们会设置时间范围:

{
  ...
  {"field":"bookTimeStart","label":"开始时间","type":"string","value":"_function from_unixtime(({CURRENT_TIME}-5184000),'%Y-%m-%d %h:%i:%s')"},
  {"field":"bookTimeEnd","label":"结束时间","type":"string","value":"{{CURRENT_TIME|datetime}}"},
  ...
}

这里使用了函数计算当前时间减去60天(5184000秒),以确定查询的起始时间。同时,结束时间设置为当前时间。

接下来,通过轻易云平台发起API请求,并对返回的数据进行清洗和转换。例如,将原始JSON格式的数据解析为目标系统所需的格式,并根据业务需求进行字段映射和处理。

小结

通过上述步骤,我们可以高效地调用吉客云接口获取负数账单信息,并对数据进行初步加工,为后续的数据转换与写入奠定基础。在整个过程中,轻易云平台提供了全透明可视化操作界面,使得每个环节都清晰易懂,大大提升了业务透明度和效率。 用友与WMS系统接口开发配置

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

在数据集成的过程中,将源平台的数据转换为目标平台能够接受的格式是关键步骤之一。本文将详细探讨如何使用轻易云数据集成平台将吉客云账单查询(负数)数据转换为金蝶云星空API接口所能接收的付款退款单格式,并最终写入目标平台。

元数据配置解析

在进行ETL转换时,首先需要理解元数据配置。以下是一个典型的元数据配置示例:

{
  "api": "batchSave",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "method": "batchArraySave",
    "rows": 1,
    "rowsKey": "array"
  },
  "groupCalculate": {
    "headerGroup": ["settleAccountName", "bookTime_new", "bizType"],
    "bodyGroup": ["bizType", "itemCode"],
    "bodyName": "details",
    "targetBodyName": "FREFUNDBILLENTRY",
    "bodyMaxLine": 50,
    "calculate": {
      "outAmount": "$sum"
    }
  },
  ...
}

该配置文件定义了如何将源数据映射到金蝶云星空API接口所需的字段。

数据请求与清洗

在ETL流程中,首先从吉客云获取账单查询(负数)数据,并进行必要的数据清洗和预处理。这一步骤通常包括:

  • 数据格式化:确保所有字段符合目标平台要求。
  • 数据过滤:去除无效或重复的数据。
  • 数据校验:验证数据的完整性和一致性。

数据转换与写入

接下来,我们重点关注如何将清洗后的数据转换为金蝶云星空API接口所能接受的格式,并通过API写入目标平台。

配置字段映射

根据元数据配置文件,我们需要将源数据字段映射到目标API字段。例如:

{
  "field": "FBillNo",
  "label": "单据编号",
  ...
},
{
  ...
}

在这个示例中,FBillNo对应的是源数据中的“单据编号”。类似地,其他字段也需要按照元数据配置文件进行映射。

设置业务逻辑

元数据配置文件中还包含了一些业务逻辑,例如:

{
  ...
  "value":"_function CASE '{settleAccountName}' when '生和堂科技(天猫生和堂食品旗舰)支付宝' then 104 else 103 end"
},
{
  ...
}

这段代码表示根据settleAccountName的值来决定FSETTLEORGID的值。如果settleAccountName是“生和堂科技(天猫生和堂食品旗舰)支付宝”,则FSETTLEORGID为104,否则为103。

数组处理

对于数组类型的数据,例如付款单明细,需要特别处理:

{
  ...
  {
    "field":"FREFUNDBILLENTRY",
    ...
    {
      ...
      {
        ...
        {"field":"FREFUNDAMOUNTFOR","label":"表体-应退金额","type":"string","describe":"表体-应收金额","value":"_function ABS({{details.outAmount}})","parent":"FRECEIVEBILLENTRY"},
        ...
      }
      ...
    }
    ...
  }
}

这里定义了付款单明细中的各个字段及其对应关系,并使用函数对某些字段进行计算,例如取绝对值。

API请求构建

最后,根据上述配置构建API请求,并发送至金蝶云星空:

{
  ...
  {
    "FormId":"AP_REFUNDBILL",
    ...
    {
      ...
      {"Operation":"BatchSave"},
      {"IsAutoSubmitAndAudit":"true"},
      {"IsVerifyBaseDataField":"false"}
      ...
    }
    ...
  }
}

通过POST方法发送请求,将转换后的数据批量保存至金蝶云星空系统。

实践案例

假设我们从吉客云获取到以下账单查询(负数)数据:

[
   {
     ... // 源平台具体账单信息
   }
]

经过上述步骤处理后,生成如下API请求:

{
   ... // 转换后的目标平台格式
}

发送至金蝶云星空系统后,系统会返回处理结果,我们可以根据返回结果进一步处理,如记录日志、错误处理等。

通过以上步骤,我们实现了从吉客云到金蝶云星空的数据无缝对接,确保了业务流程的顺畅运行。 用友与CRM系统接口开发配置

更多系统对接方案