ETL技术在数据集成中的应用:金蝶云星空案例

  • 轻易云集成顾问-黄宏棵
### 钉钉数据集成到金蝶云星空的技术案例:receive-新收款单(销售收款)V4.0 在企业信息化系统中,数据集成往往是各个子系统协同作业的关键环节。本文将详细分享如何利用轻易云数据集成平台,将钉钉系统中的数据信息高效、准确地对接至金蝶云星空。本次具体实施方案为“receive-新收款单(销售收款)V4.0”。 #### 背景概述与核心挑战 本次案例主要解决两个核心问题: 1. **确保钉钉的数据能够不漏单地快速写入金蝶云星空** 2. **处理两者之间的数据格式差异及接口调用限制** #### 关键技术细节 为了实现上述目标,首先需要理解相关API接口: - 获取钉钉数据的API: `v1.0/yida/processes/instances` - 写入金蝶云星空的数据API: `batchSave` ##### 数据流设计与监控 采用轻易云提供的可视化数据流设计工具,可以直观且灵活地配置整个数据处理流程。我们设置了定时任务以可靠抓取并同步钉钉接口上的最新业务数据,并通过集中式监控和告警系统实时跟踪任务状态。在此过程中,高吞吐量的数据写入能力确保了大批量交易记录能够快速进入目标数据库,提高整体处理效率。 ##### 抓取与转换逻辑定制 由于不同系统间存在较大的数据结构差异,我们自定义了一套转换逻辑,以适配特定业务需求。例如,针对分页和限流问题,对每一次获取操作进行了精细化控制;而在错误处理中,实现了异常捕获和重试机制保证稳定运行。 通过这些手段,我们不仅做到了高效、安全地进行跨平台数据集成,还极大提升了日常运维管理的便捷性和透明度。后续文章将深入探讨具体配置方法及代码示例。 ![钉钉与MES系统接口开发配置](https://pic.qeasy.cloud/D12.png~tplv-syqr462i7n-qeasy.image) ### 调用钉钉接口获取并加工数据的技术案例 在数据集成生命周期的第一步,调用源系统接口获取数据是至关重要的。本文将详细探讨如何通过轻易云数据集成平台调用钉钉接口`v1.0/yida/processes/instances`,并对获取的数据进行初步加工。 #### API接口配置与请求参数 首先,我们需要配置API接口及其请求参数。以下是元数据配置中的关键部分: ```json { "api": "v1.0/yida/processes/instances", "method": "POST", "number": "title", "id": "processInstanceId", "idCheck": true, "request": [ {"field": "pageNumber", "label": "分页页码", "type": "string", "describe": "分页页码", "value": "{PAGINATION_START_PAGE}"}, {"field": "pageSize", "label": "分页大小", "type": "string", "describe": "分页大小", "value": "{PAGINATION_PAGE_SIZE}"}, {"field": "appType", "label": "应用ID", "type": "string", "describe": "应用ID", "value":"APP_WTSCMZ1WOOHGIM5N28BQ"}, {"field": "systemToken", "label":"应用秘钥","type":"string","describe":"应用秘钥","value":"IS866HB1DXJ8ODN3EXSVD750RBTK2X72R8MELL4"}, {"field":"userId","label":"用户的userid","type":"string","describe":"用户的userid","value":"16000443318138909"}, {"field":"language","label":"语言","type":"string","describe":"语言,取值:zh_CN:中文(默认值)en_US:英文"}, {"field":"formUuid","label":"表单ID","type":"string","describe":"表单ID","value":"FORM-OS566L910XZ9MAUKDXIG9BZKX2P12AUKTGKGL5"}, {"field":"searchFieldJson","label":"条件","type":"object","children":[{"field":"selectField_lgkgut6u","label":"类型","type":"string","value":"销售收款"},{"parent":"searchFieldJson","label":"流水号","field":"serialNumberField_lgorr6rv","type":"string"}]}, {"field":"originatorId","label":"根据流程发起人工号查询","type":"string","describe":"根据流程发起人工号查询"}, {"field":"createFromTimeGMT","label":"创建时间起始值","type":"string","describe":"创建时间起始值","value":"'function DATE_FORMAT(DATE_ADD(NOW(),INTERVAL - 25 DAY),'%Y-%m-%d 00:00:00')'"}, {"field":"createToTimeGMT","label':'创建时间终止值','type':'string','describe':'创建时间终止值','value':'{{CURRENT_TIME|datetime}}'}, {"field':'modifiedFromTimeGMT','label':'修改时间起始值','type':'string','describe':'修改时间起始值'}, {"field':'modifiedToTimeGMT','label':'修改时间终止值','type':'string','describe':'修改时间终止值'}, {"field':'taskId','label':'任务ID','type':'string','describe':'任务ID'}, {"field':'instanceStatus','label':'实例状态','type':'string','describe':'实例状态','value':'COMPLETED'}, {"field':'approvedResult','label':'流程审批结果','type':'string','describe':'流程审批结果','value':'agree'} ], 'condition':[[{'field': 'dateField_lgkgut9r', 'logic': 'notnull'}]] } ``` #### 请求参数详解 - **pageNumber** 和 **pageSize**:用于分页控制,确保每次请求的数据量适中。 - **appType** 和 **systemToken**:用于验证和识别调用方身份。 - **userId**:指定具体用户。 - **language**:设置返回数据的语言类型。 - **formUuid**:指定要查询的表单ID。 - **searchFieldJson**:包含具体查询条件,如“类型”和“流水号”。 - **createFromTimeGMT** 和 **createToTimeGMT**:定义数据创建时间范围。 - **instanceStatus** 和 **approvedResult**:过滤已完成且审批通过的数据。 #### 数据请求与清洗 在发送请求后,我们会收到一个包含多个实例的数据集。为了确保数据质量和一致性,需要对这些数据进行清洗和初步加工。 1. **过滤无效数据**: - 根据`condition`字段中的逻辑条件,过滤掉不符合要求的数据。例如,确保`dateField_lgkgut9r`字段不为空。 2. **字段映射与转换**: - 将API返回的数据字段映射到目标系统所需的字段。例如,将`processInstanceId`映射为目标系统中的唯一标识符。 3. **格式化日期和数值**: - 使用内置函数对日期和数值进行格式化,以符合目标系统的要求。例如,将日期格式化为`YYYY-MM-DD HH:mm:ss`。 #### 实践案例 假设我们需要获取最近25天内所有“销售收款”类型的已完成且审批通过的实例,并将这些实例写入目标系统。以下是具体步骤: 1. 配置API请求参数,如上所述。 2. 调用API并接收响应数据。 3. 对响应数据进行清洗,包括过滤无效记录、映射字段、格式化日期等。 4. 将清洗后的数据写入目标系统。 通过上述步骤,我们可以高效地从钉钉获取所需数据,并确保这些数据在进入目标系统前已经过初步加工和验证。这不仅提高了数据质量,也简化了后续的数据处理工作。 ![数据集成平台可视化配置API接口](https://pic.qeasy.cloud/S23.png~tplv-syqr462i7n-qeasy.image) ### 数据集成中的ETL转换与写入:实现金蝶云星空API接口对接 在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是至关重要的一步。本文将深入探讨如何使用轻易云数据集成平台将已经集成的源平台数据进行ETL转换,并转为金蝶云星空API接口所能够接收的格式,最终写入目标平台。 #### 元数据配置解析 在进行ETL转换之前,我们需要详细理解元数据配置。以下是一个典型的元数据配置示例: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "method": "batchArraySave", "rows": 1, "rowsKey": "array" }, "request": [ { "field": "FBillNo", "label": "单据编号", "type": "string", "value": "{serialNumberField_lgorr6rv}" }, { "field": "FBillTypeID", "label": "单据类型", "type": "string", "value": "SKDLX01_SYS", "parser": { "name": "ConvertObjectParser", "params": "FNumber" } }, { // ...更多字段配置 } ], // ...更多配置 } ``` #### 数据请求与清洗 在数据请求与清洗阶段,我们从源系统获取原始数据,并进行必要的清洗操作,确保数据质量和一致性。这一步通常包括去重、填充缺失值、格式化日期等操作。 #### 数据转换 在数据转换阶段,我们需要根据金蝶云星空API接口的要求,将清洗后的数据进行格式转换。以下是几个关键字段的转换示例: 1. **单据编号(FBillNo)**: ```json { "field": "FBillNo", "label": "单据编号", "type": "string", "value": "{serialNumberField_lgorr6rv}" } ``` 这里直接映射了一个序列号字段。 2. **单据类型(FBillTypeID)**: ```json { "field": "FBillTypeID", "label": "单据类型", "type": "string", "value": "SKDLX01_SYS", ``parser``: { ``name``: ``ConvertObjectParser``, ``params``: ``FNumber`` } } ``` 使用`ConvertObjectParser`进行对象转换,确保符合金蝶云星空的格式要求。 3. **日期(FDATE)**: ```json { ``field``: ``FDATE``, ``label``: ``日期``, ``type``: ``string``, ``value``: "_function FROM_UNIXTIME( ( {dateField_lgkgut9r} / 1000 ) ,'%Y-%m-%d' )" } ``` 将UNIX时间戳转换为标准日期格式。 4. **支付组织(FPAYORGID)**: ```json { ``field``: ``FPAYORGID``, ``label``: ``支付组织``, ``type``: ``string``, ``parser``: { ``name``: ``ConvertObjectParser``, ``params``: ``FNumber`` }, ``value``: "{textField_lgkgut7u}" } ``` 同样使用对象转换器,将支付组织字段映射到目标系统所需格式。 #### 数据写入 在完成所有必要的数据转换后,我们需要将处理后的数据通过API接口写入到金蝶云星空系统。以下是一个典型的写入请求示例: ```json { ``api``: `batchSave`, `method`: `POST`, `idCheck`: true, `operation`: { `method`: `batchArraySave`, `rows`: 1, `rowsKey`: `array` }, `request`: [ // 包含所有已转换字段的数据对象数组 ], `otherRequest`: [ { `field`: `FormId`, `label`: `业务对象表单Id`, `type`: `string`, `describe`: `必须填写金蝶的表单ID如:PUR_PurchaseOrder`, `value`: `AR_RECEIVEBILL` }, { // ...更多其他请求参数 } ] } ``` 通过上述配置,我们可以确保所有必要的数据都按照金蝶云星空API接口的要求进行传输和存储。 #### 总结 通过详细解析元数据配置和具体字段的ETL转换过程,我们可以有效地将源平台的数据转化为目标平台所需的格式,并通过API接口实现无缝对接。这不仅提高了数据处理效率,还保证了数据的一致性和准确性。 ![轻易云数据集成平台金蝶集成接口配置](https://pic.qeasy.cloud/T28.png~tplv-syqr462i7n-qeasy.image)