我正试图理解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 " ',' in附近的输入功能规范
substr()接收字符串、起始位置和从起始位置提取的字符长度。substr('2021-02-20', 1, 4)
应提取2021
最有可能的是,变量没有被解析,你得到的是substr(, 1, 4)
而不是substr('2021-02-20', 1, 4)
。在Impala中,变量的形式是${var:var_name}
,检查你是如何传递它的,以及它是如何使用select '${var:var_name}'
被解析的
我也不知道你如何在Hive中传递变量,但字符串文字应该引号,如果变量本身不包含引号,这个substr(${REF_DATE}, 1, 4)
被解析为substr(2021-02-20, 1, 4)
,这是错误的,所以仔细检查你需要把${REF_DATE}
放在引号中,或者它已经包含引号。