使用额外的维度表来表示始终存在的维度

时间:2014-05-12 16:30:52

标签: mysql schema

问题的简要说明:我创建了一个包含6个维度表和一个事实表的标准启动模式。我需要在事实表中添加一个额外的维度表或一个额外的列。但是,与星型模式中的其他维度不同,我想要添加的最终维度将始终包含在我对数据库进行的每个查询中。我不知道在哪里设计它。

详细说明:

我正在创建星型模式来表示一些非常具体的Google Analytics查询。在一个这样的模式中,我有以下内容:

事实:PageTrafficFact

尺寸:

  • HostnameDim
  • PagePathDim
  • MediumDim
  • DateDim
  • LandingPagePathDim
  • ExitPagePathDim

我需要在PageTrafficFact表中添加一个列,或者在PageTrafficFact表中添加另一个维度来表示Google Analytics View Profile ID(我称之为GAVPID)。尽管所有其他维度可以互换查询,但99.9%的时间,发布到数据库的所有查询都将特定于单个配置文件GAVPID。

虽然我可以将GAVPID作为维度表,但我也没有预见到需要使用它。在每个查询上进行额外内连接的成本似乎过高。我想到的另一种方法是将GAVPID放在PageTrafficFact表本身上。然后,我可以对我正在寻找的确切GAVPID执行更简单的WHERE选择,而不是内部连接每个查询。

不幸的是,我没有经验来确定哪个最好,而且我在Google上搜索一直很困难,因为我不太确定我应该使用哪些关键字来寻找答案。

非常感谢任何帮助或推荐的资源!

1 个答案:

答案 0 :(得分:0)

如果不需要为新维度生成“零计数”(也就是说,事实表中的数据在该维度中不稀疏,并且不需要“汇总”该维度,则单独维度表并非绝对必要。

如果在事实表中的附加列上添加WHERE子句满足已知和预期的要求,我只需将该列添加到事实表中。