因为我们计划将数据从Teradata迁移到google (Bigquery)。在Teradata中,我们有一些关键的概念,比如主键和外键,在这个键的帮助下,我们能够定义维度和事实之间的关系。
例如,我有三维表和事实表,如下所示。
D1 D2 D3
F1
借助Teradata中的键或索引,我们可以从事实数据表中获取数据。
当进入Bigquery时,我们没有任何类似键或索引的概念,那么我们将如何定义维度和事实之间的关系
注意:如果没有主键或索引概念,我们将如何消除重复
发布于 2017-07-25 19:25:02
主键、事实和维度是上一代数据仓库需要依赖的概念,以获得性能。
例如,在Teradata中,需要一个主索引键来在节点之间分发数据。这个发行版将是稍后启用快速执行查询的关键--但在BigQuery世界中,不需要这种预先计划好的节点间分发。
事实,维度,星型模式,OLAP立方体也是如此.它们存在的主要原因是为了以后支持更快的查询--通过限制可以查询的内容以及其中的维度。您不需要在BigQuery中担心这个问题。
与其将其划分为正常形式,不如有一个平面表,其中包含BigQuery中的所有维度。任意连接也将是快速的,但是平面表和嵌套数据在这里很容易处理。
现在,您不再受到旧的技术需求的限制-- removing duplicates成为了一种不同的操作类型。
发布于 2019-07-03 05:26:37
当涉及到SCD1和SCD3时,想想如何处理这个扁平的表。
对于这两种情况,您都需要在目标表上运行更新,或者从零开始生成一个新的平面表,而不是仅仅更新维度表。
当前生成的DWH不像旧的DWH那样保持一致性和历史数据。当前生成仍然可以使用平面表的唯一原因是,它们要么考虑不可变的数据,要么不遵循一致性规则。这将在几年后结束,一旦数据增长,基础设施和这些建模方式再次出现,我们将再次回到维度模型。它已经是这样的了,如果您使用PBs的数据,您不会一次又一次地重新加载该数据,因此您尝试将其拆分为增量批,对于任何不可变的(即事实和维度)都是不可变的。
如果您有超过几个TB数据,或者您需要每小时加载DWH,我会一如既往地这样做。如果您低于一个TB的数据,并且只需要在DWH中进行每日更新,那么最简单的可能就是每次都重新加载。
https://stackoverflow.com/questions/45273539
复制相似问题