16.20 - ウィンドウ指定のパーティション化列のデータおよびリソースの影響 - Teradata Database - Teradata Vantage NewSQL Engine

Teradata Vantage™ SQL関数、演算子、式および述部

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Release Date
2019年3月
Content Type
プログラミング リファレンス
Publication ID
B035-1145-162K-JPN
Language
日本語 (日本)

ウィンドウ指定のPARTITION BY句で指定される列で、順序付き分析関数が実行するパーティションが決定します。 例えば、次の問合わせではPARTITION BY句でStoreID列を指定して、各店舗のグループ売上合計を計算します。

   SELECT StoreID, SMonth, ProdID, Sales, 
   SUM(Sales) OVER (PARTITION BY StoreID)
   FROM sales_tbl;
   

実行時に、Teradata Databaseは1つのパーティションに分類される行のすべてを同じAMPに移動します。多くの行が同じパーティションに分類される場合、AMPではスプール領域が不足する可能性があります。 例えば、先行する問合わせのsales_tblテーブルに何百万または何十億もの行があり、StoreID列に小数の明確な値がある場合は、膨大な数の行が同じパーティションに分類されることになり、スプール不足エラーの原因となります。

この問題を回避するには、PARTITION BY句の列のデータを検査します。 必要に応じて、PARTITION BY句で追加の列を含めるように問合わせを書き換え、Teradata DatabaseがAMPでより均等に分配を行なうことができるように、小さいパーティションを作成します。 例えば、先行する問合わせは、月ごとに各店舗のグループ売上合計を計算するように書き換えることができます。

   SELECT StoreID, SMonth, ProdID, Sales, 
   SUM(Sales) OVER (PARTITION BY StoreID, SMonth)
   FROM sales_tbl;