Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server Int PrimaryKeys的数据仓库GUID_Sql Server_Data Warehouse - Fatal编程技术网

Sql server Int PrimaryKeys的数据仓库GUID

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的

我是一名(非常)初级的分析师,负责建立一个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的人,所以如果有必要的话,我会要求你链接文档,或者至少用谷歌友好的方式描述答案

  • 删除GUID是否是导致可能缩减到90mb的主要原因?处理报告时是否不需要GUID
  • 在创建临时表时,是否剥离关系并将几乎所有的表连接到尽可能少的表中
  • 若数字1和2的答案是“是”,那个么您不需要GUID,只需要有一个int-unique列

    我建议在创建/插入用于将GUID列替换为int unique列的临时表期间,使用select命令。只有在每次运行SSIS脚本时重新创建临时表时,这才有效


    如果在运行SSIS脚本时只是将数据插入到已存在的临时表中,则可以创建一个临时表。将数据插入临时表时,不要插入到自动递增主列,这样该列将自动生成唯一的int值。

    由于要重复地从GUID转换为int(每次加载到dwh),您确实需要将GUID保留在某个位置(不能丢弃它们,将来的数据将引用它们)。我建议将它们保留在作为PK的表中,然后在DWH中使用整数自动递增列(代理键)作为PK。然后,当加载使用GUID作为外键的数据时,执行联接以查找整数代理项,并使用它。最后,在将数据加载到QlikView中时,不要包含guid列。