Impala:AnalysisException:LEFT OUTER JOIN 需要 ON 或 USING 子句
Posted
技术标签:
【中文标题】Impala:AnalysisException:LEFT OUTER JOIN 需要 ON 或 USING 子句【英文标题】:Impala: AnalysisException: LEFT OUTER JOIN requires an ON or USING clause 【发布时间】:2017-10-13 17:41:02 【问题描述】:我有一个基于 Parquet 文件的 Impala 表,用于存储视频观看记录。结构是:
VideoSession
...
...
accountdata struct <
...
...
emailid string
...
...
>
...
playbacksegments <
array <
struct <
...
...
playbackseconds double
...
...
>
>
>
我想获得每位客户的总播放秒数。我试过了:
select a.accountdata.emailid, sum(b.item.playbackseconds) secs
from VideoSession a left outer join VideoSession.playbacksegments b
group by a.accountdata.emailid;
Impala 还给我:
AnalysisException: LEFT OUTER JOIN 需要 ON 或 USING 子句。
由于这里没有外键/主键关系(应该是建在struct/parent表关系中吧?)我该如何完成这个查询?
【问题讨论】:
【参考方案1】:当然;我一发布问题就想到了这一点。
事实证明,如果我删除表别名 a 和 b,则查询有效。对任何人来说,这听起来像是 Impala 中的错误吗?
这行得通:
select accountdata.emailid, sum(item.playbackseconds) secs
from MyTable left outer join MyTable.playbacksegments
group by accountdata.emailid;
【讨论】:
以上是关于Impala:AnalysisException:LEFT OUTER JOIN 需要 ON 或 USING 子句的主要内容,如果未能解决你的问题,请参考以下文章
Impala使用SQL即席查询出现AnalysisException: Could not resolve table reference:的解决办法
Impala使用SQL即席查询出现AnalysisException: Could not resolve table reference:的解决办法