17.05 - READ_NOS構文 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL演算子およびユーザー定義関数

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Release Date
2021年1月
Content Type
プログラミング リファレンス
管理
Publication ID
B035-1210-175K-JPN
Language
日本語 (日本)
READ_NOS (
[ON { table_name | view_name | ( query_expression ) }]
USING (
  LOCATION ( 'external_file_path' ) 
  [  BUFFERSIZE ( 'buffer_size' )  ]
  [  RETURNTYPE ( { 'NOSREAD_RECORD' | 'NOSREAD_KEYS' | 
                    'NOSREAD_RAW' | 'NOSREAD_PARQUET_SCHEMA'  } )  ] 
  [  SAMPLE_PERC ( 'row_sampling_value' ) ]
  [  STOREDAS ( { 'PARQUET' | 'TEXTFILE' } ) ]
  [  FULLSCAN ( { 'TRUE' | 'FALSE' } ) ]
  [  MANIFEST ( { 'TRUE' | 'FALSE' } ) ]
  [  ACCESS_ID ( 'identification' ) ]
  [  ACCESS_KEY ( 'secret_key' ) ]
  [  ROWFORMAT ( 'rowformat_value' ) ]
  [  HEADER ( { 'TRUE' | 'FALSE' } ) ]
)

構文要素

table_name
テーブルの名前
view_name
ビューの名前。
query_expression
テーブル演算子への入力を指定する式。
LOCATION
LOCATION値(外部オブジェクト ストレージ システムを参照するUniform Resource Identifier (URI))を指定する必要があります。LOCATION値には、以下のコンポーネントが含まれます。
  • Amazon S3: /connector/bucket.endpoint/[key_prefix]
  • Azure BlobストレージおよびAzure Data Lake Storage Gen2: /connector/container.endpoint/[key_prefix]
  • Google Cloud Storage: /connector/endpoint/bucket/[key_prefix]
connector
データが置かれている外部ストレージ システムのタイプを識別します。
Teradataでは、すべての外部ストレージの場所について、以下から始まるストレージの場所が必要です。
  • Amazon S3のストレージの場所は、必ず/S3または/s3で始まる
  • Azure BLOBのストレージの場所(Blob InteropモードのAzure Data Lake Storage Gen2を含む)は、必ず/AZまたは/azで始まる
  • Google Cloud Storageの場所は、必ず/GSまたは/gsで始まる
endpoint
外部オブジェクト ストレージ システムのシステム固有のエントリー ポイントを識別するURL。
bucket (Amazon S3, Google Cloud Storage)またはcontainer (Azure Blob storageおよびAzure Data Lake Storage Gen2)
外部ストレージ システムに格納されているオブジェクトを論理的にグループ化するコンテナ。
key_prefix
バケット データの論理編成内の1つ以上のオブジェクトを識別します。これは実際のディレクトリ パスではなくキー接頭辞なので、このキー接頭辞は外部ストレージ内の1つ以上のオブジェクトと一致する場合があります。例えば、キー接頭辞'/fabrics/cotton/colors/b/'は、/fabrics/cotton/colors/blue、/fabrics/cotton/colors/brown、/fabrics/cotton/colors/blackと一致します。これらより下位の編成レベル(/fabrics/cotton/colors/blue/shirtsなど)がある場合は、同じキー接頭辞もそれらのオブジェクトを収集します。
Vantageは、場所のキー接頭辞から最初に検出されたファイルのみを検証します。

例えば、以下のLOCATION値は、2001年12月のAmazonクラウド ストレージ システム上のすべてのオブジェクトを指定できます。

LOCATION('/S3/YOUR-BUCKET.s3.amazonaws.com/csv/US-Crimes/csv-files/2001/Dec/')
connector バケット endpoint key_prefix
S3 YOUR-BUCKET s3.amazonaws.com csv/US-Crimes/csv-files/2001/Dec/

以下のLOCATIONでは、個別のストレージ オブジェクト(またはファイル)、Day1.csvを指定できます。

LOCATION('/S3/YOUR-BUCKET.s3.amazonaws.com/csv/US-Crimes/csv-files/2001/Dec/Day1.csv')
connector バケット endpoint key_prefix
S3 YOUR-BUCKET s3.amazonaws.com csv/US-Crimes/csv-files/2001/Dec/Day11.csv

以下のLOCATIONは、Azureの外部オブジェクト ストア(Azure BlobストレージまたはAzure Data Lake Storage Gen2)内のコンテナ全体を指定します。containerには複数のファイル オブジェクトが含まれる場合があります。

LOCATION('/AZ/YOUR-STORAGE-ACCOUNT.blob.core.windows.net/nos-csv-data')
connector container endpoint key_prefix
AZ YOUR-STORAGE-ACCOUNT blob.core.windows.net nos-csv-data

以下は、Google Cloud Storageの場所の例です。

LOCATION('/gs/storage.googleapis.com/YOUR-BUCKET/CSVDATA/RIVERS/rivers.csv')
connector endpoint バケット key_prefix
GS storage.googleapis.com YOUR-BUCKET CSVDATA/RIVERS/rivers.csv
BUFFERSIZE
外部ストレージ リポジトリからデータを取得するときに割り当てるネットワーク バッファのサイズ。
デフォルト値は最大値の16MBです。
NOSREAD_RECORD
外部レコードごとに1行をメタデータとともに返します。これはデフォルトです。
以下のいずれかを指定して外部レコードにアクセスします。
  • 入力テーブルとLOCATIONおよび空のテーブル。CSVの場合、スキーマ定義を含めることができます。
  • 外部ファイルごとに1行の入力テーブル。CSVの場合、このメソッドではスキーマ定義はサポートされません。
空の単一列入力テーブルの場合は、以下を行ないます。
  • 適切なデータ型を使用して、単一列、Payloadを含む入力テーブルを定義します。
    • JSON
    • CSV格納形式のDATASET

    この列は、出力ペイロード列の戻りタイプを決定します。

    例: NOSREAD_RECORD戻りタイプを含むREAD_NOSの使用を参照してください。

  • LOCATIONにはファイルパスを指定します。
複数列の入力テーブルの場合は、次の列を含む入力テーブルを定義します。
  • Location VARCHAR(2048) CHARACTER SET UNICODE
  • ObjectVersionID VARCHAR(1024) CHARACTER SET UNICODE
  • ObjectTimeStamp TIMESTAMP(6)
  • OffsetIntoObject BIGINT
  • ObjectLength BIGINT
  • Payload JSONまたはVARCHAR (CSV用)

このテーブルには、NOSREAD_KEYS戻りタイプの出力を使用して入力できます。例: NOSREAD_RECORD戻りタイプを含むREAD_NOSの使用を参照してください。

NOSREAD_KEYS
LOCATION USING句に指定したパスからファイルのリストを取得します。
スキーマ定義は必要ありません。
戻り値:
  • Location
  • ObjectVersionID
  • ObjectTimeStamp
  • ObjectLength、外部ファイルのサイズ。
NOSREAD_RAW
外部ストレージ サービスからファイル データを取得します。特定のレコードではありません。
取得したデータは、CLOB/BLOBとして返されます。外部ストレージから完全なファイルを取得し、Teradata CLOB/BLOB形式で保存できます。外部ストレージから取得してTeradata列に保存できるデータの最大量は2GBで、LOBについてのVantageの上限です。ObjectLengthは、外部ストレージから読み取られたCLOB/BLOB列の長さに対応します。
この情報は、READ_NOSテーブル演算子に返されるテーブルの形式で提供されます。
入力テーブルのペイロード列は、返されたデータが格納される列のデータ型を判断するためにのみ使用されます。
以下の列を使用して入力テーブルを定義します。
  • Location VARCHAR(2048) CHARACTER SET UNICODE
  • ObjectVersionID VARCHAR(1024) CHARACTER SET UNICODE
  • ObjectTimeStamp TIMESTAMP(6)
  • OffsetIntoObject BIGINT
  • BytesToRead BIGINT
  • Payload CLOB/BLOB
READ_NOSは、以下の列を含むテーブルを返します。
  • Location VARCHAR(2048) CHARACTER SET UNICODE
  • ObjectVersionID VARCHAR(1024) CHARACTER SET UNICODE
  • ObjectTimeStamp TIMESTAMP(6)
  • OffsetIntoObject BIGINT
  • ObjectLength BIGINT
  • Payload CLOB/BLOB、入力テーブルCLOB/BLOB列に基づく。
NOSREAD_PARQUET_SCHEMA
Parquetデータ スキーマに関する情報を返します。Parquetデータ型とTeradataデータ型同士のマッピングの詳細については、<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>のParquet外部ファイルを参照してください。
SAMPLE_PERC
RETURNTYPEがNOSREAD_RECORDのとき、外部ストレージ リポジトリから取得する行数のパーセンテージを指定します。値の有効範囲は’0.0’から’1.0’で、’1.0’は100%の行数を表わします。
デフォルト値は1.0です。
STOREDAS
外部データのフォーマット スタイルを指定します。
  • PARQUETは、外部データがParquetとしてフォーマットされていることを意味します。これは、Parquetデータに必要なパラメータです。
  • TEXTFILEは、外部データがCSVやJSONなどのテキストベースの形式を使用していることを意味します。
デフォルトはTEXTFILEです。
FULLSCAN
READ_NOSが可変長型(CHAR、VARCHAR、BYTE、VARBYTE、JSON、BSON)の列をスキャンして、最大長を検出するかどうかを決定します。
  • TRUEは、可変長データのサイズがParquetデータから判定されることを意味します。
    この値を選択するとパフォーマンスに影響を与える可能性があります。その理由は、その場所にあるParquetファイルごとの可変長データ型列すべてをスキャンして、最大の長さを持つ値を評価する必要があるからです。
  • FALSEは、可変長フィールドのサイズに、特定データ型のVantage最大値が割り当てられることを意味します。
デフォルトはFALSEです。
MANIFEST
LOCATION値がマニフェスト ファイル(読み取るファイルの一覧を含むファイル)またはオブジェクト名を指すかどうかを指定します。オブジェクト名には、完全パスまたは部分パスを含めることができます。その名前からマニフェストを含む単一ファイルが特定される必要があります。
マニフェスト ファイル内の個々のエントリには、完全なパスが示されている必要があります。
以下に、場所に対するエントリのリストを含むJSON形式のマニフェスト ファイルの例を示します。
{
  "entries": [
     {"url":"s3://nos-core-us-east-1/UNICODE/JSON/mln-key/data-10/data-8_9_02-10.json"},
     {"url":"s3://nos-core-us-east-1/UNICODE/JSON/mln-key/data-10/data-8_9_02-101.json"},
     {"url":"s3://nos-core-us-east-1/UNICODE/JSON/mln-key/data-10/data-10-01/data-8_9_02-102.json"},
     {"url":"s3://nos-core-us-east-1/UNICODE/JSON/mln-key/data-10/data-10-01/data-8_9_02-103.json"}
  ]
}
ACCESS_ID
外部ストレージにアクセスするためのID。
このオプションは、例えば関数マッピングのEXTERNAL SECURITY句に許可が定義されている場合や、IAMロールがS3リポジトリに対して定義されている場合などは、指定する必要はありません。<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>のCREATE FUNCTION MAPPINGを参照してください。
ACCESS_KEY
外部ストレージにアクセスするためのパスワード。
このオプションは、例えば関数マッピングのEXTERNAL SECURITY句に許可が定義されている場合や、IAMロールがS3リポジトリに対して定義されている場合などは、指定する必要はありません。<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>のCREATE FUNCTION MAPPINGを参照してください。
ROWFORMAT
外部行のエンコーディング形式を次のように指定します。
ROWFORMAT('{"field_delimiter":",", "record_delimiter":"\n", "character_set":"LATIN"}')
JSON形式を使用してROWFORMATを指定します。上記に示された3つのキーのみを含めることができます。キーの名前と値は、大文字小文字の組み合わせを使用できる"character_set"の値を除いて、大文字と小文字が区別されます。
ROWFORMAT文字セット仕様は、ペイロード列のデータ型と互換性がなければなりません。
Parquet形式のデータにROWFORMATを指定しないでください。
JSON列の場合、以下がデフォルト値になります。
ペイロード文字セット デフォルトの定義
UNICODE
ROWFORMAT('{"record_delimiter":"\n", "character_set":"UTF8"}')
LATIN
ROWFORMAT('{"record_delimiter":"\n", "character_set":"LATIN"}')
CSV列の場合、以下がデフォルト値になります。
ペイロード文字セット デフォルトの定義
UNICODE

ROWFORMAT('{"character_set":"UTF8"}')

これは、READ_NOSの入力テーブルを指定しない場合のデフォルトです。

LATIN ROWFORMAT('{"character_set":"LATIN"}')
次のオプションを指定できます。
field_delimiter
デフォルトは","(カンマ)です。カスタムのフィールド区切り記号(タブ"\t"など)を指定することもできます。
record_delimiter
改行記号: "\n"。改行(\n)は、唯一受け入れられるレコード区切り記号です。
character_set
"UTF8"または"LATIN"
ROWFORMAT列またはペイロード列を指定しない場合、VantageはUTF8ユニコードを前提とします。
HEADER
入力されるCSVファイルの最初のデータ行が、後続のデータ行の列見出しとして解釈されるかどうかを指定します。
このパラメータを使用するのは、CSVデータの列を定義する別のスキーマ オブジェクトにCSV入力ファイルが関連付けられていない場合に限られます。
HEADERの値は'TRUE'または'FALSE'のどちらも可能です。デフォルトは'TRUE'です。