You need to enable JavaScript to run this app.
导航
Fabric 模型概述
最近更新时间:2025.08.28 17:11:11首次发布时间:2025.07.30 15:34:25
复制全文
我的收藏
有用
有用
无用
无用

本文为您介绍 Fabric模型体系,解析事实表与维表、多事实表模型、关系模型的概念,并说明新旧版本数据集的差异以及如何在新旧版本数据集之间进行切换。

功能概述

Fabric 模型是一套用于数据组织、关联与分析的数据建模体系,核心围绕事实表与维表的设计多事实表模型的构建关系模型的优化展开,旨在解决传统数据建模中效率低、准确性不足、分析灵活性差等问题,适用于复杂业务场景下的多维数据分析需求。

使用流程

流程

流程名称

流程含义

参考文档

第一步

选择并接入数据源

准备建模所需的原始数据。支持抽取和直连两种方式,涵盖本地文件、流式数据、OLAP 数据、关系型数据库、列式数据库、数据仓库等数据源类型。

数据连接概述

第二步

核心建模步骤

在数据集编辑界面,不再选择传统的 Join 方式,而是通过指定表与表之间的关联字段来配置“关系”。系统在查询时会根据查询字段自动智能选择最优的关联方式。

新版数据集模型配置

第三步

保存 Fabric 模型

完成关系配置后,保存该 Fabric 模型数据集。它现在是一个包含了多表关系和全部数据的统一模型,可作为单一可信数据源使用,进行后续的数据查询和分析。

可选

升级或回退

存量数据集升级:旧版数据集可通过“模型升级”功能转换为新版 Fabric 模型,过程无损且不可逆。
新建数据集回退:新建数据集时,仍可切换回旧版 Join 模式进行创建(一旦使用新版则无法回退)。

Fabric 模型概述

概念介绍

事实表和维表

事实表(Fact Table)和维表(Dimension Table)是常用的术语,用于描述数据模型中的两种不同类型的表格。

  • 事实表:​是用来存储指标数据的表格,它包含了与业务过程相关的事实(Facts)数据。事实是可量化的数值或指标,用于表示业务过程中发生的事件或活动,比如销售数量、收入、成本等。
  • 维表:​是用来存储描述性信息的表格,它包含了与业务过程相关的维度(Dimensions)数据。维度是用于描述和组织数据的属性,比如时间、地点、产品、客户等。

维表和事实表之间通过某些共同的字段建立关联关系,这样可以在查询和分析数据时将维度和指标进行关联,实现多维分析。
实际案例
为了让大家可以更好得理解两种概念,举一个比较通俗易懂的例子。
假设现在我们有一张购物小票:

  • 事实表:「记录」发生了什么事
    小票核心交易信息如下:

    时间:2023-10-01 18:30  
    商品:可乐*2瓶(单价3元)、薯片*1包(单价5元)  
    总金额:11元  
    收银员:张三  
    店铺:A超市朝阳分店
    
    • 事实表就像这张小票的核心记录
      • 买了什么?可乐 2 瓶、薯片 1 包
      • 花了多少钱?11 元
      • 交易时间?2023-10-01 18:30
        事实表的特点包含数字(数量、金额)、可计算(总价=单价×数量)、频繁新增(每笔交易都产生新记录)。
  • 维表:「描述」这件事的背景信息
    购物小票上除了核心交易,还有描述性信息

    可乐的维表:  
    - 分类:饮料  
    - 品牌:可口可乐  
    - 规格:500ml  
    - 保质期:12个月  
    
    店铺的维表:  
    - 地址:朝阳区XX路XX号  
    - 营业时间:8:00-22:00  
    - 店长:李四  
    
    时间的维表:  
    - 季度:2023年Q4  
    - 是否节假日:是(国庆节)  
    - 天气:晴
    
    • 维表就像这些背景说明书:
      • 用文字描述事实的「谁、哪里、何时、为什么」
      • 信息相对固定(比如可乐分类不会每天变)
      • 通过 ID 关联事实表(比如用「商品 ID」关联可乐的详细信息)。
  • 两者的关系:拼图

    • 事实表是拼图碎片:记录具体行为(买了什么、花了多少钱)。
    • 维表是拼图盒子上的图案:告诉你碎片应该拼成什么样子(可乐属于饮料类、店铺在朝阳区)。
    • 事实表与维表进行组合后才能回答复杂问题。

