Ich arbeite mit einem SSAS Cube und Datazen (Dashboard Creator). Ich habe eine Datensicht (für die valueCode 'AZE') mit 3 Parametern:MDX Abfrage mit Parametern mit mehreren Werten und Nullwert
AgeClassCode: 'AGE01', 'AGE02', 'AGE03', ...
StatutCode: ' A‘, 'B', 'C', 'D', ...
NiveauCode: 'X', 'Y', 'W', ...
Mit dieser Abfrage, wenn Ich benutze mehrere Werte oder nur einen Wert für jeden, es funktioniert. Aber ich möchte, dass die Abfrage alle Werte für einen Parameter zurückgibt, wenn der Wert des Parameters null ist. Ich habe getestet isEmpty (@param), isEmpty (StrToSet (@param)), ... aber das diesen Fehler zurückgibt:
An mdx expression was expected. An empty expression was specified.
Diese Abfrage funktioniert für einen oder mehrere Werte:
SELECT
NON EMPTY
{
[Measures].[Value], [Measures].[PreviousValueYear], [Measures].[PreviousValueReportMonth]
} ON COLUMNS,
NON EMPTY
{
NONEMPTY
(
[EntiteFederal].[ServiceCode].[ServiceCode].ALLMEMBERS *
[EntiteFederal].[EntiteCode].[EntiteCode].ALLMEMBERS *
[ReportMonth].[ReportMonth].[ReportMonth].ALLMEMBERS *
[T].[Year].[Year].ALLMEMBERS
)
} DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS
FROM
(
SELECT ({ [ValueType].[ValueCode].&[AZE] }) ON COLUMNS
FROM (
SELECT (STRTOSET('{{ @AgeClassCode }}')) ON COLUMNS
FROM (
SELECT (STRTOSET('{{ @NiveauCode }}')) ON COLUMNS
FROM
(
SELECT ((STRTOSET('{{ @StatutCode }}')) ON COLUMNS
FROM [MyCube]
)
)
)
)
WHERE
(
IIF(STRTOSET('{{ @StatutCode }}').Count = 1, STRTOSET('{{ @StatutCode }}'), [Statut].[StatutCode].currentmember),
IIF(STRTOSET('{{ @NiveauCode }}').Count = 1, STRTOSET('{{ @NiveauCode }}'), [Niveau].[NiveauCode].currentmember),
IIF(STRTOSET('{{ @AgeClassCode }}').Count = 1, STRTOSET('{{ @AgeClassCode }}'), [AgeClass].[AgeClassCode].currentmember),
[ValueType].[ValueCode].&[AZE]
)
Was muss ich ändern?
EDIT:
die StrToSet Um zu testen,()
ist die gute Lösung die
isError()
Es gibt keine Möglichkeit, es in der Software zu ändern, es ist Auswahlliste Navigator basierend auf meiner Dimension. Der Fehler tritt auf, wenn kein Wert ausgewählt ist. Ich habe auch versucht, den Parameter AgeClassCode wie folgt zu ändern: 'IIF (ISEMPTY ('{{@AgeClassCode}}'), [AlterKlasse]. [AgeClassCode] .Members, STRTOSET ('{{@AgeClassCode}} ')) ' Und ich habe die WHERE-Klausel gelöscht, aber immer noch den gleichen Fehler. – Huojian
Es tut mir leid, aber ich habe nicht mit der Schnittstelle von Datazen gespielt. Sie müssen gültige MDX-Strings in strToSet oder strToMember einspeisen - wenn Sie also nichts wollen, versuchen Sie es mit '{}' oder wenn Sie möchten, dass jedes Mitglied etwas wie '[AgeClassCode]. [AgeClassCode]. [AgeClassCode] .members 'hat. Füttern NULL in StrToSet, StrToMember oder ISEMPTY werden alle fehlschlagen. ISEMPTY benötigt einen gültigen mdx-Ausdruck als Argument. – whytheq