如何通过轻易云平台实现流量数据的高效集成与管理

  • 轻易云集成顾问-吴伟
### 简道云数据集成到金蝶云星空:流量成交表(二合一)=> 销售出库单 在复杂的业务场景中,如何高效且准确地将简道云的数据集成到金蝶云星空系统,是许多企业关注的重点。本文分享了一个实际运行的案例,通过轻易云的数据集成平台,实现了从简道云获取流量成交表(二合一),并将数据批量写入金蝶云星空中的销售出库单。 为了确保整个过程能够无缝进行,我们利用了以下关键技术特性与API接口: #### 数据获取与处理 首先,通过调用简道云提供的API接口`/api/v2/app/{app_id}/entry/{entry_id}/data`来抓取所需数据。这一步需要特别注意分页和限流问题,因为大量的数据请求有可能导致接口响应时间增加甚至失败。在这个过程中,我们实现了一套定时可靠的抓取机制,使得每次调用都尽可能成功,并监控借助于内置的数据质量监控功能及时发现异常情况。 #### 数据转换及自定义逻辑 由于简道云和金蝶云星空在数据结构上存在差异,因此我们使用轻易平台提供的自定义数据转换工具,对抓取到的数据进行了格式转换。这一步包括但不限于字段映射、单位换算以及日期格式调整,以适应目标系统需求。通过可视化设计工具,操作人员无需编写繁琐代码,即可直观完成这些任务,大大提升了工作效率。 #### 数据批量写入与性能优化 当所有准备工作就绪后,将处理后的数据以高吞吐量方式批量写入到金蝶云星空,这是至关重要的一步。我们采用金蝶 API `batchSave` 进行操作,在此过程中,确保对接异常处理机制和错误重试策略有效实施。一旦发现任何失误或不一致,可以即时告警并自动重新尝试,以保证最终结果正确无误。同时,我们还配备集中监控告警系统,实时跟踪整个任务状态及性能表现,让管理者对全流程执行情况心中有数。 通过以上几个环节,不仅高效解决了如何从简道快速、安全地提取大量交易记录,还顺利实现了向金蝶上传整合销售数据信息,从而达到了强化业务透明度,提高运营效率目标。在下文中,将进一步详细介绍具体方案步骤与实施细节,包括请求参数配置、日志记录方法等。 ![如何对接钉钉API接口](https://pic.qeasy.cloud/D3.png~tplv-syqr462i7n-qeasy.image) ### 调用简道云接口获取并加工数据的技术实现 在数据集成过程中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用简道云接口`/api/v2/app/{app_id}/entry/{entry_id}/data`来获取并加工数据。 #### 接口调用配置 首先,我们需要配置接口调用的元数据。以下是具体的配置细节: ```json { "api": "/api/v2/app/{app_id}/entry/{entry_id}/data", "effect": "QUERY", "method": "POST", "number": "_widget_1683509935530", "id": "_id", "idCheck": true, "request": [ { "field": "appId", "label": "应用ID", "type": "string", "describe": "应用ID", "value": "642307c010703500087839ac" }, { "field": "entryId", "label": "表单ID", "type": "string", "describe": "表单ID", "value": "6438b3adacef5e0009b2e467" }, { "field": "fields", "label": "需要查询的字段", "type": "string", "describe": "多个字段以逗号隔开,默认不传入则输出所有字段", "parser": { "name": "StringToArray", "params": "," } }, { "field": "limit", "label": "每页返回数量", "type": "string", "describe": "[1~100],默认10条记录。", ... ``` #### 请求参数解析 在请求参数中,我们定义了多个字段,包括应用ID(`appId`)、表单ID(`entryId`)、需要查询的字段(`fields`)以及每页返回数量(`limit`)。这些参数确保我们能够灵活地控制数据请求的范围和内容。 例如,以下是一个典型的请求体: ```json { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ![如何开发钉钉API接口](https://pic.qeasy.cloud/S23.png~tplv-syqr462i7n-qeasy.image) ### 数据集成与ETL转换:轻易云平台至金蝶云星空API接口 在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,并转为目标平台所能接收的格式。本文将详细介绍如何通过轻易云数据集成平台,将流量成交表(二合一)的数据转换并写入金蝶云星空API接口。 #### 配置元数据 在进行ETL转换之前,我们需要配置好元数据,以确保数据能够正确映射到目标平台的API接口。以下是关键的元数据配置: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "number": "FBillNo", "id": "FBillNo", "name": "FBillNo", "idCheck": true, "request": [ {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"XSCKD01_SYS"}, {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{_widget_1683509935530}"}, {"field":"FDate","label":"日期","type":"datetime","describe":"日期","value":"{_widget_1680516292932}"}, {"field":"FSaleOrgId","label":"销售组织","type":"string","describe":"销售组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{_widget_1704940494753}"}, {"field":"FCustomerID","label":"客户","type":"string","describe":"客户","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{_widget_1704940494720}"}, {"field":"FStockOrgId","label":"发货组织","type":"string","describe":"发货组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{_widget_1704940494753}"}, {"field":"FNote","label":"备注","type":"string","describe":"备注","value":"{_widget_1680516292942}"}, { "field": "FEntity", "label": "明细信息", "type": "array", "describe": "明细信息", "value": "_widget_1680764252483", "children": [ {"field": "FMaterialID", "label": "物料编码", "type": "string", "describe": "物料编码", "parser":{"name": "ConvertObjectParser", "params": "FNumber"}, "value": "{{_widget_1680764252483._widget_1683178621266}}" }, {"field": "FRealQty", "label": "实发数量", "type": "int", "describe": "实发数量", "value": "{{_widget_1680764252483._widget_1680768645007}}" }, {"field": "FTaxPrice", "label": "含税单价", "type": "float", "describe": "含税单价", "value": "_function round({{_widget_1680764252483._widget_1680768644995}},2)" }, {"field": "FOwnerTypeId", "label": "货主类型", "type": "string", "describe": "货主类型", "value": "BD_OwnerOrg" }, {"field": FOwnerId, label: HuoZhu, type: string, describe: HuoZhu, parser:{ name: ConvertObjectParser, params: FNumber}, value:{ _ widget _1704940494753}}, { field: FStockID, label: CangKu, type: string, describe: CangKu, parser:{ name: ConvertObjectParser, params: FNumber}, value:{ _ widget _1704940494655}}, { field: FIsFree, label: ShiFuZengPin, type: bool, describe: ShiFuZengPin, value:_function CASE '{{ _ widget _1680764252483._ widget _1680768644995}}' WHEN '0' THEN '1' WHEN ' ' THEN '1' ELSE '0' END}, { field: FEntrynote, label: BeiZhu, type: string, describe: BeiZhu}, { field: Flot, label: PiHao, type:string,value:"123",parser:{ name:"ConvertObjectParser",params:"FNumber"}}, { field:FEntryTaxRate,label:"ShuiLv",type:"string",value:"1"} ] } ], otherRequest:[ { field:"FormId", label:"YeWuDuiXiangBiaoDanId", type:"string", describe:"YeWuDuiXiangBiaoDanId ", value:"SAL_OUTSTOCK"}, { field:"Operation ", label:"ZhiXingDeCaoZuo ", type:"string ", describe:"ZhiXingDeCaoZuo ", value:"BatchSave"}, { field:"IsAutoSubmitAndAudit ", label:"TiJiaoBingShenHe ", type:"bool ", describe:"TiJiaoBingShenHe ", value:true}, { field:"IsVerifyBaseDataField ", label:"YanZhengJiChuZiLiao ", type:"bool ", describe:"YanZhengJiChuZiLiao ", value:true}, { field :"SubSystemId ", label :"XiTongMoKuai ", type :"string ", describe :"XiTongMoKuai ", value :"21"}, { field :"InterationFlags ", label :"YunXuFuKuCun ", type :"string ", describe :"YunXuFuKuCun ", value :"STK_InvCheckResult"} ], operation:{ rowsKey : array, rows :1, method : batchArraySave } } ``` #### 数据请求与清洗 在数据请求阶段,我们从源系统(如流量成交表)获取原始数据,并进行必要的清洗和标准化处理。这个过程包括去除冗余字段、标准化日期格式、校验数据完整性等操作。 #### 数据转换与写入 1. **字段映射与转换**: - 使用`ConvertObjectParser`对字段进行解析和转换。例如,`FBillTypeID`、`FSaleOrgId`等字段需要通过`ConvertObjectParser`将内部编码转为金蝶云星空所能识别的编码。 - 对于复杂的数据结构,如明细信息(`FEntity`),需要逐层解析和映射。例如,物料编码(`FMaterialID`)同样需要通过`ConvertObjectParser`进行转换。 2. **特殊字段处理**: - 对于一些特殊字段,如含税单价(`FTaxPrice`),我们使用自定义函数进行处理。例如,通过 `_function round({{_widget_1680764252483._widget_1680768644995}},2)` 保证价格保留两位小数。 - 对于是否赠品(`FIsFree`)字段,通过条件判断函数 `_function CASE '{{ _ widget _1680764252483._ widget _1680768644995}}' WHEN '0' THEN '1' WHEN ' ' THEN '1' ELSE '0' END` 来确定其值。 3. **批量保存**: - 配置 `operation.rowsKey = array`, `operation.rows = 1`, `operation.method = batchArraySave` 来实现批量保存操作。 - 设置 `otherRequest.IsAutoSubmitAndAudit = true`, 确保提交并审核操作自动完成。 4. **API调用**: - 最后,通过 POST 请求调用金蝶云星空的 `batchSave` API,将处理后的数据写入目标系统。确保所有必填字段均已正确填写,并且符合 API 接口要求。 #### 实际案例 假设我们从源系统获取到如下原始数据: ```json { "_widget_1683509935530": "SO20231001", "_widget_1680516292932": "2023-10-01T00:00:00", "_widget_1704940494753": ["ORG001"], "_widget_1704940494720": ["CUS001"], "_widget_1704940494655":["STK001"], "_widget_1680516292942":["Test Note"], "_widget_1680764252483":[ { "_widget_1683178621266":["MAT001"], "_widget_1680768645007":[100], "_widget_1680768644995":[50] } ] } ``` 经过 ETL 转换后,生成如下符合金蝶云星空 API 接口要求的数据: ```json { ... } ``` 通过上述步骤,我们实现了从源系统到目标系统的数据无缝对接,确保了数据的一致性和准确性。这不仅提高了业务效率,也为企业的数据管理提供了强有力的支持。 ![打通金蝶云星空数据接口](https://pic.qeasy.cloud/T13.png~tplv-syqr462i7n-qeasy.image)