使用ON ROWS的Dimension依赖Measures成员

时间:2014-10-20 16:11:05

标签: ssas mdx olap

这是我的剧本的模拟:

(0)

SELECT 
  {   
    [Measures].[Revenue],
    [Measures].[NumSignups]
  } ON COLUMNS
 ,NON EMPTY 
    {
        [Date].[Calendar Year].[Calendar Year].MEMBERS*
        [Date].[Calendar Month].[Calendar Month].MEMBERS*
        {
          [Location active].[Shop Name].MEMBERS
      //[Location signup].[Shop Name].MEMBERS
        }
    } ON ROWS
FROM [OurCube]

“度量”成员[Revenue]Dimension [Location active]相关,而“度量”成员[NumSignups]Dimension [Location signup]相关。每个度量与替代位置维度无关。

所以以下两个都是逻辑错误的,并在每个单元格中返回相同的数字(这是预期的):

(1)

SELECT 
  {   
    [Measures].[Revenue]
  } ON COLUMNS
 ,NON EMPTY 
    {
        [Date].[Calendar Year].[Calendar Year].MEMBERS*
        [Date].[Calendar Month].[Calendar Month].MEMBERS*
        {
          [Location signup].[Shop Name].MEMBERS
        }
    } ON ROWS
FROM [OurCube]

(2)

SELECT 
  {   
    [Measures].[NumSignups]
  } ON COLUMNS
 ,NON EMPTY 
    {
        [Date].[Calendar Year].[Calendar Year].MEMBERS*
        [Date].[Calendar Month].[Calendar Month].MEMBERS*
        {
          [Location active].[Shop Name].MEMBERS
        }
    } ON ROWS
FROM [OurCube]

是否可以在脚本(0)中添加一些条件逻辑,以便我可以使用一个脚本显示这两个度量?

1 个答案:

答案 0 :(得分:2)

这在MDX中是不可能的。必须修复所有轴的结构以修复MDX语句。这就像在SQL中,你也不能有不同的结果行来拥有不同的列。一个SQL select语句必须在所有记录中都有一个修复列列表。 E. g。你不能拥有第1行和第2行中包含A,B,C列的SQL语句,但第3行和第4行中包含C,D,E列。您必须使用e。 G。对于所有四行,列A,B,C,D,E存在(可能为空,但总是存在),因为SQL结果集被定义为矩形结构。没有像#34;参差不齐的阵列那样的东西。在某些编程语言中,每行可能有不同的列集。

同样,在MDX中,您不能在几行上存在层次结构,也不能在另一行存在。

我会写两个MDX语句,并根据用户的一些选择在客户端软件中切换它们。