gpt4 book ai didi

hadoop - Hive 如何查询转换后的变量;失败 : SemanticException [Error 10004]

转载 作者:可可西里 更新时间:2023-11-01 16:24:48 24 4
gpt4 key购买 nike

我正在尝试查询特定格式的日期:

我有这个问题:

SELECT 
REGEXP_REPLACE(datewithoutdash,
'^(\\d{2})(\\d{2})(\\d{2})(.*)$','20\\1-\\2-\\3')
datewithdash
FROM table1 WHERE datewithdash < "2016-11-10";

为什么我不能在新变量上使用where子句?

我收到这个错误:

FAILED: SemanticException [Error 10004]: Line 26:14 Invalid table alias or column reference 'datewithdash': (possible column names are: ...)

最佳答案

Hive 在同一查询中评估 where 子句时不知道 select 子句中的别名列名。不幸的是,您要么必须嵌套它,要么将转换函数复制到 where 子句中:

SELECT 
REGEXP_REPLACE(datewithoutdash,
'^(\\d{2})(\\d{2})(\\d{2})(.*)$','20\\1-\\2-\\3') as datewithdash
FROM
table1
WHERE
REGEXP_REPLACE(datewithoutdash,
'^(\\d{2})(\\d{2})(\\d{2})(.*)$','20\\1-\\2-\\3') < "2016-11-10";

select * from (
SELECT
REGEXP_REPLACE(datewithoutdash,
'^(\\d{2})(\\d{2})(\\d{2})(.*)$','20\\1-\\2-\\3') as datewithdash
FROM
table1
) a
WHERE
datewithdash < "2016-11-10";

另一个注意事项 - 该函数非常讨厌 - 您可能会使用像这样的 hive 函数中的构建:

to_date(unix_timestamp(datewithoutdash,'yyMMdd'))

相反 - 它可能更清晰。

关于hadoop - Hive 如何查询转换后的变量;失败 : SemanticException [Error 10004],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40895485/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com