问题描述
我正在尝试理解 Query 中必须由 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 行 35:20 无法识别靠近 ',' ''1'' ',' 的输入 功能说明
解决方法
substr() 接收字符串、起始位置和字符长度以从起始位置提取。 substr('2021-02-20',1,4)
应该提取 2021
。
最有可能的是,变量未解析,您得到 substr(,4)
而不是例如 substr('2021-02-20',4)
。在 Impala 中,variables 采用这种形式 ${var:var_name}
,检查如何您通过它以及如何使用 select '${var:var_name}'
另外我不知道你是如何在 Hive 中传递变量的,但是应该引用字符串文字,如果变量本身不包含引号,这个 substr(${REF_DATE},4)
被解析为 substr(2021-02-20,4)
,这是错误的,所以仔细检查您是否需要将 ${REF_DATE}
放在引号中或它已经包含引号。