私は MySQL の経験があり、最近では代わりに HIVE でいくつかの作業を行う必要があります。
クエリの基本構造は 2 つの間で非常に似ていますが、HIVE の GROUP BY の動作は少し異なるようです... したがって、以前に GROUP BY を使用して MySQL で達成できたものを達成できません。
以下は私の質問です。たとえば、列 A、B、C を持つテーブルがあり、最大の行を選択したいとします。列 A でグループ化された B 列の値。次のようにします。
SELECT A, max(B) FROM myTable GROUP BY A
上記のコードは、HIVE で問題なく動作します。しかし、最大行と同じ行にある列 C の値も確認したい場合はどうでしょうか。B値?MySQLでは、次のことができます:
SELECT A, max(B), C FROM myTable GROUP BY A
しかし、HIVE ではこれができません。C が GROUP BY キーに含まれていないと文句を言いますが、C を GROUP BY に追加すると、結果は完全に私が望むものではありません。
では、HIVEでそのような望ましい結果を選択する方法は何ですか? 列Cでcollect_setを使用すると問題を解決できると言う人もいますが、collect_setがどのように順序付けられているかがわからないため、どの要素を返すかわかりません...