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
日本語 (日本)
この例では、テーブル内のすべての行をAdvanced SQL EngineからTeradataでサポートされる外部オブジェクト ストアに書き込む方法を示します。

    前提条件

  1. まだ実行されていない場合は、外部オブジェクト ストアにアクセスするための権限を設定します。WRITE_NOSの例に対する許可の設定を参照してください。
  2. まだ実行されていない場合は、データを抽出するデータベース テーブルを設定します。既存のテーブルのいずれかを使用するか、テスト テーブルを設定して例で使用できます。テスト テーブルの設定を参照してください。
  3. まだ完了していない場合は、データを書き込む外部オブジェクト ストアへのアクセスを設定または取得します。外部ストレージ ベンダーの指示に従います。
  4. 例: 外部オブジェクト ストアへの全行の書き込み、HASH BYおよびNAMING('RANGE')の使用

  5. HASH BY SiteNo, NAMING('RANGE')を使用したすべての行の書き込み
    SELECT NodeId, AmpId, Sequence, ObjectName, ObjectSize, RecordCount
    FROM WRITE_NOS_FM (
     ON  ( SELECT * FROM RiverFlowPerm )
      HASH BY SiteNo LOCAL ORDER BY SiteNo
     USING
      LOCATION('YOUR-STORAGE-ACCOUNT/RiverFlowPerm_HashBy/')
      STOREDAS('PARQUET')
      COMPRESSION('GZIP')
      NAMING('RANGE')
      INCLUDE_ORDERING('TRUE')
      INCLUDE_HASHBY('TRUE')
      MAXOBJECTSIZE('4MB')
    ) AS d 
    ORDER BY AmpId;

    LOCATIONを、データを書き込む外部オブジェクト ストアのURIに置き換えます。

    この例で注意すべき点:
    • 結果セットの各行は、Vantageのデータを格納する外部ストレージに書き込まれた1つのオブジェクトを記述します。
    • 各オブジェクトには、HASH BY句に従ってグループ化されたデータが含まれています。この例では、SiteNo列値のハッシュを使用して、データベース テーブルの行データを分散して異なるAMPにグループ化する方法を決定します。この場合、各AMPのデータに対して1つのパーティションがあり、異なる収集サイトからのデータ行の組み合わせが含まれる場合があります。
    • NAMING('RANGE')により、オブジェクトに格納されたデータのサイト番号の範囲のうち、上位および下位の値がオブジェクト名に含まれるようになります。

      オブジェクト名/S3/s3.amazonaws.com/ie-writenos-bucket/RiverFlowPerm_HashBy/09394500/09513780/object_33_0_1.parquetには、サイト09394500と09513780の間(両端含む)にある複数のサイト番号のデータが含まれています。

    • クエリーにはINCLUDE_ORDERING('TRUE')INCLUDE_HASHBY('TRUE')が含まれているため、オブジェクトにはORDER BY列とHASH BY列のデータが含まれます。この場合、両方とも同じ列(SiteNo)であるため、オブジェクトに含まれるデータには、各データ行のSiteNo列値が含まれており、その行のデータが収集された場所を示します。

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

         NodeId          33
          AmpId           0
       Sequence                    1
     ObjectName /S3/s3.amazonaws.com/ie-writenos-bucket/RiverFlowPerm_HashBy/09394500/09513780/object_33_0_1.parquet
     ObjectSize                79398
    RecordCount                11778
    
         NodeId          33
          AmpId           1
       Sequence                    1
     ObjectName /S3/s3.amazonaws.com/ie-writenos-bucket/RiverFlowPerm_HashBy/09380000/09429070/object_33_1_1.parquet
     ObjectSize                84999
    RecordCount                 8926
    
         NodeId          33
          AmpId           2
       Sequence                    1
     ObjectName /S3/s3.amazonaws.com/ie-writenos-bucket/RiverFlowPerm_HashBy/09396100/09400815/object_33_2_1.parquet
     ObjectSize                47659
    RecordCount                 6765
    [...]

    読みやすくするために、出力は縦に表示しています。

  6. 例: 外部オブジェクト ストアへの全行の書き込み、HASH BYおよびNAMING('DISCRETE')の使用

  7. HASH BYとNAMING('DISCRETE')を使用したすべての行の書き込み
    SELECT NodeId, AmpId, Sequence, ObjectName, ObjectSize, RecordCount
    FROM WRITE_NOS_FM (
     ON  ( SELECT * FROM RiverFlowPerm )
      HASH BY SiteNo, Conductance LOCAL ORDER BY SiteNo
     USING
      LOCATION('YOUR-STORAGE-ACCOUNT/RiverFlowPerm_HashBy_Discrete/')
      STOREDAS('PARQUET')
      COMPRESSION('GZIP')
      NAMING('DISCRETE')
      INCLUDE_ORDERING('TRUE')
      INCLUDE_HASHBY('TRUE')
      MAXOBJECTSIZE('4MB')
    ) AS d 
    ORDER BY AmpId;

    LOCATIONを、データを書き込む外部オブジェクト ストアのURIに置き換えます。

    この例で注意すべき点:
    • 結果セットの各行は、Vantageのデータを格納する外部ストレージに書き込まれた1つのオブジェクトを記述します。
    • 各オブジェクトには、HASH BY句に従ってグループ化されたデータが含まれています。この例では、SiteNo列値のハッシュを使用して、データベース テーブルの行データを分散して異なるAMPにグループ化する方法を決定します。この場合、各AMPのデータに対して1つのパーティションがあり、異なる収集サイトからのデータ行の組み合わせが含まれる場合があります。
    • NAMING('DISCRETE')によって、オブジェクト名にパーティション名が含められますが、この場合、オブジェクト名にはSiteNoの値が含まれます。オブジェクト名/S3/s3.amazonaws.com/ie-writenos-bucket/RiverFlowPerm_Discrete/09424900/object_33_0_1.parquetでは、"09424900"がこのオブジェクトに含まれるデータのSiteNoです。
    • クエリーにはINCLUDE_ORDERING('TRUE')INCLUDE_HASHBY('TRUE')が含まれているため、オブジェクトにはORDER BY列とHASH BY列のデータが含まれます。この場合、両方とも同じ列(SiteNo)であるため、オブジェクトに含まれるデータには、各データ行のSiteNo列値が含まれており、その行のデータが収集された場所を示します。

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

         NodeId          33
          AmpId           0
       Sequence                    3
     ObjectName /S3/s3.amazonaws.com/ie-writenos-bucket/RiverFlowPerm_HashBy_Discrete/09424900/object_33_0_3.parquet
     ObjectSize                23551
    RecordCount                 2946
    
         NodeId          33
          AmpId           0
       Sequence                    5
     ObjectName /S3/s3.amazonaws.com/ie-writenos-bucket/RiverFlowPerm_HashBy_Discrete/09513780/object_33_0_5.parquet
     ObjectSize                18668
    RecordCount                 2941
    
         NodeId          33
          AmpId           0
       Sequence                    4
     ObjectName /S3/s3.amazonaws.com/ie-writenos-bucket/RiverFlowPerm_HashBy_Discrete/09497500/object_33_0_4.parquet
     ObjectSize                27504
    RecordCount                 2944
    
    [...]

    読みやすくするために、出力は縦に表示しています。