我应该在暂存区还是在 ETL 中从暂存区添加到 DWH?
Posted
技术标签:
【中文标题】我应该在暂存区还是在 ETL 中从暂存区添加到 DWH?【英文标题】:Should I add hashkey in staging area or in ETL from staging area to DWH? 【发布时间】:2016-03-09 16:39:14 【问题描述】:我们按照以下结构规划 EDW。
操作系统 --> 暂存区 --> EDW(数据保险库)
根据数据保险库法,需要对业务密钥进行哈希处理。我应该在暂存区还是在 ETL(从暂存区到 EDW)中实现散列。
人们通常如何处理在暂存区添加元数据?
非常感谢
【问题讨论】:
【参考方案1】:在暂存中散列时,可以准备将数据拆分为Hubs
、Satellites
和Links
。将数据加载到暂存区时,您只需要计算散列一次(例如CustomerHashKey
、CustomerHashDiff
、CustomerContractLinkHashKey
)。除了这些哈希值、Sequence
数字、Load Date
和 Source reference
之外,暂存区域中没有额外的元数据。这使得在暂存时添加的元数据更加清晰。
如果您要从暂存到数据仓库中生成散列,您最终可能会多次生成这些散列(Hub
、Satellite
(+diff)、Link
),这可能会成为 Big 的性能问题数据用例或 CPU 较弱的机器。想想卫星上的HashDiff
:如果散列发生在暂存区域,则在插入数据仓库时不需要额外的处理(当表中有很多列时,这可能会很快变得昂贵)。
所以如果可能的话,我总是会在暂存区散列。
【讨论】:
以上是关于我应该在暂存区还是在 ETL 中从暂存区添加到 DWH?的主要内容,如果未能解决你的问题,请参考以下文章