汤臣倍健营销云数据集成到SQL Server:采购入库同步案例
在本次技术案例中,我们将深入探讨如何通过轻易云数据集成平台,将汤臣倍健营销云的数据高效、可靠地集成到SQL Server,以实现采购入库信息的同步。具体方案为“采购入库同步-(佰嘉)广元跃泰”。
首先,我们需要从汤臣倍健营销云获取采购入库订单数据,对应API接口为 /erp/api/order/query/purInWarehsOrder
。为了确保不漏单并抓取大批量的数据,采用了定时任务机制进行调用。这一过程不仅涉及分页处理和限流机制,还需考虑与SQL Server之间的数据格式差异。
利用轻易云平台提供的全透明可视化操作界面,可以实时监控每个环节的状态,从而保证数据处理的一致性和完整性。在大量数据快速写入SQL Server时,选择使用批量插入操作,并通过 insert
API 将整理好的数据导入指定数据库表中。
期间必须特别注意以下几个关键点:
- 如何可靠且定时地抓取汤臣倍健营销云接口的数据。
- 处理分页和限流问题,以防止接口请求过载。
- 调用 SQL Server 数据插入 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转换与写入,确保采购入库同步过程顺利进行。