2014-09-12 7 views
5

Ho cercato di risolvere questo errore per ore senza alcuna fortuna, la sua su una query che ho corso per settimane senza problemi, ma all'improvviso mi sto vedendo questo errore:BigQuery ISCRIVITI errore

Error: ON clause must be AND of = comparisons of one field name from each table, with all field names prefixed with table name.

La query viene formattato come:

SELECT S.av AS av, S.dm AS dm, t, gn 
FROM [dataset.cTable] 
JOIN EACH (SELECT id, av, dm FROM [dataset.sTable]) AS S ON S.id = sid 
AND (t == 'type1' OR t == 'type2') GROUP EACH BY av, dm, t, gn; 

Qualsiasi aiuto sarebbe molto apprezzato.

+0

La parte AND della clausola ON non specifica una condizione di join. Cambialo in un WHERE. – antlersoft

risposta

2

La clausola (t == 'type1' OR t == 'type2') non è una condizione di join, è una condizione where. Se si modifica la query in:

SELECT S.av AS av, S.dm AS dm, C.t, C.gn 
FROM [dataset.cTable] C 
JOIN EACH (SELECT id, av, dm FROM [dataset.sTable]) AS S ON S.id = sid 
WHERE (C.t == 'type1' OR C.t == 'type2') GROUP EACH BY S.av, S.dm, C.t, C.gn; 

dovrebbe funzionare.

+0

Grazie per aver cambiato l'AND in WHERE. –

0

Presumibilmente, aggiungere gli alias risolverebbe il problema. Anche io non credo che la subquery è necessario:

SELECT S.av AS av, S.dm AS dm, c.t, c.gn 
FROM [dataset.cTable] as c JOIN EACH 
    [dataset.sTable] AS S 
    ON S.id = c.sid 
WHERE c.t in ('type1', 'type2') 
GROUP EACH BY av, dm, t, gn; 

Il each potrebbe non essere necessario, ma non sono troppo familiare con Google BigQuery.

+0

Ho appena provato, senza fortuna. Immagino sia un problema di BigQuery ... Grazie per il suggerimento –