2013-07-30 4 views
3

La requête suivanteLa hiérarchie du filtre MDX, cependant, montre toujours le total de congé - Ragged Hierarchy?

 
SELECT 
{ [Measures].[Comp Money In] } ON COLUMNS, 
{ 
(
    [Dim User].[UserLevel1].[UserLevel1].AllMembers * 
    [Dim User].[UserLevel2].[UserLevel2].AllMembers * 
    [Dim User].[UserLevel3].[UserLevel3].AllMembers * 
    [Dim User].[UserLevel4].[UserLevel4].AllMembers * 
    [Dim User].[UserLevel5].[UserLevel5].AllMembers 
) 
} ON ROWS 
FROM [Activities] 
WHERE ([Dim User].[UserIdHierarchy].[UserLevel1Id].&[#513], 
[Dim User].[UserTypeHierarchy].[UserTypeLevel1].&[Commercial Partner].&[Agent] ) CELL Properties Value 

Apporte le résultat suivant:

enter image description here

Mon problème est que, depuis que je suis filtrons les [Dim User] [UserTypeHierarchy], les valeurs de mesure qui. sont montrés, sont seulement de ceux qui ont le type en tant que [partenaire commercial]. & [Agent]. Je voudrais que, même si je montre l'arbre des utilisateurs, les chiffres qui sont affichés montrent toutes les mesures, comme si c'était comme les descendants ([Hierarchy], 0, self_and_after).

Comment puis-je y parvenir? J'ai déjà essayé d'utiliser des membres calculés, mais les chiffres affichés n'agrègent pas les descendants de tous les types d'utilisateurs sous la hiérarchie [Dim User]. [UserTypeHierarchy].

Pour me expliquer mieux, l'image est sans filtre de type d'utilisateur: enter image description here

donc mon résultat souhaité, est la première image, où je suis qu'afficher les utilisateurs de partenaire commercial de type d'utilisateur, mais les chiffres de la 2ème image, donc par exemple

  • 513 affiche tous les chiffres regroupant les descendants

  • 100310 montrera tous les chiffres agrégeant une Tous les utilisateurs sous lui au troisième niveau

Ainsi sur le quatrième.

Répondre

0

Ceci est la solution:

 
WITH 
    MEMBER [Measures].[Test] AS 
     0 
SELECT 
    { 
     [Test] 
    } ON 0, 
    NON EMPTY { 
     filter (
      {[dim user].[userhierarchy].[userlevel1].allmembers } 
      ,[dim user].[userhierarchy].currentmember.children.count > 1 
     ), 
     filter (
      {[dim user].[userhierarchy].[userlevel2].allmembers } 
      ,[dim user].[userhierarchy].currentmember.children.count > 1 
     ), 
     filter (
      {[dim user].[userhierarchy].[userlevel3].allmembers } 
      ,[dim user].[userhierarchy].currentmember.children.count > 1 
     ), 
     filter (
      {[dim user].[userhierarchy].[userlevel4].allmembers } 
      ,[dim user].[userhierarchy].currentmember.children.count > 1 
     ), 
     filter (
      {[dim user].[userhierarchy].[userlevel5].allmembers } 
      ,[dim user].[userhierarchy].currentmember.children.count > 1 
     ), 
     filter (
      {[dim user].[userhierarchy].[userlevel6].allmembers } 
      ,[dim user].[userhierarchy].currentmember.children.count > 1 
     ), 
     filter (
      {[dim user].[userhierarchy].[userlevel7].allmembers } 
      ,[dim user].[userhierarchy].currentmember.children.count > 1 
     ), 
     filter (
      {[dim user].[userhierarchy].[userlevel8].allmembers } 
      ,[dim user].[userhierarchy].currentmember.children.count > 1 
     ), 
     filter (
      {[dim user].[userhierarchy].[userlevel9].allmembers } 
      ,[dim user].[userhierarchy].currentmember.children.count > 1 
     ), 
     filter (
      {[dim user].[userhierarchy].[userlevel10].allmembers } 
      ,[dim user].[userhierarchy].currentmember.children.count > 1 
     ) 
    } ON 1 
FROM [Activities] 

Je ne suis pas le filtrage par types d'utilisateurs parent, mais élever les utilisateurs qui ont les enfants comptent plus que 1.

3

Le cube [Activités] n'est pas configuré correctement. Lorsque vous interrogez un niveau, il doit afficher les valeurs de lui-même et de ses enfants (par exemple, "Country Shop 1" doit indiquer 19). Cela devrait faire partie des règles d'agrégation dans le cube. La valeur affichée maintenant dans les parents du cube (par exemple Country Shop 1 € 6) doit apparaître dans un groupe de repos supplémentaire créé automatiquement en tant qu'enfant supplémentaire pour chaque parent.

Ainsi, le simple MDX pour ce cube serait:

SELECT { 
[Measures].[In] 
} ON COLUMNS, 
{ 
DESCENDANTS([Dim User].[UserTypeHierarchy].[UserTypeLevel1],0,SELF_AND_AFTER) 
} 
from [Activities] 

montreraient toutes les régions, les pays et les magasins avec les valeurs agrégées appropriées.

Salue Phil

+0

Salut Phil. Merci pour votre réponse. Oui, le cube est configuré comme vous le dites. Mon problème est que j'ai besoin d'appliquer des filtres sur la dimension, mais montre toujours toutes les figures des feuilles. Ce qui se passe est que lorsque je filtre la dimension, la mesure est également filtrée. – Mez

+0

Phil, dans votre réponse, la section des lignes, cette requête afficherait UserTypeHierarchy. Je ne veux pas ça. Je voudrais le [Mesures]. [In] dans les colonnes, et la hiérarchie des magasins sur les lignes mais le filtrage avec les types d'utilisateurs, à partir de la hiérarchie des types d'utilisateurs.Je veux seulement filtrer la hiérarchie de type d'utilisateur sur la dimension sur les lignes, mais dans les mesures, je veux toujours les agréger. Je ne peux pas faire fonctionner ça. – Mez

Questions connexes