通过轻易云平台实现从金蝶到钉钉的ETL数据转换

  • 轻易云集成顾问-陈洁琳

案例分享:金蝶云星空数据集成到钉钉

在企业业务流程中,实现高效、精确的数据集成对于提升整体运营效率至关重要。本文将重点介绍如何利用轻易云数据集成平台,将金蝶云星空中的供应商信息无缝对接到钉钉系统的供应商表单。这一操作不仅需要确保数据不漏单,还要处理大量数据的快速写入以及异常情况下的数据重试机制。

首先,我们通过调用金蝶云星空的executeBillQuery API接口,定时抓取所需供应商信息。在这个过程中,需要特别关注分页和限流问题,因为一次性获取大批量数据可能导致API接口超时或失败。而解决这一问题的关键是实现可靠的抓取与分页策略,确保每次请求成功并获取完整的数据。具体而言,通过轻易云的平台可以设置自动重试机制和日志记录功能,对任何网络或接口错误进行及时捕捉和修正。

在成功从金蝶云星空获取到所需的供应商信息后,我们面临第二个技术难题:如何将这些数据准确、高效地写入到钉钉系统中。使用钉钉提供的topapi/processinstance/create API,可以生成新的供应商表单实例。然而,这一步同样涉及大量数据快速写入的问题,为此我们设计了批量处理机制,并结合实时监控工具,对整个过程进行全面跟踪,以便随时调整和优化。

此外,由于两套系统之间的数据格式存在差异,在实际对接过程中,还需要进行必要的数据映射转换工作。例如,从金蝶云星空提取出来的信息字段与钉钉表单预设字段不完全一致,需要通过定制化映射规则来实现无缝对接。这不仅包括字段名称的一致性,还涉及数据类型及内容格式上的匹配转换工作。

最后,一旦集成进入运行状态,实时监控与日志记录变得尤为重要。通过实施全生命周期管理,可以清晰透明地展示每一个环节的数据流动情况,帮助我们迅速定位潜在问题并做出响应。同时,也为后续维护和优化提供了坚实保障。

以上就是关于本案例开头部分的一些核心技术点展示,在下一节中,我们会详细探讨具体实现步骤以及相关代码示例。

打通金蝶云星空数据接口

调用金蝶云星空接口executeBillQuery获取并加工数据

在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口来获取供应商数据,并进行必要的数据加工。

配置元数据

首先,我们需要配置元数据,以便正确调用金蝶云星空的API接口。以下是关键的元数据配置:

