2017-10-13 11 views
0

J'ai une table Impala basée sur un fichier Parquet qui stocke les enregistrements de la visualisation vidéo. La structure est:Impala: AnalysisException: LEFT OUTER JOIN nécessite une clause ON ou USING

VideoSession 
    ... 
    ... 
    accountdata struct < 
     ... 
     ... 
     emailid string 
     ... 
     ... 
    > 
    ... 
    playbacksegments < 
     array < 
      struct < 
       ... 
       ... 
       playbackseconds double 
       ... 
       ... 
      > 
     > 
    > 

Je veux obtenir la somme totale des secondes de lecture par client. J'ai essayé:

select a.accountdata.emailid, sum(b.item.playbackseconds) secs 
from VideoSession a left outer join VideoSession.playbacksegments b 
group by a.accountdata.emailid; 

Impala me rend:

AnalysisException: LEFT OUTER JOIN exige une clause ON ou USING.

Puisqu'il n'y a pas de relation clé étrangère/clé primaire ici (cela devrait être construit dans la relation structure/parent, pas vrai?) Comment terminer cette requête?

Répondre

0

Bien sûr; J'ai compris cela dès que j'ai posté la question.

Il s'avère que si je supprime les alias de table a et b, la requête fonctionne. Cela ressemble-t-il à un bug d'Impala pour quelqu'un?

Cela fonctionne:

select accountdata.emailid, sum(item.playbackseconds) secs 
from MyTable left outer join MyTable.playbacksegments 
group by accountdata.emailid;