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

QlikView Discussion :

Ajout d'une dimension temps dans un modèle


Sujet :

QlikView

  1. #1
    Membre régulier
    Femme Profil pro
    Stagiaire informatique décisionnelle
    Inscrit en
    Mars 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Stagiaire informatique décisionnelle
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2014
    Messages : 81
    Points : 71
    Points
    71
    Par défaut Ajout d'une dimension temps dans un modèle
    Bonjour,

    Je me pose actuellement la question de l'ajout d'une dimension temps dans ma modélisation Qlikview.

    Pour l'instant, mon modèle est le suivant :

    Nom : modeleDonneesFinal.png
Affichages : 590
Taille : 34,5 Ko

    Dans la table de fait nommée "FAIT_HOSPIT", j'ai déjà une dimension temps avec les champs "mois_sortie" et "annee_sortie" qui donnent les hospitalisations sur une année et un mois donné.
    En revanche, je ne sais pas comment créer ma table de dimension de temps au niveau du script. La granularité serait donc l'année et le mois.

    Encore merci de votre expérience et de votre aide.

  2. #2
    Modérateur

    Inscrit en
    Octobre 2006
    Messages
    1 649
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 649
    Points : 2 529
    Points
    2 529
    Billets dans le blog
    6
    Par défaut
    Si vous avez des données sur tous les mois, vous pouvez facilement faire un calendrier avec la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Calendrier:
    LOAD
    DISTINCT makedate(annee_sortie, mois_sortie) AS date
    RESIDENT FAIT_HOSPIT
    ORDER BY annee_sortie, mois_sortie;

    Sinon, il faut récupérer la date min et la date max, et faire un chargement dynamique avec un LOAD AUTOGENERATE WHILE.


    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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    MinMaxYear:
    LOAD min(annee_sortie) as MinYear,
    	 max(annee_sortie) as MaxYear
    Resident FAIT_HOSPIT;
     
     
     
    LET vMinYear = Peek('MinYear',0,'MinMaxYear');
    LET vMaxYear = Peek('MaxYear',0,'MinMaxYear');
     
    LET _i = $(vMinYear);
     
    DO WHILE _i <= $(vMaxYear)
        TempCalendrier:
    	LOAD
    		num(MakeDate($(_i),RecNo())) as DateID,
    		RecNo() as NumMois,
    		Month(MakeDate($(_i),RecNo())) AS Mois,
    		$(_i) AS Année
    	AutoGenerate 12;
    	LET _i = _i + 1;
    LOOP
     
    Calendrier:
    LOAD
    	DateID as Date,
    	Month(MakeDate(Année,NumMois)) as Month,
    	Année as Year,
    	MonthName(DateID) as MonthName
    Resident TempCalendrier;
     
    DROP TABLE TempCalendrier;
    DROP TABLE MinMaxYear;

  3. #3
    Membre régulier
    Femme Profil pro
    Stagiaire informatique décisionnelle
    Inscrit en
    Mars 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Stagiaire informatique décisionnelle
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2014
    Messages : 81
    Points : 71
    Points
    71
    Par défaut
    Désolée de la réponse tardive PhunkyBob, mais je me suis penchée sur d'autres problèmes avant de revenir sur l'intégration du temps. J'ai dû refaire toute ma modélisation qui est maintenant la suivante :
    Nom : modelisationDeuxAns.png
