【问题标题】:MDX Group & CountMDX 组和计数
【发布时间】:2016-05-08 09:18:39
【问题描述】:

我有以下 MDX 查询

WITH 
  MEMBER Measures.Improvement AS
     [Measures].[School Evaluation] 
   - 
     (
      [Measures].[School Evaluation]
     ,[Cycle].[Name].CurrentMember.PREVMEMBER
     )
  MEMBER Measures.PreviousEvaluation AS
     (
      [Measures].[School Evaluation]
     ,[Cycle].[Name].CurrentMember.PREVMEMBER
     )
  SELECT
     Measures.Improvement ON COLUMNS,
     Filter (
       { [Cycle].[Name].[Name].ALLMEMBERS }
     * { [School].[Name En].[Name En].ALLMEMBERS }
     , Measures.PreviousEvaluation > 0 
        AND 
         [Measures].[School Evaluation] > 0
     )
     ON ROWS
  FROM [SchoolCube];

此代码生成以下输出

现在我需要计算所有学校出现的改进“-2,-1,0,...”所以我有这样的事情

我怎样才能做到这一点?

谢谢,

【问题讨论】:

  • 谷歌:条件聚合
  • @sagi 你能扩展你的评论吗 - 这是一个有趣的问题 - 我不认为它的答案是微不足道的:如果答案像谷歌搜索一样简单,你能提供确切的答案吗?网址。

标签: sql-server mdx business-intelligence performancepoint


【解决方案1】:

您必须添加另一个维度“改进”,该维度包含固定范围的可能值,例如-10..+10 或者您根据数据动态构建范围。

根据该维度表向多维数据集添加第二个度量值组,并创建一个度量“改进基础”,对改进值求和。这是简化以下步骤的辅助措施。

现在您可以创建一个新的计算度量:

CREATE MEMBER CURRENTCUBE.[Measures].[Count Improvements] AS
SUM(IIF([Measures].[Improvement] = [Measures].[Improvement base], 1, 0));

也许您必须确定改进维度的所有成员的范围才能对子项求和。

【讨论】:

  • 首先,感谢您在这个话题上对我的支持。我开始执行这些步骤。但是在我创建了“改进基础”措施之后。解决方案未能构建为“MeasureGroup [SchoolCube]。[Improvement]:不存在维度关系。度量值组“Improvement”与任何维度都不相关”。我无法将改进基础与我的尺寸联系起来。谢谢,
  • 如果您打开多维数据集设计器,您可以在设计器的第二个选项卡上找到维度使用情况。您必须将度量组“改进”(列在列中)链接到维度“改进”(您可以在行中找到)。在您的维度和度量值组的交叉点上,要么有一个带有链接描述的文本框,要么有一个灰色框。在后者中,单击灰色框右侧的省略号按钮以在维度和度量值组之间创建一个新链接。
  • 如果您的维度和度量值组都使用精确相同的表或视图(甚至查询),那么您可以选择事实关系,否则选择常规关系并选择正确的属性(通常是维度的关键属性)和正确的事实列。
猜你喜欢
  • 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
相关资源
最近更新 更多