{
  "api": "executeBillQuery",
  "effect": "QUERY",
  "method": "POST",
  "number": "FNumber",
  "id": "FSupplierId",
  "name": "FNumber",
  "idCheck": true,
  "request": [
    {"field":"FSupplierId","label":"FSupplierId","type":"string","describe":"FSupplierId","value":"FSupplierId"},
    {"field":"FNumber","label":"编码","type":"string","describe":"编码","value":"FNumber"},
    {"field":"FName","label":"名称","type":"string","describe":"名称","value":"FName"},
    {"field":"FCreateOrgId_FNumber","label":"创建组织","type":"string","describe":"创建组织","value":"FCreateOrgId.FNumber"},
    {"field":"FUseOrgId_FNumber","label":"使用组织","type":"string","describe":"使用组织","value":"FUseOrgId.FNumber"},
    {"field":"FDescription","label":"描述","type":"string","describe":"描述","value":"FDescription"},
    {"field":"FShortName","label":"简称","type":"string","describe":"简称","value":"FShortName"},
    {"field":"FMinPOValue","label":"最小订单量","type":"string","describe":"最小订单量","value":"FMinPOValue"},
    {"field":...},
    ...
  ],
  "otherRequest": [
    {"field": "Limit", "label": "{PAGINATION_PAGE_SIZE}", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
    {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
    {"field":...},
    ...
  ],
  ...
}

调用API接口

在配置好元数据后,我们可以通过轻易云平台发起对金蝶云星空executeBillQuery接口的调用。以下是一个示例请求:

{
  "FormId": "BD_Supplier",
  "FieldKeys": ["FSupplierId", "FNumber", ...],
  "FilterString": "FAuditDate>='{{LAST_SYNC_TIME|dateTime}}' and FCreateOrgId.FNumber in ('04','0402','401')",
  ...
}

此请求将返回符合条件的供应商信息。关键字段包括供应商ID(FSupplierId)、编码(FNumber)、名称(FName)等。

数据清洗与加工

获取到原始数据后,需要进行清洗和加工,以确保数据质量和一致性。例如,可以对某些字段进行格式转换或值替换:

  1. 格式转换:将日期字段从字符串格式转换为标准日期格式。
  2. 值替换:根据业务需求,将某些字段的值替换为更具可读性的内容。例如,将业务状态码转换为对应的状态描述。

以下是一个简单的数据清洗示例:

def clean_data(data):
    for record in data:
        # 转换日期格式
        record['FAuditDate'] = convert_to_date(record['FAuditDate'])
        # 替换业务状态码
        record['FBusinessStatus'] = status_code_to_description(record['FBusinessStatus'])
    return data

写入目标系统

经过清洗和加工后的数据可以写入到目标系统,如钉钉供应商表单。这一步通常涉及到调用目标系统的API接口,并确保数据格式符合目标系统要求。

{
  ...
}

通过上述步骤,我们实现了从金蝶云星空获取供应商数据并进行加工处理,最终写入到钉钉供应商表单中。这一过程充分利用了轻易云平台的数据集成功能,实现了不同系统间的数据无缝对接。 如何对接用友BIP接口

使用轻易云数据集成平台进行ETL转换并写入钉钉API接口

在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL转换,转为目标平台钉钉API接口所能够接收的格式,最终写入目标平台。本文将详细探讨如何利用轻易云数据集成平台的元数据配置,实现从金蝶供应商查询到钉钉供应商表单的无缝对接。

钉钉API接口元数据配置解析

首先,我们需要理解钉钉API接口的元数据配置,以便在ETL过程中正确地映射和转换数据。以下是我们将要使用的元数据配置:

{
  "api": "topapi/processinstance/create",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {
      "field": "process_code",
      "label": "钉钉表单id",
      "type": "string",
      "describe": "process_code在审批流程编辑页面的URL网址中获取。",
      "value": "PROC-CC6470B0-D13D-469D-9A5A-7C634C4892EB"
    },
    {
      "field": "originator_user_id",
      "label": "发起人userid",
      "type": "string",
      "describe": "审批实例发起人的userid。",
      "value": "01210911252326062645"
    },
    {
      "field": "dept_id",
      "label": "发起人所属部门id",
      "type": "string",
      "describe": "发起人所在的部门,如果发起人属于根部门,传-1。",
      "value": "-1"
    },
    {
      "field": "form_component_values",
      "label": "表单控件",
      "type": "object",
      ...
    }
  ]
}

数据请求与清洗

在进行ETL转换之前,我们首先需要从金蝶系统中获取供应商信息。这一步骤通常涉及到通过API请求或数据库查询来提取相关数据,并对其进行必要的清洗和预处理。例如:

SELECT FName, FBankHolder, FOpenBankName, FCNAPS, FBankCode, FUseOrgId_FNumber FROM SupplierTable WHERE Status = 'Active';

数据转换与映射

接下来,我们将提取的数据映射到钉钉API所需的字段。根据元数据配置,我们需要将金蝶系统中的字段对应到钉钉API中的表单控件字段:

"form_component_values":[
  {"field":"供应商名称","label":"供应商名称","type":"string","describe":"控件1","value":"{FName}"},
  {"field":"收款人","label":"收款人","type":"string","describe":"控件2","value":"{FBankHolder}"},
  {"field":"开户行","label":"开户行","type":"string","describe":"控件3","value":"{FOpenBankName}"},
  {"field":"大额行号","label":"大额行号","type":"string","describe":"控件4","value":"{FCNAPS}"},
  {"field":"收款账户","label":"收款账户","type":"string","value":"{FBankCode}"},
  {"field":"主体企业","label":"主体企业","type":"string","value":"{FUseOrgId_FNumber}"}
]

在轻易云平台上,我们可以通过可视化界面进行字段映射,将金蝶系统中的字段值填充到上述JSON结构中。

数据写入目标平台

完成数据转换后,我们需要将这些数据通过HTTP POST请求写入到钉钉API接口。以下是一个示例代码片段,展示了如何构建HTTP请求并发送:

import requests
import json

url = 'https://oapi.dingtalk.com/topapi/processinstance/create'
headers = {'Content-Type': 'application/json'}
data = {
    'process_code': 'PROC-CC6470B0-D13D-469D-9A5A-7C634C4892EB',
    'originator_user_id': '01210911252326062645',
    'dept_id': '-1',
    'form_component_values': [
        {'name': '供应商名称', 'value': supplier_data['FName']},
        {'name': '收款人', 'value': supplier_data['FBankHolder']},
        {'name': '开户行', 'value': supplier_data['FOpenBankName']},
        {'name': '大额行号', 'value': supplier_data['FCNAPS']},
        {'name': '收款账户', 'value': supplier_data['FBankCode']},
        {'name': '主体企业', 'value': supplier_data['FUseOrgId_FNumber']}
    ]
}

response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.json())

实时监控与错误处理

在实际操作中,实时监控和错误处理是确保数据准确性和系统稳定性的关键。轻易云平台提供了实时监控功能,可以帮助我们跟踪每个步骤的数据流动和处理状态。一旦发生错误,可以迅速定位并解决问题。

通过上述步骤,我们成功地实现了从金蝶系统到钉钉API接口的数据ETL转换,并将处理后的数据写入目标平台。这不仅提升了业务流程的自动化程度,还确保了数据的一致性和准确性。 钉钉与CRM系统接口开发配置

更多系统对接方案