为什么此查询返回错误。我尝试将表的代码作为常量字符串加载,数据的标志再次作为常量字符串加载,插入时间和表的计数。我想,让我试着在写插入之前运行secelct。但由于某些原因,它无法列出我试图从中获取计数的表中的列名。我只需要两个常量,一个日期和一个计数。尝试删除groupby也会引发另一个错误。
hive-e“选择“web”作为src\u cd,“1hr”作为load\u标志,从\u unixtime((unix\u timestamp(substr(sysdate,0,11),'dd/mmm/yyyy'),'mm/dd/yyyy')作为时间,从weblog中计数(*),其中year=2015,month=04,day=17按src\u cd分组,load\u标志,时间
确定所用时间:1.446秒失败:semanticexception[error 10004]:行4:9无效的表别名或列引用'src\u cd':(可能的列名有:clientip、authuser、sysdate、clfrequeest………(依此类推)year、month、day)
3条答案
按热度按时间plicqrtu1#
有两件事。1hive不会以这种方式解析双引号或单引号。所以用反引号(`)。2在GROUPBY子句中,可以使用列式位置说明符,也可以使用直接函数翻译。
ddhy6vgd2#
只需在
group by
. 它什么也没做:我不认为hive允许在
group by
,因此需要放入整个表达式或使用子查询/cte。zvms9eto3#
文字上的双引号是个问题。下面是我成功测试的一个更简单的版本: