Ich möchte eine berechnete Measure erstellen, die nur eine bestimmte Teilmenge von Datensätzen in meiner Faktentabelle basierend auf einem Dimensionsattribut zusammenfasst.Wie definiere ich ein berechnetes Measure in MDX basierend auf einem Dimensionsattribut?
Gegeben:
Dimension
- Datum
- LedgerLineItem {Gebühr, Zahlung, Ausbuchung, Copay, Kredit}
Maßnahmen
- LedgerAmount
Beziehungen
* LedgerLineItem ist eine degenerierte Dimension von FactLedger
Wenn ich LedgerAmount von LedgerLineItem.Type brechen kann ich leicht erkennen, wie viel geladen ist, bezahlt, Kredit, usw., aber wenn ich dies nicht tun break it by LedgerLineItem.Type Ich kann nicht einfach das Guthaben, bezahlte, Kredit, etc. in eine Pivot-Tabelle hinzufügen. Ich möchte separate berechnete Kennzahlen erstellen, die nur bestimmte Typen (oder mehrere Typen) von Sachfakten zusammenfassen.
Ein Beispiel für die gewünschte Ausgabe wäre:
| Year | Charged | Total Paid | Amount - Ledger |
| 2008 | $1000 | $600 | -$400 |
| 2009 | $2000 | $1500 | -$500 |
| Total | $3000 | $2100 | -$900 |
ich versucht habe, die berechnete Kennzahl ein paar Möglichkeiten, und jeder arbeitet in einigen Fällen zu schaffen, aber nicht in anderen. Jetzt, bevor jemand dies in ETL sagt, habe ich es bereits in ETL getan und es funktioniert gut. Was ich versuche, MDX besser zu verstehen, ist herauszufinden, wie ich das, was ich in der ETL in MDX gemacht habe, duplizieren kann, da ich das bisher nicht kann.
Hier sind zwei Versuche, die ich gemacht habe und die Probleme mit ihnen. Dies funktioniert nur, wenn sich der Ledger-Typ in der Pivot-Tabelle befindet. Es gibt die richtige Menge der Sachposten (obwohl in diesem Fall ist es identisch mit [Menge - Buch], aber wenn ich versuche, Typ zu entfernen, und erhalten nur die Summe aller Ledger Einträge unbekannt, gibt
CREATE MEMBER CURRENTCUBE.[Measures].[Received Payment]
AS CASE WHEN ([Ledger].[Type].currentMember = [Ledger].[Type].&[Credit])
OR ([Ledger].[Type].currentMember = [Ledger].[Type].&[Paid])
OR ([Ledger].[Type].currentMember = [Ledger].[Type].&[Held Money: Copay])
THEN [Measures].[Amount - ledger]
ELSE 0
END
, FORMAT_STRING = "Currency"
, VISIBLE = 1
, ASSOCIATED_MEASURE_GROUP = 'Ledger' ;
. Dies funktioniert nur, wenn der Ledger-Typ nicht in der Pivot-Tabelle ist. Es gibt immer den gesamten Zahlungsbetrag zurück, was beim Aufteilen nach Typ falsch ist, da ich nur den Kreditanteil, den bezahlten Anteil, unterbezahlt sehen würde. $ 0 unter Ladung usw.
CREATE MEMBER CURRENTCUBE.[Measures].[Received Payment]
AS sum({([Ledger].[Type].&[Credit]), ([Ledger].[Type].&[Paid])
, ([Ledger].[Type].&[Held Money: Copay])}
, [Measures].[Amount - Ledger])
, FORMAT_STRING = "Currency"
, VISIBLE = 1
, ASSOCIATED_MEASURE_GROUP = 'Ledger' ;
gibt es eine Möglichkeit, dies die richtigen Zahlen zu machen Rückkehr unabhängig davon, ob Ledger.Type ist enthalten d in meiner Pivot-Tabelle oder nicht?
Sie rocken! Das ist GENAU, wonach ich gesucht habe. –