2

テーブル totalSpeeds のデータの列 (速度) から値の最初の四分位数を取得したいと考えています。

これを行うために、変数 (しきい値) を作成してから、それ以下の値を選択しました。

SET threshold = (SELECT 0.25*MAX(speed) FROM totalSpeeds);
SELECT speed FROM totalSpeeds WHERE speed <= ${hiveconf:threshold};

これは失敗し、解析エラーが返されました。速度の最初の四分位数の上限を取得するより効率的な方法はありますか? または、上記のコマンドを微調整して、最初の四分位の速度を返す方法はありますか?

前もって感謝します、

アニータ

4

1 に答える 1

0

パーセンタイルを計算するための UDF がハイブに組み込まれています。使用する

totalSpeeds からパーセンタイル (速度、.25) を選択します。

UDF の説明:

グループ内の列の正確な p パーセンタイルを返します。p は 0 から 1 の間でなければなりません

同様に、percentile(speed, array(p1, p2)) を使用して複数のパーセンタイルを抽出することもできます

于 2013-08-08T05:44:27.710 に答える