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 :

Récupération donnée Année N-1 (2013)


Sujet :

QlikView

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2014
    Messages : 406
    Points : 174
    Points
    174
    Par défaut Récupération donnée Année N-1 (2013)
    Bonjour,

    Voilà mon souci :
    Pour le besoin d'une de mes formules , j'ai besoin de récupérer depuis mon entrepôt de donnée les dates de l'année N-1 ( 2013).
    Sachant que c'est en tenant compte des jours, je m'explique . Le 1 er mai 2014 est tombé un Jeudi, en revanche le 1 er mai 2013 est tombé un Mercredi, mais la donnée à prendre est celle du Jeudi 2 mai 2013. Idem pour la suite , donc pour le Vendredi 2 mai 2014, on prendra la donnée du vendredi 3 mai 2013.
    ( je sais pas si vous avez saisie)...

    J'ai essayer ce code pour récupérer uniquement la donnée N-1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sum(TOTAL IF(Dates = Today()-365, [Pages Vues/Jours])) 
     
    Sum({<Mois={'mai'}>}[Pages Vues/Jours])
    Comme vous l'aurez constatez il récupère en fonction de la date d'aujourd’hui - 1 donc du 13 mai 2014 et la seconde reste bloqué sur le mois (mai). Donc pas bonne.
    Et la récupération de cette donnée N-1 ne dois pas réagir en fonction de la sélection active ( Mois et Année).

    Or mon rapport commence depuis le 1er mai 2014.


    Merci à vous
    Fichiers attachés Fichiers attachés

  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
    Je ne comprends pas pourquoi vous faites
    alors que cette formule ne donne justement pas un jour identique sur l'année précédente.
    Le 1er mai 2014 tombe un jeudi, 365 jours avant donnera le 1er mai 2013, donc pas un jeudi...

    Il faut donc faire "- 364" qui est un multiple de 7.




    Pour comparer chaque jour de cette année au jour correspondant l'année précédente, il faut vous faire un calendrier détaché du modèle, et utiliser une formule du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum(if(Dates = DimDate - 364, [Pages Vues/Jours]))
    où "Dates" est la date dans votre modèle et "DimDates" une dimension de date détachée du modèle que vous mettrez en dimension de votre graphique.

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2014
    Messages : 406
    Points : 174
    Points
    174
    Par défaut
    Merci,

    merci pour le 364.
    j'ai créer la DimDate, il me calcul bien , mais prend les valeurs de cette année (2014).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DimensionDate:
    LOAD DISTINCT Dates AS DimDate
     Resident 'omniture global site';

    Je vais vous posez une question bête peut être, mais comment le détachée du modèle ?
    De plus vous m'avez dit de mettre en dimension de votre graphique. Je me retrouve avec deux dimension date , donc doubles dates sur mon graphique.

  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
    j'ai créer la DimDate, il me calcul bien , mais prend les valeurs de cette année (2014).
    Ce n'est pas grave : une date est une date...



    comment le détachée du modèle ?
    Il suffit de donner un nom qui n'est utilisé nulle part ailleurs dans vos tables ("DimDate" par exemple).


    De plus vous m'avez dit de mettre en dimension de votre graphique. Je me retrouve avec deux dimension date , donc doubles dates sur mon graphique.
    Il faut mettre "DimDate" en dimension de votre graph à la place de la dimension de date que vous avez actuellement !


    Pour avoir la valeur "pour l'année 2014", il faudra mettre l'expression
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum(IF(Dates = DimDate, [Pages Vues/Jours]))

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2014
    Messages : 406
    Points : 174
    Points
    174
    Par défaut
    Il faut mettre "DimDate" en dimension de votre graph à la place de la dimension de date que vous avez actuellement !

    Pour avoir la valeur "pour l'année 2014", il faudra mettre l'expression
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum(IF(Dates = DimDate, [Pages Vues/Jours]))
    [/QUOTE]

    Quand je met DimDate en dimension, mes résultat augmentent. donc faux.

    J'ai bien mis DimDate comme vous m'avez indiquée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sum(IF(Dates = DimDate, [Pages Vues/Jours]))

    comment le détachée du modèle ?
    Il suffit de donner un nom qui n'est utilisé nulle part ailleurs dans vos tables ("DimDate" par exemple).
    Il me retourne pas les données de 2013, et DimDate est bien détachée de Dates.

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2014
    Messages : 406
    Points : 174
    Points
    174
    Par défaut
    En cherchant un peu sur internet j'ai trouvé quelque script.
    Par rapport à mon problème il me faut un calendrier complètement indépendant du reste.

    j'ai fait ce script :

    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
     
     
    Let varMinDate = Num('1/1/2013');
    Let varMaxDate = Num('31/12/2013');
    TempCalendar:
    LOAD
    $(varMinDate) + Iterno()-1 As Num,
    Date($(varMinDate) + IterNo() - 1) as Date
    AutoGenerate 1 While $(varMinDate) + IterNo() -1 <= $(varMaxDate);
    calendar:
    LOAD
    YearName(Date) as An,
    Month(Date) as NomMois
    Resident TempCalendar
    Order By Date ASC;
    J'ai une sélection sur l'année (2014) et le mois (mai). Mon calendrier2 " Calendar" est donc détachée ( si je me trompe pas)
    car le reste de mes calculs ce font sur le mois et l'année en cours.

    Pour un de mes calculs je dois pouvoir récuperer la valeur de l'année N-1 soit 2013.
    Or je n'arrive pas ...


    Qu'est je mal fait...

  7. #7
    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
    Quand je met DimDate en dimension, mes résultat augmentent. donc faux.
    Il faudrait avoir un échantillon de données concret.
    Dans votre premier post, il n'y a que quelques valeurs pour 2013, donc pas possible de faire des calculs.

    Il me retourne pas les données de 2013, et DimDate est bien détachée de Dates.
    Oui, si on met "Dates = DimDate", il ne va pas retourner les données de 2013 si les DimDate sont basées sur 2014. C'est pour cela qu'il faut mettre "Dates = DimDate - 364", comme indiqué dans le post précédent.



    Supposons que vous ayez ces données :
    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
    Data:
    LOAD * INLINE [
    Date, Valeur
    01/01/2013, 20130101
    02/01/2013, 20130102
    03/01/2013, 20130103
    04/01/2013, 20130104
    05/01/2013, 20130105
    06/01/2013, 20130106
    07/01/2013, 20130107
    08/01/2013, 20130108
    01/01/2014, 20140101
    02/01/2014, 20140102
    03/01/2014, 20140103
    04/01/2014, 20140104
    05/01/2014, 20140105
    06/01/2014, 20140106
    07/01/2014, 20140107
    08/01/2014, 20140108
    ];
    Si on sait qu'on a 1 ligne par jour, on a donc tous les jours présents pour l'année 2014, on peut donc faire le calendrier détaché comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DimDate:
    LOAD 
    	DISTINCT Date AS DimDate
    RESIDENT Data
    WHERE year(Date) = 2014 // pour n'avoir qu'une seule année
    ORDER BY Date ASC;
    Mais il y a plein d'autres façons de créer ce calendrier.


    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DimDate:
    LOAD 
    	date(iterno() - 1 + YearStart(today())) AS DimDate
    AUTOGENERATE 1 
    WHILE iterno() - 1 + YearStart(today()) <= YearEnd(today());

    On a donc toutes les dates d'une année (2014 en l’occurrence) dans "DimDate".


    Dans un graphique, on va mettre comme dimension "DimDate" et comme première expression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum(if(Date = DimDate, Valeur))
    qui retournera les valeurs pour tous les jours de l'année courante.

    Une 2em expression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum(if(Date = DimDate - 364, Valeur))
    retournera les valeurs pour tous les jours qui correspondent à 364 jours plus tôt.


    Vous permettra de visualiser de quel jour il s'agit.




    On constate qu'on a bien les valeurs pour l'année N et les valeurs pour l'année N-1.
    Et on constate aussi qu'il y a bien la valeur du 2 janvier 2013 alignée avec la valeur du 1 janvier 2014, qui sont tous les 2 un mercredi.

  8. #8
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2014
    Messages : 406
    Points : 174
    Points
    174
    Par défaut
    PhunkyBob , your are the best...


    j'ai testé sur un rapport test, ça marche.
    Merci ...

    Maintenant reste à moi d'améliorer les formules sur mon rapports définitifs.

    Je clos la question.

    résolus grâce à PhunkyBob.

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

Discussions similaires

  1. HELP récupération données formulaire
    Par liichiii dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/05/2006, 00h29
  2. probleme récupération donnée dans script xsl
    Par jmacdev dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 12/05/2006, 17h37
  3. Récupération données formulaire en php5
    Par jcaspar dans le forum Langage
    Réponses: 1
    Dernier message: 08/03/2006, 20h45
  4. Récupération données en registre
    Par cgoln dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/12/2005, 11h05
  5. Réponses: 3
    Dernier message: 13/09/2005, 12h21

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