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

时间:2018-10-09 00:25:02

标签: database data-modeling data-warehouse dimensional-modeling

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

假设我有一个网络通讯工具。它跟踪用户的设备,浏览器类型和位置。

现在,我的业务部门同事希望能够告诉:

  • 上个月Chrome浏览器中发生了多少次Messenger聊天?
  • 去年,北美在移动设备上发生了多少次Messenger聊天?
  • 上周每天的聊天率(可以按浏览器,设备和位置进行过滤)

对我来说,我似乎想测量聊天率,事实表应该是什么样?

此外,浏览器和设备是否应以一个或单独的维度运行?我无法想象将建立这样一个表的ETL流程。

在我目前的理解模式下,应该如下所示: schema

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

1 个答案:

答案 0 :(得分:5)

事实表可以包含事务,事件,余额,快照,流程。甚至有“事实”表。

就您而言,将聊天记录为事件是完全合理的。除了消息数之外,每个聊天记录还可能包含其他事实,例如大小,持续时间,参与者人数等。

“详细信息”没有意义。而是创建暗淡的“设备”和暗淡的“浏览器”。

模型缺少的一件事是昏暗的“日期”,用于与日期相关的分析: calendar table

(我还将在事实表中将“创建的”重命名为更具描述性的名称,例如“创建日期”)