2011-06-24 3 views
0

Je suis nouveau à OLAP, et je ne sais toujours pas comment créer une relation entre 2 entités ou plus.SSAS OLAP MDX et les relations

Je base mon cube sur les vues. Par souci de simplicité, nous allons les appeler comme ceci:

viewParent (ParentID PK)

viewChild (ChildID PK, ParentID FK)

ces vues ont plus de champs, mais ils ne sont pas importants pour cette question.

Dans ma source de données, j'ai défini une relation entre viewParent et viewChild en utilisant ParentID pour le lien. En ce qui concerne les mesures, j'ai été forcé de créer des mesures séparées pour Parent et Enfant.

Dans ma requête MDX cependant, la relation ne semble pas être appliquée. Si je sélectionne nombre d'enregistrements pour les parents, les enfants et ajouter des filtres pour les parents, le nombre des enfants ne reflète pas ce ..

SELECT { 
    [Measures].[ParentCount],[Measures].[ChildCount] 
} ON COLUMNS 
FROM [Cube] 
WHERE { 
    (
    {[Time].[Month].&[2011-06-01T00:00:00]} 
    ,{[SomeDimension].&[Foo]} 
    ) 
} 

le ParentCount sélectionné est correct, mais ChildCount est pas affectée par l'un des filtres (parce qu'ils sont des filtres parents). Cependant, depuis que j'ai défini une relation, comment puis-je en profiter pour filtrer les enfants par parent en utilisant une clause WHERE?

faits:

viewParent, viewChild

Dimensions:

ParentDimension (contient les attributs de vue parent que je serais Aggregate sur) ChildDimension (contient les attributs de la vue des enfants que je serais Aggregate on)

Ceci est juste une idée que j'ai trouvé, mais peut-être mon design/relation est éteint.

+0

il serait utile d'ajouter une description pour votre dimension et les faits – ic3

Répondre

1

Compris. En regardant l'onglet dimensions du cube dans vs2008, il est devenu évident.

ma relation entre la dimension et les mesures n'a pas été correctement définie. Ma dimension a été indexée sur uniqueID qui correspond à parentID uniqueID.

J'ai changé la relation (de SomeDimension) en clé sur un champ ID différent (partagé par parentView et childView) appelons-le ViewID.

et mes requêtes MDX ont commencé à fonctionner comme prévu.Signification, O WH clause affecté les deux groupes de mesures: parent et enfant.

0

Il se peut que je lis trop attentivement le libellé que vous avez choisi dans votre description, mais vous voudrez peut-être clarifier ce que vous entendez par filtres. Techniquement, la clause WHERE n'est pas un filtre, mais identifies the slicer axis pour l'ensemble de données résultant. Si vous voulez dire FILTER, alors vous pouvez regarder dans la fonction MDX nommée FILTER que vous pouvez appliquer à une expression d'ensemble. Ce que vous pouvez essayer est de réorganiser votre requête MDX pour définir BOTH Axis - ROWS et COLUMNS.

SELECT 
{ 
    [Measures].[ParentCount],[Measures].[ChildCount] 
} ON COLUMNS, 
{ 
    [SomeDimension].&[Foo] 
} ON ROWS 
FROM [Cube] 
WHERE ([Time].[Month].&[2011-06-01T00:00:00]) 
Questions connexes