数据集成与ETL转换:写入金蝶云星空API接口

  • 轻易云集成顾问-叶威宏
### (线下)对账导入对接金蝶应收单:实现高效数据集成 在实际的企业业务运营中,对账数据的正确导入和处理至关重要。本文将分享一个具体案例,展示如何通过轻易云数据集成平台,实现从金蝶云星空系统到另一个金蝶云星空实例的数据高效对接——特别是在(线下)对账导入到应收单的场景。 为了确保整个过程中的数据不漏单并且快速写入,我们利用了几个关键API接口,包括获取数据的`executeBillQuery`和写入数据的`batchSave`。这些API提供了可靠的方法来处理大量的数据,并保证其准确性。 首先,在源系统中执行一次完整的数据抓取操作,这是通过调用`executeBillQuery`接口实现的。该接口支持定时抓取功能,可以按照设定计划自动拉取最新的数据,为批量处理提供基础。在这一过程中,需要注意分页及限流问题,以避免超出接口限制导致失败或延迟。 其次,针对获取到的大量原始对账数据,我们进行了必要的数据预处理。这包括格式转换、字段匹配以及根据业务需要进行的一些自定义映射。对于不同类型或结构复杂度较高的数据,通过制定特定的映射规则,保证在目标系统成功落地并且符合业务需求。 在实施过程中,还需考虑异常情况和错误重试机制。一旦出现网络问题或者其他意外状况,通过内置日志记录与实时监控功能,可以迅速定位问题来源,并采取相应措施,比如重新执行部分任务以补偿遗漏的数据包。此外,对接双方环境配置与性能优化也是重点关注点,以确保总体流程高效稳定运行。 本案例重点解决的问题是如何有效地将大批量、本地离线产生的对账信息安全、迅速地同步至远程服务器上的金蝶云星空应收模块。这不仅提高了财务部门日常工作的效率,也为后续财务分析奠定了坚实基础。在下一篇详细说明中,我们将进一步探讨具体配置步骤及技术细节,包括相关代码示例和参数设置方法等内容。 ![打通用友BIP数据接口](https://pic.qeasy.cloud/D20.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将深入探讨如何使用轻易云数据集成平台调用金蝶云星空接口`executeBillQuery`来获取并加工数据。 #### 接口配置与请求参数 首先,我们需要了解`executeBillQuery`接口的基本配置和请求参数。根据提供的元数据配置,接口采用POST方法进行调用,主要用于查询操作(effect: QUERY)。以下是关键的请求参数: - **FID**: 唯一标识符 - **FEntity_FEntryID**: 明细行标识符 - **FBillNo**: 单据编号 - **FDocumentStatus**: 单据状态(如暂存、创建、审核中、已审核) - **F_PBLH_BillTypeID_qtr_FNumber**: 单据类型(如标准采购订单、标准委外订单等) - **F_PBLH_shop_no_FNumber**: 店铺编码 - **F_PBLH_shop_no_FName**: 店铺名称 - **F_PBLH_trade_no**: 订单编号 - **F_PBLH_spec_no_FNumber**: 货品编号 - **F_PBLH_spec_no_FName**: 货品名称 - **F_PBLH_goods_count**: 货品数量 - **F_PBLH_receivable**: 应收金额 - **F_PBLH_paid**: 单品支付金额 - **F_PBLH_consign_time**: 发货日期 - **F_PBLH_trade_type**: 订单类型 - **FDate**: 应收单日期 此外,还有一些其他请求参数,如最大行数(Limit)、开始行索引(StartRow)、过滤条件(FilterString)等。 #### 请求示例 为了更好地理解如何调用该接口,以下是一个具体的请求示例: ```json { "FormId": "PBLH_WDTDZJG", "FieldKeys": "FID,FEntity_FEntryID,FBillNo,FDocumentStatus,F_PBLH_BillTypeID_qtr.FNumber,F_PBLH_shop_no.FNumber,F_PBLH_shop_no.FName,F_PBLH_trade_no,F_PBLH_spec_no.FNumber,F_PBLH_spec_no.FName,F_PBLH_goods_count,F_PBLH_receivable,FDate", "FilterString": "FApproveDate>='2023-01-01' and F_PBLH_shop_no.F_PBLH_isonline = 0 and F_PBLH_BillTypeID_qtr.FNumber='CKDZ'", "Limit": "2000", "StartRow": "0" } ``` 在这个请求中,我们指定了业务对象表单Id为`PBLH_WDTDZJG`,需要查询的字段集合包括`FID`, `FBillNo`, `FBillNo`, `FDocumentStatus`, `FDate`等,并通过过滤条件筛选出符合条件的数据。 #### 数据清洗与转换 获取到原始数据后,需要对其进行清洗和转换,以便后续处理。轻易云平台提供了强大的数据清洗和转换功能,可以通过可视化界面设置各种规则。例如: 1. **字段映射与重命名**:将原始字段映射到目标系统所需的字段,并进行重命名。 2. **数据格式转换**:将日期格式从YYYY-MM-DD转换为目标系统所需的格式。 3. **数据过滤与校验**:根据业务规则过滤掉不符合要求的数据,并进行必要的校验。 #### 数据写入 完成数据清洗和转换后,下一步是将处理后的数据写入目标系统。这通常涉及到调用目标系统的API接口,将清洗后的数据批量插入或更新到目标数据库中。 #### 实时监控与日志记录 在整个过程中,轻易云平台提供了实时监控和日志记录功能,可以随时查看每个步骤的执行状态和结果。如果出现错误,可以通过日志快速定位问题并进行修复。 通过以上步骤,我们可以高效地调用金蝶云星空接口`executeBillQuery`获取并加工数据,为后续的数据处理和分析奠定坚实基础。 ![金蝶与SCM系统接口开发配置](https://pic.qeasy.cloud/S18.png~tplv-syqr462i7n-qeasy.image) ### 数据集成与ETL转换:将数据写入金蝶云星空API接口 在数据集成生命周期的第二步,我们将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。本文将深入探讨如何通过轻易云数据集成平台实现这一过程。 #### 配置元数据 首先,我们需要配置元数据,以确保数据能够正确地转换并写入金蝶云星空API接口。以下是一个详细的元数据配置示例: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "operation": { "method": "merge", "field": "FDate,F_PBLH_shop_no_FNumber,F_PBLH_consign_time,F_PBLH_shop_no_F_PBLH_custno,F_PBLH_trade_no,KDStock", "bodyName": "list", "bodySum": ["F_PBLH_goods_count", "F_PBLH_single_allamount"], "header": ["FDate", "F_PBLH_shop_no_FNumber", "F_PBLH_consign_time", "F_PBLH_shop_no_F_PBLH_custno", "F_PBLH_trade_no", "KDStock"], "body": ["F_PBLH_spec_no_FNumber", "F_PBLH_goods_count", "F_PBLH_single_allamount"] }, ... } ``` #### 请求参数解析 在请求参数中,我们需要特别注意字段的解析和转换。例如,以下字段通过`ConvertObjectParser`进行解析: ```json { "field": "FBillTypeID", "label": "单据类型", ... "parser": { "name": "ConvertObjectParser", ... }, ... } ``` 这些字段包括但不限于单据类型、结算组织、客户、销售部门等。解析器会根据预定义规则将源数据转换为目标系统所需的格式。 #### 数据清洗与转换 在ETL过程中,数据清洗与转换是关键步骤。我们需要确保每个字段的数据都符合目标系统的要求。例如,以下是一些具体的转换规则: - **业务日期**:将源系统中的业务日期字段`{FDate}`直接映射到目标系统。 - **客户**:通过MongoDB查询获取客户编号,并映射到目标系统。 - **物料编码**:物料编码通过`ConvertObjectParser`进行解析,并映射到目标系统。 ```json { ... { "field": "FCUSTOMERID", ... "value": "_mongoQuery f3b55dc4-44d0-3a14-a28f-c372d39e70cc findField=content.FCustomerId_FNumber where={\"content.FNumber\":{\"$eq\":\"{F_PBLH_shop_no_FNumber}\"}}" }, ... } ``` #### 明细处理 对于明细部分,我们需要处理多个子字段,并确保它们正确地映射到目标系统。例如: ```json { ... { "field": "FEntityDetail", ... { ... { ... { ... { ... {"field":"warehouse_no","label":"warehouse_no","type":"string","value":"{KDStock}"} } } } } } } ``` 在这个示例中,我们处理了物料编码、计价数量、含税单价等多个字段,并确保它们符合金蝶云星空API接口的要求。 #### 提交与审核 最后,我们需要配置提交和审核选项,以确保数据能够自动提交并审核: ```json { ... { ... {"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","describe":"提交并审核","value":"true"} } } ``` 通过上述配置,我们可以实现从源平台到金蝶云星空API接口的数据无缝对接。这不仅提高了数据处理效率,还确保了数据的一致性和准确性。 ![如何对接用友BIP接口](https://pic.qeasy.cloud/T26.png~tplv-syqr462i7n-qeasy.image)