使用轻易云平台实现金蝶客户数据的实时同步

  • 轻易云集成顾问-张妍琪

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

在本案例中,我们详细探讨了如何将金蝶云星空系统中的客户数据,通过轻易云数据集成平台,批量同步至MySQL数据库的过程。目标是实现0查询金蝶客户信息并精准同步到商城的中间表,以便下游业务系统调用。整个方案强调高效、安全、实时的特点。

为确保数据处理的时效性和准确性,我们利用了金蝶云星空提供的数据获取API executeBillQuery 和 MySQL写入数据API execute,通过自动化脚本和调度机制,实现定时可靠地抓取与存储操作。此外,为应对大量数据快速写入需求和防止漏单情况发生,本次集成特别关注以下技术要点:

  1. 高吞吐量支持: 采用分批次处理模式,每次从金蝶云星空接口拉取一定数量的数据,并立即同步至MySQL。这不仅提升了整体效率,也减少了一次性大流量请求带来的风险。

  2. 分页与限流策略: 针对接口调用限制问题,通过分页方式控制每次提取的数据规模,同时设置合理的调用频率,避免触发限流机制。这种处理方式有效保障了任务持续稳定地进行。

  3. 自定义转换逻辑: 鉴于两套系统存在的数据结构差异,对提取得到的信息进行格式转换与清洗,使其符合MySQL数据库表结构要求。在这一过程中,自定义规则确保所有字段都得到正确映射和存储。

  4. 实时监控与异常处理: 为提高安全性,全程引入集中化监控及告警系统,跟踪各项指标。一旦发现异常,如网络波动导致请求失败或插入操作出错,将即时启动错误重试机制以补救,同时记录日志以供后续分析。

  5. 数据质量保证: 对每一次成功写入前后的结果进行校验,并配置多层过滤器检测潜在的问题,从而最大程度上保证最终落地的数据准确无误。

接下来我们会进一步展示具体实现步骤及代码示例,以帮助开发者更好理解这个方案并应用于实际项目中。 用友与SCM系统接口开发配置

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

在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口来获取客户信息,并对数据进行初步加工。

接口配置与请求参数

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

{
  "api": "executeBillQuery",
  "effect": "QUERY",
  "method": "POST",
  "number": "FNumber",
  "id": "FCUSTID",
  "name": "FNumber",
  "idCheck": true,
  "request": [
    {"field":"FCUSTID","label":"FCUSTID","type":"string","describe":"FCUSTID","value":"FCUSTID"},
    {"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":"FIsTrade","label":"是否交易客户","type":"string","describe":"是否交易客户","value":"FIsTrade"},
    {"field":"FINVOICETITLE","label":"发票抬头","type":"string","value":"FINVOICETITLE"},
    {"field":"FINVOICEBANKNAME","label":"开户银行","type":"string","value":"FINVOICEBANKNAME"},
    {"field":"FINVOICEBANKACCOUNT","label":"银行账号","type":"string","value":"FINVOICEBANKACCOUNT"},
    {"field": "FINVOICETEL", "label": "开票联系电话", "type": "string", "value": "FINVOICETEL"},
    {"field": "FINVOICEADDRESS", "label": "开票通讯地址", "type": "string", "value": "FINVOICEADDRESS"}
  ],
  ...
}

请求参数详解

  • api: 接口名称,这里是executeBillQuery
  • effect: 操作类型,设置为QUERY表示查询操作。
  • method: HTTP请求方法,这里使用POST
  • number, id, name: 用于标识记录的字段。
  • idCheck: 是否检查ID字段,设置为true

请求参数部分定义了我们需要从金蝶系统中获取的字段,包括客户ID、编码、名称、创建组织、使用组织等。这些字段将被映射到相应的数据表中。

其他请求参数

除了基本的请求字段,还需要配置一些其他参数以控制查询行为:

{
  ...
  "otherRequest":[
    {"field": "Limit", "label": "最大行数", "type": "string", ...},
    {"field": "StartRow", "label": "开始行索引", ...},
    {"field": "TopRowCount", ...},
    {"field": "FilterString", ...},
    {"field": "FieldKeys", ...},
    {"field": "FormId", ...}
  ],
  ...
}

这些参数包括分页控制(如最大行数和开始行索引)、过滤条件(如修改日期大于上次同步时间)以及需要查询的字段集合和业务对象表单ID等。

实际调用与数据处理

在实际调用过程中,我们通过HTTP POST请求将上述参数发送到金蝶云星空系统。以下是一个示例请求体:

