我想我知道域表是什么(它基本上包含其他某些列可以包含的所有可能的值),并且我在Wikipedia中查找了维度表。不幸的是,我很难理解他们那里的描述,因为他们用另一种术语来解释它:“事实表”,被解释为“由业务流程的度量,指标或事实组成” 。”对我来说,这很重言,即not helpful。有人可以用简单的英语解释吗?

最佳答案

精简版:

  • 表示您已从事实表中拉出以缩小事实表的数据。
  • 尺寸表示您已预先汇总的轴,以加快查询速度。


  • 这是英文的长版:

    您从一组事实开始。例如,贵公司为每笔销售都收到的每笔销售,包括日期,产品,价格,地理位置,客户名称-无论您的信息是什么完整组合。您可以将这些事实放在一个巨大的表中。

    原则上,要运行的各种查询实际上是对事实表的一些相当简单的查询。但是,您的事实表非常庞大。您需要使查询更快。

    (1)使其更快的第一个技巧是将数据移出数据,使其更小。因此,您可以将“长文本”的每一列都包含在内,并将其可能的值放入域表中,然后将带有ID的原始列替换为该表。这将使事实表变得更小,如果需要,您仍然可以获取原始数据。由于所有行占用的数据较少,因此查询速度更快。

    如果您的数据集足够小,可以快速查询整个事实表,那就很好了。但是许多公司拥有太多的数据来满足其需求,因此必须变得更聪明。

    (2)使其更快的第二个技巧是预先计算查询。这是执行此操作的一种方法。确定一组尺寸,然后沿着尺寸和尺寸组合进行预计算。

    例如,客户名称是一个维度,某些查询针对每个客户名称,而其他查询针对所有客户。因此,您可以在事实表中添加预先计算的事实,这些事实具有所有客户的预汇总数据,并且客户名称已成为一个维度。

    一个维度的另一个很好的候选者是地理位置。您可以添加汇总记录,这些记录可以按县,州以及所有位置进行汇总。完成客户名称汇总后即可完成此汇总,因此它将自动在给定的邮政编码中包含所有客户的总销售额的记录。

    重复其他任意数量的尺寸。

    现在,当有人提出查询时,很有可能可以重写他们的查询,以利用您预先汇总的维度来仅查看一些预先汇总的事实,而不是所有单独的销售记录。这将大大加快查询速度。

    在实践中,这将使预聚合超出您的实际需求。因此,构建数据仓库的人员会做一些聪明的事情,这使他们可以权衡预先聚集任何人都不会想要的组合的工作量与运行时必须事先计算的组合所需的工作量。

    关于sql - 维度表和域表是一回事吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6192396/

    10-12 23:10