通过轻易云平台实现数据ETL转换与写入金蝶云星空

  • 轻易云集成顾问-何语琴
### 5-3 金蝶已流程审批通过的付款单更改为审核状态 在企业信息系统中,实现数据跨平台对接和实时同步是提高运营效率的重要手段之一。本次案例分享聚焦于如何利用轻易云数据集成平台将金蝶云星空已流程审批通过的付款单状态更改为审核状态,全面展示从数据抓取、转换到写入的一整个技术过程。 #### 数据获取与接口调用 首先,我们需要从金蝶云星空系统中精准地提取出所有已流程审批通过但未审核的付款单。为了实现这一目标,通过调用executeBillQuery API接口,可以高效且可靠地批量检索符合条件的数据。这一阶段尤为关键,因为它决定了后续处理的数据基础,需要确保每条记录都精确无误。针对API接口分页和限流的问题,我们采用了一种以时间戳或唯一标识增量方式进行请求,确保在高并发环境下的数据完整性和准确性。 ```python # 示例代码:调用executeBillQuery API获取已审批但未审核的付款单 import requests def fetch_approved_bills(): api_url = "https://api.kingdee.com/executeBillQuery" payload = { "formid": "AP_Payable", "filterString": "status='Approved'", # 根据分页需求设置参数,例如当前页码和每页数量 } response = requests.post(api_url, json=payload) if response.status_code == 200: return response.json() else: raise Exception("Failed to fetch data: {}".format(response.text)) bills_data = fetch_approved_bills() ``` #### 数据转换与映射 对于不同业务系统间的数据交互,由于字段名称及结构可能存在差异,必须进行必要的自定义数据转换逻辑。在本案例中,我们需要将获取到的付款单信息适配至金蝶云星空支持的格式,以便能够顺利执行下一步操作。这包括字段映射、类型转换等过程,并借助可视化的数据流设计工具,使得这些配置工作变得更加直观且高效。 ```python # 示例代码:基于fetch_approved_bills结果进行数据转化 def transform_bill_data(bill): transformed_bill = { "billNo": bill["FBillNo"], "amount": float(bill["FAmount"]), # 补充其他必要字段并完成相应转化... } return transformed_bill transformed_bills = [transform_bill_data(bill) for bill in bills_data] ``` #### 数据写入与状态更新 最后,将经过处理后的数据提交给金蝶云星空以更新其状态,这里我们使用Audit API接口实现该 ![如何对接用友BIP接口](https://pic.qeasy.cloud/D14.png~tplv-syqr462i7n-qeasy.image) ### 调用源系统金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口,以获取并加工数据。 #### 接口配置与调用 首先,我们需要了解如何配置和调用金蝶云星空的`executeBillQuery`接口。以下是元数据配置的关键部分: ```json { "api": "executeBillQuery", "effect": "QUERY", "method": "POST", "number": "FBillNo", "id": "FID", "idCheck": true, "request": [ {"field": "FID", "label": "FID", "type": "string", "describe": "111", "value": "FID"} ], "otherRequest": [ {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "1000"}, {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": ""}, {"field": "TopRowCount", "label": "", "type": "",}, {"field":"FilterString","label":"过滤条件","type":"string","describe":"示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=","value":"FModifyDate >='{{LAST_SYNC_TIME|dateTime}}' and FDocumentStatus = 'B' and F_YIBH_Text_83g = '已审批'"}, {"field":"FieldKeys","label":"需查询的字段key集合","type":"array","describe":"金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber"}, {"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"AP_PAYBILL"} ], ``` #### 请求参数详解 1. **基本请求参数**: - `api`: 接口名称,固定为`executeBillQuery`。 - `effect`: 操作类型,固定为`QUERY`。 - `method`: HTTP请求方法,固定为`POST`。 - `number`: 单据编号字段,设置为`FBillNo`。 - `id`: 主键字段,设置为`FID`。 - `idCheck`: 是否进行ID校验,设置为`true`。 2. **具体请求字段**: - `request`: 包含一个字段,即主键字段`FID`。 - `otherRequest`: 包含多个辅助参数: - `Limit`: 查询结果的最大行数,这里设置为1000。 - `StartRow`: 查询起始行索引,用于分页查询。 - `FilterString`: 查询过滤条件,这里设置为获取修改日期大于上次同步时间且状态为“已审批”的记录。 - `FieldKeys`: 查询字段集合,需要根据实际需求填写。 - `FormId`: 表单ID,这里设置为付款单表单ID,即`AP_PAYBILL`。 #### 数据请求与清洗 在完成接口配置后,我们可以通过轻易云平台发起HTTP POST请求来获取数据。以下是一个示例请求体: ```json { "_FormId_ ": “AP_PAYBILL”, "_FieldKeys_ ": ["FID", “FBillNo”, “FDocumentStatus”], "_FilterString_ ": “FModifyDate >= '2023-01-01T00:00:00' and FDocumentStatus = 'B' and F_YIBH_Text_83g = '已审批'”, "_Limit_ ": “1000” } ``` 通过上述请求,我们可以获取到符合条件的数据记录。接下来,需要对这些数据进行清洗和转换,以便后续处理。 #### 数据转换与写入 在获取到原始数据后,我们需要对其进行必要的转换。例如,将日期格式统一、去除无效字符等。轻易云平台提供了丰富的数据转换工具,可以方便地实现这些操作。 最后,将处理好的数据写入目标系统。这一步通常涉及到调用目标系统的API接口,将清洗后的数据按照目标系统要求的格式进行提交。 #### 实践案例 假设我们需要将金蝶云星空中所有已审批且修改日期在上次同步时间之后的付款单更改为审核状态,可以按照以下步骤操作: 1. **配置接口**:如上所述,配置好`executeBillQuery`接口,并设置过滤条件和查询字段。 2. **发起请求**:通过轻易云平台发起HTTP POST请求,获取符合条件的数据记录。 3. **数据清洗**:对返回的数据进行必要的清洗和转换,如统一日期格式、去除无效字符等。 4. **提交审核**:调用目标系统API,将处理好的数据提交审核。 通过以上步骤,可以高效地实现不同系统间的数据集成和处理,大大提升业务流程的自动化程度和效率。 ![用友与MES系统接口开发配置](https://pic.qeasy.cloud/S1.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台生命周期中的ETL转换与写入 在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是一个至关重要的步骤。本文将详细探讨如何将已集成的源平台数据通过ETL转换,转为金蝶云星空API接口所能接收的格式,并最终写入目标平台。 #### API接口配置 在本案例中,我们的目标是将金蝶已流程审批通过的付款单更改为审核状态。为此,我们需要调用金蝶云星空的`Audit` API接口。以下是该接口的元数据配置: ```json { "api": "Audit", "method": "POST", "idCheck": true, "request": [ {"field": "FormId", "label": "业务对象表单Id", "type": "string", "describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder", "value": "AP_PAYBILL"}, {"field": "Numbers", "label": "编码集合", "type": "string"}, {"field": "Ids", "label": "id集合", "type": "string", "value": "{FID}"}, {"field": "InterationFlags", "label": "交互标志集合", "type": "string", "describe": "\"flag1;flag2;...\"(非必录)"}, {"field": "IgnoreInterationFlag", "label": "是否允许忽略交互", "type": "string", "describe":"布尔类型,默认true(非必录)","value":"true"}, {"field":"NetworkCtrl","label":"是否启用网控","type":"string","describe":"布尔类型,默认false(非必录)","value":"false"}, {"field":"IsVerifyProcInst","label":"检验单据关联运行","type":"string","describe":"是否检验单据关联运行中的工作流实例,布尔类型,默认false(非必录)","value":"false"} ] } ``` #### 数据转换与写入 1. **提取数据(Extract):** 首先,从源系统中提取需要处理的数据。在本案例中,我们需要提取已经审批通过的付款单的数据。这些数据通常包括付款单ID、编码等关键信息。 2. **数据清洗与转换(Transform):** 在提取到原始数据后,需要对其进行清洗和转换,以符合目标系统API接口的要求。根据上述元数据配置,我们需要准备以下字段: - `FormId`: 固定值为`AP_PAYBILL`。 - `Ids`: 对应付款单的ID集合。 - `Numbers`: 对应付款单的编码集合。 - 其他字段如`InterationFlags`, `IgnoreInterationFlag`, `NetworkCtrl`, `IsVerifyProcInst`根据实际需求进行配置。 3. **构建请求体:** 根据金蝶云星空API接口要求,构建POST请求体。例如: ```json { "FormId": "AP_PAYBILL", "Ids": "<具体ID值>", // 根据实际情况添加其他字段 ... } ``` 4. **发送请求并处理响应:** 使用轻易云平台提供的HTTP请求功能,将构建好的请求体发送到金蝶云星空API接口。处理返回结果,根据响应状态码和消息判断操作是否成功,并记录日志以便后续追踪和审计。 #### 实践案例 假设我们从源系统提取到以下付款单信息: - FID: `12345` - 编码: `PAY20231001` 我们需要将这些信息转换并发送到金蝶云星空API接口: ```json { { // 固定值 FormId: 'AP_PAYBILL', // 动态值 Ids: '12345', // 可选字段,根据实际需求填写 IgnoreInterationFlag: 'true', NetworkCtrl: 'false', IsVerifyProcInst: 'false' } } ``` 通过轻易云平台发送上述请求后,如果操作成功,将会返回成功状态码和消息;如果失败,则需要根据错误信息进行调试和修正。 #### 总结 通过轻易云数据集成平台,我们能够高效地完成从源系统到目标系统的数据ETL转换和写入过程。利用其全透明可视化操作界面和实时监控功能,可以极大提升业务透明度和效率。希望本文提供的技术案例能为您在实际项目中提供有价值的参考。 ![如何开发金蝶云星空API接口](https://pic.qeasy.cloud/T25.png~tplv-syqr462i7n-qeasy.image)