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] dimension temps serveur afficher tous les mois


Sujet :

SSAS

  1. #1
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 225
    Points : 96
    Points
    96
    Par défaut [SSAS] [2K5] dimension temps serveur afficher tous les mois
    Bonjour à tous,

    J'ai un problème avec les dimensions temps serveur, elles ne m'affichent que les mois ayant une mesure. Je m'explique.
    Si j'ai une table de fait avec les valeurs
    Janvier 200
    Février 300
    Mai 400
    ..

    Alors , je ne verrai pas apparaître les mois mars avril lors de l'exploitation du cube sous Excel..
    Comment afficher tous les mois mêmes ci ceux-ci n'ont pas de valeurs?

  2. #2
    Membre chevronné 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 : 40
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Points : 2 145
    Points
    2 145
    Par défaut
    Une table de fait ne peut retourner que ce qu'elle contient. Si aucune valeur n'existe dans la table pour cette date, elle ne peut, par défaut, l'inventer.
    Le plus simple est donc de forcer l'écriture d'une valeur pour ce mois.
    Sinon il doit exister des moyens détournés avec un peu de script MDX s'il n'y a qu'une interrogation du cube et non des tables.
    Alexandre Chemla - Consultant MS BI chez Masao

  3. #3
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 225
    Points : 96
    Points
    96
    Par défaut
    Tout d'abord merci pour ta réponse,
    et effectivement , elle ne peut l'inventer..

    Mais si il y n'y a aucune valeur pour une date, le cube ne peut-il pas afficher une valeur vide ou null pour cette date?

    Je pensais qu'il exister peut-être une option qui me permettrait de laisser visible les membre d'une dimension pour lesquels ma mesure n'a pas de valeur ..

    Est ce que "Forcer l'écriture d'une valeur pour ce mois" veut dire pour chaque mois où il n' y a pas de valeur ,insérer une ligne bidon? si c'est bien le cas il faudrait alors le faire jusqu'à la date donc 365 ligne par an .. c'est pas terrible d'insérer autant d'infos "inutile" dans mon dw ...

  4. #4
    Membre chevronné 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 : 40
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Points : 2 145
    Points
    2 145
    Par défaut
    Effectivement, insérer des lignes inutiles n'est pas génial.
    Par contre, si les données sont lues à travers le cube, il est possible de créer des membres calculés MDX qui te permettent de générer une valeur pour ces dates manquantes.
    L'avantage de ces membres calculés est qu'ils ne sont pas stockés, le calcul se fait à la volée.
    Alexandre Chemla - Consultant MS BI chez Masao

  5. #5
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 225
    Points : 96
    Points
    96
    Par défaut
    Les données sont effectivement lues à travers le cube et ton idée de membre calculée MDX me plaît bien. Le Hic c'est que je maîtrise très peu le MDX ..
    Pourrait-tu m'envoyer une requête type qui corresponde à ce besoin ?
    Merci pour ton aide

  6. #6
    Membre chevronné

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Points : 1 758
    Points
    1 758
    Par défaut
    Hello,

    Pourquoi ne pas vous servir d'une jointure sur une CTE qui genere une liste de date comprise entre les dates que vous traitez. Ensuite, vous pouvez traiter les cas ou la valeur pour la date est null en fonction des regles business ?

    Bonne journee,
    Dje

  7. #7
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 225
    Points : 96
    Points
    96
    Par défaut
    Salut ptit_dje,
    Merci pour ta réponse,mais je ne comprends pas bien ta proposition de solution.
    SI je résume ce que je pense avoir compris .. :
    tu proposes de lié la table de fait à une CTE qui me génère mon calendrier ..
    Si c'est bien cela , ca ne résous pas mon problème, je n'aurais toujours pas tous les mois affichés..
    J'ai du mal comprendre ..peux-tu détailler un plus ton idée ?

    @Jinroh77 je suis toujours intéressé par la solution mdx

    Merci à vous pour votre aide

  8. #8
    Membre chevronné

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Points : 1 758
    Points
    1 758
    Par défaut
    Soit sur base d'une CTE qui peut s'ecrire comme explique dans cet article:
    http://www.kodyaz.com/articles/sql-s...dar-table.aspx.

    Vous pouvez effectuer une jointure dans le genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    With MyCTEDate
    (...),
    Select
    ...
    from MyFactTable right join MyCTEDate on MyFactTable.MaDate = MyCTEDate.date
    Cette query retournera donc une ligne pour chaque date presente dans la CTE, ce qui permettra de generer des enregistrements pour des dates n'apparaissant pas dans la fact.
    Les colonnes provenant de la fact seront donc NULL pour les dates manquantes. Apres, gerer cela avec la fonction ISNULL(), par exemple pour assigner une valeur 0.
    Ainsi vous obtiendrez un result set contenant toutes les dates, meme pour les dates ou vous n'avez pas de ligne dans votre fact.

    J'espere avoir ete plus clair

    Bonne chance,
    Dje

  9. #9
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 225
    Points : 96
    Points
    96
    Par défaut
    Je comprends beaucoup mieux, merci beaucoup pour ta réponse, je teste cela ce wd et je vous tiens au courant

  10. #10
    Membre chevronné 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 : 40
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Points : 2 145
    Points
    2 145
    Par défaut
    Hello, désolé d'avoir tardé.
    Sur la partie MDX je ne suis pas vraiment performant malheureusement.
    Il faudrait que je test pour te donner une réponse correct.
    Alexandre Chemla - Consultant MS BI chez Masao

  11. #11
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 225
    Points : 96
    Points
    96
    Par défaut
    La solution avec la CTE fonctionne sous sql sever. Mais pas dans SSAS car dans la dsv le mot clé WITH n'est pas toléré.
    http://social.msdn.microsoft.com/for...-fbb60d5a50f6/

    J'ai donc essayé de crée une vue sous sql server , le problème est que je ne peux pas créer ma vue avec le mot clé OPTION, je la crée donc comme cela
    CREATE VIEW [dbo].[SI_WIEW]
    AS

    WITH CTE_DatesTable
    AS
    (
    SELECT CAST('20000101' as datetime) AS [date]
    UNION ALL
    SELECT DATEADD(dd, 1, [date])
    FROM CTE_DatesTable
    WHERE DATEADD(dd, 1, [date]) <= '20100101'
    )
    SELECT
    ROW_NUMBER()OVER(ORDER BY F.Cle) as ID ,*
    FROM dbo.SI as F RIGHT JOIN CTE_DatesTable as T
    ON F.[Date validation] = T.[date]
    Puis j'y accède comme ceci sous SQL Server

    select * from [SI_WIEW] option (maxrecursion 0)
    Le problème est que le mot clé option n'est pas toléré lui non plus dans SSAS ..

    Comment faire alors?

    PS: Jinroh77 si jamais tu as le temps pour le mdx, je suis toujours curieux de voir comment cela peut fonctionner ..


    Merci par avance pour votre aide

  12. #12
    Membre chevronné

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Points : 1 758
    Points
    1 758
    Par défaut
    Vous pouvez creer une table de date persistante, en utilisant la CTE.
    Ensuite effectuez une jointure standard sur cette table.
    Ca devrait contourner le probleme.

  13. #13
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 225
    Points : 96
    Points
    96
    Par défaut
    Effectivement rendre la CTE persistante fonctionne.
    Mon problème a été déporté un peu plus loin maintenant ..

    Pour rappel j'essaye d'afficher sous Excel 2003 toutes les valeurs de mois mêmes celles qui sont vides.

    Sous SSAS dans l'onglet Navigateur, aucun problème je clique droit sur le "tcd" puis je coche afficher les valeurs vides et cela fonctionne.
    J'en conclus donc que mon cube contient bien mes mois vides.

    Mais sous Excel 2003 il ne m'affiche toujours que les mois avec valeurs ..

    Ai-je raté quelque chose?

  14. #14
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 225
    Points : 96
    Points
    96
    Par défaut
    Résolu,il faut mettre sur zeroOrBlank et non preserve.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/01/2010, 17h29
  2. [Designer V5-V6] Afficher tous les mois du calendrier
    Par San_d dans le forum Débuter
    Réponses: 5
    Dernier message: 28/03/2009, 22h10
  3. Réponses: 1
    Dernier message: 18/02/2009, 16h04
  4. [SSAS][2k5] dimension temps sur un champs
    Par jdmbh dans le forum SSAS
    Réponses: 3
    Dernier message: 25/04/2008, 10h58
  5. afficher tous les champs d'une table
    Par julio84 dans le forum ASP
    Réponses: 8
    Dernier message: 19/01/2005, 10h31

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