Hadoop 配置单元agg请求分组中的列
我有一个基本查询(用模糊的名称重写),我不明白为什么hive要求将case语句中的Hadoop 配置单元agg请求分组中的列,hadoop,group-by,hive,case,Hadoop,Group By,Hive,Case,我有一个基本查询(用模糊的名称重写),我不明白为什么hive要求将case语句中的t2.description列添加到group by中。我安抚了他们,把它放进去,但我当然会得到每一行该列的空值。。。如果我取出case语句并查询原始数据,我会得到所有可爱的描述。只有当我想在case语句中添加一些逻辑时,它才会失败。我对Hive还不熟悉,知道它不是ANSI sql,但我没想到它会这么挑剔 select t1.columnid as column_id, (case wh
t2.description
列添加到group by中。我安抚了他们,把它放进去,但我当然会得到每一行该列的空值。。。如果我取出case语句并查询原始数据,我会得到所有可爱的描述。只有当我想在case语句中添加一些逻辑时,它才会失败。我对Hive还不熟悉,知道它不是ANSI sql,但我没想到它会这么挑剔
select
t1.columnid as column_id,
(case when t2.description in ('description1','description2','description3') then t2.description else null end) as label_description
from table1 t1
left outer join table2 t2 on (t1.inresult = t2.inresult)
group by
t1.columnid
根据Hive的sql解析器显示的错误日志,通常很难理解实际问题。这里的问题是您选择了两列,但仅将GROUPBY应用于一列。要使此查询可执行,必须执行以下操作之一:
对于配置单元,如果您使用的是GROUP BY,那么您选择的所有列都必须在GROUP BY语句中,或者包装在应用的聚合语句中,如MAX、MIN或SUM。1。为每一行的
label\u description
提供空值;2.不跑请组员;3.当min(t2.description)仍然在group by中请求t2.description
,我们不能将min()
放在t1.columnid
周围,因为我希望每个条目不仅仅是min()
。。。您基本上只是说明了RDBMS的每一项工作,除了解析器日志很难理解之外,您没有对Hive进行任何说明,我在这里发布这个问题时清楚地知道这一点。。。