【问题标题】:How do I use the GROUP BY function in Hive with the following query?如何在 Hive 中通过以下查询使用 GROUP BY 函数?
【发布时间】:2014-04-24 03:34:40
【问题描述】:

这是我的 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 对其进行分组,但它总是返回一个错误(见下文),可以通过放入所有其他字段来修复该错误。我不知道这对表组织意味着什么,但是在这种情况下这样做之后,它给了我以下错误:

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

当我未能输入列名“key”时,我通常会遇到该错误,但是 key '2' 是从哪里来的,我该如何解决这个问题?

【问题讨论】:

  • 你找到解决办法了吗?
  • 我绕过它,但我从未找到解决方案。
  • 如果您错过了 select 子句或 group by 中的任何列,显示的错误是否相同?

标签: hadoop hive


【解决方案1】:

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

见 - Do all columns in a SELECT list have to appear in a GROUP BY clause

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    相关资源
    最近更新 更多