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 :

[SSAS][2k5] Calculations : Expression pour calculer une différence entre 2 dates ?


Sujet :

SSAS

  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 [SSAS][2k5] Calculations : Expression pour calculer une différence entre 2 dates ?
    Bonsoir,

    J'ai un cube avec 2 dimensions Date (FooDate et BarDate).
    Chacune possède 1 seul Attribut De Dimension AttrDate qui utilise pour KeyColumns le champ CALENDAR_ID de la table de calendrier standard microsoft qui a la forme YYYYMMDD et pour NameColum le champ Full Date qui a la forme YYYY-MM-DD 00:00:00.

    Comment créer un membre calculé qui serait le nombre de jours entre FooDate et BarDate ?

    a+, =)
    -=Clement=-

  2. #2
    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
    Un 1er pas : faire la différence entre FooDate et aujourd'hui.
    Nécessite d'avoir une hiérarchie DateHierarchy standard.

    WITH MEMBER [Measures].[DateDifference] AS

    --On utilise un IIF car on doit vérifier qu'on est pas sur le membre ALL de la hiérarchie Date
    IIF(

    --Test qui s'il est vrai signifie qu'on est pas sur le membre ALL
    ISDATE([FooDate].[FooDateHiearchy].CURRENTMEMBER.Name),

    --Alors on fait la différence entre la date de la ligne courante (CURRENTMEMBER) et la date de maintenant ( "d" pour avoir le résulats en days), nb : il faut utiliser le .Name
    datediff( "d", [FooDate].[FooDateHiearchy].CURRENTMEMBER.Name, Now() ),

    --Sinon on est sur le membre ALL et on retourne une valeur bidon qui n'impacte pas les agrégations
    0)

    SELECT [DateDifference] ON COLUMNS, [FooDate].[FooDateHiearchy].[Date] ON ROWS FROM [MonCube]

  3. #3
    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
    Salut.

    En admettant que tes 2 dimensions du cube se basent sur le même objet dimension de ta base de données OLAP, tu pourrais faire cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    count
    (
          [FooDate].[FooDateHiearchy].CURRENTMEMBER : linkmember([BarDate].[BarDateHiearchy].CURRENTMEMBER, [FooDate].[FooDateHiearchy])
    )
    Donc en français, ça donne : compte le nombre de membre entre le membre courant de la dimension FooDate et le membre équivalent de la dimension BarDate dans la dimension FooDate.

    ps : pour la condition du iif de ton post précédent, je pense que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ([FooDate].[FooDateHiearchy].CURRENTMEMBER is ([FooDate].[FooDateHiearchy].[All]
    est plus propre que l'expression que tu as utilisé...

  4. #4
    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,

    Si j'utilise ta condition pour IIF, j'obtiens quand même un #Error pour la première ligne, selon laquelle le membre n'a pas pu être converti en date. D'où mon ISDATE.

    Pour le linkmember j'obtiens aussi une erreur selon laquelle il ne peut pas faire l'opération demandée parcequ'on est sur des niveaux différents. J'ai pourtant le même objet dimension du projet utilisé pour les deux dimensions du cube.

    Pour l'instant j'ai besoin de soustraire avec du Now() donc je ne cherche plus.

    a+, =)
    -=Clement=-

Discussions similaires

  1. Requete pour faire une différence entre deux dates
    Par PkoiTan2N dans le forum SQL
    Réponses: 2
    Dernier message: 28/04/2011, 13h14
  2. Calculer une différence entre deux dates
    Par attif0709 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/04/2010, 12h06
  3. [AC-2003] Bloqué pour calculer la somme d'un champ entre 2 date
    Par bastien3117 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 24/08/2009, 13h08
  4. [Dates] Calcul d'une différence entre deux heures
    Par loreleï85 dans le forum Langage
    Réponses: 12
    Dernier message: 28/06/2006, 11h43
  5. Expression pour calcul de date
    Par thufir hawat dans le forum Access
    Réponses: 1
    Dernier message: 18/12/2005, 12h15

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