2011-10-22 1 views
0

Je suis en train de configurer une bi-solution et j'ai des difficultés à définir le cube et ses hiérarchies.Comment configurer des hiérarchies dynamiques dans OLAP

Une partie de la définition du schéma ressemble à ceci:

<Dimension foreignKey="user" highCardinality="false" name="user"> 
    <Hierarchy name="user" hasAll="true" allMemberName="all" primaryKey="ID"> 
    <Table name="user" /> 
    <Level name="timezone" column="timezone"/> 
    <Level name="locale" column="locale"/> 
    <Level name="gender" column="gender"/> 
    </Level> 
    </Hierarchy> 
</Dimension> 

Maintenant, je veux accéder au niveau des sexes directement.

SELECT 
{[user].[gender].Members} ON COLUMNS, 
{[Measures].[Fact Count]} ON ROWS 
FROM [cube] 

Résultats dans quelque chose comme [user].[zone3].[de_DE].[male] = 10, [user].[zone1].[en_US].[male] = 30 et ainsi de suite. Je veux un total pour chaque sexe: [user].[male] = 20 et [user].[female] = 30.

En résumé, j'ai besoin d'un ordonnancement flexible des niveaux. Est-ce possible? Je sais qu'il y a des hiérarchies parallèles mais je ne peux pas en créer une pour tous les ordres possibles ...

J'ai aussi essayé de mettre tous les attributs dans les propriétés au lieu des niveaux mais je n'ai pas réussi à obtenir une quantité totale simple de mâle/femelle utilisateurs.

Et il doit être assez simple parce que tout cela va faire partie d'un bi-outil dynamique ...

+0

écrivez-vous un outil BI? OU configurez-vous/configurez-vous les données à utiliser/importer dans un outil BI? – Yahia

+0

Que considérez-vous comme BI-outil? J'utilise mondrian pour le cube olap. – gapvision

+0

mon erreur - je n'ai pas vu le 'mondrian' première fois ... désolé, là je ne peux pas aider beaucoup ... j'espère que quelqu'un d'autre peut ... – Yahia

Répondre

1

Vous utilisez la mauvaise fonction de ce que vous voulez.

La fonction membre MDX obtient tous les membres contenant la contrainte sur le MDX, et non toutes les valeurs d'un niveau. Vous voulez toutes les valeurs du niveau.

Pour cela, vous devez utiliser la fonction Children MDX. Il prend toutes les valeurs (ou enfants) du niveau associé. Essayez ceci:

SELECT {[user].[gender].children} ON COLUMNS, 
    {[Measures].[Fact Count]} ON ROWS 
FROM [cube] 

En résumé, je besoin d'une commande souple des niveaux. Est-ce possible? Je sais qu'il existe des hiérarchies parallèles mais je ne peux pas en créer une pour chaque ordre possible ...

Créez une hiérarchie contenant un seul niveau. Je vois que cela n'a vraiment rien à voir avec leur hiérarchie, cela serait recommandé, et ne perdrait pas de flexibilité. Cela empêche l'opération OLAP erronée du cube de données, comme l'exploration et l'enroulement (qui utilisent des hiérarchies). Obtenir quelque chose comme ceci:

<Dimension foreignKey="user" highCardinality="false" name="user"> 
    <Hierarchy name="TIMEZONE" hasAll="true" allMemberName="all" primaryKey="ID"> 
    <Table name="user" /> 
    <Level name="timezone" column="timezone"/> 
    </Hierarchy> 
    <Hierarchy name="LOCALE" hasAll="true" allMemberName="all" primaryKey="ID"> 
    <Table name="user" /> 
    <Level name="locale" column="locale"/> 
    </Hierarchy> 
    <Hierarchy name="GENDER" hasAll="true" allMemberName="all" primaryKey="ID"> 
    <Table name="user" /> 
    <Level name="gender" column="gender"/> 
    </Hierarchy> 
</Dimension> 

Espérons que cette aide.

Questions connexes