本文为您介绍 Fabric 数据建模体系,涵盖其完整配置流程、核心功能介绍以及配置流程举例。
模型配置是数据集的基础,数据集中最终有哪些数据取决于模型的构建。Fabric 体系是新版数据集生产的核心,通过逻辑关联与传统的物理关联,支持用户以拖拽式的可视化方式,灵活、高效地构建既能满足传统宽表需求、又能应对多事实表复杂场景的统一数据模型。
类别 | 功能模块 | 功能说明 |
|---|---|---|
配置流程 | 添加表节点 | 将数据源中的表加入模型,作为构建的基础。 |
建立表连接 | 定义不同表节点之间的关系。 | |
选择关联方式 | 确定表之间是逻辑关联(关系)还是物理关联(Join)。 | |
组合表节点 | 将通过物理关联的表合并为一个组合节点,该节点可作为一个整体被操作。 | |
功能介绍 | 自定义SQL表节点 | 将一段SQL查询结果作为数据源,而非整张表。 |
分区筛选配置 | 控制抽取数据集与上游数据源分区的对应关系。 | |
事实表/维表切换 | 声明表在逻辑关联中的角色。 | |
直连/抽取切换 | 改变数据集连接方式。 | |
事实表最近有数规则 | 控制可视化查询时,如何确定事实表的最新有效分区。 | |
维表查询周期配置 | 控制查询时事实表是与维表最新分区还是历史分区进行关联。 | |
表合并(Union) | 将多张表(通常是同构表)合并为一个逻辑节点。 | |
数据筛选 | 在数据同步时对表或组合表的结果进行过滤,减少数据量。 | |
抽取参数配置 | 为特定数据源(如MySQL)的同步任务配置参数。 |
进入「数据准备」-「数据集」页面,点击「新建」-「新建Fabric数据集」,进入新版数据集模型配置页面。
说明
如果将第二个表拖入了上图中建立链接的位置,它会跟第一个表自动关联上,但是后续拖入的表就不会自动关联了,需要手动进行连接。
在画布中添加多个单表节点后,可以按照需求将多个表关联起来,关联的方式也非常简单:鼠标移动到表节点上,它的前后会出现两个圆形的标识,鼠标选中并拖动到另一个表的标识处,即可将两个表关联起来。
点击两个表连接线上的标识,可以调整两个表的连接方式,当前数据集中表的连接方式主要分为两类:
注意
当我们把两个单表节点的关联方式,从**逻辑关联(关系)修改为物理连接(Join)**时,这两个「单表节点」,将会合并为一个「组合单节点」。
注意
当前只有抽取数据集存在组合单节点,直连数据集的节点不支持组合。
「组合单节点」整体可以继续和其他「组合单节点」或「单表节点」之间进行逻辑关联(关系)。
如果「组合单节点」和其他节点直接的关联方式,从逻辑关联(关系)修改成任意其他物理关联(Join)的方式,则这两个节点,会合并在一起成为一个更大的「组合单节点」。
如果想要将某个表从「组合单节点」中拿出来,则将它们的关联方式再修改成「关系」即可。
如果将「组合单节点」中的任意一个表,与一个新拖入画布中的表构建关联,则这个新的表会被自动加入到这个「组合单节点」中,它们之间会自动构建物理关联。
表节点组合的作用:
逻辑关联(关系)和物理关联(Join)可以组合使用,以让我们的数据集模型建设更加灵活**:**
默认情况下,将一个表拖入到模型配置的画布中时,会将这个表对应分区的完整数据进行抽取。
不过有时候,我们会想先对表中的数据进行预处理,之后再作为数据集的数据源,此时可以选择使用数据集的「自定义 SQL 表节点」。
注意
不是所有数据源类型都支持使用自定义 SQL 表节点,如果左侧没有这个选项,代表该数据源不支持,具体可参考数据连接概述。
对于抽取数据集,当数据集模型中,使用了带有分区的数据源表时,点开该表节点,可以在数据筛选处找到「分区筛选」的选项。
由于数据集的数据同步,相当于将表节点的关联的结果生成一个对应的 SQL,之后通过数据同步任务将 SQL 查询结果同步至数据集的数据底表,因此这里的分区筛选配置,将会影响数据集每个分区中会同步数据源表哪个分区的数据。
业务需求 | 分区筛选的填写 |
|---|---|
数据集分区与上游数据源分区一致 | ${DATE}、${date} / ${HOUR} 、${hour} |
数据集分区与上游数据源分区不一致 | ${DATE-n}、${date-n} / ${HOUR-n}、${hour-n} |
多事实表模型是数仓建设中非常常见的数据模型,在 DataWind 中使用关系连接建设多事实表模型相比于传统的 Join 具有非常大的优势,由于关系模型的表之间并不是传统的 Join 连接,因此需要配置这些表是属于事实表还是维表。关于事实表和维表的概念,可以查看文档:Fabric 模型概述。
事实表和维表的切换有两种方式:
说明
「组合单节点」内的「单表节点」之间由于是传统的 Join 方式,因此不存在是否事实表的概念。
点击右上角的更多选项,可在当前模式的箭头中,点击「切换成xx」状态,请注意,在数据集保存之后,不再支持数据抽取与直连之间的切换。
当数据集中使用到了「关系」连接(Fabric 模型)时,数据集各个表节点之间的同步会独立进行,由于不同表的数据产出时间和数据量不同,对应表节点的同步完成时间也会不一样;
因此在某个时间点对数据集查询的时候,不同表节点的最新分区日期可能不同,对于这种场景,可以通过事实表和维表的配置项,来控制对数据集查询时,分区筛选的取值范围。关于各选项的具体影响,可参考事实表最近有数规则与维表查询周期配置。
在数据集的模型配置中,支持对多个表进行合并,形成一个表节点,操作入口在表节点的右上角处,在展开的选项中选择「创建合并关系」。
之后将需要参与合并的表拖入,即可合并两个表,并且该节点名称也会自动修改为 Union 表节点。
当数据集模型配置时,使用了整表节点进行抽取时,支持对表节点配置数据筛选,添加筛选后,数据集在同步数据时,将只会包含经过了筛选的数据。
数据筛选主要分为「单表节点筛选」和「组合单节点筛选」。
单表节点的数据筛选 |
|
|---|---|
组合单节点的数据筛选 |
|
数据筛选的配置方法分为「字段筛选」和「表达式筛选」:
字段筛选 |
|
|---|---|
表达式筛选 |
|
对于部分数据源,DataWind 支持在对数据源抽取时添加抽取参数,以 MySQL 数据源为例,在进行模型配置时,点击表节点,可以在节点的信息中找到抽取参数配置。
配置抽取参数后,数据集将在执行数据同步任务时,将参数添加进任务中。
需求:构建一个只需要物理关联的数据集模型,即各个数据源表之间只需要使用到「Left Join、Inner Join」等关联方式。 | |
|---|---|
第一步:可以先将需要的表都拖入到中间的画布中。 | |
第二步:先将任意两个表关联起来,选择一个物理关联的方式,形成一个组合单节点。 | |
第三步:再将组合单节点中的表和外面其他的表关联起来,组成一个大的组合单节点。 | |
第四步:最后再调整各个表之间的关联字段等内容,即可得到需要的数据集模型。 | |
需求:构建一个只需要逻辑关联的数据集模型,即各个数据源表之间只需要使用到「关系」的关联方式。 | |
|---|---|
第一步:可以先将需要的表都拖入到中间的画布中。 | |
第二步:调整每个表是属于事实表还是维表。 | |
第三步:将各个表按照逻辑关系关联起来。 | |
第四步:最后再分别配置这些表之间的连接字段即可。 | |
需求:构建一个物理关联与逻辑关联交叉使用的模型。 | |
|---|---|
第一步:可以先将需要的表都拖入到中间的画布中。 | |
第二步:先将需要进行物理关联的表连接起来。 | |
第三步:配置每个表是属于事实表还是维表。 | |
第四步:将这些事实表和维表之间再按照需求关联起来。 | |
第五步:最后再配置这些关系连接的连接字段即可。 | |