数据仓库 - 计算前5所大学的MDX查询

时间:2014-04-20 16:52:36

标签: sql mdx data-warehouse star-schema

我正在尝试创建一个星型模式来分析大学的排名。

我创建了星型模式,如下所示;

事实表;

排序

  • University_id
  • TIME_ID
  • Classification_id
  • 排名(测量)

维度和层次结构;

University_id

  • 状态
  • 城市
  • UNIVERSITY_NAME

TIME_ID

  • 季度

classification_id

  • 类别(可以是工程,或社会科学等)
  • 类型(可以是计算机工程,土木工程等)
  • type_info(有关类型的信息)

我想编写一个MDX查询,列出2011年加州前5大的计算机工程大学。结果应该包括大学名称及其评级。

这是我的MDX查询;

SELECT Measures.ranking ON COLUMNS
HEAD (ORDER ({[University_id].[California].[Members].[Children],
Measures.[ranking], BDESC, 5}) ON ROWS
WHERE (Measures.[ranking], [Time_id].[Year].[2011], [classification_id].[engineering].  [computer Engineering])

我的Star架构设计和相关的mdx查询是否正确有效?否则,我如何改进我的解决方案或使其正确?我还创建了星型模式,因此我们可以对其进行更改以改进设计。

2 个答案:

答案 0 :(得分:0)

我会使用TopCount函数,而不是组合头部/顺序。

答案 1 :(得分:0)

一般的想法很好。但是有些评论:

  • 我会称维度"大学","时间"等等而不是" University_id" id是一个内部密钥,在很多情况下不会暴露给用户,用户会根据"大学"而不是" id"。
  • 如果您对列使用度量,则不能在切片器轴(也称为WHERE子句)中使用它们。
  • 我不确定您的排名指标是怎样的。但如果它确实是较低数字更好的意义上的排名,则应该升序而不是降序,或者使用BottomCount