查询移植到 Impala
Query Porting to Impala
我正在尝试理解必须由 Impala 改编的查询中的小片段。
Select
.
.
from ${ENV_PREFIX}private_datalap_storage_customer_v1 cus
lateral view explode(adresses) address as addr
where year = substr(${REF_DATE}, 1, 4)
and month = substr(${REF_DATE}, 5, 2)
有人可以帮助了解 from
和 Where
中发生了什么吗?
此外,如果有人能解释为什么我在尝试 运行 Impala
上的查询时出现以下错误,我将不胜感激
ParseException line 35:20 cannot recognize input near ',' ''1'' ',' in
function specification
substr() 接收字符串、起始位置和字符长度以从起始位置提取。 substr('2021-02-20', 1, 4)
应该提取 2021
.
最有可能的是,变量没有被解析,你得到 substr(, 1, 4)
而不是 substr('2021-02-20', 1, 4)
。在 Impala 中,variables 是这种形式 ${var:var_name}
,检查你是如何传递它的,它是如何使用 select '${var:var_name}'
解决的
另外我不知道你是如何在 Hive 中传递变量的,但是字符串文字应该被引用,如果变量本身不包含引号,这个 substr(${REF_DATE}, 1, 4)
被解析为 substr(2021-02-20, 1, 4)
,这是错误的,因此请仔细检查您是否需要将 ${REF_DATE}
放在引号中,或者它已经包含引号。
我正在尝试理解必须由 Impala 改编的查询中的小片段。
Select
.
.
from ${ENV_PREFIX}private_datalap_storage_customer_v1 cus
lateral view explode(adresses) address as addr
where year = substr(${REF_DATE}, 1, 4)
and month = substr(${REF_DATE}, 5, 2)
有人可以帮助了解 from
和 Where
中发生了什么吗?
此外,如果有人能解释为什么我在尝试 运行 Impala
上的查询时出现以下错误,我将不胜感激ParseException line 35:20 cannot recognize input near ',' ''1'' ',' in function specification
substr() 接收字符串、起始位置和字符长度以从起始位置提取。 substr('2021-02-20', 1, 4)
应该提取 2021
.
最有可能的是,变量没有被解析,你得到 substr(, 1, 4)
而不是 substr('2021-02-20', 1, 4)
。在 Impala 中,variables 是这种形式 ${var:var_name}
,检查你是如何传递它的,它是如何使用 select '${var:var_name}'
另外我不知道你是如何在 Hive 中传递变量的,但是字符串文字应该被引用,如果变量本身不包含引号,这个 substr(${REF_DATE}, 1, 4)
被解析为 substr(2021-02-20, 1, 4)
,这是错误的,因此请仔细检查您是否需要将 ${REF_DATE}
放在引号中,或者它已经包含引号。