Bonjour,
Débutant sur Talend, je m'attaque à une problématique de pivot de lignes en colonnes qui ne me semble pas triviale et je voudrais savoir si, déjà, il y a moyen de faire ça avec cet (excellent) outil.
Voilà un maquettage du problème:
En entrée j'ai un tableau Excel de ce genre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 id_emp | id_question | question |reponse 111 | 1 | What s your favorite pet | cat 112 | 1 | What s your favorite pet | dog 113 | 1 | What s your favorite pet | parrot 114 | 1 | What s your favorite pet | cat 111 | 2 | How many pets live at home? | 1 112 | 2 | How many pets live at home? | 2 113 | 2 | How many pets live at home? | 0 114 | 2 | How many pets live at home? | 2 113 | 3 | How do you feed your pet? | seeds
et je souhaiterais obtenir en sortie le tableau Excel sous cette forme:
Quelques remarques:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 id_emp | What s your favorite pet | How many pets liveat home? |How do you feed your pet? 111 | cat | 1 | 112 | dog | 2 | 113 | parrot | 0 | seeds 114 | cat | 2 |
1ère difficulté pour moi, transformer un champ de ligne (intitulé de la question) en entête de colonne.
2ème difficulté, je ne suis pas garanti que chaque employé réponde à toutes les questions, il doit pouvoir y avoir des "trous" dans la matrice de sortie comme le montre l'exemple.
L'id_question n'est pas nécessaire en sortie, mais je suppose qu'il peut aider au traitement.
On peut évidemment également trier les données en entrée pour faciliter le traitement (toutess les questions du 111 puis toutes les questions du 112, etc...)
Bien évidemment, les tableaux croisés sous Excel ne conviennent pas car je ne souhaite pas faire d'opérations d'agrégation. (Tous les tableurs imposent une opération d'agrégation)
Donc voilà, j'en appelle à vos impressions: il y aurait-il un moyen de gérer ça sous Talend. Si oui, quelles étapes (composants) seraient à envisager?
J'ai regardé et cherché sur les forums Talend, je pense que ça va tourner autour de quelques tMap; tNormalize ou un tPivot. Mais j'ai besoin d'aide pour structurer le problème sous Talend.
Merci pour votre aide
cyt35
Partager