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 :

MDX: Savoir si une dimension est utilisée [2008]


Sujet :

SSAS

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    11
    Points
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 11
    Points : 6
    Par défaut MDX: Savoir si une dimension est utilisée
    Bonjour,

    je travaille toujours en MDX et, afin de faire un calcul, j'ai besoin de savoir si une dimension (et pas une hiérarchie !) est utilisée ou non, le calcul ne sera pas le même selon le résultat.

    J'ai fait pas mal de recherches à ce sujet mais je ne trouve rien, ou que des tests portant sur la hiérarchie et non la dimension en général.

    Merci de m'aider.

    Bonne journée !

  2. #2
    Membre émérite Avatar de FrancoisJehl
    Homme Profil pro
    BI Engineer
    Inscrit en
    Juillet 2009
    Messages
    1 485
    Points
    2 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    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
    Points : 2 883
    Par défaut
    Je dirais une bidouille à base d'Axis() et de Dimension_Unique_Name devrait le faire, mais je n'ai évidemment pas le code comme ça...

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    11
    Points
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 11
    Points : 6
    Par défaut Merci !
    Merci beaucoup pour ton aide, j'ai réussi et ça donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IIF(InStr(SETTOSTR(AXIS(0)),"[MaDimension]") OR InStr(SETTOSTR(AXIS(1)),"[MaDimension]"), calcul1, calcul2)

  4. #4
    Membre émérite Avatar de FrancoisJehl
    Homme Profil pro
    BI Engineer
    Inscrit en
    Juillet 2009
    Messages
    1 485
    Points
    2 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    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
    Points : 2 883
    Par défaut
    Super, un petit tag "résolu"?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    11
    Points
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 11
    Points : 6
    Par défaut
    Oui, mais c'était sans compter un nouveau cas de figure qui ne semble pas être pris en compte !

    Je m'aperçois que, sous Excel, si un seul axe est utilisé, l'appel à Axis() génère une erreur, ma requête ne fonctionne donc pas dans ce cas de figure et mon problème est que mon application va être recettée sous Excel...

    Par ailleurs, cette méthode ne tient pas compte de la clause WHERE qui peut elle aussi apporter des restrictions à mon calcul, si ma dimension est utilisée dans la clause WHERE, mon calcul actuel est alors faux...

    Aurais-tu des idées de solutions à ces deux nouveaux problèmes ?

    Encore merci pour ton aide

  6. #6
    Membre émérite Avatar de FrancoisJehl
    Homme Profil pro
    BI Engineer
    Inscrit en
    Juillet 2009
    Messages
    1 485
    Points
    2 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    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
    Points : 2 883
    Par défaut
    En MDX l'Axis(0) correspond à ON COLUMNS, Axis(1) au ON ROWS et Axis(2) au slicer (clause WHERE). Tu n'auras pas de soucis avec les deux premiers pour ta méthode mais le problème pour le Slicer est que comme tu utilises probablement un membre calculé qui est résolu dans le contexte de la clause Where, appeler Axis(2) entraine une référence circulaire... C'est une limitation connue et mise sur Connect par Greg Galloway mais flaggée comme "ne sera pas résolu"... http://connect.microsoft.com/SQLServ...in-the-subcube)

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    11
    Points
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 11
    Points : 6
    Par défaut Solution
    L'idée d'utiliser Axis était bien mais renvoyait une erreur lorsque l'un des axes n'était pas utilisé.
    J'ai donc utilisé une autre méthode : tester le LEVEL.ORDINAL de chaque attribut de ma dimension. Ce niveau sera à 0 si l'attribut n'est pas utilisé et à 1 s'il est sélectionné par l'utilisateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    IIF([Dimension].[Attribut1].CURRENTMEMBER.LEVEL.ORDINAL > 0
    OR [Dimension].[Attribut2].CURRENTMEMBER.LEVEL.ORDINAL, calcul1, calcul2)
    Pas forcément très propre mais efficace étant donné que je n'ai pas trouvé d'autre solution !

    Merci pour vos réponses

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

Discussions similaires

  1. Savoir si une string est un nombre
    Par SteelBox dans le forum SL & STL
    Réponses: 10
    Dernier message: 14/02/2005, 20h59
  2. Savoir quand une hotkey est relachée
    Par kriterium dans le forum Composants VCL
    Réponses: 2
    Dernier message: 24/07/2004, 15h44
  3. Savoir si une connection est établie sur un port
    Par Malone dans le forum Web & réseau
    Réponses: 3
    Dernier message: 06/12/2003, 09h22
  4. Comment savoir qu'une fonction est standard ?
    Par D[r]eadLock dans le forum C
    Réponses: 5
    Dernier message: 24/03/2003, 15h42
  5. [VB6] [Impression] Savoir si une imprimante est installée
    Par Norm59ttp dans le forum Installation, Déploiement et Sécurité
    Réponses: 2
    Dernier message: 19/12/2002, 10h29

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