通过轻易云将数据导入钉钉API:ETL转换全流程详解

  • 轻易云集成顾问-钟家寿
### 案例分享:金蝶云星空数据集成到钉钉 在本案例中,我们将详细介绍如何使用轻易云数据集成平台实现金蝶云星空中的业务单据审核状态,自动传输并回传至钉钉进行通知提示。本次实施的具体方案名称为“传给金蝶后,回传钉钉提示(已审核)④”。 首先,为确保此次系统对接流程的顺畅运行,我们主要依托以下两个核心API接口: 1. **从金蝶云星空获取数据**:通过调用`executeBillQuery`接口,我们能够精确地抓取所需的业务单据及其审核状态。 2. **向钉钉写入数据**:利用`topapi/process/instance/comment/add` API接口,可以高效地将这些关键信息批量写入到企业内部使用的钉钉平台。 #### 数据采集与处理 为了杜绝出现漏单现象,在执行数据采集时,通过定时任务可靠地抓取金蝶云星空接口的数据,并针对分页和限流问题进行了周密处理。该过程不仅提高了数据获取效率,同时保证了稳定性和准确性。尤其是在处理大规模业务单据时,采用分段查询与错误重试机制,可有效降低因网络或资源限制导致的数据丢失风险。 #### 数据格式转换 由于金蝶云星空与钉钉之间存在一定的数据格式差异,因此在完成初步的数据抓取之后,还需进行必要的数据清洗和转换。这一步骤可借助轻易云提供的多种内置工具,实现跨系统间的一致性映射。例如,将原始字段值适配为符合目标系统要求的新值,从而消除潜在的不兼容问题。 #### 实时监控与日志记录 整个过程中,每一个环节都设置了实时监控功能,以及详尽的日志记录,用于追踪每一笔操作行为。一旦检测到异常情况,即可快速定位并解决,从根本上提升了整体流程的透明度和可维护性。此外,对于关键节点,如从金蝶提取出重要信息后的确认步骤,也会同步更新至集中式日志,以备查验和审计之用。 接下来我们将深入探讨具体技术配置步骤及细节,请参考后续章节内容了解更多关于如何高效、安全、无缝地实现这套解决方案的方法。 ![打通用友BIP数据接口](https://pic.qeasy.cloud/D9.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在轻易云数据集成平台中,调用源系统接口是数据处理生命周期的第一步。本文将详细探讨如何通过调用金蝶云星空的`executeBillQuery`接口获取数据,并进行初步加工。 #### 接口配置与调用 首先,我们需要配置和调用金蝶云星空的`executeBillQuery`接口。以下是接口的元数据配置: ```json { "api": "executeBillQuery", "method": "POST", "number": "FBillNo", "id": "FPAYBILLENTRY_FEntryID", "pagination": { "pageSize": 500 }, "idCheck": true, "condition": [ [ { "field": "FPAYORGID", "logic": "eq", "value": "10.03" } ] ], "request": [ {"field":"FPAYBILLENTRY_FEntryID","label":"FPAYBILLENTRY_FEntryID","type":"string","value":"FPAYBILLENTRY_FEntryID"}, {"field":"FID","label":"实体主键","type":"string","value":"FID"}, {"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"}, {"field":"FDOCUMENTSTATUS","label":"单据状态","type":"string","value":"FDOCUMENTSTATUS"}, {"field":"FCreatorId","label":"创建人","type":"string","value":"FCreatorId"}, {"field":"FAPPROVERID","label":"审核人","type":"string","value":"FAPPROVERID"}, {"field":"FCreateDate","label":"创建日期","type":"string","value":"FCreateDate"}, {"field":"FSETTLEORGID","label":"结算组织","type":"string","value":"FSETTLEORGID.FNumber"}, {"field":"FApproveDate","label":"审核日期","type":"string","value":"FApproveDate"}, {"field":"FPURCHASEORGID","label":"采购组织","type":"string","value":"FPURCHASEORGID.FNumber"}, {"field":"FPAYTOTALAMOUNTFOR_H","label":"表头-应付金额","type":"string","value":"FPAYTOTALAMOUNTFOR_H"}, {"field":"FCURRENCYID","label":"币别","type":"string","value":"FCURRENCYID.FNumber"}, {"field":"FDATE","label":"业务日期","type":"","value":""}, // ...(省略部分字段) ], "otherRequest": [ { "field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}" }, { "field": "StartRow", "label": "开始行索引", "type": "", // ...(省略部分字段) } ] } ``` #### 数据请求与清洗 在配置好元数据后,我们通过POST方法向`executeBillQuery`接口发送请求。请求体包含了我们需要查询的字段和过滤条件。例如,我们可以设置过滤条件为: ```json { "FilterString": "FApproveDate>='2023-01-01' and FDOCUMENTSTATUS='C'" } ``` 这将返回所有在2023年1月1日之后且状态为已审核的单据。 #### 数据转换与写入 获取到数据后,需要对其进行转换和写入操作。在轻易云平台中,可以使用内置的数据转换工具对数据进行处理。例如,将日期格式从字符串转换为标准日期格式,或者将货币值从字符串转换为数值类型。 以下是一个简单的数据转换示例: ```python def transform_data(data): for record in data: record['FCreateDate'] = datetime.strptime(record['FCreateDate'], '%Y-%m-%d') record['FPAYTOTALAMOUNTFOR_H'] = float(record['FPAYTOTALAMOUNTFOR_H']) ``` #### 实时监控与日志记录 在整个过程中,轻易云平台提供了实时监控和日志记录功能。通过监控界面,可以查看每个步骤的数据流动情况,及时发现并解决问题。同时,日志记录功能确保了每次操作都有迹可循,为后续的审计和问题排查提供了便利。 #### 小结 通过以上步骤,我们实现了从金蝶云星空获取数据并进行初步加工。这只是轻易云数据集成平台生命周期中的第一步,后续还需进行更复杂的数据处理和业务逻辑实现。希望本文能为您在实际操作中提供有价值的参考。 ![用友与CRM系统接口开发配置](https://pic.qeasy.cloud/S20.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现ETL转换并写入钉钉API接口 在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(提取、转换、加载)处理,最终转为目标平台钉钉API接口所能够接收的格式,并写入目标平台。本文将详细探讨这一过程中的技术细节,特别是如何配置和使用元数据来完成这一任务。 #### 1. 数据提取与清洗 首先,我们需要从源平台提取数据。在本案例中,假设我们已经从金蝶系统中获取了相关的审批实例ID,并且这些数据已经经过初步清洗和验证。接下来,我们将重点放在如何将这些数据转换为钉钉API接口所需的格式。 #### 2. 数据转换 在进行数据转换之前,我们需要了解钉钉API接口的具体要求。根据提供的元数据配置,钉钉API接口`topapi/process/instance/comment/add`要求一个POST请求,并且请求对象包含以下字段: - `process_instance_id`: 审批实例ID - `text`: 评论的内容 - `comment_userid`: 评论人的userid 为了满足这些要求,我们需要对源数据进行相应的映射和转换。下面是具体的元数据配置: ```json { "api": "topapi/process/instance/comment/add", "method": "POST", "idCheck": true, "request": [ { "field": "request", "label": "请求对象", "type": "object", "children": [ { "field": "process_instance_id", "label": "审批实例ID", "type": "string", "describe": "可通过调用获取审批实例ID列表接口获取。", "value": "_findCollection find id from 1e31a4f0-6252-39b7-8017-f5789f0bff98 where business_id={FBillNo}", "parent": "request" }, { "field": "text", "label": "评论的内容", "type": "string", "value": "已审核", "parent": "request" }, { "field": "comment_userid", "label": "评论人的userid", "type": "string", "value": 112018120420563028, } } ] } ] } ``` #### 3. 数据加载 完成数据转换后,我们需要将其加载到目标平台,即通过调用钉钉API接口来写入数据。以下是具体步骤: 1. **构建请求对象**:根据元数据配置构建请求对象。这里我们使用了一个动态查询来获取`process_instance_id`,并且直接指定了评论内容和评论人的userid。 2. **发送POST请求**:使用HTTP客户端(如Postman或编程语言内置的HTTP库)发送POST请求到`topapi/process/instance/comment/add`接口。 3. **处理响应**:检查API响应,以确保数据成功写入。如果出现错误,需要根据错误信息进行调试和修正。 示例代码(Python): ```python import requests import json url = 'https://oapi.dingtalk.com/topapi/process/instance/comment/add' headers = {'Content-Type': 'application/json'} data = { 'request': { 'process_instance_id': '1e31a4f0-6252-39b7-8017-f5789f0bff98', # 动态查询结果 'text': '已审核', 'comment_userid': '112018120420563028' } } response = requests.post(url, headers=headers, data=json.dumps(data)) if response.status_code == 200: print('Data successfully written to DingTalk API') else: print('Failed to write data:', response.text) ``` #### 总结 通过以上步骤,我们成功地完成了从源平台到目标平台的数据ETL过程。在这个过程中,轻易云数据集成平台提供了全生命周期管理和透明可视化操作界面,使得每个环节都清晰易懂,大大提升了业务透明度和效率。通过详细配置元数据并结合实际操作,我们实现了与钉钉API接口的无缝对接,为后续的数据处理和业务流程自动化奠定了坚实基础。 ![用友与WMS系统接口开发配置](https://pic.qeasy.cloud/T26.png~tplv-syqr462i7n-qeasy.image)