我们按照以下结构规划 EDW。
操作系统 --> 暂存区 --> EDW(数据保险库)
根据数据保险库法,需要对业务密钥进行哈希处理。我应该在暂存区还是在 ETL(从暂存区到 EDW)中实现散列。
人们通常如何处理在暂存区添加元数据?
非常感谢
我们按照以下结构规划 EDW。
操作系统 --> 暂存区 --> EDW(数据保险库)
根据数据保险库法,需要对业务密钥进行哈希处理。我应该在暂存区还是在 ETL(从暂存区到 EDW)中实现散列。
人们通常如何处理在暂存区添加元数据?
非常感谢
在暂存中进行散列时,可以准备将数据拆分为Hubs
,Satellites
和Links
. 将数据加载到暂存区时,您只需要计算一次哈希(例如CustomerHashKey
, CustomerHashDiff
, CustomerContractLinkHashKey
)。除了这些哈希值、Sequence
数字、aLoad Date
和 aSource reference
之外,暂存区域中没有其他元数据。这使得在登台时添加的元数据更加清晰。
在下一步中,从暂存区加载到数据仓库中只需SELECT
将源数据放入所需的结构(例如HubCustomer
、SatCustomer
、LinkCustomerContract
)中。由于哈希值已经生成一次,加载时不需要额外的处理。此外,只有一个点会生成散列 - 在暂存过程中。下游的所有其他进程都可以使用它们。
如果您要从暂存到数据仓库中生成散列,您最终可能会多次生成这些散列 ( Hub
, Satellite
(+diff), Link
),这可能成为大数据用例或 CPU 较弱的机器的性能问题。想想HashDiff
卫星上的情况:如果散列发生在暂存区域,则在插入数据仓库时不需要额外的处理(当表中有很多列时,这可能会很快变得昂贵)。
所以如果可能的话,我总是会在暂存区散列。