Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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
TSQL-带程序连接的视图_Sql_Sql Server_Sql Server 2008_View_Data Warehouse - Fatal编程技术网

TSQL-带程序连接的视图

TSQL-带程序连接的视图,sql,sql-server,sql-server-2008,view,data-warehouse,Sql,Sql Server,Sql Server 2008,View,Data Warehouse,我需要一些帮助来简化DWH实现 目前我们有一个事实表,它包含17个维度,这些维度是事实中的变量(我没有设计这个)。我们重新处理了整个ETL过程,添加了一个一维id值,它是对一个新雪花的引用,代表17个值的组合。我们称之为“矩阵id”。我们所有的ETL进程现在都在输入这个ID,而不是17个varchar,而且合并性能非常惊人,即使我们还在编写varchar 我们现在希望去掉17个varchar值(停止写入,并从fact中删除列) 我们表格的大致轮廓(省略无用信息): dbo.factPerfor

我需要一些帮助来简化DWH实现

目前我们有一个事实表,它包含17个维度,这些维度是事实中的变量(我没有设计这个)。我们重新处理了整个ETL过程,添加了一个一维id值,它是对一个新雪花的引用,代表17个值的组合。我们称之为“矩阵id”。我们所有的ETL进程现在都在输入这个ID,而不是17个varchar,而且合并性能非常惊人,即使我们还在编写varchar

我们现在希望去掉17个varchar值(停止写入,并从fact中删除列)

我们表格的大致轮廓(省略无用信息):

  • dbo.factPerformance:ifactID、sMarketCode、sListCode、sBatchCode…、iDimMatrixID(FK)
  • dbo.Matrix:iDimMatrixID(PK)、iDimMarketCodeID(FK)、iDimListCodeID(FK)、iDimBatchCodeID(FK).
  • dbo.dimMarketCode:iDimMarketCodeID(主键),sMarketCode
  • dbo.dimListCode:iDimListCodeID(主键),sListCode
  • dbo.dimBatchCode:iDimBatchCodeID(主键),sBatchCode
等等

因此,这个新的
iDimMatrixID
是对17个可能的其他外键的引用。这些值是唯一的。任何维度中都不会有两个具有重复值的条目

现在来看看有趣的部分。。。 由于我们有这么多的进程按照事实表的方式使用事实表,并且是用存在的varchar构建的,所以我们需要一种方法来保持它们的存在——即使它们不是。因此,我们希望重命名该事实,并构建一个视图(使用旧的事实名称),将该事实连接到新维度,以便生成的视图看起来像旧的事实表。。。但这是低效的,因为75%以上的报告不关心这17个值——如果我们的select/where/groupby中没有任何varchar——那么为什么还要麻烦加入维度呢

所以我的问题是。。。我很确定答案是否定的

如果select/where/group by不引用17个字符串中的任何一个,是否有任何可以想象的方法来设计一个足够“智能”的视图,从而省略与dimMatrix的连接以及所有子维度


正如我所说,我很确定这是不可能的,但在我们开始修改我们的报告过程以只动态地加入那些需要的维度之前,我们想确定一下。

不,如果它确实存在,那就不值得了。正如我所怀疑的那样。谢谢你的确认,丹。