ETL流程优化:通过轻易云实现金蝶云星空数据批量写入

  • 轻易云集成顾问-姚缘

系统对接集成案例分享:金蝶云星空数据集成到金蝶云星空

在复杂多变的业务环境中,实现不同系统之间的数据无缝对接是每个企业提升运营效率的关键环节。本次技术分享将聚焦于一个具体的系统对接集成案例,展示如何通过轻松高效的数据处理方式,将金蝶云星空平台的数据成功集成到另一实例中。本文将以收款退款单OK_鼎悦_copy方案为基础,详细介绍整个实现过程中的核心技术要点和解决方案。

首先,我们面对的是一项需要从源系统(金蝶云星空)获取大量收款退款单数据,并批量写入目标系统(金蝶云星空)的任务。为了确保数据处理的时效性以及准确性,本次实施过程中主要采用了以下几个关键特性:

  • 支持高吞吐量的数据写入能力:通过优化数据流设计和API调用频率,实现了海量数据在短时间内快速并稳定地写入目标系统。

  • 集中监控与告警系统:实时监测每个数据集成任务的状态及性能指标,有效预防和及时处理潜在问题。

  • 自定义数据转换逻辑与异常重试机制:针对特定业务需求,对接口返回的数据格式进行转换,同时配置了健全的错误处理逻辑,包括分页、限流策略及重试机制,以保证整体流程的一致性和可靠性。

这一系列举措保障了我们能够顺利且准确地执行executeBillQuery 并使用 batchSave API完成大规模、高频次的数据传输。这不仅提高了操作效率,也确保每一条收款退款单都能被完整捕获,不遗漏任何重要信息。

后续部分将详细阐述具体步骤,包括如何有效调用金蝶云星空接口、对接过程中需要注意的问题,以及应对异常情况的方法等内容,从而帮助您更好地掌握这套解决方案并应用于实际业务场景中。 数据集成平台API接口配置

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

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

接口配置与请求参数

首先,我们需要配置接口的元数据,以确保能够正确地请求和处理数据。以下是元数据配置的关键部分:

