2015-05-26 17 views
6

Tôi có hai bảng table1 (cụm phức tạp có cột lặp lại/ghi) và table2 (khá đơn giản). Tôi cố gắng để tạo ra một bảng mới với tất cả các cột từ table1 với một cột từ table2 bằng cách sử dụng truy vấn sau đây:Lỗi BigQuery: Không thể phân vùng trên trường lặp lại

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 

tôi nhận được một lỗi Không thể phân vùng trên lặp đi lặp lại lĩnh vực như thể hiện trong hình dưới đây. Các lược đồ của hai bảng cũng được hiển thị trong hình ảnh tương ứng của chúng.

Có quy tắc chung về ngón tay cái ở đây khi người ta muốn hợp nhất dữ liệu từ hai bảng không? Là những gì tôi đang cố gắng làm gì cả?

Các bảng thực tế phức tạp hơn nhiều. Tôi chỉ hiển thị đủ ngữ cảnh tái tạo vấn đề.

Query with error Table1 schema Table2 schema

Trả lời

6

Bạn sẽ cần phải làm phẳng() bảng của bạn trước khi gia nhập họ.

này không hoạt động:

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 

này không:

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

Bạn có thể viết lại truy vấn của mình không? Tôi đã thử nhưng tôi đã thất bại. Tôi đang gặp lỗi hoặc kết quả không mong muốn. – wpfwannabe

+0

@wpfwannabe, nếu bạn đặt tập dữ liệu mẫu công khai, tôi có thể viết lại truy vấn và kiểm tra nó trước khi xuất bản –

+0

Vui lòng xem câu hỏi đã chỉnh sửa. Truy vấn bây giờ sẽ tham chiếu đến tập dữ liệu công khai. Xin lưu ý rằng những gì tôi thực sự sau là bảng gốc + một số cột từ bảng đã tham gia khác (không chỉ kết quả phẳng). – wpfwannabe

1

Với mẫu nào bạn đăng trên chỉnh sửa, một truy vấn làm việc:

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; 

tôi đã có thể để FLATTEN dữ liệu (phải áp dụng nó hai lần), nhưng không phải để khôi phục cấu trúc ban đầu - tham gia vào một trong các hàng con là h arder.

Tôi thấy những gì bạn muốn làm là làm phong phú thêm một số hàng phụ?

+0

Vâng, đó chính xác là những gì tôi đang cố gắng làm. Tôi muốn sử dụng dữ liệu/lược đồ gốc và tạo một bảng ** mới ** với các cột bổ sung (lược đồ phong phú hơn). Cho đến nay tôi đã không thể làm điều này. Có vẻ như không thể. Để thực hiện điều này, tôi sẽ phải thực hiện mở rộng lược đồ trong giai đoạn chuẩn bị dữ liệu - trước khi tôi thực sự nhập vào BQ. Nghe thật khủng khiếp. – wpfwannabe

Các vấn đề liên quan