WRITE_NOSを使用するには、外部オブジェクト ストレージから許可されている必要があります。Teradataは、外部ストレージへの許可を提供する方法を2つ提供しています。
- Advanced SQL Engineで許可オブジェクトと関数マッピングを使用します。これにより、外部ストレージの信頼証明が表示されなくなり、ユーザーは信頼証明を知らなくてもクエリーを実行できます。この設定手順をここで説明します。
- ユーザーは、WRITE_NOSコマンドのAUTHORIZATION構文を使用して、外部ストレージに信頼証明を提供できます。この場合、信頼証明はコマンドの一部として提供されるため、ユーザーは信頼証明を知っている必要があります。例: WRITE_NOSとAUTHORIZATIONの使用の例を参照してください。
- 許可オブジェクトと関数マッピングを作成するために必要な権限を持つ管理ユーザーとしてデータベースにログオンします。
- 書き込み先の外部オブジェクト ストアの許可オブジェクトを作成します(まだ行なわれていない場合)。
CREATE AUTHORIZATION DefAuth_Write AS DEFINER TRUSTED USER 'YOUR-ACCESS-KEY-ID' PASSWORD 'YOUR-SECRET-ACCESS-KEY';
サンプルの河川流量データ セットの信頼証明と場所の値については、例の変数置換を参照してください。
- 許可オブジェクトに含まれる信頼証明を非表示にするWRITE_NOSの関数マッピングを作成します。
CREATE FUNCTION MAPPING WRITE_NOS_FM FOR WRITE_NOS EXTERNAL SECURITY DEFINER TRUSTED DefAuth_Write USING LOCATION, STOREDAS, MAXOBJECTSIZE, COMPRESSION, NAMING, INCLUDE_ORDERING, INCLUDE_HASHBY, MANIFESTFILE, MANIFESTONLY, OVERWRITE, ANY IN TABLE;
- 外部オブジェクト ストアからParquetスキーマ、CSV、JSONデータを読み取るために使用するREAD_NOSの関数マッピングを作成します。
CREATE FUNCTION MAPPING READ_NOS_FM1 FOR READ_NOS EXTERNAL SECURITY DEFINER TRUSTED DefAuth_Write USING BUFFERSIZE, SAMPLE_PERC, ROWFORMAT, RETURNTYPE, HEADER, MANIFEST, LOCATION, STOREDAS, FULLSCAN, ANY IN TABLE;
WRITE_NOSは、データをParquet形式で書き出します。WRITE_NOSが外部オブジェクト ストアにデータを書き込んだ後、それを読み取るために外部テーブルを作成する必要があります。外部テーブルの列定義は、ソース テーブルと同じでなければなりません。READ_NOSは、Parquetスキーマ、CSV、およびJSON形式のデータを読み取ることができますが、外部オブジェクト ストアからParquet形式のデータを読み取るためには外部テーブルが必要です。