Amazon Redshift tidak akan lagi mendukung penggunaan Python UDF setelah 30 Juni 2026. Kami akan mulai menegakkannya secara bertahap. Untuk informasi lebih lanjut tentang detail opsi akhir masa pakai dan migrasi Python, lihat posting blog
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Jenis numerik
Topik
Tipe data numerik termasuk bilangan bulat, desimal, dan angka floating-point.
Jenis bilangan bulat
Gunakan tipe data SMALLINT, INTEGER, dan BIGINT untuk menyimpan bilangan bulat dari berbagai rentang. Anda tidak dapat menyimpan nilai di luar rentang yang diizinkan untuk setiap jenis.
| Nama | Penyimpanan | Kisaran |
|---|---|---|
| SMALLINT atau INT2 | 2 byte | -32768 sampai +32767 |
| INTEGER, INT, atau INT4 | 4 byte | -2147483648 sampai +2147483647 |
| BIGINT atau INT8 | 8 byte | -9223372036854775808 sampai 9223372036854775807 |
Tipe DESIMAL atau NUMERIK
Gunakan tipe data DECIMAL atau NUMERIC untuk menyimpan nilai dengan presisi yang ditentukan pengguna. Kata kunci DECIMAL dan NUMERIC dapat dipertukarkan. Dalam dokumen ini, desimal adalah istilah yang disukai untuk tipe data ini. Istilah numerik digunakan secara umum untuk merujuk pada tipe data integer, desimal, dan floating-point.
| Penyimpanan | Kisaran |
|---|---|
| Variabel, hingga 128 bit untuk tipe DECIMAL yang tidak terkompresi. | Bilangan bulat bertanda 128-bit dengan presisi hingga 38 digit. |
Tentukan kolom DECIMAL dalam tabel dengan menentukan presisi dan skala:
decimal(precision, scale)
- presisi
-
Jumlah total digit signifikan dalam keseluruhan nilai: jumlah digit di kedua sisi titik desimal. Misalnya, angka tersebut
48.2891memiliki presisi 6 dan skala 4. Presisi default, jika tidak ditentukan, adalah 18. Presisi maksimum adalah 38.Jika jumlah digit di sebelah kiri titik desimal dalam nilai input melebihi ketepatan kolom dikurangi skalanya, nilainya tidak dapat disalin ke kolom (atau dimasukkan atau diperbarui). Aturan ini berlaku untuk nilai apa pun yang berada di luar rentang definisi kolom. Misalnya, rentang nilai yang diizinkan untuk
numeric(5,2)kolom adalah-999.99to999.99. - skala
-
Jumlah digit desimal di bagian pecahan nilai, di sebelah kanan titik desimal. Bilangan bulat memiliki skala nol. Dalam spesifikasi kolom, nilai skala harus kurang dari atau sama dengan nilai presisi. Skala default, jika tidak ditentukan, adalah 0. Skala maksimum adalah 37.
Jika skala nilai input yang dimuat ke dalam tabel lebih besar dari skala kolom, nilainya dibulatkan ke skala yang ditentukan. Misalnya, kolom PRICEPAID dalam tabel PENJUALAN adalah kolom DECIMAL (8,2). Jika nilai DECIMAL (8,4) dimasukkan ke dalam kolom PRICEPAID, nilainya dibulatkan ke skala 2.
insert into sales values (0, 8, 1, 1, 2000, 14, 5, 4323.8951, 11.00, null); select pricepaid, salesid from sales where salesid=0; pricepaid | salesid -----------+--------- 4323.90 | 0 (1 row)Namun, hasil pemertian eksplisit nilai yang dipilih dari tabel tidak dibulatkan.
catatan
Nilai positif maksimum yang dapat Anda masukkan ke dalam kolom DECIMAL (19,0) adalah 9223372036854775807 (2 63 -1). Nilai negatif maksimum adalah-9223372036854775808. Misalnya, upaya untuk memasukkan nilai 9999999999999999999 (19 sembilan) akan menyebabkan kesalahan luapan. Terlepas dari penempatan titik desimal, string terbesar yang dapat diwakili oleh Amazon Redshift sebagai angka DESIMAL adalah9223372036854775807. Misalnya, nilai terbesar yang dapat Anda muat ke dalam kolom DECIMAL (19,18) adalah. 9.223372036854775807
Aturan ini karena nilai DECIMAL dengan 19 digit presisi signifikan atau lebih sedikit disimpan secara internal sebagai bilangan bulat 8-byte, sedangkan nilai DECIMAL dengan presisi 20 hingga 38 digit signifikan disimpan sebagai bilangan bulat 16-byte.
Catatan tentang menggunakan kolom DECIMAL atau NUMERIC 128-bit
Jangan sewenang-wenang menetapkan presisi maksimum ke kolom DECIMAL kecuali Anda yakin bahwa aplikasi Anda memerlukan presisi itu. Nilai 128-bit menggunakan ruang disk dua kali lebih banyak daripada nilai 64-bit dan dapat memperlambat waktu eksekusi kueri.
Floating-Point jenis
Gunakan tipe data REAL dan DOUBLE PRECISION untuk menyimpan nilai numerik dengan presisi variabel. Jenis ini adalah tipe yang tidak tepat, yang berarti bahwa beberapa nilai disimpan sebagai perkiraan, sehingga menyimpan dan mengembalikan nilai tertentu dapat mengakibatkan sedikit perbedaan. Jika Anda memerlukan penyimpanan dan perhitungan yang tepat (seperti untuk jumlah moneter), gunakan tipe data DECIMAL.
REAL mewakili format titik mengambang presisi tunggal, menurut Standar IEEE 754 untuk Aritmatika B Floating-Point iner. Ini memiliki presisi sekitar 6 digit, dan kisaran sekitar 1 E-37 hingga 1E+37. Anda juga dapat menentukan tipe data ini sebagai FLOAT4.
DOUBLE PRECISION mewakili format titik mengambang presisi ganda, menurut Standar IEEE 754 untuk Aritmatika B Floating-Point iner. Ini memiliki presisi sekitar 15 digit, dan kisaran sekitar 1 E-307 hingga 1E+308. Anda juga dapat menentukan tipe data ini sebagai FLOAT atau FLOAT8.
Selain nilai numerik biasa, tipe floating-point memiliki beberapa nilai khusus. Gunakan tanda kutip tunggal di sekitar nilai-nilai ini saat menggunakannya di SQL:
-
NaN— bukan angka -
Infinity— tak terbatas -
-Infinity— tak terbatas negatif
Misalnya, untuk menyisipkan not-a-number di kolom day_charge tabel customer_activity jalankan SQL berikut:
insert into customer_activity(day_charge) values('NaN');