Batasan data bersarang (pratinjau) - Amazon Redshift

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

Batasan data bersarang (pratinjau)

Topik ini menjelaskan batasan untuk membaca data bersarang dengan Redshift Spectrum. Data bersarang adalah data yang berisi bidang bersarang. Bidang bersarang adalah bidang yang disatukan sebagai entitas tunggal, seperti array, struct, atau objek.

catatan

Batasan yang ditandai (pratinjau) dalam daftar berikut hanya berlaku untuk kluster pratinjau dan grup kerja pratinjau yang dibuat di Wilayah berikut.

  • AS Timur (Ohio) (us-east-2)

  • AS Timur (Virginia Utara) (us-east-1)

  • AS Barat (California Utara) (us-west-1)

  • Asia Pacific (Tokyo) (ap-northeast-1)

  • Europe (Ireland) (eu-west-1)

  • Eropa (Stockholm) (eu-north-1)

Untuk informasi tentang menyiapkan klaster Pratinjau, lihat Membuat klaster pratinjau di Panduan Manajemen Pergeseran Merah Amazon. Untuk informasi tentang mengatur grup kerja Pratinjau, lihat Membuat grup kerja pratinjau di Panduan Manajemen Amazon Redshift.

Batasan berikut berlaku untuk data bersarang:

  • mapTipe array atau dapat berisi map jenis lain array atau selama kueri pada nilai bersarang arrays atau maps tidak mengembalikanscalar. (pratinjau)

  • Amazon Redshift Spectrum mendukung tipe data yang kompleks hanya sebagai tabel eksternal.

  • Kolom hasil subquery harus tingkat atas. (pratinjau)

  • Jika OUTER JOIN ekspresi mengacu pada tabel bersarang, itu hanya dapat merujuk ke tabel itu dan array bersarang (dan peta). Jika OUTER JOIN ekspresi tidak merujuk ke tabel bersarang, ekspresi dapat merujuk ke sejumlah tabel yang tidak bersarang.

  • Jika FROM klausa dalam subquery mengacu pada tabel bersarang, itu tidak dapat merujuk ke tabel lain.

  • Jika subquery bergantung pada tabel bersarang yang mengacu pada tabel induk, subquery hanya dapat menggunakan tabel induk dalam klausa. FROM Anda tidak dapat menggunakan induk dalam klausa lain, seperti klausa SELECT atauWHERE. Misalnya, kueri berikut tidak berjalan karena SELECT klausa subquery mengacu pada tabel induk. c

    SELECT c.name.given FROM spectrum.customers c WHERE (SELECT COUNT(c.id) FROM c.phones p WHERE p LIKE '858%') > 1;

    Kueri berikut berfungsi karena induk hanya c digunakan dalam FROM klausa subquery.

    SELECT c.name.given FROM spectrum.customers c WHERE (SELECT COUNT(*) FROM c.phones p WHERE p LIKE '858%') > 1;
  • Subquery yang mengakses data bersarang di mana saja selain FROM klausa harus mengembalikan satu nilai. Satu-satunya pengecualian adalah (NOT) EXISTS operator dalam WHERE klausa.

  • (NOT) IN tidak didukung.

  • Kedalaman bersarang maksimum untuk semua jenis bersarang adalah 100. Pembatasan ini berlaku untuk semua format file (Parket,, IonORC, danJSON).

  • Subkueri agregasi yang mengakses data bersarang hanya dapat merujuk ke arrays dan maps dalam FROM klausulnya, bukan ke tabel eksternal.

  • Menanyakan pseudocolumns dari data bersarang dalam tabel Redshift Spectrum tidak didukung. Untuk informasi selengkapnya, lihat Pseudokolom.

  • Saat mengekstrak data dari kolom array atau peta dengan menentukannya dalam FROM klausa, Anda hanya dapat memilih nilai dari kolom tersebut jika nilainya. scalar Misalnya, kueri berikut keduanya mencoba SELECT elemen dari dalam array. Kueri yang memilih arr.a berfungsi karena arr.a merupakan scalar nilai. Kueri kedua tidak berfungsi karena array merupakan array yang diekstraksi dari s3.nested table dalam FROM klausa. (pratinjau)

    SELECT array_column FROM s3.nested_table; array_column ----------------- [{"a":1},{"b":2}] SELECT arr.a FROM s3.nested_table t, t.array_column arr; arr.a ----- 1 --This query fails to run. SELECT array FROM s3.nested_table tab, tab.array_column array;

    Anda tidak dapat menggunakan array atau peta dalam FROM klausa yang berasal dari array atau peta lain. Untuk memilih array atau struktur kompleks lainnya yang bersarang di dalam array lain, pertimbangkan untuk menggunakan indeks dalam pernyataan. SELECT