Affichages : 648
Taille : 37,5 Ko

    J'ai bien lu et testé tes deux codes, cependant, la table calendrier n'est pas reliée aux données. Ne faudrait-il pas la joindre à ma table RUM ou RSA ?
    En effet, quand je requête sur une année, cela ne peut pas me compter le nombre de séjours. Ou cela ne me change pas les FINESS des établissements.

  4. #4
    Modérateur

    Inscrit en
    Octobre 2006
    Messages
    1 649
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 649
    Points : 2 529
    Points
    2 529
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par SteffieLili Voir le message
    J'ai bien lu et testé tes deux codes, cependant, la table calendrier n'est pas reliée aux données. Ne faudrait-il pas la joindre à ma table RUM ou RSA ?
    Si.
    Pour cela, il suffit de changer le nom d'un champ dans la table de Calendrier pour qu'il ait le même nom que celui qui correspond à la date dans votre niveau le plus haut de vos données.

  5. #5
    Membre régulier
    Femme Profil pro
    Stagiaire informatique décisionnelle
    Inscrit en
    Mars 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Stagiaire informatique décisionnelle
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2014
    Messages : 81
    Points : 71
    Points
    71
    Par défaut
    Qu'appelez vous le niveau le plus haut ? Est-ce la granularité la plus fine ?

  6. #6
    Modérateur

    Inscrit en
    Octobre 2006
    Messages
    1 649
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 649
    Points : 2 529
    Points
    2 529
    Billets dans le blog
    6
    Par défaut
    Déjà, y a-t-il une notion de date dans la table des RSA et dans la table des RUM ?

    Si ce n'est pas le cas, alors la question ne se pose pas.


    Le "niveau le plus haut", c'est là où vous êtes sur d'avoir de la donnée.


    Si un RSA peut avoir 0-n RUM et qu'un RUM a forcément un RSA, alors le niveau le plus haut est le RSA.


    Imaginez vos données comme un arbre, il faut que quand vous faites un filtre sur la date, vous récupériez toutes les branches qui ont un rapport.

  7. #7
    Membre régulier
    Femme Profil pro
    Stagiaire informatique décisionnelle
    Inscrit en
    Mars 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Stagiaire informatique décisionnelle
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2014
    Messages : 81
    Points : 71
    Points
    71
    Par défaut
    Alors, oui, il y a une notion de date dans la table RSA avec les champs "annee_sortie" et "mois_sortie". En revanche, dans la table RUM aucune notion de date n'est présente.
    A un RSA correspond au moins un RUM et vice versa. Le RUM étant le niveau le plus fin, je pense que si des dates étaient apparues dans cette table, cela aurait été mieux de les lier à cette date, mais à priori, la question ne se pose pas vraiment ici à ce que je comprends ...

    Si je fais le lien, il va falloir que je concatène les champs "mois" et "annee" non ? Car sinon, cela va me générer une clé synthétique.

  8. #8
    Membre régulier
    Femme Profil pro
    Stagiaire informatique décisionnelle
    Inscrit en
    Mars 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Stagiaire informatique décisionnelle
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2014
    Messages : 81
    Points : 71
    Points
    71
    Par défaut
    A priori, avec le rajout de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    makedate(annee_sortie,mois_sortie) AS date;
    Et le premier code, cela marche très bien, je place donc le post en résolu

  9. #9
    Modérateur

    Inscrit en
    Octobre 2006
    Messages
    1 649
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 649
    Points : 2 529
    Points
    2 529
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    makedate(annee_sortie,mois_sortie)
    retournera le premier du mois.

    Si c'est effectivement comme ça que sont vos date, c'est parfait.

  10. #10
    Membre régulier
    Femme Profil pro
    Stagiaire informatique décisionnelle
    Inscrit en
    Mars 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Stagiaire informatique décisionnelle
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2014
    Messages : 81
    Points : 71
    Points
    71
    Par défaut
    Mes dates sont juste avec un mois et une année mais à priori, cela ne dérangera pas l'utilisateur final qui est content de l'avancement. Et cela matche bien avec les données

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

Discussions similaires

  1. [infomaps] Récupérer le membre "date d'hier" dans une dimension temps
    Par Deciprog dans le forum Outils BI
    Réponses: 4
    Dernier message: 31/03/2010, 11h45
  2. Ajout d'une classe basique dans une application formulaire
    Par Seb33300 dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 26/04/2007, 12h34
  3. Réponses: 2
    Dernier message: 16/11/2006, 15h00
  4. [C#] Ajout d'une Form existante dans mon projet ?
    Par sara21 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/10/2006, 01h08
  5. [9.2i] Créer une dimension temps pour un DWH
    Par alpachico dans le forum Oracle
    Réponses: 5
    Dernier message: 28/10/2005, 15h00

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