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]Problématique cube avec plusieurs dimensions temps


Sujet :

SSAS

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 9
    Points : 1
    Points
    1
    Par défaut [SSAS][2k5]Problématique cube avec plusieurs dimensions temps
    Bonjour à tous,

    Je vous soumet une problématique que je rencontre sur un projet BI.
    Cube sous SSAS 2005
    Reporting Services

    J'ai plusieurs champs date dans ma table de fait des contrat F_Contrat.
    les dates sont :
    - dateCreation (date de creation d'un contrat)
    - dateResiliation (date de résiliation d'un contrat)
    - dateDebut (date de début de l'installation)

    J'ai besoin de réaliser via Reporting services des tableaux de synthèse
    dans lesquels je dois afficher les mesures suivantes :
    - nbCommandeBrutes (calculé à partir de la dateCreation)
    - nbCommandesAnnulé (calculé à partir de la dateResiliation)
    - nbCommandesInstallé (calculé à partir de la dateDebut)

    on doit pouvoir spécifier comme paramètre de rapport l'année et le mois.

    Je spécifie dateCreation en tant que paramètre.
    Le problème est que les mesures sont fausses car les données sont filtrés par dateCreation, c'est à dire que l'on peut avoir
    un contrat installé en 2007 mais crée en 2006 ou voir en 2003.
    Mais ces contrats non crées en 2007 ne seront pas comptabilisés.

    J'ai essayé de travailler avec la date de création et de faire des mesures de correction mais sans grand succès.
    (En utilisant des sum(descendants)) et STRTOMEMBER pour construire dynamiquement des membres.

    Comment peut-on restructuré le cube ou les dimensions temps (une dimension temps a été crée pour chaque champs date de la table de fait)
    pour palier à ce problème trés bloquant.

    Merci pour votre aide.

  2. #2
    Membre expérimenté

    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    690
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 690
    Points : 1 478
    Points
    1 478
    Par défaut
    Salut !
    (une dimension temps a été crée pour chaque champs date de la table de fait)
    Qu'est ce qui motive ce choix ???? Ne serait ce pas beaucoup plus facile d'utiliser une seule dimension Date avec des référence multiples vers la table de fait. Ton problème ne se poserait plus. non ?

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    SSAS crée automatiquement une dimension temps pour chaque champs date relié à DimTemps.

    J'ai lié chacun de ses champs à la table D_Temps et je vois pas comment on pourrait utiliser une seule dimension temps.

    Merci

  4. #4
    Membre expérimenté

    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    690
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 690
    Points : 1 478
    Points
    1 478
    Par défaut
    Salut !
    Les assistants.... Il faut toujours s'en méfier
    Il faudrait que tu ailles dans ton datasource view et que tu l'édites. Tu crée le schéma qui t'arranges (dans ce cas une seule dimension date avec plusieurs relations) et tu continues
    Je met en fichier joint une image d'un cube à moi pour comparer
    Images attachées Images attachées  

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Salut,

    C'est le cas dans ma data source view, il y a un lien entre chaque champs date et la table D_Temps.

    Dans l'exemple fourni quel est la structure du cube ?

    Merci

  6. #6
    Membre expérimenté

    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    690
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 690
    Points : 1 478
    Points
    1 478
    Par défaut
    Salut,
    Ma structure de cube est la même que ma dsv, ce qui est le cas général. Mais avec une seule table "dimension date" j'arrives à créer plusieurs dimensions selon le lien avec la table de faits.
    Comment est ton schéma de cube, as tu la même chose ?

    Note : supprime toutes tes dimensions dates et recréé les manuellement, je suis certain que ça règlera ton problème

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Oui j'ai la même chose
    J'ai une seule table dimension Temps avec 5 liens vers la table de fait.
    Dans le cube j'ai une dimension temps pour chaque champs date à savoir :
    D_Temps_Creation
    D_Temps_Debut
    D_Temps_Resiliation

    Le problème est que si je sélectionne D_Temps_Creation comme paramètre de rapport, mon jeu de données sera filtré par dateCreation et donc mes mesures faisant intervenir les autres dates seront fausses (incomplète).
    exemple : si je comptabilise le nb d'enregistrement dont la date debut est entre 2005 et 2007, il manquera ceux dont la dateCreation = 2003 (dateCReation est filtré car paramètre de rapport)

    N'y a t il pas un moyen en concatenant des clès?

  8. #8
    Membre expérimenté

    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    690
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 690
    Points : 1 478
    Points
    1 478
    Par défaut
    Envoyez des print screen de votre designer de cube

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Ci joint une copie ecran du cube
    Une dimension temps est bien créee pour chaque champ date de la table de fait.

    J'aimerai éviter d'écrire des mesures de correction pour comptabiliser les enregisrement qui ne reponde pas au critère de filtre.

    Merci
    Images attachées Images attachées  

  10. #10
    Membre expérimenté

    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    690
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 690
    Points : 1 478
    Points
    1 478
    Par défaut
    Ok, ton design est bon. Interressons nous au problème
    Tu dis que lorsque tu filtre ta requête par date de création les résultats sont faux. Peut tu nous donner un exemple concret (un jeu de données initial, les données que tu veux avoir et les données que tu as). C'est assez complexe d'imaginer ta requête sans quelque chose de concret

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Voila un exemple concret voir image jointe

    je trouve 423 au lieu de 459 pour ma mesure
    j'ai ecrit des mesures de correction pour retrouver les manquants :

    sum(
    Descendants([D_Temps_Creation].[Mois].[Mois]),
    (
    [Measures].[nonCompte],
    STRTOMEMBER("[D_Temps_Debut].[Annee].&["+AnneeCrea+"]")
    )
    )

    mais c lourd a gérer et au niveau perf c'est pénalisant

    Merci pour votre avis
    Images attachées Images attachées  

  12. #12
    Membre expérimenté

    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    690
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 690
    Points : 1 478
    Points
    1 478
    Par défaut
    C'est pas que c'est faux, tu demandes les mesures pour date_creation = 2007. Il te les donnes

    Je pense que ton print screen donne ce que tu appelle : commandes brutes
    Si tu mettais comme filtre date résiliation sa te donnera tes commandes annulées.

    Solution : mettre trois filtres dans ton rapport ou sinon un rapport par type de commande

    Ou sinon j'ai pas compris ta problèmatique

  13. #13
    Membre éclairé
    Avatar de Reskibil
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 561
    Points : 815
    Points
    815
    Par défaut
    Bonjour,

    Nous avons la meme problématique en traitant des creation date, issuing date et decision date avec un choix unique de date mais 3 dimensions de temps.

    Pour résoudre ca, notre 1ere solution a été de decouper notre rapport en plusieurs datasets, chacun étant basé sur une des dimensions de temps (en OLE DB de facon à integrer la valeur du parametre date dans le MDX.

    Dans certains cas, on a pu integrer ces differentes dimensions dans un meme MDX en utilisant des scopes dans les aggregats. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    WITH 
    MEMBER [Number Proposal Issued] as 
    sum([Time Key Issuing Date].[Date].&[" + Parameters!Date_From.value + "]:[Time Key Issuing Date].[Date].&[" + Parameters!Date_To.Value + "]
    	,sum([Fact Proposal].[Proposal Status Issued].&[Issued]
               ,[Measures].[# Proposal]
    	)
    )
     
    MEMBER [Number Proposal Won] as 
    sum([Time Key Decision Date].[Date].&[" + Parameters!Date_From.Value + "]:[Time Key Decision Date].[Date].&[" + Parameters!Date_To.Value + "]
    	,sum([Fact Proposal].[Proposal Status].&[030 - Won]
    		,[Measures].[# Proposal]
    	)
    )
    Et ca marche dans pas mal de cas. Attention par contre, il va tout additionner dans l'exemple ci-dessus, meme si l'on a les mois en colonne. Tout dépend donc du résultat attendu.

    PS : Desole si je suis hs, j'ai pas lu tous les posts.

  14. #14
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Oui en effet les valeurs qui s'affichent sont "bonnes", mais je voudrais en quelque sorte désactivé le filtre dateCreation ou pouvoir spécifier une autre date.
    Je dois faire un rapport de synthèse donc sur un seul rapport afficher des mesures utilisant des dimension temps différentes

    J'ai essayé en utilisant 3 filtres ca ne résoud pas le problème car les filtres sont restrictifs

    Merci, d'autre idées ?

  15. #15
    Membre éclairé
    Avatar de Reskibil
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 561
    Points : 815
    Points
    815
    Par défaut
    Voir ma réponse au-dessus. Pour m'être trituré pas mal de temps la tête avec ce problème, je n'ai trouvé aucune solution sans bidouillage dans le dataset avec un parametre.

  16. #16
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 9
    Points : 1
    Points
    1
    Par défaut OUi c'est exactement la même problématique
    OUi c'est exactement la même problématique !

    Je vais essayer d'écrire des mesure à base de sum et voir ce que ca donne

    Merci

  17. #17
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Non ca ne donne rien !

    Les mesures sont complexes et penalisent les performances des requêtes

    Les bonnes idées sont les bienvenues.

    Merci

  18. #18
    Membre éclairé
    Avatar de Reskibil
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 561
    Points : 815
    Points
    815
    Par défaut
    Ca complexifie effectivement les requetes mais au niveau performance, on n'a pas eu de soucis.
    Je me souviens plus si j'ai précisé que le dataset devait etre en OLE DB pour accepter les parametres de cette facon.

    Sinon tu peux mettre ton MDX ici avec le resultat (si resultat il y a).

    Si cette solution ne marche pas, regarde peut etre si tu peut decouper ton rapport en plusieurs datasets chacun étant dédié à une dimension temps.

Discussions similaires

  1. [SSAS] [2K5] Gestion de deux dates + Dimension Temps.
    Par BoromSikim dans le forum SSAS
    Réponses: 4
    Dernier message: 13/01/2010, 11h15
  2. Réponses: 4
    Dernier message: 29/06/2009, 10h26
  3. [SSAS][2K5]Plus qu'une liaison avec la dimension Temps
    Par gassisprog dans le forum SSAS
    Réponses: 2
    Dernier message: 08/01/2009, 18h11
  4. [SSAS][2k5] Laisons entre faits et dimensions
    Par Jinroh77 dans le forum SSAS
    Réponses: 4
    Dernier message: 17/06/2008, 13h38
  5. Réponses: 7
    Dernier message: 21/05/2008, 15h47

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