ETL转换技术详解:从源数据到畅捷通数据写入

  • 轻易云集成顾问-吕修远

聚水潭-其他出库单到畅捷通-其他出库单的数据集成案例分享

在数据系统对接的实践中,如何高效、准确地完成不同系统间的数据传输是一个关键技术挑战。今天我们将分享一个具体的技术案例:将聚水潭中的“其他出库单”数据集成到畅捷通T+系统中。

案例背景

此次集成任务涉及两个主要接口:

  1. 从聚水潭获取数据的API:/open/other/inout/query
  2. 向畅捷通T+写入数据的API:/tplus/api/v2/otherDispatch/Create

这种跨平台的数据流动不仅需要考虑吞吐量和实时性,还要确保不会遗漏任何一条记录,同时处理好分页和限流等问题。

数据获取与处理

首先,我们需要定时可靠地抓取聚水潭接口提供的数据。在这个过程中,必须保证每次请求都能覆盖新的及变更过的数据记录。使用预设的时间戳标记可以有效避免重复读取或漏掉信息。此外,通过合理设置分页参数,可以提升每次抓取的大数据量,从而减少调用次数,提高效率。

为了适应业务需求和特定的数据结构,还需自定义转换逻辑。例如,根据业务规则调整字段映射关系,将原始数据转化为目标格式。这一步骤至关重要,以确保输入输出的一致性。同时,为了增强透明度,我们会利用轻易云提供的可视化设计工具,对整个流程进行直观管理和监控。

数据写入与异常处理

在向畅捷通T+写入数据时,高吞吐量支持使得大批量数据能够快速进入目标系统。但这一过程同样不可避免出现网络波动或服务端异常,应实施错误重试机制以提高成功率。对于无法自动纠正的问题,则通过告警通知相关人员介入解决。

实现上述功能后,在中央监控台下,可一目了然查看各项任务状态,包括成功率、失败重试情况等,有助于及时发现并解决潜在问题从而全面掌握API资产状况。当然,这还离不开持续执行质量监控及日志记录,以便未来溯源分析并优化配置。

下一部分内容将进一步详细解读具体实施方案…… 打通钉钉数据接口

调用聚水潭接口/open/other/inout/query获取并加工数据

在轻易云数据集成平台的生命周期中,第一步是调用源系统接口以获取原始数据。本文将详细探讨如何通过调用聚水潭接口/open/other/inout/query来实现这一目标,并对获取的数据进行初步加工。

接口配置与请求参数

聚水潭接口/open/other/inout/query采用POST方法进行数据请求。以下是该接口的元数据配置:

{
  "api": "/open/other/inout/query",
  "effect": "QUERY",
  "method": "POST",
  "number": "io_id",
  "id": "io_id",
  "idCheck": true,
  "request": [
    {"field": "modified_begin", "label": "修改起始时间", "type": "datetime", "value": "{{MINUTE_AGO_20|datetime}}"},
    {"field": "modified_end", "label": "修改结束时间", "type": "datetime", "value": "{{CURRENT_TIME|datetime}}"},
    {"field": "status", "label": "单据状态", "type": "string", "value":"Confirmed"},
    {"field": "page_index", "label":"第几页","type":"string","value":"1"},
    {"field":"page_size","label":"每页多少条","type":"string","value":"30"},
    {"field":"date_type","label":"抓取时间类型","type":"string","describe":"0:修改时间,modified。 2:出入库时间 io_date,未传入时默认为0"}
  ],
  ...
}

请求参数详解

  1. modified_beginmodified_end:这两个字段用于指定查询的时间范围。modified_begin表示查询的起始时间,默认值为当前时间前20分钟;modified_end表示查询的结束时间,默认值为当前时间。
  2. status:单据状态,此处固定为"Confirmed",表示只查询已确认的单据。
  3. page_indexpage_size:分页参数,分别表示查询结果的页码和每页显示的记录数。默认设置为第一页,每页30条记录。
  4. date_type:抓取时间类型,默认为0,即按修改时间(modified)进行抓取。

数据过滤与条件设置

为了确保数据的准确性和有效性,我们可以在请求中添加条件过滤。例如,通过以下配置排除特定仓库ID的数据:

"condition_bk":[[{"field":"wms_co_id","logic":"notin","value":"10406603"}]]

这种条件过滤机制可以帮助我们在数据请求阶段就排除不需要的数据,从而提高后续处理效率。

自动填充与补救机制

轻易云平台提供了自动填充响应和遗漏补救机制,以确保数据请求的完整性和连续性:

"autoFillResponse": true,
"omissionRemedy":{
  ...
}

自动填充响应功能可以简化数据处理流程,而遗漏补救机制则通过定时任务(如每三小时执行一次)来确保即使在某些情况下漏掉了部分数据,也能及时补救。

实际案例操作步骤

  1. 配置请求参数:根据业务需求设置上述请求参数,例如设置查询时间范围、单据状态等。
  2. 发送请求:通过轻易云平台发送POST请求到聚水潭接口/open/other/inout/query
  3. 接收并处理响应:接收返回的数据,并根据业务逻辑进行初步加工,如过滤无效数据、转换字段格式等。
  4. 存储与后续处理:将处理后的数据存储到目标系统或数据库中,为后续的数据转换与写入做好准备。

