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 :

[SQL2K5][MDX] Utilisation d'un simple filtre sur valeurs


Sujet :

SSAS

  1. #1
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut [SQL2K5][MDX] Utilisation d'un simple filtre sur valeurs
    Bonjour à tous,
    Je cherche à filtrer sur une dimension de temps, les années > 2000. Ce dataset me permet alors de remplir un paramètre de mon rapport.

    Je ne comprends pas pourquoi le filtre ne filtre rien

    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
    20
    WITH MEMBER [Measures].[ParameterCaption] AS 
        '[Date Inscription].[Inscription - Annee - Mois - Jour].CURRENTMEMBER.MEMBER_CAPTION' 
    MEMBER [Measures].[ParameterValue] AS 
        '[Date Inscription].[Inscription - Annee - Mois - Jour].CURRENTMEMBER.UNIQUENAME' 
    MEMBER [Measures].[ParameterLevel] AS 
        '[Date Inscription].[Inscription - Annee - Mois - Jour].CURRENTMEMBER.LEVEL.ORDINAL' 
     
    SELECT {
        [Measures].[ParameterCaption]
        , [Measures].[ParameterValue]
        , [Measures].[ParameterLevel]} 
        ON COLUMNS 
        , { 
        filter (   
            [Date Inscription].[Inscription - Annee - Mois - Jour].[Mois].AllMembers
            ,[Date Inscription].[Inscription - Annee - Mois - Jour].CurrentMember.MEMBER_CAPTION > 2000)
         }
            ON ROWS
     
    FROM [Demos]
    Le second essai ne s'exécute même pas.
    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
    20
    WITH MEMBER [Measures].[ParameterCaption] AS 
        '[Date Inscription].[Inscription - Annee - Mois - Jour].CURRENTMEMBER.MEMBER_CAPTION' 
    MEMBER [Measures].[ParameterValue] AS 
        '[Date Inscription].[Inscription - Annee - Mois - Jour].CURRENTMEMBER.UNIQUENAME' 
    MEMBER [Measures].[ParameterLevel] AS 
        '[Date Inscription].[Inscription - Annee - Mois - Jour].CURRENTMEMBER.LEVEL.ORDINAL' 
     
    SELECT {
        [Measures].[ParameterCaption]
        , [Measures].[ParameterValue]
        , [Measures].[ParameterLevel]} 
        ON COLUMNS 
        , { 
        filter (   
            [Date Inscription].[Inscription - Annee - Mois - Jour].[Mois].AllMembers
            ,[Date Inscription].[Inscription - Annee - Mois - Jour].[Annee] > 2000)
         }
            ON ROWS
     
    FROM [Demos]
    La fonction > attend une expression d'ensemble de tuples pour l'argument 2. Une expression de chaîne ou numérique a été utilisée.
    Merci pour vos idées.

    EDIT : Par contre cela fonctionne :
    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
    20
    21
    22
    23
    24
    WITH MEMBER [Measures].[ParameterCaption] AS 
        '[Date Inscription].[Inscription - Annee - Mois - Jour].CURRENTMEMBER.MEMBER_CAPTION' 
    MEMBER [Measures].[ParameterValue] AS 
        '[Date Inscription].[Inscription - Annee - Mois - Jour].CURRENTMEMBER.UNIQUENAME' 
    MEMBER [Measures].[ParameterLevel] AS 
        '[Date Inscription].[Inscription - Annee - Mois - Jour].CURRENTMEMBER.LEVEL.ORDINAL' 
     
    SELECT {
        [Measures].[ParameterCaption]
        , [Measures].[ParameterValue]
        , [Measures].[ParameterLevel]} 
        ON COLUMNS 
        , [Date Inscription].[Inscription - Annee - Mois - Jour].[Mois].AllMembers
        ON ROWS
     
    FROM ( SELECT ( 
        -{ [Date Inscription].[Inscription - Date Annee].&[1993]
            , [Date Inscription].[Inscription - Date Annee].&[1994]
            , [Date Inscription].[Inscription - Date Annee].&[1995]
            , [Date Inscription].[Inscription - Date Annee].&[1996]
            , [Date Inscription].[Inscription - Date Annee].&[1997]
            , [Date Inscription].[Inscription - Date Annee].&[1998]
            , [Date Inscription].[Inscription - Date Annee].&[1999] } ) ON COLUMNS 
    FROM [Demos])

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 269
    Par défaut
    Salut,

    Ce n'est peut être pas la manière la plus élégante de le faire mais ceci devrait fonctionner:

    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
    20
    21
     
    WITH MEMBER [Measures].[ParameterCaption] AS 
        '[Date Inscription].[Inscription - Annee - Mois - Jour].CURRENTMEMBER.MEMBER_CAPTION' 
    MEMBER [Measures].[ParameterValue] AS 
        '[Date Inscription].[Inscription - Annee - Mois - Jour].CURRENTMEMBER.UNIQUENAME' 
    MEMBER [Measures].[ParameterLevel] AS 
        '[Date Inscription].[Inscription - Annee - Mois - Jour].CURRENTMEMBER.LEVEL.ORDINAL' 
     
    SELECT {
        [Measures].[ParameterCaption]
        , [Measures].[ParameterValue]
        , [Measures].[ParameterLevel]} 
        ON COLUMNS 
        , { 
        filter (   
            [Date Inscription].[Inscription - Annee - Mois - Jour].[Mois].AllMembers
            ,cint([Date Inscription].[Inscription - Annee - Mois - Jour].CurrentMember.parent.name) > 2000)
         }
            ON ROWS
     
    FROM [Demos]

  3. #3
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut
    Bonjour,
    Merci pour lé réponse mais la commande cint ne semble pas fonctionner.
    L'erreur système suivante s'est produite : Invalid procedure call or argument.
    Lorsque je la retire, le script tourne mais sans filtrer.

    Merci.

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 269
    Par défaut
    La fonction "CInt" convertit une chaine de caractère en entier. Pour qu'elle fonctionne, il faut que l'expression qu'elle reçoit en paramètre représente donc un entier.

    Est-ce que l'expression

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Date Inscription].[Inscription - Annee - Mois - Jour].CurrentMember.parent.name
    te renvoie bien un entier?

  5. #5
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut
    En créant un membre et un select dessus j'obtiens bien les années.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MEMBER [Measures].[TT] AS 
    [date inscription].[inscription - annee - mois - jour].currentmember.parent.name
    Par contre j'ai une des valeurs à Unknown, est celle-ci qui pose problème ?

    Merci de ton aide.

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 269
    Par défaut
    C'est probable...
    Exclus la de ton set pour voir...

  7. #7
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut
    J'ai filtré les lignes avec un Where et effectivement à ce moment le CINT fonctionne et retourne ce qu'il faut !!
    Merci beaucoup.

    Par contre je n'arrive pas à filtrer correctement ce Unknown (autre que par le where qui ne va pas).

    Merci

Discussions similaires

  1. filtre sur valeur Null
    Par lito74 dans le forum VBA Access
    Réponses: 5
    Dernier message: 22/08/2016, 11h42
  2. Filtre sur valeur absente
    Par stdebordeau dans le forum Windows Forms
    Réponses: 2
    Dernier message: 11/05/2009, 12h26
  3. Réponses: 11
    Dernier message: 07/07/2008, 11h07
  4. [2.2.1] Dataset - filtre sur valeur décimale
    Par erwan.bodere dans le forum BIRT
    Réponses: 6
    Dernier message: 20/02/2008, 09h17
  5. Filtre sur valeur d'un calendrier
    Par Fredo67 dans le forum Access
    Réponses: 14
    Dernier message: 28/11/2006, 11h57

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