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 :

Calculs MDX et SUM


Sujet :

SSAS

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 120
    Points : 69
    Points
    69
    Par défaut Calculs MDX et SUM
    Je vous résume rapidement mon problème (qui n'est qu'un exemple) :

    J'ai un champs "Qté Vendue Projet" que je désire analyser un niveau le plus fin (Projet détaillé : qui est un attribut d'une dimension projet) à date ...

    Trois cas possibles de calcul en mdx :
    - Cas 1 : Si je suis sur un projet de type "Forfait" : Qté Vendue Projet=Qté
    - Cas 2 : Si je suis sur un projet de type "Régie" : Qté Vendue Projet=Qté réalisée passée (autre champs MDX) + Qté planifiée futur (autre champs MDX)
    - Cas 3 : Si je suis sur un projet de type "Pointage" : Qté Vendue Projet=0

    J'ai donc crée un champs calculé MDX :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    CREATE MEMBER CURRENTCUBE.[MEASURES].[Qté Vendue Projet]  AS 
    CASE ISLEAF([Projet].[Projet Détaillé].CurrentMember) WHEN TRUE THEN
    IIF([Measures].[Mtt Vendu]=Null,
      Null,
      IIF([Projet].[Type Projet] IS [Projet].[Type Projet].&[Pointage],
        0,
        IIF([Projet].[Type Projet] IS [Projet].[Type Projet].&[Régie],
          [Measures].[Qté Réalisée Passée]+[Measures].[Qté Planifiée Futur],   
          [Measures].[Qté Vendue]
        )
      )
    )
    ELSE
      SUM(EXISTING(DESCENDANTS([Projet].[Projet Détaillé].CurrentMember,, LEAVES)),[MEASURES].[Qté Vendue Projet])
    END, 
    FORMAT_STRING = "#,#.00", 
    VISIBLE = 1  ;
    Mais au résultat au travers d'une analyse avec plusieurs attributs différents j'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Client 1       12492 = Forfait + Pointage => Pas OK (Résultat attendu : 6225 => 6225+0 ou 6085+140+0+0)
      Forfait       6225 = Projet 1 + Projet 2 => OK
        Projet 1    6085
        Projet 2     140
      Pointage         0 = Projet 3 + Projet 4 => OK
        Projet 3       0
        Projet 4       0
    Client 2         273 = Forfait + Régie => Pas OK (Résultat attendu : 7099 =>259+6840 ou 259+6700+140)
      Forfait        259 = Projet 5 => OK
        Projet 5     259
      Régie         6840 = Projet 6+Projet 7 => OK
        Projet 6    6700
        Projet 7     140
    Total Général  12765 => Client 1 + Client 2 => Pas OK (Résultat attendu : 13324 => 6225+7099 ou 6225+0+259+6840 ou 6085+140+0+0+259+6700+140)
    Client vient d'une dimension client et "Type Projet" (Régie, Forfait, Pointage) ainsi que le "Projet Détaillé" par lui même de la dimension projet ...
    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Client
      Type Projet
        Projet Détaillé
    Je précise que j'aimerais bien trouver une solution qui ne dépendent pas des attributs choisis mais uniquement de l'élément "Projet Détaillé" qui est le plus bas ... Mais déjà si cela pouvait marcher sur cet exemple

    J'espère que vous allez pouvoir m'aider

    Merci d'avance !

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 120
    Points : 69
    Points
    69
    Par défaut
    Si cela peut aider à trouver une solution :
    J'ai créé une hiérarchie unique sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Client
      Type Projet
        Projet Détaillé
    Mais je ne trouve toujours pas ...

  3. #3
    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
    J'avoue ne pas avoir regardé ton code pour voir où ça ne fonctionnait pas, mais pour ton cas d'usage j'utiliserais plutôt du SCOPE.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 120
    Points : 69
    Points
    69
    Par défaut
    J'essaye différentes solutions mais je n'y arrive pas ...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Hello,

    Pourquoi ne pas alimenter le champ Qté en fonction du type de projet dans SSIS (plutôt que de poser des conditions de calcul dans SSAS selon la valeur d'une dimension) ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 120
    Points : 69
    Points
    69
    Par défaut
    En effet j'aurais du préciser que certaines valeurs sont calculées dynamiquement par rapport à une date :
    Cas 2 : Si je suis sur un projet de type "Régie" : Qté Vendue Projet=Qté réalisée passée (autre champs MDX) + Qté planifiée futur (autre champs MDX)
    Donc je suis obligé de la faire en temps réel ...

  7. #7
    Invité
    Invité(e)
    Par défaut
    J'ai du mal à comprendre.

    Je verrais le modèle suivant :

    1. Table de fait :
    - Client
    - TypeProjet
    - DateVente
    - QteVendue

    2. Dans SSIS :
    Si TypeProjet = Pointage ; QteVendue = 0
    Si TypeProjet = Forfait ; QteVendue = nombre de jours vendus
    Si TypeProjet = Régie ; QteVendue = nombre de jours planifiés

    3. Dans SSAS :
    Tu crées tes deux mesures QtéRéalisée et QtéFutur en MDX (en fonction de QteVendue, et de la DateVente).

    ... Non ?

  8. #8
    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
    Un truc dans le genre, ça te renvoie quoi ?

    CREATE MEMBER CURRENTCUBE.[MEASURES].[Qté calculée] AS
    NULL;

    SCOPE
    (
    [MEASURES].[Qté calculée],
    [Projet].[Type Projet].&[Pointage]
    ) ;

    THIS=0;

    END SCOPE ;

    SCOPE
    (
    [MEASURES].[Qté calculée],
    [Projet].[Type Projet].&[Forfait]
    ) ;

    THIS=[Measures].[Qté Vendue];

    END SCOPE ;

    SCOPE
    (
    [MEASURES].[Qté calculée],
    [Projet].[Type Projet].&[Régie]
    ) ;

    THIS=[Measures].[Qté Réalisée Passée]+[Measures].[Qté Planifiée Futur];

    END SCOPE ;

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 120
    Points : 69
    Points
    69
    Par défaut
    Cela me renvoit le bon résultat au niveau spécifié mais la somme ne se fait pas correctement sur d'autres niveaux supérieurs ...

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/11/2014, 11h03
  2. [2008R2] Calcul MDX selon dimension utilisée
    Par manard dans le forum SSAS
    Réponses: 2
    Dernier message: 13/03/2013, 14h27
  3. Problème de calcul MDX
    Par laifih dans le forum SSAS
    Réponses: 1
    Dernier message: 06/11/2012, 17h27
  4. Problème calcul erroné avec sum()
    Par mouatte dans le forum Requêtes
    Réponses: 25
    Dernier message: 15/12/2008, 12h58
  5. [SSAS][2008] Calcul mdx
    Par matb33 dans le forum SSAS
    Réponses: 3
    Dernier message: 07/08/2008, 10h56

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