如何使用以下查询在Hive中使用GROUP BY函数?

时间:2014-04-24 03:34:40

标签: hadoop hive

这是我的Hive查询:

INSERT OVERWRITE TABLE csp_filtered_data_table_b
SELECT CSP_CPCODE, CSP_ACSKEYWORDS, CSP_TARIFF_CODE, CSP_ERROR_CODE,
CONCAT(CSP_ARRAY_DATE[2], '-',
(
CASE CSP_ARRAY_DATE[1]
WHEN 'Jan' THEN '01'
WHEN 'Feb' THEN '02'
WHEN 'Mar' THEN '03'
WHEN 'Apr' THEN '04'
WHEN 'May' THEN '05'
WHEN 'Jun' THEN '06'
WHEN 'Jul' THEN '07'
WHEN 'Aug' THEN '08'
WHEN 'Sep' THEN '09'
WHEN 'Oct' THEN '10'
WHEN 'Nov' THEN '11'
ELSE '12'
END
), '-',
CSP_ARRAY_DATE[0]),
SUBSTR(CSP_TRANSACTION_TIME_DATE, 13,23),
CSP_MOBILE_NUMBER,
WEEKOFYEAR(
CONCAT(CSP_ARRAY_DATE[2], '-',
(
CASE CSP_ARRAY_DATE[1]
WHEN 'Jan' THEN '01'
WHEN 'Feb' THEN '02'
WHEN 'Mar' THEN '03'
WHEN 'Apr' THEN '04'
WHEN 'May' THEN '05'
WHEN 'Jun' THEN '06'
WHEN 'Jul' THEN '07'
WHEN 'Aug' THEN '08'
WHEN 'Sep' THEN '09'
WHEN 'Oct' THEN '10'
WHEN 'Nov' THEN '11'
ELSE '12'
END
), '-',
CSP_ARRAY_DATE[0])
)
FROM csp_formatted_date;

现在,我应该将结果按CSP_ERROR_CODE分组。

所以我添加了以下内容:

GROUP BY CSP_CPCODE, CSP_ACSKEYWORDS, CSP_TARIFF_CODE, CSP_MOBILE_NUMBER, CSP_ERROR_CODE;

虽然我只需要按CSP_ERROR_CODE对它进行分组,但它总是返回一个错误(见下文),可以通过放入所有其他字段来修复。我不知道这对于表组织意味着什么,但在这种情况下完成后,它给了我以下错误:

  

FAILED:SemanticException [错误10025]:第3行:7表达式不在   GROUP BY键'2'

当我没有输入列名'key'时,我经常遇到这个错误,但键'2'来自哪里,我该如何解决?

1 个答案:

答案 0 :(得分:0)

我相信在SQL中 - select语句的所有非聚合部分都必须包含在'组中。语句,否则处理器不知道为非分组和非聚合字段输出什么。

请参阅 - Do all columns in a SELECT list have to appear in a GROUP BY clause