{"version":"1.1","schema_version":"1.1.0","plugin_version":"1.1.2","url":"https://tutos-gameserver.fr/2019/11/03/azure-data-lake-analytics-et-u-sql-un-bon-serveur-minecraft/","llm_html_url":"https://tutos-gameserver.fr/2019/11/03/azure-data-lake-analytics-et-u-sql-un-bon-serveur-minecraft/llm","llm_json_url":"https://tutos-gameserver.fr/2019/11/03/azure-data-lake-analytics-et-u-sql-un-bon-serveur-minecraft/llm.json","manifest_url":"https://tutos-gameserver.fr/llm-endpoints-manifest.json","language":"fr-FR","locale":"fr_FR","title":"Azure Data Lake Analytics et U-SQL\n\n &#8211; Un bon serveur Minecraft","site":{"name":"Tutos GameServer","url":"https://tutos-gameserver.fr/"},"author":{"id":1,"name":"Titanfall","url":"https://tutos-gameserver.fr/author/titanfall/"},"published_at":"2019-11-03T20:30:05+00:00","modified_at":"2019-11-03T20:30:05+00:00","word_count":5145,"reading_time_seconds":1544,"summary":"Points clés à retenir Azure Data Lake Analytics, avec Azure Data Lake Storage, est un composant clé de la solution Azure Data Lake de Microsoft. Actuellement, Azure Data Lake Analytics ne peut être utilisé que pour des charges de travail par lots. Pour les charges de travail de diffusion en continu et de traitement d&#39;événements, [&hellip;]","summary_points":["Points clés à retenir\n\nAzure Data Lake Analytics, avec Azure Data Lake Storage, est un composant clé de la solution Azure Data Lake de Microsoft.","Actuellement, Azure Data Lake Analytics ne peut être utilisé que pour des charges de travail par lots.","Pour les charges de travail de diffusion en continu et de traitement d&#39;événements, vous devez utiliser d&#39;autres solutions d&#39;analyse Big Data sur Azure telles que HDInsight ou Azure Databricks.","Azure Data Lake Analytics introduit un nouveau langage de requête et de traitement Big Data appelé U-SQL."],"topics":["Serveur minecraft"],"entities":[],"entities_metadata":[{"id":13,"name":"Serveur minecraft","slug":"serveur-minecraft","taxonomy":"category","count":2786,"url":"https://tutos-gameserver.fr/category/serveur-minecraft/"}],"tags":["Serveur minecraft"],"content_hash":"23fed9feed4f239f42a05129825bdccb","plain_text":"Points clés à retenir\n\nAzure Data Lake Analytics, avec Azure Data Lake Storage, est un composant clé de la solution Azure Data Lake de Microsoft. \nActuellement, Azure Data Lake Analytics ne peut être utilisé que pour des charges de travail par lots. Pour les charges de travail de diffusion en continu et de traitement d&#39;événements, vous devez utiliser d&#39;autres solutions d&#39;analyse Big Data sur Azure telles que HDInsight ou Azure Databricks.\nAzure Data Lake Analytics introduit un nouveau langage de requête et de traitement Big Data appelé U-SQL.\nU-SQL combine les concepts et les constructions de SQL et de C #; la puissance de U-SQL provient de la simplicité et de la nature déclarative de SQL, ainsi que de la puissance de programmation de C #, y compris les types et expressions riches.\nU-SQL fonctionne sur des données non structurées stockées dans des fichiers et fournit une vue schématisée par dessus. Il fournit également un système de catalogue de métadonnées général très similaire aux bases de données relationnelles pour les données structurées.\n\t \n\nMême si les technologies Big Data et Hadoop datent de plus de dix ans, les analyses Big Data et Big Data sont plus pertinentes que jamais. Alors que la version initiale de Hadoop ne pouvait gérer que des charges de travail par lots, l&#39;écosystème Hadoop dispose désormais d&#39;outils pour d&#39;autres cas d&#39;utilisation tels que les données structurées, les données en continu, le traitement des événements, les charges de travail d&#39;apprentissage automatique et le traitement des graphes.\nAlors que Hadoop écosystémique dispose de nombreux outils, tels que Hive, Impala, Pig, Storm et Mahout, pour fournir l’ensemble complet de fonctionnalités, le nouveau cadre d’analyse des données, tel que Spark, intègre une approche intégrée permettant de gérer différents types de charges de travail.\nAzure Data Lake Analytics, ou ADLA, est l&#39;un des moteurs d&#39;analyse Big Data les plus récents. ADLA est le service d’analyse à la demande entièrement géré de Microsoft sur le cloud Azure. Avec Azure Data Lake Storage et HDInsight, Azure Data Lake Analytics constitue l’offre complète de solutions et d’analyses de données hébergées sur le cloud de Microsoft. Azure Data Lake Analytics introduit un nouveau langage de requête et de traitement Big Data appelé U-SQL. Cet article fournit une vue d&#39;ensemble du langage U-SQL et de son utilisation dans les applications.\nAzure Data Lake\n\nAzure Data Lake est l’offre de Microsoft Data Lake sur le cloud public Azure et comprend plusieurs services, notamment le stockage, le traitement, l’analyse et d’autres services complémentaires tels que le magasin NoSQL, la base de données relationnelle, l’entrepôt de données et les outils ETL.\nServices de stockage\n\nAzure Data Lake Storage ou ADLS &#8211; Azure Data Lake Storage est un stockage en nuage évolutif spécialement conçu à des fins d&#39;analyse, basé sur le standard HDFS ouvert.\nAzure Blob Storage &#8211; Stockage d&#39;objet géré à usage général pour Azure.\n\nServices d&#39;analyse et de traitement\n\nAzure Data Lake Analytics ou ADLA &#8211; Service d&#39;analyse à la demande entièrement géré sur le cloud Azure. Prise en charge du nouveau langage de traitement de données volumineuses U-SQL, à l&#39;exception de .NET, R et Python.\nHDInsight– HDInsight fournit des clusters Hadoop gérés s&#39;exécutant sur Azure et est basé sur la distribution Hadoop de Hortonworks Data Platform (HDP). Prend en charge les outils écosystémiques Hadoop, notamment Spark, Hive, Map Reduced, HBase, Storm et Kafka.\nAzure Databricks: service d&#39;analyse sans serveur géré basé sur Azure Spark. Prend en charge une expérience de type bloc-notes semblable à Jupyter / iPython / Zeppelin, ainsi que d&#39;autres fonctionnalités de communication, et prend en charge Scala, Python, R et SQL.\n\nServices complémentaires\n\nBase de données Cosmos &#8211; Service de base de données NoSQL multi-modal géré sans serveur sur Azure.\nAzure SQL Database &#8211; Base de données relationnelle gérée sous forme de service / DBaaS sur Azure.\nAzure SQL Datawarehouse &#8211; Solution EDW (Enterprise Data Warehouse) basée sur le cloud s&#39;exécutant sur Azure. Il utilise des concepts familiers de systèmes distribués et d&#39;entreposage de données tels que le traitement massivement parallèle (MPP), le stockage en colonnes, la compression, etc. pour garantir des performances rapides pour les requêtes complexes.\nAzure Analysis Service &#8211; Un moteur d&#39;analyse entièrement géré sur Azure; aide à construire des modèles sémantiques sur le cloud. Il est basé sur SQL Server Analysis Server, un moteur d’analyse local basé sur SQL Server. À partir de maintenant, Azure Analysis Service ne prend en charge que les modèles tabulaires et non les modèles multidimensionnels (vous vous souvenez de cubes?).\nAzure Data Factory &#8211; Un service d&#39;intégration de données et d&#39;ETL basé sur le cloud. Il est sans serveur et fournit des connecteurs prêts à l&#39;emploi à plus de 50 systèmes / services en nuage ou sur site tels que Azure Blob Storage, Cosmos DB, Azure SQL Database, sur le serveur SQL / MySQL / PostgreSQL et même des services tiers tels que SFDC. , Dropbox, etc. Il peut déplacer des données entre services cloud, de systèmes sur site vers le cloud ou inversement.  \n\nLa figure 1 ci-dessous présente ces différentes offres de Microsoft sur le cloud Azure.\n[Click on the image to enlarge it]\n\nFigure 1: Services dans l’offre Azure Data Lake\nL&#39;architecture des applications Big Data et Data Lake sur la plate-forme cloud Azure est illustrée ci-dessous à la figure 2.\n[Click on the image to enlarge it]\n\nFigure 2: Architecture typique Big Data / Data Lake / ETL / Analytics sur Azure\nU-SQL Introduction\nU-SQL est le langage de requête et de traitement Big Data pour Azure Data Lake Analytics. C’est un nouveau langage créé par Microsoft, spécialement pour Azure Data Lake Analytics. U-SQL associe un langage déclaratif de type SQL à la puissance de programmation de C #, y compris les types et expressions riches en C #. U-SQL fournit les concepts de traitement de données volumineux bien connus, tels que «schéma à la lecture», «évaluation lazy», processeurs personnalisés et réducteurs. Les ingénieurs de données ayant déjà utilisé des langages tels que Pig, Hive et Spark trouveraient des similitudes avec ceux-ci. Les développeurs ayant des connaissances en C # et en SQL trouveraient U-SQL facile à apprendre et à utiliser.\n \nFigure 3: Liens entre U-SQL et C # et SQL\nBien que U-SQL utilise de nombreux concepts et mots-clés du langage SQL, il n’est pas compatible ANSI SQL. Il ajoute des capacités de gestion de fichiers non structurées à l&#39;aide de mots clés tels que EXTRAIT et SORTIE.\nActuellement, ADLA et U-SQL ne peuvent être utilisés que pour le traitement par lots. Il ne fournit pas d’analyse de flux ni de capacité de traitement des événements.\nConcepts et scripts U-SQL\n\nLa logique de requête et de traitement U-SQL est écrite dans des fichiers avec l&#39;extension &quot;.usql&quot; appelés scripts U-SQL. Visual Studio IDE ou le portail Azure peuvent être utilisés pour la création de ces scripts. Un projet U-SQL dans Visual Studio contient plusieurs scripts, code derrière des fichiers et assemblys de référence associés.\n\nLa figure 4 ci-dessous montre une capture d&#39;écran d&#39;un projet U-SQL dans Visual Studio IDE.\n \nFigure 4: Un projet U-SQL dans Visual Studio\n\nLes scripts U-SQL suivent les modèles ETL (Extract / Retrieve, Transform et Load / Output) bien connus, utilisés par d’autres langages de données volumineuses tels que Pig ou Spark. Il peut extraire des données de fichiers texte (fichiers texte non structurés et fichiers semi-structurés tels que JSON ou XML) et de tableaux.\nU-SQL impose un schéma lors de la récupération de données non structurées à partir de fichiers &#8211; cela facilite la réalisation d&#39;opérations similaires à celles de SQL.\nRowset est la structure de données principale de U-SQL. Il est utilisé pour extraire les données du fichier / de la table d’entrée et pour effectuer une transformation, ainsi que pour écrire dans la destination de sortie. Les ensembles de lignes ne sont pas ordonnés, ce qui aide Azure Data Analytics Engine à mettre en parallèle le traitement à l&#39;aide de plusieurs nœuds de traitement.\nLes scripts U-SQL peuvent utiliser des types, des opérateurs et des expressions à partir de C #.\nLes scripts U-SQL utilisent des constructions SQL comme SÉLECTIONNER, OÙ, JOINDRE et autres définitions de données (DDL) et langage de manipulation de données (DML). Tous les mots-clés doivent être écrits en majuscules seulement.\nPrend en charge les structures de flux de contrôle telles que IF ELSE, mais ne prend pas en charge les boucles While ou For.\n\n[Click on the image to enlarge it]\n\nFigure 5: Flux de données dans le script U-SQL\nCe qui est requis pour le développement local U-SQL\nMicrosoft fournit une configuration semblable à un émulateur pour essayer U-SQL et Azure Data Lake sur une machine locale ou un ordinateur portable. Pour cela, trois composants sont nécessaires:\n\nVisual Studio 2017 ou 2019\nKit de développement logiciel (SDK) Azure (version 2.7.1 ou ultérieure) qui accompagne les kits de développement logiciel côté client pour interagir avec les services cloud Azure et est nécessaire pour le stockage, les calculs, etc.\nAzure Data Lake et Stream Analytics Tools pour Visual Studio (version 2.4), qui est un plug-in pour le développement local U-SQL et Azure Data Lake. Une fois cette installation effectuée, les modèles de projet Azure Data Lake Analytics (et autres) pertinents sont ajoutés à Visual Studio, comme indiqué ci-dessous. Sélectionnez U-SQL Project pour commencer.\n\n[Click on the image to enlarge it]\n\nFigure 6: capture d&#39;écran du nouveau modèle de projet\nPremier script U-SQL\nPour le premier script U-SQL, nous utiliserions un ensemble de données qui constitue l’évaluation des restaurants à Bangalore, en Inde. Les données brutes sont dans des fichiers CSV et ont les colonnes suivantes:\n\nrest_id &#8211; Identifiant unique du restaurant\nnom &#8211; nom du restaurant\nadresse &#8211; adresse du restaurant\nonline_order &#8211; si la commande en ligne est disponible dans le restaurant ou non\nbook_table &#8211; indique si les options de réservation de table sont disponibles ou non\nrate &#8211; note générale du restaurant sur 5\nvotes &#8211; nombre total de votes pour le restaurant\nphone &#8211; numéro de téléphone du restaurant\nemplacement &#8211; quartier dans lequel se trouve le restaurant\nrest_type &#8211; type de restaurant (par exemple, restaurants décontractés, bouchées rapides, livraisons, boulangerie, salon de desserts, etc.)\nfavorite_dish_id &#8211; identifiant du plat préféré du restaurant\n\nLe tableau ci-dessous montre les exemples de données.\n[Click on the image to enlarge it]\n\nFigure 7: Tableau de classement des restaurants avec exemple de données\nLe script ci-dessous lit les données de classification des restaurants à partir d&#39;un fichier CSV et les écrit dans un fichier TSV. Il n’utilise pas encore d’étape de transformation.\n\r\n// Script - RestaurantScript.usql\r\n// Les données sont extraites du fichier d&#39;entrée (CSV) et stockées dans la variable de jeu de lignes d&#39;employés\r\n@restaurant_ratings =\r\n    EXTRACT rest_id int,\r\n            chaîne de nom,\r\n            chaîne d&#39;adresse,\r\n            online_order bool,\r\n            book_order bool,\r\n            tarif double,\r\n            votes int,\r\n            chaîne de téléphone,\r\n            chaîne de localisation,\r\n            chaîne rest_type,\r\n            favorite_dish_id int\r\n    FROM &quot;/Samples/Data/restaurants_ratings.csv&quot;\r\n    USING Extractors.Csv ();\r\n\r\n// Aucune transformation - les données extraites sont chargées telles quelles dans le fichier de sortie (TSV)\r\nSORTIE @restaurant_ratings\r\nTO &quot;/output/restaurants_out.tsv&quot;\r\nUSING Outputters.Tsv ();\nLes scripts écrivent l&#39;intégralité des ensembles de lignes de restaurant dans le fichier de sortie dans un format séparé par des tabulations.\nNotez que les types de données C # sont utilisés ici (par exemple, chaîne et non car / varchar comme généralement utilisé dans SQL). Nous pouvons non seulement utiliser les types de données de C #, mais aussi les expressions et tous les avantages d&#39;un langage de programmation expressif.\nScript U-SQL avec étape de transformation\n\r\n// Script - RestaurantScript.usql\r\n// Variables pour le nom et les chemins du fichier d&#39;entrée et de sortie\r\nDECLARE @inputFile = &quot;/Samples/Data/restaurants_ratings.csv&quot;;\r\nDECLARE @outputFile = &quot;/output/restaurants_out.tsv&quot;;\r\n\r\n// Les données sont extraites du fichier d&#39;entrée (CSV) et stockées dans la variable de jeu de lignes d&#39;employés\r\n@restaurant_ratings =\r\n    EXTRACT rest_id int,\r\n            chaîne de nom,\r\n            chaîne d&#39;adresse,\r\n            online_order bool,\r\n            book_order bool,\r\n            tarif double,\r\n            votes int,\r\n            chaîne de téléphone,\r\n            chaîne de localisation,\r\n            chaîne rest_type,\r\n            favorite_dish_id int\r\n    DE @inputFile\r\n    UTILISER Extractors.Csv (skipFirstNRows: 1); // Ignorer la première ligne contenant des en-têtes\r\n\r\n// Étape de transformation: les colonnes sont renommées et aucune ligne n&#39;est filtrée\r\n@bestOnlineRestaurants =\r\n    SELECT name.ToUpper () AS Name, // Conversion des noms en majuscules\r\n           rate AS Rating,\r\n           online_order AS Online Ordre,\r\n           phone AS Phone,\r\n           emplacement AS Location,\r\n           Rest_type AS Catégorie,\r\n           favorite_dish_id AS FavoriteDishId\r\n    DE @restaurants_rating\r\n    WHERE rate&gt; 4 &amp;&amp; online_order == true;\r\n\r\n// Charge les données transformées dans le fichier de sortie\r\nSORTIE @bestOnlineRestaurants\r\nTO @outputFile\r\nUSING Outputters.Tsv (outputHeader: true); // Écrire les noms de colonnes / en-têtes dans le fichier de sortie\nÉtendre l&#39;expression U-SQL à l&#39;aide d&#39;un code personnalisé\nU-SQL prend en charge les expressions personnalisées écrites en code C #. Le code C # réside dans le code derrière les fichiers. Notez que dans le diagramme ci-dessous, chaque fichier .usql est associé à un fichier .usql.cs contenant le code C # personnalisé.\n \nFigure 8: Projet U-SQL avec plusieurs scripts et code derrière des fichiers\n\r\n// Code derrière le fichier C # - RestaurantScript.usql.cs\r\nespace de noms UsqlApp1\r\n\r\n    Aides publiques de classe statique\r\n    \r\n        chaîne publique statique FormatRestaurantName (nom de la chaîne, emplacement de la chaîne, chaîne restaurantType)\r\n        \r\n            return name + &quot;(&quot; + restaurantType + &quot;) -&quot; + location;\r\n   // Notez que U-SQL ne supporte pas encore la nouvelle interpolation de chaîne C # 7.0\r\n               // return $ &quot;name (restaurantType) - location&quot;;\r\n        \r\n    \r\n\r\n\r\n// Script - RestaurantScript.usql\r\n// Variables pour le nom et les chemins du fichier d&#39;entrée et de sortie\r\nDECLARE @inputFile = &quot;/Samples/Data/restaurants_ratings.csv&quot;;\r\nDECLARE @outputFile = &quot;/output/restaurants_out.tsv&quot;;\r\n\r\n// Les données sont extraites du fichier d&#39;entrée (CSV) et stockées dans la variable de jeu de lignes d&#39;employés\r\n@restaurant_ratings =\r\n    EXTRACT rest_id int,\r\n            chaîne de nom,\r\n            chaîne d&#39;adresse,\r\n            online_order bool,\r\n            book_order bool,\r\n            tarif double,\r\n            votes int,\r\n            chaîne de téléphone,\r\n            chaîne de localisation,\r\n            chaîne rest_type,\r\n            favorite_dish_id int\r\n    DE @inputFile\r\n    UTILISER Extractors.Csv (skipFirstNRows: 1); // Ignorer la première ligne contenant des en-têtes\r\n\r\n// Étape de transformation: les colonnes sont renommées et aucune ligne n&#39;est filtrée\r\n@bestOnlineRestaurants =\r\n    SELECT USQLApp1.Helpers.FormatRestaurantName (nom, emplacement, type de repos), nom AS,\r\n           rate AS Rating,\r\n           online_order AS Online Ordre,\r\n           phone AS Phone,\r\n           favorite_dish AS FavoriteDish\r\n    DE @restaurant_ratings\r\n    WHERE rate&gt; 4 &amp;&amp; online_order == true;\r\n\r\n// Charge les données transformées dans le fichier de sortie\r\nSORTIE @bestOnlineRestaurants\r\nTO @outputFile\r\nUSING Outputters.Tsv (outputHeader: true); // Écrire les noms de colonnes / en-têtes dans le fichier de sortie\nScript U-SQL effectuant des jointures\nU-SQL prend en charge les jointures entre deux jeux de données différents. Il fournit une jointure interne, une jointure externe, une jointure croisée, etc.\nDans l&#39;extrait de code suivant, nous effectuons une jointure interne entre un jeu de données restaurants et un jeu de données d&#39;ingrédients de plat.\n\r\n// Script - RestaurantScript.usql\r\nDECLARE @inputFile = &quot;/Samples/Data/restaurants_ratings.csv&quot;;\r\nDECLARE @outputFile = &quot;/output/restaurants_out.tsv&quot;;\r\n\r\n// Les données sont extraites du fichier d&#39;entrée (CSV) et stockées dans la variable de jeu de lignes d&#39;employés\r\n@restaurant_ratings = // Code non affiché pour des raisons de brièveté. Exactement le même code que l&#39;exemple ci-dessus\r\n\r\n// Étape de transformation: les colonnes sont renommées et aucune ligne n&#39;est filtrée\r\n@bestOnlineRestaurants = // Code non affiché par souci de concision. Exactement le même code que l&#39;exemple ci-dessus\nMaintenant, nous aurions besoin de données sur les plats et leurs ingrédients. Bien que ces données soient généralement présentes dans une source externe, nous utiliserions ici un ensemble de lignes en mémoire.\n\r\n// Déclarez un jeu de lignes en mémoire pour les ingrédients de plat contenant l&#39;identifiant du plat, le nom du plat et // les ingrédients.\r\n\r\n@dish_ingredients =\r\n    SÉLECTIONNER\r\n        * DE\r\n              (VALEURS\r\n               (1, &quot;Biryani&quot;, &quot;Riz, épices indiennes, légumes, viande, oeuf, yaourt, fruits secs&quot;),\r\n               (2, &quot;Masala Dosa&quot;, &quot;riz noir décortiqué, graines de moutarde, graines de fenugrec, sel, huile végétale, pommes de terre, oignons, piments verts, feuilles de curry, curcuma&quot;),\r\n               (3, &quot;Cake&quot;, &quot;sucre, beurre, oeuf, cacao, crème, sel&quot;)\r\n              ) AS D (DishId, Dish, Ingredients);\r\n// Effectuer une jointure interne entre @bestOnlineRestaurants et @dish_ingredients rangset\r\n@rs_innerJn = SELECT\r\n        r.Nom,\r\n        r.Évaluation,\r\n        i.Dish,\r\n        Ingrédients\r\nDE @bestOnlineRestaurants AS r\r\nINNER JOIN @dish_ingredients AS i\r\nON r.FavoriteDishId == i.DishId;\r\n\r\n// Ecrire dans le fichier de sortie\r\nSORTIE @rs_innerJn\r\nTO @outputFile\r\nUSING Outputters.Tsv (outputHeader: true);\nCela renvoie les restaurants ayant les cotes les plus élevées, ainsi que les détails des ingrédients de son plat préféré, qui sont récupérés en rejoignant l&#39;ensemble de lignes de détails de restaurant avec un ensemble de lignes d&#39;ingrédients de plat par le biais d&#39;une jointure interne.\n[Click on the image to enlarge it]\n\nFigure 9: Projet U-SQL avec plusieurs scripts et code derrière des fichiers\nScript U-SQL utilisant des fonctions intégrées\nU-SQL fournit une multitude de fonctions intégrées, notamment des fonctions d&#39;agrégat, d&#39;analyse, de classement, etc. Vous trouverez ci-dessous quelques exemples.\n\n\n\nType de fonction\n        Exemple\n\n\n\n\nFonctions d&#39;agrégat\nAVG, SUM, COUNT, STDEV (écart type), MIN, MAX, etc.\n\n\nFonctions analytiques\nFIRST_VALUE, LAST_VALUE, LAG, LEAD, PERCENTILE_CONT etc.\n\n\nFonctions de classement\nRANK, DENSE_RANK, NTILE, ROW_NUMBER, etc.\n\n\n\nDans le script ci-dessous, nous utilisons des fonctions d&#39;agrégation intégrées telles que MIN, MAX, AVG et STDEV pour le restaurant.\n\r\n// Déclarer des variables pour les fichiers d&#39;entrée et de sortie\r\nDECLARE @inputFile = &quot;/Samples/Data/restaurants_raw_data.csv&quot;;\r\nDECLARE @outputFile = &quot;/output/restaurants_aggr.csv&quot;;\r\n\r\n@restaurant_ratings =\r\n    EXTRACT rest_id int,\r\n            chaîne de nom,\r\n            chaîne d&#39;adresse,\r\n            online_order bool,\r\n            book_order bool,\r\n            tarif double,\r\n            votes int,\r\n            chaîne de téléphone,\r\n            chaîne de localisation,\r\n            chaîne rest_type,\r\n            favorite_dish_id int\r\n    DE @inputFile\r\n    UTILISER Extractors.Csv (skipFirstNRows: 1);\r\n\r\n@output =\r\n    SÉLECTIONNER\r\n           rest_type AS RestaurantType,\r\n           MIN (rate) AS MinRating,\r\n           MAX (rate) AS MaxRating,\r\n           AVG (rate) AS Moyenne,\r\n           STDEV (rate) AS StdDevRating\r\n    DE @restaurants_ratings\r\n    GROUP BY rest_type;\r\n\r\n// Ecrire dans le fichier de sortie\r\nOUTPUT @output\r\nTO @outputFile\r\nUSING Outputters.Csv (outputHeader: true);\nCatalogue U-SQL\nJusqu&#39;à présent, nous nous sommes concentrés sur les données non structurées et semi-structurées lues à partir de fichiers et écrites dans des fichiers. L’une des forces de U-SQL est d’exploiter des données non structurées stockées dans des fichiers et de fournir une vue schématisée au-dessus de données non structurées, mais il peut gérer des données structurées. Il fournit un système de catalogue de métadonnées général comme Hive. Vous trouverez ci-dessous une liste des principaux objets pris en charge par U-SQL:\n\nBase de données: U-SQL prend en charge des bases de données similaires à d’autres systèmes Big Data comme Hive.\nSchéma de base de données: Les objets liés au groupe de schémas de base de données présents dans une base de données, exactement comme des bases de données relationnelles.\nTables et index: Les tables sont des conteneurs pour contenir des données structurées. Les tables peuvent contenir des colonnes de différents types de données. Les données de la table sont stockées dans des fichiers. Les tables offrent des avantages supplémentaires au-delà des vues schématisées par rapport aux fichiers non structurés tels que l&#39;indexation, le partitionnement des données de table en plusieurs compartiments, chaque compartiment étant sauvegardé par un fichier.\nLes vuesLes vues U-SQL sont de deux types: (i) les vues basées sur une table U-SQL et les vues (ii) pointant vers un fichier et utilisant EXTRACT pour obtenir les données.\nLes fonctions: Prend en charge les fonctions scalaires et les valeurs de table.\nProcédures: Les procédures ressemblent aux fonctions mais ne renvoient aucune valeur.\nAssemblées: U-SQL prend en charge le stockage des assemblys .NET qui étend les scripts U-SQL avec une expression personnalisée.\n\nMaintenant, dans notre exemple d’évaluation de la note, nous aimerions analyser davantage les restaurants ayant une faible note. Pour ce faire, nous aimerions déplacer tous les restaurants avec moins de quatre évaluations vers une table U-SQL pour une analyse plus approfondie.\nBase de données U-SQL, tables et index\nDans l&#39;exemple ci-dessous. nous allons créer une base de données U-SQL qui sera créée dans la base de données avec une clé de schéma et une clé d&#39;index. Nous ne créons pas de schéma spécifiquement ici. La table sera donc créée sous le schéma par défaut ‘dbo’ (Remember SQL Server?) Dans la base de données.\nL&#39;exemple de code ci-dessous montre comment créer cette table.\n\r\n// Script - RestaurantScript.usql\r\nDECLARE @inputFile = &quot;/Samples/Data/restaurants_ratings.csv&quot;;\r\nDECLARE @outputFile = &quot;/output/restaurants_out.tsv&quot;;\r\n\r\n// Les données sont extraites du fichier d&#39;entrée (CSV) et stockées dans la variable de jeu de lignes d&#39;employés\r\n@restaurant_ratings = // Code non affiché pour des raisons de brièveté. Exactement le même code que l&#39;exemple ci-dessus\r\n\r\n// Étape de transformation: Ne filtrez que les restaurants notés moins de 4\r\n@lowRatedRestaurants =\r\n    SELECT rest_id AS RestaurantId,\r\n           nom AS Nom,\r\n           rate AS Rating,\r\n           online_order AS Online Ordre,\r\n           phone AS Phone,\r\n           emplacement AS Location,\r\n           Rest_type AS Catégorie,\r\n           favorite_dish_id AS FavoriteDishId\r\n    DE @restaurants_ratings\r\n    O taux &lt;4;\r\n\r\n// Insérer les détails de restaurant classés faibles dans le catalogue U-SQL\r\n// Crée la base de données si elle n&#39;existe pas déjà\r\nCREER UNE BASE DE DONNEES SI N&#39;EXISTE PAS RestaurantsDW;\r\nUTILISER RestaurantsDW;\r\n\r\n// Supprime la table si elle existe\r\nDROP TABLE SI EXISTS dbo.LowRatedRestaurants;\r\n\r\n// Crée la table en spécifiant le schéma de colonne et l&#39;index\r\nCREATE TABLE dbo.LowRatedRestaurants (\r\n    RestaurantId int,\r\n    Chaîne de nom,\r\n    INDEX idx\r\n        CLUSTERED (Nom DESC)\r\n        DISTRIBUÉ PAR HASH (Nom),\r\n    Note double,\r\n    OnlineOrder bool,\r\n    Chaîne téléphonique,\r\n    Chaîne de localisation,\r\n    Chaîne de catégorie,\r\n    FavoriteDishId int\r\n)\r\n\r\n// Insérer les données du jeu de lignes dans la table U-SQL créée juste avant\r\nINSÉRER DANS dbo.LowRatedRestaurants\r\nSELECT * FROM @lowRatedRestaurants;\nVues U-SQL\nLes vues U-SQL ressemblent aux vues de base de données: elles ne stockent pas les données physiquement et ne fournissent pas une vue des données stockées dans des tables ou des fichiers. Les vues peuvent être basées sur une table ou sur une extraction sur des fichiers.\nL’exemple de script ci-dessous montre comment créer une vue basée sur une extraction.\n\r\nUTILISEZ LA BASE DE DONNEES RestaurantsDW;\r\n// Supprimer la vue si elle existe déjà\r\nDROP VIEW SI EXISTS RestaurantsView;\r\n\r\n// Créer la vue basée sur une extraction\r\nCREATE VIEW RestaurantsVoir AS\r\n    EXTRACT rest_id int,\r\n            chaîne de nom,\r\n            chaîne d&#39;adresse,\r\n            online_order bool,\r\n            book_order bool,\r\n            tarif double,\r\n            votes int,\r\n            chaîne de téléphone,\r\n            chaîne de localisation,\r\n            chaîne rest_type,\r\n            favorite_dish_id int\r\n    FROM &quot;/Samples/Data/restaurants_raw_data.csv&quot;\r\n    UTILISER Extractors.Csv (skipFirstNRows: 1); // Ignorer la première ligne contenant des en-têtes\nPour exécuter la vue, le code suivant est utilisé:\n\r\n@result = SELECT * FROM RestaurantsDW.dbo.RestaurantsView;\r\nOUTPUT @result\r\nTO &quot;/output/Restaurants_View.csv&quot;\r\nUSING Outputters.Csv ();\nFonctions évaluées de table U-SQL (TVF)\nU-SQL prend en charge la fonction scalaire et la fonction de valeur de table (TVF). Les fonctions prennent zéro à plusieurs arguments et renvoient soit une valeur scalaire unique, soit une table, qui est un ensemble de données composé de colonnes et de lignes.\nL&#39;extrait de code ci-dessous montre d&#39;abord comment créer un fichier TVF, puis comment l&#39;invoquer. Il faut un seul paramètre et retourne une table.\n\r\nCREER UNE BASE DE DONNEES SI N&#39;EXISTE PAS RestaurantsDW;\r\nUTILISEZ LA BASE DE DONNEES RestaurantsDW;\r\n\r\nDROP FUNCTION SI EXISTS tvf_SearchRestaurants;\r\n\r\n// Créer la fonction de valeur de table qui accepte le type de restaurant en tant que chaîne\r\n// et retourne une table contenant les détails du restaurant correspondant.\r\nCREATE FUNCTION tvf_SearchRestaurants (chaîne @RestaurantType)\r\nRETURNS @searchRestaurants TABLE (id_distant, chaîne de nom, chaîne d’adresse,\r\n                                    online_order bool, book_order bool, tarif double,\r\n                                    votes int, chaîne téléphonique, chaîne d&#39;emplacement,\r\n                                    Rest_type string, favorite_dish_id int)\r\n    COMME\r\nCOMMENCER\r\n    @allRestaurants =\r\n        EXTRACT rest_id int,\r\n            chaîne de nom,\r\n            chaîne d&#39;adresse,\r\n            online_order bool,\r\n            book_order bool,\r\n            tarif double,\r\n            votes int,\r\n            chaîne de téléphone,\r\n            chaîne de localisation,\r\n            chaîne rest_type,\r\n            favorite_dish_id int\r\n        FROM &quot;/Samples/Data/restaurants_raw_data.csv&quot;\r\n        UTILISER Extractors.Csv (skipFirstNRows: 1); // Ignorer la première ligne contenant des en-têtes\r\n\r\n    @searchRestaurants =\r\n        SELECT *\r\n        DE @allRestaurants\r\n        WHERE rest_type == @RestaurantType;\r\n\r\nREVENIR;\r\nFIN;\nInvoquons maintenant la fonction table value que nous venons de créer et transmettons le paramètre ‘Bakery’ en tant que paramètre. Il renverrait tous les restaurants de type Bakery.\n\r\nSORTIE RestaurantsDW.dbo.tvf_SearchRestaurants (&quot;Bakery&quot;)\r\nTO &quot;/output/BakeryRestaurants.csv&quot;\r\nUSING Outputters.Csv ();\nÉtude de cas\nL&#39;étude de cas suivante met en évidence l&#39;utilisation du langage U-SQL et Azure Data Lake Analytics dans un vaste programme de transformation numérique stratégique pluriannuel. Au cours de l’année, le client, acteur majeur de l’assurance, a acquis de multiples sociétés d’assurance et de nombreux courtiers. Il a par conséquent utilisé plusieurs systèmes d’engagement de la clientèle pour interagir avec ses clients par courrier électronique, SMS / SMS, discussion en ligne / mobile et appels (entrants et sortants). . En raison de l&#39;approche fracturée, il est devenu très difficile pour le client d&#39;analyser les données d&#39;interaction client.\nAlors que le client s’engageait dans la construction d’une plate-forme omnicanal et d’un centre de contact intégré pour le service à la clientèle via différents canaux (e-mail, SMS, chat, appels vocaux de centre de contact), son choix tactique immédiat consistait à analyser les données provenant de diverses sources. e-mail, texte / SMS, chat et journal des appels.\nUne solution basée sur Azure Data Lake a été développée pour répondre au besoin immédiat d’analyser des données de différents systèmes, dans différents formats. Les données de différents systèmes sources ont été transférées vers Azure Data Lake Store, puis analysées à l&#39;aide d&#39;Azure Data Lake Analysis et de U-SQL.\n\nIngérer &#8211; Au cours de la phase d&#39;acquisition, les données non structurées et structurées provenant de deux sources différentes (données de courrier électronique / texte / conversation ainsi que le journal des appels) sont transférées vers Azure à l&#39;aide du service ETL Azure Data Factory.\nle magasin &#8211; Les données brutes sont stockées sur Azure Data Lake Storage / ADLS sous forme de fichiers à plat.\nAnalyser &#8211; Différents types d’analyses, notamment le filtrage, les jointures, l’agrégation, le fenêtrage, etc. sont effectués en U-SQL.\nModèle et servir &#8211; Les données analysées sont stockées dans des tables structurées pour une utilisation ultérieure à partir de rapports Power BI / personnalisés par utilisateur.\n\n[Click on the image to enlarge it]\n\nFigure 10: Pipeline Azure Data Analytics\nConclusions\nAzure Data Lake Storage et Analytics se sont révélés être une excellente option pour la réalisation de charges de travail de données volumineuses et d’analyses en parallèle avec Azure HDInsight et Azure Databricks. Bien qu’il en soit encore à ses débuts et qu’il ne dispose pas de capacités de streaming et de traitement des événements, son pouvoir réside dans le nouveau langage U-SQL, qui associe la simplicité et l’omniprésence de SQL au phare de Mirosoft, le puissant langage C #. De plus, les outils de développement de Microsoft tels que Visual Studio et les capacités de développement / test locales en font un puissant concurrent dans le domaine des données volumineuses et de l’analyse.\nA propos de l&#39;auteur\nAniruddha Chakrabarti a 19 ans d&#39;expérience dans les domaines de la stratégie, du conseil, du développement de produits et des services informatiques. Il possède de l&#39;expérience dans diverses fonctions, notamment l&#39;architecture de solution, les préventes, l&#39;architecture technologique, le leadership dans la livraison et la gestion de programmes. En tant que AVP du numérique dans Mphasis, Chakrabarti est responsable des préventes, des solutions, des RFP / RFI et de l’architecture technologique de grandes transactions et programmes numériques. Avant de rejoindre Mphasis, il a occupé divers postes de direction et d’architecture chez Accenture, Microsoft, Target, Misys et Cognizant. Ses domaines de prédilection sont le cloud, les mégadonnées et les analyses, l&#39;AI / ML, la PNL, l&#39;IoT, les systèmes distribués, les microservices et les DevOps.\n\n\nClick to rate this post!\r\n                                   \r\n                               [Total: 0  Average: 0]","paragraphs":["Points clés à retenir","Azure Data Lake Analytics, avec Azure Data Lake Storage, est un composant clé de la solution Azure Data Lake de Microsoft. \nActuellement, Azure Data Lake Analytics ne peut être utilisé que pour des charges de travail par lots. Pour les charges de travail de diffusion en continu et de traitement d&#39;événements, vous devez utiliser d&#39;autres solutions d&#39;analyse Big Data sur Azure telles que HDInsight ou Azure Databricks.\nAzure Data Lake Analytics introduit un nouveau langage de requête et de traitement Big Data appelé U-SQL.\nU-SQL combine les concepts et les constructions de SQL et de C #; la puissance de U-SQL provient de la simplicité et de la nature déclarative de SQL, ainsi que de la puissance de programmation de C #, y compris les types et expressions riches.\nU-SQL fonctionne sur des données non structurées stockées dans des fichiers et fournit une vue schématisée par dessus. Il fournit également un système de catalogue de métadonnées général très similaire aux bases de données relationnelles pour les données structurées.","Même si les technologies Big Data et Hadoop datent de plus de dix ans, les analyses Big Data et Big Data sont plus pertinentes que jamais. Alors que la version initiale de Hadoop ne pouvait gérer que des charges de travail par lots, l&#39;écosystème Hadoop dispose désormais d&#39;outils pour d&#39;autres cas d&#39;utilisation tels que les données structurées, les données en continu, le traitement des événements, les charges de travail d&#39;apprentissage automatique et le traitement des graphes.\nAlors que Hadoop écosystémique dispose de nombreux outils, tels que Hive, Impala, Pig, Storm et Mahout, pour fournir l’ensemble complet de fonctionnalités, le nouveau cadre d’analyse des données, tel que Spark, intègre une approche intégrée permettant de gérer différents types de charges de travail.\nAzure Data Lake Analytics, ou ADLA, est l&#39;un des moteurs d&#39;analyse Big Data les plus récents. ADLA est le service d’analyse à la demande entièrement géré de Microsoft sur le cloud Azure. Avec Azure Data Lake Storage et HDInsight, Azure Data Lake Analytics constitue l’offre complète de solutions et d’analyses de données hébergées sur le cloud de Microsoft. Azure Data Lake Analytics introduit un nouveau langage de requête et de traitement Big Data appelé U-SQL. Cet article fournit une vue d&#39;ensemble du langage U-SQL et de son utilisation dans les applications.\nAzure Data Lake","Azure Data Lake est l’offre de Microsoft Data Lake sur le cloud public Azure et comprend plusieurs services, notamment le stockage, le traitement, l’analyse et d’autres services complémentaires tels que le magasin NoSQL, la base de données relationnelle, l’entrepôt de données et les outils ETL.\nServices de stockage","Azure Data Lake Storage ou ADLS &#8211; Azure Data Lake Storage est un stockage en nuage évolutif spécialement conçu à des fins d&#39;analyse, basé sur le standard HDFS ouvert.\nAzure Blob Storage &#8211; Stockage d&#39;objet géré à usage général pour Azure.","Services d&#39;analyse et de traitement","Azure Data Lake Analytics ou ADLA &#8211; Service d&#39;analyse à la demande entièrement géré sur le cloud Azure. Prise en charge du nouveau langage de traitement de données volumineuses U-SQL, à l&#39;exception de .NET, R et Python.\nHDInsight– HDInsight fournit des clusters Hadoop gérés s&#39;exécutant sur Azure et est basé sur la distribution Hadoop de Hortonworks Data Platform (HDP). Prend en charge les outils écosystémiques Hadoop, notamment Spark, Hive, Map Reduced, HBase, Storm et Kafka.\nAzure Databricks: service d&#39;analyse sans serveur géré basé sur Azure Spark. Prend en charge une expérience de type bloc-notes semblable à Jupyter / iPython / Zeppelin, ainsi que d&#39;autres fonctionnalités de communication, et prend en charge Scala, Python, R et SQL.","Services complémentaires","Base de données Cosmos &#8211; Service de base de données NoSQL multi-modal géré sans serveur sur Azure.\nAzure SQL Database &#8211; Base de données relationnelle gérée sous forme de service / DBaaS sur Azure.\nAzure SQL Datawarehouse &#8211; Solution EDW (Enterprise Data Warehouse) basée sur le cloud s&#39;exécutant sur Azure. Il utilise des concepts familiers de systèmes distribués et d&#39;entreposage de données tels que le traitement massivement parallèle (MPP), le stockage en colonnes, la compression, etc. pour garantir des performances rapides pour les requêtes complexes.\nAzure Analysis Service &#8211; Un moteur d&#39;analyse entièrement géré sur Azure; aide à construire des modèles sémantiques sur le cloud. Il est basé sur SQL Server Analysis Server, un moteur d’analyse local basé sur SQL Server. À partir de maintenant, Azure Analysis Service ne prend en charge que les modèles tabulaires et non les modèles multidimensionnels (vous vous souvenez de cubes?).\nAzure Data Factory &#8211; Un service d&#39;intégration de données et d&#39;ETL basé sur le cloud. Il est sans serveur et fournit des connecteurs prêts à l&#39;emploi à plus de 50 systèmes / services en nuage ou sur site tels que Azure Blob Storage, Cosmos DB, Azure SQL Database, sur le serveur SQL / MySQL / PostgreSQL et même des services tiers tels que SFDC. , Dropbox, etc. Il peut déplacer des données entre services cloud, de systèmes sur site vers le cloud ou inversement.","La figure 1 ci-dessous présente ces différentes offres de Microsoft sur le cloud Azure.\n[Click on the image to enlarge it]","Figure 1: Services dans l’offre Azure Data Lake\nL&#39;architecture des applications Big Data et Data Lake sur la plate-forme cloud Azure est illustrée ci-dessous à la figure 2.\n[Click on the image to enlarge it]","Figure 2: Architecture typique Big Data / Data Lake / ETL / Analytics sur Azure\nU-SQL Introduction\nU-SQL est le langage de requête et de traitement Big Data pour Azure Data Lake Analytics. C’est un nouveau langage créé par Microsoft, spécialement pour Azure Data Lake Analytics. U-SQL associe un langage déclaratif de type SQL à la puissance de programmation de C #, y compris les types et expressions riches en C #. U-SQL fournit les concepts de traitement de données volumineux bien connus, tels que «schéma à la lecture», «évaluation lazy», processeurs personnalisés et réducteurs. Les ingénieurs de données ayant déjà utilisé des langages tels que Pig, Hive et Spark trouveraient des similitudes avec ceux-ci. Les développeurs ayant des connaissances en C # et en SQL trouveraient U-SQL facile à apprendre et à utiliser.\n \nFigure 3: Liens entre U-SQL et C # et SQL\nBien que U-SQL utilise de nombreux concepts et mots-clés du langage SQL, il n’est pas compatible ANSI SQL. Il ajoute des capacités de gestion de fichiers non structurées à l&#39;aide de mots clés tels que EXTRAIT et SORTIE.\nActuellement, ADLA et U-SQL ne peuvent être utilisés que pour le traitement par lots. Il ne fournit pas d’analyse de flux ni de capacité de traitement des événements.\nConcepts et scripts U-SQL","La logique de requête et de traitement U-SQL est écrite dans des fichiers avec l&#39;extension &quot;.usql&quot; appelés scripts U-SQL. Visual Studio IDE ou le portail Azure peuvent être utilisés pour la création de ces scripts. Un projet U-SQL dans Visual Studio contient plusieurs scripts, code derrière des fichiers et assemblys de référence associés.","La figure 4 ci-dessous montre une capture d&#39;écran d&#39;un projet U-SQL dans Visual Studio IDE.\n \nFigure 4: Un projet U-SQL dans Visual Studio","Les scripts U-SQL suivent les modèles ETL (Extract / Retrieve, Transform et Load / Output) bien connus, utilisés par d’autres langages de données volumineuses tels que Pig ou Spark. Il peut extraire des données de fichiers texte (fichiers texte non structurés et fichiers semi-structurés tels que JSON ou XML) et de tableaux.\nU-SQL impose un schéma lors de la récupération de données non structurées à partir de fichiers &#8211; cela facilite la réalisation d&#39;opérations similaires à celles de SQL.\nRowset est la structure de données principale de U-SQL. Il est utilisé pour extraire les données du fichier / de la table d’entrée et pour effectuer une transformation, ainsi que pour écrire dans la destination de sortie. Les ensembles de lignes ne sont pas ordonnés, ce qui aide Azure Data Analytics Engine à mettre en parallèle le traitement à l&#39;aide de plusieurs nœuds de traitement.\nLes scripts U-SQL peuvent utiliser des types, des opérateurs et des expressions à partir de C #.\nLes scripts U-SQL utilisent des constructions SQL comme SÉLECTIONNER, OÙ, JOINDRE et autres définitions de données (DDL) et langage de manipulation de données (DML). Tous les mots-clés doivent être écrits en majuscules seulement.\nPrend en charge les structures de flux de contrôle telles que IF ELSE, mais ne prend pas en charge les boucles While ou For.","[Click on the image to enlarge it]","Figure 5: Flux de données dans le script U-SQL\nCe qui est requis pour le développement local U-SQL\nMicrosoft fournit une configuration semblable à un émulateur pour essayer U-SQL et Azure Data Lake sur une machine locale ou un ordinateur portable. Pour cela, trois composants sont nécessaires:","Visual Studio 2017 ou 2019\nKit de développement logiciel (SDK) Azure (version 2.7.1 ou ultérieure) qui accompagne les kits de développement logiciel côté client pour interagir avec les services cloud Azure et est nécessaire pour le stockage, les calculs, etc.\nAzure Data Lake et Stream Analytics Tools pour Visual Studio (version 2.4), qui est un plug-in pour le développement local U-SQL et Azure Data Lake. Une fois cette installation effectuée, les modèles de projet Azure Data Lake Analytics (et autres) pertinents sont ajoutés à Visual Studio, comme indiqué ci-dessous. Sélectionnez U-SQL Project pour commencer.","[Click on the image to enlarge it]","Figure 6: capture d&#39;écran du nouveau modèle de projet\nPremier script U-SQL\nPour le premier script U-SQL, nous utiliserions un ensemble de données qui constitue l’évaluation des restaurants à Bangalore, en Inde. Les données brutes sont dans des fichiers CSV et ont les colonnes suivantes:","rest_id &#8211; Identifiant unique du restaurant\nnom &#8211; nom du restaurant\nadresse &#8211; adresse du restaurant\nonline_order &#8211; si la commande en ligne est disponible dans le restaurant ou non\nbook_table &#8211; indique si les options de réservation de table sont disponibles ou non\nrate &#8211; note générale du restaurant sur 5\nvotes &#8211; nombre total de votes pour le restaurant\nphone &#8211; numéro de téléphone du restaurant\nemplacement &#8211; quartier dans lequel se trouve le restaurant\nrest_type &#8211; type de restaurant (par exemple, restaurants décontractés, bouchées rapides, livraisons, boulangerie, salon de desserts, etc.)\nfavorite_dish_id &#8211; identifiant du plat préféré du restaurant","Le tableau ci-dessous montre les exemples de données.\n[Click on the image to enlarge it]","Figure 7: Tableau de classement des restaurants avec exemple de données\nLe script ci-dessous lit les données de classification des restaurants à partir d&#39;un fichier CSV et les écrit dans un fichier TSV. Il n’utilise pas encore d’étape de transformation.","// Script - RestaurantScript.usql\n// Les données sont extraites du fichier d&#39;entrée (CSV) et stockées dans la variable de jeu de lignes d&#39;employés\n@restaurant_ratings =\n    EXTRACT rest_id int,\n            chaîne de nom,\n            chaîne d&#39;adresse,\n            online_order bool,\n            book_order bool,\n            tarif double,\n            votes int,\n            chaîne de téléphone,\n            chaîne de localisation,\n            chaîne rest_type,\n            favorite_dish_id int\n    FROM &quot;/Samples/Data/restaurants_ratings.csv&quot;\n    USING Extractors.Csv ();","// Aucune transformation - les données extraites sont chargées telles quelles dans le fichier de sortie (TSV)\nSORTIE @restaurant_ratings\nTO &quot;/output/restaurants_out.tsv&quot;\nUSING Outputters.Tsv ();\nLes scripts écrivent l&#39;intégralité des ensembles de lignes de restaurant dans le fichier de sortie dans un format séparé par des tabulations.\nNotez que les types de données C # sont utilisés ici (par exemple, chaîne et non car / varchar comme généralement utilisé dans SQL). Nous pouvons non seulement utiliser les types de données de C #, mais aussi les expressions et tous les avantages d&#39;un langage de programmation expressif.\nScript U-SQL avec étape de transformation","// Script - RestaurantScript.usql\n// Variables pour le nom et les chemins du fichier d&#39;entrée et de sortie\nDECLARE @inputFile = &quot;/Samples/Data/restaurants_ratings.csv&quot;;\nDECLARE @outputFile = &quot;/output/restaurants_out.tsv&quot;;","// Les données sont extraites du fichier d&#39;entrée (CSV) et stockées dans la variable de jeu de lignes d&#39;employés\n@restaurant_ratings =\n    EXTRACT rest_id int,\n            chaîne de nom,\n            chaîne d&#39;adresse,\n            online_order bool,\n            book_order bool,\n            tarif double,\n            votes int,\n            chaîne de téléphone,\n            chaîne de localisation,\n            chaîne rest_type,\n            favorite_dish_id int\n    DE @inputFile\n    UTILISER Extractors.Csv (skipFirstNRows: 1); // Ignorer la première ligne contenant des en-têtes","// Étape de transformation: les colonnes sont renommées et aucune ligne n&#39;est filtrée\n@bestOnlineRestaurants =\n    SELECT name.ToUpper () AS Name, // Conversion des noms en majuscules\n           rate AS Rating,\n           online_order AS Online Ordre,\n           phone AS Phone,\n           emplacement AS Location,\n           Rest_type AS Catégorie,\n           favorite_dish_id AS FavoriteDishId\n    DE @restaurants_rating\n    WHERE rate&gt; 4 &amp;&amp; online_order == true;","// Charge les données transformées dans le fichier de sortie\nSORTIE @bestOnlineRestaurants\nTO @outputFile\nUSING Outputters.Tsv (outputHeader: true); // Écrire les noms de colonnes / en-têtes dans le fichier de sortie\nÉtendre l&#39;expression U-SQL à l&#39;aide d&#39;un code personnalisé\nU-SQL prend en charge les expressions personnalisées écrites en code C #. Le code C # réside dans le code derrière les fichiers. Notez que dans le diagramme ci-dessous, chaque fichier .usql est associé à un fichier .usql.cs contenant le code C # personnalisé.\n \nFigure 8: Projet U-SQL avec plusieurs scripts et code derrière des fichiers","// Code derrière le fichier C # - RestaurantScript.usql.cs\nespace de noms UsqlApp1","    Aides publiques de classe statique\n    \n        chaîne publique statique FormatRestaurantName (nom de la chaîne, emplacement de la chaîne, chaîne restaurantType)\n        \n            return name + &quot;(&quot; + restaurantType + &quot;) -&quot; + location;\n   // Notez que U-SQL ne supporte pas encore la nouvelle interpolation de chaîne C # 7.0\n               // return $ &quot;name (restaurantType) - location&quot;;\n        \n    ","// Script - RestaurantScript.usql\n// Variables pour le nom et les chemins du fichier d&#39;entrée et de sortie\nDECLARE @inputFile = &quot;/Samples/Data/restaurants_ratings.csv&quot;;\nDECLARE @outputFile = &quot;/output/restaurants_out.tsv&quot;;","// Les données sont extraites du fichier d&#39;entrée (CSV) et stockées dans la variable de jeu de lignes d&#39;employés\n@restaurant_ratings =\n    EXTRACT rest_id int,\n            chaîne de nom,\n            chaîne d&#39;adresse,\n            online_order bool,\n            book_order bool,\n            tarif double,\n            votes int,\n            chaîne de téléphone,\n            chaîne de localisation,\n            chaîne rest_type,\n            favorite_dish_id int\n    DE @inputFile\n    UTILISER Extractors.Csv (skipFirstNRows: 1); // Ignorer la première ligne contenant des en-têtes","// Étape de transformation: les colonnes sont renommées et aucune ligne n&#39;est filtrée\n@bestOnlineRestaurants =\n    SELECT USQLApp1.Helpers.FormatRestaurantName (nom, emplacement, type de repos), nom AS,\n           rate AS Rating,\n           online_order AS Online Ordre,\n           phone AS Phone,\n           favorite_dish AS FavoriteDish\n    DE @restaurant_ratings\n    WHERE rate&gt; 4 &amp;&amp; online_order == true;","// Charge les données transformées dans le fichier de sortie\nSORTIE @bestOnlineRestaurants\nTO @outputFile\nUSING Outputters.Tsv (outputHeader: true); // Écrire les noms de colonnes / en-têtes dans le fichier de sortie\nScript U-SQL effectuant des jointures\nU-SQL prend en charge les jointures entre deux jeux de données différents. Il fournit une jointure interne, une jointure externe, une jointure croisée, etc.\nDans l&#39;extrait de code suivant, nous effectuons une jointure interne entre un jeu de données restaurants et un jeu de données d&#39;ingrédients de plat.","// Script - RestaurantScript.usql\nDECLARE @inputFile = &quot;/Samples/Data/restaurants_ratings.csv&quot;;\nDECLARE @outputFile = &quot;/output/restaurants_out.tsv&quot;;","// Les données sont extraites du fichier d&#39;entrée (CSV) et stockées dans la variable de jeu de lignes d&#39;employés\n@restaurant_ratings = // Code non affiché pour des raisons de brièveté. Exactement le même code que l&#39;exemple ci-dessus","// Étape de transformation: les colonnes sont renommées et aucune ligne n&#39;est filtrée\n@bestOnlineRestaurants = // Code non affiché par souci de concision. Exactement le même code que l&#39;exemple ci-dessus\nMaintenant, nous aurions besoin de données sur les plats et leurs ingrédients. Bien que ces données soient généralement présentes dans une source externe, nous utiliserions ici un ensemble de lignes en mémoire.","// Déclarez un jeu de lignes en mémoire pour les ingrédients de plat contenant l&#39;identifiant du plat, le nom du plat et // les ingrédients.","@dish_ingredients =\n    SÉLECTIONNER\n        * DE\n              (VALEURS\n               (1, &quot;Biryani&quot;, &quot;Riz, épices indiennes, légumes, viande, oeuf, yaourt, fruits secs&quot;),\n               (2, &quot;Masala Dosa&quot;, &quot;riz noir décortiqué, graines de moutarde, graines de fenugrec, sel, huile végétale, pommes de terre, oignons, piments verts, feuilles de curry, curcuma&quot;),\n               (3, &quot;Cake&quot;, &quot;sucre, beurre, oeuf, cacao, crème, sel&quot;)\n              ) AS D (DishId, Dish, Ingredients);\n// Effectuer une jointure interne entre @bestOnlineRestaurants et @dish_ingredients rangset\n@rs_innerJn = SELECT\n        r.Nom,\n        r.Évaluation,\n        i.Dish,\n        Ingrédients\nDE @bestOnlineRestaurants AS r\nINNER JOIN @dish_ingredients AS i\nON r.FavoriteDishId == i.DishId;","// Ecrire dans le fichier de sortie\nSORTIE @rs_innerJn\nTO @outputFile\nUSING Outputters.Tsv (outputHeader: true);\nCela renvoie les restaurants ayant les cotes les plus élevées, ainsi que les détails des ingrédients de son plat préféré, qui sont récupérés en rejoignant l&#39;ensemble de lignes de détails de restaurant avec un ensemble de lignes d&#39;ingrédients de plat par le biais d&#39;une jointure interne.\n[Click on the image to enlarge it]","Figure 9: Projet U-SQL avec plusieurs scripts et code derrière des fichiers\nScript U-SQL utilisant des fonctions intégrées\nU-SQL fournit une multitude de fonctions intégrées, notamment des fonctions d&#39;agrégat, d&#39;analyse, de classement, etc. Vous trouverez ci-dessous quelques exemples.","Type de fonction\n        Exemple","Fonctions d&#39;agrégat\nAVG, SUM, COUNT, STDEV (écart type), MIN, MAX, etc.","Fonctions analytiques\nFIRST_VALUE, LAST_VALUE, LAG, LEAD, PERCENTILE_CONT etc.","Fonctions de classement\nRANK, DENSE_RANK, NTILE, ROW_NUMBER, etc.","Dans le script ci-dessous, nous utilisons des fonctions d&#39;agrégation intégrées telles que MIN, MAX, AVG et STDEV pour le restaurant.","// Déclarer des variables pour les fichiers d&#39;entrée et de sortie\nDECLARE @inputFile = &quot;/Samples/Data/restaurants_raw_data.csv&quot;;\nDECLARE @outputFile = &quot;/output/restaurants_aggr.csv&quot;;","@restaurant_ratings =\n    EXTRACT rest_id int,\n            chaîne de nom,\n            chaîne d&#39;adresse,\n            online_order bool,\n            book_order bool,\n            tarif double,\n            votes int,\n            chaîne de téléphone,\n            chaîne de localisation,\n            chaîne rest_type,\n            favorite_dish_id int\n    DE @inputFile\n    UTILISER Extractors.Csv (skipFirstNRows: 1);","@output =\n    SÉLECTIONNER\n           rest_type AS RestaurantType,\n           MIN (rate) AS MinRating,\n           MAX (rate) AS MaxRating,\n           AVG (rate) AS Moyenne,\n           STDEV (rate) AS StdDevRating\n    DE @restaurants_ratings\n    GROUP BY rest_type;","// Ecrire dans le fichier de sortie\nOUTPUT @output\nTO @outputFile\nUSING Outputters.Csv (outputHeader: true);\nCatalogue U-SQL\nJusqu&#39;à présent, nous nous sommes concentrés sur les données non structurées et semi-structurées lues à partir de fichiers et écrites dans des fichiers. L’une des forces de U-SQL est d’exploiter des données non structurées stockées dans des fichiers et de fournir une vue schématisée au-dessus de données non structurées, mais il peut gérer des données structurées. Il fournit un système de catalogue de métadonnées général comme Hive. Vous trouverez ci-dessous une liste des principaux objets pris en charge par U-SQL:","Base de données: U-SQL prend en charge des bases de données similaires à d’autres systèmes Big Data comme Hive.\nSchéma de base de données: Les objets liés au groupe de schémas de base de données présents dans une base de données, exactement comme des bases de données relationnelles.\nTables et index: Les tables sont des conteneurs pour contenir des données structurées. Les tables peuvent contenir des colonnes de différents types de données. Les données de la table sont stockées dans des fichiers. Les tables offrent des avantages supplémentaires au-delà des vues schématisées par rapport aux fichiers non structurés tels que l&#39;indexation, le partitionnement des données de table en plusieurs compartiments, chaque compartiment étant sauvegardé par un fichier.\nLes vuesLes vues U-SQL sont de deux types: (i) les vues basées sur une table U-SQL et les vues (ii) pointant vers un fichier et utilisant EXTRACT pour obtenir les données.\nLes fonctions: Prend en charge les fonctions scalaires et les valeurs de table.\nProcédures: Les procédures ressemblent aux fonctions mais ne renvoient aucune valeur.\nAssemblées: U-SQL prend en charge le stockage des assemblys .NET qui étend les scripts U-SQL avec une expression personnalisée.","Maintenant, dans notre exemple d’évaluation de la note, nous aimerions analyser davantage les restaurants ayant une faible note. Pour ce faire, nous aimerions déplacer tous les restaurants avec moins de quatre évaluations vers une table U-SQL pour une analyse plus approfondie.\nBase de données U-SQL, tables et index\nDans l&#39;exemple ci-dessous. nous allons créer une base de données U-SQL qui sera créée dans la base de données avec une clé de schéma et une clé d&#39;index. Nous ne créons pas de schéma spécifiquement ici. La table sera donc créée sous le schéma par défaut ‘dbo’ (Remember SQL Server?) Dans la base de données.\nL&#39;exemple de code ci-dessous montre comment créer cette table.","// Script - RestaurantScript.usql\nDECLARE @inputFile = &quot;/Samples/Data/restaurants_ratings.csv&quot;;\nDECLARE @outputFile = &quot;/output/restaurants_out.tsv&quot;;","// Les données sont extraites du fichier d&#39;entrée (CSV) et stockées dans la variable de jeu de lignes d&#39;employés\n@restaurant_ratings = // Code non affiché pour des raisons de brièveté. Exactement le même code que l&#39;exemple ci-dessus","// Étape de transformation: Ne filtrez que les restaurants notés moins de 4\n@lowRatedRestaurants =\n    SELECT rest_id AS RestaurantId,\n           nom AS Nom,\n           rate AS Rating,\n           online_order AS Online Ordre,\n           phone AS Phone,\n           emplacement AS Location,\n           Rest_type AS Catégorie,\n           favorite_dish_id AS FavoriteDishId\n    DE @restaurants_ratings\n    O taux &lt;4;","// Insérer les détails de restaurant classés faibles dans le catalogue U-SQL\n// Crée la base de données si elle n&#39;existe pas déjà\nCREER UNE BASE DE DONNEES SI N&#39;EXISTE PAS RestaurantsDW;\nUTILISER RestaurantsDW;","// Supprime la table si elle existe\nDROP TABLE SI EXISTS dbo.LowRatedRestaurants;","// Crée la table en spécifiant le schéma de colonne et l&#39;index\nCREATE TABLE dbo.LowRatedRestaurants (\n    RestaurantId int,\n    Chaîne de nom,\n    INDEX idx\n        CLUSTERED (Nom DESC)\n        DISTRIBUÉ PAR HASH (Nom),\n    Note double,\n    OnlineOrder bool,\n    Chaîne téléphonique,\n    Chaîne de localisation,\n    Chaîne de catégorie,\n    FavoriteDishId int\n)","// Insérer les données du jeu de lignes dans la table U-SQL créée juste avant\nINSÉRER DANS dbo.LowRatedRestaurants\nSELECT * FROM @lowRatedRestaurants;\nVues U-SQL\nLes vues U-SQL ressemblent aux vues de base de données: elles ne stockent pas les données physiquement et ne fournissent pas une vue des données stockées dans des tables ou des fichiers. Les vues peuvent être basées sur une table ou sur une extraction sur des fichiers.\nL’exemple de script ci-dessous montre comment créer une vue basée sur une extraction.","UTILISEZ LA BASE DE DONNEES RestaurantsDW;\n// Supprimer la vue si elle existe déjà\nDROP VIEW SI EXISTS RestaurantsView;","// Créer la vue basée sur une extraction\nCREATE VIEW RestaurantsVoir AS\n    EXTRACT rest_id int,\n            chaîne de nom,\n            chaîne d&#39;adresse,\n            online_order bool,\n            book_order bool,\n            tarif double,\n            votes int,\n            chaîne de téléphone,\n            chaîne de localisation,\n            chaîne rest_type,\n            favorite_dish_id int\n    FROM &quot;/Samples/Data/restaurants_raw_data.csv&quot;\n    UTILISER Extractors.Csv (skipFirstNRows: 1); // Ignorer la première ligne contenant des en-têtes\nPour exécuter la vue, le code suivant est utilisé:","@result = SELECT * FROM RestaurantsDW.dbo.RestaurantsView;\nOUTPUT @result\nTO &quot;/output/Restaurants_View.csv&quot;\nUSING Outputters.Csv ();\nFonctions évaluées de table U-SQL (TVF)\nU-SQL prend en charge la fonction scalaire et la fonction de valeur de table (TVF). Les fonctions prennent zéro à plusieurs arguments et renvoient soit une valeur scalaire unique, soit une table, qui est un ensemble de données composé de colonnes et de lignes.\nL&#39;extrait de code ci-dessous montre d&#39;abord comment créer un fichier TVF, puis comment l&#39;invoquer. Il faut un seul paramètre et retourne une table.","CREER UNE BASE DE DONNEES SI N&#39;EXISTE PAS RestaurantsDW;\nUTILISEZ LA BASE DE DONNEES RestaurantsDW;","DROP FUNCTION SI EXISTS tvf_SearchRestaurants;","// Créer la fonction de valeur de table qui accepte le type de restaurant en tant que chaîne\n// et retourne une table contenant les détails du restaurant correspondant.\nCREATE FUNCTION tvf_SearchRestaurants (chaîne @RestaurantType)\nRETURNS @searchRestaurants TABLE (id_distant, chaîne de nom, chaîne d’adresse,\n                                    online_order bool, book_order bool, tarif double,\n                                    votes int, chaîne téléphonique, chaîne d&#39;emplacement,\n                                    Rest_type string, favorite_dish_id int)\n    COMME\nCOMMENCER\n    @allRestaurants =\n        EXTRACT rest_id int,\n            chaîne de nom,\n            chaîne d&#39;adresse,\n            online_order bool,\n            book_order bool,\n            tarif double,\n            votes int,\n            chaîne de téléphone,\n            chaîne de localisation,\n            chaîne rest_type,\n            favorite_dish_id int\n        FROM &quot;/Samples/Data/restaurants_raw_data.csv&quot;\n        UTILISER Extractors.Csv (skipFirstNRows: 1); // Ignorer la première ligne contenant des en-têtes","    @searchRestaurants =\n        SELECT *\n        DE @allRestaurants\n        WHERE rest_type == @RestaurantType;","REVENIR;\nFIN;\nInvoquons maintenant la fonction table value que nous venons de créer et transmettons le paramètre ‘Bakery’ en tant que paramètre. Il renverrait tous les restaurants de type Bakery.","SORTIE RestaurantsDW.dbo.tvf_SearchRestaurants (&quot;Bakery&quot;)\nTO &quot;/output/BakeryRestaurants.csv&quot;\nUSING Outputters.Csv ();\nÉtude de cas\nL&#39;étude de cas suivante met en évidence l&#39;utilisation du langage U-SQL et Azure Data Lake Analytics dans un vaste programme de transformation numérique stratégique pluriannuel. Au cours de l’année, le client, acteur majeur de l’assurance, a acquis de multiples sociétés d’assurance et de nombreux courtiers. Il a par conséquent utilisé plusieurs systèmes d’engagement de la clientèle pour interagir avec ses clients par courrier électronique, SMS / SMS, discussion en ligne / mobile et appels (entrants et sortants). . En raison de l&#39;approche fracturée, il est devenu très difficile pour le client d&#39;analyser les données d&#39;interaction client.\nAlors que le client s’engageait dans la construction d’une plate-forme omnicanal et d’un centre de contact intégré pour le service à la clientèle via différents canaux (e-mail, SMS, chat, appels vocaux de centre de contact), son choix tactique immédiat consistait à analyser les données provenant de diverses sources. e-mail, texte / SMS, chat et journal des appels.\nUne solution basée sur Azure Data Lake a été développée pour répondre au besoin immédiat d’analyser des données de différents systèmes, dans différents formats. Les données de différents systèmes sources ont été transférées vers Azure Data Lake Store, puis analysées à l&#39;aide d&#39;Azure Data Lake Analysis et de U-SQL.","Ingérer &#8211; Au cours de la phase d&#39;acquisition, les données non structurées et structurées provenant de deux sources différentes (données de courrier électronique / texte / conversation ainsi que le journal des appels) sont transférées vers Azure à l&#39;aide du service ETL Azure Data Factory.\nle magasin &#8211; Les données brutes sont stockées sur Azure Data Lake Storage / ADLS sous forme de fichiers à plat.\nAnalyser &#8211; Différents types d’analyses, notamment le filtrage, les jointures, l’agrégation, le fenêtrage, etc. sont effectués en U-SQL.\nModèle et servir &#8211; Les données analysées sont stockées dans des tables structurées pour une utilisation ultérieure à partir de rapports Power BI / personnalisés par utilisateur.","[Click on the image to enlarge it]","Figure 10: Pipeline Azure Data Analytics\nConclusions\nAzure Data Lake Storage et Analytics se sont révélés être une excellente option pour la réalisation de charges de travail de données volumineuses et d’analyses en parallèle avec Azure HDInsight et Azure Databricks. Bien qu’il en soit encore à ses débuts et qu’il ne dispose pas de capacités de streaming et de traitement des événements, son pouvoir réside dans le nouveau langage U-SQL, qui associe la simplicité et l’omniprésence de SQL au phare de Mirosoft, le puissant langage C #. De plus, les outils de développement de Microsoft tels que Visual Studio et les capacités de développement / test locales en font un puissant concurrent dans le domaine des données volumineuses et de l’analyse.\nA propos de l&#39;auteur\nAniruddha Chakrabarti a 19 ans d&#39;expérience dans les domaines de la stratégie, du conseil, du développement de produits et des services informatiques. Il possède de l&#39;expérience dans diverses fonctions, notamment l&#39;architecture de solution, les préventes, l&#39;architecture technologique, le leadership dans la livraison et la gestion de programmes. En tant que AVP du numérique dans Mphasis, Chakrabarti est responsable des préventes, des solutions, des RFP / RFI et de l’architecture technologique de grandes transactions et programmes numériques. Avant de rejoindre Mphasis, il a occupé divers postes de direction et d’architecture chez Accenture, Microsoft, Target, Misys et Cognizant. Ses domaines de prédilection sont le cloud, les mégadonnées et les analyses, l&#39;AI / ML, la PNL, l&#39;IoT, les systèmes distribués, les microservices et les DevOps.","Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]"],"content_blocks":[{"id":"text-1","type":"text","heading":"","plain_text":"Points clés à retenir","html":"<p>Points clés à retenir</p>"},{"id":"text-2","type":"text","heading":"","plain_text":"Azure Data Lake Analytics, avec Azure Data Lake Storage, est un composant clé de la solution Azure Data Lake de Microsoft. \nActuellement, Azure Data Lake Analytics ne peut être utilisé que pour des charges de travail par lots. Pour les charges de travail de diffusion en continu et de traitement d&#39;événements, vous devez utiliser d&#39;autres solutions d&#39;analyse Big Data sur Azure telles que HDInsight ou Azure Databricks.\nAzure Data Lake Analytics introduit un nouveau langage de requête et de traitement Big Data appelé U-SQL.\nU-SQL combine les concepts et les constructions de SQL et de C #; la puissance de U-SQL provient de la simplicité et de la nature déclarative de SQL, ainsi que de la puissance de programmation de C #, y compris les types et expressions riches.\nU-SQL fonctionne sur des données non structurées stockées dans des fichiers et fournit une vue schématisée par dessus. Il fournit également un système de catalogue de métadonnées général très similaire aux bases de données relationnelles pour les données structurées.","html":"<p>Azure Data Lake Analytics, avec Azure Data Lake Storage, est un composant clé de la solution Azure Data Lake de Microsoft. \nActuellement, Azure Data Lake Analytics ne peut être utilisé que pour des charges de travail par lots. Pour les charges de travail de diffusion en continu et de traitement d&#039;événements, vous devez utiliser d&#039;autres solutions d&#039;analyse Big Data sur Azure telles que HDInsight ou Azure Databricks.\nAzure Data Lake Analytics introduit un nouveau langage de requête et de traitement Big Data appelé U-SQL.\nU-SQL combine les concepts et les constructions de SQL et de C #; la puissance de U-SQL provient de la simplicité et de la nature déclarative de SQL, ainsi que de la puissance de programmation de C #, y compris les types et expressions riches.\nU-SQL fonctionne sur des données non structurées stockées dans des fichiers et fournit une vue schématisée par dessus. Il fournit également un système de catalogue de métadonnées général très similaire aux bases de données relationnelles pour les données structurées.</p>"},{"id":"text-3","type":"text","heading":"","plain_text":"Même si les technologies Big Data et Hadoop datent de plus de dix ans, les analyses Big Data et Big Data sont plus pertinentes que jamais. Alors que la version initiale de Hadoop ne pouvait gérer que des charges de travail par lots, l&#39;écosystème Hadoop dispose désormais d&#39;outils pour d&#39;autres cas d&#39;utilisation tels que les données structurées, les données en continu, le traitement des événements, les charges de travail d&#39;apprentissage automatique et le traitement des graphes.\nAlors que Hadoop écosystémique dispose de nombreux outils, tels que Hive, Impala, Pig, Storm et Mahout, pour fournir l’ensemble complet de fonctionnalités, le nouveau cadre d’analyse des données, tel que Spark, intègre une approche intégrée permettant de gérer différents types de charges de travail.\nAzure Data Lake Analytics, ou ADLA, est l&#39;un des moteurs d&#39;analyse Big Data les plus récents. ADLA est le service d’analyse à la demande entièrement géré de Microsoft sur le cloud Azure. Avec Azure Data Lake Storage et HDInsight, Azure Data Lake Analytics constitue l’offre complète de solutions et d’analyses de données hébergées sur le cloud de Microsoft. Azure Data Lake Analytics introduit un nouveau langage de requête et de traitement Big Data appelé U-SQL. Cet article fournit une vue d&#39;ensemble du langage U-SQL et de son utilisation dans les applications.\nAzure Data Lake","html":"<p>Même si les technologies Big Data et Hadoop datent de plus de dix ans, les analyses Big Data et Big Data sont plus pertinentes que jamais. Alors que la version initiale de Hadoop ne pouvait gérer que des charges de travail par lots, l&#039;écosystème Hadoop dispose désormais d&#039;outils pour d&#039;autres cas d&#039;utilisation tels que les données structurées, les données en continu, le traitement des événements, les charges de travail d&#039;apprentissage automatique et le traitement des graphes.\nAlors que Hadoop écosystémique dispose de nombreux outils, tels que Hive, Impala, Pig, Storm et Mahout, pour fournir l’ensemble complet de fonctionnalités, le nouveau cadre d’analyse des données, tel que Spark, intègre une approche intégrée permettant de gérer différents types de charges de travail.\nAzure Data Lake Analytics, ou ADLA, est l&#039;un des moteurs d&#039;analyse Big Data les plus récents. ADLA est le service d’analyse à la demande entièrement géré de Microsoft sur le cloud Azure. Avec Azure Data Lake Storage et HDInsight, Azure Data Lake Analytics constitue l’offre complète de solutions et d’analyses de données hébergées sur le cloud de Microsoft. Azure Data Lake Analytics introduit un nouveau langage de requête et de traitement Big Data appelé U-SQL. Cet article fournit une vue d&#039;ensemble du langage U-SQL et de son utilisation dans les applications.\nAzure Data Lake</p>"},{"id":"text-4","type":"text","heading":"","plain_text":"Azure Data Lake est l’offre de Microsoft Data Lake sur le cloud public Azure et comprend plusieurs services, notamment le stockage, le traitement, l’analyse et d’autres services complémentaires tels que le magasin NoSQL, la base de données relationnelle, l’entrepôt de données et les outils ETL.\nServices de stockage","html":"<p>Azure Data Lake est l’offre de Microsoft Data Lake sur le cloud public Azure et comprend plusieurs services, notamment le stockage, le traitement, l’analyse et d’autres services complémentaires tels que le magasin NoSQL, la base de données relationnelle, l’entrepôt de données et les outils ETL.\nServices de stockage</p>"},{"id":"text-5","type":"text","heading":"","plain_text":"Azure Data Lake Storage ou ADLS &#8211; Azure Data Lake Storage est un stockage en nuage évolutif spécialement conçu à des fins d&#39;analyse, basé sur le standard HDFS ouvert.\nAzure Blob Storage &#8211; Stockage d&#39;objet géré à usage général pour Azure.","html":"<p>Azure Data Lake Storage ou ADLS &#8211; Azure Data Lake Storage est un stockage en nuage évolutif spécialement conçu à des fins d&#039;analyse, basé sur le standard HDFS ouvert.\nAzure Blob Storage &#8211; Stockage d&#039;objet géré à usage général pour Azure.</p>"},{"id":"text-6","type":"text","heading":"","plain_text":"Services d&#39;analyse et de traitement","html":"<p>Services d&#039;analyse et de traitement</p>"},{"id":"text-7","type":"text","heading":"","plain_text":"Azure Data Lake Analytics ou ADLA &#8211; Service d&#39;analyse à la demande entièrement géré sur le cloud Azure. Prise en charge du nouveau langage de traitement de données volumineuses U-SQL, à l&#39;exception de .NET, R et Python.\nHDInsight– HDInsight fournit des clusters Hadoop gérés s&#39;exécutant sur Azure et est basé sur la distribution Hadoop de Hortonworks Data Platform (HDP). Prend en charge les outils écosystémiques Hadoop, notamment Spark, Hive, Map Reduced, HBase, Storm et Kafka.\nAzure Databricks: service d&#39;analyse sans serveur géré basé sur Azure Spark. Prend en charge une expérience de type bloc-notes semblable à Jupyter / iPython / Zeppelin, ainsi que d&#39;autres fonctionnalités de communication, et prend en charge Scala, Python, R et SQL.","html":"<p>Azure Data Lake Analytics ou ADLA &#8211; Service d&#039;analyse à la demande entièrement géré sur le cloud Azure. Prise en charge du nouveau langage de traitement de données volumineuses U-SQL, à l&#039;exception de .NET, R et Python.\nHDInsight– HDInsight fournit des clusters Hadoop gérés s&#039;exécutant sur Azure et est basé sur la distribution Hadoop de Hortonworks Data Platform (HDP). Prend en charge les outils écosystémiques Hadoop, notamment Spark, Hive, Map Reduced, HBase, Storm et Kafka.\nAzure Databricks: service d&#039;analyse sans serveur géré basé sur Azure Spark. Prend en charge une expérience de type bloc-notes semblable à Jupyter / iPython / Zeppelin, ainsi que d&#039;autres fonctionnalités de communication, et prend en charge Scala, Python, R et SQL.</p>"},{"id":"text-8","type":"text","heading":"","plain_text":"Services complémentaires","html":"<p>Services complémentaires</p>"},{"id":"text-9","type":"text","heading":"","plain_text":"Base de données Cosmos &#8211; Service de base de données NoSQL multi-modal géré sans serveur sur Azure.\nAzure SQL Database &#8211; Base de données relationnelle gérée sous forme de service / DBaaS sur Azure.\nAzure SQL Datawarehouse &#8211; Solution EDW (Enterprise Data Warehouse) basée sur le cloud s&#39;exécutant sur Azure. Il utilise des concepts familiers de systèmes distribués et d&#39;entreposage de données tels que le traitement massivement parallèle (MPP), le stockage en colonnes, la compression, etc. pour garantir des performances rapides pour les requêtes complexes.\nAzure Analysis Service &#8211; Un moteur d&#39;analyse entièrement géré sur Azure; aide à construire des modèles sémantiques sur le cloud. Il est basé sur SQL Server Analysis Server, un moteur d’analyse local basé sur SQL Server. À partir de maintenant, Azure Analysis Service ne prend en charge que les modèles tabulaires et non les modèles multidimensionnels (vous vous souvenez de cubes?).\nAzure Data Factory &#8211; Un service d&#39;intégration de données et d&#39;ETL basé sur le cloud. Il est sans serveur et fournit des connecteurs prêts à l&#39;emploi à plus de 50 systèmes / services en nuage ou sur site tels que Azure Blob Storage, Cosmos DB, Azure SQL Database, sur le serveur SQL / MySQL / PostgreSQL et même des services tiers tels que SFDC. , Dropbox, etc. Il peut déplacer des données entre services cloud, de systèmes sur site vers le cloud ou inversement.","html":"<p>Base de données Cosmos &#8211; Service de base de données NoSQL multi-modal géré sans serveur sur Azure.\nAzure SQL Database &#8211; Base de données relationnelle gérée sous forme de service / DBaaS sur Azure.\nAzure SQL Datawarehouse &#8211; Solution EDW (Enterprise Data Warehouse) basée sur le cloud s&#039;exécutant sur Azure. Il utilise des concepts familiers de systèmes distribués et d&#039;entreposage de données tels que le traitement massivement parallèle (MPP), le stockage en colonnes, la compression, etc. pour garantir des performances rapides pour les requêtes complexes.\nAzure Analysis Service &#8211; Un moteur d&#039;analyse entièrement géré sur Azure; aide à construire des modèles sémantiques sur le cloud. Il est basé sur SQL Server Analysis Server, un moteur d’analyse local basé sur SQL Server. À partir de maintenant, Azure Analysis Service ne prend en charge que les modèles tabulaires et non les modèles multidimensionnels (vous vous souvenez de cubes?).\nAzure Data Factory &#8211; Un service d&#039;intégration de données et d&#039;ETL basé sur le cloud. Il est sans serveur et fournit des connecteurs prêts à l&#039;emploi à plus de 50 systèmes / services en nuage ou sur site tels que Azure Blob Storage, Cosmos DB, Azure SQL Database, sur le serveur SQL / MySQL / PostgreSQL et même des services tiers tels que SFDC. , Dropbox, etc. Il peut déplacer des données entre services cloud, de systèmes sur site vers le cloud ou inversement.</p>"},{"id":"text-10","type":"text","heading":"","plain_text":"La figure 1 ci-dessous présente ces différentes offres de Microsoft sur le cloud Azure.\n[Click on the image to enlarge it]","html":"<p>La figure 1 ci-dessous présente ces différentes offres de Microsoft sur le cloud Azure.\n[Click on the image to enlarge it]</p>"},{"id":"text-11","type":"text","heading":"","plain_text":"Figure 1: Services dans l’offre Azure Data Lake\nL&#39;architecture des applications Big Data et Data Lake sur la plate-forme cloud Azure est illustrée ci-dessous à la figure 2.\n[Click on the image to enlarge it]","html":"<p>Figure 1: Services dans l’offre Azure Data Lake\nL&#039;architecture des applications Big Data et Data Lake sur la plate-forme cloud Azure est illustrée ci-dessous à la figure 2.\n[Click on the image to enlarge it]</p>"},{"id":"text-12","type":"text","heading":"","plain_text":"Figure 2: Architecture typique Big Data / Data Lake / ETL / Analytics sur Azure\nU-SQL Introduction\nU-SQL est le langage de requête et de traitement Big Data pour Azure Data Lake Analytics. C’est un nouveau langage créé par Microsoft, spécialement pour Azure Data Lake Analytics. U-SQL associe un langage déclaratif de type SQL à la puissance de programmation de C #, y compris les types et expressions riches en C #. U-SQL fournit les concepts de traitement de données volumineux bien connus, tels que «schéma à la lecture», «évaluation lazy», processeurs personnalisés et réducteurs. Les ingénieurs de données ayant déjà utilisé des langages tels que Pig, Hive et Spark trouveraient des similitudes avec ceux-ci. Les développeurs ayant des connaissances en C # et en SQL trouveraient U-SQL facile à apprendre et à utiliser.\n \nFigure 3: Liens entre U-SQL et C # et SQL\nBien que U-SQL utilise de nombreux concepts et mots-clés du langage SQL, il n’est pas compatible ANSI SQL. Il ajoute des capacités de gestion de fichiers non structurées à l&#39;aide de mots clés tels que EXTRAIT et SORTIE.\nActuellement, ADLA et U-SQL ne peuvent être utilisés que pour le traitement par lots. Il ne fournit pas d’analyse de flux ni de capacité de traitement des événements.\nConcepts et scripts U-SQL","html":"<p>Figure 2: Architecture typique Big Data / Data Lake / ETL / Analytics sur Azure\nU-SQL Introduction\nU-SQL est le langage de requête et de traitement Big Data pour Azure Data Lake Analytics. C’est un nouveau langage créé par Microsoft, spécialement pour Azure Data Lake Analytics. U-SQL associe un langage déclaratif de type SQL à la puissance de programmation de C #, y compris les types et expressions riches en C #. U-SQL fournit les concepts de traitement de données volumineux bien connus, tels que «schéma à la lecture», «évaluation lazy», processeurs personnalisés et réducteurs. Les ingénieurs de données ayant déjà utilisé des langages tels que Pig, Hive et Spark trouveraient des similitudes avec ceux-ci. Les développeurs ayant des connaissances en C # et en SQL trouveraient U-SQL facile à apprendre et à utiliser.\n \nFigure 3: Liens entre U-SQL et C # et SQL\nBien que U-SQL utilise de nombreux concepts et mots-clés du langage SQL, il n’est pas compatible ANSI SQL. Il ajoute des capacités de gestion de fichiers non structurées à l&#039;aide de mots clés tels que EXTRAIT et SORTIE.\nActuellement, ADLA et U-SQL ne peuvent être utilisés que pour le traitement par lots. Il ne fournit pas d’analyse de flux ni de capacité de traitement des événements.\nConcepts et scripts U-SQL</p>"},{"id":"text-13","type":"text","heading":"","plain_text":"La logique de requête et de traitement U-SQL est écrite dans des fichiers avec l&#39;extension &quot;.usql&quot; appelés scripts U-SQL. Visual Studio IDE ou le portail Azure peuvent être utilisés pour la création de ces scripts. Un projet U-SQL dans Visual Studio contient plusieurs scripts, code derrière des fichiers et assemblys de référence associés.","html":"<p>La logique de requête et de traitement U-SQL est écrite dans des fichiers avec l&#039;extension &quot;.usql&quot; appelés scripts U-SQL. Visual Studio IDE ou le portail Azure peuvent être utilisés pour la création de ces scripts. Un projet U-SQL dans Visual Studio contient plusieurs scripts, code derrière des fichiers et assemblys de référence associés.</p>"},{"id":"text-14","type":"text","heading":"","plain_text":"La figure 4 ci-dessous montre une capture d&#39;écran d&#39;un projet U-SQL dans Visual Studio IDE.\n \nFigure 4: Un projet U-SQL dans Visual Studio","html":"<p>La figure 4 ci-dessous montre une capture d&#039;écran d&#039;un projet U-SQL dans Visual Studio IDE.\n \nFigure 4: Un projet U-SQL dans Visual Studio</p>"},{"id":"text-15","type":"text","heading":"","plain_text":"Les scripts U-SQL suivent les modèles ETL (Extract / Retrieve, Transform et Load / Output) bien connus, utilisés par d’autres langages de données volumineuses tels que Pig ou Spark. Il peut extraire des données de fichiers texte (fichiers texte non structurés et fichiers semi-structurés tels que JSON ou XML) et de tableaux.\nU-SQL impose un schéma lors de la récupération de données non structurées à partir de fichiers &#8211; cela facilite la réalisation d&#39;opérations similaires à celles de SQL.\nRowset est la structure de données principale de U-SQL. Il est utilisé pour extraire les données du fichier / de la table d’entrée et pour effectuer une transformation, ainsi que pour écrire dans la destination de sortie. Les ensembles de lignes ne sont pas ordonnés, ce qui aide Azure Data Analytics Engine à mettre en parallèle le traitement à l&#39;aide de plusieurs nœuds de traitement.\nLes scripts U-SQL peuvent utiliser des types, des opérateurs et des expressions à partir de C #.\nLes scripts U-SQL utilisent des constructions SQL comme SÉLECTIONNER, OÙ, JOINDRE et autres définitions de données (DDL) et langage de manipulation de données (DML). Tous les mots-clés doivent être écrits en majuscules seulement.\nPrend en charge les structures de flux de contrôle telles que IF ELSE, mais ne prend pas en charge les boucles While ou For.","html":"<p>Les scripts U-SQL suivent les modèles ETL (Extract / Retrieve, Transform et Load / Output) bien connus, utilisés par d’autres langages de données volumineuses tels que Pig ou Spark. Il peut extraire des données de fichiers texte (fichiers texte non structurés et fichiers semi-structurés tels que JSON ou XML) et de tableaux.\nU-SQL impose un schéma lors de la récupération de données non structurées à partir de fichiers &#8211; cela facilite la réalisation d&#039;opérations similaires à celles de SQL.\nRowset est la structure de données principale de U-SQL. Il est utilisé pour extraire les données du fichier / de la table d’entrée et pour effectuer une transformation, ainsi que pour écrire dans la destination de sortie. Les ensembles de lignes ne sont pas ordonnés, ce qui aide Azure Data Analytics Engine à mettre en parallèle le traitement à l&#039;aide de plusieurs nœuds de traitement.\nLes scripts U-SQL peuvent utiliser des types, des opérateurs et des expressions à partir de C #.\nLes scripts U-SQL utilisent des constructions SQL comme SÉLECTIONNER, OÙ, JOINDRE et autres définitions de données (DDL) et langage de manipulation de données (DML). Tous les mots-clés doivent être écrits en majuscules seulement.\nPrend en charge les structures de flux de contrôle telles que IF ELSE, mais ne prend pas en charge les boucles While ou For.</p>"},{"id":"text-16","type":"text","heading":"","plain_text":"[Click on the image to enlarge it]","html":"<p>[Click on the image to enlarge it]</p>"},{"id":"text-17","type":"text","heading":"","plain_text":"Figure 5: Flux de données dans le script U-SQL\nCe qui est requis pour le développement local U-SQL\nMicrosoft fournit une configuration semblable à un émulateur pour essayer U-SQL et Azure Data Lake sur une machine locale ou un ordinateur portable. Pour cela, trois composants sont nécessaires:","html":"<p>Figure 5: Flux de données dans le script U-SQL\nCe qui est requis pour le développement local U-SQL\nMicrosoft fournit une configuration semblable à un émulateur pour essayer U-SQL et Azure Data Lake sur une machine locale ou un ordinateur portable. Pour cela, trois composants sont nécessaires:</p>"},{"id":"text-18","type":"text","heading":"","plain_text":"Visual Studio 2017 ou 2019\nKit de développement logiciel (SDK) Azure (version 2.7.1 ou ultérieure) qui accompagne les kits de développement logiciel côté client pour interagir avec les services cloud Azure et est nécessaire pour le stockage, les calculs, etc.\nAzure Data Lake et Stream Analytics Tools pour Visual Studio (version 2.4), qui est un plug-in pour le développement local U-SQL et Azure Data Lake. Une fois cette installation effectuée, les modèles de projet Azure Data Lake Analytics (et autres) pertinents sont ajoutés à Visual Studio, comme indiqué ci-dessous. Sélectionnez U-SQL Project pour commencer.","html":"<p>Visual Studio 2017 ou 2019\nKit de développement logiciel (SDK) Azure (version 2.7.1 ou ultérieure) qui accompagne les kits de développement logiciel côté client pour interagir avec les services cloud Azure et est nécessaire pour le stockage, les calculs, etc.\nAzure Data Lake et Stream Analytics Tools pour Visual Studio (version 2.4), qui est un plug-in pour le développement local U-SQL et Azure Data Lake. Une fois cette installation effectuée, les modèles de projet Azure Data Lake Analytics (et autres) pertinents sont ajoutés à Visual Studio, comme indiqué ci-dessous. Sélectionnez U-SQL Project pour commencer.</p>"},{"id":"text-19","type":"text","heading":"","plain_text":"[Click on the image to enlarge it]","html":"<p>[Click on the image to enlarge it]</p>"},{"id":"text-20","type":"text","heading":"","plain_text":"Figure 6: capture d&#39;écran du nouveau modèle de projet\nPremier script U-SQL\nPour le premier script U-SQL, nous utiliserions un ensemble de données qui constitue l’évaluation des restaurants à Bangalore, en Inde. Les données brutes sont dans des fichiers CSV et ont les colonnes suivantes:","html":"<p>Figure 6: capture d&#039;écran du nouveau modèle de projet\nPremier script U-SQL\nPour le premier script U-SQL, nous utiliserions un ensemble de données qui constitue l’évaluation des restaurants à Bangalore, en Inde. Les données brutes sont dans des fichiers CSV et ont les colonnes suivantes:</p>"},{"id":"text-21","type":"text","heading":"","plain_text":"rest_id &#8211; Identifiant unique du restaurant\nnom &#8211; nom du restaurant\nadresse &#8211; adresse du restaurant\nonline_order &#8211; si la commande en ligne est disponible dans le restaurant ou non\nbook_table &#8211; indique si les options de réservation de table sont disponibles ou non\nrate &#8211; note générale du restaurant sur 5\nvotes &#8211; nombre total de votes pour le restaurant\nphone &#8211; numéro de téléphone du restaurant\nemplacement &#8211; quartier dans lequel se trouve le restaurant\nrest_type &#8211; type de restaurant (par exemple, restaurants décontractés, bouchées rapides, livraisons, boulangerie, salon de desserts, etc.)\nfavorite_dish_id &#8211; identifiant du plat préféré du restaurant","html":"<p>rest_id &#8211; Identifiant unique du restaurant\nnom &#8211; nom du restaurant\nadresse &#8211; adresse du restaurant\nonline_order &#8211; si la commande en ligne est disponible dans le restaurant ou non\nbook_table &#8211; indique si les options de réservation de table sont disponibles ou non\nrate &#8211; note générale du restaurant sur 5\nvotes &#8211; nombre total de votes pour le restaurant\nphone &#8211; numéro de téléphone du restaurant\nemplacement &#8211; quartier dans lequel se trouve le restaurant\nrest_type &#8211; type de restaurant (par exemple, restaurants décontractés, bouchées rapides, livraisons, boulangerie, salon de desserts, etc.)\nfavorite_dish_id &#8211; identifiant du plat préféré du restaurant</p>"},{"id":"text-22","type":"text","heading":"","plain_text":"Le tableau ci-dessous montre les exemples de données.\n[Click on the image to enlarge it]","html":"<p>Le tableau ci-dessous montre les exemples de données.\n[Click on the image to enlarge it]</p>"},{"id":"text-23","type":"text","heading":"","plain_text":"Figure 7: Tableau de classement des restaurants avec exemple de données\nLe script ci-dessous lit les données de classification des restaurants à partir d&#39;un fichier CSV et les écrit dans un fichier TSV. Il n’utilise pas encore d’étape de transformation.","html":"<p>Figure 7: Tableau de classement des restaurants avec exemple de données\nLe script ci-dessous lit les données de classification des restaurants à partir d&#039;un fichier CSV et les écrit dans un fichier TSV. Il n’utilise pas encore d’étape de transformation.</p>"},{"id":"text-24","type":"text","heading":"","plain_text":"// Script - RestaurantScript.usql\n// Les données sont extraites du fichier d&#39;entrée (CSV) et stockées dans la variable de jeu de lignes d&#39;employés\n@restaurant_ratings =\n    EXTRACT rest_id int,\n            chaîne de nom,\n            chaîne d&#39;adresse,\n            online_order bool,\n            book_order bool,\n            tarif double,\n            votes int,\n            chaîne de téléphone,\n            chaîne de localisation,\n            chaîne rest_type,\n            favorite_dish_id int\n    FROM &quot;/Samples/Data/restaurants_ratings.csv&quot;\n    USING Extractors.Csv ();","html":"<p>// Script - RestaurantScript.usql\n// Les données sont extraites du fichier d&#039;entrée (CSV) et stockées dans la variable de jeu de lignes d&#039;employés\n@restaurant_ratings =\n    EXTRACT rest_id int,\n            chaîne de nom,\n            chaîne d&#039;adresse,\n            online_order bool,\n            book_order bool,\n            tarif double,\n            votes int,\n            chaîne de téléphone,\n            chaîne de localisation,\n            chaîne rest_type,\n            favorite_dish_id int\n    FROM &quot;/Samples/Data/restaurants_ratings.csv&quot;\n    USING Extractors.Csv ();</p>"},{"id":"text-25","type":"text","heading":"","plain_text":"// Aucune transformation - les données extraites sont chargées telles quelles dans le fichier de sortie (TSV)\nSORTIE @restaurant_ratings\nTO &quot;/output/restaurants_out.tsv&quot;\nUSING Outputters.Tsv ();\nLes scripts écrivent l&#39;intégralité des ensembles de lignes de restaurant dans le fichier de sortie dans un format séparé par des tabulations.\nNotez que les types de données C # sont utilisés ici (par exemple, chaîne et non car / varchar comme généralement utilisé dans SQL). Nous pouvons non seulement utiliser les types de données de C #, mais aussi les expressions et tous les avantages d&#39;un langage de programmation expressif.\nScript U-SQL avec étape de transformation","html":"<p>// Aucune transformation - les données extraites sont chargées telles quelles dans le fichier de sortie (TSV)\nSORTIE @restaurant_ratings\nTO &quot;/output/restaurants_out.tsv&quot;\nUSING Outputters.Tsv ();\nLes scripts écrivent l&#039;intégralité des ensembles de lignes de restaurant dans le fichier de sortie dans un format séparé par des tabulations.\nNotez que les types de données C # sont utilisés ici (par exemple, chaîne et non car / varchar comme généralement utilisé dans SQL). Nous pouvons non seulement utiliser les types de données de C #, mais aussi les expressions et tous les avantages d&#039;un langage de programmation expressif.\nScript U-SQL avec étape de transformation</p>"},{"id":"text-26","type":"text","heading":"","plain_text":"// Script - RestaurantScript.usql\n// Variables pour le nom et les chemins du fichier d&#39;entrée et de sortie\nDECLARE @inputFile = &quot;/Samples/Data/restaurants_ratings.csv&quot;;\nDECLARE @outputFile = &quot;/output/restaurants_out.tsv&quot;;","html":"<p>// Script - RestaurantScript.usql\n// Variables pour le nom et les chemins du fichier d&#039;entrée et de sortie\nDECLARE @inputFile = &quot;/Samples/Data/restaurants_ratings.csv&quot;;\nDECLARE @outputFile = &quot;/output/restaurants_out.tsv&quot;;</p>"},{"id":"text-27","type":"text","heading":"","plain_text":"// Les données sont extraites du fichier d&#39;entrée (CSV) et stockées dans la variable de jeu de lignes d&#39;employés\n@restaurant_ratings =\n    EXTRACT rest_id int,\n            chaîne de nom,\n            chaîne d&#39;adresse,\n            online_order bool,\n            book_order bool,\n            tarif double,\n            votes int,\n            chaîne de téléphone,\n            chaîne de localisation,\n            chaîne rest_type,\n            favorite_dish_id int\n    DE @inputFile\n    UTILISER Extractors.Csv (skipFirstNRows: 1); // Ignorer la première ligne contenant des en-têtes","html":"<p>// Les données sont extraites du fichier d&#039;entrée (CSV) et stockées dans la variable de jeu de lignes d&#039;employés\n@restaurant_ratings =\n    EXTRACT rest_id int,\n            chaîne de nom,\n            chaîne d&#039;adresse,\n            online_order bool,\n            book_order bool,\n            tarif double,\n            votes int,\n            chaîne de téléphone,\n            chaîne de localisation,\n            chaîne rest_type,\n            favorite_dish_id int\n    DE @inputFile\n    UTILISER Extractors.Csv (skipFirstNRows: 1); // Ignorer la première ligne contenant des en-têtes</p>"},{"id":"text-28","type":"text","heading":"","plain_text":"// Étape de transformation: les colonnes sont renommées et aucune ligne n&#39;est filtrée\n@bestOnlineRestaurants =\n    SELECT name.ToUpper () AS Name, // Conversion des noms en majuscules\n           rate AS Rating,\n           online_order AS Online Ordre,\n           phone AS Phone,\n           emplacement AS Location,\n           Rest_type AS Catégorie,\n           favorite_dish_id AS FavoriteDishId\n    DE @restaurants_rating\n    WHERE rate&gt; 4 &amp;&amp; online_order == true;","html":"<p>// Étape de transformation: les colonnes sont renommées et aucune ligne n&#039;est filtrée\n@bestOnlineRestaurants =\n    SELECT name.ToUpper () AS Name, // Conversion des noms en majuscules\n           rate AS Rating,\n           online_order AS Online Ordre,\n           phone AS Phone,\n           emplacement AS Location,\n           Rest_type AS Catégorie,\n           favorite_dish_id AS FavoriteDishId\n    DE @restaurants_rating\n    WHERE rate&gt; 4 &amp;&amp; online_order == true;</p>"},{"id":"text-29","type":"text","heading":"","plain_text":"// Charge les données transformées dans le fichier de sortie\nSORTIE @bestOnlineRestaurants\nTO @outputFile\nUSING Outputters.Tsv (outputHeader: true); // Écrire les noms de colonnes / en-têtes dans le fichier de sortie\nÉtendre l&#39;expression U-SQL à l&#39;aide d&#39;un code personnalisé\nU-SQL prend en charge les expressions personnalisées écrites en code C #. Le code C # réside dans le code derrière les fichiers. Notez que dans le diagramme ci-dessous, chaque fichier .usql est associé à un fichier .usql.cs contenant le code C # personnalisé.\n \nFigure 8: Projet U-SQL avec plusieurs scripts et code derrière des fichiers","html":"<p>// Charge les données transformées dans le fichier de sortie\nSORTIE @bestOnlineRestaurants\nTO @outputFile\nUSING Outputters.Tsv (outputHeader: true); // Écrire les noms de colonnes / en-têtes dans le fichier de sortie\nÉtendre l&#039;expression U-SQL à l&#039;aide d&#039;un code personnalisé\nU-SQL prend en charge les expressions personnalisées écrites en code C #. Le code C # réside dans le code derrière les fichiers. Notez que dans le diagramme ci-dessous, chaque fichier .usql est associé à un fichier .usql.cs contenant le code C # personnalisé.\n \nFigure 8: Projet U-SQL avec plusieurs scripts et code derrière des fichiers</p>"},{"id":"text-30","type":"text","heading":"","plain_text":"// Code derrière le fichier C # - RestaurantScript.usql.cs\nespace de noms UsqlApp1","html":"<p>// Code derrière le fichier C # - RestaurantScript.usql.cs\nespace de noms UsqlApp1</p>"},{"id":"text-31","type":"text","heading":"","plain_text":"    Aides publiques de classe statique\n    \n        chaîne publique statique FormatRestaurantName (nom de la chaîne, emplacement de la chaîne, chaîne restaurantType)\n        \n            return name + &quot;(&quot; + restaurantType + &quot;) -&quot; + location;\n   // Notez que U-SQL ne supporte pas encore la nouvelle interpolation de chaîne C # 7.0\n               // return $ &quot;name (restaurantType) - location&quot;;\n        \n    ","html":"<p>    Aides publiques de classe statique\n    \n        chaîne publique statique FormatRestaurantName (nom de la chaîne, emplacement de la chaîne, chaîne restaurantType)\n        \n            return name + &quot;(&quot; + restaurantType + &quot;) -&quot; + location;\n   // Notez que U-SQL ne supporte pas encore la nouvelle interpolation de chaîne C # 7.0\n               // return $ &quot;name (restaurantType) - location&quot;;\n        \n    </p>"},{"id":"text-32","type":"text","heading":"","plain_text":"// Script - RestaurantScript.usql\n// Variables pour le nom et les chemins du fichier d&#39;entrée et de sortie\nDECLARE @inputFile = &quot;/Samples/Data/restaurants_ratings.csv&quot;;\nDECLARE @outputFile = &quot;/output/restaurants_out.tsv&quot;;","html":"<p>// Script - RestaurantScript.usql\n// Variables pour le nom et les chemins du fichier d&#039;entrée et de sortie\nDECLARE @inputFile = &quot;/Samples/Data/restaurants_ratings.csv&quot;;\nDECLARE @outputFile = &quot;/output/restaurants_out.tsv&quot;;</p>"},{"id":"text-33","type":"text","heading":"","plain_text":"// Les données sont extraites du fichier d&#39;entrée (CSV) et stockées dans la variable de jeu de lignes d&#39;employés\n@restaurant_ratings =\n    EXTRACT rest_id int,\n            chaîne de nom,\n            chaîne d&#39;adresse,\n            online_order bool,\n            book_order bool,\n            tarif double,\n            votes int,\n            chaîne de téléphone,\n            chaîne de localisation,\n            chaîne rest_type,\n            favorite_dish_id int\n    DE @inputFile\n    UTILISER Extractors.Csv (skipFirstNRows: 1); // Ignorer la première ligne contenant des en-têtes","html":"<p>// Les données sont extraites du fichier d&#039;entrée (CSV) et stockées dans la variable de jeu de lignes d&#039;employés\n@restaurant_ratings =\n    EXTRACT rest_id int,\n            chaîne de nom,\n            chaîne d&#039;adresse,\n            online_order bool,\n            book_order bool,\n            tarif double,\n            votes int,\n            chaîne de téléphone,\n            chaîne de localisation,\n            chaîne rest_type,\n            favorite_dish_id int\n    DE @inputFile\n    UTILISER Extractors.Csv (skipFirstNRows: 1); // Ignorer la première ligne contenant des en-têtes</p>"},{"id":"text-34","type":"text","heading":"","plain_text":"// Étape de transformation: les colonnes sont renommées et aucune ligne n&#39;est filtrée\n@bestOnlineRestaurants =\n    SELECT USQLApp1.Helpers.FormatRestaurantName (nom, emplacement, type de repos), nom AS,\n           rate AS Rating,\n           online_order AS Online Ordre,\n           phone AS Phone,\n           favorite_dish AS FavoriteDish\n    DE @restaurant_ratings\n    WHERE rate&gt; 4 &amp;&amp; online_order == true;","html":"<p>// Étape de transformation: les colonnes sont renommées et aucune ligne n&#039;est filtrée\n@bestOnlineRestaurants =\n    SELECT USQLApp1.Helpers.FormatRestaurantName (nom, emplacement, type de repos), nom AS,\n           rate AS Rating,\n           online_order AS Online Ordre,\n           phone AS Phone,\n           favorite_dish AS FavoriteDish\n    DE @restaurant_ratings\n    WHERE rate&gt; 4 &amp;&amp; online_order == true;</p>"},{"id":"text-35","type":"text","heading":"","plain_text":"// Charge les données transformées dans le fichier de sortie\nSORTIE @bestOnlineRestaurants\nTO @outputFile\nUSING Outputters.Tsv (outputHeader: true); // Écrire les noms de colonnes / en-têtes dans le fichier de sortie\nScript U-SQL effectuant des jointures\nU-SQL prend en charge les jointures entre deux jeux de données différents. Il fournit une jointure interne, une jointure externe, une jointure croisée, etc.\nDans l&#39;extrait de code suivant, nous effectuons une jointure interne entre un jeu de données restaurants et un jeu de données d&#39;ingrédients de plat.","html":"<p>// Charge les données transformées dans le fichier de sortie\nSORTIE @bestOnlineRestaurants\nTO @outputFile\nUSING Outputters.Tsv (outputHeader: true); // Écrire les noms de colonnes / en-têtes dans le fichier de sortie\nScript U-SQL effectuant des jointures\nU-SQL prend en charge les jointures entre deux jeux de données différents. Il fournit une jointure interne, une jointure externe, une jointure croisée, etc.\nDans l&#039;extrait de code suivant, nous effectuons une jointure interne entre un jeu de données restaurants et un jeu de données d&#039;ingrédients de plat.</p>"},{"id":"text-36","type":"text","heading":"","plain_text":"// Script - RestaurantScript.usql\nDECLARE @inputFile = &quot;/Samples/Data/restaurants_ratings.csv&quot;;\nDECLARE @outputFile = &quot;/output/restaurants_out.tsv&quot;;","html":"<p>// Script - RestaurantScript.usql\nDECLARE @inputFile = &quot;/Samples/Data/restaurants_ratings.csv&quot;;\nDECLARE @outputFile = &quot;/output/restaurants_out.tsv&quot;;</p>"},{"id":"text-37","type":"text","heading":"","plain_text":"// Les données sont extraites du fichier d&#39;entrée (CSV) et stockées dans la variable de jeu de lignes d&#39;employés\n@restaurant_ratings = // Code non affiché pour des raisons de brièveté. Exactement le même code que l&#39;exemple ci-dessus","html":"<p>// Les données sont extraites du fichier d&#039;entrée (CSV) et stockées dans la variable de jeu de lignes d&#039;employés\n@restaurant_ratings = // Code non affiché pour des raisons de brièveté. Exactement le même code que l&#039;exemple ci-dessus</p>"},{"id":"text-38","type":"text","heading":"","plain_text":"// Étape de transformation: les colonnes sont renommées et aucune ligne n&#39;est filtrée\n@bestOnlineRestaurants = // Code non affiché par souci de concision. Exactement le même code que l&#39;exemple ci-dessus\nMaintenant, nous aurions besoin de données sur les plats et leurs ingrédients. Bien que ces données soient généralement présentes dans une source externe, nous utiliserions ici un ensemble de lignes en mémoire.","html":"<p>// Étape de transformation: les colonnes sont renommées et aucune ligne n&#039;est filtrée\n@bestOnlineRestaurants = // Code non affiché par souci de concision. Exactement le même code que l&#039;exemple ci-dessus\nMaintenant, nous aurions besoin de données sur les plats et leurs ingrédients. Bien que ces données soient généralement présentes dans une source externe, nous utiliserions ici un ensemble de lignes en mémoire.</p>"},{"id":"text-39","type":"text","heading":"","plain_text":"// Déclarez un jeu de lignes en mémoire pour les ingrédients de plat contenant l&#39;identifiant du plat, le nom du plat et // les ingrédients.","html":"<p>// Déclarez un jeu de lignes en mémoire pour les ingrédients de plat contenant l&#039;identifiant du plat, le nom du plat et // les ingrédients.</p>"},{"id":"text-40","type":"text","heading":"","plain_text":"@dish_ingredients =\n    SÉLECTIONNER\n        * DE\n              (VALEURS\n               (1, &quot;Biryani&quot;, &quot;Riz, épices indiennes, légumes, viande, oeuf, yaourt, fruits secs&quot;),\n               (2, &quot;Masala Dosa&quot;, &quot;riz noir décortiqué, graines de moutarde, graines de fenugrec, sel, huile végétale, pommes de terre, oignons, piments verts, feuilles de curry, curcuma&quot;),\n               (3, &quot;Cake&quot;, &quot;sucre, beurre, oeuf, cacao, crème, sel&quot;)\n              ) AS D (DishId, Dish, Ingredients);\n// Effectuer une jointure interne entre @bestOnlineRestaurants et @dish_ingredients rangset\n@rs_innerJn = SELECT\n        r.Nom,\n        r.Évaluation,\n        i.Dish,\n        Ingrédients\nDE @bestOnlineRestaurants AS r\nINNER JOIN @dish_ingredients AS i\nON r.FavoriteDishId == i.DishId;","html":"<p>@dish_ingredients =\n    SÉLECTIONNER\n        * DE\n              (VALEURS\n               (1, &quot;Biryani&quot;, &quot;Riz, épices indiennes, légumes, viande, oeuf, yaourt, fruits secs&quot;),\n               (2, &quot;Masala Dosa&quot;, &quot;riz noir décortiqué, graines de moutarde, graines de fenugrec, sel, huile végétale, pommes de terre, oignons, piments verts, feuilles de curry, curcuma&quot;),\n               (3, &quot;Cake&quot;, &quot;sucre, beurre, oeuf, cacao, crème, sel&quot;)\n              ) AS D (DishId, Dish, Ingredients);\n// Effectuer une jointure interne entre @bestOnlineRestaurants et @dish_ingredients rangset\n@rs_innerJn = SELECT\n        r.Nom,\n        r.Évaluation,\n        i.Dish,\n        Ingrédients\nDE @bestOnlineRestaurants AS r\nINNER JOIN @dish_ingredients AS i\nON r.FavoriteDishId == i.DishId;</p>"},{"id":"text-41","type":"text","heading":"","plain_text":"// Ecrire dans le fichier de sortie\nSORTIE @rs_innerJn\nTO @outputFile\nUSING Outputters.Tsv (outputHeader: true);\nCela renvoie les restaurants ayant les cotes les plus élevées, ainsi que les détails des ingrédients de son plat préféré, qui sont récupérés en rejoignant l&#39;ensemble de lignes de détails de restaurant avec un ensemble de lignes d&#39;ingrédients de plat par le biais d&#39;une jointure interne.\n[Click on the image to enlarge it]","html":"<p>// Ecrire dans le fichier de sortie\nSORTIE @rs_innerJn\nTO @outputFile\nUSING Outputters.Tsv (outputHeader: true);\nCela renvoie les restaurants ayant les cotes les plus élevées, ainsi que les détails des ingrédients de son plat préféré, qui sont récupérés en rejoignant l&#039;ensemble de lignes de détails de restaurant avec un ensemble de lignes d&#039;ingrédients de plat par le biais d&#039;une jointure interne.\n[Click on the image to enlarge it]</p>"},{"id":"text-42","type":"text","heading":"","plain_text":"Figure 9: Projet U-SQL avec plusieurs scripts et code derrière des fichiers\nScript U-SQL utilisant des fonctions intégrées\nU-SQL fournit une multitude de fonctions intégrées, notamment des fonctions d&#39;agrégat, d&#39;analyse, de classement, etc. Vous trouverez ci-dessous quelques exemples.","html":"<p>Figure 9: Projet U-SQL avec plusieurs scripts et code derrière des fichiers\nScript U-SQL utilisant des fonctions intégrées\nU-SQL fournit une multitude de fonctions intégrées, notamment des fonctions d&#039;agrégat, d&#039;analyse, de classement, etc. Vous trouverez ci-dessous quelques exemples.</p>"},{"id":"text-43","type":"text","heading":"","plain_text":"Type de fonction\n        Exemple","html":"<p>Type de fonction\n        Exemple</p>"},{"id":"text-44","type":"text","heading":"","plain_text":"Fonctions d&#39;agrégat\nAVG, SUM, COUNT, STDEV (écart type), MIN, MAX, etc.","html":"<p>Fonctions d&#039;agrégat\nAVG, SUM, COUNT, STDEV (écart type), MIN, MAX, etc.</p>"},{"id":"text-45","type":"text","heading":"","plain_text":"Fonctions analytiques\nFIRST_VALUE, LAST_VALUE, LAG, LEAD, PERCENTILE_CONT etc.","html":"<p>Fonctions analytiques\nFIRST_VALUE, LAST_VALUE, LAG, LEAD, PERCENTILE_CONT etc.</p>"},{"id":"text-46","type":"text","heading":"","plain_text":"Fonctions de classement\nRANK, DENSE_RANK, NTILE, ROW_NUMBER, etc.","html":"<p>Fonctions de classement\nRANK, DENSE_RANK, NTILE, ROW_NUMBER, etc.</p>"},{"id":"text-47","type":"text","heading":"","plain_text":"Dans le script ci-dessous, nous utilisons des fonctions d&#39;agrégation intégrées telles que MIN, MAX, AVG et STDEV pour le restaurant.","html":"<p>Dans le script ci-dessous, nous utilisons des fonctions d&#039;agrégation intégrées telles que MIN, MAX, AVG et STDEV pour le restaurant.</p>"},{"id":"text-48","type":"text","heading":"","plain_text":"// Déclarer des variables pour les fichiers d&#39;entrée et de sortie\nDECLARE @inputFile = &quot;/Samples/Data/restaurants_raw_data.csv&quot;;\nDECLARE @outputFile = &quot;/output/restaurants_aggr.csv&quot;;","html":"<p>// Déclarer des variables pour les fichiers d&#039;entrée et de sortie\nDECLARE @inputFile = &quot;/Samples/Data/restaurants_raw_data.csv&quot;;\nDECLARE @outputFile = &quot;/output/restaurants_aggr.csv&quot;;</p>"},{"id":"text-49","type":"text","heading":"","plain_text":"@restaurant_ratings =\n    EXTRACT rest_id int,\n            chaîne de nom,\n            chaîne d&#39;adresse,\n            online_order bool,\n            book_order bool,\n            tarif double,\n            votes int,\n            chaîne de téléphone,\n            chaîne de localisation,\n            chaîne rest_type,\n            favorite_dish_id int\n    DE @inputFile\n    UTILISER Extractors.Csv (skipFirstNRows: 1);","html":"<p>@restaurant_ratings =\n    EXTRACT rest_id int,\n            chaîne de nom,\n            chaîne d&#039;adresse,\n            online_order bool,\n            book_order bool,\n            tarif double,\n            votes int,\n            chaîne de téléphone,\n            chaîne de localisation,\n            chaîne rest_type,\n            favorite_dish_id int\n    DE @inputFile\n    UTILISER Extractors.Csv (skipFirstNRows: 1);</p>"},{"id":"text-50","type":"text","heading":"","plain_text":"@output =\n    SÉLECTIONNER\n           rest_type AS RestaurantType,\n           MIN (rate) AS MinRating,\n           MAX (rate) AS MaxRating,\n           AVG (rate) AS Moyenne,\n           STDEV (rate) AS StdDevRating\n    DE @restaurants_ratings\n    GROUP BY rest_type;","html":"<p>@output =\n    SÉLECTIONNER\n           rest_type AS RestaurantType,\n           MIN (rate) AS MinRating,\n           MAX (rate) AS MaxRating,\n           AVG (rate) AS Moyenne,\n           STDEV (rate) AS StdDevRating\n    DE @restaurants_ratings\n    GROUP BY rest_type;</p>"},{"id":"text-51","type":"text","heading":"","plain_text":"// Ecrire dans le fichier de sortie\nOUTPUT @output\nTO @outputFile\nUSING Outputters.Csv (outputHeader: true);\nCatalogue U-SQL\nJusqu&#39;à présent, nous nous sommes concentrés sur les données non structurées et semi-structurées lues à partir de fichiers et écrites dans des fichiers. L’une des forces de U-SQL est d’exploiter des données non structurées stockées dans des fichiers et de fournir une vue schématisée au-dessus de données non structurées, mais il peut gérer des données structurées. Il fournit un système de catalogue de métadonnées général comme Hive. Vous trouverez ci-dessous une liste des principaux objets pris en charge par U-SQL:","html":"<p>// Ecrire dans le fichier de sortie\nOUTPUT @output\nTO @outputFile\nUSING Outputters.Csv (outputHeader: true);\nCatalogue U-SQL\nJusqu&#039;à présent, nous nous sommes concentrés sur les données non structurées et semi-structurées lues à partir de fichiers et écrites dans des fichiers. L’une des forces de U-SQL est d’exploiter des données non structurées stockées dans des fichiers et de fournir une vue schématisée au-dessus de données non structurées, mais il peut gérer des données structurées. Il fournit un système de catalogue de métadonnées général comme Hive. Vous trouverez ci-dessous une liste des principaux objets pris en charge par U-SQL:</p>"},{"id":"text-52","type":"text","heading":"","plain_text":"Base de données: U-SQL prend en charge des bases de données similaires à d’autres systèmes Big Data comme Hive.\nSchéma de base de données: Les objets liés au groupe de schémas de base de données présents dans une base de données, exactement comme des bases de données relationnelles.\nTables et index: Les tables sont des conteneurs pour contenir des données structurées. Les tables peuvent contenir des colonnes de différents types de données. Les données de la table sont stockées dans des fichiers. Les tables offrent des avantages supplémentaires au-delà des vues schématisées par rapport aux fichiers non structurés tels que l&#39;indexation, le partitionnement des données de table en plusieurs compartiments, chaque compartiment étant sauvegardé par un fichier.\nLes vuesLes vues U-SQL sont de deux types: (i) les vues basées sur une table U-SQL et les vues (ii) pointant vers un fichier et utilisant EXTRACT pour obtenir les données.\nLes fonctions: Prend en charge les fonctions scalaires et les valeurs de table.\nProcédures: Les procédures ressemblent aux fonctions mais ne renvoient aucune valeur.\nAssemblées: U-SQL prend en charge le stockage des assemblys .NET qui étend les scripts U-SQL avec une expression personnalisée.","html":"<p>Base de données: U-SQL prend en charge des bases de données similaires à d’autres systèmes Big Data comme Hive.\nSchéma de base de données: Les objets liés au groupe de schémas de base de données présents dans une base de données, exactement comme des bases de données relationnelles.\nTables et index: Les tables sont des conteneurs pour contenir des données structurées. Les tables peuvent contenir des colonnes de différents types de données. Les données de la table sont stockées dans des fichiers. Les tables offrent des avantages supplémentaires au-delà des vues schématisées par rapport aux fichiers non structurés tels que l&#039;indexation, le partitionnement des données de table en plusieurs compartiments, chaque compartiment étant sauvegardé par un fichier.\nLes vuesLes vues U-SQL sont de deux types: (i) les vues basées sur une table U-SQL et les vues (ii) pointant vers un fichier et utilisant EXTRACT pour obtenir les données.\nLes fonctions: Prend en charge les fonctions scalaires et les valeurs de table.\nProcédures: Les procédures ressemblent aux fonctions mais ne renvoient aucune valeur.\nAssemblées: U-SQL prend en charge le stockage des assemblys .NET qui étend les scripts U-SQL avec une expression personnalisée.</p>"},{"id":"text-53","type":"text","heading":"","plain_text":"Maintenant, dans notre exemple d’évaluation de la note, nous aimerions analyser davantage les restaurants ayant une faible note. Pour ce faire, nous aimerions déplacer tous les restaurants avec moins de quatre évaluations vers une table U-SQL pour une analyse plus approfondie.\nBase de données U-SQL, tables et index\nDans l&#39;exemple ci-dessous. nous allons créer une base de données U-SQL qui sera créée dans la base de données avec une clé de schéma et une clé d&#39;index. Nous ne créons pas de schéma spécifiquement ici. La table sera donc créée sous le schéma par défaut ‘dbo’ (Remember SQL Server?) Dans la base de données.\nL&#39;exemple de code ci-dessous montre comment créer cette table.","html":"<p>Maintenant, dans notre exemple d’évaluation de la note, nous aimerions analyser davantage les restaurants ayant une faible note. Pour ce faire, nous aimerions déplacer tous les restaurants avec moins de quatre évaluations vers une table U-SQL pour une analyse plus approfondie.\nBase de données U-SQL, tables et index\nDans l&#039;exemple ci-dessous. nous allons créer une base de données U-SQL qui sera créée dans la base de données avec une clé de schéma et une clé d&#039;index. Nous ne créons pas de schéma spécifiquement ici. La table sera donc créée sous le schéma par défaut ‘dbo’ (Remember SQL Server?) Dans la base de données.\nL&#039;exemple de code ci-dessous montre comment créer cette table.</p>"},{"id":"text-54","type":"text","heading":"","plain_text":"// Script - RestaurantScript.usql\nDECLARE @inputFile = &quot;/Samples/Data/restaurants_ratings.csv&quot;;\nDECLARE @outputFile = &quot;/output/restaurants_out.tsv&quot;;","html":"<p>// Script - RestaurantScript.usql\nDECLARE @inputFile = &quot;/Samples/Data/restaurants_ratings.csv&quot;;\nDECLARE @outputFile = &quot;/output/restaurants_out.tsv&quot;;</p>"},{"id":"text-55","type":"text","heading":"","plain_text":"// Les données sont extraites du fichier d&#39;entrée (CSV) et stockées dans la variable de jeu de lignes d&#39;employés\n@restaurant_ratings = // Code non affiché pour des raisons de brièveté. Exactement le même code que l&#39;exemple ci-dessus","html":"<p>// Les données sont extraites du fichier d&#039;entrée (CSV) et stockées dans la variable de jeu de lignes d&#039;employés\n@restaurant_ratings = // Code non affiché pour des raisons de brièveté. Exactement le même code que l&#039;exemple ci-dessus</p>"},{"id":"text-56","type":"text","heading":"","plain_text":"// Étape de transformation: Ne filtrez que les restaurants notés moins de 4\n@lowRatedRestaurants =\n    SELECT rest_id AS RestaurantId,\n           nom AS Nom,\n           rate AS Rating,\n           online_order AS Online Ordre,\n           phone AS Phone,\n           emplacement AS Location,\n           Rest_type AS Catégorie,\n           favorite_dish_id AS FavoriteDishId\n    DE @restaurants_ratings\n    O taux &lt;4;","html":"<p>// Étape de transformation: Ne filtrez que les restaurants notés moins de 4\n@lowRatedRestaurants =\n    SELECT rest_id AS RestaurantId,\n           nom AS Nom,\n           rate AS Rating,\n           online_order AS Online Ordre,\n           phone AS Phone,\n           emplacement AS Location,\n           Rest_type AS Catégorie,\n           favorite_dish_id AS FavoriteDishId\n    DE @restaurants_ratings\n    O taux &lt;4;</p>"},{"id":"text-57","type":"text","heading":"","plain_text":"// Insérer les détails de restaurant classés faibles dans le catalogue U-SQL\n// Crée la base de données si elle n&#39;existe pas déjà\nCREER UNE BASE DE DONNEES SI N&#39;EXISTE PAS RestaurantsDW;\nUTILISER RestaurantsDW;","html":"<p>// Insérer les détails de restaurant classés faibles dans le catalogue U-SQL\n// Crée la base de données si elle n&#039;existe pas déjà\nCREER UNE BASE DE DONNEES SI N&#039;EXISTE PAS RestaurantsDW;\nUTILISER RestaurantsDW;</p>"},{"id":"text-58","type":"text","heading":"","plain_text":"// Supprime la table si elle existe\nDROP TABLE SI EXISTS dbo.LowRatedRestaurants;","html":"<p>// Supprime la table si elle existe\nDROP TABLE SI EXISTS dbo.LowRatedRestaurants;</p>"},{"id":"text-59","type":"text","heading":"","plain_text":"// Crée la table en spécifiant le schéma de colonne et l&#39;index\nCREATE TABLE dbo.LowRatedRestaurants (\n    RestaurantId int,\n    Chaîne de nom,\n    INDEX idx\n        CLUSTERED (Nom DESC)\n        DISTRIBUÉ PAR HASH (Nom),\n    Note double,\n    OnlineOrder bool,\n    Chaîne téléphonique,\n    Chaîne de localisation,\n    Chaîne de catégorie,\n    FavoriteDishId int\n)","html":"<p>// Crée la table en spécifiant le schéma de colonne et l&#039;index\nCREATE TABLE dbo.LowRatedRestaurants (\n    RestaurantId int,\n    Chaîne de nom,\n    INDEX idx\n        CLUSTERED (Nom DESC)\n        DISTRIBUÉ PAR HASH (Nom),\n    Note double,\n    OnlineOrder bool,\n    Chaîne téléphonique,\n    Chaîne de localisation,\n    Chaîne de catégorie,\n    FavoriteDishId int\n)</p>"},{"id":"text-60","type":"text","heading":"","plain_text":"// Insérer les données du jeu de lignes dans la table U-SQL créée juste avant\nINSÉRER DANS dbo.LowRatedRestaurants\nSELECT * FROM @lowRatedRestaurants;\nVues U-SQL\nLes vues U-SQL ressemblent aux vues de base de données: elles ne stockent pas les données physiquement et ne fournissent pas une vue des données stockées dans des tables ou des fichiers. Les vues peuvent être basées sur une table ou sur une extraction sur des fichiers.\nL’exemple de script ci-dessous montre comment créer une vue basée sur une extraction.","html":"<p>// Insérer les données du jeu de lignes dans la table U-SQL créée juste avant\nINSÉRER DANS dbo.LowRatedRestaurants\nSELECT * FROM @lowRatedRestaurants;\nVues U-SQL\nLes vues U-SQL ressemblent aux vues de base de données: elles ne stockent pas les données physiquement et ne fournissent pas une vue des données stockées dans des tables ou des fichiers. Les vues peuvent être basées sur une table ou sur une extraction sur des fichiers.\nL’exemple de script ci-dessous montre comment créer une vue basée sur une extraction.</p>"},{"id":"text-61","type":"text","heading":"","plain_text":"UTILISEZ LA BASE DE DONNEES RestaurantsDW;\n// Supprimer la vue si elle existe déjà\nDROP VIEW SI EXISTS RestaurantsView;","html":"<p>UTILISEZ LA BASE DE DONNEES RestaurantsDW;\n// Supprimer la vue si elle existe déjà\nDROP VIEW SI EXISTS RestaurantsView;</p>"},{"id":"text-62","type":"text","heading":"","plain_text":"// Créer la vue basée sur une extraction\nCREATE VIEW RestaurantsVoir AS\n    EXTRACT rest_id int,\n            chaîne de nom,\n            chaîne d&#39;adresse,\n            online_order bool,\n            book_order bool,\n            tarif double,\n            votes int,\n            chaîne de téléphone,\n            chaîne de localisation,\n            chaîne rest_type,\n            favorite_dish_id int\n    FROM &quot;/Samples/Data/restaurants_raw_data.csv&quot;\n    UTILISER Extractors.Csv (skipFirstNRows: 1); // Ignorer la première ligne contenant des en-têtes\nPour exécuter la vue, le code suivant est utilisé:","html":"<p>// Créer la vue basée sur une extraction\nCREATE VIEW RestaurantsVoir AS\n    EXTRACT rest_id int,\n            chaîne de nom,\n            chaîne d&#039;adresse,\n            online_order bool,\n            book_order bool,\n            tarif double,\n            votes int,\n            chaîne de téléphone,\n            chaîne de localisation,\n            chaîne rest_type,\n            favorite_dish_id int\n    FROM &quot;/Samples/Data/restaurants_raw_data.csv&quot;\n    UTILISER Extractors.Csv (skipFirstNRows: 1); // Ignorer la première ligne contenant des en-têtes\nPour exécuter la vue, le code suivant est utilisé:</p>"},{"id":"text-63","type":"text","heading":"","plain_text":"@result = SELECT * FROM RestaurantsDW.dbo.RestaurantsView;\nOUTPUT @result\nTO &quot;/output/Restaurants_View.csv&quot;\nUSING Outputters.Csv ();\nFonctions évaluées de table U-SQL (TVF)\nU-SQL prend en charge la fonction scalaire et la fonction de valeur de table (TVF). Les fonctions prennent zéro à plusieurs arguments et renvoient soit une valeur scalaire unique, soit une table, qui est un ensemble de données composé de colonnes et de lignes.\nL&#39;extrait de code ci-dessous montre d&#39;abord comment créer un fichier TVF, puis comment l&#39;invoquer. Il faut un seul paramètre et retourne une table.","html":"<p>@result = SELECT * FROM RestaurantsDW.dbo.RestaurantsView;\nOUTPUT @result\nTO &quot;/output/Restaurants_View.csv&quot;\nUSING Outputters.Csv ();\nFonctions évaluées de table U-SQL (TVF)\nU-SQL prend en charge la fonction scalaire et la fonction de valeur de table (TVF). Les fonctions prennent zéro à plusieurs arguments et renvoient soit une valeur scalaire unique, soit une table, qui est un ensemble de données composé de colonnes et de lignes.\nL&#039;extrait de code ci-dessous montre d&#039;abord comment créer un fichier TVF, puis comment l&#039;invoquer. Il faut un seul paramètre et retourne une table.</p>"},{"id":"text-64","type":"text","heading":"","plain_text":"CREER UNE BASE DE DONNEES SI N&#39;EXISTE PAS RestaurantsDW;\nUTILISEZ LA BASE DE DONNEES RestaurantsDW;","html":"<p>CREER UNE BASE DE DONNEES SI N&#039;EXISTE PAS RestaurantsDW;\nUTILISEZ LA BASE DE DONNEES RestaurantsDW;</p>"},{"id":"text-65","type":"text","heading":"","plain_text":"DROP FUNCTION SI EXISTS tvf_SearchRestaurants;","html":"<p>DROP FUNCTION SI EXISTS tvf_SearchRestaurants;</p>"},{"id":"text-66","type":"text","heading":"","plain_text":"// Créer la fonction de valeur de table qui accepte le type de restaurant en tant que chaîne\n// et retourne une table contenant les détails du restaurant correspondant.\nCREATE FUNCTION tvf_SearchRestaurants (chaîne @RestaurantType)\nRETURNS @searchRestaurants TABLE (id_distant, chaîne de nom, chaîne d’adresse,\n                                    online_order bool, book_order bool, tarif double,\n                                    votes int, chaîne téléphonique, chaîne d&#39;emplacement,\n                                    Rest_type string, favorite_dish_id int)\n    COMME\nCOMMENCER\n    @allRestaurants =\n        EXTRACT rest_id int,\n            chaîne de nom,\n            chaîne d&#39;adresse,\n            online_order bool,\n            book_order bool,\n            tarif double,\n            votes int,\n            chaîne de téléphone,\n            chaîne de localisation,\n            chaîne rest_type,\n            favorite_dish_id int\n        FROM &quot;/Samples/Data/restaurants_raw_data.csv&quot;\n        UTILISER Extractors.Csv (skipFirstNRows: 1); // Ignorer la première ligne contenant des en-têtes","html":"<p>// Créer la fonction de valeur de table qui accepte le type de restaurant en tant que chaîne\n// et retourne une table contenant les détails du restaurant correspondant.\nCREATE FUNCTION tvf_SearchRestaurants (chaîne @RestaurantType)\nRETURNS @searchRestaurants TABLE (id_distant, chaîne de nom, chaîne d’adresse,\n                                    online_order bool, book_order bool, tarif double,\n                                    votes int, chaîne téléphonique, chaîne d&#039;emplacement,\n                                    Rest_type string, favorite_dish_id int)\n    COMME\nCOMMENCER\n    @allRestaurants =\n        EXTRACT rest_id int,\n            chaîne de nom,\n            chaîne d&#039;adresse,\n            online_order bool,\n            book_order bool,\n            tarif double,\n            votes int,\n            chaîne de téléphone,\n            chaîne de localisation,\n            chaîne rest_type,\n            favorite_dish_id int\n        FROM &quot;/Samples/Data/restaurants_raw_data.csv&quot;\n        UTILISER Extractors.Csv (skipFirstNRows: 1); // Ignorer la première ligne contenant des en-têtes</p>"},{"id":"text-67","type":"text","heading":"","plain_text":"    @searchRestaurants =\n        SELECT *\n        DE @allRestaurants\n        WHERE rest_type == @RestaurantType;","html":"<p>    @searchRestaurants =\n        SELECT *\n        DE @allRestaurants\n        WHERE rest_type == @RestaurantType;</p>"},{"id":"text-68","type":"text","heading":"","plain_text":"REVENIR;\nFIN;\nInvoquons maintenant la fonction table value que nous venons de créer et transmettons le paramètre ‘Bakery’ en tant que paramètre. Il renverrait tous les restaurants de type Bakery.","html":"<p>REVENIR;\nFIN;\nInvoquons maintenant la fonction table value que nous venons de créer et transmettons le paramètre ‘Bakery’ en tant que paramètre. Il renverrait tous les restaurants de type Bakery.</p>"},{"id":"text-69","type":"text","heading":"","plain_text":"SORTIE RestaurantsDW.dbo.tvf_SearchRestaurants (&quot;Bakery&quot;)\nTO &quot;/output/BakeryRestaurants.csv&quot;\nUSING Outputters.Csv ();\nÉtude de cas\nL&#39;étude de cas suivante met en évidence l&#39;utilisation du langage U-SQL et Azure Data Lake Analytics dans un vaste programme de transformation numérique stratégique pluriannuel. Au cours de l’année, le client, acteur majeur de l’assurance, a acquis de multiples sociétés d’assurance et de nombreux courtiers. Il a par conséquent utilisé plusieurs systèmes d’engagement de la clientèle pour interagir avec ses clients par courrier électronique, SMS / SMS, discussion en ligne / mobile et appels (entrants et sortants). . En raison de l&#39;approche fracturée, il est devenu très difficile pour le client d&#39;analyser les données d&#39;interaction client.\nAlors que le client s’engageait dans la construction d’une plate-forme omnicanal et d’un centre de contact intégré pour le service à la clientèle via différents canaux (e-mail, SMS, chat, appels vocaux de centre de contact), son choix tactique immédiat consistait à analyser les données provenant de diverses sources. e-mail, texte / SMS, chat et journal des appels.\nUne solution basée sur Azure Data Lake a été développée pour répondre au besoin immédiat d’analyser des données de différents systèmes, dans différents formats. Les données de différents systèmes sources ont été transférées vers Azure Data Lake Store, puis analysées à l&#39;aide d&#39;Azure Data Lake Analysis et de U-SQL.","html":"<p>SORTIE RestaurantsDW.dbo.tvf_SearchRestaurants (&quot;Bakery&quot;)\nTO &quot;/output/BakeryRestaurants.csv&quot;\nUSING Outputters.Csv ();\nÉtude de cas\nL&#039;étude de cas suivante met en évidence l&#039;utilisation du langage U-SQL et Azure Data Lake Analytics dans un vaste programme de transformation numérique stratégique pluriannuel. Au cours de l’année, le client, acteur majeur de l’assurance, a acquis de multiples sociétés d’assurance et de nombreux courtiers. Il a par conséquent utilisé plusieurs systèmes d’engagement de la clientèle pour interagir avec ses clients par courrier électronique, SMS / SMS, discussion en ligne / mobile et appels (entrants et sortants). . En raison de l&#039;approche fracturée, il est devenu très difficile pour le client d&#039;analyser les données d&#039;interaction client.\nAlors que le client s’engageait dans la construction d’une plate-forme omnicanal et d’un centre de contact intégré pour le service à la clientèle via différents canaux (e-mail, SMS, chat, appels vocaux de centre de contact), son choix tactique immédiat consistait à analyser les données provenant de diverses sources. e-mail, texte / SMS, chat et journal des appels.\nUne solution basée sur Azure Data Lake a été développée pour répondre au besoin immédiat d’analyser des données de différents systèmes, dans différents formats. Les données de différents systèmes sources ont été transférées vers Azure Data Lake Store, puis analysées à l&#039;aide d&#039;Azure Data Lake Analysis et de U-SQL.</p>"},{"id":"text-70","type":"text","heading":"","plain_text":"Ingérer &#8211; Au cours de la phase d&#39;acquisition, les données non structurées et structurées provenant de deux sources différentes (données de courrier électronique / texte / conversation ainsi que le journal des appels) sont transférées vers Azure à l&#39;aide du service ETL Azure Data Factory.\nle magasin &#8211; Les données brutes sont stockées sur Azure Data Lake Storage / ADLS sous forme de fichiers à plat.\nAnalyser &#8211; Différents types d’analyses, notamment le filtrage, les jointures, l’agrégation, le fenêtrage, etc. sont effectués en U-SQL.\nModèle et servir &#8211; Les données analysées sont stockées dans des tables structurées pour une utilisation ultérieure à partir de rapports Power BI / personnalisés par utilisateur.","html":"<p>Ingérer &#8211; Au cours de la phase d&#039;acquisition, les données non structurées et structurées provenant de deux sources différentes (données de courrier électronique / texte / conversation ainsi que le journal des appels) sont transférées vers Azure à l&#039;aide du service ETL Azure Data Factory.\nle magasin &#8211; Les données brutes sont stockées sur Azure Data Lake Storage / ADLS sous forme de fichiers à plat.\nAnalyser &#8211; Différents types d’analyses, notamment le filtrage, les jointures, l’agrégation, le fenêtrage, etc. sont effectués en U-SQL.\nModèle et servir &#8211; Les données analysées sont stockées dans des tables structurées pour une utilisation ultérieure à partir de rapports Power BI / personnalisés par utilisateur.</p>"},{"id":"text-71","type":"text","heading":"","plain_text":"[Click on the image to enlarge it]","html":"<p>[Click on the image to enlarge it]</p>"},{"id":"text-72","type":"text","heading":"","plain_text":"Figure 10: Pipeline Azure Data Analytics\nConclusions\nAzure Data Lake Storage et Analytics se sont révélés être une excellente option pour la réalisation de charges de travail de données volumineuses et d’analyses en parallèle avec Azure HDInsight et Azure Databricks. Bien qu’il en soit encore à ses débuts et qu’il ne dispose pas de capacités de streaming et de traitement des événements, son pouvoir réside dans le nouveau langage U-SQL, qui associe la simplicité et l’omniprésence de SQL au phare de Mirosoft, le puissant langage C #. De plus, les outils de développement de Microsoft tels que Visual Studio et les capacités de développement / test locales en font un puissant concurrent dans le domaine des données volumineuses et de l’analyse.\nA propos de l&#39;auteur\nAniruddha Chakrabarti a 19 ans d&#39;expérience dans les domaines de la stratégie, du conseil, du développement de produits et des services informatiques. Il possède de l&#39;expérience dans diverses fonctions, notamment l&#39;architecture de solution, les préventes, l&#39;architecture technologique, le leadership dans la livraison et la gestion de programmes. En tant que AVP du numérique dans Mphasis, Chakrabarti est responsable des préventes, des solutions, des RFP / RFI et de l’architecture technologique de grandes transactions et programmes numériques. Avant de rejoindre Mphasis, il a occupé divers postes de direction et d’architecture chez Accenture, Microsoft, Target, Misys et Cognizant. Ses domaines de prédilection sont le cloud, les mégadonnées et les analyses, l&#39;AI / ML, la PNL, l&#39;IoT, les systèmes distribués, les microservices et les DevOps.","html":"<p>Figure 10: Pipeline Azure Data Analytics\nConclusions\nAzure Data Lake Storage et Analytics se sont révélés être une excellente option pour la réalisation de charges de travail de données volumineuses et d’analyses en parallèle avec Azure HDInsight et Azure Databricks. Bien qu’il en soit encore à ses débuts et qu’il ne dispose pas de capacités de streaming et de traitement des événements, son pouvoir réside dans le nouveau langage U-SQL, qui associe la simplicité et l’omniprésence de SQL au phare de Mirosoft, le puissant langage C #. De plus, les outils de développement de Microsoft tels que Visual Studio et les capacités de développement / test locales en font un puissant concurrent dans le domaine des données volumineuses et de l’analyse.\nA propos de l&#039;auteur\nAniruddha Chakrabarti a 19 ans d&#039;expérience dans les domaines de la stratégie, du conseil, du développement de produits et des services informatiques. Il possède de l&#039;expérience dans diverses fonctions, notamment l&#039;architecture de solution, les préventes, l&#039;architecture technologique, le leadership dans la livraison et la gestion de programmes. En tant que AVP du numérique dans Mphasis, Chakrabarti est responsable des préventes, des solutions, des RFP / RFI et de l’architecture technologique de grandes transactions et programmes numériques. Avant de rejoindre Mphasis, il a occupé divers postes de direction et d’architecture chez Accenture, Microsoft, Target, Misys et Cognizant. Ses domaines de prédilection sont le cloud, les mégadonnées et les analyses, l&#039;AI / ML, la PNL, l&#039;IoT, les systèmes distribués, les microservices et les DevOps.</p>"},{"id":"text-73","type":"text","heading":"","plain_text":"Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]","html":"<p>Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]</p>"}],"sections":[{"id":"text-1","heading":"Text","content":"Points clés à retenir"},{"id":"text-2","heading":"Text","content":"Azure Data Lake Analytics, avec Azure Data Lake Storage, est un composant clé de la solution Azure Data Lake de Microsoft. \nActuellement, Azure Data Lake Analytics ne peut être utilisé que pour des charges de travail par lots. Pour les charges de travail de diffusion en continu et de traitement d&#39;événements, vous devez utiliser d&#39;autres solutions d&#39;analyse Big Data sur Azure telles que HDInsight ou Azure Databricks.\nAzure Data Lake Analytics introduit un nouveau langage de requête et de traitement Big Data appelé U-SQL.\nU-SQL combine les concepts et les constructions de SQL et de C #; la puissance de U-SQL provient de la simplicité et de la nature déclarative de SQL, ainsi que de la puissance de programmation de C #, y compris les types et expressions riches.\nU-SQL fonctionne sur des données non structurées stockées dans des fichiers et fournit une vue schématisée par dessus. Il fournit également un système de catalogue de métadonnées général très similaire aux bases de données relationnelles pour les données structurées."},{"id":"text-3","heading":"Text","content":"Même si les technologies Big Data et Hadoop datent de plus de dix ans, les analyses Big Data et Big Data sont plus pertinentes que jamais. Alors que la version initiale de Hadoop ne pouvait gérer que des charges de travail par lots, l&#39;écosystème Hadoop dispose désormais d&#39;outils pour d&#39;autres cas d&#39;utilisation tels que les données structurées, les données en continu, le traitement des événements, les charges de travail d&#39;apprentissage automatique et le traitement des graphes.\nAlors que Hadoop écosystémique dispose de nombreux outils, tels que Hive, Impala, Pig, Storm et Mahout, pour fournir l’ensemble complet de fonctionnalités, le nouveau cadre d’analyse des données, tel que Spark, intègre une approche intégrée permettant de gérer différents types de charges de travail.\nAzure Data Lake Analytics, ou ADLA, est l&#39;un des moteurs d&#39;analyse Big Data les plus récents. ADLA est le service d’analyse à la demande entièrement géré de Microsoft sur le cloud Azure. Avec Azure Data Lake Storage et HDInsight, Azure Data Lake Analytics constitue l’offre complète de solutions et d’analyses de données hébergées sur le cloud de Microsoft. Azure Data Lake Analytics introduit un nouveau langage de requête et de traitement Big Data appelé U-SQL. Cet article fournit une vue d&#39;ensemble du langage U-SQL et de son utilisation dans les applications.\nAzure Data Lake"},{"id":"text-4","heading":"Text","content":"Azure Data Lake est l’offre de Microsoft Data Lake sur le cloud public Azure et comprend plusieurs services, notamment le stockage, le traitement, l’analyse et d’autres services complémentaires tels que le magasin NoSQL, la base de données relationnelle, l’entrepôt de données et les outils ETL.\nServices de stockage"},{"id":"text-5","heading":"Text","content":"Azure Data Lake Storage ou ADLS &#8211; Azure Data Lake Storage est un stockage en nuage évolutif spécialement conçu à des fins d&#39;analyse, basé sur le standard HDFS ouvert.\nAzure Blob Storage &#8211; Stockage d&#39;objet géré à usage général pour Azure."},{"id":"text-6","heading":"Text","content":"Services d&#39;analyse et de traitement"},{"id":"text-7","heading":"Text","content":"Azure Data Lake Analytics ou ADLA &#8211; Service d&#39;analyse à la demande entièrement géré sur le cloud Azure. Prise en charge du nouveau langage de traitement de données volumineuses U-SQL, à l&#39;exception de .NET, R et Python.\nHDInsight– HDInsight fournit des clusters Hadoop gérés s&#39;exécutant sur Azure et est basé sur la distribution Hadoop de Hortonworks Data Platform (HDP). Prend en charge les outils écosystémiques Hadoop, notamment Spark, Hive, Map Reduced, HBase, Storm et Kafka.\nAzure Databricks: service d&#39;analyse sans serveur géré basé sur Azure Spark. Prend en charge une expérience de type bloc-notes semblable à Jupyter / iPython / Zeppelin, ainsi que d&#39;autres fonctionnalités de communication, et prend en charge Scala, Python, R et SQL."},{"id":"text-8","heading":"Text","content":"Services complémentaires"},{"id":"text-9","heading":"Text","content":"Base de données Cosmos &#8211; Service de base de données NoSQL multi-modal géré sans serveur sur Azure.\nAzure SQL Database &#8211; Base de données relationnelle gérée sous forme de service / DBaaS sur Azure.\nAzure SQL Datawarehouse &#8211; Solution EDW (Enterprise Data Warehouse) basée sur le cloud s&#39;exécutant sur Azure. Il utilise des concepts familiers de systèmes distribués et d&#39;entreposage de données tels que le traitement massivement parallèle (MPP), le stockage en colonnes, la compression, etc. pour garantir des performances rapides pour les requêtes complexes.\nAzure Analysis Service &#8211; Un moteur d&#39;analyse entièrement géré sur Azure; aide à construire des modèles sémantiques sur le cloud. Il est basé sur SQL Server Analysis Server, un moteur d’analyse local basé sur SQL Server. À partir de maintenant, Azure Analysis Service ne prend en charge que les modèles tabulaires et non les modèles multidimensionnels (vous vous souvenez de cubes?).\nAzure Data Factory &#8211; Un service d&#39;intégration de données et d&#39;ETL basé sur le cloud. Il est sans serveur et fournit des connecteurs prêts à l&#39;emploi à plus de 50 systèmes / services en nuage ou sur site tels que Azure Blob Storage, Cosmos DB, Azure SQL Database, sur le serveur SQL / MySQL / PostgreSQL et même des services tiers tels que SFDC. , Dropbox, etc. Il peut déplacer des données entre services cloud, de systèmes sur site vers le cloud ou inversement."},{"id":"text-10","heading":"Text","content":"La figure 1 ci-dessous présente ces différentes offres de Microsoft sur le cloud Azure.\n[Click on the image to enlarge it]"},{"id":"text-11","heading":"Text","content":"Figure 1: Services dans l’offre Azure Data Lake\nL&#39;architecture des applications Big Data et Data Lake sur la plate-forme cloud Azure est illustrée ci-dessous à la figure 2.\n[Click on the image to enlarge it]"},{"id":"text-12","heading":"Text","content":"Figure 2: Architecture typique Big Data / Data Lake / ETL / Analytics sur Azure\nU-SQL Introduction\nU-SQL est le langage de requête et de traitement Big Data pour Azure Data Lake Analytics. C’est un nouveau langage créé par Microsoft, spécialement pour Azure Data Lake Analytics. U-SQL associe un langage déclaratif de type SQL à la puissance de programmation de C #, y compris les types et expressions riches en C #. U-SQL fournit les concepts de traitement de données volumineux bien connus, tels que «schéma à la lecture», «évaluation lazy», processeurs personnalisés et réducteurs. Les ingénieurs de données ayant déjà utilisé des langages tels que Pig, Hive et Spark trouveraient des similitudes avec ceux-ci. Les développeurs ayant des connaissances en C # et en SQL trouveraient U-SQL facile à apprendre et à utiliser.\n \nFigure 3: Liens entre U-SQL et C # et SQL\nBien que U-SQL utilise de nombreux concepts et mots-clés du langage SQL, il n’est pas compatible ANSI SQL. Il ajoute des capacités de gestion de fichiers non structurées à l&#39;aide de mots clés tels que EXTRAIT et SORTIE.\nActuellement, ADLA et U-SQL ne peuvent être utilisés que pour le traitement par lots. Il ne fournit pas d’analyse de flux ni de capacité de traitement des événements.\nConcepts et scripts U-SQL"},{"id":"text-13","heading":"Text","content":"La logique de requête et de traitement U-SQL est écrite dans des fichiers avec l&#39;extension &quot;.usql&quot; appelés scripts U-SQL. Visual Studio IDE ou le portail Azure peuvent être utilisés pour la création de ces scripts. Un projet U-SQL dans Visual Studio contient plusieurs scripts, code derrière des fichiers et assemblys de référence associés."},{"id":"text-14","heading":"Text","content":"La figure 4 ci-dessous montre une capture d&#39;écran d&#39;un projet U-SQL dans Visual Studio IDE.\n \nFigure 4: Un projet U-SQL dans Visual Studio"},{"id":"text-15","heading":"Text","content":"Les scripts U-SQL suivent les modèles ETL (Extract / Retrieve, Transform et Load / Output) bien connus, utilisés par d’autres langages de données volumineuses tels que Pig ou Spark. Il peut extraire des données de fichiers texte (fichiers texte non structurés et fichiers semi-structurés tels que JSON ou XML) et de tableaux.\nU-SQL impose un schéma lors de la récupération de données non structurées à partir de fichiers &#8211; cela facilite la réalisation d&#39;opérations similaires à celles de SQL.\nRowset est la structure de données principale de U-SQL. Il est utilisé pour extraire les données du fichier / de la table d’entrée et pour effectuer une transformation, ainsi que pour écrire dans la destination de sortie. Les ensembles de lignes ne sont pas ordonnés, ce qui aide Azure Data Analytics Engine à mettre en parallèle le traitement à l&#39;aide de plusieurs nœuds de traitement.\nLes scripts U-SQL peuvent utiliser des types, des opérateurs et des expressions à partir de C #.\nLes scripts U-SQL utilisent des constructions SQL comme SÉLECTIONNER, OÙ, JOINDRE et autres définitions de données (DDL) et langage de manipulation de données (DML). Tous les mots-clés doivent être écrits en majuscules seulement.\nPrend en charge les structures de flux de contrôle telles que IF ELSE, mais ne prend pas en charge les boucles While ou For."},{"id":"text-16","heading":"Text","content":"[Click on the image to enlarge it]"},{"id":"text-17","heading":"Text","content":"Figure 5: Flux de données dans le script U-SQL\nCe qui est requis pour le développement local U-SQL\nMicrosoft fournit une configuration semblable à un émulateur pour essayer U-SQL et Azure Data Lake sur une machine locale ou un ordinateur portable. Pour cela, trois composants sont nécessaires:"},{"id":"text-18","heading":"Text","content":"Visual Studio 2017 ou 2019\nKit de développement logiciel (SDK) Azure (version 2.7.1 ou ultérieure) qui accompagne les kits de développement logiciel côté client pour interagir avec les services cloud Azure et est nécessaire pour le stockage, les calculs, etc.\nAzure Data Lake et Stream Analytics Tools pour Visual Studio (version 2.4), qui est un plug-in pour le développement local U-SQL et Azure Data Lake. Une fois cette installation effectuée, les modèles de projet Azure Data Lake Analytics (et autres) pertinents sont ajoutés à Visual Studio, comme indiqué ci-dessous. Sélectionnez U-SQL Project pour commencer."},{"id":"text-19","heading":"Text","content":"[Click on the image to enlarge it]"},{"id":"text-20","heading":"Text","content":"Figure 6: capture d&#39;écran du nouveau modèle de projet\nPremier script U-SQL\nPour le premier script U-SQL, nous utiliserions un ensemble de données qui constitue l’évaluation des restaurants à Bangalore, en Inde. Les données brutes sont dans des fichiers CSV et ont les colonnes suivantes:"},{"id":"text-21","heading":"Text","content":"rest_id &#8211; Identifiant unique du restaurant\nnom &#8211; nom du restaurant\nadresse &#8211; adresse du restaurant\nonline_order &#8211; si la commande en ligne est disponible dans le restaurant ou non\nbook_table &#8211; indique si les options de réservation de table sont disponibles ou non\nrate &#8211; note générale du restaurant sur 5\nvotes &#8211; nombre total de votes pour le restaurant\nphone &#8211; numéro de téléphone du restaurant\nemplacement &#8211; quartier dans lequel se trouve le restaurant\nrest_type &#8211; type de restaurant (par exemple, restaurants décontractés, bouchées rapides, livraisons, boulangerie, salon de desserts, etc.)\nfavorite_dish_id &#8211; identifiant du plat préféré du restaurant"},{"id":"text-22","heading":"Text","content":"Le tableau ci-dessous montre les exemples de données.\n[Click on the image to enlarge it]"},{"id":"text-23","heading":"Text","content":"Figure 7: Tableau de classement des restaurants avec exemple de données\nLe script ci-dessous lit les données de classification des restaurants à partir d&#39;un fichier CSV et les écrit dans un fichier TSV. Il n’utilise pas encore d’étape de transformation."},{"id":"text-24","heading":"Text","content":"// Script - RestaurantScript.usql\n// Les données sont extraites du fichier d&#39;entrée (CSV) et stockées dans la variable de jeu de lignes d&#39;employés\n@restaurant_ratings =\n    EXTRACT rest_id int,\n            chaîne de nom,\n            chaîne d&#39;adresse,\n            online_order bool,\n            book_order bool,\n            tarif double,\n            votes int,\n            chaîne de téléphone,\n            chaîne de localisation,\n            chaîne rest_type,\n            favorite_dish_id int\n    FROM &quot;/Samples/Data/restaurants_ratings.csv&quot;\n    USING Extractors.Csv ();"},{"id":"text-25","heading":"Text","content":"// Aucune transformation - les données extraites sont chargées telles quelles dans le fichier de sortie (TSV)\nSORTIE @restaurant_ratings\nTO &quot;/output/restaurants_out.tsv&quot;\nUSING Outputters.Tsv ();\nLes scripts écrivent l&#39;intégralité des ensembles de lignes de restaurant dans le fichier de sortie dans un format séparé par des tabulations.\nNotez que les types de données C # sont utilisés ici (par exemple, chaîne et non car / varchar comme généralement utilisé dans SQL). Nous pouvons non seulement utiliser les types de données de C #, mais aussi les expressions et tous les avantages d&#39;un langage de programmation expressif.\nScript U-SQL avec étape de transformation"},{"id":"text-26","heading":"Text","content":"// Script - RestaurantScript.usql\n// Variables pour le nom et les chemins du fichier d&#39;entrée et de sortie\nDECLARE @inputFile = &quot;/Samples/Data/restaurants_ratings.csv&quot;;\nDECLARE @outputFile = &quot;/output/restaurants_out.tsv&quot;;"},{"id":"text-27","heading":"Text","content":"// Les données sont extraites du fichier d&#39;entrée (CSV) et stockées dans la variable de jeu de lignes d&#39;employés\n@restaurant_ratings =\n    EXTRACT rest_id int,\n            chaîne de nom,\n            chaîne d&#39;adresse,\n            online_order bool,\n            book_order bool,\n            tarif double,\n            votes int,\n            chaîne de téléphone,\n            chaîne de localisation,\n            chaîne rest_type,\n            favorite_dish_id int\n    DE @inputFile\n    UTILISER Extractors.Csv (skipFirstNRows: 1); // Ignorer la première ligne contenant des en-têtes"},{"id":"text-28","heading":"Text","content":"// Étape de transformation: les colonnes sont renommées et aucune ligne n&#39;est filtrée\n@bestOnlineRestaurants =\n    SELECT name.ToUpper () AS Name, // Conversion des noms en majuscules\n           rate AS Rating,\n           online_order AS Online Ordre,\n           phone AS Phone,\n           emplacement AS Location,\n           Rest_type AS Catégorie,\n           favorite_dish_id AS FavoriteDishId\n    DE @restaurants_rating\n    WHERE rate&gt; 4 &amp;&amp; online_order == true;"},{"id":"text-29","heading":"Text","content":"// Charge les données transformées dans le fichier de sortie\nSORTIE @bestOnlineRestaurants\nTO @outputFile\nUSING Outputters.Tsv (outputHeader: true); // Écrire les noms de colonnes / en-têtes dans le fichier de sortie\nÉtendre l&#39;expression U-SQL à l&#39;aide d&#39;un code personnalisé\nU-SQL prend en charge les expressions personnalisées écrites en code C #. Le code C # réside dans le code derrière les fichiers. Notez que dans le diagramme ci-dessous, chaque fichier .usql est associé à un fichier .usql.cs contenant le code C # personnalisé.\n \nFigure 8: Projet U-SQL avec plusieurs scripts et code derrière des fichiers"},{"id":"text-30","heading":"Text","content":"// Code derrière le fichier C # - RestaurantScript.usql.cs\nespace de noms UsqlApp1"},{"id":"text-31","heading":"Text","content":"    Aides publiques de classe statique\n    \n        chaîne publique statique FormatRestaurantName (nom de la chaîne, emplacement de la chaîne, chaîne restaurantType)\n        \n            return name + &quot;(&quot; + restaurantType + &quot;) -&quot; + location;\n   // Notez que U-SQL ne supporte pas encore la nouvelle interpolation de chaîne C # 7.0\n               // return $ &quot;name (restaurantType) - location&quot;;\n        \n    "},{"id":"text-32","heading":"Text","content":"// Script - RestaurantScript.usql\n// Variables pour le nom et les chemins du fichier d&#39;entrée et de sortie\nDECLARE @inputFile = &quot;/Samples/Data/restaurants_ratings.csv&quot;;\nDECLARE @outputFile = &quot;/output/restaurants_out.tsv&quot;;"},{"id":"text-33","heading":"Text","content":"// Les données sont extraites du fichier d&#39;entrée (CSV) et stockées dans la variable de jeu de lignes d&#39;employés\n@restaurant_ratings =\n    EXTRACT rest_id int,\n            chaîne de nom,\n            chaîne d&#39;adresse,\n            online_order bool,\n            book_order bool,\n            tarif double,\n            votes int,\n            chaîne de téléphone,\n            chaîne de localisation,\n            chaîne rest_type,\n            favorite_dish_id int\n    DE @inputFile\n    UTILISER Extractors.Csv (skipFirstNRows: 1); // Ignorer la première ligne contenant des en-têtes"},{"id":"text-34","heading":"Text","content":"// Étape de transformation: les colonnes sont renommées et aucune ligne n&#39;est filtrée\n@bestOnlineRestaurants =\n    SELECT USQLApp1.Helpers.FormatRestaurantName (nom, emplacement, type de repos), nom AS,\n           rate AS Rating,\n           online_order AS Online Ordre,\n           phone AS Phone,\n           favorite_dish AS FavoriteDish\n    DE @restaurant_ratings\n    WHERE rate&gt; 4 &amp;&amp; online_order == true;"},{"id":"text-35","heading":"Text","content":"// Charge les données transformées dans le fichier de sortie\nSORTIE @bestOnlineRestaurants\nTO @outputFile\nUSING Outputters.Tsv (outputHeader: true); // Écrire les noms de colonnes / en-têtes dans le fichier de sortie\nScript U-SQL effectuant des jointures\nU-SQL prend en charge les jointures entre deux jeux de données différents. Il fournit une jointure interne, une jointure externe, une jointure croisée, etc.\nDans l&#39;extrait de code suivant, nous effectuons une jointure interne entre un jeu de données restaurants et un jeu de données d&#39;ingrédients de plat."},{"id":"text-36","heading":"Text","content":"// Script - RestaurantScript.usql\nDECLARE @inputFile = &quot;/Samples/Data/restaurants_ratings.csv&quot;;\nDECLARE @outputFile = &quot;/output/restaurants_out.tsv&quot;;"},{"id":"text-37","heading":"Text","content":"// Les données sont extraites du fichier d&#39;entrée (CSV) et stockées dans la variable de jeu de lignes d&#39;employés\n@restaurant_ratings = // Code non affiché pour des raisons de brièveté. Exactement le même code que l&#39;exemple ci-dessus"},{"id":"text-38","heading":"Text","content":"// Étape de transformation: les colonnes sont renommées et aucune ligne n&#39;est filtrée\n@bestOnlineRestaurants = // Code non affiché par souci de concision. Exactement le même code que l&#39;exemple ci-dessus\nMaintenant, nous aurions besoin de données sur les plats et leurs ingrédients. Bien que ces données soient généralement présentes dans une source externe, nous utiliserions ici un ensemble de lignes en mémoire."},{"id":"text-39","heading":"Text","content":"// Déclarez un jeu de lignes en mémoire pour les ingrédients de plat contenant l&#39;identifiant du plat, le nom du plat et // les ingrédients."},{"id":"text-40","heading":"Text","content":"@dish_ingredients =\n    SÉLECTIONNER\n        * DE\n              (VALEURS\n               (1, &quot;Biryani&quot;, &quot;Riz, épices indiennes, légumes, viande, oeuf, yaourt, fruits secs&quot;),\n               (2, &quot;Masala Dosa&quot;, &quot;riz noir décortiqué, graines de moutarde, graines de fenugrec, sel, huile végétale, pommes de terre, oignons, piments verts, feuilles de curry, curcuma&quot;),\n               (3, &quot;Cake&quot;, &quot;sucre, beurre, oeuf, cacao, crème, sel&quot;)\n              ) AS D (DishId, Dish, Ingredients);\n// Effectuer une jointure interne entre @bestOnlineRestaurants et @dish_ingredients rangset\n@rs_innerJn = SELECT\n        r.Nom,\n        r.Évaluation,\n        i.Dish,\n        Ingrédients\nDE @bestOnlineRestaurants AS r\nINNER JOIN @dish_ingredients AS i\nON r.FavoriteDishId == i.DishId;"},{"id":"text-41","heading":"Text","content":"// Ecrire dans le fichier de sortie\nSORTIE @rs_innerJn\nTO @outputFile\nUSING Outputters.Tsv (outputHeader: true);\nCela renvoie les restaurants ayant les cotes les plus élevées, ainsi que les détails des ingrédients de son plat préféré, qui sont récupérés en rejoignant l&#39;ensemble de lignes de détails de restaurant avec un ensemble de lignes d&#39;ingrédients de plat par le biais d&#39;une jointure interne.\n[Click on the image to enlarge it]"},{"id":"text-42","heading":"Text","content":"Figure 9: Projet U-SQL avec plusieurs scripts et code derrière des fichiers\nScript U-SQL utilisant des fonctions intégrées\nU-SQL fournit une multitude de fonctions intégrées, notamment des fonctions d&#39;agrégat, d&#39;analyse, de classement, etc. Vous trouverez ci-dessous quelques exemples."},{"id":"text-43","heading":"Text","content":"Type de fonction\n        Exemple"},{"id":"text-44","heading":"Text","content":"Fonctions d&#39;agrégat\nAVG, SUM, COUNT, STDEV (écart type), MIN, MAX, etc."},{"id":"text-45","heading":"Text","content":"Fonctions analytiques\nFIRST_VALUE, LAST_VALUE, LAG, LEAD, PERCENTILE_CONT etc."},{"id":"text-46","heading":"Text","content":"Fonctions de classement\nRANK, DENSE_RANK, NTILE, ROW_NUMBER, etc."},{"id":"text-47","heading":"Text","content":"Dans le script ci-dessous, nous utilisons des fonctions d&#39;agrégation intégrées telles que MIN, MAX, AVG et STDEV pour le restaurant."},{"id":"text-48","heading":"Text","content":"// Déclarer des variables pour les fichiers d&#39;entrée et de sortie\nDECLARE @inputFile = &quot;/Samples/Data/restaurants_raw_data.csv&quot;;\nDECLARE @outputFile = &quot;/output/restaurants_aggr.csv&quot;;"},{"id":"text-49","heading":"Text","content":"@restaurant_ratings =\n    EXTRACT rest_id int,\n            chaîne de nom,\n            chaîne d&#39;adresse,\n            online_order bool,\n            book_order bool,\n            tarif double,\n            votes int,\n            chaîne de téléphone,\n            chaîne de localisation,\n            chaîne rest_type,\n            favorite_dish_id int\n    DE @inputFile\n    UTILISER Extractors.Csv (skipFirstNRows: 1);"},{"id":"text-50","heading":"Text","content":"@output =\n    SÉLECTIONNER\n           rest_type AS RestaurantType,\n           MIN (rate) AS MinRating,\n           MAX (rate) AS MaxRating,\n           AVG (rate) AS Moyenne,\n           STDEV (rate) AS StdDevRating\n    DE @restaurants_ratings\n    GROUP BY rest_type;"},{"id":"text-51","heading":"Text","content":"// Ecrire dans le fichier de sortie\nOUTPUT @output\nTO @outputFile\nUSING Outputters.Csv (outputHeader: true);\nCatalogue U-SQL\nJusqu&#39;à présent, nous nous sommes concentrés sur les données non structurées et semi-structurées lues à partir de fichiers et écrites dans des fichiers. L’une des forces de U-SQL est d’exploiter des données non structurées stockées dans des fichiers et de fournir une vue schématisée au-dessus de données non structurées, mais il peut gérer des données structurées. Il fournit un système de catalogue de métadonnées général comme Hive. Vous trouverez ci-dessous une liste des principaux objets pris en charge par U-SQL:"},{"id":"text-52","heading":"Text","content":"Base de données: U-SQL prend en charge des bases de données similaires à d’autres systèmes Big Data comme Hive.\nSchéma de base de données: Les objets liés au groupe de schémas de base de données présents dans une base de données, exactement comme des bases de données relationnelles.\nTables et index: Les tables sont des conteneurs pour contenir des données structurées. Les tables peuvent contenir des colonnes de différents types de données. Les données de la table sont stockées dans des fichiers. Les tables offrent des avantages supplémentaires au-delà des vues schématisées par rapport aux fichiers non structurés tels que l&#39;indexation, le partitionnement des données de table en plusieurs compartiments, chaque compartiment étant sauvegardé par un fichier.\nLes vuesLes vues U-SQL sont de deux types: (i) les vues basées sur une table U-SQL et les vues (ii) pointant vers un fichier et utilisant EXTRACT pour obtenir les données.\nLes fonctions: Prend en charge les fonctions scalaires et les valeurs de table.\nProcédures: Les procédures ressemblent aux fonctions mais ne renvoient aucune valeur.\nAssemblées: U-SQL prend en charge le stockage des assemblys .NET qui étend les scripts U-SQL avec une expression personnalisée."},{"id":"text-53","heading":"Text","content":"Maintenant, dans notre exemple d’évaluation de la note, nous aimerions analyser davantage les restaurants ayant une faible note. Pour ce faire, nous aimerions déplacer tous les restaurants avec moins de quatre évaluations vers une table U-SQL pour une analyse plus approfondie.\nBase de données U-SQL, tables et index\nDans l&#39;exemple ci-dessous. nous allons créer une base de données U-SQL qui sera créée dans la base de données avec une clé de schéma et une clé d&#39;index. Nous ne créons pas de schéma spécifiquement ici. La table sera donc créée sous le schéma par défaut ‘dbo’ (Remember SQL Server?) Dans la base de données.\nL&#39;exemple de code ci-dessous montre comment créer cette table."},{"id":"text-54","heading":"Text","content":"// Script - RestaurantScript.usql\nDECLARE @inputFile = &quot;/Samples/Data/restaurants_ratings.csv&quot;;\nDECLARE @outputFile = &quot;/output/restaurants_out.tsv&quot;;"},{"id":"text-55","heading":"Text","content":"// Les données sont extraites du fichier d&#39;entrée (CSV) et stockées dans la variable de jeu de lignes d&#39;employés\n@restaurant_ratings = // Code non affiché pour des raisons de brièveté. Exactement le même code que l&#39;exemple ci-dessus"},{"id":"text-56","heading":"Text","content":"// Étape de transformation: Ne filtrez que les restaurants notés moins de 4\n@lowRatedRestaurants =\n    SELECT rest_id AS RestaurantId,\n           nom AS Nom,\n           rate AS Rating,\n           online_order AS Online Ordre,\n           phone AS Phone,\n           emplacement AS Location,\n           Rest_type AS Catégorie,\n           favorite_dish_id AS FavoriteDishId\n    DE @restaurants_ratings\n    O taux &lt;4;"},{"id":"text-57","heading":"Text","content":"// Insérer les détails de restaurant classés faibles dans le catalogue U-SQL\n// Crée la base de données si elle n&#39;existe pas déjà\nCREER UNE BASE DE DONNEES SI N&#39;EXISTE PAS RestaurantsDW;\nUTILISER RestaurantsDW;"},{"id":"text-58","heading":"Text","content":"// Supprime la table si elle existe\nDROP TABLE SI EXISTS dbo.LowRatedRestaurants;"},{"id":"text-59","heading":"Text","content":"// Crée la table en spécifiant le schéma de colonne et l&#39;index\nCREATE TABLE dbo.LowRatedRestaurants (\n    RestaurantId int,\n    Chaîne de nom,\n    INDEX idx\n        CLUSTERED (Nom DESC)\n        DISTRIBUÉ PAR HASH (Nom),\n    Note double,\n    OnlineOrder bool,\n    Chaîne téléphonique,\n    Chaîne de localisation,\n    Chaîne de catégorie,\n    FavoriteDishId int\n)"},{"id":"text-60","heading":"Text","content":"// Insérer les données du jeu de lignes dans la table U-SQL créée juste avant\nINSÉRER DANS dbo.LowRatedRestaurants\nSELECT * FROM @lowRatedRestaurants;\nVues U-SQL\nLes vues U-SQL ressemblent aux vues de base de données: elles ne stockent pas les données physiquement et ne fournissent pas une vue des données stockées dans des tables ou des fichiers. Les vues peuvent être basées sur une table ou sur une extraction sur des fichiers.\nL’exemple de script ci-dessous montre comment créer une vue basée sur une extraction."},{"id":"text-61","heading":"Text","content":"UTILISEZ LA BASE DE DONNEES RestaurantsDW;\n// Supprimer la vue si elle existe déjà\nDROP VIEW SI EXISTS RestaurantsView;"},{"id":"text-62","heading":"Text","content":"// Créer la vue basée sur une extraction\nCREATE VIEW RestaurantsVoir AS\n    EXTRACT rest_id int,\n            chaîne de nom,\n            chaîne d&#39;adresse,\n            online_order bool,\n            book_order bool,\n            tarif double,\n            votes int,\n            chaîne de téléphone,\n            chaîne de localisation,\n            chaîne rest_type,\n            favorite_dish_id int\n    FROM &quot;/Samples/Data/restaurants_raw_data.csv&quot;\n    UTILISER Extractors.Csv (skipFirstNRows: 1); // Ignorer la première ligne contenant des en-têtes\nPour exécuter la vue, le code suivant est utilisé:"},{"id":"text-63","heading":"Text","content":"@result = SELECT * FROM RestaurantsDW.dbo.RestaurantsView;\nOUTPUT @result\nTO &quot;/output/Restaurants_View.csv&quot;\nUSING Outputters.Csv ();\nFonctions évaluées de table U-SQL (TVF)\nU-SQL prend en charge la fonction scalaire et la fonction de valeur de table (TVF). Les fonctions prennent zéro à plusieurs arguments et renvoient soit une valeur scalaire unique, soit une table, qui est un ensemble de données composé de colonnes et de lignes.\nL&#39;extrait de code ci-dessous montre d&#39;abord comment créer un fichier TVF, puis comment l&#39;invoquer. Il faut un seul paramètre et retourne une table."},{"id":"text-64","heading":"Text","content":"CREER UNE BASE DE DONNEES SI N&#39;EXISTE PAS RestaurantsDW;\nUTILISEZ LA BASE DE DONNEES RestaurantsDW;"},{"id":"text-65","heading":"Text","content":"DROP FUNCTION SI EXISTS tvf_SearchRestaurants;"},{"id":"text-66","heading":"Text","content":"// Créer la fonction de valeur de table qui accepte le type de restaurant en tant que chaîne\n// et retourne une table contenant les détails du restaurant correspondant.\nCREATE FUNCTION tvf_SearchRestaurants (chaîne @RestaurantType)\nRETURNS @searchRestaurants TABLE (id_distant, chaîne de nom, chaîne d’adresse,\n                                    online_order bool, book_order bool, tarif double,\n                                    votes int, chaîne téléphonique, chaîne d&#39;emplacement,\n                                    Rest_type string, favorite_dish_id int)\n    COMME\nCOMMENCER\n    @allRestaurants =\n        EXTRACT rest_id int,\n            chaîne de nom,\n            chaîne d&#39;adresse,\n            online_order bool,\n            book_order bool,\n            tarif double,\n            votes int,\n            chaîne de téléphone,\n            chaîne de localisation,\n            chaîne rest_type,\n            favorite_dish_id int\n        FROM &quot;/Samples/Data/restaurants_raw_data.csv&quot;\n        UTILISER Extractors.Csv (skipFirstNRows: 1); // Ignorer la première ligne contenant des en-têtes"},{"id":"text-67","heading":"Text","content":"    @searchRestaurants =\n        SELECT *\n        DE @allRestaurants\n        WHERE rest_type == @RestaurantType;"},{"id":"text-68","heading":"Text","content":"REVENIR;\nFIN;\nInvoquons maintenant la fonction table value que nous venons de créer et transmettons le paramètre ‘Bakery’ en tant que paramètre. Il renverrait tous les restaurants de type Bakery."},{"id":"text-69","heading":"Text","content":"SORTIE RestaurantsDW.dbo.tvf_SearchRestaurants (&quot;Bakery&quot;)\nTO &quot;/output/BakeryRestaurants.csv&quot;\nUSING Outputters.Csv ();\nÉtude de cas\nL&#39;étude de cas suivante met en évidence l&#39;utilisation du langage U-SQL et Azure Data Lake Analytics dans un vaste programme de transformation numérique stratégique pluriannuel. Au cours de l’année, le client, acteur majeur de l’assurance, a acquis de multiples sociétés d’assurance et de nombreux courtiers. Il a par conséquent utilisé plusieurs systèmes d’engagement de la clientèle pour interagir avec ses clients par courrier électronique, SMS / SMS, discussion en ligne / mobile et appels (entrants et sortants). . En raison de l&#39;approche fracturée, il est devenu très difficile pour le client d&#39;analyser les données d&#39;interaction client.\nAlors que le client s’engageait dans la construction d’une plate-forme omnicanal et d’un centre de contact intégré pour le service à la clientèle via différents canaux (e-mail, SMS, chat, appels vocaux de centre de contact), son choix tactique immédiat consistait à analyser les données provenant de diverses sources. e-mail, texte / SMS, chat et journal des appels.\nUne solution basée sur Azure Data Lake a été développée pour répondre au besoin immédiat d’analyser des données de différents systèmes, dans différents formats. Les données de différents systèmes sources ont été transférées vers Azure Data Lake Store, puis analysées à l&#39;aide d&#39;Azure Data Lake Analysis et de U-SQL."},{"id":"text-70","heading":"Text","content":"Ingérer &#8211; Au cours de la phase d&#39;acquisition, les données non structurées et structurées provenant de deux sources différentes (données de courrier électronique / texte / conversation ainsi que le journal des appels) sont transférées vers Azure à l&#39;aide du service ETL Azure Data Factory.\nle magasin &#8211; Les données brutes sont stockées sur Azure Data Lake Storage / ADLS sous forme de fichiers à plat.\nAnalyser &#8211; Différents types d’analyses, notamment le filtrage, les jointures, l’agrégation, le fenêtrage, etc. sont effectués en U-SQL.\nModèle et servir &#8211; Les données analysées sont stockées dans des tables structurées pour une utilisation ultérieure à partir de rapports Power BI / personnalisés par utilisateur."},{"id":"text-71","heading":"Text","content":"[Click on the image to enlarge it]"},{"id":"text-72","heading":"Text","content":"Figure 10: Pipeline Azure Data Analytics\nConclusions\nAzure Data Lake Storage et Analytics se sont révélés être une excellente option pour la réalisation de charges de travail de données volumineuses et d’analyses en parallèle avec Azure HDInsight et Azure Databricks. Bien qu’il en soit encore à ses débuts et qu’il ne dispose pas de capacités de streaming et de traitement des événements, son pouvoir réside dans le nouveau langage U-SQL, qui associe la simplicité et l’omniprésence de SQL au phare de Mirosoft, le puissant langage C #. De plus, les outils de développement de Microsoft tels que Visual Studio et les capacités de développement / test locales en font un puissant concurrent dans le domaine des données volumineuses et de l’analyse.\nA propos de l&#39;auteur\nAniruddha Chakrabarti a 19 ans d&#39;expérience dans les domaines de la stratégie, du conseil, du développement de produits et des services informatiques. Il possède de l&#39;expérience dans diverses fonctions, notamment l&#39;architecture de solution, les préventes, l&#39;architecture technologique, le leadership dans la livraison et la gestion de programmes. En tant que AVP du numérique dans Mphasis, Chakrabarti est responsable des préventes, des solutions, des RFP / RFI et de l’architecture technologique de grandes transactions et programmes numériques. Avant de rejoindre Mphasis, il a occupé divers postes de direction et d’architecture chez Accenture, Microsoft, Target, Misys et Cognizant. Ses domaines de prédilection sont le cloud, les mégadonnées et les analyses, l&#39;AI / ML, la PNL, l&#39;IoT, les systèmes distribués, les microservices et les DevOps."},{"id":"text-73","heading":"Text","content":"Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]"}],"media":{"primary_image":"https://tutos-gameserver.fr/wp-content/uploads/2019/11/azure-data-header-1568103169094.jpg"},"relations":[{"rel":"canonical","href":"https://tutos-gameserver.fr/2019/11/03/azure-data-lake-analytics-et-u-sql-un-bon-serveur-minecraft/"},{"rel":"alternate","href":"https://tutos-gameserver.fr/2019/11/03/azure-data-lake-analytics-et-u-sql-un-bon-serveur-minecraft/llm","type":"text/html"},{"rel":"alternate","href":"https://tutos-gameserver.fr/2019/11/03/azure-data-lake-analytics-et-u-sql-un-bon-serveur-minecraft/llm.json","type":"application/json"},{"rel":"llm-manifest","href":"https://tutos-gameserver.fr/llm-endpoints-manifest.json","type":"application/json"}],"http_headers":{"X-LLM-Friendly":"1","X-LLM-Schema":"1.1.0","Content-Security-Policy":"default-src 'none'; img-src * data:; style-src 'unsafe-inline'"},"license":"CC BY-ND 4.0","attribution_required":true,"allow_cors":false}