×

什么是数据集成平台:万邦数据集成平台的架构与应用实践(附 Python 源码)

万邦科技Lex 万邦科技Lex 发表于2026-05-15 09:27:19 浏览21 评论0

抢沙发发表评论

“万邦数据集成平台”并非一个通用的 SaaS 产品(如阿里云 DataWorks),而是万邦管理(Wanbang)在其工程造价与工程咨询业务中,为构建“数智万邦”体系而自研的数据中台与集成底座。它本质上是一个“业务+数据”双驱动的行业级集成平台
本文将基于公开的“数智万邦”架构,为你拆解其设计理念,并用 Python 模拟其核心的数据集成逻辑。

一、 万邦数据集成平台:定义与定位

在万邦的语境中,数据集成平台并非单纯的技术工具,而是其工程咨询智库的数字化核心。
维度
万邦数据集成平台
通用 iPaaS(如数环通)
核心目标
工程投资管控与造价数据沉淀
通用的应用与数据连接
数据源
造价指标库、材料价格库、第三方行业数据库
泛化的 SaaS、API、数据库
架构本质
“1+7+N”业务中台架构(1个底座+7系统+N场景)
纯技术层的微服务集成引擎
它的三大核心任务
  1. 打通异构系统:连接金蝶、用友、SAP 及自研造价工具,解决“数据孤岛”。

  2. 构建指标库:自动采集、清洗、汇总项目数据,形成可复用的材料价格库造价指标库

  3. 支撑 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 模型进行异常检测
例如,在“材料调差”场景中,平台会:
  1. 抽取:从“我的钢铁网”等第三方 API 拉取最新的钢材价格。

  2. 转换:根据项目所在地、时间点进行价格修正(清洗)。

  3. 加载:更新中心化的材料价格库。

  4. 服务:造价人员在软件中输入规格,自动获取最新价格,无需手动查找。


四、 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)
    # 封装好API供应商demo url=https://console.open.onebound.cn/console/?i=Lex
    # 运行 ETL
    etl = WanbangDataIntegration()
    etl.run_pipeline(mock_files)
代码解读与运行结果
这段代码模拟了万邦平台“造价指标库”的构建过程:
  1. Extract:从多个项目 Excel 中抽取杂乱数据(模拟不同项目部的报表)。

  2. Transform

    • 清洗:过滤掉面积或造价为负的无效数据。

    • 计算:生成核心业务指标——单方造价(这是造价咨询的核心指标)。

    • 打标:根据造价水平进行业务分级(低/中/高档)。

  3. 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 服务的完整闭环。
互动话题
你所在的企业是否也在构建类似的行业垂直数据平台?是更偏向通用连接(如数环通),还是更偏向业务指标沉淀(如万邦)?评论区聊聊你的架构选择!


群贤毕至

访客