我有一个包含典型的星型架构数据仓库,以及一大堆的代码,做这样的东西(显然大了很多,但这是举例):典型的Kimball星型模式数据仓库 - 模型视图可行吗?以及如何代码生成
SELECT cdim.x
,SUM(fact.y) AS y
,dim.z
FROM fact
INNER JOIN conformed_dim AS cdim
ON cdim.cdim_dim_id = fact.cdim_dim_id
INNER JOIN nonconformed_dim AS dim
ON dim.ncdim_dim_id = fact.ncdim_dim_id
INNER JOIN date_dim AS ddim
ON ddim.date_id = fact.date_id
WHERE fact.date_id = @date_id
GROUP BY cdim.x
,dim.z
我想以期替换它(MODEL_SYSTEM_1
,说的),使之成为:
SELECT m.x
,SUM(m.y) AS y
,m.z
FROM MODEL_SYSTEM_1 AS m
WHERE m.date_id = @date_id
GROUP BY m.x
,m.z
但有一种观点MODEL_SYSTEM_1
必须包含唯一的列名,我还担心与优化,如果我表现继续做吧,因为我担心WH中的所有项目在不同的事实和维度ERE条款得到优化,因为认为要横跨整个明星,意见不能被参数(男孩,那不是很酷!)
所以我的问题是 -
这种方法行得通吗?或者它只是一个抽象,会伤害性能,除了更好的语法之外,不会给我任何东西?
考虑到所有适当的PK和FK都存在,对这些视图进行编码的最佳方式是什么?消除重复的列名称(即使稍后需要手动调整视图)?我是否应该写一些SQL将其从
INFORMATION_SCHEMA
中提取出来,或者有一个很好的示例。
编辑:我已经测试过它,而且性能似乎是相同的,甚至更大的过程 - 甚至在加入多颗,每个使用这些视图。
自动化主要是因为数据仓库中有许多这些星星,设计师已经正确地完成了FK/PK,但是我不想挑选所有的表或者文档。我编写了一个脚本来生成视图(它也会生成表格的缩写),并且它可以很好地从INFORMATION_SCHEMA
自动生成框架,然后可以在提交视图创建之前对其进行调整。
如果有人想要代码,我可以在这里发布它。
我没有跟随这 - 如果我压扁全明星成有效的表索引的不同的方式,什么是三维模型摆在首位的地步? – 2008-09-24 17:55:59
不扁平化,卷起来。如果您要汇总数据,则应考虑实现视图。这会更快。 – ConcernedOfTunbridgeWells 2008-09-24 18:55:21