1
votes

I've been working on an ExcelDNA C# xll that allows users to enter simple words (under guidance) and I construct the elaborate MDX for them to query against a remote ActivePivot cube.

During testing I've ntoticed that when filtering, the grand total disappears (presumably it's joining tuples together). How do I still get a grand total? Do I need to use SCOPE or create a calculated member?

Thanks to more advanced MDX people:

SELECT 
  NON EMPTY 
    {
      [Measures].[Notional.SUM]
     ,[Measures].[Notional.SHORT]
     ,[Measures].[Notional.LONG]
    } ON COLUMNS
 ,NON EMPTY 
    Hierarchize
    (
      Filter
      (
        (
          [CDR].[CDR].MEMBERS
         ,[Book].[Book].MEMBERS
        )
       ,
        Left([Book].[Book].CurrentMember.MemberValue,2) = "22"
      )
     ,POST
    ) ON ROWS
FROM [TraderCube]
WHERE 
  [Date].[Date].[2020-01-24];
1
So you are after an addition of a Total row? - whytheq
Hi. yes, by default I get a grand total row on normal queries but when I filter this total row disappears (i'm guessing you get back a joined set of the tuples you wanted) and do I have to specify an aggregation / sum calculated total row? - TilleyTech

1 Answers

1
votes

The following is something similar against AdvWrks cube:

WITH 

  //>>inside the WITH clause we have moved the set
  SET [FilteredSet] AS 
    {
      Filter
      (
        [Reseller].[Reseller Type].[Business Type].MEMBERS
       ,
          Left([Reseller].[Reseller Type].CurrentMember.MemberValue,2) = "sp"
        OR 
          Left([Reseller].[Reseller Type].CurrentMember.MemberValue,2) = "VA"
      )
    } 

  //>>next we create a custom member that is the sum of the filtered set 
  MEMBER [Reseller].[Reseller Type].[All Visible Resellers] AS 
    Aggregate([FilteredSet]) 
SELECT 
  NON EMPTY 
    {[Measures].[Reseller Sales Amount]} ON COLUMNS
 ,NON EMPTY 

    //>> inside these curly brackets we declare a set that is the filtered set and the Total member
    { 
      [FilteredSet]
     ,[Reseller].[Reseller Type].[All Visible Resellers]
    } ON ROWS
FROM [Adventure Works]
WHERE 
  [Date].[Calendar].[Calendar Year].&[2013];

The results of the above is the following:

enter image description here