构建数据仓库时,我通常会看到两种主要的ETL过程方法:
1。查看 - 观点视图 - 观点视图 - ......
方法一显然在数据库中,并且具有以下优势:您没有那么多冗余数据,但可能会导致性能问题。
2。阶段表(数据副本) - 清除表(数据副本) - dwh表(数据副本) - ...
方法二可以使用许多工具作为存储过程和作业或像SSIS这样的ETL工具。 这里的优点是很容易理解这个过程,因为你可以非常好地想象它。您通常还具有非常好的整体ETL性能和许多预定义任务等。 例如,问题可能是由于必须更改持久表,因此更改过程会更复杂。
在现实世界中,您通常会看到两者的混合,特别是当许多人参与过程时。 当然,这也取决于具体情况(表的大小,该公司设计的类似流程如何,ETL流程有多复杂,......)。
我个人更喜欢复制表,保持ETL过程简单,如果可能的话,在ETL工具(在我的情况下通常是SSIS)中做所有为此目的而设计的。
但最佳做法是什么?为什么?
答案 0 :(得分:0)
观看视图的视图不会随DWH中的数据量而缩放。当谈到dwh时,我的意思是我们正在讨论大量数据。来自多个来源的数据集成是dwh的常见用例。 Stage-> tranform - > fact / dim是构建dwh以存储数据的最常用方式之一。是的,当我们谈论hdfs和其他技术时,这会有所改变,但是视图无法在dwh中提供所需的性能。 我见过很多系统,所有这些系统都有一个多步骤过程,你首先从源中获取数据到dwh,然后通过ETL /其他模式清理/处理/整合/转换这些数据到你的维度/其他模型。
答案 1 :(得分:0)
如果您想了解时间点参考数据关系,在维度DW中实现为类型2或类型3缓慢变化的维度,您可能无法在源系统中找到它。
garpitmzn提到的规模问题不仅涉及数据量,还涉及重组和非规范化数据以进行维度分析所需的连接。使用视图(除非实现)您将为每个查询重复可能的复杂连接。最好在加载尺寸时进行一次。