ここに示す例は、デモのみを目的としています。完全に実行可能な一連のWRITE_NOSの例については、<Teradata Vantage™- Native Object Store入門ガイド、B035-1214>を参照してください。
パーティション化によるVantageテーブルから外部ストレージへの全データ書き込み
以下に、ネイティブ リレーショナル データベース テーブルから全データを外部オブジェクト ストレージに書き込む例を示します。データは書き込みの前にVantageAdvanced SQL Engineによってパーティション化(ソート)され、外部ストレージ内のデータを含むオブジェクトには、それらに含まれるソート済みデータを反映した名前が付けられます。
SELECT NodeId, AmpId, Sequence, ObjectName, ObjectSize, RecordCount FROM WRITE_NOS_FM ( ON ( SELECT * FROM RiverFlowPerm ) PARTITION BY SiteNo ORDER BY SiteNo USING LOCATION('YOUR-STORAGE-ACCOUNT/RiverFlowPerm_PartitionBy/') STOREDAS('PARQUET') NAMING('DISCRETE') MANIFESTFILE('YOUR-STORAGE-ACCOUNT/RiverFlowPerm_PartitionBy/flowdata_manifest.json') INCLUDE_ORDERING('TRUE') MAXOBJECTSIZE('4MB') COMPRESSION('GZIP') ) AS d ORDER BY AmpId;ここでは、効率的な表示のために、結果セットの例から4行を縦方向のレイアウト(列名が左側)で示しています。
NodeId 33 AmpId 0 Sequence 1 ObjectName YOUR-STORAGE-ACCOUNT/RiverFlowPerm_PartitionBy/09497500/object_33_0_1.parquet ObjectSize 27682 RecordCount 2944 NodeId 33 AmpId 0 Sequence 1 ObjectName YOUR-STORAGE-ACCOUNT/RiverFlowPerm_PartitionBy/09513780/object_33_0_1.parquet ObjectSize 19136 RecordCount 2941 NodeId 33 AmpId 0 Sequence 1 ObjectName YOUR-STORAGE-ACCOUNT/RiverFlowPerm_PartitionBy/09424900/object_33_0_1.parquet ObjectSize 23174 RecordCount 2946 NodeId 33 AmpId 0 Sequence 1 ObjectName YOUR-STORAGE-ACCOUNT/RiverFlowPerm_PartitionBy/flowdata_manifest.json ObjectSize 513 RecordCount ? [...]
この例での注意事項:
- 結果セットの各行は、外部ストレージに書き込まれる1つのオブジェクトを記述します。で終わる名前を持つデータ オブジェクトには.parquetからのデータを含んでいます。Vantage.json拡張子で終わる名前を持つオブジェクトはマニフェスト ファイルで、他のデータ オブジェクトの後に書き込まれます。
- 各データ オブジェクトには、PARTITION BY句に即して作成された1つのパーティションのデータが含まれています。この場合、データ収集サイトごと、つまりSiteNo列の値ごとに1つのパーティションがあります。
- NAMING('DISCRETE')パラメータによって、オブジェクト名にパーティション名が含まれます。この場合オブジェクト名にはSiteNoの値が含まれます。オブジェクト名、YOUR-STORAGE-ACCOUNT/RiverFlowPerm_PartitionBy/09497500/object_33_0_1.parquetでは、"09497500"はこのオブジェクトに含まれるデータのSiteNoです。
- クエリーにはINCLUDE_ORDERING('TRUE')が含まれるので、オブジェクト データにはORDER BY列のデータが含まれます。この場合、その行のデータの収集元のサイト番号になります。
- MANIFESTFILEオプションによって、マニフェスト ファイルが外部ストレージに書き込まれます。マニフェスト ファイルには、WRITE_NOSが書き込んだすべてのオブジェクトが一覧表示されます。
ハッシュを使用したVantageテーブルから外部ストレージへの全データ書き込み
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') NAMING('RANGE') MANIFESTFILE('YOUR-STORAGE-ACCOUNT/RiverFlowPerm_HashBy/flowdata_manifest.json') INCLUDE_ORDERING('TRUE') INCLUDE_HASHBY('TRUE') MAXOBJECTSIZE('4MB') COMPRESSION('GZIP') ) AS d ORDER BY AmpId;
ここでは、効率的な表示のために、結果セットの例から4行を縦方向のレイアウト(列名が左側)で示しています。
NodeId 33 AmpId 0 Sequence 1 ObjectName YOUR-STORAGE-ACCOUNT/RiverFlowPerm_HashBy/09394500/09513780/object_33_0_1.parquet ObjectSize 79398 RecordCount 11778 NodeId 33 AmpId 1 Sequence 1 ObjectName YOUR-STORAGE-ACCOUNT/RiverFlowPerm_HashBy/09380000/09429070/object_33_1_1.parquet ObjectSize 84999 RecordCount 8926 NodeId 33 AmpId 2 Sequence 1 ObjectName YOUR-STORAGE-ACCOUNT/RiverFlowPerm_HashBy/09396100/09400815/object_33_2_1.parquet ObjectSize 47659 RecordCount 6765 NodeId 33 AmpId 0 Sequence 1 ObjectName YOUR-STORAGE-ACCOUNT/RiverFlowPerm_HashBy/flowdata_manifest.json ObjectSize 624 RecordCount ? [...]
この例での注意事項:
- 結果セットの各行は、外部ストレージに書き込まれる1つのオブジェクトを記述します。で終わる名前を持つデータ オブジェクトには.parquetからのデータを含んでいます。Vantage.json拡張子で終わる名前を持つオブジェクトはマニフェスト ファイルで、他のデータ オブジェクトの後に書き込まれます。
- 各オブジェクトには、HASH BY句に即してグループ化されたデータが含まれています。この例では、SiteNo列値のハッシュを使用して、データベース テーブルの行データを異なるAMPに分散してグループ化する方法を決定します。この場合、各AMPのデータに対して1つのパーティションがあり、異なる収集サイトからのデータ行の組み合わせが含まれる場合もあります。
- NAMING('RANGE')パラメータによって、オブジェクト名には、オブジェクトに含まれるデータのサイト番号の範囲で上位および下位の値が含まれます。オブジェクト名、YOUR-STORAGE-ACCOUNT/RiverFlowPerm_HashBy/09394500/09513780/object_33_0_1.parquetには、サイト09394500と9513780の間にある複数サイト番号のデータが含まれます。
- クエリーにはINCLUDE_ORDERING('TRUE')とINCLUDE_HASHBY('TRUE')が含まれるので、オブジェクト データにはORDER BY列とHASH BY列のデータが含まれます。この場合、両方とも同じ列、SiteNoなので、オブジェクトに含まれるデータには、その行のデータの収集元のサイト番号が含まれます。
- MANIFESTFILEオプションによって、マニフェスト ファイルが外部ストレージに書き込まれます。マニフェスト ファイルには、WRITE_NOSが書き込んだすべてのオブジェクトが一覧表示されます。