全部产品
Search
文档中心

Object Storage Service:SelectObject

更新时间:Jun 26, 2025

Menjalankan pernyataan SQL untuk melakukan operasi pada objek dan mengembalikan hasil eksekusi.

Catatan penggunaan

  • Anda harus memiliki izin baca pada objek.

  • Jika pernyataan SQL dijalankan dengan benar, kode status HTTP 206 akan dikembalikan. Jika pernyataan SQL tidak valid atau tidak dapat mencocokkan objek yang ada, kode status HTTP 400 akan dikembalikan.

  • Biaya akan dikenakan berdasarkan ukuran objek yang dipindai saat Anda memanggil operasi SelectObject. Untuk informasi lebih lanjut, lihat Biaya Pemrosesan Data.

Sintaks permintaan

Operasi ini mendukung sintaks permintaan berikut untuk objek CSV dan JSON.

  • Sintaks permintaan untuk objek CSV

    POST /object?x-oss-process=csv/select HTTP/1.1 
    HOST: BucketName.oss-cn-hangzhou.aliyuncs.com 
    Date: waktu GMT
    Content-Length: PanjangKonten
    Content-MD5: NilaiMD5 
    Authorization: TandaTangan
    <?xml  version="1.0"  encoding="UTF-8"?>
    <SelectRequest>    
        <Expression>Pernyataan SQL yang di-enkode Base64. Contoh: c2VsZWN0IGNvdW50KCopIGZyb20gb3Nzb2JqZWN0IHdoZXJlIF80ID4gNDU=</Expression>
        <InputSerialization>
            <CompressionType>None|GZIP</CompressionType>
            <CSV>            
                <FileHeaderInfo>
                    NONE|IGNORE|USE
                </FileHeaderInfo>
                <RecordDelimiter>Karakter yang di-enkode Base64</RecordDelimiter>
                <FieldDelimiter>Karakter yang di-enkode Base64</FieldDelimiter>
                <QuoteCharacter>Karakter yang di-enkode Base64</QuoteCharacter>
                <CommentCharacter>Karakter yang di-enkode Base64</CommentCharacter>
                <Range>line-range=start-end|split-range=start-end</Range>
                <AllowQuotedRecordDelimiter>>true|false</AllowQuotedRecordDelimiter>
            </CSV>   
            </InputSerialization>
            <OutputSerialization>
                 <CSV>
                 <RecordDelimiter>Karakter yang di-enkode Base64</RecordDelimiter>
                 <FieldDelimiter>Karakter yang di-enkode Base64</FieldDelimiter>
    
                </CSV>
                <KeepAllColumns>false|true</KeepAllColumns>
                <OutputRawData>false|true</OutputRawData>
                <EnablePayloadCrc>true</EnablePayloadCrc>
                <OutputHeader>false</OutputHeader>
           </OutputSerialization>
         <Options>
            <SkipPartialDataRecord>false</SkipPartialDataRecord>
            <MaxSkippedRecordsAllowed>
            jumlah maksimum catatan yang dilewati
            </MaxSkippedRecordsAllowed>
        </Options>
    </SelectRequest>
  • Sintaks permintaan untuk objek JSON

    POST /object?x-oss-process=json/select HTTP/1.1 
    HOST: BucketName.oss-cn-hangzhou.aliyuncs.com 
    Date: waktu GMT
    Content-Length: PanjangKonten
    Content-MD5: NilaiMD5 
    Authorization: TandaTangan
    <?xml  version="1.0"  encoding="UTF-8"?>
    <SelectRequest>    
        <Expression>
            Pernyataan SQL yang di-enkode Base64. Contoh: c2VsZWN0IGNvdW50KCopIGZyb20gb3Nzb2JqZWN0IHdoZXJl IF80ID4gNDU=
        </Expression>
        <InputSerialization>
            <CompressionType>None|GZIP</CompressionType>
            <JSON>
                <Type>DOCUMENT|LINES</Type>
                <Range>
                line-range=start-end|split-range=start-end
                </Range>
                <ParseJsonNumberAsString> true|false
                </ParseJsonNumberAsString>
            </JSON>
        </InputSerialization>
        <OutputSerialization>
            <JSON>
                <RecordDelimiter>
                    Delimeter rekaman Base64
                </RecordDelimiter>
            </JSON>
            <OutputRawData>false|true</OutputRawData>
                     <EnablePayloadCrc>true</EnablePayloadCrc>
        </OutputSerialization>
        <Options>
            <SkipPartialDataRecord>
                false|true
            </SkipPartialDataRecord>
            <MaxSkippedRecordsAllowed>
                jumlah maksimum catatan yang dilewati
               </MaxSkippedRecordsAllowed>
            </Options>
    </SelectRequest>

Elemen permintaan

Elemen

Tipe

Deskripsi

SelectRequest

Container

Kontainer yang menyimpan permintaan SelectObject.

Node anak: Expression, InputSerialization, dan OutputSerialization

Node induk: none

Expression

String

Pernyataan SQL yang di-enkode Base64.

Node anak: none

Node induk: SelectRequest

InputSerialization

Container

Opsional. Elemen ini menentukan parameter serialisasi input.

Node anak: CompressionType, CSV, dan JSON

Node induk: SelectRequest

OutputSerialization

Container

Opsional. Elemen ini menentukan parameter serialisasi output.

Node anak: CSV, JSON, dan OutputRawData

Node induk: SelectRequest

CSV(InputSerialization)

Container

Opsional. Elemen ini menentukan parameter serialisasi input saat objek CSV di-query.

Node anak: FileHeaderInfo, RecordDelimiter, FieldDelimiter, QuoteCharacter, CommentCharacter, dan Range

Node induk: InputSerialization

CSV(OutputSerialization)

Container

Opsional. Elemen ini menentukan parameter serialisasi output saat objek CSV di-query.

Node anak: RecordDelimiter dan FieldDelimiter

Node induk: OutputSerialization

JSON(InputSerialization)

Container

Opsional. Elemen ini menentukan parameter serialisasi input saat objek JSON di-query.

Node anak: Type, Range, dan ParseJsonNumberAsString

JSON(OutputSerialization)

Container

Opsional. Elemen ini menentukan parameter serialisasi output saat objek JSON di-query.

Node anak: RecordDelimiter

Type

Enumerasi

Tipe objek JSON input. Nilai valid: DOCUMENT dan LINES.

OutputRawData

Boolean

Opsional. Elemen ini menentukan apakah akan mengekspor data mentah. Nilai default: false.

Node anak: none

Node induk: OutputSerialization

