Khi thực hiện streaming inserts vào BigQuery, dữ liệu có thể bị trùng lặp do cơ chế truyền phát ít nhất một lần (at-least-once). Để khử trùng lặp (deduplication) khi truy vấn:
- D. Sử dụng hàm cửa sổ ROW_NUMBER với PARTITION theo ID duy nhất cùng với điều kiện WHERE row = 1:
- Sử dụng cú pháp:
ROW_NUMBER() OVER (PARTITION BY unique_id ORDER BY event_timestamp DESC) AS row_num.
- Bộ lọc
WHERE row_num = 1 sẽ giúp loại bỏ mọi bản ghi cũ bị trùng lặp và chỉ giữ lại bản ghi mới nhất cho mỗi unique_id một cách chính xác.
- A chỉ trả về 1 hàng duy nhất cho toàn bộ bảng, không lấy được các dữ liệu khác.
- B sử dụng GROUP BY và SUM làm thay đổi giá trị số liệu thực tế thay vì loại bỏ các hàng trùng lặp.
- C hàm LAG dùng để tham chiếu giá trị hàng trước đó, không dùng để lọc lấy bản ghi duy nhất trong tập trùng lặp.
(Đáp án được gợi ý bởi AI)