Vélib & Cortana Analytics – Première partie

 

1 - Introduction

L’équipe SQL/BI de Microsoft Customer Support Services a initié un projet interne d’analyse en temps réel des stations Vélib Parisien. J’ai rejoint l’équipe constituée de Yassine Khelifi, Didier Simon, Émilie Beau et Mathias Ekizian afin de prendre en charge les services Azure Event Hubs, Stream Analytics et Data Factory. C’est à ce titre que je vais présenter en deux articles ces différents services de l’offre Cortana Analytics.

 

Lien vers le deuxieme article : Vélib & Cortana Analytics – Deuxième partie.

 

2 - Présentation du projet

Vélib est un service public à grande échelle de location de vélos sur la région parisienne en France. Lancé le 15 juillet 2007, le service propose aujourd’hui environ 14 500 vélos et 1230 stations sur Paris.

Grâce à la suite Azure Cortana Analytics Suite, nous allons mettre en place une solution d’analyse des données de ces Vélib de façon à répondre à 2 problématiques :

• Obtenir une analyse descriptive en temps réel du réseau Vélib
• Mettre à disposition une analyse prédictive permettant de prédire la disponibilité du nombre de vélos et de stations disponibles pour une station donnée.

Architecture :

ArchitectureVelibCortana

L’API utilisé est celle de JCDecaux : https://developer.jcdecaux.com/#/home

Voici à quoi ressemblent les données sources :

JCDecauxVelib

 

3 - Présentation du Cortana Analytics

Cortana Analytics est une suite de services intégralement gérée pour le Big Data et les analyses avancées permettant de transformer vos données en actions intelligentes.

CortanaAnalytics

CortanaAnalyticsSuite

Voici les différents services inclus dans Cortana Analytics :

CortanaActivity

Pour en apprendre davantage sur Cortana Analytics : aka.ms/cortanaanalyticsprocess

 

4 - Présentation de Event Hubs

Event Hubs est un récepteur d'événements fortement évolutifs de type publication-abonnement qui peut recevoir des millions d'événements par seconde afin de pouvoir traiter et analyser des quantités volumineuses de données. Dans la solution, nous utiliserons Event Hub pour ingérer les données collectées toutes les minutes de façon à les transmettre au Job Azure Stream Analytics.

EventHubs

La configuration des partitions permet de recevoir jusqu’à 1 million d’évènements par seconde.
L’envoi d’événements peut se faire soit en utilisant un HTTP POST ou via le protocole AMQP 1.0 (Advanced Message Queuing Protocol).

Pour plus d’information sur Event Hubs : https://azure.microsoft.com/en-us/services/event-hubs/

Un Worker Role transmet les données de l’API JCDecaux à l’Event Hubs suivant :
EventHubs_Velib

 

5 - Présentation de Stream Analytics

Azure Stream Analytics (ASA) est un service dans Azure qui permet de gérer des évènements en temps réel afin de récupérer des informations pertinentes sur des flux de données qui transitent en continu.

Stream Analytics permet de réaliser très simplement des requêtes d’analyse sur un flux de données qui proviennent de périphériques, de capteurs, de sites web, de médias sociaux, d’applications, de systèmes d’infrastructures, ou autre.

Un job Stream Analytics est défini par : une requête, une entrée, une sortie et depuis peu des Fonctions (en Preview).

Plus d’information sur Stream Analytics : https://azure.microsoft.com/en-us/documentation/articles/stream-analytics-introduction/

Dans la solution nous utiliserons Stream Analytics pour réaliser une architecture Lambda :

• Analyse descriptive en temps réel dans Power BI
• Stockage des données dans une base de données Azure pour l’analyse prédictive via Azure ML

ASA

Configuration du service ASA :

• Input : Event Hub précédemment créé
• Output : Power BI, Azure SQL Database
• Query : Récupération des données partitionnées par stationid

Exemple de la requête récupérant les premiers évènements reçus toutes les 5 minutes par stationid afin de les envoyer à Power BI :

SELECT ev.entrytime, ev.availablebikes, ev.availablebikesstands, ev.bikestands , ev.status, ev.stationid
into [PowerBIVelib]
FROM [eventhubsink] ev TIMESTAMP BY ev.entrytime
WHERE IsFirst(Minute, 5) OVER (PARTITION BY stationid) = 1;

Information sur la fonction « IsFirst » : https://msdn.microsoft.com/en-us/library/azure/dn966248.aspx

Création d'une Lambda architecture depuis Azure Stream Analytics :

AzureStreamAnalytics

 

6 - Conclusion

Dans cet article nous avons présenté la solution et la mise en place des services Azure Event Hubs, Stream Analytics et Data Factory.

 

Exemples de rapports Power BI Embedded :

 

 

Voici quelques exemples de l'intégration de Power BI avec Cortana, il suffit de lui poser une question !

PowerBI_Cortana

 

SQLSAT510Nous réalisons actuellement des vidéos sur la mise en place des différentes briques, elles seront publiées sur le site Microsoft Virtual Academy.

Nous participerons au prochain SQL Saturday Paris 2016 du Samedi 25 juin 2016, n'hésitez pas nous y retrouver !

Lien vers le deuxième article : https://blogs.msdn.microsoft.com/big_data_france/2016/03/29/velib-cortana-analytics-2/

 

Dans le prochain article, nous verrons comment créer une pipeline Azure Data Factory pour scheduler et ordonnancer les différents services Azure.

 

Lien vers le deuxieme article : Vélib & Cortana Analytics – Deuxième partie.