Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.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 事实表可以充当维度表吗?_Sql_Data Modeling_Data Warehouse_Business Intelligence - Fatal编程技术网

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的例子并不是一个充当维度表的事实表。它是一个列,在某些情况下,您可以使用它进行分组筛选(并将其放入维度表中),在某些情况下,还可以用于添加/求和