轻易云平台ETL转换与金蝶云星空数据写入技术详解

  • 轻易云集成顾问-谢楷斌

聚水潭其他出库-金蝶其他出库:高效数据集成案例分析

在本技术文章中,我们将深入探讨如何通过轻易云数据集成平台,将聚水潭的其他出库数据无缝对接到金蝶云星空中的具体实现过程。本次集成任务主要依赖于两个关键API接口,即聚水潭的other.inout.query和金蝶云星空的batchSave。本文着重分享几个核心技术要点,包括确保数据不漏单、大量数据快速写入以及分页与限流问题处理。

首先,为了确保从聚水潭获取的数据不会出现漏单现象,我们采用定时可靠抓取机制,准确调用聚水潭接口 other.inout.query。该方法不仅能实时监控接口状态,还能及时记录日志,保证每次调用都被妥善记录并处理,一旦发生错误,可以进行精准重试。

其次,对于大量订单数据显示场景,我们通过批量写入的方法使用金蝶云星空提供的 batchSave 接口,以提升整体传输效率。在实际操作中,需要特别注意两者之间的数据格式差异。我们利用轻易云平台的强大转换功能,实现数据映射自动化,并根据业务需求自定义字段对应关系,从而保障了最终录入系统的数据完整性和一致性。

此外,为应对聚水潭API分页及限流要求,本方案引入了一套智能调度策略,通过动态调整请求参数,以及合理分配请求频率,避免因超额访问导致服务阻塞或速度下降。一经探测到异常情况,可以启动专门设计的错误重试机制,在保证稳定性的同时提高整体集成效率。

综上所述,这些关键步骤构成了我们此次系统对接项目成功运行的重要基石。下一部分将进一步详细阐述各个环节实施细节及技术实现方法,以供参考借鉴。

用友BIP接口开发配置

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

在数据集成的生命周期中,调用源系统接口是至关重要的第一步。本文将详细探讨如何通过轻易云数据集成平台调用聚水潭接口other.inout.query,并对获取的数据进行初步加工。

接口调用配置

首先,我们需要配置调用聚水潭接口的元数据。以下是关键的元数据配置:

{
  "api": "other.inout.query",
  "method": "POST",
  "number": "io_id",
  "id": "io_id",
  "pagination": {
    "pageSize": 50
  },
  "idCheck": true,
  "request": [
    {
      "field": "modified_begin",
      "label": "修改起始时间",
      "type": "string",
      "value": "{{LAST_SYNC_TIME|datetime}}"
    },
    {
      "field": "modified_end",
      "label": "修改结束时间",
      "type": "string",
      "value": "{{CURRENT_TIME|datetime}}"
    },
    {
      "field": "so_ids",
      "label": "指定线上订单",
      "type": "string"
    },
    {
      "field": "types",
      "label": "单据类型",
      "type": "string",
      "describe": "单据类型 :其它退货,其它出库,其它进仓",
      "value": "其它出库",
      "parser":{
        "name":"ConvertObjectParser","params":"FNumber"
       }
    },
    {
      "field":"status","label":"单据状态","type":"string","describe":"单据状态,Confirmed=生效,WaitConfirm待审核,Archive=归档,Cancelled=取消","value":"Confirmed"
    },
    {
      “field”: “page_index”,
      “label”: “开始页码”,
      “type”: “string”,
      “value”: “1”
    },
    {
     “field”: “page_size”,
     “label”: “每页行数”,
     “type”: “string”,
     “value”: “{PAGINATION_PAGE_SIZE}”
   }
 ],
"condition_bk":[[{"field":"remark","logic":"neq","value":"API接单"},{"field":"type","logic":"eq","value":"其它出库"}]]
}

请求参数解析

  1. 时间范围

    • modified_beginmodified_end 分别表示修改起始时间和结束时间,通过模板变量 {{LAST_SYNC_TIME|datetime}}{{CURRENT_TIME|datetime}} 动态生成。
  2. 单据类型

    • types 字段指定为“其它出库”,并使用 ConvertObjectParser 对其进行解析,以确保符合目标系统的格式要求。
  3. 单据状态

    • status 字段设置为“Confirmed”,表示只查询已生效的单据。
  4. 分页处理

    • page_indexpage_size 分别表示开始页码和每页行数,通过 {PAGINATION_PAGE_SIZE} 动态控制分页大小。

数据过滤条件

为了进一步精确查询,我们可以添加过滤条件。例如:

  • 排除备注为“API接单”的记录。
  • 确保类型为“其它出库”。

这些条件通过 condition_bk 字段进行配置,如下所示:

"condition_bk":[[{"field":"remark","logic":"neq","value":"API接单"},{"field":"type","logic":"eq","value":"其它出库"}]]

数据请求与清洗

在完成接口调用配置后,我们需要实际发起请求,并对返回的数据进行清洗。以下是一个简单的Python示例代码,用于发起请求并处理返回的数据:

import requests
import json

