Sql 创建一个行符合条件的黑斑羚文本表

Sql 创建一个行符合条件的黑斑羚文本表,sql,hive,parquet,impala,Sql,Hive,Parquet,Impala,我试图在Impala(SQL)中创建一个表,它从拼花地板表中获取行。这些数据表示城市中的自行车出行情况。如果起始代码(字符串,例如:“6100”)在第一个表中显示超过100次,则行将导入到新表中。以下是我到目前为止的情况: #I am using Apache Impala via the Hue Editor invalidate metadata; set compression_codec=none; invalidate metadata; Set compression_codec

我试图在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次,则应将该行导入新表。我认为我的select语句措辞不当,但我不确定具体如何

我认为您想要的最终查询是:

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;