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 :

Cumul à date. . . oui mais. . .[début réponse et nouvelle perspective] [2008]


Sujet :

SSAS

  1. #1
    Membre à l'essai
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2009
    Messages : 16
    Points : 10
    Points
    10
    Par défaut Cumul à date. . . oui mais. . .[début réponse et nouvelle perspective]
    Je souhaite faire un "cumul à date", et ce meme cumul sur n, n-1, et n-2...
    J'en vois certain se precipitant sur les clavier pour me répondre :
    "YTD ()" ou bien "Aggregate()", "Periodtodate()" et parallelperiod()"...
    Oui... mais non! ce serait trop simple.

    Voila mon problème, je ne travaille pas sur l'année civile, mais sur une notion de "Campagne" qui commence le 1 Aout et se termine le 31 Juillet.

    Ainsi la campagne 2011/2012 commence le 1/8/2011 pour se terminer le 31/07/2012.

    Et je veux donc, mes cumuls à date sur les campagne et non les années civile.

    Par exemple au 3/2/2012 je suis dans la campagne 2011/2012 je veux le cumul du 1/08/2011 jusqu'au 3/2/2012.

    Pour corser le tout, et parce que vous etes des genies, je veux cela sur l'ensemble des mesures de mon cube. A la facon dont le fait le wizard lorsqu'on travaille sur les "year to date"

    Une idée?

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 29
    Points : 48
    Points
    48
    Par défaut
    Les informations concernant les campagnes sont elles incluses dans la table de temps?

    Est-ce que deux campagnes peuvent avoir lieu en même temps?

    "To Date": au débotté, donc non testé pour ce cas spécifique, cela ressemblerait à ça:

    CALCULATE( TaMesure
    ;FILTER(
    ALL( Dates )
    ; Dates[Date] <= LASTDATE( Dates )
    );
    SUMMARIZE(
    TOPN(1 ; VALUES( Dates ) )
    ; Dates[Campagne]
    )
    )
    Si plusieurs campagnes sont sélectionnées, l'expression SUMMARIZE assure que seul la dernière campagne est considérée. Comportement analogue aux fonctions TOTALYTD et TOTALMTD ...

    Si tu le veux sur l'ensemble des mesures de ton cube, il faudra répéter l'expression pour l'ensemble des mesures de ton cube.

  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
    A la lecture de sa dernière phrase, je pense qu'il veut du MDX

  4. #4
    Membre à l'essai
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2009
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    - Non 2 campagnes ne peuvent pas etre simultanées.
    1 date appartient à une et une seule campagne.
    Cepedant nous allons avec ceci comparer des campagnes les unes aux
    autres justement à la même date.

    - La notion de campagne est incluse dans la table du temps, puisque l'on se base sur la date pour l'etablir.

    - Par contre je n'arrive pas à comprendre ce script...

    - Je vais faire des essais sur le cube de test.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2009
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par d.joubert Voir le message
    A la lecture de sa dernière phrase, je pense qu'il veut du MDX
    Pas forcement
    Mais cela me semble plus approprié qu'un script surtour si je dois faire autant de script que de mesure, sachant qu'il faut la campagne n, n-1 et n-2...

  6. #6
    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
    Ah moi, je maintiens le "forcément" vu qu'il y a pas de Wizard en tabulaire.

    Par contre, je comprends pas le
    Mais cela me semble plus approprié qu'un script surtour si je dois faire autant de script que de mesure, sachant qu'il faut la campagne n, n-1 et n-2...
    Ce n'est pas la problématique qui va nous faire choisir le langage :p

    Bon sinon, plus sérieusement et une bonne fois pour toutes Steph : travailles-tu en tabulaire ou en multidimensionnel ?

    Peux-tu nous décrire les hiérarchies de ta dimension temps et notamment celle avec les campagnes ?

  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
    Bon sinon, plus sérieusement et une bonne fois pour toutes Steph : travailles-tu en tabulaire ou en multidimensionnel ?
    [RunAs Profile="Modo"]
    Je veux pas dire mais il a mis 2008 comme version, alors si vous faisiez du DAX en 2008 les enfants, vous étiez super visionnaires.
    [/RunAs]

  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
    C'est bien vrai tout ça.

    Bon et elle arrive cette hiérarchie qu'on aille chercher le premier enfant du niveau campagne du currentmember

  9. #9
    Membre à l'essai
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2009
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    ca arrive... juste un peu au feu cet apres-midi, je poste cela dans qq minutes ainsi qu'un script de mon cru qui devrait peut etre mieux me faire comprendre.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2009
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    La dimension temps :

    +-A-M-J
    | +-Annee
    | +-Mois
    | +-Jours
    |
    +-A-S-JS
    | +-Annee
    | +-Semaine
    | +-JoursSemaine
    |
    +-Campagne
    |
    +-Cumul Mois au jour
    |
    +-Date
    |
    +-Mois (nom du mois)
    |
    +-Semaine

    (Je sais certains attributs ne semblent pas opportun)

    Voila le script que je tente juste en MDX pour mes recherches... (prière de ne pas rire. )

    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
    18
    19
    with		
    	Member [Measures].[str] as
    	    iif (vbamdx!val(order(Ascendants([Date Demandée].[A-M-J].Currentmember),DESC).item(2).properties("KEY1"))<8,
    		"[Date Demandée].[A-M-J].[Jour].&["+
    		vbamdx!cstr(vbamdx!val(order(Ascendants([Date Demandée].[A-M-J].Currentmember),DESC).item(1).properties("Key"))-1)
       		+"]&[8]&[1]:"+
       		MEMBERTOSTR( [Date Demandée].[A-M-J].CurrentMember),
       		"[Date Demandée].[A-M-J].[Jour].&["+
    		(order(Ascendants([Date Demandée].[A-M-J].Currentmember),DESC).item(1).properties("Key"))
       		+"]&[8]&[1]:"+
       		MEMBERTOSTR( [Date Demandée].[A-M-J].CurrentMember)
       		)
    	Member [measures].[TCC] as 
    		sum(strtoset([Measures].[str]), [Measures].[Tonnage Expédié])
     
    select 
    	{[Measures].[TCC],[Measures].[str]} on columns,
          {[Date Demandée].[A-M-J].[Jour].&[2013]&[6]&[4],[Date Demandée].[A-M-J].[Jour].&[2012]&[6]&[4]} on rows
    from	[Ventes sur 4 ans]
    Dans ce script :
    [Measures].[str] : contient le "string" correspondant au {set} representant la plage du 1/8/ à la date courrante en gerant la problematique de l'année de cette derniere pour determiner la campagne.
    [measures].[TCC] : contient la somme du set pour 1 mesure donnée.

  11. #11
    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 peux pas appeler un attribut "Cumul mois au jour". Enfin tu peux mais ça n'a pas de sens, c'est comme si tu nommais un attribut "Janvier 2012".

    Tu devrais l'appeler Cumul à la rigueur et prendrait pour valeur "Cumul mois au jour" et "Cumul Campagne au jour".

    Tu devrais créer une hiérarchie C-M-J avec pour niveaux campagne, mois et jour.
    Ensuite tu rajoutes dans le code 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
     
    CREATE MEMBER  CurrentCube.[DimTemps].[cumul].[cumul Mois au jour] 
    As NULL ;
     
    CREATE MEMBER  CurrentCube.[DimTemps].[cumul].[cumul Campagne au jour] 
    As NULL ;
     
    SCOPE ([DimTemps].[cumul].[cumul Campagne au jour],[DimTemps].[Date].[Date].Members);
       This =
       Aggregate
       (
         ancestor([DimTemps].[Date].currentmember,[DimTemps].[C-M-J].[campagne]).firstchild
          :
         [DimTemps].[Date].currentmember
       )
    END SCOPE;
    Dans l'idée, c'est ça avec le scope pour le cumul mois à date à rajouter

  12. #12
    Membre à l'essai
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2009
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Le cumul du mois au jour est issu des "wizzard" du cumul "Month to date". Ce n'est pas une chose sortie de mon imagination.
    Je vais tester votre solution, je vous tiens informé.
    Merci de vos aides précieuses à tous!

  13. #13
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 29
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par d.joubert Voir le message
    A la lecture de sa dernière phrase, je pense qu'il veut du MDX
    En effet

  14. #14
    Membre à l'essai
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2009
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Bien,

    Apres vos conseils et aides voici la solution à laquelle je suis parvenu :

    1/ Dans la source de données "Temps" j'ai ajouté un champs "Cumul Campagne" renvoyant la valeur fixe : "Valeur"

    2/ Dans la dimensiont "Temps"
    2.1/
    J'ai fais une hierarchie Campagne avec les attributs :
    Campagne, Mois, Jour.
    L'attribut Mois à pour clef composite : Campagne+Annee+mois, avec un tri sur la clef afin d'avoir à l'affichage l'ordre des mois : de Aout à Juillet.
    L'attribut Jour à pour clef composite : Campagne+Annee+mois+jour
    2.2/ j'ai créé l'attribut Cumul Campagne. Avec la proprieté isaggregate à False.
    et default member : [Vue BI Ventes Temps].[Cumul Campagne].&[Valeur]

    3/ dans le cube, j'ai créé le membre calculé :
    [CCAD] dans l'attribut [Vue BI Ventes Temps].[Cumul Campagne]
    avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    case 
    when [Vue BI Ventes Temps].[campagne].currentmember.properties("Level_number")= '2' then
    aggregate(([Vue BI Ventes Temps].[Cumul Campagne].&[Valeur])*(ancestor([Vue BI Ventes Temps].[campagne].currentmember,[Vue BI Ventes Temps].[campagne].[campagne]).firstchild).item(0):[Vue BI Ventes Temps].[campagne].currentmember)
    when [Vue BI Ventes Temps].[campagne].currentmember.properties("Level_number")= '3' then
    aggregate(([Vue BI Ventes Temps].[Cumul Campagne].&[Valeur])*(descendants(ancestor([Vue BI Ventes Temps].[campagne].currentmember,[Vue BI Ventes Temps].[campagne].[Campagne]).firstchild,1)).item(0):[Vue BI Ventes Temps].[campagne].currentmember)
    else 'NA' end
    Je me suis en fait basé sur ce que fait le wizard lorsque nous créons un "Year to Date" dans la rubrique time intelligence du wizard.

    Je pense que mon code est optimisable.

    Maintenant je rencontre un 2eme problème... (je commence à travailler dessus)
    Mes utilisateurs veulent dans Excel, avoir en ligne la hierarchie [Campagne] et en colonne le CCAD mais aussi ce meme CCAD à la campagne précédante...

    Je suis preneur de toutes idées, et comme je l'ai fait là je ferais le retour une fois la solution trouvée.

    Amicalement,

    Stephane

  15. #15
    Membre à l'essai
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2009
    Messages : 16
    Points : 10
    Points
    10
    Par défaut Je suis un ANE !!!
    Problème résolu [partiellement]... (un comportement étrange est identifié.)

    Comme vous avez pu le voir plus haut je suis partie dans des membres calculés plutôt "capilotractés". Mais je n'étais pas du tout convaincu du bienfondé de la chose.
    [...]
    Et une lumière c'est faite au milieu de la nuit !
    [...]
    1er Etape :
    Donc, j'ai créé une hiérarchie : C-A-M-J. campagne/année/mois/jour de la même façon que dans mon post plus haut, avec une nuance (de taille) sur une propriété des membres de la hiérarchie que j'avais "oubliée" : "Type"
    Dans mes essais précédants, j'avais laissé la propriété "type" à "Regular" pour les attributs de la hiérarchie, dans cet nouvel essai j'ai mis :
    Campagne : Regular
    Année . . : Date.Calendar.Year
    Mois . . . . : Date.Calendar.Month
    Jour . . . . : Date.Calendar.Days
    Chaque attribut avec une clef composite comme décrite dans le post précédent et un sur la clef.
    Je tente donc un "Paralleleperiods" dans une requête MDX pour voir si à une date donnée j'obtiens le membre de l'année précédente.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    With member [measures].[x] as
    membertostr(parallelperiod([Vue BI Ventes Temps].[CAMJ].[Annee],1, [Vue BI Ventes Temps].[CAMJ].currentmember))
    member [measures].[y] as
    membertostr([Vue BI Ventes Temps].[CAMJ].currentmember)
    select {[measures].[x],[measures].[y]} on columns, 
    [Vue BI Ventes Temps].[CAMJ].allmembers on rows 
    from [Ventes Test]
    Horreur... j'obtiens des résultats totalement farfelus...
    Le 1/8/2003 de la campagne 2003/2004 (en Y) renvoie le 1/1/2003 de la campagne 2002/2003 (en X) au lieu du 1/8/2002 de la campagne 2002/2003.
    (nb: une campagne commence le 1/8/ANNEE et termine le 31/07/ANNEE+1)
    et parfois j'obtiens même des « null » dans la mesure X

    Je fais le même teste en décalant d'un mois au lieu d'une année :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    With member [measures].[x] as
    membertostr(parallelperiod([Vue BI Ventes Temps].[CAMJ].[Mois],1, [Vue BI Ventes Temps].[CAMJ].currentmember))
    member [measures].[y] as
    membertostr([Vue BI Ventes Temps].[CAMJ].currentmember)
    select {[measures].[x],[measures].[y]} on columns, 
    [Vue BI Ventes Temps].[CAMJ].allmembers on rows 
    from [Ventes Test]
    Cela fonctionne parfaitement !

    Je teste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    With member [measures].[x] as
    membertostr(parallelperiod([Vue BI Ventes Temps].[CAMJ].[Campagne],1, [Vue BI Ventes Temps].[CAMJ].currentmember))
    member [measures].[y] as
    membertostr([Vue BI Ventes Temps].[CAMJ].currentmember)
    select {[measures].[x],[measures].[y]} on columns, 
    [Vue BI Ventes Temps].[CAMJ].allmembers on rows 
    from [Ventes Test]
    Le 1/8/2003 de la campagne 2003/2004 (en Y) renvoie le 1/8/2002 de la campagne 2002/2003 (en X) ce que je cherchais à atteindre!!!
    (NB: l'attribut campagne à la propriété type en regular et non en date.)

    2eme étape :
    Je tente les cumuls à date, sur la base de fonction : periodstodate() avec le même principe que vue dans mon post précédent,
    Mais à la place du script je mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    aggregate([Vue BI Ventes Temps].[Cumul Campagne].&[Valeur]*periodstodate([Vue BI Ventes Temps].[CAMJ].[Campagne],[Vue BI Ventes Temps].[CAMJ].currentmember))
    Cela semble fonctionner !!! (Les valeurs sont en cour de vérification).
    De même, lorsque je mets un paralleleperiod() sur le [Vue BI Ventes Temps].[CAMJ].currentmember avec d'avoir les campagnes -1 et -2.

    Conclusion :
    Seul soucis donc, le parallelperiod sur l'attribut Annee de la hiérarchie.
    Pour remédier à cela, j'ai décidé de supprimer cet attribut pour n'avoir au final qu'un C-M-J.

    Conclusion (bis) :
    J'espère que ma bêtise de ne pas avoir qualifié correctement les attributs servira à d'autres!
    Pour moi cela sera une superbe leçon!

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

Discussions similaires

  1. Des dates, des dates oui mais des Panzanis
    Par bonuxis dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 29/07/2009, 17h27
  2. Bac + 5 … oui mais pourquoi ? des réponses
    Par Merfolk dans le forum Etudes
    Réponses: 38
    Dernier message: 31/12/2008, 02h02
  3. Création de logiciel, oui, mais quelle base de donnée ?
    Par Acti dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 17/02/2005, 12h41
  4. HomeDB, oui mais comment ?
    Par Gregouz dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 27/10/2004, 15h27
  5. [APPLET-SERVLET] download oui mais upload non ...
    Par meufeu dans le forum Applets
    Réponses: 7
    Dernier message: 09/08/2004, 14h36

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