すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:SelectObject

最終更新日:Feb 22, 2024

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

説明
  • リクエストにOutputRawDataを指定した場合、Object Storage Service (OSS) はリクエスト要素に基づいてデータを返します。

  • リクエストにOutputRawDataを指定しない場合、OSSは自動的に形式を選択し、選択した形式のデータをレスポンスで返します。

  • OutputRawDataをtrueに設定し、送信されたSQL文がデータを返すまでに時間がかかると、HTTPリクエストがタイムアウトすることがあります。

CompressionType

列挙

オブジェクトの圧縮タイプ。 有効値: NoneおよびGZIP。

子ノード: なし

親ノード: InputSerialization

FileHeaderInfo

列挙

オプションです。 CSVオブジェクトのヘッダー情報を指定します。

有効な値:

  • 使用: CSVオブジェクトにヘッダー情報が含まれます。 SelectObject操作の列名として、CSVオブジェクトの列名を使用できます。

  • 無視: CSVオブジェクトにはヘッダー情報が含まれています。 CSVオブジェクトの列名は、SelectObject操作の列名として使用できません。

  • なし: CSVオブジェクトにヘッダー情報が含まれていません。 デフォルト値です。

子ノード: なし

親ノード: CSV (入力)

RecordDelimiter

String

オプションです。 この要素は、Base64-encodedの改行を指定します。 デフォルト値: \n この要素の値がエンコードされる前に、値は最大2文字の長さのANSI値でなければなりません。 たとえば、\nはJavaの改行を示すために使用されます。

子ノード: なし

親ノード: CSV (入力および出力) およびJSON (出力)

FieldDelimiter

String

オプションです。 この要素は、CSVオブジェクトの列を区切るために使用する区切り文字を指定します。 この要素の値はBase64-encodedでなければなりません。 デフォルト値:, この要素の値がエンコードされる前に、値は長さが1文字のANSI値でなければなりません。 たとえば、はJavaでコンマを示すために使用されます。

子ノード: なし

親ノード: CSV (入力および出力)

QuoteCharacter

String

オプションです。 この要素は、CSVオブジェクトで使用するBase64-encoded引用文字を指定します。 デフォルト値: \" CSVオブジェクトでは、引用符で囲まれた改行および列区切り文字は通常の文字として処理されます。 この要素の値がエンコードされる前に、値は長さが1文字のANSI値でなければなりません。 たとえば、\" はJavaで引用文字を示すために使用されます。

子ノード: なし

親ノード: CSV (入力)

CommentCharacter

String

CSVオブジェクトで使用するコメント文字。 この要素の値はBase64-encodedでなければなりません。 この要素はデフォルトでは空です。

範囲

String

オプションです。 この要素は、クエリ範囲を指定します。 次のクエリメソッドがサポートされています。

説明

SelectMetaは、Rangeに基づいてクエリされるオブジェクトに対して作成する必要があります。 SelectMetaの詳細については、「CreateSelectObjectMeta」をご参照ください。

  • 行によるクエリ: line-range=start-end。 例えば、line-range=10-20は、行10から行20までのデータがスキャンされることを示す。

  • 分割によるクエリ: split-range=start-end。 たとえば、split-range=10-20は、split 10からsplit 20までのデータがスキャンされることを示します。

開始および終了パラメータは包括的である。 前述の2つのパラメーターは、range getのrangeパラメーターと同じ形式を使用します。

このパラメーターは、オブジェクトがCSV形式の場合、またはJSONタイプがLINESの場合にのみ使用できます。

子ノード: なし

親ノード: CSV (入力) およびJSON (出力)

KeepAllColumns

bool

オプションです。 この要素は、CSVオブジェクトのすべての列をレスポンスに含めるかどうかを指定します。 デフォルト値:false SELECT句に含まれる列だけに値が含まれます。 応答の列は、列番号の昇順にソートされます。 例:

ossobjectから_5, _1を選択します。

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バイト --------><-変数 -------->

エンドフレームは、スキャンされたバイトと可能なエラーメッセージを含む、操作の最終状態を返すために使用されます。

  • オフセットパラメータは、走査が完了した後の最終的な位置オフセットを示す。

  • 合計スキャンバイトパラメーターは、スキャンされたデータのサイズを示します。

  • httpステータスコードパラメーターは、操作の最終状態を示します。

    説明

    SelectObjectはストリーム操作です。 応答ヘッダが送信されるとき、第1のデータブロックのみが処理される。 最初のデータブロックがSQL文と一致する場合、レスポンスヘッダーのHTTPステータスコードが206されます。 このステータスコードは、操作が成功したことを示します。 しかしながら、後続のデータブロックが無効である可能性があるため、最終ステータスコードは206されない可能性がある。 レスポンスヘッダーのステータスコードは変更できません。 終了フレームには、操作の最終状態を示すHTTPステータスコードが含まれています。 クライアントは、終了フレームに含まれるステータスコードを使用して、操作が成功したかどうかを判断します。

  • エラーメッセージパラメーターは、スキップされた各行の数とスキップされた行の総数を含むエラーメッセージを示します。

    説明

    終了フレームに含まれるエラーメッセージの形式は、ErrorCodes.DetailMessageです。 ErrorCodesセクションには、コンマ (,) で区切られた1つ以上のエラーコードが含まれます。 ErrorCodesとDetailMessageはピリオド (.) で区切られています。

リクエストの例

次のサンプルリクエストは、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句でアスタリスク (*) を使用できない場合に返されるエラーメッセージ。 たとえば、次のステートメントを実行すると、エラーが返されます。select s.a.b[*] from ossobject where a.c[*] > 0

400

なし

JsonNodeExceedsMaxDepth

JSONオブジェクトのルートノードの深さが上限を超えた場合に返されるエラーメッセージ。

400または206

400またはなし