Vidéo: Java / Swing : JFrame & Système de fenêtrage 2024
Le concept de fenêtrage, introduit dans la norme SQL: 2003, permet au programmeur SQL de créer une trame à partir des données l'agrégat et d'autres fonctions de fenêtre peuvent fonctionner. HiveQL prend désormais en charge le fenêtrage selon le standard SQL. Les exemples sont très utiles pour expliquer les fonctions de fenêtrage et d'agrégation.
Les retards de départ viennent avec le territoire lorsque vous voyagez en avion. Il n'est donc pas surprenant que les données de vol compilées par RITA incluent cette information. & ldquo; Quel est exactement le retard de vol moyen par jour & quot; ? La requête dans la liste suivante produit le délai moyen de départ par jour en 2008.
(A) ruche (flightdata)> CRÉER UNE VUE avgdepdelay AS> CHOISIR DayOfWeek, AVG (DepDelay) À PARTIR DE FlightInfo2008 GROUP BY DayOfWeek; OK Temps pris: 0. 121 secondes (B) ruche (flightdata)> SELECT * FROM avgdepdelay; … OK 1 10. 269990244459473 2 8. 97689712068735 3 8. 289761053658728 4 9. 772897177836702 5 12. 158036387869656 6 8. 645680904903614 7 11. 568973392595312 Durée de récupération: 18. 6 secondes, Accueilli: 7 rang (s)
TGIF, ou & ldquo; Dieu merci, c'est vendredi, & rdquo; ne s'applique pas à tout le monde. Il ne devrait pas être surprenant que vendredi - Jour 5 sous les résultats de l'étape (B) - a eu le plus grand nombre de retards.
Quoi qu'il en soit, à propos de cette requête à l'étape (A): Le langage DDL (Data Definition Language) de Hive inclut également l'instruction CREATE VIEW, qui peut être très utile. Dans Hive, les vues permettent d'enregistrer une requête mais les données ne sont pas stockées comme dans l'instruction Create Table as Select (CTAS).
Lorsqu'une vue est référencée dans HiveQL, Hive exécute la requête et utilise ensuite les résultats, qui pourraient faire partie d'une requête plus importante. Cela peut être très utile pour simplifier les requêtes complexes et les décomposer en composants logiques. De plus, notez la clause GROUP BY, qui regroupe tous les jours par semaine et permet à la fonction d'agrégat AVG de fournir une réponse consolidée par jour.
Cette information est utile, bien sûr, mais que se passe-t-il si vous voulez voir des numéros individuels par jour? Consolidez les données avec GROUP BY, et vous avez la réponse que vous recherchez, même si vous avez également perdu des informations. Résoudre ce problème de perte d'information est l'endroit où le fenêtrage devient très pratique.
Voici une autre question sur les données de vol RITA 2008 auxquelles Apache Hive peut répondre: & ldquo; Quel est le premier vol entre l'aéroport X et Y & rdquo; ? Supposons qu'en plus de cette information, vous voulez savoir sur les vols suivants, juste au cas où vous n'êtes pas un & ldquo; Personne matinale.& rdquo; Eh bien, c'est un travail de fenêtrage dans HiveQL! La liste suivante vous fournit une requête qui répond à ces questions.
(A) ruche (flightdata)> SELECT f08. Mois, f08. DayOfMonth, cr. description, f08. Origine, f08. Dest, f08. FlightNum, f08. DepTime, MIN (f08. DepTime) OVER (PARTITION PAR f08.) DayOfMonth ORDRE BY f08. DepTime) FROM flightinfo2008 f08 REJOIGNEZ les opérateurs cr ON f08. UniqueCarrier = cr. code OERE f08. Origine = 'JFK' ET f08. Dest = 'ORD' ET f08. Mois = 1 et f08. DepTime! = 0; OK 1 1 JetBlue Airways JFK ORD 903 641 641 1 1 American Airlines Inc. JFK ORD 1323 833 641 1 1 JetBlue Airways JFK ORD 907 929 641 1 1 Comair Inc. JFK ORD 5083 945 641 1 1 Comair Inc. JFK ORD 5634 1215 641 1 1 JetBlue Airways JFK ORD 915 1352 641 1 1 American Airlines Inc. JFK ORD 1323 833 641 1 1 JetBlue Airways JFK ORD 907 929 641 1 1 Comair Inc. JFK ORD 5083 945 641 1 1 Comair Inc. JFK ORD 5634 1215 641 1 1 JetBlue Airways JFK ORD 915 1352 641 1 1 American Airlines Inc. JFK ORD 1815 1610 641 1 1 JetBlue Airways JFK ORD 917 1735 641 1 1 Comair Inc. JFK ORD 5469 1749 641 1 1 Comair Inc. JFK ORD 5492 2000 641 1 1 JetBlue Airways JFK ORD 919 2102 641 1 31 JetBlue Airways JFK ORD 919 48 48 1 31 JetBlue Airways JFK ORD 903 635 48 1 31 Comair Inc. JFK ORD 5447 650 48 1 31 American Airlines Inc. JFK ORD 1323 840 48 1 31 JetBlue JFK ORD 907 921 48 1 31 JetBlue Airways JFK ORD 917 1859 48
A l'étape (A), la clause GROUP BY a été remplacée par la clause OVER où vous spécifiez la PARTITION ou fenêtre sur laquelle vous voulez que la fonction d'agrégat MIN fonctionne. La clause ORDER BY est également incluse afin que vous puissiez voir les vols suivants après le premier.
Comme vous pouvez le voir sur la liste, le 31 janvier, JetBlue a un bon vol tôt le matin à 12h48. m. -opt pour un plus tard, à 6h35 a. m. Notez que vous avez conservé les informations dans la sortie de la requête qui auraient été perdues si vous aviez choisi d'utiliser à nouveau une clause GROUP BY.
Cette fonctionnalité à elle seule fait du fenêtrage une fonctionnalité puissante, et il y en a plus. Parallèlement à la fenêtre dans la version Hive 0. 11, la communauté a fourni certaines fonctions d'analyse que vous pouvez utiliser conjointement avec la fenêtre. Vous disposez également de ces fonctions: RANK, ROW_NUMBER, DENSE_RANK, CUME_DIST, PERCENT_RANK et NTILE.
Enfin, ne manquez pas l'utilisation de JOIN: C'est un exemple concret pratique d'une jointure interne dans laquelle vous rejoignez la table FlightInfo2008 avec la table Carriers pour obtenir le nom de la compagnie - plutôt que le code cryptique trouvé dans la table FlightInfo2008.