ETL数据转换实战:从聚水潭到KIS私有云的解决方案

  • 轻易云集成顾问-陈洁琳

聚水潭·奇门数据集成到KIS私有云的真实案例分享

在对接聚水潭·奇门与KIS私有云过程中,稳定性、实时性和可靠性是关键。我们通过轻易云数据集成平台配置元数据,实现了退货单信息从聚水潭高效且准确地写入到KIS系统。这篇文章将详细介绍解决方案:如何利用API接口jushuitan.refund.list.query批量获取退货单,并使用API /kDASDASoas/app007104/api/salesdelivery/create123312进行快速而精确的数据写入。

首先,我们需要考虑的是确保每一笔退货单都能被完整捕获,不遗漏任何重要信息。在这一环节中,通过定时可靠的抓取机制,我们能够周期性调取并处理聚水潭的数据。同时,为了解决API分页和限流的问题,我们设计了一个灵活的分页控制器,以应对不同量级的数据请求,保证无论是在高峰期还是闲散时间,都能有效管理数据流动。

在实现大量数据快速写入KIS私有云方面,我们制定了一套专门优化的批量上传策略。不仅提高了传输效率,还减少了服务器压力和网络拥堵。此外,为应对两者之间复杂的数据格式差异,我们运用了自定义映射规则,将聚水潭中的标准字段准确转换为符合KIS要求的新格式,使得系统间的信息交流更加顺畅。

# 样例代码片段: 分页获取聚水潭退货单列表
def get_refund_list(page_no, page_size):
    response = requests.post(
        "https://api.jushuitan.com/refund/list/query",
        data={
            "page_no": page_no,
            "page_size": page_size,
            ...
        }
    )
    return response.json()

# 样例代码片段: 批量上传至KIS私有云
def upload_to_kis(data):
    response = requests.post(
        "/kDASDASoas/app007104/api/salesdelivery/create123312",
        json=data
    )
    return response.json()

最后,需要特别提及的是异常处理与错误重试机制。在整个流程中,一旦监测到出错或异常情况,系统会自动触发预设的纠正与重试程序,并记录日志方便后续分析。这不仅提升了整体稳定性,也为长期维护提供了坚实基础。 用友与SCM系统接口开发配置

调用聚水潭·奇门接口jushuitan.refund.list.query获取并加工数据

在数据集成生命周期的第一步,我们需要调用源系统的API接口以获取原始数据,并对其进行初步加工。本文将详细探讨如何通过轻易云数据集成平台调用聚水潭·奇门接口jushuitan.refund.list.query,并对返回的数据进行清洗和过滤。

接口调用配置

首先,我们需要配置接口调用的元数据。以下是针对jushuitan.refund.list.query接口的具体配置:

