使用轻易云平台进行金蝶云到旺店通的数据ETL过程详解
### 金蝶云星空数据集成到旺店通·企业奇门的物料对接方案
在本案例中,我们将探讨如何通过轻易云数据集成平台,实现金蝶云星空(Kingdee Cloud)与旺店通·企业奇门(Wangdiantong QiMen)的系统对接,以实现高效、可靠的物料数据同步。具体方案名称为“物料对接”。本文将详细介绍从金蝶云星空获取源数据,处理分页和限流问题,再到如何快速、大批量地写入到旺店通·企业奇门。
首先,通过调用金蝶云星空提供的API接口 `executeBillQuery` 定时抓取最新的物料信息。为了确保数据不漏单,需要精确设置定时任务,并实时监控每次接口调用返回的数据状态。同时,还必须考虑分页和限流等问题,为此我们会设计一套重试机制来应对网络抖动和服务器响应迟缓等情况。
在获取到原始数据后,我们需进行必要的数据格式转换以适配目标系统——旺店通·企业奇门。这一步至关重要,因为两大系统在字段定义上存在显著差异。借助轻易云强大的ETL(Extract, Transform, Load)功能,可以实现元数据信息的自动映射及转换,有效消除人工处理可能带来的错误。
随后,我们利用旺店通提供的数据写入API `wdt.goods.push` 实现大量物料信息向其数据库中的快速推送。在此过程中,同样需要设置合适的重试机制以及异常处理流程,以确保任何意外状况都能被及时捕获并妥善解决,从而保证整个集成过程平稳运行。
最后,为了进一步保障数据传输质量与实时性,轻易平台内置了详尽日志记录系统,可以实时监控每个节点的数据流动情况。一旦出现异常,可以迅速定位问题环节并采取相应措施,提高整体效率与稳定性。
![钉钉与ERP系统接口开发配置](https://pic.qeasy.cloud/D21.png~tplv-syqr462i7n-qeasy.image)
### 调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口,获取物料数据并进行初步加工。
#### 接口配置与调用
首先,我们需要配置元数据以便正确调用金蝶云星空的`executeBillQuery`接口。以下是关键的元数据配置:
```json
{
"api": "executeBillQuery",
"effect": "QUERY",
"method": "POST",
"number": "FNumber",
"id": "FMATERIALID",
"idCheck": true,
"request": [
{"field":"FMATERIALID","label":"FMATERIALID","type":"string","describe":"111","value":"FMATERIALID"},
{"field":"FNumber","label":"FNumber","type":"string","describe":"111","value":"FNumber"},
{"field":"FName","label":"FName","type":"string","describe":"111","value":"FName"},
{"field":"FSpecification","label":"FSpecification","type":"string","describe":"111","value":"FSpecification"},
{"field":"FOldNumber","label":"FOldNumber","type":"string","describe":"111","value":"FOldNumber"},
{"field":"FBARCODE","label":"FBARCODE","type":"string","describe":"111","value":"FBARCODE"},
{"field":"FDescription","label":"FDescription","type":"string","describe":"111","value":"FDescription"},
{"field": "Limit", "label": "Limit", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
{"field": "StartRow", "label": "StartRow", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
{"field": "FilterString", "label": "FilterString", "type": "string",
"describe":
"示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=",
"value":
"FApproveDate>='{{LAST_SYNC_TIME|dateTime}}'"},
{"field":
"FieldKeys",
"label":
"FieldKeys",
"type":
"array",
"describe":
"金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber",
"value":
"{MAIN_REQUEST}"},
{"field":
"FormId",
"label":
"FormId",
"type":
"string",
"describe":
"必须填写金蝶的表单ID如:PUR_PurchaseOrder",
"value":
"BD_MATERIAL"}
],
...
}
```
上述配置定义了我们需要从金蝶云星空获取的数据字段,包括物料ID(`FMATERIALID`)、物料编码(`FNumber`)、物料名称(`FName`)等。同时,还设置了分页参数和过滤条件,以确保我们能够高效地获取所需数据。
#### 数据请求与清洗
在完成接口配置后,我们可以通过轻易云平台发起HTTP POST请求来调用`executeBillQuery`接口。请求体将包含我们在元数据中定义的字段和参数。例如:
```json
{
"FormId": "BD_MATERIAL",
"FieldKeys": ["FMATERIALID", ...],
...
}
```
响应结果将包含所请求的数据字段。接下来,我们需要对这些原始数据进行清洗和初步加工,以便后续的数据转换与写入操作。例如,我们可以对某些字段进行格式化处理,或者根据业务需求筛选出特定的数据记录。
#### 示例代码
以下是一个示例代码片段,展示了如何通过轻易云平台发起请求并处理响应数据:
```python
import requests
import json
url = 'https://api.kingdee.com/executeBillQuery'
headers = {'Content-Type': 'application/json'}
payload = {
'FormId': 'BD_MATERIAL',
'FieldKeys': ['FMATERIALID', 'FNumber', 'FName', ...],
'FilterString': f'FApproveDate>="{last_sync_time}"',
'Limit': pagination_page_size,
'StartRow': pagination_start_row
}
response = requests.post(url, headers=headers, data=json.dumps(payload))
data = response.json()
# 数据清洗与初步加工
cleaned_data = []
for item in data:
cleaned_item = {
'MaterialID': item['FMATERIALID'],
'MaterialNumber': item['FNumber'],
'MaterialName': item['FName'],
...
}
cleaned_data.append(cleaned_item)
# 后续处理逻辑...
```
#### 注意事项
1. **分页处理**:由于数据量可能较大,需要通过分页参数(如`Limit`和`StartRow`)分批次获取数据。
2. **过滤条件**:合理设置过滤条件(如时间戳),以减少不必要的数据传输,提高效率。
3. **错误处理**:在实际操作中,需要考虑网络异常、接口返回错误等情况,并进行相应的错误处理和重试机制。
通过上述步骤,我们可以成功调用金蝶云星空的`executeBillQuery`接口,获取并清洗物料数据,为后续的数据转换与写入做好准备。这一过程不仅提高了数据集成的效率,也确保了数据的一致性和准确性。
![用友BIP接口开发配置](https://pic.qeasy.cloud/S4.png~tplv-syqr462i7n-qeasy.image)
### 使用轻易云数据集成平台进行ETL转换并写入旺店通·企业奇门API接口
在数据集成生命周期的第二步,我们需要将源平台的数据进行ETL(提取、转换、加载)处理,最终转化为目标平台——旺店通·企业奇门API接口所能接收的格式,并写入到目标系统中。本文将详细阐述这一过程,重点介绍如何配置和使用元数据来完成这一任务。
#### 元数据配置解析
首先,我们来看一下元数据配置的结构:
```json
{
"api": "wdt.goods.push",
"effect": "EXECUTE",
"method": "POST",
"number": "goods_no",
"id": "goods_no",
"name": "goods_no",
"idCheck": true,
"request": [
{
"field": "goods_list",
"label": "货品节点",
"type": "array",
"describe": "请求参数的1级数据节点,包含SPU所有属性信息的数据节点,节点下数据字段详见下述“goods_list”",
"children": [
{
"field": "goods_no",
"label": "货品编号",
"type": "string",
"describe": "代表货品(spu)所有属性的唯一编号,用于系统货品区分,,SPU概念介绍,单击这里",
"value": "{FNumber}"
},
{
"field": "goods_type",
...
},
...
]
}
]
}
```
该元数据配置定义了一个名为`wdt.goods.push`的API接口,其主要功能是通过POST方法将货品信息推送到旺店通·企业奇门系统。下面我们详细解释各个字段及其作用:
- `api`: API接口名称。
- `effect`: 操作效果,这里是执行(EXECUTE)。
- `method`: HTTP请求方法,这里是POST。
- `number`, `id`, `name`: 用于标识货品编号的字段。
- `idCheck`: 是否进行ID检查,这里为true。
- `request`: 请求参数列表。
#### 数据请求与清洗
在ETL流程中,首先要从源系统提取数据并进行清洗。假设我们从源系统获取到如下JSON格式的数据:
```json
{
"FNumber": "12345",
"FName": "测试商品",
...
}
```
这些原始数据需要根据目标平台的要求进行清洗和转换。
#### 数据转换
根据元数据配置,我们需要将源数据中的字段映射到目标API所需的字段。例如:
- 将`FNumber`映射到`goods_no`
- 将`FName`映射到`goods_name`
- 将`FBaseUnitId_FNumber`映射到`spec_unit_name`
- 将`FBaseUnitId_FName`映射到`unit_name`
具体转换过程如下:
```json
{
"goods_list": [
{
"goods_no": "{FNumber}",
...
}
]
}
```
通过轻易云平台,我们可以配置相应的转换规则,将上述JSON格式的数据自动转化为目标API所需的格式。
#### 数据写入
完成数据转换后,我们需要将其通过POST方法发送至旺店通·企业奇门API接口。以下是一个示例请求体:
```json
{
"goods_list": [
{
...
}
]
}
```
在轻易云平台上,可以通过可视化界面配置HTTP请求,将上述JSON作为请求体发送至指定URL。例如:
```http
POST /wdt.goods.push HTTP/1.1
Host: api.wangdian.cn
Content-Type: application/json
{
...
}
```
#### 实际案例应用
假设我们有一批物料信息需要对接到旺店通·企业奇门系统,通过轻易云平台,我们可以按照以下步骤完成整个ETL过程:
1. **提取**:从源系统提取原始物料信息。
2. **清洗**:对提取的数据进行必要的清洗和预处理。
3. **转换**:利用元数据配置,将清洗后的数据转化为目标API所需格式。
4. **加载**:通过HTTP POST请求,将转换后的数据发送至旺店通·企业奇门API接口。
通过这种方式,我们可以高效地实现不同系统间的数据无缝对接,提高业务流程的自动化程度和准确性。
![用友与SCM系统接口开发配置](https://pic.qeasy.cloud/T11.png~tplv-syqr462i7n-qeasy.image)