本文为您介绍 Fabric模型体系,解析事实表与维表、多事实表模型、关系模型的概念,并说明新旧版本数据集的差异以及如何在新旧版本数据集之间进行切换。
Fabric 模型是一套用于数据组织、关联与分析的数据建模体系,核心围绕事实表与维表的设计、多事实表模型的构建及关系模型的优化展开,旨在解决传统数据建模中效率低、准确性不足、分析灵活性差等问题,适用于复杂业务场景下的多维数据分析需求。
流程 | 流程名称 | 流程含义 | 参考文档 |
|---|---|---|---|
第一步 | 选择并接入数据源 | 准备建模所需的原始数据。支持抽取和直连两种方式,涵盖本地文件、流式数据、OLAP 数据、关系型数据库、列式数据库、数据仓库等数据源类型。 | |
第二步 | 核心建模步骤 | 在数据集编辑界面,不再选择传统的 Join 方式,而是通过指定表与表之间的关联字段来配置“关系”。系统在查询时会根据查询字段自动智能选择最优的关联方式。 | |
第三步 | 保存 Fabric 模型 | 完成关系配置后,保存该 Fabric 模型数据集。它现在是一个包含了多表关系和全部数据的统一模型,可作为单一可信数据源使用,进行后续的数据查询和分析。 | |
可选 | 升级或回退 | 存量数据集升级:旧版数据集可通过“模型升级”功能转换为新版 Fabric 模型,过程无损且不可逆。 |
事实表(Fact Table)和维表(Dimension Table)是常用的术语,用于描述数据模型中的两种不同类型的表格。
维表和事实表之间通过某些共同的字段建立关联关系,这样可以在查询和分析数据时将维度和指标进行关联,实现多维分析。
实际案例:
为了让大家可以更好得理解两种概念,举一个比较通俗易懂的例子。
假设现在我们有一张购物小票:
事实表:「记录」发生了什么事
小票核心交易信息如下:
时间:2023-10-01 18:30 商品:可乐*2瓶(单价3元)、薯片*1包(单价5元) 总金额:11元 收银员:张三 店铺:A超市朝阳分店
维表:「描述」这件事的背景信息
购物小票上除了核心交易,还有描述性信息:
可乐的维表: - 分类:饮料 - 品牌:可口可乐 - 规格:500ml - 保质期:12个月 店铺的维表: - 地址:朝阳区XX路XX号 - 营业时间:8:00-22:00 - 店长:李四 时间的维表: - 季度:2023年Q4 - 是否节假日:是(国庆节) - 天气:晴
两者的关系:拼图
对于事实表,通常还会进行拆分,并不会把某个业务所有的事实数据都存储在一个大的事实宽表中,而是拆分成多个事实表。
多事实表模型是指一个数据模型中包含多个事实表,每个事实表表示一个不同的分析主题。事实表之间可能共享一些维度表(如时间、客户),但它们通常存储不同粒度或不同主题的度量值。
实际案例:
以商场运营情况为例:
假设我们正在分析一个商场的运营情况。商场的业务涉及多个主题,例如销售、退货、库存等。每个主题都有自己的数据表(事实表),但它们之间可能共享一些通用信息(维度表)。
Order(销售记录):记录每笔订单的销售额、销售数量、产品 ID、客户 ID、日期 ID。Return(退货记录):记录每笔退货的退货金额、退货数量、产品 ID、客户 ID、日期 ID。Warehouse(库存记录):记录每个产品每天的库存数量、补货数量、日期 ID。Products(产品信息):记录产品 ID、产品名称、类别、品牌。Salesman(销售信息):记录销售ID、客户 ID、客户名称、年龄、性别、地区。在这个例子中:
Sales、Returns 和 Inventory 这三个事实表来描述不同的业务主题。Products、Salesman ),用于统一维度信息。在提出关系模型之前,我们以往使用普通的 Join 连接也可以实现多事实表模型,但存在诸多问题与限制,由于普通 Join 连接可能存在的数据膨胀和重复计算等问题,数仓建设成本非常高。
DataWind 引入关系模型(Relationships),极大地提升了用户在处理复杂数据模型(尤其是多事实表模型)时的效率和灵活性。相比于之前仅能使用**物理连接(Joins)**的方式,关系模型为用户带来了多方面的提效和收益,包括建模效率、数据准确性、性能优化和多粒度分析能力等。更多关系模型和 Join 的介绍,请参考表节点关联方式说明。
方面 | 之前的 Join 模型 | 关系模型的改进 |
|---|---|---|
建模易用性(ETL) | 需深入理解 Join 逻辑,技术门槛高 | 配置关系简单直观,降低建模门槛 |
动态查询和聚合 | 静态连接,固定粒度,难以调整 | 按需生成查询,支持动态聚合,灵活调整粒度 |
多事实表支持 | 粒度冲突,建模复杂,重复连接维度表 | 天然支持多事实表,简化建模,避免粒度冲突 |
数据膨胀和重复计算 | 多对多关系导致数据膨胀,需手动修正 | 动态按需查询,避免膨胀和重复计算 |
多粒度和跨主题分析 | 需手动调整粒度或创建多个数据源 | 支持多粒度分析,跨主题分析更灵活 |
相比于旧版数据集,新版数据集最大的改动是,表之间的连接方式在原来「Join」连接的基础上,引入了「关系」连接。
旧版数据连接 | 新版数据连接 |
|---|---|
传统「Join」连接:选择关联字段 + 选择 Join 方式。 | 「关系」连接:只需要选择关联字段,不需要选择 Join 方式。 |
关系连接示例:
对于存量数据集,可以在数据集的详情页面点击「模型升级」按钮进行升级。
注意
如果希望继续使用旧版数据集链路创建数据集,可以在模型配置的右上角处返回旧版。
注意