CreateSelectObjectMeta 操作を呼び出すと、オブジェクトに関する情報 (合計行数や分割数など) を取得できます。 CSV オブジェクトの場合、この操作を呼び出すと、オブジェクトの合計列数も取得できます。オブジェクトは複数のデータブロックで構成されています。各データブロックは分割に対応しています。分割は連続した行で構成されます。リクエストされた情報が CSV オブジェクトまたは JSON オブジェクトに存在しない場合、オブジェクト全体がスキャンされ、前述の情報が分析および記録されます。最初の API 操作呼び出しで取得された情報は、操作が再度呼び出されたときに使用されます。このようにして、オブジェクト全体を再スキャンする必要はありません。
使用方法
CreateSelectObjectMeta 操作を呼び出すには、オブジェクトに対する書き込み権限が必要です。
操作が成功した場合、HTTP ステータスコード 200 が返されます。オブジェクトが有効な CSV オブジェクトまたは JSON LINES オブジェクトでない場合、または指定されたデリミタが既存の CSV オブジェクトと一致しない場合、HTTP ステータスコード 400 が返されます。
構文
この操作では、CSV オブジェクトと JSON オブジェクトに対して次のリクエスト構文がサポートされています。
CSV オブジェクトのリクエスト構文
POST /samplecsv?x-oss-process=csv/meta <CsvMetaRequest> <InputSerialization> <CompressionType>None</CompressionType> <CSV> <RecordDelimiter>Base64-encoded character</RecordDelimiter>
JSON オブジェクトのリクエスト構文
POST /samplecsv?x-oss-process=json/meta <JsonMetaRequest> <InputSerialization> <CompressionType>None</CompressionType> <JSON> <Type>LINES</Type> </JSON> </InputSerialization> <OverwriteIfExists>false|true</OverwriteIfExists> </JsonMetaRequest>
リクエスト要素
要素 | タイプ | 説明 |
CsvMetaRequest | コンテナー | CSV オブジェクトの CreateSelectObjectMeta リクエストを格納するコンテナー。 子ノード: InputSerialization 親ノード: なし |
JsonMetaRequest | コンテナー | JSON オブジェクトの CreateSelectObjectMeta リクエストを格納するコンテナー。 子ノード: InputSerialization 親ノード: なし |
InputSerialization | コンテナー | オプション。入力シリアル化パラメーターを指定します。 子ノード: CompressionType、CSV、JSON 親ノード: CsvMetaRequest、JsonMetaRequest |
OverwriteIfExists | bool | オプション。 SelectMeta を再計算し、既存のデータを上書きするかどうかを指定します。値が false の場合、SelectMeta が既に存在する場合は結果が直接返されます。デフォルト値: false。 子ノード: なし 親ノード: CsvMetaRequest、JsonMetaRequest |
CompressionType | 列挙型 | オプション。オブジェクトの圧縮タイプ。有効な値: None。 子ノード: なし 親ノード: InputSerialization |
RecordDelimiter | String | オプション。 CSV オブジェクトの行を区切るために使用する Base64 エンコードされた改行文字。デフォルト値: \n。この要素の値をエンコードする前は、値は最大 2 文字の長さの ANSI 値である必要があります。たとえば、Java では \n は改行を示すために使用されます。 子ノード: なし 親ノード: CSV |
FieldDelimiter | String | オプション。 CSV オブジェクトの値を区切るために使用するデリミタ。このパラメーターの値は Base64 エンコードされている必要があります。デフォルト値: この要素の値をエンコードする前は、値は 1 文字の長さの ANSI 値である必要があります。たとえば、Java では 子ノード: なし 親ノード: CSV (入力と出力) |
QuoteCharacter | String | オプション。 CSV オブジェクトで使用する Base64 エンコードされた引用符。デフォルト値: \"。 CSV オブジェクトでは、引用符で囲まれた改行文字と列デリミタは通常の文字として処理されます。この要素の値をエンコードする前は、値は 1 文字の長さの ANSI 値である必要があります。たとえば、Java では \" は引用符を示すために使用されます。 子ノード: なし 親ノード: CSV (入力) |
CSV | コンテナー | 入力 CSV オブジェクトのフォーマット。 子ノード: RecordDelimiter、FieldDelimiter、QuoteCharacter 親ノード: InputSerialization |
JSON | コンテナー | 入力 JSON オブジェクトのフォーマット。 子ノード: Type 親ノード: InputSerialization |
Type | 列挙型 | JSON オブジェクトのタイプ。 有効な値: LINES。 |
レスポンスヘッダー
SelectObject と同様に、CreateSelectObjectMeta の結果もフレームとして返されます。
フレームタイプ | 値 | ペイロードフォーマット | 説明 |
メタエンドフレーム (CSV) | 8388614 | オフセット | スキャンされた合計バイト数 | ステータス | 分割数 | 行数 | 列数 | エラーメッセージ <-8 バイト><------8 バイト------><--4 バイト><--4 バイト--><--8 バイト><--4 バイト---><可変サイズ> | CreateSelectObjectMeta 操作の最終状態を報告するために使用されるフレーム。
|
メタエンドフレーム (JSON) | 8388615 | オフセット | スキャンされた合計バイト数 | ステータス | 分割数 | 行数 | エラーメッセージ <-8 バイト><------8 バイト------><--4 バイト><--4 バイト--><--8 バイト><可変サイズ> | CreateSelectObjectMeta 操作の最終状態を報告するために使用されるフレーム。
|
サンプルリクエスト
次のサンプルリクエストは、CSV オブジェクトと JSON オブジェクトに対して SelectObject を呼び出すために使用されます。
CSV オブジェクトのサンプルリクエスト
POST /oss-select/bigcsv_normal.csv?x-oss-process=csv%2Fmeta HTTP/1.1 Date: Fri, 25 May 2018 23:06:41 GMT Content-Type: Authorization: OSS qn6q**************:77Dv**************** User-Agent: aliyun-sdk-dotnet/2.8.0.0(windows 16.7/16.7.0.0/x86;4.0.30319.42000) Content-Length: 309 Expect: 100-continue Connection: keep-alive Host: Host <?xml version="1.0"?> <CsvMetaRequest> <InputSerialization> <CSV> <RecordDelimiter>Cg==</RecordDelimiter> <FieldDelimiter>LA==</FieldDelimiter> <QuoteCharacter>Ig==</QuoteCharacter> </CSV> </InputSerialization> <OverwriteIfExisting>false</OverwriteIfExisting> </CsvMetaRequest>JSON オブジェクトのサンプルリクエスト
POST /oss-select/sample.json?x-oss-process=json%2Fmeta HTTP/1.1 Date: Fri, 25 May 2018 23:06:41 GMT Content-Type: Authorization: OSS qn6q**************:77Dv**************** User-Agent: aliyun-sdk-dotnet/2.8.0.0(windows 16.7/16.7.0.0/x86;4.0.30319.42000) Content-Length: 309 Expect: 100-continue Connection: keep-alive Host: Host <?xml version="1.0"?> <JsonMetaRequest> <InputSerialization> <JSON> <Type>LINES</Type> </JSON> </InputSerialization> <OverwriteIfExisting>false</OverwriteIfExisting> </JsonMetaRequest>
ossutil
CreateSelectObjectMeta 操作に対応する ossutil コマンドの詳細については、「create-select-object-meta」をご参照ください。