Chưa có cách nào hay để thực hiện việc này trong BigQuery, nhưng bạn có thể thực hiện theo ý tưởng bên dưới
Bước 1
Chạy truy vấn bên dưới
SELECT 'SELECT [group], ' +
GROUP_CONCAT_UNQUOTED(
'SUM(IF([date] = "' + [date] + '", value, NULL)) as [d_' + REPLACE([date], '/', '_') + ']'
)
+ ' FROM YourTable GROUP BY [group] ORDER BY [group]'
FROM (
SELECT [date] FROM YourTable GROUP BY [date] ORDER BY [date]
)
Kết quả là - bạn sẽ nhận được chuỗi như bên dưới (nó được định dạng bên dưới để dễ đọc)
SELECT
[group],
SUM(IF([date] = "date1", value, NULL)) AS [d_date1],
SUM(IF([date] = "date2", value, NULL)) AS [d_date2]
FROM YourTable
GROUP BY [group]
ORDER BY [group]
Bước 2
Chỉ cần chạy phía trên truy vấn đã soạn
Kết quả sẽ như dưới đây
group d_date1 d_date2
group1 15 30
Lưu ý 1 :Bước 1 rất hữu ích nếu bạn có nhiều nhóm xoay quanh quá nhiều công việc thủ công. Trong trường hợp này - Bước 1 giúp bạn tạo truy vấn của mình
Lưu ý 2 :các bước này được triển khai dễ dàng trong bất kỳ ứng dụng khách nào bạn chọn hoặc bạn chỉ có thể chạy các bước đó trong Giao diện người dùng Web BigQuery
Bạn có thể xem thêm về cách xoay vòng trong các bài viết khác của tôi.
Cách mở rộng quy mô quay vòng trong BigQuery?
Xin lưu ý - có giới hạn 10 nghìn cột trên mỗi bảng - vì vậy bạn bị giới hạn với 10 nghìn tổ chức.
Bạn cũng có thể xem bên dưới là các ví dụ đơn giản hóa (nếu ở trên quá phức tạp / verbose):
Làm cách nào để chuyển các hàng thành các cột có lượng lớn dữ liệu trong BigQuery / SQL?
Cách tạo cột biến giả cho hàng nghìn danh mục trong Google BigQuery?
Tổng hợp các trường lặp lại trong BigQuery