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 :

[OLAP]mesure non numérique


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 61
    Points : 42
    Points
    42
    Par défaut [OLAP]mesure non numérique
    Bonjour,

    Je crée actuellement un cube OLAP pour gérer les demandes de dépenses d'une entreprise.
    Ma table de faits contient des mesures telles que le montant de la dépense, le montant receptionné, le montant facturé, le nombre de receptions...
    J'aimerais rajouter une mesure non numérique qui est le demandeur de la dépense (je ne veux pas que le demandeur soit une dimension) afin de pouvoir afficher le nom du demandeur pour chaque demande.
    Est-ce que cela est possible? Si oui, comment faire? (je me sers d'Analysis Manager sous SQL Server)

    Merci

  2. #2
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Bonjour,

    Tu peux le faire en ajoutant une "member property" (je ne connais pas le nom sur la version française) dans la dimension qui convient, contenant la colonne du nom du demandeur, et ensuite en référençant cette propriété dans un membre calculé (ta dimension [measures] comme parent).
    Le membre calculé devrait donner qqch comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [dimension].Properties("demandeurName")
    Evidemment, ça ne va pas être très utile pour les données agrégées, tu vas certainement voir un #ERR. Tu peux contourner le problème en faisant qqch comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [dimension].FirstChild.Properties("demandeurName")
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 61
    Points : 42
    Points
    42
    Par défaut
    Salut!

    En effet avec la première solution, des #ERR s'affichent mais avec la deuxième, je n'ai rien qui s'affiche...
    "demandeur" est une donnée qui provient d'une colonne de ma table de faits.
    Peut être est-elle mal placée? Faut-il que ce soit une colonne d'une table dimension?

    Merci de ta réponse

  4. #4
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Avant de te répondre j'ai fait mon test avec une dimension créée à parti de la table de faits (c'est pas très beau, mais bon). Le FirstChild fonctionnait.
    Maintenant je parle à l'aveugle...

    Est-ce qu'en créant une dimension Demandeur à partir de ta table de faits, et en ajoutant la propriété à cette dimension, cela donne quelque chose ?
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 61
    Points : 42
    Points
    42
    Par défaut
    J'ai créé une dimension Demandeur à partir de la colonne demandeur de ma table de faits et j'ai ensuite ajouté une propriété de membre.
    J'ai ensuite créé le membre calculé avec FirstChild mais ca m'affiche toujours le premier demandeur de la base, quelque soit la demande...
    J'ai l'impression qu'il ne fait pas le lien entre la nouvelle dimension et la table de faits.

  6. #6
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Aïe... en effet ça paraît logique.
    Et si tu enlèves le .FirstChild ?

    Le problème ici, est comment va-t-il faire pour comprendre ce qu'on veut quand on a des données agrégées ?

    Ne pourrais-tu pas simplement afficher la dimension Demandeur que tu viens de créer ? En terme d'affichage tu verras ton demandeur, et ce n'est pas bien loin de l'afficher dans les mesures.
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 61
    Points : 42
    Points
    42
    Par défaut
    Sans le FirstChild il y a #ERR
    J'ai vu dans les propriétés avancé d'une mesure que l'on peut choisir le type de données. Mais si je met varchar, lorsque je traite le cube j'ai une erreur :
    Le cube ne peut pas contenir qu'une seule cellule dans son espace multidimensionnel
    Sais-tu ce que cela signifie?

    Si je met le Demandeur en dimension, j'aurais les demandes par demandeur et moi je veux juste que le demandeur soit une info en plus du montant de la demande...

  8. #8
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Je _suppose_ qu'il te refuse simplement le concept d'avoir une donnée qu'il ne peut pas agréger.

    Ce que je ne comprends pas bien, c'est : si tu ne veux pas avoir les demandes par demandeur, donc tu veux avoir des demandes agrégées qui ont plusieurs demandeurs... Et là, dans l'agrégation, quel demandeur veux-tu afficher ?
    Si tu affiches un total sans filtrer par dimension, juste un total, que veux-tu voir comme demandeur ?
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 61
    Points : 42
    Points
    42
    Par défaut
    En fait à la base le problème vient de l'application qui alimente le datawarehouse car il n'y a pas de normes pour entrer le nom du demandeur(juste un champ de texte à remplir). Du coup, on retrouve dans la base plusieurs fois le meme demandeur avec un nom différent (ex : Pierre Dupond, P.Dupond, P Dupond...). Donc la dimension Demandeur n'est pas pertinente car on ne peut pas regrouper toutes les demandes d'un demandeur.
    Seulement j'aimerais quand meme avoir ce nom lorsque je regarde une demande (une demande n'a qu'un seul demandeur). Ce serait juste une info.
    Je voudrais avoir ceci (le logiciel d'accès au cube au final est excel) :
    Demande Montant Demandeur
    demande 2534 200,35 P.Dupond
    demande 2535 192,00 Pierre Dupond
    Total demande 392,35
    Si je met Demandeur comme dimension je vais avoir ca
    Demande Demandeur Montant
    demande 2534 P.Dupond 200,35
    Total demande 2534 200,35
    demande 2535 Pierre Dupond 192,00
    Total demande 2535 192,00
    Total demande 392,35
    Et ca devient vite illisible... C'est pourquoi j'aurais voulu avoir le nom du demandeur juste en info

  10. #10
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Ok, mais cela ne fait que reporter la question : ce que tu veux afficher ressemble plus à un rapport qu'à un cube. Dans un cube, tu peux afficher des données agrégées, par exemple toutes les demandes du mois si tu places la dimension "date de demande" (j'invente). Dans ce cas, tu n'auras pas de demandeur à afficher, puisque le nombre correspondra à un count de demandes...
    Tu peux par exemple faire une dimension "Id de demande", avec un membre fils "Demandeur", comme ça tu as ton demandeur par demande. C'est un peu tirer la queue d'Olap...

    Sinon, en restant sur ton chemin initial, il y a peut-être un moyen en bricolant avec ces propriétés, mais je n'ai malheureusement pas la réponse. J'ai essayé avec ce que je savais.

    Il y a une fonctionnalité intéressante des cubes, c'est le drill-through, qui te permet d'afficher les données de la table de faits sous-jacentes. Seulement le composant pivot d'Excel ne le supporte pas. Il y a un Add-In qui le fait :
    http://www.microsoft.com/downloads/d...displaylang=en

    mais ce n'est pas exactement ce que tu veux. Pour voir les données du drill-through, il faut le demander, elles apparaissent dans une autre fenêtre, etc.
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 61
    Points : 42
    Points
    42
    Par défaut
    Oui j'affiche les demandes par année, par service, par type de demande,...
    Je place ces dimensions ainsi qu'une dimension "Objet" qui est le libellé de la demande.
    J'obtiens ainsi la liste des demandes pour ces critères avec en face leurs differents montants.
    Je connais pas le langage MDX ce qui me pose problème je vais chercher de ce coté la peut-être que je trouverais une solution...
    Merci pour ton aide.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 61
    Points : 42
    Points
    42
    Par défaut
    En fait Excel permet dans ses tableaux croisés dynamiques de choisir d'afficher ou non les sous-totaux.
    En mettant Demandeur en dimension et en enlevant le sous-total l'affichage reste acceptable.
    Cela dit maintenant j'ai des problèmes de temps de réponse un peu long...

  13. #13
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Salut !

    Pour les temps de réponse (je pars du principe que tu es en stockage MOLAP), tu peux essayer d'optimiser les préagrégations en régénérant après quelque temps ton cube basé sur le log des requêtes effectuées sur le cube.
    Tu as des assistants, comme le Usage Analysis Wizard pour ce faire.
    Un article sur le sujet : http://www.sql-server-performance.com/wp_msas_2.asp
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

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

Discussions similaires

  1. [PL/SQL] Supprimer les caractères non numériques
    Par Oliveuh dans le forum PL/SQL
    Réponses: 6
    Dernier message: 25/06/2015, 12h13
  2. Réponses: 3
    Dernier message: 25/04/2007, 16h57
  3. tri non numérique sous excel
    Par phoque.r dans le forum Excel
    Réponses: 1
    Dernier message: 23/04/2007, 12h59
  4. Interdire une frappe d'un caractére non numérique
    Par fatati dans le forum C++Builder
    Réponses: 13
    Dernier message: 12/12/2006, 09h56
  5. Réponses: 8
    Dernier message: 22/06/2005, 10h34

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