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
    [Hive] Démultiplier nombre de ligne --> boucle ?
    Bonjour,

    J'ai un fichier décrivant les activités saisies par les collaborateurs de mon entreprise, par semaine.
    une saisie = une activité + un code projet, une ligne par semaine pour chaque couple (activité,projet)
    colonne "date fin semaine" = date du dimanche de la semaine concernée.
    un dessin vaut mieux qu'un long discours, voici a quoi ressemble mon fichier:



    Ce que je souhaiterai, c'est une ligne par jour et non une ligne par semaine, il faut donc démultiplier le nombre de ligne. Par exemple, pour la ligne concernant "Jean Jean"



    Comment faire ?

    Je ne sais pas si j'ai été très clair... mais ca fait un moment que je réfléchis à cela, et je cale !

  2. #2
    Modérateur

    Vous voulez le faire sur Excel ou sur une base de données ?

  3. #3
    Futur Membre du Club
    Je suis sur une base de données Hive.
    Voici le code utilisé pour consuire cette table:
    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
     
    SELECT 
    dc_agentpe_creation_id,
    dc_codeactivitetache,
    dc_codecontexte,
    dc_utilisateurpe,
    dc_valeurlundi,
    dc_valeurmardi,
    dc_valeurmercredi,
    dc_valeurjeudi,
    dc_valeurvendredi,
    dc_valeursamedi,
    dc_valeurdimanche,
    dc_valeurtotalsaisie,
    dd_datedebutsemaine
    FROM braff00.pr00_ppr042_saisieactiviterh
    where 
        dd_datedebutsemaine>='2019-01-01'  
        and kd_dateextraction in (select MAX(kd_dateextraction) from braff00.pr00_ppr042_saisieactiviterh) limit 400;


    Merci

  4. #4
    Modérateur

    Deux méthodes.
    Une version SQL à base d'UNION ALL, à compléter :
    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
    SELECT dc_agentpe_creation_id
         , dc_codeactivitetache
         , dc_codecontexte
         , dc_utilisateurpe
         , dc_valeurlundi
         , dd_datedebutsemaine + 0 as datejour
      FROM braff00.pr00_ppr042_saisieactiviterh
     UNION ALL
    SELECT dc_agentpe_creation_id
         , dc_codeactivitetache
         , dc_codecontexte
         , dc_utilisateurpe
         , dc_valeurmardi
         , dd_datedebutsemaine + 1 as datejour
      FROM braff00.pr00_ppr042_saisieactiviterh
    ...

    Et une version à base de explode ( map ( ) ) que ressemblera à ça :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select explode(map(dd_datedebutsemaine + 0, dc_valeurlundi,
                       dd_datedebutsemaine + 1, dc_valeurmardi,
                       ...)) as (date, valtotale)
      from braff00.pr00_ppr042_saisieactiviterh

  5. #5
    Futur Membre du Club
    Avec un peu de retard, merci !
    La requête avec UNION fonctionne bien.