使用轻易云数据集成平台进行ETL转换与数据写入

  • 轻易云集成顾问-杨嫦

案例分享:金蝶采购应付单付款金额对接易快报采购订单帐表(非月结)

在实现企业财务管理系统化过程中,数据集成的挑战往往体现在多平台的数据汇聚与精准处理。本案例探讨了如何通过轻易云数据集成平台,将金蝶云星空中的采购应付单付款金额,顺利对接到易快报的采购订单帐表,并解决其中遇到的各种技术难题。

金蝶云星空接口executeBillQuery调用

为了获取金蝶云星空中的精准数据,我们选择使用其API接口executeBillQuery。该接口允许我们按需查询和提取所需账务信息,但面对大量请求时,需要有效处理分页和限流问题,以确保稳定高效的数据抓取过程。

{
  "formId": "AP_Payable",
  "fieldKeys": ["FID", "FPAYORGID", "FSUPPLIERID", "..."],
  ...
}

数据格式差异处理

由于金蝶云星空与易快报之间的数据结构存在显著差异,直接传输会导致数据不一致。因此,在对接前需要进行定制化的数据映射。通过配置转换规则,我们将不同字段进行对应匹配,从而实现无缝对接。例如,对于组织机构编码与供应商标识等关键字段,需要特别注意统一标准以避免错误。

批量写入到易快报

为确保大量数据能够快速而准确地写入至易快报系统,我们采用批量写入方式,通过调用 /api/openapi/v2.1/datalink/add 接口,实现一键导入。此外,为了保证可靠性,每次批量操作均包含失败重试机制,当网络或服务器响应异常时自动重新提交请求,提高整体成功率。

{
  "appKey": "<YOUR_APP_KEY>",
  "dataSourceName": "<DATA_SOURCE_NAME>",
  ...
}

实时监控和日志记录

在整个集成过程中,不仅要求各项任务执行高效,还必须能够实时监控每一个环节。一方面,通过设置实时监控模块,可以追踪每条数据的流动状态;另一方面,通过详尽的日志记录功能,定位并分析任何出现的问题。同时,这也为后续优化提供了宝贵的一手资料。

本案例展示了一整套从获取源头数据信息,到中间格式转换,再到最终目标系统录入的完整流程。在具体实施方案中,还涉及更多细节优化及错误处理,例如分页策略、限流控制、重试机制等部分将在下文进一步剖析。 如何开发金蝶云星空API接口

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

在数据集成的生命周期中,调用源系统接口是关键的第一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口,以获取并加工采购应付单付款金额数据。

接口配置与调用

首先,我们需要根据元数据配置来设置API请求参数。以下是元数据配置的详细信息:

