ETL转换和数据写入吉客云的实战应用

  • 轻易云集成顾问-黄宏棵

案例分享:用友BIP数据集成到吉客云

在现代企业信息系统的对接过程中,实现不同平台间的数据集成是一个复杂而关键的任务。本文聚焦于如何通过轻易云数据集成平台,将用友BIP中的物料数据无缝地整合到吉客云,具体方案名称为:YS-物料--->吉客云-货品。

技术背景与挑战

为了实现这一目标,我们需要解决以下几个技术难点:

  1. 高效的数据写入:我们需要支持高吞吐量的数据写入能力,使得大量物料数据能够快速被导入到吉客云中,提升整体处理时效性。

  2. 实时监控和告警:提供集中化的监控和告警机制,以便实时跟踪每个数据集成任务的状态和性能指标,这也包括异常检测和及时处理。

  3. API调用及分页问题:由于用友BIP接口(/yonbip/digitalModel/product/querylist)存在分页限制,需要设计可靠的抓取策略以确保所有所需物料信息都能完整获取,不漏单。

  4. 格式转换与映射:将来自用友BIP的数据格式准确转换并映射至符合吉客云要求的结构,这是实现两系统无缝衔接的重要一步。

  5. 错误重试与日志记录:针对可能发生的数据传输错误及网络故障等问题,需建立健全的错误重试机制以及详尽的日志记录功能,以保障整个流程稳定运行,并且可追溯分析异常情况。

数据提取与加载流程概述

首先,通过调用用友BIP接口/yonbip/digitalModel/product/querylist定期抓取商品物料信息。在此过程中,为了避免因分页限制导致的信息不全,我们采用分段请求方式逐页获取。这不仅确保了覆盖全部所需数据,同时也减少了单次请求负载,提高可靠性。随后,在轻易云平台上配置元数据转换逻辑,对获取到的数据进行清洗、整理并适配为符合吉客云API (erp.goods.skuimportbatch) 规范格式后批量写入。同时,通过自定义额外字段比对防止重复录入或遗漏,最大限度保证了业务连续性。此外,还设置预警通知,当出现响应延迟或者失败时能够第一时间发现并处理,从而优化调度策略。...


接下来,我们将详细讲解此案例实操中的具体步骤及遇见的问题解决方法,包括如何正确使用上述API、实施有效控制机制,以及实现稳定、高效、安全的大规模数据信息跨系统交互。 企业微信与ERP系统接口开发配置

用友BIP接口数据集成与加工技术案例

在数据集成生命周期的第一步,我们需要调用源系统用友BIP接口/yonbip/digitalModel/product/querylist获取并加工数据。本文将详细探讨该接口的调用方法及其元数据配置,并展示如何通过轻易云数据集成平台进行高效的数据处理。

接口调用与元数据配置

用友BIP提供的/yonbip/digitalModel/product/querylist接口用于查询产品列表。该接口采用POST请求方式,支持分页查询和时间戳过滤。以下是该接口的元数据配置:

{
  "api": "/yonbip/digitalModel/product/querylist",
  "effect": "QUERY",
  "method": "POST",
  "number": "code",
  "id": "id",
  "idCheck": true,
  "request": [
    {
      "field": "pageIndex",
      "label": "页码",
      "type": "string",
      "describe": "例:1 默认值:1",
      "value": "1"
    },
    {
      "field": "pageSize",
      "label": "每页数",
      "type": "string",
      "describe": "例:10 默认值:10",
      "value": "200"
    },
    {
      "field": "beganTime",
      "label": "开始时间(时间戳对比使用)",
      "type": "string",
      "describe": "例:false 默认值:false",
      "value": "{{LAST_SYNC_TIME|datetime}}"
    },
    {
      "field": "endTime",
      "label": "结束时间(时间戳对比使用)",
      "type": "string",
      "value": "{{CURRENT_TIME|datetime}}"
    }
  ],
  "autoFillResponse": true
}

请求参数详解

  1. pageIndex: 页码,默认为1。用于指定从哪一页开始查询。
  2. pageSize: 每页记录数,默认为200。用于控制每次查询返回的记录数量。
  3. beganTime: 开始时间,用于时间戳对比,默认值为上次同步时间({{LAST_SYNC_TIME|datetime}})。
  4. endTime: 结束时间,用于时间戳对比,默认值为当前时间({{CURRENT_TIME|datetime}})。

这些参数确保了我们能够灵活地控制数据查询范围和批量大小,从而优化数据获取效率。

数据请求与清洗

在轻易云数据集成平台中,我们首先需要配置上述请求参数,以便正确调用用友BIP接口。以下是一个示例请求体:

{
  "pageIndex": 1,
  "pageSize": 200,
  "_beganTime_":"2023-01-01T00:00:00Z", 
  "_endTime_":"2023-12-31T23:59:59Z"
}

该请求体将返回从2023年初至年底的产品列表,每次最多返回200条记录。

数据转换与写入