Catatan
  • Jika Anda menentukan OutputRawData dalam permintaan, Object Storage Service (OSS) mengembalikan data berdasarkan elemen permintaan.

  • Jika Anda tidak menentukan OutputRawData dalam permintaan, OSS secara otomatis memilih format dan mengembalikan data dalam format terpilih dalam respons.

  • Jika Anda mengatur OutputRawData ke true dan butuh waktu lama bagi pernyataan SQL yang dikirim untuk mengembalikan data, permintaan HTTP mungkin habis masa waktunya.

CompressionType

Enumerasi

Tipe kompresi objek. Nilai valid: None dan GZIP.

Node anak: none

Node induk: InputSerialization

FileHeaderInfo

Enumerasi

Opsional. Elemen ini menentukan informasi header tentang objek CSV.

Nilai valid:

  • Use: Objek CSV berisi informasi header. Anda dapat menggunakan nama kolom dalam objek CSV sebagai nama kolom dalam operasi SelectObject.

  • Ignore: Objek CSV berisi informasi header. Nama kolom dalam objek CSV tidak dapat digunakan sebagai nama kolom dalam operasi SelectObject.

  • None: Objek CSV tidak berisi informasi header. Ini adalah nilai default.

Node anak: none

Node induk: CSV (input)

RecordDelimiter

String

Opsional. Elemen ini menentukan karakter pindah baris yang di-enkode Base64. Nilai default: \n. Sebelum nilai elemen ini di-enkode, nilainya harus merupakan nilai ANSI hingga dua karakter panjangnya. Sebagai contoh, \n digunakan untuk menunjukkan pindah baris di Java.

Node anak: none

Node induk: CSV (input dan output) dan JSON (output)

FieldDelimiter

String

Opsional. Elemen ini menentukan delimeter yang ingin Anda gunakan untuk memisahkan kolom dalam objek CSV. Nilai elemen ini harus di-enkode Base64. Nilai default: ,. Sebelum nilai elemen ini di-enkode, nilainya harus merupakan nilai ANSI satu karakter panjangnya. Sebagai contoh, , digunakan untuk menunjukkan koma di Java.

Node anak: none

Node induk: CSV (input dan output)

QuoteCharacter

String

Opsional. Elemen ini menentukan karakter kutipan yang di-enkode Base64 yang ingin Anda gunakan dalam objek CSV. Nilai default: \". Dalam objek CSV, pindah baris dan delimeter kolom yang diapit tanda kutip diproses sebagai karakter normal. Sebelum nilai elemen ini di-enkode, nilainya harus merupakan nilai ANSI satu karakter panjangnya. Sebagai contoh, \" digunakan untuk menunjukkan karakter kutipan di Java.

Node anak: none

Node induk: CSV (input)

CommentCharacter

String

Karakter komentar yang ingin Anda gunakan dalam objek CSV. Nilai elemen ini harus di-enkode Base64. Elemen ini kosong secara default.

Range

String

Opsional. Elemen ini menentukan rentang query. Metode query berikut didukung:

Catatan

SelectMeta harus dibuat untuk objek yang di-query berdasarkan Range.

  • Query berdasarkan baris: line-range=start-end. Sebagai contoh, line-range=10-20 menunjukkan bahwa data dari baris 10 hingga baris 20 dipindai.

  • Query berdasarkan split: split-range=start-end. Sebagai contoh, split-range=10-20 menunjukkan bahwa data dari split 10 hingga split 20 dipindai.

Parameter start dan end bersifat inklusif. Kedua parameter sebelumnya menggunakan format yang sama dengan parameter range dalam range get.

Parameter ini hanya dapat digunakan jika objek dalam format CSV atau jika tipe JSON adalah LINES.

Node anak: none

Node induk: CSV (input) dan JSON (output)

KeepAllColumns

bool

Opsional. Elemen ini menentukan apakah semua kolom dalam objek CSV disertakan dalam respons. Nilai default: false. Hanya kolom yang disertakan dalam klausa SELECT yang berisi nilai. Kolom dalam respons diurutkan dalam urutan menaik nomor kolom. Contoh:

select _5, _1 from ossobject.

Jika Anda mengatur KeepAllColumns ke true dan enam kolom disertakan dalam objek CSV, hasil berikut dikembalikan untuk klausa SELECT sebelumnya:

Nilai kolom 1,,,,Nilai kolom 5,\n

Node anak: none

Node induk: OutputSerialization (CSV)

EnablePayloadCrc

bool

Nilai CRC-32 untuk verifikasi setiap frame. Klien dapat menghitung nilai CRC-32 dari setiap payload dan membandingkannya dengan nilai CRC-32 yang disertakan untuk memverifikasi integritas data.

Node anak: none

Node induk: OutputSerialization

Options

Container

Parameter opsional lainnya.

Node anak: SkipPartialDataRecord dan MaxSkippedRecordsAllowed

Node induk: SelectRequest

OutputHeader

bool

Menentukan apakah informasi header tentang objek CSV disertakan di awal respons.

Nilai default: false.

Node anak: none

Node induk: OutputSerialization

SkipPartialDataRecord

bool

Menentukan apakah akan mengabaikan baris di mana data hilang. Jika parameter ini diatur ke false, OSS memproses data baris sebagai null tanpa melaporkan kesalahan. Jika parameter ini diatur ke true, baris yang tidak berisi data dilewati. Jika jumlah baris yang dilewati telah melebihi jumlah maksimum baris yang dapat dilewati, OSS melaporkan kesalahan dan menghentikan pemrosesan data.

Nilai default: false.

Node anak: none

Node induk: Options

MaxSkippedRecordsAllowed

Int

Jumlah maksimum baris yang dapat dilewati. Jika baris tidak sesuai dengan tipe yang ditentukan dalam pernyataan SQL, atau jika satu atau lebih kolom dalam baris hilang dan nilai SkipPartialDataRecord adalah true, baris tersebut dilewati. Jika jumlah baris yang dilewati telah melebihi nilai parameter ini, OSS melaporkan kesalahan dan menghentikan pemrosesan data.

Catatan

Jika baris dalam objek CSV tidak diformat dengan benar, OSS menghentikan pemrosesan data dan melaporkan kesalahan karena kesalahan format ini dapat mengakibatkan penguraian objek CSV yang salah. Sebagai contoh, kolom dalam baris mencakup karakter kutipan ganjil berturut-turut. Parameter ini dapat digunakan untuk memodifikasi toleransi terhadap data yang tidak teratur tetapi tidak dapat dikonfigurasikan untuk objek CSV yang tidak valid.

Nilai default: 0.

Node anak: none

Node induk: Options

ParseJsonNumberAsString

bool

