MDX equivalent to SQL subqueries with aggregation

Posted by James Lampe on Stack Overflow See other posts from Stack Overflow or by James Lampe
Published on 2009-02-27T17:52:14Z Indexed on 2010/03/13 5:05 UTC
Read the original article Hit count: 482

Filed under:
|
|

I'm new to MDX and trying to solve the following problem. Investigated calculated members, subselects, scope statements, etc but can't quite get it to do what I want.

Let's say I'm trying to come up with the MDX equivalent to the following SQL query:

SELECT SUM(netMarketValue) net, 
  SUM(CASE WHEN netMarketValue > 0 THEN netMarketValue ELSE 0 END) assets,
  SUM(CASE WHEN netMarketValue < 0 THEN netMarketValue ELSE 0 END) liabilities,
  SUM(ABS(netMarketValue)) gross
  someEntity1
FROM (
SELECT SUM(marketValue) netMarketValue, someEntity1, someEntity2
FROM <some set of tables>
GROUP BY someEntity1, someEntity2) t
GROUP BY someEntity1

In other words, I have an account ledger where I hide internal offsetting transactions (within someEntity2), then calculate assets & liabilities after aggregating them by someEntity2. Then I want to see the grand total of those assets & liabilities aggregated by the bigger entity, someEntity1.

In my MDX schema I'd presumably have a cube with dimensions for someEntity1 & someEntity2, and marketValue would be my fact table/measure. I suppose i could create another DSV that did what my subquery does (calculating net), and simply create a cube with that as my measure dimension, but I wonder if there is a better way. I'd rather not have 2 cubes (one for these net calculations and another to go to a lower level of granularity for other use cases), since it will be a lot of duplicate info in my database. These will be very large cubes.

© Stack Overflow or respective owner

Related posts about mdx

Related posts about ssas