我们计划将数据从Teradata迁移到google云(Bigquery)。 在Teradata中,我们拥有主要和外国等关键概念,借助这些键,我们可以定义维度和事实之间的关系。
比方说,我有3个维度表和一个事实表,如下所示。
D1 D2 D3
F1
借助Teradata中的键或索引,我们可以从事实表中获取数据。
当来到Bigquery时,我们没有像键或索引那样的概念,那么我们将如何进行 定义维度与事实之间的关系
注意:如果没有主键或索引概念,我们将如何消除重复
答案 0 :(得分:6)
主键,事实和维度是上一代数据仓库为了提高性能而需要依赖的概念。
例如,在Teradata中,需要一个主索引键来在节点之间分配数据。此分发对于以后实现快速执行查询至关重要 - 但在BigQuery世界中,不需要在节点之间进行此类预先计划的分发。
与事实,维度,星型模式,OLAP多维数据集相同......它们存在的主要原因是通过限制可以查询的内容以及在哪些维度中实现更快的查询。你不必为BigQuery担心这个问题。
不是将其划分为正常形式,而是在BigQuery中包含所有维度的平面表是有意义的。任意JOIN也会很快 - 但平面表和嵌套数据在这里很容易处理。
既然您不受旧技术需求的限制 - removing duplicates会成为不同类型的操作。
答案 1 :(得分:0)
想一想在SCD1和SCD3上如何处理该平板。
对于这两种方法,您都需要在目标平面表上运行更新或从头开始生成新的平面表,而不仅仅是更新尺寸表。
当前的DWH不能像以前的DWH那样保持一致性和历史数据。当前一代仍然可以做平面表的唯一原因是因为它们要么考虑不可变数据,要么不遵循一致性规则。一旦数据增长了基础架构和这些建模方式,这将在几年后结束,我们将再次回到维度模型。就像已经处理了PB的数据一样,您不必一遍又一遍地重新加载数据,因此会尝试将其拆分为增量批处理,将不可变的事实和维度分割为不可变的。
如果您有多个TB数据或需要每小时加载DWH,我将始终希望。如果您的数据不足1 TB,并且仅需要在DWH中进行每日更新,那么最简单的方法就是每次都重新加载。