我正在使用 BigQuery 处理数据仓库项目。我们正在加载从各种大型机系统导出的每日文件。大多数表都有唯一的键,我们可以使用它来创建类型 2 历史记录,但有些表,例如分类帐/头寸表,可以有重复的行。这些文件包含每天从源系统中提取的完整数据。
我们目前能够在不知道主键的情况下为大多数表维护类型 2 历史记录,只要加载中的所有行都是唯一的,但是对于不是这种情况的表,我们会遇到挑战。
项目中的一个人建议,处理的方式是“比较重复”,意思是如果DWH表有5个相同的行,而staging表有6个相同的行,那么我们就再插入一个,如果是反过来,我们只需关闭 DWH 表中的一条记录(通过将结束日期设置为现在)。这可以通过向数据集添加额外的“子行”键来实现,如下所示:
Row_number() over(partition by “all data columns” order by SystemTime) as data_row_nr
我试图找出这是否是好的做法,但没有任何运气。我觉得这件事有些不对劲,我看不出这样做会产生什么不可预见的后果。
任何人都可以告诉我在每天处理大量分类账数据时最好的方法是什么,我们希望在 DWH 中维护某种历史记录?