问题的快速描述:我创建了一个包含6个维表和一个事实表的标准启动模式。我需要向事实表添加一个额外的维度表或另一列。但是,与星型架构中的其他维度不同,我要添加的最终维度是始终包含在我对数据库进行的每个查询中的维度。我不确定在哪里设计。
详细描述:
我正在创建星型模式,以表示一些非常具体的Google Analytics(分析)查询。在一个这样的模式中,我具有以下内容:
事实:PageTrafficFact
尺寸图
主机名
PagePathDim
MediumDim
DateDim
LandingPagePathDim
ExitPagePathDim
我需要在PageTrafficFact表中添加一列,或者添加其他维度来表示PageTrafficFact表中相应数据的Google Analytics(分析)视图配置文件ID(我称之为GAVPID)。尽管所有其他维度都可以99.9%的时间互换查询,但是发给数据库的所有查询将特定于单个概要文件GAVPID。
虽然我可以将GAVPID设置为维度表,但我也没有预见到需要使用它。在每个查询中进行额外的内部联接的成本似乎过高。我想到的另一种方法是将GAVPID放在PageTrafficFact表本身上。然后,除了对每个查询进行内部联接之外,我还可以对要查找的确切GAVPID执行更简单的WHERE选择。
不幸的是,我没有经验来确定哪个最好,而且我在Google上搜索也很困难,因为我不确定应该使用哪些关键字来找到答案。
任何帮助或推荐的资源将不胜感激!
最佳答案
如果不需要为新维度生成“零计数”(也就是说,事实表中的数据在该维度中并不稀疏,并且无需“汇总”该维度,那么单独的维度表就是“严格必要。
如果在事实表的其他列上添加WHERE子句满足已知和预期的要求,则只需将该列添加到事实表即可。
关于mysql - 对始终存在的尺寸使用附加尺寸表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23614269/