什么是数据集成平台:万邦数据集成平台的架构与应用实践(附 Python 源码)
“万邦数据集成平台”并非一个通用的 SaaS 产品(如阿里云 DataWorks),而是万邦管理(Wanbang)在其工程造价与工程咨询业务中,为构建“数智万邦”体系而自研的数据中台与集成底座。它本质上是一个“业务+数据”双驱动的行业级集成平台。
本文将基于公开的“数智万邦”架构,为你拆解其设计理念,并用 Python 模拟其核心的数据集成逻辑。
一、 万邦数据集成平台:定义与定位
在万邦的语境中,数据集成平台并非单纯的技术工具,而是其工程咨询智库的数字化核心。
|
维度 |
万邦数据集成平台 |
通用 iPaaS(如数环通) |
|---|---|---|
|
核心目标 |
工程投资管控与造价数据沉淀 |
通用的应用与数据连接 |
|
数据源 |
造价指标库、材料价格库、第三方行业数据库 |
泛化的 SaaS、API、数据库 |
|
架构本质 |
“1+7+N”业务中台架构(1个底座+7系统+N场景) |
纯技术层的微服务集成引擎 |
它的三大核心任务:
-
打通异构系统:连接金蝶、用友、SAP 及自研造价工具,解决“数据孤岛”。
-
构建指标库:自动采集、清洗、汇总项目数据,形成可复用的材料价格库和造价指标库。
-
支撑 AI 决策:为后续的“万邦 AI”中台提供高质量的结构化数据底座。
二、 架构解析:“1+7+N” 与数据流
万邦平台的架构不是传统的 ETL 管道,而是典型的“数据中台”思维。
1. “1+7+N” 架构体系
根据万邦公开的“数智万邦3.0”资料,其架构可分解为:
-
1个底座:一体化综合研发底座(含数据集成引擎、API 网关、身份认证)。
-
7套功能系统:覆盖财务、纪检、造价、项目管理等核心业务域。
-
N个应用场景:基于底座和能力中心,快速组装出如“智能结算审核”、“投资预警”等场景化应用。
2. 数据分层处理逻辑
数据在平台内并非直接流转,而是经过分层治理:
|
层级 |
功能 |
对应技术组件 |
|---|---|---|
|
采集层 |
从业务系统(如 ERP)和外部 API(如建材价格 API)抽取数据 |
定时任务、API 网关、消息队列 |
|
治理层 |
核心 ETL 逻辑:数据清洗、造价规则映射、指标计算 |
规则引擎、计算引擎 |
|
服务层 |
将治理后的数据封装成统一 API(如“查询某地区钢材均价”) |
数据服务总线、API 管理 |
|
应用层 |
业务系统(如造价软件)通过 API 调用数据,而非直连数据库 |
微服务网关 |
这种架构的优势在于:将“数据生产”与“数据消费”解耦。造价工程师在算量时,无需知道数据来自哪个数据库,只需调用“材料价格服务”即可。
三、 核心应用场景:从数据到智库
万邦平台的应用实践极具行业特色,重点解决工程咨询业的痛点:
|
场景 |
传统痛点 |
万邦平台解决方案 |
|---|---|---|
|
材料价格波动 |
人工询价滞后,价格更新慢 |
集成外部建材数据库,自动调差,实时更新价格库 |
|
造价指标沉淀 |
项目经验沉淀在个人 Excel 中,无法复用 |
项目完工后自动抽取关键指标(如单方造价),存入指标库 |
|
AI 辅助审核 |
依赖专家经验,效率瓶颈 |
基于历史案例库和指标库,训练 AI 模型进行异常检测 |
例如,在“材料调差”场景中,平台会:
-
抽取:从“我的钢铁网”等第三方 API 拉取最新的钢材价格。
-
转换:根据项目所在地、时间点进行价格修正(清洗)。
-
加载:更新中心化的材料价格库。
-
服务:造价人员在软件中输入规格,自动获取最新价格,无需手动查找。
四、 Python 实战:模拟“造价指标 ETL”流程
虽然万邦平台是复杂的分布式系统,但其底层的数据处理逻辑(ETL)是相通的。下面我们用 Python 模拟一个“项目造价指标抽取与计算”的简化流程。
场景:从多个 Excel 项目报表中抽取数据,计算单方造价指标,并存入指标库(模拟数据库)。
import pandas as pd
import numpy as np
import sqlite3
from datetime import datetime
# 封装好API供应商demo url=https://console.open.onebound.cn/console/?i=Lex
class WanbangDataIntegration:
"""模拟万邦数据集成平台的造价指标 ETL 流程"""
def extract(self, file_paths):
"""抽取(Extract):从多个 Excel 项目文件读取原始数据"""
print("📥 正在抽取项目造价数据...")
df_list = []
for path in file_paths:
# 模拟读取不同格式的 Excel(实际中可能来自不同项目组)
df = pd.read_excel(path)
df['source_file'] = path # 标记数据来源
df_list.append(df)
return pd.concat(df_list, ignore_index=True)
def transform(self, df):
"""转换(Transform):核心的造价数据清洗与指标计算"""
print("🔄 正在清洗数据并计算指标...")
# 1. 数据清洗:过滤无效数据(金额为负或为空)
df = df[(df['project_area'] > 0) & (df['total_cost'] > 0)]
# 2. 字段标准化:统一日期格式(万邦平台的核心治理逻辑)
df['project_date'] = pd.to_datetime(df['project_date']).dt.strftime('%Y-%m-%d')
# 3. 核心指标计算:单方造价 = 总造价 / 建筑面积
df['cost_per_square'] = df['total_cost'] / df['project_area']
# 4. 数据分级:根据单方造价打标签(业务规则)
conditions = [
df['cost_per_square'] < 2000,
df['cost_per_square'] < 5000,
df['cost_per_square'] >= 5000
]
choices = ['低档', '中档', '高档']
df['cost_level'] = np.select(conditions, choices, default='未知')
# 只保留需要的指标字段(维度建模)
return df[['project_name', 'project_date', 'project_area', 'total_cost',
'cost_per_square', 'cost_level', 'source_file']]
def load(self, df, table_name='project_cost_index'):
"""加载(Load):将治理后的指标数据存入‘指标库’"""
print("💾 正在加载数据至指标库...")
# 模拟连接数据库(万邦实际使用数据仓库或 MySQL)
conn = sqlite3.connect('wanbang_index.db')
# 将 DataFrame 写入数据库
df.to_sql(table_name, conn, if_exists='replace', index=False)
# 模拟“数据服务”:查询并展示入库结果
result = pd.read_sql(f"SELECT * FROM {table_name} LIMIT 5", conn)
print(f"✅ 指标数据入库成功!共 {len(df)} 条记录。")
print("📊 最新指标预览:")
print(result)
conn.close()
def run_pipeline(self, files):
"""运行完整的造价指标 ETL 管道"""
df_raw = self.extract(files)
df_clean = self.transform(df_raw)
self.load(df_clean)
if __name__ == "__main__":
# 模拟多个项目部的造价报表(实际中可能是 ERP 导出的 Excel)
mock_files = ['project_A.xlsx', 'project_B.xlsx']
# 创建模拟数据文件(仅用于演示,实际中直接读取现有文件)
sample_data = {
'project_name': ['住宅楼A', '商业楼B', '厂房C'],
'project_date': ['2025-05-01', '2025-05-10', '2025-05-15'],
'project_area': [10000, 15000, 8000],
'total_cost': [35000000, 90000000, 12000000] # 总造价(元)
}
pd.DataFrame(sample_data).to_excel('project_A.xlsx', index=False)
pd.DataFrame(sample_data).to_excel('project_B.xlsx', index=False)
# 运行 ETL
etl = WanbangDataIntegration()
etl.run_pipeline(mock_files)
代码解读与运行结果:
这段代码模拟了万邦平台“造价指标库”的构建过程:
-
Extract:从多个项目 Excel 中抽取杂乱数据(模拟不同项目部的报表)。
-
Transform:
-
清洗:过滤掉面积或造价为负的无效数据。
-
计算:生成核心业务指标——单方造价(这是造价咨询的核心指标)。
-
打标:根据造价水平进行业务分级(低/中/高档)。
-
-
Load:将标准化后的指标存入数据库(模拟万邦的指标库)。
运行结果示例:
📥 正在抽取项目造价数据...
🔄 正在清洗数据并计算指标...
💾 正在加载数据至指标库...
✅ 指标数据入库成功!共 6 条记录。
📊 最新指标预览:
project_name project_date project_area total_cost cost_per_square cost_level source_file
0 住宅楼A 2025-05-01 10000 35000000 3500.0 中档 project_A.xlsx
1 商业楼B 2025-05-10 15000 90000000 6000.0 高档 project_A.xlsx
五、 万邦平台 vs 通用 iPaaS:差异总结
|
维度 |
万邦数据集成平台 |
通用 iPaaS(如数环通) |
|---|---|---|
|
驱动力 |
业务驱动(造价指标、材料价格) |
技术驱动(API 连接、消息流转) |
|
核心资产 |
造价指标库、材料价格库 |
连接器生态、API 目录 |
|
技术栈 |
ETL + 数据中台 + 行业规则引擎 |
微服务 + API 网关 + 低代码流程 |
|
适用对象 |
工程咨询、造价管理、建筑企业 |
全行业(电商、零售、制造等) |
💡 总结
万邦数据集成平台展示了行业垂直型数据平台的典型范式:它不是追求大而全的连接,而是围绕“工程投资管控”这一核心业务,构建从数据采集、指标计算到 AI 服务的完整闭环。
互动话题:
你所在的企业是否也在构建类似的行业垂直数据平台?是更偏向通用连接(如数环通),还是更偏向业务指标沉淀(如万邦)?评论区聊聊你的架构选择!
更多推荐


所有评论(0)