Q86✅Data Quality & Audit★★☆☆☆Ganti tabel/kolomSafe to Run
Duplicate Row Detector
Dialect:bigquerypostgresqlsnowflakemysql
#duplicate#data-quality#profiling
Kapan Pakai Query Ini
Pakai query ini ketika kamu curiga ada baris yang identik persis di tabelmu. Semua kolom sama, bukan hanya ID-nya. Ini sering terjadi akibat pipeline yang nge-insert data dua kali, atau proses ETL yang tidak ada dedup step-nya. Query ini akan mengembalikan baris-baris duplikat beserta berapa kali kemunculannya.
Yang Perlu Diganti
orders→ nama tabel yang ingin kamu cek duplikatnyauser_id, order_date, product_id, amount→ daftar semua kolom yang ingin kamu jadikan basis pengecekan (biasanya semua kolom kecuali primary key autoincrement)
Query
SELECT user_id, order_date, product_id, amount, COUNT(*) AS duplicate_count FROM orders GROUP BY user_id, order_date, product_id, amount HAVING COUNT(*) > 1 ORDER BY duplicate_count DESC;
Contoh Output
Kalau ada duplikat:
| user_id | order_date | product_id | amount | duplicate_count |
|---|---|---|---|---|
| U-0042 | 2024-03-15 | P-201 | 150000 | 3 |
| U-0117 | 2024-03-20 | P-088 | 75000 | 2 |
Kalau data bersih (tidak ada duplikat):
| user_id | order_date | product_id | amount | duplicate_count |
|---|---|---|---|---|
| (0 rows returned) |
Variasi
- Tambahkan
LIMIT 20di akhir untuk melihat sampel awal saja, berguna untuk tabel besar - Bungkus dengan CTE dan
JOINkembali ke tabel asli untuk melihat baris lengkap yang terduplikasi - Ganti
GROUP BY all_columnsdengan hanya beberapa kolom kunci jika kamu hanya peduli duplikat berdasarkan subset kolom (lihat Q87 untuk pattern itu) - Tambahkan filter
WHERE order_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)untuk cek duplikat hanya di data terbaru
Variasi Dialect
Sama di semua dialect. ANSI SQL standard.