16.20 - CUBEグループ化セット オプション - 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-1146-162K-JPN
Language
日本語 (日本)

目的

データを複数の次元にグループ分けして分析します。

構文

構文要素

ordinary_grouping_set
複数の次元にまたがるキューブ状のレポート行をグループ分けするのに使う1つまたは複数の式。
すべてのordinary grouping setsは列を明示的に参照しなければなりません。CUBEで列の位置を指定することはできません。
ordinary grouping setに8個より多い列を指定することはできません。
この制限は実際にはキューブ状にできるテーブルの次元の数に関するものです。ROLLUPおよびGROUPING SETSオプションの場合は、値はこの制限よりさらに小さくなります。なぜなら、この値は28、つまり256個の異なる列の組み合わせ(単なる列ではない)の制限を指定するからです。
LOBデータ型の列を参照する場合、最初に別の型にCASTするか、または結果がLOBではない関数に渡さなければ参照できません。たとえば、BLOBをBYTEまたはVARBYTEにキャストしたり、CLOBをCHARACTERまたはVARCHARにキャストします。

ANSI準拠

CUBEは、ANSI SQL:2011に準拠しています。

CUBEのルールと制限

GROUP BY句にCUBEオプションが指定されている問合わせにSAMPLE句を指定することはできません。ただし、そのGROUP BY句のCUBEオプションが派生テーブルまたはビューの中に出現し、SAMPLE句が外問合わせの中に出現する場合を除きます。

CUBEがデータを要約する方法

n個の次元がある場合、CUBEは2n個の異なる種類のグループを生成します。Teradata Databaseでは、各グループを単一の行としてレポートします。

例えば、2個の次元がある場合、CUBEは次のように4個のグループを生成します。

グループ番号 次元1 次元2
1 X X
2 X  
3   X
4    

3個の次元がある場合、CUBEは次のように8個のグループを生成します。

グループ番号 次元1 次元2 次元3
1 X X X
2 X X  
3 X   X
4 X    
5   X X
6   X  
7     X
8      

例: CUBEグループ化

次のsales_viewテーブル データがあると仮定します。

sales_view
PID cost sale margin state county city
1 38350 50150 11800 CA Los Angeles Long Beach
1 63375 82875 19500 CA San Diego San Diego
1 46800 61200 14400 CA Los Angeles Avalon
1 40625 53125 12500 CA Los Angeles Long Beach
2 20000 24750 4750 CA Los Angeles Long Beach
2 4800 5940 1140 CA San Diego Santee
1 57600 71280 13680 CA San Diego San Diego

売上(sale)についてcountyPIDの効果を調べてみましょう。

次のSELECT文は、GROUP BY句でCUBEを使用して、売上(sale)に対するcountyおよびPIDの効果を分析します。

     SELECT pid, county, SUM(sale)
     FROM sales_view
     GROUP BY CUBE (pid,county);

問合わせで以下のデータが報告されます。疑問符(?)はnullを示します。

PID
County
Sum(sale)
---
------
---------
2
Los Angeles
24750
1
Los Angeles
164475
2
San Diego
5940
1
San Diego
154155
2
?
30690
1
?
381630
?
Los Angeles
189225
?
San Diego
160095
?
?
349320
この問合わせでは、countyPIDの次元にまたがって、次の4つの異なるレベルのグループを計算します。
  • countyおよびPIDごと(グループ1~4)。
  • PIDのみ(グループ5と6)。
  • countyのみ(グループ7と8)。
  • 何もなし(グループ9)。すべてのCountyおよびPIDにわたって売上高(sale)を集約します。

nullは、欠落した情報ではなく空のセットを表わすのに使用されています。Nullは、示されているグループ分けレベルでレポートされない情報を意味しており、sales_view基本テーブルから欠落している情報を意味するわけではありません。