https://web.stanford.edu/dept/itss/docs/oracle/10g/olap.101/b10333/globdiag.gif
假设我们有一个如上所述的开始模式。
我的问题是 - 实时如何填充事实表的colums(unit_price,unit_cost)列??
任何人都可以向我提供包含真实数据的开始模式表吗?
我很难理解星型模式......
请帮忙!..
答案 0 :(得分:0)
Start schema包含两种类型的表事实表和维度。
明星设计的理想之处在于您可以将数据分成两部分。 静态部分在事实表中用维和动态部分(=事务)进行描述。
每个交易都作为新记录存储在事实表中,并连接到定义交易上下文的周围维度。
链接中的示例包含两个事实表:SHIPMENTS和PRODUCT_CONDITIONS。 请注意,链接中的事实表被称为UNITS_HISTORY_FACT和PRICE_AND_COST_HISTORY_FACT,但我发现这不是最佳选择。
SHIPMENTS表通过定义的CHANNEL在某个TIME将一个PRODUCT的每个货件的一条记录存储到CUSTOMER。 使用相应尺寸的相应键来定义所有上述信息。 事实表还包含描述交易属性的MEASURES,此处列出了UNITS的数量。
因此,事实表的结构将是
CUSTOMER_ID
PRODUCT_ID
TIME_ID
CHANNEL_ID
UNITS
第二个事实表(底部)更有趣,因为在这里您将产品分为两部分:
定义ID,名称和其他更多静态属性的PRODUCT维度
PRODUCT_CONDITION这是事实表,其设计期望产品的价格和成本会随着时间的推移而变化。 随着价格或成本的每次更改,在事实表中插入新记录并将其连接到PRODUCT和TIME(更改)。
因此,事实表的结构将是
PRODUCT_ID
TIME_ID
UNIT_PRICE
UNIT_COST
最后请注意TIME维度的设计。
将事实表与维度表连接的最佳做法是使用无意义的ID(代理键),但对于TIME维度,您应该小心。对于大(时间分区)事实表经常使用自然键(DATE格式)来部署分区功能。请参阅How I Defined a Time Dimension Using a Surrogate Key中的更多详细信息以及网络中的其他资源。