Mengembalikan jumlah perkiraan nilai input yang berbeda dalam kolom tertentu. Fungsi ini merupakan bagian dari MaxCompute V2.0.
Catatan penggunaan
MaxCompute V2.0 menyediakan fungsi tambahan. Jika fungsi yang digunakan melibatkan tipe data baru, seperti TINYINT, SMALLINT, INT, FLOAT, VARCHAR, TIMESTAMP, dan BINARY, Anda harus mengeksekusi pernyataan untuk mengaktifkan edisi tipe data MaxCompute V2.0:
Tingkat sesi: Tambahkan
set odps.sql.type.system.odps2=true;sebelum pernyataan SQL yang akan dieksekusi, lalu kirim dan eksekusi bersama-sama.Tingkat proyek: Pemilik proyek dapat mengaktifkan edisi tipe data MaxCompute V2.0 untuk proyek sesuai kebutuhan. Pernyataan:
setproject odps.sql.type.system.odps2=true;Konfigurasi akan berlaku setelah 10 hingga 15 menit.
Untuk informasi lebih lanjut tentang
setproject, lihat Operasi Proyek. Untuk detail lebih lanjut tentang tindakan pencegahan saat mengaktifkan edisi tipe data MaxCompute V2.0 di tingkat proyek, lihat Edisi Tipe Data.
Jika Anda menggunakan pernyataan SQL yang mencakup beberapa fungsi agregat dan sumber daya proyek tidak memadai, mungkin terjadi kelebihan memori. Kami menyarankan Anda mengoptimalkan pernyataan SQL atau menambah sumber daya komputasi sesuai kebutuhan bisnis.
Sintaksis
approx_distinct(<colname>)Parameter
colname: Wajib. Menentukan nama kolom dari mana duplikat perlu dihapus.
Nilai kembali
Nilai dengan tipe BIGINT dikembalikan. Fungsi ini memiliki margin kesalahan sebesar 5%.
Data sampel
Berikut adalah data sampel untuk membantu Anda memahami penggunaan fungsi ini. Buat tabel bernama emp dan masukkan data sampel ke dalam tabel. Contoh pernyataan:
create table if not exists emp
(empno bigint,
ename string,
job string,
mgr bigint,
hiredate datetime,
sal bigint,
comm bigint,
deptno bigint);
tunnel upload emp.txt emp; -- Ganti emp.txt dengan path sebenarnya (path dan nama) tempat Anda mengunggah file data.File emp.txt berisi data sampel berikut:
7369,SMITH,CLERK,7902,1980-12-17 00:00:00,800,,20
7499,ALLEN,SALESMAN,7698,1981-02-20 00:00:00,1600,300,30
7521,WARD,SALESMAN,7698,1981-02-22 00:00:00,1250,500,30
7566,JONES,MANAGER,7839,1981-04-02 00:00:00,2975,,20
7654,MARTIN,SALESMAN,7698,1981-09-28 00:00:00,1250,1400,30
7698,BLAKE,MANAGER,7839,1981-05-01 00:00:00,2850,,30
7782,CLARK,MANAGER,7839,1981-06-09 00:00:00,2450,,10
7788,SCOTT,ANALYST,7566,1987-04-19 00:00:00,3000,,20
7839,KING,PRESIDENT,,1981-11-17 00:00:00,5000,,10
7844,TURNER,SALESMAN,7698,1981-09-08 00:00:00,1500,0,30
7876,ADAMS,CLERK,7788,1987-05-23 00:00:00,1100,,20
7900,JAMES,CLERK,7698,1981-12-03 00:00:00,950,,30
7902,FORD,ANALYST,7566,1981-12-03 00:00:00,3000,,20
7934,MILLER,CLERK,7782,1982-01-23 00:00:00,1300,,10
7948,JACCKA,CLERK,7782,1981-04-12 00:00:00,5000,,10
7956,WELAN,CLERK,7649,1982-07-20 00:00:00,2450,,10
7956,TEBAGE,CLERK,7748,1982-12-30 00:00:00,1300,,10Contoh
Contoh 1: Hitung jumlah perkiraan nilai yang berbeda dalam kolom sal. Contoh pernyataan:
select approx_distinct(sal) from emp;Hasil berikut dikembalikan:
+-------------------+ | numdistinctvalues | +-------------------+ | 12 | +-------------------+Contoh 2: Gunakan fungsi ini dengan
GROUP BYuntuk mengelompokkan semua karyawan berdasarkan departemen (deptno) dan hitung jumlah perkiraan nilai yang berbeda dalam kolom sal. Contoh pernyataan:select deptno, approx_distinct(sal) from emp group by deptno;Hasil berikut dikembalikan:
+------------+-------------------+ | deptno | numdistinctvalues | +------------+-------------------+ | 10 | 3 | | 20 | 4 | | 30 | 5 | +------------+-------------------+
Fungsi terkait
APPROX_DISTINCT adalah fungsi agregat. Untuk informasi lebih lanjut tentang fungsi yang digunakan untuk menghitung nilai rata-rata dari beberapa catatan input dan mengagregasi parameter, lihat Fungsi Agregat.