创建行满足条件的 Impala 文本表

Posted

技术标签:

【中文标题】创建行满足条件的 Impala 文本表【英文标题】:Create an Impala text table where rows meet a condition 【发布时间】:2020-02-22 15:00:28 【问题描述】:

我正在尝试在 Impala (SQL) 中创建一个从 parquet 表中获取行的表。数据代表城市中的自行车骑行。如果起始代码(字符串,例如:'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】:

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

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;

【讨论】:

以上是关于创建行满足条件的 Impala 文本表的主要内容,如果未能解决你的问题,请参考以下文章

从 Impala 分区拼花表创建文本表

申请文网文的要求及需要满足的条件

excel 满足一个条件 显示对应行倒数第二行?

R语言dataframe计算满足筛选条件的行的个数(筛选满足条件的数据行并计数):类似于excel的countif函数

如果在 R 中满足某些行和列之间的条件,则确定一个值

从满足条件A的组中选择行。如果不是,请给我一行满足条件B的行