cơ sở dữ liệu

SQL bỏ xoay động cho nhiều cột trong Bigquery

Share this for your friends.

SQL bỏ xoay động cho nhiều cột trong Bigquery

Viết từng cột thành mệnh đề bỏ xoay là công việc khó đối với tôi...


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.


Có cách nào dễ hơn để bỏ xoay khô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ả


Kỹ sư tầm trung (AI, hệ thống), giỏi Python và SQL.

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      |
+---------+-------+---------+



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.


Tôi muốn cách dễ dàng hơn.



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.


Bây giờ chúng ta có thể sử dụng cùng một SQL cho nhiều cột.



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.


Bây giờ chúng ta không phải đặt từng tên cột nữa.



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.


Share this for your friends.

If you felt this article is useful, please share.

にほんブログ村 IT技術ブログへ

-cơ sở dữ liệu
-, ,

© 2024 ITips