我有这个简单的数据仓库架构:
Flight (ID, pilot, aircraft, airport)
Pilot (ID, name, surname, flight hours)
Aircraft (ID, model)
Airport (ID, name, city)
飞行将是我的事实表。
然后我将有三个维度:
答案 0 :(得分:1)
选择飞行时间(这是一个表格的列 - 飞行员 - 参与一个维度 - 引航是否有意义?
飞行时间还可以参加什么?您只测量飞行员的飞行时数。您可以(应该?)测量飞机的飞行小时数,但您的仓库没有飞机飞行小时数。
您的仓库用户是否想知道飞行员的飞行时间?如果是这样,那么您的Pilotage表将成为飞行时间的事实事实表。
真正的仓库从航班本身总结飞行小时数,而不是为飞行员和飞机提供一笔总付款,这更合乎逻辑。每次装货时,您都必须更新试点飞行小时数
是否有可能/在概念上正确选择作为不在事实表中的列的度量?
是。规则是,如果您的用户要在列上查询,请将其包含在数据仓库中。
答案 1 :(得分:1)
但是,如果你的事实是不可求的(例如"飞行每辆车的飞行员的平均飞行小时数")突然它再次有意义。
现在我对SQL Server SSAS模型最有经验 - 在这种情况下,我通常将其创建为计算度量,并且它将存在于Flight度量组中 - 当您执行这些措施时您必须非常具体地了解您正在使用的关系以及如何执行聚合。在这种情况下,该措施实际上将不再是"在维度"并且实际上是"事实" (即使它是通过引用维度计算的)。恢复幸福和最佳实践。
但是,如果你无法做到这一点,那么它真的不是世界末日 - 如果它在你的环境中起作用并且有用,那么它在你的环境中有效并且有意义,并没有其他很多内容。大多数DW最佳实践只是警告您确保 工作在您的情况下有意义。
因此,请弄清楚如何使用它,看看是否可以使用现有模型。