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

MS SQL Server Discussion :

[SSAS 2005] problème avec parallelPeriod


Sujet :

MS SQL Server

  1. #1
    Membre habitué Avatar de anayathefirst
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 326
    Points : 182
    Points
    182
    Par défaut [SSAS 2005] problème avec parallelPeriod
    Salut
    Je voudrais calculer le chiffre d’affaire de l’année précédentes, mais en prenant en compte le code du mois et pas sa position selon l’ordre naturel.
    Je m’explique : dans ma base de données, j’ai des écritures qui ressemblent à ça :
    Code tableau de donnée : 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
    18
    Année    Mois    Chiffre d’affaire ()
    1         1             101
    1         2             102
    1         3             103
    1         4             104
    1         5             105
    1         6             106
    1         7             107
    1         8             108
    1         9             109
    1         10            1010
    1         11            1011
    1         12            1012
    2         1             201
    2         2             202
    2         3             203
    2         6             206
    2         7             207
    en utilisant la fonction parallelPeriod comme ceci,
    Code MDX : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     (
        [Measures].[Chiffre d’afaire],
        parallelPeriod
        (
            [Axe de Temps].[Année fiscale].[Année],
            1,
            [Axe de Temps].[Année fiscale].currentMember
        )
    )
    j’obtiens pour l’année 2 et le mois 6, la valeur 104 la valeur pour le mois 4 de l’année 1 (car le mois 6 est le quatrième enregistrement dans l’année 2, en effet, les mois 4 et 5 ne sont pas rentrés dans la base). Or ce que je voudrais, c’est 106, la valeur pour le mois 6 de l’année 1, ce qui veut dire qu’il faut plutôt prendre le code du mois et pas l’ordre.
    en gros, ce que j'obtiens ressemble à ça :
    Code tableau de donnée : 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
    18
    Année    Mois    Chiffre d’affaire ()    Chiffre d’affaire () à N-1
    1         1             101             NULL
    1         2             102             NULL
    1         3             103             NULL
    1         4             104             NULL
    1         5             105             NULL
    1         6             106             NULL
    1         7             107             NULL
    1         8             108             NULL
    1         9             109             NULL
    1         10            1010             NULL
    1         11            1011             NULL
    1         12            1012             NULL
    2         1             201             101
    2         2             202             102
    2         3             203             103
    2         6             206             104
    2         7             207             105
    et ce que je voudrais avoir ressemble à ça :
    Code tableau de donnée : 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
    18
    Année    Mois    Chiffre d’affaire ()    Chiffre d’affaire () à N-1
    1         1             101             NULL
    1         2             102             NULL
    1         3             103             NULL
    1         4             104             NULL
    1         5             105             NULL
    1         6             106             NULL
    1         7             107             NULL
    1         8             108             NULL
    1         9             109             NULL
    1         10            1010             NULL
    1         11            1011             NULL
    1         12            1012             NULL
    2         1             201             101
    2         2             202             102
    2         3             203             103
    2         6             206             106
    2         7             207             107
    (différence au niveau des deux dernières lignes)

  2. #2
    Membre habitué Avatar de anayathefirst
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 326
    Points : 182
    Points
    182
    Par défaut
    Salut
    Apparemment, vous n’avez plus d’idées que moi
    En fait, les fonctions de navigation dans des arbres de famille (cousin, parallelPeriode) utilise l’ordre naturel pour accéder aux données. Donc, ce qu’il me faudrait, c’est un truc du genre

    Code MDX : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     (
        [Measures].[Chiffre d’affaire],
        [Axe de Temps].[Année fiscale].currentMember.parent.prevMember,
        where [Axe de Temps].[Année fiscale].[Mois].value=le mois courant
        )
    )
    Si quelqu’un sait comment faire ce type de critères, ça m’intéresse.

  3. #3
    Membre habitué Avatar de anayathefirst
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 326
    Points : 182
    Points
    182
    Par défaut
    j'ai essayé de chercher et je suis arrivé à écrire la commande suivante :
    [Measures].[Chiffre d’affaire],
    [Axe de Temps].[Année fiscale].[Année]=[Axe de Temps].[Année fiscale].currentMember.parent.prevmember.name,
    [Axe de Temps].[Année fiscale].[Mois]=[Axe de Temps].[Année fiscale].currentMember.name
    le problème est que le premier 'point' de la condition est souligné et j'ai l'erreur
    Erreur 1 MdxScript(Cube Infocentre Finances) (9, 15) Analyseur : La syntaxe pour « . » est incorrecte. 0 0
    je voudrais savoir se qui ne va pas avec ma syntaxe et si j'ai bien fait les conditions ...

  4. #4
    Membre habitué Avatar de anayathefirst
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 326
    Points : 182
    Points
    182
    Par défaut
    salut,
    ça me prend vraiement la tête, et j’arrive à rien pour le moment. En tout cas, je vous fait part de l’état de mon avancement, ça vous donnera peut-être des idées...
    le code ci-dessous donne un set de tous les Mois de l’année précédente pous chaque ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     ancestor(
        [Axe de Temps].[Année fiscale].currentMember,
        [Axe de Temps].[Année fiscale].[Code Exercice]
    ).prevMember.children
    donc si j’arrive à utiliser ce set pour retrouver le membre qui a le même nom que le mois courant, ça pourrait marcher...
    j’ai pênsé à utiliser la fonction item avec une expression de chaine, un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     (
        [Measures].[Direct Période - Montant Réalisé],
        ancestor(
            [Axe de Temps].[Année fiscale].currentMember,
            [Axe de Temps].[Année fiscale].[Code Exercice]
        ).prevMember.children.item
        (
            MEMBERTOSTR
            (
                [Axe de Temps].[Année fiscale].currentMember 
            )
        )
    )
    mais ça me donne une erreur que je n’arrive pas à resoudre.
    La fonction item attend un tableau de membres comme paramettre correspondant à la dimentionnalité de l'objet sur lequel est appellée la fonction
    si ça vous éclaire, n’hésitez pas à poster, je commance à désespérer

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 43
    Points : 22
    Points
    22
    Par défaut
    Un langage de m**** parmi tant d'autres .. Courage ex-binôme ^^

  6. #6
    Membre averti Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Points : 341
    Points
    341
    Par défaut
    Ahhhh ... microsoft

  7. #7
    Membre actif Avatar de Nicomart
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    205
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 205
    Points : 210
    Points
    210
    Par défaut
    Que du bonheur

  8. #8
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 43
    Points : 22
    Points
    22
    Par défaut
    Sympa le chat glandeurs en stage

    PS : dsl de pourrir ton post anayathefirst

  9. #9
    Membre actif Avatar de Nicomart
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    205
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 205
    Points : 210
    Points
    210
    Par défaut
    Y'a de ça... en même temps ça va, sur développez.com, c'est discret

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 18
    Points : 13
    Points
    13
    Par défaut

    Bon bah j'apporte ma pière à l'édifice

    J'avoue que pour le moment je ne peux pas t'aider... j'attaque SQL Serveur semaine prochaine... peut être que j'aurais plus d'infos à t'apporter!

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 72
    Points : 52
    Points
    52
    Par défaut
    Personnellement je ne connais pas le langage mais faudrait que tu arrives a ajouter une simple condition pour prendre en compte les mois qui ne sont uniquement present dans l'annee precedente.

    T'as pas moyen de faire un semblant de requete SQL ou un trie dans tes enregistrements avant d'executer ton algo ?

  12. #12
    Membre habitué Avatar de anayathefirst
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 326
    Points : 182
    Points
    182
    Par défaut
    salut,
    Bon, ça avances, tout doucement, mais ça avance.
    Pour le membre [Axe de temps].[Année fiscale].[2].[3], j'ai les données suivantes :
    Code MDX : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [Axe de temps].[Année fiscale].[2].[3].MemberValue // donne 3
    [Axe de temps].[Année fiscale].[2].[3].parent.prevMember.MemberValue //donne 1
    maintenant je voudrais pouvoir caster les types de ces infos pour pouvoir faire :
    Code MDX : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    (
        [Measures].[Chiffre d’affaire],
        strToMember
        (
            "[Axe de Temps].[Année fiscale].["+
            [Axe de Temps].[Année fiscale].currentMember.parent.prevMember.memberValue+
            "].["+
            [Axe de Temps].[Année fiscale].currentMember.memberValue+
            "]"
        )
    )
    Car pour l'instant, avec ce code, j'ai une erreur :
    il existe une incompatibilité de type pour l'opérateur "+"
    il faut caster le résultat en string, mais la fonction cast n'existe pas en MDX, pas de requête SQL possible, ici on interroge directement un cube

  13. #13
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Hi hi, j'me suis inscrit exprès pour toi, t'en a de la chance !

    Je m'y connâît pas spécialement mais tu dis devoir caster des données membres en String. APrès quelques recherches j'ai trouvé ça.

    C'est peut-être pas du tout ce que tu cherches mais bon, ça m'occuppe un peu pendant ma longue après-midi !

  14. #14
    Membre habitué Avatar de anayathefirst
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 326
    Points : 182
    Points
    182
    Par défaut
    yop yop,
    Merci beaucoup Ghuenter, mais... après tant de recherche, tu penses bien que je suis tombé sur cette page ,
    En fait la fonction memberToStr renvoi un élément de type chaîne qui est de la forme du nom du membre. Dans mon cas, pour le membre [Axe de temps].[Année fiscale].[2].[3], ça renvoie la chaine "[Axe de temps].[Année fiscale].[2].[3]" ^^
    Mais bon, j'ai trouvé une solution qui fonctionne (pour ceux que ça intéresse) : en fait, il suffit de remplacer la fonction memberValue (qui renvoie la valeur du membre dans le type du membre dans la BD) par la fonction member_name qui renvoie directement la valeur du membre castée en string
    ça donne ça :
    Code MDX : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    (
      [Measures].[Chiffre d’affaire],
      strToMember 
      (
        "[Axe de Temps].[Année fiscale].["+
        [Axe de Temps].[Année fiscale].currentMember.parent.prevMember.member_name+
        "].["+
        [Axe de Temps].[Année fiscale].currentMember.member_name+
        "]"
      )
    )
    PS : je tiens à remercier tous ceux qui ont spoilé mon message et qui ont découragé des personnes compétentes dans le domaine à m'aider...
    PS2 : j'espère que vous avez compris que c'était ironique

  15. #15
    Membre actif Avatar de Nicomart
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    205
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 205
    Points : 210
    Points
    210
    Par défaut
    Citation Envoyé par anayathefirst
    En fait la fonction memberToStr renvoi un élément de type chaîne qui est de la forme du nom du membre. Dans mon cas, pour le membre [Axe de temps].[Année fiscale].[2].[3], ça renvoie la chaine "[Axe de temps].[Année fiscale].[2].[3]" ^^
    Mais bon, j'ai trouvé une solution qui fonctionne (pour ceux que ça intéresse) : en fait, il suffit de remplacer la fonction memberValue (qui renvoie la valeur du membre dans le type du membre dans la BD) par la fonction member_name qui renvoie directement la valeur du membre castée en string
    ça donne ça :
    Code MDX : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    (
      [Measures].[Chiffre d’affaire],
      strToMember 
      (
        "[Axe de Temps].[Année fiscale].["+
        [Axe de Temps].[Année fiscale].currentMember.parent.prevMember.member_name+
        "].["+
        [Axe de Temps].[Année fiscale].currentMember.member_name+
        "]"
      )
    )
    Ah zut, j'allais le dire... enfin bon, heureux de voir que tu as trouvé par toi-même

  16. #16
    Rédacteur

    Avatar de loka
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    2 672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 672
    Points : 5 509
    Points
    5 509
    Par défaut
    Content que tu ai résolu ton problème

    C'est marrant de voir sa promo flooder ici

  17. #17
    Membre actif Avatar de Nicomart
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    205
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 205
    Points : 210
    Points
    210
    Par défaut
    *coin*

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

Discussions similaires

  1. [VB 2005] problème avec MSCHART
    Par kinganasius dans le forum Windows Forms
    Réponses: 2
    Dernier message: 12/10/2006, 01h35
  2. Réponses: 1
    Dernier message: 09/08/2006, 18h05
  3. [VC++2005]problème avec __restrict
    Par alucardo dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 14/07/2006, 01h33
  4. [Delphi 2005] Problème avec JVCL
    Par jpminiscloux dans le forum EDI
    Réponses: 3
    Dernier message: 11/09/2005, 16h23
  5. [Delphi 2005] : Problème avec MessageDlg.....
    Par babyface dans le forum Langage
    Réponses: 2
    Dernier message: 08/07/2005, 13h07

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