-
Notifications
You must be signed in to change notification settings - Fork 0
3. Etapes du projet
Étapes - jobs
0 Connexion api twitter
L’api de twitter -version gratuite- permet la récupération des tweets juste des 7 derniers jours et de 200 tweets. Le méthode d'authentification est en utilisant un token d'accès qui est donné après avoir s’inscrit comme développer twitter. Les tweets qui nous avons récupéré sont lesquels contenaient comment hashtags les nom des app COVID.[1]
Les composants utilisés ont été tRestClient (connexion à api rest twitter), tmap (pour récupérer juste les champs qui nous intéressent comment localisation, date, user, text…) et tFileOutputJson.
S0. Récupération des tweets liés aux app covid
1 Téléchargement des tweets dedans de la base de données
Après d’avoir sauvegardé les réponses de l’api twitter en fichiers json pendant 25 jours, nous procédons à centraliser cet information dedans la bdd talend dans la table all_tweets, pour cet action nous avons utilisés les suivants composants : tFileList (afin de boucler dans le répertoire où nous avons sauvegardé les fichiers json), tFileInputJson, tMap (mappear et transformer les attributes qui nous intéressant), tUniqueRow (nous avons trouvé que l’enregistrement de chaque jour des tweets pouvait avoir des tweets répétés puisque sont les 200 derniers, et si dans 2 jours personne publié des tweets donc nous allons recevoir 2 fois les mêmes tweets)
S1 Téléchargement des tweets dedans de la base de données
2 Téléchargement des dimension dans le dw
Dans cette étape nous avons construit le DW à partir des données stockées dans la table all_tweets. Nous avons identifié 5 dimensions : dim_user, dim_text, dim_country, dim_hashtag, dim_date.
Modele dw twitter
La charge des données dans les dimensions à été faite en utilisant les composants: tDbInput (pour lire de la table all_tweets), tMap, tUniqueRow, tDbOuput (pour écrire dans les tables des dimensions).
S2 Téléchargement des dimension dans le dw
3 Téléchargement des autres données dans dw
Dans cette étape nous voudrions conserver des informations plus détaillées sur les hashtags et les régions d'origine des tweets. Ici, nous avons procédé de la même manière que l'étape dernière, la différence est dans le tMap où nous avons choisi les attributs qui nous intéressent.
S3 Téléchargement des données dans le dw
4 Calcul des mesures
Après avoir chargé les données dans les tables de dimensions, nous allons faire la procédure pour calculer les mesures. Dans la table suivante se trouve la requête employée pour chaque mesure.
Mesure Description sql no_ht Nombre de hashtags par date et pays "select to_char(d.date,'dd-MM-yyyy') as date,d.hashtag as hashtag,d.country as country, count(distinct d.id) as no_ht from all_tweets d group by d.date, d.hashtag,d.country order by d.date asc;" no_regions Nombre de regions "select to_char(d.date,'dd-MM-yyyy') as date,d.hashtag as hashtag,d.country as country,count(distinct d.geo) as no_regions from all_tweets d group by d.date, d.hashtag,d.country order by d.date asc;" no_users Nombre de usagers "select to_char(d.date,'dd-MM-yyyy') as date,d.hashtag as hashtag,d.country as country,count(distinct d.user_id) as no_users from all_tweets d group by d.date, d.hashtag,d.country order by d.date asc;"
Les composants utilisés sont : tDbInput (pour faire les requêtes respectives à chacune des mesures), tFileDelimitedOutput.
S4 Calcul des mesures
**5 Calcul de sentiments **
Dans cette étape, nous avons calculé les sentiments liés aux tweets avec hashtags #tousAntiCovid, #coronaWarnApp et #NHScovid19. Initialement, nous récupérons l’attribut “text” de chaque tweet et nous faisons des traitement sur chaque tweet comme : supprimer les caractères étranges, split entre ses mots, supprimer les mots null), après nous comparons chaque mot avec notre dictionnaire de sentiments qui va permettre de donner une poid à chaque mot, ensuite nous groupons chaque mot pour l’id de son tweet et pour finaliser nous sommons les values.
Les composant utilisés sont : tReplace (supprimer des character étranges), tNormalize (pour splitter chaque tweet entre les mots qui le composent), tFilterRow (filtrer des lignes nulls), tmap (pour faire le join entre le mot et notre dictionnaire de sentiments et récupérer son poid, par exemple poid > 0 est un sentiment de soutien et poid <0 sentiment de rejet, tAggregateRow (calcul le poid global du tweet à partir de poid de ses mots en groupant les mots selon le tweet auquel ils appartiennent), tFileDelimitedOutput.
S5 Calcul des sentiments
6 Téléchargement des mesures dedans le dw
Finalement, nous chargeons toutes les mesures dans la table de fait. Les composant utilisés sont :
tFileDelimitedInput, tDbOutput (pour écrire les mesures dans la table fait_tweet.
S6 Téléchargement des mesures dans la table de fait
7 Workflow final pour le projet in talend
Dans ce dernier job, nous avons créé le flux de travail pour le projet de manière tel que :
jobS0 -> jobS1 -> jobS2 -> jobS3 -> jobS4-> jobS5 -> jobS6
Il faut mentionner que le contexte est complètement transmis entre tous les job parents vers les jobs enfants, donc les paramètres de contexte pour la connexion à la bdd talend en postgres et le path du répertoire de travail pour sauvegarder les fichier produit sont le même dans chaque job.
S7 WorkFlow final