轻易云平台的采购入库数据ETL转换与写入流程

  • 轻易云集成顾问-吴伟

汤臣倍健营销云数据集成到SQL Server:采购入库同步案例

在本次技术案例中,我们将深入探讨如何通过轻易云数据集成平台,将汤臣倍健营销云的数据高效、可靠地集成到SQL Server,以实现采购入库信息的同步。具体方案为“采购入库同步-(佰嘉)广元跃泰”。

首先,我们需要从汤臣倍健营销云获取采购入库订单数据,对应API接口为 /erp/api/order/query/purInWarehsOrder。为了确保不漏单并抓取大批量的数据,采用了定时任务机制进行调用。这一过程不仅涉及分页处理和限流机制,还需考虑与SQL Server之间的数据格式差异。

利用轻易云平台提供的全透明可视化操作界面,可以实时监控每个环节的状态,从而保证数据处理的一致性和完整性。在大量数据快速写入SQL Server时,选择使用批量插入操作,并通过 insert API 将整理好的数据导入指定数据库表中。

期间必须特别注意以下几个关键点:

  • 如何可靠且定时地抓取汤臣倍健营销云接口的数据。
  • 处理分页和限流问题,以防止接口请求过载。
  • 调用 SQL Server 数据插入 API 时,针对不同字段类型做出适当转换。
  • 实现异常处理与错误重试机制,提高系统稳定性和容错能力。

此次对接过程中,通过详细设计的日志记录功能及监控模块,实现了对整个生命周期内各环节操作状态的实时追踪,大幅度提升了业务透明度。同时,为确保最终写入的数据准确无误,配置了一套严格的校验流程,包括字段映射校验及一致性检查等等。

下一步将继续深入详述每一个技术细节,包括如何构建调度逻辑、参数优化,以及可能遇到的问题解决思路。 如何对接钉钉API接口

调用源系统汤臣倍健营销云接口/erp/api/order/query/purInWarehsOrder获取并加工数据

在轻易云数据集成平台中,生命周期的第一步是调用源系统接口获取数据。本文将详细探讨如何通过调用汤臣倍健营销云的接口/erp/api/order/query/purInWarehsOrder来获取采购入库数据,并进行初步的数据清洗和加工。

接口调用配置

首先,我们需要配置接口调用的元数据。以下是元数据配置的详细内容:

