ETL转换在数据集成中的应用:从钉钉到MySQL

  • 轻易云集成顾问-杨嫦

钉钉数据集成到MySQL案例分享:社保购买付款申请

在本文中,我们将探讨一个具体的系统对接案例,通过轻易云数据集成平台,将钉钉的社保购买付款申请数据无缝集成到MySQL数据库中。本次案例的核心是如何利用API接口有效获取和处理钉钉的数据,并通过高效可靠的方法将其存储在MySQL中,以供后续BI分析使用。

首先,我们需要调用钉钉提供的数据获取接口topapi/processinstance/get来定时抓取社保购买付款申请的相关信息。该接口支持分页查询,这意味着我们必须妥善处理分页及限流问题,确保每次调用都能完整且准确地提取所有必要数据。

一旦成功获取数据,下一步便是进行必要的数据转换和映射操作。由于钉钉与MySQL之间在数据结构上存在差异性,我们需自定义适当的数据转换逻辑,使得从源系统抽取的原始数据能够正确匹配目标数据库表中的字段。此外,在这一过程中,还需配置针对异常情况的错误重试机制,以提升整体任务执行的鲁棒性。

对于大量高频率写入需求,可利用轻易云提供的大批量快速写入能力,将经转换后的有效数据信息同步到MySQL。这不仅保障了操作效率,也为下一个环节,即实时监控和日志记录打下稳固基础。通过平台内置的集中监控功能,可以动态追踪每一次导入任务,从而及时发现并解决潜在问题。

最后,为了更好地适应业务变动需求,本方案设计还采用了可视化的数据流设计工具,直观展示并管理整个数据集成过程。这大大简化了日常维护工作,同时也提升团队协作效率。

通过本次分享,希望您不仅能掌握基本流程,更重要的是理解各关键技术点如何有机结合,共同达成优化目标。在接下来的内容里,我们会详细剖析这些步骤及实际应用场景。 金蝶与外部系统打通接口

调用钉钉接口topapi/processinstance/get获取并加工数据

在轻易云数据集成平台的生命周期中,调用源系统接口是关键的第一步。本文将详细探讨如何通过调用钉钉接口topapi/processinstance/get来获取并加工数据,以实现社保购买付款申请的集成。

接口配置与调用

首先,我们需要配置并调用钉钉的topapi/processinstance/get接口。该接口用于查询审批实例详情,以下是元数据配置:

{
  "api": "topapi/processinstance/get",
  "effect": "QUERY",
  "method": "POST",
  "number": "number",
  "id": "id",
  "idCheck": true,
  "request": [
    {
      "field": "process_code",
      "label": "审批流的唯一码",
      "type": "string",
      "describe": "这里填写钉钉表单的id",
      "value": "PROC-73209584-12B7-4E98-A370-BBD1DB296862"
    },
    {
      "field": "start_time",
      "label": "审批实例开始时间。Unix时间戳,单位毫秒。",
      "type": "string",
      "describe": "Help",
      "value": "_function {LAST_SYNC_TIME}*1000"
    },
    {
      "field": "end_time",
      "label": "审批实例结束时间,Unix时间戳,单位毫秒",
      "type": "string",
      "describe": "Help",
      "value": "_function {CURRENT_TIME}*1000"
    },
    {
      "field": "size",
      "label": "分页参数,每页大小,最多传20。",
      "type": "string",
      "describe": "",
      'value': '20'
    },
    {
      'field': 'cursor',
      'label': '分页查询的游标,最开始传0,后续传返回参数中的next_cursor值。',
      'type': 'string',
      'describe': '',
    }
  ],
  'autoFillResponse': true
}

请求参数解析

  1. process_code: 审批流的唯一码,用于标识特定的审批流程。在本例中,我们使用的是PROC-73209584-12B7-4E98-A370-BBD1DB296862
  2. start_time: 审批实例开始时间,以Unix时间戳表示,并乘以1000转换为毫秒。在实际操作中,可以通过函数{LAST_SYNC_TIME}动态获取上次同步时间。
  3. end_time: 审批实例结束时间,同样以Unix时间戳表示,并乘以1000转换为毫秒。可以通过函数{CURRENT_TIME}动态获取当前时间。
  4. size: 分页参数,每页大小最多传20。
  5. cursor: 分页查询的游标,初始值为0,后续请求中使用返回结果中的next_cursor

数据请求与清洗

在发起POST请求后,我们会收到一个包含审批实例详情的数据集。为了确保数据质量和一致性,需要对原始数据进行清洗和预处理。

  1. 字段映射与转换:将原始数据字段映射到目标系统所需字段。例如,将钉钉返回的审批人信息映射到BI崛起系统中的相应字段。
  2. 数据格式化:将日期、金额等字段格式化为目标系统要求的格式。例如,将Unix时间戳转换为标准日期格式。
  3. 异常处理:处理可能出现的数据异常,如缺失值、格式错误等。

数据转换与写入

