我是一名从事大数据工作的实习生,这是我的第一个问题。如果我问得不好,请告诉我如何改进。
我有一个非常大的表,我正在通过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;
我做了很多研究发现:
SELECT * FROM T WHERE (A,B) IN (('1', '1'),('2', '2'));
我现在把所有的b,f和g的组合作为一个Dataframe存储在r中。我想如果我能把组合的Dataframe转换成一个我命名的向量 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;'"
请帮帮我!
谢谢你的时间和耐心。
1条答案
按热度按时间ax6ht2ek1#
我想为3列的每一个唯一组合,比如b、f和g,拉一行,所有列。
这样的查询通常使用
row_number
枚举组中的每一行并选择具有特定行号的行。上面的查询将选取具有最低值的行
id
对于每个B,F,G
组。