如何开始使用 MDX

Posted

技术标签:

【中文标题】如何开始使用 MDX【英文标题】:How to get started with MDX 【发布时间】:2011-02-15 01:46:35 【问题描述】:

您好,我一直在玩 MDX,需要一些非常高级的入门类型指导。我已经有一个 SQL-Server 2008 R2 数据库并运行其中的数据。我想在 MDX 中尝试一些非常简单的东西来熟悉流程。我不是 DW 或 Cube 专家,所以我需要慢慢开始。 (事实/维度对我来说是新的)

我的关系数据库中有一个视图,我希望将其用作 MDX 的单一来源。很简单:

TABLE WEEKLY_GAIN
  PCTGAIN (DECIMAL) -- The pre-calc'd pctg gain in price from day x to day x+1  
  DATE (DATE)       -- The date the stock pctgain was generated  
  WEEK(INT)         -- Contiguous/Consecutive integer that is keyed to the last trading day of each week.  
  YEAR (INT)        -- The year of the current PCTGAIN from the DATE column

样本数据:

PCTGAIN          DATE           WEEK   YEAR  
0.01709791       2011-01-14     2      2011  
0.01102063       2011-01-07     1      2011  
0.0006922469     2010-12-31     52     2010  
0.01033836       2010-12-23     51     2010

我想使用 MDX 生成一个立方体和一些函数(MEDIAN、MEAN、STDEV 等)。我已经成功地将上述视图识别为 MDX 中的来源。但是,我需要帮助定义(MDX)维度、键、多维数据集定义以及其他需要完成的操作等。

我认为这应该是直截了当的(日期、周、年将是维度?)但我不确定。

我想生成的一个“立方体”是...所有年份 (1950-2011) 都是行,所有周 (1-52) 都是列,然后生成一些 MIN、MAX、MED、聚合在所有年份中每周数的PCTGAIN。我知道有办法用 T-SQL 做到这一点。但是,我希望在 MDX 中执行此操作,以掌握设置 MDX 并提高工作效率的窍门。

我很乐意根据需要提供更多详细信息。谢谢

【问题讨论】:

【参考方案1】:

这里有一些学习 MDX 的好资源:How to learn MDX

在您的最后一个示例中,使用行而不是列来处理您的期间通常要容易得多,因此我建议您对表格进行 UNPIVOTing,以便每周都是一行,然后构建具有正确级别的日期维度。完成后,您将能够使用 MDX 函数相对轻松地计算 MIN、MAX、MED、PCTGAIN 等。

【讨论】:

【参考方案2】:

阅读本书:

Microsoft SQL Server 2008 MDX 一步一步

是最好的。

【讨论】:

以上是关于如何开始使用 MDX的主要内容,如果未能解决你的问题,请参考以下文章

如何保存 MDX 查询并下次使用?

MDX 查询 - 如何使用成员属性?

如何使用 MDX 查询检索内部节点的数据集?

mondrian mdx 过滤日期维度中年份级别的集合

如何使用 MDX 获取不可见属性和用户定义的层次结构的名称?

如何使用 MDX 查询应用层次化和排序