<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Big Data France</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/big_data_france/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/big_data_france/feed.xml</link>
    <description />
    <lastBuildDate>Tue, 16 Apr 2019 04:47:08 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Envie de vous former et/ou d’investir sur Azure HDInsight ?</title>
      <link>https://docs.microsoft.com/archive/blogs/big_data_france/envie-de-vous-former-etou-dinvestir-sur-azure-hdinsight</link>
      <pubDate>Sat, 23 Sep 2017 12:08:29 GMT</pubDate>
      <dc:creator><![CDATA[Philippe Beraud - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/big_data_france/?p=2555</guid>
      <description><![CDATA[Ce billet est la reprise en français du billet Azure HDInsight training resources – Learn about big...]]></description>
      <content:encoded><![CDATA[<p style="text-align: justify"><span style="font-family:Segoe UI;font-size:10pt">Ce billet est la reprise en français du billet <a href="https://azure.microsoft.com/blog/azure-hdinsight-training-resources-learn-about-big-data-using-open-source-technologies/">Azure HDInsight training resources – Learn about big data using open source technologies</a> de Bhanu Prakash publié du blog Microsoft Azure. Il nous semblait en effet important de partager cette synthèse des ressources disponibles sur le service Azure HD Insight.
</span></p><p style="text-align: justify"><span style="font-family:Segoe UI;font-size:10pt">Bonne lecture
</span></p><p style="text-align: justify">
 </p><p style="text-align: justify"><a href="https://azure.microsoft.com/fr-fr/services/hdinsight/"><span style="font-family:Segoe UI;font-size:10pt">Azure HDInsight</span></a><span style="font-family:Segoe UI;font-size:10pt"> est une offre de service cloud Hadoop et Spark qui vous permet de mettre en place des clusters d'analyse open source optimisés pour Spark, Hive, MapReduce, HBase, Storm, Kafka et Microsoft R Server garantis par un SLA de 99.9%
</span></p><p style="text-align: justify"><span style="font-family:Segoe UI;font-size:10pt">Nous avons reçu de nombreuses demandes quant à la disponibilité d'un guide détaillé sur HDInsight. Ce billet expose ainsi les grandes lignes de ce guide avec quelques autres conseils et ressources sur l'apprentissage du service HDInsight.
</span></p><h1>Guide du développeur HDInsight
</h1><p style="text-align: justify"><span style="font-family:Segoe UI;font-size:10pt">Nous avons reçu de nombreuses demandes de clients pour disposer d'une documentation détaillée sur HDInsight afin de concevoir, déployer, gérer, surveiller et sécuriser des solutions de mégadonnées (Big Data) dans des cas d'usage et scénarios impliquant de l'analyse avancée de données, du décisionnel (Business Intelligence ou BI), de l'ETL (Extract Transform Load), et bien d'autres.<br /><br />En bref, nombreux sont les clients à la recherche d'un guide détaillant en pas-à-pas les étapes pour déployer et opérer au quotidien une solution Big Data. Nous sommes heureux de vous annoncer la disponibilité du <a href="https://aka.ms/hdiguide">guide du développeur HDInsight</a>, un guide qui couvre les scénarios de base tout comme les scénarios avancés qui peuvent s'avérer utile pour tout développeur, scientifique de la donnée (data scientist) ou ingénieur de la donnée (data engineer) souhaitant démarrer sur le sujet ou approfondir leurs connaissances sur Azure HDInsight. Ce guide commence par une vue d'ensemble d'HD Insight et des cas d'utilisation, suivis de bonnes pratiques sur la configuration de cluster, la planification de la capacité, et le développement d'applications pour différentes charges de travail<em> (</em>workload<em>)</em> comme Hive, Spark, et l'optimisation de celles-ci. Le guide conclut enfin sur des cas d'usage et des scénarios avancés accompagnés d'exemples.
</span></p><h2>Table des matières du Guide du développeur HDInsight
</h2><p style="text-align: justify"><span style="font-family:Segoe UI;font-size:10pt">Vous trouverez ci-après une version courte de la table des matières. Cela peut vous donner une bonne idée de ce que vous pouvez attendre de ce guide (en anglais) :
</span></p><ul><li><div style="text-align: justify"><span style="font-family:Segoe UI;font-size:10pt">Vue d'ensemble
</span></div></li><li><div style="text-align: justify"><span style="font-family:Segoe UI;font-size:10pt">Architecture Hadoop et Azure HDInsight
</span></div><ul><li><div style="text-align: justify"><span style="font-family:Segoe UI;font-size:10pt">Configurer le cluster
</span></div></li><li><div style="text-align: justify"><span style="font-family:Segoe UI;font-size:10pt">Configurer les identités et les contrôles d'accès
</span></div></li><li><div style="text-align: justify"><span style="font-family:Segoe UI;font-size:10pt">Surveiller et gérer le cluster HDInsight
</span></div></li></ul></li><li><div style="text-align: justify"><span style="font-family:Segoe UI;font-size:10pt">Développer des applications Hive
</span></div></li><li><div style="text-align: justify"><span style="font-family:Segoe UI;font-size:10pt">Développer des applications Spark
</span></div><ul><li><div style="text-align: justify"><span style="font-family:Segoe UI;font-size:10pt">Utiliser Spark avec les blocs-notes
</span></div></li><li><div style="text-align: justify"><span style="font-family:Segoe UI;font-size:10pt">Utiliser Spark avec IntelliJ
</span></div></li><li><div style="text-align: justify"><span style="font-family:Segoe UI;font-size:10pt">Exemples avec Spark
</span></div></li></ul></li><li><div style="text-align: justify"><span style="font-family:Segoe UI;font-size:10pt">Développer des applications Spark ML
</span></div></li><li><div style="text-align: justify"><span style="font-family:Segoe UI;font-size:10pt">Deep Learning avec Spark
</span></div></li><li><div style="text-align: justify"><span style="font-family:Segoe UI;font-size:10pt">Développer des scripts R sur HDInsight
</span></div></li><li><div style="text-align: justify"><span style="font-family:Segoe UI;font-size:10pt">Développer des applications Spark Streaming
</span></div></li><li><div style="text-align: justify"><span style="font-family:Segoe UI;font-size:10pt">Optimiser Spark Performance
</span></div></li><li><div style="text-align: justify"><span style="font-family:Segoe UI;font-size:10pt">Utiliser HBase
</span></div><ul><li><div style="text-align: justify"><span style="font-family:Segoe UI;font-size:10pt">Utiliser Phoenix avec HBase sur HDInsight
</span></div></li></ul></li><li><div style="text-align: justify"><span style="font-family:Segoe UI;font-size:10pt">L'écosystème Open Source Apache
</span></div></li><li><div style="text-align: justify"><span style="font-family:Segoe UI;font-size:10pt">Scénarios avancés et approfondissements
</span></div></li><li><div style="text-align: justify"><span style="font-family:Segoe UI;font-size:10pt">Résolution de problèmes
</span></div></li></ul><h1>Ressources de formation HDInsight
</h1><p>En complément de ce guide, nous tenons également à souligner les autres ressources disponibles pour monter en compétences ou approfondir ses connaissances sur HDInsight. Vous trouverez ainsi ci-après les différentes ressources de formation disponibles pour HDInsight ; ce qui comprend de l'auto-formation en ligne, de la documentation, des vidéos, etc.
</p><h2>Auto-formation en ligne
</h2><ul><li><div style="text-align: justify"><span style="font-family:Segoe UI;font-size:10pt">Auto-formation sur <a href="https://www.edx.org/">edX</a>, une plateforme de formation en ligne, qui offre des contenus de qualité provenant des meilleures universités et institutions du monde. Les formations listées ci-dessous sont disponibles à travers le programme <a href="https://academy.microsoft.com/en-us/professional-program/big-data/" target="_blank" /></span>Microsoft Professional Program for Big Data<span style="font-family:Segoe UI;font-size:10pt"> accessible gratuitement ou avec l'ajout d'un certificat vérifié pour un coût additionnel.
</span></div><ul><li><div style="text-align: justify"><a href="https://www.edx.org/course/processing-big-data-hadoop-azure-microsoft-dat202-1x-2">Processing Big Data in Azure HDInsight</a><span style="font-family:Segoe UI;font-size:10pt"> (en anglais) : ce cours vous montre comment utiliser les technologies Hadoop dans Microsoft Azure HDInsight pour concevoir des solutions de traitement par lots qui purifie et remanie vos données pour de futures analyses.
</span></div></li><li><div style="text-align: justify"><a href="https://www.edx.org/course/implementing-real-time-analytics-hadoop-microsoft-dat202-2x-2"><span style="font-family:Segoe UI;font-size:10pt">Implementing Real Time Analytics in Azure HDInsight</span></a><span style="font-family:Segoe UI;font-size:10pt"> (en anglais) : Dans ce cours, vous apprendrez comment implémenter des solutions de mégadonnées de streaming et à faible latence en utilisant des technologies Hadoop comme HBase, Storm et Spark sur Microsoft Azure HDInsight.
</span></div></li><li><div style="text-align: justify"><a href="https://www.edx.org/course/implementing-predictive-analytics-spark-microsoft-dat202-3x-1"><span style="font-family:Segoe UI;font-size:10pt">Implementing Predictive Analytics in Azure HDInsight</span></a><span style="font-family:Segoe UI;font-size:10pt"> (en anglais) : Dans ce cours, vous apprendrez comment implémenter des solutions d'analyse prédictive pour les mégadonnées à l'aide d'Apache Spark dans Microsoft Azure HDInsight
</span></div></li></ul></li><li><div style="text-align: justify"><span style="font-family:Segoe UI;font-size:10pt">Des formations en ligne gratuites sur Microsoft Virtual Academy, qui vous donnent accès à des contenus issus d'experts reconnus mondialement pour vous aider à développer vos compétences techniques et à avancer dans votre carrière. Prêt(e) pour continuer votre plongée dans les mégadonnées ? Ci-dessous, vous trouverez des cours pour explorer les possibilités d'Hadoop et de Spark sur HDInsight, des parties essentielles pour la partie Analytique de la série « <a href="https://mva.microsoft.com/search/SearchResults.aspx">MVA Data Series</a> ».
</span></div><ul><li><a href="https://mva.microsoft.com/en-US/training-courses/data-series-analytics-big-data-hadoop-on-hdinsight-17815?l=wAOL0sf9D_4711787171" target="_blank"><span style="font-family:Segoe UI;font-size:10pt">Hadoop sur HDInsight</span></a><span style="font-family:Segoe UI;font-size:10pt">  (en anglais)
</span></li><li><a href="https://mva.microsoft.com/en-US/training-courses/data-series-analytics-big-data-spark-on-hdinsight-17760?l=wVyEnEn4D_2611787171" target="_blank"><span style="font-family:Segoe UI;font-size:10pt">Spark sur HDInsight</span></a><span style="font-family:Segoe UI;font-size:10pt">  (en anglais)
</span></li></ul></li></ul><h2> Documentation
</h2><ul><li><div style="text-align: justify"><a href="https://docs.microsoft.com/fr-fr/azure/hdinsight/"><span style="font-family:Segoe UI;font-size:10pt">Documentation HDInsight</span></a><span style="font-family:Segoe UI;font-size:10pt"> : page d'accueil de la documentation HDInsight à destination de tout développeur, scientifique de la données ou administrateur de solutions de mégadonnées. Cette documentation forte de plus de 1385 pages intègre toutes les sections du traditionnel « Démarrer avec » aux sujets spécifiques sur des cas d'usage et des scénarios avancés avec HDInsight. Vous pouvez télécharger l'intégralité de cette documentation à l'aide de l'option « Télécharger comme PDF » située dans le coin inférieur gauche de la page ou rechercher des articles donnés avec le champ de recherche situé en haut à gauche.
</span></div></li><li><div style="text-align: justify"><a href="https://hdinsight.github.io/"><span style="font-family:Segoe UI;font-size:10pt">Guide de dépannage d'HDInsight</span></a><span style="font-family:Segoe UI;font-size:10pt"> (en anglais) : Microsoft met constamment à jour de guide de dépannage pour que vous puissiez (plus) facilement déboguer ou diagnostiquer les problèmes que vous pouvez rencontrer.
</span></div></li></ul><h2>Vidéos
</h2><ul><li><div style="text-align: justify"><a href="https://azure.microsoft.com/en-us/resources/videos/index/?services=hdinsight"><span style="font-family:Segoe UI;font-size:10pt">Vidéos HDInsight</span></a><span style="font-family:Segoe UI;font-size:10pt"> : En complément des ressources précédentes, vous pouvez aussi retrouver des vidéos sur les plateformes <a href="https://channel9.msdn.com/Search?term=HDInsight">Channel 9</a> ou <a href="https://www.youtube.com/channel/UCioCyOxwV4nY-JHYZuZUXtg">YouTube</a>.
</span></div></li></ul><p style="text-align: justify"><span style="font-family:Segoe UI;font-size:10pt">Les vidéos suivantes constituent un bon point de départ pour disposer d'un aperçu du périmètre et des fonctionnalités d'HDInsight :
</span></p><ul><li><span style="font-family:Segoe UI;font-size:10pt">Approfondissement sur l'optimisation des performances d'Apache Spark sur HDInsight : <a href="https://channel9.msdn.com/Shows/Data-Exposed/Spark-Performance-Series-1-with-Maxim-Lukiyanov" target="_blank">Part 1</a>, <a href="https://channel9.msdn.com/Shows/Data-Exposed/Spark-Performance-Tuning-Part-2" target="_blank">Part 2</a>, <a href="https://channel9.msdn.com/Shows/Data-Exposed/Spark-Performance-Tuning-Part-3" target="_blank">Part 3</a>, et <a href="https://channel9.msdn.com/Shows/Data-Exposed/Spark-Performance-Tuning-Part-4" target="_blank">Part 4</a>
			</span></li><li><a href="https://channel9.msdn.com/Shows/Data-Exposed/Optimizing-HBase-Performance-in-HDInsight" target="_blank"><span style="font-family:Segoe UI;font-size:10pt">Optimizing HBase Performance in HDInsight</span></a><span style="font-family:Segoe UI;font-size:10pt">
			</span></li><li><a href="https://azure.microsoft.com/en-us/resources/videos/introducing-apache-kafka-on-azure-hdinsight/" target="_blank"><span style="font-family:Segoe UI;font-size:10pt">Apache Kafka on Azure HDInsight</span></a><span style="font-family:Segoe UI;font-size:10pt">
			</span></li><li><a href="https://channel9.msdn.com/Shows/Data-Exposed/HDInsight-Compliance" target="_blank"><span style="font-family:Segoe UI;font-size:10pt">Compliance Standards on HDInsight</span></a><span style="font-family:Segoe UI;font-size:10pt">
			</span></li><li><a href="https://channel9.msdn.com/Shows/Data-Exposed/Securing-Azure-HDInsight" target="_blank"><span style="font-family:Segoe UI;font-size:10pt">Securing Azure HDInsight</span></a><span style="font-family:Segoe UI;font-size:10pt">
			</span></li><li><a href="https://channel9.msdn.com/Shows/Data-Exposed/Big-Data-Partner-Program" target="_blank"><span style="font-family:Segoe UI;font-size:10pt">Big Data Partner Program</span></a><span style="font-family:Segoe UI;font-size:10pt">
			</span></li></ul><h2>Webcasts à la demande de conférences 2016-17 (en anglais)
</h2><h3>Ignite
</h3><ul><li><a href="https://channel9.msdn.com/Events/Ignite/2016/BRK3248" target="_blank"><span style="font-family:Segoe UI;font-size:10pt">Build successful Big Data infrastructure using Azure HDInsight</span></a><span style="font-family:Segoe UI;font-size:10pt">
			</span></li><li><a href="https://channel9.msdn.com/Events/Ignite/2016/BRK3186" target="_blank"><span style="font-family:Segoe UI;font-size:10pt">Secure your Enterprise Hadoop environments on Azure</span></a><span style="font-family:Segoe UI;font-size:10pt">
			</span></li><li><a href="https://channel9.msdn.com/Events/Ignite/2016/BRK3184" target="_blank"><span style="font-family:Segoe UI;font-size:10pt">Explore Spark 2.0 and structured streaming in Microsoft Azure HDInsight</span></a><span style="font-family:Segoe UI;font-size:10pt">
			</span></li><li><a href="https://channel9.msdn.com/Events/Ignite/2016/BRK3183" target="_blank"><span style="font-family:Segoe UI;font-size:10pt">Leverage R and Spark in Azure HDInsight for scalable machine learning</span></a><span style="font-family:Segoe UI;font-size:10pt">
			</span></li><li><a href="https://channel9.msdn.com/Events/Ignite/2016/BRK2222" target="_blank"><span style="font-family:Segoe UI;font-size:10pt">Establish modern data ethos with Big Data on Microsoft Azure</span></a><span style="font-family:Segoe UI;font-size:10pt">
			</span></li></ul><h3> Strata
</h3><ul><li><a href="https://www.youtube.com/watch?v=S9UKM4HL6fc&amp;list=PL055Epbe6d5ZsQVJRV2FQQvsgDt0Ci5Zy&amp;index=9" target="_blank"><span style="font-family:Segoe UI;font-size:10pt">Big data, AI, the genome, and everything</span></a><span style="font-family:Segoe UI;font-size:10pt">
			</span></li><li><a href="https://www.safaribooksonline.com/library/view/strata-hadoop/9781491976166/video302365.html" target="_blank"><span style="font-family:Segoe UI;font-size:10pt">Spark at Scale in Bing</span></a><span style="font-family:Segoe UI;font-size:10pt">
			</span></li><li><a href="https://www.safaribooksonline.com/library/view/strata-hadoop/9781491976166/video301649.html" target="_blank"><span style="font-family:Segoe UI;font-size:10pt">Using Big Data, Cloud and AI to Enable Intelligence at Scale</span></a><span style="font-family:Segoe UI;font-size:10pt">
			</span></li></ul><h3> Hadoop Summit
</h3><ul><li><a href="https://www.youtube.com/watch?v=ol00fixCeDw" target="_blank"><span style="font-family:Segoe UI;font-size:10pt">Build Big Data Enterprise solutions faster on Azure HDInsight</span></a><span style="font-family:Segoe UI;font-size:10pt">
			</span></li><li><a href="https://www.youtube.com/watch?v=sP050P-4Wcs" target="_blank"><span style="font-family:Segoe UI;font-size:10pt">Big Data in the Cloud</span></a><span style="font-family:Segoe UI;font-size:10pt">
			</span></li><li><a href="https://www.youtube.com/watch?v=BET2xn2m6zA" target="_blank"><span style="font-family:Segoe UI;font-size:10pt">Big Data Application Architectures IoT</span></a><span style="font-family:Segoe UI;font-size:10pt">
			</span></li></ul><h3> //build
</h3><ul><li><a href="https://channel9.msdn.com/Events/Build/2017/T6017" target="_blank"><span style="font-family:Segoe UI;font-size:10pt">Tap into the YARN Ecosystem with HDInsight</span></a><span style="font-family:Segoe UI;font-size:10pt">
			</span></li></ul><h2> Ateliers pratiques (hands on labs)
</h2><ul><li><div style="text-align: justify"><a href="https://github.com/Microsoft/code-challenges/tree/master/Labs/Azure%20HDInsight/DataScienceLab" target="_blank"><span style="font-family:Segoe UI;font-size:10pt">Atelier Science de la donnée</span></a><span style="font-family:Segoe UI;font-size:10pt"> (en anglais) : cet atelier illustre spécifiquement sur le composant Spark ML dans Spark et mets l'accent sur sa proposition de valeur au sein du Framework de traitement de mégadonnées Apache Spark. 
</span></div></li><li><div style="text-align: justify"><a href="https://github.com/Microsoft/code-challenges/tree/master/Labs/Azure%20HDInsight/HiveLab" target="_blank"><span style="font-family:Segoe UI;font-size:10pt">Atelier Hive</span></a><span style="font-family:Segoe UI;font-size:10pt"> (en anglais) : cet atelier illustre comment vous pouvez tirer profit d'HDInsight Hive pour analyser des mégadonnées stockées dans Azure Blob Storage.
</span></div></li></ul><h2>Acquérir une certification Microsoft sur HDInsight
</h2><ul><li><a href="https://www.microsoft.com/en-us/learning/exam-70-775.aspx" target="_blank"><span style="font-family:Segoe UI;font-size:10pt">Perform Data Engineering on Microsoft Azure HDInsight</span></a><span style="font-family:Segoe UI;font-size:10pt">
			</span></li><li><a href="https://www.microsoft.com/en-us/learning/exam-70-475.aspx" target="_blank"><span style="font-family:Segoe UI;font-size:10pt">Designing and Implementing Big Data Analytics Solutions</span></a><span style="font-family:Segoe UI;font-size:10pt">
			</span></li></ul><h2> Ressources
</h2><ul><li><a href="https://azure.microsoft.com/en-us/training/"><span style="font-family:Segoe UI;font-size:10pt">Training to build expertise in Azure</span></a><span style="font-family:Segoe UI;font-size:10pt">
			</span></li><li><a href="https://azure.microsoft.com/en-us/documentation/learning-paths/hdinsight-self-guided-hadoop-training/" target="_blank"><span style="font-family:Segoe UI;font-size:10pt">Learning path on HDInsight</span></a><span style="font-family:Segoe UI;font-size:10pt">
			</span></li></ul><p style="text-align: justify">
 </p><p style="text-align: justify"><span style="font-family:Segoe UI;font-size:10pt">Nous espérons que vous trouverez le guide du développeur et l'ensemble de ces autres ressources utiles. Si vous avez des questions ou des retours d'expérience, n'hésitez pas à envoyer un courriel à l'adresse <a href="mailto:hdiask@microsoft.com">hdiask@microsoft.com</a> (en anglais).
</span></p><p style="text-align: justify">
 </p><p style="text-align: justify"><span style="font-family:Segoe UI;font-size:10pt">Ceci conclut la reprise de ce billet de ressources. Nous vous souhaitons une bonne lecture ou un bon visionnage de ces différentes ressources sur Azure HDInsight en espérant que ceci vous aide dans votre quotidien.
</span></p>]]></content:encoded>
    </item>
    <item>
      <title>Le Machine Learning avec Spark grâce à HDInsight – 3ième partie</title>
      <link>https://docs.microsoft.com/archive/blogs/big_data_france/le-machine-learning-avec-spark-grace-a-hdinsight-3ieme-partie</link>
      <pubDate>Thu, 27 Jul 2017 16:20:00 GMT</pubDate>
      <dc:creator><![CDATA[Philippe Beraud - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/big_data_france/?p=2447</guid>
      <description><![CDATA[La toute nouvelle sortie de la bibliothèque Microsoft Machine Learning pour Apache Spark...]]></description>
      <content:encoded><![CDATA[<p><a href="https://github.com/Azure/mmlspark"><img src="https://msdnshared.blob.core.windows.net/media/2017/07/072717_1623_LeMachineLe1.png" alt="" border="0" /></a>
	</p><p>La toute nouvelle sortie de la bibliothèque <strong>Microsoft Machine Learning pour Apache Spark</strong> (MMLSpark) est l'occasion de revenir sur ce billet de Machine Learning avec HDInsight à travers un regard neuf.  
</p><p>Rappelez-vous, dans les deux premières parties du billet <a href="https://blogs.msdn.microsoft.com/big_data_france/2017/06/14/le-machine-learning-avec-spark-grace-a-hdinsight-1ere-partie/">ici</a> et <a href="https://blogs.msdn.microsoft.com/big_data_france/2017/06/14/le-machine-learning-avec-spark-grace-a-hdinsight-2nde-partie/">ici</a>, nous avions déployé un cluster Apache Spark sur Azure HDInsight pour y mettre en place un modèle d'apprentissage automatique (Machine Learning) pour un problème de classement (classification).
</p><p><span style="color:#333333;font-family:Segoe UI;font-size:10pt">J'en profite pour remercier très sincèrement Anaig Maréchal actuellement en stage au sein de l'équipe pour cette contribution ;-)</span>
	</p><h1>Microsoft Machine Learning pour Apache Spark
</h1><p>Microsoft Machine Learning Spark est un projet en Open Source disponible sur la forge communautaire <a href="https://github.com/Azure/mmlspark">GitHub</a>. Cette bibliothèque Python fournit des outils de Machine Learning et Deep Learning qui permettent aux scientifiques des données (Data Scientists) de gagner en performance sur Spark. 
</p><p>En effet, si Spark est un allié de poids pour créer des modèles de Machine Learning évolutifs (scalable), nous avons vu dans les deux premières parties que l'API SparkML présente néanmoins quelques contraintes dues à son assez bas niveau. 
</p><p>Ainsi, nous avions notamment évoqué la nécessité i) de créer des pipelines pour éviter les redondances dans le code, ii) de transformer les variables catégoriques sous forme numérique ou encore iii) de rassembler les prédicteurs du modèle dans un vecteur. 
</p><p>Toutes ces opérations peuvent être simplifiées avec MMLSpark, qui encapsule des requêtes APIs Scala, ce qui permet aux Data Scientists de se concentrer sur l'aspect Machine Learning de leur projet tout en gardant les performances natives de la JVM.
</p><p>MMLSpark propose donc des APIs simplifiées qui prennent directement <strong>tout type de données</strong> en paramètre, sous un format indépendant de l'algorithme. Celles-ci permettent de plus d'intégrer et utiliser très facilement les algorithmes de <strong>Deep Learning </strong>du kit en Open Source <a href="https://www.microsoft.com/en-us/cognitive-toolkit/">Microsoft Cognitive Toolkit</a> (anciennement CNTK) disponible sur la forge <a href="https://github.com/Microsoft/CNTK">GitHub</a>, avec des modèles pré-entraînés ou non, ainsi que d'accélérer le traitement en utilisant un <strong>GPU</strong>. 
</p><h1>Utiliser MMLSpark 
</h1><h2>En local
</h2><p>Pour installer MMLSpark en local, utilisez <a href="https://www.docker.com/">Docker</a> depuis un terminal grâce à la commande :  
</p><p><span style="font-size:10pt"><em>docker run -it -p 8888:8888 -e ACCEPT_EULA=yes microsoft/mmlspark
</em></span></p><p>Pour retrouver un notebook Jupyter d'exemple ou créer un nouveau notebook, on peut alors se rendre à l'adresse : <a href="http://localhost:8888/tree">http://localhost:8888/tree</a>?
</p><h2>Avec HDInsight
</h2><p>Il est possible d'installer MMLSpark sur un cluster Linux HDInsight déjà existant. Pour cela, il faut exécuter un script sur le nœud maître (head) et les nœuds esclaves (worker).
</p><p>Dans la section « Aperçu » (Overview) de la page du cluster, rendez-vous dans l'onglet « Script actions » de la configuration. Cliquez alors sur « Submit new » et renseignez : 
</p><p><strong>Script type</strong> : - Custom
</p><p><strong>Name</strong> : Install MSML
</p><p><strong>Bash script URI</strong> : <a href="https://mmlspark.azureedge.net/buildartifacts/0.5/install-mmlspark.sh"><span style="font-family:Arial">https://mmlspark.azureedge.net/buildartifacts/0.5/install-mmlspark.sh</span></a>
	</p><p><strong>Node type(s)</strong> : Head &amp; Worker
</p><p>Persist this script action to rerun when new nodes are added to the cluster
</p><p>
 </p><p style="text-align: center"><img src="https://msdnshared.blob.core.windows.net/media/2017/07/072717_1623_LeMachineLe2.png" alt="" />
	</p><p style="text-align: center"><img src="https://msdnshared.blob.core.windows.net/media/2017/07/072717_1623_LeMachineLe3.png" alt="" />
	</p><p>Une fois le script lancé, le cluster met une dizaine de minutes à se configurer. 
</p><p>La bibliothèque peut ensuite être installée de façon classique sous forme de package Spark : 
</p><p><em>import mmlspark
</em></p><p>Notez que MMLSpark nécessite Scala 2.11+, Spark 2.1+ et Python 2.7 ou Python 3.5+. 
</p><h2>Une expérience simplifiée 
</h2><p>Reprenons notre exemple d'apprentissage automatique sur les données de revenus d'adultes américains. 
</p><p style="text-align: center"><img src="https://msdnshared.blob.core.windows.net/media/2017/07/072717_1623_LeMachineLe4.png" alt="" />
	</p><p>Nous avons toujours des données nettoyées sous la forme d'un data frame de 32537 lignes et de 9 prédicteurs sélectionnés. « Income » est la variable à prédire, qui indique si un individu gagne plus ou moins que $50K. 
</p><p>Les données ont été séparées en un ensemble d'apprentissage nommé « train » et un ensemble de test « test », représentant respectivement 70% et 30% du total. 
</p><p><img src="https://msdnshared.blob.core.windows.net/media/2017/07/072717_1623_LeMachineLe5.png" alt="" />
	</p><p>Comme lors de l'exemple précédent, on choisit d'appliquer le modèle des arbres de décision. Les données sont automatiquement converties dans le format convenant à l'algorithme : les variables catégoriques sont encodées et les prédicteurs sont rassemblés dans un vecteur. 
</p><p><img src="https://msdnshared.blob.core.windows.net/media/2017/07/072717_1623_LeMachineLe6.png" alt="" />
	</p><p>Le modèle a finalement une performance similaire à celle obtenue en utilisant SparkML seul, avec une précision d'environ 85%. Le nombre de lignes de code a cependant été significativement réduit. 
</p><h1>En guise de conclusion
</h1><p>MMLSpark permet donc d'utiliser la puissance de calcul de Spark en Machine Learning avec des APIs plus haut niveau que SparkML. De nombreux algorithmes de Machine Learning et Deep Learning sont ainsi disponibles de façon simplifiée, incluant notamment <a href="https://www.microsoft.com/en-us/cognitive-toolkit/">Microsoft Cognitive Toolkit</a> (CNTK) et OpenCV. 
</p><p>Pour vous lancer, n'hésitez pas à consulter la <a href="http://azuremlbuild.blob.core.windows.net/pysparkapi/index.html">documentation</a> complète !</p>]]></content:encoded>
    </item>
    <item>
      <title>Un nouveau venu : Azure Cosmos DB</title>
      <link>https://docs.microsoft.com/archive/blogs/big_data_france/un-nouveau-venu-azure-cosmos-db</link>
      <pubDate>Wed, 14 Jun 2017 14:02:16 GMT</pubDate>
      <dc:creator><![CDATA[Philippe Beraud - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/big_data_france/?p=2395</guid>
      <description><![CDATA[La conférence Build 2017 (#Build2017) en mai dernier a été l'occasion pour Microsoft de dévoiler...]]></description>
      <content:encoded><![CDATA[<p>La <a href="https://build.microsoft.com/">conférence Build 2017</a> (<a href="https://twitter.com/hashtag/Build2017?src=hash"><span style="color:#333333">#Build2017</span></a>) en mai dernier a été l'occasion pour Microsoft de dévoiler comme à l'accoutumée bon nombre de nouveautés. 
</p><p>Parmi ces celles-ci, nous souhaitions revenir sur l'annonce de la disponibilité d'un nouveau service sur la plateforme Microsoft Azure, en l'occurrence <a href="https://azure.microsoft.com/fr-fr/services/cosmos-db/">Azure Cosmos DB</a>, un service Azure de base de données NoSQL géo-distribuée sur plusieurs centres de données Microsoft, avec à la clé, plusieurs modes de synchronisation de données.
</p><p><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061517_1412_Unnouveauve1.png" alt="" />
	</p><p>Né en 2010 sous le nom de « Projet Florence », le projet a ensuite grandi comme Azure Document DB avant d'arriver sous sa forme actuelle que nous abordons ci-après. (Le billet <a href="https://azure.microsoft.com/en-us/blog/azure-cosmos-db-microsofts-globally-distributed-multi-model-database-service/">Azure Cosmos DB: The industry's first globally-distributed, multi-model database service</a> vous propose une introduction complète sur ce service avec notamment une vidéo du Docteur <a href="https://en.wikipedia.org/wiki/Leslie_Lamport" target="_blank">Dr. Leslie Lamport</a><span style="color:#505050">.)</span>
	</p><p style="text-align: center"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061517_1412_Unnouveauve2.png" alt="" />
	</p><p>Azure Cosmos DB supporte différents modèles de données, que ce soit du <strong>NoSQL</strong> clé-valeur ou column-family, des <strong>graphes</strong> ou des <strong>documents</strong>.
</p><p>Les données stockées sont répliquées puis copiées dans plusieurs emplacements dans le monde afin de garantir leur <strong>disponibilité</strong>, qui est de 99,99%. 
</p><p>De plus, ces mêmes données peuvent facilement être <strong>mises à l'échelle</strong> pour répondre à tous les besoins, qu'il s'agisse, pour prendre quelques illustrations en termes de cas d'utilisation :
</p><ul><li><div style="text-align: justify">D'applications distribuées à l'échelle mondiale pour lesquelles il s'avère nécessaire de garantir un accès aux utilisateurs grâce à la haute disponibilité et à la faible latence des centres de données mondiaux de Microsoft
</div></li><li><div style="text-align: justify">De l'Internet de vos objets et, dans ce contexte, de vos diverses charges de travail (workload) IoT avec une mise à l'échelle élastique instantanée sans nuire aux performances d'ingestion ou de requête.
</div></li><li><div style="text-align: justify">De sites de commerce en ligne avec la prise en charge des requêtes avancées sur divers catalogues de produits, des pics de trafic et de l'inventaire des stocks en évolution constante.
</div></li><li><div style="text-align: justify">De plateformes de jeux en ligne avec une mise à l'échelle élastique de votre base de données pour faire face aux pics de trafic imprévisibles et garantir une faible latence aux joueurs du monde entier.
</div></li></ul><p>Azure Cosmos DB garanti au 99<sup>ème</sup> percentile une <strong>latence</strong> de moins de 10 millisecondes en lecture et de moins de 15 millisecondes en écriture. 
</p><p>De façon à tirer parti de ce nouveau service, différentes <strong>APIs</strong> sont proposées avec<span style="color:black"> Azure Cosmos DB </span>: 
</p><ul><li><div style="text-align: justify"><strong>Document DB SQL</strong>. Vous pouvez consulter les articles <a href="https://docs.microsoft.com/fr-fr/azure/cosmos-db/documentdb-introduction">Présentation d'Azure Cosmos DB : API DocumentDB</a><span style="color:#222222">
				</span>et <a href="https://docs.microsoft.com/fr-fr/azure/cosmos-db/create-documentdb-dotnet">Azure Cosmos DB : Développer une application web API DocumentDB avec .NET et le portail Azure</a> pour une illustration de mise en œuvre.
</div></li><li><div style="text-align: justify"><strong>MongoDB</strong>. Vous pouvez consulter l'article <a href="https://docs.microsoft.com/fr-fr/azure/cosmos-db/create-mongodb-nodejs">Azure Cosmos DB : migrer une application web MongoDB Node.js existante</a> pour une illustration de mise en œuvre.
</div></li><li><div style="text-align: justify"><strong>Tables du stockage Azure</strong>
				<span style="color:#222222;font-family:Arial">(version préliminaire publique)</span>. Vous pouvez consulter l'article <a href="https://docs.microsoft.com/fr-fr/azure/cosmos-db/create-table-dotnet">Azure Cosmos DB : Créer une application .NET à l'aide de l'API Table</a> pour une illustration de mise en œuvre.
</div></li><li><div style="text-align: justify"><a href="https://tinkerpop.apache.org/docs/current/reference/"><span style="font-family:Arial"><strong>Console Gremlin</strong></span></a><span style="color:#222222;font-family:Arial"><strong>
					</strong>(version préliminaire publique). </span>Vous pouvez consulter l'article <a href="https://docs.microsoft.com/fr-fr/azure/cosmos-db/create-graph-gremlin-console">Azure Cosmos DB : Créer, interroger et parcourir la console Gremlin</a> pour une illustration de mise en œuvre<span style="color:#222222;font-family:Arial"> afin de travailler avec les données API Graph<strong>
					</strong>à partir d'<a href="http://tinkerpop.apache.org/">Apache TinkerPop</a>.</span>
			</div></li></ul><p>Un connecteur <strong>Spark</strong> est également disponible, permettant d'analyser les données. Cette bibliothèque cliente dont le code est disponible <a href="https://github.com/Azure/azure-cosmosdb-spark/">ici</a> sur la forge communautaire GitHub permet à Azure Cosmos DB d'agir comme une source d'entrée ou comme entonnoir de de sortie (output sink) pour les travaux (job) Spark. L'article <a href="https://docs.microsoft.com/fr-fr/azure/cosmos-db/spark-connector">Accelerate real-time big-data analytics with the Spark to Azure Cosmos DB connector</a><span style="color:#222222"> illustre comment utiliser ce connecteur.</span>
	</p><p>Nous espérons que cette rapide présentation aura aiguisé votre curiosité. Vous pouvez la compléter par le billet <a href="https://azure.microsoft.com/fr-fr/blog/a-technical-overview-of-azure-cosmos-db">A technical overview of Azure Cosmos DB</a> qui vous donne un bon aperçu technique de ce service.
</p><p>
 </p>]]></content:encoded>
    </item>
    <item>
      <title>Le Machine Learning avec Spark grâce à HDInsight – 2nde partie</title>
      <link>https://docs.microsoft.com/archive/blogs/big_data_france/le-machine-learning-avec-spark-grace-a-hdinsight-2nde-partie</link>
      <pubDate>Wed, 14 Jun 2017 11:55:52 GMT</pubDate>
      <dc:creator><![CDATA[Philippe Beraud - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/big_data_france/?p=1936</guid>
      <description><![CDATA[Dans la première partie de ce billet, nous avons vu comment déployer un cluster Apache Spark sur...]]></description>
      <content:encoded><![CDATA[<p style="text-align: justify">Dans la <a href="https://blogs.msdn.microsoft.com/big_data_france/2017/06/14/le-machine-learning-avec-spark-grace-a-hdinsight-1ere-partie/">première partie</a> de ce billet, nous avons vu comment déployer un cluster <a href="https://azure.microsoft.com/fr-fr/services/hdinsight/apache-spark/">Apache Spark sur Azure HDInsight</a>. 
</p><p style="text-align: justify">Ce billet s'intéresse sur cette base à l'étudie d'un exemple d'application d'apprentissage automatique (Machine Learning). Ce sera alors l'occasion de découvrir les principales commandes d'<a href="https://spark.apache.org/">Apache Spark</a> à travers PySpark, le Framework de programmation Spark en Python. 
</p><p style="text-align: justify">J'en profite pour remercier très sincèrement Anaig Maréchal actuellement en stage au sein de l'équipe pour cette contribution :-)
</p><p style="text-align: justify"><h1>Nos données 
</h1></p><p style="text-align: justify">Pour cet exemple, nous avons choisi d'utiliser un jeu de données issu de la <a href="https://gallery.cortanaintelligence.com/">galerie Cortana Intelligence</a> sur le revenu d'adultes américains. Il s'agit ici de prédire si un individu gagne plus ou moins que 50K par an. Nous sommes donc face à un problème de classification. A cet effet, 14 prédicteurs et 32561 individus sont à notre disposition. 
</p><p style="text-align: justify">La première étape est d'importer le fichier de données dans le stockage de type blob du compte de stockage lié à notre cluster Spark. On peut par exemple utiliser l'outil <a href="http://storageexplorer.com/">Microsoft Azure Storage Explorer</a> pour administrer facilement les ressources de ce compte comme suggéré dans la première partie de ce billet. 
</p><p style="text-align: justify">Nous avons pour notre part stocké le fichier CSV dans un dossier « data ». Notez que ce répertoire est « virtuel » car nous ne sommes pas dans un système de gestion de fichier :  un blob n'est pas structuré et tout est physiquement stocké à la racine. Cela permet donc seulement de se repérer plus simplement dans les fichiers d'un point de vue utilisateur.  
</p><p style="text-align: justify">Afin d'exécuter le code, nous utilisons un <span style="color:#222222">blocs-notes </span>Jupyter, dont l'utilisation est directement mise à disposition depuis le cluster sur Azure. Des exemples d'application en Scala et en Python sont déjà disponibles ainsi que de la documentation à l'image des articles <a href="https://docs.microsoft.com/fr-fr/azure/hdinsight/hdinsight-apache-spark-jupyter-notebook-kernels"><span style="font-family:Arial">Noyaux disponibles sur les blocs-notes Jupyter avec clusters Spark HDInsight</span></a><span style="color:#222222"><span style="font-family:Arial"> et <a href="https://docs.microsoft.com/fr-fr/azure/hdinsight/hdinsight-apache-spark-jupyter-notebook-use-external-packages"></span>Utilisation de packages externes avec les blocs-notes Jupyter dans des clusters Apache Spark sur HDInsight</span></a>. Dans notre cas, nous créons un nouveau notebook. 
</p><p style="text-align: justify"><h1>Importation des bibliothèques
</h1></p><p style="text-align: justify"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1201_LeMachineLe1.png" alt="" />
	</p><p style="text-align: justify">Passage obligatoire, on commence par importer les bibliothèques PySpark nécessaires à la mise en œuvre de notre exemple. La bibliothèque <strong>pyspark.sql</strong> va nous permettre de manipuler les données et la bibliothèque <strong>pyspark.ml </strong>sera utilisée pour la partie Machine Learning à proprement parlé.  
</p><p style="text-align: justify"><h1>Importation des données
</h1></p><p style="text-align: justify"><span style="font-family:Calibri;font-size:11pt">La fonction <strong>spark.read.csv</strong> nous permet d'importer les données depuis un CSV vers un data frame. Nous lui passons en paramètre le chemin vers le fichier. Pour accéder à l'interface WASB (Windows Azure Blob Storage), le modèle de chemin à utiliser est : 
</span></p><p><span style="font-family:Calibri;font-size:11pt"><em>« wasb://nom_du_conteneur@compte_de_stockage.blob.core.windows.net/nom_du_repertoire/nom_du_fichier.csv »</em>
		</span></p><p style="text-align: justify"><span style="font-family:Calibri;font-size:11pt">Comme nous travaillons sur Azure et que nous n'avons qu'un seul conteneur, nous utilisons le raccourci <em>« wasb:///nom_du_repertoire/nom_du_fichier.csv »</em>. Le paramètre <em>header</em> nous permet d'indiquer que le fichier contient des en-têtes et <em>sep</em> de définir le séparateur utilisé par le csv. 
</span></p><p style="text-align: justify"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1201_LeMachineLe2.png" alt="" />
	</p><p style="text-align: justify">Si la structure des données est connue, la fonction <strong>StructType</strong> est conseillée pour la définir explicitement. Dans ce cas, on utiliserait le paramètre <em>schema=[schema]</em> dans la fonction <strong>spark.read.csv</strong>. Nous avons ici préféré utiliser le paramètre <em>inferSchema</em> qui permet de déduire automatiquement la structure des données.
</p><p style="text-align: justify">La fonction <strong>printSchema</strong> nous permet de vérifier que la structure déduite est bien correcte. 
</p><p style="text-align: justify"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1201_LeMachineLe3.png" alt="" />
	</p><p style="text-align: justify">On retrouve bien les 15 colonnes du csv dont la variable « income » qui est à prédire. 
</p><p style="text-align: justify"><h1>Visualisation des données
</h1></p><p style="text-align: justify">On peut alors afficher les données pour en avoir un aperçu. La fonction <strong>show</strong> permet d'afficher par défaut les 20 premières lignes du data frame, ou le nombre de lignes passé en paramètre.
</p><p style="text-align: justify"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1201_LeMachineLe4.png" alt="" />
	</p><p style="text-align: justify"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1201_LeMachineLe5.png" alt="" />
	</p><p style="text-align: justify">La fonction <strong>describe</strong> affiche un résumé statistique des données numériques d'un data frame : le nombre de valeurs, leur moyenne, leur déviation standard, leur minimum et leur maximum. Ainsi, l'âge moyen dans ce jeu de données est 38.6 ans et la population va de 17 à 90 ans.
</p><p style="text-align: justify"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1201_LeMachineLe6.png" alt="" />
	</p><p style="text-align: justify"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1201_LeMachineLe7.png" alt="" />
	</p><p style="text-align: justify"><h1>Manipuler les données
</h1></p><p style="text-align: justify">L'utilisation d'un data frame permet la manipulation des données avec <strong>Spark SQL</strong>, qui fournit une syntaxe très proche du SQL. 
</p><p style="text-align: justify"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1201_LeMachineLe8.png" alt="" />
	</p><p style="text-align: justify">La commande la plus basique est le <strong>select</strong>, qui permet de sélectionner une partie des données. Ici par exemple, on utilise <strong>select</strong>, <strong>when</strong> et <strong>like</strong> pour appliquer un label numérique aux données : 1.0 pour les personnes au revenu supérieur à 50K, 0.0 sinon. Ces fonctions vous rappellent quelque chose, n'est-ce pas ? ;-)
</p><p style="text-align: justify">Nous verrons plus loin dans ce billet qu'il existe une autre méthode pour labéliser une colonne de façon moins « manuelle ». Néanmoins, cette méthode avec Spark SQL peut toujours servir si on désire plus de flexibilité. 
</p><p style="text-align: justify"><span style="font-family:Calibri;font-size:11pt">La fonction <strong>createOrReplaceTempView</strong> va permettre de créer une vue, comme on le ferait en SQL. A partir de cette vue, on peut manipuler les données directement avec des requêtes SQL, et un data frame sera retourné. 
</span></p><p style="text-align: justify"><span style="font-family:Calibri;font-size:11pt">Dans la requête ci-dessous, on affiche seulement les lignes des personnes gagnant plus de 50K et dont l'éducation est « HS-grad ».
</span></p><p style="text-align: justify"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1201_LeMachineLe9.png" alt="" />
	</p><p style="text-align: justify"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1201_LeMachineLe10.png" alt="" />
	</p><p style="text-align: justify">Le notebook Jupyter permet également d'utiliser directement du SQL grâce à la commande « magique » <strong>%%sql</strong>, suivie du script. 
</p><p style="text-align: justify">A noter : des graphiques sont alors automatiquement créés, ce qui est très pratique pour visualiser simplement les données. Par défaut, un tableau est affiché, mais on peut aussi choisir un graphique circulaire, en nuage de point, en ligne, en zone et en barres. 
</p><p style="text-align: justify"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1201_LeMachineLe11.png" alt="" />
	</p><p style="text-align: justify">Ici, on affiche par exemple le nombre de personnes gagnant plus de 50K en fonction de l'âge. 
</p><p style="text-align: justify">Il convient de noter que, d'un point de vue statistique, ce graphique est à interpréter avec précaution car ce dernier dépend aussi du nombre d'individus pour chaque âge. Les seniors sont par exemple sous-représentés ce qui explique en partie le faible nombre de personnes gagnant plus de 50K.
</p><p style="text-align: justify">
 </p><p style="text-align: justify"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1201_LeMachineLe12.png" alt="" />
	</p><p style="text-align: justify"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1201_LeMachineLe13.png" alt="" />
	</p><p style="text-align: justify"><h1>Nettoyage des données
</h1></p><p style="text-align: justify">La fonction <strong>count</strong> permet de compter le nombre de lignes du data frame. Nous partons d'un jeu de données de 32561 lignes. 
</p><p style="text-align: justify">Parmi les fonctions utiles pour le nettoyage des données, on peut retenir <strong>dropDuplicates</strong> et <strong>data.na.drop</strong> qui suppriment les doublons et les données manquantes. La valeur « any » du paramètre <em>how</em> de <strong>data.na.drop</strong> permet de préciser qu'une ligne doit être supprimée si elle contient la moindre valeur nulle. Pour supprimer une ligne dont toutes les colonnes sont nulles, il faut utiliser « all ».
</p><p style="text-align: justify"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1201_LeMachineLe14.png" alt="" />
	</p><p style="text-align: justify">Une autre utilisation de count nous indique qu'il reste 32537 lignes, ce qui signifie qu'on a supprimé 24 lignes en nettoyant les données. 
</p><p style="text-align: justify"><h2>La notion de pipeline
</h2></p><p style="text-align: justify">Il existe deux fonctions importantes pour mettre en place un modèle de Machine Learning avec Spark : <strong>transform</strong> et <strong>fit</strong>. <strong>Transform</strong> permet d'appliquer une transformation à nos données, qui vont passer d'une structure à une autre, et <strong>fit</strong> permet d'appliquer un algorithme au data frame. Ces fonctions sont très fréquemment utilisées, ce qui peut rendre le code redondant. Par exemple, on applique généralement des transformations à un ensemble d'apprentissage, puis à nouveau à ensemble de test. 
</p><p style="text-align: justify">Un pipeline est un objet permettant d'encapsuler des transformations. Cela permet d'avoir un code plus simple même lorsqu'on applique beaucoup de transformations aux données. Nous allons l'employer dans la suite de notre illustration. Remarquez au passage qu'un pipeline est lui-même une transformation !
</p><p style="text-align: justify"><h1>Sélection des variables
</h1></p><p style="text-align: justify">La fonction <strong>dtype</strong> nous permet de visualiser le type de nos différentes variables.
</p><p style="text-align: justify"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1201_LeMachineLe15.png" alt="" />
	</p><p style="text-align: justify"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1201_LeMachineLe16.png" alt="" />
	</p><p style="text-align: justify">Nous sommes ici en présence de plusieurs variables qualitatives, de type string. <span style="color:black">Or, l'une des particularités de Spark ML est qu'il fonctionne avec des variables numériques</span>. Certains modèles prennent cependant en compte les variables catégoriques, toujours sous forme numériques. Nous allons donc devoir modifier un peu notre data frame pour mettre en place notre exemple.
</p><p style="text-align: justify">D'une part, on va pouvoir transformer certains prédicteurs catégoriques nominaux en « dummy variables », une variable numérique associée par classe, tout comme on l'a fait avec la colonne « income ». Pour cela, on utilise la fonction <strong>StringIndexer</strong> qui le fait automatiquement pour toutes les valeurs différentes rencontrées. 
</p><p style="text-align: justify"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1201_LeMachineLe17.png" alt="" />
	</p><p style="text-align: justify">D'autre part, on va supprimer les colonnes qui ne nous intéressent pas. La colonne « education » par exemple, déjà représentée numériquement par « education-num », ou la colonne « native-country », qui est « United-States » dans la grande majorité des cas. Deux façons de procéder : en indiquant la colonne à supprimer avec <strong>data.drop</strong> ou en indiquant les colonnes à garder avec <strong>select</strong>.
</p><p style="text-align: justify"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1201_LeMachineLe18.png" alt="" />
	</p><p style="text-align: justify">Nous avons maintenant des données nettoyées, entièrement numériques, avec 9 prédicteurs.
</p><p style="text-align: justify"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1201_LeMachineLe19.png" alt="" />
	</p><p style="text-align: justify">Les modèles de Machine Learning Spark ML reçoivent la liste de prédicteurs sous forme de vecteur. On sélectionne donc les variables et on les place dans un vecteur dans une nouvelle colonne « features » grâce à la fonction <strong>VectorAssembler</strong>.
</p><p style="text-align: justify"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1201_LeMachineLe20.png" alt="" />
	</p><p style="text-align: justify"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1201_LeMachineLe21.png" alt="" />
	</p><p style="text-align: justify"><h1>Découpage des données
</h1></p><p style="text-align: justify"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1201_LeMachineLe22.png" alt="" /><h2>
		</h2></p><p style="text-align: justify">On prend 70% de données comme ensemble d'apprentissage avec la fonction <strong>randomSplit</strong>.
</p><p style="text-align: justify"><h1>Entraînement et test du modèle
</h1></p><p style="text-align: justify">Notre jeu de données compte 3 prédicteurs catégoriques, qu'il est important de différencier des variables continues pour ne pas biaiser le modèle. A cet effet, la fonction <strong>VectorIndexer</strong> prend en entrée une colonne de vecteurs et détermine automatiquement quelles variables doivent être considérées comme catégoriques. Il est également possible d'ajouter un paramètre <em>maxCategories </em>pour fixer le nombre maximal de valeurs différentes au-dessus duquel les variables sont considérées comme numériques continues.
</p><p style="text-align: justify">Grâce à un rapide <strong>describe</strong>, on trouve facilement que « relationship » est la colonne catégorique avec le plus grand nombre de valeurs différentes, c'est-à-dire 5. 
</p><p style="text-align: justify"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1201_LeMachineLe23.png" alt="" /><h2>
		</h2></p><p style="text-align: justify">On utilise ensuite la fonction <strong>DecisionTreeClassifier</strong> en indiquant la colonne à prédire et la colonne contenant le vecteur de prédicteurs.
</p><p style="text-align: justify">Tout cela est appliqué une première fois au jeu d'entraînement, puis de test. On peut ensuite afficher les prédictions pour les comparer au label réel, ainsi que la probabilité avec laquelle la classification a été faite entre les deux labels possibles.
</p><p style="text-align: justify"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1201_LeMachineLe24.png" alt="" />
	</p><p style="text-align: justify"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1201_LeMachineLe25.png" alt="" />
	</p><p style="text-align: justify">On obtient à première vue des résultats plutôt corrects, avec des probabilités plus tranchées que le hasard, qui serait autour de 50%.
</p><p style="text-align: justify"><h1>Evaluation du modèle
</h1></p><p style="text-align: justify"><strong>MultiClassClassificationEvaluator</strong> est un outil permettant d'évaluer le résultat d'une classification. 
</p><p style="text-align: justify"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1201_LeMachineLe26.png" alt="" />
	</p><p style="text-align: justify">Nous avons ici évalué la précision pour notre exemple. Le résultat affiché est « Test Error = 0.155442 », c'est-à-dire que nous obtenons une précision d'environ 85%.
</p><p style="text-align: justify"><h1>En guise de conclusion
</h1></p><p style="text-align: justify">Cette illustration nous a permis de découvrir les principales commandes PySpark et d'aborder le Machine Learning avec Spark en utilisant les arbres de décision pour un problème de classification. Libre à vous maintenant d'essayer d'améliorer la performance obtenue en utilisant un autre modèle, ou d'améliorer le calcul du taux d'erreur en employant de la validation croisée par exemple !
</p><p style="text-align: justify">Rétrospectivement, on peut regretter le choix du jeu de données qui ne s'adapte pas très bien à Spark ML, contrairement à l'exemple fréquemment utilisé de l'analyse du retard d'avions, Cf. article <a href="https://docs.microsoft.com/fr-fr/azure/hdinsight/hdinsight-analyze-flight-delay-data-linux">Analyse des données sur les retards de vol avec Hive dans HDInsight basé sur Linux</a><span style="color:#222222"> (sic)</span>. En effet, notre jeu de données comprend plusieurs variables nominales, qui ne peuvent pas être directement employées dans les modèles de Machine Learning. Cela nous a néanmoins permis d'explorer les solutions disponibles pour contourner ce problème, avec les outils de catégorisation notamment. Libre à vous de vous lancer à nouveau avec cet autre jeu de données.
</p><p style="text-align: justify">En guise de remarques complémentaires :
</p><ul><li><div style="text-align: justify">L'intérêt de Spark est évidemment d'utiliser des jeux de données de volume plus important, pour profiter pleinement de la parallélisation des calculs et de l'architecture distribuée.
</div></li><li><div style="text-align: justify">On aurait aussi pu utiliser Scala pour cet exemple. C'est un langage généralement apprécié avec Spark, qui est lui-même écrit en Scala !
</div></li><li><div style="text-align: justify">Nous avons ici choisi de manipuler les données sous forme de data frames. Une autre possibilité aurait été d'utiliser des RDDs, Resilient Distributed Datasets. Ce sont des objets Spark qui constituent une abstraction de la mémoire distribuée et permettent donc des opérations comme map et reduce par exemple. La performance des RDDs est en revanche généralement moins bonne que celle des data frames et ils peuvent paraître moins familiers.
</div></li></ul><p style="text-align: justify">Ceci conclut cette seconde partie de notre billet sur Apache Spark dans Azure HDInsight.
</p>]]></content:encoded>
    </item>
    <item>
      <title>Le Machine Learning avec Spark grâce à HDInsight – 1ère partie</title>
      <link>https://docs.microsoft.com/archive/blogs/big_data_france/le-machine-learning-avec-spark-grace-a-hdinsight-1ere-partie</link>
      <pubDate>Wed, 14 Jun 2017 11:46:33 GMT</pubDate>
      <dc:creator><![CDATA[Philippe Beraud - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/big_data_france/?p=1746</guid>
      <description><![CDATA[Cela faisait longtemps que nous n'avions pas eu l'occasion de partager sur ce blog. 
Pour autant,...]]></description>
      <content:encoded><![CDATA[<p>Cela faisait longtemps que nous n'avions pas eu l'occasion de partager sur ce blog. 
</p><p>Pour autant, si vous êtes une fidèle lectrice ou un fidèle lecteur de ce blog depuis ses débuts, vous êtes sûrement déjà familier avec le service <a href="https://azure.microsoft.com/fr-fr/services/hdinsight/">Azure HDInsight</a> qui vous permet de disposer à la demande d'un cluster Hadoop et Spark dans le Cloud. 
</p><p style="text-align: center"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1145_LeMachineLe1.png" alt="" />
	</p><p>Ainsi, A ce jour encore, Azure HDInsight est la seule offre de cloud Apache Hadoop entièrement gérée qui vous offre des clusters d'analyse open source optimisés pour Spark, Hive, MapReduce, HBase, Storm, Kafka et Microsoft R Server, avec un contrat SLA proposant une disponibilité de 99,9 %.
</p><p>Dans ce billet, nous allons ici nous concentrer sur l'utilisation d'<a href="https://azure.microsoft.com/fr-fr/services/hdinsight/apache-spark/">Apache Spark pour Azure HDInsight</a> au travers du déploiement d'un cluster pour implémenter un modèle de Machine Learning. Cette première partie s'intéresse plus spécifiquement sur le déploiement du cluster en tant que tel.
</p><p>J'en profite pour remercier très sincèrement Anaig Maréchal actuellement en stage au sein de l'équipe pour cette contribution :-)
</p><h1>Spark : quésaco ? 
</h1><p><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1145_LeMachineLe2.png" alt="" />    <a href="https://spark.apache.org/">Apache Spark</a> est un Framework Open Source de la fondation Apache permettant d'effectuer des opérations parallélisées directement en mémoire ; ce qui le rend jusqu'à 100 fois plus rapide que le MapReduce Hadoop. 
</p><p>Les applications Spark peuvent être écrites en Java, Scala, Python et R. L'avantage de déployer un modèle d'apprentissage automatique (Machine Learning) en s'appuyant sur Spark est donc de pouvoir utiliser un gros jeu de données tout en conservant une durée de calcul optimale. 
</p><h1>Création d'un cluster Spark avec Azure
</h1><p>Tout d'abord, connectez-vous au portail Azure à l'adresse <a href="https://portal.azure.com">https://portal.azure.com</a>. (Si vous ne disposez pas d'ores et déjà d'un abonnement Azure, vous pouvez créer un compte Azure gratuit ici. Ce compte vous permet d'explorer n'importe quelle combinaison de services Azure pendant 30 jours, de commencer gratuitement pour cela avec un crédit de 170 € et/ou de poursuivre avec les options gratuites d'Azure.)
</p><p>Azure HDInsight est disponible dans la section <strong>Intelligence + analytics</strong> au niveau de la place de marché d'Azure ou tout simplement en tapant « HDInsight » dans la barre de recherche. <strong>
		</strong></p><p>La première étape consiste à nommer le cluster puis à configurer le nom d'utilisateur et le mot de passe pour la connexion au cluster et la connexion SSH. 
</p><p>Il faut donc choisir un cluster de type Spark (vous vous en seriez douté(e) ;-)), qui est disponible sous Linux uniquement. 
</p><p style="text-align: center"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1145_LeMachineLe3.png" alt="" />
	</p><p>Pour la suite de cette illustration, nous avons choisi la version stable Spark 2.0.2. La dernière version disponible à date est Spark 2.1.0. (Les différents composants disponibles dans Azure HDInsight et les versions associées sont décrits dans l'article <a href="https://docs.microsoft.com/en-us/azure/hdinsight/hdinsight-component-versioning">What are the Hadoop components and versions available with HDInsight?</a>.)
</p><p>Le cluster créé doit être lié à un compte de stockage Azure où seront placés les fichiers de configuration et où l'on pourra également stocker les jeux de données à utiliser. 
</p><p style="text-align: center"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1145_LeMachineLe4.png" alt="" />
	</p><p>Enfin, il suffit de définir une taille de cluster satisfaisant les besoins de notre application. Le tarif par heure est alors affiché. Ici, nous choisissons des nœuds de petite taille car nous allons travailler (dans la seconde partie de ce billet) sur un jeu de données de test, de faible volume.
</p><p style="text-align: center"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1145_LeMachineLe5.png" alt="" />
	</p><p>Le cluster ainsi configuré met en général entre 15 et 20 minutes pour se créer. On le retrouve ensuite facilement, ainsi que le compte de stockage, dans la liste des ressources. 
</p><p style="text-align: center"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1145_LeMachineLe6.png" alt="" />
	</p><h1>Utilisation du compte de stockage du cluster
</h1><p>Le compte de stockage permet d'accéder à une collection de conteneurs blobs, dans lesquels on peut placer des fichiers de tous types de formats. On peut déjà y trouver un conteneur avec les fichiers de configurations du cluster, dans lequel on pourra par la suite ajouter les données que l'on voudra utiliser pour notre application. La figure suivante montre un exemple de compte de stockage Azure :
</p><p style="text-align: center"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1145_LeMachineLe7.png" alt="" />
	</p><p>Afin de gérer ce compte de stockage, on peut utiliser une des nombreuses applications bureau existantes qui permettent de se connecter au compte et de notamment l'alimenter en données depuis ses fichiers locaux. L'article <a href="https://docs.microsoft.com/en-us/azure/storage/storage-explorers">Azure Storage Client Tools</a> liste les solutions disponibles à l'image de <a href="http://storageexplorer.com/">Microsoft Azure Storage Explorer</a>.
</p><p>En termes d'accès depuis le cluster, WASB (Windows Azure Storage Blob) permet de créer une couche d'abstraction pour l'accès à ces blobs. Ceci permet la persistance des données même quand le cluster n'existe pas ou plus, et permet à plusieurs clusters et applications d'accéder à une même donnée au même moment. WASB est, dans la pratique, une extension basée sur l'API HDFS (Hadoop Distributed File System), un des composants clés de Hadoop. La différence avec un système Hadoop classique est que les données sont chargées depuis le compte de stockage et non plus depuis le disque local, tout en conservant des performances similaires. Pour de plus amples informations, vous pouvez consulter le billet <a href="https://blogs.msdn.microsoft.com/cindygross/2015/02/04/understanding-wasb-and-hadoop-storage-in-azure/">Understanding WASB and Hadoop Storage in Azure</a><span style="color:#333333">.
</span></p><p><span style="color:#333333">Enfin, au registre de la sécurité, </span>le service de stockage Azure offre pour ces blobs une capacité de chiffrement au repos en AES-256 (avec des clés gérées par le service (en disponibilité générale) ou ses propres clés (pour les blobs en version préliminaire limitée), il est désormais possible de protéger par voie de conséquence ses données au repos avec HD Insight. Pour de plus amples informations, vous pouvez consulter les billets <a href="https://azure.microsoft.com/fr-fr/blog/announcing-general-availability-of-storage-service-encryption-for-azure-file-storage/">Announcing general availability of Storage Service Encryption for Azure File Storage</a> et <a href="https://azure.microsoft.com/fr-fr/blog/announcing-storage-service-encryption-with-customer-managed-keys-limited-preview-for-azure-blob-storage/">Announcing Storage Service Encryption with Customer Managed Keys limited preview</a>., ainsi que le guide de la sécurité du stockage <a href="https://docs.microsoft.com/en-us/azure/storage/storage-security-guide">ici</a>.
</p><h1> « Gestion » du cluster Spark
</h1><p>En cliquant sur le cluster, on a accès, entre autres, à son état, à de la documentation et à un outil de mise à l'échelle qui permet de modifier le nombre de nœuds ou leur taille. 
</p><p style="text-align: center"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1145_LeMachineLe8.png" alt="" />
	</p><p>Depuis la page du cluster, on peut également accéder à un tableau de bord Ambari qui donne accès à tout sorte d'informations sur le cluster, ainsi qu'à un bloc note Jupyter qui permet d'exécuter des lignes de code et dont nous parlerons dans la seconde partie de ce billet. 
</p><p style="text-align: center"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1145_LeMachineLe9.png" alt="" />
	</p><h1>Arrêt du cluster
</h1><p>Pour arrêter le cluster, il convient de le supprimer depuis sa page principale. Si vous souhaitez seulement couper l'exécution momentanément pour reprendre votre travail plus tard, il existe des procédures permettant de sauvegarder la configuration du cluster pour la réutiliser lors du prochain déploiement. 
</p><p style="text-align: center"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1145_LeMachineLe10.png" alt="" />
	</p><p>Au moment de la création du cluster, il est possible de cliquer sur <strong>Download template and parameters</strong> pour créer un modèle Resource Manager avec toutes les configurations choisies. 
</p><p style="text-align: center"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1145_LeMachineLe11.png" alt="" />
	</p><p>Pour de plus amples informations, vous pouvez consulter l'article <a href="https://docs.microsoft.com/fr-fr/azure/azure-resource-manager/resource-group-template-deploy">Déployer des ressources à l'aide de modèles Resource Manager et d'Azure PowerShell</a><span style="color:#222222">.</span>
	</p><p>Cette option est également disponible sur la page d'accueil du cluster une fois créé, en cliquant sur <strong>Script d'automatisation</strong> dans la section <strong>Paramètres</strong> du menu.
</p><p>Une autre façon de redéployer un cluster est de se rendre dans la liste des groupes de ressources. 
</p><p>Pour un groupe de ressources donné, on aller dans <strong>Déploiements</strong> de la section <strong>Paramètres</strong> du menu. On y trouve le récapitulatif de chacun des précédents déploiements, en les sélectionnant dans le menu. Il est alors possible de les redéployer très facilement. Seul un nouveau mot de passe est nécessaire, les autres modifications sont optionnelles.  
</p><p style="text-align: center"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_1145_LeMachineLe12.png" alt="" />
	</p><p>Ceci conclut cette première partie du billet. Vous pouvez consulter à titre de complément l'article <a href="https://docs.microsoft.com/fr-fr/azure/hdinsight/hdinsight-apache-spark-jupyter-spark-sql">Prise en main : Créer un cluster Apache Spark dans HDInsight et exécuter des requêtes interactives Spark SQL</a><span style="color:#222222">.</span>
	</p><p>Dans la seconde partie, nous utiliserons ce cluster Spark pour mettre en place un modèle d'apprentissage automatique (Machine Learning) en Python. </p>]]></content:encoded>
    </item>
    <item>
      <title>Article 3 : Vélib’ &amp; Cortana Analytics – Troisième partie</title>
      <link>https://docs.microsoft.com/archive/blogs/big_data_france/velib-cortana-analytics-3</link>
      <pubDate>Tue, 12 Apr 2016 19:28:08 GMT</pubDate>
      <dc:creator><![CDATA[Yassine [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/big_data_france/?p=1553</guid>
      <description><![CDATA[&nbsp;
1 - Introduction
&nbsp;
Didier Simon, Émilie Beau, Mathias Ekizian, Romain Casteres, et...]]></description>
      <content:encoded><![CDATA[&nbsp;
<h1><strong>1 - Introduction</strong></h1>
&nbsp;
<p style="text-align: justify">Didier Simon, Émilie Beau, Mathias Ekizian, Romain Casteres, et moi-même, ingénieurs au sein de l’équipe SQL/BI de Microsoft Customer Support Services, avons mis en œuvre un projet interne d’analyse en temps réel des stations Vélib parisiennes via <a href="https://www.microsoft.com/fr-fr/server-cloud/cortana-analytics-suite/overview.aspx">la suite Cortana Analytics</a>.</p>
<p style="text-align: justify">Dans ce troisième article qui fait suite aux deux premiers dont vous trouverez les liens ci-dessous, je vous propose de vous présenter en détail le modèle d’analyse prédictive que l’on a conçu pour cette solution.</p>
<p style="text-align: justify">Si vous n’avez pas lu le premier article, rendez-vous ici : <a href="https://blogs.msdn.microsoft.com/big_data_france/2016/03/25/velib-cortana-analytics/">Vélib’ &amp; Cortana Analytics –Première partie</a>.</p>
<p style="text-align: justify">Si vous n’avez pas lu vers le deuxième article, rendez-vous ici : <a href="https://blogs.msdn.microsoft.com/big_data_france/2016/03/29/velib-cortana-analytics-2/">Vélib &amp; Cortana Analytics – Deuxième partie</a>.</p>
&nbsp;
<h1><strong>2 - Présentation du projet</strong></h1>
&nbsp;
<p style="text-align: justify"><a href="http://www.velib.paris/">Vélib</a> est un service public à grande échelle de location de vélos sur la région parisienne.</p>
<p style="text-align: justify">Lancé le 15 juillet 2007, ce service propose aujourd’hui environ 14 500 vélos et 1230 stations sur Paris.</p>
<p style="text-align: justify">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 :</p>

<ul>
	<li>Obtenir une analyse descriptive en temps réel du réseau Vélib’</li>
	<li>Mettre à disposition une analyse prédictive permettant de prédire la disponibilité du nombre de vélos et d’emplacements disponibles pour une station donnée.</li>
</ul>
&nbsp;
<p style="text-align: justify">Voici l’architecture que nous avons mise en œuvre pour cette solution :</p>
&nbsp;

<a href="https://msdnshared.blob.core.windows.net/media/2016/03/ArchitectureVelibCortana.png"><img class=" wp-image-1383  aligncenter" src="https://msdnshared.blob.core.windows.net/media/2016/03/ArchitectureVelibCortana-1024x535.png" alt="ArchitectureVelibCortana" width="828" height="390" /></a>

&nbsp;
<h1><strong>3 – Contexte</strong></h1>
&nbsp;
<p style="text-align: justify">Le problème a été abordé de la façon suivante, l’état du réseau Vélib’ à l’instant  et en prenant en compte l’aspect temporel, notre objectif est de prédire chaque heure, le nombre de vélos disponibles dans chaque station aux instants   sur un intervalle de 15 minutes.</p>
Cette approche est ainsi connue en anglais sous le nom de « <em>Multi step ahead time series prediction </em>».

&nbsp;
<h1><strong>4 – Exploration des données</strong></h1>
&nbsp;
<h2>4.1 – Jeu de données</h2>
<p style="text-align: justify">Le jeu de données est constitué des attributs suivants :</p>
<a href="https://msdnshared.blob.core.windows.net/media/2016/04/Capture2.jpg"><img class="alignleft wp-image-1582 " src="https://msdnshared.blob.core.windows.net/media/2016/04/Capture2-1024x297.jpg" alt="dataset " width="855" height="248" /></a>
<p style="text-align: justify">La variable dépendante, que l’on va chercher à prédire est « <em>Availablebikes</em> ».</p>
<p style="text-align: justify">La variable « <em>Bikestands</em> » sera à posteriori utilisée par le modèle final pour classifier les stations selon 4 critères :</p>

<ul>
	<li>Vide</li>
	<li>Pleine</li>
	<li>Quasi-pleine : Moins de 3 emplacements disponibles</li>
	<li>Quasi-vide : Moins de 3 vélos à disposition</li>
	<li>Disponible</li>
</ul>
<p style="text-align: justify">Le code R ci-dessous exécuter dans le modèle prédictif sur <a href="https://azure.microsoft.com/fr-fr/services/machine-learning/">Azure Machine L</a>earning illustre cette classification.</p>
Comme vous pouvez le voir, on définit également les <a href="https://fr.wikipedia.org/wiki/Intervalle_de_confiance">intervalles de confiance</a>  à 0.95 de la régression.

&nbsp;

<a href="https://msdnshared.blob.core.windows.net/media/2016/04/Capture.JPG.png"><img class="alignnone  wp-image-1591" src="https://msdnshared.blob.core.windows.net/media/2016/04/Capture.JPG.png" alt="R code" width="831" height="165" /></a>

&nbsp;
<p style="text-align: justify">Voici une carte du 15<sup>ème</sup> démontrant le résultat final</p>
<a href="https://msdnshared.blob.core.windows.net/media/2016/04/capture.png"><img class="alignnone size-full wp-image-1601" src="https://msdnshared.blob.core.windows.net/media/2016/04/capture.png" alt="prediction map" width="746" height="584" /></a>
<h2>4.2 – Exploration des données</h2>
&nbsp;
<p style="text-align: justify">Nous avons choisi de travailler sur chacune des stations de manière indépendante, car lorsque l’on explore les séries chronologiques, on constate que leur comportement varie d’une station à l’autre.</p>
<p style="text-align: justify">La figure ci-dessous résume assez bien cette variation en illustrant la décomposition STL “<a href="http://cs.wellesley.edu/~cs315/Papers/stl%20statistical%20model.pdf">Seasonal and Trend decomposition using Loess</a>”  des séries temporelles de quatre stations choisies aléatoirement.</p>
<a href="https://msdnshared.blob.core.windows.net/media/2016/04/capture1.png"><img class="alignnone  wp-image-1611" src="https://msdnshared.blob.core.windows.net/media/2016/04/capture1.png" alt="decomposition" width="826" height="431" /></a>

&nbsp;
<p style="text-align: justify">Afin d’analyser le comportement des stations au sein d’un même arrondissement, nous avons effectué du <a href="https://blogs.msdn.microsoft.com/mlfrance/2014/08/05/un-peu-de-thorie-pour-lapprentissage-non-supervis/">clustering</a> afin de regrouper les stations ayant le même comportement temporel en groupes homogènes.</p>
<p style="text-align: justify">L’approche employée consiste à appliquer dans un premier temps  une <a href="https://fr.wikipedia.org/wiki/Ondelette">transformée en ondelettes discrète</a>s (DWT) aux séries temporelles. Ensuite nous avons calculé la mesure de similarité entre les coefficients d’ondelettes avec la distance euclidienne.</p>
<p style="text-align: justify">La transformée en ondelette nous permet ainsi de réduire chaque série temporelle à un vecteur de coefficients tout en capturant les tendances à long terme (dynamique structurelle) et les détails dans le domaine fréquentiel qui contiennent de l'information plus précise qui se trouve être cachée dans chaque série temporelle.</p>
<p style="text-align: justify">Le nombre de coefficients d’ondelettes retenu ainsi que le facteur d’échelle sélectionné  sont décrit dans le rapport suivant <a href="http://www.jaist.ac.jp/~bao/papers/N28.pdf">Zhang H, Ho TB, Zhang Y, Lin MS (2006)</a></p>
<p style="text-align: justify">Voici l’implémentation en R utilisé : <a href="https://cran.r-project.org/web/packages/TSclust/index.html">Package R TSclust</a></p>
<p style="text-align: justify">Les dendrogrammes ci-dessous illustrent cette analyse de regroupement pour 9<sup>ème</sup>  et 6<sup>ème</sup>  arrondissements.</p>
<a href="https://msdnshared.blob.core.windows.net/media/2016/04/capture2.png"><img class="alignnone  wp-image-1613" src="https://msdnshared.blob.core.windows.net/media/2016/04/capture2.png" alt="dendrogram " width="747" height="482" /></a>

&nbsp;

&nbsp;

&nbsp;

&nbsp;

<a href="https://msdnshared.blob.core.windows.net/media/2016/04/capture3.png"><img class="alignnone  wp-image-1614" src="https://msdnshared.blob.core.windows.net/media/2016/04/capture3.png" alt="dendro 9" width="710" height="466" /></a>

&nbsp;
<h1><strong>5 – Approche</strong></h1>
&nbsp;
<p style="text-align: justify">Nous allons maintenant voir un peu plus en détail la conception du modèle.</p>
<p style="text-align: justify">Voici une overview qui explique de manière simple notre approche et dont les éléments sont détaillés juste après :</p>
<a href="https://msdnshared.blob.core.windows.net/media/2016/04/capture4.png"><img class="alignnone  wp-image-1623" src="https://msdnshared.blob.core.windows.net/media/2016/04/capture4.png" alt="diagram" width="873" height="613" /></a>

&nbsp;
<h2>5.1 – Caractéristiques statistiques</h2>
&nbsp;
<p style="text-align: justify">Les caractéristiques statistiques ont pour objectif de décrire les propriétés numériques de chaque station calculée sur une fenêtre temporelle d’une heure.</p>

<ul>
	<li>Minimum, la valeur la moins élevée de la fenêtre temporelle.</li>
	<li>Maximum, la valeur la plus élevée de la fenêtre temporelle.</li>
	<li><a href="https://fr.wikipedia.org/wiki/Moyenne_arithm%C3%A9tique">Moyenne arithmétique</a></li>
	<li><a href="https://fr.wikipedia.org/wiki/Variance_(statistiques_et_probabilit%C3%A9s)">Variance</a></li>
	<li><a href="https://fr.wikipedia.org/wiki/Fr%C3%A9quence_(statistiques)">Fréquence cumulée</a></li>
	<li><a href="https://fr.wikipedia.org/wiki/%C3%89cart_type">Écart type</a></li>
	<li><a href="https://fr.wikipedia.org/wiki/Mode_(statistiques)">Mode</a></li>
	<li><a href="https://fr.wikipedia.org/wiki/Kurtosis">Kurtosis</a></li>
	<li><a href="https://fr.wikipedia.org/wiki/Valeur_absolue_des_%C3%A9carts#D.C3.A9viation_absolue_moyenne_de_la_moyenne">Écart absolu moyen</a></li>
	<li><a href="https://fr.wikipedia.org/wiki/Asym%C3%A9trie_(statistiques)">Asymétrie</a></li>
	<li><a href="https://fr.wikipedia.org/wiki/Moyenne_glissante">Moyenne mobile à pondération exponentielle</a></li>
</ul>
&nbsp;

&nbsp;
<h2>5.2 – Caractéristiques temporelles</h2>
&nbsp;
<p style="text-align: justify">1 - Les caractéristiques temporelles sont-elles calculées sur une heure pour chaque station :</p>

<ul>
	<li>Horizon des prévisions</li>
	<li><a href="https://fr.wikipedia.org/wiki/Op%C3%A9rateur_retard">Operateur de retard</a></li>
	<li>Prédiction autorégressive à base de lag distribué <a href="https://en.wikipedia.org/wiki/Distributed_lag">https://en.wikipedia.org/wiki/Distributed_lag</a></li>
	<li>Décomposition de la variable temporelle en jour, mois, heure et minutes.</li>
	<li>Variable indicatrice si c’est un jour de semaine ou weekend.</li>
</ul>
<p style="text-align: justify">2 - Nous calculons ensuite pour chaque station la première et la seconde dérivée sur une série temporelle des deux derniers mois. L’objectif étant de capturer la vitesse instantanée de variation pour chacune des stations ainsi que l’accélération de cette variation par rapport au temps.</p>
&nbsp;

&nbsp;
<h2>5.3 – Méthode d’apprentissage</h2>
&nbsp;
<p style="text-align: justify">Pour l’apprentissage, nous avons opté pour un algorithme de type ensemble, non paramétrique : Forêt d’arbres décisionnels.</p>
<p style="text-align: justify">Pour plus d’information, je vous propose de lire l’article suivant <a href="https://msdn.microsoft.com/fr-fr/library/azure/dn905862.aspx">https://msdn.microsoft.com/fr-fr/library/azure/dn905862.aspx</a></p>
<p style="text-align: justify">Le réglage des hyperparamètres est effectué par <a href="https://azure.microsoft.com/fr-fr/documentation/articles/machine-learning-algorithm-parameters-optimize/">validation croisée</a>.</p>
&nbsp;
<h2>5.4  – Industrialisation</h2>
&nbsp;
<p style="text-align: justify">L’un des gros points forts d’Azure Machine Learning, c’est qu’il permet d’effectuer très simplement le déploiement d’un modèle prédictif grâce à la mise à disposition de points d’accès « end point » au travers d’un service Web.</p>
<p style="text-align: justify">L’invocation du modèle comme son réentraînement est ordonnancé par le service <a href="https://azure.microsoft.com/fr-fr/services/data-factory/">Azure Data Factory</a> .</p>
<p style="text-align: justify">Pour en savoir plus, je vous invite à lire la <a href="https://blogs.msdn.microsoft.com/big_data_france/2016/03/29/velib-cortana-analytics-2/">deuxième partie</a> de la série, rédigé par Romain.</p>
&nbsp;

&nbsp;
<h1><strong>6 – Performance</strong></h1>
&nbsp;
<p style="text-align: justify">Les résultats obtenus sont illustrés par les mesures d’évaluation suivantes, <a href="https://en.wikipedia.org/wiki/Coefficient_of_determination">R² </a>, <a href="https://en.wikipedia.org/wiki/Mean_absolute_error">MAE</a> et <a href="https://en.wikipedia.org/wiki/Root-mean-square_deviation"><em>RMSE</em></a>.  Ces indicateurs sont calculés sur les données du jour J+1.</p>
&nbsp;
<p style="text-align: justify">Voici un rapport Power BI avec la RMSE par arrondissement, tranche horaire et date.</p>
<a href="https://msdnshared.blob.core.windows.net/media/2016/04/capture5.png"><img class="alignnone  wp-image-1632" src="https://msdnshared.blob.core.windows.net/media/2016/04/capture5.png" alt="RMSE" width="873" height="495" /></a>

&nbsp;
<p style="text-align: justify">Voici la <a href="https://en.wikipedia.org/wiki/Coefficient_of_determination">R² </a> et la  <a href="https://en.wikipedia.org/wiki/Mean_absolute_error"><em>MAE</em></a> du mois dernier interrogé « vocalement » à partir de l’assistant Cortana !</p>
<a href="https://msdnshared.blob.core.windows.net/media/2016/04/Capture3.jpg"><img class="alignnone  wp-image-1642" src="https://msdnshared.blob.core.windows.net/media/2016/04/Capture3.jpg" alt="cortana mae, rmse" width="943" height="710" /></a>
<h1><strong>7 – Conclusion</strong></h1>
&nbsp;
<p style="text-align: justify">Dans cet article, vous avez découvert la méthodologie employée pour l’analyse du jeu des données, le type des caractéristiques extraites, l’algorithme choisi pour l’entrainement du modèle et enfin le résultat d’évaluation des performances de celui-ci.</p>
<p style="text-align: justify">Nous réalisons actuellement des vidéos sur la mise en place des différentes briques présentées dans ces articles qui seront publiés sur le site <a href="https://mva.microsoft.com/">Microsoft Virtual Academy</a>.</p>
<p style="text-align: justify">De plus, Émilie et Romain seront présents au prochain <a href="http://guss.pro/?p=3742">SQL Saturday Paris 2016</a> du <strong>samedi 25 juin 2016</strong>, alors n’hésitez pas à les retrouver pour en savoir plus !</p>
<p style="text-align: justify">Et pour conclure cette série d’articles, voici le tableau de bord de la solution dans Power BI et un rapport à partir de Cortana.</p>
<p style="text-align: justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/04/Capture5.jpg"><img class="  wp-image-1652 aligncenter" src="https://msdnshared.blob.core.windows.net/media/2016/04/Capture5-252x300.jpg" alt="rapport cortana" width="518" height="617" /></a></p>
<a href="https://msdnshared.blob.core.windows.net/media/2016/04/Capture4.jpg"><img class="  wp-image-1643 aligncenter" src="https://msdnshared.blob.core.windows.net/media/2016/04/Capture4.jpg" alt="dashboard" width="776" height="1179" /></a>]]></content:encoded>
    </item>
    <item>
      <title>Vélib &amp; Cortana Analytics – Deuxième partie</title>
      <link>https://docs.microsoft.com/archive/blogs/big_data_france/velib-cortana-analytics-2</link>
      <pubDate>Tue, 29 Mar 2016 07:50:56 GMT</pubDate>
      <dc:creator><![CDATA[Romain Casteres]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/big_data_france/?p=1473</guid>
      <description><![CDATA[&nbsp;
1 - Introduction
L’équipe SQL/BI de Microsoft Customer Support Services a initié un projet...]]></description>
      <content:encoded><![CDATA[&nbsp;
<h1>1 - Introduction</h1>
<p style="text-align: justify">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 <strong>Yassine Khelifi</strong>, <strong>Didier Simon</strong>, <strong>Émilie Beau</strong> et <strong>Mathias Ekizian</strong> 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 <a title="cortana-analytics" href="https://www.microsoft.com/fr-fr/server-cloud/cortana-analytics-suite/overview.aspx" target="_blank">Cortana Analytics</a>.</p>
&nbsp;
<p style="text-align: justify">Lien vers le 1er Article :  <a href="https://blogs.msdn.microsoft.com/big_data_france/2016/03/25/velib-cortana-analytics/" title="velib-cortana-analytics" target="_blank">Vélib &amp; Cortana Analytics – Première partie.</a></p>


&nbsp;
<h1>2 - Présentation du projet</h1>
<p style="text-align: justify">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.</p>
<p style="text-align: justify">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 :</p>
• 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.
<p style="text-align: justify"><strong>Architecture :</strong></p>
<a href="https://msdnshared.blob.core.windows.net/media/2016/03/ArchitectureVelibCortana.png"><img class=" wp-image-1383  aligncenter" src="https://msdnshared.blob.core.windows.net/media/2016/03/ArchitectureVelibCortana-1024x535.png" alt="ArchitectureVelibCortana" width="828" height="390" /></a>
<p style="text-align: justify">L’API utilisé est celle de JCDecaux : <a title="https://developer.jcdecaux.com/#/home" href="https://developer.jcdecaux.com/#/home" target="_blank">https://developer.jcdecaux.com/#/home</a></p>
<p style="text-align: justify">Voici à quoi ressemblent les données sources :</p>
<p style="text-align: justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/03/JCDecauxVelib.png"><img class=" wp-image-1392  aligncenter" src="https://msdnshared.blob.core.windows.net/media/2016/03/JCDecauxVelib.png" alt="JCDecauxVelib" width="482" height="550" /></a></p>
&nbsp;
<h1>3 - Présentation du Cortana Analytics</h1>
<p style="text-align: justify">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.</p>
<p style="text-align: justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/03/CortanaAnalytics.png"><img class=" wp-image-1403  aligncenter" src="https://msdnshared.blob.core.windows.net/media/2016/03/CortanaAnalytics-1024x274.png" alt="CortanaAnalytics" width="745" height="139" /></a></p>
<a href="https://msdnshared.blob.core.windows.net/media/2016/03/CortanaAnalyticsSuite1.png"><img class="  wp-image-1413 aligncenter" src="https://msdnshared.blob.core.windows.net/media/2016/03/CortanaAnalyticsSuite1-1024x424.png" alt="CortanaAnalyticsSuite" width="719" height="314" /></a>
<p style="text-align: justify"><strong>Voici les différents services inclus dans Cortana Analytics :</strong></p>
<p style="text-align: justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/03/CortanaActivity.png"><img class="alignnone  wp-image-1414" src="https://msdnshared.blob.core.windows.net/media/2016/03/CortanaActivity-1024x708.png" alt="CortanaActivity" width="748" height="589" /></a></p>
<p style="text-align: justify">Pour en apprendre davantage sur Cortana Analytics : <a title="cortanaanalyticsprocess" href="aka.ms/cortanaanalyticsprocess" target="_blank">aka.ms/cortanaanalyticsprocess</a></p>
&nbsp;
<h1>4 - Présentation de Azure Data Factory</h1>
<p style="text-align: justify">Data Factory est un service d’intégration de données dans le cloud qui gère et automatise le déplacement et la transformation des données. À la manière d’une usine de fabrication, qui utilise des machines visant à transformer des matières premières en produits manufacturés, Data Factory orchestre des services existants qui collectent des données brutes et les transforment en informations prêtes à l'emploi.</p>
<p style="text-align: justify">Data Factory fonctionne pour des sources de données locales et dans le cloud et avec les SaaS pour réceptionner, préparer, transformer, analyser et publier vos données. Vous pouvez utiliser Data Factory pour constituer des services dans des pipelines de flux de données gérés afin de transformer vos données à l'aide de services tels qu’<a title="hdinsight" href="http://azure.microsoft.com/documentation/services/hdinsight/" target="_blank">Azure HDInsight (Hadoop)</a> et <a title="batch" href="https://azure.microsoft.com/documentation/services/batch/" target="_blank">Azure Batch</a> pour vos besoins en calcul de Big Data, et avec <a title="machine-learning" href="https://azure.microsoft.com/documentation/services/machine-learning/" target="_blank">Azure Machine Learning</a> pour configurer vos solutions d'analyse.</p>
<a href="https://msdnshared.blob.core.windows.net/media/2016/03/ADF.png"><img class="alignnone  wp-image-1483" src="https://msdnshared.blob.core.windows.net/media/2016/03/ADF-1024x277.png" alt="ADF" width="877" height="193" /></a>
<p style="text-align: justify"><strong>Voici les différents objets d’un Job ADF :</strong></p>
<a href="https://msdnshared.blob.core.windows.net/media/2016/03/AzureDataFactory.png"><img class="alignnone  wp-image-1491" src="https://msdnshared.blob.core.windows.net/media/2016/03/AzureDataFactory-1024x314.png" alt="AzureDataFactory" width="849" height="245" /></a>
<p style="text-align: justify">Dans la solution, nous avons utilisé le service Azure Data Factory pour Scheduler l’appel de l’API de prédiction, sauvegarder les résultats dans une base de données Azure SQL Database ainsi que pour ré entrainer et mettre a jours le modèle de prédiction.</p>
<p style="text-align: justify">Pour ré entrainer un modèle Azure ML : <a title="data-factory-azure-ml-batch-execution" href="https://azure.microsoft.com/en-us/documentation/articles/data-factory-azure-ml-batch-execution-activity/" target="_blank">https://azure.microsoft.com/en-us/documentation/articles/data-factory-azure-ml-batch-execution-activity/</a></p>
<p style="text-align: justify">Documentation : <a title="data-factory-alltopcat" href="https://azure.microsoft.com/en-us/documentation/articles/data-factory-alltopcat/" target="_blank">https://azure.microsoft.com/en-us/documentation/articles/data-factory-alltopcat/</a></p>
&nbsp;
<p style="text-align: justify"><strong>Avant d'initier la Pipeline ADF, il faut créer les Endpoints AzureML:</strong></p>
<a href="https://msdnshared.blob.core.windows.net/media/2016/03/AzureML_2.png"><img class="alignnone  wp-image-1523" src="https://msdnshared.blob.core.windows.net/media/2016/03/AzureML_2-1024x588.png" alt="AzureML_2" width="801" height="425" /></a>

<a href="https://msdnshared.blob.core.windows.net/media/2016/03/AzureML_3.png"><img class="alignnone  wp-image-1524" src="https://msdnshared.blob.core.windows.net/media/2016/03/AzureML_3-1024x596.png" alt="AzureML_3" width="796" height="525" /></a>

<a href="https://msdnshared.blob.core.windows.net/media/2016/03/AzureML_Endpoints.png"><img class="alignnone  wp-image-1512" src="https://msdnshared.blob.core.windows.net/media/2016/03/AzureML_Endpoints.png" alt="AzureML_Endpoints" width="600" height="460" /></a>

&nbsp;
<p style="text-align: justify"><strong>Pipeline réalisée :</strong></p>
<a href="https://msdnshared.blob.core.windows.net/media/2016/03/ADF_Pipeline.png"><img class="alignnone  wp-image-1493" src="https://msdnshared.blob.core.windows.net/media/2016/03/ADF_Pipeline-1024x259.png" alt="ADF_Pipeline" width="858" height="198" /></a>
<p style="text-align: justify"><strong>Orchestration :</strong></p>
<a href="https://msdnshared.blob.core.windows.net/media/2016/03/ADF_Orchestration.png"><img class="alignnone  wp-image-1503" src="https://msdnshared.blob.core.windows.net/media/2016/03/ADF_Orchestration-1024x349.png" alt="ADF_Orchestration" width="867" height="284" /></a>

<p style="text-align: justify"><strong>Mise en place d'une alerte:</strong></p>
<a href="https://msdnshared.blob.core.windows.net/media/2016/03/ADF_ALERT.png"><img src="https://msdnshared.blob.core.windows.net/media/2016/03/ADF_ALERT-1024x482.png" alt="ADF_ALERT" width="1024" height="482" class="alignnone size-large wp-image-1543" /></a>

&nbsp;
<h1>5 - Conclusion</h1>
<p style="text-align: justify">Dans cet article nous avons présenté la solution et la mise en place du service Azure Data Factory contenant une pipeline de quatre activités : Apel de l’API de prédiction, sauvegarder les résultats dans une base de données Azure SQL Database ainsi que pour ré entrainer et mettre a jours le modèle de prédiction.</p>
&nbsp;
<p style="text-align: justify"><strong>Exemples de rapports Power BI <a title="powerbi-service-publish-to-web" href="https://powerbi.microsoft.com/en-us/documentation/powerbi-service-publish-to-web/" target="_blank">Embedded</a> :</strong></p>
<iframe src="https://msit.powerbi.com/view?r=eyJrIjoiYWM0NjUyYTItYmFhMC00MzAyLWFiMTMtYmNjOTMwNDA1NjNmIiwidCI6IjcyZjk4OGJmLTg2ZjEtNDFhZi05MWFiLTJkN2NkMDExZGI0NyIsImMiOjV9" width="800" height="600" frameborder="0"></iframe>
<iframe src="https://msit.powerbi.com/view?r=eyJrIjoiNDZlYWJkM2YtMzUwZS00MGFkLTljZDEtMzdiZGNlYTM0NDYzIiwidCI6IjcyZjk4OGJmLTg2ZjEtNDFhZi05MWFiLTJkN2NkMDExZGI0NyIsImMiOjV9" width="800" height="600" frameborder="0"></iframe>

&nbsp;
<p style="text-align: justify"><strong>Voici quelques exemples de l'intégration de <a title="powerbi-service-cortana-intro" href="https://powerbi.microsoft.com/en-us/documentation/powerbi-service-cortana-intro/" target="_blank">Power BI avec Cortana</a>, il suffit de lui poser une question !</strong></p>
<a href="https://msdnshared.blob.core.windows.net/media/2016/03/PowerBI_Cortana.png"><img class="  wp-image-1463 aligncenter" src="https://msdnshared.blob.core.windows.net/media/2016/03/PowerBI_Cortana-1024x523.png" alt="PowerBI_Cortana" width="800" height="423" /></a>

&nbsp;
<p style="text-align: justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/03/SQLSAT510_web.png"><img class=" size-full wp-image-1443 alignleft" src="https://msdnshared.blob.core.windows.net/media/2016/03/SQLSAT510_web.png" alt="SQLSAT510" width="236" height="115" /></a>Nous réalisons actuellement des vidéos sur la mise en place des différentes briques, elles seront publiées sur le site <a title="mva" href="https://mva.microsoft.com/" target="_blank">Microsoft Virtual Academy</a>.</p>
Nous participerons au prochain <a title="GUSS" href="http://guss.pro/?p=3742" target="_blank">SQL Saturday Paris 2016</a> du Samedi 25 juin 2016, n'hésitez pas nous y retrouver !

&nbsp;
<p style="text-align: center"><strong>Dans le prochain article, nous verrons la création du modèle de prédiction AzureML.</strong></p>
&nbsp;]]></content:encoded>
    </item>
    <item>
      <title>Vélib &amp; Cortana Analytics – Première partie</title>
      <link>https://docs.microsoft.com/archive/blogs/big_data_france/velib-cortana-analytics</link>
      <pubDate>Fri, 25 Mar 2016 15:50:32 GMT</pubDate>
      <dc:creator><![CDATA[Romain Casteres]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/big_data_france/?p=1382</guid>
      <description><![CDATA[&nbsp;
1 - Introduction
L’équipe SQL/BI de Microsoft Customer Support Services a initié un projet...]]></description>
      <content:encoded><![CDATA[&nbsp;
<h1>1 - Introduction</h1>
<p style="text-align: justify">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 <strong>Yassine Khelifi</strong>, <strong>Didier Simon</strong>, <strong>Émilie Beau</strong> et <strong>Mathias Ekizian</strong> 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 <a href="https://www.microsoft.com/fr-fr/server-cloud/cortana-analytics-suite/overview.aspx" title="cortana-analytics" target="_blank">Cortana Analytics</a>.</p>

&nbsp;
<p style="text-align: justify">Lien vers le deuxieme article : <a href="https://blogs.msdn.microsoft.com/big_data_france/2016/03/29/velib-cortana-analytics-2/" title="velib-cortana-analytics-2" target="_blank">Vélib &amp; Cortana Analytics – Deuxième partie</a>.</p>

&nbsp;
<h1>2 - Présentation du projet</h1>
<p style="text-align: justify">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.</p>
<p style="text-align: justify">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 :</p>
• 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.
<p style="text-align: justify"><strong>Architecture :</strong></p>
<a href="https://msdnshared.blob.core.windows.net/media/2016/03/ArchitectureVelibCortana.png"><img class=" wp-image-1383  aligncenter" src="https://msdnshared.blob.core.windows.net/media/2016/03/ArchitectureVelibCortana-1024x535.png" alt="ArchitectureVelibCortana" width="828" height="390" /></a>
<p style="text-align: justify">L’API utilisé est celle de JCDecaux : <a title="https://developer.jcdecaux.com/#/home" href="https://developer.jcdecaux.com/#/home" target="_blank">https://developer.jcdecaux.com/#/home</a></p>
<p style="text-align: justify">Voici à quoi ressemblent les données sources :</p>
<p style="text-align: justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/03/JCDecauxVelib.png"><img class=" wp-image-1392  aligncenter" src="https://msdnshared.blob.core.windows.net/media/2016/03/JCDecauxVelib.png" alt="JCDecauxVelib" width="482" height="550" /></a></p>
&nbsp;
<h1>3 - Présentation du Cortana Analytics</h1>
<p style="text-align: justify">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.</p>
<p style="text-align: justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/03/CortanaAnalytics.png"><img class=" wp-image-1403  aligncenter" src="https://msdnshared.blob.core.windows.net/media/2016/03/CortanaAnalytics-1024x274.png" alt="CortanaAnalytics" width="745" height="139" /></a></p>
<a href="https://msdnshared.blob.core.windows.net/media/2016/03/CortanaAnalyticsSuite1.png"><img class="  wp-image-1413 aligncenter" src="https://msdnshared.blob.core.windows.net/media/2016/03/CortanaAnalyticsSuite1-1024x424.png" alt="CortanaAnalyticsSuite" width="719" height="314" /></a>
<p style="text-align: justify"><strong>Voici les différents services inclus dans Cortana Analytics :</strong></p>
<p style="text-align: justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/03/CortanaActivity.png"><img class="alignnone  wp-image-1414" src="https://msdnshared.blob.core.windows.net/media/2016/03/CortanaActivity-1024x708.png" alt="CortanaActivity" width="748" height="589" /></a></p>
<p style="text-align: justify">Pour en apprendre davantage sur Cortana Analytics : <a title="cortanaanalyticsprocess" href="aka.ms/cortanaanalyticsprocess" target="_blank">aka.ms/cortanaanalyticsprocess</a></p>
&nbsp;
<h1>4 - Présentation de Event Hubs</h1>
<p style="text-align: justify">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.</p>
<a href="https://msdnshared.blob.core.windows.net/media/2016/03/EventHubs1.png"><img class=" size-full wp-image-1444 aligncenter" src="https://msdnshared.blob.core.windows.net/media/2016/03/EventHubs1.png" alt="EventHubs" width="622" height="258" /></a>
<p style="text-align: justify">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 (<a title="Advanced_Message_Queuing_Protocol" href="http://fr.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol" target="_blank">Advanced Message Queuing Protocol</a>).</p>
Pour plus d’information sur Event Hubs : <a title="event-hubs" href="https://azure.microsoft.com/en-us/services/event-hubs/" target="_blank">https://azure.microsoft.com/en-us/services/event-hubs/</a>

Un Worker Role transmet les données de l’API JCDecaux à l’Event Hubs suivant :
<a href="https://msdnshared.blob.core.windows.net/media/2016/03/EventHubs_Velib.png"><img class="  wp-image-1432 aligncenter" src="https://msdnshared.blob.core.windows.net/media/2016/03/EventHubs_Velib-1024x660.png" alt="EventHubs_Velib" width="705" height="479" /></a>

&nbsp;
<h1>5 - Présentation de Stream Analytics</h1>
<p style="text-align: justify">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.</p>
<p style="text-align: justify">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.</p>
<p style="text-align: justify">Un job Stream Analytics est défini par : une requête, une entrée, une sortie et depuis peu des Fonctions (<a href="https://blogs.msdn.microsoft.com/big_data_france/2015/12/20/azure-stream-analytics-azure-machine-learning/" title="azure-stream-analytics-azure-machine-learning" target="_blank">en Preview</a>).</p>
<p style="text-align: justify">Plus d’information sur Stream Analytics : <a title="stream-analytics" href="https://azure.microsoft.com/en-us/documentation/articles/stream-analytics-introduction/" target="_blank">https://azure.microsoft.com/en-us/documentation/articles/stream-analytics-introduction/</a></p>
<p style="text-align: justify">Dans la solution nous utiliserons Stream Analytics pour réaliser une architecture Lambda :</p>
• 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

<a href="https://msdnshared.blob.core.windows.net/media/2016/03/ASA.png"><img class="  wp-image-1433 aligncenter" src="https://msdnshared.blob.core.windows.net/media/2016/03/ASA-1024x665.png" alt="ASA" width="699" height="502" /></a>
<p style="text-align: justify"><strong>Configuration du service ASA :</strong></p>
• Input : Event Hub précédemment créé
• Output : Power BI, Azure SQL Database
• Query : Récupération des données partitionnées par stationid
<p style="text-align: justify">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 :</p>
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;
<p style="text-align: justify">Information sur la fonction « IsFirst » : <a title="IsFirst" href="https://msdn.microsoft.com/en-us/library/azure/dn966248.aspx" target="_blank">https://msdn.microsoft.com/en-us/library/azure/dn966248.aspx</a></p>
<p style="text-align: justify"><strong>Création d'une <a title="lambda" href="http://lambda-architecture.net/" target="_blank">Lambda architecture </a>depuis Azure Stream Analytics :</strong></p>
<a href="https://msdnshared.blob.core.windows.net/media/2016/03/AzureStreamAnalytics.png"><img class=" size-large wp-image-1454 aligncenter" src="https://msdnshared.blob.core.windows.net/media/2016/03/AzureStreamAnalytics-1024x495.png" alt="AzureStreamAnalytics" width="1024" height="495" /></a>

&nbsp;
<h1>6 - Conclusion</h1>
<p style="text-align: justify">Dans cet article nous avons présenté la solution et la mise en place des services Azure Event Hubs, Stream Analytics et Data Factory.</p>
&nbsp;
<p style="text-align: justify"><strong>Exemples de rapports Power BI <a title="powerbi-service-publish-to-web" href="https://powerbi.microsoft.com/en-us/documentation/powerbi-service-publish-to-web/" target="_blank">Embedded</a> :</strong></p>

<iframe width="800" height="600" src="https://msit.powerbi.com/view?r=eyJrIjoiYWM0NjUyYTItYmFhMC00MzAyLWFiMTMtYmNjOTMwNDA1NjNmIiwidCI6IjcyZjk4OGJmLTg2ZjEtNDFhZi05MWFiLTJkN2NkMDExZGI0NyIsImMiOjV9" frameborder="0"></iframe>

&nbsp;
<iframe width="800" height="600" src="https://msit.powerbi.com/view?r=eyJrIjoiNDZlYWJkM2YtMzUwZS00MGFkLTljZDEtMzdiZGNlYTM0NDYzIiwidCI6IjcyZjk4OGJmLTg2ZjEtNDFhZi05MWFiLTJkN2NkMDExZGI0NyIsImMiOjV9" frameborder="0"></iframe>

&nbsp;
<p style="text-align: justify"><strong>Voici quelques exemples de l'intégration de <a title="powerbi-service-cortana-intro" href="https://powerbi.microsoft.com/en-us/documentation/powerbi-service-cortana-intro/" target="_blank">Power BI avec Cortana</a>, il suffit de lui poser une question !</strong></p>
<a href="https://msdnshared.blob.core.windows.net/media/2016/03/PowerBI_Cortana.png"><img class="  wp-image-1463 aligncenter" src="https://msdnshared.blob.core.windows.net/media/2016/03/PowerBI_Cortana-1024x523.png" alt="PowerBI_Cortana" width="800" height="423" /></a>

&nbsp;
<p style="text-align: justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/03/SQLSAT510_web.png"><img class=" size-full wp-image-1443 alignleft" src="https://msdnshared.blob.core.windows.net/media/2016/03/SQLSAT510_web.png" alt="SQLSAT510" width="236" height="115" /></a>Nous réalisons actuellement des vidéos sur la mise en place des différentes briques, elles seront publiées sur le site <a title="mva" href="https://mva.microsoft.com/" target="_blank">Microsoft Virtual Academy</a>.</p>
Nous participerons au prochain <a title="GUSS" href="http://guss.pro/?p=3742" target="_blank">SQL Saturday Paris 2016</a> du Samedi 25 juin 2016, n'hésitez pas nous y retrouver !

<p style="text-align: justify">Lien vers le deuxième article : <a href="https://blogs.msdn.microsoft.com/big_data_france/2016/03/29/velib-cortana-analytics-2/" title="velib-cortana-analytics-2" target="_blank">https://blogs.msdn.microsoft.com/big_data_france/2016/03/29/velib-cortana-analytics-2/</a></p>

&nbsp;
<p style="text-align: center"><strong>Dans le prochain article, nous verrons comment créer une pipeline Azure Data Factory pour scheduler et ordonnancer les différents services Azure.</strong></p>

&nbsp;
<p style="text-align: justify">Lien vers le deuxieme article : <a href="https://blogs.msdn.microsoft.com/big_data_france/2016/03/29/velib-cortana-analytics-2/" title="velib-cortana-analytics-2" target="_blank">Vélib &amp; Cortana Analytics – Deuxième partie</a>.</p>

&nbsp;]]></content:encoded>
    </item>
    <item>
      <title>Azure Stream Analytics &amp; Azure Machine Learning</title>
      <link>https://docs.microsoft.com/archive/blogs/big_data_france/azure-stream-analytics-azure-machine-learning</link>
      <pubDate>Sun, 20 Dec 2015 10:16:00 GMT</pubDate>
      <dc:creator><![CDATA[Romain Casteres]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/big_data_france/2015/12/20/azure-stream-analytics-azure-machine-learning/</guid>
      <description><![CDATA[&nbsp;
1 - Introduction
Dans cet article je vais pr&eacute;senter une des nouveaut&eacute;s du...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;</p>
<h1>1 - Introduction</h1>
<p style="text-align: justify;">Dans cet article je vais pr&eacute;senter une des nouveaut&eacute;s du service <a title="Azure Stream Analytics" href="https://azure.microsoft.com/fr-fr/services/stream-analytics/" target="_blank">Azure Stream Analytics</a> permettant d&rsquo;appeler en temps r&eacute;el un web service <a title="AzureML" href="https://studio.azureml.net/" target="_blank">AzureML</a>&nbsp;!</p>
<p style="text-align: justify;">Pour pr&eacute;senter cette nouveaut&eacute;, nous prendrons un cas concret d&rsquo;utilisation, l&rsquo;analyse de mots clefs sur le r&eacute;seau social Twitter et analyse des sentiments des tweets en temps r&eacute;el&nbsp;!</p>
<p style="text-align: justify;">Nous cr&eacute;erons pour cela une architecture l&rsquo;<a title="Lambda_architecture" href="https://en.wikipedia.org/wiki/Lambda_architecture" target="_blank">Ambda</a> permettant de&nbsp;:</p>
<ul>
<li>
<p style="text-align: justify;">Stocker les donn&eacute;es pour de futures analyses</p>
</li>
<li>
<p style="text-align: justify;">Analyser en temps r&eacute;el avec <a title="Power BI" href="https://powerbi.microsoft.com/fr-fr/" target="_blank">Power BI</a> les donn&eacute;es</p>
</li>
</ul>
<div><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/5076.AzureStream.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/5076.AzureStream.png" target="_blank"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/5076.AzureStream.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/5076.AzureStream.png" alt="" border="0" /></a></div>
<div style="text-align: justify;">&nbsp;</div>
<p>&nbsp;</p>
<h1>2 - R&eacute;cup&eacute;ration et envoi des Tweets dans un Events Hub</h1>
<p style="text-align: justify;">Une solution C# me permet de scruter le r&eacute;seau social &agrave; la recherche de mots cl&eacute;s (Azure, Pulsweb, GUSS, SQLServer, AzureML), d&rsquo;appeler l&rsquo;API <a title="Sentiment 140" href="http://www.pulsweb.fr/sentiment-analysis-hive/" target="_blank">Sentiment 140</a> pour qualifier les tweets et de les envoyer dans un <a title="Events Hub" href="https://azure.microsoft.com/fr-fr/services/event-hubs/" target="_blank">Events Hub</a> (eventhubtweets) :</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/5751.AzureStream1.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/5751.AzureStream1.png" target="_blank"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/5751.AzureStream1.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/5751.AzureStream1.png" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<h1>3 - Azure Machine Learning</h1>
<p style="text-align: justify;">Le service AzureML n&rsquo;est plus &agrave; pr&eacute;senter : <a title="predict-wine-quality-azureml" href="http://www.pulsweb.fr/predict-wine-quality-azureml/" target="_blank">http://www.pulsweb.fr/predict-wine-quality-azureml/</a></p>
<p style="text-align: justify;">T&eacute;l&eacute;chargement dans mon Studio de la solution d&rsquo;analyse de sentiments &agrave; partir de la galerie Cortana Analytics : <a title="Predictive sentiment analytics model" href="https://gallery.cortanaanalytics.com/Experiment/Predictive-Mini-Twitter-sentiment-analysis-Experiment-1" target="_blank">Predictive sentiment analytics model</a>.</p>
<p style="text-align: justify;">&nbsp;</p>
<p style="text-align: justify;"><span style="text-decoration: underline;">Pour ce faire :</span></p>
<p style="text-align: justify;">1. Acc&eacute;dez &agrave; l&rsquo;exp&eacute;rimentation : <a title="Predictive sentiment analytics model" href="https://gallery.cortanaanalytics.com/Experiment/Predictive-Mini-Twitter-sentiment-analysis-Experiment-1" target="_blank">Predictive sentiment analytics model</a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/8585.AzureStream2.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/8585.AzureStream2.png" target="_blank"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/8585.AzureStream2.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/8585.AzureStream2.png" alt="" border="0" /></a><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/3666.AzureStream3.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/3666.AzureStream3.png" target="_blank"><br /></a></p>
<p style="text-align: justify;">2. Open in Studio</p>
<p style="text-align: justify;">3. Copie de l&rsquo;exp&eacute;rimentation dans votre Studio</p>
<p style="text-align: justify;">4. Ex&eacute;cution</p>
<p style="text-align: justify;">5. Publication de l'exp&eacute;rience</p>
<p style="text-align: justify;">&nbsp;</p>
<p style="text-align: justify;"><span style="text-decoration: underline;">Vous devriez avoir cela :</span></p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/3666.AzureStream3.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/3666.AzureStream3.png" target="_blank"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/3666.AzureStream3.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/3666.AzureStream3.png" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<p style="text-align: justify;">Test du Web Service :</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/3005.AzureStream4.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/3005.AzureStream4.png" target="_blank"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/3005.AzureStream4.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/3005.AzureStream4.png" alt="" border="0" /></a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/0216.AzureStream5.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/0216.AzureStream5.png" target="_blank"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/0216.AzureStream5.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/0216.AzureStream5.png" alt="" border="0" /></a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/7282.AzureStream6.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/7282.AzureStream6.png" target="_blank"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/7282.AzureStream6.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/7282.AzureStream6.png" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<p style="text-align: justify;">Test du Web Service en mode batch avec Azure Machine Learning Excel Add-In :</p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/0211.AzureStream7.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/0211.AzureStream7.png" target="_blank"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/0211.AzureStream7.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/0211.AzureStream7.png" alt="" border="0" /></a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/0184.AzureStream8.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/0184.AzureStream8.png" target="_blank"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/0184.AzureStream8.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/0184.AzureStream8.png" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<h1>4 - Azure Stream Analytics</h1>
<p style="text-align: justify;">Le service Azure Stream Analytics n&rsquo;est plus &agrave; pr&eacute;senter : <a title="Stream Analytics" href="http://www.pulsweb.fr/?s=stream+analytics" target="_blank">http://www.pulsweb.fr/?s=stream+analytics</a></p>
<p style="text-align: justify;">Apr&egrave;s avoir cr&eacute;&eacute; un Stream Analytics Job &laquo; twitteranalysis &raquo;, j&rsquo;ai configur&eacute; un Input de type Event Hub, se connectant &agrave; l&rsquo;Event Hub recevant les Tweets.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/3531.AzureStream9.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/3531.AzureStream9.png" target="_blank"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/3531.AzureStream9.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/3531.AzureStream9.png" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<p style="text-align: justify;">Ajout d&rsquo;une fonction Azure Machine Learning :</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/5314.AzureStream10.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/5314.AzureStream10.png" target="_blank"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/5314.AzureStream10.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/5314.AzureStream10.png" alt="" border="0" /></a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/1256.AzureStream11.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/1256.AzureStream11.png" target="_blank"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/1256.AzureStream11.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/1256.AzureStream11.png" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<p style="text-align: justify;"><span style="text-decoration: underline;">Cr&eacute;ation d&rsquo;outputs :</span> D&eacute;finition de l&rsquo;architecture Lambda</p>
<p style="text-align: justify;">Une sortie pour le stockage des donn&eacute;es et une sortie pour l&rsquo;analyse en temps r&eacute;el dans Power BI :</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/2656.AzureStream12.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/2656.AzureStream12.png" target="_blank"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/2656.AzureStream12.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/2656.AzureStream12.png" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<p style="text-align: justify;"><span style="text-decoration: underline;">Configuration de la requ&ecirc;te :</span></p>
<p style="text-align: justify;">R&eacute;cup&eacute;ration du sentiment du Tweet en appelant la fonction &laquo; sentiment &raquo; provenant du service AzureML :</p>
<pre>WITH subquery AS (  
	SELECT 
		System.Timestamp AS Time, 
		Text, 
		Topic, 
		SentimentScore,
		<strong>sentiment(Text) AS result</strong>
	FROM TwitterStream TIMESTAMP BY CreatedAt
	WHERE LANGUAGE = 'en'
)  
SELECT Time, Text, Topic, SentimentScore, <strong>result.*</strong> <strong>INTO OutputToBlob</strong> FROM subquery 

SELECT Time, Text, Topic, SentimentScore, <strong>result.*</strong> <strong>INTO tweets</strong> FROM subquery
</pre>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/8015.AzureStream13.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/8015.AzureStream13.png" target="_blank"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/8015.AzureStream13.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/8015.AzureStream13.png" alt="" border="0" /></a></p>
<p style="text-align: justify;">Deux colonnes seront ajout&eacute;es dans les sorties : Scored Labels et Scored Probabilities.</p>
<p>&nbsp;</p>
<h1>5 - Test de la solution</h1>
<p style="text-align: justify;">Depuis Power BI, un nouveau Dataset apparait :</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/2627.AzureStream14.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/2627.AzureStream14.png" target="_blank"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/2627.AzureStream14.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/2627.AzureStream14.png" alt="" border="0" /></a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/2766.AzureStream15.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/2766.AzureStream15.png" target="_blank"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/2766.AzureStream15.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/2766.AzureStream15.png" alt="" border="0" /></a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/6747.AzureStream16.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/6747.AzureStream16.png" target="_blank"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/6747.AzureStream16.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/6747.AzureStream16.png" alt="" border="0" /></a></p>
<p style="text-align: justify;">Les donn&eacute;es ont aussi &eacute;t&eacute; stock&eacute;es dans un Blob Storage :</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/5025.AzureStream17.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/5025.AzureStream17.png" target="_blank"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/5025.AzureStream17.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/5025.AzureStream17.png" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<h1>6 - Conclusion</h1>
<p style="text-align: justify;">Dans cet article, nous avons cr&eacute;&eacute; un Stream Analytics Job permettant d&rsquo;analyser en temps r&eacute;el le sentiment des Tweets en utilisant une exp&eacute;rimentation AzureML.</p>
<p style="text-align: justify;">Voici une architecture pouvant &ecirc;tre mise en place pour compl&eacute;ter celle r&eacute;alis&eacute;e :</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/1464.AzureStream18.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/1464.AzureStream18.png" target="_blank"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/1464.AzureStream18.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/1464.AzureStream18.png" alt="" border="0" /></a></p>
<p style="text-align: center;"><em>Les fl&egrave;ches rouges correspondantes au Real Time.</em></p>
<p style="text-align: justify;">&nbsp;</p>
<p style="text-align: justify;">Si vous souhaitez apprendre davantage sur ces solutions, n&rsquo;h&eacute;sitez pas &agrave; contacter votre TAM. Nous d&eacute;livrons avec Mathias Ekizian un Workshop de 3 jours d'Introduction au Big Data et Machine Learning.</p>
<p>&nbsp;</p>
<p style="text-align: justify;">---</p>
<p style="text-align: justify;"><strong>Romain Casteres</strong></p>
<p style="text-align: justify;"><strong></strong>Premier Field Engineer &ndash; SQL Server &amp; BI &amp; Big Data</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Azure Data Lake (suite)</title>
      <link>https://docs.microsoft.com/archive/blogs/big_data_france/azure-data-lake-suite</link>
      <pubDate>Sun, 29 Nov 2015 00:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Romain Casteres]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/big_data_france/2015/11/29/azure-data-lake-suite/</guid>
      <description><![CDATA[Dans la premi&egrave;re partie de cet article (Introduction-a-Azure-Data-Lake), nous avons...]]></description>
      <content:encoded><![CDATA[<p style="text-align: justify;">Dans la premi&egrave;re partie de cet article (<a title="introduction-a-azure-data-lake" href="http://blogs.msdn.com/b/big_data_france/archive/2015/11/29/introduction-a-azure-data-lake.aspx">Introduction-a-Azure-Data-Lake</a>), nous avons pr&eacute;sent&eacute; Azure Data Lake et r&eacute;alis&eacute; une premi&egrave;re analyse sur des Logs d&rsquo;un moteur de recherche.</p>
<p style="text-align: justify;">Dans cette seconde partie, nous allons utiliser le compl&eacute;ment pour Visual Studio t&eacute;l&eacute;chargeable &agrave; cette adresse&nbsp;(<a href="https://www.microsoft.com/en-us/download/details.aspx?id=49504">Azure Data Lake Tools for Visual Studio</a>) pour analyser des Tweets.</p>
<p style="text-align: justify;">&nbsp;</p>
<h1>Upload de donn&eacute;es dans l&rsquo;Azure Data Lake Store (ADLS)</h1>
<p style="text-align: justify;">Apr&egrave;s avoir t&eacute;l&eacute;charg&eacute; et install&eacute; le compl&eacute;ment Data Lake pour Visual Studio, il faut configurer le compte Azure d&rsquo;acc&egrave;s au service&nbsp;:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/6787.ADL1.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/6787.ADL1.png"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/6787.ADL1.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/6787.ADL1.png" alt="" border="0" /></a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/4530.ADL2.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/4530.ADL2.png"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/4530.ADL2.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/4530.ADL2.png" alt="" border="0" /></a></p>
<p style="text-align: justify;">Une fois connect&eacute;, on retrouve dans l&rsquo;arborescence &laquo;&nbsp;Server Explorer&nbsp;&raquo;, la partie Data Lake&nbsp;:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/3527.ADL3.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/3527.ADL3.png"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/3527.ADL3.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/3527.ADL3.png" alt="" width="400" height="812" border="0" /></a></p>
<p style="text-align: justify;">Dans le compte Data Lake &laquo;&nbsp;Sandbox&nbsp;&raquo;, on a acc&egrave;s aux bases de donn&eacute;es, a l&rsquo;historique des jobs et aux ADLS&nbsp;:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/6712.ADL4.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/6712.ADL4.png"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/6712.ADL4.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/6712.ADL4.png" alt="" border="0" /></a></p>
<p style="text-align: justify;">Il est alors possible, de pr&eacute; visualiser les donn&eacute;es (m&ecirc;me si le fichier fait 2To&nbsp;!), et d&rsquo;uploader ais&eacute;ment via une interface graphique de nouveaux fichiers.</p>
<p style="text-align: justify;">Nous avons t&eacute;l&eacute;charg&eacute; et ulpoad&eacute; les exports des comptes Twitter de <a href="https://twitter.com/FranmerMS">FranmerMS</a>, <a href="https://twitter.com/GUSS_FRANCE">GUSS_FRANCE</a> et <a href="https://twitter.com/PulsWeb">PulsWeb</a> via le site internet&nbsp;: <a href="http://www.tweetdownload.net/">http://www.tweetdownload.net/</a></p>
<p style="text-align: justify;">Voici &agrave; quoi ressemblent les fichiers sources&nbsp;:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/0753.ADL5.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/0753.ADL5.png"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/0753.ADL5.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/0753.ADL5.png" alt="" border="0" /></a></p>
<p>Voici les diff&eacute;rentes m&eacute;thodes pour uploader des donn&eacute;es dans le ADLS&nbsp;:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/2046.ADL6.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/2046.ADL6.png"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/2046.ADL6.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/2046.ADL6.png" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<h1>Ex&eacute;cution de Job Azure Data Lake Analytics (ADLA)</h1>
<p>Cr&eacute;ation d&rsquo;un script U-SQL, cliquez sur &laquo;&nbsp;File&nbsp;&raquo;, &laquo;&nbsp;New&nbsp;&raquo;, &laquo;&nbsp;Project&hellip;&nbsp;&raquo; :</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/6403.ADL7.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/6403.ADL7.png"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/6403.ADL7.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/6403.ADL7.png" alt="" border="0" /></a></p>
<p>Voici un premier exemple d&rsquo;analyse du nombre de Tweets par auteurs&nbsp;:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/0143.ADL8.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/0143.ADL8.png"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/0143.ADL8.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/0143.ADL8.png" alt="" border="0" /></a></p>
<p style="text-align: justify;">Le fichier d&rsquo;output sera ordonn&eacute; par le nombre de Tweets, les auteurs ayant le plus Twitt&eacute; seront les premiers.</p>
<p style="text-align: justify;">Lorsque l&rsquo;on soumet le Job U-SQL, celui-ci est valide, build&eacute;. Une fen&ecirc;tre nous permet alors de choisir le d&eacute;gr&eacute;e de parall&eacute;lisme du traitement.</p>
<p style="text-align: justify;">Il est possible d&rsquo;investiguer le flux du traitement de donn&eacute;es avant l&rsquo;ex&eacute;cution du Job, dans l&rsquo;onglet &laquo;&nbsp;Design&nbsp;&raquo;&nbsp;:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/8688.ADL9.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/8688.ADL9.png"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/8688.ADL9.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/8688.ADL9.png" alt="" border="0" /></a></p>
<p>Ex&eacute;cution du Job&nbsp;:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/5468.ADL10.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/5468.ADL10.png"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/5468.ADL10.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/5468.ADL10.png" alt="" border="0" /></a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/8713.ADL11.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/8713.ADL11.png"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/8713.ADL11.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/8713.ADL11.png" alt="" border="0" /></a></p>
<p style="text-align: justify;">Une fois le Job ex&eacute;cut&eacute;, il est possible de diagnostiquer le Job afin d&rsquo;optimiser son cout, sa rapidit&eacute;, &hellip;&nbsp;:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/7802.ADL12.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/7802.ADL12.png"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/7802.ADL12.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/7802.ADL12.png" alt="" border="0" /></a></p>
<p style="text-align: justify;">Ici, sur le parall&eacute;lisme 10 choisi, seule une unit&eacute; a &eacute;t&eacute; utilis&eacute;e, donc 9 ne sont pas n&eacute;cessaires pour ce traitement simple&nbsp;:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/2158.ADL13.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/2158.ADL13.png"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/2158.ADL13.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/2158.ADL13.png" alt="" border="0" /></a></p>
<h1>U-SQL (SQL &amp; C#)</h1>
<p style="text-align: justify;">Le U-SQL pour Unified SQL, unifie la nature d&eacute;clarative de SQL avec la puissance expressive de C#.</p>
<p style="text-align: justify;">Il est possible de r&eacute;f&eacute;rencer des Assembly pour customiser &agrave; volont&eacute; en C# les traitements &agrave; effectuer.</p>
<p style="text-align: justify;">Ici, sont r&eacute;f&eacute;renc&eacute; deux Assemblies pour pouvoir lire des fichiers aux formats JSON (Assemblies-&gt; Register), vous pouvez la t&eacute;l&eacute;charger &agrave; cette adresse&nbsp;: <a href="https://github.com/MicrosoftBigData/usql/tree/master/Examples">https://github.com/MicrosoftBigData/usql/tree/master/Examples</a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/2806.ADL14.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/2806.ADL14.png"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/2806.ADL14.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/2806.ADL14.png" alt="" border="0" /></a></p>
<p>Voici comment l&rsquo;utiliser&nbsp;:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/4188.ADL15.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/4188.ADL15.png"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/4188.ADL15.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/4188.ADL15.png" alt="" border="0" /></a></p>
<p style="text-align: justify;">&nbsp;Remarque&nbsp;: Il est possible de travailler sur tous les fichiers d&rsquo;un dossier via le caract&egrave;re &laquo;&nbsp;{*}&nbsp;&raquo;.</p>
<p>&nbsp;</p>
<h1>Export du r&eacute;sultat de l&rsquo;analyse dans un Blob Storage (WASB)</h1>
<p style="text-align: justify;">Voici un script un peu plus complexe, exportant les donn&eacute;es du ADLS vers un Azure Blob Storage apr&egrave;s avoir rajout&eacute; de l&rsquo;intelligence aux donn&eacute;es&nbsp;:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="601">
<p>USE jss2015;</p>
<p>DECLARE @output string = "wasb://tweets@jss2015/";</p>
<p>DECLARE @outputraw string = @output + "/raw.csv";</p>
<p>DECLARE @outputMentioned string = @output + "/mentioned.csv";</p>
<p>DECLARE @outputHTag string = @output + "/htag.csv";</p>
<p>@data =</p>
<p>&nbsp;&nbsp;&nbsp; EXTRACT</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; date string</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , time string</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , author string</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , tweet string</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; FROM "/JSS2015/Tweets/{*}.csv"</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; USING Extractors.Csv(encoding:Encoding.UTF8);</p>
<p>// Raw</p>
<p>@raw =</p>
<p>&nbsp;&nbsp;&nbsp; SELECT</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ROW_NUMBER() OVER () AS Id,</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; date,</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; time,</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; author,</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tweet,</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tweet.Contains("RT") AS rt,</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JSS2015.MyUDFs.WordCount(tweet) AS WordCount,</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JSS2015.MyUDFs.Http(tweet) AS Http,</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JSS2015.MyUDFs.Sentiment(tweet) AS Sentiment</p>
<p>&nbsp;&nbsp;&nbsp; FROM @data;</p>
<p>OUTPUT @raw TO @outputraw USING Outputters.Csv(encoding:Encoding.UTF8);</p>
<p>// Mentioned</p>
<p>@Mentioned1 =</p>
<p>&nbsp;&nbsp;&nbsp; SELECT</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Id,</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new SQL.ARRAY&lt;string&gt;(tweet.Split(' ').Where(x =&gt; x.StartsWith("@"))) AS refs</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; FROM @raw;</p>
<p>@Mentioned2 =</p>
<p>&nbsp;&nbsp;&nbsp; SELECT</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Id,</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r.Substring(1) AS Mentioned</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; FROM @Mentioned1 CROSS APPLY EXPLODE(refs) AS Refs(r);</p>
<p>@Mentioned3 =</p>
<p>&nbsp;&nbsp;&nbsp; SELECT</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Id,</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Mentioned,</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; COUNT(*) AS tweetcount</p>
<p>&nbsp;&nbsp;&nbsp; FROM @Mentioned2</p>
<p>&nbsp;&nbsp;&nbsp; GROUP BY Id, Mentioned;</p>
<p>OUTPUT @Mentioned3 TO @outputMentioned USING Outputters.Csv(encoding:Encoding.UTF8);</p>
<p>// HTag</p>
<p>@HTag1 =</p>
<p>&nbsp;&nbsp;&nbsp; SELECT</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Id,</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new SQL.ARRAY&lt;string&gt;(tweet.Split(' ').Where(x =&gt; x.StartsWith("#"))) AS refs</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; FROM @raw;</p>
<p>@HTag2 =</p>
<p>&nbsp;&nbsp;&nbsp; SELECT</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Id,</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r.Substring(1) AS HTag</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; FROM @HTag1 CROSS APPLY EXPLODE(refs) AS Refs(r);</p>
<p>@HTag3 =</p>
<p>&nbsp;&nbsp;&nbsp; SELECT</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Id,</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HTag,</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; COUNT(*) AS tweetcount</p>
<p>&nbsp;&nbsp;&nbsp; FROM @HTag2</p>
<p>&nbsp;&nbsp;&nbsp; GROUP BY Id, HTag;</p>
<p>OUTPUT @HTag3 TO @outputHTag USING Outputters.Csv(encoding:Encoding.UTF8);</p>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>Chaque fichier U-SQL poss&egrave;de son fichier C#&nbsp;:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/5672.ADL16.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/5672.ADL16.png"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/5672.ADL16.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/5672.ADL16.png" alt="" width="300" height="266" border="0" /></a></p>
<p>Voici le code de celle-ci&nbsp;:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="601">
<p>using Microsoft.Analytics.Interfaces;</p>
<p>using Microsoft.Analytics.Types.Sql;</p>
<p>using System;</p>
<p>using System.Collections.Generic;</p>
<p>using System.IO;</p>
<p>using System.Text;</p>
<p>namespace JSS2015</p>
<p>{</p>
<p>&nbsp;&nbsp;&nbsp; public class MyUDFs</p>
<p>&nbsp;&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Word Count</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static string WordCount(string s)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return s.Split(' ').Length.ToString();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Http presence</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static string Http(string s)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return s.Contains("http:").ToString();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Basic Sentiment Analysis</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static string Sentiment(string s)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string resultat = ":-|";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Neutral</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (s.Contains(":-)") == true)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; resultat = ":-)";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Happy</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (s.Contains(":-(") == true)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; resultat = ":-(";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // UnHappy</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return resultat;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>}</p>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>Remarque&nbsp;:</p>
<p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; La fonction WordCount comme son nom l&rsquo;indique, r&eacute;cup&egrave;re le nombre de mots dans un texte (ici des Tweets)</p>
<p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; La fonction HTTP retourne un bool&eacute;en par rapport &agrave; la pr&eacute;sence d&rsquo;une URL dans des Tweets</p>
<p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; La fonction Sentiment recherche la pr&eacute;sence d&rsquo;&eacute;motic&ocirc;ne et affecte un sentiment aux Tweets.</p>
<p>&nbsp;</p>
<p>Trois fichiers sont alors export&eacute;s dans le Blob Storage&nbsp;:</p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/1258.ADL17.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/1258.ADL17.png"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/1258.ADL17.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/1258.ADL17.png" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<h1>Analyse avec Power BI et les Customized Data Vizualisation</h1>
<p style="text-align: justify;">Une fois ces fichiers dans le Blob Storage, on peut utiliser Power BI pour les analyser&nbsp;:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/3718.ADL18.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/3718.ADL18.png"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/3718.ADL18.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/3718.ADL18.png" alt="" border="0" /></a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/2816.ADL19.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/2816.ADL19.png"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/2816.ADL19.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/2816.ADL19.png" alt="" border="0" /></a></p>
<p>Analyse des Mentions&nbsp;:</p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/3107.ADL20.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/3107.ADL20.png"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/3107.ADL20.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/3107.ADL20.png" alt="" border="0" /></a></p>
<p>&nbsp;Analyse anim&eacute;e des WordCounts&nbsp;:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/0743.ADL21.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/0743.ADL21.png"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/0743.ADL21.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/0743.ADL21.png" alt="" border="0" /></a></p>
<p>Analyse des Htags&nbsp;:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/4188.ADL22.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/4188.ADL22.png"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/01/4188.ADL22.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-01/4188.ADL22.png" alt="" border="0" /></a></p>
<p style="text-align: justify;">Voici l&rsquo;adresse pour t&eacute;l&eacute;charger les Data Visualisation pour Power BI&nbsp;: <a href="https://app.powerbi.com/visuals">https://app.powerbi.com/visuals</a></p>
<p style="text-align: justify;">Bien que dans la d&eacute;monstration, les donn&eacute;es ont &eacute;t&eacute; upload&eacute;es sur un Blob Storage, la derni&egrave;re version de Power BI disponible &agrave; cette adresse permet d&rsquo;analyser les donn&eacute;es de l&rsquo;Azure Data Lake Store&nbsp;: <a href="http://blogs.msdn.com/b/powerbi/archive/2015/11/20/power-bi-desktop-expanding-list-of-enterprise-data-connectors.aspx">http://blogs.msdn.com/b/powerbi/archive/2015/11/20/power-bi-desktop-expanding-list-of-enterprise-data-connectors.aspx</a></p>
<p>&nbsp;</p>
<p><em><strong><a href="https://twitter.com/FranmerMS">Franck Mercier</a> et <a href="https://twitter.com/PulsWeb">Romain Casteres</a></strong></em></p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
  </channel>
</rss>