기록 데이터에서 가장 빈번한 경로를 얻는 방법은 무엇입니까?

공룡

Hive 1.2.1에 다음 데이터가 있습니다 (실제 데이터 세트는 훨씬 더 크지 만 데이터 구조는 비슷합니다).

id    radar_id     car_id     datetime
1     A21          123        2017-03-08 17:31:19.0
2     A21          555        2017-03-08 17:32:00.0
3     A21          777        2017-03-08 17:33:00.0
4     B15          123        2017-03-08 17:35:22.0
5     B15          555        2017-03-08 17:34:05.0
6     B15          777        2017-03-08 20:50:12.0
7     C09          777        2017-03-08 20:55:00.0
8     A21          123        2017-03-09 11:00:00.0
9     C11          664        2017-03-09 11:10:00.0
10    A21          123        2017-03-09 11:12:00.0
11    A21          555        2017-03-09 11:12:10.0
12    B15          123        2017-03-09 11:14:00.0
13    B15          555        2017-03-09 11:20:00.0
14    A21          444        2017-03-09 10:00:00.0
15    C09          444        2017-03-09 10:20:00.0
16    B15          444        2017-03-09 10:05:00.0

가장 빈번한 루트 2 개를 얻고 싶습니다. 경로는에 radar_id의해 정렬 된 시퀀스입니다 datetime. 다음과 같은 결과를 얻고 싶습니다.

route          frequency
A21->B15       2
A21->B15-C09   1

빈도는 차량 (고유하지 않음, 고려할 필요 없음 car_id)이 하루에 경로를 통과하는 평균 횟수입니다. 경로의 A21->B15경우 빈도는 2입니다. 왜냐하면 3 번 라이드 2017-03-08와 1 번 라이드가 있기 때문 입니다 2017-03-09. 차량 123A21->A21->B15날짜에 경로 수행하는 것이 중요 합니다 2017-03-09. 와 동일하지 않습니다 A21->B15. 그래서 저는 초기 레이더에서 낮 동안 그 차량을 포착 한 최종 레이더까지의 경로를 고려하고 싶습니다.

라이드가 23:55에 시작되고 00:22에 끝나는 경우는 두 개의 다른 경로로 간주되어야합니다.

Hive 1.2.1을 사용하여 어떻게 할 수 있습니까?

최신 정보:

답에서 제안한 것처럼,이 쿼리를 테스트하지만, route이 포함되어 있지 않습니다 ->. 경로의 값은 000021또는 0450001등입니다.

df = sqlContext.sql("select      regexp_replace(route,'(?<=^|->)\\d{5}','')  as route " +
                                      ",count(*) / min(days)                        as frequency " +

                           "from       (select      concat_ws('->',sort_array(collect_list(radarids))) as route " +
                                                  ",count(distinct dt) over()                           as days " +
                                       "from       (select  car_id " +
                                                  ",to_date(datetime)   as dt " +
                                                  ",concat(printf('%05d',row_number() over " +
                                                  "(partition by car_id,to_date(datetime) " +
                                                  "order by to_unix_timestamp(datetime))),cast(radarid as string)) as radarids " +
                                                  "from    mytable " +
                                                  ") t " +
                                       "group by    car_id " +
                                      ",dt " +
                                      ") t " +
                           "group by    route " +      
                           "order by    frequency desc " +
                           "limit       5")
데이비드 두두 마르코 비츠
select      regexp_replace(route,'(?<=^|->)\\d{5}','')  as route
           ,count(*) / min(days)                        as frequency

from       (select      concat_ws('->',sort_array(collect_list(radar_ids))) as route
                       ,count(distinct dt) over()                           as days
            from       (select  car_id
                               ,to_date(datetime)   as dt
                               ,concat(printf('%05d',row_number() over (partition by car_id,to_date(datetime) order by datetime)),radar_id) as radar_ids
                        from    mytable
                        ) t
            group by    car_id
                       ,dt
            ) t
group by    route          
order by    frequency desc
limit       2 
;

+---------------+-----------+
| route         | frequency |
+---------------+-----------+
| A21->B15      | 1.5       |
+---------------+-----------+
| A21->B15->C09 | 1.0       |
+---------------+-----------+

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

동전 던지기에서 가장 빈번한 머리 길이를 찾는 방법은 무엇입니까?

분류에서Dev

BigQuery에서 발생 횟수로 그룹당 가장 빈번한 값을 얻는 방법은 무엇입니까?

분류에서Dev

확장 가능한 목록보기로 데이터를 설정하는 방법은 무엇입니까?

분류에서Dev

다른 목록에 대한 데이터를 저장하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

Tensorflow에서 정확히 한 번 데이터를 읽는 가장 좋은 방법은 무엇입니까?

분류에서Dev

numpy ndarray에서 가장 빈번한 문자열 요소를 찾는 방법은 무엇입니까?

분류에서Dev

장고의 목록 목록에서 데이터를 얻는 방법은 무엇입니까?

분류에서Dev

확장 가능한 목록보기 및 카운트 다운 타이머에서 그룹 어린이보기를 얻는 방법은 무엇입니까?

분류에서Dev

파이썬을 사용하여 문자열에서 가장 빈번한 여러 k-mer를 얻는 방법은 무엇입니까?

분류에서Dev

모든 블레이드보기에서 사용 가능한 글로벌 사용자 프로필 데이터를 얻는 방법은 무엇입니까?

분류에서Dev

데이터베이스에서 대량 가져 오기를 수행 한 후 데이터를 저장하는 방법은 무엇입니까? PHP

분류에서Dev

L, R 범위의 배열에서 가장 빈번한 숫자와 빈도를 가장 효율적으로 찾는 방법은 무엇입니까?

