在构建数据仓库时,我通常看到ETL过程的两种主要方法:
1.视图-.
方法一显然在数据库中,它的优点是您没有那么多冗余数据,但可能会导致性能问题。
2.阶段表(数据副本)-清除表(数据副本)- dwh表(数据副本)-.
第二种方法可以通过存储过程和作业等许多工具或者像SSIS这样的ETL工具来完成。这里的优点是很容易理解这个过程,因为你可以很好地想象它。您通常也有一个非常好的整体ETL-性能和许多预定义的任务等。一个问题可能是,一个过程的改变是更复杂的,因为持久化的表必须改变。
在现实世界中,你通常会看到两者兼而有之,特别是当很多人都在这个过程中工作的时候。当然,它也取决于情况(表的大小,该公司如何设计类似的流程,ETL-流程有多复杂,.)。
我个人更喜欢复制表格,保持ETL进程的简单,如果可能的话,在ETL工具中做所有的事情(在我的例子中通常是SSIS ),这是为此目的而设计的。
但是什么是最佳实践,为什么呢?
发布于 2015-05-30 19:00:15
视图视图不会随着DWH中数据量的增加而缩放。当涉及到dwh时,我的意思是说,我们谈论的是海量的数据。多源数据的集成是dwh的一种常用用法。Stage->tranform->事实/dim是构建dwh存储数据的最常见方式之一。是的,当我们谈到hdfs和其他技术时,这种情况会有所改变,但是视图将无法在dwh中提供所需的性能。我已经看到了许多系统,它们都有一个多步骤的etl过程,您首先从源获取数据到dwh,然后通过ETL/其他模型清理/处理/符合/转换这些数据到您的维度/其他模型。
发布于 2015-05-31 09:41:25
如果您想要了解在维度DW中实现为类型-2或类型-3的实时引用数据关系,您可能不会在源系统中找到这种关系。
garpitmzn提到的尺度问题不仅涉及到数据量,而且还涉及到数据重组和降维分析所需的联接。使用视图(除非物化),您将对每个查询重复潜在的复杂联接。最好在加载维度时只做一次。
https://stackoverflow.com/questions/30549529
复制相似问题