Как получить группу с максимальной отметкой времени - PullRequest
0 голосов
/ 08 января 2019

Ниже приведен результат запроса детализации со всеми столбцами из HBASE.

+----------------+---------+---------+------------+------------+--------------+---------+---------+---------+---------+----------+---------------------------+----------------+
|     basicid    | column1 | column2 |column3|column4|   column5    |column6  | column7 | column8 | uniqueid| column10 |column11|    timestamp     |
+----------------+---------+---------+------------+------------+--------------+---------+---------+---------+---------+----------+---------------------------+----------------+
| basic_id/4657  | 4       | 408     | Test  | Test  | Centimeters  | length  | 50.0    | 60.0    | 13445   | 5271     | Test   | 1546938660000    |
| basic_id/4658  | 4       | 408     | Test  | Test  | Centimeters  | length  | 50.0    | 60.0    | 13445   | 5271     | Test   | 1546938720000    |
| basic_id/4659  | 4       | 408     | Test  | Test  | Centimeters  | length  | 50.0    | 60.0    | 13445   | 5271     | Test   | 1546938720000    |
| basic_id/4660  | 4       | 408     | Test  | Test  | Centimeters  | length  | 50.0    | 60.0    | 13446   | 5271     | Test   | 1546944120000    |
| basic_id/4661  | 4       | 408     | Test  | Test  | Centimeters  | length  | 50.0    | 60.0    | 13446   | 5271     | Test   | 1546944120000    |
+----------------+---------+---------+------------+------------+--------------+---------+---------+---------+---------+----------+---------------------------+----------------+

Я хочу, чтобы элементы столбца уникального уникального идентификатора имели максимальную временную метку (должна быть одна запись, если тоже).

Таким образом, результат должен давать два различных уникальных идентификатора из набора результатов, имеющих максимальную временную метку. EX:

   +----------------+---------+---------+------------+------------+--------------+---------+---------+---------+---------+----------+---------------------------+----------------+
    |     basicid    | column1 | column2 |column3|column4|   column5    |column6  | column7 | column8 | uniqueid| column10 |column11|    timestamp     |
    +----------------+---------+---------+------------+------------+--------------+---------+---------+---------+---------+----------+---------------------------+----------------+
    | basic_id/4659  | 4       | 408     | Test  | Test  | Centimeters  | length  | 50.0    | 60.0    | 13445   | 5271     | Test   | 1546938720000    |
    | basic_id/4661  | 4       | 408     | Test  | Test  | Centimeters  | length  | 50.0    | 60.0    | 13446   | 5271     | Test   | 1546944120000    |
    +----------------+---------+---------+------------+------------+--------------+---------+---------+---------+---------+----------+---------------------------+----------------+

Я пытаюсь использовать метку времени с функцией max, но в группе я должен указать все столбцы. Если я дам все это вышеупомянутый ответ, я не получу.

Ответы [ 2 ]

0 голосов
/ 08 января 2019
select * from (
select rank over(partition by uniqueid order by timestamp desc) as rnk
       ,uniqueid
       ,timestamp
  from table)x 
 where x.rnk=1
0 голосов
/ 08 января 2019

Выберите uniqueid, max (timestamp) из группы mytable по uniqueid

...