2015-05-26 11 views
6

Mam dwie tabele table1 (złożona z powtarzającymi się/rekordowymi kolumnami) i table2 (dość prosta). Próbuję utworzyć nową tabelę z wszystkich kolumn z table1 z jednej kolumny z table2 stosując następujące zapytanie:Błąd BigQuery: Nie można podzielić na powtarzające się pola

select t1.id, t1.experience.desc, t1.experience.organization.*, t1.experience.department, t2.field2 as t1.experience.organization.newfield, t1.family_name 
from [so_public.table1] as t1 left join each [so_public.table2] as t2 
on t1.experience.organization.name = t2.field1 

pojawia się błąd Nie można partycja na powtarzające się pole, jak pokazano na rysunku poniżej. Schematy obu tabel są również pokazane na ich odpowiednich obrazach.

Czy istnieje ogólna reguła tutaj, gdy chce się scalić dane z dwóch tabel? Czy to, co próbuję robić w ogóle możliwe?

Rzeczywiste tabele są znacznie bardziej złożone. Mam tylko wystarczająco dużo kontekstu, który odtwarza problem.

Query with error Table1 schema Table2 schema

Odpowiedz

6

Będziesz musiał spłaszczyć() tabele Przed dołączeniem do nich.

To nie działa:

SELECT a.fullName, b.fullname 
FROM [bigquery-samples:nested.persons_living] a 
JOIN [bigquery-samples:nested.persons_living] b 
ON a.citiesLived.place=b.citiesLived.place 
LIMIT 1000 

Error: Cannot join on repeated field citiesLived.place 

to robi:

SELECT a.fullName, b.fullname 
FROM FLATTEN([bigquery-samples:nested.persons_living], citiesLived) a 
JOIN FLATTEN([bigquery-samples:nested.persons_living], citiesLived) b 
ON a.citiesLived.place=b.citiesLived.place 
LIMIT 1000 
+0

Czy można w ogóle przepisać moje zapytanie? Próbowałem, ale mi się nie udało. Otrzymuję błędy lub nieoczekiwane wyniki. – wpfwannabe

+0

@wpfwannabe, jeśli udostępnisz przykładowy zbiór danych, mogę ponownie napisać zapytanie i przetestować je przed opublikowaniem –

+0

Proszę zobaczyć edytowane pytanie. Zapytanie powinno teraz odwoływać się do publicznego zestawu danych. Zauważ, że to, co naprawdę mam, to oryginalna tabela + niektóre kolumny z drugiej połączonej tabeli (nie tylko spłaszczone wyniki). – wpfwannabe

1

z próbką publicznej ty opublikowanego edycji, zapytanie robocze:

select t1.id, t1.experience.desc, t1.experience.department, t1.experience.organization.*, t2.field2 as t1.experience.organization.newfield, t1.family_name 
from FLATTEN(FLATTEN([earnest-stock-91916:so_public.table1], experience.organization), experience) as t1 left join each [earnest-stock-91916:so_public.table2] as t2 
on t1.experience.organization.name = t2.field1; 

Mogłem FLATTEN danych (musiał zastosować go dwa razy), ale nie odzyskać oryginalnej struktury - połączenie z jednym z podrzędnych jest h arder.

Widzę, co chcesz zrobić, to wzbogacić niektóre z podrzędnych?

+0

Tak, właśnie to próbuję zrobić. Chcę użyć oryginalnych danych/schematu i utworzyć ** nową ** tabelę z dodatkowymi kolumnami (bogatszy schemat). Do tej pory nie byłem w stanie tego zrobić. Wydaje się to niemożliwe. W tym celu musiałbym rozszerzyć schemat w fazie przygotowania danych - zanim faktycznie zaimportuję do BQ. Brzmi okropnie. – wpfwannabe

Powiązane problemy