此度量是数据仓库多维数据集中可能的正确选择吗?

时间:2016-05-28 09:26:46

标签: data-warehouse cube

我有这个简单的数据仓库架构:

Flight (ID, pilot, aircraft, airport)
Pilot (ID, name, surname, flight hours)
Aircraft (ID, model)
Airport (ID, name, city)
  • Flight.pilot引用Pilot.ID
  • Flight.aircraft引用Aircraft.ID
  • Flight.airport引用Airport.ID

飞行将是我的事实表。

然后我将有三个维度

  1. 领航(涉及试点表)
  2. 车辆(涉及飞机表)
  3. 离开(涉及机场表)
  4. 一个衡量指标可以是航班'号码,通过飞行表上的计数(ID)获得。

    在下图中,您可以看到我刚刚描述的星型模式。

    Star Schema

    我的问题是:选择飞行时间(这是一个表格的列 - 飞行员 - 参与一个维度 - 引航 - 是否有意义?)

    而且,更一般地说,如果可能/概念上正确选择作为衡量事实表中的列。

    因此,简而言之,数据仓库多维数据集的度量是否必须来自事实表?或者来自维度和列的列。可以选择表吗?

    非常感谢你能帮助我!

2 个答案:

答案 0 :(得分:1)

  

选择飞行时间(这是一个表格的列 - 飞行员 - 参与一个维度 - 引航是否有意义?

飞行时间还可以参加什么?您只测量飞行员的飞行时数。您可以(应该?)测量飞机的飞行小时数,但您的仓库没有飞机飞行小时数。

您的仓库用户是否想知道飞行员的飞行时间?如果是这样,那么您的Pilotage表将成为飞行时间的事实事实表。

真正的仓库从航班本身总结飞行小时数,而不是为飞行员和飞机提供一笔总付款,这更合乎逻辑。每次装货时,您都必须更新试点飞行小时数

  

是否有可能/在概念上正确选择作为不在事实表中的列的度量?

是。规则是,如果您的用户要在列上查询,请将其包含在数据仓库中。

答案 1 :(得分:1)

取决于。

吉尔伯特对答案的主餐是正确的 - 你的飞行时间是按飞行员计算的,所以不要试图测量它的车辆,或者你要加倍(或三倍,或者四倍...)您的数字,因为您通过您的航班事实表只与这些维度建立了多对多的关系。

但是,如果你的事实是不可求的(例如"飞行每辆车的飞行员的平均飞行小时数")突然它再次有意义。

现在我对SQL Server SSAS模型最有经验 - 在这种情况下,我通常将其创建为计算度量,并且它将存在于Flight度量组中 - 当您执行这些措施时您必须非常具体地了解您正在使用的关系以及如何执行聚合。在这种情况下,该措施实际上将不再是"在维度"并且实际上是"事实" (即使它是通过引用维度计算的)。恢复幸福和最佳实践。

但是,如果你无法做到这一点,那么它真的不是世界末日 - 如果它在你的环境中起作用并且有用,那么它在你的环境中有效并且有意义,并没有其他很多内容。大多数DW最佳实践只是警告您确保 工作在您的情况下有意义。

因此,请弄清楚如何使用它,看看是否可以使用现有模型。