着陆区与临时表

时间:2016-04-04 22:03:27

标签: data-warehouse

我正在SQL Server中构建一个小DWH。我们有6个源表,我们必须根据给定的逻辑将它们组合成一个BASE表。

我的问题是 - 我应该从创建6个LZ表(对应于6个源表中的每一个)开始,以便将数据置于系统上。其次,将这6个LZ表合并为1个Staging表,最后将数据从Staging表移动到Base表中?

我的第一个想法是创建6个临时表(而不是LZ表),然后将这6个表组合成基表。但是,根据我的理解,我决定反对它 - LZ表的结构应该与源表匹配,并且Staging表的结构应该反映基表?

在这种情况下应该采用哪种替代方案?什么是专业人士和缺点? 请分享你的想法。

由于

3 个答案:

答案 0 :(得分:2)

老实说,我没有看到这个问题的单一答案。这实际上取决于各种因素 - 提取频率,源系统可用性,转换的复杂性,数据沿袭要求等。

我将从为每个源系统表/实体创建一个临时表开始。如果您正在使用ETL工具执行ETL过程,那么大多数ETL工具都非常擅长于简单到复杂的转换"即时#34; (在记忆中)。我已广泛使用SSIS,它在大多数转换方面都相当不错。

如果您的转换具有非常复杂的业务规则,您有时可能会在暂存区域中结束其他一些表。在转换之前,期间和之后可以看到数据的意义上,它有助于调试。但正如我所说,这实际上取决于所需的数据和转换。

这确实是一个广泛的问题,很难在几个段落中回答,但我希望它可以帮助您开始使用ETL过程!

答案 1 :(得分:1)

为了登陆源表,我建议你为每个源表创建单独的表。 应该不依赖于源表.LANDED表可以帮助您创建暂存区域。

答案 2 :(得分:0)

根据我使用LZ表或datadump区域的经验,这是一个好主意。

首先,它提供了一对一的映射,只需要进行最小的转换,即添加文件名属性。

其次,如果流程失败,在实现另一个里程碑之前,着陆区表允许重新启动流程而无需访问数据源,此时可能会或可能无法访问该数据源。

您还可以归档来自LZ表的数据,如果您只是在管道中进一步获取数据的子集,如果突然管道需要添加另一个属性并且需要历史值,那么可能会为您节省大量工作属性在原始文件上。

希望有所帮助