임팔라에서 일하고 있는데 임팔라와 SQL 모두에서 매우 익숙하지는 않지만 외모가있는 데이터 세트를 만들 수 있어야합니다.임펄스 SQL 행 데이터를 기반으로 행을 만들고 행 데이터를 추가하여 열 채우기
임팔라의 제약으로 인해 정상적인 상황에서 원하는 결과를 얻을 수없는 피벗을 사용할 수 없습니다. 다음 데이터를
select
dayname(date) as dayname,
utc_hour,
sum(case when (`type` IN ('Awesome')) then 1 else 0 end) as some
FROM (select *, trunc(cast(floor(date/1000) as timestamp), "HH") as utc_hour
FROM COOLNESSTYPES
WHERE date >= 1510082633596 and month >= '2017-11'
) a
GROUP BY utc_hour, dayname
ORDER BY utc_hour;
을 반환합니다 :
는 지금까지,이처럼 보이는 SQL SELECT 문이
그래서+-----------+---------------------+-------+
| dayname | utc_hour | some |
+-----------+---------------------+-------+
| Wednesday | 2017-11-08 00:00:00 | 20 |
| Wednesday | 2017-11-08 01:00:00 | 11 |
| Wednesday | 2017-11-08 09:00:00 | 1 |
| Wednesday | 2017-11-08 11:00:00 | 40 |
| Wednesday | 2017-11-08 12:00:00 | 0 |
| Wednesday | 2017-11-08 13:00:00 | 6 |
| Wednesday | 2017-11-08 14:00:00 | 0 |
| Wednesday | 2017-11-08 16:00:00 | 2 |
| Wednesday | 2017-11-08 17:00:00 | 10 |
| Wednesday | 2017-11-08 19:00:00 | 5 |
| Thursday | 2017-11-09 07:00:00 | 1 |
| Thursday | 2017-11-09 12:00:00 | 0 |
| Thursday | 2017-11-09 13:00:00 | 0 |
| Thursday | 2017-11-09 14:00:00 | 58 |
| Friday | 2017-11-10 09:00:00 | 0 |
| Friday | 2017-11-10 10:00:00 | 0 |
| Friday | 2017-11-10 16:00:00 | 0 |
+-----------+---------------------+-------+
, 내가 이런 일을 가야합니까 어떻게? Cloudera의 커뮤니티 페이지에서 누군가가 조합을 사용하도록 권장하고 있지만 필자의 열을 utc_hour 열의 행 값으로 레이블하는 방법에 대해서는 분명하지 않습니다. (필요한 경우 노조 제안에 대한 자세한 내용은 https://community.cloudera.com/t5/Interactive-Short-cycle-SQL/Transpose-columns-to-rows/td-p/49667을 참조하십시오.)
이 문제에 대한 도움이나 아이디어는 크게 감사하겠습니다. 감사!
이것은 정확히 내가 필요한 것입니다. 초기 SQL (또는 그로부터 파생 된 것)을 공통 테이블 표현식으로 설정 한 다음 위에서 언급 한 것을 구현할 수있었습니다. 유일한 다른 gotcha는 EXTRACT에있었습니다 - 임팔라에서는 EXTRACT 대신 date_part ('day', utc_hour)를 사용하여 동일한 결과를 얻습니다. 다시 한 번 감사드립니다! – hbomb
의견을 보내 주셔서 감사합니다. 나는 date_part() 문법이 더 두드러 지도록 질문에 추가 할 것이다. –
dayofweek (utc_hour)은 Impala 날짜 시간 함수 라이브러리 인 FWIW에서 사용할 수있는 더 나은 함수 옵션입니다 – hbomb