2016-08-03 1 views
0

Je suis nouveau sur mdx Query et je voudrais demander comment nous pouvons écrire la requête MDX avec la clause dynamic where. Par exemple j'ai une liste d'ID d'employé qui passera à la procédure en tant que valeurs séparées par des virgules '1,2,3,4'. Cette liste peut contenir n'importe quel ID employé. Dans mdx je veux quelque chose comme la clause IN que nous utilisons normalement dans les requêtes SQL. Je ne veux pas donner de valeurs statiques dans la clause MDX Where comme ceci {[Member]. [Member Key]. & [1], [Membre]. [Clé de membre]. & [2], [Membre]. [Clé de membre]. & [3], [Membre]. [Clé de membre]. & [4]}. Est-ce que cette chose peut être accomplie par la clause dynamic where où je peux passer n'importe quelle valeur au paramètre storedprocedure?Dynamic Where Clause Utilisation de la requête MDX

Merci

+0

Travaillez dessus un peu et partagez du code. Je ne connais pas MDX mais avec des procédures stockées normales, vous enverriez votre liste, l'analyserais en paramètres et créeriez une variable. Ensuite, écrivez votre clause where en tant que variable @query = 'Sélectionnez .... où' + @ précédemmentcreatedvariable puis exécutez exec (@query) – Missy

+0

utilisez-vous ssrs? – whytheq

+0

Non, j'utilise Ssas. En fait, j'optimise ma requête sql dans un cube en utilisant la requête mdx – Atif

Répondre

0

Vous pouvez créer dynamiquement la clause where de la même manière que vous avez écrit, mais avec la fonction StrToMember/StrToSet. Par conséquent, au lieu de: {[Membre]. & [1], [Membre]. [Clé de membre]. & [2], [Membre]. [Clé de membre]. & [3], [Membre]. [Clé de membre]. & [4]}

Il deviendra

strtoset("{[Member].[Member Key].&[1], [Member].[Member Key].&[2], [Member].[Member Key].&[3], [Member].[Member Key].&[4]}",false) //Or true if you want it to have constrained 

Si elle est SSRS, vous faites le calcul dans le paramètre et le MDX deviendra quelque chose comme StrToSet (@ parameter.value, false) et vous utilisez des fonctions de chaîne pour définir la valeur de paramètre correcte. Ce sera le même concept lors de l'utilisation de différents outils (pas SSRS).

Les paramètres ne sont pas codés en dur et peuvent être facilement modifiés avec des fonctions de chaîne. Si la chaîne transmise au MDX est un nom de membre/ensemble qualifié, elle fonctionnera correctement. Maintenant, vous aurez juste besoin d'utiliser les fonctions de chaîne pour changer la chaîne

1,2,3,4 to become - {[Member].[Member Key].&[1], [Me...