例: 複数の入力とともにテーブル演算子に使用されるCogroup - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL演算子およびユーザー定義関数

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/fsi1592016213432.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1210
Product Category
Software
Teradata Vantage

この例では、cogroupという、テーブル演算子への複数の入力とともに使用されるグループ化操作について説明します。条件を満たすすべての入力が1つのグループにグループ化されます。Cogroupは複数の入力のパーティション キーに一致するため、結果は正しいものになります。cogroupの使用により、複数の入力ストリームおよびディメンション テーブルとともに使用するテーブル演算子の機能が拡張されます。

以下の2つのテーブルがあると仮定します。

WebLog
cookie cart_amount page
AAAA $60 Thankyou
AAAA $140 Thankyou
BBBB $100 Thankyou
CCCC   Intro
CCCC $200 Thankyou
DDDD $100 Thankyou
AdLog
cookie ad_name action
AAAA Champs Impression
AAAA Puppies Click
BBBB Apples Click
CCCC Baseball Impression
CCCC Apples Click

以下の問合わせを実行します。

SELECT cookie, cart_amt, adname, action
     FROM attribute_sales (
       ON (SELECT cookie,cart_amt FROM weblog
           WHERE page = 'thankyou' ) as W PARTITION BY cookie
       ON adlog as S PARTITION BY cookie) as result1 ;

入力は以下のテーブルのようにグループ化されます。

Grouped and Nested Relations With the Cogroup on Cookie
Cookie WebLog AdLog
AAAA AAAA,$60, thankyou

AAAA,$140,thankyou

AAAA,champs,impression

AAAA,puppies,click

BBBB BBBB,$100,thankyou BBBB,apples,click
CCCC CCCC,$200,thankyou CCCC,baseball,impression

CCCC,apples,click

DDDD DDDD,$100,thankyou  

問合わせの出力は以下のようになります。

adname attr_revenue
champs $40
puppies $160
apples $240
baseball $40

テーブル演算子を呼び出すたびに、同じパーティション キー値を持つ入力のみが呼び出しに関与します。

AMP上にPARTITION BY ANYキー入力およびPARTITION BYキー入力の行がなく、問合わせでDIMENSION入力が使用される場合、そのAMP上でDIMENSIONテーブルに行があってもテーブル演算子は呼び出されません。