获取到原始数据后,我们需要进行必要的数据清洗和转换。例如,将产品编码字段统一格式化、去除重复记录等。轻易云平台提供了丰富的数据处理工具,可以方便地实现这些操作。

以下是一个简单的数据清洗示例:

def clean_data(data):
    # 去除重复记录
    unique_data = {item['id']: item for item in data}.values()

    # 格式化产品编码
    for item in unique_data:
        item['code'] = item['code'].strip().upper()

    return list(unique_data)

清洗后的数据可以通过轻易云平台直接写入目标系统,如吉客云货品模块,实现无缝对接。

实时监控与调试

在整个过程中,轻易云平台提供了实时监控和调试功能,可以随时查看数据流动状态和处理结果。这有助于及时发现并解决潜在问题,确保数据集成过程顺利进行。

通过以上步骤,我们成功实现了用友BIP接口的数据获取与加工,并为后续的数据转换与写入奠定了基础。在实际应用中,根据具体业务需求,还可以进一步优化和扩展这些操作,以提升整体效率和可靠性。 钉钉与MES系统接口开发配置

使用轻易云数据集成平台进行ETL转换并写入吉客云API接口

在数据集成的生命周期中,ETL(Extract, Transform, Load)是关键步骤之一。本文将重点探讨如何使用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,并转为目标平台吉客云API接口所能够接收的格式,最终写入目标平台。

数据请求与清洗

在数据转换之前,首先需要从源系统中请求并清洗数据。假设我们已经完成了这一步,获取到了源系统中的物料信息。接下来,我们将这些数据转换为吉客云API所需的格式。

数据转换与写入

元数据配置如下:

{
  "api": "erp.goods.skuimportbatch",
  "method": "POST",
  "idCheck": true,
  "request": [
    {"field": "goodsName", "label": "货品名称", "type": "string", "value": "{{name.simplifiedName}}"},
    {"field": "goodsNo", "label": "货品编码", "type": "string", "value": "{code}"},
    {"field": "goodsAlias", "label": "货品别名", "type": "string", "value": "{{name.simplifiedName}}"},
    {"field": "unitName", "label": "单位名称", "type": "string", "value": "{unitName}"},
    {"field": "outSkuCode", "label": "SKU", "type": "string", "value": "{code}"},
    {"field": "skuBarcode", "label": "条码", "type":"string","value":"{{detail.barCode}}"},
    {"field":"skuName","label":"规格名称","type":"string"},
    {"field":"isSerialManagement","label":"是否序列号管理","type":"string","describe":"是否序列号管理(1=是,0= 否)","value":"_function case '{{detail.serialNoManage}}' when true then '1' else '0' end"},
    {"field":"goodsAttr","label":"货品属性","type":"string","describe":"货品属性1-成品2-半成品3-原料4-包装材料","value":"1"},
    {"field":"ownerCode","label":"货主编码","type":"string","describe":"货品属性1-成品2-半成品3-原料4-包装材料","value":"119669"},
    {"field":"cateCode","label":"货品分类","type":"string","value":"{manageClassCode}"},
    {"field":"goodsField1","label":"型号","type":"string","value":"{{model.simplifiedName}}"}
  ]
}

配置解析

  1. API与方法:我们使用erp.goods.skuimportbatch API,通过POST方法向吉客云发送请求。
  2. ID检查idCheck设置为true,确保每条记录都有唯一标识。
  3. 字段映射
    • goodsNamegoodsAliasgoodsField1: 从源数据的简化名称字段中提取。
    • goodsNooutSkuCode: 使用源数据中的编码字段。
    • unitName: 使用源数据中的单位名称字段。
    • skuBarcode: 从详细信息中提取条码。
    • isSerialManagement: 根据详细信息中的序列号管理字段进行条件判断,如果为true则返回'1',否则返回'0'。
    • goodsAttr: 固定值为'1',表示成品。
    • ownerCode: 固定值为'119669'。
    • cateCode: 使用源数据中的管理分类代码。

实际操作步骤

  1. 提取数据:从源系统中提取物料信息,包括名称、编码、单位、条码等字段。
  2. 转换数据:根据上述元数据配置,将提取的数据进行格式转换。例如,将物料名称映射到吉客云的货品名称字段,将物料编码映射到SKU等。
  3. 加载数据:使用POST方法将转换后的数据通过API接口发送到吉客云。

以下是一个示例代码片段,用于将转换后的数据发送到吉客云:

import requests
import json

url = 'https://api.jikexun.com/erp/goods/skuimportbatch'
headers = {'Content-Type': 'application/json'}

data = {
  # 转换后的JSON对象
}

response = requests.post(url, headers=headers, data=json.dumps(data))

if response.status_code == 200:
  print('Data successfully imported to JikeCloud')
else:
  print(f'Failed to import data: {response.text}')

通过上述步骤,我们实现了从源系统到目标平台的数据无缝对接,并确保了每个环节的数据准确性和一致性。 用友与MES系统接口开发配置

更多系统对接方案