Video: 'Venster' november 2019 2024
Het concept van -vensters, geïntroduceerd in de SQL: 2003-standaard, laat de SQL-programmeur een frame maken van de gegevens waartegen aggregaat en andere vensterfuncties kunnen werken. HiveQL ondersteunt nu vensterbewerking volgens de SQL-standaard. Voorbeelden zijn heel nuttig bij het toelichten van venster- en verzamelfuncties.
Vertrekvertragingen komen met het gebied wanneer vliegen de door u gekozen reiswijze is. Het is dan ook geen verrassing dat de RITA-gecompileerde vluchtgegevens deze informatie bevatten. & Ldquo; Wat is precies de gemiddelde vluchtvertraging per dag & rdquo; ? De query in de volgende lijst geeft de gemiddelde vertrekvertraging per dag in 2008.
(A) component (vluchtgegevens)> CREATE VIEW avgdepdelay AS> SELECT DayOfWeek, AVG (DepDelay) FROM FlightInfo2008 GROUP BY DayOfWeek; OK Gemaakte tijd: 0. 121 seconden (B) component (vluchtgegevens)> 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 Benodigde tijd: 18. 6 seconden, opgehaald: 7 rij (len)
TGIF, of & ldquo; Godzijdank is het vrijdag, & rdquo; is niet voor iedereen van toepassing. Het zou geen verrassing zijn dat vrijdag - dag 5 onder de resultaten in stap (B) - het grootste aantal vertragingen had.
Hoe dan ook, over die vraag in stap (A): de definitie-taal van Hive (DDL) bevat ook de CREATE VIEW-instructie, wat best handig kan zijn. In Hive laten views toe dat een query wordt opgeslagen, maar de gegevens worden niet opgeslagen zoals bij de instructie Create Table as Select (CTAS).
Wanneer naar een weergave wordt verwezen in HiveQL, voert Hive de query uit en gebruikt vervolgens de resultaten, die deel zouden kunnen uitmaken van een grotere query. Dit kan erg handig zijn om complexe query's te vereenvoudigen en op te splitsen in logische componenten. Houd ook rekening met de GROUP BY-component, die alle dagen per week verzamelt en waarmee de AVG-aggregatiefunctie een geconsolideerd antwoord per dag biedt.
Deze informatie is natuurlijk nuttig, maar wat als u enkele individuele nummers per dag wilt zien? Consolideer de gegevens met GROUP BY en u heeft het antwoord dat u zoekt, hoewel u ook informatie bent verloren. Het oplossen van dit probleem van informatieverlies is waar ruiten heel handig worden.
Hier is nog een vraag over de vluchtgegevens van RITA 2008 die Apache Hive kan beantwoorden: & ldquo; Wat is de eerste vlucht tussen Airport X en Y & rdquo; ? Stel dat u naast deze informatie meer wilt weten over vervolgvluchten, voor het geval u geen & ldquo; ochtendpersoon.& Rdquo; Nou, dit is een taak voor het windowen in HiveQL! De volgende lijst biedt u een vraag die deze vragen beantwoordt.
(A) bijenkorf (vluchtgegevens)> SELECT f08. Maand, f08. DayOfMonth, cr. beschrijving, f08. Oorsprong, f08. Dest, f08. FlightNum, f08. DepTime, MIN (f08, DepTime) OVER (PARTITION BY f08. DayOfMonth ORDER BY f08. DepTime) FROM flightinfo2008 f08 JOIN Carriers cr ON f08. UniqueCarrier = cr. code WAAR f08. Oorsprong = 'JFK' EN f08. Dest = 'ORD' EN f08. Maand = 1 AND 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 ComF 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 Airways JFK ORD 907 921 48 1 31 JetBlue Airways JFK ORD 917 1859 48
In stap (A) is de GROUP BY-component vervangen door de OVER-clausule waarin u de PARTITION of venster waarover u de MIN-aggregatiefunctie wilt laten werken. Ook inbegrepen is de ORDER BY-component, zodat u die volgende vluchten kunt zien na de eerste.
Zoals je kunt zien in de aanbieding, heeft JetBlue op 31 januari een leuke, vroege vlucht om 12: 48 uur. m. - Kies voor een latere, om 6: 35 uur. m. Problemen met de vroege stijger, houd er rekening mee dat u de informatie in de query-uitvoer hebt bewaard die verloren zou zijn gegaan als u opnieuw een GROUP BY-component had gebruikt.
Deze mogelijkheid alleen al maakt vensterfuncties een krachtige functie en er is meer. Samen met de vensters in de Hive 0. 11-release heeft de community enkele analytische functies geleverd die u kunt gebruiken in combinatie met windowing. Tot uw beschikking staan ook deze functies: RANG, ROW_NUMBER, DENSE_RANK, CUME_DIST, PERCENT_RANK en NTILE.
Mis het gebruik van JOIN niet: het is een realistisch, praktisch voorbeeld van een inner join waarbij je lid wordt van de FlightInfo2008-tabel met de Carriers-tabel om de naam van de luchtvaartmaatschappij te krijgen - eerder dan de cryptische code die te vinden is in de FlightInfo2008-tabel.