【问题标题】:Wrong Total and IIF or Case-When conditon in MDXMDX 中的总计和 IIF 或 Case-When 条件错误
【发布时间】:2016-05-30 10:00:31
【问题描述】:

让我解释一下我想要实现的目标。我有一个 [Dim Account] 维度,它具有 [Account Type]、[Account Activity]、[Account Marketing] 等属性。[Account Type] 是收入、费用、.. [Account Activity] 就像广告、折扣, 赞助销售等 [Account Marketing] 是这些东西的组合,我的意思是广告是费用,而折扣存储为负收入,因此最终折扣将被视为营销费用这就是为什么我的会员 [Negative Total] 正在转换收入乘以-1,我想排除这些收入是正数,因为它们是收入。我只想显示那些转换后的收入,最后把它们加起来。在我的 MDX 中,数据显示完美,但由于
而匿名添加 [Dim Account].[Account Activity].CURRENTMEMBER 的条件是 [Dim Account].[Account Activity].[All] 当我想用原始收入(650,920.88)累积时,它会出现意想不到的大数字。我需要的另一个解决方案我想将营销费用(24010.44)与已经转换的负营销收入(43380.4+9181.32)相加,所以最终结果应该是 76572.16,就像我编辑的图片一样。请修改我的 MDX。

WITH 
  //MEMBER [Measures].[Negative Total Test] AS -- (1)
  //CASE
  //    WHEN ([Measures].[Total],[Dim Account].[Account Marketing].&[Income]&[Marketing]) < 0
  //    THEN [Measures].[Total]*-1
  //    WHEN ([Measures].[Total],[Dim Account].[Account Marketing].&[Income]&[Marketing]) > 0
  //    THEN NULL
  //    ELSE
  //    [Measures].[Total]
  //END
  MEMBER [Measures].[Negative Total Test] AS 
    CASE 
      WHEN 
              [Dim Account].[Account Marketing].CurrentMember.Member_Caption
            = "Marketing"
          AND 
            [Dim Account].[Account Marketing].Properties("Account Type") = "Income"
        AND 
          [Measures].[Total] < 1 
      THEN 
        [Measures].[Total] * -1
      WHEN 
              [Dim Account].[Account Marketing].CurrentMember.Member_Caption
            = "Marketing"
          AND 
            [Dim Account].[Account Marketing].Properties("Account Type") = "Income"
        AND 
          [Measures].[Total] > 1 
      THEN NULL
      ELSE 
        [Measures].[Total]
    END 
  MEMBER [Measures].[Negative Total] AS 
    CASE 
      WHEN 
          [Dim Account].[Account Activity].CurrentMember
        IS 
          [Dim Account].[Account Activity].[All] 
      THEN 
        Sum
        (
          [Dim Account].[Account Activity].[Account Activity].MEMBERS
         ,[Measures].[Negative Total Test]
        )
      ELSE 
        [Measures].[Negative Total Test]
    END 
  //MEMBER [Dim Account].[Account Activity].[TOTAL] AS
  //    [Dim Account].[Account Activity].[All]
  MEMBER [Dim Account].[HierarchyMarketing].[Total Marketing Expense] AS 
    Aggregate
    (
      {
        [Dim Account].[Account Marketing].&[Income]&[Marketing]
       ,[Dim Account].[Account Marketing].&[Expenses]&[Marketing]
      }
     ,[Measures].[Negative Total Test]
    ) 
SELECT 
  {
    [Measures].[Total]
   ,[Measures].[Negative Total]
  } ON COLUMNS
 ,NON EMPTY 
    (
      {
          [Dim Account].[HierarchyMarketing].[Account Type].&[Income]
        * 
          {VisualTotals([Dim Account].[Account Activity].[All])}
       ,
          {
            [Dim Account].[HierarchyMarketing].[Account Marketing].&[Expenses]&[Marketing]
           ,[Dim Account].[HierarchyMarketing].[Account Marketing].&[Income]&[Marketing]
          }
        * 
          [Dim Account].[Account Activity].[Account Activity].MEMBERS
       ,(
          [Dim Account].[HierarchyMarketing].[Total Marketing Expense]
         ,VisualTotals([Dim Account].[Account Activity].[All])
        )
      }
     ,[Dim Branch].[Trading As].&[BAR]&[Barlens Event Hire]
     ,[Dim Scenario].[Scenario Name].&[Actual]
     ,[Dim Fiscal Year].[HierarchyFiscal].[E Month].&[2016]&[December]
    ) ON ROWS
