
BigQuery(BQ) rất hữu ích cho việc phân tích hoặc xử lý dữ liệu.
Nó rất tốt trong việc xử lý dữ liệu khổng lồ. Nó trả về kết quả tóm tắt trong thời gian ngắn.
Trong quá trình xử lý dữ liệu, đôi khi chúng ta muốn đổi cột thành hàng.
Nhưng để sử dụng UNPIVOT
, chúng ta phải viết tên từng cột.
Thật rắc rối.
Tốt hơn là đặt cột động.

Vì vậy, hôm nay tôi giới thiệu về "SQL bỏ xoay trục động cho nhiều cột trong Bigquery".
tác giả

Lợi thế để đọc
Bạn có thể hiểu "SQL unpivot động cho nhiều cột trong Bigquery". Sau đó, bạn không phải lo lắng về việc hủy xoay vòng.
UNPIVOT trong Bigquery
Chúng ta có thể sử dụng UNPIVOT
của Bigquery như sau.
Đầu tiên, chuẩn bị dữ liệu với nhiều cột.
Data
WITH Produce AS ( SELECT 'Kale' as product, 51 as Q1, 23 as Q2, 45 as Q3, 3 as Q4 UNION ALL SELECT 'Apple', 77, 0, 25, 2) SELECT * FROM Produce +---------+----+----+----+----+ | product | Q1 | Q2 | Q3 | Q4 | +---------+----+----+----+----+ | Kale | 51 | 23 | 45 | 3 | | Apple | 77 | 0 | 25 | 2 | +---------+----+----+----+----+
Sau đó, chúng tôi đặt các cột thành toán tử UNPIVOT
như IN (Q1, Q2, Q3, Q4)
.
Result
SELECT * FROM Produce UNPIVOT(sales FOR quarter IN (Q1, Q2, Q3, Q4)) +---------+-------+---------+ | product | sales | quarter | +---------+-------+---------+ | Kale | 51 | Q1 | | Kale | 23 | Q2 | | Kale | 45 | Q3 | | Kale | 3 | Q4 | | Apple | 77 | Q1 | | Apple | 0 | Q2 | | Apple | 25 | Q3 | | Apple | 2 | Q4 | +---------+-------+---------+
Reference
Nhưng theo cách này, chúng ta phải đặt tên từng cột.
Nó cần có thời gian.

SQL bỏ xoay động cho nhiều cột trong Bigquery
Để hủy xoay vòng cho nhiều cột, chúng ta có thể sử dụng hàm.
Hàm này là fhoffa.x.unpivot()
.
Chúng tôi caan sử dụng nó như dưới đây.
SQL
SELECT product, unpivotted FROM Produce a , UNNEST(fhoffa.x.unpivot(a, 'Q')) unpivotted
Sau đó, chúng tôi nhận được kết quả sau đây.
Result
product | unpivotted.key | unpivotted.value |
Kale | Q1 | 51 |
Kale | Q2 | 23 |
Kale | Q3 | 45 |
Kale | Q4 | 3 |
Apple | Q1 | 77 |
Apple | Q2 | 0 |
Apple | Q3 | 25 |
Apple | Q4 | 2 |
Tham số thứ hai của fhoffa.x.unpivot(a, 'Q')
quyết định các cột.
Trong trường hợp này, các cột có Q
trong tên của chúng là các cột mục tiêu.
Chúng tôi nhận được kết quả tương tự với Q[1-9]
.
Chức năng này đã được giới thiệu vào năm 2020.
Đó là chức năng do người dùng xác định (UDF).
Mã nguồn đã được mở.
Vì vậy, bạn có thể xác định nó trong dự án của riêng bạn.

Phần kết luận
Hôm nay tôi đã giải thích về "SQL bỏ xoay trục động cho nhiều cột trong Bigquery".
Để bỏ xoay nhiều cột, chúng ta có thể sử dụng UDF fhoffa.x.unpivot()
.
Với việc sử dụng biểu thức chính quy, chúng ta có thể chọn rất nhiều cột.

Có một số bài viết khác về BigQuey.
Nếu bạn quan tâm đến họ, xin vui lòng đọc chúng.
Read more