この例では、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テーブルに行があってもテーブル演算子は呼び出されません。