2014-09-12 16 views
5

Próbowałem rozwiązać ten problem na wiele godzin bez powodzenia, na jego zapytania, że ​​już uruchomiony przez kilka tygodni bez żadnych problemów, ale nagle widzę ten błąd:BigQuery DOŁĄCZ Błąd

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

zapytanie jest sformatowany jak:

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; 

Każda pomoc będzie mile widziana.

+0

ORAZ część klauzuli ON nie określa warunku sprzężenia. Zmień go na WHERE. – antlersoft

Odpowiedz

2

Klauzula o klauzuli (t == 'type1' OR t == 'type2') nie jest warunkiem łączenia, jest warunkiem. Jeśli zmienisz zapytanie na:

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; 

to powinno działać.

+0

Dzięki zmianie ORAZ na WHERE poprawiono to. –

0

Przypuszczalnie dodanie aliasów rozwiązałoby problem. Ja też nie sądzę podzapytanie jest konieczne:

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; 

each może nie być konieczne, ale nie jestem zbyt obeznany z Google BigQuery.

+0

Po prostu próbowałem, bez powodzenia. Zgaduję, że jest to problem BigQuery ... Dzięki za sugestię –