如何设计会根据时间变化的属性?

0 views
Skip to first unread message

Wei Lu

unread,
Oct 12, 2009, 9:48:35 PM10/12/09
to ttnn BI 观点
现在在设计Cube时遇到一个问题。

我们有100w数据的会员表。其中,会员的级别是会变动的,例如从普通会员升级为高级会员,会员的状态也是会变动的,例如停用了,注销了。

现在我们会需要统计如下的数据:
1. 所有会员中有过n次消费的会员比例,需根据级别进行分析。


由于级别是会变动的,如果时间往后延续,现在得到的根据级别分析的数据和当时的数据就会存在差异。

不知道应该用什么样的技术来更好的解决这个问题?

xichen...@gmail.com

unread,
Oct 12, 2009, 10:13:31 PM10/12/09
to tt...@googlegroups.com
记录历史
id 会员名 级别 开始时间 结束时间
1  张三     1       2007-6-20        2008-7-10
2  张三     2      2008-7-10         当前
或者在那张消费表中引入级别字段?
2009/10/13 Wei Lu <huofo...@gmail.com>

Sunny Guo

unread,
Oct 12, 2009, 10:19:26 PM10/12/09
to tt...@googlegroups.com

是否可以通过ETL来实现这个需求呢?个人意见应该是DW和ETL结合一起来实现吧

Wei Lu

unread,
Oct 13, 2009, 5:00:03 AM10/13/09
to ttnn BI 观点
我觉得历史表是可以考虑的。

这样在计算时,要根据当时的会员级别进行分析,而不是根据现在的会员级别。

On Oct 13, 10:13 am, xichengmyl...@gmail.com wrote:
> 记录历史
> id 会员名 级别 开始时间 结束时间
> 1 张三 1 2007-6-20 2008-7-10
> 2 张三 2 2008-7-10 当前
> 或者在那张消费表中引入级别字段?

> 2009/10/13 Wei Lu <huofolu...@gmail.com>


>
>
>
> > 现在在设计Cube时遇到一个问题。
>
> > 我们有100w数据的会员表。其中,会员的级别是会变动的,例如从普通会员升级为高级会员,会员的状态也是会变动的,例如停用了,注销了。
>
> > 现在我们会需要统计如下的数据:
> > 1. 所有会员中有过n次消费的会员比例,需根据级别进行分析。
>
> > 由于级别是会变动的,如果时间往后延续,现在得到的根据级别分析的数据和当时的数据就会存在差异。
>

> > 不知道应该用什么样的技术来更好的解决这个问题?- Hide quoted text -
>
> - Show quoted text -

天堂鸟

unread,
Oct 13, 2009, 12:07:57 PM10/13/09
to ttnn BI 观点
在历史表的基础上新增一"当前级别"字段,通过此字段可实现按历史状态或最新状态的分析需求

但这可能存在一定的性能问题,因此可以考虑新增一个表,用于保存各会员的最新级别

> > - Show quoted text -- 隐藏被引用文字 -
>
> - 显示引用的文字 -

笨笨

unread,
Oct 14, 2009, 2:08:34 AM10/14/09
to ttnn BI 观点

缓慢变化维咯?

On Oct 13, 10:13 am, xichengmyl...@gmail.com wrote:

> 记录历史
> id 会员名 级别 开始时间 结束时间
> 1 张三 1 2007-6-20 2008-7-10
> 2 张三 2 2008-7-10 当前
> 或者在那张消费表中引入级别字段?

> 2009/10/13 Wei Lu <huofolu...@gmail.com>


>
>
>
> > 现在在设计Cube时遇到一个问题。
>
> > 我们有100w数据的会员表。其中,会员的级别是会变动的,例如从普通会员升级为高级会员,会员的状态也是会变动的,例如停用了,注销了。
>
> > 现在我们会需要统计如下的数据:
> > 1. 所有会员中有过n次消费的会员比例,需根据级别进行分析。
>
> > 由于级别是会变动的,如果时间往后延续,现在得到的根据级别分析的数据和当时的数据就会存在差异。
>

Charlie Zhu

unread,
Oct 14, 2009, 10:37:28 AM10/14/09
to tt...@googlegroups.com
我认为直观的解决办法就是在事实表(比如订单记录表)里,加上冗余的客户级别字段。或者准确点命名字段为“订单发生时客户级别”。类似的产品单价等可能变化的因素都要记录到订单之中。

这里的“订单”可以在概念上推广为“事件发生及上下文记录”。

敬礼!

朱春磊
+86 13661348004


2009/10/14 笨笨 <caozh...@gmail.com>

falcon

unread,
Oct 15, 2009, 4:31:50 AM10/15/09
to ttnn BI 观点
建议设计一张会员级别维表,将会员姓名、级别、生效日期作为主键,另外设一个ID,事实表中的记录只存放当前生效的ID;如果要统计有n次消费的会员,
则用ID关联出会员姓名和级别,直接进行汇总即可。

Steven

unread,
Nov 9, 2009, 9:54:55 PM11/9/09
to ttnn
这样也会有问题,当时的会员级别在目前的级别维表找不到呢?
有一个想法是维表带历史和有效标识的等!
 
 
2009-10-13

Steven

发件人: Wei Lu
发送时间: 2009-10-13  17:00:21
收件人: ttnn BI 观点
抄送:
主题: Re: 如何设计会根据时间变化的属性?

Learns BI

unread,
Nov 13, 2009, 5:01:58 AM11/13/09
to tt...@googlegroups.com
维表保存最后一次更新,再设计一个事实表保存每次transaction

2009/11/10 Steven <tanh...@gmail.com>
Reply all
Reply to author
Forward
0 new messages