MDX membre Calculé filtre par attribut de dimension
Je veux créer un membre calculé et filtrer par dimension. C'est un exemple fonctionnel:
(
[Policy].[Policy Status].&[Void],
[Policy].[Tran Type].&[Renewal],
[Measures].[FK Policy Distinct Count]
)
Mais si je veux filtre comme ceci
(
[Policy].[Policy Status].&[Void],
[Policy].[Policy Status].&[Policy],
[Measures].[FK Policy Distinct Count]
)
Que ça ne fonctionne PAS. Il est dit que même hiérarchie est de montrer à plusieurs reprises dans le tuple.
L'autre chose est, comment exclure des lignes? Voilà l'idée...
(
![Policy].[Policy Status].&[Void],
![Policy].[Policy Status].&[Policy],
[Measures].[FK Policy Distinct Count]
)
OriginalL'auteur ilija veselica | 2011-12-20
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, il est important de comprendre la syntaxe MDX, et comment elle est liée aux concepts de des tuples, des membres et des ensembles de.
Tuples
À l'aide de parenthèses indique un n-uplet:
Un tuple ne peut contenir qu'un seul membre de la hiérarchie.
Jeux de
Pour récupérer les résultats à partir de plusieurs membres de la même hiérarchie, vous devez requête pour un jeu. Un jeu MDX est notée par des accolades:
Un ensemble est, par définition,
Donc, si vous souhaitez requête pour le
[FK Policy Distinct Count]
mesure à l'encontre de deux de ces membres, l'ensemble de n-uplets, chacun doit inclure la mesure:Pour simplifier cette expression, il est possible de crossjoin deux ensembles de dimension différente:
En excluant les lignes
Maintenant que nous pouvons définir des ensembles, il est temps de supprimer certains membres de celui-ci. Dans votre exemple, il semble que vous voulez commencer avec un niveau (ce qui, pour le MDX engine, est juste un ensemble prédéfini dans le cube qui comprend tous les membres à ce niveau de la hiérarchie), et d'exclure certains membres. MDX a beaucoup de fonctions qui opèrent sur des ensembles, et nous allons utiliser
EXCEPT
.La
EXCEPT
fonction prend deux paramètres, la première étant l'ensemble de supprimer à partir de, et le second étant l'ensemble qui doit être supprimé à partir de la première. Il renvoie à un ensemble.Dans cet exemple, je vais supposer
[Policy].[Policy Status]
est une hiérarchie d'attribut, et que son seul niveau, le Nom Unique de[Policy].[Policy Status].[Policy Status]
.Ce sera le retour de tous les membres de la
[Policy].[Policy Status].[Policy Status]
niveau, sauf pour[Policy].[Policy Status].&[Void]
et[Policy].[Policy Status].&[Policy]
.Pour obtenir des résultats utiles, nous pouvons croix-rejoindre le résultat d'une mesure:
L'aide d'un ensemble comme un seul membre
Décors sont beaux, mais parfois, tout ce que nous voulons d'eux est de les traiter comme un seul membre, comme dans votre membre calculé exigence. Pour ce faire, nous avons besoin d'utiliser une fonction d'agrégation. Fonctions d'agrégation prendre dans un jeu et retour d'un membre qui représente la totalité de l'ensemble.
Il y a un certain nombre de ceux-ci, et le droit à utiliser dépend des données stockées dans votre cube:
MIN
,MAX
,COUNT
, etSUM
certains d'entre eux (voir "Fonctions Numériques" à la Fonction MDX référence pour une liste plus complète). Dans cet exemple, je suppose que votre dimension des agrégats par l'aide de la SOMME:Ici, j'ai passé la mesure agrégée en tant que second paramètre à la SOMME.
MDX est une langue complexe qui prend en charge de nombreuses communes et rare ensemble des opérations. Si vous ne l'avez pas déjà, je vous conseille de prendre le temps de lire la documentation disponible en ligne, ou prenez-vous une bonne MDX livre. Il y a beaucoup de choses à savoir 🙂
<3
Utiliser les résultats recueillis à partir d'un ensemble dans un seul membre, l'ensemble doit être convertis en utilisant une fonction d'agrégation. La plus simple de celles-ci est
AGGREGATE
, puisqu'il sélectionne automatiquement le bon type d'agrégation (somme, minimum, maximum...) pour l'ensemble. La définition de votre membre calculé commeAGGREGATE(SetExpression)
vous permettra d'utiliser les résultats comme un seul membre. Je vais l'ajouter à la réponse. <3J'ai essayé d'AGRÉGATION, mais renvoie toujours l'erreur: "les fonctions d'Agrégation ne peut pas être utilisé sur les membres calculés dans les Mesures de dimension". J'ai littéralement copié/collé de votre exemple de la réponse et il ne fonctionne pas
Juste assez. Pour
AGGREGATE
de travail, le cube doit déjà avoir une fonction d'agrégation définie -- donc, c'est seulement pour aller travailler dans le plus simple des requêtes.OriginalL'auteur Tullo_x86
Essayer cette syntaxe:
OriginalL'auteur Noe Zavala