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 :

Membre caclulé - Quelle approche ?


Sujet :

SSAS

  1. #1
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 225
    Points : 96
    Points
    96
    Par défaut Membre caclulé - Quelle approche ?
    Bonjour,

    N'étant pas très bon en MDX, je souhaiterai avoir votre avis sur l'approche pour résoudre un besoin de calcul dynamique. Il se peut également que ma modélisation soit à changer pour répondre au besoin .. En bref je ne sais pas trop comment m'y prendre .. voici le besoin :

    J'ai une table de fait avec cette structure :
    SK_Fact
    Clé1
    Clé2
    DateAnalyse
    M1

    et j'ai une autre table (de fait ou de dimension je ne sais pas mais je dirai de fait) qui à la structure suivante

    Clé1
    Clé2
    DateSituation
    M2

    Je souhaite avoir pour une DateAnalyse=octobre
    MesuresCalculés=M1*M2
    où M2 est identifié avec la jointure sur
    -Clé1
    -Clé2
    -Max(DateSituation)<DateAnalyse.currentMember (octobre dans cette exemple)


    Avez-vous une piste à me proposer ? si ce n'est pas clair, je peux réexpliquer le pb.
    Merci par avance pour votre aide.

  2. #2
    Membre émérite Avatar de FrancoisJehl
    Homme Profil pro
    BI Engineer
    Inscrit en
    Juillet 2009
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : BI Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 485
    Points : 2 883
    Points
    2 883
    Par défaut
    En gros dans l'idée c'est comme si tu avais une table de réalisé et une table de forecast, et que pour toute valeur de réalisé tu voulais récupérer une date de forecast, qui correspond à la dernière date de saisie d'un forecast avant le réalisé?
    Si tes deux dimensions temps ont une structure identique tu peux récupérer ton membre actuel de ta première table (dans la dimension DateAnalyse) dans la seconde (DateSituation) avec un LinkMember. Ensuite tu peux récupérer M2 en expliquant que c'est le Tail des NonEmpty DateSituation dans l'intervalle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    null:LinkMember(DateAnalyse.CurrentMember,DateSituation).PrevMember
    C'est du pseudo MDX hein

  3. #3
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 225
    Points : 96
    Points
    96
    Par défaut
    Merci Francois, je vais essayer prochainement et je viendrai poster le résultat de mes tentatives

  4. #4
    Membre émérite Avatar de FrancoisJehl
    Homme Profil pro
    BI Engineer
    Inscrit en
    Juillet 2009
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : BI Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 485
    Points : 2 883
    Points
    2 883
    Par défaut
    Bonne idée! Comme ça on aura une meilleure idée, et on pourra repartir de ça et éventuellement te filer des conseils plus précis

  5. #5
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 225
    Points : 96
    Points
    96
    Par défaut
    Bonjour François,

    J’ai essayé de tester ta solution.
    Et j’aurais une question supplémentaire à propos de

    Ensuite tu peux récupérer M2 en expliquant que c'est le Tail des NonEmpty DateSituation dans l'intervalle.
    Juste une petite précision, j’aimerais obtenir la mesure M2 sur tous les mois de ma dateSituation, donc voici où j’en suis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    New = (TAIL(NONEMPTY([DateSituation].[Année - Mois - Date].Members),1).ITEM(0), M2)
    Celle-ci obtient bien la dernière mesure M2 et l’applique sur tous les mois précédents, ce qui est bien. Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Mois1       Mois2       Mois3
     
    M2      1           2           3
     
    New     3           3           3
    Mais le problème est que si je filtre pour ne pas avoir le mois3, il me garde comme résultat la mesure M2 du dernier membre de DateSituation (Mois3)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Mois1       Mois2 
     
    M2      1           2           
     
    New     3           3   -> en ce moment et qui est faux
     
    New     2           2   -> ce que j’aimerais avoir et qui est juste
    Est-ce qu’il y aurait une solution afin d’obtenir la mesure M2 selon le dernier mois sélectionné ?
    Merci par avance pour ton aide

  6. #6
    Membre émérite Avatar de FrancoisJehl
    Homme Profil pro
    BI Engineer
    Inscrit en
    Juillet 2009
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : BI Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 485
    Points : 2 883
    Points
    2 883
    Par défaut
    C'est parce que dans ton code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    New = 
    (
       Tail
       (
          NonEmpty
          (
           [DateSituation].[Année - Mois - Date].Members
          )
          ,1
       ).Item(0)
       , M2
    )
    Tu ne dis pas à ta mesure de prendre en compte le filtrage éventuel sur le Set en gras (en gros il prend le dernier non vide peu importe le filtrage).
    Tu as plusieurs solution dépendant de comment ce membre va être utilisé pour filtrer. En première approche tu peux ajouter le mot clé "EXISTING" devant le set (la partie en gras). Cela permet de prendre en compte le filtrage réalisé dans le Slicer (clause WHERE des requêtes MDX). Après cela ne marchera probablement pas côté Excel ou tout autre client dans le cadre de multisélections, car EXISTING ne prend pas en compte les filtrages réalisés dans les sous-cubes, mais cela dépend de si tu en as besoin

  7. #7
    Membre émérite Avatar de FrancoisJehl
    Homme Profil pro
    BI Engineer
    Inscrit en
    Juillet 2009
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : BI Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 485
    Points : 2 883
    Points
    2 883
    Par défaut
    Tu peux regarder ça d'ailleurs: http://fjehl.blogspot.com/2011/08/ss...ltiselect.html. J'avais expliqué avec plus d'exemples.

  8. #8
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 225
    Points : 96
    Points
    96
    Par défaut
    François, merci pour ta réponse et tes éclaircissements, mais lorsque je rajoute l’instruction EXISTING comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    (
        TAIL(
            NONEMPTY(
                EXISTING{[DateSituation].[Année - Mois - Date].[Date].Members} ou 
    EXISTING [DateSituation].[Année - Mois - Date].[Date].Members
            )
            ,1
        ).ITEM(0)
        ,M2
    )
    Cela me donne ceci en résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            Mois1       Mois2       Mois3          Total
     
    M2      1           2           3             
     
    New     1           2           3              3
     
    New     3            3         3              3            -> Ce que j’aimerais obtenir

    Cela me prend la dernière mesure M2 de chaque mois au lieu de me prendre la dernière mesure M2 du dernier mois sélectionné.

    Autre contrainte par rapport à ce que tu m’avais énoncé : « Après cela ne marchera probablement pas côté Excel ou tout autre client dans le cadre de multisélections, car EXISTING ne prend pas en compte les filtrages réalisés dans les sous-cubes, mais cela dépend de si tu en as besoin ». Il faudrait effectivement que cela marche sur Excel, donc le EXISTING ne marchera probablement pas dans le cas présent, donc existe-t-il une autre façon pour prendre en main ce problème ou pour contourner le EXISTING ?

    De plus, j’ai également essayé via un « dynamic set » (connu par le biais de ton blog) et cela marchait pour 2K8, mais malheureusement, je dois effectuer ce calcul sous 2K5 (et les dynamics set n’existe pas sous cet environnement).

    Merci par avance pour ton aide,

  9. #9
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 225
    Points : 96
    Points
    96
    Par défaut
    Quelqu'un aurait une idée ? ou il faut migrer en 2008 ?

Discussions similaires

  1. [Google Maps] Quelle approche pour développer une application google maps (JS/PHP/MySQL)
    Par ggive dans le forum APIs Google
    Réponses: 0
    Dernier message: 23/11/2011, 15h17
  2. JAAS + recaptcha : quelle approche ?
    Par NaBuCO dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 18/04/2011, 11h53
  3. [Interface Données par le Web] Quelles approches ?
    Par FwRamaro dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 22/03/2008, 16h49
  4. Réponses: 17
    Dernier message: 25/06/2007, 17h56
  5. Quelle approche pour ce problème de conception bien spécifique ?
    Par wokmichel dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 23/10/2006, 08h50

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