维度模型-多值维度

1. 案例

张小华和李小草共同买了5份足彩,花了25块钱。 

2. 理想情况

理想情况是拆分到单个人身上。

人, 日期, 数量, 金额。 再加一个购买id表示同一个订单。

能拆最好, 通常拆不了, 能拆也不会有多只维度这个需求了。

3. 多值有上限

维度数量有上限, 比如3个。

第一购买人,第二购买人,第三购买人, 日期, 数量, 金额。 再加一个购买id表示同一个订单。

优点:简单

缺点:有限制

缺点:后面方式该有的缺点,他也有。

4. 支架表

用户维度:

用户id用户名称
1张小华
2李小草

事实表:

订单id购买者购买时间购买数量购买金额
11,22000-01-01525

支架:

购买者id用户id
1,21
1,22

购买者id 是对订单的多个用户collectset ,然后再排序得到。

优点: 能准确表示多值维度关系。

缺点:存在重复计算。上面表格数据, 一个订单关联了两条支架数据,然后每条支架数据对应一个用户。最后看起来 张小华和李小草没人买了5份足彩,花了25.

所以使用时应该限制:查询的是用户参与过的 订单的总额。 多个用户之间可能存在重复的订单。

5.支架表扩展

购买者id用户id出资比率
1-0.3,2-0.710.3
1-0.3,2-0.720.7

支架表上增加一个拆分比率,关联时事实表的事实乘以这个比率, 就可加了。

优点: 相当于对事实表进行了拆分。

缺点:这个比率不容易拿到。如果能拿到,干脆把事实表拆分粒度,做什么多值维度。

严重错误:这里有一个严重错误,张小华和李小草第一次合买的比率和第二次合买的比率不一定一致。 所以购买者组的id也不一定一致。   购买者组id的生成, 应该包含两者id 和比率。

6. 建议

多值维度,实在没辙时能做,但是统计时的重复计算需谨慎。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值