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

Teradata Vantage™ - SQL関数、式、および述部

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

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

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

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

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

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