使用轻易云实现金蝶云数据ETL与写入

  • 轻易云集成顾问-冯潇

金蝶云星空数据集成案例:委外领料-其他出库单

在本次技术方案中,我们将探讨如何高效地实现金蝶云星空系统之间的数据集成,具体应用于"委外领料-其他出库单"的处理。通过对API接口的深入使用和轻易云数据集成平台的全面管理功能,我们不仅确保了大量数据能快速可靠地写入目标系统,还保障了整个流程中的数据质量和监控。

首先,让我们简要介绍一下关键技术组件。在这一方案中,executeBillQuery API用于从金蝶云星空获取订单数据,而batchSave API则负责将处理后的数据批量写入目的端。针对海量并发请求,通过轻易云的数据流设计工具,可以直观且便捷地配置各个节点,并实时监控任务执行情况。

在实际操作过程中,我们采用了一些核心特性:

  1. 支持自定义数据转换逻辑:保证源系统的字段与目标系统完美匹配。例如,将委外领料单中的编码格式按需转化为其他出库单所需要求。
  2. 高吞吐量的数据写入能力:借助轻易云优化过的数据传输通道,实现每秒数千条记录无缝对接到金蝶云星空,提高整体效率。
  3. 集中监控和告警系统:设置实时告警策略,当检测到异常情况时及时通知相关人员进行处理,同时提供详细日志以便问题追溯与分析。

为了更好地适应业务复杂多变的需求,本次实施还特别注意了以下几点:

  1. 分页与限流机制:考虑到API性能瓶颈,通过合理设计每次请求的数据页大小及频率,有效避免因超负荷访问导致服务不可用的问题。
  2. 错误重试机制:当出现偶发性错误时,如网络波动或短暂服务停滞,可以自动尝试重新提交未成功的数据包,确保最终的一致性。
  3. 定制化映射规则:利用灵活的映射模板,根据不同类型订单属性进行差异化处理,使得两套金蝶云星空系统间的信息能够精准对应。

以上这些措施不仅显著提高了我们的部署效率,也为企业日常经营活动提供了强有力的技术支撑。在接下来的章节中,我们会更加详细讲解各环节具体实现方法,包括代码实现、参数配置以及一些实战经验总结。 打通企业微信数据接口

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

在数据集成的生命周期中,调用源系统接口获取数据是关键的第一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口,以获取委外领料-其他出库单的数据,并进行初步加工。

配置元数据

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

