Documente Academic
Documente Profesional
Documente Cultură
CONSIGNE:
Bon courage
1
Data Transformation Manager
Définition
Une application de data transformation Y sert à transformer les données pour une application
destinataire X.
Transformer les données en masse sur l’application Y, aura comme fin utile de les corriger,
les regrouper et appliquer différentes opérations pour les rendre conforme et standard.
Une fois les différentes tâches réalisées, les données peuvent alors être visualiser pour
vérification des résultats.
Objectifs
L’application Y a pour objectif de transformer les données sur des process parallèle et non
séquentiel pour visualiser en fin du process les résultats sur un écran manipulable pour
vérification.
Contexte
L’application doit être sous forme d’une Web basée sur Spring Cloud.
Les données d’entrée seront des fichiers CSV contenant des données bien structurer :
Un header :
Première ligne du fichier contiendra les colonnes de la structure de données.
Un data block:
Les autres lignes du fichier seront les données de la structure.
Séparateur:
Le séparateur ne sera pas dynamique est sera toujours le point-virgule « ; ».
La lecture des données nécessitera au moins un écran pour import des fichiers.
Notre concours sera basé sur deux fichiers inputs.
2
Les transformations seront :
Select:
Group
Le grouping des données a pour objectif de grouper les lignes d’une structure selon
des critéres bien définis
Colonnes Numeric:
Sum
Avg
Min
Max
Count
First (first row)
Last (last row)
Colonnes Date:
Min (oldest date)
Max (latest date)
Count
First (first row)
Last (last row)
Colonnes text:
Min (by alphabetical order)
Max (by alphabetical order)
Count
3
First (first row)
Last (last row)
Les colonnes qui ne sont ni base du grouping ni à grouper ne feront pas partie de la structure
résultante.
Combine
Le combine est une transformation qui combine deux structures en se basant sur la
ressemblance d’une ou plusieures colonnes.
La structure résultante contiendra une partie des colonnes de chaque structure input.
L'entrée de cette transformation sera deux structures avec la liste des colonnes à
garder et puis les conditions de ressemblance de combinaison qui seront des
conditions tel que “str1.col1=str2.col2 AND str1.col3=str2.str2.col5”
4) Visualiser le résultat :
Une des fonctionalités les plus importantes est la visualisation des résultats des
transformations.
Le data transforming est un process qui a pour objectif de standardiser les données,
ce qui veut dire avoir des données de différentes sources, et donc une grande
quantité de données.
Dans les cas réel, les systêmes de transformation de données traitent des fichiers
d'environ 5 millions de lignes ou plus.
6) Utiliser Angular :
Angular est un framework trés puissant pour la gestion des interfaces et surtout les
Single Page Application.
4
Dans notre cas Angular doit être utiliser pour creation des interfaces et visualisation
des données.
Une des bibliothéques Angular permettant la gestion des tableaux est NgGrid.
Pour notre cas Consul doit être utiliser pour l'enregistrement des services et Traefik pour le
reverse proxy.
Un service proxy pour assurer l’orchestration des services doit être mis en place par l'équipe.
8) Méthodologie de test:
Les tests peuvent se faire, selon le choix de l’équipe, sous deux formes:
Interfaces:
Les tests sur interfaces imposent le dévelopement des interfaces dédiées pour chaque
microservice.
L'utilisation des outils de gestion des requêtes REST peut être utiliser pour tester les
microservices.
Postman peut être un des outils.
Le jeux de données peut être créer manuellement mais devera validé les conditions définient
sur le paragraphe lecture de fichiers csv.
Les transformations à éxécuter sur les données d'entrées peuvent être définis par l'équipe, mais
deverons valider les conditions suivantes:
Le schema doit contenir au moin une transformation par type défini sur le paragraphe
Executer les transformations (au moin 1 select 1 group et 1 combine)
Bien configurer les transformations pour donner un résultat fiable et couverant les
fonctionalitées définis pour chaque transformation.
5
Fonctionalitée bonus
Avoir un schéma de transformation qui s'éxécute de bout en bout est l'objectif de notre
application. Mais pour bien assurer la fiabilité et la maintenabilité de la solution une fonctionalité
de debug doit exister.
La fonctionalité de debug est une fonctionalité permetant de choisir une transformation sur le
schema et la definir comme un breakpoint.
Interconectivité:
Les transformations formant le schema doivent être bien connectés pour permettre la détection
des transformations qui impactent directement ou indirectement le résultat de notre breakpoint.
Avoir des transformations liées ne suffit pas, mais pour assurer le breakpoint, il faudra assurer
une analyse des liens pour pouvoir éxécuter uniquement les transformations nécessaire pour
avoir le résultat.
Une analyse des liens évitera l’éxécution des transformations qui n'ont aucun impact sur le
résultat attendu.
Cette analyse est faite pour assurer une grande performance d’éxécution et une optimisation
de ressources.