3

我在很多面试中一次又一次地被问到同样的问题。问题是你将如何测试每天加载到他们数据库中的增量数据。我的职位是数据仓库 QA 和 BA。测试的主要目的是检查是否我们拥有来自源的所有数据,然后测试从源复制的所有数据是否按照开发人员的设计放置在相应的表中。

所以每次有人问这个问题时,我都会这样回答:为了测试增量数据,我们从暂存表中获取数据,这些数据将包含每日增量文件的数据。所以现在我可以将暂存表与目标数据库进行比较。就像那里的所有数据库一样可能是我们根据设计进行的一些计算或连接,以获取从登台到生产的数据,因此我将使用该设计进行查询,以针对源测试生产中的数据。

所以我的问题是我在唯一的项目中以这种方式测试了增量负载,所以任何人都可以给我详细的答案,因为我认为我可能没有正确回答。

4

2 回答 2

2

在任何数据仓库环境中,增量负载都是不可避免的。以下是呈现增量数据并对其进行测试的方法。

1) 源和目标表的设计方式应该是存储数据(行)的日期和时间戳。根据日期和时间戳列,您可以轻松获取增量数据。

2) 如果您使用复杂的 ETL 工具,如 informatica 或 Abinitio,那么按时间顺序查看负载状态很简单。这些工具存储每个负载的信息。但是,存储最后 10 个负载有一些限制。您需要将其配置为存储超过 10 个负载。

3) 如果您没有使用复杂的 ETL 工具,那么您应该构建 ETL 策略来存储加载统计信息并在加载期间捕获信息(如插入、删除、更新等)。您可以随时检索这些信息。但它需要大量的技术知识才能采用。

如果您想在数据仓库面试中取得成功,我建议您使用由美国公司创建的最佳 iOS 应用程序 ( data-iq ) 及其适合像您这样的候选人。检查出来,你可能会喜欢它。祝你面试顺利。

于 2013-01-12T03:50:57.117 回答
2

我将通过讲述测试增量数据与历史数据的不同来回答这个问题。

  1. 我只需要测试增量数据。因此,我通过使用源/暂存表中的日期条件以及用于目标表中的增量负载的相同日期条件或审核 ID 来限制它。

  2. 在测试增量数据时我们需要检查的另一件事是 - 通常在类型 2 表中,我们有一个类似的条件

如果目标表中已经存在一条记录,并且与目标表中的最后一条记录相比没有变化,则不要插入该记录。

因此,为了处理这种情况,我需要进行历史检查,将目标表的最后一条记录与增量数据的第一条记录进行比较,如果它们完全相同,那么我需要删除该记录。(此处 ACTIVITY_DT 是自定义元数据列,因此我们将仅在 EMPID、NAME、CITY 中查找更改)

例如 - 以下是我的目标表中的记录作为历史加载的一部分 - 在此处输入图像描述

这些是我在增量数据中得到的记录

在此处输入图像描述

所以在上述场景中,我将历史数据的最后一条记录(按 ACTIVITY_DT DESC 排序)与增量数据的第一个记录(按 ACTIVITY_DT ASC 排序)进行比较。数据列没有变化,所以我需要删除以下记录,因为它不应该插入到目标表中

1 Aashish HYD 2014 年 6 月 25 日

因此,作为这种增量加载的一部分,只插入了两条记录,如下所示 -

1 阿什什果阿 2014 年 6 月 26 日

1 Aashish BLR 2014 年 6 月 27 日

于 2014-06-25T08:56:30.490 回答