Frage

Ich brauche ein berechnetes Element in MDX (dies ist SAS OLAP, aber ich würde schätzen Antworten von Leuten, die ohnehin mit unterschiedlichen OLAP-Implementierungen arbeiten) zu definieren.

Die Wert der neuen Maßnahme sollte durch Anlegen eine zusätzliche Filterbedingung aus einer bestehenden Maßnahme berechnet werden. Ich nehme an, es wird mit einem Beispiel klarer sein:

  • Vorhandene Maßnahme: "Gesamtverkehr"
  • Vorhandene Dimension: "Direction" ( "In" oder "Out")
  • Ich brauche ein berechnetes Element "Incoming-Verkehr" zu schaffen, die "Total Traffic" mit einem zusätzlichen Filter (Direction = "In")
  • gleich

Das Problem ist, dass ich weiß, MDX nicht, und ich bin auf einen sehr engen Zeitplan (so leid für einen Neuling Frage). Das Beste, was ich tun konnte, ist:

([Measures].[Total traffic], [Direction].[(All)].[In])

Welche fast funktioniert, mit Ausnahme der Zellen mit spezifischer Richtung:

example

So ist es, wie die „intrinsischen“ Filter auf Richtung schaut mit meinem eigenen Filter außer Kraft gesetzt). Ich brauche einen Schnittpunkt der „inneren“ Filter und meine eigenen. Mein Bauchgefühl war, dass es mit Schneidene [Direction].[(All)].[In] mit den inneren Koordinaten der Zelle zu tun hat, wird ausgewertet, aber es ist schwer zu wissen, was ich brauche, ohne vorher über das Thema lesen up:)

[Bearbeiten] Ich landete mit

IIF([Direction].currentMember = [Direction].[(All)].[Out],
    0,
    ([Measures].[Total traffic], [Direction].[(All)].[In])
)

.. aber zumindest in SAS OLAP dies verursacht zusätzliche Abfragen durchgeführt werden, um den zugrunde liegenden Datensatz (den Wert für [in] zu berechnen), so habe ich es nicht am Ende verwendet werden.

War es hilfreich?

Lösung

Um damit zu beginnen, eine neue berechnete Kennzahl in Ihrem MDX definieren kann, und sagen Sie ihm den Wert einer anderen Maßnahme zu verwenden, aber mit einem Filter angewandt:

WITH MEMBER [Measures].[Incoming Traffic] AS
'([Measures].[Total traffic], [Direction].[(All)].[In])'

Wenn Sie die neue Maßnahme auf einen Bericht zeigen, wird es sich verhalten, als ob es einen Filter hat ‚Direction> In‘ auf sie, und zwar unabhängig davon, ob die Richtung Dimension überhaupt verwendet wird.

Aber in Ihrem Fall sollten Sie die Richtung Dimension precendence nehmen, wenn verwendet .... so die Dinge ein wenig chaotisch. Sie müssen erkennen, wenn diese Dimension in Gebrauch ist, und entsprechend handeln:

WITH MEMBER [Measures].[Incoming Traffic] AS
'IIF([Direction].currentMember = [Direction].[(All)].[Out],
    ([Measures].[Total traffic]),
    ([Measures].[Total traffic], [Directon].[(All)].[In])
)'

Um zu sehen, ob die Dimension verwendet wird, überprüfen wir, ob die aktuelle Zelle wird mit OUT. Wenn ja, können wir Gesamtverkehr zurück, wie sie ist. Wenn nicht, können wir es sagen, in unserem Tupel verwenden IN.

Andere Tipps

Ich denke, Sie eine Spalte in der Gesamtverkehrsfaktentabelle für IN / OUT-Anzeige & erstellen Dim Tabelle für die IN & Out Werte setzen sollten. Anschließend können Sie auf Ihre Daten in & out analysieren.

Werfen Sie auch einen Blick auf diese Frage , beschreibt es das gleiche Problem und es gibt eine andere Antwort dort.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top