{
  "api": "executeBillQuery",
  "method": "POST",
  "number": "FBillNo",
  "id": "Fentity_FEntryID",
  "pagination": {
    "pageSize": 500
  },
  "idCheck": true,
  "request": [
    {"field":"Fentity_FEntryID","label":"Fentity_FEntryID","type":"string","describe":"Fentity_FEntryID","value":"Fentity_FEntryID"},
    {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"FBillNo"},
    {"field":"FDocumentStatus","label":"单据状态","type":"string","describe":"单据状态","value":"FDocumentStatus"},
    {"field":"FApproverid_FName","label":"审核人_名称","type":"string","describe":"审核人_名称","value":"FApproverid.FName"},
    {"field":"FApproveDate","label":"审核日期","type":"string","describe":"审核日期","value":"FApproveDate"},
    {"field":"FModifierId_FName","label":"修改人_名称","type":"string","describe":"修改人_名称","value":"FModifierId.FName"},
    {"field":"FCreateDate","label":"创建日期","type":"string","describe":"创建日期","value":"FCreateDate"},
    {"field":"FCreatorId_FName","label":"创建人_名称","type":"string","describe":"创建人_名称","value":"FCreatorId.FName"},
    {"field":"FModifyDate","label":"修改日期","type":"string","describe":"修改日期","value":"FModifyDate"},
    {"field":... (省略部分字段)
  ],
  "otherRequest": [
    {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
    {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
    {"field":... (省略部分字段)
  ]
}

调用API接口

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

{
  "FormId": "SUB_PickMtrl",
  "FieldKeys": [
    ... (省略部分字段)
  ],
  "FilterString": "",
  ... (省略部分字段)
}

在这个请求中,FormId指定了业务对象表单ID为SUB_PickMtrl,而FieldKeys则包含了我们需要查询的字段集合。

数据清洗与转换

获取到原始数据后,我们需要对其进行清洗和转换,以便后续处理和分析。以下是一些常见的数据清洗和转换操作:

  1. 去除无效数据:过滤掉不符合业务需求的数据,例如状态为作废或未审核的数据。
  2. 格式转换:将日期、金额等字段转换为标准格式。
  3. 字段映射:根据业务需求,将原始字段映射到目标系统所需的字段。

例如,对于日期字段,可以使用以下代码进行格式转换:

import datetime

def convert_date(date_str):
    return datetime.datetime.strptime(date_str, '%Y-%m-%d').strftime('%d/%m/%Y')

分页处理

由于API返回的数据量可能较大,需要进行分页处理。我们可以通过设置分页参数来控制每次请求返回的数据量。例如:

{
  ... (省略部分字段),
  "Limit": 500,
  "StartRow": start_row_index
}

在每次请求后,根据返回结果更新start_row_index,直到所有数据都被获取完毕。

数据写入目标系统

最后,将清洗和转换后的数据写入目标系统。这一步通常涉及到调用目标系统的API接口或直接写入数据库。在此过程中,需要确保数据的一致性和完整性。

例如,可以使用以下代码将处理后的数据写入数据库:

import sqlite3

def write_to_db(data):
    conn = sqlite3.connect('example.db')
    cursor = conn.cursor()

    for record in data:
        cursor.execute("INSERT INTO target_table VALUES (?, ?, ?)", (record['FBillNo'], record['FDate'], record['FAmount']))

    conn.commit()
    conn.close()

通过以上步骤,我们完成了从调用源系统接口获取数据,到清洗、转换并写入目标系统的整个过程。这不仅提高了数据处理效率,还确保了数据的一致性和准确性。 打通用友BIP数据接口

使用轻易云数据集成平台实现委外领料-其他出库单的ETL转换与写入金蝶云星空API接口

在数据集成生命周期的第二步中,我们需要将源平台的数据进行ETL转换,使其符合目标平台金蝶云星空API接口的要求,并最终写入目标平台。以下是详细的技术实现步骤和关键配置。

1. 数据请求与清洗

首先,我们从源平台请求数据并进行初步清洗,确保数据完整性和一致性。由于本文重点在于ETL转换和写入过程,这部分内容简要提及。

2. 数据转换与写入

2.1 配置元数据

根据提供的元数据配置,我们需要将源平台的数据字段映射到金蝶云星空API接口所需的字段格式。以下是关键字段及其配置解析:

{
    "api": "batchSave",
    "method": "POST",
    "idCheck": true,
    "operation": {
        "method": "merge",
        "field": "FBillNo,FDate",
        "bodyName": "details",
        "bodySum": ["FActualQty"],
        "header": ["FBillNo", "FDate", "FSubOrgId_FNumber", "FStockOrgId_FNumber"],
        "body": ["FMaterialId_FNumber", "FActualQty", "FSubOrgId_FNumber"]
    },
    ...
}
  • apimethod 指定了调用金蝶云星空的批量保存接口。
  • idCheck 表示是否进行ID校验。
  • operation 定义了如何合并和处理数据,包括主表和子表字段。
2.2 请求字段映射

我们需要将源平台的数据字段映射到目标平台所需的字段格式。以下是部分关键字段及其映射规则:

[
    {
        "field": "FBillNo",
        "label": "单据编号",
        ...
        "value": "{FBillNo}"
    },
    {
        "field": "FStockOrgId",
        ...
        "value": "_function case when '{FStockOrgId_FNumber}' ='100' then '125'  when '{FStockOrgId_FNumber}' ='202' then '120' else '126' end"
    },
    ...
]
  • FBillNo 对应源平台的单据编号。
  • FStockOrgId 使用条件函数根据不同的库存组织编号转换为目标平台所需的编号。
2.3 子表明细信息映射

子表中的明细信息也需要进行相应的字段映射:

[
    {
        ...
        "field": "FEntity",
        ...
        "children": [
            {
                ...
                "field": "FMaterialId",
                ...
                "value": "{FMaterialId_FNumber}"
            },
            {
                ...
                "field": "FQty",
                ...
                "value": "{FActualQty}"
            },
            ...
        ]
    }
]
  • FMaterialId 对应物料编码,需要转换为目标平台格式。
  • FQty 对应实际数量。
2.4 其他请求参数配置

除了上述主要字段外,还需要配置一些其他请求参数,以确保数据能够正确写入目标平台:

[
    {
        ...
        "field": "FormId",
        ...
        "value": "STK_MisDelivery"
    },
    {
        ...
        "field": "IsAutoSubmitAndAudit",
        ...
        "value": false
    },
    {
        ...
        ... 
    }
]
  • FormId 指定业务对象表单ID。
  • IsAutoSubmitAndAudit 设置是否自动提交并审核。

3. 数据写入

完成上述配置后,通过轻易云数据集成平台调用金蝶云星空API接口,将转换后的数据写入目标系统。此过程包括发送HTTP POST请求,传递已映射好的JSON数据结构,并处理返回结果以确认操作成功。

通过以上步骤,我们实现了从源平台到金蝶云星空API接口的数据ETL转换与写入,确保数据在不同系统间无缝对接,实现高效、透明的数据集成管理。 如何对接企业微信API接口

更多系统对接方案