Vídeo: Python Tutorial for Beginners [Full Course] Learn Python for Web Development 2024
O conceito de janela, introduzido no padrão SQL: 2003, permite ao programador SQL criar um quadro a partir dos dados contra os quais O agregado e outras funções de janela podem funcionar. O HiveQL agora suporta janelas por padrão SQL. Os exemplos são bastante úteis ao explicar as funções de janelas e agregados.
Os atrasos de partida vêm com o território ao voar é o modo de viagem escolhido. Não é, portanto, surpreendente, que os dados de voo compilados pela RITA incluem essa informação. & ldquo; Qual é exatamente o atraso médio do voo por dia & rdquo; ? A consulta na seguinte lista produz o atraso de partida médio por dia em 2008.
(A) hive (flightdata)> CREATE VIEW avgdepdelay AS> SELECIONAR DayOfWeek, AVG (DepDelay) FROM FlightInfo2008 GROUP BY DayOfWeek; OK Tempo gasto: 0. 121 segundos (B) colméia (flightdata)> SELECIONAR * DE avgdepdelay; … OK 1 10. 269990244459473 2 8. 97689712068735 3 8. 289761053658728 4 9. 772897177836702 5 12. 158036387869656 6 8. 645680904903614 7 11. 568973392595312 Tempo tomado: 18. 6 segundos, Obtido: 7 fileira (s)
TGIF, ou & ldquo; Graças a Deus é sexta-feira, & rdquo; não se aplica a todos. Não deve ser uma surpresa que sexta-feira - Dia 5 nos resultados no Passo (B) - teve o maior número de atrasos.
De qualquer forma, sobre essa consulta na Etapa (A): O Idioma de Definição de Dados da Raiva (DDL) também inclui a instrução CREATE VIEW, que pode ser bastante útil. Na colmeia, as visualizações permitem que uma consulta seja salva, mas os dados não são armazenados como com a declaração Criar Tabela como Selecionar (CTAS).
Quando uma referência é referenciada no HiveQL, o Hive executa a consulta e, em seguida, usa os resultados, que podem ser parte de uma consulta maior. Isso pode ser muito útil para simplificar consultas complexas e dividi-las em componentes lógicos. Além disso, observe a cláusula GROUP BY, que reúne todos os dias por semana e permite que a função agregada do AVG forneça uma resposta consolidada por dia.
Esta informação é útil, é claro, e se você quiser ver alguns números individuais por dia? Consolide os dados com o GROUP BY, e você tem a resposta que está procurando, embora tenha perdido informações também. Resolver esse problema de perda de informação é onde a janela é bastante útil.
Aqui está outra questão sobre os dados de voo da RITA 2008 que o Apache Hive pode responder: & ldquo; Qual é o primeiro voo entre Airport X e Y & rdquo; ? Suponha que, além dessa informação, você queira saber sobre os vôos subseqüentes, apenas no caso de você não ser um & ldquo; pessoa matinal.& rdquo; Bem, este é um trabalho para janelas no HiveQL! A lista a seguir fornece uma consulta que responde a essas perguntas.
(A) hive (flightdata)> SELECT f08. Mês, f08. DayOfMonth, cr. descrição, f08. Origem, 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. código WHERE f08. Origem = 'JFK' E f08. Dest = 'ORD' E f08. Mês = 1 E 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
Na etapa (A), a cláusula GROUP BY foi substituída pela cláusula OVER onde você especifica a PARTITION ou janela sobre a qual você deseja que a função de agregação MIN funcione. Também está incluída a cláusula ORDER BY para que você possa ver os vôos subseqüentes após o primeiro.
Como você pode ver na listagem, em 31 de janeiro, o JetBlue tem um bom vôo cedo em 12: 48 a. m. -pode um posterior, às 6: 35 a. m. Problemas de antecipação, observe que você manteve as informações no resultado da consulta que perderiam se você tivesse escolhido usar uma cláusula GROUP BY novamente.
Esta capacidade, por si só, faz um recurso poderoso, e há mais. Junto com o janelamento na versão Hive 0. 11, a comunidade forneceu algumas funções analíticas que você pode usar em conjunto com janelas. Também estão à sua disposição estas funções: RANK, ROW_NUMBER, DENSE_RANK, CUME_DIST, PERCENT_RANK e NTILE.
Finalmente, não perca o uso de JOIN: é um exemplo prático e real de uma junção interna na qual você se junta à tabela FlightInfo2008 com a tabela Carriers para obter o nome da companhia aérea - em vez disso do que o código críptico encontrado na tabela FlightInfo2008.