informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Di PostgreSQL, deduplikasi data adalah tugas umum dan penting. Deduplikasi dapat diterapkan pada tipe data sederhana atau struktur data kompleks. Panduan ini akan mengeksplorasi secara detail cara menerapkan deduplikasi data di PostgreSQL, dan memberikan solusi serta kode contoh spesifik untuk berbagai situasi.
Untuk tipe data dasar, seperti integer, string, dll, Anda dapat menggunakan DISTINCT
Kata kunci untuk mencapai deduplikasi.
SELECT DISTINCT column_name
FROM your_table;
Misalnya ada sebuah file bernama students
tabel yang berisiname
Kolom (tipe string), untuk mendapatkan nama siswa yang unik dapat dituliskan seperti ini:
SELECT DISTINCT name
FROM students;
menjelaskan: DISTINCT
Kata kunci memastikan bahwa kumpulan hasil yang dikembalikan tidak berisi baris duplikat.
Jika Anda perlu menghapus duplikat berdasarkan beberapa kolom, Anda bisa DISTINCT
Tentukan beberapa kolom setelah kata kunci.
SELECT DISTINCT column1, column2
FROM your_table;
Misalnya untuk orders
meja, berisicustomer_id
Danproduct_id
Dua kolom, untuk mendapatkan kombinasi pelanggan dan produk unik:
SELECT DISTINCT customer_id, product_id
FROM orders;
Penjelasan: Kueri di atas akan menghasilkan hasil yang berbeda customer_id
Danproduct_id
kombinasi.
Saat memproses data yang berisi struktur data kompleks seperti array dan struktur, metode deduplikasinya akan berbeda.
PostgreSQL menyediakan fungsi untuk menangani deduplikasi array.
SELECT ARRAY(SELECT DISTINCT unnest(array_column)) AS distinct_array
FROM your_table;
Asumsikan ada meja users
, yang memiliki kolomhobbies
Ini adalah tipe array bilangan bulat. Untuk mendapatkan array hobi yang berbeda dari setiap pengguna:
SELECT ARRAY(SELECT DISTINCT unnest(hobbies)) AS distinct_hobbies
FROM users;
Penjelasan: Penggunaan pertama unnest
Fungsi ini memperluas array menjadi beberapa baris dan kemudian menerapkannyaDISTINCT
Lakukan deduplikasi dan terakhir gunakanARRAY
Fungsi ini menyusun kembali hasil deduplikasi menjadi sebuah array.
Jika data disimpan di JSON
Tipe kolom dapat diekstraksi denganJSON
Nilai-nilai di dalamnya dihapus duplikatnya.
SELECT DISTINCT json_extract_path_text(json_column, 'key') AS distinct_value
FROM your_table;
Misalnya untuk file bernama employee_details
tabel yang didalamnya terdapat ajson
Daftarinfo
,Termasuksalary
Pasangan nilai kunci, untuk mendapatkan nilai gaji yang berbeda:
SELECT DISTINCT json_extract_path_text(info, 'alary') AS distinct_salary
FROM employee_details;
menjelaskan: json_extract_path_text
fungsi digunakan untuk mendapatkan dariJSON
Ekstrak nilai kunci yang ditentukan dari data, lalu hapus duplikat nilai yang diekstraksi.
Untuk tipe struktur kustom, Anda dapat mengekstrak bidang struktur untuk deduplikasi gabungan.
Misalkan tipe struktur didefinisikan address_type
,Termasukstreet
Dancity
Dua bidang, tabelcontacts
Ada kolom di dalamnyaaddress
Yaaddress_type
jenis.
SELECT DISTINCT address.street, address.city
FROM contacts;
Penjelasan: Lakukan operasi deduplikasi dengan mengakses langsung bidang struktur.
GROUP BY
Lakukan deduplikasiGROUP BY
Klausa tersebut juga dapat digunakan untuk mencapai efek deduplikasi, terutama bila diperlukan untuk melakukan perhitungan agregasi pada data dan melakukan deduplikasi pada saat yang bersamaan.
SELECT column_name
FROM your_table
GROUP BY column_name;
Misalnya untuk mendapatkan students
Kelas yang berbeda dalam tabel:
SELECT class
FROM students
GROUP BY class;
menjelaskan: GROUP BY
Baris dengan nilai yang sama akan dikelompokkan bersama, sehingga mencapai efek deduplikasi.
Jika data mungkin berisi nilai nol, deduplikasi memerlukan perhatian khusus. DISTINCT
akanNULL
nilai diperlakukan sebagai nilai yang berbeda.Jika Anda inginNULL
Nilainya dianggap sama untuk deduplikasi. Anda dapat menggunakan metode berikut:
SELECT COALESCE(column_name, 'default_value')
FROM your_table
GROUP BY COALESCE(column_name, 'default_value');
Misalnya untuk product_prices
di mejaprice
kolom (mungkin berisiNULL
nilai), keNULL
Nilai diperlakukan sama untuk deduplikasi:
SELECT COALESCE(price, 0)
FROM product_prices
GROUP BY COALESCE(price, 0);
menjelaskan: COALESCE
fungsi digunakan untuk memprosesNULL
nilai, ganti dengan nilai default yang ditentukan, lalu lakukan pengelompokan dan deduplikasi berdasarkan hasil yang diganti.
Saat melakukan operasi deduplikasi data, volume dan kinerja data perlu dipertimbangkan. Untuk kumpulan data besar, penggunaan indeks dapat meningkatkan kinerja operasi deduplikasi.
Jika Anda sering melakukan operasi deduplikasi pada kolom tertentu, Anda bisa membuat indeks untuk kolom tersebut.
CREATE INDEX index_name ON your_table (column_name);
Selain itu, memilih metode deduplikasi yang tepat juga dapat berdampak pada kinerja.Misalnya, jika jumlah datanya besar dan Anda hanya perlu mendapatkan jumlah nilai unik, bukan nilai unik sebenarnya, gunakanCOUNT(DISTINCT)
Mungkin lebih baik daripada menggunakannya secara langsungDISTINCT
Lebih hemat.
Misalkan ada a sales
meja, berisicustomer_id
(tipe bilangan bulat),product_name
(tipe string) dansale_amount
kolom (tipe floating point).
Untuk mendapatkan daftar produk berbeda yang dibeli oleh pelanggan berbeda, Anda bisa menggunakan kueri berikut:
SELECT DISTINCT customer_id, product_name
FROM sales;
Jika Anda ingin mendapatkan total penjualan setiap pelanggan sekaligus mencapai duplikasi pelanggan, Anda dapat menulis seperti ini:
SELECT customer_id, SUM(sale_amount) AS total_sales
FROM sales
GROUP BY customer_id;
hipotesa sales
di mejaproduct_name
Kolom mungkin berisi nilai null. Untuk memperlakukan nilai null sama untuk deduplikasi, Anda dapat menggunakan:
SELECT COALESCE(product_name, 'Unknown Product')
FROM sales
GROUP BY COALESCE(product_name, 'Unknown Product');
jika sales
Jumlah data dalam tabel sangat besar, dan sering kali didasarkan padacustomer_id
Untuk melakukan deduplikasi pada kolom, Anda dapat membuat indeks untuk kolom tersebut:
CREATE INDEX sales_customer_id_index ON sales (customer_id);
Menerapkan deduplikasi data di PostgreSQL memerlukan pemilihan metode yang sesuai berdasarkan jenis data dan kebutuhan bisnis tertentu.Tipe data dasar dapat digunakanDISTINCT
kata kunci, untuk struktur data kompleks seperti array,JSON
dan struktur khusus, yang mungkin perlu digabungkan dengan fungsi dan operasi tertentu untuk mencapai deduplikasi. Pada saat yang sama, penting untuk mempertimbangkan faktor kinerja, membuat indeks secara wajar, dan memilih strategi deduplikasi yang optimal. Melalui contoh dan penjelasan di atas, kami berharap dapat membantu Anda melakukan operasi deduplikasi data di PostgreSQL secara efektif untuk memenuhi berbagai kebutuhan bisnis.
🎉相关推荐