聚水潭·奇门数据集成到金蝶云星空的实践案例:发货单对接销售出库-V
在本次技术分享中,我们将探讨如何通过轻易云数据集成平台,实现聚水潭·奇门数据与金蝶云星空的数据无缝对接,具体方案为“发货单对接销售出库-V”。在该案例中,系统需要高效、可靠地从聚水潭·奇门获取并处理大量发货单数据,并批量写入到金蝶云星空进行管理。
API接口调用及分页处理
首先,通过调用聚水潭·奇门提供的API接口jushuitan.saleout.list.query
抓取发货单数据。为了确保不遗漏任何订单,我们必须设计一个定时任务来周期性地请求此接口。同时,为了应对大规模的数据量和避免接口限流问题,需要特别处理分页机制。在请求参数中指定页码和每页条数,多次请求后合并结果以获取完整的订单列表。
# 伪代码示例
page = 1
while True:
response = call_jushuitan_api("jushuitan.saleout.list.query", page=page, limit=100)
if not response['data']:
break
process_data(response['data'])
page += 1
数据格式转换及写入逻辑
在接收到完整的订单列表后,需要将这些数据按照金蝶云星空所需的格式进行转换。例如,聚水潭中的字段名与金蝶中的字段名可能有所不同,这就需要我们设计一套映射规则,将源系统中的字段正确配置至目标系统。完成格式转换后,通过调用金蝶云星空提供的batchSave
API实现批量写入操作。
// 示例映射规则(假想)
{
"shipOrderNo": "order_id",
"deliveryTime": "date_shipped",
...
}
// 假设已完成装换后的结构体示意图:
[
{
"order_id": "1234567890",
"date_shipped": "2023-10-07T14:00:00Z",
...
}
]
异常处理与错误重试机制
在实际运行过程中难免会遇到网络故障或服务异常等情况,因此针对失败的数据传输需要有完善的错误重试机制,以提高整体可靠性。当某个API调用失败时,可以记录相关日志并加入重试队列,在一定时间间隔后再次尝试发送。此外,实时监控整个流程状态也是不可或缺的一部分,通过详细且及时的日志记录,有助于快速定位和解决问题。
综上,本案例展示了一个复杂
调用聚水潭·奇门接口获取并加工数据
在数据集成生命周期的第一步中,调用源系统接口以获取原始数据是至关重要的一环。本文将深入探讨如何通过轻易云数据集成平台调用聚水潭·奇门接口jushuitan.saleout.list.query
,并对获取的数据进行初步加工。
接口调用配置
首先,我们需要配置接口调用的元数据。根据提供的元数据配置,可以看到以下关键参数:
- API名称:
jushuitan.saleout.list.query
- 请求方法:
POST
- 分页参数:
page_index
(页码)和page_size
(页数) - 时间参数:
start_time
(开始时间)和end_time
(结束时间) - 状态参数:固定值为
Confirmed
具体的请求参数配置如下:
{
"api": "jushuitan.saleout.list.query",
"method": "POST",
"request": [
{"field": "page_index", "label": "页码", "type": "int"},
{"field": "page_size", "label": "页数", "type": "string", "value": "20"},
{"field": "start_time", "label": "开始时间", "type": "string", "value": "{{LAST_SYNC_TIME|datetime}}"},
{"field": "end_time", "label": "结束时间", "type": "string", "value": "{{CURRENT_TIME|datetime}}"},
{"label": "status", "field": "status", "type": "string", "value":"Confirmed"}
]
}
数据过滤条件
为了确保获取的数据符合业务需求,我们还需要设置过滤条件。在本案例中,过滤条件为店铺名称不包含“红梦”:
"condition_bk":[[{"field":"shop_name","logic":"notlike","value":"红梦"}]],
"condition":[[{"field":"shop_name","logic":"notlike","value":"红梦"}]]
数据格式化与字段映射
在获取到原始数据后,需要对其进行初步加工。根据元数据配置,我们需要将字段 io_id
重命名为 io_id_1
并将其格式化为字符串:
"formatResponse":[{"format":"string","old":"io_id","new":"io_id_1"}]
这种字段映射和格式转换有助于后续的数据处理和存储。
数据请求与清洗流程
-
初始化请求参数:
- 设置分页参数
page_index
和page_size
- 设置时间范围
start_time
和end_time
- 固定状态参数为
Confirmed
- 设置分页参数
-
发送请求并获取响应:
- 使用 POST 方法调用 API
- 获取响应数据并检查其完整性和有效性
-
应用过滤条件:
- 过滤掉店铺名称包含“红梦”的记录
-
格式化响应数据:
- 将字段
io_id
重命名为io_id_1
- 确保字段类型符合预期(例如,将
io_id_1
转换为字符串)
- 将字段
-
输出处理后的数据:
- 将处理后的数据传递给下一个生命周期阶段进行进一步处理或存储
实际案例示例
假设我们已经成功调用了接口,并获得了以下原始响应数据:
[
{"io_id": 12345, "shop_name": "蓝天商店"},
{"io_id": 67890, "shop_name": "红梦商店"}
]
经过上述步骤处理后,最终得到的数据应如下所示:
[
{"io_id_1": "12345", "shop_name": "蓝天商店"}
]
可以看到,第二条记录由于店铺名称包含“红梦”被过滤掉,而第一条记录中的 io_id
字段被重命名并转换为字符串。
通过上述步骤,我们成功地完成了从聚水潭·奇门接口获取、清洗和初步加工数据的全过程。这不仅确保了数据的准确性和一致性,也为后续的数据转换与写入奠定了坚实基础。
利用轻易云数据集成平台实现金蝶云星空API接口的数据写入
在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,并转为目标平台能够接收的格式。本文将深入探讨如何利用轻易云数据集成平台,将发货单数据转换并写入到金蝶云星空API接口。
元数据配置解析
元数据配置是ETL过程中至关重要的一部分,它定义了如何将源数据映射到目标系统所需的格式。以下是我们使用的元数据配置:
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"rowsKey": "array",
"rows": 1,
"method": "batchArraySave"
},
"request": [
{"field":"FBillTypeID","label":"单据类型","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"XSCKD01_SYS"},
{"field":"FBillNo","label":"单据编号","type":"string","value":"{io_id}"},
{"field":"FDate","label":"日期","type":"string","value":"{io_date}"},
{"field":"FSaleOrgId","label":"销售组织","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find F_PSEH_OrgId from 255f7565-c782-3985-9020-59aa6a647e61 where FName={shop_name}"},
{"field":"FCustomerID","label":"客户","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_mongoQuery 255f7565-c782-3985-9020-59aa6a647e61 findField=content.FNumber where={\"content.FName\":{\"$eq\":\"{shop_name}\"}}"},
{"field":"FSalesManID","label":"销售员","type":"string","value":"{order_staff_name}","parser":{"name":"ConvertObjectParser","params":"FName"}},
{"field":"FSaleDeptID","label":"销售部门","type":"string","parser":{"name":"ConvertObjectParser","params":""}},
{"field":"FStockOrgId","label":"发货组织","type":"string","parser":{"name":"ConvertObjectParser","params":""},"value":""},
{"field":"","label":"","type":"","value":""},
...
],
"otherRequest":[
{"field":"","label":"","type":"","value":""},
...
]
}
数据字段解析与转换
-
单据类型 (FBillTypeID):
- 类型: string
- 值: 固定值
XSCKD01_SYS
- 转换器:
ConvertObjectParser
,参数为FNumber
-
单据编号 (FBillNo):
- 类型: string
- 值:
{io_id}
,直接从源数据中获取
-
日期 (FDate):
- 类型: string
- 值:
{io_date}
,直接从源数据中获取
-
销售组织 (FSaleOrgId):
- 类型: string
- 值:
_findCollection find F_PSEH_OrgId from ... where FName={shop_name}
- 转换器:
ConvertObjectParser
,参数为FNumber
-
客户 (FCustomerID):
- 类型: string
- 值:
_mongoQuery ... findField=content.FNumber where={"content.FName":{"$eq":{shop_name}}}
- 转换器:
ConvertObjectParser
,参数为FNumber
-
销售员 (FSalesManID):
- 类型: string
- 值:
{order_staff_name}
- 转换器:
ConvertObjectParser
,参数为FName
-
明细信息 (FEntity): 明细信息是一个数组,每个元素包含多个字段,如物料编码、实发数量、批号等。这些字段通过不同的转换规则和查找逻辑进行处理。
API调用与写入
在完成所有字段的解析和转换后,我们需要通过API调用将这些数据写入到金蝶云星空系统。以下是关键步骤:
-
API Endpoint: 使用POST方法调用
batchSave
API。 -
请求体构建: 根据元数据配置构建请求体。请求体包含了所有需要传递的数据字段及其对应的值。
-
提交并审核: 配置项中包含
IsAutoSubmitAndAudit
字段,设置为true表示在保存后自动提交并审核。 -
验证基础资料: 配置项中包含
IsVerifyBaseDataField
字段,设置为true表示在写入前验证基础资料的正确性。
实际案例应用
假设我们有一条发货单记录,需要将其写入金蝶云星空系统。以下是具体操作步骤:
- 从源系统获取发货单记录,包括单据编号、日期、销售组织等信息。
- 根据元数据配置,对每个字段进行解析和转换。例如,将销售组织名称转换为对应的编码。
- 构建API请求体,将所有解析后的字段填充到请求体中。
- 调用金蝶云星空API,将构建好的请求体发送到目标系统。
- 检查返回结果,确保数据成功写入。如果失败,根据错误信息进行调试和修正。
通过上述步骤,我们可以高效地将源系统的数据转换并写入到金蝶云星空系统,实现不同系统间的数据无缝对接。这不仅提升了业务处理效率,还确保了数据的一致性和准确性。