Batasan - Amazon Redshift

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Batasan

Saat menggunakan tipe data SUPER, pertimbangkan batasan berikut:

  • Anda tidak dapat mendefinisikan kolom SUPER sebagai kunci distribusi atau sortir.

  • Objek SUPER individu dapat menampung hingga 16 MB data.

  • Nilai individual dalam objek SUPER terbatas pada panjang maksimum jenis Amazon Redshift yang sesuai. Misalnya, nilai string tunggal yang dimuat ke SUPER terbatas pada panjang VARCHAR maksimum 65535 byte.

  • Anda tidak dapat melakukan pembaruan sebagian atau operasi transformasi pada kolom SUPER.

  • Anda tidak dapat menggunakan tipe data SUPER dan aliasnya dalam gabungan kanan atau gabungan luar penuh.

  • Tipe data SUPER tidak mendukung XMLsebagai format serialisasi masuk atau keluar.

  • Dalam klausa FROM dari subquery (yang berkorelasi atau tidak) yang mereferensikan variabel tabel untuk unnesting, kueri hanya dapat merujuk ke tabel induknya dan bukan tabel lainnya.

  • Batasan pengecoran

    Nilai SUPER dapat dilemparkan ke dan dari tipe data lain, dengan pengecualian berikut:

    • Amazon Redshift tidak membedakan bilangan bulat dan desimal skala 0.

    • Jika skala tidak nol, tipe data SUPER memiliki perilaku yang sama dengan tipe data Amazon Redshift lainnya, kecuali Amazon Redshift mengonversi kesalahan Super-related menjadi null, seperti yang ditunjukkan pada contoh berikut.

      SELECT 5::bool; bool ------- True (1 row) SELECT 5::decimal::bool; ERROR: cannot cast type numeric to boolean SELECT 5::super::bool; bool ------- True (1 row) SELECT 5.0::bool; ERROR: cannot cast type numeric to boolean SELECT 5.0::super::bool; bool ------- (1 row)
    • Amazon Redshift tidak mentransmisikan tipe tanggal dan waktu ke tipe data SUPER. Amazon Redshift hanya dapat mentransmisikan tipe data tanggal dan waktu dari tipe data SUPER, seperti yang ditunjukkan pada contoh berikut.

      SELECT o.o_orderdate FROM customer_orders_lineitem c,c.c_orders o; order_date ------------------ "2001-09-08" (1 row) SELECT JSON_TYPEOF(o.o_orderdate) FROM customer_orders_lineitem c,c.c_orders o; json_typeof ----------------- string (1 row) SELECT o.o_orderdate::date FROM customer_orders_lineitem c,c.c_orders o; order_date ---------------- 2001-09-08 (1 row) --date/time cannot be cast to super SELECT '2019-09-09'::date::super; ERROR: cannot cast type date to super
    • Cast dari nilai-nilai non-skalar (objek dan array) ke string mengembalikan NULL. Untuk membuat serial nilai non-skalar ini dengan benar, jangan dilemparkan. Sebagai gantinya, gunakan json_serialize untuk melemparkan nilai non-skalar. json_serializeFungsi mengembalikan varchar. Biasanya, Anda tidak perlu mentransmisikan nilai non-skalar ke varchar karena Amazon Redshift secara implisit membuat serial seperti yang ditunjukkan pada contoh pertama berikut.

      SELECT r_nations FROM region_nations WHERE r_regionkey=300; r_nations ---------------- [1,"abc",null] (1 row) SELECT r_nations::varchar FROM region_nations WHERE r_regionkey=300; r_nations ------------- (1 row) SELECT JSON_SERIALIZE(r_nations) FROM region_nations WHERE r_regionkey=300; json_serialize ----------------- [1,"abc",null] (1 row)
    • Untuk database case-insensitive, Amazon Redshift tidak mendukung tipe data SUPER. Untuk kolom case-insensitive, Amazon Redshift tidak mentransmisikannya ke tipe SUPER. Dengan demikian, Amazon Redshift tidak mendukung kolom SUPER yang berinteraksi dengan kolom case-insensitive yang memicu casting.

  • Amazon Redshift tidak mendukung fungsi volatil, seperti RANDOM () atau TIMEOFDAY (), dalam subkueri yang menghapus tabel luar atau sisi kiri (LHS) fungsi IN dengan subkueri tersebut.