经过清洗和预处理的数据需要进行进一步转换,以符合目标系统(如BI崛起)的要求。具体步骤包括:

  1. 结构化转换:将平铺的数据结构转化为嵌套结构或其他复杂结构,以满足目标系统的数据模型需求。
  2. 类型转换:确保所有字段类型符合目标系统要求,例如将字符串类型转换为数值类型。
  3. 写入操作:通过API或数据库连接器,将处理后的数据写入目标系统。

在整个过程中,轻易云平台提供了全透明可视化的操作界面,使得每个环节都清晰易懂,并且实时监控数据流动和处理状态,大大提升了业务透明度和效率。

通过上述步骤,我们成功实现了从钉钉到BI崛起系统的数据集成,为社保购买付款申请流程提供了强有力的数据支持。这一过程不仅展示了轻易云平台强大的数据集成功能,也体现了其在异构系统间无缝对接方面的卓越表现。 企业微信与OA系统接口开发配置

数据集成生命周期中的ETL转换:从钉钉到MySQL的社保购买付款申请

在数据集成生命周期的第二步中,我们将已经集成的源平台数据进行ETL转换,转为目标平台MySQL API接口所能够接收的格式,最终写入目标平台。本文将详细探讨如何通过轻易云数据集成平台实现这一过程。

元数据配置解析

在本案例中,我们需要将来自钉钉的社保购买付款申请数据转换并写入到BI崛起系统中的MySQL数据库。以下是元数据配置的详细解析:

{
  "api": "execute",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {
      "field": "main_params",
      "label": "main_params",
      "type": "object",
      "describe": "111",
      "value": "1",
      "children": [
        {"field": "bfn_id", "label": "id", "type": "string", "value": "{id}"},
        {"field": "center", "label": "所属中心", "type": "string", "value": "{{所属中心}}"},
        {"field": "department", "label": "所属部门", "type": "string", "value": "{{所属部门}}"},
        {"field": "purchase_month", "label": "购买月份","type":"string","value":"{{购买月份}}"},
        {"field":"comments","label":"备注","type":"string","value":"{{备注}}"},
        {"field":"create_time","label":"审批发起时间","type":"string","value":"{{extend.create_time}}"},
        {"field":"finish_time","label":"审批结束时间","type":"string","value":"{{extend.finish_time}}"},
        {"field":"originator_userid","label":"发起人userid","type":"string","value":"{{extend.originator_userid}}"},
        {"field":"originator_dept_id","label":"发起人所属部门id","type":"string","value":"{{extend.originator_dept_id}}"},
        {"field":"status","label":"审批实例状态","type":"string","value":"{{extend.status}}"},
        {"field":"result","label":"审批结果","type":"string","value":"{{extend.result}}"},
        {"field":"business_id","label":"审批编号","type":"string","value":"{{extend.business_id}}"},
        {"field":"originator_dept_name","label":"发起人所属部门名称","type":"string","value":"{{extend.originator_dept_name}}"},
        {"field":"biz_action","label":"审批实例业务动作","type":"string","value":"{{extend.biz_action}}"}
      ]
    }
  ],
  ...
}

数据请求与清洗

首先,我们需要从钉钉系统中获取相关的社保购买付款申请数据。通过API调用获取的数据通常包含多个字段,这些字段需要经过清洗和转换,以符合目标系统的要求。

在元数据配置中,request部分定义了需要处理的数据字段及其对应关系。例如:

  • bfn_id 对应 {id}
  • center 对应 {{所属中心}}
  • department 对应 {{所属部门}}
  • ...

这些字段通过模板语法映射到源数据中的具体值。

数据转换与写入

在完成数据请求与清洗后,下一步是将这些数据转换为目标系统能够接收的格式,并通过API接口写入MySQL数据库。

元数据配置中的 otherRequest 部分定义了执行SQL语句所需的参数和SQL模板:

{
  ...
  {
    “field”: “main_sql”,
    “label”: “main_sql”,
    “type”: “string”,
    “describe”: “111”,
    “value”: “REPLACE INTO social_insurance_payment_application (bfn_id, center, department, purchase_month, comments, create_time, finish_time, originator_userid, originator_dept_id, status, result, business_id, originator_dept_name, biz_action) VALUES (:bfn_id,:center,:department,:purchase_month,:comments,:create_time,:finish_time,:originator_userid,:originator_dept_id,:status,:result,:business_id,:originator_dept_name,:biz_action);”
  }
}

这个SQL模板使用命名参数来插入清洗后的数据。例如,:bfn_id 将被替换为 {id} 的值。通过这种方式,可以确保所有字段都被正确地映射和插入到目标表 social_insurance_payment_application 中。

实际操作步骤

  1. 获取源数据:通过API从钉钉系统中获取社保购买付款申请的数据。
  2. 清洗和转换:根据元数据配置,对获取的数据进行清洗和格式转换。
  3. 生成SQL语句:使用 otherRequest 中定义的SQL模板,将清洗后的数据映射到相应的命名参数。
  4. 执行SQL语句:通过API接口,将生成的SQL语句发送到MySQL数据库执行,实现数据写入。

以上步骤确保了从钉钉到MySQL的数据无缝对接,并且每个环节都可以通过轻易云平台进行全透明可视化操作,实时监控和管理。 用友与外部系统接口集成开发

更多系统对接方案