2013-10-16 21 views
5

Giả sử tôi có một bảng trong BigQuery chứa 2 cột. Cột đầu tiên đại diện cho một tên và cột thứ hai là danh sách các giá trị được phân tách bằng độ dài tùy ý. Ví dụ:Tách một cột chuỗi trong BigQuery

Name | Scores 
-----+------- 
Bob |10;20;20 
Sue |14;12;19;90 
Joe |30;15 

Tôi muốn chuyển đổi thành các cột nơi đầu tiên là tên, và thứ hai là một giá trị điểm duy nhất, như vậy:

Name,Score 
Bob,10 
Bob,20 
Bob,20 
Sue,14 
Sue,12 
Sue,19 
Sue,90 
Joe,30 
Joe,15 

này có thể được thực hiện trong BigQuery một mình?

Trả lời

8

Tin tốt cho mọi người! BigQuery hiện có thể SPLIT()!


Nhìn vào "find all two word phrases that appear in more than one row in a dataset".

Không có cách nào để tách() một giá trị trong BigQuery để tạo nhiều hàng từ một chuỗi, nhưng bạn có thể sử dụng cụm từ thông dụng để tìm dấu phẩy và tìm giá trị đầu tiên. Sau đó chạy một truy vấn tương tự để tìm giá trị thứ 2, v.v. Tất cả chúng có thể được kết hợp thành chỉ một truy vấn, sử dụng mẫu được trình bày trong ví dụ trên (UNION qua dấu phẩy).

+0

Nice - Đây là tuyệt vời! Có bất kỳ tham số nào để xác định một loạt các phần tử để lấy từ mảng kết quả không? –

+0

Tôi không chắc mình hiểu. Đăng câu hỏi mới? Xem http://stackoverflow.com/a/24172995/132438 –

6

Nếu ai đó vẫn đang tìm kiếm một câu trả lời

select Name,split(Scores,';') as Score 
from (
     # replace the inner custome select with your source table 
     select * 
     from 
     (select 'Bob' as Name ,'10;20;20' as Scores), 
     (select 'Sue' as Name ,'14;12;19;90' as Scores), 
     (select 'Joe' as Name ,'30;15' as Scores) 
); 
Các vấn đề liên quan