SQL文を実行してオブジェクトに対する操作を実行し、実行結果を取得します。
使用上の注意
オブジェクトの読み取り権限を付与する必要があります。
SQL文が正しく実行されると、HTTPステータスコード206が返されます。 SQL文が無効であるか、既存のオブジェクトと一致できない場合、HTTPステータスコード400が返されます。
SelectObject操作を呼び出したときにスキャンされたオブジェクトのサイズに基づいて課金されます。 詳細については、「データ処理料金」をご参照ください。
リクエスト構文
この操作は、CSVおよびJSONオブジェクトの次のリクエスト構文をサポートします。
CSVオブジェクトのリクエスト構文
POST /object?x-oss-process=csv/select HTTP/1.1 ホスト: BucketName.oss-cn-hangzhou.aliyuncs.com 日付: 時間GMT Content-Length: ContentLength Content-MD5: MD5Value 承認: 署名 <?xml version="1.0" encoding="UTF-8"?> <SelectRequest> <式> Base64-encoded SQL文。 例: c2VsZWN0IGNvdW50KCopIGZyb20gb3Nzb2JqZWN0IHdoZXJlIF80ID4gNDU=</Expression> <入力シリアル化> <CompressionType> なし | GZIP</CompressionType> <CSV> <FileHeaderInfo> NONE | IGNORE | 使用 </FileHeaderInfo> <RecordDelimiter>Base64-encodedキャラクター </RecordDelimiter> <FieldDelimiter>Base64-encoded文字 </FieldDelimiter> <QuoteCharacter>Base64-encodedキャラクター </QuoteCharacter> <CommentCharacter>Base64-encodedキャラクター </CommentCharacter> <Range>line-range=start-end | split-range=start-end</Range> <AllowQuotedRecordDelimiter>true | false</AllowQuotedRecordDelimiter> </CSV> </InputSerialization> <OutputSerialization> <CSV> <RecordDelimiter>Base64-encodedキャラクター </RecordDelimiter> <FieldDelimiter>Base64-encoded文字 </FieldDelimiter> </CSV> <KeepAllColumns>false | true</KeepAllColumns> <OutputRawData>false | true</OutputRawData> <EnablePayloadCrc>true</EnablePayloadCrc> <OutputHeader>false</OutputHeader> </OutputSerialization> <オプション> <SkipPartialDataRecord>false</SkipPartialDataRecord> <MaxSkippedRecordsAllowed> スキップされたレコードの最大許容数 </MaxSkippedRecordsAllowed> </オプション> </SelectRequest>
JSONオブジェクトのリクエスト構文
POST /object?x-oss-process=json/select HTTP/1.1 ホスト: BucketName.oss-cn-hangzhou.aliyuncs.com 日付: 時間GMT Content-Length: ContentLength Content-MD5: MD5Value 承認: 署名 <?xml version="1.0" encoding="UTF-8"?> <SelectRequest> <式> Base64-encoded SQL文。 例: c2VsZWN0IGNvdW50KCopIGZyb20gb3Nzb2JqZWN0IHdoZXJlIF80ID4gNDU= </式> <入力シリアル化> <CompressionType> なし | GZIP</CompressionType> <JSON> <タイプ> ドキュメント | 行 </タイプ> <範囲> line-range=start-end | split-range=start-end </範囲> <ParseJsonNumberAsString> true | false </ParseJsonNumberAsString> </JSON> </InputSerialization> <OutputSerialization> <JSON> <RecordDelimiter> レコード区切り文字のBase64 </RecordDelimiter> </JSON> <OutputRawData>false | true</OutputRawData> <EnablePayloadCrc>true</EnablePayloadCrc> </OutputSerialization> <オプション> <SkipPartialDataRecord> false | true </SkipPartialDataRecord> <MaxSkippedRecordsAllowed> スキップされたレコードの最大許容数 </MaxSkippedRecordsAllowed> </オプション> </SelectRequest>
リクエスト要素
要素 | データ型 | 説明 |
SelectRequest | Container | SelectObjectリクエストを格納するコンテナー。 子ノード: 式、InputSerialization、およびOutputSerialization 親ノード: なし |
表現 | String | Base64-encodedのSQL文。 子ノード: なし 親ノード: SelectRequest |
入力シリアル化 | Container | オプションです。 この要素は、入力シリアル化パラメータを指定します。 子ノード: CompressionType、CSV、およびJSON 親ノード: SelectRequest |
Outputシリアル化 | Container | オプションです。 この要素は、出力シリアル化パラメータを指定します。 子ノード: CSV、JSON、およびOutputRawData 親ノード: SelectRequest |
CSV (入力シリアル化) | Container | オプションです。 この要素は、CSVオブジェクトを照会するときの入力シリアル化パラメーターを指定します。 子ノード: FileHeaderInfo、RecordDelimiter、FieldDelimiter、QuoteCharacter、CommentCharacter、およびRange 親ノード: InputSerialization |
CSV(OutputSerialization) | Container | オプションです。 この要素は、CSVオブジェクトが照会されるときの出力シリアル化パラメーターを指定します。 子ノード: RecordDelimiterおよびFieldDelimiter 親ノード: OutputSerialization |
JSON(InputSerialization) | Container | オプションです。 この要素は、JSONオブジェクトのクエリ時に入力シリアル化パラメーターを指定します。 子ノード: Type、Range、ParseJsonNumberAsString |
JSON(OutputSerialization) | Container | オプションです。 この要素は、JSONオブジェクトが照会されるときの出力シリアル化パラメーターを指定します。 子ノード: RecordDelimiter |
データ型 | 列挙 | 入力JSONオブジェクトの型。 有効な値: DOCUMENTとLINES。 |
OutputRawData | Boolean | オプションです。 生データをエクスポートするかどうかを指定します。 デフォルト値:false 子ノード: なし 親ノード: OutputSerialization 説明
|
CompressionType | 列挙 | オブジェクトの圧縮タイプ。 有効値: NoneおよびGZIP。 子ノード: なし 親ノード: InputSerialization |
FileHeaderInfo | 列挙 | オプションです。 CSVオブジェクトのヘッダー情報を指定します。 有効な値:
子ノード: なし 親ノード: CSV (入力) |
RecordDelimiter | String | オプションです。 この要素は、Base64-encodedの改行を指定します。 デフォルト値: 子ノード: なし 親ノード: CSV (入力および出力) およびJSON (出力) |
FieldDelimiter | String | オプションです。 この要素は、CSVオブジェクトの列を区切るために使用する区切り文字を指定します。 この要素の値はBase64-encodedでなければなりません。 デフォルト値: 子ノード: なし 親ノード: CSV (入力および出力) |
QuoteCharacter | String | オプションです。 この要素は、CSVオブジェクトで使用するBase64-encoded引用文字を指定します。 デフォルト値: 子ノード: なし 親ノード: CSV (入力) |
CommentCharacter | String | CSVオブジェクトで使用するコメント文字。 この要素の値はBase64-encodedでなければなりません。 この要素はデフォルトでは空です。 |
範囲 | String | オプションです。 この要素は、クエリ範囲を指定します。 次のクエリメソッドがサポートされています。 説明 SelectMetaは、Rangeに基づいてクエリされるオブジェクトに対して作成する必要があります。 SelectMetaの詳細については、「CreateSelectObjectMeta」をご参照ください。
開始および終了パラメータは包括的である。 前述の2つのパラメーターは、range getのrangeパラメーターと同じ形式を使用します。 このパラメーターは、オブジェクトがCSV形式の場合、またはJSONタイプがLINESの場合にのみ使用できます。 子ノード: なし 親ノード: CSV (入力) およびJSON (出力) |
KeepAllColumns | bool | オプションです。 この要素は、CSVオブジェクトのすべての列をレスポンスに含めるかどうかを指定します。 デフォルト値:false SELECT句に含まれる列だけに値が含まれます。 応答の列は、列番号の昇順にソートされます。 例:
KeepAllColumnsをtrueに設定し、CSVオブジェクトに6つの列が含まれている場合、上記のSELECT句に対して次の結果が返されます。 1列目の値、5列目の値、\n 子ノード: なし 親ノード: OutputSerialization (CSV) |
EnablePayloadCrc | bool | 各フレームの検証のためのCRC-32値。 クライアントは、各ペイロードのCRC-32値を計算し、含まれているCRC-32値と比較して、データの整合性を検証できます。 子ノード: なし 親ノード: OutputSerialization |
オプション | Container | その他のオプションパラメーター。 子ノード: SkipPartialDataRecordおよびMaxSkippedRecordsAllowed 親ノード: SelectRequest |
OutputHeader | bool | CSVオブジェクトのヘッダー情報をレスポンスの先頭に含めるかどうかを指定します。 デフォルト値:false 子ノード: なし 親ノード: OutputSerialization |
SkipPartialDataRecord | bool | データが欠落している行を無視するかどうかを指定します。 このパラメーターがfalseに設定されている場合、OSSはエラーを報告せずに行データをnullとして処理します。 このパラメーターをtrueに設定すると、データを含まない行はスキップされます。 スキップされた行の数がスキップ可能な最大行数を超えた場合、OSSはエラーを報告し、データの処理を停止します。 デフォルト値:false 子ノード: なし 親ノード: オプション |
MaxSkippedRecordsAllowed | Int | スキップできる行の最大数。 行がSQL文で指定された型と一致しない場合、または行に1つ以上の列がなく、SkipPartialDataRecordの値がtrueの場合、行はスキップされます。 スキップされた行の数がこのパラメーターの値を超えた場合、OSSはエラーを報告し、データの処理を停止します。 説明 CSVオブジェクトの行が正しくフォーマットされていない場合、OSSはデータの処理を停止し、エラーを報告します。これは、このフォーマットエラーがCSVオブジェクトの誤った解析をもたらす可能性があるためです。 例えば、行内の列は、連続的な奇数番号の引用文字を含む。 このパラメーターは、不規則なデータの許容範囲を変更するために使用できますが、無効なCSVオブジェクトには設定できません。 デフォルト値:0 子ノード: なし 親ノード: オプション |
ParseJsonNumberAsString | bool | JSONオブジェクトの整数と浮動小数点数を文字列に解析するかどうかを指定します。 数値が解析されると、JSONオブジェクトの浮動小数点数の精度が低下します。 生データを保持する場合は、このパラメーターをtrueに設定することを推奨します。 解析された数値を計算に使用するには、SQLのCAST関数を使用して、解析されたデータをINT、DOUBLE、DECIMALなどの必要な型に変換します。 デフォルト値:false 子ノード: なし 親ノード: JSON |
AllowQuotedRecordDelimiter | bool | CSVオブジェクトに改行を引用符 (") で指定できるかどうかを指定します。 たとえば、列の値が "abc\ndef" で、\nが改行である場合、このパラメーターをtrueに設定します。 このパラメーターがfalseに設定されている場合、SelectObject操作を呼び出して、リクエストヘッダーに範囲を指定し、より効率的なマルチパートクエリを実行できます。 デフォルト値:true 子ノード: なし 親ノード: InputSerialization |
レスポンスボディ
レスポンスに含まれるHTTPステータスコードが4xxの場合、リクエストはSQL構文チェックに合格しなかったか、エラーが含まれています。 この場合、返されるエラーメッセージの本文の形式は、GetObjectリクエストに対して返されるエラーメッセージの形式と同じです。
レスポンスに含まれるHTTPステータスコードが5xxの場合、内部サーバーエラーが発生します。 この場合、返されるエラーメッセージの本文の形式は、GetObjectリクエストに対して返されるエラーメッセージの形式と同じです。
操作が成功した場合、HTTPステータスコード206が返されます。
header x-oss-select-output-rawの値がtrueの場合、フレーム単位のデータを除くオブジェクトデータが返されます。 クライアントは、GetObject操作と同じ方法でデータを取得できます。
x-oss-select-output-rawの値がfalseの場合、結果はフレームとして返されます。
フレームは、
Version | Frame-Type | Payload Length | Header Checksum | Payload | Payload Checksum <-- 3 bytes><-- 3 bytes --><--- 4 bytes ----><------- 4 bytes --><variable><---- 4 bytes --------->
形式で返されます。説明フレーム内のチェックサムの値をCRC-32する。 フレーム内のすべての整数はビッグエンディアンです。 現在、Versionの値は1です。
フレームタイプ
SelectObjectでサポートされる3つのフレームタイプを次の表に示します。
フレームタイプ | 値 | ペイロード形式 | 説明 |
データフレーム | 8388609 | offset | data<-8バイト><--- variable-> | SelectObjectリクエストに対して返されたデータ。 offsetパラメータの値は、現在のスキャン位置 (ファイルヘッダーからのオフセット) を示す8ビットの整数です。 このパラメーターは、操作の進行状況を報告するために使用されます。 |
連続的なフレーム | 8388612 | オフセット <--- 8バイト --> | 操作の進行状況を報告し、HTTP接続を維持するために使用されるフレーム。 5秒以内にクエリ要求に対してデータが返されない場合、連続フレームが返されます。 |
端フレーム | 8388613 | オフセット | スキャンされた合計バイト数 | httpステータスコード | エラーメッセージ <-- 8バイト-><-- 8バイト -------><---- 4バイト --------><-変数 --------> | エンドフレームは、スキャンされたバイトと可能なエラーメッセージを含む、操作の最終状態を返すために使用されます。
|
リクエストの例
次のサンプルリクエストは、CSVおよびJSONオブジェクトのSelectObjectを呼び出すために使用されます。
CSVオブジェクトのリクエストのサンプル
POST /oss-select/bigcsv_normal.csv?x-oss-process=csv % 2Fselect HTTP/1.1 日付: 5月25日金曜日2018 22:11:39 GMT コンテンツタイプ: 承認: OSS LTAIJPLocA0fD:FC/9JRbBGRw4o2QqdaL246Px **** ユーザーエージェント: aliyun-sdk-dotnet/2.8.0.0(windows 16.7/16.7.0.0/x86;4.0.30319.42000) コンテンツ-長さ: 748 期待: 100-続行 接続: キープアライブ ホスト: ホスト名 <?xml version="1.0"?> <SelectRequest> <式> c2VsZWN0IGNvdW50KCopIGZyb20gb3Nzb2JqZWN0IHdoZXJlIF80ID4gNDU= </式> <入力シリアル化> <圧縮> なし </Compression> <CSV> <FileHeaderInfo> 無視 </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>
JSONオブジェクトのリクエストのサンプル
POST /oss-select/sample_json.json?x-oss-process=json % 2Fselect HTTP/1.1 ホスト: ホスト名 Accept-Encoding: ID ユーザーエージェント: aliyun-sdk-python/2.6.0(Darwin/16.7.0/x86_64;3.5.4) 受け入れる: */* 接続: キープアライブ 日付: 12月10日月曜日2018 18:28:11 GMT 承認: OSS AccessKeySignature コンテンツ-長さ: 317 <SelectRequest> <式> c2VsZWN0ICogZnJvbSBvc3NvYmplY3Qub2JqZWN0c1sqXSB3aGVyZSBwYXJ0eSA9ICdEZW1vY3JhdCc= </式> <入力シリアル化> <JSON> <タイプ> ドキュメント </タイプ> </JSON> </InputSerialization> <OutputSerialization> <JSON> <RecordDelimiter>LA ==</RecordDelimiter> </JSON> </OutputSerialization> <オプション /> </SelectRequest>
SQL文の正規表現
この例では、SELECT select-list from table where_opt limit_opt
は、SQLステートメントの正規表現を示します。
次のキーワードは変更できません: SELECT and where.
select_list: 列名
| 列インデックス (例: _1、_2) 列インデックスはCSVオブジェクトにのみ適用されます。
| jsonパス (例: s.contacts.firstname. jsonパスはJSONオブジェクトにのみ適用されます。
| 関数 (列インデックス | 列名)
| function(json_path) (JSONオブジェクトにのみ適用されます。)
| select_list ASエイリアス
次の機能がサポートされています: AVG、SUM、MAX、MIN、COUNT、およびCAST (型変換機能) 。 COUNTの後に指定できるのはアスタリスク (*) だけです。
テーブル: OSSOBJECT
| OSSOBJECT json_path (JSONオブジェクトにのみ適用されます。)
CSVオブジェクトに対して操作を実行する場合は、OSSOBJECTテーブルを使用する必要があります。 DOCUMENTおよびLINESタイプのオブジェクトを含むJSONオブジェクトに対して操作を実行する場合は、OSSOBJECTの後にjson_pathを指定できます。
json_path: ['string '] (文字列にスペースまたはアスタリスク (*) が含まれていない場合、文字列を囲むために使用される引用符は削除できます。 この場合、['string '] はに相当します。'string '.)
| [n] (配列のn番目の要素を示します。 nの値は0からカウントされます。
| [*] (配列またはオブジェクト内の子要素を示します。)
|. 'string '(文字列にスペースまたはアスタリスク (*) が含まれていない場合は、文字列を囲むために使用される引用符を削除できます。)
| json_path jsonpath ([n].property1.attributes[*] などのjsonパスの複数の要素を連結できます)
Where_opt:
| どこにexpr
expr:
| リテラル値
| 列名
| 列インデックス
| jsonパス (JSONオブジェクトにのみ適用されます。)
| expr op expr
| exprまたはexpr
| exprとexpr
| expr IS NULL
| exprはNULLではない
| (column name | column index | json path) IN (value1, value2, ...)
| (column name | column index | json path) NOT in (value1, value2, ...)
| (列名 | 列インデックス | jsonパス) value1とvalue2の間
| NOT (expr)
| expr op expr
| (expr)
| cast (列インデックス | 列名 | jsonパス | リテラルとしてINT | DOUBLE |)
op:
>
、<
、>=
、<=
、! =
、=
、、
、LIKE
、+
、-
、*
、/
、%
、および| |
cast: CAST関数を使用して、列内のデータをあるタイプから別のタイプに変換できます。
集計関数と制限の組み合わせ:
[avg(cast(_1 as int)) from ossobject limit 100] を選択します
。 上記のステートメントは、最初の100行の最初の列の平均値を計算します。 この関数は、MySQLでサポートされているステートメントとは異なります。SelectObject操作では、集計関数に対して1行しか返されないためです。 したがって、出力データサイズに制限は設定されません。 制限操作は、SelectObjectを呼び出すときに集計操作の前に実行されます。
SQL文の制限
SQL文には次の制限が適用されます。
UTF-8でエンコードされたテキストオブジェクトと、GZIP形式で圧縮されたテキストオブジェクトUTF-8のみサポートされます。 収縮形式は、GZIPオブジェクトではサポートされていません。
SQL文を使用する場合、照会できるオブジェクトは1つだけです。 JOIN、ORDER BY、GROUP BY、およびHAVINGはサポートされていません。
WHERE句に集計条件を含めることはできません。 たとえば、次の句は使用できません。WHERE max(cast(age as int)) > 100。
SQL文には最大1,000個の列を指定できます。 SQL文の列名の長さは最大1,024バイトです。
LIKE句では、最大5つのワイルドカード (%) がサポートされています。 パーセント記号 (%) とアスタリスク (*) は、0文字以上を示すワイルドカードです。 ESCAPEキーワードはSQL LIKE句でサポートされており、パーセント記号 (%) 、アスタリスク (*) 、疑問符 (?) などの特殊文字を通常の文字列に変換するために使用されます。
in句では、最大1,024個の定数がサポートされます。
SELECTの後に指定するProjectionには、列名、CSV列インデックス (_1や_2など) 、集計関数、またはCAST関数を指定できます。 select _1 + _2 from ossobjectなど、他の式はサポートされていません。
CSVオブジェクトの最大列サイズと行サイズは256 KBです。
FROMの後に指定されるJSONパスは、最大サイズが512 KBのJSONノードをサポートします。 パスには最大10レベルを含めることができ、配列には最大5,000要素を含めることができます。 SELECTおよびWHEREの後に指定されるフィールドは、fromの後に指定されるJSONパスに対応するノードからのものである必要があります。
JSONオブジェクトのSQLステートメントでは、SELECTまたはWHERE式に配列ワイルドカード ([*]) を含めることはできません。 配列ワイルドカード ([*]) は、FROMの後に指定されたJSONパスにのみ含めることができます。たとえば、select s.contacts[*] from ossobject sの代わりにselect * from ossobject.contacts[*] を使用できます。
SQL文の最大サイズは16 KBです。 WHEREの後に最大20個の式を追加できます。 各ステートメントは、最大10のレベルと100の集計操作をサポートします。
データエラー処理
次のセクションでは、データエラーの処理に使用される一般的な方法を示します。
CSVオブジェクトの一部の行で一部の列が欠落しています。
SkipPartialDataRecordが指定されていない場合、またはfalseに設定されている場合、OSSは、欠落している列の値をnullとして処理して、SQLステートメントの式を計算します。
SkipPartialDataRecordがtrueに設定されている場合、一部の列が欠落している行は無視されます。 この場合、MaxSkippedRecordsAllowedが指定されていないか、スキップされた行数よりも小さい値に設定されている場合、OSSはHTTPステータスコード400を送信するか、HTTPステータスコード400をエンドフレームに含めてエラーを報告します。
SQL文
select _1, _3 from ossobject
が実行され、CSVオブジェクトの行のデータが「John, Company a」であるとします。SkipPartialDataRecordがfalseに設定されている場合、"John,\n" が返されます。
SkipPartialDataRecordがtrueに設定されている場合、この行はスキップされます。
JSONオブジェクトに一部のキーがありません。
一部のJSONオブジェクトは、SQL文で指定されたキーを除外できます。
SkipPartialDataRecordが指定されていない場合、またはfalseに設定されている場合、OSSは欠落しているキーをnullとして処理して、SQLステートメントの式を計算します。
SkipPartialDataRecordがtrueに設定されている場合、OSSはJSONノードのデータをスキップします。 この場合、MaxSkippedRecordsAllowedが指定されていないか、スキップされた行数よりも小さい値に設定されている場合、OSSはHTTPステータスコード400を送信するか、HTTPステータスコード400をエンドフレームに含めてエラーを報告します。
SQL文
select s.firstName, s.lastName , s.age from ossobject.contacts[*] s
が実行され、JSONノードの値が {"firstName":"John", "lastName":"Smith"} であると仮定します。SkipPartialDataRecordが指定されていないか、またはfalseに設定されている場合、{"firstName":"John", "lastName":"Smith"} が返されます。
SkipPartialDataRecordがtrueに設定されている場合、この行はスキップされます。
説明JSONオブジェクトのリクエストの返されたデータのキーの場合、出力されるJSONオブジェクトはLINESのみになります。 出力のKey値は、次のルールに基づいて返されます。
SQL文
select * from ossobject…
が実行されたと仮定します。 * がJSONオブジェクト ({...}) に対応する場合、JSONオブジェクトが返されます。 * が文字列または配列に対応する場合、文字列または配列はDummyKey _1として返されます。{"Age":5}
select * from ossobject.Age s where s = 5
が使用されている場合、* に対応する値5はJSONオブジェクトではないため、{"_1":5} が返されます。 SQL文select * from ossobject s where s.Age = 5
を実行すると、* に対応する {"Age":5} が返されます。SQL文でselect * を使用せず、列を指定した場合、返される内容は
{"{Column 1}": Value, "{Column 2}": Value...}
の形式になります。 {列n} は、次の方法を使用して生成できます。SELECT句で列のエイリアスが指定されている場合、エイリアスが有効になります。
列名がJSONオブジェクトのキーである場合、このキーは出力キー値として使用されます。
列がJSON配列または集計関数の要素である場合は、列名の前にシリアル番号 (1から始まる) とアンダースコア (_) を出力キー値として付けます。
{"contacts":{"Age":35, "Children":["child1", "child2", "child3"]}} が使用されているとします。
SQL文
select s.contacts.Age, s.contacts.Children[0] from ossobjects
が実行されると、Ageは入力JSONオブジェクトのキーであり、Children[0] はChildren配列の最初の要素を示し、出力コンテンツの2番目の列です。 この場合、{"Age":35, "_2":"child1"} が返されます。SQL文
select max(cast(s.Age as int)) from ossobject.contacts
が実行され、選択した列が集計関数である場合、列の先頭に _1とそのシリアル番号が出力されます。 この場合、{"_1":35} が返されます。SQL文で列のエイリアスを
select s.contacts.Age, s.contacts.Children[0] as firstChild from ossobject
を指定すると、{"Age":35, "firstChild":"child1"} が返されます。
JSONオブジェクトとSQL文に一致するキーは、大文字と小文字が区別されます。 たとえば、"select s. 年齢 "と" sを選択します。 「年齢」は違います。
CSVオブジェクトの一部の列のデータ型が、SQL文で指定されたデータ型と一致しません。
CSVオブジェクトの行のデータ型がSQL文で指定された型と一致しない場合、その行はスキップされます。 スキップされた行の数がMaxSkippedRecordsAllowedの値を超えると、OSSはデータの処理を停止し、HTTPステータスコード400を返します。
SQL文
select _1, _3 from ossobject where _3 > 5
が実行されたとします。 CSVオブジェクトの行の値がJohn, Company a, To be herant
の場合、行の3番目の列は整数型ではないため、この行はスキップされます。JSONオブジェクトの一部のキーのデータ型は、SQL文で指定されたデータ型と一致しません。
SQL文
selet s.name from ossobject s where s.aliren_age > 5
が実行されたとします。 JSONノードの値が{"Name":"John", "Career_age": To be hiered}
の場合、このノードはスキップされます。
CreateSelectObjectMeta
CreateSelectObjectMeta操作を呼び出して、行の総数や分割数などのオブジェクトに関する情報を取得できます。 CSVオブジェクトの場合、この操作を呼び出すと、オブジェクト内の列の総数を取得することもできます。 オブジェクトは、複数のデータブロックからなる。 各データブロックは分割に対応する。 スプリットは連続する行で構成されます。 要求された情報がCSVまたはJSONオブジェクトに存在しない場合、オブジェクト全体がスキャンされ、前述の情報が分析および記録されます。 最初のAPI操作呼び出しで取得した情報は、操作を再度呼び出すときに使用されます。 このように、オブジェクト全体を再走査する必要はない。
CreateSelectObjectMeta操作を実行する前に、オブジェクトに対する書き込み権限を付与する必要があります。
操作が成功すると、HTTPステータスコード200が返されます。 オブジェクトが有効なCSVまたはJSON LINESオブジェクトでない場合、または指定された区切り文字が既存のCSVオブジェクトと一致しない場合、HTTPステータスコード400が返されます。
リクエスト構文
CSVオブジェクトのリクエスト構文
POST /samplecsv?x-oss-process=csv/meta <CsvMetaRequest> <入力シリアル化> <CompressionType> なし </CompressionType> <CSV> <RecordDelimiter>Base64-encodedキャラクター </RecordDelimiter> <FieldDelimiter>Base64-encoded文字 </FieldDelimiter> <QuoteCharacter>Base64-encodedキャラクター </QuoteCharacter> </CSV> </InputSerialization> <OverwriteIfExists>false | true</OverwriteIfExists> </CsvMetaRequest>
JSONオブジェクトのリクエスト構文
POST /samplecsv?x-oss-process=json/meta <JsonMetaRequest> <入力シリアル化> <CompressionType> なし </CompressionType> <JSON> <タイプ> ライン </タイプ> </JSON> </InputSerialization> <OverwriteIfExists>false | true</OverwriteIfExists> </JsonMetaRequest>
リクエスト要素
要素
データ型
説明
CsvMetaRequest
Container
CSVオブジェクトのCreateSelectObjectMetaリクエストを格納するコンテナー。
子ノード: InputSerialization
親ノード: なし
JsonMetaRequest
Container
JSONオブジェクトのCreateSelectObjectMetaリクエストを格納するコンテナー。
子ノード: InputSerialization
親ノード: なし
入力シリアル化
Container
オプションです。 この要素は、入力シリアル化パラメータを指定します。
子ノード: CompressionType、CSV、およびJSON
親ノード: CsvMetaRequestおよびJsonMetaRequest
OverwriteIfExists
bool
オプションです。 この要素は、SelectMetaを再計算して既存のデータを上書きするかどうかを指定します。 値falseは、SelectMetaが既に存在する場合、結果が直接返されることを示します。 デフォルト値:false
子ノード: なし
親ノード: CsvMetaRequestおよびJsonMetaRequest
CompressionType
列挙
オプションです。 この要素は、オブジェクトの圧縮タイプを指定します。 Noneのみがサポートされています。
子ノード: なし
親ノード: InputSerialization
RecordDelimiter
String
オプションです。 この要素は、CSVオブジェクトの行を区切るために使用するBase64-encodedのラインフィードを指定します。 デフォルト値: \n。 この要素の値がエンコードされる前に、値は最大2文字の長さのANSI値でなければなりません。 たとえば、\nはJavaの改行を示すために使用されます。
子ノード: なし
親ノード: CSV
FieldDelimiter
String
オプションです。 この要素は、CSVオブジェクトの列を区切るために使用する区切り文字を指定します。 この要素の値はBase64-encodedでなければなりません。 デフォルト値:
,
この要素の値がエンコードされる前に、値は長さが1文字のANSI値でなければなりません。 たとえば、
、
はJavaでコンマを示すために使用されます。子ノード: なし
親ノード: CSV (入力および出力)
QuoteCharacter
String
オプションです。 この要素は、CSVオブジェクトで使用するBase64-encoded引用文字を指定します。 デフォルト値: \" CSVオブジェクトでは、引用符で囲まれた改行および列区切り文字は通常の文字として処理されます。 この要素の値がエンコードされる前に、値は長さが1文字のANSI値でなければなりません。 たとえば、\" はJavaで引用文字を示すために使用されます。
子ノード: なし
親ノード: CSV (入力)
CSV
Container
入力CSVオブジェクトの形式。
子ノード: RecordDelimiter、FieldDelimiter、およびQuoteCharacter
親ノード: InputSerialization
JSON
Container
入力JSONオブジェクトの形式。
子ノード: Type
親ノード: InputSerialization
データ型
列挙
JSONオブジェクトの型。
有効値: LINES
レスポンスボディ
SelectObjectと同様に、CreateSelectObjectMetaの結果もフレームとして返されます。
フレームタイプ
値
ペイロード形式
説明
メタエンドフレーム (CSV)
8388614
offset | 合計スキャンバイト | ステータス | 分割数 | 行数 | 列数 | エラーメッセージ
<-8バイト><----- 8バイト ------><-- 4バイト><-- 4バイト --><-- 8バイト><-- 4バイト ---><可変サイズ>
CreateSelectObjectMeta操作の最終状態を報告するために使用されるフレーム。
offset: スキャンが完了したときのオフセットを示す8ビット整数。
合計スキャンバイト: スキャンされたデータのサイズを示す8ビットの整数。
status: 操作の最終状態を示す4ビットの整数。
splits_count: 分割の総数を示す4ビットの整数。
rows_count: 行の総数を示す8ビットの整数。
cols_count: 列の総数を示す4ビットの整数。
error_message: 返される詳細なエラーメッセージ。 エラーが発生しない場合、このパラメーターの値はnullです。
メタエンドフレーム (JSON)
8388615
offset | 合計スキャンバイト | ステータス | 分割数 | 行数 | エラーメッセージ
<-8バイト><----- 8バイト ------><-- 4バイト><-- 4バイト --><-- 8バイト> <可変サイズ>
CreateSelectObjectMeta操作の最終状態を報告するために使用されるフレーム。
offset: スキャンが完了したときのオフセットを示す8ビット整数。
合計スキャンバイト: スキャンされたデータのサイズを示す8ビットの整数。
status: 操作の最終状態を示す4ビットの整数。
splits_count: 分割の総数を示す4ビットの整数。
rows_count: 行の総数を示す8ビットの整数。
error_message: 返される詳細なエラーメッセージ。 エラーが発生しない場合、このパラメーターの値はnullです。
リクエストの例
CSVオブジェクトのリクエストのサンプル
POST /oss-select/bigcsv_normal.csv?x-oss-process=csv % 2Fmeta HTTP/1.1 日付: 5月25日金曜日2018 23:06:41 GMT コンテンツタイプ: 権限付与: OSS AccessKeySignature ユーザーエージェント: aliyun-sdk-dotnet/2.8.0.0(windows 16.7/16.7.0.0/x86;4.0.30319.42000) コンテンツ-長さ: 309 期待: 100-続行 接続: キープアライブ ホスト: ホスト <?xml version="1.0"?> <CsvMetaRequest> <入力シリアル化> <CSV> <RecordDelimiter>Cg =</RecordDelimiter> <FieldDelimiter>LA ==</FieldDelimiter> <QuoteCharacter>Ig ==</QuoteCharacter> </CSV> </InputSerialization> <OverwriteIfExisting>false</OverwriteIfExisting> </CsvMetaRequest>
JSONオブジェクトのリクエストのサンプル
POST /oss-select/sample.json?x-oss-process=json % 2Fmeta HTTP/1.1 日付: 5月25日金曜日2018 23:06:41 GMT コンテンツタイプ: 権限付与: OSS AccessKeySignature ユーザーエージェント: aliyun-sdk-dotnet/2.8.0.0(windows 16.7/16.7.0.0/x86;4.0.30319.42000) コンテンツ-長さ: 309 期待: 100-続行 接続: キープアライブ ホスト: ホスト <?xml version="1.0"?> <JsonMetaRequest> <入力シリアル化> <JSON> <タイプ> ライン </タイプ> </JSON> </InputSerialization> <OverwriteIfExisting>false</OverwriteIfExisting> </JsonMetaRequest>
サポートされている時間形式
次の表に、時間形式を指定せずにタイムスタンプに変換できる形式を示します。 たとえば、キャスト (タイムスタンプとして '20121201') 文字列は、2012年12月1日のタイムスタンプとして自動的に解析されます。
Format | 説明 |
YYYYMMDD | 年月の日 |
YYYY/MM/DD | 年 /月 /日 |
DD/MM/YYYY / | 日 /月 /年 |
YYYY-MM-DD | 年-月-日 |
DD-MM-YY | 日-月-年 |
DD.MM.YY | 日だ 月。 year |
HH:MM:SS.mss | 時間: 分: 秒。 millisecond |
HH:MM:SS | 時間: 分: 秒 |
HH MM SSのmss | 時間分秒ミリ秒 |
HH.MM.SS.mss | 時間だ 分だ 2番目。 millisecond |
HHMM | アワー分 |
HHMMSSmss | 時間分秒ミリ秒 |
YYYYMMDD HH:MM:SS.mss | 年月日時間: 分: 秒。 millisecond |
YYYY/MM/DD HH:MM:SS.mss | 年 /月 /日時間: 分: 秒。 millisecond |
DD/MM/YYYY HH:MM:SS.mss | 日 /月 /年時間: 分: 秒。 millisecond |
YYYYMMDD HH:MM:SS | 年月日時間: 分: 秒 |
YYYY/MM/DD HH:MM:SS | 年 /月 /日時間: 分: 秒 |
DD/MM/YYYY HH:MM:SS | 日 /月 /年时间: 分: 秒 |
YYYY-MM-DD HH:MM:SS.mss | 年-月-日時間: 分: 秒。 millisecond |
DD-MM-YYYY HH:MM:SS.mss | 日-月-年: 分: 秒。 millisecond |
YYYY-MM-DD HH:MM:SS | 年-月-日時間: 分: 秒 |
YYYYMMDDTHH:MM:SS | 年月日T時間: 分: 秒 |
YYYYMMDDTHH:MM:SS.mss | 年月の日T時間: 分: 秒。 millisecond |
DD-MM-YYYYTHH:MM:SS.mss | 日-月-年T時間: 分: 秒。 millisecond |
DD-MM-YYYYTHH:MM:SS | 日-月-年T時間: 分: 秒 |
YYYYMMDDTHHMM | 年月の日T時間分 |
YYYYMMDDTHHMMSS | 年月の日T時間分秒 |
YYYYMMDDTHHMMSSMSS | 年月日T時間分秒ミリ秒 |
ISO8601-0 | 年-月-日T時間: 分 + 時間: 分、または年-月-日T時間: 分: 分 「 + 」は、現在のタイムゾーンのローカル時刻が標準UTC時刻より後であることを示します。 「-」は、現在のタイムゾーンのローカル時刻が標準UTC時刻より前であることを示します。 この形式では、ISO8601-0を使用できます。 |
ISO8601-1 | 年-月-日T時間: 分 + 時間: 分、または年-月-日T時間: 分: 分 「 + 」は、現在のタイムゾーンのローカル時刻が標準UTC時刻より後であることを示します。 「-」は、現在のタイムゾーンのローカル時刻が標準UTC時刻より前であることを示します。 この形式では、ISO 8601-1を使用できます。 |
コモンログ | 例: 28/Feb/2017:12:30:51 + 0700 |
RFC822 | 例: 2月28日火曜日2017 12:30:51 GMT |
? D/?M/YY | 日 /月 /年。日と月は1桁または2桁です。 |
? D/?M/YY? H:?M | 日 /月 /年 /時間: 分。日、月、時間、分は1桁または2桁です。 |
? D/?M/YY? H:?M:?S | 日 /月 /年 /時間: 分: 秒。日、月、時間、分、秒は1桁または2桁です。 |
エラーの原因となる形式を次の表に示します。 これらの形式で文字列を使用する場合は、時間形式を指定する必要があります。 例えば、キャスト (タイムスタンプ形式 'YYYYDDMM' として '20121201') ステートメントは、2012年1月12日に20121201された文字列を誤って解析する。
Format | 説明 |
YYYYDDMM | 年の日月 |
YYYY/DD/MM | 年 /日 /月 |
MM/DD/YYYY | 月 /日 /年 |
YYYY-DD-MM | 年-日-月 |
MM-DD-YYYY | 月-日-年 |
MM.DD.YYYY | 月。 日だ year |
ErrorCode
SelectObjectは、次のメソッドを使用してエラーコードを返します。
HTTPステータスコードはレスポンスヘッダーに含まれ、エラーコードはレスポンス本文に含まれます。これは他のOSSリクエストと同じです。 この方法で返されるエラーコードは、無効なSQL文やデータエラーなどの入力エラーが発生したことを示します。
エラーコードは、レスポンスボディの終了フレームに含まれる。 この方法で返されるエラーコードは、データが正しくないか、SQL文で指定されたデータ型と一致しないことを示します。 たとえば、SQL文で型が整数に設定されている列に文字列が存在します。 この場合、データの一部が処理され、HTTPステータスコードが206され、処理されたデータがクライアントに送信されます。
InvalidCSVLineなどのエラーコードは、CSVオブジェクト内のエラー行の位置に基づいて、レスポンスヘッダーのHTTPステータスコードとして、またはエンドフレームのステータスコードとして返すことができます。
エラーコード | 説明 | HTTPステータスコード | エンドフレームのHttpステータスコード |
InvalidSqlParameter | 指定されたSQLパラメーターが存在しない場合に返されるエラーメッセージ。 リクエスト内のSQL文がnullであるか、SQL文のサイズが上限を超えているか、SQL文がBase64-encodedされていません。 | 400 | なし |
InvalidInputFieldDelimiter | 入力CSVオブジェクトに無効な列区切り文字が含まれている場合に返されるエラーメッセージ。 パラメータがBase64-encodedされないか、パラメータがデコードされた後、パラメータのサイズが1バイトより大きくなります。 | 400 | なし |
InvalidInputRecordDelimiter | 入力CSVオブジェクトに無効な行区切り文字が含まれている場合に返されるエラーメッセージ。 パラメータがBase64-encodedされないか、パラメータがデコードされた後、パラメータのサイズが2バイトより大きくなります。 | 400 | なし |
InvalidInputQuote | 入力CSVオブジェクトに無効な引用文字が含まれている場合に返されるエラーメッセージ。 パラメータがBase64-encodedされないか、パラメータがデコードされた後、パラメータのサイズが1バイトより大きくなります。 | 400 | なし |
InvalidOutputFieldDelimiter | 出力CSVオブジェクトに無効な列区切り文字が含まれている場合に返されるエラーメッセージ。 パラメータがBase64-encodedされないか、パラメータがデコードされた後、パラメータのサイズが1バイトより大きくなります。 | 400 | なし |
InvalidOutputRecordDelimiter | 出力CSVオブジェクトに無効な行区切り文字が含まれている場合に返されるエラーメッセージ。 パラメータがBase64-encodedされないか、パラメータがデコードされた後、パラメータのサイズが2バイトより大きくなります。 | 400 | なし |
UnsupportedCompressionFormat | Compressionパラメーターの値がNONEまたはGZIPでない場合に返されるエラーメッセージ。 値は大文字と小文字を区別しません。 | 400 | なし |
InvalidCommentCharacter | CSVオブジェクトに無効なコメント文字が含まれている場合に返されるエラーメッセージ。 パラメータがBase64-encodedされないか、パラメータがデコードされた後、パラメータのサイズが1バイトより大きくなります。 | 400 | なし |
InvalidRange | Rangeパラメーターの先頭にline-range=またはsplit-range=が付いていない場合、またはrange値がRangeのHTTP標準に準拠していない場合に返されるエラーメッセージ。 | 400 | なし |
解凍失敗 | Compressionの値がGZIPで、オブジェクトを抽出できない場合に返されるエラーメッセージ。 | 400 | なし |
InvalidMaxSkippedRecordsAllowed | MaxSkippedRecordsAllowedの値が整数でない場合に返されるエラーメッセージ。 | 400 | なし |
SelectCsvMetaUnavailable | Rangeパラメーターが指定されている場合、オブジェクトにCSVメタが含まれていない場合に返されるエラーメッセージ。 最初にCreateSelectObjectMeta操作を呼び出します。 | 400 | なし |
InvalidTextEncoding | オブジェクトがUTF-8エンコードされていない場合に返されるエラーメッセージ。 | 400 | なし |
InvalidOSSSelectParameters | EnablePayloadCrcおよびOutputRawDataパラメーターがtrueに設定されている場合に返されるエラーメッセージ。 この結果、競合が生じる。 | 400 | なし |
内部エラー | OSSシステムエラーが発生した場合に返されるエラーメッセージ。 | 500または206 | 500またはなし |
SqlSyntaxError | Base64-decodedのSQL文の構文が無効な場合に返されるエラーメッセージ。 | 400 | なし |
SqlExceedsMaxInCount | SQL in句に含まれる値の数が1,024を超えた場合に返されるエラーメッセージ。 | 400 | なし |
SqlExceedsMaxColumnNameLength | 列名のサイズが1,024バイトを超えた場合に返されるエラーメッセージ。 | 400 | なし |
SqlInvalidColumnIndex | SQL文の列インデックスの長さが1バイト未満または1,000バイトを超える場合に返されるエラーメッセージ。 | 400 | なし |
SqlAggregationOnNonNumericType | 集計関数が数値以外の列で使用されている場合に返されるエラーメッセージ。 | 400 | なし |
SqlInvalidAggregationOnTimestamp | timestamp列でSUMまたはAVG集計関数が使用されている場合に返されるエラーメッセージ。 | 400 | なし |
SqlValueTypeOfInMustBeSame | 異なる型の値がSQL in句に含まれている場合に返されるエラーメッセージ。 | 400 | なし |
SqlInvalidEscapeChar | SQL LIKE句に疑問符 (?) 、パーセント記号 (%) 、アスタリスク (*) などの無効なエスケープ文字が指定されている場合に返されるエラーメッセージ。 | 400 | なし |
SqlOnlyOneEscapeCharIsAllowed | SQL LIKE句のエスケープ文字のサイズが1バイトより大きい場合に返されるエラーメッセージ。 | 400 | なし |
SqlNoCharAfterEscapeChar | SQL LIKE句のエスケープ文字の後に文字が指定されていない場合に返されるエラーメッセージ。 | 400 | なし |
SqlInvalidLimitValue | SQL Limit句の後に指定された数値が1より小さい場合に返されるエラーメッセージ。 | 400 | なし |
SqlExceedsMaxWildCardCount | SQL LIKE句のアスタリスク (*) またはパーセント記号 (%) の数が上限を超えた場合に返されるエラーメッセージ。 | 400 | なし |
SqlExceedsMaxConditionCount | SQL WHERE句の条件式の数が上限を超えた場合に返されるエラーメッセージ。 | 400 | なし |
SqlExceedsMaxConditionDepth | SQL WHERE句の条件付きツリーの深さが上限を超えた場合に返されるエラーメッセージ。 | 400 | なし |
SqlOneColumnCastToDifferentTypes | SQL文にCAST関数を含めることにより、列が異なる型に変換された場合に返されるエラーメッセージ。 | 400 | なし |
SqlOperationAppliedToDifferentTypes | SQL文で異なる型の2つのオブジェクトに対して演算子が使用されている場合に返されるエラーメッセージ。 たとえば、このエラーコードは、_col1 > 3のcol1が文字列の場合に返されます。 | 400 | なし |
SqlInvalidColumnName | SQL文で使用されている列名がCSVオブジェクトのヘッダーに含まれていない場合に返されるエラーメッセージ。 | 400 | なし |
SqlNotSupportedTimestampFormat | SQL CAST句で指定されたタイムスタンプ形式がサポートされていない場合に返されるエラーメッセージ。 | 400 | なし |
SqlNotMatchTimestampFormat | SQL CAST句で指定されたタイムスタンプ形式がタイムスタンプ文字列と一致しない場合に返されるエラーメッセージ。 | 400 | なし |
SqlInvalidTimestampValue | SQL CAST句でタイムスタンプ形式が指定されておらず、指定された文字列をタイムスタンプに変換できない場合に返されるエラーメッセージ。 | 400 | なし |
SqlInvalidLikeOperand | 左側の列名またはインデックスがSQL LIKE句で指定されていない場合、左側の指定された列が文字列型でない場合、またはLIKE句の右側の列が文字列型である場合に返されるエラーメッセージ。 | 400 | なし |
SqlInvalidMixOfAggregationAndColumn | SQL SELECT句に集計関数と非集計関数の両方の列名とインデックスが含まれている場合に返されるエラーメッセージ。 | 400 | なし |
SqlExceedsMaxAggregationCount | SQL SELECT句に含まれる集計関数の数が上限を超えた場合に返されるエラーメッセージ。 | 400 | なし |
SqlInvalidMixOfStarAndColumn | アスタリスク (*) 、列名、および列インデックスが同じSQL文に含まれている場合に返されるエラーメッセージ。 | 400 | なし |
SqlInvalidKeepAllColumnsWithAggregation | SQL文に集計関数が含まれ、KeepAllColumnsパラメーターがtrueに設定されている場合に返されるエラーメッセージ。 | 400 | なし |
SqlInvalidKeepAllColumnsWithDuplicateColumn | SQL文に繰り返しの列名または列インデックスが含まれ、KeepAllColumnsパラメーターがtrueに設定されている場合に返されるエラーメッセージ。 | 400 | なし |
SqlInvalidSqlAfterAnalysis | SQL文が複雑で、解析されたSQL文がサポートされていない場合に返されるエラーメッセージ。 | 400 | なし |
InvalidArithmeticOperand | SQL文に数値以外の定数または列に対して実行された算術演算が含まれている場合に返されるエラーメッセージ。 | 400 | なし |
SqlInvalidAndOperand | SQL文のAND演算子で結合された式がブール型でない場合に返されるエラーメッセージ。 | 400 | なし |
SqlInvalidOrOperand | SQL文のOR演算子で結合された式がブール型でない場合に返されるエラーメッセージ。 | 400 | なし |
SqlInvalidNotOperand | SQL文でNOT演算子によって結合された式がブール型ではない場合に返されるエラーメッセージ。 | 400 | なし |
SqlInvalidIsNullOperand | SQLステートメントで、定数に対して実行されるIS NULL演算子ベースの操作が指定されている場合に返されるエラーメッセージ。 | 400 | なし |
SqlComparerOperandTypeMismatch | SQLステートメントで、異なる型の2つのオブジェクトに対して実行される比較演算子ベースの操作が指定されている場合に返されるエラーメッセージ。 | 400 | なし |
SqlInvalidConcatOperand | SQL文に連結演算子 (| |) で結合された2つの定数が含まれている場合に返されるエラーメッセージ。 | 400 | なし |
SqlUnsupportedSql | SQL文が複雑で、生成されたSQLプランのサイズが上限を超えた場合に返されるエラーメッセージ。 | 400 | なし |
HeaderInfoExceedsMaxSize | SQL文で指定したヘッダー情報のサイズが上限を超えた場合に返されるエラーメッセージ。 | 400 | なし |
OutputExceedsMaxSize | 出力の行のサイズが上限を超えた場合に返されるエラーメッセージ。 | 400 | なし |
InvalidCsvLine | CSVオブジェクトの行が無効であるか、行のサイズが上限を超えた場合、またはスキップされた行の数がMaxSkippedRecordsAllowedの値を超えた場合に返されるエラーメッセージ。 | 400または206 | 400またはなし |
NegativeRowIndex | SQL文の配列インデックスの値が負の数の場合に返されるエラーメッセージ。 | 400 | なし |
ExceedsMaxNestedColumnDepth | SQL文のJSONオブジェクトのネストされたレベルの数が上限を超えた場合に返されるエラーメッセージ。 | 400 | なし |
NestedColumnNotSupportInCsv | SQLステートメントに、ピリオド (.) を含む入れ子になった列、またはブラケット ([]) を含む配列が含まれている場合に返されるエラーメッセージ。 上記の文字は、CSVオブジェクトのSQL文ではサポートされません。 | 400 | なし |
TableRootNodeOnlySupportInJson | JSONオブジェクトのFrom ossobjectの後にルートノードパスが指定されていない場合に返されるエラーメッセージ。 | 400 | なし |
JsonNodeExceedsMaxSize | JSONオブジェクトのルートノードのサイズが上限を超えた場合に返されるエラーメッセージ。 | 400または206 | 400またはなし |
InvalidJsonData | JSONデータの形式が正しくない場合に返されるエラーメッセージ。 | 400または206 | 400またはなし |
ExceedsMaxJsonArraySize | JSONオブジェクトのルートノードの配列内の要素数が上限を超えた場合に返されるエラーメッセージ。 | 400または206 | 400またはなし |
WildCardNotAllowed | JSONオブジェクトのSQL SELECT句またはSQL WHERE句でアスタリスク (*) を使用できない場合に返されるエラーメッセージ。 たとえば、次のステートメントを実行すると、エラーが返されます。 | 400 | なし |
JsonNodeExceedsMaxDepth | JSONオブジェクトのルートノードの深さが上限を超えた場合に返されるエラーメッセージ。 | 400または206 | 400またはなし |