一般来说,当我构建一些 ETL 流程时,我首先将数据导入数据库到我所说的“原始”层 - 这意味着导入的数据不会以任何方式进行转换。它只是数据库从源接收到的任何数据。我使用存储过程进行转换,通常会有一个阶段层,我将转换后的数据合并到其中。转换全部发生在原始层和阶段层之间。
当我创建原始层时,我通常不会向表中添加 IDENTITY 列,因为无论如何表都会被截断。我只保留最后的“prod”层中的数据。
在这个初始原始层中使用 IDENTITY 列是否有意义?我没有将任何数据合并到原始表中,因此我不需要 IDENTITY 列作为主键...但我想知道是否还有其他我不知道的好处。
在这个初始原始层中使用 IDENTITY 列是否有意义?
通常相反的情况是有意义的:不自动生成该字段(任何字段),因为生成的值通常与原始值不匹配,并且您还必须重新调整所有 FK:这样做毫无意义,而且您仍然需要保留原始 ID 的副本,以便轻松地将原始数据与原始数据进行匹配。 顺便说一句,我宁愿在这个原始层(包括 PK 和 FK)上施加尽可能多的约束,即关于原始数据的
假设尽可能多:这通常会驱动几轮初步清理原来的;另外,特别是,放置 FK 需要按正确的顺序导入数据。但是,在我看来,为了确保数据一致性并使后续转换步骤更简单、更切题,这是值得的。