関数マッピングを使用したREAD_NOSアクセスの制御 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - Native Object Store 入門ガイド

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
ft:locale
ja-JP
ft:lastEdition
2021-09-23
dita:mapPath
ja-JP/gmv1596851589343.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1214
Product Category
Software
Teradata Vantage
許可オブジェクトを使用して作成されたFOREIGN TABLEのクエリーと同様に、READ_NOSクエリーで使用する関数マッピングを作成します。関数マッピングを使用すると、ユーザーが設定しなくても、特定の構成設定のデフォルトを設定できます。
関数マッピングを使用して、WRITE_NOSクエリーでのアクセスを制御することもできます。

関数マッピングの詳細については、<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>と<Teradata Vantage™ - SQLデータ操作言語、B035-1146>を参照してください。

例えば、ユーザーは次のコマンドを実行するために、次の権限が必要です。
  • CREATE AUTHORIZATION
  • CREATE FUNCTION
  1. 許可オブジェクトと関数マッピングの作成に必要な権限を持つユーザーとしてログインします。
  2. DefAuthという許可オブジェクトをまだ作成していない場合は、作成します。
    CREATE AUTHORIZATION authorization_object
    AS DEFINER TRUSTED
    USER 'YOUR-ACCESS-KEY-ID'
    PASSWORD 'YOUR-SECRET-ACCESS-KEY';
  3. 関数マッピングの作成

  4. 関数マッピングを作成します。
    CREATE FUNCTION MAPPING READ_NOS_FM
    FOR READ_NOS EXTERNAL SECURITY DEFINER TRUSTED authorization_object
    USING
    BUFFERSIZE,
    SAMPLE_PERC,
    ROWFORMAT,
    RETURNTYPE,
    HEADER,
    MANIFEST,
    LOCATION,
    STOREDAS,
    FULLSCAN,
    ANY IN TABLE;
  5. 関数マッピングの検証

  6. SELECTクエリーで関数マッピングREAD_NOS_FMを使用します。
    SELECT TOP 2 LOCATION FROM READ_NOS_FM (
    USING
    LOCATION('YOUR-OBJECT-STORE-URI')
    RETURNTYPE('NOSREAD_RECORD')
    ) AS D;

    YOUR-OBJECT-STORE-URIは、外部ストレージの場所です(例: /s3/td-usgs.s3.amazonaws.com/JSONDATA/)。

  7. Teradataが提供するデータを使用してコマンドを実行します。
    CREATE AUTHORIZATION nos_usr.DefAuth
    AS DEFINER TRUSTED
    USER ''
    PASSWORD '';
    
    CREATE FUNCTION MAPPING READ_NOS_FM
    FOR READ_NOS EXTERNAL SECURITY DEFINER TRUSTED DefAuth
    USING
    BUFFERSIZE,
    SAMPLE_PERC,
    ROWFORMAT,
    RETURNTYPE,
    HEADER,
    MANIFEST,
    LOCATION,
    STOREDAS,
    FULLSCAN,
    ANY IN TABLE;
    
    SELECT TOP 2 * FROM READ_NOS_FM (
    USING
    LOCATION('/s3/td-usgs-public.s3.amazonaws.com/JSONDATA/')
    RETURNTYPE('NOSREAD_RECORD')
    ) AS D;

    結果は次のようになります。

            Location /S3/s3.amazonaws.com/td-usgs-public/JSONDATA/09380000/2018/06/30.json
     ObjectVersionId ?
     ObjectTimeStamp                          ?
    OffsetIntoObject                    0
        ObjectLength         151
          ExtraField ?
             Payload { "site_no":"09380000", "datetime":"2018-06-30 00:00", "Flow":"15900", "GageHeight":"9.92", "Temp":"10.4", "Conductance":"685", "Precipitation":"0.00"}
    
            Location /S3/s3.amazonaws.com/td-usgs-public/JSONDATA/09380000/2018/06/29.json
     ObjectVersionId ?
     ObjectTimeStamp                          ?
    OffsetIntoObject                    0
        ObjectLength         151
          ExtraField ?
             Payload { "site_no":"09380000", "datetime":"2018-06-29 00:00", "Flow":"15700", "GageHeight":"9.87", "Temp":"10.6", "Conductance":"684", "Precipitation":"0.00"}

    読みやすいように、出力は縦に表示されます。