轻易云平台ETL案例:从数据提取到转换集成金蝶云星空

  • 轻易云集成顾问-钟家寿

金蝶云星空数据集成:其他出库单OK在用案例分享

在实际业务场景中,金蝶云星空系统往往需要处理大量的业务数据,其中确保数据的准确性和及时性至关重要。本次技术案例主要讨论如何通过轻易云数据集成平台,将金蝶云星空中的“其他出库单”高效、安全地集成到同一系统。

为了实现这一目标,我们采取了以下具体措施:

  1. 高吞吐量的数据写入能力: 采用轻易云平台提供的batchSave API,通过批量处理机制将大量出库单快速、稳定地写入金蝶云星空系统。这种方式不仅提高了数据处理时效性,还大幅降低了网络延迟和服务器压力。

  2. 集中监控与告警系统: 配置集中监控和告警系统,实现对整个数据集成过程的实时跟踪。借助可视化界面,运维人员能够清晰掌握每一个节点的数据流动情况,并且在出现异常时及时收到告警信息,从而迅速定位并解决问题。

  3. API资产管理功能: 为了最大化利用企业资源,我们利用金蝶云星空 API 资产管理模块,对接入以及调用状况进行全面分析与评估。使用统一视图帮助我们明确各接口的使用频率和性能表现,进而优化配置,提高整体运行效率。

  4. 自定义转换逻辑与实时检测: 根据实际业务需求,设计了一套自定义的数据转换逻辑,使得从源端获取的数据经过计算、加工后适配于目标端。同时,引入消息队列技术,结合 ExecuteBillQuery API 定期抓取待采购订单,不仅避免漏单现象,也能即使发现并处理潜在的数据质量问题。

  5. 分布式错误重试机制及限流控制策略 由于一些意外因素可能导致接口请求失败,为此我们引入分布式错误重试机制,在保存过程中记录完整日志,当某个批次出现故障时,可以选择对应时间段进行重发操作,同时实施严格的限流策略防止突然新增的大量订单压垮服务器,提高服务稳健度。

通过以上多措并举,本方案成功达到了预期效果,不仅极大提升了“其他出库单”的处理效率,也确保整个流程透明可控。本次案例为类似项目提供了一定参考价值,希望有助于行业同仁进一步理解并应用这些技术手段。 如何对接金蝶云星空API接口

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

在数据集成生命周期的第一步,我们需要从源系统获取数据,并对其进行初步加工。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口,获取其他出库单的数据。

接口调用配置

首先,我们需要配置API调用的元数据,以便正确地请求和处理数据。以下是元数据配置的详细内容:

