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 :

SUM de mesures et données dimensions


Sujet :

SSAS

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 35
    Points : 8
    Points
    8
    Par défaut SUM de mesures et données dimensions
    Bonjour,

    Je suis un débutant en BI et je me trouve devant mon premier cube avec mesures à faire.

    J'ai une liste de calcul à créé dans le cube mais je suis un peu perdu dans la marche à suivre.

    Pour le premier je dois faire la somme Montant Annuel regroupé par le nombre de contrat (le comptage de ligne créé par défaut par ssas).

    Mon Montant Annuel ce trouve dans ma dimension contrat (il est déjà calculé au niveau annuel quand je le récupère) et le nombre de contrat est donc une mesure.

    Comment dois-je procéder ? Faut il que je mette mon champ montant annuel dans ma table de fait pour pouvoir le traiter ou est ce possible directement depuis la dimension ?
    Le calcul se fait il au niveau de ssas ou bien j'ai raté une étape et aurais pu être fait au niveau de ssis ?
    Enfin, j'ai vu pas mal d'exemple ou quand il y a un calcul a faire certains mettent les valeurs du filtre en dur dans le code, n'y a t'il pas moyen de créé un calcul "générique" de somme qui puissent s'appliquer dans plusieurs cas ?

    Merci d'avance pour vos réponses

  2. #2
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Points : 268
    Points
    268
    Par défaut
    Bonjour,
    A priori, si j'ai bien compris, vous devriez avoir une table de fait dont les colonnes devrait ressembler à

    Tdf_Evt
    N° Transac (Clé primaire)
    Date transaction (Date)
    Montant transaction (Numérique)
    N° Contrat (Foreign Key)

    Dim_Contrat
    Et une autre table de dimension
    N° Contrat (Clé primaire)
    Nom du contrat (Texte)

    A partir de là, il est assez facile de monter le cube et de répondre à vos besoin (SSAS s'occupe de tout).

    Il vous faudra créer la dimension Contrat à partir de la table Dim_Contrat avec les deux attributs (N° et nom).
    Il vous faudra créer une autre dimension temps (si vous ne l'avez déjà). A prioris SSAS à un assistant de création de table de temps puis de dimension. Il se propose, il me semble, même de créer des hierarches dans la tables (Jour -> Semaine -> Années) et (Jour -> Mois -> Trimestre -> Semestre -> Année)

    Ensuite vous créez le cube avec la table tdf_Evt avec comme mesure Montant transaction et "Tdf_Evt Nombre" (qui est créé automatiquement avec SSAS)
    Et vous liez votre cube avec les deux dimensions Contrat de (N° Contrat avec N° Contrat / lien normal) et Temps (Date -> pkDate / lien normal)

    Vous générez les dimensions puis ensuite le cube et vous avez toutes les sommes aggrégés que vous désirez à partir de votre cube et de ses dimensions.
    Vous mettez un affichage de la mesure / Nom de contrat ou par Mois dans un outil de requètage OLAP (SSRS, SSAS ou Excel) et votre cube s'occupe de tout et si votre outil de requétage est suffisamment élaboré (c'est le cas des trois exemples) et que votre besoin s'arrêté à ce que vous avez demandé, vous n'avez pas besoin de faire du MDX : tout est graphique

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 35
    Points : 8
    Points
    8
    Par défaut
    Bonjour Vitalth,

    Merci de ta réponse.

    Au niveau de la table de fait et de la dimension pas de soucis.(a part que je n'ai pas de primary key dans ma table de fait, j'ai appris à faire sans et je ne vois pas trop ce que cela apporte)
    J'ai créé la dimension contrat dans le cube ainsi que la dimension date (que j'avais déjà).

    Nom : vuedimension.png
