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

SSRS Discussion :

[SSRS][2k5][MDX] Comment exclure les lignes où certaines mesures sont null ?


Sujet :

SSRS

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 572
    Points : 341
    Points
    341
    Par défaut [SSRS][2k5][MDX] Comment exclure les lignes où certaines mesures sont null ?
    Bonjour,

    Soit la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT NON EMPTY
    {[Measures].[MaMesure1],
    [Measures].[MaMesure2]}
    ON COLUMNS,
    [MaDimension].[MaHierarchieDattribut].MEMBERS
    ON ROWS
    FROM
    [MonCube]
    qui retourne par exemple a,b ou a,null etc Je ne souhaite pas récupérer les lignes où MaMesure2 est null.

    Comment exclure les lignes où certaines mesures sont null ?

    a+, =)
    -=Clément=-

    Configuration : BIDS 2005

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    269
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 269
    Points : 339
    Points
    339
    Par défaut
    Tu as 2 solutions:

    1) utiliser une clause having

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT NON EMPTY
    {[Measures].[MaMesure1],
    [Measures].[MaMesure2]}
    ON COLUMNS,
    [MaDimension].[MaHierarchieDattribut].MEMBERS
    ON ROWS
    having (not isempty([Measures].[MaMesure2])
    FROM
    [MonCube
    Moins performant car le filtre se fait post génération du resultset.

    2) utiliser un filter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT NON EMPTY
    {[Measures].[MaMesure1],
    [Measures].[MaMesure2]}
    ON COLUMNS,
    filter
    ([MaDimension].[MaHierarchieDattribut].MEMBERS,
    not isempty([Measures].[MaMesure2]
    )
    ON ROWS
    FROM
    [MonCube

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 572
    Points : 341
    Points
    341
    Par défaut
    Merci, j'ai résolu ma question avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    WITH MEMBER
     [Measures].[MaMesure1_Nulled]
    AS
    (
    CASE WHEN [Measures].[MaMesure2] = null
      THEN
     null
      ELSE [Measures].[MaMesure1]
    END)  
    SELECT 
    NON EMPTY [Measures].[MaMesure1_Nulled],[Measures].[MaMesure2] ON COLUMNS, SELECT NON EMPTY (etc) 
    ON ROWS
    comme ça le SELECT NON EMPTY ... ON ROWS fait le travail (il faut le mettre pour le ON ROWS, il manquait dans mon 1er post). Pour les performances il faudrait que je teste tes solutions et que je compare. Plus tard

    a+, =)
    -=Clément=-

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    269
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 269
    Points : 339
    Points
    339
    Par défaut
    Attention aux perfs du "case".

    (voir dernier exemple de ce white paper MS)

    edit : le fichier est trop gros...

    http://download.microsoft.com/downlo...enecksSSAS.doc

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 572
    Points : 341
    Points
    341
    Par défaut
    Merci,
    Citation Envoyé par psychokwax Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT NON EMPTY
    {[Measures].[MaMesure1],
    [Measures].[MaMesure2]}
    ON COLUMNS,
    [MaDimension].[MaHierarchieDattribut].MEMBERS
    ON ROWS
    HAVING (NOT isempty([Measures].[MaMesure2])
    FROM
    [MonCube
    Je n'ai pas la fonction HAVING dans SSMS / Nouvelle requête / MDX / Fonctions, ni dans SSRS. Dans quel contexte possèdes tu la fonction HAVING ?

    a+, =)
    -=Clément=-

    Configuration :
    BIDS 2005

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    269
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 269
    Points : 339
    Points
    339
    Par défaut
    "Having" n'est pas une fonction, c'est une clause. Un peu comme le "having" du "group by" en sql.

    http://www.databasejournal.com/featu...le.php/3662721

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

Discussions similaires

  1. MDX - comment supprimer les lignes vides ?
    Par _cece dans le forum Mondrian
    Réponses: 2
    Dernier message: 29/04/2010, 08h14
  2. comment exclure les champs qui ont pour valeur NULL
    Par agur29 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 05/10/2007, 19h23
  3. Réponses: 2
    Dernier message: 17/05/2006, 13h02
  4. Réponses: 2
    Dernier message: 04/05/2006, 13h10
  5. [TRichEdit] Comment numéroter les lignes ?
    Par ARDILLER dans le forum Composants VCL
    Réponses: 1
    Dernier message: 27/03/2006, 15h43

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