{
  ...
  {
    FCUSTID: '1001',
    FNumber: 'C0001',
    FName: '客户A',
    FCreateOrgId_FNumber: 'ORG001',
    FUseOrgId_FNumber: 'ORG002',
    FDescription: '重要客户',
    FIsTrade: 'true',
    FINVOICETITLE: '客户A公司',
    FINVOICEBANKNAME: '中国银行',
    FINVOICEBANKACCOUNT: '1234567890',
    FINVOICETEL: '010-12345678',
    FINVOICEADDRESS: '北京市朝阳区'
  }
}

收到响应后,我们可以对数据进行初步加工,如格式转换、字段映射等,以便后续的数据转换与写入阶段处理。

数据清洗与转换

在获取到原始数据后,可能需要进行一些清洗和转换操作。例如,将日期格式统一,去除无效字符等。这一步骤确保了数据的一致性和完整性,为后续的数据写入打下基础。

通过上述步骤,我们成功地调用了金蝶云星空的接口并获取了所需的数据。接下来,可以根据业务需求进一步处理这些数据,实现不同系统间的数据无缝对接。 轻易云数据集成平台金蝶集成接口配置

使用轻易云数据集成平台进行ETL转换并写入MySQLAPI接口的技术案例

在使用轻易云数据集成平台进行数据集成时,生命周期的第二步是将已经集成的源平台数据进行ETL转换,转为目标平台 MySQLAPI接口所能够接收的格式,并最终写入目标平台。本文将深入探讨如何利用元数据配置完成这一过程。

元数据配置解析

元数据配置是实现ETL转换和写入的关键。以下是一个具体的元数据配置示例:

{
  "api": "execute",
  "effect": "EXECUTE",
  "method": "SQL",
  "number": "id",
  "id": "id",
  "name": "id",
  "idCheck": true,
  "request": [
    {
      "field": "main_params",
      "label": "主参数",
      "type": "object",
      "describe": "对应主语句内的动态参数",
      "children": [
        {
          "field": "customer_code",
          "label": "客户编码",
          "type": "string",
          "describe": "店铺名称",
          "value": "{FNumber}"
        },
        {
          "field": "customer_name",
          "label": "姓名",
          "type": "string",
          "describe": "部门",
          "value": "{FName}"
        },
        {
          "field": "create_time",
          "label": "创建时间",
          "type": "datetime",
          "value": "_function now()"
        }
      ]
    }
  ],
  ...
}

数据请求与清洗

在这个阶段,我们从源系统(如金蝶)中获取客户信息,并将其同步到商城中间表。首先,我们需要定义要提取的数据字段,这些字段包括客户编码(FNumber)、客户姓名(FName)和创建时间。

{
  ...
  {
    ...
    {
      field: 'customer_code',
      label: '客户编码',
      type: 'string',
      describe: '店铺名称',
      value: '{FNumber}'
    },
    {
      field: 'customer_name',
      label: '姓名',
      type: 'string',
      describe: '部门',
      value: '{FName}'
    },
    {
      field: 'create_time',
      label: '创建时间',
      type: 'datetime',
      value: '_function now()'
    }
    ...
  }
}

这些字段将被映射到目标平台所需的格式。在这个过程中,_function now() 用于生成当前时间戳,确保每条记录都有准确的创建时间。

数据转换与写入

在完成数据请求与清洗后,下一步是将清洗后的数据转换为目标平台 MySQLAPI 接口能够接收的格式,并写入数据库。这里我们使用 SQL 插入语句来完成这一任务:

{
  ...
  {
    field: 'main_sql',
    label: '主语句',
    type: 'string',
    describe: 'SQL首次执行的语句,将会返回:lastInsertId',
    value: `INSERT INTO middle_client_file_erp (customer_code, customer_name, create_time) 
            VALUES (:customer_code,:customer_name,:create_time)
            ON DUPLICATE KEY UPDATE
            customer_name = VALUES(customer_name),
            create_time = VALUES(create_time)`
  }
}

这段 SQL 插入语句实现了以下功能:

  1. 插入新记录:如果客户编码不存在,则插入一条新记录。
  2. 更新现有记录:如果客户编码已存在,则更新客户姓名和创建时间。

这种方式确保了数据库中的记录始终是最新的,同时避免了重复插入相同的数据。

API接口调用

最后,通过调用 API 接口 execute 来执行上述 SQL 操作:

{
  api: 'execute',
  effect: 'EXECUTE',
  method: 'SQL'
}

此配置指定了 API 的执行方法为 SQL,并通过 effect 字段定义了操作类型为执行(EXECUTE)。这样可以确保 SQL 插入语句被正确地执行,从而将清洗后的数据写入目标 MySQL 数据库。

总结

通过上述步骤,我们成功地实现了从源系统到目标平台的数据 ETL 转换和写入。这一过程充分利用了轻易云数据集成平台提供的元数据配置功能,使得整个操作过程透明且高效。 金蝶与外部系统打通接口

更多系统对接方案