【发布时间】:2018-08-28 20:34:09
【问题描述】:
我是维度建模的新手,并且阅读了很多资料(星型模式、维度/事实表、SCD、Ralph Kimball 的 - The Data Warehouse Toolkit 书等)。所以我对维度建模结构有很好的概念理解,但由于缺乏经验,我发现很难将其应用于用例,需要一些指导。
以 Twitter 为例,我想设计一个维度模型来计算 -
- DAU(每日活跃用户)= 在给定日期通过网站或移动应用程序登录和访问 twitter 的用户数
- MAU(月活跃用户数)= 过去 30 天内通过网站或移动应用登录并访问 twitter 的用户数,包括衡量日期
- 用户参与度 = 推文的总次数(点击次数 + 收藏次数 + 回复次数 + 转发次数)
一段时间(如一个月)内的这些指标是该期间每一天的这些指标的总和。
我想编写 SQL 来按地区(例如:美国和世界其他地区)计算每个季度的这些指标,并计算这些指标的同比增长(或下降)。
例如:
这是我想到的一些细节-
用户登录活动的无事实(事务)事实表,每个用户每次登录的粒度为 1 行:user_login_fact_schema(user_dim_key、date_dim_key、user_location_dim_key、access_method_dim_key)
用户活动的无事实(事务)事实表,每个用户每个活动的粒度为 1 行:user_activity_fact_schema(user_dim_key、date_dim_key、user_location_dim_key、access_method_dim_key、post_key、activity_type_key)
这听起来正确吗?我的模型应该是什么样子?我可以在此处添加哪些其他维度/事实?
想知道我是否应该将这 2 个表折叠为 1 个并将登录的活动类型设置为“登录”,但是可能有大量登录没有任何活动,因此这会扭曲数据。我还有什么遗漏吗?
【问题讨论】:
-
我想知道你是否可以设计你的事实表来存储用户计数而不是按最低粒度(每天为你)存储用户 ID,然后根据需要进行聚合。你能分享一下你的最终设计是什么样子(粘贴箱)吗?我很想看看。
-
Saurabh,你最后的启动模式是什么?您是否还包括 MAU 和 DAU/MAU 比率?
-
另外,当你按季度汇总 DAU 时,会是什么?你季度的平均值还是最后一个值?
标签: data-modeling data-warehouse dimensional-modeling star-schema datamart