MDX: Filtrage et de découpage sur les différents membres de la même dimension
Je suis en utilisant icCube du cube de Ventes pour en savoir MDX. Je voudrais écrire une requête MDX pour montrer les revenus de ventes en 2009 pour les pays où les revenus de ventes en 2010 était de plus de 80 000$. J'ai essayé la suivante, mais elle est revenue une table vide avec une seule colonne ([Montant]):
WITH
SET [myset] AS Filter([Country].members, ([Measures].[Amount], [2010])>80000)
select [Country].members on 0, [Amount] on 1
from (select [myset] on 0, [Amount] on 1 from [sales])
where [2009]
OriginalL'auteur AlwaysLearning | 2013-12-16
Vous devez vous connecter pour publier un commentaire.
Suffit d'utiliser
Dans MDX, ce type de requête n'a pas besoin d'une sous-sélection ou
WHERE
. Et vous avez même pu omettre l'ensemblemyset
, écritJ'ai essayé une requête similaire sur Adventure works, et il montre à Tous les Clients, l'Australie, le Canada, et NOUS, mais pas la France, l'Allemagne et le royaume-UNI:
J'ai vérifié ma requête avec les adaptations nécessaires - avec MS Adventure Works, voir mon édité réponse. Je suppose que il y a autre chose de mal avec votre requête ou de vos données.
il y a un bug dans icCube 🙁 , c'est pourquoi n'est pas de travail
OriginalL'auteur FrankPl
Mise à JOUR : Le n-uplet d'évaluation est un cas qui nous a manqué, le bogue a été corrigé dans icCube 4.2. Attention, à l'aide de la même hiérarchie d'une clause where et un axe c'est difficile. Tous les ensembles est filtré : "{[2010],[2011]} sur 0 .. où [2010] renvoie [2010], mais un n-uplet est effectuée sans filtrage. Les hiérarchies différentes, de la même dimension appliquera la autoexists filtre.
Que c'est un peu délicate, nous avons décidé de prolonger JEUX pour permettre de déclarer un jeu dans une requête est évaluée par le contexte mondial - sans prendre en compte lorsque la clause et les sous-requêtes :
La facile et la plus efficace consiste à aller Frank propose, en ajoutant directement le filtrée pays dans l'axe.
Concernant votre requête, il doit travailler, je suis d'accord, c'est un bug dans icCube que nous allons y remédier dès que possible (PTS). En attendant, vous devez éviter d'utiliser la même hiérarchie dans la machine et dans la fonction du Filtre utilisé dans une machine, quelque chose comme :
Ou vous pouvez changer pour une version qui fonctionne dans icCube (la moins efficace que celui de Frank) :
Si vous jouez avec des regroupements basés sur différents critierias vous pouvez utiliser une nouvelle fonctionnalité icCube introduit il y a quelques mois : Catégories
Elles permettent de créer une hiérarchie en tant que membre d'autres hiérarchies. Vous pouvez définir ces pays [80000+] pour ensuite effectuer des calculs à partir de cette nouvelle clasification.
Clause where dans MDX n'est pas comme un SQL où, mais plus comme un moyen de réglage des valeurs par défaut. Donc, si dans l'axe que vous mettez [2010] vous allez utiliser [2010] remplacement [2009]. C'est lorsque vous êtes en utilisant une sous-requête que vous obtenez le genre de comportement dans une clause where. C'est étrange, mais c'est la manière dont MDX œuvres
Jusqu'à la sortie d'une nouvelle version dans quelques jours, vous avez à utiliser soit statique, d'ensembles ou de la requête avec le sous-sélection (le deuxième de mon post)
OriginalL'auteur ic3