SQL配置单元:基于3列的组合选择(*)限制1,R中的union,RODBC
我是一名大数据实习生,这是我的第一个问题。如果我问得不好,请让我知道如何改进 我有一个非常大的表,我正在通过Hive通过R的RODBC包查询它 假设表中有名为SQL配置单元:基于3列的组合选择(*)限制1,R中的union,RODBC,r,hive,impala,R,Hive,Impala,我是一名大数据实习生,这是我的第一个问题。如果我问得不好,请让我知道如何改进 我有一个非常大的表,我正在通过Hive通过R的RODBC包查询它 假设表中有名为A:ZZZ的列 我想为3列的每一个唯一组合提取一行和所有列,比如说B、F和G 我运行了下面的查询,以获得B、F和G的所有唯一组合,并得出了略多于7000个: select B, F, G, count(*) from DB.tableName group by B, F, G; 我做了很多研究,发现: 目前,我将B、F和G的所有组合存储
A:ZZZ
的列
我想为3列的每一个唯一组合提取一行和所有列,比如说B、F和G
我运行了下面的查询,以获得B、F和G的所有唯一组合,并得出了略多于7000个:
select B, F, G, count(*)
from DB.tableName
group by B, F, G;
我做了很多研究,发现:
目前,我将B、F和G的所有组合存储为R中的数据帧。我认为,如果我可以将组合的数据帧转换为我命名为TestVector
的向量,我可以尝试以下方法:
SELECT * FROM DB.Table WHERE (B,F,G) IN TestVector LIMIT 1;
但我遇到了这些错误,不知道如何修复语法:
[1] "HY000 110 [Cloudera][ImpalaODBC] (110) Error while executing a query in Impala: [HY000] : AnalysisException: Syntax error in line 5:\n (B, F, G)\n ^\nEncountered: COMMA\nExpected: AND, BETWEEN, DIV, IN, IS, LIKE, NOT, OR, REGEXP, RLIKE\n\nCAUSED BY: Exception: Syntax error\n"
[2] "[RODBC] ERROR: Could not SQLExecDirect 'select *\n from \n DB.table \n WHERE \n (B, F, G)\n IN (vectorTest)\n LIMIT 1;'"
请帮忙
谢谢你的时间和耐心
我想为每一个独特的元素提取一行,所有列
三列的组合,比如B、F和G
这样的查询通常使用row\u number
枚举组中的每一行并选择具有特定行号的行来解决
select * from (
select * ,
row_number() over (partition by B, F, G order by id) rn
from DB.tableName
) t where rn = 1
上面的查询将为每个B、F、G
组选择id
最低的行
select * from (
select * ,
row_number() over (partition by B, F, G order by id) rn
from DB.tableName
) t where rn = 1