2016-11-10 3 views
0

Ich versuche, eine MDX-Abfrage zu schreiben, um einige Informationen zu Umfragefragen zurückzugeben. Ich möchte eine durchschnittliche Antwort und Gesamtantworten in meinen Ergebnissen. Ich habe zwei Arten von Fragen. Eine Art von Frage hat eine einzige Antwort. Ein anderer Fragetyp kann mehrere Antworten haben (Wählen Sie alle zutreffenden Antworten aus). Jede Frage ist an eine Frage-ID und eine Antwort-ID gebunden. Die folgende Abfrage funktioniert (etwas)So erhalten Sie eine Anzahl von Distinct Dimension-Werten in einer SSAS-MDX-Abfrage

Select NON EMPTY 
    { 
    [Measures].[Average Response], [Measures].[Total Count] 
    } ON 0 
, NON EMPTY 
    { 
    ([Question].[Question ID].[Question ID].ALLMEMBERS) 
    } ON 1 
From [Cube] 

Average Response ist eine Kombination aus beiden Einzelantworten und mehrere Antworten (zwei verschiedene Faktentabellen). Die Gesamtanzahl ist auch eine Kombination der beiden Tabellen. Das Problem ist, dass ich für einzelne Antwortfragen nur die Anzahl der Befragten zählen kann. Für Multi-Response-Fragen, die fallen, da ich viel mehr Antworten haben kann als ich die Umfrageteilnehmer. Ich möchte wirklich wissen, wie viele Leute eine Antwort gegeben haben. Um dies zu tun, denke ich, dass ich die eindeutige Anzahl der Befragten-IDs benötige. Also habe ich versucht meine erste Achse zu ändern.

[Measures].[Average Response], [Measures].[Total Count], DISTINCTCOUNT([Respondent].[Respondent ID]) 

Nun, das funktioniert nicht und ich habe es wirklich nicht erwartet. Ich habe "Die Funktion erwartet einen Tupel Satz Ausdruck für die 3-Argument. Ein String oder ein numerischer Ausdruck wurde verwendet." das wird schnell meine Lieblings-SSAS-Fehlermeldung. Ich bin immer noch grün und denke ich denke immer noch an SQL. Wie kann ich einen Durchschnitt der Antworten und eine Anzahl der verschiedenen Dimension-Werte in derselben Abfrage abrufen. BTW, meine Abfrage hat einen Slicer und ich könnte das bei Bedarf bereitstellen, aber ich denke nicht, dass es relevant ist, da ich dieselben Probleme mit oder ohne Slicer bekomme.

Antwort

0

Bei der Arbeit mit der MDX DistinctCount-Funktion wird die Anzahl der unterschiedlichen, nicht leeren Tupel eines bestimmten Datensatzes zurückgegeben. Vielleicht versucht, etwas zu tun wie

DistinctCount({[Respondent].[Respondent ID].members * [Measures].[Total Count]})

so dass, wie Sie mit einem Satz arbeiten (z {...}) von Daten.

Wenn Sie mit einer größeren Datenmenge arbeiten, sollten Sie möglicherweise die Erstellung einer Distinct Count-Messung in Betracht ziehen. Die DistinctCount-Funktion selbst ist eine SSAS Formula Engine-Abfrage, während die Verwendung von Distinct Count measure es Analysis Services ermöglicht, sowohl die Speicher-Engine als auch die Formula Engine zu verwenden. Weitere Informationen finden Sie unter Analysis Services Distinct Count Optimization.

+0

Ich habe versucht, was Sie setzen, und ich bekomme meine Lieblings-Nachricht _ "Die Funktion erwartet einen Tupel Satz Ausdruck für die 1 Argument. Ein String oder ein numerischer Ausdruck wurde verwendet." _ Auch, wenn ich versuche, es zusammen mit dem Durchschnitt zu verwenden Ich bekomme _ "Mitglieder, Tupel oder Mengen müssen die gleichen Hierarchien in der Funktion verwenden." _ Der frustrierende Teil ist, ich weiß genau, wie man das in SQL macht. –

+0

Ich kann mich einfühlen - ich bin immer noch ziemlich mies bei MDX und mache seit Jahren SSAS ;-). Wenn Sie die Funktion "distinctcount" ausführen, was passiert, wenn Sie manuell einen Satz erstellen, z. 'mit gesetztem myset als '{[Beklagter]. [Bearbeiter-ID]. & [Q1], [Beklagter]. [Bearbeiter-ID]. & [Q2], [Beklagter]. [Bearbeiter-ID]. & [Q3]}' '(Aktualisieren Sie die Frage Mitglieder wie geeignet) und sehen, ob Sie eine Antwort zurück erhalten können? –

Verwandte Themen