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, COPY perintah mengharapkan data sumber menjadi teks -8 yang dibatasi karakterUTF. 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:

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

Parameter format data
FORMAT[SEBAGAI]

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

CSV[QUOTE[AS] 'quote_character']

Memungkinkan penggunaan CSV format 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 CSV parameter 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.

CSVtidak dapat digunakan denganFIXEDWIDTH,REMOVEQUOTES, atauESCAPE.

QUOTE[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 QUOTE parameter untuk menentukan karakter tanda kutip selain tanda kutip ganda, Anda tidak perlu melepaskan tanda kutip ganda dalam bidang. QUOTEParameter hanya dapat digunakan dengan CSV parameter. Kata kunci AS adalah opsional.

DELIMITER[AS] ['delimiter_char']

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

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. FIXEDWIDTHtidak dapat digunakan dengan CSV atauDELIMITER. Di Amazon Redshift, panjang CHAR dan VARCHAR kolom 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[SIMPLIFY[AUTO] ['toleransi']]

Memungkinkan penggunaan SHAPEFILE format 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 denganFIXEDWIDTH,REMOVEQUOTES, atauESCAPE.

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

SIMPLIFY[toleransi]

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

SIMPLIFYAUTO[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 COPYmenerima 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'

Default-nya adalah 'auto'.

COPYsecara 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, hanya COPY mengenali bidang tingkat pertama, atau bidang luar, dalam struktur.

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

Secara default, COPY upaya 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 coba muatNULL. 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 NOTNULL, COPY perintah gagal.

Avro Skema

File data sumber Avro mencakup skema yang mendefinisikan struktur data. COPYmembaca 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 JSON format. JSONObjek tingkat atas berisi tiga pasangan nama-nilai dengan nama, atau kunci,,"name", "type" dan. "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 diabaikan. Pesanan tidak masalah. Pada contoh sebelumnya, COPY peta ke nama kolomid,guid,name, danaddress.

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

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 JSON representasi dari data. COPYmemuat tipe data Avro enum sebagai string, di mana konten adalah nama tipe. Sebagai contoh, lihat COPYdari JSON format.

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 blok data Avro tunggal terlampaui, bahkan jika ukuran baris yang dihasilkan kurang dari batas ukuran baris 4 MB, perintah gagal. COPY

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 JSON format.

JSONformat didukung untuk COPY dari layanan dan protokol ini:

  • Amazon S3

  • COPYdari Amazon EMR

  • COPYdari SSH

JSONtidak didukung untuk COPY dari DynamoDB.

Nilai yang valid untuk json_option adalah sebagai berikut:

  • 'auto'

  • 'auto ignorecase'

  • 's3://jsonpaths_file'

  • 'noshred'

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

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

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

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

COPYmemetakan elemen data dalam data JSON sumber 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 JSON bidang 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 JSON bidang yang sesuai dapat berupa huruf kecil, huruf besar, atau huruf campuran.

's3://jsonpaths_file '

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

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 JSONPaths file sebagai file data dan mengembalikan kesalahan. Misalnya, misalkan file data Anda menggunakan path objek s3://amzn-s3-demo-bucket/my_data.json dan JSONPaths file Andas3://amzn-s3-demo-bucket/my_data.jsonpaths. Dalam hal ini, COPY upaya untuk memuat my_data.jsonpaths sebagai file data.

'hidung'

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

JSONberkas data

File JSON data berisi satu set objek atau array. COPYmemuat setiap JSON objek atau array menjadi satu baris di 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 lain. JSON

Sebuah JSON objek 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 JSON bidang yang cocok juga harus huruf kecil. Jika nama kolom dan JSON kunci Anda tidak cocok, gunakan a JSONPathsberkas untuk secara eksplisit memetakan kolom ke kunci.

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

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

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

["value1", value2]

JSONHarus terbentuk 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 satu JSON objek atau array, termasuk kawat gigi atau tanda kurung, adalah 4 MB. Ini berbeda dari ukuran baris maksimum. Jika ukuran maksimum dari satu JSON objek atau array terlampaui, bahkan jika ukuran baris yang dihasilkan kurang dari batas ukuran baris 4 MB, perintah gagal. COPY

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.

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

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

Untuk setiap kesalahan, Amazon Redshift merekam baris di tabel ERRORS sistem STL _ LOAD _. NUMBERKolom LINE _ mencatat baris terakhir dari JSON objek yang menyebabkan kesalahan.

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

COPYmemuat string kosong sebagai bidang kosong secara default. Jika EMPTYASNULL ditentukan, COPY memuat string kosong untuk CHAR dan VARCHAR bidang sebagaiNULL. String kosong untuk tipe data lain, sepertiINT, selalu dimuat denganNULL.

Opsi berikut tidak didukung denganJSON:

  • CSV

  • DELIMITER

  • ESCAPE

  • FILLRECORD

  • FIXEDWIDTH

  • IGNOREBLANKLINES

  • NULLSEBAGAI

  • READRATIO

  • REMOVEQUOTES

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

JSONPathsberkas

Jika Anda memuat dari data sumber JSON yang diformat 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 tidak cocok, atau untuk memetakan ke tingkat yang lebih dalam dalam hierarki data, Anda dapat menggunakan JSONPaths file untuk secara eksplisit memetakan JSON atau elemen data Avro ke kolom. JSONPathsFile memetakan elemen JSON data ke kolom dengan mencocokkan urutan kolom dalam tabel target atau daftar kolom.

JSONPathsFile harus berisi hanya satu JSON objek (bukan array). JSONObjek 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 JSONPath ekspresi mereferensikan satu elemen dalam hierarki JSON data atau skema Avro, mirip dengan bagaimana XPath ekspresi mengacu pada elemen dalam dokumen. XML Untuk informasi selengkapnya, lihat JSONPathekspresi.

Untuk menggunakan JSONPaths file, tambahkan AVRO kata kunci JSON atau ke COPY perintah. Tentukan nama bucket S3 dan path objek JSONPaths file 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://amzn-s3-demo-bucket/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 JSONPaths file sebagai file data dan mengembalikan kesalahan. Misalnya, misalkan file data Anda menggunakan path objek s3://amzn-s3-demo-bucket/my_data.json dan JSONPaths file Andas3://amzn-s3-demo-bucket/my_data.jsonpaths. Dalam hal ini, COPY upaya untuk memuat my_data.jsonpaths sebagai file data.

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

Jika salah satu dari berikut ini terjadi, COPY perintah gagal:

  • JSONItu cacat.

  • Ada lebih dari satu JSON objek.

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

  • Elemen array adalah string kosong atau bukan string.

MAXERRORtidak berlaku untuk JSONPaths file.

JSONPathsFile tidak boleh dienkripsi, bahkan jika ENCRYPTED opsi ditentukan.

Untuk informasi selengkapnya, lihat COPYdari JSON format.

JSONPathekspresi

JSONPathsFile menggunakan JSONPath ekspresi untuk memetakan bidang data ke kolom target. Setiap JSONPath ekspresi sesuai dengan satu kolom di tabel target Amazon Redshift. Urutan elemen JSONPath array 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 JSONPath ekspresi tidak ditemukan dalam JSON data, COPY mencoba memuat NULL nilai. Jika objek direferensikan cacat, COPY mengembalikan kesalahan beban.

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

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

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

Contoh berikut menunjukkan JSONPath ekspresi menggunakan notasi titik.

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

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

Untuk informasi selengkapnya, lihat COPYdari JSON format.

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 JSONPaths file yang menggunakan AvroPath ekspresi untuk referensi skema sebelumnya.

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

JSONPathsContohnya meliputi elemen-elemen berikut:

jsonpaths

Nama JSON objek yang berisi AvroPath ekspresi.

[ … ]

Tanda kurung melampirkan JSON array 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. JSONPathekspresi menggunakan pengindeksan berbasis nol, jadi ekspresi ini merujuk elemen pertama dalam "friends" array dengan 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. COPYdari format kolumnar didukung dengan batasan tertentu. Untuk informasi selengkapnya, lihat COPYdari 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.