【问题标题】:Hive - cannot resolve "month" given input columnsHive - 无法解析给定输入列的“月”
【发布时间】:2021-04-13 17:23:44
【问题描述】:

我正在尝试查看某个范围内每个月发表的论文数量。我知道我需要按月和按年分组,但我一直收到同样的错误消息,说“无法解析'month'给定的输入列”。如果我尝试修复月份列,它会继续对年份和计数列执行相同的操作。我尝试删除别名并仅使用较长的名称,但这也会引发错误。

【问题讨论】:

  • 如果您在 group by 子句中使用较长的名称会出现什么错误?
  • @mck AnalysisException: 由于数据类型不匹配,无法解析 'size(to_date(spark_catalog.default.metadata_2020_03_27.publish_time))':参数 1 需要(数组或映射)类型,但是,' to_date(spark_catalog.default.metadata_2020_03_27.publish_time)' 是日期类型。;
  • 使用count,而不是size

标签: sql hive hiveql


【解决方案1】:

试试这个查询:

SELECT 
    MONTH(TO_DATE(publish_time)) AS month, 
    YEAR(TO_DATE(publish_time)) AS year, 
    count(1) 
FROM metadata_2020_03_27
WHERE (publish_time IS NOT NULL) AND (publish_time != "2020") AND (publish_time BETWEEN "2020-01-01" AND "2021-12-31")
GROUP BY MONTH(TO_DATE(publish_time)), YEAR(TO_DATE(publish_time))
ORDER BY count(1)

size 用于查找数组列的大小,而不是用于聚合/计数。为此使用count

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    • 2021-02-07
    • 1970-01-01
    相关资源
    最近更新 更多