2017-06-29 2 views
0

Je suis nouveau sur MDX et Cubes.MDX Descendants de descendants filtrés

Je dois découper mes données avec les descendants des descendants d'un membre donné ayant un attribut particulier.

DIM1 est une dimension dont Parent est la hiérarchie parent parent et possède un attribut Attr1.

Étant donné l'arbre parent suivant. Les membres 601, 711, 712 et 811 doivent être utilisés pour découper. C'est correct si l'un de leurs parents est retourné, les données de mesure n'existe qu'au niveau feuille.

 
    Id | Parent | Attr1 
    1 |  | 1 
    2 |  1 | 3 
501 |  2 | 5 
601 | 501 | 11 
701 | 501 | 11 
711 | 701 | 15 
712 | 701 | 16 
810 | 501 | 7 
811 | 810 | 11 

Je reçois l'erreur « La fonction DESCENDANTS attend un membre ou un ensemble d'une seule hiérarchie pour l'argument 1. Un ensemble de hiérarchies multiples a été adoptée. » lorsque vous essayez

WHERE 
    DESCENDANTS ( 
    { { DESCENDANTS ([DIM1].[PARENT].&[501].CHILDREN) } * { [DIM1].[Attr1].&[11] } } 
) 

Répondre

0

Vous pouvez essayer d'utiliser sous requête pour de l'article au lieu où la condition.

par exemple.

SELECT 
    NON EMPTY { [Measures].[Sale Amt] } ON COLUMNS, 
    NON EMPTY {[Dim1].[Attr].children} * {[Dim1].[Parent].children } on rows 
from 
(
    SELECT ({ [Dim1].[ParentH].[Parent].&[501], [Dim1].[ParentH].[Parent].&[501].children}) ON COLUMNS 
    FROM [DBSF Test] 
) 
0

Actuellement, vous avez une croix-jointure dans la fonction DESCENDANTS externe - donc cela va créer un ensemble de plusieurs tuples de hiérarchie - d'où l'exception. Si vous déplacez la jointure croisée à l'extérieur, est-ce encore une erreur?

WHERE 
    DESCENDANTS ( 
    DESCENDANTS ( 
     [DIM1].[PARENT].&[501].CHILDREN 
    ) 
) * { [DIM1].[Attr1].&[11] }