2017-07-14 3 views
0

Pour la vie de moi ne peut pas comprendre pourquoi le MDX dans SSAS n'acceptera pas mon paramètre de date. J'ai un ensemble de données qui fonctionne MDX qui a un paramètre de mois qui prend un mois et une année (voir la capture d'écran inclus). J'ai une déclaration sql qui sort plusieurs mois/années afin que l'utilisateur puisse choisir un mois/année mais quand vous allez exécuter le rapport et sélectionnez le mois qu'il donne à la fonction strtoset violé erreur. Je ne suis pas sûr de ce qui me manque ici. MDX statement taking in the sql supplied variableLes restrictions imposées par le drapeau Constrained dans la fonction strtoset ont été violées - insertion de la chaîne sql dans mdx

La sortie sql (qui va dans le paramètre ressemble à ceci (ci-dessous) ...

Avril 2017 mai 2017 Juin 2017 Juillet 2017 .... Il correspond parfaitement la façon dont les valeurs des dates mdx sont mises en forme

Répondre

0

le paramètre a sélectionner plusieurs? Il semble que vous avez plusieurs mois que vous apposent dans l'élément une date.

Je suppose que Time.calendar mois.April 2017 fonctionnerait tout seul? Vous ne savez pas quelle est la qualité de votre MDX, mais l'erreur contrainte indique que les membres de votre dimension ne sont pas valides.

Si c'est sélectionner plusieurs éléments que vous auriez besoin de quelque chose comme

StrToSet ( Time.calendar months.april 2017, Time.calendar months.may 2017, ..... )

+0

Il est multi-sélection qui semble être le problème. Merci. Je l'ai changé pour que vous ne puissiez choisir qu'une seule valeur. Aurais-je simplement encapsider le code de paramètre entier avec la fonction strtoset() si je voulais qu'il soit à nouveau multisélect? Je ne suis pas sûr de savoir comment utiliser correctement cette fonctionnalité dans ce scénario. – MattyKluch

0

J'essaierais de regarder la fonction SSR JOIN. Cela combine des valeurs Param à plusieurs valeurs avec un séparateur.

en supposant que vos valeurs PARAM sont comme Time.calendar months.blah alors vous pouvez avoir quelque chose comme

StrToSet (rejoindre (param.value, ""))

Peut-être pas la syntaxe exacte, mais vaut la peine un pièce.