ETL数据转换与写入:实现旺店通·企业奇门与金蝶云星空对接

  • 轻易云集成顾问-吕修远

金蝶云星空数据集成到旺店通·企业奇门的技术案例分享

在系统集成过程中,如何高效、可靠地将金蝶云星空的数据无缝对接到旺店通·企业奇门,是一个值得深入探讨的技术课题。本次案例将聚焦于“云星空直接调拨单(后补仓)> 旺店通直接调拨单”的具体实现,详细解析各关键环节与技术要点。

首先,需要处理的是金蝶云星空数据的获取。使用executeBillQuery接口,我们能够批量抓取需要集成的数据。为了保证不漏单,定时且可靠地调用该接口至关重要。同时,由于大规模数据量的存在,要考虑分页和限流问题,以避免API请求超负荷或被限制。

其次,在数据入库阶段,大量数据快速写入到旺店通·企业奇门则是重中之重。通过wdt.stock.transfer.push接口,可以高效完成这一任务。然而,这一步的不仅仅是简单的数据推送,还涉及两者之间的数据格式差异问题,需要进行精准映射和转换。在此过程中,通过实时监控和日志记录,可以有效跟踪每一次操作,从而提高过程透明度并及时发现潜在异常。

此外,对接过程中不可忽视错误处理机制。当出现各种网络或系统故障时,如何迅速定位问题并自动重试,是保障整体流程稳定性的重要一环。因此,为了确保最终交付质量,实现异常处理与错误重试机制也是必备项之一。

总而言之,通过上述步骤,不但可以保证从金蝶云星空到旺店通·企业奇门的数据传输准确无误,还能最大化提升效率及稳定性。而具体的实施细节,将包括API调用规范、分页策略、格式转换方法等专业内容,在下一部分详解展示。 如何对接企业微信API接口

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

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

接口配置与请求参数

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

{
  "api": "executeBillQuery",
  "method": "POST",
  "number": "FBillNo",
  "id": "FBillEntry_FEntryID",
  "pagination": {
    "pageSize": 100
  },
  "idCheck": true,
  "request": [
    {"field":"FBillEntry_FEntryID","label":"FEntryID","type":"string","value":"FBillEntry_FEntryID"},
    {"field":"FID","label":"实体主键","type":"string","value":"FID"},
    {"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"},
    // ...(省略其他字段)
  ],
  "otherRequest": [
    {"field":"Limit","label":"最大行数","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_PAGE_SIZE}"},
    {"field":"FieldKeys","label":"需查询的字段key集合","type":"array","describe":"金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber","parser":{"name":"ArrayToString","params": ","}},
    {"field":"TopRowCount","label":"返回总行数","type":"int","describe":"金蝶的查询分页参数"},
    {"field":"FilterString","label":"过滤条件","type":"string","describe":"示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=","value":"FApproveDate>='{{LAST_SYNC_TIME|dateTime}}' AND FDocumentStatus = 'C'"},
    {"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"STK_TransferDirect"},
    {"field":"StartRow","label":"开始行索引","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_START_ROW}"}
  ],
  "condition_bk":[[{"field": "FDestStockId_FNumber", "logic": "in", "value": "010,022,015"}]],
  "condition":[[{"field": "FDestStockId_FNumber", "logic": "in", "value": "010,022,015"}]]
}

请求参数详解

  1. API和方法

    • api: executeBillQuery
    • method: POST
  2. 分页配置

    • pagination.pageSize: 每页返回的数据条数,这里设置为100。
  3. 请求字段

    • request数组中列出了需要从源系统获取的字段,包括FBillEntry_FEntryID, FID, FBillNo等。这些字段将用于后续的数据处理和转换。
  4. 其他请求参数

    • Limit: 最大行数,由分页参数决定。
    • FieldKeys: 查询字段集合,通过解析器将数组转换为字符串。
    • FilterString: 数据过滤条件,确保只获取状态为“已审核”的记录,并且同步时间大于上次同步时间。
    • FormId: 表单ID,这里指定为STK_TransferDirect,表示调拨单。

数据请求与清洗

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

{
  "FormId": "STK_TransferDirect",
  "FieldKeys": ["FBillNo", "FID", ...], // 列出所有需要查询的字段
  "FilterString": "FApproveDate >= '2023-01-01' AND FDocumentStatus = 'C'",
  "Limit": 100,
  "StartRow": 0
}

该请求将返回符合条件的数据集。接下来,我们需要对这些数据进行清洗和转换,以便写入目标系统。

数据转换与写入

在获取到源系统的数据后,需要对其进行必要的清洗和转换。例如,将日期格式统一、处理缺失值等。以下是一个简单的数据清洗示例:

import pandas as pd

# 假设我们已经获取了JSON格式的数据
data = [
    {"FBillNo": "D20230101", ...},
    ...
]

df = pd.DataFrame(data)

# 清洗日期格式
df['FDate'] = pd.to_datetime(df['FDate'])

# 填充缺失值
df.fillna('', inplace=True)

# 转换后的DataFrame可以直接用于写入目标系统

最后,将清洗后的数据通过轻易云平台写入目标系统,如旺店通。这一步通常涉及到调用目标系统的API,并确保数据格式和字段匹配。

通过上述步骤,我们实现了从金蝶云星空获取调拨单数据并进行清洗和转换,为后续的数据集成奠定了基础。在整个过程中,轻易云平台提供了全透明可视化操作界面,使得每个环节都清晰可见,大大提升了业务透明度和效率。 如何开发企业微信API接口

使用轻易云数据集成平台进行ETL转换并写入旺店通·企业奇门API接口

在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL(提取、转换、加载)转换,以便转为目标平台旺店通·企业奇门API接口所能够接收的格式,并最终写入目标平台。以下是详细的技术实现过程。

API接口配置与元数据解析

首先,我们需要配置与旺店通·企业奇门API接口相关的元数据。根据提供的元数据配置,我们可以看到该API接口为wdt.stock.transfer.push,使用POST方法进行数据推送。

{
  "api": "wdt.stock.transfer.push",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "method": "merge",
    "field": "FBillNo",
    "bodyName": "goods_list",
    "bodySum": ["FQty"],
    "header": ["FSrcStockId_FNumber", "FBillNo", "FDestStockId_FNumber"],
    "body": ["FMaterialId_FNumber", "FMaterialId_FBARCODE", "FQty"]
  },
  ...
}

