Hive Sql 中 select 语句中的用户定义列名

User Defined Column name in select statement in Hivesql

我需要在 HiveSql 中创建用户定义的列名,如下面的 Postgresql 查询。你能帮我解决这个问题吗?

SELECT
    COUNT(user_id) as "Total Customers"
FROM 
    customer_profiles
WHERE
    profiled_date BETWEEN '2020-01-01' AND '2020-12-31'

使用反引号:

SELECT
    COUNT(user_id) as `Total Customers`
FROM 
 ...

但由于 Hive 的限制,无法保留大小写。结果列名将小写:

total customers

看到这个答案:

首先,不要在标识符中放置空格。请改用下划线:

SELECT COUNT(user_id) as Total_Customers
FROM customer_profiles
WHERE profiled_date BETWEEN '2020-01-01' AND '2020-12-31'

这适用于所有数据库,您不需要 fiddle 使用转义字符。

其次,对于date/time比较,我强烈建议您避免使用BETWEEN。相反:

WHERE profiled_date >= '2020-01-01' AND
      profiled_date < '2021-01-01'

这适用于日期和 date/times。如果记录的时间部分不是午夜,您的版本将过滤掉 12 月 31 日的记录。是的,我知道在这个查询中你知道没有时间部分。但总有一天,你会使用 BETWEEN 并得到错误的结果。