我有一个累积的快照事实表,该表跟踪终端中容器的进入和退出。
容器可以以3种不同的方式进入和退出,因此我想创建一个特定的尺寸表,其中列出了这3种可能的方式(火车,轮船或卡车)。
然后我读了这篇文章,基本上说这种技术是错误的,但我不明白为什么。
第一篇文章:
有时,当事实表的一长串事实稀疏地填充在任何单独的行中时,它很想创建一个度量类型维度,以将事实表行折叠为由度量类型维度标识的单个通用事实。我们通常不建议这种方法。尽管它删除了所有空的事实列,但将事实表的大小乘以每行中已占用列的平均数,这使列内计算更加困难。当潜在事实的数量极高(数百个)时,此技术是可以接受的,但对于任何给定的事实表行,只有极少数适用。
我了解,如果为事务事实表实现了“ 度量类型维 ”,则可能会产生其他文章所述的问题,但是如果用于累积快照事实,我看不到任何不利之处。
第二篇文章:( 实现“度量类型维”的一些缺点)
- [...]如果我们使用“度量类型维”,我们将失去这种分析能力。如果一项措施与其他措施不兼容,我们将无法将其相加。
- [...]我们的SQL运行以生成报告所需的传递次数越多,报告就越慢。
- [...]在BI工具上,如果不放置度量类型过滤器,则可能会使用户冒着“垃圾信息”的危险。从可用性的角度来看,这种设计是垃圾。
对Mark Storey-Smith的回答
非常好的方法,我永远也不会想到。
另一件事:将集装箱带入码头的车辆的每次进出都有唯一的ID,该ID向我提供其他信息,例如:车辆的预计到达,实际到达,如果是码头的船只,如果是卡车,收费站以及许多其他信息...
这是3个不同的事实表,它们必须以某种方式链接到容器事实表。
我以为航行的ID是degenerate dimension
,因此它将直接进入容器事实表。因此,我的疑问是:我应该在容器事实表中添加6个不同的字段(vessel_voyage_in_key,vessel_voyage_out_key,train_voyage_in_key,train_voyage_out_key,truck_voyage_in_key,truck_voyage_out_key)还是仅动态链接到各个表的其他2个字段(voyage_in,voyage_out)?
希望我的疑问很清楚,谢谢。