IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SSAS Discussion :

Somme sur les valeurs distinctes d'une dimension [2012]


Sujet :

SSAS

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2010
    Messages : 18
    Points : 10
    Points
    10
    Par défaut Somme sur les valeurs distinctes d'une dimension
    Bonjour à tous,

    Pour bien comprendre la situation, je vous fais un petit résumé.
    J'ai un cube dans lequel il existe 2 granularités : une pour des séjours et une autre (plus précise) pour des transactions.
    Ce qui veut dire que j'ai plusieurs lignes pour un même séjour et donc plusieurs lignes avec la même mesure (durée du séjour) qui se répète.

    Le problème est que, lorsqu'on affiche le séjour avec sa durée dans le cube, celle-ci est multipliée par le nombre de lignes pour ce séjour...

    J'ai déjà essayé la méthode expliquée sur ce site, mais ça n'a pas l'air de correspondre à ce que j'aimerais obtenir :
    http://ssasjunkie.wordpress.com/2011...sum-in-ssas-2/


    J'ai ensuite créé une mesure DureeSejourMax, qui calcule le MAX sur le champ "durée du séjour", et j'ai essayé d'appliquer la méthode expliquée sur ce site :
    http://fjehl.wordpress.com/2012/04/1...-enfin-presque

    C'est-à-dire en créant un set dynamique QueryContextNSejour sur la dimension séjour dans l'onglet "Calculs" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CREATE DYNAMIC SET CURRENTCUBE.[QueryContextNSejour]
         AS [NSejour].[NSejour].[NSejour]
    Puis en créant un membre calculé DureeSejour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CREATE MEMBER CURRENTCUBE.[Measures].[DureeSejour]
         AS Sum(Existing NonEmpty([QueryContextNSejour], [Measures].[DureeSejourMax]), [Measures].[DureeSejourMax])
    Mais j'ai toujours un problème avec les totaux des autres dimensions :
    Nom : Capture3.jpg
Affichages : 141
Taille : 15,2 Ko

    Les totaux n'ont pas l'air de tenir compte du filtre sur le séjour comme si le contexte du total n'était pas le même. Comment arriver à un total égal au total des valeurs filtrées?

    Est-ce que vous auriez une solution à mon problème?

    Un grand merci d'avance, car je sèche un fameux coup là...

  2. #2
    Membre confirmé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2010
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2010
    Messages : 304
    Points : 579
    Points
    579
    Par défaut
    Je ferais deux tables de faits : une au séjour et une à la transaction

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2010
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    C'est ce que proposent les 2 premiers sites dont je parle mais je ne pense pas que ce soit la solution car j'ai d'autres dimensions que j'aimerais aussi pouvoir utiliser avec la mesure "durée de séjour".

    Si je sépare mes tables de fait, je ne vais plus retrouver la mesure pour les dimensions spécifiques aux transactions. Elle ne sera plus mappée.

  4. #4
    Membre confirmé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2010
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2010
    Messages : 304
    Points : 579
    Points
    579
    Par défaut
    Tu les retrouveras les mesures liées au séjour si tu navigues via les dimensions liés qu'aux transactions, ça répétera la valeur du niveau haut.

    Mais en même tu veux qu'il dispatche comment ta durée de séjour sur des membres de dimensions qui ne dépendent que des transactions ?

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2010
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Si on suit le raisonnement de séparation en 2 tables de faits, on aurait :
    • Une table avec la granularité séjours, les mesures et les liens vers les dimensions correspondant à cette granularité.
    • Une table avec la granularité transactions, les mesures et les liens vers les dimensions s'y rapportant.


    Mais au niveau de l'usage des dimensions, comment cela fonctionnerait?
    Comment mapper les dimensions d'une table avec les mesures de l'autre?

    Sinon, je pense que le problème que j'ai avec les totaux pourrait arriver dans un autre contexte donc ce serait bien d'y trouver une solution quand-même.

  6. #6
    Membre averti
    Homme Profil pro
    Consultant B.I. / .net
    Inscrit en
    Mai 2003
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant B.I. / .net

    Informations forums :
    Inscription : Mai 2003
    Messages : 215
    Points : 445
    Points
    445
    Par défaut
    Bonjour,


    Je rejoins David, la solution est dans la modelisation, il n'y a pas de "problème".
    Une table de fait ne doit avoir qu'une seul granularité pour toutes ses mesures (colonnes).
    (bonne solution) Si vous avez 2 granularités différentes, il faut faire 2 tables de fait (au moins au niveau de la dsv, pas nécessairement dans le datamart). Rien n'empêche de répéter sur les 2 tables de faits les colonnes qui établissent les relations avec les tables de dimension (surtout s'il s'agit de la même table dans le datamart).

    Une alternative assez artificielle qu'on utilise parfois est d'éclater la mesure granularité moins fine pour la distribuer sur les lignes de fait de la granularité plus fine :
    Sur une ligne de fait transaction avoir une mesure séjour qui soit un prorata des sejours en fonction du nombre de transaction ce jour là. De manière à retrouver le nombre de séjour en faisant la somme à la journée.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2010
    Messages : 18
    Points : 10
    Points
    10
    Par défaut Résolution
    Merci pour vos remarques, j'ai réussi à faire ce que je voulais.
    Apparemment, je n'étais pas loin de la solution dans mon premier essai.

    Donc pour résumer, pour ceux qui auraient le même problème :
    • Créer une vue/table par granularité en plaçant dans chacune les dimensions et mesures s'y rapportant (personnellement, j'ai créé des vues dans le DSV).
    • Plus la granularité est fine, plus la table aura de liens vers les tables de granularité supérieure.
    • Au niveau du cube, créer les mesures avec des groupes de mesures différents pour chaque granularité.
    • Ajouter toutes les dimensions voulues.
    • Dans l'utilisation des dimensions, créer des relations de type "normale" pour les dimensions qui existent dans la granularité du groupe de mesures, ainsi qu'avec les dimensions "liens entre granularités".
    • Pour les autres dimensions, créer des relations "plusieurs-à-plusieurs" avec comme groupe de mesures intermédiaire celui dont la granularité est celle de la dimension.

    Voilà, dites-moi si je me trompe mais pour moi, ça a fonctionné ainsi.

    Par contre, le problèmes des totaux n'est toujours pas résolu
    D'où ce total erroné provient?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Trier une Map sur les valeurs de façon décroissante
    Par ddams dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 27/12/2011, 19h33
  2. Decompter les valeurs distinctes dans une colonne selon critéres
    Par neo79 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 23/08/2010, 23h17
  3. Réponses: 2
    Dernier message: 04/09/2008, 14h41
  4. Tri sur les valeurs d'une HashTable avec duplicats
    Par extenbrisadlucem dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 01/08/2008, 12h41
  5. Lister les valeurs distinctes présentes sur plusieurs feuilles
    Par neupont dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/06/2008, 11h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo