维度模型中的事实表实际上是一个事件表吗?

Sem*_*1ka 4 database data-modeling data-warehouse dimensional-modeling

我是维度数据建模的新手,想知道如何将它应用于看起来不像销售报告的东西.

假设我有一个网络信使.它跟踪用户的设备,浏览器类型和位置.

现在,我的业务部门的同事希望能够说出来:

  • 上个月在Chrome中发生了多少次信使聊天?
  • 去年在北美移动设备上发生了多少次信使聊天?
  • 上周聊天率(能够按浏览器,设备和位置过滤)

所以对我来说,看起来我想测量聊天率,那个事实表应该是什么样子?

此外,浏览器和设备应该是一个还是单独的维度?我无法想象将构建这样一个表的ETL过程.

在我目前的理解架构中应该如下所示: 模式

似乎每次创建聊天时我都应该将它添加到chat_facts表中,这对我来说就像保存一个包含事件的表,我们稍后会通过聚合来计算这些事件.这是事实表的正确方法吗?

RAD*_*ADO 5

事实表可以包含事务,事件,余额,快照,进程.甚至有"无事实"的事实表.

在您的情况下,将聊天记录为事件是完全合理的.除了消息计数,每个聊天记录还可能包含其他事实,如大小,持续时间,参与者数量等.

昏暗细节毫无意义.相反,创建暗淡的"设备",并调暗"浏览器".

您的模型缺少的一件事是暗淡的"日期",与日期相关的分析: 日历表

(我还会将事实表中的"已创建"重命名为更具描述性的内容,例如"创建日期")