cơ sở dữ liệu

Tại sao so sánh và tổng hợp có điều kiện không thành công trong BigQuery

2023-02-24

Share this for your friends.

Tại sao so sánh và tổng hợp có điều kiện không thành công trong BigQuery

Tại sao so sánh và tổng hợp có điều kiện không thành công trong BigQuery?


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.


Khi chúng tôi xử lý dữ liệu lớn, đôi khi chúng tôi muốn trích xuất hoặc tóm tắt dữ liệu đáp ứng các điều kiện cụ thể.

Thông thường chúng ta sử dụng toán tử so sánh như bên dưới.

WHERE COLUMN1 = "A"
SUM(IF(COLUMN1 = "A",1,0)

Nhưng không thành công trong trường hợp cụ thể.

Tại sao nó không hoạt động.

Vì vậy, hôm nay tôi giới thiệu về "Tại sao so sánh và tổng hợp có điều kiện không thành công 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 "Tại sao so sánh và tổng hợp có điều kiện không thành công trong BigQuery". Sau đó, bạn không phải lo lắng về so sánh và tổng hợp có điều kiện.


Dữ liệu

Đầu tiên, chuẩn bị dữ liệu.

Nhập tệp csv này dưới dạng bảng null_sample.

Data

col1,col2,col3
a,b,c
,b,c
,,c
a,b,
a,,


Sau đó, bạn có thể thấy bảng như dưới đây.

Table

Row col1 col2 col3
1 null b c
2 null null c
3 a b c
4 a b null
5 a null null



So sánh và tổng hợp có điều kiện

Chúng là ví dụ tốt về so sánh và tổng hợp có điều kiện.

Chúng tôi sử dụng toán tử =.

SQL

SELECT * FROM test.null_sample
WHERE col1 = "a"


Result

Row col1 col2 col3
1 a b c
2 a b null
3 a null null


Để tính tổng có điều kiện, chúng ta có thể sử dụng hàm SUMIF.

SQL

SELECT
SUM(IF(col1="a",1,0)) as sum_col1_a
FROM test.null_sample


Result

Row sum_col1_a
1 3



Ví dụ về sự thất bại

Sau đó, họ là những ví dụ về sự thất bại.

Họ sử dụng != và so sánh của nó không hoạt động.

SQL

SELECT * FROM test.null_sample
WHERE col1 != "a"


Result

No result


Ngay cả khi tổng hợp có điều kiện, nó vẫn không thành công như bên dưới.

SQL

SELECT
SUM(IF(col1="a",1,0)) as sum_col1_a,
SUM(IF(col1!="a",1,0)) as sum_col1_not_a,
SUM(IF(col2!="a",1,0)) as sum_col2_not_a,
SUM(IF(col3!="a",1,0)) as sum_col3_not_a
FROM test.null_sample


Result

Row sum_col1_a sum_col1_not_a sum_col2_not_a sum_col3_not_a
1 3 0 3 3


Bảng mẫu có 5 bản ghi.

Trong bảng, về số lượng không phải là a, nó phải là 2 trong col1.

Và nó phải là 5 trong col2 hoặc col3.

Tại sao nó không tổng hợp được.



Tại sao so sánh và tổng hợp có điều kiện không thành công trong BigQuery

Lý do tại sao so sánh và tổng hợp có điều kiện không thành công trong BigQuery là null.

nullđặc biệt không trả về true cho cả =!=.

Vì vậy, nếu bạn muốn so sánh dữ liệu, bạn nên thay null bằng giá trị khác bằng IFNULL hoặc COALESCE.

SQL

SELECT * FROM test.null_sample
WHERE IFNULL(col1,"") != "a"


Result

Row col1 col2 col3
1 null b c
2 null null c


Đối với tổng hợp có điều kiện, chúng ta nên sử dụng IFNULL hoặc COALESCE.

SQL

SELECT
SUM(IF(IFNULL(col1,"")="a",1,0)) as sum_col1_a,
SUM(IF(IFNULL(col1,"")!="a",1,0)) as sum_col1_not_a,
SUM(IF(IFNULL(col2,"")!="a",1,0)) as sum_col2_not_a,
SUM(IF(IFNULL(col3,"")!="a",1,0)) as sum_col3_not_a
FROM test.null_sample


Result

Row sum_col1_a sum_col1_not_a sum_col2_not_a sum_col3_not_a
1 3 2 5 5


Trong trường hợp này, chúng tôi đã nhận được các bản ghi không phải a chính xác và số lượng không phải a.



Phần kết luận

Hôm nay tôi đã giải thích về "Tại sao so sánh và tổng hợp có điều kiện không thành công trong BigQuery".

Lý do tại sao so sánh và tổng hợp có điều kiện không thành công trong BigQuery là null.

Không thành công khi chúng tôi cố gắng so sánh trực tiếp null.

Giải pháp là thế này.

Point

  • Thay null bằng IFNULL hoặc COALESCE


null rất phức tạp.



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