一、总线矩阵的核心思想
总线矩阵是 Kimball 维度建模方法论的基石。它不是一个集中式的单一模型,而是一种分步、增量地构建企业数据仓库的方法,确保最终所有数据能无缝集成。
其核心是 “一致性”:
一致性维度:在不同业务过程(如销售、库存、采购)的事实表中,相同的维度(如
日期、产品、客户、门店)必须具有相同的含义和主键。这是集成的关键。一致性事实:如果同一个度量(如“销售额”)出现在不同事实表中,其定义、计算方式和单位必须完全一致。
总线矩阵 是这个架构的设计蓝图:
行:代表业务过程(如“销售订单”、“库存快照”)。
列:代表一致性维度。注:如有需要列可以增加业务过程的粒度、度量等信息。
矩阵中的标记(✓):表示哪个业务过程与哪个维度相关。
二、总线矩阵设计建设步骤
识别业务过程:与业务部门沟通,确定核心的业务事件或活动(如下订单、支付、发货、盘点)。
声明粒度:为每个业务过程确定事实表最细粒度的记录是什么(如“单个订单行项目”、“每日库存快照”)。
识别一致性维度:找出所有业务过程共同需要的维度。这是设计中最关键、最需要跨部门协调的部分。
识别事实/度量:确定每个业务过程需要记录的数值型指标(如数量、金额、成本)。
创建总线矩阵:将以上信息整合到矩阵中,形成企业数据仓库的路线图。
迭代开发:一次开发总线矩阵中的一个(或几个相关的)业务过程,构成一个数据集市。逐步扩展,最终所有数据集市通过一致性维度连接成一个整体。
三、样例:某零售企业的总线矩阵设计与实现
假设我们是一家全国性的零售企业,线下门店和线上商城同时运营。
第1步:识别核心业务过程
我们选择三个核心业务过程:
销售订单:记录客户购买行为。
每日库存快照:记录每天结束时各仓各商品的库存情况。
采购到货:记录商品从供应商到仓库的入库行为。
第2步:声明粒度
销售订单:每个订单行(一个订单可能包含多个商品)。
每日库存:每个仓库的每个商品,每天一条记录。
采购到货:每个采购订单的每个到货行项目。
第3步:设计一致性维度(这是核心!)
我们识别出以下关键一致性维度:
日期维度:所有业务过程的必备维度。包含年、季、月、日、星期、是否节假日等属性。产品维度:所有业务过程的必备维度。包含产品ID、名称、品牌、类别、规格、所属部门等属性。门店维度:销售业务使用。包含门店ID、名称、所在城市、区域、经理、规模等级等属性。仓库维度:库存和采购业务使用。包含仓库ID、名称、类型(中央仓/区域仓)、所在城市等属性。供应商维度:采购业务使用。包含供应商ID、名称、等级、所属地区等属性。客户维度:销售业务使用。包含客户ID、姓名(可脱敏)、会员等级、注册渠道等。
关键点:产品维度 是连接销售、库存、采购的核心纽带。无论是门店卖出的,还是仓库里存的,或是供应商送来的,指的都是同一个产品。
第4步:创建总线矩阵
注:总线矩阵清晰地展示了不同业务过程与维度的关系,是项目规划和沟通的利器。
第5步:详细模型样例
1. 一致性维度表样例 - dim_product(产品维度)
2. 事实表样例 - fact_sales_order(销售订单事实表)
3. 事实表样例 - fact_inventory_daily(每日库存事实表)
四、总结
通过总线矩阵,我们实现了:
可扩展性:可以先做销售主题,再做库存主题,互不干扰,最后自然集成。
数据一致性:所有数据都基于统一的
dim_product,dim_date等维度,确保“单一真相源”。灵活性:业务部门可以根据需要,基于一致性维度,自由组合和分析不同业务过程的数据。
评论