Ich bin neu in MDX und versuche, das folgende Problem zu lösen. Untersucht berechnete Mitglieder, Subselects, Scope-Statements usw., kann es aber nicht ganz machen, was ich will.MDX entspricht SQL-Unterabfragen mit Aggregation
Sagen wir, ich versuche mit dem MDX entspricht der folgenden SQL-Abfrage zu kommen:
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
Mit anderen Worten, ich habe ein Konto Buch, wo ich Verrechnungen Transaktionen verbergen (innerhalb someEntity2), Berechnen Sie dann die Aktiva & Verbindlichkeiten, nachdem sie von someEntity2 aggregiert wurden. Dann möchte ich die Gesamtsumme dieser Vermögenswerte sehen & Verbindlichkeiten von der größeren Einheit, someEntity1 aggregiert.
In meinem MDX-Schema hätte ich vermutlich einen Würfel mit Dimensionen für einigeEntity1 & someEntity2, und MarketValue wäre meine Faktentabelle/Maßnahme. Ich nehme an, ich könnte einen anderen DSV erstellen, der das tut, was meine Unterabfrage tut (Rechennetz), und einfach einen Würfel damit als meine Maßdimension erstellen, aber ich frage mich, ob es einen besseren Weg gibt. Ich hätte lieber keine 2 Würfel (einen für diese Nettoberechnungen und einen anderen, um für andere Anwendungsfälle auf eine niedrigere Granularitätsstufe zu wechseln), da es viele doppelte Informationen in meiner Datenbank geben wird. Diese werden sehr große Würfel sein.