Sql server Int PrimaryKeys的数据仓库GUID
我是一名(非常)初级的分析师,负责建立一个mssql DWH,它承载来自我们CRM的数据,用于报告目的 当前的CRM在其mssql数据库中为所有键使用UniqueIdentifier,并且一些表有8m+行。在我们的报告软件(Qlikview)中,我可以将GUI交换为INT,并将800mb的数据文件降低到90mb,这非常好,但是如果可能的话,我希望在DWH中执行此逻辑,以使其更快、更干净 我的问题是,在维护到其他表的FK链接时,我不知道如何做到这一点。我曾考虑过维护一个包含guid和相关数字ID的staging表,但这似乎效率低下,并且会造成一个问题,即试图将一些任意数字ID写入目标表的PK列,我确信这是一个糟糕的想法 DWH导入的工作原理如下:我在源db上有USPs,执行由SSIS包执行的选择,SSIS包的输出放在DWH的[Staging]模式上同名的表中。从这里开始,转换由USPs在DWH上执行,也由处理执行顺序和多线程的同一SSIS包执行。我提出的任何实现都需要与该体系结构兼容(在可能异步运行的USPs内完成) 我是一个非常擅长SQL的人,所以如果有必要的话,我会要求你链接文档,或者至少用谷歌友好的方式描述答案Sql server Int PrimaryKeys的数据仓库GUID,sql-server,data-warehouse,Sql Server,Data Warehouse,我是一名(非常)初级的分析师,负责建立一个mssql DWH,它承载来自我们CRM的数据,用于报告目的 当前的CRM在其mssql数据库中为所有键使用UniqueIdentifier,并且一些表有8m+行。在我们的报告软件(Qlikview)中,我可以将GUI交换为INT,并将800mb的数据文件降低到90mb,这非常好,但是如果可能的话,我希望在DWH中执行此逻辑,以使其更快、更干净 我的问题是,在维护到其他表的FK链接时,我不知道如何做到这一点。我曾考虑过维护一个包含guid和相关数字ID的
如果在运行SSIS脚本时只是将数据插入到已存在的临时表中,则可以创建一个临时表。将数据插入临时表时,不要插入到自动递增主列,这样该列将自动生成唯一的int值。由于要重复地从GUID转换为int(每次加载到dwh),您确实需要将GUID保留在某个位置(不能丢弃它们,将来的数据将引用它们)。我建议将它们保留在作为PK的表中,然后在DWH中使用整数自动递增列(代理键)作为PK。然后,当加载使用GUID作为外键的数据时,执行联接以查找整数代理项,并使用它。最后,在将数据加载到QlikView中时,不要包含guid列。