Q86Data 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 duplikatnya
  • user_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_idorder_dateproduct_idamountduplicate_count
U-00422024-03-15P-2011500003
U-01172024-03-20P-088750002

Kalau data bersih (tidak ada duplikat):

user_idorder_dateproduct_idamountduplicate_count
(0 rows returned)

Variasi

  • Tambahkan LIMIT 20 di akhir untuk melihat sampel awal saja, berguna untuk tabel besar
  • Bungkus dengan CTE dan JOIN kembali ke tabel asli untuk melihat baris lengkap yang terduplikasi
  • Ganti GROUP BY all_columns dengan 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.

Duplicate Row Detector — Analyst SQL Vault | NgulikSQL