url = 'https://api.jushuitan.com/other.inout.query'
headers = {'Content-Type': 'application/json'}
payload = {
    'modified_begin': '2023-01-01T00:00:00',
    'modified_end': '2023-01-31T23:59:59',
    'types': '其它出库',
    'status': 'Confirmed',
    'page_index': 1,
    'page_size': 50
}

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

# 数据清洗示例
cleaned_data = []
for record in data['records']:
    if record['remark'] != 'API接单' and record['type'] == '其它出库':
        cleaned_data.append(record)

print(cleaned_data)

上述代码展示了如何通过HTTP POST请求调用聚水潭接口,并对返回的数据进行初步清洗。我们过滤掉备注为“API接单”的记录,并确保类型为“其它出库”。

总结

通过轻易云数据集成平台,我们能够高效地调用聚水潭接口other.inout.query,并对获取的数据进行初步加工。这一步骤不仅确保了数据的准确性和完整性,也为后续的数据转换与写入奠定了坚实基础。在实际应用中,根据业务需求灵活调整元数据配置和过滤条件,可以进一步提升数据集成的效率和质量。 如何开发企业微信API接口

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

在轻易云数据集成平台的生命周期中,数据转换与写入是至关重要的一步。本文将详细探讨如何将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,并通过金蝶云星空API接口将数据写入目标平台。

数据请求与清洗

首先,我们需要从源平台获取原始数据并进行清洗。这部分工作通常包括对数据的格式化、去重、补全缺失值等操作,以确保数据质量。本文重点不在此,故略过详细步骤。

数据转换与写入

接下来,我们进入数据转换与写入阶段。我们将使用轻易云提供的元数据配置,将清洗后的数据转换为金蝶云星空API接口能够接收的格式,并最终写入目标平台。

元数据配置解析

以下是我们使用的元数据配置:

{
  "api": "batchSave",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "rowsKey": "array",
    "rows": 1,
    "method": "batchArraySave"
  },
  "request": [
    {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"QTCKD01_SYS"},
    {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{io_id}"},
    {"field":"FStockOrgId","label":"库存组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"105"},
    {"field":"FPickOrgId","label":"领用组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"105"},
    {"field":"FStockDirect","label":"库存方向","type":"string","describe":"下拉列表","value":"GENERAL"},
    {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{io_date}"},
    {"field":"FOwnerTypeIdHead","label":"货主类型","type":"string","describe":"多类别基础资料列表","value":"BD_OwnerOrg"},
    {"field":"FOwnerIdHead","label":"货主","type":"","describe":"","parser":{"name":"","params":""},"value":""},
    {"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":""},
    {"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":""},
    {"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":""},
    {"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":""},
    {"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":""}
  ],
  "otherRequest":[
      {"field ":"FormId ","label ":"业务对象表单Id ","type ":"string ","describe ":"必须填写金蝶的表单ID如:PUR_PurchaseOrder ","value ":"STK_MisDelivery"},
      {"field ":"IsAutoSubmitAndAudit ","label ":"提交并审核 ","type ":"bool ","value ":true},
      {"field ":"IsVerifyBaseDataField ","label ":"验证基础资料 ","type ":"bool ","describe ":"是否验证所有的基础资料有效性,布尔类,默认false(非必录) ","value ":false},
      {"field ":"Operation ","label ":"执行的操作 ","type ":"string ","value ":"Save"},
      {"label ":"允许负库存 ","field ":"InterationFlags ","type ":"string ","value ":"STK_InvCheckResult"}
  ]
}
数据字段映射
  1. FBillTypeID:单据类型,通过ConvertObjectParser解析为FNumber
  2. FBillNo:单据编号,直接映射为{io_id}
  3. FStockOrgId:库存组织,通过ConvertObjectParser解析为FNumber
  4. FPickOrgId:领用组织,通过ConvertObjectParser解析为FNumber
  5. FStockDirect:库存方向,固定值为GENERAL
  6. FDate:日期,直接映射为{io_date}
  7. FOwnerTypeIdHead:货主类型,固定值为BD_OwnerOrg
  8. FOwnerIdHead:货主,通过ConvertObjectParser解析为FNumber
明细信息字段映射
  1. FMaterialId:物料编码,通过ConvertObjectParser解析为FNumber, 映射到 {{items.sku_id}}
  2. FCMKBarCode:零售条形码,无需额外处理。
  3. FQty:实发数量,直接映射到 {{items.qty}}
  4. FStockId:发货仓库,通过 ConvertObjectParser, 映射到 {warehouse}
  5. FAmountFPriceFLotFProduceDateFExpiryDateFEntryNote
API请求构建

基于上述字段映射,我们构建API请求:

{
  "FormId": "STK_MisDelivery",
  "IsAutoSubmitAndAudit": true,
  "IsVerifyBaseDataField": false,
  "Operation": "Save",
  "InterationFlags": ["STK_InvCheckResult"],
  "Model":{
      // 主表字段
      ...
      // 明细表字段
      ...
   }
}

通过上述步骤,我们成功地将源平台的数据转换并写入到金蝶云星空API接口中,实现了不同系统间的数据无缝对接。 企业微信与OA系统接口开发配置

更多系统对接方案