数据请求与清洗

在ETL过程中,首先需要从源系统提取原始数据,并进行必要的数据清洗和预处理。假设我们已经完成了这一步,接下来我们将重点放在数据转换和写入部分。

数据转换

根据元数据配置中的字段映射关系,我们需要将源平台的数据字段映射到目标平台所需的字段格式。例如:

  • FBillNo 映射为 outer_no
  • FSrcStockId_FNumber 映射为 from_warehouse_no
  • FDestStockId_FNumber 映射为 to_warehouse_no
  • FMaterialId_FNumber 映射为 spec_no
  • FQty 映射为 num

此外,还需要处理一些固定值字段,如:

  • 调拨类型 (transfer_type) 固定值为 1
  • 调拨方式 (mode) 固定值为 0
  • 是否审核 (autocheck) 固定值为 1

数据组装

根据上述映射关系和固定值设置,我们可以组装出符合旺店通·企业奇门API接口要求的数据结构。以下是一个示例JSON结构:

{
  "outer_no": "{FBillNo}",
  "from_warehouse_no": "{FSrcStockId_FNumber}",
  "to_warehouse_no": "{FDestStockId_FNumber}",
  "address": "",
  "contact": "",
  "telno": "",
  "transfer_type": "1",
  "mode": "0",
  "autocheck": "1",
  "skus": [
    {
      "remark": "{FNote}",
      "spec_no": "{FMaterialId_FNumber}",
      "from_position_no": "ZANCUN",
      "to_position_no": "ZANCUN",
      "num": "{FQty}"
    }
  ]
}

数据写入

最后一步是将组装好的JSON数据通过POST请求写入到旺店通·企业奇门API接口中。以下是一个示例代码片段,展示如何使用HTTP库进行POST请求:

import requests

url = 'https://api.wangdian.cn/openapi2/wdt.stock.transfer.push'
headers = {'Content-Type': 'application/json'}
data = {
  # 填充上述JSON结构的数据
}

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

if response.status_code == 200:
    print("Data successfully pushed to WDT API")
else:
    print("Failed to push data:", response.text)

通过以上步骤,我们完成了从源平台到目标平台的数据ETL转换,并成功将数据写入旺店通·企业奇门API接口。这一过程确保了不同系统间的数据无缝对接,提高了业务流程的效率和透明度。 钉钉与CRM系统接口开发配置

更多系统对接方案