Parameter format data - Amazon Redshift

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

Parameter format data

Secara default, perintah COPY mengharapkan data sumber menjadi teks UTF-8 yang dibatasi karakter. Pembatas default adalah karakter pipa (|). Jika data sumber dalam format lain, gunakan parameter berikut untuk menentukan format data:

Selain format data standar, COPY mendukung format data kolumnar berikut untuk COPY dari Amazon S3:

COPY dari format kolumnar didukung dengan batasan tertentu. Untuk informasi selengkapnya, lihat COPY dari format data kolumnar.

Parameter format data
FORMAT [SEBAGAI]

(Opsional) Mengidentifikasi kata kunci format data. Argumen FORMAT dijelaskan sebagai berikut.

CSV [KUTIPAN [AS] 'quote_character']

Memungkinkan penggunaan format CSV dalam data input. Untuk secara otomatis menghindari pembatas, karakter baris baru, dan pengembalian carriage, lampirkan bidang dalam karakter yang ditentukan oleh parameter QUOTE. Karakter tanda kutip default adalah tanda kutip ganda ("). Ketika karakter tanda kutip digunakan dalam bidang, keluar dari karakter dengan karakter tanda kutip tambahan. Misalnya, jika karakter tanda kutip adalah tanda kutip ganda, untuk memasukkan string A "quoted" word file input harus menyertakan string. "A ""quoted"" word" Ketika parameter CSV digunakan, pembatas default adalah koma (,). Anda dapat menentukan pembatas yang berbeda dengan menggunakan parameter DELIMITER.

Ketika bidang diapit tanda kutip, spasi putih antara pembatas dan karakter tanda kutip diabaikan. Jika pembatas adalah karakter spasi putih, seperti tab, pembatas tidak diperlakukan sebagai spasi putih.

CSV tidak dapat digunakan dengan FIXEDWIDTH, REMOVEQUOTES, atau ESCAPE.

KUTIPAN [AS] 'quote_character'

Tidak wajib. Menentukan karakter yang akan digunakan sebagai karakter tanda kutip saat menggunakan parameter CSV. Defaultnya adalah tanda kutip ganda ("). Jika Anda menggunakan parameter QUOTE untuk menentukan karakter tanda kutip selain tanda kutip ganda, Anda tidak perlu melepaskan tanda kutip ganda di dalam bidang. Parameter QUOTE hanya dapat digunakan dengan parameter CSV. Kata kunci AS adalah opsional.

PEMBATAS [AS] ['delimiter_char']

Menentukan karakter ASCII tunggal yang digunakan untuk memisahkan bidang dalam file input, seperti karakter pipa (|), koma (,), atau tab (\ t). Karakter ASCII yang tidak dicetak didukung. Karakter ASCII juga dapat direpresentasikan dalam oktal, menggunakan format '\ ddd', di mana' d 'adalah digit oktal (0-7). Pembatas default adalah karakter pipa (|), kecuali parameter CSV digunakan, dalam hal ini pembatas default adalah koma (,). Kata kunci AS adalah opsional. DELIMITER tidak dapat digunakan dengan FIXEDWIDTH.

FIXEDWIDTH 'fixedwidth_spec'

Memuat data dari file di mana setiap lebar kolom adalah panjang tetap, bukan kolom yang dipisahkan oleh pembatas. Fixedwidth_spec adalah string yang menentukan label kolom yang ditentukan pengguna dan lebar kolom. Label kolom dapat berupa string teks atau bilangan bulat, tergantung pada apa yang dipilih pengguna. Label kolom tidak memiliki hubungan dengan nama kolom. Urutan pasangan label/lebar harus sesuai dengan urutan kolom tabel dengan tepat. FIXEDWIDTH tidak dapat digunakan dengan CSV atau DELIMITER. Di Amazon Redshift, panjang kolom CHAR dan VARCHAR dinyatakan dalam byte, jadi pastikan bahwa lebar kolom yang Anda tentukan mengakomodasi panjang biner karakter multibyte saat menyiapkan file yang akan dimuat. Untuk informasi selengkapnya, lihat Jenis karakter.

Format untuk fixedwidth_spec ditampilkan sebagai berikut:

'colLabel1:colWidth1,colLabel:colWidth2, ...'
SHAPEFILE [MENYEDERHANAKAN [AUTO] ['toleransi']]

Mengaktifkan penggunaan format SHAPEFILE dalam data input. Secara default, kolom pertama dari shapefile adalah kolom GEOMETRY atauIDENTITY. Semua kolom berikutnya mengikuti urutan yang ditentukan dalam shapefile.

Anda tidak dapat menggunakan SHAPEFILE dengan FIXEDWIDTH, REMOVEQUOTES, atau ESCAPE.

Untuk menggunakan GEOGRAPHY objek denganCOPY FROM SHAPEFILE, pertama menelan ke dalam GEOMETRY kolom, dan kemudian melemparkan objek ke GEOGRAPHY objek.

MENYEDERHANAKAN [toleransi]

(Opsional) Menyederhanakan semua geometri selama proses konsumsi menggunakan algoritma Ramer-Douglas-Peucker dan toleransi yang diberikan.

MENYEDERHANAKAN AUTO [toleransi]

(Opsional) Menyederhanakan hanya geometri yang lebih besar dari ukuran geometri maksimum. Penyederhanaan ini menggunakan algoritma Ramer-Douglas-Peucker dan toleransi yang dihitung secara otomatis jika ini tidak melebihi toleransi yang ditentukan. Algoritma ini menghitung ukuran untuk menyimpan objek dalam toleransi yang ditentukan. Nilai toleransi adalah opsional.

Untuk contoh memuat shapefile, lihat. Memuat shapefile ke Amazon Redshift

AVRO [AS] 'avro_option'

Menentukan bahwa data sumber dalam format Avro.

Format Avro didukung untuk COPY dari layanan dan protokol ini:

  • Amazon S3

  • Amazon EMR

  • Host jarak jauh (SSH)

Avro tidak didukung untuk COPY dari DynamoDB.

Avro adalah protokol serialisasi data. File sumber Avro menyertakan skema yang mendefinisikan struktur data. Jenis skema Avro harus. record COPY menerima file Avro yang dibuat menggunakan codec default yang tidak terkompresi serta codec kompresi dan. deflate snappy Untuk informasi lebih lanjut tentang Avro, buka Apache Avro.

Nilai yang valid untuk avro_option adalah sebagai berikut:

  • 'auto'

  • 'auto ignorecase'

  • 's3://jsonpaths_file'

Nilai default-nya 'auto'.

COPY secara otomatis memetakan elemen data dalam data sumber Avro ke kolom di tabel target. Ia melakukannya dengan mencocokkan nama bidang dalam skema Avro dengan nama kolom di tabel target. Pencocokan peka huruf besar/kecil untuk 'auto' dan tidak peka huruf besar/kecil untuk. 'auto ignorecase'

Nama kolom di tabel Amazon Redshift selalu huruf kecil, jadi saat Anda menggunakan 'auto' opsi, nama bidang yang cocok juga harus huruf kecil. Jika nama bidang tidak semuanya huruf kecil, Anda dapat menggunakan opsi. 'auto ignorecase' Dengan 'auto' argumen default, COPY hanya mengenali bidang tingkat pertama, atau bidang luar, dalam struktur.

Untuk secara eksplisit memetakan nama kolom ke nama bidang Avro, Anda dapat menggunakan. Berkas JSONPaths

Secara default, COPY mencoba untuk mencocokkan semua kolom dalam tabel target dengan nama bidang Avro. Untuk memuat subset kolom, Anda dapat menentukan daftar kolom secara opsional. Jika kolom dalam tabel target dihilangkan dari daftar kolom, COPY memuat ekspresi kolom targetDEFAULT. Jika kolom target tidak memiliki default, COPY mencoba memuat NULL. Jika kolom disertakan dalam daftar kolom dan COPY tidak menemukan bidang yang cocok dalam data Avro, COPY mencoba memuat NULL ke kolom.

Jika COPY mencoba untuk menetapkan NULL ke kolom yang didefinisikan sebagai NOT NULL, perintah COPY gagal.

Avro Skema

File data sumber Avro mencakup skema yang mendefinisikan struktur data. COPY membaca skema yang merupakan bagian dari file data sumber Avro untuk memetakan elemen data ke kolom tabel target. Contoh berikut menunjukkan skema Avro.

{ "name": "person", "type": "record", "fields": [ {"name": "id", "type": "int"}, {"name": "guid", "type": "string"}, {"name": "name", "type": "string"}, {"name": "address", "type": "string"}] }

Skema Avro didefinisikan menggunakan format JSON. Objek JSON tingkat atas berisi tiga pasangan nama-nilai dengan nama, atau kunci,, dan. "name" "type" "fields"

Pasangan "fields" kunci dengan array objek yang menentukan nama dan tipe data dari setiap bidang dalam struktur data. Secara default, COPY secara otomatis mencocokkan nama bidang dengan nama kolom. Nama kolom selalu huruf kecil, jadi nama bidang yang cocok juga harus huruf kecil, kecuali jika Anda menentukan opsi. ‘auto ignorecase’ Nama bidang apa pun yang tidak cocok dengan nama kolom akan diabaikan. Pesanan tidak masalah. Pada contoh sebelumnya, COPY memetakan ke nama kolomid,guid,name, danaddress.

Dengan 'auto' argumen default, COPY hanya mencocokkan objek tingkat pertama dengan kolom. Untuk memetakan ke level yang lebih dalam dalam skema, atau jika nama bidang dan nama kolom tidak cocok, gunakan file JSONPaths untuk menentukan pemetaan. Untuk informasi selengkapnya, lihat Berkas JSONPaths.

Jika nilai yang terkait dengan kunci adalah tipe data Avro yang kompleks seperti byte, array, record, map, atau link, COPY memuat nilai sebagai string. Di sini, string adalah representasi JSON dari data. COPY memuat tipe data Avro enum sebagai string, di mana konten adalah nama tipe. Sebagai contoh, lihat COPY dari format JSON.

Ukuran maksimum header file Avro, yang mencakup skema dan metadata file, adalah 1 MB.  

Ukuran maksimum satu blok data Avro adalah 4 MB. Ini berbeda dari ukuran baris maksimum. Jika ukuran maksimum satu blok data Avro terlampaui, bahkan jika ukuran baris yang dihasilkan kurang dari batas ukuran baris 4 MB, perintah COPY gagal.

Dalam menghitung ukuran baris, Amazon Redshift secara internal menghitung karakter pipa (|) dua kali. Jika data input Anda berisi sejumlah besar karakter pipa, dimungkinkan untuk ukuran baris melebihi 4 MB bahkan jika blok data kurang dari 4 MB.

JSON [AS] 'json_option'

Sumber data dalam format JSON.

Format JSON didukung untuk COPY dari layanan dan protokol ini:

  • Amazon S3

  • SALIN dari Amazon EMR

  • COPY dari SSH

JSON tidak didukung untuk COPY dari DynamoDB.

Nilai yang valid untuk json_option adalah sebagai berikut:

  • 'auto'

  • 'auto ignorecase'

  • 's3://jsonpaths_file'

  • 'noshred'

Nilai default-nya 'auto'. Amazon Redshift tidak merusak atribut struktur JSON menjadi beberapa kolom saat memuat dokumen JSON.

Secara default, COPY mencoba untuk mencocokkan semua kolom dalam tabel target dengan kunci nama bidang JSON. Untuk memuat subset kolom, Anda dapat menentukan daftar kolom secara opsional. Jika kunci nama bidang JSON tidak semuanya huruf kecil, Anda dapat menggunakan 'auto ignorecase' opsi atau untuk secara eksplisit Berkas JSONPaths memetakan nama kolom ke kunci nama bidang JSON.

Jika kolom dalam tabel target dihilangkan dari daftar kolom, maka COPY memuat ekspresi kolom targetDEFAULT. Jika kolom target tidak memiliki default, COPY mencoba memuat NULL. Jika kolom disertakan dalam daftar kolom dan COPY tidak menemukan bidang yang cocok dalam data JSON, COPY mencoba memuat NULL ke kolom.

Jika COPY mencoba untuk menetapkan NULL ke kolom yang didefinisikan sebagai NOT NULL, perintah COPY gagal.

COPY memetakan elemen data dalam data sumber JSON ke kolom di tabel target. Ia melakukannya dengan mencocokkan kunci objek, atau nama, dalam pasangan nama-nilai sumber dengan nama kolom dalam tabel target.

Lihat detail berikut tentang setiap nilai json_option:

'otomatis'

Dengan opsi ini, pencocokan peka huruf besar/kecil. Nama kolom di tabel Amazon Redshift selalu huruf kecil, jadi saat Anda menggunakan 'auto' opsi, nama bidang JSON yang cocok juga harus huruf kecil.

'abaikan otomatis'

Dengan opsi ini, pencocokan tidak peka huruf besar/kecil. Nama kolom di tabel Amazon Redshift selalu huruf kecil, jadi saat Anda menggunakan 'auto ignorecase' opsi, nama bidang JSON yang sesuai dapat berupa huruf kecil, huruf besar, atau huruf campuran.

's3://jsonpaths_file '

Dengan opsi ini, COPY menggunakan file JSONPaths bernama untuk memetakan elemen data dalam data sumber JSON ke kolom di tabel target. s3://jsonpaths_fileArgumen harus berupa kunci objek Amazon S3 yang secara eksplisit mereferensikan satu file. Contohnya adalah 's3://mybucket/jsonpaths.txt '. Argumen tidak bisa menjadi key prefix. Untuk informasi selengkapnya tentang menggunakan file JsonPaths, lihat. Berkas JSONPaths

Dalam beberapa kasus, file yang ditentukan oleh jsonpaths_file memiliki awalan yang sama dengan jalur yang ditentukan oleh copy_from_s3_objectpath untuk file data. Jika demikian, COPY membaca file JSONPaths sebagai file data dan mengembalikan kesalahan. Misalnya, misalkan file data Anda menggunakan jalur objek s3://mybucket/my_data.json dan file JSONPaths Anda. s3://mybucket/my_data.jsonpaths Dalam hal ini, COPY mencoba memuat my_data.jsonpaths sebagai file data.

'hidung'

Dengan opsi ini, Amazon Redshift tidak merusak atribut struktur JSON menjadi beberapa kolom saat memuat dokumen JSON.

Berkas data JSON

File data JSON berisi satu set objek atau array. COPY memuat setiap objek JSON atau array ke dalam satu baris dalam tabel target. Setiap objek atau array yang sesuai dengan baris harus merupakan struktur tingkat akar yang berdiri sendiri; artinya, ia tidak boleh menjadi anggota struktur JSON lain.

Objek JSON dimulai dan diakhiri dengan tanda kurung kurung ({}) dan berisi kumpulan pasangan nama-nilai yang tidak berurutan. Setiap nama dan nilai yang dipasangkan dipisahkan oleh titik dua, dan pasangan dipisahkan dengan koma. Secara default, kunci objek, atau nama, dalam pasangan nama-nilai harus cocok dengan nama kolom yang sesuai dalam tabel. Nama kolom di tabel Amazon Redshift selalu huruf kecil, jadi kunci nama bidang JSON yang cocok juga harus huruf kecil. Jika nama kolom dan kunci JSON Anda tidak cocok, gunakan a Berkas JSONPaths untuk secara eksplisit memetakan kolom ke kunci.

Urutan dalam objek JSON tidak masalah. Nama apa pun yang tidak cocok dengan nama kolom diabaikan. Berikut ini menunjukkan struktur objek JSON sederhana.

{ "column1": "value1", "column2": value2, "notacolumn" : "ignore this value" }

Array JSON dimulai dan diakhiri dengan tanda kurung ([]), dan berisi kumpulan nilai yang dipisahkan oleh koma. Jika file data Anda menggunakan array, Anda harus menentukan file JSONPaths agar sesuai dengan nilai dengan kolom. Berikut ini menunjukkan struktur array JSON sederhana.

["value1", value2]

JSON harus dibentuk dengan baik. Misalnya, objek atau array tidak dapat dipisahkan dengan koma atau karakter lain kecuali spasi putih. String harus dilampirkan dalam karakter tanda kutip ganda. Karakter kutipan harus berupa tanda kutip sederhana (0x22), bukan tanda kutip miring atau “pintar”.

Ukuran maksimum objek atau array JSON tunggal, termasuk kawat gigi atau tanda kurung, adalah 4 MB. Ini berbeda dari ukuran baris maksimum. Jika ukuran maksimum objek atau array JSON tunggal terlampaui, bahkan jika ukuran baris yang dihasilkan kurang dari batas ukuran baris 4 MB, perintah COPY gagal.

Dalam menghitung ukuran baris, Amazon Redshift secara internal menghitung karakter pipa (|) dua kali. Jika data input Anda berisi sejumlah besar karakter pipa, dimungkinkan untuk ukuran baris melebihi 4 MB bahkan jika ukuran objek kurang dari 4 MB.

COPY dimuat \n sebagai karakter baris baru dan dimuat \t sebagai karakter tab. Untuk memuat garis miring terbalik, lepaskan dengan garis miring terbalik (). \\

COPY mencari sumber JSON yang ditentukan untuk objek atau array JSON yang terbentuk dengan baik dan valid. Jika COPY menemukan karakter non-spasi putih sebelum menemukan struktur JSON yang dapat digunakan, atau di antara objek atau array JSON yang valid, COPY mengembalikan kesalahan untuk setiap instance. Kesalahan ini dihitung dalam jumlah kesalahan MAXERROR. Ketika jumlah kesalahan sama atau melebihi MAXERROR, COPY gagal.

Untuk setiap kesalahan, Amazon Redshift merekam baris dalam tabel sistem STL_LOAD_ERRORS. Kolom LINE_NUMBER mencatat baris terakhir dari objek JSON yang menyebabkan kesalahan.

Jika IGNOREHEADER ditentukan, COPY mengabaikan jumlah baris yang ditentukan dalam data JSON. Karakter baris baru dalam data JSON selalu dihitung untuk perhitungan IGNOREHEADER.

COPY memuat string kosong sebagai bidang kosong secara default. Jika EMTTYASNULL ditentukan, COPY memuat string kosong untuk bidang CHAR dan VARCHAR sebagai NULL. String kosong untuk tipe data lain, seperti INT, selalu dimuat dengan NULL.

Opsi berikut tidak didukung dengan JSON:

  • CSV

  • PEMBATAS

  • MELARIKAN DIRI

  • FILLRECORD

  • FIXEDWIDTH

  • IGNOREBLANKLINES

  • NULL SEBAGAI

  • RASIO BACA

  • HAPUSQUOTES

Untuk informasi selengkapnya, lihat COPY dari format JSON. Untuk informasi lebih lanjut tentang struktur data JSON, kunjungi www.json.org.

Berkas JSONPaths

Jika Anda memuat dari data sumber berformat JSON atau Avro, secara default COPY memetakan elemen data tingkat pertama dalam data sumber ke kolom di tabel target. Ia melakukannya dengan mencocokkan setiap nama, atau kunci objek, dalam pasangan nama-nilai dengan nama kolom dalam tabel target.

Jika nama kolom dan kunci objek Anda tidak cocok, atau untuk memetakan ke tingkat yang lebih dalam dalam hierarki data, Anda dapat menggunakan file JSONPaths untuk secara eksplisit memetakan elemen data JSON atau Avro ke kolom. File JSONPaths memetakan elemen data JSON ke kolom dengan mencocokkan urutan kolom dalam tabel target atau daftar kolom.

File JSONPaths harus berisi hanya satu objek JSON (bukan array). Objek JSON adalah pasangan nama-nilai. Kunci objek, yang merupakan nama dalam pasangan nama-nilai, harus. "jsonpaths" Nilai dalam pasangan nama-nilai adalah array ekspresi JSONPath. Setiap ekspresi JSONPath mereferensikan satu elemen dalam hierarki data JSON atau skema Avro, mirip dengan bagaimana ekspresi XPath mengacu pada elemen dalam dokumen XHTML. Untuk informasi selengkapnya, lihat ekspresi JsonPath.

Untuk menggunakan file JSONPaths, tambahkan kata kunci JSON atau AVRO ke perintah COPY. Tentukan nama bucket S3 dan jalur objek dari file JSONPaths menggunakan format berikut.

COPY tablename FROM 'data_source' CREDENTIALS 'credentials-args' FORMAT AS { AVRO | JSON } 's3://jsonpaths_file';

s3://jsonpaths_fileNilai harus berupa kunci objek Amazon S3 yang secara eksplisit mereferensikan satu file, seperti. 's3://mybucket/jsonpaths.txt' Itu tidak bisa menjadi key prefix.

Dalam beberapa kasus, jika Anda memuat dari Amazon S3, file yang ditentukan oleh jsonpaths_file memiliki awalan yang sama dengan jalur yang ditentukan oleh copy_from_s3_objectpath untuk file data. Jika demikian, COPY membaca file JSONPaths sebagai file data dan mengembalikan kesalahan. Misalnya, misalkan file data Anda menggunakan jalur objek s3://mybucket/my_data.json dan file JSONPaths Anda. s3://mybucket/my_data.jsonpaths Dalam hal ini, COPY mencoba memuat my_data.jsonpaths sebagai file data.

Jika nama kunci adalah string selain"jsonpaths", perintah COPY tidak mengembalikan kesalahan, tetapi mengabaikan jsonpaths_file dan menggunakan argumen sebagai gantinya. 'auto'

Jika salah satu hal berikut terjadi, perintah COPY gagal:

  • JSON cacat.

  • Ada lebih dari satu objek JSON.

  • Karakter apa pun kecuali ruang putih ada di luar objek.

  • Elemen array adalah string kosong atau bukan string.

MAXERROR tidak berlaku untuk file JSONPaths.

File JSONPaths tidak boleh dienkripsi, bahkan jika opsi ditentukan. ENCRYPTED

Untuk informasi selengkapnya, lihat COPY dari format JSON.

ekspresi JsonPath

File JSONPaths menggunakan ekspresi JsonPath untuk memetakan bidang data ke kolom target. Setiap ekspresi JsonPath sesuai dengan satu kolom di tabel target Amazon Redshift. Urutan elemen array JSONPath harus sesuai dengan urutan kolom dalam tabel target atau daftar kolom, jika daftar kolom digunakan.

Karakter tanda kutip ganda diperlukan seperti yang ditunjukkan, baik untuk nama bidang maupun nilainya. Karakter tanda kutip harus berupa tanda kutip sederhana (0x22), bukan tanda kutip miring atau “pintar”.

Jika elemen objek yang direferensikan oleh ekspresi JSONPath tidak ditemukan dalam data JSON, COPY mencoba memuat nilai NULL. Jika objek yang direferensikan cacat, COPY mengembalikan kesalahan pemuatan.

Jika elemen array yang direferensikan oleh ekspresi JSONPath tidak ditemukan dalam data JSON atau Avro, COPY gagal dengan kesalahan berikut: Invalid JSONPath format: Not an array or index out of range. Hapus elemen array apa pun dari JSONPaths yang tidak ada dalam data sumber dan verifikasi bahwa array dalam data sumber terbentuk dengan baik. 

Ekspresi JsonPath dapat menggunakan notasi braket atau notasi titik, tetapi Anda tidak dapat mencampur notasi. Contoh berikut menunjukkan ekspresi JsonPath menggunakan notasi braket.

{ "jsonpaths": [ "$['venuename']", "$['venuecity']", "$['venuestate']", "$['venueseats']" ] }

Contoh berikut menunjukkan ekspresi JsonPath menggunakan notasi titik.

{ "jsonpaths": [ "$.venuename", "$.venuecity", "$.venuestate", "$.venueseats" ] }

Dalam konteks sintaks Amazon Redshift COPY, ekspresi JSONPath harus menentukan jalur eksplisit ke elemen nama tunggal dalam struktur data hierarkis JSON atau Avro. Amazon Redshift tidak mendukung elemen JSONPath apa pun, seperti karakter wildcard atau ekspresi filter, yang mungkin diselesaikan ke jalur ambigu atau beberapa elemen nama.

Untuk informasi selengkapnya, lihat COPY dari format JSON.

Menggunakan JSONPaths dengan Avro Data

Contoh berikut menunjukkan skema Avro dengan beberapa level.

{ "name": "person", "type": "record", "fields": [ {"name": "id", "type": "int"}, {"name": "guid", "type": "string"}, {"name": "isActive", "type": "boolean"}, {"name": "age", "type": "int"}, {"name": "name", "type": "string"}, {"name": "address", "type": "string"}, {"name": "latitude", "type": "double"}, {"name": "longitude", "type": "double"}, { "name": "tags", "type": { "type" : "array", "name" : "inner_tags", "items" : "string" } }, { "name": "friends", "type": { "type" : "array", "name" : "inner_friends", "items" : { "name" : "friends_record", "type" : "record", "fields" : [ {"name" : "id", "type" : "int"}, {"name" : "name", "type" : "string"} ] } } }, {"name": "randomArrayItem", "type": "string"} ] }

Contoh berikut menunjukkan file JSONPaths yang menggunakan AvroPath ekspresi untuk referensi skema sebelumnya.

{ "jsonpaths": [ "$.id", "$.guid", "$.address", "$.friends[0].id" ] }

Contoh JSONPaths mencakup elemen-elemen berikut:

jsonpath

Nama objek JSON yang berisi AvroPath ekspresi.

[ … ]

Tanda kurung melampirkan array JSON yang berisi elemen jalur.

$

Tanda dolar mengacu pada elemen root dalam skema Avro, yang merupakan array. "fields"

“$.id”,

Target AvroPath ekspresi. Dalam hal ini, target adalah elemen dalam "fields" array dengan nama"id". Ekspresi dipisahkan oleh koma.

“$.friends [0] .id”

Tanda kurung menunjukkan indeks array. Ekspresi JsonPath menggunakan pengindeksan berbasis nol, jadi ekspresi ini mereferensikan elemen pertama dalam array dengan "friends" nama. "id"

Sintaks skema Avro membutuhkan penggunaan bidang dalam untuk menentukan struktur tipe data record dan array. Bidang dalam diabaikan oleh AvroPath ekspresi. Misalnya, bidang "friends" mendefinisikan array bernama"inner_friends", yang pada gilirannya mendefinisikan catatan bernama. "friends_record" AvroPath Ekspresi untuk mereferensikan bidang "id" dapat mengabaikan bidang tambahan untuk mereferensikan bidang target secara langsung. AvroPath Ekspresi berikut mereferensikan dua bidang yang termasuk dalam "friends" array.

"$.friends[0].id" "$.friends[0].name"

Parameter format data kolumnar

Selain format data standar, COPY mendukung format data kolumnar berikut untuk COPY dari Amazon S3. COPY dari format kolumnar didukung dengan batasan tertentu. Untuk informasi selengkapnya, lihat COPY dari format data kolumnar.

ORC

Memuat data dari file yang menggunakan format file Optimized Row Columnar (ORC).

PARQUET

Memuat data dari file yang menggunakan format file Parket.