使用轻易云平台进行数据集成及转换:从调用接口到数据清洗
### 旺店通·企业奇门数据集成到金蝶云星空:技术案例分享
在本技术案例中,我们将深入探讨如何实现旺店通·企业奇门销售出库单与金蝶云星空的高效对接。具体方案名称为:“03-旺店通销售出库单对接金蝶销售出库单(线上)_合并_容错”,旨在解决数据不漏单和快速批量写入等关键问题。
首先,确保从旺店通·企业奇门接口 `wdt.stockout.order.query.trade` 高效、定时抓取销售出库单是整个集成过程的重要环节。这一部分需要特别关注接口的分页及限流问题,以避免由于大量请求导致的数据获取失败。我们通过精心设计的数据抓取机制,实现了可靠、定时地收集数据,并监控每次抓取状态,确保零漏报和处理及时性。
接着,我们聚焦于将获取到的大量源数据批量写入到金蝶云星空。在这一过程中,调用金蝶云星空提供的 `batchSave` API 并进行相应的数据格式转换极其重要。考虑到两套系统之间可能存在的数据结构差异,我们特别设计了一系列映射规则,对字段进行一一对应处理。同时,还引入了容错机制,当发现异常或者错误发生时,可以自动重试并记录日志以供后续审查和改进。
最后,对于整个处理过程的实时监控与日志记录也进行了详细部署,不仅确保业务流程的高效透明,还能即时捕捉异常情况并快速响应修正。这不仅提升了整体运维效率,也降低了潜在风险,为业务部门提供稳定可靠的数据服务支持。
以上只是一个简要开端,在接下来的内容中,我们将进一步探讨各个技术细节以及其实际应用中的挑战和解决方案,包括如何优化调度策略、提高API调用效率,以及实现更细粒度的权限控制等。
![金蝶云星空API接口配置](https://pic.qeasy.cloud/D4.png~tplv-syqr462i7n-qeasy.image)
### 调用源系统旺店通·企业奇门接口获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台配置元数据,调用旺店通·企业奇门接口`wdt.stockout.order.query.trade`来获取并加工数据。
#### 接口调用与请求参数配置
首先,我们需要配置请求参数以便调用`wdt.stockout.order.query.trade`接口。该接口采用POST方法,主要用于查询销售出库单信息。以下是具体的请求参数配置:
- **开始时间(start_time)**:用于增量获取数据,格式为`yyyy-MM-dd HH:mm:ss`。我们可以通过函数计算当前时间减去一天的起始时间。
```json
{
"field": "start_time",
"label": "开始时间",
"type": "datetime",
"describe": "增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss",
"value": "_function from_unixtime(({CURRENT_TIME}-86400),'%Y-%m-%d 00:00:00')"
}
```
- **结束时间(end_time)**:同样用于增量获取数据,格式为`yyyy-MM-dd HH:mm:ss`。
```json
{
"field": "end_time",
"label": "结束时间",
"type": "datetime",
"describe": "增量获取数据,end_time作为结束时间,格式:yyyy-MM-dd HH:mm:ss",
"value": "_function from_unixtime(({CURRENT_TIME}-86400),'%Y-%m-%d 23:59:59')"
}
```
- **状态(status)**:用于筛选不同状态的订单,例如已取消、已审核、已发货等。
```json
{
"field": "status",
"label": "状态",
"type": "string",
"describe": "5已取消,55已审核,95已发货,105 部分打款,110已完成,113:异常发货"
}
```
- **店铺编号(shop_no)**和**批量店铺编号(shop_nos)**:用于指定单个或多个店铺编号来获取相应的数据。
```json
{
"field": "shop_no",
"label": "店铺编号",
"type": "string",
"describe": "代表店铺所有属性的唯一编码,用于店铺区分"
},
{
"field": "shop_nos",
"label": "店铺编号(批量)",
"type": "string",
"describe":"批量指定店铺获取(多个店铺编号之间用英文逗号隔开)",
"value":"32,33,159"
}
```
#### 数据分页与处理
为了高效处理大规模数据,我们需要进行分页处理。每次请求的数据条数可以通过`page_size`字段设置,这里我们设置为100条:
```json
{
"field":"page_size",
"label":"分页大小",
"type":"string",
"describe":"每页返回的数据条数,输入值范围1~100,不传本参数默认为40。",
"value":"100"
}
```
页号通过`page_no`字段控制,从0页开始:
```json
{
“field”:”page_no”,
“label”:”页号”,
“type”:”string”,
“describe”:”不传值默认从0页开始”,
“value”:”{PAGINATION_START_PAGE}”
}
```
#### 数据清洗与转换
在接收到原始数据后,我们需要对其进行清洗和转换。例如,将字段`consign_time`转换为日期格式,并重命名为`consign_date`:
```json
{
“old”:”consign_time”,
“new”:”consign_date”,
“format”:”date”
}
```
此外,还需要将嵌套的列表字段如`details_list`进行扁平化处理,以便后续的数据写入操作。
#### 异常处理与容错机制
为了确保数据集成过程的稳定性,我们还需要配置异常处理和容错机制。例如,通过定时任务(crontab)来补救遗漏的数据:
```json
{
“crontab”:”30 7,19 * * *”,
“takeOverRequest”:[
{
“field”:”gmtModifiedStart”,
“value”:”_function from_unixtime(({CURRENT_TIME}-86400-86400),’%Y-%m-%d 00:00:00’)”
},
{
“field”:”endGmtCreate”,
“value”:”_function from_unixtime(({CURRENT_TIME}-86400-86400),’%Y-%m-%d 23:59:59’)”
}
]
}
```
通过以上步骤,我们能够高效地调用旺店通·企业奇门接口获取销售出库单信息,并对数据进行必要的清洗和转换,为后续的数据写入和分析奠定基础。
![如何对接金蝶云星空API接口](https://pic.qeasy.cloud/S25.png~tplv-syqr462i7n-qeasy.image)
### 使用轻易云数据集成平台将源平台数据转换并写入金蝶云星空API接口
在数据集成的生命周期中,ETL(提取、转换、加载)是至关重要的一环。本文将深入探讨如何使用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,并转为金蝶云星空API接口所能够接收的格式,最终写入目标平台。
#### 数据转换与写入过程
在本案例中,我们需要将旺店通销售出库单的数据转换为金蝶销售出库单格式,并通过金蝶云星空API接口进行写入。以下是具体的元数据配置和操作步骤。
#### 元数据配置解析
元数据配置如下:
```json
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"rowsKey": "array",
"rows": 1,
"method": "batchArraySave"
},
"groupCalculate": {
"headerGroup": ["shop_no", "warehouse_no", "consign_date"],
"bodyGroup": ["details_list_goods_no"],
"bodyName": "details",
"targetBodyName": "FEntity",
"bodyMaxLine": 500,
"calculate": {
"details_list_goods_count": "$sum",
"details_list_paid": "$sum"
}
},
...
}
```
#### 请求字段解析
1. **FBillTypeID**: 单据类型,固定值为`WDTXSCKD`。
2. **FBillNo**: 单据编号,对应源数据中的`order_no`。
3. **FDate**: 日期,对应源数据中的`consign_date`。
4. **FSaleOrgId**: 销售组织,通过`shop_no`在基础资料中查找对应的销售组织编码。
5. **FCustomerID**: 客户,对应源数据中的`shop_no`,需要转换为金蝶系统中的客户编码。
6. **FSaleDeptID**: 销售部门,需要通过基础资料转换。
7. **FStockOrgId**: 发货组织,通过`shop_no`在基础资料中查找对应的发货组织编码。
8. **FNOTE**: 备注,可选字段。
9. **FEntity**: 明细信息,包括物料编码、实发数量、税率、含税单价、仓库和库存状态等。
#### 明细信息解析
明细信息(FEntity)包含以下字段:
1. **FMaterialID**: 物料编码,对应源数据中的`details_list_goods_no`,需要转换为金蝶系统中的物料编码。
2. **FRealQty**: 实发数量,对应源数据中的`details_list_goods_count`。
3. **FEntryTaxRate**: 税率,对应源数据中的`tax_rate`。
4. **FTaxPrice**: 含税单价,通过计算公式得到: `round(details.details_list_paid / details.details_list_goods_count, 7)`。
5. **FStockID**: 仓库,对应源数据中的`warehouse_no`,需要转换为金蝶系统中的仓库编码。
6. **FStockStatusID**: 库存状态,固定值为 `KCZT01_SYS`。
#### 财务信息解析
财务信息(SubHeadEntity)包含以下字段:
1. **FSettleOrgID**: 结算组织,通过 `shop_no` 在基础资料中查找对应的结算组织编码。
2. **FSETTLECURRID**: 结算币别,固定值为 `PRE001`.
#### API请求示例
根据上述元数据配置,我们构建API请求如下:
```json
{
"FormId": "SAL_OUTSTOCK",
"Operation": {
...
},
...
}
```
#### 实现步骤
1. 配置元数据:根据业务需求和目标平台API接口要求,配置好相应的元数据字段和映射关系。
2. 数据提取:从源平台提取销售出库单的数据,并进行初步清洗和校验。
3. 数据转换:根据元数据配置,将提取到的数据进行相应的字段映射和格式转换,包括基础资料的查找和计算公式的应用等。
4. 数据写入:通过调用金蝶云星空API接口,将转换后的数据批量写入目标平台。
#### 注意事项
- 确保所有需要转换的基础资料在目标系统中已经存在,并且编码正确无误,否则会导致接口调用失败。
- 对于大批量的数据操作,可以考虑分批次进行,以避免超过API接口的限制。
通过以上步骤,我们可以高效地完成从旺店通销售出库单到金蝶销售出库单的数据集成与写入,实现不同系统间的数据无缝对接。
![如何对接企业微信API接口](https://pic.qeasy.cloud/T12.png~tplv-syqr462i7n-qeasy.image)