【问题标题】:How to connect a fact and dimension table that are in 1-N relationship如何连接具有 1-N 关系的事实和维度表
【发布时间】:2015-11-06 15:52:21
【问题描述】:
我有一个带有一些度量和维度键的采购事实表。
然后,还有另一个表:折扣表。
Purchase FactTable 与 Discount Table 是 1-N 关系(对于每次购买,我可能会购买多个打折商品)。
折扣表有一些我想汇总的属性(描述、注释)和一些数值(例如:$ 折扣)。
- 如果我从这个折扣表中创建一个维度,我会出错
总和计数中的购买计数数(膨胀,每行一行
打折商品)。
- 如果我从这个折扣中创建一个单独的事实
表,我如何查询这两个事实表(目前他们
不共享任何维度,因此我不能使用一致/共享维度进行钻取)。
- 如果我创建一个退化维度,我们就回到第一个场景。
桥接表是否可以解决我的问题?
附言
这个link 帮助选择了桥接表,但我不确定它是否适用于我的情况(因为我需要从折扣表中汇总一些数字属性)。
谢谢,
【问题讨论】:
标签:
architecture
data-warehouse
olap
【解决方案1】:
我的经验将支持具有两个事实表 purchase 和 pruchase_detail 的设计。
PURCHASE每次购买都有一行带有属性
purchase_id -- unique ID
purchase_date
customer_id
...
PURCHASE_DETAIL 每次购买有 1:N 行并存储定价详细信息。
purchase_id -- corresponding purchase
account_type -- dimension describing sales price and all discount types
amount
....
金额有适当的符号;销售价格为正,折扣为负。
例子
purchase_id account_type amount
1 sales price 100
1 discount1 -5
1 discount2 -1
使用这种设计,您可以安全地进行 COUNT 次购买(在 PURCHASE 表上),SUM 总价格(在 PURCHASE_DETAIL 上)
并制作所有种类或详细的折扣报告。