0

我必须将数据库翻译成 DM,但我有一些疑问,这是数据库架构:

http://i.stack.imgur.com/PHha1.png

这是一个简单的数据库,用于存储作者、书籍和各种其他东西(作者表的外键是错误的,表“book”作为另一个字段称为 year)。我应该建立一个 DM 来分析作者多年来的工作方式(合著者和书籍)。我什至想添加一种方法来查看作者的引用...我正在构建的 DM 是这样的:

http://i.stack.imgur.com/MPCTL.png

现在我的疑问是:我如何在这个数据集市中添加引用?

PS 引用我的意思是引用作者的书,我正在使用kettle和penthao

4

1 回答 1

1

引文和书籍作者具有不同的粒度。因此,它们应该在不同的事实表中。

我会怎么做:

  1. 引文事实表:grain 是 1 本书中 1 个人的 1 引文。外部键用于时间维度、被引作者维度、作者维度、书籍维度以及您可能需要的任何其他内容。该数据集市直接为您提供 X 人的引用次数,按时间、书籍作者等细分。

  2. 作者事实表:可能有人认为grain是1本书,但实际上并非如此。谷物是 1 本书的 1 位作者。这是最原子级别的数据。要获得书数,您可以定义 1 人合着的 1 本书计为 1 本书、计为 0.5、1/合著者人数或任何其他有用的指标。如果您还想计算书籍,则应使用 1/N 度量以及您认为有用的任何其他度量。

  3. 合着关系:试图确定共同发表最多的作者:这比较棘手。这里的事实粒度也是作者身份,但每对共同作者都有一个条目。因此,如果一本书是由 Albert、Bill 和 Charles 写的,您将获得 1 个与作者 Albert 和合著者 Bil​​l 一起的条目,一个是 Albert 作为作者,Charles 作为合著者,等等(所有 6 种组合)。这使您可以获取作者及其合著者的完整列表,并计算他们出现的次数,但所有内容都会显示为重复计算:Albert+Bill 和 Bill+Albert 出现两次。过滤重复项的最佳方法是定义“按字母顺序排列的作者,其中存储 Albert+Bill、Albert+Charles 和 Bill+Charles 但不存储其他作者,或者在客户端,

要组合来自多个数据集市的多个指标,您应该在可视化工具中添加一个后处理层,以交叉引用所有这些结果。

最后,一个评论:这个问题似乎不是最好用数据集市来处理。图书元数据没有固定的数据模式,无模式结构可能最适合进行所有这些搜索(查看 Elastic Search 和 Mongo DB,它们可能更适合这个特定问题。

于 2014-06-11T09:54:56.307 回答