{
  "api": "executeBillQuery",
  "effect": "QUERY",
  "method": "POST",
  "number": "FBillNo",
  "id": "FPAYBILLSRCENTRY_FEntryID",
  "name": "FNumber",
  "idCheck": true,
  "request": [
    {"field": "FBillNo", "label": "单据编码", "type": "string", "describe": "FSupplierId", "value": "FBillNo"},
    {"field": "FSRCBILLNO", "label": "应付单编码", "type": "string", "describe": "编码", "value": "FSRCBILLNO"},
    {"field": "FAFTTAXTOTALAMOUNT", "label": "应付金额", "type": "string", "describe": "", "value": "FAFTTAXTOTALAMOUNT"},
    {"field": "FPLANPAYAMOUNT", "label": "计划付款金额", 
![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/S14.png~tplv-syqr462i7n-qeasy.image)
### 使用轻易云数据集成平台进行ETL转换并写入易快报API接口

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

#### 配置API接口元数据

首先,我们需要配置易快报API接口的元数据。以下是具体的元数据配置:

```json
{
  "api": "/api/openapi/v2.1/datalink/add",
  "effect": "EXECUTE",
  "method": "POST",
  "number": "1",
  "id": "1",
  "name": "1",
  "idCheck": true,
  "operation": {
    "method": "merge",
    "field": "FSRCBILLNO",
    "bodyName": "details",
    "bodySum": ["mount", "realamount"],
    "header": ["FSRCBILLNO"],
    "body": ["FSRCBILLNO", "FCURRENCYID", "mount", "realamount"]
  },
  "request": [
    {
      "field": "entityId",
      "label": "entityId",
      "type": "string",
      "describe": "",
      "value": "d010287a119a9f41cbc0"
    },
    {
      "field": "dataLinks",
      "label": "",
      "type": "",
      ...
    }
  ]
}

数据请求与清洗

在ETL过程中,首先需要从源系统请求数据并进行清洗。这里我们假设已经完成了这一步,接下来直接进入数据转换与写入阶段。

数据转换与写入

  1. 定义请求体结构

    根据元数据配置,我们需要构造一个符合易快报API要求的请求体。以下是请求体的结构示例:

    {
     entityId: 'd010287a119a9f41cbc0',
     dataLinks: [
       {
         disabled: 'false',
         fsrcbillno: '{FSRCBILLNO}',
         data: {
           E_d010287a119a9f41cbc0_code: '_mongoQuery ae0d8634-8acf-3147-a2a4-e4071b04a423 findField=content.E_d010287a119a9f41cbc0_code where={"content.E_d010287a119a9f41cbc0_name":{"$eq":"{{details.FSRCBILLNO}}"}}',
           E_d010287a119a9f41cbc0_name: '{{details.FSRCBILLNO}}',
           E_d010287a119a9f41cbc0_实付金额: '_function case when \'{{details.FCURRENCYID}}\'=\'CNY\' then \'{{details.realamount}}\' else \'{{details.FCURRENCYID}}{{details.realamount}}\' end',
           E_d010287a119a9f41cbc0_付款日期: '_function UNIX_TIMESTAMP() * 1000',
           E_d010287a119a9f41cbc0_Payment_Status: '_function case when {{details.mount}}=0 then \'全部支付\' else \'部分支付\' end',
           E_d010287a119a9f41cbc0_Payment_Status1: '_function case when {{details.mount}}=0 then \'ID01wcdxf09nBl\' else \'ID01wcdrmrYjH9\' end',
           E_d010287a119a9f41cbc0_Open_Commitment: '_function case when \'{{details.FCURRENCYID}}\'=\'CNY\' then \'{{details.mount}}\' else \'{{details.FCURRENCYID}}{{details.mount}}\' end'
         }
       }
     ],
     editFlag: 'increment'
    }
  2. 字段映射与转换

    在构造请求体时,需要对字段进行映射和转换。例如:

    • E_d010287a119a9f41cbc0_实付金额 字段需要根据货币类型(FCURRENCYID)进行条件判断和拼接。
    • E_d010287a119a9f41cbc0_Payment_Status 字段根据 mount 值判断支付状态。
    • E_d010287a119a9f41cbc0_Payment_Status1 字段同样根据 mount 值映射到具体的支付状态选项。
  3. 执行POST请求

    最后,通过POST方法将构造好的请求体发送到易快报API接口:

    const axios = require('axios');
    
    const requestBody = {
     entityId: 'd010287a119a9f41cbc0',
     dataLinks: [
       //...上述构造好的dataLinks数组
     ],
     editFlag: 'increment'
    };
    
    axios.post('/api/openapi/v2.1/datalink/add', requestBody)
     .then(response => {
       console.log('Data successfully written to target platform:', response.data);
     })
     .catch(error => {
       console.error('Error writing data to target platform:', error);
     });

通过以上步骤,我们实现了从源系统到目标平台的数据ETL转换和写入。该过程充分利用了轻易云数据集成平台提供的全异步、多异构系统支持特性,确保了不同系统间的数据无缝对接。 如何对接企业微信API接口

更多系统对接方案