Affichages : 1114
Taille : 12,2 Ko

    Ensuite, je te suis encore sur la création du cube avec ma table de fait et le calcul de count de ligne qui est créé automatiquement.
    Par contre je ne comprend pas trop ce que tu veux dire par "lié" mon cube avec les deux dimensions. Si je les ai créé comme on le voit sur le screen elles sont lié avec, non ?

    Merci

  4. #4
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Points : 268
    Points
    268
    Par défaut
    A prioris quand tu construite ton cube tu as un assistant de création et si ta vue de source de données est bien faite, (celle que tu as noirci), avec les bonnes clé étrangères sur ta table de fait, l'assistant te dit à quel dimension ton cube est lié.
    Mais tu peux t'en assurer en regardant l'onglet "Utilisation de la dimension" quand tu ouvres ton cube.
    Normalement tu as une espèce de matrice avec en ligne tes dimensions et en colonne ton groupe de mesure (pour faire simple, il s'agit de ta table de fait).
    Tu peux ajouter des dimensions s'il en manque en cliquant droit dans l'espace de travail. L'intersection entre le groupe de mesure et la dimension est la définition liaison entre les deux

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 35
    Points : 8
    Points
    8
    Par défaut
    Oui, je vois de quoi tu parle :

    Nom : vuecube.png
Affichages : 1008
Taille : 18,8 Ko

    Si je comprend bien, on peux voir que mes dimensions sont bien utilisées par le cube.

  6. #6
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Points : 268
    Points
    268
    Par défaut
    Oui c ça :
    je vois que tu as un autre groupe de mesure appelé "Dim Entete Contrat" : est ce normal ?
    As tu un montant dans tes entêtes de contrat qui n'est pas la somme de tes lignes de contats ? Si non ce n'est pas la peine d'avoir un tel groupe de mesure. En faisant des requêtes sur ta dimension entéte de contrat, tu retrouveras bien le montant souhaité.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 35
    Points : 8
    Points
    8
    Par défaut
    Dim Entete Contrat contient 3 calculs "somme" de 3 champs dont Montant Annuel.

    J'avais fais des tests en créant des mesures mais le seul résultat que j'obtient c'est ça :

    Nom : sommemontantannuel.png
Affichages : 1034
Taille : 46,5 Ko


    Il n'y a qu'une valeur de calculé et il me la colle partout ...

  8. #8
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Points : 268
    Points
    268
    Par défaut
    Oui c normal puisque ton groupe de mesure "Dim Entete Contrat" ne dépend que de la dimension "Dim Entete Contrat" : autrement dit il est "indépendant" des autres dimensions.
    Si tu veux corriger ça, il faut que tu ajoutes un lien dans les intersections grisées entre ton groupe de mesure et tes dimensions dans l'onglet "Utilisation des dimensions" de ton cube.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 35
    Points : 8
    Points
    8
    Par défaut
    J'ai essayer un truc :

    lié en "plusieurs à plusieurs" mon groupe de mesures DimEnteteContrat à la "date reception" qui me servait dans la grille et j'arrive à un résultat qui semble assez bon.

    Nom : sommemontantannuelresultat.png
Affichages : 1004
Taille : 15,8 Ko

    J'ai regardé que le 23M en résultat final et ça correspond a peu près à l'existant j'ai une petite différence au niveau du nombre de contrat, je n'ai pas mis a jour.

    Par contre je dois dire que j'ai un peu fait "au pif".

  10. #10
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Points : 268
    Points
    268
    Par défaut
    Je ne comprends pas : tu n'as pas de date de réception dans ta table de fait "Dim Entete Contrat" ?
    Parce que sinon il vaut mieux l'ajouter en SSIS même si tu as de la redondance d'information ou faire une vue nommée dans ta vue de source de données pour la rajouter.
    Ensuite la relation est normal de date de réception de ta table de fait à date de la dimension temps

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 35
    Points : 8
    Points
    8
    Par défaut
    Dim entete contrat n'est pas une table de fait mais un groupe de mesure (et une dimension), ma seule table de fait c'est fact contrat.

    Ma date reception est dans dim entete contrat et fact contrat, je devrais la mettre que dans une table mais je ne sais pas laquelle je penche pour la table de fait.

  12. #12
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Points : 268
    Points
    268
    Par défaut
    Pour moi c'est plutôt l'inverse : un groupe de mesure est un ensemble de mesure qui viennent d'une table de fait. Si "dim entete contrat" n'est selon toi pas une table de fait alors les 3 mesures qui sont dans la table n'ont rien à y faire selon moi.
    Après peu importe que ta table de fait soit aussi dimension.
    Il y a quelque chose d'illogique dans ta modélisation.

    Ta ou tes tables de fait doivent regrouper l'ensemble des mesures.
    Les dimensions sont en contrainte de clé étrangère avec ta table de fait. (Il peut y avoir des dimensions qui sont en contrainte de clé étrangère avec d'autre dimension mais personnellement je ne fais jamais ça : je m'arrange toujours pour avoir une relation simple entre table de fait et table de dimension soit en SSIS soit dans la vue de source de données).

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 35
    Points : 8
    Points
    8
    Par défaut
    Ok, je ne sais pas trop pourquoi un groupe de mesures Dim entete contrat a été créé, je regarderais cela plus tard.

    J'ai obtenu le résultat que je voulais, je te remercie.

    Je dois maintenant faire un cumul du montant par année j'ai essayé quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE MEMBER CURRENTCUBE.[Measures].[Cumul]
     AS SUM([Dim Date].[Annee]:[Dim Date].[Annee].Currentmember,[Measures].[MontantAnnuel]), 
    VISIBLE = 1
    Pas d'erreur mais un #Valeur en résultat sous excel, je vais essayer de trouver une autre formule.
    (Je dois créé un autre sujet ou je peux continuer sur celui-ci)

  14. #14
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Points : 268
    Points
    268
    Par défaut
    Oui ça m'est déjà arrivé sur Excel et j'avoue ne pas avoir trouvé.
    As tu essayé sur SSAS ou en SSRS : tu n'as peut être pas la même erreur que moi : En général si tu as une erreur le système est un peu plus parlant en SSAS. (Dans l'onglet Navigateur en laissant la souris sur #VALEUR : il peut t'expliquer le problème).

    Sinon je ne suis pas sur que ce soit la meilleur méthode pour cumuler la valeur sur une année : il existe des YTD qui donnent de très bon résultat si ta dimension temps à au moins une hierarchie contenant l'année. Plus généralement il y a PeriodToDate() mais je ne pense pas que tu en ais besoin.

    L'avantage de YTD c'est qu'il remet à 0 la valeur de la somme cumulée tous les premiers jour de l'an. Tandis que dans ta méthode ce ne sera pas le cas.

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 35
    Points : 8
    Points
    8
    Par défaut
    Ok j'ai regardé du coté des YTD et j'ai fais ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    create MEMBER CURRENTCUBE.[Measures].[Cumul4] AS 
        Sum
        (
          YTD([Dim Date].[Calendrier].CurrentMember)
         ,[Measures].[Montant Annuel]
        )
    Pour l'instant ça ne donne rien mais je vais continuer de regarder.

    Edit : J'ai tester dans ssas comme tu m'a conseillé et il indique que "la dimension dim date n'a pas été trouvé dans le cube"

  16. #16
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Points : 268
    Points
    268
    Par défaut
    Le premier argument de YTD devrait être le membre courant pris sur une hierarchie.
    Par exemple si tu as une hierarchie [Hierarchie Annee - Mois], ton premier argument devrait être
    [Date].[Hierarchie Annee - Mois].CurrentMember.
    Je ne sais pas ce que représente [Calendrier] dans ta dimension temporelle mais si c'est juste l'attribut date, cela ne devrait pas fonctionner il me semble : Il faut une hierarchie où le dernier niveau est l'année.

  17. #17
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 35
    Points : 8
    Points
    8
    Par défaut
    Excuse moi j'ai oublié de préciser :

    Nom : hierarchie.png
Affichages : 995
Taille : 7,0 Ko

    Je me suis servis de ceci : http://aniruddhathengadi.blogspot.fr...d-and-wtd.html
    La 2eme requête qu'il effectue correspond à ce que je veux sauf que lui cumul par mois alors que je veux cumuler par année.
    Vu que je n'ai pas adventureWorks sous la main j'ai trouvé un recap de leur dimension date et j'avais remarqué que calendar était une hiérarchie.
    Je crois avoir bien adapté sa requête a ssas et à mon cas je vais regarder.

  18. #18
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Points : 268
    Points
    268
    Par défaut
    Si c'est le cumul par année c'est bien la somme que tu avais préalablement noté qu'il te faut prendre car YTD remet à 0 tous les débuts d'année.
    Il y a bien PeriodToDate mais je ne voudrais pas t'induire en erreur : je ne l'ai jamais utilisé et je ne suis pas sur que c'est ce qu'il te faut

  19. #19
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 35
    Points : 8
    Points
    8
    Par défaut
    Peu importe ce que j'essai d'utiliser j'ai toujours le même message " La dimension DimDate était introuvable dans le cube lors de l'analyse de la chaine dimDate.Annee"

  20. #20
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Points : 268
    Points
    268
    Par défaut
    Je constate que dans la création de tes hierarchies de la dimension temporelle, il y a une vague bleue : peux tu me dire pourquoi (en laissant ta souris dessus) ?

    Pareil dans la somme que tu as préalablement créé, il faut faire apparaitre la hierarchie :

    SUM([DimDate].[Calendar].[Annee]....

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Réponses: 5
    Dernier message: 26/09/2013, 18h17
  2. Requête MDX données dimension Employés
    Par bruninho dans le forum SSAS
    Réponses: 7
    Dernier message: 24/02/2012, 14h11
  3. Aggregate Rules sur Mesure d'une Dimension de Mesures
    Par antoine_59 dans le forum Cognos
    Réponses: 1
    Dernier message: 05/10/2010, 09h57
  4. Réponses: 0
    Dernier message: 22/06/2010, 20h15
  5. Réponses: 1
    Dernier message: 16/02/2010, 20h41

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