多事实表模型

对于事实表,通常还会进行拆分,并不会把某个业务所有的事实数据都存储在一个大的事实宽表中,而是拆分成多个事实表。
多事实表模型是指一个数据模型中包含多个事实表,每个事实表表示一个不同的分析主题。事实表之间可能共享一些维度表(如时间、客户),但它们通常存储不同粒度或不同主题的度量值。
实际案例
以商场运营情况为例
假设我们正在分析一个商场的运营情况。商场的业务涉及多个主题,例如销售、退货、库存等。每个主题都有自己的数据表(事实表),但它们之间可能共享一些通用信息(维度表)。

  • 事实表:
    • Order(销售记录):记录每笔订单的销售额、销售数量、产品 ID、客户 ID、日期 ID。
    • Return(退货记录):记录每笔退货的退货金额、退货数量、产品 ID、客户 ID、日期 ID。
    • Warehouse(库存记录):记录每个产品每天的库存数量、补货数量、日期 ID。
  • 维度表(共享信息):
    • Products(产品信息):记录产品 ID、产品名称、类别、品牌。
    • Salesman(销售信息):记录销售ID、客户 ID、客户名称、年龄、性别、地区。

在这个例子中:

  • 多事实表模型就是通过 SalesReturnsInventory 这三个事实表来描述不同的业务主题。
  • 它们共享维度表(如 ProductsSalesman ),用于统一维度信息。

关系模型

在提出关系模型之前,我们以往使用普通的 Join 连接也可以实现多事实表模型,但存在诸多问题与限制,由于普通 Join 连接可能存在的数据膨胀和重复计算等问题,数仓建设成本非常高。
DataWind 引入关系模型(Relationships),极大地提升了用户在处理复杂数据模型(尤其是多事实表模型)时的效率和灵活性。相比于之前仅能使用**物理连接(Joins)**的方式,关系模型为用户带来了多方面的提效和收益,包括建模效率、数据准确性、性能优化和多粒度分析能力等。更多关系模型和 Join 的介绍,请参考表节点关联方式说明

方面

之前的 Join 模型

关系模型的改进

建模易用性(ETL)

需深入理解 Join 逻辑,技术门槛高

配置关系简单直观,降低建模门槛

动态查询和聚合

静态连接,固定粒度,难以调整

按需生成查询,支持动态聚合,灵活调整粒度

多事实表支持

粒度冲突,建模复杂,重复连接维度表

天然支持多事实表,简化建模,避免粒度冲突

数据膨胀和重复计算

多对多关系导致数据膨胀,需手动修正

动态按需查询,避免膨胀和重复计算

多粒度和跨主题分析

需手动调整粒度或创建多个数据源

支持多粒度分析,跨主题分析更灵活

新旧版本数据集差异

相比于旧版数据集,新版数据集最大的改动是,表之间的连接方式在原来「Join」连接的基础上,引入了「关系」连接。

旧版数据连接

新版数据连接

Image

Image

传统「Join」连接:选择关联字段 + 选择 Join 方式。
例如 Left Join,在数据集中配置完 Join 逻辑后,数据集中的数据就固定了,此时数据集存储的就是这两个表 Left Join 的结果数据。

「关系」连接:只需要选择关联字段,不需要选择 Join 方式。
通过关系连接的两个表,它们的数据会分别全量导入到数据集中,当用户在查询时,如果同时使用到了两个表中的字段,关系模型会根据它们的字段是作为维度还是指标,来自动选择 Join 方式。

关系连接示例
Image

新旧版本数据集切换

旧版升级到新版

对于存量数据集,可以在数据集的详情页面点击「模型升级」按钮进行升级。

注意

  • 存量数据集可以升级到新版,但升级后将无法再返回旧版;
  • 模型升级前后不会影响数据集的数据,无需重新回溯数据;
  • 部分类型的数据集暂不支持升级,如果发现没有「模型升级」的按钮,则代表该数据集暂不支持升级。

Image

新版回退到旧版

如果希望继续使用旧版数据集链路创建数据集,可以在模型配置的右上角处返回旧版。

注意

  • 只有在新建数据集的时候才可以回退到旧版;
  • 如果已经使用新版链路创建了数据集,则该数据集无法返回旧版。

Image