Создайте текстовую таблицу Impala, где строки соответствуют условию - PullRequest
0 голосов
/ 22 февраля 2020

Я пытаюсь создать таблицу в Impala (SQL), которая берет строки из таблицы паркета. Данные представляют поездки на велосипеде по городу. Строки будут импортированы в новую таблицу, если начальный код (строка, например: «6100») будет показан более 100 раз в первой таблице. Вот что у меня есть:

#I am using Apache Impala via the Hue Editor

invalidate metadata;
set compression_codec=none;

invalidate metadata;
Set compression_codec=gzip;

create table bixirides_parquet (
start_date string, start_station_code string, 
end_date string, end_station_code string, 
duration_sec int, is_member int)
stored as parquet;


Insert overwrite table bixirides_parquet select * from bixirides_avro;


invalidate metadata;
set compression_codec=none;

create table impala_out stored as textfile as select start_date, start_station_code, end_date, end_station_code, duration_sec, is_member, count(start_station_code) as count
from bixirides_parquet
having count(start_station_code)>100;

По какой-то причине оператор будет выполняться, но в новую таблицу не вставлено ни одной строки. Следует импортировать строку в новую таблицу, если исходный код этих строк более 100 раз отображается в исходной таблице. Я думаю, что неправильно формулирую свое заявление о выборе, но не знаю, как именно.

1 Ответ

1 голос
/ 22 февраля 2020

Я думаю, что последний запрос, который вы хотите:

select start_date, start_station_code, end_date, 
       end_station_code, duration_sec, is_member, cnt
from (select bp.*,
             count(*) over (partition by start_station_code) as cnt
      from bixirides_parquet bp
     ) bp
where cnt > 100;
...