以下に示すネイティブ オブジェクト ストアの制限は、CREATE FOREIGNTABLE文に関係します。
CSVおよびJSONペイロード サイズ
- CSVおよびJSONデータ形式の場合、READ_NOSの最大ペイロード サイズは16,776,192バイトです。
- UNICODEの場合、8,388,096文字に相当します。
- LATINの場合、16,776,192文字に相当します。
実際のペイロード サイズは、データセットの個々のレコード サイズと同じです。
Parquetページ サイズ
READ_NOSとWRITE_NOSの両方でサポートされるParquetページの最大サイズは、16,776,192バイトです(LOB列およびLOBベースのUDT列を含む)。
Parquetレコードの一部のデータがバイナリである場合、最大文字数は比例して減少します。
外部テーブルの制限事項
- 次に示す項目は、外部テーブルではサポートされません。
- プライマリ インデックス
- セカンダリ インデックス
- 結合インデックス
- ハッシュ インデックス
- 行または列のパーティション分割(列のパーティション分割が必要なParquet外部テーブルを除く)
- テーブルの内容を変更するDML操作(INSERT、UPDATE、DELETE)
Parquetの形式の制限事項
- STRUCT、MAP、LISTおよびENUMなどの特定の複合データ型はサポートされていません。
- STRUCTデータ型のサポートは使用できないため、ネストされたParquetオブジェクト ストアはNative Object Storeで処理できません。
数値フィールドの不正な値
CSVまたはJSONデータセットと同様に、新しくアップロードされたAmazon S3ファイルの数値フィールドに1つの不正な値が含まれている場合、NOSテーブルが使用できなくなる可能性があります。この場合は、TRYCASTを使用して不良レコード/フィールドを識別できます。まず、新しいAmazon S3ファイルをオブジェクト ストレージの一時的な場所にアップロードし、TRYCASTを使用して数値データが破損していないことを確認できます。次に、データをオブジェクト ストア内の永続的な場所に移動できます。<Teradata Vantage™ - SQL関数、式、および述部、B035-1145>を参照してください。
例:
まだ実行されていない場合は、許可オブジェクトを作成します。
CREATE AUTHORIZATION MyAuthObj USER 'YOUR-ACCESS-KEY-ID' PASSWORD 'YOUR-SECRET-ACCESS-KEY;
例のテーブルを作成します。
CREATE MULTISET FOREIGN TABLE bad_numeric_fields , EXTERNAL SECURITY MyAuthObj USING ( LOCATION ('/s3/td-usgs-public.s3.amazonaws.com/DATA-BAD/bad_numeric_data') );
選択:
SELECT payload FROM bad_numeric_fields;
結果:
Payload ---------------------------------------------------------------------------- { "site_no":"09396100", "datetime":"2018-07-16 00:00", "Flow":"44.7", "GageHeight":"1.50", "Precipitation":"0.00", "GageHeight2":"1.50"} { "site_no":"09396100", "datetime":"2018-07-14 00:00", "Flow":"232", "GageHeight":"2.16", "Precipitation":"0.00", "GageHeight2":"2.16"} { "site_no":"09396100", "datetime":"2018-07-14 00:14", "Flow":"186", "GageHeight":"2.05", "Precipitation":"", "GageHeight2":"2.05"} { "site_no":"09400812", "datetime":"2018-07-12 00:09", "Flow":"", "GageHeight":"jjjj", "Precipitation":"bcde", "BatteryVoltage":"12.5"} { "site_no":"09400815", "datetime":"2018-07-12 00:00", "Flow":"0.00", "GageHeight":"-0.01", "Precipitation":"0.00", "BatteryVoltage":""} { "site_no":"09400815", "datetime":"2018-07-12 00:07", "Flow":"", "GageHeight":"", "Precipitation":"", "BatteryVoltage":"12.5"}
テーブルから選択します。
SELECT payload.site_no, payload.GageHeight(INT) FROM bad_numeric_fields;
結果: クエリーはエラーを返します。
TRYCASTを使用して、どのデータが不良かを把握します。
SELECT payload.site_no (CHAR(20)), TRYCAST(payload.GageHeight AS INT) FROM bad_numeric_fields;
サンプル結果:
Payload.site_no TRYCAST(Payload.GageHeight)
-------------------- ---------------------------
09396100 1
09396100 2
09396100 2
09400812 ?
09400815 0
09400815 0
結果は、site_no 09400812のレコードに不良データがあることを示しています。
WRITE_NOSの制限事項
- READ_NOSとWRITE_NOSの両方でサポートされるParquetページの最大サイズは、16,776,192バイトです(LOB列およびLOBベースのUDT列を含む)。WRITE_NOSは、これらのファイルを無制限に作成できます。
- 割り込みが発生した書き込み操作のオブジェクト ストア ファイルをクリーンアップするのは、ユーザーの責任です。トランザクションのアボートやシステムのリセットなどで、書き込み操作に割り込みが発生する可能性があります。
- 同じ場所への同時WRITE_NOSリクエストでは、エラーが返される可能性があります。リクエストがエラーを受け取った場合、このリクエストによって書き込まれたオブジェクトは外部ストレージから削除されず、s3cmdなど、外部オブジェクト ストア ベンダーが提供するツールを使用して手動でクリーンアップする必要があります。これを回避するために、Teradataは同時リクエストに対して一意の場所を指定することを推奨します。
- 同じ場所の同じパス名を持つオブジェクトを書き込もうとすると、エラーが報告されます。
- マニフェスト ファイルは累積されません。マニフェストにエントリを追加する場合は、元のエントリと追加するエントリを含む新しいマニフェストを作成する必要があります。
- 同じ場所に別のマニフェスト ファイルを書き込もうとすると、エラーが報告されます。同じ場所にあるマニフェストを置き換えるには、MANIFESTONLY('TRUE')キーワードと共にOVERWRITE('TRUE')を使用します。