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 :

Usage de SCOPE pour effectuer un WHERE [2008R2]


Sujet :

SSAS

  1. #1
    Membre régulier Avatar de stdebordeau
    Homme Profil pro
    Statisticien
    Inscrit en
    Septembre 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 241
    Points : 120
    Points
    120
    Par défaut Usage de SCOPE pour effectuer un WHERE
    Bonjour,
    je patauge sur l'écriture d'un scope qui m'apparaissait de prime à bord facile .
    J'ai un cube que je voudrais filtrer par un scope.

    Dans une requête MDX, le filtre serait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     WHERE {[DimTemps].[DateConcacted].&[20130101]:[DimTemps].[DateConcacted].&[20130630]}
    Il s'agirait donc dans le cube sur ssas d'écrire un SCOPE du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SCOPE ([Measure].[Montant]);
    THIS = sum({[DimTemps].[DateConcacted].&[20130101]:[DimTemps].[DateConcacted].&[20130630]},[Measure].[Montant]) ;
    END SCOPE;
    de sorte que tous les appels à [Measure].[Montant] se fassent implicitement dans le contexte du filtre

    Pouvez vous me guider sur la manière de réaliser cela,
    merci d'avance

  2. #2
    Membre confirmé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2010
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2010
    Messages : 304
    Points : 579
    Points
    579
    Par défaut
    Il fait pas ce que tu veux ton SCOPE là ?

  3. #3
    Membre régulier Avatar de stdebordeau
    Homme Profil pro
    Statisticien
    Inscrit en
    Septembre 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 241
    Points : 120
    Points
    120
    Par défaut
    Non, j'ai une erreur du genre boucle infini

  4. #4
    Membre confirmé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2010
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2010
    Messages : 304
    Points : 579
    Points
    579
    Par défaut
    T'as réellement une erreur (avec un message) ou c'est juste que c'est long à répondre ?

    tu ne sélectionnes que la mesure Montant (via SSMS ou Excel) ou c'est une requête plus évoluée ?

  5. #5
    Membre averti Avatar de arnaudvoisin
    Homme Profil pro
    Consultant BI chez WAISSO
    Inscrit en
    Janvier 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant BI chez WAISSO

    Informations forums :
    Inscription : Janvier 2007
    Messages : 156
    Points : 361
    Points
    361
    Par défaut
    Bonjour,
    Non, j'ai une erreur du genre boucle infini
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SCOPE ([Measure].[Montant]);
    Tu utilises le montant pour l'affecter à lui même.

    Tu pourrais passer par une mesure intermédiaire initialisé à NULL et scoper sur ta plage de date pour n'affecter à ta nouvelle mesure que les valeurs de ta mesure montant sur la plage. Comme ça tu économises un SUM.

  6. #6
    Membre régulier Avatar de stdebordeau
    Homme Profil pro
    Statisticien
    Inscrit en
    Septembre 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 241
    Points : 120
    Points
    120
    Par défaut
    J'ai construit un magasin de données avec entre autres une dimension Indicateurs, une dimension temps calcul (Courant, Précédent, Cumul, etc.) et une seule mesure Montant (Suivant l'approche de Sébastien FANTINI dans son livre "Business Intelligence avec SP2010")
    La requête est simple et fonctionne bien sans le SCOPE.
    Je l'exécute dans le navigateur de SSAS
    Avec le SCOPE elle ne met pas longtemps à s'exécuter, mais j'ai des résultats du genre #VALEUR, et quand je pointe dessus, il indique dans une bulle quelque chose du genre boucle infini.

    Si j'ai bien compris mon SCOPE devrait fonctionner

  7. #7
    Membre régulier Avatar de stdebordeau
    Homme Profil pro
    Statisticien
    Inscrit en
    Septembre 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 241
    Points : 120
    Points
    120
    Par défaut
    Ok, j'ai 3h de chargement de l'entrepôt en cours, après j'essaye et je vous reviens, Merci

  8. #8
    Membre confirmé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2010
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2010
    Messages : 304
    Points : 579
    Points
    579
    Par défaut
    Citation Envoyé par arnaudvoisin Voir le message
    Bonjour,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SCOPE ([Measure].[Montant]);
    Tu utilises le montant pour l'affecter à lui même.

    Tu pourrais passer par une mesure intermédiaire initialisé à NULL et scoper sur ta plage de date pour n'affecter à ta nouvelle mesure que les valeurs de ta mesure montant sur la plage. Comme ça tu économises un SUM.
    A priori, c'est le plus le fait qu'il y ait une plage de valeur qui fait planter le truc.
    Tu peux parfaitement affecter le montant à lui-même (genre Montant=Montant*10) ou le récupérer sur une unique date.

    http://social.msdn.microsoft.com/For...mple-cubescope

  9. #9
    Membre émérite Avatar de FrancoisJehl
    Homme Profil pro
    BI Engineer
    Inscrit en
    Juillet 2009
    Messages
    1 485
    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
    Points
    2 883
    Par défaut
    En gros tu veux que montant soit un YTD()? Pourquoi alors ne pas juste faire un:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Montant = Aggregate(YTD(), Montant)
    ça passerait pas?

  10. #10
    Membre régulier Avatar de stdebordeau
    Homme Profil pro
    Statisticien
    Inscrit en
    Septembre 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 241
    Points : 120
    Points
    120
    Par défaut
    En fait la plage pourrait être plus large

    par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     WHERE {[DimTemps].[DateConcacted].&[20000101]:[DimTemps].[DateConcacted].&[20130630]}
    j'ai utilisé une variable intermédiaire comme indiqué par Arnaud voisin (et aussi dans le lien de Joubert) et ça marche.

    Merci de votre aide

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

Discussions similaires

  1. liste deroulante pour effectuer une recherche
    Par pierrot67 dans le forum Bases de données
    Réponses: 2
    Dernier message: 29/04/2006, 10h27
  2. Réponses: 1
    Dernier message: 19/03/2006, 16h35
  3. [Conception] Comment créer un lien pour effectuer une requete ?
    Par Poutchou dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 09/03/2006, 12h54
  4. Type de données pour effectuer une différence en vba
    Par snoopy69 dans le forum Access
    Réponses: 4
    Dernier message: 03/03/2006, 08h49
  5. [Système] Problème pour effectuer des calculs
    Par tissard dans le forum Langage
    Réponses: 10
    Dernier message: 09/12/2005, 15h07

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