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:
-
map
Tipearray
atau dapat berisimap
jenis lainarray
atau selama kueri pada nilai bersarangarrays
ataumaps
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). JikaOUTER 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 klausaSELECT
atauWHERE
. Misalnya, kueri berikut tidak berjalan karenaSELECT
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 dalamFROM
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 dalamWHERE
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
danmaps
dalamFROM
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 mencobaSELECT
elemen dari dalam array. Kueri yang memiliharr.a
berfungsi karenaarr.a
merupakanscalar
nilai. Kueri kedua tidak berfungsi karenaarray
merupakan array yang diekstraksi daris3.nested table
dalamFROM
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