복붙노트

[HADOOP] 하이브 QL - 각 항목 당 행 수 제한

HADOOP

하이브 QL - 각 항목 당 행 수 제한

Where 절에 여러 항목이 나열된 경우 목록의 각 항목에 대해 결과를 N으로 제한하는 방법은 무엇입니까?

전의:

select a_id,b,c, count(*), as sumrequests
from table_name
where
a_id in (1,2,3)
group by a_id,b,c
limit 10000

해결법

  1. ==============================

    1.귀하의 질문과 같은 소리는 a_id 당 최고 N을 얻는 것입니다. Hive 11에 소개 된 윈도우 함수로 이것을 할 수 있습니다 :

    귀하의 질문과 같은 소리는 a_id 당 최고 N을 얻는 것입니다. Hive 11에 소개 된 윈도우 함수로 이것을 할 수 있습니다 :

    SELECT a_id, b, c, count(*) as sumrequests
    FROM (
        SELECT a_id, b, c, row_number() over (Partition BY a_id) as row
        FROM table_name
        ) rs
    WHERE row <= 10000
    AND a_id in (1, 2, 3)
    GROUP BY a_id, b, c;
    

    이것은 a_id 당 무작위로 선택된 행을 10,000 개까지 출력합니다. 단순히 a_id 이상으로 그룹화하려는 경우 추가로 분할 할 수 있습니다. 당신은 또한 창 함수에 의해 주문을 사용할 수 있습니다, 거기에 추가 옵션을 표시하는 많은 예제가 있습니다.

  2. from https://stackoverflow.com/questions/11750312/hive-ql-limiting-number-of-rows-per-each-item by cc-by-sa and MIT license