【问题标题】:MDX Query - Select Columns From Same DimensionsMDX 查询 - 从相同维度中选择列
【发布时间】:2015-04-30 09:26:17
【问题描述】:

我需要在多于 1 列中显示来自相同维度的数据。例如。我想明智地显示数据年和月。在我的维度结构中,年和月属于同一层次结构。当我在查询下运行时,我得到错误。 PFB 查询。

Select NON EMPTY {[Measures].[Target Actual Value]} ON 0,
NON EMPTY {[Realization Date].[Hierarchy].[Year Name].Members *
[Realization Date].[Hierarchy].[Month Year]} ON 1
From [Cube_BCG_OLAP]

我得到的错误是 Query (2, 12) Hierarchy 层次结构在 Crossjoin 函数中多次使用。我是 MDX 查询的新手。请在这方面提供帮助。提前致谢。

【问题讨论】:

  • 我的或 Sourav 的回答有帮助吗?还是您找到了替代解决方案?

标签: mdx


【解决方案1】:
Select NON EMPTY {[Measures].[Target Actual Value]} ON 0,
NON EMPTY {[Realization Date].[Hierarchy].[Year Name].Members , 
[Realization Date].[Hierarchy].[Month Year]} ON 1
From [Cube_BCG_OLAP]

而不是CROSSJOIN 有一个如上所述的集合。在一个集合中,您可以放置​​来自同一层次结构的成员

【讨论】:

  • ...很高兴你回来了——没有你在这里很无聊!
  • 我受宠若惊!被错过的感觉真好:)
【解决方案2】:

我喜欢 Sourav 的回答 - 但它会将结果放在与问题略有不同的一列中。

AdvWorks 中,这是在一列中:

SELECT 
  [State-Province].MEMBERS ON COLUMNS
 ,{
    [Date].[Calendar].[Calendar Year].MEMBERS
   ,[Date].[Calendar].[Month].MEMBERS
  } ON ROWS
FROM [Adventure Works];

可以切换到两列并使用交叉连接,但您需要找出日期维度Attribute 层次结构的详细信息(而不是User 层次结构):

SELECT 
  [State-Province].MEMBERS ON COLUMNS
 ,
  [Calendar Year].[All Periods].Children 
* [Month].MEMBERS ON ROWS
FROM [Adventure Works];

在你的立方体中可能是这样的:

SELECT 
  NON EMPTY 
    {[Measures].[Target Actual Value]} ON 0
 ,NON EMPTY 
    [Year Name].MEMBERS 
  * 
    [Month Year].MEMBERS ON 1
FROM [Cube_BCG_OLAP];

【讨论】:

  • 在所有实际情况下,我从来没有遇到过这样一种情况,即在多列或单列/行中获得结果非常重要(我们使用 ssrs)。此外,这会增加查询的执行时间,这可能不是一件好事。你说什么?
  • @Sourav_Agasti 是的——虽然我过去很少需要多列,并且使用属性层次结构是我解决它的方法。这只是一种替代方法。如果维度内的家庭关系对我正在回答的特定问题并不重要,有时我非常喜欢使用属性层次结构。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多