[解決済み] HiveのRANK OVER機能
2022-02-16 09:22:40
質問
Hiveでこのクエリを実行して、adimpressionテーブルでより頻繁に表示される上位10個のurlだけを返そうとしているのです。
select
ranked_mytable.url,
ranked_mytable.cnt
from
( select iq.url, iq.cnt, rank() over (partition by iq.url order by iq.cnt desc) rnk
from
( select url, count(*) cnt
from store.adimpression ai
inner join zuppa.adgroupcreativesubscription agcs
on agcs.id = ai.adgroupcreativesubscriptionid
inner join zuppa.adgroup ag
on ag.id = agcs.adgroupid
where ai.datehour >= '2014-05-15 00:00:00'
and ag.siteid = 1240
group by url
) iq
) ranked_mytable
where
ranked_mytable.rnk <= 10
order by
ranked_mytable.url,
ranked_mytable.rnk desc
;
残念ながら、次のようなエラーメッセージが表示されます。
FAILED: SemanticException [Error 10002]: Line 26:23 Invalid column reference 'rnk'
デバッグしてみましたが、その時点までは
ranked_mytable
のサブクエリで、すべてが順調に進みます。私は
where ranked_mytable.rnk <= 10
節がありますが、エラーメッセージがずっと表示されます。
どうすればいいですか?
RANK OVER
は、この目標を達成するための最適な関数ではありません。
より良い解決策は、以下のものを組み合わせて使うことでしょう。
SORT BY
と
LIMIT
. 実際そうなのですが
LIMIT
はテーブルの行をランダムに選択しますが、これは
SORT BY
関数を使用します。からは
ApacheのWikiです。
-- Top k queries. The following query returns the top 5 sales records wrt amount.
SET mapred.reduce.tasks = 1 SELECT * FROM sales SORT BY amount
DESC LIMIT 5
このようにクエリを書き換えることができます。
select
iq.url,
iq.cnt
from
( select url, count(*) cnt
from store.adimpression ai
inner join zuppa.adgroupcreativesubscription agcs
on agcs.id = ai.adgroupcreativesubscriptionid
inner join zuppa.adgroup ag
on ag.id = agcs.adgroupid
where ai.datehour >= '2014-05-15 00:00:00'
and ag.siteid = 1240
group by url ) iq
sort by
iq.cnt desc
limit
10
;
関連
-
[解決済み] hive.tez.container.size と tez.task.resource.memory.mb の違いについて
-
[解決済み] Apache Hive 小数点以下2桁に四捨五入する方法は?
-
[解決済み] Hadoop-Hiveからテーブルを削除/トランケートする方法は?
-
[解決済み] 単一ファイルをコピーする際にhadoop discpの問題が発生する
-
[解決済み] HADOOPでワード数を値でソートする方法は?[重複している]。
-
[解決済み] ハイブがバケットにデータを挿入する際に作成した小さなファイルをマージする方法は?
-
[解決済み] HDFSのHiveプロキシユーザーの最適なソリューションは何ですか?
-
[解決済み] Hive - Hiveサービスのクラスパスを印刷する方法
-
[解決済み] HiveのRANK OVER機能
-
[解決済み] hadoop の -libjars に関する問題
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】なぜHiveのFetchタスクはMapのみのタスクより速く動作するのですか?
-
[解決済み] hadoop.tmp.dirはどうすればいいのでしょうか?
-
[解決済み] Apache Hive 小数点以下2桁に四捨五入する方法は?
-
[解決済み] HADOOPでワード数を値でソートする方法は?[重複している]。
-
[解決済み] HadoopでDatanodeのプロセスが実行されていない
-
[解決済み] ハイブがバケットにデータを挿入する際に作成した小さなファイルをマージする方法は?
-
[解決済み] Hive - Hiveサービスのクラスパスを印刷する方法
-
[解決済み] HiveのRANK OVER機能
-
[解決済み] curl で --negotiate を使用する場合、keytab ファイルは必要ですか?
-
[解決済み] Hiveで日付の差を計算する方法