维度模型中的事实 table 实际上是一个 table 的事件吗?
Is facts table in dimensional model is actually a table of events?
我是维度数据建模的新手,想知道如何将它应用于看起来不像销售报告的东西。
假设我有一个网络信使。它跟踪用户的设备、浏览器类型和位置。
现在,业务部的同事们想告诉大家:
- 上个月 Chrome 发生了多少 Messenger 聊天?
- 去年北美在移动设备上发生了多少 Messenger 聊天?
- 上周每天的聊天率(能够按浏览器、设备和位置过滤)
所以对我来说,我想衡量聊天率,那么事实 table 应该是什么样的?
此外,浏览器和设备应该存在于一个维度还是单独的维度中?我无法想象 ETL 过程会构建这样一个 table.
以我目前的理解模式应该是这样的:
似乎每次创建聊天时我都应该将其添加到 chat_facts table,这对我来说就像保存一个 table 事件,我们稍后将通过聚合计算这些事件。
这是处理事实的正确方法吗 table?
事实table可以包含交易、事件、余额、快照、流程。甚至还有 "factless" 个事实 table。
在您的情况下,将聊天记录为事件是完全合理的。除了消息计数,每条聊天记录还可能包含其他信息,例如大小、时长、参与人数等。
Dim Details 毫无意义。相反,创建 dim "Device" 和 dim "Browser"。
您的模型缺少的一件事是 dim "Date",用于与日期相关的分析:
calendar table
(我还会将您的事实 table 中的 "created" 重命名为更具描述性的名称,例如 "Creation Date")
我是维度数据建模的新手,想知道如何将它应用于看起来不像销售报告的东西。
假设我有一个网络信使。它跟踪用户的设备、浏览器类型和位置。
现在,业务部的同事们想告诉大家:
- 上个月 Chrome 发生了多少 Messenger 聊天?
- 去年北美在移动设备上发生了多少 Messenger 聊天?
- 上周每天的聊天率(能够按浏览器、设备和位置过滤)
所以对我来说,我想衡量聊天率,那么事实 table 应该是什么样的?
此外,浏览器和设备应该存在于一个维度还是单独的维度中?我无法想象 ETL 过程会构建这样一个 table.
以我目前的理解模式应该是这样的:
似乎每次创建聊天时我都应该将其添加到 chat_facts table,这对我来说就像保存一个 table 事件,我们稍后将通过聚合计算这些事件。 这是处理事实的正确方法吗 table?
事实table可以包含交易、事件、余额、快照、流程。甚至还有 "factless" 个事实 table。
在您的情况下,将聊天记录为事件是完全合理的。除了消息计数,每条聊天记录还可能包含其他信息,例如大小、时长、参与人数等。
Dim Details 毫无意义。相反,创建 dim "Device" 和 dim "Browser"。
您的模型缺少的一件事是 dim "Date",用于与日期相关的分析: calendar table
(我还会将您的事实 table 中的 "created" 重命名为更具描述性的名称,例如 "Creation Date")