吉客云·奇门数据集成到金蝶云星空:销售单对接技术案例
在实际业务过程中,高效、可靠的数据集成无疑是实现系统间平稳协同的关键。本文将详细介绍一个成功的案例——通过轻易云数据集成平台,将吉客云·奇门的数据准确写入至金蝶云星空,尤其针对方案销售单对接销售出库_类型93内部采销。
首先,在确保吉客云·奇门数据不漏单方面,利用其提供的API接口jackyun.tradenotsensitiveinfos.list.get
进行定时抓取,以保证每条交易信息都被捕获。在抓取过程中,需要特别处理接口的分页和限流问题,通过设置合理的分页参数和限流机制来确保存储效率与稳定性。
其次,批量将大量获取的数据高效写入到金蝶云星空中,我们采用了它提供的batchSave
API,并进行了相应的数据格式转换。这部分工作涉及两个系统之间数据字段映射与转换,为此我们定制了一系列适配规则来确保两边系统无缝衔接。同时,实现了实时监控和日志记录功能,对整个传输过程施行全方位监管以防止异常情况发生。
在遇到意外情况下,例如网络抖动或临时性服务不可用,我们设计了一整套重试机制以提高对接可靠性。错误重试不仅涵盖了基础通信故障,还包括如字段遗漏、格式错误等细节问题,从而保障最终数据一致性的同时,提高容错能力。
总之,从初始抓取吉客云·奇门接口开始,到最后的一步步推进至金蝶云星空,全程透明可视化操作大幅减轻了管理复杂度。本案例不仅展示了解决具体业务需求的方法,同时也为其他类似场景下的数据集成提供有效借鉴。
调用吉客云·奇门接口jackyun.tradenotsensitiveinfos.list.get获取并加工数据
在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用吉客云·奇门接口jackyun.tradenotsensitiveinfos.list.get
来获取销售单数据,并对其进行初步加工。
接口概述
吉客云·奇门接口jackyun.tradenotsensitiveinfos.list.get
用于获取不敏感的交易信息列表。该接口采用POST请求方式,支持多种查询条件和分页功能,能够灵活地获取所需的交易数据。
元数据配置解析
以下是元数据配置的详细解析:
{
"api": "jackyun.tradenotsensitiveinfos.list.get",
"method": "POST",
"number": "tradeNo",
"id": "tradeId",
"pagination": {"pageSize": 20},
"idCheck": true,
"condition": [[{"field":"tradeStatus","logic":"egt","value":"6000"}]],
"request": [
{"field":"modified_begin","label":"起始时间","type":"string","describe":"修改起始时间,和结束时间必须同时存在,时间间隔不能超过七天,与线上单号不能同时为空"},
{"field":"modified_end","label":"结束时间","type":"string","describe":"修改结束时间,和起始时间必须同时存在,时间间隔不能超过七天,与线上单号不能同时为空"},
{"field":"startModified","label":"最后修改时间(起始)","type":"string"},
{"field":"endModified","label":"最后修改时间(截止)","type":"string"},
{"field":"tradeNo","label":"销售单号,多个用半角逗号分隔","type":"string"},
{"field":"pageSize","label":"每页记录数,默认50,最大200","type":"string","value":"200"},
{"field":"pageIndex","label":"页码,0为第1页","type":"string"},
{"field":"hasTotal","label":"默认返回,首次调用时可以传1获取总记录数","type":"string","value":"1"},
{"field":"startCreated","label":"创建时间(起始)","type":"string"},
{"field":"endCreated","label":"创建时间(截止)","type":"string"},
{"field":"startAuditTime","label":"审核时间(起始)","type":"string"},
{"field":"endAuditTime","label":"审核时间(截止)","type":"string"},
{"field":"startConsignTime","label":"发货时间(起始)","type\":\"string\",\"value\":\"_function from_unixtime(({CURRENT_TIME}-86400),'%Y-%m-%d 00:00:00')\"},
{"field\":\"endConsignTime\",\"label\":\"发货时间(截止)\",\"type\":\"string\",\"value\":\"_function from_unixtime(({CURRENT_TIME}-86400),'%Y-%m-%d 23:59:59')\"},
{"field\":\"tradeStatus\",\"label\":\"订单状态\",\"type\":\"string\"},
{"field\":\"tradeType\",\"label\":\"订单类型\",\"type\":\"string\",\"value\":\"93\"},
{"field\":\"sourceTradeNos\",\"label\":\"网店订单号\",\"type\":\"string\"},
{"field\":\"fields\",\"label\":\"需要返回字段列表逗号分隔\",\"type\":\"string\",\"value\":\"checkTotal,tradeNo,postFee,otherFee,chargeCurrency,accountName,payType,payNo,sellerMemo,buyerMemo,goodsDetail,goodsDetail.goodsNo,goodsDetail.goodsName,goodsDetail.specName,goodsDetail.barcode,goodsDetail.sellCount,goodsDetail.unit,goodsDetail.sellPrice,goodsDetail.sellTotal,goodsDetail.cost,goodsDetail.discountTotal,goodsDetail.discountPoint,goodsDetail.taxFee,goodsDetail.shareFavourableFee,goodsDetail.estimateWeight,goodsDetail.goodsMemo,goodsDetail.cateName,goodsDetail.brandName,goodsDetail.goodsTags,goodsDetail.isFit,goodsDetail.isGift,goodsDetail.discountFee,goodsDetail.taxRate,goodsDetail.estimateGoodsVolume,goodsDetail.isPresell,goodsDetail.customerPrice,goodsDetail.customerTotal,..."}
],
"omissionRemedy":{"crontab": "20 */2 * * *", "takeOverRequest":[]}
}
请求参数设置
在实际操作中,我们需要根据业务需求设置请求参数。以下是一些关键参数的设置:
- modified_begin 和 modified_end:用于指定修改日期范围,这两个参数必须同时存在且间隔不超过七天。
- pageSize 和 pageIndex:用于分页控制,每页记录数设置为200条,从第一页开始。
- startConsignTime 和 endConsignTime:用于指定发货日期范围,这里使用了函数计算当前日期前一天的起止时间。
- fields:指定需要返回的字段列表,以逗号分隔。
例如:
{
"modified_begin": "2023-09-01",
"modified_end": "2023-09-07",
"pageSize": 200,
"pageIndex": 0,
"startConsignTime": "_function from_unixtime(({CURRENT_TIME}-86400),'%Y-%m-%d 00:00:00')",
"endConsignTime": "_function from_unixtime(({CURRENT_TIME}-86400),'%Y-%m-%d 23:59:59')",
"fields": "checkTotal,..."
}
数据清洗与转换
在获取到原始数据后,需要对其进行清洗与转换,以便后续处理和分析。常见的数据清洗操作包括:
- 去除冗余字段:只保留业务需要的字段。
- 字段重命名:将字段名转换为更易理解或符合业务规范的名称。
- 数据格式转换:如日期格式、金额单位等。
例如,将原始数据中的日期格式从字符串转换为标准日期格式:
import pandas as pd
# 假设 data 是从接口获取到的数据
data['consign_time'] = pd.to_datetime(data['consign_time'], format='%Y-%m-%d %H:%M:%S')
实时监控与异常处理
在整个数据集成过程中,通过轻易云平台的实时监控功能,可以随时查看数据流动和处理状态。一旦发现异常情况,如接口调用失败或数据格式错误,可以及时采取措施进行修正。
通过以上步骤,我们可以高效地从吉客云·奇门接口获取销售单数据,并对其进行初步加工,为后续的数据分析和处理打下坚实基础。
将源平台数据转换为金蝶云星空API接口格式并写入目标平台
在数据集成的生命周期中,ETL(提取、转换、加载)过程是将源平台的数据转换为目标平台所需格式的关键步骤。本文将详细探讨如何使用轻易云数据集成平台,将销售单对接销售出库类型93内部采销的数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。
API接口配置
在进行数据转换和写入之前,首先需要了解金蝶云星空API接口的配置。根据提供的元数据配置,我们需要使用batchSave
API,通过POST方法提交数据。以下是API接口的一些关键配置项:
- api:
batchSave
- method:
POST
- idCheck:
true
- operation:
rowsKey
:array
rows
: 10method
:batchArraySave
请求字段解析与映射
请求字段定义了从源数据到目标数据的映射关系。以下是一些关键字段及其解析方式:
-
单据类型 (FBillTypeID)
- 类型:
string
- 描述:单据类型
- 值:
XSCKD01_SYS
- 类型:
-
单据编号 (FBillNo)
- 类型:
string
- 描述:单据编号
- 值:
{tradeNo}
- 类型:
-
日期 (FDate)
- 类型:
string
- 描述:日期
- 值:
{consignTime}
- 类型:
-
销售组织 (FSaleOrgId)
- 类型:
string
- 描述:组织
- 解析器:
ConvertObjectParser
- 参数:
FNumber
- 值:
"_mongoQuery 38faaa66-9955-34e5-bd58-7c4099b53af5 findField=content.warehouseCompanyCode where={\"content.warehouseCode\" : {\"$eq\":\"{warehouseCode}\"}}"
- 类型:
-
客户 (FCustomerID)
- 类型:
string
- 描述:基础资料
- 解析器:
ConvertObjectParser
- 参数:
FNumber
- 值:
{shopCode}
- 类型:
-
备注 (FNote)
- 类型:
string
- 描述:多行文本
- 值:
{sellerMemo}
- 类型:
明细信息字段解析
对于明细信息(FEntity),我们需要处理多个子字段,这些子字段包含了具体的商品信息。以下是一些关键字段及其解析方式:
-
物料编码 (FMaterialId)
- 类型:
string
- 描述:基础资料
- 解析器:
ConvertObjectParser
- 参数:
FNumber
- 值:
"{{goodsDetail.goodsNo}}"
- 类型:
-
实退数量 (FRealQty)
- 类型:
string
- 描述:数量
- 值:
"{{goodsDetail.sellCount}}"
- 类型:
-
单价 (FPrice)
- 类型:
string
- 描述:单价
- 值:
"_function round(({{goodsDetail.shareFavourableAfterFee}}/{{goodsDetail.sellCount}}),4)"
- 类型:
-
金额 (FAmount)
- 类型:
string
- 描述:金额
- 值:
"{{goodsDetail.shareFavourableAfterFee}}"
- 类型:
-
仓库 (FStockId)
"_mongoQuery 38faaa66-9955-34e5-bd58-7c4099b53af5 findField=content.warehouseCompanyCode where={\"content.warehouseCode\" : {\"$eq\":\"{warehouseCode}\"}}"
特殊字段处理
某些字段需要特殊处理,例如计算含税单价、折扣额和税率等。这些字段通常通过函数计算得到:
-
含税单价 (FTaxPrice)
"_function round(({{goodsDetail.shareFavourableAfterFee}}/{{goodsDetail.sellCount}}),4)"
-
销售成本价(网店)(F_LSJC_Decimal1)
"_function {{goodsDetail.cost}}/{{goodsDetail.sellCount}}"
-
总成本(网店)(F_LSJC_Decimal)
"{{goodsDetail.cost}}"
最终请求结构
最终请求结构将包含所有上述字段,并按照金蝶云星空API的要求进行组织。通过轻易云数据集成平台,可以实现全透明可视化操作,确保每个环节清晰易懂,并实时监控数据流动和处理状态。
通过上述步骤,我们可以将源平台的数据成功转换为金蝶云星空API接口所能接收的格式,并顺利写入目标平台。这不仅提升了业务的透明度和效率,也确保了不同系统间的数据无缝对接。