Amazon Redshift tidak akan lagi mendukung pembuatan Python UDFs baru mulai 1 November 2025. Jika Anda ingin menggunakan Python UDFs, buat UDFs sebelum tanggal tersebut. Python yang ada UDFs akan terus berfungsi seperti biasa. Untuk informasi lebih lanjut, lihat posting blog
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Jenis Data
Topik
Setiap nilai yang disimpan atau diambil Amazon Redshift memiliki tipe data dengan sekumpulan properti terkait tetap. Tipe data dideklarasikan saat tabel dibuat. Tipe data membatasi kumpulan nilai yang dapat berisi kolom atau argumen.
Tabel berikut mencantumkan tipe data yang dapat Anda gunakan di tabel Amazon Redshift.
Jenis data | Alias | Deskripsi |
---|---|---|
SMALLINT | INT2 | Bilangan bulat dua byte bertanda |
INTEGER | INT, INT4 | Bilangan bulat empat byte bertanda |
BIGINT | INT8 | Bilangan bulat delapan byte bertanda |
DECIMAL | NUMERIC | Numerik persis dari presisi yang dapat dipilih |
REAL | FLOAT4 | Angka floating-point presisi tunggal |
DOUBLE PRECISION | FLOAT8, MENGAPUNG | Angka floating-point presisi ganda |
CHAR | KARAKTER, NCHAR, BPCHAR | String karakter dengan panjang tetap |
VARCHAR | KARAKTER BERVARIASI, NVARCHAR, TEKS | String karakter panjang variabel dengan batas yang ditentukan pengguna |
DATE | Tanggal kalender (tahun, bulan, hari) | |
TIME | WAKTU TANPA ZONA WAKTU | Waktu hari |
JADWAL | TIME WITH TIME ZONE | Waktu hari dengan zona waktu |
TIMESTAMP | STEMPEL WAKTU TANPA ZONA WAKTU | Tanggal dan waktu (tanpa zona waktu) |
TIMESTAMPTZ | TIMESTAMP WITH TIME ZONE | Tanggal dan waktu (dengan zona waktu) |
INTERVAL TAHUN KE BULAN | Durasi waktu dalam pesanan tahun ke bulan | |
INTERVAL HARI KE DETIK | Durasi waktu dalam hari ke urutan kedua | |
BOOLEAN | BOOL | Logis Boolean (benar/salah) |
HLLSKETSA | Jenis yang digunakan dengan HyperLogLog sketsa. | |
SUPER | Tipe data superset yang mencakup semua jenis skalar Amazon Redshift termasuk tipe kompleks seperti ARRAY dan STRUCTS. | |
VARBYTE | VARBINARY, BINER BERVARIASI | Nilai biner dengan panjang variabel |
GEOMETRY | Data spasial | |
GEOGRAPHY | Data spasial |
catatan
Untuk informasi tentang tipe data yang tidak didukung, seperti “char” (perhatikan bahwa char terlampir dalam tanda kutip), lihat. Tipe data PostgreSQL yang tidak didukung
Karakter multibyte
Tipe data VARCHAR mendukung karakter multibyte UTF-8 hingga maksimal empat byte. Karakter lima byte atau lebih lama tidak didukung. Untuk menghitung ukuran kolom VARCHAR yang berisi karakter multibyte, kalikan jumlah karakter dengan jumlah byte per karakter. Misalnya, jika string memiliki empat karakter Mandarin, dan setiap karakter panjangnya tiga byte, maka Anda memerlukan kolom VARCHAR (12) untuk menyimpan string.
Tipe data VARCHAR tidak mendukung titik kode UTF-8 yang tidak valid berikut ini:
0xD800 – 0xDFFF
(Urutan byte: ED A0 80
—) ED BF BF
Tipe data CHAR tidak mendukung karakter multibyte.
Ketik kompatibilitas dan konversi
Berikut ini, Anda dapat menemukan diskusi tentang cara kerja aturan konversi tipe dan kompatibilitas tipe data di Amazon Redshift.
Kompatibilitas
Pencocokan tipe data dan pencocokan nilai literal dan konstanta dengan tipe data terjadi selama berbagai operasi database, termasuk yang berikut ini:
-
Data Manipulation Language (DML) operasi pada tabel
-
UNION, INTERSECT, dan EXCEPT query
-
Ekspresi CASE
-
Evaluasi predikat, seperti LIKE dan IN
-
Evaluasi fungsi SQL yang melakukan perbandingan atau ekstraksi data
-
Perbandingan dengan operator matematika
Hasil operasi ini bergantung pada aturan konversi tipe dan kompatibilitas tipe data. Kompatibilitas menyiratkan bahwa one-to-one pencocokan nilai tertentu dan tipe data tertentu tidak selalu diperlukan. Karena beberapa tipe data kompatibel, konversi implisit, atau paksaan, dimungkinkan (untuk informasi lebih lanjut, lihat). Jenis konversi implisit Ketika tipe data tidak kompatibel, terkadang Anda dapat mengonversi nilai dari satu tipe data ke tipe data lainnya dengan menggunakan fungsi konversi eksplisit.
Kompatibilitas umum dan aturan konversi
Perhatikan aturan kompatibilitas dan konversi berikut:
-
Secara umum, tipe data yang termasuk dalam kategori tipe yang sama (seperti tipe data numerik yang berbeda) kompatibel dan dapat dikonversi secara implisit.
Misalnya, dengan konversi implisit Anda dapat menyisipkan nilai desimal ke dalam kolom integer. Desimal dibulatkan untuk menghasilkan bilangan bulat. Atau Anda dapat mengekstrak nilai numerik, seperti
2008
, dari tanggal dan memasukkan nilai itu ke dalam kolom integer. -
Tipe data numerik memberlakukan kondisi overflow yang terjadi saat Anda mencoba menyisipkan nilai. out-of-range Misalnya, nilai desimal dengan presisi 5 tidak cocok dengan kolom desimal yang didefinisikan dengan presisi 4. Sebuah integer atau seluruh bagian dari desimal tidak pernah terpotong; Namun, bagian fraksional dari desimal dapat dibulatkan ke atas atau ke bawah, sebagaimana mestinya. Namun, hasil pemeran eksplisit nilai yang dipilih dari tabel tidak dibulatkan.
-
Berbagai jenis string karakter kompatibel; String kolom VARCHAR yang berisi data byte tunggal dan string kolom CHAR sebanding dan dapat dikonversi secara implisit. String VARCHAR yang berisi data multibyte tidak sebanding. Selain itu, Anda dapat mengonversi string karakter ke tanggal, waktu, stempel waktu, atau nilai numerik jika string adalah nilai literal yang sesuai; spasi depan atau belakang apa pun diabaikan. Sebaliknya, Anda dapat mengonversi tanggal, waktu, stempel waktu, atau nilai numerik menjadi string karakter dengan panjang tetap atau panjang variabel.
catatan
String karakter yang ingin Anda transmisikan ke tipe numerik harus berisi representasi karakter angka. Misalnya, Anda dapat mentransmisikan string
'1.0'
atau'5.9'
ke nilai desimal, tetapi Anda tidak dapat mentransmisikan string'ABC'
ke jenis numerik apa pun. -
Jika Anda membandingkan nilai DECIMAL dengan string karakter, Amazon Redshift mencoba mengonversi string karakter ke nilai DECIMAL. Saat membandingkan semua nilai numerik lainnya dengan string karakter, nilai numerik dikonversi ke string karakter. Untuk menegakkan konversi yang berlawanan (misalnya, mengubah string karakter menjadi bilangan bulat, atau mengubah nilai DECIMAL menjadi string karakter), gunakan fungsi eksplisit, seperti. PEMERAN
-
Untuk mengonversi nilai DECIMAL atau NUMERIK 64-bit ke presisi yang lebih tinggi, Anda harus menggunakan fungsi konversi eksplisit seperti fungsi CAST atau CONVERT.
-
Saat mengonversi DATE atau TIMESTAMP ke TIMESTAMPTZ, atau mengonversi TIME ke TIMETZ, zona waktu diatur ke zona waktu sesi saat ini. Zona waktu sesi adalah UTC secara default. Untuk informasi selengkapnya tentang pengaturan zona waktu sesi, lihattimezone.
-
Demikian pula, TIMESTAMPTZ dikonversi ke DATE, TIME, atau TIMESTAMP berdasarkan zona waktu sesi saat ini. Zona waktu sesi adalah UTC secara default. Setelah konversi, informasi zona waktu dijatuhkan.
-
String karakter yang mewakili stempel waktu dengan zona waktu yang ditentukan dikonversi ke TIMESTAMPTZ menggunakan zona waktu sesi saat ini, yang merupakan UTC secara default. Demikian juga, string karakter yang mewakili waktu dengan zona waktu yang ditentukan dikonversi ke TIMETZ menggunakan zona waktu sesi saat ini, yang merupakan UTC secara default.
Jenis konversi implisit
Ada dua jenis konversi implisit:
-
Konversi implisit dalam tugas, seperti menyetel nilai dalam perintah INSERT atau UPDATE.
-
Konversi implisit dalam ekspresi, seperti melakukan perbandingan dalam klausa WHERE.
Tabel berikut mencantumkan tipe data yang dapat dikonversi secara implisit dalam tugas atau ekspresi. Anda juga dapat menggunakan fungsi konversi eksplisit untuk melakukan konversi ini.
Dari tipe | Untuk mengetik |
---|---|
BIGINT () INT8 | BOOLEAN |
CHAR | |
DESIMAL (NUMERIK) | |
PRESISI GANDA (FLOAT8) | |
BILANGAN BULAT (INT, INT4) | |
NYATA (FLOAT4) | |
KECIL () INT2 | |
VARCHAR | |
CHAR | VARCHAR |
DATE | CHAR |
VARCHAR | |
TIMESTAMP | |
TIMESTAMPTZ | |
DESIMAL (NUMERIK) | BIGINT () INT8 |
CHAR | |
PRESISI GANDA (FLOAT8) | |
BILANGAN BULAT (INT, INT4) | |
NYATA (FLOAT4) | |
KECIL () INT2 | |
VARCHAR | |
PRESISI GANDA (FLOAT8) | BIGINT () INT8 |
CHAR | |
DESIMAL (NUMERIK) | |
BILANGAN BULAT (INT, INT4) | |
NYATA (FLOAT4) | |
KECIL () INT2 | |
VARCHAR | |
BILANGAN BULAT (INT, INT4) | BIGINT () INT8 |
BOOLEAN | |
CHAR | |
DESIMAL (NUMERIK) | |
PRESISI GANDA (FLOAT8) | |
NYATA (FLOAT4) | |
KECIL () INT2 | |
VARCHAR | |
NYATA (FLOAT4) | BIGINT () INT8 |
CHAR | |
DESIMAL (NUMERIK) | |
BILANGAN BULAT (INT, INT4) | |
KECIL () INT2 | |
VARCHAR | |
KECIL () INT2 | BIGINT () INT8 |
BOOLEAN | |
CHAR | |
DESIMAL (NUMERIK) | |
PRESISI GANDA (FLOAT8) | |
BILANGAN BULAT (INT, INT4) | |
NYATA (FLOAT4) | |
VARCHAR | |
TIMESTAMP | CHAR |
DATE | |
VARCHAR | |
TIMESTAMPTZ | |
TIME | |
TIMESTAMPTZ | CHAR |
DATE | |
VARCHAR | |
TIMESTAMP | |
JADWAL | |
TIME | VARCHAR |
JADWAL | |
INTERVAL HARI KE DETIK | |
JADWAL | VARCHAR |
TIME | |
GEOMETRY | GEOGRAPHY |
GEOGRAPHY | GEOMETRY |
catatan
Konversi implisit antara TIMESTAMPTZ, TIMESTAMP, DATE, TIME, TIMETZ, atau string karakter menggunakan zona waktu sesi saat ini. Untuk informasi tentang pengaturan zona waktu saat ini, lihattimezone.
Jenis data GEOMETRI dan GEOGRAFI tidak dapat secara implisit dikonversi ke tipe data lain, kecuali satu sama lain. Untuk informasi selengkapnya, lihat Fungsi CAST.
Tipe data VARBYTE tidak dapat secara implisit dikonversi ke tipe data lainnya. Untuk informasi selengkapnya, lihat Fungsi CAST.
Menggunakan pengetikan dinamis untuk tipe data SUPER
Amazon Redshift menggunakan pengetikan dinamis untuk memproses data SUPER tanpa skema tanpa perlu mendeklarasikan tipe data sebelum Anda menggunakannya dalam kueri. Pengetikan dinamis menggunakan hasil navigasi ke kolom data SUPER tanpa harus secara eksplisit memasukkannya ke dalam jenis Amazon Redshift. Untuk informasi selengkapnya tentang penggunaan pengetikan dinamis untuk tipe data SUPER, lihatPengetikan dinamis.
Anda dapat mentransmisikan nilai SUPER ke dan dari tipe data lain dengan beberapa pengecualian. Untuk informasi selengkapnya, lihat Batasan.