我有一个星型架构仓库(MS SQL Server,通过带有OLAP的MS Report Builder访问),它有很多小维度 - 我的意思是维度是从两列构建的(Id和说明),其中有几百个从事实表中链接起来。星型架构结构 - 对于许多维度
即使没有实际的计数值反对这个返回值(显示nulls),这也提供了将事实中的所有项目都显示出来的选项,但是我不相信这代表了数据以最好的方式 - 我宁愿查看少量的非规格化表,其中描述是事实的一部分,因为这将提供更好的通过SQL与OLAP方法一起查询数据的能力。
这是一个很多的一级维度正常和良好的做法的结构?说实话,我期望显示空白的唯一时间是反对诸如时间或日期维度之类的东西,但是因为这些可以从数据强制转换为图表和表格中的空白,所以它似乎并不重要。
关于这个结构是好还是坏的任何观点 - 我想试着让这个改变,但如果我与最佳实践不协调,我会高兴地改变我的观念。
结构的例子(这只是一个事实表的一部分)
事实表 - (物业)
F_PROPERTY.PROPERTY_ID (Key for table)
F_PROPERTY.CYCLE_FRAME_TYPE_ID
F_PROPERTY.CYCLE_GEARS_NUMBER_ID
F_PROPERTY.CYCLE_GEARS_TYPE_ID
F_PROPERTY.CYCLE_GENDER_ID
F_PROPERTY.CYCLE_MUD_GUARDS_ID
F_PROPERTY.CYCLE_MUD_GUARDS_COLOUR_ID
维度表 -
D_CYCLE_FRAME_TYPES.CYCLE_FRAME_TYPE_ID
D_CYCLE_FRAME_TYPES.CYCLE_FRAME_TYPE_DESC
D_CYCLE_GEAR_TYPES.CYCLE_GEAR_TYPE_ID
D_CYCLE_GEAR_TYPES.CYCLE_GEAR_TYPE_DESC
D_CYCLE_GEAR_TYPES.CYCLE_GEARS_NUMBER_ID
D_CYCLE_GEAR_TYPES.CYCLE_GEARS_NUMBER_DESC
D_CYCLE_GEAR_TYPES.CYCLE_GENDERS_ID
D_CYCLE_GEAR_TYPES.CYCLE_GENDERS_DESC
D_CYCLE_GEAR_TYPES.CYCLE_MUD_GUARDS_ID
D_CYCLE_GEAR_TYPES.CYCLE_MUD_GUARDS_DESC
因此改写本 - 应这些维度真的是事实的单独表格,或者它们会更好地描述事实的一部分?我希望报告快速而简单,并且在字段中没有值的情况下最少丢失记录。
你描述的结构根本不清楚。你能否更好地描述你的模型和你面临的问题? – jazzytomato
如果星型模式带回了太多的空值,那么您应该查看雪花模式,将事实表分为更多事实表格,并将其中的一些维度移至细分事实表格。它会给你1)事实表的维数更少。2)也是尺寸表,它真的很重要:) –
几百个维度听起来像是我的维修噩梦。我会寻找合并它们的合理方法。 –