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

  1. #1
    Futur Membre du Club
    trouver les 12 dernières semaines de l'année en cours.
    Bonjour,

    je travaille sur SAP BI4.2 qui est basé sur oracle 11G via SAP.
    j'ai un objet de type chaine. Son nom c'est semaine et il envoie les valeurs suivantes:
    2018-01,2018-12,2018-22, 2019-01, 2019-02,2019-12.....2019-30(semaine actuelle)
    Je cherche à avoir les 12 dernières semaines incluant bien sûr la semaine actuelle de l'année en cours.

    j'aimerais si possible si l'utilisateur est à cheval entre deux années, lui donnant également la possibilité de tomber sur l'année d'avant également.

    De préférence j'aimerais gérer si possible ce calcul glissant dans l'univers.

    Quelqu'un peut il m'aider s'il vous plait?

    Cordialement

  2. #2
    Futur Membre du Club
    Hello,

    Pour rappatrier la semaine S-12, tu peux faire ça :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    =FormatDate(DateRelative(DateActuelle();-12;PériodeSemaine);"ww-yyyy")


    Tu le passe en variable et dans tes tableaux ou dans ton onglet, tu filtre semaine >= à ta variable, ça te donnera les 12 dernières semaines.

    Pour l'univers, je ne sais pas, je n'utilise pas Oracle

    Bonne semaine

    François

  3. #3
    Responsable Approche théorique du décisionnel

    Hello,

    Il faut ajouter un filtre prédéfini dans l'univers dont la formule serait du genre :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    NOMTABLE.COLONNEDATE between trunc(sysdate-11*7,'IW') and trunc(sysdate,'IW')


    A tester et ajuster bien sûr

    A+
    Doc
    N'oubliez pas de cliquer sur lorsque votre problème est réglé !

  4. #4
    Futur Membre du Club
    trouver les 12 dernières semaines de l'année en cours.
    Bonjour François

    Merci d'avoir pris ton temps pour me répondre.
    J'ai crée ta variable en modifiant le format qui n'était pas dans l'ordre.
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    =FormatDate(DateRelative(DateActuelle();-12;PériodeSemaine);"yyyy-ww")

    Je l'ai qualifié en qualification dimension. En l'affichant seule dans un rapport vierge j'ai la semaine 2019-19 affiché.
    Ce qui ne correspond pas à la première semaine des 12 premières semaines.
    j'ai fais le filtre que vous m'avez proposé dans le rapport. J'ai dans l'entête le chiffre 1 qui apparaît et non les 12 premières semaines.

    peux tu me dire ce qui n'a pas fonctionné? Sachant que j'exécute pour l'instant la requête sur toutes les semaines de l'année actuelle.
    Une fois que vous aurez trouvé ce qui m'empêche d'afficher les 12 dernières semaines, comment faire en sorte que les objets qui sont en contrôle d'entrée puisse s'afficher en fonction des 12 dernières semaines du rapport?

    En attendant ta réponse merci.

  5. #5
    Futur Membre du Club
    Citation Envoyé par doc malkovich Voir le message
    Hello,

    Il faut ajouter un filtre prédéfini dans l'univers dont la formule serait du genre :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    NOMTABLE.COLONNEDATE between trunc(sysdate-11*7,'IW') and trunc(sysdate,'IW')


    A tester et ajuster bien sûr

    A+
    Doc

    Bonjour Doc,

    merci d'avoir pris le temps de pouvoir essayer de m'aider.
    En fait, si j'ai bien compris, il faut que je fasse un nouvel objet dans BLX et que je choisisse filtre au lieu de dimension ou info etc..
    Et que je mette dans le filtre le script que vous m'avez envoyé à savoir: NOMTABLE.COLONNEDATE between trunc(sysdate-11*7,'IW') and trunc(sysdate,'IW').
    est ce que si je transpose votre filtre je peux mettre exemple:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    tableA.Semaine between trunc(sysdate-11*7,'IW') and trunc(sysdate,'IW')

    Doc mon objet Semaine est en chaine de caractère et correspond à 2019-22 ou 2019-numero quelconque de la semaine.
    Doc peux tu me dire à quoi correspond le I?
    Quand j'essaie tableA.Semaine between trunc(sysdate-11*7,'IW') and trunc(sysdate,'IW') il me montre ORA-01861: literal does not match format string
    Quand je modifie en date l'objet semaine j'ai le même problème.
    N'ya t'il pas un problème avec I et W?
    Pouvez vous m'aider pour que j'applique votre proposition de script?

    Merci d'avance

  6. #6
    Futur Membre du Club
    trouver les 12 dernières semaines de l'année en cours.
    Bonjour,

    François,

    ta solution que tu m'as proposée est bonne finalement pour le rapport.
    Par contre, j'aimerais la transposer en Univers basé sur oracle.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    =FormatDate(DateRelative(DateActuelle();-11;PériodeSemaine);"yyyy-ww")

    la date max il suffit de mettre FormatDate(DateRelative(DateActuelle();+0;PériodeSemaine);"yyyy-ww")),
    après effectivement on fait un filtre en récupérant l'objet semaine entre les deux, il donne 0 et 1 et là on filtre sur 1 pour avoir les dates 2019-25 et 2019-36 pour la semaine en cours.

    Par contre mon problème est que je n'arrive pas à convertir cela dans le langage de l'univers.
    =FormatDate(DateRelative(DateActuelle();-11;PériodeSemaine);"yyyy-ww") >>>>>> L'univers donne quoi comme fonction?
    Je ne trouve pas de daterelative dans l'univers ni de periodeSemaine.

    J'avais essayé une autre méthode mais lorsque à la place de -11, je mets -36 il ne sait pas passer à l'année précédente dans l'univers.
    Sur Webi, j'y arrive.

    Quelqu'un peut-il m'aider? Bruno, Mr DOC ou quelqu'un d'autre ?

    Merci d'avance

  7. #7
    Membre habitué
    Bon, j'arrive probablement trop tard pour Haiticherie, mais pour ceux qui suivront et sous une forme légèrement différente des intervenants précédents :

    Pour obtenir la "semaine - 12" sur Oracle:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
       select to_char(sysdate + (11*-7),'YYYYIW') "12WeekAgo" from dual;


    et un exemple pour obtenir une liste de semaine (issue d'une table de référence) :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCT TO_CHAR (calendrier.date_calendrier, 'YYYYIW')
      FROM calendrier
     WHERE TO_CHAR (calendrier.date_calendrier, 'YYYYIW') > TO_CHAR (SYSDATE + (36 * -7), 'YYYYIW')
       AND calendrier.date_calendrier <= SYSDATE;