ビデオ: 【公式PV】 ダミードライブレコーダー (OS-201) & 録画中ステッカーシリーズ プロモーションビデオ 2024
SQL:2003標準で導入された ウィンドウの概念 により、SQLプログラマは、集合体および他のウィンドウ関数が動作することができる。 HiveQLは現在、SQL標準に従ってウィンドウ処理をサポートしています。例は、窓関数と集約関数を説明するときに非常に役立ちます。
飛行機があなたの選択された旅行モードである場合、出発遅延には領土があります。それで、RITAコンパイルされた飛行データがこの情報を含むことは驚くことではない。 “ 1日あたりの平均飛行遅延&rdquoは正確に何ですか? ?次の一覧のクエリは、2008年の1日あたりの平均出発遅延を生成します。
<! FlightInfo2008からのDayOfWeek、AVG(DepDelay)のGROUP BY DayOfWeekからのAVGdepdelayの作成>(1)>(A) OK時間:0. 121秒 (B) ハイブ(飛行データ)> 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取った時間:18. 6秒取って来る:7列999 TGIF、または“神様ありがとうございます。金曜日です。”誰にも適用されません。金曜日 - ステップ(B)の結果の5日目が最も遅れていることは驚くべきことではありません。 <!とにかく、ステップ(A)のクエリについて:Hiveのデータ定義言語(DDL)には、CREATE VIEW文も含まれています。これは非常に便利です。 Hiveでは、ビューを使用するとクエリを保存できますが、Select Table as Select(CTAS)ステートメントのようにデータは保存されません。
<! - 1 - >
HiveQLでビューが参照されると、Hiveはクエリを実行した後、大きなクエリの一部である結果を使用します。これは、複雑なクエリを単純化し、それらを論理コンポーネントに分解するのに非常に便利です。さらに、GROUP BY句に注意してください。この句は、1週間にすべての曜日を収集し、AVG集計関数が1日あたりの集約された回答を提供できるようにします。<! - 3 - >
もちろん、この情報は役に立ちますが、1日当たりの個人数を見たい場合はどうしたらいいでしょうか? GROUP BYでデータを統合すると、探している回答が得られますが、情報も失われてしまいます。この情報損失の問題を解決することは、ウィンドウ処理が非常に便利になるところです。<! - 2 - >
Apache Hiveが答えることができるRITA 2008の飛行データに関するもう1つの質問があります:“空港XとY&rdquoの間の最初のフライトは何ですか? ?この情報に加えて、あなたが&ldquoではない場合に備えて、その後のフライトについて知りたいとします。朝の人。”さて、これはHiveQLでのウィンドウ処理の仕事です!以下のリストは、これらの質問に答えるクエリを提供します。<! - 3 - >
(A)ハイブ(飛行データ)> SELECT f08。月、f08。 DayOfMonth、cr。説明、f08。起源、f08。 Dest、f08。 FlightNum、f08 DepTime、MIN(f08。DepTime)OVER(PARTITION BY f08。DayOfMonth ORDER BY f08。DepTime)からflightinfo2008 f08 JOINキャリアがONになったときf08。 UniqueCarrier = cr。コードWHERE f08。 Origin = 'JFK' AND f08。 Dest = 'ORD' AND f08。月= 1 AND f08。 DepTime! = 0; … OK 1 1 JetBlue Airways JFK ORD 903 641 641 1 1アメリカン航空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アメリカン航空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アメリカン航空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ジェットブルー航空JFK ORD 919 2102 641 1 31ジェットブルー航空JFK ORD 919 48 48 1 31ジェットブルー航空JFK ORD 903 635 48 1 31 Comair Inc. JFK ORD 5447 650 48 1 31アメリカン航空Inc. JFK ORD 1323 840 48 1 31 JetBlue Airways JFK ORD 907 921 48 1 31 JetBlue Airways JFK ORD 917 1859 48
ステップ(A)では、GROUP BY句がOVER句に置き換えられました。 MIN集合関数を操作するPARTITIONまたはウィンドウ。 ORDER BY句も含まれているため、最初のフライト以降のフライトを見ることができます。<! - 1 - > リストからわかるように、1月31日、JetBlueは素早く素早く12:48に飛行しています。 m。 6:35aで、後の1つの場合は-optを指定します。 m。早期ライザーの問題は別として、GROUP BY句を再度使用するように選択した場合に失われてしまった情報をクエリ出力に保持していることに注意してください。
この機能だけで、ウィンドウ処理は強力な機能になります。 Hive 0.1リリースのウィンドウ処理に加えて、コミュニティは、ウィンドウ処理と組み合わせて使用できるいくつかの分析機能を提供していました。また、RANK、ROW_NUMBER、DENSE_RANK、CUME_DIST、PERCENT_RANK、およびNTILEの関数も自由に使用できます。
<!最後に、JOINの使い方を見逃してはいけません。実際の実用的な内部結合の例です.Cyriersテーブルを使用してFlightInfo2008テーブルに参加し、航空会社の名前を取得しますFlightInfo2008テーブルにある潜在的なコードよりも優れています。