{
  "api": "jushuitan.refund.list.query",
  "effect": "QUERY",
  "method": "POST",
  "number": "{as_id}{modified}",
  "id": "{as_id}{modified}",
  "name": "as_id",
  "idCheck": true,
  "request": [
    {
      "field": "page_index",
      "label": "第几页",
      "type": "int",
      "describe": "从第一页开始,默认1",
      "value": "1"
    },
    {
      "field": "page_size",
      "label": "每页多少条",
      "type": "int",
      "describe": "默认30,最大50",
      "value": "50"
    },
    {
      "field": "start_time",
      "label": "修改起始时间",
      "type": "string",
      "describe": "起始时间,和结束时间必须同时存在,时间间隔不能超过七天,与线上单号不能同时为空",
      "value": "{{DAYS_AGO_1|date}} 00:00:00"
    },
    {
      "field": "end_time",
      "label": "修改结束时间",
      "type": "string",
      "describe": "结束时间,和起始时间必须同时存在,时间间隔不能超过七天,与线上单号不能同时为空",
      ``value``: "{{CURRENT_TIME|datetime}}"
    },
    {
      ``field``: ``date_type``,
      ``label``: ``时间类型``,
      ``type``: ``int``,
      ``describe``: ``修改时间:0 ; 创建时间:1; 确认时间: 2;非必填,默认0``
    },
    {
        ``field``: ``good_status``,
        ``label``: ``货物状态``,
        ``type``: ``string``,
        ``describe``: ``(BUYER_NOT_RECEIVED:买家未收到货,BUYER_RECEIVED:买家已收到货,BUYER_RETURNED_GOODS:买家已退货,SELLER_RECEIVED:卖家已收到退货)``,
        ``value``: ``SELLER_RECEIVED``
    }
  ],
  ``beatFlat``:[``items``],
  ``condition_bk``:[[{"field":"items.r_qty","logic":"neqv2","value":"0"},{"field":"items.is_need","logic":"neqv2","value":"45454"}]],
  ``condition``:[[{"field":"items.r_qty","logic":"notnull","value":"","},{"field":"items.r_qty","logic":"neqv2","value":"0"}]]
}

请求参数详解

  • page_index: 分页索引,从第一页开始。
  • page_size: 每页返回的数据条数,默认为30条,最大为50条。
  • start_time: 数据修改的起始时间。
  • end_time: 数据修改的结束时间。
  • date_type: 时间类型,可选值为0(修改时间)、1(创建时间)、2(确认时间),默认为0。
  • good_status: 货物状态,此处设置为“SELLER_RECEIVED”,即卖家已收到退货。

数据清洗与过滤

在获取到原始数据后,需要对其进行清洗和过滤,以确保数据的准确性和有效性。以下是具体的过滤条件:

  • condition_bk: 后备条件,用于进一步筛选数据。此处设置了两个条件:

    • items.r_qty != 0
    • items.is_need != 45454
  • condition: 主过滤条件,用于初步筛选数据。此处设置了两个条件:

    • items.r_qty 不为空
    • items.r_qty != 0

这些条件确保我们只处理那些退货数量不为零且相关字段不为空的数据,从而提高数据处理的效率和准确性。

实际应用案例

假设我们需要获取过去一天内所有卖家已收到退货的订单信息,并将其导入到KIS系统中。在轻易云平台上,我们可以通过以下步骤实现这一目标:

  1. 配置请求参数:按照上述元数据配置填写请求参数,包括分页索引、每页条数、起止时间等。
  2. 发送请求:通过POST方法向聚水潭·奇门接口发送请求,并获取返回的数据。
  3. 数据清洗:根据定义好的过滤条件,对返回的数据进行清洗,去除无效或不符合要求的数据。
  4. 数据转换与写入:将清洗后的数据转换为KIS系统所需的格式,并写入到目标系统中。

通过以上步骤,我们可以高效地完成从聚水潭·奇门系统到KIS系统的数据集成任务,实现不同系统间的数据无缝对接。 打通用友BIP数据接口

使用轻易云数据集成平台进行ETL转换:聚水潭退货单到KIS红字销售出库

在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(提取、转换、加载)转换,以适应目标平台 KIS 私有云 API 接口的格式要求,并最终将数据写入目标平台。本文将详细探讨这一过程中涉及的技术细节和接口配置。

API 接口配置

根据提供的元数据配置,目标平台 KIS 私有云 API 接口路径为 /kDASDASDASDASDASDASoas/app007104/api/salesdelivery/create123312312312312312312312,请求方法为 POST。以下是请求体的结构及字段说明:

  • AccountDB: 账户数据库标识,固定值为 "001"。
  • Object: 包含 HeadEntry 两个主要部分。

Head 部分字段解析

  • FBillNo: 单据编号。
  • FROB: 红蓝字标识,固定值为 "-1" 表示红字。
  • FBillerID: 制单人 ID,固定值为 "16439"。
  • FMarketingStyle: 业务类型,固定值为 "12530"。
  • FSaleStyle: 销售方式,固定值为 "101"。
  • FExplanation: 摘要,通过 _function CONCAT 函数动态生成,根据不同仓库 ID 和店铺名称等信息拼接而成。
  • FSupplyID: 购货单位(客户)ID,需要从源数据中获取并映射。
  • Fdate: 日期,通过 _function REPLACE 函数将日期格式调整为符合 ISO 8601 标准的格式。
  • FDCStockID: 仓库 ID,通过 _function CASE 函数根据条件动态生成。
  • FFManagerIDFSManagerID: 销售和保管人 ID,均固定值为 "16043"。

Entry 部分字段解析

Entry 部分是一个数组,每个元素代表一条明细记录:

  • FItemID: 产品代码,通过 _mongoQuery 查询 MongoDB 数据库,根据 SKU ID 获取产品代码。
  • Fauxqty: 实发数量,从源数据中直接获取。
  • FConsignPrice: 销售单价,需要从源数据中获取并映射。
  • FDCStockID: 仓库 ID,与 Head 部分类似,通过映射关系获取。
  • FUnitID: 物料单位,通过 _mongoQuery 查询 MongoDB 数据库,根据 SKU ID 获取物料单位。

数据转换与写入过程

  1. 提取数据(Extract) 从聚水潭系统提取退货单数据,包括订单头信息和明细信息。

  2. 转换数据(Transform)

    • 使用函数和查询语句对提取的数据进行转换,如日期格式调整、字符串拼接等。
    • 动态生成摘要字段 FExplanation 和仓库 ID 字段 FDCStockID 等。
  3. 加载数据(Load)

    • 将转换后的数据按照 KIS 私有云 API 接口要求的格式组织成 JSON 对象。
    • 通过 HTTP POST 请求将 JSON 对象发送到目标 API 接口,实现数据写入。

示例请求体

{
    "AccountDB": "001",
    "Object": {
        "Head": {
            "FBillNo": "123456",
            "FROB": "-1",
            "FBillerID": "16439",
            "FMarketingStyle": 12530,
            "FSaleStyle": "101",
            "FExplanation": "_function CONCAT( CASE '{wms_co_id}' WHEN '10736306' THEN '陈梓波' WHEN '14132797' THEN 'JZ中山成品仓' when '14133381' then 'JZ廉江成品仓' when '14165050' then '一厂电商仓' when '14165051' then '二厂电商仓' ELSE '新仓库' END,'-{shop_name}-{items_date_short}')",
            "FSupplyID": 10001,
            "Fdate": "_function REPLACE ('2023-10-01',' ','T')",
            "FDCStockID": "_function CASE '{items_is_need}' WHEN '0' THEN '错的别穿' ELSE '{wms_co_id}-{wh_id}' END",
            "FFManagerID": "16043",
            "FSManagerID": "16043"
        },
        "Entry": [
            {
                "FItemID": "_mongoQuery 30fa1b2b-6cfc-31c2-90a3-5a497b7812bd findField=content.FItemID where={\"content.F_103\":{\"$eq\":\"{items_sku_id}\"}}",
                "Fauxqty": 10,
                "FConsignPrice": 100,
                "FDCStockID": "{wms_co_id}-{wh_id}",
                "FUnitID": "_mongoQuery 30fa1b2b-6cfc-31c2-90a3-5a497b7812bd findField=content.FProductUnitID where={\"content.F_103\":{\"$eq\":\"{items_sku_id}\"}}"
            }
        ]
    }
}

以上内容展示了如何使用轻易云数据集成平台进行 ETL 转换,将聚水潭退货单的数据转化为 KIS 私有云 API 接口所需的格式,并最终实现数据写入。这一过程不仅确保了不同系统间的数据无缝对接,还极大提升了业务处理效率。 金蝶与MES系统接口开发配置

更多系统对接方案