Data Mart星型模式开发解决方案

时间:2014-06-09 15:49:34

标签: mysql report pentaho kettle datamart

我必须将数据库转换为DM,但我有一些疑问,这是数据库架构:

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

这是一个简单的数据库,用于存储作者,书籍和其他各种东西(作者表的外键是错误的,表格是#34;书"另一个字段叫做年份)。我应该建立一个DM来分析作者如何运作多年(合着者和书籍)。我想添加一个方法来查看作者的引用... DM我的建筑是这样的:

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

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

PS for citation我指的是一本引用作者的书,我正在使用水壶和penthao

1 个答案:

答案 0 :(得分:1)

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

我该怎么做:

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

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

  3. 共同作者关系:试图确定发表最多的作者:这比较棘手。这里的事实粒度也是作者,但每对共同作者可用1个条目。所以,如果阿尔伯特,比尔和查尔斯写的是一本书,那么你将获得1篇作者艾尔伯特和共同作者比尔的作品,一篇作为作者的艾伯特和作为共同作者的查尔斯等(所有6种组合)。这使您可以获得作者及其合着者的完整列表,并计算他们出现的次数,但所有内容都会显示为双重计算:Albert + Bill和Bill + Albert两次出现。过滤掉重复项的最佳方法是按字母顺序定义"作者,其中Albert + Bill,Albert + Charles和Bill + Charles存储但不存储其他人,或者在客户端,删除重复项查询后处理。

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

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