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 :

Clé primaire sur une table fait [2008R2]


Sujet :

SSAS

  1. #1
    Membre averti
    Profil pro
    Consultant IT
    Inscrit en
    Octobre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant IT

    Informations forums :
    Inscription : Octobre 2006
    Messages : 29
    Par défaut Clé primaire sur une table fait
    Bonjour,

    Je rencontre une grosse difficulté sur la performance d'une requete MDX, et j'aurai besoin d'un regard avisé pour m'aider à comprendre mon problème (et le résoudre si possible ).

    Voici une rapide description de mon cube :

    Table de fait "Fact1" :
    #IdFact (compteur incrémental)
    Valeur (entier)
    IdTable1 (clé étrangère)
    IdTable2 (clé étrangère)
    IdTable3 (clé étrangère)

    (l'union de ces 3 clés étrangères pourraient représenter la clé unique de ma table de fait)

    Table 1:
    #IdTable1
    Nom

    Table 1:
    #IdTable2
    Nom

    Table 3:
    #IdTable3
    Nom

    Requete MDx v1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT NON EMPTY ( [Measure].[MAX] ) ON COLUMNS,
    NON EMPTY ( 
    	[DimTable1].[Nom].&[LIBELLE1],
    	[DimTable2].[Nom].&[LIBELLE2],
    	[DimTable3].[Nom].&[LIBELLE3]
    ) ON ROWS
    FROM MON_CUBE
    --> Performence très bonne

    Maintenant, j'ai besoin de récupérer l'IdFact dans le résultat de ma requête MDX.
    Voici ma requete MDX v2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT NON EMPTY ( [Measure].[MAX] ) ON COLUMNS,
    NON EMPTY ( 
    	[DimTable1].[Nom].&[LIBELLE1],
    	[DimTable2].[Nom].&[LIBELLE2],
    	[DimTable3].[Nom].&[LIBELLE3],
    	[DimFact].[IdFact].[IdFact]
    ) ON ROWS
    FROM MON_CUBE
    --> et là, ma requête devient très très lent (ce qui remet en cause tout un projet !).

    Avez-vous une idée pour que j'améliore ma requête ?

    Merci

    PS : petite précision, ma table de fait pèse 2Go

  2. #2
    Membre averti
    Profil pro
    Consultant IT
    Inscrit en
    Octobre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant IT

    Informations forums :
    Inscription : Octobre 2006
    Messages : 29
    Par défaut
    Personne ne peut m'aider ?

    Si je n'ai pas été assez claire dans mon explication, dîtes le moi.

  3. #3
    Membre averti
    Profil pro
    Consultant IT
    Inscrit en
    Octobre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant IT

    Informations forums :
    Inscription : Octobre 2006
    Messages : 29
    Par défaut
    J'ai résolu mon problème.
    En faite, ma requête n'était pas vraiment comme dans mon exemple simplifié, mais plutôt comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT NON EMPTY ( [Measure].[MAX] ) ON COLUMNS,
    NON EMPTY ( 
    	{[DimTable1].[Nom].&[LIBELLE1] ,[DimTable1].[Nom].&[LIBELLE2] },
    	[DimTable2].[Nom].&[LIBELLE2],
    	[DimTable3].[Nom].&[LIBELLE3],
    	[DimFact].[IdFact].[IdFact]
    ) ON ROWS
    FROM MON_CUBE
    En déplaçant mon "filtre" dans une sous-requête, j'obtient de nouveau de bonne performance.

    solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT NON EMPTY ( [Measure].[MAX] ) ON COLUMNS,
    NON EMPTY ( 
    	[DimTable1].[Nom],
    	[DimTable2].[Nom].&[LIBELLE2],
    	[DimTable3].[Nom].&[LIBELLE3],
    	[DimFact].[IdFact].[IdFact]
    ) ON ROWS
    FROM (
        SELECT {[DimTable1].[Nom].&[LIBELLE1] ,[DimTable1].[Nom].&[LIBELLE2] }
        FROM MON_CUBE
    )

  4. #4
    Membre Expert Avatar de FrancoisJehl
    Homme Profil pro
    BI Engineer
    Inscrit en
    Juillet 2009
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    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
    Par défaut
    Rien de forcément étonnant à cela, ta dimfact est probablement volumineuse, et ta sous requête applique un exists dessus ce qui limite grandement le volume de sous cube attaqué par la requête principale.

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

Discussions similaires

  1. Déterminer une clé primaire sur une table inconnue
    Par Gillou6772 dans le forum DB2
    Réponses: 4
    Dernier message: 06/10/2012, 16h07
  2. Clef primaire sur une table qui n'en a pas d'après PhpMyAdmin
    Par bubulemaster dans le forum Requêtes
    Réponses: 5
    Dernier message: 11/04/2009, 18h44
  3. Requete sur une table de faits
    Par markoBasa dans le forum Langage SQL
    Réponses: 6
    Dernier message: 27/08/2008, 16h26
  4. Modification de clé primaire sur une table répliquée
    Par Peck777 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 03/07/2006, 15h25
  5. Réponses: 8
    Dernier message: 26/09/2005, 22h06

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