2016-06-15 13 views
3

ich meine Dimension haben wie folgt:CURRENT Funktion gibt einen Fehler in MDX

Market Base Dimension

ich einen Markt zu einem Zeitpunkt erhalten möchten.

Wenn ich diese Abfrage verwenden, erhalte ich die Liste aller Mitglieder, wie ich .Members Funktion bin mit:

SELECT [MARKET BASE].[Market Base].[Market Base].MEMBERS ON 1, 
[Measures].[% OTC Sales] ON 0 
FROM [PharmaTrend Monthly Ext]; 

Aber wenn ich die folgende Abfrage verwenden Sie nur das aktuelle Element zu erhalten dann bekomme ich ein Fehler sagt: Die CURRENTMEMBER-Funktion erwartet einen Hierarchieausdruck für das Argument 1. Ein Mitgliedsausdruck wurde verwendet.

SELECT [MARKET BASE].[Market Base].[Market Base].CURRENTMEMBER ON 1, 
[Measures].[% OTC Sales] ON 0 
FROM [PharmaTrend Monthly Ext]; 

UPDATE:

Wenn ich die folgende Abfrage verwenden, erhalte ich das Ergebnis mit All member:

WITH 
MEMBER [Market] AS 
    [MARKET BASE].[Market Base].[Market Base].CURRENTMEMBER 

SELECT [Measures].[% OTC Sales] ON 0, 
     [Market] ON 1 
FROM [PharmaTrend Monthly Ext]; 

Wie kann ich mich über diese Lösung?

+0

Was denken Sie ist "das aktuelle Mitglied"? Wenn Sie nicht gerade über Elemente der Dimension iterieren, gibt es keine. Es ist nicht klar, was das Ergebnis Ihrer Abfrage sein soll. –

+0

Was ich eigentlich will, ist, dass alle Dimensionsmitglieder in einer anderen Sprache angegeben sind. Ich möchte jeden von ihnen eins nach dem anderen wiederholen und die englische Übersetzung für jeden von ihnen in meinem SSRS Bericht geben. –

+0

Die obige Abfrage, die ich versuche, ist nur eine Idee, wie Sie jede von ihnen dynamisch durchlaufen –

Antwort

2

CURRENTMEMBER wird implizit ausgewählt, wenn Sie ein Element aus der Hierarchie in Scope haben und auf der Achse angeordnet sind. Standardmäßig ist es das ALL Mitglied.

WITH MEMBER [Measures].[Market] AS 
[MARKET BASE].[Market Base].CURRENTMEMBER.NAME 

SELECT [MARKET BASE].[Market Base].[Market Base].MEMBERS ON 1, 
{[Measures].[% OTC Sales], [Measures].[Market]} ON 0 
FROM [PharmaTrend Monthly Ext]; 

Dies wird den Namen des aktuellen ausgewählten Marktes oder auf der Achse (im Bereich) zurückgeben.

1

Genau um Chaps - currentmember iteriert nicht über irgendetwas in mdx. Keiner der mdx, die ich im Originalbeitrag sehe, benutzt irgendeine Art von Iteration.

Diese Funktion ist so nah wie Sie in mdx zu einer Schleife erhalten:

GENERATE 

Auch kann als Iterator gedacht werden, filtern.

CURRENTMEMBER wird in der Regel in einer WITH Klausel für Verrechnungen verwendet. Was es tut, ist das aktuelle Mitglied für jedes Mitglied, das im Kontext ist abholen - das bedeutet im Grunde, was Sie in der Ergebnistabelle sehen.