Anda dapat memanggil operasi CreateSelectObjectMeta untuk mendapatkan informasi tentang sebuah objek, seperti jumlah total baris dan jumlah split. Untuk objek CSV, Anda juga dapat memperoleh jumlah total kolom dalam objek tersebut saat memanggil operasi ini. Sebuah objek terdiri dari beberapa blok data, di mana setiap blok data sesuai dengan satu split. Split terdiri dari baris-baris yang berurutan. Jika informasi yang diminta tidak tersedia dalam objek CSV atau JSON, seluruh objek akan dipindai untuk menganalisis dan mencatat informasi sebelumnya. Informasi yang diperoleh pada pemanggilan API pertama digunakan ketika operasi dipanggil kembali, sehingga seluruh objek tidak perlu dipindai ulang.
Catatan penggunaan
Untuk memanggil operasi CreateSelectObjectMeta, Anda harus memiliki izin tulis pada objek tersebut.
Jika operasi berhasil, kode status HTTP 200 dikembalikan. Namun, jika objek bukan objek CSV atau JSON LINES yang valid, atau jika pemisah yang ditentukan tidak sesuai dengan objek CSV yang ada, kode status HTTP 400 dikembalikan.
Sintaksis
Operasi ini mendukung sintaksis permintaan berikut untuk objek CSV dan JSON.
Sintaksis permintaan untuk objek CSV
POST /samplecsv?x-oss-process=csv/meta <CsvMetaRequest> <InputSerialization> <CompressionType>None</CompressionType> <CSV> <RecordDelimiter>Karakter yang di-enkode Base64</RecordDelimiter> <FieldDelimiter>Karakter yang di-enkode Base64</FieldDelimiter> <QuoteCharacter>Karakter yang di-enkode Base64</QuoteCharacter> </CSV> </InputSerialization> <OverwriteIfExists>false|true</OverwriteIfExists> </CsvMetaRequest>
Sintaksis permintaan untuk objek JSON
POST /samplecsv?x-oss-process=json/meta <JsonMetaRequest> <InputSerialization> <CompressionType>None</CompressionType> <JSON> <Type>LINES</Type> </JSON> </InputSerialization> <OverwriteIfExists>false|true</OverwriteIfExists> </JsonMetaRequest>
Elemen permintaan
Elemen | Tipe | Deskripsi |
CsvMetaRequest | Container | Kontainer yang menyimpan permintaan CreateSelectObjectMeta untuk objek CSV. Node anak: InputSerialization Node induk: none |
JsonMetaRequest | Container | Kontainer yang menyimpan permintaan CreateSelectObjectMeta untuk objek JSON. Node anak: InputSerialization Node induk: none |
InputSerialization | Container | Opsional. Menentukan parameter serialisasi input. Node anak: CompressionType, CSV, dan JSON Node induk: CsvMetaRequest dan JsonMetaRequest |
OverwriteIfExists | bool | Opsional. Menentukan apakah akan menghitung ulang SelectMeta dan menimpa data yang ada. Nilai false menunjukkan bahwa hasil langsung dikembalikan jika SelectMeta sudah ada. Nilai default: false. Node anak: none Node induk: CsvMetaRequest dan JsonMetaRequest |
CompressionType | Enumerasi | Opsional. Jenis kompresi objek. Nilai valid: None. Node anak: none Node induk: InputSerialization |
RecordDelimiter | String | Opsional. Baris baru yang di-enkode Base64 yang ingin Anda gunakan untuk memisahkan baris dalam objek CSV. Nilai default: \n. Sebelum nilai elemen ini di-enkode, nilainya harus merupakan nilai ANSI dengan panjang hingga dua karakter. Contohnya, \n digunakan untuk menunjukkan baris baru dalam Java. Node anak: none Node induk: CSV |
FieldDelimiter | String | Opsional. Pemisah yang ingin Anda gunakan untuk memisahkan nilai dalam objek CSV. Nilai parameter ini harus di-enkode Base64. Nilai default: Sebelum nilai elemen ini di-enkode, nilainya harus merupakan nilai ANSI dengan panjang satu karakter. Contohnya, Node anak: none Node induk: CSV (input dan output) |
QuoteCharacter | String | Opsional. Karakter kutipan yang di-enkode Base64 yang ingin Anda gunakan dalam objek CSV. Nilai default: \". Dalam objek CSV, line feed dan pemisah kolom yang diapit tanda kutip diproses sebagai karakter normal. Sebelum nilai elemen ini di-enkode, nilainya harus merupakan nilai ANSI dengan panjang satu karakter. Contohnya, \" digunakan untuk menunjukkan tanda kutip dalam Java. Node anak: none Node induk: CSV (input) |
CSV | Container | Format objek CSV input. Node anak: RecordDelimiter, FieldDelimiter, dan QuoteCharacter Node induk: InputSerialization |
JSON | Container | Format objek JSON input. Node anak: Type Node induk: InputSerialization |
Type | Enumerasi | Tipe objek JSON. Nilai valid: LINES. |
Header respons
Mirip dengan SelectObject, hasil dari CreateSelectObjectMeta juga dikembalikan sebagai frame.
Tipe frame | Nilai | Format payload | Deskripsi |
Meta End Frame (CSV) | 8388614 | offset | total scanned bytes | status| splits count | rows count | columns count | error message <-8 bytes><------8 bytes------><--4bytes><--4 bytes--><--8 bytes><--4 bytes---><variable size> | Frame yang digunakan untuk melaporkan status akhir operasi CreateSelectObjectMeta.
|
Meta End Frame (JSON) | 8388615 | offset | total scanned bytes | status| splits count | rows count | error message <-8 bytes><------8 bytes------><--4bytes><--4 bytes--><--8 bytes><variable size> | Frame yang digunakan untuk melaporkan status akhir operasi CreateSelectObjectMeta.
|
Contoh permintaan
Contoh permintaan berikut digunakan untuk memanggil SelectObject untuk objek CSV dan JSON:
Contoh permintaan untuk objek CSV
POST /oss-select/bigcsv_normal.csv?x-oss-process=csv%2Fmeta HTTP/1.1 Date: Fri, 25 May 2018 23:06:41 GMT Content-Type: Authorization: OSS qn6q**************:77Dv**************** User-Agent: aliyun-sdk-dotnet/2.8.0.0(windows 16.7/16.7.0.0/x86;4.0.30319.42000) Content-Length: 309 Expect: 100-continue Connection: keep-alive Host: Host <?xml version="1.0"?> <CsvMetaRequest> <InputSerialization> <CSV> <RecordDelimiter>Cg==</RecordDelimiter> <FieldDelimiter>LA==</FieldDelimiter> <QuoteCharacter>Ig==</QuoteCharacter> </CSV> </InputSerialization> <OverwriteIfExisting>false</OverwriteIfExisting> </CsvMetaRequest>Contoh permintaan untuk objek JSON
POST /oss-select/sample.json?x-oss-process=json%2Fmeta HTTP/1.1 Date: Fri, 25 May 2018 23:06:41 GMT Content-Type: Authorization: OSS qn6q**************:77Dv**************** User-Agent: aliyun-sdk-dotnet/2.8.0.0(windows 16.7/16.7.0.0/x86;4.0.30319.42000) Content-Length: 309 Expect: 100-continue Connection: keep-alive Host: Host <?xml version="1.0"?> <JsonMetaRequest> <InputSerialization> <JSON> <Type>LINES</Type> </JSON> </InputSerialization> <OverwriteIfExisting>false</OverwriteIfExisting> </JsonMetaRequest>
ossutil
Untuk informasi lebih lanjut tentang perintah ossutil yang sesuai dengan operasi CreateSelectObjectMeta, lihat create-select-object-meta.