Menentukan apakah akan mengurai bilangan bulat dan pecahan dalam objek JSON menjadi string. Presisi bilangan pecahan dalam objek JSON berkurang saat bilangan tersebut diurai. Jika Anda ingin mempertahankan data mentah, kami sarankan Anda mengatur parameter ini ke true. Untuk menggunakan bilangan yang diurai dalam perhitungan, Anda dapat menggunakan fungsi CAST dalam SQL untuk mengonversi data yang diurai ke tipe yang diperlukan seperti INT, DOUBLE, atau DECIMAL.

Nilai default: false.

Node anak: none

Node induk: JSON

AllowQuotedRecordDelimiter

bool

Menentukan apakah objek CSV dapat berisi pindah baris dalam tanda kutip (").

Sebagai contoh, jika nilai kolom adalah "abc\ndef" dan \n adalah pindah baris, atur parameter ini ke true. Jika parameter ini diatur ke false, Anda dapat memanggil operasi SelectObject untuk menentukan rentang dalam header permintaan untuk melakukan query multipart yang lebih efisien.

Nilai default: true.

Node anak: none

Node induk: InputSerialization

Badan respons

  • Jika kode status HTTP dalam respons adalah 4xx, permintaan gagal melewati pemeriksaan sintaks SQL atau mengandung kesalahan. Dalam hal ini, format badan pesan kesalahan yang dikembalikan sama dengan format pesan kesalahan untuk permintaan GetObject.

  • Jika kode status HTTP dalam respons adalah 5xx, terjadi kesalahan server internal. Dalam hal ini, format badan pesan kesalahan yang dikembalikan sama dengan format pesan kesalahan untuk permintaan GetObject.

  • Kode status HTTP 206 dikembalikan jika operasi berhasil.

    • Jika nilai header x-oss-select-output-raw adalah true, data objek kecuali data berbasis frame dikembalikan. Klien dapat memperoleh data dengan cara yang sama seperti operasi GetObject.

    • Jika nilai x-oss-select-output-raw adalah false, hasilnya dikembalikan sebagai frame.

  • Frame dikembalikan dalam format Version|Frame-Type | Payload Length | Header Checksum | Payload | Payload Checksum<1 byte><--3 bytes--><---4 bytes----><-------4 bytes--><variable><----4bytes---------->.

    Catatan

    Nilai Checksum dalam frame adalah CRC-32. Semua bilangan bulat dalam frame adalah big-endian. Saat ini, nilai Version adalah 1.

Tipe Frame

Tabel berikut menjelaskan tiga tipe frame yang didukung oleh SelectObject.

Tipe frame

Nilai

Format payload

Deskripsi

Data Frame

8388609

offset | data<-8 bytes><---variable->

Data yang dikembalikan untuk permintaan SelectObject. Nilai parameter offset adalah bilangan bulat 8-bit yang menunjukkan lokasi pemindaian saat ini (offset dari header file). Parameter ini digunakan untuk melaporkan kemajuan operasi.

Continuous Frame

8388612

offset<----8 bytes-->

Frame yang digunakan untuk melaporkan kemajuan operasi dan mempertahankan koneksi HTTP. Jika tidak ada data yang dikembalikan untuk permintaan query dalam 5 detik, frame kontinu dikembalikan.

End Frame

8388613

offset | total scanned bytes | http status code | error message<--8bytes-><--8bytes---------><----4 bytes--------><-variable------>

Frame akhir digunakan untuk mengembalikan status akhir operasi, termasuk byte yang dipindai dan pesan kesalahan yang mungkin terjadi.

  • Parameter offset menunjukkan lokasi offset akhir setelah pemindaian selesai.

  • Parameter total scanned bytes menunjukkan ukukuran data yang dipindai.

  • Parameter http status code menunjukkan status akhir operasi.

    Catatan

    SelectObject adalah operasi aliran. Hanya blok data pertama yang diproses saat header respons dikirim. Jika blok data pertama cocok dengan pernyataan SQL, kode status HTTP dalam header respons adalah 206. Kode status ini menunjukkan bahwa operasi berhasil. Namun, kode status akhir mungkin bukan 206 karena blok data berikutnya mungkin tidak valid. Kode status dalam header respons tidak dapat diubah. Kode status HTTP disertakan dalam frame akhir untuk menunjukkan status akhir operasi. Klien menggunakan kode status yang disertakan dalam frame akhir untuk menentukan apakah operasi berhasil.

  • Parameter error message menunjukkan pesan kesalahan, termasuk nomor setiap baris yang dilewati dan jumlah total baris yang dilewati.

    Catatan

    Format pesan kesalahan yang disertakan dalam frame akhir adalah ErrorCodes.DetailMessage. Bagian ErrorCodes berisi satu atau lebih kode kesalahan yang dipisahkan dengan koma (,). ErrorCodes dan DetailMessage dipisahkan dengan titik (.).

Permintaan contoh

Permintaan contoh berikut digunakan untuk memanggil SelectObject untuk objek CSV dan JSON:

  • Permintaan contoh untuk objek CSV

    POST /oss-select/bigcsv_normal.csv?x-oss-process=csv%2Fselect HTTP/1.1
    Date: Fri, 25 May 2018 22:11:39 GMT
    Content-Type:
    Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e
    User-Agent: aliyun-sdk-dotnet/2.8.0.0(windows 16.7/16.7.0.0/x86;4.0.30319.42000)
    Content-Length: 748
    Expect: 100-continue
    Connection: keep-alive
    Host: nama host
    <?xml version="1.0"?>
    <SelectRequest>
        <Expression>c2VsZWN0IGNvdW50KCopIGZyb20gb3Nzb2JqZWN0IHdoZXJlIF80ID4gNDU=
        </Expression>
        <InputSerialization>
            <Compression>None</Compression>
            <CSV>
                <FileHeaderInfo>Ignore</FileHeaderInfo>
                <RecordDelimiter>Cg==</RecordDelimiter>
                <FieldDelimiter>LA==</FieldDelimiter>
                <QuoteCharacter>Ig==</QuoteCharacter>
                <CommentCharacter>Iw==</CommentCharacter/>
            </CSV>
        </InputSerialization>
        <OutputSerialization>
            <CSV>
                <RecordDelimiter>Cg==</RecordDelimiter>
                <FieldDelimiter>LA==</FieldDelimiter>
                <QuoteCharacter>Ig==</QuoteCharacter>            
            </CSV>
            <KeepAllColumns>false</KeepAllColumns>
                <OutputRawData>false</OutputRawData>
        </OutputSerialization>
    </SelectRequest>
  • Permintaan contoh untuk objek JSON

    POST /oss-select/sample_json.json?x-oss-process=json%2Fselect HTTP/1.1
    Host: nama host
    Accept-Encoding: identity
    User-Agent: aliyun-sdk-python/2.6.0(Darwin/16.7.0/x86_64;3.5.4)
    Accept: */*
    Connection: keep-alive
    date: Mon, 10 Dec 2018 18:28:11 GMT
    authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e
    Content-Length: 317
    <SelectRequest>
        <Expression>c2VsZWN0ICogZnJvbSBvc3NvYmplY3Qub2JqZWN0c1sqXSB3aGVyZSBwYXJ0eSA9ICdEZW1vY3JhdCc=
        </Expression>
        <InputSerialization>
        <JSON>
            <Type>DOCUMENT</Type>
        </JSON>
        </InputSerialization>
        <OutputSerialization>
        <JSON>
            <RecordDelimiter>LA==</RecordDelimiter>
        </JSON>
        </OutputSerialization>
        <Options />
    </SelectRequest>

Ekspresi reguler dalam pernyataan SQL

Dalam contoh ini, SELECT select-list from table where_opt limit_opt menunjukkan ekspresi reguler dalam pernyataan SQL.

Penting

Kata kunci berikut tidak dapat diubah: SELECT dan WHERE.

select_list: nama kolom
            | indeks kolom (Contoh: _1, _2. Indeks kolom hanya berlaku untuk objek CSV.)
            | jalur json (Contoh: s.contacts.firstname. Jalur json hanya berlaku untuk objek JSON.)
            | fungsi(indeks kolom | nama kolom)
            | fungsi(jalur json) (hanya berlaku untuk objek JSON.)
            | select_list AS alias
Catatan

Fungsi berikut didukung: AVG, SUM, MAX, MIN, COUNT, dan CAST (fungsi konversi tipe). Anda hanya dapat menentukan asterisk (*) setelah COUNT.

table: OSSOBJECT

      | OSSOBJECT jalur json (hanya berlaku untuk objek JSON.)

Jika Anda ingin melakukan operasi pada objek CSV, Anda harus menggunakan tabel OSSOBJECT. Jika Anda ingin melakukan operasi pada objek JSON termasuk objek tipe DOCUMENT dan LINES, Anda dapat menentukan jalur json setelah OSSOBJECT. 

jalur json: ['string '] (Tanda kutip yang digunakan untuk mengapit string dapat dihapus jika string tidak mencakup spasi atau asterisk (*). Dalam hal ini, ['string '] setara dengan .'string '.)

          | [n] (menunjukkan elemen ke-n dalam array. Nilai n dihitung mulai dari 0.)

          | [*] (menunjukkan elemen anak dalam array atau objek.)

          | .'string ' (Tanda kutip yang digunakan untuk mengapit string dapat dihapus jika string tidak mencakup spasi atau asterisk (*).)

          | jalur json jalur json (Anda dapat menggabungkan beberapa elemen dalam jalur json seperti [n].property1.attributes[*].)
Where_opt:
| WHERE expr
expr:
| nilai literal
| nama kolom
| indeks kolom
| jalur json (hanya berlaku untuk objek JSON.)
| expr op expr
| expr OR expr
| expr AND expr
| expr IS NULL
| expr IS NOT NULL
| (nama kolom | indeks kolom | jalur json) IN (nilai1, nilai2, ...)
| (nama kolom | indeks kolom | jalur json) NOT in (nilai1, nilai2, ...)
| (nama kolom | indeks kolom | jalur json) between nilai1 and nilai2
| NOT (expr)
| expr op expr
| (expr)
| cast (indeks kolom |nama kolom | jalur json | literal as INT|DOUBLE|)
  • op: mencakup operator berikut: >, <, >=, <=, !=, =, ,, LIKE, +, -, *, /, %, dan ||.

  • cast: Anda dapat menggunakan fungsi CAST untuk mengonversi data dalam kolom dari satu tipe ke tipe lain.

  • Kombinasi fungsi agregasi dan limit: Select avg(cast(_1 as int)) from ossobject limit 100. Pernyataan sebelumnya menghitung nilai rata-rata kolom pertama dalam 100 baris pertama. Fungsi ini berbeda dari pernyataan yang didukung oleh MySQL karena hanya satu baris yang dikembalikan untuk fungsi agregasi dalam operasi SelectObject. Oleh karena itu, tidak ada batasan yang dikonfigurasikan untuk ukuran data keluaran. Operasi limit dilakukan sebelum operasi agregasi saat Anda memanggil SelectObject.

Batasan pada pernyataan SQL

Berikut adalah batasan yang berlaku untuk pernyataan SQL:

  • Hanya objek teks yang dikodekan dalam UTF-8 dan objek teks UTF-8 yang dikompresi dalam format GZIP yang didukung. Format deflate tidak didukung untuk objek GZIP.

  • Hanya satu objek yang dapat di-query saat menggunakan pernyataan SQL. Klausul berikut tidak didukung: JOIN, ORDER BY, GROUP BY, dan HAVING.

  • Klausul WHERE tidak dapat mencakup kondisi agregasi. Sebagai contoh, klausa berikut tidak diizinkan: WHERE max(cast(age as int)) > 100.

  • Maksimum 1.000 kolom dapat ditentukan untuk pernyataan SQL. Nama kolom dalam pernyataan SQL dapat memiliki panjang hingga 1.024 byte.

  • Maksimum lima wildcard (%) didukung dalam klausa LIKE. Tanda persen (%) dan asterisk (*) adalah wildcard yang menunjukkan nol atau lebih karakter. Kata kunci ESCAPE didukung untuk klausa SQL LIKE, dan digunakan untuk mengonversi karakter khusus seperti tanda persen (%), asterisk (*), dan tanda tanya (?) menjadi string normal.

  • Maksimum 1.024 konstanta didukung dalam klausa IN.

  • Proyeksi yang ditentukan setelah SELECT dapat berupa nama kolom, indeks kolom CSV (seperti _1 atau _2), fungsi agregasi, atau fungsi CAST. Ekspresi lainnya tidak didukung, seperti select _1 + _2 from ossobject.

  • Ukuran kolom maksimum dan ukuran baris untuk objek CSV adalah 256 KB.

  • Jalur JSON yang ditentukan setelah FROM mendukung node JSON yang ukuran maksimumnya adalah 512 KB. Jalur tersebut dapat berisi hingga 10 level, dan array dapat berisi hingga 5.000 elemen. Bidang yang ditentukan setelah SELECT dan WHERE harus berasal dari node yang sesuai dengan jalur JSON yang ditentukan setelah FROM.

  • Dalam pernyataan SQL objek JSON, ekspresi SELECT atau WHERE tidak dapat mencakup wildcard array ([*]). Wildcard array ([*]) dapat disertakan hanya dalam jalur JSON yang ditentukan setelah FROM. Sebagai contoh, Anda dapat menggunakan select * from ossobject.contacts[*] sebagai ganti select s.contacts[*] from ossobject s.

  • Ukuran maksimum pernyataan SQL adalah 16 KB. Hingga 20 ekspresi dapat ditambahkan setelah WHERE. Setiap pernyataan mendukung hingga 10 level dan 100 operasi agregasi.

Penanganan kesalahan data

Berikut adalah daftar metode umum yang digunakan untuk menangani kesalahan data.

  • Beberapa kolom hilang di beberapa baris dalam objek CSV.

    Jika SkipPartialDataRecord tidak ditentukan atau diatur ke false, OSS menghitung ekspresi dalam pernyataan SQL dengan memproses nilai kolom yang hilang sebagai null.

    Jika SkipPartialDataRecord diatur ke true, OSS mengabaikan baris di mana beberapa kolom hilang. Dalam hal ini, jika MaxSkippedRecordsAllowed tidak ditentukan atau diatur ke nilai yang lebih kecil dari jumlah baris yang dilewati, OSS melaporkan kesalahan dengan mengirimkan kode status HTTP 400 atau menyertakan kode status HTTP 400 dalam frame akhir.

    Anggaplah pernyataan SQL select _1, _3 from ossobject dieksekusi, dan data dalam baris objek CSV adalah "John, Company A".

    • Jika SkipPartialDataRecord diatur ke false, "John,\n" dikembalikan.

    • Jika SkipPartialDataRecord diatur ke true, baris ini dilewati.

  • Beberapa kunci hilang dalam objek JSON.

    Beberapa objek JSON mungkin tidak menyertakan kunci yang ditentukan dalam pernyataan SQL.

    • Jika SkipPartialDataRecord tidak ditentukan atau diatur ke false, OSS menghitung ekspresi dalam pernyataan SQL dengan memproses kunci yang hilang sebagai null.

    • Jika SkipPartialDataRecord diatur ke true, OSS melewati data dalam node JSON. Dalam hal ini, jika MaxSkippedRecordsAllowed tidak ditentukan atau diatur ke nilai yang lebih kecil dari jumlah baris yang dilewati, OSS melaporkan kesalahan dengan mengirimkan kode status HTTP 400 atau menyertakan kode status HTTP 400 dalam frame akhir.

    Anggaplah pernyataan SQL select s.firstName, s.lastName , s.age from ossobject.contacts[*] s dieksekusi, dan nilai node JSON adalah {"firstName":"John", "lastName":"Smith"}.

    • Jika SkipPartialDataRecord tidak ditentukan atau diatur ke false, {"firstName":"John", "lastName":"Smith"} dikembalikan.

    • Jika SkipPartialDataRecord diatur ke true, baris ini dilewati.

    Catatan

    Untuk kunci dalam data yang dikembalikan dari permintaan untuk objek JSON, objek JSON keluaran hanya dapat berupa LINES. Nilai Kunci dalam output dikembalikan berdasarkan aturan berikut:

    • Anggaplah pernyataan SQL select * from ossobject… dieksekusi. Jika * sesuai dengan objek JSON ({...}), objek JSON dikembalikan. Jika * sesuai dengan string atau array, string atau array dikembalikan sebagai DummyKey _1.

      Jika {"Age":5}select * from ossobject.Age s where s = 5 digunakan, {"_1":5} dikembalikan karena nilai 5 yang sesuai dengan * bukan objek JSON. Saat pernyataan SQL select * from ossobject s where s.Age = 5 dieksekusi, {"Age":5} yang sesuai dengan * dikembalikan.

    • Jika pernyataan SQL tidak menggunakan select * tetapi menentukan kolom, konten yang dikembalikan berada dalam format {"{Kolom 1}": Nilai, "{Kolom 2}": Nilai...}. {Kolom n} dapat dibuat menggunakan metode berikut:

      • Jika alias kolom ditentukan dalam klausa SELECT, alias tersebut berlaku.

      • Jika nama kolom adalah kunci objek JSON, kunci ini digunakan sebagai nilai kunci keluaran.

      • Jika kolom adalah elemen array JSON atau fungsi agregasi, awali nama kolom dengan nomor seri (mulai dari 1) dan garis bawah (_) sebagai nilai kunci keluaran.

      Anggaplah {"contacts":{"Age":35, "Children":["child1", "child2", "child3"]}} digunakan:

      • Saat pernyataan SQL select s.contacts.Age, s.contacts.Children[0] from ossobjects dieksekusi, Age adalah kunci objek JSON input, dan Children[0] menunjukkan elemen pertama dari array Children dan merupakan kolom kedua dalam konten keluaran. Dalam hal ini, {"Age":35, "_2":"child1"} dikembalikan.

      • Saat pernyataan SQL select max(cast(s.Age as int)) from ossobject.contacts s dieksekusi dan kolom yang dipilih adalah fungsi agregasi, kolom tersebut diberi awalan _1 dan nomor serinya dalam keluaran. Dalam hal ini, {"_1":35} dikembalikan.

      • Saat alias kolom ditentukan dalam pernyataan SQL select s.contacts.Age, s.contacts.Children[0] as firstChild from ossobject, {"Age":35, "firstChild":"child1"} dikembalikan.

    • Kunci yang cocok dengan objek JSON dan pernyataan SQL bersifat peka huruf besar-kecil. Sebagai contoh, "select s. Age" dan "select s. age" berbeda.

  • Tipe data beberapa kolom dalam objek CSV tidak sesuai dengan tipe data yang ditentukan dalam pernyataan SQL.

    Jika tipe data baris dalam objek CSV tidak sesuai dengan tipe yang ditentukan dalam pernyataan SQL, baris tersebut dilewati. Jika jumlah baris yang dilewati melebihi nilai MaxSkippedRecordsAllowed, OSS menghentikan pemrosesan data dan mengembalikan kode status HTTP 400.

    Anggaplah pernyataan SQL select _1, _3 from ossobject where _3 > 5 dieksekusi. Jika nilai baris dalam objek CSV adalah John, Company A, To be hired, baris ini dilewati karena kolom ketiga dalam baris tersebut bukan bertipe integer.

  • Tipe data beberapa kunci dalam objek JSON tidak sesuai dengan tipe data yang ditentukan dalam pernyataan SQL.

    Anggaplah pernyataan SQL select s.name from ossobject s where s.aliren_age > 5 dieksekusi. Jika nilai node JSON adalah {"Name":"John", "Career_age": To be hired}, node ini dilewati.

Format waktu yang didukung

Tabel berikut mencantumkan format yang dapat dikonversi menjadi timestamp tanpa perlu menentukan format waktu. Sebagai contoh, string cast­('20121201' as timestamp) secara otomatis diurai sebagai timestamp tanggal 1 Desember 2012.

Format

Deskripsi

YYYYMMDD

tahun bulan hari

YYYY/MM/DD

tahun/bulan/hari

DD/MM/YYYY/

hari/bulan/tahun

YYYY-MM-DD

tahun-bulan-hari

DD-MM-YY

hari-bulan-tahun

DD.MM.YY

hari. bulan. tahun

HH:MM:SS.mss

jam:menit:detik. milidetik

HH:MM:SS

jam:menit:detik

HH MM SS mss

jam menit detik milidetik

HH.MM.SS.mss

jam. menit. detik. milidetik

HHMM

jam menit

HHMMSSmss

jam menit detik milidetik

YYYYMMDD HH:MM:SS.mss

tahun bulan hari jam:menit:detik. milidetik

YYYY/MM/DD HH:MM:SS.mss

tahun/bulan/hari jam:menit:detik. milidetik

DD/MM/YYYY HH:MM:SS.mss

hari/bulan/tahun jam:menit:detik. milidetik

YYYYMMDD HH:MM:SS

tahun bulan hari jam:menit:detik

YYYY/MM/DD HH:MM:SS

tahun/bulan/hari jam:menit:detik

DD/MM/YYYY HH:MM:SS

hari/bulan/tahun jam:menit:detik

YYYY-MM-DD HH:MM:SS.mss

tahun-bulan-hari jam:menit:detik. milidetik

DD-MM-YYYY HH:MM:SS.mss

hari-bulan-tahun jam:menit:detik. milidetik

YYYY-MM-DD HH:MM:SS

tahun-bulan-hari jam:menit:detik

YYYYMMDDTHH:MM:SS

tahun bulan hari T jam:menit:detik

YYYYMMDDTHH:MM:SS.mss

tahun bulan hari T jam:menit:detik. milidetik

DD-MM-YYYYTHH:MM:SS.mss

hari-bulan-tahun T jam:menit:detik. milidetik

DD-MM-YYYYTHH:MM:SS

hari-bulan-tahun T jam:menit:detik

YYYYMMDDTHHMM

tahun bulan hari T jam menit

YYYYMMDDTHHMMSS

tahun bulan hari T jam menit detik

YYYYMMDDTHHMMSSMSS

tahun bulan hari T jam menit detik milidetik

ISO8601-0

tahun-bulan-hari T jam:menit+jam:menit, atau tahun-bulan-hari T jam:menit-jam:menit

"+" menunjukkan bahwa waktu lokal di zona waktu saat ini lebih lambat dari waktu UTC standar. "-" menunjukkan bahwa waktu lokal di zona waktu saat ini lebih awal dari waktu UTC standar. Dalam format ini, ISO8601-0 dapat digunakan.

ISO8601-1

tahun-bulan-hari T jam:menit+jam:menit, atau tahun-bulan-hari T jam:menit-jam:menit

"+" menunjukkan bahwa waktu lokal di zona waktu saat ini lebih lambat dari waktu UTC standar. "-" menunjukkan bahwa waktu lokal di zona waktu saat ini lebih awal dari waktu UTC standar. Dalam format ini, ISO 8601-1 dapat digunakan.

CommonLog

Contoh: 28/Feb/2017:12:30:51 +0700

RFC822

Contoh: Tue, 28 Feb 2017 12:30:51 GMT

?D/?M/YY

hari/bulan/tahun, di mana hari dan bulan bisa satu atau dua digit.

?D/?M/YY ?H:?M

hari/bulan/tahun/jam:menit, di mana hari, bulan, jam, dan menit bisa satu atau dua digit.

?D/?M/YY ?H:?M:?S

hari/bulan/tahun/jam:menit:detik, di mana hari, bulan, jam, menit, dan detik bisa satu atau dua digit.

Tabel berikut mencantumkan format yang mungkin menyebabkan kesalahan. Anda harus menentukan format waktu saat menggunakan string dalam format ini. Sebagai contoh, pernyataan cast('20121201' as timestamp format 'YYYYDDMM') salah mengurai string 20121201 sebagai tanggal 12 Januari 2012.

Format

Deskripsi

YYYYDDMM

tahun hari bulan

YYYY/DD/MM

tahun/hari/bulan

MM/DD/YYYY

bulan/hari/tahun

YYYY-DD-MM

tahun-hari-bulan

MM-DD-YYYY

bulan-hari-tahun

MM.DD.YYYY

bulan.hari.tahun

Kode Kesalahan

SelectObject mengembalikan kode kesalahan dengan menggunakan metode berikut:

  • Kode status HTTP disertakan dalam header respons dan kode kesalahan disertakan dalam badan respons, yang sama dengan permintaan OSS lainnya. Kode kesalahan yang dikembalikan dengan cara ini menunjukkan bahwa terjadi kesalahan input seperti pernyataan SQL yang tidak valid atau kesalahan data.

  • Kode kesalahan disertakan dalam frame akhir badan respons. Kode kesalahan yang dikembalikan dengan cara ini menunjukkan bahwa data tidak benar atau tidak sesuai dengan tipe data yang ditentukan dalam pernyataan SQL. Sebagai contoh, string ada di kolom yang tipenya diatur ke integer dalam pernyataan SQL. Dalam hal ini, sebagian data diproses, lalu kode status HTTP 206 dan data yang diproses dikirim ke klien.

Kode kesalahan seperti InvalidCSVLine dapat dikembalikan sebagai kode status HTTP dalam header respons atau sebagai kode status dalam frame akhir berdasarkan lokasi baris kesalahan dalam objek CSV.

KodeKesalahan

Deskripsi

Kode Status HTTP

Kode Status HTTP dalam Frame Akhir

InvalidSqlParameter

Pesan kesalahan yang dikembalikan karena parameter SQL yang ditentukan tidak ada.

Pernyataan SQL dalam permintaan adalah null, ukuran pernyataan SQL telah melebihi batas atas, atau pernyataan SQL tidak di-enkode Base64.

400

Tidak ada

InvalidInputFieldDelimiter

Pesan kesalahan yang dikembalikan karena objek CSV input berisi pemisah kolom yang tidak valid.

Parameter tidak di-enkode Base64, atau ukuran parameter lebih besar dari 1 byte setelah parameter didekode.

400

Tidak ada

InvalidInputRecordDelimiter

Pesan kesalahan yang dikembalikan karena objek CSV input berisi pemisah baris yang tidak valid. Parameter tidak di-enkode Base64, atau ukuran parameter lebih besar dari 2 byte setelah parameter didekode.

400

Tidak ada

InvalidInputQuote

Pesan kesalahan yang dikembalikan karena objek CSV input berisi karakter kutipan yang tidak valid. Parameter tidak di-enkode Base64, atau ukuran parameter lebih besar dari 1 byte setelah parameter didekode.

400

Tidak ada

InvalidOutputFieldDelimiter

Pesan kesalahan yang dikembalikan karena objek CSV output berisi pemisah kolom yang tidak valid. Parameter tidak di-enkode Base64, atau ukuran parameter lebih besar dari 1 byte setelah parameter didekode.

400

Tidak ada

InvalidOutputRecordDelimiter

Pesan kesalahan yang dikembalikan karena objek CSV output berisi pemisah baris yang tidak valid. Parameter tidak di-enkode Base64, atau ukuran parameter lebih besar dari 2 byte setelah parameter didekode.

400

Tidak ada

UnsupportedCompressionFormat

Pesan kesalahan yang dikembalikan karena nilai parameter Compression bukan NONE atau GZIP. Nilai bersifat case-insensitive.

400

Tidak ada

InvalidCommentCharacter

Pesan kesalahan yang dikembalikan karena objek CSV berisi karakter komentar yang tidak valid. Parameter tidak di-enkode Base64, atau ukuran parameter lebih besar dari 1 byte setelah parameter didekode.

400

Tidak ada

InvalidRange

Pesan kesalahan yang dikembalikan karena parameter Range tidak diawali dengan line-range= atau split-range=, atau nilai rentang tidak sesuai dengan standar HTTP untuk Range.

400

Tidak ada

DecompressFailure

Pesan kesalahan yang dikembalikan karena nilai Compression adalah GZIP dan objek tidak dapat diekstrak.

400

Tidak ada

InvalidMaxSkippedRecordsAllowed

Pesan kesalahan yang dikembalikan karena nilai MaxSkippedRecordsAllowed bukan bilangan bulat.

400

Tidak ada

SelectCsvMetaUnavailable

Pesan kesalahan yang dikembalikan karena objek tidak termasuk CSV Meta saat parameter Range ditentukan. Panggil operasi CreateSelectObjectMeta terlebih dahulu.

400

Tidak ada

InvalidTextEncoding

Pesan kesalahan yang dikembalikan karena objek tidak di-enkode UTF-8.

400

Tidak ada

InvalidOSSSelectParameters

Pesan kesalahan yang dikembalikan karena parameter EnablePayloadCrc dan OutputRawData diatur ke true. Hal ini menghasilkan konflik.

400

Tidak ada

InternalError

Pesan kesalahan yang dikembalikan karena terjadi kesalahan sistem OSS.

500 atau 206

500 atau Tidak ada

SqlSyntaxError

Pesan kesalahan yang dikembalikan karena sintaks pernyataan SQL yang didekode Base64 tidak valid.

400

Tidak ada

SqlExceedsMaxInCount

Pesan kesalahan yang dikembalikan karena jumlah nilai yang disertakan dalam klausa IN SQL telah melebihi 1.024.

400

Tidak ada

SqlExceedsMaxColumnNameLength

Pesan kesalahan yang dikembalikan karena ukuran nama kolom telah melebihi 1.024 byte.

400

Tidak ada

SqlInvalidColumnIndex

Pesan kesalahan yang dikembalikan karena indeks kolom dalam pernyataan SQL lebih kecil dari 1 byte atau lebih besar dari 1.000 byte panjangnya.

400

Tidak ada

SqlAggregationOnNonNumericType

Pesan kesalahan yang dikembalikan karena fungsi agregasi digunakan pada kolom non-numerik.

400

Tidak ada

SqlInvalidAggregationOnTimestamp

Pesan kesalahan yang dikembalikan karena fungsi agregasi SUM atau AVG digunakan pada kolom timestamp.

400

Tidak ada

SqlValueTypeOfInMustBeSame

Pesan kesalahan yang dikembalikan karena nilai tipe berbeda disertakan dalam klausa IN SQL.

400

Tidak ada

SqlInvalidEscapeChar

Pesan kesalahan yang dikembalikan karena karakter escape yang tidak valid seperti tanda tanya (?), tanda persen (%), atau asterisk (*) ditentukan dalam klausa LIKE SQL.

400

Tidak ada

SqlOnlyOneEscapeCharIsAllowed

Pesan kesalahan yang dikembalikan karena ukuran karakter escape dalam klausa LIKE SQL lebih besar dari 1 byte panjangnya.

400

Tidak ada

SqlNoCharAfterEscapeChar

Pesan kesalahan yang dikembalikan karena tidak ada karakter yang ditentukan setelah karakter escape dalam klausa LIKE SQL.

400

Tidak ada

SqlInvalidLimitValue

Pesan kesalahan yang dikembalikan karena angka yang ditentukan setelah klausa Limit SQL lebih kecil dari 1.

400

Tidak ada

SqlExceedsMaxWildCardCount

Pesan kesalahan yang dikembalikan karena jumlah asterisk (*) atau tanda persen (%) dalam klausa LIKE SQL telah melebihi batas atas.

400

Tidak ada

SqlExceedsMaxConditionCount

Pesan kesalahan yang dikembalikan karena jumlah ekspresi kondisional dalam klausa WHERE SQL telah melebihi batas atas.

400

Tidak ada

SqlExceedsMaxConditionDepth

Pesan kesalahan yang dikembalikan karena kedalaman pohon kondisional dalam klausa WHERE SQL telah melebihi batas atas.

400

Tidak ada

SqlOneColumnCastToDifferentTypes

Pesan kesalahan yang dikembalikan karena kolom diubah menjadi tipe berbeda dengan menyertakan fungsi CAST dalam pernyataan SQL.

400

Tidak ada

SqlOperationAppliedToDifferentTypes

Pesan kesalahan yang dikembalikan karena operator digunakan untuk dua objek tipe berbeda dalam pernyataan SQL. Sebagai contoh, kode kesalahan ini dikembalikan jika col1 dalam _col1 > 3 adalah string.

400

Tidak ada

SqlInvalidColumnName

Pesan kesalahan yang dikembalikan karena nama kolom yang digunakan dalam pernyataan SQL tidak termasuk dalam header objek CSV.

400

Tidak ada

SqlNotSupportedTimestampFormat

Pesan kesalahan yang dikembalikan karena format timestamp yang ditentukan dalam klausa CAST SQL tidak didukung.

400

Tidak ada

SqlNotMatchTimestampFormat

Pesan kesalahan yang dikembalikan karena format timestamp yang ditentukan dalam klausa CAST SQL tidak cocok dengan string timestamp.

400

Tidak ada

SqlInvalidTimestampValue

Pesan kesalahan yang dikembalikan karena tidak ada format timestamp yang ditentukan dalam klausa CAST SQL dan string yang ditentukan tidak dapat dikonversi menjadi timestamp.

400

Tidak ada

SqlInvalidLikeOperand

Pesan kesalahan yang dikembalikan karena nama kolom atau indeks kolom di sisi kiri tidak ditentukan dalam klausa LIKE SQL, kolom yang ditentukan di sisi kiri bukan bertipe string, atau kolom di sisi kanan dalam klausa LIKE bertipe string.

400

Tidak ada

SqlInvalidMixOfAggregationAndColumn

Pesan kesalahan yang dikembalikan karena klausa SELECT SQL mencakup nama kolom dan indeks kolom untuk fungsi agregasi dan non-agregasi.

400

Tidak ada

SqlExceedsMaxAggregationCount

Pesan kesalahan yang dikembalikan karena jumlah fungsi agregasi yang disertakan dalam klausa SELECT SQL telah melebihi batas atas.

400

Tidak ada

SqlInvalidMixOfStarAndColumn

Pesan kesalahan yang dikembalikan karena asterisk (*), nama kolom, dan indeks kolom disertakan dalam pernyataan SQL yang sama.

400

Tidak ada

SqlInvalidKeepAllColumnsWithAggregation

Pesan kesalahan yang dikembalikan karena pernyataan SQL mencakup fungsi agregasi dan parameter KeepAllColumns diatur ke true.

400

Tidak ada

SqlInvalidKeepAllColumnsWithDuplicateColumn

Pesan kesalahan yang dikembalikan karena pernyataan SQL mencakup nama kolom atau indeks kolom yang berulang dan parameter KeepAllColumns diatur ke true.

400

Tidak ada

SqlInvalidSqlAfterAnalysis

Pesan kesalahan yang dikembalikan karena pernyataan SQL kompleks dan pernyataan SQL yang diurai tidak didukung.

400

Tidak ada

InvalidArithmeticOperand

Pesan kesalahan yang dikembalikan karena pernyataan SQL berisi operasi aritmatika yang dilakukan pada konstanta non-numerik atau kolom.

400

Tidak ada

SqlInvalidAndOperand

Pesan kesalahan yang dikembalikan karena ekspresi yang digabungkan oleh operator AND dalam pernyataan SQL bukan bertipe Boolean.

400

Tidak ada

SqlInvalidOrOperand

Pesan kesalahan yang dikembalikan karena ekspresi yang digabungkan oleh operator OR dalam pernyataan SQL bukan bertipe Boolean.

400

Tidak ada

SqlInvalidNotOperand

Pesan kesalahan yang dikembalikan karena ekspresi yang digabungkan oleh operator NOT dalam pernyataan SQL bukan bertipe Boolean.

400

Tidak ada

SqlInvalidIsNullOperand

Pesan kesalahan yang dikembalikan karena pernyataan SQL menentukan operasi berbasis operator IS NULL yang dilakukan pada konstanta.

400

Tidak ada

SqlComparerOperandTypeMismatch

Pesan kesalahan yang dikembalikan karena pernyataan SQL menentukan operasi berbasis operator perbandingan yang dilakukan pada dua objek tipe berbeda.

400

Tidak ada

SqlInvalidConcatOperand

Pesan kesalahan yang dikembalikan karena pernyataan SQL berisi dua konstanta yang digabungkan oleh operator konkatenasi (||).

400

Tidak ada

SqlUnsupportedSql

Pesan kesalahan yang dikembalikan karena pernyataan SQL kompleks dan ukuran rencana SQL yang dihasilkan telah melebihi batas atas.

400

Tidak ada

HeaderInfoExceedsMaxSize

Pesan kesalahan yang dikembalikan karena ukuran informasi header yang ditentukan dalam pernyataan SQL telah melebihi batas atas.

400

Tidak ada

OutputExceedsMaxSize

Pesan kesalahan yang dikembalikan karena ukuran baris dalam output telah melebihi batas atas.

400

Tidak ada

InvalidCsvLine

Pesan kesalahan yang dikembalikan karena baris dalam objek CSV tidak valid atau ukuran baris telah melebihi batas atas, atau karena jumlah baris yang dilewati telah melebihi nilai MaxSkippedRecordsAllowed.

400 atau 206

400 atau Tidak ada

NegativeRowIndex

Pesan kesalahan yang dikembalikan karena nilai indeks array dalam pernyataan SQL adalah angka negatif.

400

Tidak ada

ExceedsMaxNestedColumnDepth

Pesan kesalahan yang dikembalikan karena jumlah level bersarang dari objek JSON dalam pernyataan SQL telah melebihi batas atas.

400

Tidak ada

NestedColumnNotSupportInCsv

Pesan kesalahan yang dikembalikan karena pernyataan SQL berisi kolom bersarang yang mencakup titik (.) atau array yang mencakup tanda kurung ([]). Karakter sebelumnya tidak didukung untuk pernyataan SQL objek CSV.

400

Tidak ada

TableRootNodeOnlySupportInJson

Pesan kesalahan yang dikembalikan karena jalur node akar tidak ditentukan setelah From ossobject dalam objek JSON.

400

Tidak ada

JsonNodeExceedsMaxSize

Pesan kesalahan yang dikembalikan karena ukuran node akar dalam objek JSON telah melebihi batas atas.

400 atau 206

400 atau Tidak ada

InvalidJsonData

Pesan kesalahan yang dikembalikan karena data JSON diformat dengan salah.

400 atau 206

400 atau Tidak ada

ExceedsMaxJsonArraySize

Pesan kesalahan yang dikembalikan karena jumlah elemen dalam array di node akar objek JSON telah melebihi batas atas.

400 atau 206

400 atau Tidak ada

WildCardNotAllowed

Pesan kesalahan akan muncul karena tanda bintang (*) tidak dapat digunakan dalam klausa SQL SELECT atau klausa SQL WHERE untuk objek JSON. Sebagai contoh, kesalahan akan terjadi jika Anda mengeksekusi pernyataan berikut: select s.a.b[*] from ossobject where a.c[*] > 0.

400

Tidak ada

JsonNodeExceedsMaxDepth

Pesan kesalahan yang dikembalikan karena kedalaman node akar objek JSON telah melebihi batas atas.

400 atau 206

400 atau Tidak ada

ossutil

Untuk informasi tentang perintah ossutil yang sesuai dengan operasi SelectObject, lihat select-object.