17.05 - テスト テーブルの設定 - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Release Date
2021年1月
Content Type
プログラミング リファレンス
Publication ID
B035-1214-175K-JPN
Language
日本語 (日本)

WRITE_NOSを使用して、既存のデータベース テーブルからデータをオフロードできます。

または、次の例に示すように、WRITE_NOSを使用して探索するためのテスト テーブルを作成できます。次の例では、Teradataが提供するパブリック外部オブジェクト ストアからテスト テーブルにデータを読み込む方法も示します。

  1. 読み取り元の外部ストレージにアクセスするため、READ_NOSの許可オブジェクトを作成します(まだ実行されていない場合)。例えば、IDやキーを必要としないパブリック オブジェクト ストアに対して許可オブジェクトを作成すると、USERとPASSWORDは空の文字列になります。
    CREATE AUTHORIZATION DefAuth
    AS DEFINER TRUSTED
    USER ''
    PASSWORD '';
  2. 許可オブジェクトを含めるために、READ_NOSの関数マッピングを作成します。
    CREATE FUNCTION MAPPING READ_NOS_Optional
    FOR READ_NOS EXTERNAL SECURITY DEFINER TRUSTED DefAuth
    USING
    BUFFERSIZE,
    SAMPLE_PERC,
    ROWFORMAT,
    RETURNTYPE,
    HEADER,
    MANIFEST,
    LOCATION,
    STOREDAS,
    FULLSCAN,
    ANY IN TABLE;
  3. 外部テーブルを作成するか、外部テーブルの作成をデータベース管理者に依頼します。外部テーブルは、外部ストレージ内のデータにアクセスするために使用されます。
    CREATE FOREIGN TABLE RiverFlow,
    EXTERNAL SECURITY DEFINER TRUSTED DefAuth 
    (
        Location varchar(2048) CHARACTER SET UNICODE CASESPECIFIC,
        Payload JSON(8388096) INLINE LENGTH 32000 CHARACTER SET UNICODE
    )
    USING 
    (
        LOCATION('/s3/td-usgs-public.s3.amazonaws.com/JSONDATA/')
    );

    LOCATIONには、USGSの河川流量データを格納している外部オブジェクト ストアのURIが含まれています。例に示す場所は、TeradataのパブリックS3バケットです。

  4. テーブル内の行をカウントして、データにアクセスできることを検証します。
    SELECT COUNT(*) FROM RiverFlow;

    結果:

      Count(*)
    -----------
          36301
  5. JSON_KEYS関数を実行して、外部テーブルがアクセスするJSONオブジェクトのペイロードに含まれるすべての属性の名前を表示します。
    SELECT DISTINCT * FROM JSON_KEYS (ON (SELECT Payload FROM RiverFlow)) AS j;

    結果:

    JSONKeys
    ----------------------
    "Velocity"
    "datetime"
    "Precipitation"
    "Flow"
    "BatteryVoltage"
    "WaterVelocity"
    "Conductance"
    "Temp"
    "GageHeight2"
    "GageHeight"
    "site_no"
  6. データベースに永久テーブルを作成し、READ_NOSを使用して外部データをロードします。
    CREATE TABLE RiverFlowPerm AS
    (
    SELECT
     CAST(Payload.site_no AS VARCHAR(8) CHARACTER SET UNICODE) SiteNo,
     CAST(Payload.datetime AS TIMESTAMP(0) FORMAT 'YYYY-MM-DDBHH:MI') DateTime,
     CAST(Payload.Flow AS FLOAT) Flow,
     CAST(Payload.GageHeight AS FLOAT) GageHeight1,
     CAST(Payload.Precipitation AS FLOAT) Precipitation,
     CAST(Payload.Temp AS FLOAT) Temperature,
     CAST(Payload.Velocity AS FLOAT) Velocity,
     CAST(Payload.BatteryVoltage AS FLOAT) BatteryVoltage,
     CAST(Payload.GageHeight2 AS FLOAT) GageHeight2,
     CAST(Payload.WaterVelocity AS FLOAT) WaterVelocity,
     CAST(Payload.Conductance AS FLOAT) Conductance
    FROM READ_NOS_Optional (
        ON (SELECT CAST(NULL AS JSON CHARACTER SET UNICODE))
        USING
      LOCATION('/s3/td-usgs-public.s3.amazonaws.com/JSONDATA/')
        ) AS D
    ) WITH DATA;

    LOCATIONには、USGSの河川流量データが格納された外部オブジェクト ストアのURIが含まれています。このクエリーは、外部オブジェクト ストアからデータを読み込むためにREAD_NOSを使用して永久テーブルを作成します。

  7. テーブルがロードされていることを検証します。
    SELECT COUNT(*) FROM RiverFlowPerm;

    結果: このカウントは、以前のカウントと一致します。

       Count(*)
    -----------
          36301
  8. (オプション)他のクエリーを実行してデータを調べます。
    SELECT SiteNo, COUNT(*) FROM RiverFlowPerm GROUP BY 1 ORDER BY 1;
    

    結果:

    SiteNo       Count(*)
    --------  -----------
    09380000         2945
    09394500         2947
    09396100         3086
    09400568         2943
    09400815         3679
    [...]
    SELECT Conductance, COUNT(*) FROM RiverFlowPerm GROUP BY 1 ORDER BY 1;
    

    結果:

               Conductance     Count(*)
    ----------------------  -----------
                         ?        33356
     6.50000000000000E 002            1
     6.51000000000000E 002            1
     6.52000000000000E 002            5
     6.53000000000000E 002            6
     6.54000000000000E 002           18
    [...]
    SELECT TOP 5 DateTime, COUNT(*) FROM RiverFlowPerm GROUP BY 1 ORDER BY 1;
    

    結果:

               DateTime     Count(*)
    -------------------  -----------
    2018-06-27 00:00:00           12
    2018-06-27 00:07:00            1
    2018-06-27 00:15:00           12
    2018-06-27 00:30:00           12
    2018-06-27 00:45:00           12
次のタスクWRITE_NOSの例では、RiverFlowPermというテスト テーブルを使用できます。例: WRITE_NOSとAUTHORIZATIONの使用外部オブジェクト ストアへのすべてのVantageデータの書き込み、および外部オブジェクト ストアへのVantageデータの一部の書き込みを参照してください。