{
  "api": "/erp/api/order/query/purInWarehsOrder",
  "method": "POST",
  "number": "number",
  "id": "id",
  "pagination": {
    "pageSize": 30
  },
  "condition": [
    [
      {
        "field": "itemList.materialNumber",
        "logic": "notlike",
        "value": "F.A"
      }
    ]
  ],
  "idCheck": true,
  "request": [
    {
      "field": "tenantId",
      "label": "经销商id",
      "type": "string",
      "describe": "经销商id(必填,营销云id)如:34cc4109705e4c058b7b3b0352e57d31",
      "value": "xxx"
    },
    {
      "field": "yxyNumber",
      "label": "营销云销售订单号",
      "type": "string",
      "describe": "如:YD1215710122031701,传此参数时,其他时间状态等条件无效"
    },
    {
      "field": "number",
      "label": "系统订单号",
      "type": "string",
      "describe": 
"如:XOUT0000000293,传此参数时,其他时间状态等条件无效"
    },
    {
      "field": 
"status",

"label":
"订单状态",      
"type":
"string",      
"describe":
"0:未审核 1:已审核(已出库)",      
"value":
"1"
    },

{

"field":
"beginTime",      
"label":
"开始时间",      
"type":
"string",      
"describe":
"timeType为空或者0,基于创建时间查询,timeType为1,基于更新时间查询,格式:0000-00-00或0000-00-00 00:00:00,如果不传单号此字段必填",      
"value":
"{{LAST_SYNC_TIME|datetime}}"

},

{

"field":
"endTime",      
"label":
"结束时间",      
"type":
"string",      
"describe":
"timeType为空或者0,基于创建时间查询,timeType为1,基于更新时间查询,格式:0000-00-00或0000-00-00 00:00:00,如果不传单号此字段必填",      
"value":
"{{CURRENT_TIME|datetime}}"

},

{

"field":
"pageNo",      
"label":
"页码",      
"type":
"string",      
"description":"默认1",     
"value":"1"

},

{

   "
field":"pageSize","label":"每页条数","type":"string","describe":"默认30","value":"30"},
{"field":"timeType","label":"时间段标志","type":"string","describe":"查询时间段标识,0:创建时间(默认),1:最后更新时间","value":"1"}]}

数据请求与清洗

在实际操作中,我们需要根据上述元数据配置来构建请求体,并发送POST请求以获取采购入库订单数据。以下是一个示例请求体:

{
  “tenantId”: “34cc4109705e4c058b7b3b0352e57d31”,
  “status”: “1”,
  “beginTime”: “2023-01-01 00:00:00”,
  “endTime”: “2023-01-31 23:59:59”,
  “pageNo”: “1”,
  “pageSize”: “30”,
  “timeType”: “1”
}

接收到响应后,我们需要对数据进行初步清洗。首先,根据condition字段中的条件过滤掉不符合要求的数据。例如,我们需要排除物料编号包含“F.A”的记录:

def filter_data(data):
    return [item for item in data if 'F.A' not in item['itemList']['materialNumber']]

数据转换与写入

在完成初步清洗后,需要将数据转换为目标系统所需的格式,并写入目标数据库或系统。这一步通常涉及字段映射、数据类型转换等操作。例如,将源系统中的订单ID映射到目标系统中的唯一标识符:

def transform_data(data):
    transformed_data = []
    for item in data:
        transformed_item = {
            'order_id': item['id'],
            'order_number': item['number'],
            'status': item['status'],
            # 更多字段映射...
        }
        transformed_data.append(transformed_item)
    return transformed_data

最后,将转换后的数据写入目标系统,可以使用轻易云提供的数据写入功能实现。

实时监控与错误处理

在整个过程中,需要实时监控数据流动和处理状态,以确保数据集成过程顺利进行。如果出现错误,例如网络问题或API响应异常,需要及时记录日志并进行处理:

try:
    response = requests.post(api_url, json=request_body)
    response.raise_for_status()
except requests.exceptions.RequestException as e:
    log_error(e)

通过以上步骤,我们可以高效地从汤臣倍健营销云获取采购入库订单数据,并进行清洗、转换和写入操作,实现不同系统间的数据无缝对接。 金蝶与外部系统打通接口

采购入库同步到SQL Server的ETL转换与写入

在数据集成生命周期的第二步,重点在于将已经集成的源平台数据进行ETL(提取、转换、加载)转换,并最终写入目标平台SQL Server。本文将详细探讨如何通过轻易云数据集成平台配置元数据,实现这一过程。

数据提取与转换

首先,我们需要从源平台提取数据并进行必要的转换,以确保其符合目标平台SQL Server API接口所能接收的格式。以下是元数据配置中的关键部分:

{
  "api": "insert",
  "method": "POST",
  "idCheck": true,
  "request": [
    {
      "label": "主表参数",
      "field": "main_params",
      "type": "object",
      ...
    },
    {
      "label": "扩展表参数",
      "field": "extend_params_1",
      "type": "array",
      ...
    }
  ],
  ...
}

主表参数配置

主表参数包含了采购入库单的基本信息,如单号编号、日期、时间、单位内码等。这些参数需要经过适当的格式化和映射,以便SQL Server能够正确解析和存储。例如:

  • djbh(单号编号):直接从源数据中提取。
  • rq(日期)和ontime(时间):需要将审核时间auditTime进行日期和时间格式的转换。
  • hsje(含税金额):从项目列表中计算得到。

以下是主表参数的具体配置示例:

{
  "parent": "main_params",
  "label": "日期",
  "field": "rq",
  "type": "string",
  "value": "{{auditTime|date}}"
},
{
  "parent": "main_params",
  ...
}

扩展表参数配置

扩展表参数则包含了每个商品项的详细信息,如商品内码、仓库编号、批号、数量等。这些参数同样需要进行相应的转换和映射。例如:

  • spid(商品内码):通过查找集合获取对应的商品ID。
  • shl(数量):确保数量大于0。
  • hshj(含税价):通过函数计算得到。

以下是扩展表参数的具体配置示例:

{
  "parent": "extend_params_1",
  ...
},
{
  "parent": "extend_params_1",
  ...
}

SQL语句生成

在完成数据提取和转换后,需要生成相应的SQL语句以便将数据写入SQL Server。元数据配置中提供了主SQL语句和扩展SQL语句:

{
  ...
  {
    "label": "主SQL语句",
    ...
    }
},
{
    ...
    {
        ...
        }
}

这些SQL语句将被用于插入采购入库单及其详细项到目标数据库中。例如,主SQL语句如下:

INSERT INTO gxkphz (djbh,djlx,rq,ontime,wldwid,hsje,shouhr,shhdz,lxdh,beizhu,webdjbh) 
VALUES (:djbh,:djlx,:rq,:ontime,:wldwid,:hsje,:shouhr,:shhdz,:lxdh,:beizhu,:webdjbh)

而扩展SQL语句则用于插入每个商品项的详细信息:

INSERT INTO gxkpmx (djbh,dj_sn,spid,ckid,pihao,sxrq,baozhiqi,shl,hshj,hsje,xgdjbh,recnum,hzid,ckname) 
VALUES (:djbh,:dj_sn,:spid,:ckid,:pihao,:sxrq,:baozhiqi,:shl,:hshj,:hsje,:xgdjbh,:recnum,:hzid,:ckname)

数据写入

最后,通过轻易云的数据集成平台,将生成的SQL语句发送到目标平台SQL Server,实现数据写入。由于该平台支持全异步操作,能够确保高效且无缝的数据传输。

综上所述,通过合理配置元数据,我们可以高效地实现从源平台到目标平台的数据ETL转换与写入,确保采购入库同步过程顺利进行。 钉钉与ERP系统接口开发配置

更多系统对接方案