Je vous avais présenté une démo sur cette architecture aux #MSCloudSummit voici donc le mode opératoire utilisé.
1 – Azure Logic App
Nous utiliserons Azure Logic App afin de récupérer nos Tweets afin de les intégrer dans un stockage Azure Blob.
Création de l’Azure Logic App depuis le portail azure
C’est assez vite provisionné, nous pouvons donc commencer à créer notre flux de récupération de Tweets.
Cela passera par le clic sur Edit depuis l’écran de notre Logic App nouvellement créée.
L’Interface nous propose d’utiliser un Template déjà crée, malheureusement pas de Template Twitter vers Azure Blob Storage, je choisis donc « Blank LogicApp »
La création de notre worklow démarre, nous allons choisir Twitter, la liste exhaustive des API est disponible ici => https://docs.microsoft.com/fr-fr/azure/connectors/apis-list
On note directement qu’il y a un nombre important de connecteurs, et que l’interface est relativement agréable à utiliser !
Composant Twitter en main, nous allons connecter notre compte :
Nous configurons le déclencheur pour observer le texte « Mélenchon » toutes les 15 secondes.
Nous devons maintenant définir que faire de ces tweets capturés toutes les 15 secondes, nous choisissons de les stocker en Azure Blob Storage car cela est très économique et que nous n’aurons pas de très forts accès concurrents qui auraient pu nécessiter un event hub.
Je configure les informations de connexion à mon azure blob storage
Nous pouvons maintenant choisir les valeurs à intégrer dans nos fichiers, j’ai choisi de créer un JSON avec les informations d’image de profil, de lieu de provenance, nom d’utilisateur et texte du tweet. Mais de nombreux autres champs sont disponibles comme on peut le constater sur l’écran de droite.
Vous noterez deux choses :
1 – Le nom du blob qui est variabilisé afin de mettre celui-ci dans des dossiers Année/Mois/Jour/HH ce qui nous permettra d’améliorer les performances de stream analytics.
@{utcnow('yyyy/MM/dd')}/@{utcnow('HH')}/@{triggerBody()?['TweetId']}
2 – Nous constituons un fichier JSON avec les informations que nous voulons récupérer
"body": [ { "OriginalTweetUserId": "@{triggerBody()?['OriginalTweet']?['UserDetails']?['Id']}", "favoritesCount": "@{triggerBody()?['UserDetails']?['FavouritesCount']}", "friendsCount": "@{triggerBody()?['UserDetails']?['FriendsCount']}", "img": "@{triggerBody()?['UserDetails']?['ProfileImageUrl']}", "location": "@{triggerBody()?['UserDetails']?['Location']}", "name": "@{triggerBody()?['UserDetails']?['UserName']}", "originalTweetUserName": "@{triggerBody()?['OriginalTweet']?['UserDetails']?['UserName']}", "text": "@{triggerBody()?['TweetText']}", "userId": "@{triggerBody()?['UserDetails']?['Id']}" } ],
Notre configuration terminée, nous pouvons lancer le flux.
L’action se déclenche bien, nous pouvons aussi vérifier que cela génère bien des blobs dans notre stockage.
2 – Stream Analytics
Commençons par créer une ressource Stream Analytics
Ceci fait, il nous faut créer, une entrée (nos fichiers JSON), une requête (ce que l’on veut présenter) et une sortie (PowerBi).
Input :
Vous noterez que c’est ici que je spécifie le pattern de mon chemin dans blob storage {date}/{time} ce qui va permettre à StreamAnalytics de ne pas repasser sur les fichiers déjà traités durant les heures passées.
Query :
Afin de me simplifier la vie dans powerbi, j’ai changé la requête par la suivante :
SELECT [OriginalTweetUserId] ,[originalTweetUserName] ,[userId] ,[name] ,[location] , ,[img] ,CAST([friendsCount] AS BIGINT) AS friendsCount ,CAST([favoritesCount] AS BIGINT) AS favoritesCount INTO [outputTiter] FROM [titerJson]
Output:
Il ne nous reste plus qu’à lancer le job et monitorer les chargements :
Validons aussi que le dataset est bien disponible sur PowerBi.com
Et c’est bien le cas…
Vous noterez une différence entre mon dataset des MSCloudSummit et celui que je viens de créer (Accès aux API Hybrides) j’en parlerai dans un prochain billet.
3 – PowerBi
Il est maintenant possible depuis notre jeu de données de créer le rapport souhaité, je vous propose celui-ci:
A venir, l’ajout d’analyse de sentiments comme vous pouvez le voir dans le second onglet du rapport ci-dessus !
One comment
[…] la suite de l’article suivant, j’ai voulu ajouter une analyse de sentiments de mes Tweets, voici la […]