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