분류에서Dev

JHipster에서 초기 데이터를 저장하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

Chapel에서 연속 데이터가있는 로컬 배열이되도록 배열 유형을 제한하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

목록보기에서 여러 가지로 데이터를 검색하는 방법은 무엇입니까?

분류에서Dev

localStorage에서 추가 한 후 표시된 html에서 div 데이터를 얻는 방법은 무엇입니까?

분류에서Dev

SwiftUI View에서 동일한 경로를 두 번 참조하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

경로에 데이터가있는 파일의 확장자를 얻는 방법은 무엇입니까?

분류에서Dev

데이터 목록에서 라디오의 가치를 얻는 방법은 무엇입니까?

분류에서Dev

무한 생성기 목록에서 첫 번째 n 요소를 가져 오는 방법은 무엇입니까?

분류에서Dev

Android에서 데이터를 저장하는 가장 적합한 방법은 무엇입니까?

분류에서Dev

확장 가능한 목록보기에서 요소를 비활성화하는 방법은 무엇입니까?

분류에서Dev

목록보기에서 데이터를 저장하는 올바른 방법은 무엇입니까?

분류에서Dev

무한 스크롤이 활성화 된 경우 Kendo 그리드가 데이터를 두 번로드하지 않도록하는 방법은 무엇입니까?

분류에서Dev

MVC 패턴으로보기에 데이터를 보내는 데 가장 좋은 방법은 무엇입니까?

분류에서Dev

VSTO 추가 기능에 일부 데이터를 저장하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

경로 기록에서 현재 URL과 다른 첫 번째 URL을 얻는 방법은 무엇입니까?

분류에서Dev

PDO : 데이터베이스에 데이터를 삽입 한 후 결과를 얻는 가장 좋은 방법은 무엇입니까?

분류에서Dev

데이터베이스의 데이터를 개체 목록으로 가져 와서 목록보기에 표시하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    동전 던지기에서 가장 빈번한 머리 길이를 찾는 방법은 무엇입니까?

  2. 2

    BigQuery에서 발생 횟수로 그룹당 가장 빈번한 값을 얻는 방법은 무엇입니까?

  3. 3

    확장 가능한 목록보기로 데이터를 설정하는 방법은 무엇입니까?

  4. 4

    다른 목록에 대한 데이터를 저장하는 가장 좋은 방법은 무엇입니까?

  5. 5

    Tensorflow에서 정확히 한 번 데이터를 읽는 가장 좋은 방법은 무엇입니까?

  6. 6

    numpy ndarray에서 가장 빈번한 문자열 요소를 찾는 방법은 무엇입니까?

  7. 7

    장고의 목록 목록에서 데이터를 얻는 방법은 무엇입니까?

  8. 8

    확장 가능한 목록보기 및 카운트 다운 타이머에서 그룹 어린이보기를 얻는 방법은 무엇입니까?

  9. 9

    파이썬을 사용하여 문자열에서 가장 빈번한 여러 k-mer를 얻는 방법은 무엇입니까?

  10. 10

    모든 블레이드보기에서 사용 가능한 글로벌 사용자 프로필 데이터를 얻는 방법은 무엇입니까?

  11. 11

    데이터베이스에서 대량 가져 오기를 수행 한 후 데이터를 저장하는 방법은 무엇입니까? PHP

  12. 12

    L, R 범위의 배열에서 가장 빈번한 숫자와 빈도를 가장 효율적으로 찾는 방법은 무엇입니까?

  13. 13

    JHipster에서 초기 데이터를 저장하는 가장 좋은 방법은 무엇입니까?

  14. 14

    Chapel에서 연속 데이터가있는 로컬 배열이되도록 배열 유형을 제한하는 가장 좋은 방법은 무엇입니까?

  15. 15

    목록보기에서 여러 가지로 데이터를 검색하는 방법은 무엇입니까?

  16. 16

    localStorage에서 추가 한 후 표시된 html에서 div 데이터를 얻는 방법은 무엇입니까?

  17. 17

    SwiftUI View에서 동일한 경로를 두 번 참조하는 가장 좋은 방법은 무엇입니까?

  18. 18

    경로에 데이터가있는 파일의 확장자를 얻는 방법은 무엇입니까?

  19. 19

    데이터 목록에서 라디오의 가치를 얻는 방법은 무엇입니까?

  20. 20

    무한 생성기 목록에서 첫 번째 n 요소를 가져 오는 방법은 무엇입니까?

  21. 21

    Android에서 데이터를 저장하는 가장 적합한 방법은 무엇입니까?

  22. 22

    확장 가능한 목록보기에서 요소를 비활성화하는 방법은 무엇입니까?

  23. 23

    목록보기에서 데이터를 저장하는 올바른 방법은 무엇입니까?

  24. 24

    무한 스크롤이 활성화 된 경우 Kendo 그리드가 데이터를 두 번로드하지 않도록하는 방법은 무엇입니까?

  25. 25

    MVC 패턴으로보기에 데이터를 보내는 데 가장 좋은 방법은 무엇입니까?

  26. 26

    VSTO 추가 기능에 일부 데이터를 저장하는 가장 좋은 방법은 무엇입니까?

  27. 27

    경로 기록에서 현재 URL과 다른 첫 번째 URL을 얻는 방법은 무엇입니까?

  28. 28

    PDO : 데이터베이스에 데이터를 삽입 한 후 결과를 얻는 가장 좋은 방법은 무엇입니까?

  29. 29

    데이터베이스의 데이터를 개체 목록으로 가져 와서 목록보기에 표시하는 방법은 무엇입니까?

뜨겁다태그

보관