FROM [CubeProfitLoss];

【问题讨论】:

  • 有没有人知道的解决方案?请帮帮我

标签: mdx


【解决方案1】:

哇!我得到了答案,这就是我要找的东西。什么都没有,只是改变了【阴性总测试】的显示。 enter image description here

WITH
MEMBER [Measures].[Negative Total Test] AS
CASE
    WHEN
        [Dim Account].[Account Marketing].CurrentMember.MEMBER_CAPTION="Marketing" AND
        [Dim Account].[Account Marketing].Properties("Account Type") ="Income" AND
        [Measures].[Total]<1
    THEN [Measures].[Total]*-1

    WHEN 
        [Dim Account].[Account Marketing].CurrentMember.MEMBER_CAPTION="Marketing" AND
        [Dim Account].[Account Marketing].Properties("Account Type") ="Income" AND
        [Measures].[Total]>1 
    THEN NULL
	ELSE 
		[Measures].[Total]
END

MEMBER [Measures].[Negative Total] AS
CASE
	WHEN  [Dim Account].[Account Activity].CURRENTMEMBER IS  [Dim Account].[Account Activity].[All]
	THEN 
	SUM(
        [Dim Account].[Account Activity].[Account Activity].MEMBERS,
        [Measures].[Negative Total Test]
       )
   ELSE [Measures].[Negative Total Test]
END

MEMBER [Dim Account].[HierarchyMarketing].[Income] AS
	([Dim Account].[HierarchyMarketing].[Account Type].&[Income], [Measures].[Negative Total])

MEMBER [Dim Account].[HierarchyMarketing].[Total Marketing Expense] AS
 AGGREGATE
 (
 {
	[Dim Account].[Account Marketing].&[Income]&[Marketing]
	,
	[Dim Account].[Account Marketing].&[Expenses]&[Marketing] 
 }
 ,
 [Measures].[Negative Total]
 )

SELECT
 {
	//[Measures].[Total], [Measures].[Negative Total], 
	[Measures].[Negative Total Test]
 } on COLUMNS
 , 
 NON EMPTY 
 (
    {
		(
		[Dim Account].[HierarchyMarketing].[Account Type].&[Income]
		* 
		{
		[Dim Account].[Account Activity].[All]
		}	
		)
		,
        (
        {
          [Dim Account].[HierarchyMarketing].[Account Marketing].&[Expenses]&[Marketing]
            ,
			[Dim Account].[HierarchyMarketing].[Account Marketing].&[Income]&[Marketing] 
        }
        *
        [Dim Account].[Account Activity].[Account Activity].MEMBERS 
        )
        ,
        (
        [Dim Account].[HierarchyMarketing].[Total Marketing Expense]	
	    ,
		[Dim Account].[Account Activity].[All]  
        )
     }	
	,
//	Traders,
	[Dim Branch].[Trading As].&[BAR]&[Barlens Event Hire] ,
	[Dim Scenario].[Scenario Name].&[Actual]  ,
	[Dim Fiscal Year].[HierarchyFiscal].[E Month].&[2016]&[December]
 )
 on ROWS
FROM [CubeProfitLoss]
;

【讨论】:

  • 很高兴您找到了解决方案。这是不好的做法[Dim Account].[Account Marketing].CurrentMember.MEMBER_CAPTION="Marketing",您应该使用IS 运算符,例如[Dim Account].[Account Marketing].CurrentMember IS [Dim Account].[Account Marketing].[Account Marketing].[Marketing]
猜你喜欢
  • 1970-01-01
  • 2021-12-08
  • 1970-01-01
  • 2016-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
相关资源
最近更新 更多