0

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

我创建了下面的星型模式;

事实表;

排行

  • University_id
  • Time_id
  • 分类_id
  • 排名(衡量)

维度和层次结构;

University_id

  • 状态
  • 城市
  • 大学名称

time_id

  • 四分之一

分类 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])

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

4

2 回答 2

0

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

于 2014-04-20T23:06:54.573 回答
0

总体思路很好。然而,一些评论:

  • 我将维度称为“大学”、“时间”等,而不是“大学 ID”等。ID 是在许多情况下不向用户公开的内部密钥,用户根据“大学”来思考,而不是在“身份”的术语。
  • 如果您在列上使用度量,则不能在切片器轴(akaWHERE子句)中使用它们。
  • 我不确定您的排名衡量标准如何。但是,如果它确实是一个等级,因为数字越小越好,你应该按升序而不是降序排列,或者使用BottomCount.
于 2014-04-23T12:03:59.650 回答