通过以上步骤,我们能够高效地从聚水潭系统中获取所需的原始数据,并进行初步加工,为整个数据集成过程打下坚实基础。这不仅提升了业务透明度和效率,也为后续的数据转换与写入提供了可靠保障。 用友与CRM系统接口开发配置

轻易云数据集成平台ETL转换至畅捷通T+API接口的技术案例

在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是至关重要的一步。本文将深入探讨如何将已经集成的源平台数据通过轻易云数据集成平台进行ETL转换,并最终写入畅捷通T+API接口所能够接收的格式。

接口配置与请求方法

在进行ETL转换时,我们需要配置畅捷通T+API接口。根据提供的元数据配置,目标接口为/tplus/api/v2/otherDispatch/Create,请求方法为POST。该接口用于创建其他出库单,并要求请求体包含多个字段。

请求体字段解析

以下是关键字段及其解析方式:

  1. ExternalCode(外部单据号)

    • 类型:string
    • 描述:外部单据号,用于唯一性检查,防止重复提交。
    • 值:{io_id}-1
    • 示例值:如果io_id为123,则ExternalCode为123-1
  2. VoucherType(单据类型)

    • 类型:string
    • 描述:单据类型,默认值为ST1024
    • 值:ST1024
    • 解析器:ConvertObjectParser,参数为Code
  3. VoucherDate(单据日期)

    • 类型:string
    • 描述:单据日期
    • 值:{io_date}
  4. BusiType(业务类型)

    • 类型:string
    • 描述:业务类型编码,取值范围包括13(其他)和14(其他退库)
    • 值:13
    • 解析器:ConvertObjectParser,参数为Code
  5. Warehouse(仓库信息)

    • 类型:string
    • 描述:仓库信息
    • 值:{wms_co_id}
    • 解析器:ConvertObjectParser,参数为Code
    • 映射关系:target为66d687ab2f3fde34df428d6d,方向为positive
  6. Memo(表头备注)

    • 类型:string
    • 描述:备注信息
    • 值:{remark}
  7. DynamicPropertyKeys & DynamicPropertyValues

    • DynamicPropertyKeys:

      • 类型:string
      • 值:"pubuserdefnvc3,pubuserdefnvc4"
      • 解析器:StringToArray,参数为,
    • DynamicPropertyValues:

      • 类型:string
      • 值:"25<{io_id}"
      • 解析器:StringToArray,参数为<
  8. RdStyle(出库类别)

    • 类型:string
    • 值:"208"
    • 解析器:ConvertObjectParser,参数为Code
  9. RDRecordDetails(单据明细信息) RDRecordDetails是一个数组,每个元素包含以下字段:

    • Inventory(存货信息)

      • 类型: string
      • 值: {sku_id}
      • 解析器: ConvertObjectParser, 参数为Code
    • BaseQuantity(主计量单位数量)

      • 类型: string
      • 值: {qty}
    • Price(成本单价)

      • 类型: string
      • 值: {sale_price}
    • Project(项目)

      • 类型: string
      • 值: "807"
      • 解析器: ConvertObjectParser, 参数为Code

数据转换与写入示例

假设我们从源平台获取到的数据如下:

{
    "io_id": "123",
    "io_date": "2023-10-01",
    "wms_co_id": "WH001",
    "remark": "Test Remark",
    "items": [
        {
            "sku_id": "SKU12345",
            "qty": "10",
            "sale_price": "100"
        }
    ]
}

根据上述元数据配置和源数据,我们构建请求体如下:

{
    "ExternalCode": "123-1",
    "VoucherType": {"Code": "ST1024"},
    "VoucherDate": "2023-10-01",
    "BusiType": {"Code": 13},
    "Warehouse": {"Code": "WH001"},
    "Memo": "Test Remark",
    "DynamicPropertyKeys": ["pubuserdefnvc3", "pubuserdefnvc4"],
    "DynamicPropertyValues": ["25", "{io_id}"],
    "RdStyle": {"Code":"208"},
    "RDRecordDetails":[ 
        {
            "Inventory":{"Code":"SKU12345"},
            "BaseQuantity":"10",
            "Price":"100",
            "Project":{"Code":"807"}
        }
     ]
}

通过上述请求体,我们可以使用POST方法将数据发送至畅捷通T+API接口,实现数据的写入。

实践中的注意事项

  1. 字段映射与转换: 确保每个字段都正确映射并转换,以满足目标平台的要求。尤其是涉及到复杂对象和数组时,需要特别注意其结构和格式。

  2. 唯一性检查: 外部单据号需要确保唯一性,以防止重复提交。这一点在多系统集成时尤为重要。

  3. 错误处理: 在实际操作中,需要对API返回的结果进行处理,包括成功与失败的情况。对于失败情况,需要记录日志并进行相应处理。

通过以上步骤,我们成功地将源平台的数据通过轻易云数据集成平台进行ETL转换,并写入到畅捷通T+API接口中。这一过程不仅提高了数据处理效率,还确保了数据的一致性和准确性。 如何对接金蝶云星空API接口

更多系统对接方案