数据仓库示例 - 简单解释

时间:2015-11-19 15:31:43

标签: data-warehouse

我现在正试图了解数据仓库,但我真的无法得到它。我的问题并不是非常具体,但我只是想让某人向我解释数据仓库的想法。

我现在正在尝试从SO's database创建数据仓库。

在这个数据库中有8个表,对于那些使用SO的人来说,它们是非常明显的:

  • 徽章
  • 评论
  • PostHistory
  • PostLinks
  • 帖子
  • 标签
  • 用户
  • 投票

1。尺寸
尺寸是多少?这是我不了解的重要部分。对我来说,我看到7个维度:徽章,评论,帖子,帖子后链接,标签,用户和投票。但后来我没有看到使用数据仓库的重点,维度就是表格。

- 日期应该是一个维度吗?什么日期?每个评论和帖子?
- 将Post分成问题维度和答案维度是否相关? - 我可以放哪些其他尺寸?

2。事实表
如何将所有外键(userId,postId,commentId ...)放在一个表中?例如,我们假设用户发布了一个问题,但没有评论。我的事实表中有一行用userId,postId在commentId列中是NULL吗?

措施。我在考虑事实表中的以下措施:问题数量,用户数量,标签数量......

有人可以告诉我我是否朝着正确的方向前进吗?

2 个答案:

答案 0 :(得分:0)

构建数据仓库时必须回答的第一个问题是"我想回答什么问题?"

使用Stack Overflow作为一个例子,一个问题可能是,"过去两年每个月有多少关于X的帖子?"

要回答这个问题,我们需要创建帖子和帖子标签事实表。由于这些表只是选择和插入,我们可以对事实数据进行非规范化,以便更容易选择。

因此,我们可能会有一个类似于此的Post事实表。

Post
----
Post Number
Post Text
Post Timestamp
Post Tag 1
Post Tag 2
Post Tag 3
Post Tag 4
Post Tag 5

根据时间戳和逐月进行选择会有些简单。我们只关心前5个帖子标签,如果其中一些标签为空,我们也不在乎。

现在,您不必对数据进行非规范化。通常,如果对数据进行非规范化,查询运行速度会更快。

您对其他可用数据执行相同操作。你想回答什么问题?

答案 1 :(得分:0)

如果你试图绕过DW的概念,那么Stack Overflow可能不是最好的数据模型。它不包含许多“传统”事实。我立刻想到的唯一例子是Up / Down投票和用户排名。

你会发现许多我们称之为“无事实的事实”。这些基本上将多维度的交集视为一个事实,只有隐含的“计数”作为唯一的事实。例如,在Post Fact中,它只是在用户,日期,SO数据库等的交叉点上计数。

您可能会考虑使用诸如Junk维度之类的概念来支持引用Fact表中的Tags。这将看到您为每个唯一的标签组合分配一个伪键,然后这个键将存储在Fact表中。

如果您想了解DW,请使用您的个人财务,这就是我学习的方式。您可以通过帐户余额了解快照事实,了解购买交易事实,还可以创建供应商和帐户维度等。