Tableau中4张MySQL源表构建Relationship数据模型咨询
Tableau多事实表共用维度表的实现方案
方案1:直接使用Tableau逻辑层关系关联(优先推荐)
Tableau 2020.2及之后版本推出的逻辑层关系模型原生支持单维度表关联多张事实表,完全适配标准星型数据模型结构,不会出现结构混乱的问题,是官方推荐的实现方式:
- 操作步骤:
- 保留
Dim_Partners和两张事实表的原有关联关系不变 - 将
Dim_ThirdParty拖拽到逻辑层画布,分别和Fact_General_Contracts、Fact_Additional_Contracts通过ThirdParty_ID字段建立关系即可 - 该方式不会触发多余的关联计算,查询性能和单独关联完全一致,也不需要提前做任何数据预处理
- 保留
注意:如果两张事实表中存储第三方ID的字段名不一致,建立关系时手动匹配对应字段即可。
方案2:合并事实表后统一关联(适用于两张事实表粒度一致场景)
如果两张合同事实表的统计粒度、业务逻辑同源度高,可以先合并事实表再关联维度,模型结构更简洁:
- 操作步骤:
- 在物理层对
Fact_General_Contracts和Fact_Additional_Contracts执行UNION ALL操作,新增合同类型标识字段区分数据来源 - 合并后的统一事实表分别和
Dim_Partners、Dim_ThirdParty建立关联即可,整个模型仅3张表 - 该方案的优势是后续计算合同类指标时无需跨表匹配,计算字段编写复杂度更低
- 在物理层对
禁用操作说明
- 不要在逻辑层对两张事实表执行Join操作:两张独立事实表Join大概率会产生笛卡尔积,导致数据重复计数、指标计算错误
- 不要将
Dim_ThirdParty和Dim_Partners建立关联:两张维度表没有直接的主外键对应关系,会导致关联逻辑错误,数据过滤、统计结果偏差

内容的提问来源于stack exchange,提问作者TheReddsable
相关产品推荐
相关产品推荐

