|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : mars 2011 Messages : 2 ![]() |
Bonjour,
Petite question d'un débutant... J'ai une table T1 dans laquelle j'ai 3 colonnes avec, mettons les données suivantes : START_DATE | END_DATE | NB_WEEKS | WORKLOAD_PER_WEEK 14/03/2011 | 16/03/2011 | 1 | 1 14/03/2011 | 30/03/2011 | 3 | 4 Ceci corresponds à une list de tâches à réaliser avec la date de début de semaine de la tâche, la date de fin, le nombre de semaine entre ces deux dates, le nombre de jours à faire pour réaliser cette tâche. Je souhaiterais transformer cette table de sorte que 1. chaque ligne soit dupliquées autant de fois qu'il y a de NB_WEEKS 2. si une ligne est dupliquée la start_date sera incrémentée de +7 jours à chaque duplication. Pour notre exemple, - la première ligne serait donc copiée telle quel, car NB_WEEK = 1 - la seconde ligne serait donc dupliquée 2 FOIS (car NB_WEEK = 3). La première duplication entraine START_DATE = START_DATE + 7 et la seconde duplication entraine START_DATE = START_DATE + (7x2) La table cible serait donc la suivante : START_DATE | END_DATE | WORKLOAD_PER_WEEK 14/03/2011 | 16/03/2011 | 1 14/03/2011 | 30/03/2011 | 4 21/03/2011 | 30/03/2011 | 4 28/03/2011 | 30/03/2011 | 4 C'est probablement un cas d'école pour les experts mais pour les débutants, y'a de quoi s'arracher les cheveux... (s'il nous en reste !)Merci pour votre aide!! |
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé
![]() ![]() Olivier DecourtFormateur en informatique Inscription : avril 2008 Messages : 1 467 ![]() |
Bonjour.
Une étape Data ferait ça très bien, à condition d'y inclure une boucle au sein de laquelle une instruction OUTPUT force l'écriture d'une nouvelle observation. Code :
Bon courage. Olivier |
||
|
|
10
|
|
|
#3 | ||
|
Membre confirmé
![]() Inscription : janvier 2010 Messages : 185 ![]() |
Bonjour,
Voici une solution: Code :
|
||
|
|
10
|
|
|
#4 | ||
|
Membre Expert
![]() ![]() Brice BeareParis Inscription : janvier 2011 Messages : 956 ![]() |
Code :
|
||
|
|
00
|
|
|
#5 | ||
|
Membre confirmé
![]() Inscription : janvier 2010 Messages : 185 ![]() |
Bonjour Brice,
L'output est la commande qui provoque l'écriture du vecteur de travail (<=> ecriture d'une observation dans la table de sortie). Par défaut, l'output est implicite. Si on devait le placer dans une étape data classique, il faudrait le mettre juste avant le run: équivaut à Code :
Ensuite si NB_WEEk est superieure ou égale à 2 il y a déclenchement d'une boucle do toujours à partir du même vecteur de travail, ce qui permet d'incrémenter date_start de 7 jours en 7 jours. Pour que chaque iteration produise l'écriture d'une observation, je ré-emploie la commande output dans la boucle. Si je ne suis pas clair, relance le code en enlevant/ajoutant/deplaçant des output. Tu verras quel est l'impact sur la sortie. |
||
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() ![]() Brice BeareParis Inscription : janvier 2011 Messages : 956 ![]() |
Justement, j'ai testé et ça ne marche pas sans le premier output, c'est pour ça que je voulais comprendre le pourquoi. En tout cas tu as été assez clair.
|
|
|
00
|
|
|
#7 |
|
Membre confirmé
![]() Inscription : janvier 2010 Messages : 185 ![]() |
Petite précision:
Olivier fait nb_weeks iteration (i=1 to nb_weeks ). Sa premiere itération correspond à mon premier output. Moi je fais un output d'entrée et s'il y a lieu, j'enchaine par nb_weeks-1 iterations puisque je commence par i=2. |
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() ![]() Brice BeareParis Inscription : janvier 2011 Messages : 956 ![]() |
Yep!!
|
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : mars 2011 Messages : 2 ![]() |
Franchement, merci! je ne m'attendais pas à des réponses aussi précises, rapides et efficaces!
A bientôt! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com