我是维度建模的新手,并且已经阅读了很多材料(星型模式、维度/事实表、SCD、Ralph Kimball 的 - The Data Warehouse Toolkit book 等)。所以我对维度建模结构有很好的概念理解,但由于缺乏经验并且需要一些指导,我发现很难将其应用于用例。
以 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 个并将登录的活动类型设置为“登录”,但是可能有大量登录没有任何活动,因此这会扭曲数据。我还缺少什么吗?