金蝶云星空数据集成案例分享:销售出库单-(分销&京东&唯品&虚拟除外)手表汇总_copy
在企业日常业务处理过程中,确保数据流动的高效性和准确性至关重要。本文将介绍利用轻易云数据集成平台,实现金蝶云星空与金蝶云星空之间的数据无缝对接。本次案例侧重于销售出库单—(分销&京东&唯品会&虚拟除外)手表汇总_copy方案的实际运行情况。
为了实现这一目标,我们精细化设计了相应的数据集成流程。在此过程中,通过executeBillQuery API从源系统中定时抓取所需数据,并利用batchSave API批量写入目标系统。这不仅涵盖了大规模数据快速交换,还保证了每条记录都能被可靠地处理,从而避免可能出现的数据遗漏问题。
一个显著的特性是我们采用了自定义的数据转换逻辑,以满足特定业务需求和适应不同系统间的数据结构差异。通过可视化的数据流设计工具,对整个流程进行直观管理,有效降低配置复杂度。
实时监控和告警机制起到了关键作用,帮助我们及时发现并解决任何潜在的问题。此外,在面对分页与限流挑战时,我们引入了一套完善的异常处理与错误重试机制,进一步提升了任务执行的稳定性及可靠性。最后,每一次操作都会被详细记录到日志中,使得整个过程透明且可追溯,为后续排错优化提供依据。
本篇将逐步揭示这一技术方案具体实施步骤及实践经验,希望为相关领域从业者提供参考。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,第一步是从源系统获取数据。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空接口executeBillQuery
来获取销售出库单的数据,并进行初步加工。
接口配置与请求参数
调用金蝶云星空的executeBillQuery
接口需要配置一系列请求参数,这些参数决定了我们要获取的数据范围和格式。以下是关键的元数据配置:
{
"api": "executeBillQuery",
"method": "POST",
"number": "FBillNo",
"id": "FEntity_FENTRYID",
"pagination": {"pageSize": 500},
"idCheck": true,
"formatResponse": [{"old":"FApproveDate","new":"FApproveDate_new","format":"date"}],
"request": [
{"field":"FBillTypeID_FNumber","label":"单据类型","type":"string","describe":"单据类型","value":"FBillTypeID.FNumber"},
{"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"FBillNo"},
{"field":"FDate","label":"日期","type":"string","describe":"日期","value":"FDate"},
{"field":"FApproveDate","label":"审核时间","type":"string","describe":"日期","value":"FApproveDate"},
// ...(省略其他字段)
],
"otherRequest": [
{"field":"Limit","label":"最大行数","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_PAGE_SIZE}"},
{"field":"StartRow","label":"开始行索引","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_START_ROW}"},
{"field":"TopRowCount","label":"返回总行数","type":"int","describe":"金蝶的查询分页参数"},
{"field":"FilterString","label":"过滤条件","type":"string","describe":"","value":"","mapping":"","mappingDirection":""},
{"field":"FieldKeys","label":"需查询的字段key集合","type":"array"}
]
}
请求示例
为了调用该接口,我们需要构建一个HTTP POST请求,包含上述配置中的字段。以下是一个示例请求体:
{
"FormId": "SAL_OUTSTOCK",
"FieldKeys": ["FBillNo", "FDate", "FApproveDate", ...], // 包含所有需要查询的字段
"FilterString": "FBillNo='XSCKD8758516'",
"Limit": 500,
"StartRow": 0
}
数据清洗与转换
在获取到原始数据后,我们需要对其进行清洗和转换,以便后续处理。以下是几个关键步骤:
- 日期格式转换:将审核时间
FApproveDate
转换为新的字段FApproveDate_new
,并格式化为标准日期格式。 - 字段重命名:根据业务需求,对部分字段进行重命名,以便更好地理解和使用。例如,将
FBillTypeID_FNumber
重命名为单据类型
。 - 分页处理:由于数据量可能较大,需要进行分页处理,每次请求500条记录,并根据返回结果继续请求下一页。
实现代码示例
以下是一个Python示例代码,展示如何调用该接口并处理返回的数据:
import requests
import json
# 配置请求URL和头信息
url = 'https://api.kingdee.com/executeBillQuery'
headers = {'Content-Type': 'application/json'}
# 构建请求体
payload = {
'FormId': 'SAL_OUTSTOCK',
'FieldKeys': ['FBillNo', 'FDate', 'FApproveDate', ...],
'FilterString': "FBillNo='XSCKD8758516'",
'Limit': 500,
'StartRow': 0
}
# 发起POST请求
response = requests.post(url, headers=headers, data=json.dumps(payload))
# 检查响应状态码
if response.status_code == 200:
data = response.json()
# 数据清洗与转换
for record in data:
record['FApproveDate_new'] = format_date(record['FApproveDate'])
# 重命名其他字段...
else:
print(f"Error: {response.status_code}")
def format_date(date_str):
# 日期格式转换函数实现...
总结
通过上述步骤,我们成功调用了金蝶云星空的executeBillQuery
接口,获取了销售出库单的数据,并进行了初步的清洗和转换。这一步骤为后续的数据处理和写入奠定了基础。在实际应用中,可以根据具体业务需求进一步优化和扩展数据处理逻辑。
使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口
在数据集成生命周期的第二步中,我们将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。以下是详细的技术实现过程。
1. 数据提取与转换
首先,我们从源系统中提取销售出库单的数据。提取的数据包括单据类型、日期、发货组织、销售组织、客户信息等。使用轻易云提供的元数据配置,可以将这些数据映射到金蝶云星空API所需的字段格式。
{
"field": "FBillTypeID",
"label": "单据类型",
"type": "string",
"describe": "单据类型",
"parser": {
"name": "ConvertObjectParser",
"params": "FNumber"
},
"value": "XSCKD01_SYS"
}
以上配置将源系统中的单据类型字段转换为金蝶云星空所需的FBillTypeID
字段,并使用ConvertObjectParser
进行解析。
2. 数据清洗与格式化
在数据清洗阶段,我们需要确保所有字段都符合目标系统的要求。例如,将日期字段格式化为标准日期格式:
{
"field": "FDate",
"label": "日期",
"type": "string",
"describe": "日期",
"value": "{FDate}"
}
此外,对于一些复杂的映射关系,例如客户信息,需要使用映射配置来确保数据的一致性:
{
"field": "FCustomerID",
"label": "客户",
"type": "string",
"describe": "基础资料",
"parser": {
"name": "ConvertObjectParser",
"params": "FNumber"
},
"value": "{FCustomerID_FNumber}",
"mapping": {
"target": "63556c380bc98d4c8e11c30d",
"direction": "positive"
}
}
3. 数据加载与写入
完成数据清洗和格式化后,我们将数据加载到目标系统金蝶云星空。通过调用其API接口实现数据写入。以下是具体的API请求配置:
{
"api":"batchSave",
"method":"POST",
...
}
其中,api
指定了调用的API名称,method
指定了HTTP请求方法为POST。
请求体包含了头部信息和明细信息:
"header":[
...
],
"body":[
...
]
例如,头部信息中的单据编号和日期:
{
...
{
“label”: “单据编号”,
“field”: “FBillNo”,
“type”: “string”,
“value”: “{FBillNo}”
},
{
“label”: “日期”,
“field”: “FDate”,
“type”: “string”,
“value”: “{FDate}”
}
]
明细信息中的物料编码和实发数量:
{
...
{
“field”: “FMaterialID”,
“label”: “物料编码”,
“type”: “string”,
“describe”:“基础资料”,
“parser”: {
”name“: ”ConvertObjectParser“,
”params“: ”FNumber“
},
”value“: ”{{details.FMaterialID_FNumber}}“,
”parent“: ”FEntity“
},
{
”field“: ”FRealQty“,
”label“: ”实发数量“,
”type“: ”string“,
”describe“: ”数量“,
”value“: ”{{details.FRealQty}}“
parent:“ FEntity”
}
]
API调用示例
最终,通过构建完整的请求体并调用金蝶云星空API,实现数据写入:
{
...
{
field:"FormId",
label:"业务对象表单Id",
type:"string",
describe:"必须填写金蝶的表单ID如:PUR_PurchaseOrder",
value:"SAL_OUTSTOCK"
},
{
field:"Operation",
label:"执行的操作",
type:"string",
value:"Save"
},
...
}
通过上述步骤,我们成功地将源平台的数据经过ETL转换后,写入到目标平台金蝶云星空,实现了不同系统间的数据无缝对接。这不仅提高了数据处理效率,还保证了数据的一致性和准确性。