
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ả

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 SUM
và IF
.
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
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
là đặc biệt không trả về true cho cả =
và !=
.
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ặcCOALESCE

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.
Read more