Sql 事实表可以充当维度表吗?
我在探索过程中,遇到了一个场景,事实表充当维度,但我对解释不太满意,因为我不熟悉维度建模 我的问题是Sql 事实表可以充当维度表吗?,sql,data-modeling,data-warehouse,business-intelligence,Sql,Data Modeling,Data Warehouse,Business Intelligence,我在探索过程中,遇到了一个场景,事实表充当维度,但我对解释不太满意,因为我不熟悉维度建模 我的问题是 事实表可以用作维度表的实例/示例有哪些?(要求提供一些易于理解的示例) 这个设计好吗 我通读了论坛,但对我没什么帮助 原始资料来源: 编辑: 除了上面的链接之外,我还可以询问聚合事实用作维度的场景。Kimball并没有说“事实表用作维度”。他说数值有时可以建模为维度属性(维度表中的字段)或事实(事实表中的字段),或者两者兼而有之 一个典型的例子是产品标价,例如MSRP(制造商建议零售价)。一些设
除了上面的链接之外,我还可以询问聚合事实用作维度的场景。Kimball并没有说“事实表用作维度”。他说数值有时可以建模为维度属性(维度表中的字段)或事实(事实表中的字段),或者两者兼而有之 一个典型的例子是产品标价,例如MSRP(制造商建议零售价)。一些设计师将其建模为事实(因为它是一个数字,即事实表“销售额”)。其他人将其建模为维度属性(即维度表中的“产品”)。Kimball说的是,你可以在同一个模型中同时拥有这两个。MSRP作为维度属性可用于过滤,而MSRP作为事实可用于计算(即,MSRP-销售价格=销售折扣) 子块点包括:
- 如果您将产品价格建模为一个属性,它将使您的维度成为一个“缓慢变化的维度”,因为每次产品列表价格发生变化时,您都需要更改属性,这会给ETL过程增加负担李>
- 如果将产品价格建模为事实,则只有在事实表中有记录时,才会在星型模式中使用它。例如,如果某些产品在特定时期内没有销售,那么系统中就不会有它们的标价,以备您需要李>
在这两个地方都使用它可以给您带来最大的灵活性,简化模型的使用,但会增加ETL工作。所以,如果你需要这样的灵活性,这是一个很好的设计。如果您只计划以一种特定的方式使用该值,则可以节省一些数据仓库工作 Kimball并没有说“事实表起着维度的作用”。他说数值有时可以建模为维度属性(维度表中的字段)或事实(事实表中的字段),或者两者兼而有之 一个典型的例子是产品标价,例如MSRP(制造商建议零售价)。一些设计师将其建模为事实(因为它是一个数字,即事实表“销售额”)。其他人将其建模为维度属性(即维度表中的“产品”)。Kimball说的是,你可以在同一个模型中同时拥有这两个。MSRP作为维度属性可用于过滤,而MSRP作为事实可用于计算(即,MSRP-销售价格=销售折扣) 子块点包括:
- 如果您将产品价格建模为一个属性,它将使您的维度成为一个“缓慢变化的维度”,因为每次产品列表价格发生变化时,您都需要更改属性,这会给ETL过程增加负担李>
- 如果将产品价格建模为事实,则只有在事实表中有记录时,才会在星型模式中使用它。例如,如果某些产品在特定时期内没有销售,那么系统中就不会有它们的标价,以备您需要李>
在这两个地方都使用它可以给您带来最大的灵活性,简化模型的使用,但会增加ETL工作。所以,如果你需要这样的灵活性,这是一个很好的设计。如果您只计划以一种特定的方式使用该值,则可以节省一些数据仓库工作 是的,它可以,有时也应该,这取决于您试图分析的内容和方式 在分析销售机会时,经常会出现一个直接的例子。sales opportunity是维度的直接候选对象,但是如果您从“分析销售渠道”的角度来看它,特别是如果您将opportunity分解为“opportunity Stage”,则SalesOpportunity将用作“sales opportunity Stage”的维度(这里的目标是分析特定销售机会是如何在各个阶段演变的)并且也是一个事实(本场景中的业务问题是“有多少机会”) 这篇文章揭示了这一点:
有趣的是,Microsoft Analysis Services允许您将表建模为维度、事实和“两者”。是的,它可以,有时也应该,这取决于您试图分析的内容和方式 当您分析销售机会时,通常会出现一个直接的例子。销售机会是维度的直接候选对象,但如果您从“分析销售渠道”的角度来看它,尤其是如果您将机会分解为“机会阶段”,SalesOpportunity将用作“Sales Opportunity阶段”的一个维度(此处的目标是分析特定销售机会是如何在各个阶段演变的)以及一个事实(此场景中的业务问题是“有多少机会”) 这篇文章揭示了这一点:
有趣的是,Microsoft Analysis Services使您能够将表建模为维度、事实和“两者”.Kimball文章的哪些方面对您来说没有意义?如果没有一篇完整的文章,这是一个太宽泛的问题,除非您能帮助我们知道您正在努力解决哪些部分。@Rich:我正在寻找一个简单的例子,其中a、b、c维度用于创建f事实,而在x场景中,这些维度将用作维度。没有时间进行完整的分析回答。但Kimball的例子并不是一个充当维度表的事实表。它是一个列,在某些情况下,您可以使用它进行分组筛选(并将其放入维度表中),在某些情况下,还可以用于添加/求和