Video: Gustafsson 3 tr - S01e02 - Fönstret mot gården 2024
Begreppet windowing, som introduceras i SQL: 2003-standarden gör det möjligt för SQL-programmeraren att skapa en ram från data mot vilken aggregat och andra fönsterfunktioner kan fungera. HiveQL stöder nu fönsterrutan per SQL-standarden. Exempel är ganska användbara när man förklarar fönster och aggregatfunktioner.
Avgångsförseningar kommer med territoriet när flygningen är ditt valda resealternativ. Det är ingen överraskning att RITA-sammanställda flygdata inkluderar denna information. & Ldquo; Vad exakt är den genomsnittliga flygförseningen per dag & rdquo; ? Frågan i följande lista ger den genomsnittliga avgångsfördröjningen per dag under 2008.
(A) hive (flightdata)> CREATE VIEW avgdepdelay AS> SELECT DayOfWeek, AVG (DepDelay) FRÅN FlightInfo2008 GROUP BY DayOfWeek; OK Tidsupptagen: 0. 121 sekunder (B) hive (flightdata)> SELECT * FRÅN avgdepdelay; … OK 1 10. 269990244459473 2 8. 97689712068735 3 8. 289761053658728 4 9. 772897177836702 5 12. 158036387869656 6 8. 645680904903614 7 11. 568973392595312 Tidsåtgång: 18. 6 sekunder, Fetched: 7 rad (er)
TGIF, eller & ldquo; Tack Gud Det är fredag, & rdquo; gäller inte alla. Det skulle inte vara någon överraskning att fredagen - dag 5 under resultaten i steg (B) - hade det högsta antalet förseningar.
Hur som helst, om den frågan i steg (A): Hives Data Definition Language (DDL) innehåller också CREATE VIEW-satsen, vilket kan vara ganska användbart. I Hive tillåter visningar en fråga att sparas, men data lagras inte som med uppställningen Skapa tabell som Select (CTAS).
När en vy hänvisas till i HiveQL exekverar Hive frågan och använder sedan resultaten, som kan ingå i en större fråga. Detta kan vara mycket användbart för att förenkla komplexa frågor och bryta ner dem i logiska komponenter. Lägg märke till GROUP BY-klausulen som samlar alla dagar i veckan och gör att AVG-aggregatfunktionen kan ge ett konsoliderat svar per dag.
Denna information är naturligtvis användbar, men vad händer om du vill se några enskilda nummer per dag? Konsolidera data med GROUP BY, och du har svaret du letar efter, även om du har förlorat information också. Att lösa detta problem med informationsförlust är hur fönstret blir ganska användbart.
Här är en annan fråga om RITA 2008 flygdata som Apache Hive kan svara: & ldquo; Vad är den första flygningen mellan flygplatsen X och Y & rdquo; ? Anta att förutom denna information vill du veta om efterföljande flyg, bara om du inte är en & ldquo; morgon människa.& Rdquo; Jo, det här är ett jobb för att fönstera i HiveQL! Följande notering ger dig en fråga som svarar på dessa frågor.
(A) hive (flightdata)> SELECT f08. Månad, f08. DayOfMonth, cr. beskrivning, f08. Ursprung, f08. Dest, f08. FlightNum, f08. DepTime, MIN (f08. DepTime) ÖVER (PARTITION BY f08. DayOfMonth ORDER BY f08. DepTime) FRÅN flightinfo2008 f08 HJÄLPAR BOLAGAR KRAFTF08. UniqueCarrier = cr. kod VAR f08. Ursprung = 'JFK' OCH F08. Dest = 'ORD' OCH F08. Månad = 1 OCH 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 Airways JFK ORD 907 921 48 1 31 JetBlue Airways JFK ORD 917 1859 48
I steg (A) ersattes GROUP BY-klausulen med OVER-klausulen där du anger PARTITION eller fönster där du vill att MIN aggregatfunktionen ska fungera. Dessutom ingår ordningen ORDER BY så att du kan se de efterföljande flygningarna efter den första.
Som du kan se från noteringen, den 31 januari, har JetBlue ett bra tidigt flyg vid 12: 48 a. m. -för en senare, klockan 6:35 a. m. Tidigare utgåvor avviker, notera att du har behållit informationen i sökutgången som skulle ha gått vilse om du hade valt att använda en GROUP BY-klausul igen.
Den här funktionen gör att Windowing är en kraftfull funktion, och det finns mer. Tillsammans med windowing i Hive 0. 11 release, gav samhället vissa analysfunktioner som du kan använda i samband med fönsterrutan. Du har även följande funktioner: RANK, ROW_NUMBER, DENSE_RANK, CUME_DIST, PERCENT_RANK och NTILE.
Slutligen missa inte användningen av JOIN: Det är ett verkligt, praktiskt exempel på ett inre sammanfogning där du går med i FlightInfo2008-bordet med bärbordet för att få namnet på flygbolaget - snarare än den kryptiska koden som finns i tabellen FlightInfo2008.