{
  "api": "executeBillQuery",
  "method": "POST",
  "number": "FBillNo",
  "id": "FREFUNDBILLENTRY_FEntryID",
  "pagination": {"pageSize": 500},
  "idCheck": true,
  "request": [
    {"field":"FREFUNDBILLENTRY_FEntryID","label":"FREFUNDBILLENTRY_FEntryID","type":"string","value":"FREFUNDBILLENTRY_FEntryID"},
    {"field":"FID","label":"实体主键","type":"string","value":"FID"},
    {"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"},
    {"field":"FDOCUMENTSTATUS","label":"单据状态","type":"string","value":"FDOCUMENTSTATUS"},
    {"field":"FCreaterId","label":"创建人","type":"string","value":"FCreaterId"},
    {"field":"FCreateDate","label":"创建日期","type":"string","value":"FCreateDate"},
    {"field":"FSETTLEORGID.FNumber","label":"结算组织","type":"string","value":"FSETTLEORGID"}
  ],
  "otherRequest": [
    {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
    {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
    {"field": "FilterString", "label": "过滤条件", "type": "string", 
     "describe": "", 
     "value": 
     `FBillNo ='SKTKD00154013'or
      FBillNo ='SKTKD00154014'or
      FBillNo ='SKTKD00154015'`}
  ]
}

请求与响应处理

  1. 构建请求体:根据上述元数据配置,构建请求体以POST方式发送给金蝶云星空接口。
{
  "FormId": "AR_REFUNDBILL",
  ...
}
  1. 分页处理:由于可能存在大量数据,使用分页参数LimitStartRow进行分批次请求,每次请求500条记录。

  2. 过滤条件:通过FilterString字段设置过滤条件,以确保只获取需要的数据。例如,按单据编号过滤:

{
  ...
  "FilterString":
   `FBillNo ='SKTKD00154013'or
    FBillNo ='SKTKD00154014'or
    FBillNo ='SKTKD00154015'`
}
  1. 字段选择:通过FieldKeys字段指定需要查询的字段集合,例如:
{
  ...
  FieldKeys: ["FBillNo", ...].join(",")
}

数据清洗与转换

在获取到原始数据后,需要进行清洗和转换,以便后续处理和存储。以下是一些常见的数据清洗步骤:

  1. 字段映射:将原始字段名映射到目标系统所需的字段名。
  2. 数据类型转换:确保所有字段的数据类型符合目标系统要求。例如,将日期字符串转换为标准日期格式。
  3. 缺失值处理:对缺失值进行填充或删除,确保数据完整性。

实例代码

以下是一个示例代码片段,用于调用接口并处理响应数据:

const axios = require('axios');

async function fetchData() {
  const requestBody = {
    FormId: 'AR_REFUNDBILL',
    FieldKeys: 'FBillNo,FCreateDate,FDOCUMENTSTATUS',
    FilterString: `FBillNo ='SKTKD00154013'or FBillNo ='SKTKD00154014'`,
    Limit: 500,
    StartRow: 0
  };

  try {
    const response = await axios.post('https://api.kingdee.com/executeBillQuery', requestBody);

    if (response.data && response.data.Result) {
      const data = response.data.Result;
      // 数据清洗与转换逻辑
      data.forEach(record => {
        record.FCreateDate = new Date(record.FCreateDate).toISOString();
        // 更多清洗逻辑...
      });

      return data;
    }

  } catch (error) {
    console.error('Error fetching data:', error);
  }
}

fetchData().then(data => console.log(data));

通过上述步骤,我们可以高效地从金蝶云星空获取并加工所需的数据,为后续的数据写入和分析奠定基础。 打通金蝶云星空数据接口

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

在数据集成的生命周期中,ETL(Extract, Transform, Load)过程是将源数据转换为目标平台所需格式的关键步骤。本文将详细介绍如何使用轻易云数据集成平台,将已经集成的源平台数据转换为金蝶云星空API接口能够接收的格式,并最终写入目标平台。

API接口配置

在本案例中,我们使用金蝶云星空的batchSave API接口进行数据写入操作。该接口通过HTTP POST方法接收请求,并支持批量保存功能。以下是元数据配置中的关键字段及其解释:

  • api: batchSave
  • method: POST
  • idCheck: true
  • operation:
    • method: merge
    • field: FBillTypeID,FBillNo,FDATE,FPAYORGID
    • bodyName: details
    • header: 包含单据类型、日期、往来单位类型、币别等字段
    • body: 包含结算方式、退款金额、我方银行账号等字段

请求参数解析与转换

元数据配置中的请求参数定义了如何从源数据中提取和转换字段值,以符合目标平台的要求。以下是一些关键字段及其解析逻辑:

  • FBillTypeID(单据类型):

    • 类型:string
    • 解析器:ConvertObjectParser
    • 参数:FNumber
    • 固定值:SKTKDLX01_SYS
  • FDATE(日期):

    • 类型:string
    • 值:{FDATE}
  • FCONTACTUNITTYPE(往来类型):

    • 类型:string
    • 值:{FCONTACTUNITTYPE}
  • FCONTACTUNIT(往来单位):

    • 类型:string
    • 解析器:ConvertObjectParser
    • 参数:FNumber
    • 值:{FCONTACTUNIT}

这些字段通过解析器和映射关系,从源数据中提取并转换为目标格式。例如,ConvertObjectParser用于将源系统中的对象编号转换为金蝶云星空所需的编号格式。

明细项处理

对于明细项,我们使用数组结构来定义每个明细项的字段及其值。例如:

{
    "field": "FREFUNDBILLENTRY",
    "label": "明细",
    "type": "array",
    "children": [
        {
            "field": "FSETTLETYPEID",
            "label": "结算方式",
            "type": "string",
            "parser": {"name": "ConvertObjectParser", "params": "FNumber"},
            "value": "{FSETTLETYPEID}",
            "parent": "FREFUNDBILLENTRY"
        },
        {
            "field": "FPURPOSEID",
            "label": "原收款用途",
            "type": "string",
            "parser": {"name": "ConvertObjectParser", "params": "FNumber"},
            "value": "{FPURPOSEID}",
            "parent": "FREFUNDBILLENTRY"
        },
        {
            "field": "FREFUNDAMOUNTFOR",
            "label": "退款金额",
            "type": "string",
            "value": "{FREFUNDAMOUNTFOR_E}",
            "parent": "FREFUNDBILLENTRY"
        }
    ],
    ...
}

每个明细项通过父子关系进行关联,并根据需要进行字段解析和转换。例如,结算方式(FSETTLETYPEID)通过解析器将源系统中的值转换为目标系统所需的格式。

特殊配置项

除了常规字段外,还有一些特殊配置项需要注意:

  • FormId: 指定业务对象表单Id,例如:AR_REFUNDBILL
  • Operation: 执行操作,例如:BatchSave
  • IsAutoSubmitAndAudit: 是否自动提交并审核,布尔值,例如:false

这些配置项确保了请求能够正确识别和处理业务对象,并根据需求执行相应操作。

数据写入操作

完成上述配置后,通过HTTP POST方法将构建好的请求发送至金蝶云星空API接口,实现数据写入操作。以下是一个示例请求结构:

{
    "FormId":"AR_REFUNDBILL",
    ...
    // 请求头部信息
    ...
    // 请求体信息
    ...
}

通过轻易云数据集成平台,我们可以实现从源系统到目标系统的数据无缝对接,确保每个环节的数据都能准确、高效地传递和处理。这不仅提升了业务透明度和效率,也大大简化了复杂异构系统间的数据集成工作。 电商OMS与ERP系统接口开发配置

更多系统对接方案