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
并得到错误的结果。
我需要在 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
并得到错误的结果。