{
  "api": "executeBillQuery",
  "method": "POST",
  "number": "FBillNo",
  "id": "FEntity_FEntryID",
  "pagination": {
    "pageSize": 500
  },
  "idCheck": true,
  "request": [
    {"field":"FEntity_FEntryID","label":"FEntryID","type":"string","value":"FEntity_FEntryID"},
    {"field":"FID","label":"实体主键","type":"string","value":"FID"},
    {"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"},
    {"field":"FDocumentStatus","label":"单据状态","type":"string","value":"FDocumentStatus"},
    {"field":"FStockOrgId_FNumber","label":"库存组织","type":"string","value":"FStockOrgId.FNumber"},
    {"field":"FDate","label":"日期","type":"string","value":"FDate"},
    {"field":"FBillTypeID_FNumber","label":"单据类型","type":"string","value":"FBillTypeID.FNumber"},
    {"field":"FNOTE","label":"备注","type":"string","value":"FNOTE"},
    {"field":"FMATERIALID_FNumber","label":"物料编码","type":"string","value":"FMATERIALID.FNumber"},
    {"field":"FSTOCKID","label":"收货仓库","type":"string","value":"FSTOCKID"},
    {"field":"FQty","label":"实收数量","type":"string","value":"FQty"},
    {"field":"FPrice","label":"成本价","type":"string","value":"FPrice"},
    {"field": "FAmount", "label": "总成本", "type": "string", "value": "FAmount"},
    // ...省略部分字段...
  ],
  "otherRequest":[
    {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
    {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
    {"field": "TopRowCount", "label": "返回总行数", "type": int, describe: 金蝶的查询分页参数},
    {"field": FilterString, label: 过滤条件, type: string, describe: 示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=, value: FApproveDate >='{{LAST_SYNC_TIME|date}}'   and FSTOCKID.fnumber<>'406'},
    // ...省略部分字段...
  ]
}

请求参数解析

  1. 基本请求字段:这些字段包括FBillNo(单据编号)、FID(实体主键)、FDocumentStatus(单据状态)等。这些字段用于指定我们需要查询的数据范围和内容。
  2. 分页参数:为了处理大量数据,我们使用了分页机制。Limit指定每页返回的数据量,StartRow指定从哪一行开始读取。
  3. 过滤条件:通过设置FilterString,我们可以对查询结果进行过滤。例如,过滤条件可以是某个时间段内的数据或特定库存组织的数据。

数据请求与清洗

在配置好元数据后,我们通过轻易云平台发起API请求,调用金蝶云星空的executeBillQuery接口。以下是一个示例请求体:

{
  FormId: 'STK_MisDelivery',
  FieldKeys: 'FID,FBillNo,FDocumentStatus,FStockOrgId.FNumber,FDate,FBillTypeID.FNumber,FNOTE,...',
  FilterString: 'FApproveDate >= \'2023-01-01\' and FSTOCKID.fnumber<>\'406\'',
  Limit: 500,
  StartRow: 0
}

在接收到响应后,我们需要对数据进行初步清洗和转换。例如,将日期格式统一、去除无效字段、根据业务需求计算新的字段等。

数据转换与写入

清洗后的数据将进入下一阶段,即数据转换与写入。在这个阶段,我们会将处理后的数据写入目标系统或数据库中,以供后续使用。

通过以上步骤,我们实现了从金蝶云星空获取其他出库单数据,并对其进行了初步加工,为后续的数据处理奠定了基础。这种全生命周期管理的方法确保了每个环节都透明可控,大大提升了业务效率和准确性。 企业微信与ERP系统接口开发配置

轻易云数据集成平台:ETL转换与金蝶云星空API接口集成技术案例

在轻易云数据集成平台的生命周期中,第二步是将已经集成的源平台数据进行ETL(提取、转换、加载)转换,使其符合目标平台金蝶云星空API接口的格式要求,并最终写入目标平台。本文将详细探讨这一过程中的技术细节,特别是如何配置和使用元数据进行高效的数据转换和写入操作。

元数据配置解析

元数据配置是ETL过程中的核心部分,它定义了如何将源数据映射到目标系统的字段。以下是一个详细的元数据配置示例:

{
  "api": "batchSave",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "method": "merge",
    "field": "FBillNo,FBillTypeID_FNumber,FDate,FDEPTID_FName,FCustId_FName,FNOTE,FDJZDYyongtu_FNumber",
    "bodyName": "details",
    "bodySum": ["FQty"],
    "header": ["FBillTypeID_FNumber","FBillNo","FDate","FDEPTID_FName","FCustId_FName","FNOTE","FDJZDYyongtu_FNumber","FStockOrgId_FNumber"],
    "body": ["FMATERIALID_FNumber","FQty","FSTOCKID","FEntryNote","FStockOrgId_FNumber"]
  },
  ...
}

该配置文件定义了与金蝶云星空API接口交互的具体方法和字段映射关系。以下是关键部分的解析:

  1. API与方法

    • api: batchSave 表示调用金蝶云星空的批量保存接口。
    • method: POST 指定HTTP请求方法为POST。
  2. 操作类型

    • operation.method: merge 表示对数据进行合并操作。
    • operation.fieldoperation.bodyName 定义了主表和子表的数据字段。
  3. 头部与主体字段

    • headerbody 分别定义了主表和子表需要映射的字段列表。

字段映射与转换

在ETL过程中,字段映射和转换是关键步骤。以下是一些重要字段的具体配置及其解释:

  1. 单据编号(FBillNo)

    {
     "field": "FBillNo",
     "label": "单据编号",
     "type": "string",
     "describe": "单据编号",
     "value": "{FBillNo}"
    }

    直接将源系统中的单据编号映射到目标系统。

  2. 库存组织(FStockOrgId)

    {
     "field": "FStockOrgId",
     "label": "库存组织",
     "type": "string",
     "describe": "组织",
     ...
     "value": "_function case when '{FStockOrgId_FNumber}' ='100' then '125' when '{FStockOrgId_FNumber}' ='202' then '126' when '{FStockOrgId_FNumber}' ='204' then '121' else '120' end"
    }

    使用函数进行条件判断,根据源系统中的库存组织编码转换为目标系统所需的编码。

  3. 客户(FCustId)

    {
     ...
     "field": "FCustId",
     ...
     "parser": {"name":"ConvertObjectParser", ...},
     ...
     "value":"{FCustId_FName}"
    }

    使用ConvertObjectParser解析器,将客户名称从源系统格式转换为目标系统格式。

  4. 明细信息(FEntity)

    {
     ...
     {
       ...
       {"field":"FMaterialId", ...},
       {"field":"FCMKBarCode", ...},
       {"field":"FQty", ...},
       {"field":"FStockId", ...},
       {"field":"FOwnerTypeId", ...},
       {"field":"FOwnerId", ...},
       {"field":"FEntryNote", ...}
       ...
     }
    }

    定义子表明细信息,包括物料编码、数量、发货仓库等字段,并使用相应解析器进行转换。

数据请求与验证

在将数据写入目标平台之前,需要进行必要的数据请求和验证:

  1. 业务对象表单ID

    {
     ...
     {"field":"FormId", ...,"value":"STK_MisDelivery"},
     ...
    }

    指定业务对象表单ID为STK_MisDelivery,确保数据写入正确的业务对象。

  2. 提交并审核

    {
      ...
      {"field":"IsAutoSubmitAndAudit", ...,"value":"false"},
      ...
    }

    设置是否自动提交并审核,通常设置为false以便手动控制审核流程。

  3. 验证基础资料有效性

    {
      ...
      {"field":"IsVerifyBaseDataField", ...,"value":"true"},
      ...
    }

    启用基础资料有效性验证,确保所有基础资料在目标系统中都是有效的。

实际应用案例

假设我们需要将一批出库单从源系统导入到金蝶云星空,我们可以按照上述元数据配置进行ETL转换。具体步骤如下:

  1. 提取源系统中的出库单数据。
  2. 根据元数据配置进行字段映射和转换。
  3. 构建符合金蝶云星空API要求的数据结构。
  4. 调用金蝶云星空API接口,将转换后的数据批量写入目标系统。

通过以上步骤,可以实现从源系统到金蝶云星空的数据无缝对接,确保每个环节的数据准确性和一致性。这种方法不仅提高了数据处理效率,还大大减少了人工干预和错误率,为企业的信息化管理提供了有力支持。 金蝶与CRM系统接口开发配置

更多系统对接方案