使用轻易云实现金蝶云星空API数据ETL转换

  • 轻易云集成顾问-贺强
### 线上推广消耗计提:爱朵科技与金蝶云星空的数据集成 在本案例中,重点分享了通过轻易云数据集成平台实现爱朵科技与金蝶云星空的系统对接,以解决线上推广消耗计提问题。该方案有效提升了数据处理效率和准确性,为企业决策提供了可靠的数据支持。 首先,我们需要从爱朵科技的数据源API`api/dcShopLedgerTotal/getList`抓取相关数据。这一步骤不仅要求高效稳定地获取大批量的数据,还要处理分页和限流问题,以确保不漏单。不仅如此,定时可靠地调用接口也是成功抓取数据的关键之一。 为了将这些获取到的原始数据无缝写入到金蝶云星空中,需要使用其提供的API`batchSave`进行操作。在这个过程中,我们面临多个技术挑战,包括如何处理两者之间的数据格式差异、实施自定义的数据转换逻辑以及如何保证高吞吐量的数据写入能力。通过合理配置轻易云平台上的可视化设计工具,能够直观且迅速地完成这些复杂任务,使得大量数据快速被集成并存储至金蝶云星空,提高整体业务流程的时效性。 此外,为监控整个数据集成过程,集中式监控和告警系统发挥了重要作用。实时跟踪任务状态和性能,不但可以及时发现并处理异常情况,还为进一步优化调整提供依据。例如,在对比实际运行日志后,可以针对性调节接口调用频率或改进错误重试机制,从而减少失败次数及系统资源浪费。 最后,不容忽视的是,将所有操作步骤透明化管理显得尤为重要。不仅生命周期管理涵盖各个环节,全程记录也有助于追溯问题根源。因此,通过全面掌握API资产如统一视图和控制台来实现资源高效利用,也增强了企业应对复杂业务环境变化的弹性与适应能力。 ![钉钉与WMS系统接口开发配置](https://pic.qeasy.cloud/D20.png~tplv-syqr462i7n-qeasy.image) ### 调用爱朵科技接口api/dcShopLedgerTotal/getList获取并加工数据 在数据集成生命周期的第一步中,调用源系统接口是至关重要的一环。本文将详细探讨如何通过轻易云数据集成平台调用爱朵科技的`api/dcShopLedgerTotal/getList`接口,并对获取的数据进行初步加工。 #### 接口调用配置 首先,我们需要配置接口调用的元数据。根据提供的元数据配置,我们可以看到该接口使用POST方法进行请求,主要参数如下: - `page`:分页页码,默认为1。 - `size`:每页条数,默认为500。 - `startLedgerTime`:起始时间,通过函数计算得到上个月的月份。 - `endLedgerTime`:结束时间,同样通过函数计算得到上个月的月份。 - `isCheck`:是否已核验,固定值为1。 - `accountType`:账单类型,通过解析器将字符串转换为数组,固定值为2。 这些参数确保了我们能够准确地请求到所需的数据。 #### 请求参数处理 在实际操作中,我们需要对请求参数进行适当处理,以确保接口调用的正确性和有效性。以下是请求参数的具体处理方式: ```json { "page": 1, "size": 500, "startLedgerTime": "DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y-%m')", "endLedgerTime": "DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y-%m')", "isCheck": 1, "accountType": ["2"] } ``` 其中,`startLedgerTime`和`endLedgerTime`使用了日期函数来动态生成上个月的月份,这样可以确保每次调用时都能获取到最新的数据。 #### 数据过滤条件 为了保证数据的准确性和有效性,我们还需要设置一些过滤条件。这些条件包括: - `amount`不等于0。 - `source`不在“费项,其他费项,代收付服务费”之内。 - `transactionPurpose`不在“无效,SFKYT117”之内。 这些条件可以帮助我们过滤掉无效或不必要的数据,从而提高数据质量。 #### 接口调用与数据加工 在完成上述配置后,我们可以通过轻易云平台发起接口调用,并对返回的数据进行初步加工。以下是一个简单的示例代码,用于发起接口请求并处理响应数据: ```python import requests import json url = "https://api.aiduokeji.com/api/dcShopLedgerTotal/getList" headers = {"Content-Type": "application/json"} payload = { "page": 1, "size": 500, "startLedgerTime": "2023-09", # 示例日期 "endLedgerTime": "2023-09", # 示例日期 "isCheck": 1, "accountType": ["2"] } response = requests.post(url, headers=headers, data=json.dumps(payload)) data = response.json() # 数据过滤与加工 filtered_data = [] for item in data['list']: if item['amount'] != 0 and item['source'] not in ["费项", "其他费项", "代收付服务费"] and item['transactionPurpose'] not in ["无效", "SFKYT117"]: filtered_data.append(item) print(filtered_data) ``` 上述代码中,我们首先构建了请求参数,并通过POST方法发起接口请求。随后,对返回的数据进行了过滤和初步加工,只保留符合条件的数据条目。 #### 总结 通过以上步骤,我们成功地调用了爱朵科技的API接口,并对获取的数据进行了初步加工。这一步骤不仅确保了数据集成过程中的准确性和有效性,还为后续的数据转换与写入奠定了坚实基础。在实际应用中,可以根据具体需求进一步优化和扩展数据处理逻辑,以满足不同业务场景的需求。 ![如何开发钉钉API接口](https://pic.qeasy.cloud/S16.png~tplv-syqr462i7n-qeasy.image) ### 利用轻易云数据集成平台实现金蝶云星空API接口的数据ETL转换 在数据集成过程中,轻易云数据集成平台的第二步是将已经集成的源平台数据进行ETL转换,并转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。本文将详细探讨这一过程中的技术细节和实现方法。 #### 元数据配置解析 在进行ETL转换之前,我们需要对元数据配置进行详细解析,以确保每个字段都能正确映射到金蝶云星空API接口所需的格式。以下是元数据配置的关键部分: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "operation": { "method": "merge", "rows": 5, "field": "channelCode,checkTime", "bodyName": "items", "header": ["checkTime", "channelCode"], "body": ["transactionPurpose", "serialNumber", "reAmount", "categorize", "dateTime", "projectDetail", "subject", "id"] }, ... } ``` 上述配置中,`api`字段指定了要调用的金蝶云星空API接口为`batchSave`,并通过`POST`方法执行。`operation`字段定义了合并操作的具体参数,包括行数、字段、主体名称和头部信息等。 #### 数据请求与清洗 在ETL过程中,首先需要从源系统中请求数据并进行清洗。这一步通常涉及到复杂的数据转换逻辑和业务规则应用。以下是几个关键字段的解析: - `FBillTypeID`: 单据类型,通过`ConvertObjectParser`解析为金蝶系统识别的单据类型编号。 - `FDATE`: 业务日期,直接从源数据中的`checkTime`字段获取。 - `FCONTACTUNIT`: 往来单位,通过MongoDB查询获取相应的客户编号。 ```json { "field": "FCONTACTUNIT", "label": "往来单位", ... "value": "_mongoQuery 22b42e1b-f3d2-367a-b973-2d9dbe490454 findField=content.FCUSTNUMBER where={\"content.FJKYCustId\":{\"$eq\":\"{channelCode}\"}}" } ``` 上述配置通过MongoDB查询,根据`channelCode`获取对应的客户编号,并使用`ConvertObjectParser`进行解析。 #### 数据转换与写入 在完成数据清洗后,需要将其转换为目标平台能够接受的格式,并通过API接口写入金蝶云星空系统。以下是一些关键字段及其转换逻辑: - `FEntity`: 明细信息数组,其中包含多个子字段,如费用项目编码、费用承担部门、总金额等。 ```json { ... { "field": "FEntity", ... "children": [ { ... { "field": "FTOTALAMOUNTFOR", ... "value": "{reAmount}" }, ... } ] } } ``` 在此配置中,明细信息数组中的每个子字段都需要从源数据中提取相应的信息,并进行格式化处理。例如,总金额(`FTOTALAMOUNTFOR`)直接从源数据中的`reAmount`字段获取。 #### 执行批量保存操作 最后,将所有准备好的数据通过批量保存操作写入到金蝶云星空系统中。以下是执行批量保存操作的一些关键参数: ```json { ... { ... { field: 'FormId', value: 'AP_OtherPayable' }, { field: 'Operation', value: 'BatchSave' }, { field: 'IsAutoSubmitAndAudit', value: true }, { field: 'IsVerifyBaseDataField', value: true } } } ``` 这些参数确保了在执行批量保存操作时,表单ID、操作类型、自动提交审核以及基础资料验证等均已正确配置。 通过以上步骤,我们可以成功地将源平台的数据经过ETL转换后写入到金蝶云星空系统,实现不同系统间的数据无缝对接。这一过程不仅提高了数据处理效率,还确保了业务流程的透明性和准确性。 ![打通金蝶云星空数据接口](https://pic.qeasy.cloud/T12.png~tplv-syqr462i7n-qeasy.image)