2009-08-18 11 views
2

Ich bin sehr viel Neuling bei MDX und habe keine Ahnung, wie ich dieses Problem angehen soll. Ich würde mich über jede Hilfe freuen, auch wenn es nur Hinweise darauf gibt, wo relevante Funktionen erklärt werden.MDX-Fähigkeit, das Verhältnis von Summen von untergeordneten Ebenen zu berechnen

Ich muss in der Lage sein, das Verhältnis der Summen zu berechnen, wobei der Zähler ein triviales SUM-Maß ist, aber der Nenner die Summe der dimensionsspezifischen Werte ist. Für diejenigen, die mit der Versicherungsbranche vertraut sind, ist dies eine Berechnung "pro Mitglied pro Monat".

Unsere Zeitdimension, auf der niedrigsten Ebene (Monat), hat eine zugeordnete "Anzahl der Mitglieder" numerisch. Wenn Sie die Monatsstufe ansehen, ist unsere Kennzahl die einfache Summe von "bezahlter Betrag/Mitglieder für diesen Monat". Wir haben dieses Problem, indem wir die Verhältnisse als eine Spalte in der Fakten-Tabelle vorberechnen und ein SUM-Maß für diese Spalte definieren.

Wenn Sie jedoch eine Schicht oberhalb der monatlichen Ebene anzeigen, ist diese Summe der Verhältnisse nicht mehr anwendbar. Vielmehr brauchen wir einen Durchschnitt bezahlter Beträge. Wenn ich also eine Jahresachse betrachte, muss ich die bezahlten Beträge für alle Monate addieren und diese Summe durch die Summe der Mitglieder für jeden Monat teilen. Wie kann ich die Mitgliederanzahl für jeden einzelnen Monat erfassen und addieren? Wir haben eine Spalte in unserer Faktentabelle, um diesen monatlichen Wert zu halten, so dass der benötigte Wert vorhanden ist.

Pseudo-SQL für die Berechnung dieses Nenners wäre etwas wie "select Summe (Mitglieder) als Nenner aus ausgewählten Mitgliedern Gruppe für Monat".

Irgendwelche Ideen?

Antwort

1

So klingt es wie number of members ist eine numerische Eigenschaft auf Time. Wirklich, es sollte wahrscheinlich eine Maßnahme sein. Aber ich weiß, wie diese Dinge gehen. Wie auch immer, würde ich eine berechnete Kennzahl dafür schaffen, etwa so:

create member currentcube.[Measures].[Month Members] as 
    ([Time].[YQM].CurrentMember.Properties("number of members")), 
visible = 0; 

Dann würde ich eine weitere Maßnahme machen, die die Summe von, dass über war alles, was Monat du bist bei:

create member currentcube.[Measures].[Number of Members] as 
    sum(({Descendants([Time].[YQM].CurrentMember, [Time].[YQM].[Month]} 
     ,[Measures].[Month Members])), 
visible = 1; 

Nun wird Ihre Frage einfach mit der folgenden Formel beantwortet:

create member currentcube.[Measures].[Paid per members per month] as 
    ([Measures].[Paid])/([Measures].[Number of Members]), 
visible = 1; 

Allerdings, wenn ich mich waren und Design über diese, [Anzahl der Mitglieder] eine native Maßnahme nicht ein berechneter einer wäre. Die Leistung ist viel besser, und es macht das Leben ein Los einfacher.

+0

Eric, danke für deine Antwort. Eine dimensionale Eigenschaft ist genau das, was ich seit meiner ursprünglichen Veröffentlichung untersucht habe, und es ist ermutigend zu sehen, dass Ihre Idee das gleiche suggeriert. Lassen Sie mich dies übernehmen und Sie wissen, die Ergebnisse. –