blob: f630a88d57799e5cb7ad667e89fd1df14f76f43f [file] [log] [blame]
# TPCDS-Q3
select
dt.d_year,
item.i_brand_id brand_id,
item.i_brand brand,
sum(ss_ext_sales_price) sum_agg
from
date_dim dt,
store_sales,
item
where
dt.d_date_sk = store_sales.ss_sold_date_sk
and store_sales.ss_item_sk = item.i_item_sk
and item.i_manufact_id = 436
and dt.d_moy = 12
and (ss_sold_date_sk between 2451149 and 2451179
or ss_sold_date_sk between 2451514 and 2451544
or ss_sold_date_sk between 2451880 and 2451910
or ss_sold_date_sk between 2452245 and 2452275
or ss_sold_date_sk between 2452610 and 2452640)
group by
dt.d_year,
item.i_brand,
item.i_brand_id
order by
dt.d_year,
sum_agg desc,
brand_id
limit 100
---- PLAN
PLAN-ROOT SINK
|
06:TOP-N [LIMIT=100]
| order by: dt.d_year ASC, sum(ss_ext_sales_price) DESC, item.i_brand_id ASC
|
05:AGGREGATE [FINALIZE]
| output: sum(ss_ext_sales_price)
| group by: dt.d_year, item.i_brand, item.i_brand_id
|
04:HASH JOIN [INNER JOIN]
| hash predicates: dt.d_date_sk = store_sales.ss_sold_date_sk
| runtime filters: RF000 <- store_sales.ss_sold_date_sk
|
|--03:HASH JOIN [INNER JOIN]
| | hash predicates: store_sales.ss_item_sk = item.i_item_sk
| | runtime filters: RF001 <- item.i_item_sk
| |
| |--02:SCAN HDFS [tpcds.item]
| | partitions=1/1 files=1 size=4.82MB
| | predicates: item.i_manufact_id = 436
| |
| 01:SCAN HDFS [tpcds.store_sales]
| partitions=10/120 files=10 size=3.53MB
| runtime filters: RF001 -> store_sales.ss_item_sk
|
00:SCAN HDFS [tpcds.date_dim dt]
partitions=1/1 files=1 size=9.84MB
predicates: dt.d_moy = 12, (dt.d_date_sk >= 2451149 AND dt.d_date_sk <= 2451179 OR dt.d_date_sk >= 2451514 AND dt.d_date_sk <= 2451544 OR dt.d_date_sk >= 2451880 AND dt.d_date_sk <= 2451910 OR dt.d_date_sk >= 2452245 AND dt.d_date_sk <= 2452275 OR dt.d_date_sk >= 2452610 AND dt.d_date_sk <= 2452640)
runtime filters: RF000 -> dt.d_date_sk
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
11:MERGING-EXCHANGE [UNPARTITIONED]
| order by: dt.d_year ASC, sum(ss_ext_sales_price) DESC, item.i_brand_id ASC
| limit: 100
|
06:TOP-N [LIMIT=100]
| order by: dt.d_year ASC, sum(ss_ext_sales_price) DESC, item.i_brand_id ASC
|
10:AGGREGATE [FINALIZE]
| output: sum:merge(ss_ext_sales_price)
| group by: dt.d_year, item.i_brand, item.i_brand_id
|
09:EXCHANGE [HASH(dt.d_year,item.i_brand,item.i_brand_id)]
|
05:AGGREGATE [STREAMING]
| output: sum(ss_ext_sales_price)
| group by: dt.d_year, item.i_brand, item.i_brand_id
|
04:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: dt.d_date_sk = store_sales.ss_sold_date_sk
| runtime filters: RF000 <- store_sales.ss_sold_date_sk
|
|--08:EXCHANGE [BROADCAST]
| |
| 03:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: store_sales.ss_item_sk = item.i_item_sk
| | runtime filters: RF001 <- item.i_item_sk
| |
| |--07:EXCHANGE [BROADCAST]
| | |
| | 02:SCAN HDFS [tpcds.item]
| | partitions=1/1 files=1 size=4.82MB
| | predicates: item.i_manufact_id = 436
| |
| 01:SCAN HDFS [tpcds.store_sales]
| partitions=10/120 files=10 size=3.53MB
| runtime filters: RF001 -> store_sales.ss_item_sk
|
00:SCAN HDFS [tpcds.date_dim dt]
partitions=1/1 files=1 size=9.84MB
predicates: dt.d_moy = 12, (dt.d_date_sk >= 2451149 AND dt.d_date_sk <= 2451179 OR dt.d_date_sk >= 2451514 AND dt.d_date_sk <= 2451544 OR dt.d_date_sk >= 2451880 AND dt.d_date_sk <= 2451910 OR dt.d_date_sk >= 2452245 AND dt.d_date_sk <= 2452275 OR dt.d_date_sk >= 2452610 AND dt.d_date_sk <= 2452640)
runtime filters: RF000 -> dt.d_date_sk
---- PARALLELPLANS
PLAN-ROOT SINK
|
11:MERGING-EXCHANGE [UNPARTITIONED]
| order by: dt.d_year ASC, sum(ss_ext_sales_price) DESC, item.i_brand_id ASC
| limit: 100
|
06:TOP-N [LIMIT=100]
| order by: dt.d_year ASC, sum(ss_ext_sales_price) DESC, item.i_brand_id ASC
|
10:AGGREGATE [FINALIZE]
| output: sum:merge(ss_ext_sales_price)
| group by: dt.d_year, item.i_brand, item.i_brand_id
|
09:EXCHANGE [HASH(dt.d_year,item.i_brand,item.i_brand_id)]
|
05:AGGREGATE [STREAMING]
| output: sum(ss_ext_sales_price)
| group by: dt.d_year, item.i_brand, item.i_brand_id
|
04:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: dt.d_date_sk = store_sales.ss_sold_date_sk
| runtime filters: RF000 <- store_sales.ss_sold_date_sk
|
|--JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: store_sales.ss_sold_date_sk
| |
| 08:EXCHANGE [BROADCAST]
| |
| 03:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: store_sales.ss_item_sk = item.i_item_sk
| | runtime filters: RF001 <- item.i_item_sk
| |
| |--JOIN BUILD
| | | join-table-id=01 plan-id=02 cohort-id=02
| | | build expressions: item.i_item_sk
| | |
| | 07:EXCHANGE [BROADCAST]
| | |
| | 02:SCAN HDFS [tpcds.item]
| | partitions=1/1 files=1 size=4.82MB
| | predicates: item.i_manufact_id = 436
| |
| 01:SCAN HDFS [tpcds.store_sales]
| partitions=10/120 files=10 size=3.53MB
| runtime filters: RF001 -> store_sales.ss_item_sk
|
00:SCAN HDFS [tpcds.date_dim dt]
partitions=1/1 files=1 size=9.84MB
predicates: dt.d_moy = 12, (dt.d_date_sk >= 2451149 AND dt.d_date_sk <= 2451179 OR dt.d_date_sk >= 2451514 AND dt.d_date_sk <= 2451544 OR dt.d_date_sk >= 2451880 AND dt.d_date_sk <= 2451910 OR dt.d_date_sk >= 2452245 AND dt.d_date_sk <= 2452275 OR dt.d_date_sk >= 2452610 AND dt.d_date_sk <= 2452640)
runtime filters: RF000 -> dt.d_date_sk
====
# TPCDS-Q7
select
i_item_id,
avg(ss_quantity) agg1,
avg(ss_list_price) agg2,
avg(ss_coupon_amt) agg3,
avg(ss_sales_price) agg4
from
store_sales,
customer_demographics,
date_dim,
item,
promotion
where
ss_sold_date_sk = d_date_sk
and ss_item_sk = i_item_sk
and ss_cdemo_sk = cd_demo_sk
and ss_promo_sk = p_promo_sk
and cd_gender = 'F'
and cd_marital_status = 'W'
and cd_education_status = 'Primary'
and (p_channel_email = 'N'
or p_channel_event = 'N')
and d_year = 1998
group by
i_item_id
order by
i_item_id
limit 100
---- PLAN
PLAN-ROOT SINK
|
10:TOP-N [LIMIT=100]
| order by: i_item_id ASC
|
09:AGGREGATE [FINALIZE]
| output: avg(ss_quantity), avg(ss_list_price), avg(ss_coupon_amt), avg(ss_sales_price)
| group by: i_item_id
|
08:HASH JOIN [INNER JOIN]
| hash predicates: ss_item_sk = i_item_sk
| runtime filters: RF000 <- i_item_sk
|
|--03:SCAN HDFS [tpcds.item]
| partitions=1/1 files=1 size=4.82MB
|
07:HASH JOIN [INNER JOIN]
| hash predicates: ss_sold_date_sk = d_date_sk
| runtime filters: RF001 <- d_date_sk
|
|--02:SCAN HDFS [tpcds.date_dim]
| partitions=1/1 files=1 size=9.84MB
| predicates: d_year = 1998
|
06:HASH JOIN [INNER JOIN]
| hash predicates: ss_cdemo_sk = cd_demo_sk
| runtime filters: RF002 <- cd_demo_sk
|
|--01:SCAN HDFS [tpcds.customer_demographics]
| partitions=1/1 files=1 size=76.92MB
| predicates: cd_marital_status = 'W', cd_gender = 'F', cd_education_status = 'Primary'
|
05:HASH JOIN [INNER JOIN]
| hash predicates: ss_promo_sk = p_promo_sk
| runtime filters: RF003 <- p_promo_sk
|
|--04:SCAN HDFS [tpcds.promotion]
| partitions=1/1 files=1 size=36.36KB
| predicates: (p_channel_email = 'N' OR p_channel_event = 'N')
|
00:SCAN HDFS [tpcds.store_sales]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF000 -> ss_item_sk, RF001 -> ss_sold_date_sk, RF002 -> ss_cdemo_sk, RF003 -> ss_promo_sk
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
18:MERGING-EXCHANGE [UNPARTITIONED]
| order by: i_item_id ASC
| limit: 100
|
10:TOP-N [LIMIT=100]
| order by: i_item_id ASC
|
17:AGGREGATE [FINALIZE]
| output: avg:merge(ss_quantity), avg:merge(ss_list_price), avg:merge(ss_coupon_amt), avg:merge(ss_sales_price)
| group by: i_item_id
|
16:EXCHANGE [HASH(i_item_id)]
|
09:AGGREGATE [STREAMING]
| output: avg(ss_quantity), avg(ss_list_price), avg(ss_coupon_amt), avg(ss_sales_price)
| group by: i_item_id
|
08:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_item_sk = i_item_sk
| runtime filters: RF000 <- i_item_sk
|
|--15:EXCHANGE [BROADCAST]
| |
| 03:SCAN HDFS [tpcds.item]
| partitions=1/1 files=1 size=4.82MB
|
07:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_sold_date_sk = d_date_sk
| runtime filters: RF001 <- d_date_sk
|
|--14:EXCHANGE [BROADCAST]
| |
| 02:SCAN HDFS [tpcds.date_dim]
| partitions=1/1 files=1 size=9.84MB
| predicates: d_year = 1998
|
06:HASH JOIN [INNER JOIN, PARTITIONED]
| hash predicates: ss_cdemo_sk = cd_demo_sk
| runtime filters: RF002 <- cd_demo_sk
|
|--13:EXCHANGE [HASH(cd_demo_sk)]
| |
| 01:SCAN HDFS [tpcds.customer_demographics]
| partitions=1/1 files=1 size=76.92MB
| predicates: cd_marital_status = 'W', cd_gender = 'F', cd_education_status = 'Primary'
|
12:EXCHANGE [HASH(ss_cdemo_sk)]
|
05:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_promo_sk = p_promo_sk
| runtime filters: RF003 <- p_promo_sk
|
|--11:EXCHANGE [BROADCAST]
| |
| 04:SCAN HDFS [tpcds.promotion]
| partitions=1/1 files=1 size=36.36KB
| predicates: (p_channel_email = 'N' OR p_channel_event = 'N')
|
00:SCAN HDFS [tpcds.store_sales]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF000 -> ss_item_sk, RF001 -> ss_sold_date_sk, RF002 -> ss_cdemo_sk, RF003 -> ss_promo_sk
---- PARALLELPLANS
PLAN-ROOT SINK
|
18:MERGING-EXCHANGE [UNPARTITIONED]
| order by: i_item_id ASC
| limit: 100
|
10:TOP-N [LIMIT=100]
| order by: i_item_id ASC
|
17:AGGREGATE [FINALIZE]
| output: avg:merge(ss_quantity), avg:merge(ss_list_price), avg:merge(ss_coupon_amt), avg:merge(ss_sales_price)
| group by: i_item_id
|
16:EXCHANGE [HASH(i_item_id)]
|
09:AGGREGATE [STREAMING]
| output: avg(ss_quantity), avg(ss_list_price), avg(ss_coupon_amt), avg(ss_sales_price)
| group by: i_item_id
|
08:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_item_sk = i_item_sk
| runtime filters: RF000 <- i_item_sk
|
|--JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: i_item_sk
| |
| 15:EXCHANGE [BROADCAST]
| |
| 03:SCAN HDFS [tpcds.item]
| partitions=1/1 files=1 size=4.82MB
|
07:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_sold_date_sk = d_date_sk
| runtime filters: RF001 <- d_date_sk
|
|--JOIN BUILD
| | join-table-id=01 plan-id=02 cohort-id=01
| | build expressions: d_date_sk
| |
| 14:EXCHANGE [BROADCAST]
| |
| 02:SCAN HDFS [tpcds.date_dim]
| partitions=1/1 files=1 size=9.84MB
| predicates: d_year = 1998
|
06:HASH JOIN [INNER JOIN, PARTITIONED]
| hash predicates: ss_cdemo_sk = cd_demo_sk
| runtime filters: RF002 <- cd_demo_sk
|
|--JOIN BUILD
| | join-table-id=02 plan-id=03 cohort-id=01
| | build expressions: cd_demo_sk
| |
| 13:EXCHANGE [HASH(cd_demo_sk)]
| |
| 01:SCAN HDFS [tpcds.customer_demographics]
| partitions=1/1 files=1 size=76.92MB
| predicates: cd_marital_status = 'W', cd_gender = 'F', cd_education_status = 'Primary'
|
12:EXCHANGE [HASH(ss_cdemo_sk)]
|
05:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_promo_sk = p_promo_sk
| runtime filters: RF003 <- p_promo_sk
|
|--JOIN BUILD
| | join-table-id=03 plan-id=04 cohort-id=01
| | build expressions: p_promo_sk
| |
| 11:EXCHANGE [BROADCAST]
| |
| 04:SCAN HDFS [tpcds.promotion]
| partitions=1/1 files=1 size=36.36KB
| predicates: (p_channel_email = 'N' OR p_channel_event = 'N')
|
00:SCAN HDFS [tpcds.store_sales]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF000 -> ss_item_sk, RF001 -> ss_sold_date_sk, RF002 -> ss_cdemo_sk, RF003 -> ss_promo_sk
====
# TPCDS-Q8
select
s_store_name,
sum(ss_net_profit)
from
store_sales
join store on (store_sales.ss_store_sk = store.s_store_sk)
join
(select
a.ca_zip
from
(select
substr(ca_zip, 1, 5) ca_zip,
count( *) cnt
from
customer_address
join customer on (customer_address.ca_address_sk = customer.c_current_addr_sk)
where
c_preferred_cust_flag = 'Y'
group by
ca_zip
having
count(*) > 10
) a
left semi join
(select
substr(ca_zip, 1, 5) ca_zip
from
customer_address
where
substr(ca_zip, 1, 5) in ('89436', '30868', '65085', '22977', '83927', '77557', '58429', '40697', '80614', '10502', '32779',
'91137', '61265', '98294', '17921', '18427', '21203', '59362', '87291', '84093', '21505', '17184', '10866', '67898', '25797',
'28055', '18377', '80332', '74535', '21757', '29742', '90885', '29898', '17819', '40811', '25990', '47513', '89531', '91068',
'10391', '18846', '99223', '82637', '41368', '83658', '86199', '81625', '26696', '89338', '88425', '32200', '81427', '19053',
'77471', '36610', '99823', '43276', '41249', '48584', '83550', '82276', '18842', '78890', '14090', '38123', '40936', '34425',
'19850', '43286', '80072', '79188', '54191', '11395', '50497', '84861', '90733', '21068', '57666', '37119', '25004', '57835',
'70067', '62878', '95806', '19303', '18840', '19124', '29785', '16737', '16022', '49613', '89977', '68310', '60069', '98360',
'48649', '39050', '41793', '25002', '27413', '39736', '47208', '16515', '94808', '57648', '15009', '80015', '42961', '63982',
'21744', '71853', '81087', '67468', '34175', '64008', '20261', '11201', '51799', '48043', '45645', '61163', '48375', '36447',
'57042', '21218', '41100', '89951', '22745', '35851', '83326', '61125', '78298', '80752', '49858', '52940', '96976', '63792',
'11376', '53582', '18717', '90226', '50530', '94203', '99447', '27670', '96577', '57856', '56372', '16165', '23427', '54561',
'28806', '44439', '22926', '30123', '61451', '92397', '56979', '92309', '70873', '13355', '21801', '46346', '37562', '56458',
'28286', '47306', '99555', '69399', '26234', '47546', '49661', '88601', '35943', '39936', '25632', '24611', '44166', '56648',
'30379', '59785', '11110', '14329', '93815', '52226', '71381', '13842', '25612', '63294', '14664', '21077', '82626', '18799',
'60915', '81020', '56447', '76619', '11433', '13414', '42548', '92713', '70467', '30884', '47484', '16072', '38936', '13036',
'88376', '45539', '35901', '19506', '65690', '73957', '71850', '49231', '14276', '20005', '18384', '76615', '11635', '38177',
'55607', '41369', '95447', '58581', '58149', '91946', '33790', '76232', '75692', '95464', '22246', '51061', '56692', '53121',
'77209', '15482', '10688', '14868', '45907', '73520', '72666', '25734', '17959', '24677', '66446', '94627', '53535', '15560',
'41967', '69297', '11929', '59403', '33283', '52232', '57350', '43933', '40921', '36635', '10827', '71286', '19736', '80619',
'25251', '95042', '15526', '36496', '55854', '49124', '81980', '35375', '49157', '63512', '28944', '14946', '36503', '54010',
'18767', '23969', '43905', '66979', '33113', '21286', '58471', '59080', '13395', '79144', '70373', '67031', '38360', '26705',
'50906', '52406', '26066', '73146', '15884', '31897', '30045', '61068', '45550', '92454', '13376', '14354', '19770', '22928',
'97790', '50723', '46081', '30202', '14410', '20223', '88500', '67298', '13261', '14172', '81410', '93578', '83583', '46047',
'94167', '82564', '21156', '15799', '86709', '37931', '74703', '83103', '23054', '70470', '72008', '49247', '91911', '69998',
'20961', '70070', '63197', '54853', '88191', '91830', '49521', '19454', '81450', '89091', '62378', '25683', '61869', '51744',
'36580', '85778', '36871', '48121', '28810', '83712', '45486', '67393', '26935', '42393', '20132', '55349', '86057', '21309',
'80218', '10094', '11357', '48819', '39734', '40758', '30432', '21204', '29467', '30214', '61024', '55307', '74621', '11622',
'68908', '33032', '52868', '99194', '99900', '84936', '69036', '99149', '45013', '32895', '59004', '32322', '14933', '32936',
'33562', '72550', '27385', '58049', '58200', '16808', '21360', '32961', '18586', '79307', '15492')
) b
on (a.ca_zip = b.ca_zip)
) v1 on (substr(store.s_zip, 1, 2) = substr(v1.ca_zip, 1, 2))
where
ss_sold_date_sk between 2452276 and 2452366
group by
s_store_name
order by
s_store_name
limit 100
---- PLAN
PLAN-ROOT SINK
|
11:TOP-N [LIMIT=100]
| order by: s_store_name ASC
|
10:AGGREGATE [FINALIZE]
| output: sum(ss_net_profit)
| group by: s_store_name
|
09:HASH JOIN [INNER JOIN]
| hash predicates: substr(store.s_zip, 1, 2) = substr(substr(ca_zip, 1, 5), 1, 2)
| runtime filters: RF000 <- substr(substr(ca_zip, 1, 5), 1, 2)
|
|--07:HASH JOIN [RIGHT SEMI JOIN]
| | hash predicates: substr(ca_zip, 1, 5) = substr(ca_zip, 1, 5)
| | runtime filters: RF002 <- substr(ca_zip, 1, 5)
| |
| |--05:AGGREGATE [FINALIZE]
| | | output: count(*)
| | | group by: substr(ca_zip, 1, 5)
| | | having: count(*) > 10
| | |
| | 04:HASH JOIN [INNER JOIN]
| | | hash predicates: customer_address.ca_address_sk = customer.c_current_addr_sk
| | | runtime filters: RF003 <- customer.c_current_addr_sk
| | |
| | |--03:SCAN HDFS [tpcds.customer]
| | | partitions=1/1 files=1 size=12.60MB
| | | predicates: c_preferred_cust_flag = 'Y'
| | |
| | 02:SCAN HDFS [tpcds.customer_address]
| | partitions=1/1 files=1 size=5.25MB
| | runtime filters: RF003 -> customer_address.ca_address_sk
| |
| 06:SCAN HDFS [tpcds.customer_address]
| partitions=1/1 files=1 size=5.25MB
| predicates: substr(ca_zip, 1, 5) IN ('89436', '30868', '65085', '22977', '83927', '77557', '58429', '40697', '80614', '10502', '32779', '91137', '61265', '98294', '17921', '18427', '21203', '59362', '87291', '84093', '21505', '17184', '10866', '67898', '25797', '28055', '18377', '80332', '74535', '21757', '29742', '90885', '29898', '17819', '40811', '25990', '47513', '89531', '91068', '10391', '18846', '99223', '82637', '41368', '83658', '86199', '81625', '26696', '89338', '88425', '32200', '81427', '19053', '77471', '36610', '99823', '43276', '41249', '48584', '83550', '82276', '18842', '78890', '14090', '38123', '40936', '34425', '19850', '43286', '80072', '79188', '54191', '11395', '50497', '84861', '90733', '21068', '57666', '37119', '25004', '57835', '70067', '62878', '95806', '19303', '18840', '19124', '29785', '16737', '16022', '49613', '89977', '68310', '60069', '98360', '48649', '39050', '41793', '25002', '27413', '39736', '47208', '16515', '94808', '57648', '15009', '80015', '42961', '63982', '21744', '71853', '81087', '67468', '34175', '64008', '20261', '11201', '51799', '48043', '45645', '61163', '48375', '36447', '57042', '21218', '41100', '89951', '22745', '35851', '83326', '61125', '78298', '80752', '49858', '52940', '96976', '63792', '11376', '53582', '18717', '90226', '50530', '94203', '99447', '27670', '96577', '57856', '56372', '16165', '23427', '54561', '28806', '44439', '22926', '30123', '61451', '92397', '56979', '92309', '70873', '13355', '21801', '46346', '37562', '56458', '28286', '47306', '99555', '69399', '26234', '47546', '49661', '88601', '35943', '39936', '25632', '24611', '44166', '56648', '30379', '59785', '11110', '14329', '93815', '52226', '71381', '13842', '25612', '63294', '14664', '21077', '82626', '18799', '60915', '81020', '56447', '76619', '11433', '13414', '42548', '92713', '70467', '30884', '47484', '16072', '38936', '13036', '88376', '45539', '35901', '19506', '65690', '73957', '71850', '49231', '14276', '20005', '18384', '76615', '11635', '38177', '55607', '41369', '95447', '58581', '58149', '91946', '33790', '76232', '75692', '95464', '22246', '51061', '56692', '53121', '77209', '15482', '10688', '14868', '45907', '73520', '72666', '25734', '17959', '24677', '66446', '94627', '53535', '15560', '41967', '69297', '11929', '59403', '33283', '52232', '57350', '43933', '40921', '36635', '10827', '71286', '19736', '80619', '25251', '95042', '15526', '36496', '55854', '49124', '81980', '35375', '49157', '63512', '28944', '14946', '36503', '54010', '18767', '23969', '43905', '66979', '33113', '21286', '58471', '59080', '13395', '79144', '70373', '67031', '38360', '26705', '50906', '52406', '26066', '73146', '15884', '31897', '30045', '61068', '45550', '92454', '13376', '14354', '19770', '22928', '97790', '50723', '46081', '30202', '14410', '20223', '88500', '67298', '13261', '14172', '81410', '93578', '83583', '46047', '94167', '82564', '21156', '15799', '86709', '37931', '74703', '83103', '23054', '70470', '72008', '49247', '91911', '69998', '20961', '70070', '63197', '54853', '88191', '91830', '49521', '19454', '81450', '89091', '62378', '25683', '61869', '51744', '36580', '85778', '36871', '48121', '28810', '83712', '45486', '67393', '26935', '42393', '20132', '55349', '86057', '21309', '80218', '10094', '11357', '48819', '39734', '40758', '30432', '21204', '29467', '30214', '61024', '55307', '74621', '11622', '68908', '33032', '52868', '99194', '99900', '84936', '69036', '99149', '45013', '32895', '59004', '32322', '14933', '32936', '33562', '72550', '27385', '58049', '58200', '16808', '21360', '32961', '18586', '79307', '15492')
| runtime filters: RF002 -> substr(ca_zip, 1, 5)
|
08:HASH JOIN [INNER JOIN]
| hash predicates: store_sales.ss_store_sk = store.s_store_sk
| runtime filters: RF001 <- store.s_store_sk
|
|--01:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
| runtime filters: RF000 -> substr(store.s_zip, 1, 2)
|
00:SCAN HDFS [tpcds.store_sales]
partitions=7/120 files=7 size=1.02MB
runtime filters: RF001 -> store_sales.ss_store_sk
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
20:MERGING-EXCHANGE [UNPARTITIONED]
| order by: s_store_name ASC
| limit: 100
|
11:TOP-N [LIMIT=100]
| order by: s_store_name ASC
|
19:AGGREGATE [FINALIZE]
| output: sum:merge(ss_net_profit)
| group by: s_store_name
|
18:EXCHANGE [HASH(s_store_name)]
|
10:AGGREGATE [STREAMING]
| output: sum(ss_net_profit)
| group by: s_store_name
|
09:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: substr(store.s_zip, 1, 2) = substr(substr(ca_zip, 1, 5), 1, 2)
| runtime filters: RF000 <- substr(substr(ca_zip, 1, 5), 1, 2)
|
|--17:EXCHANGE [BROADCAST]
| |
| 07:HASH JOIN [RIGHT SEMI JOIN, PARTITIONED]
| | hash predicates: substr(ca_zip, 1, 5) = substr(ca_zip, 1, 5)
| | runtime filters: RF002 <- substr(ca_zip, 1, 5)
| |
| |--15:AGGREGATE [FINALIZE]
| | | output: count:merge(*)
| | | group by: substr(ca_zip, 1, 5)
| | | having: count(*) > 10
| | |
| | 14:EXCHANGE [HASH(substr(ca_zip, 1, 5))]
| | |
| | 05:AGGREGATE [STREAMING]
| | | output: count(*)
| | | group by: substr(ca_zip, 1, 5)
| | |
| | 04:HASH JOIN [INNER JOIN, BROADCAST]
| | | hash predicates: customer_address.ca_address_sk = customer.c_current_addr_sk
| | | runtime filters: RF003 <- customer.c_current_addr_sk
| | |
| | |--13:EXCHANGE [BROADCAST]
| | | |
| | | 03:SCAN HDFS [tpcds.customer]
| | | partitions=1/1 files=1 size=12.60MB
| | | predicates: c_preferred_cust_flag = 'Y'
| | |
| | 02:SCAN HDFS [tpcds.customer_address]
| | partitions=1/1 files=1 size=5.25MB
| | runtime filters: RF003 -> customer_address.ca_address_sk
| |
| 16:EXCHANGE [HASH(substr(ca_zip, 1, 5))]
| |
| 06:SCAN HDFS [tpcds.customer_address]
| partitions=1/1 files=1 size=5.25MB
| predicates: substr(ca_zip, 1, 5) IN ('89436', '30868', '65085', '22977', '83927', '77557', '58429', '40697', '80614', '10502', '32779', '91137', '61265', '98294', '17921', '18427', '21203', '59362', '87291', '84093', '21505', '17184', '10866', '67898', '25797', '28055', '18377', '80332', '74535', '21757', '29742', '90885', '29898', '17819', '40811', '25990', '47513', '89531', '91068', '10391', '18846', '99223', '82637', '41368', '83658', '86199', '81625', '26696', '89338', '88425', '32200', '81427', '19053', '77471', '36610', '99823', '43276', '41249', '48584', '83550', '82276', '18842', '78890', '14090', '38123', '40936', '34425', '19850', '43286', '80072', '79188', '54191', '11395', '50497', '84861', '90733', '21068', '57666', '37119', '25004', '57835', '70067', '62878', '95806', '19303', '18840', '19124', '29785', '16737', '16022', '49613', '89977', '68310', '60069', '98360', '48649', '39050', '41793', '25002', '27413', '39736', '47208', '16515', '94808', '57648', '15009', '80015', '42961', '63982', '21744', '71853', '81087', '67468', '34175', '64008', '20261', '11201', '51799', '48043', '45645', '61163', '48375', '36447', '57042', '21218', '41100', '89951', '22745', '35851', '83326', '61125', '78298', '80752', '49858', '52940', '96976', '63792', '11376', '53582', '18717', '90226', '50530', '94203', '99447', '27670', '96577', '57856', '56372', '16165', '23427', '54561', '28806', '44439', '22926', '30123', '61451', '92397', '56979', '92309', '70873', '13355', '21801', '46346', '37562', '56458', '28286', '47306', '99555', '69399', '26234', '47546', '49661', '88601', '35943', '39936', '25632', '24611', '44166', '56648', '30379', '59785', '11110', '14329', '93815', '52226', '71381', '13842', '25612', '63294', '14664', '21077', '82626', '18799', '60915', '81020', '56447', '76619', '11433', '13414', '42548', '92713', '70467', '30884', '47484', '16072', '38936', '13036', '88376', '45539', '35901', '19506', '65690', '73957', '71850', '49231', '14276', '20005', '18384', '76615', '11635', '38177', '55607', '41369', '95447', '58581', '58149', '91946', '33790', '76232', '75692', '95464', '22246', '51061', '56692', '53121', '77209', '15482', '10688', '14868', '45907', '73520', '72666', '25734', '17959', '24677', '66446', '94627', '53535', '15560', '41967', '69297', '11929', '59403', '33283', '52232', '57350', '43933', '40921', '36635', '10827', '71286', '19736', '80619', '25251', '95042', '15526', '36496', '55854', '49124', '81980', '35375', '49157', '63512', '28944', '14946', '36503', '54010', '18767', '23969', '43905', '66979', '33113', '21286', '58471', '59080', '13395', '79144', '70373', '67031', '38360', '26705', '50906', '52406', '26066', '73146', '15884', '31897', '30045', '61068', '45550', '92454', '13376', '14354', '19770', '22928', '97790', '50723', '46081', '30202', '14410', '20223', '88500', '67298', '13261', '14172', '81410', '93578', '83583', '46047', '94167', '82564', '21156', '15799', '86709', '37931', '74703', '83103', '23054', '70470', '72008', '49247', '91911', '69998', '20961', '70070', '63197', '54853', '88191', '91830', '49521', '19454', '81450', '89091', '62378', '25683', '61869', '51744', '36580', '85778', '36871', '48121', '28810', '83712', '45486', '67393', '26935', '42393', '20132', '55349', '86057', '21309', '80218', '10094', '11357', '48819', '39734', '40758', '30432', '21204', '29467', '30214', '61024', '55307', '74621', '11622', '68908', '33032', '52868', '99194', '99900', '84936', '69036', '99149', '45013', '32895', '59004', '32322', '14933', '32936', '33562', '72550', '27385', '58049', '58200', '16808', '21360', '32961', '18586', '79307', '15492')
| runtime filters: RF002 -> substr(ca_zip, 1, 5)
|
08:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: store_sales.ss_store_sk = store.s_store_sk
| runtime filters: RF001 <- store.s_store_sk
|
|--12:EXCHANGE [BROADCAST]
| |
| 01:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
| runtime filters: RF000 -> substr(store.s_zip, 1, 2)
|
00:SCAN HDFS [tpcds.store_sales]
partitions=7/120 files=7 size=1.02MB
runtime filters: RF001 -> store_sales.ss_store_sk
---- PARALLELPLANS
PLAN-ROOT SINK
|
20:MERGING-EXCHANGE [UNPARTITIONED]
| order by: s_store_name ASC
| limit: 100
|
11:TOP-N [LIMIT=100]
| order by: s_store_name ASC
|
19:AGGREGATE [FINALIZE]
| output: sum:merge(ss_net_profit)
| group by: s_store_name
|
18:EXCHANGE [HASH(s_store_name)]
|
10:AGGREGATE [STREAMING]
| output: sum(ss_net_profit)
| group by: s_store_name
|
09:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: substr(store.s_zip, 1, 2) = substr(substr(ca_zip, 1, 5), 1, 2)
| runtime filters: RF000 <- substr(substr(ca_zip, 1, 5), 1, 2)
|
|--JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: substr(substr(ca_zip, 1, 5), 1, 2)
| |
| 17:EXCHANGE [BROADCAST]
| |
| 07:HASH JOIN [RIGHT SEMI JOIN, PARTITIONED]
| | hash predicates: substr(ca_zip, 1, 5) = substr(ca_zip, 1, 5)
| | runtime filters: RF002 <- substr(ca_zip, 1, 5)
| |
| |--JOIN BUILD
| | | join-table-id=01 plan-id=02 cohort-id=02
| | | build expressions: substr(ca_zip, 1, 5)
| | |
| | 15:AGGREGATE [FINALIZE]
| | | output: count:merge(*)
| | | group by: substr(ca_zip, 1, 5)
| | | having: count(*) > 10
| | |
| | 14:EXCHANGE [HASH(substr(ca_zip, 1, 5))]
| | |
| | 05:AGGREGATE [STREAMING]
| | | output: count(*)
| | | group by: substr(ca_zip, 1, 5)
| | |
| | 04:HASH JOIN [INNER JOIN, BROADCAST]
| | | hash predicates: customer_address.ca_address_sk = customer.c_current_addr_sk
| | | runtime filters: RF003 <- customer.c_current_addr_sk
| | |
| | |--JOIN BUILD
| | | | join-table-id=02 plan-id=03 cohort-id=03
| | | | build expressions: customer.c_current_addr_sk
| | | |
| | | 13:EXCHANGE [BROADCAST]
| | | |
| | | 03:SCAN HDFS [tpcds.customer]
| | | partitions=1/1 files=1 size=12.60MB
| | | predicates: c_preferred_cust_flag = 'Y'
| | |
| | 02:SCAN HDFS [tpcds.customer_address]
| | partitions=1/1 files=1 size=5.25MB
| | runtime filters: RF003 -> customer_address.ca_address_sk
| |
| 16:EXCHANGE [HASH(substr(ca_zip, 1, 5))]
| |
| 06:SCAN HDFS [tpcds.customer_address]
| partitions=1/1 files=1 size=5.25MB
| predicates: substr(ca_zip, 1, 5) IN ('89436', '30868', '65085', '22977', '83927', '77557', '58429', '40697', '80614', '10502', '32779', '91137', '61265', '98294', '17921', '18427', '21203', '59362', '87291', '84093', '21505', '17184', '10866', '67898', '25797', '28055', '18377', '80332', '74535', '21757', '29742', '90885', '29898', '17819', '40811', '25990', '47513', '89531', '91068', '10391', '18846', '99223', '82637', '41368', '83658', '86199', '81625', '26696', '89338', '88425', '32200', '81427', '19053', '77471', '36610', '99823', '43276', '41249', '48584', '83550', '82276', '18842', '78890', '14090', '38123', '40936', '34425', '19850', '43286', '80072', '79188', '54191', '11395', '50497', '84861', '90733', '21068', '57666', '37119', '25004', '57835', '70067', '62878', '95806', '19303', '18840', '19124', '29785', '16737', '16022', '49613', '89977', '68310', '60069', '98360', '48649', '39050', '41793', '25002', '27413', '39736', '47208', '16515', '94808', '57648', '15009', '80015', '42961', '63982', '21744', '71853', '81087', '67468', '34175', '64008', '20261', '11201', '51799', '48043', '45645', '61163', '48375', '36447', '57042', '21218', '41100', '89951', '22745', '35851', '83326', '61125', '78298', '80752', '49858', '52940', '96976', '63792', '11376', '53582', '18717', '90226', '50530', '94203', '99447', '27670', '96577', '57856', '56372', '16165', '23427', '54561', '28806', '44439', '22926', '30123', '61451', '92397', '56979', '92309', '70873', '13355', '21801', '46346', '37562', '56458', '28286', '47306', '99555', '69399', '26234', '47546', '49661', '88601', '35943', '39936', '25632', '24611', '44166', '56648', '30379', '59785', '11110', '14329', '93815', '52226', '71381', '13842', '25612', '63294', '14664', '21077', '82626', '18799', '60915', '81020', '56447', '76619', '11433', '13414', '42548', '92713', '70467', '30884', '47484', '16072', '38936', '13036', '88376', '45539', '35901', '19506', '65690', '73957', '71850', '49231', '14276', '20005', '18384', '76615', '11635', '38177', '55607', '41369', '95447', '58581', '58149', '91946', '33790', '76232', '75692', '95464', '22246', '51061', '56692', '53121', '77209', '15482', '10688', '14868', '45907', '73520', '72666', '25734', '17959', '24677', '66446', '94627', '53535', '15560', '41967', '69297', '11929', '59403', '33283', '52232', '57350', '43933', '40921', '36635', '10827', '71286', '19736', '80619', '25251', '95042', '15526', '36496', '55854', '49124', '81980', '35375', '49157', '63512', '28944', '14946', '36503', '54010', '18767', '23969', '43905', '66979', '33113', '21286', '58471', '59080', '13395', '79144', '70373', '67031', '38360', '26705', '50906', '52406', '26066', '73146', '15884', '31897', '30045', '61068', '45550', '92454', '13376', '14354', '19770', '22928', '97790', '50723', '46081', '30202', '14410', '20223', '88500', '67298', '13261', '14172', '81410', '93578', '83583', '46047', '94167', '82564', '21156', '15799', '86709', '37931', '74703', '83103', '23054', '70470', '72008', '49247', '91911', '69998', '20961', '70070', '63197', '54853', '88191', '91830', '49521', '19454', '81450', '89091', '62378', '25683', '61869', '51744', '36580', '85778', '36871', '48121', '28810', '83712', '45486', '67393', '26935', '42393', '20132', '55349', '86057', '21309', '80218', '10094', '11357', '48819', '39734', '40758', '30432', '21204', '29467', '30214', '61024', '55307', '74621', '11622', '68908', '33032', '52868', '99194', '99900', '84936', '69036', '99149', '45013', '32895', '59004', '32322', '14933', '32936', '33562', '72550', '27385', '58049', '58200', '16808', '21360', '32961', '18586', '79307', '15492')
| runtime filters: RF002 -> substr(ca_zip, 1, 5)
|
08:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: store_sales.ss_store_sk = store.s_store_sk
| runtime filters: RF001 <- store.s_store_sk
|
|--JOIN BUILD
| | join-table-id=03 plan-id=04 cohort-id=01
| | build expressions: store.s_store_sk
| |
| 12:EXCHANGE [BROADCAST]
| |
| 01:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
| runtime filters: RF000 -> substr(store.s_zip, 1, 2)
|
00:SCAN HDFS [tpcds.store_sales]
partitions=7/120 files=7 size=1.02MB
runtime filters: RF001 -> store_sales.ss_store_sk
====
# TPCDS-Q19
select
i_brand_id brand_id,
i_brand brand,
i_manufact_id,
i_manufact,
sum(ss_ext_sales_price) ext_price
from
date_dim,
store_sales,
item,
customer,
customer_address,
store
where
d_date_sk = ss_sold_date_sk
and ss_item_sk = i_item_sk
and i_manager_id = 7
and d_moy = 11
and d_year = 1999
and ss_customer_sk = c_customer_sk
and c_current_addr_sk = ca_address_sk
and substr(ca_zip, 1, 5) <> substr(s_zip, 1, 5)
and ss_store_sk = s_store_sk
and ss_sold_date_sk between 2451484 and 2451513
group by
i_brand,
i_brand_id,
i_manufact_id,
i_manufact
order by
ext_price desc,
i_brand,
i_brand_id,
i_manufact_id,
i_manufact
limit 100
---- PLAN
PLAN-ROOT SINK
|
12:TOP-N [LIMIT=100]
| order by: sum(ss_ext_sales_price) DESC, i_brand ASC, i_brand_id ASC, i_manufact_id ASC, i_manufact ASC
|
11:AGGREGATE [FINALIZE]
| output: sum(ss_ext_sales_price)
| group by: i_brand, i_brand_id, i_manufact_id, i_manufact
|
10:HASH JOIN [INNER JOIN]
| hash predicates: ss_store_sk = s_store_sk
| other predicates: substr(ca_zip, 1, 5) != substr(s_zip, 1, 5)
| runtime filters: RF000 <- s_store_sk
|
|--05:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
|
09:HASH JOIN [INNER JOIN]
| hash predicates: ss_sold_date_sk = d_date_sk
| runtime filters: RF001 <- d_date_sk
|
|--00:SCAN HDFS [tpcds.date_dim]
| partitions=1/1 files=1 size=9.84MB
| predicates: d_year = 1999, d_moy = 11, tpcds.date_dim.d_date_sk <= 2451513, tpcds.date_dim.d_date_sk >= 2451484
|
08:HASH JOIN [INNER JOIN]
| hash predicates: ss_item_sk = i_item_sk
| runtime filters: RF002 <- i_item_sk
|
|--02:SCAN HDFS [tpcds.item]
| partitions=1/1 files=1 size=4.82MB
| predicates: i_manager_id = 7
|
07:HASH JOIN [INNER JOIN]
| hash predicates: c_customer_sk = ss_customer_sk
| runtime filters: RF003 <- ss_customer_sk
|
|--01:SCAN HDFS [tpcds.store_sales]
| partitions=2/120 files=2 size=604.05KB
| runtime filters: RF000 -> ss_store_sk, RF001 -> ss_sold_date_sk, RF002 -> ss_item_sk
|
06:HASH JOIN [INNER JOIN]
| hash predicates: ca_address_sk = c_current_addr_sk
| runtime filters: RF004 <- c_current_addr_sk
|
|--03:SCAN HDFS [tpcds.customer]
| partitions=1/1 files=1 size=12.60MB
| runtime filters: RF003 -> c_customer_sk
|
04:SCAN HDFS [tpcds.customer_address]
partitions=1/1 files=1 size=5.25MB
runtime filters: RF004 -> ca_address_sk
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
20:MERGING-EXCHANGE [UNPARTITIONED]
| order by: sum(ss_ext_sales_price) DESC, i_brand ASC, i_brand_id ASC, i_manufact_id ASC, i_manufact ASC
| limit: 100
|
12:TOP-N [LIMIT=100]
| order by: sum(ss_ext_sales_price) DESC, i_brand ASC, i_brand_id ASC, i_manufact_id ASC, i_manufact ASC
|
19:AGGREGATE [FINALIZE]
| output: sum:merge(ss_ext_sales_price)
| group by: i_brand, i_brand_id, i_manufact_id, i_manufact
|
18:EXCHANGE [HASH(i_brand,i_brand_id,i_manufact_id,i_manufact)]
|
11:AGGREGATE [STREAMING]
| output: sum(ss_ext_sales_price)
| group by: i_brand, i_brand_id, i_manufact_id, i_manufact
|
10:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_store_sk = s_store_sk
| other predicates: substr(ca_zip, 1, 5) != substr(s_zip, 1, 5)
| runtime filters: RF000 <- s_store_sk
|
|--17:EXCHANGE [BROADCAST]
| |
| 05:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
|
09:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_sold_date_sk = d_date_sk
| runtime filters: RF001 <- d_date_sk
|
|--16:EXCHANGE [BROADCAST]
| |
| 00:SCAN HDFS [tpcds.date_dim]
| partitions=1/1 files=1 size=9.84MB
| predicates: d_year = 1999, d_moy = 11, tpcds.date_dim.d_date_sk <= 2451513, tpcds.date_dim.d_date_sk >= 2451484
|
08:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_item_sk = i_item_sk
| runtime filters: RF002 <- i_item_sk
|
|--15:EXCHANGE [BROADCAST]
| |
| 02:SCAN HDFS [tpcds.item]
| partitions=1/1 files=1 size=4.82MB
| predicates: i_manager_id = 7
|
07:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: c_customer_sk = ss_customer_sk
| runtime filters: RF003 <- ss_customer_sk
|
|--14:EXCHANGE [BROADCAST]
| |
| 01:SCAN HDFS [tpcds.store_sales]
| partitions=2/120 files=2 size=604.05KB
| runtime filters: RF000 -> ss_store_sk, RF001 -> ss_sold_date_sk, RF002 -> ss_item_sk
|
06:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ca_address_sk = c_current_addr_sk
| runtime filters: RF004 <- c_current_addr_sk
|
|--13:EXCHANGE [BROADCAST]
| |
| 03:SCAN HDFS [tpcds.customer]
| partitions=1/1 files=1 size=12.60MB
| runtime filters: RF003 -> c_customer_sk
|
04:SCAN HDFS [tpcds.customer_address]
partitions=1/1 files=1 size=5.25MB
runtime filters: RF004 -> ca_address_sk
---- PARALLELPLANS
PLAN-ROOT SINK
|
20:MERGING-EXCHANGE [UNPARTITIONED]
| order by: sum(ss_ext_sales_price) DESC, i_brand ASC, i_brand_id ASC, i_manufact_id ASC, i_manufact ASC
| limit: 100
|
12:TOP-N [LIMIT=100]
| order by: sum(ss_ext_sales_price) DESC, i_brand ASC, i_brand_id ASC, i_manufact_id ASC, i_manufact ASC
|
19:AGGREGATE [FINALIZE]
| output: sum:merge(ss_ext_sales_price)
| group by: i_brand, i_brand_id, i_manufact_id, i_manufact
|
18:EXCHANGE [HASH(i_brand,i_brand_id,i_manufact_id,i_manufact)]
|
11:AGGREGATE [STREAMING]
| output: sum(ss_ext_sales_price)
| group by: i_brand, i_brand_id, i_manufact_id, i_manufact
|
10:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_store_sk = s_store_sk
| other predicates: substr(ca_zip, 1, 5) != substr(s_zip, 1, 5)
| runtime filters: RF000 <- s_store_sk
|
|--JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: s_store_sk
| |
| 17:EXCHANGE [BROADCAST]
| |
| 05:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
|
09:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_sold_date_sk = d_date_sk
| runtime filters: RF001 <- d_date_sk
|
|--JOIN BUILD
| | join-table-id=01 plan-id=02 cohort-id=01
| | build expressions: d_date_sk
| |
| 16:EXCHANGE [BROADCAST]
| |
| 00:SCAN HDFS [tpcds.date_dim]
| partitions=1/1 files=1 size=9.84MB
| predicates: d_year = 1999, d_moy = 11, tpcds.date_dim.d_date_sk <= 2451513, tpcds.date_dim.d_date_sk >= 2451484
|
08:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_item_sk = i_item_sk
| runtime filters: RF002 <- i_item_sk
|
|--JOIN BUILD
| | join-table-id=02 plan-id=03 cohort-id=01
| | build expressions: i_item_sk
| |
| 15:EXCHANGE [BROADCAST]
| |
| 02:SCAN HDFS [tpcds.item]
| partitions=1/1 files=1 size=4.82MB
| predicates: i_manager_id = 7
|
07:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: c_customer_sk = ss_customer_sk
| runtime filters: RF003 <- ss_customer_sk
|
|--JOIN BUILD
| | join-table-id=03 plan-id=04 cohort-id=01
| | build expressions: ss_customer_sk
| |
| 14:EXCHANGE [BROADCAST]
| |
| 01:SCAN HDFS [tpcds.store_sales]
| partitions=2/120 files=2 size=604.05KB
| runtime filters: RF000 -> ss_store_sk, RF001 -> ss_sold_date_sk, RF002 -> ss_item_sk
|
06:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ca_address_sk = c_current_addr_sk
| runtime filters: RF004 <- c_current_addr_sk
|
|--JOIN BUILD
| | join-table-id=04 plan-id=05 cohort-id=01
| | build expressions: c_current_addr_sk
| |
| 13:EXCHANGE [BROADCAST]
| |
| 03:SCAN HDFS [tpcds.customer]
| partitions=1/1 files=1 size=12.60MB
| runtime filters: RF003 -> c_customer_sk
|
04:SCAN HDFS [tpcds.customer_address]
partitions=1/1 files=1 size=5.25MB
runtime filters: RF004 -> ca_address_sk
====
# TPCDS-Q27
select
i_item_id,
s_state,
avg(ss_quantity) agg1,
avg(ss_list_price) agg2,
avg(ss_coupon_amt) agg3,
avg(ss_sales_price) agg4
from
store_sales,
customer_demographics,
date_dim,
store,
item
where
ss_sold_date_sk = d_date_sk
and ss_item_sk = i_item_sk
and ss_store_sk = s_store_sk
and ss_cdemo_sk = cd_demo_sk
and cd_gender = 'F'
and cd_marital_status = 'W'
and cd_education_status = 'Primary'
and d_year = 1998
and s_state in ('WI', 'CA', 'TX', 'FL', 'WA', 'TN')
group by
i_item_id,
s_state
order by
i_item_id,
s_state
limit 100
---- PLAN
PLAN-ROOT SINK
|
10:TOP-N [LIMIT=100]
| order by: i_item_id ASC, s_state ASC
|
09:AGGREGATE [FINALIZE]
| output: avg(ss_quantity), avg(ss_list_price), avg(ss_coupon_amt), avg(ss_sales_price)
| group by: i_item_id, s_state
|
08:HASH JOIN [INNER JOIN]
| hash predicates: ss_item_sk = i_item_sk
| runtime filters: RF000 <- i_item_sk
|
|--04:SCAN HDFS [tpcds.item]
| partitions=1/1 files=1 size=4.82MB
|
07:HASH JOIN [INNER JOIN]
| hash predicates: ss_store_sk = s_store_sk
| runtime filters: RF001 <- s_store_sk
|
|--03:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
| predicates: s_state IN ('WI', 'CA', 'TX', 'FL', 'WA', 'TN')
|
06:HASH JOIN [INNER JOIN]
| hash predicates: ss_sold_date_sk = d_date_sk
| runtime filters: RF002 <- d_date_sk
|
|--02:SCAN HDFS [tpcds.date_dim]
| partitions=1/1 files=1 size=9.84MB
| predicates: d_year = 1998
|
05:HASH JOIN [INNER JOIN]
| hash predicates: ss_cdemo_sk = cd_demo_sk
| runtime filters: RF003 <- cd_demo_sk
|
|--01:SCAN HDFS [tpcds.customer_demographics]
| partitions=1/1 files=1 size=76.92MB
| predicates: cd_marital_status = 'W', cd_gender = 'F', cd_education_status = 'Primary'
|
00:SCAN HDFS [tpcds.store_sales]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF000 -> ss_item_sk, RF001 -> ss_store_sk, RF002 -> ss_sold_date_sk, RF003 -> ss_cdemo_sk
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
18:MERGING-EXCHANGE [UNPARTITIONED]
| order by: i_item_id ASC, s_state ASC
| limit: 100
|
10:TOP-N [LIMIT=100]
| order by: i_item_id ASC, s_state ASC
|
17:AGGREGATE [FINALIZE]
| output: avg:merge(ss_quantity), avg:merge(ss_list_price), avg:merge(ss_coupon_amt), avg:merge(ss_sales_price)
| group by: i_item_id, s_state
|
16:EXCHANGE [HASH(i_item_id,s_state)]
|
09:AGGREGATE [STREAMING]
| output: avg(ss_quantity), avg(ss_list_price), avg(ss_coupon_amt), avg(ss_sales_price)
| group by: i_item_id, s_state
|
08:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_item_sk = i_item_sk
| runtime filters: RF000 <- i_item_sk
|
|--15:EXCHANGE [BROADCAST]
| |
| 04:SCAN HDFS [tpcds.item]
| partitions=1/1 files=1 size=4.82MB
|
07:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_store_sk = s_store_sk
| runtime filters: RF001 <- s_store_sk
|
|--14:EXCHANGE [BROADCAST]
| |
| 03:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
| predicates: s_state IN ('WI', 'CA', 'TX', 'FL', 'WA', 'TN')
|
06:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_sold_date_sk = d_date_sk
| runtime filters: RF002 <- d_date_sk
|
|--13:EXCHANGE [BROADCAST]
| |
| 02:SCAN HDFS [tpcds.date_dim]
| partitions=1/1 files=1 size=9.84MB
| predicates: d_year = 1998
|
05:HASH JOIN [INNER JOIN, PARTITIONED]
| hash predicates: ss_cdemo_sk = cd_demo_sk
| runtime filters: RF003 <- cd_demo_sk
|
|--12:EXCHANGE [HASH(cd_demo_sk)]
| |
| 01:SCAN HDFS [tpcds.customer_demographics]
| partitions=1/1 files=1 size=76.92MB
| predicates: cd_marital_status = 'W', cd_gender = 'F', cd_education_status = 'Primary'
|
11:EXCHANGE [HASH(ss_cdemo_sk)]
|
00:SCAN HDFS [tpcds.store_sales]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF000 -> ss_item_sk, RF001 -> ss_store_sk, RF002 -> ss_sold_date_sk, RF003 -> ss_cdemo_sk
---- PARALLELPLANS
PLAN-ROOT SINK
|
18:MERGING-EXCHANGE [UNPARTITIONED]
| order by: i_item_id ASC, s_state ASC
| limit: 100
|
10:TOP-N [LIMIT=100]
| order by: i_item_id ASC, s_state ASC
|
17:AGGREGATE [FINALIZE]
| output: avg:merge(ss_quantity), avg:merge(ss_list_price), avg:merge(ss_coupon_amt), avg:merge(ss_sales_price)
| group by: i_item_id, s_state
|
16:EXCHANGE [HASH(i_item_id,s_state)]
|
09:AGGREGATE [STREAMING]
| output: avg(ss_quantity), avg(ss_list_price), avg(ss_coupon_amt), avg(ss_sales_price)
| group by: i_item_id, s_state
|
08:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_item_sk = i_item_sk
| runtime filters: RF000 <- i_item_sk
|
|--JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: i_item_sk
| |
| 15:EXCHANGE [BROADCAST]
| |
| 04:SCAN HDFS [tpcds.item]
| partitions=1/1 files=1 size=4.82MB
|
07:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_store_sk = s_store_sk
| runtime filters: RF001 <- s_store_sk
|
|--JOIN BUILD
| | join-table-id=01 plan-id=02 cohort-id=01
| | build expressions: s_store_sk
| |
| 14:EXCHANGE [BROADCAST]
| |
| 03:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
| predicates: s_state IN ('WI', 'CA', 'TX', 'FL', 'WA', 'TN')
|
06:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_sold_date_sk = d_date_sk
| runtime filters: RF002 <- d_date_sk
|
|--JOIN BUILD
| | join-table-id=02 plan-id=03 cohort-id=01
| | build expressions: d_date_sk
| |
| 13:EXCHANGE [BROADCAST]
| |
| 02:SCAN HDFS [tpcds.date_dim]
| partitions=1/1 files=1 size=9.84MB
| predicates: d_year = 1998
|
05:HASH JOIN [INNER JOIN, PARTITIONED]
| hash predicates: ss_cdemo_sk = cd_demo_sk
| runtime filters: RF003 <- cd_demo_sk
|
|--JOIN BUILD
| | join-table-id=03 plan-id=04 cohort-id=01
| | build expressions: cd_demo_sk
| |
| 12:EXCHANGE [HASH(cd_demo_sk)]
| |
| 01:SCAN HDFS [tpcds.customer_demographics]
| partitions=1/1 files=1 size=76.92MB
| predicates: cd_marital_status = 'W', cd_gender = 'F', cd_education_status = 'Primary'
|
11:EXCHANGE [HASH(ss_cdemo_sk)]
|
00:SCAN HDFS [tpcds.store_sales]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF000 -> ss_item_sk, RF001 -> ss_store_sk, RF002 -> ss_sold_date_sk, RF003 -> ss_cdemo_sk
====
# TPCDS-Q34
select
c_last_name,
c_first_name,
c_salutation,
c_preferred_cust_flag,
ss_ticket_number,
cnt
from
(select
ss_ticket_number,
ss_customer_sk,
count(*) cnt
from
store_sales,
date_dim,
store,
household_demographics
where
store_sales.ss_sold_date_sk = date_dim.d_date_sk
and store_sales.ss_store_sk = store.s_store_sk
and store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk
and (date_dim.d_dom between 1 and 3
or date_dim.d_dom between 25 and 28)
and (household_demographics.hd_buy_potential = '>10000'
or household_demographics.hd_buy_potential = 'unknown')
and household_demographics.hd_vehicle_count > 0
and (case when household_demographics.hd_vehicle_count > 0 then household_demographics.hd_dep_count / household_demographics.hd_vehicle_count else null end) > 1.2
and date_dim.d_year in (1998, 1998 + 1, 1998 + 2)
and store.s_county in ('Saginaw County', 'Sumner County', 'Appanoose County', 'Daviess County', 'Fairfield County', 'Raleigh County', 'Ziebach County', 'Williamson County')
group by
ss_ticket_number,
ss_customer_sk
) dn,
customer
where
ss_customer_sk = c_customer_sk
and cnt between 15 and 20
order by
c_last_name,
c_first_name,
c_salutation,
c_preferred_cust_flag desc
limit 100000
---- PLAN
PLAN-ROOT SINK
|
10:TOP-N [LIMIT=100000]
| order by: c_last_name ASC, c_first_name ASC, c_salutation ASC, c_preferred_cust_flag DESC
|
09:HASH JOIN [INNER JOIN]
| hash predicates: c_customer_sk = ss_customer_sk
| runtime filters: RF000 <- ss_customer_sk
|
|--07:AGGREGATE [FINALIZE]
| | output: count(*)
| | group by: ss_ticket_number, ss_customer_sk
| | having: count(*) <= 20, count(*) >= 15
| |
| 06:HASH JOIN [INNER JOIN]
| | hash predicates: store_sales.ss_store_sk = store.s_store_sk
| | runtime filters: RF001 <- store.s_store_sk
| |
| |--02:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| | predicates: store.s_county IN ('Saginaw County', 'Sumner County', 'Appanoose County', 'Daviess County', 'Fairfield County', 'Raleigh County', 'Ziebach County', 'Williamson County')
| |
| 05:HASH JOIN [INNER JOIN]
| | hash predicates: store_sales.ss_sold_date_sk = date_dim.d_date_sk
| | runtime filters: RF002 <- date_dim.d_date_sk
| |
| |--01:SCAN HDFS [tpcds.date_dim]
| | partitions=1/1 files=1 size=9.84MB
| | predicates: date_dim.d_year IN (1998, 1999, 2000), (date_dim.d_dom >= 1 AND date_dim.d_dom <= 3 OR date_dim.d_dom >= 25 AND date_dim.d_dom <= 28)
| |
| 04:HASH JOIN [INNER JOIN]
| | hash predicates: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk
| | runtime filters: RF003 <- household_demographics.hd_demo_sk
| |
| |--03:SCAN HDFS [tpcds.household_demographics]
| | partitions=1/1 files=1 size=148.10KB
| | predicates: household_demographics.hd_vehicle_count > 0, (CASE WHEN household_demographics.hd_vehicle_count > 0 THEN household_demographics.hd_dep_count / household_demographics.hd_vehicle_count ELSE NULL END) > 1.2, (household_demographics.hd_buy_potential = '>10000' OR household_demographics.hd_buy_potential = 'unknown')
| |
| 00:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF001 -> store_sales.ss_store_sk, RF002 -> store_sales.ss_sold_date_sk, RF003 -> store_sales.ss_hdemo_sk
|
08:SCAN HDFS [tpcds.customer]
partitions=1/1 files=1 size=12.60MB
runtime filters: RF000 -> c_customer_sk
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
17:MERGING-EXCHANGE [UNPARTITIONED]
| order by: c_last_name ASC, c_first_name ASC, c_salutation ASC, c_preferred_cust_flag DESC
| limit: 100000
|
10:TOP-N [LIMIT=100000]
| order by: c_last_name ASC, c_first_name ASC, c_salutation ASC, c_preferred_cust_flag DESC
|
09:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: c_customer_sk = ss_customer_sk
| runtime filters: RF000 <- ss_customer_sk
|
|--16:EXCHANGE [BROADCAST]
| |
| 15:AGGREGATE [FINALIZE]
| | output: count:merge(*)
| | group by: ss_ticket_number, ss_customer_sk
| | having: count(*) <= 20, count(*) >= 15
| |
| 14:EXCHANGE [HASH(ss_ticket_number,ss_customer_sk)]
| |
| 07:AGGREGATE [STREAMING]
| | output: count(*)
| | group by: ss_ticket_number, ss_customer_sk
| |
| 06:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: store_sales.ss_store_sk = store.s_store_sk
| | runtime filters: RF001 <- store.s_store_sk
| |
| |--13:EXCHANGE [BROADCAST]
| | |
| | 02:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| | predicates: store.s_county IN ('Saginaw County', 'Sumner County', 'Appanoose County', 'Daviess County', 'Fairfield County', 'Raleigh County', 'Ziebach County', 'Williamson County')
| |
| 05:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: store_sales.ss_sold_date_sk = date_dim.d_date_sk
| | runtime filters: RF002 <- date_dim.d_date_sk
| |
| |--12:EXCHANGE [BROADCAST]
| | |
| | 01:SCAN HDFS [tpcds.date_dim]
| | partitions=1/1 files=1 size=9.84MB
| | predicates: date_dim.d_year IN (1998, 1999, 2000), (date_dim.d_dom >= 1 AND date_dim.d_dom <= 3 OR date_dim.d_dom >= 25 AND date_dim.d_dom <= 28)
| |
| 04:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk
| | runtime filters: RF003 <- household_demographics.hd_demo_sk
| |
| |--11:EXCHANGE [BROADCAST]
| | |
| | 03:SCAN HDFS [tpcds.household_demographics]
| | partitions=1/1 files=1 size=148.10KB
| | predicates: household_demographics.hd_vehicle_count > 0, (CASE WHEN household_demographics.hd_vehicle_count > 0 THEN household_demographics.hd_dep_count / household_demographics.hd_vehicle_count ELSE NULL END) > 1.2, (household_demographics.hd_buy_potential = '>10000' OR household_demographics.hd_buy_potential = 'unknown')
| |
| 00:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF001 -> store_sales.ss_store_sk, RF002 -> store_sales.ss_sold_date_sk, RF003 -> store_sales.ss_hdemo_sk
|
08:SCAN HDFS [tpcds.customer]
partitions=1/1 files=1 size=12.60MB
runtime filters: RF000 -> c_customer_sk
---- PARALLELPLANS
PLAN-ROOT SINK
|
17:MERGING-EXCHANGE [UNPARTITIONED]
| order by: c_last_name ASC, c_first_name ASC, c_salutation ASC, c_preferred_cust_flag DESC
| limit: 100000
|
10:TOP-N [LIMIT=100000]
| order by: c_last_name ASC, c_first_name ASC, c_salutation ASC, c_preferred_cust_flag DESC
|
09:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: c_customer_sk = ss_customer_sk
| runtime filters: RF000 <- ss_customer_sk
|
|--JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: ss_customer_sk
| |
| 16:EXCHANGE [BROADCAST]
| |
| 15:AGGREGATE [FINALIZE]
| | output: count:merge(*)
| | group by: ss_ticket_number, ss_customer_sk
| | having: count(*) <= 20, count(*) >= 15
| |
| 14:EXCHANGE [HASH(ss_ticket_number,ss_customer_sk)]
| |
| 07:AGGREGATE [STREAMING]
| | output: count(*)
| | group by: ss_ticket_number, ss_customer_sk
| |
| 06:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: store_sales.ss_store_sk = store.s_store_sk
| | runtime filters: RF001 <- store.s_store_sk
| |
| |--JOIN BUILD
| | | join-table-id=01 plan-id=02 cohort-id=02
| | | build expressions: store.s_store_sk
| | |
| | 13:EXCHANGE [BROADCAST]
| | |
| | 02:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| | predicates: store.s_county IN ('Saginaw County', 'Sumner County', 'Appanoose County', 'Daviess County', 'Fairfield County', 'Raleigh County', 'Ziebach County', 'Williamson County')
| |
| 05:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: store_sales.ss_sold_date_sk = date_dim.d_date_sk
| | runtime filters: RF002 <- date_dim.d_date_sk
| |
| |--JOIN BUILD
| | | join-table-id=02 plan-id=03 cohort-id=02
| | | build expressions: date_dim.d_date_sk
| | |
| | 12:EXCHANGE [BROADCAST]
| | |
| | 01:SCAN HDFS [tpcds.date_dim]
| | partitions=1/1 files=1 size=9.84MB
| | predicates: date_dim.d_year IN (1998, 1999, 2000), (date_dim.d_dom >= 1 AND date_dim.d_dom <= 3 OR date_dim.d_dom >= 25 AND date_dim.d_dom <= 28)
| |
| 04:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk
| | runtime filters: RF003 <- household_demographics.hd_demo_sk
| |
| |--JOIN BUILD
| | | join-table-id=03 plan-id=04 cohort-id=02
| | | build expressions: household_demographics.hd_demo_sk
| | |
| | 11:EXCHANGE [BROADCAST]
| | |
| | 03:SCAN HDFS [tpcds.household_demographics]
| | partitions=1/1 files=1 size=148.10KB
| | predicates: household_demographics.hd_vehicle_count > 0, (CASE WHEN household_demographics.hd_vehicle_count > 0 THEN household_demographics.hd_dep_count / household_demographics.hd_vehicle_count ELSE NULL END) > 1.2, (household_demographics.hd_buy_potential = '>10000' OR household_demographics.hd_buy_potential = 'unknown')
| |
| 00:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF001 -> store_sales.ss_store_sk, RF002 -> store_sales.ss_sold_date_sk, RF003 -> store_sales.ss_hdemo_sk
|
08:SCAN HDFS [tpcds.customer]
partitions=1/1 files=1 size=12.60MB
runtime filters: RF000 -> c_customer_sk
====
# TPCDS-Q42
select
dt.d_year,
item.i_category_id,
item.i_category,
sum(ss_ext_sales_price)
from
date_dim dt,
store_sales,
item
where
dt.d_date_sk = store_sales.ss_sold_date_sk
and store_sales.ss_item_sk = item.i_item_sk
and item.i_manager_id = 1
and dt.d_moy = 12
and dt.d_year = 1998
group by
dt.d_year,
item.i_category_id,
item.i_category
order by
sum(ss_ext_sales_price) desc,
dt.d_year,
item.i_category_id,
item.i_category
limit 100
---- PLAN
PLAN-ROOT SINK
|
06:TOP-N [LIMIT=100]
| order by: sum(ss_ext_sales_price) DESC, dt.d_year ASC, item.i_category_id ASC, item.i_category ASC
|
05:AGGREGATE [FINALIZE]
| output: sum(ss_ext_sales_price)
| group by: dt.d_year, item.i_category_id, item.i_category
|
04:HASH JOIN [INNER JOIN]
| hash predicates: store_sales.ss_sold_date_sk = dt.d_date_sk
| runtime filters: RF000 <- dt.d_date_sk
|
|--00:SCAN HDFS [tpcds.date_dim dt]
| partitions=1/1 files=1 size=9.84MB
| predicates: dt.d_year = 1998, dt.d_moy = 12
|
03:HASH JOIN [INNER JOIN]
| hash predicates: store_sales.ss_item_sk = item.i_item_sk
| runtime filters: RF001 <- item.i_item_sk
|
|--02:SCAN HDFS [tpcds.item]
| partitions=1/1 files=1 size=4.82MB
| predicates: item.i_manager_id = 1
|
01:SCAN HDFS [tpcds.store_sales]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF000 -> store_sales.ss_sold_date_sk, RF001 -> store_sales.ss_item_sk
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
11:MERGING-EXCHANGE [UNPARTITIONED]
| order by: sum(ss_ext_sales_price) DESC, dt.d_year ASC, item.i_category_id ASC, item.i_category ASC
| limit: 100
|
06:TOP-N [LIMIT=100]
| order by: sum(ss_ext_sales_price) DESC, dt.d_year ASC, item.i_category_id ASC, item.i_category ASC
|
10:AGGREGATE [FINALIZE]
| output: sum:merge(ss_ext_sales_price)
| group by: dt.d_year, item.i_category_id, item.i_category
|
09:EXCHANGE [HASH(dt.d_year,item.i_category_id,item.i_category)]
|
05:AGGREGATE [STREAMING]
| output: sum(ss_ext_sales_price)
| group by: dt.d_year, item.i_category_id, item.i_category
|
04:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: store_sales.ss_sold_date_sk = dt.d_date_sk
| runtime filters: RF000 <- dt.d_date_sk
|
|--08:EXCHANGE [BROADCAST]
| |
| 00:SCAN HDFS [tpcds.date_dim dt]
| partitions=1/1 files=1 size=9.84MB
| predicates: dt.d_year = 1998, dt.d_moy = 12
|
03:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: store_sales.ss_item_sk = item.i_item_sk
| runtime filters: RF001 <- item.i_item_sk
|
|--07:EXCHANGE [BROADCAST]
| |
| 02:SCAN HDFS [tpcds.item]
| partitions=1/1 files=1 size=4.82MB
| predicates: item.i_manager_id = 1
|
01:SCAN HDFS [tpcds.store_sales]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF000 -> store_sales.ss_sold_date_sk, RF001 -> store_sales.ss_item_sk
---- PARALLELPLANS
PLAN-ROOT SINK
|
11:MERGING-EXCHANGE [UNPARTITIONED]
| order by: sum(ss_ext_sales_price) DESC, dt.d_year ASC, item.i_category_id ASC, item.i_category ASC
| limit: 100
|
06:TOP-N [LIMIT=100]
| order by: sum(ss_ext_sales_price) DESC, dt.d_year ASC, item.i_category_id ASC, item.i_category ASC
|
10:AGGREGATE [FINALIZE]
| output: sum:merge(ss_ext_sales_price)
| group by: dt.d_year, item.i_category_id, item.i_category
|
09:EXCHANGE [HASH(dt.d_year,item.i_category_id,item.i_category)]
|
05:AGGREGATE [STREAMING]
| output: sum(ss_ext_sales_price)
| group by: dt.d_year, item.i_category_id, item.i_category
|
04:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: store_sales.ss_sold_date_sk = dt.d_date_sk
| runtime filters: RF000 <- dt.d_date_sk
|
|--JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: dt.d_date_sk
| |
| 08:EXCHANGE [BROADCAST]
| |
| 00:SCAN HDFS [tpcds.date_dim dt]
| partitions=1/1 files=1 size=9.84MB
| predicates: dt.d_year = 1998, dt.d_moy = 12
|
03:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: store_sales.ss_item_sk = item.i_item_sk
| runtime filters: RF001 <- item.i_item_sk
|
|--JOIN BUILD
| | join-table-id=01 plan-id=02 cohort-id=01
| | build expressions: item.i_item_sk
| |
| 07:EXCHANGE [BROADCAST]
| |
| 02:SCAN HDFS [tpcds.item]
| partitions=1/1 files=1 size=4.82MB
| predicates: item.i_manager_id = 1
|
01:SCAN HDFS [tpcds.store_sales]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF000 -> store_sales.ss_sold_date_sk, RF001 -> store_sales.ss_item_sk
====
# TPCDS-Q43
select
s_store_name,
s_store_id,
sum(case when (d_day_name = 'Sunday') then ss_sales_price else null end) sun_sales,
sum(case when (d_day_name = 'Monday') then ss_sales_price else null end) mon_sales,
sum(case when (d_day_name = 'Tuesday') then ss_sales_price else null end) tue_sales,
sum(case when (d_day_name = 'Wednesday') then ss_sales_price else null end) wed_sales,
sum(case when (d_day_name = 'Thursday') then ss_sales_price else null end) thu_sales,
sum(case when (d_day_name = 'Friday') then ss_sales_price else null end) fri_sales,
sum(case when (d_day_name = 'Saturday') then ss_sales_price else null end) sat_sales
from
date_dim,
store_sales,
store
where
d_date_sk = ss_sold_date_sk
and s_store_sk = ss_store_sk
and s_gmt_offset = -5
and d_year = 1998
group by
s_store_name,
s_store_id
order by
s_store_name,
s_store_id,
sun_sales,
mon_sales,
tue_sales,
wed_sales,
thu_sales,
fri_sales,
sat_sales
limit 100
---- PLAN
PLAN-ROOT SINK
|
06:TOP-N [LIMIT=100]
| order by: s_store_name ASC, s_store_id ASC, sum(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE NULL END) ASC
|
05:AGGREGATE [FINALIZE]
| output: sum(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE NULL END)
| group by: s_store_name, s_store_id
|
04:HASH JOIN [INNER JOIN]
| hash predicates: ss_store_sk = s_store_sk
| runtime filters: RF000 <- s_store_sk
|
|--02:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
| predicates: s_gmt_offset = -5
|
03:HASH JOIN [INNER JOIN]
| hash predicates: ss_sold_date_sk = d_date_sk
| runtime filters: RF001 <- d_date_sk
|
|--00:SCAN HDFS [tpcds.date_dim]
| partitions=1/1 files=1 size=9.84MB
| predicates: d_year = 1998
|
01:SCAN HDFS [tpcds.store_sales]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF000 -> ss_store_sk, RF001 -> ss_sold_date_sk
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
11:MERGING-EXCHANGE [UNPARTITIONED]
| order by: s_store_name ASC, s_store_id ASC, sum(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE NULL END) ASC
| limit: 100
|
06:TOP-N [LIMIT=100]
| order by: s_store_name ASC, s_store_id ASC, sum(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE NULL END) ASC
|
10:AGGREGATE [FINALIZE]
| output: sum:merge(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE NULL END)
| group by: s_store_name, s_store_id
|
09:EXCHANGE [HASH(s_store_name,s_store_id)]
|
05:AGGREGATE [STREAMING]
| output: sum(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE NULL END)
| group by: s_store_name, s_store_id
|
04:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_store_sk = s_store_sk
| runtime filters: RF000 <- s_store_sk
|
|--08:EXCHANGE [BROADCAST]
| |
| 02:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
| predicates: s_gmt_offset = -5
|
03:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_sold_date_sk = d_date_sk
| runtime filters: RF001 <- d_date_sk
|
|--07:EXCHANGE [BROADCAST]
| |
| 00:SCAN HDFS [tpcds.date_dim]
| partitions=1/1 files=1 size=9.84MB
| predicates: d_year = 1998
|
01:SCAN HDFS [tpcds.store_sales]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF000 -> ss_store_sk, RF001 -> ss_sold_date_sk
---- PARALLELPLANS
PLAN-ROOT SINK
|
11:MERGING-EXCHANGE [UNPARTITIONED]
| order by: s_store_name ASC, s_store_id ASC, sum(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE NULL END) ASC
| limit: 100
|
06:TOP-N [LIMIT=100]
| order by: s_store_name ASC, s_store_id ASC, sum(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE NULL END) ASC
|
10:AGGREGATE [FINALIZE]
| output: sum:merge(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE NULL END)
| group by: s_store_name, s_store_id
|
09:EXCHANGE [HASH(s_store_name,s_store_id)]
|
05:AGGREGATE [STREAMING]
| output: sum(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE NULL END)
| group by: s_store_name, s_store_id
|
04:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_store_sk = s_store_sk
| runtime filters: RF000 <- s_store_sk
|
|--JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: s_store_sk
| |
| 08:EXCHANGE [BROADCAST]
| |
| 02:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
| predicates: s_gmt_offset = -5
|
03:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_sold_date_sk = d_date_sk
| runtime filters: RF001 <- d_date_sk
|
|--JOIN BUILD
| | join-table-id=01 plan-id=02 cohort-id=01
| | build expressions: d_date_sk
| |
| 07:EXCHANGE [BROADCAST]
| |
| 00:SCAN HDFS [tpcds.date_dim]
| partitions=1/1 files=1 size=9.84MB
| predicates: d_year = 1998
|
01:SCAN HDFS [tpcds.store_sales]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF000 -> ss_store_sk, RF001 -> ss_sold_date_sk
====
# TPCDS-Q46
select
c_last_name,
c_first_name,
ca_city,
bought_city,
ss_ticket_number,
amt,
profit
from
(select
ss_ticket_number,
ss_customer_sk,
ca_city bought_city,
sum(ss_coupon_amt) amt,
sum(ss_net_profit) profit
from
store_sales,
date_dim,
store,
household_demographics,
customer_address
where
store_sales.ss_sold_date_sk = date_dim.d_date_sk
and store_sales.ss_store_sk = store.s_store_sk
and store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk
and store_sales.ss_addr_sk = customer_address.ca_address_sk
and (household_demographics.hd_dep_count = 5
or household_demographics.hd_vehicle_count = 3)
and date_dim.d_dow in (6, 0)
and date_dim.d_year in (1999, 1999 + 1, 1999 + 2)
and store.s_city in ('Midway', 'Concord', 'Spring Hill', 'Brownsville', 'Greenville')
and ss_sold_date_sk in (2451181, 2451182, 2451188, 2451189, 2451195, 2451196, 2451202, 2451203, 2451209, 2451210, 2451216, 2451217,
2451223, 2451224, 2451230, 2451231, 2451237, 2451238, 2451244, 2451245, 2451251, 2451252, 2451258, 2451259,
2451265, 2451266, 2451272, 2451273, 2451279, 2451280, 2451286, 2451287, 2451293, 2451294, 2451300, 2451301,
2451307, 2451308, 2451314, 2451315, 2451321, 2451322, 2451328, 2451329, 2451335, 2451336, 2451342, 2451343,
2451349, 2451350, 2451356, 2451357, 2451363, 2451364, 2451370, 2451371, 2451377, 2451378, 2451384, 2451385,
2451391, 2451392, 2451398, 2451399, 2451405, 2451406, 2451412, 2451413, 2451419, 2451420, 2451426, 2451427,
2451433, 2451434, 2451440, 2451441, 2451447, 2451448, 2451454, 2451455, 2451461, 2451462, 2451468, 2451469,
2451475, 2451476, 2451482, 2451483, 2451489, 2451490, 2451496, 2451497, 2451503, 2451504, 2451510, 2451511,
2451517, 2451518, 2451524, 2451525, 2451531, 2451532, 2451538, 2451539, 2451545, 2451546, 2451552, 2451553,
2451559, 2451560, 2451566, 2451567, 2451573, 2451574, 2451580, 2451581, 2451587, 2451588, 2451594, 2451595,
2451601, 2451602, 2451608, 2451609, 2451615, 2451616, 2451622, 2451623, 2451629, 2451630, 2451636, 2451637,
2451643, 2451644, 2451650, 2451651, 2451657, 2451658, 2451664, 2451665, 2451671, 2451672, 2451678, 2451679,
2451685, 2451686, 2451692, 2451693, 2451699, 2451700, 2451706, 2451707, 2451713, 2451714, 2451720, 2451721,
2451727, 2451728, 2451734, 2451735, 2451741, 2451742, 2451748, 2451749, 2451755, 2451756, 2451762, 2451763,
2451769, 2451770, 2451776, 2451777, 2451783, 2451784, 2451790, 2451791, 2451797, 2451798, 2451804, 2451805,
2451811, 2451812, 2451818, 2451819, 2451825, 2451826, 2451832, 2451833, 2451839, 2451840, 2451846, 2451847,
2451853, 2451854, 2451860, 2451861, 2451867, 2451868, 2451874, 2451875, 2451881, 2451882, 2451888, 2451889,
2451895, 2451896, 2451902, 2451903, 2451909, 2451910, 2451916, 2451917, 2451923, 2451924, 2451930, 2451931,
2451937, 2451938, 2451944, 2451945, 2451951, 2451952, 2451958, 2451959, 2451965, 2451966, 2451972, 2451973,
2451979, 2451980, 2451986, 2451987, 2451993, 2451994, 2452000, 2452001, 2452007, 2452008, 2452014, 2452015,
2452021, 2452022, 2452028, 2452029, 2452035, 2452036, 2452042, 2452043, 2452049, 2452050, 2452056, 2452057,
2452063, 2452064, 2452070, 2452071, 2452077, 2452078, 2452084, 2452085, 2452091, 2452092, 2452098, 2452099,
2452105, 2452106, 2452112, 2452113, 2452119, 2452120, 2452126, 2452127, 2452133, 2452134, 2452140, 2452141,
2452147, 2452148, 2452154, 2452155, 2452161, 2452162, 2452168, 2452169, 2452175, 2452176, 2452182, 2452183,
2452189, 2452190, 2452196, 2452197, 2452203, 2452204, 2452210, 2452211, 2452217, 2452218, 2452224, 2452225,
2452231, 2452232, 2452238, 2452239, 2452245, 2452246, 2452252, 2452253, 2452259, 2452260, 2452266, 2452267,
2452273, 2452274)
group by
ss_ticket_number,
ss_customer_sk,
ss_addr_sk,
ca_city
) dn,
customer,
customer_address current_addr
where
ss_customer_sk = c_customer_sk
and customer.c_current_addr_sk = current_addr.ca_address_sk
and current_addr.ca_city <> bought_city
order by
c_last_name,
c_first_name,
ca_city,
bought_city,
ss_ticket_number
limit 100
---- PLAN
PLAN-ROOT SINK
|
14:TOP-N [LIMIT=100]
| order by: c_last_name ASC, c_first_name ASC, ca_city ASC, bought_city ASC, ss_ticket_number ASC
|
13:HASH JOIN [INNER JOIN]
| hash predicates: current_addr.ca_address_sk = customer.c_current_addr_sk
| other predicates: current_addr.ca_city != ca_city
| runtime filters: RF000 <- customer.c_current_addr_sk
|
|--12:HASH JOIN [INNER JOIN]
| | hash predicates: c_customer_sk = ss_customer_sk
| | runtime filters: RF001 <- ss_customer_sk
| |
| |--09:AGGREGATE [FINALIZE]
| | | output: sum(ss_coupon_amt), sum(ss_net_profit)
| | | group by: ss_ticket_number, ss_customer_sk, ss_addr_sk, ca_city
| | |
| | 08:HASH JOIN [INNER JOIN]
| | | hash predicates: store_sales.ss_store_sk = store.s_store_sk
| | | runtime filters: RF002 <- store.s_store_sk
| | |
| | |--02:SCAN HDFS [tpcds.store]
| | | partitions=1/1 files=1 size=3.08KB
| | | predicates: store.s_city IN ('Midway', 'Concord', 'Spring Hill', 'Brownsville', 'Greenville')
| | |
| | 07:HASH JOIN [INNER JOIN]
| | | hash predicates: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk
| | | runtime filters: RF003 <- household_demographics.hd_demo_sk
| | |
| | |--03:SCAN HDFS [tpcds.household_demographics]
| | | partitions=1/1 files=1 size=148.10KB
| | | predicates: (household_demographics.hd_dep_count = 5 OR household_demographics.hd_vehicle_count = 3)
| | |
| | 06:HASH JOIN [INNER JOIN]
| | | hash predicates: store_sales.ss_sold_date_sk = date_dim.d_date_sk
| | | runtime filters: RF004 <- date_dim.d_date_sk
| | |
| | |--01:SCAN HDFS [tpcds.date_dim]
| | | partitions=1/1 files=1 size=9.84MB
| | | predicates: date_dim.d_year IN (1999, 2000, 2001), date_dim.d_dow IN (6, 0), tpcds.date_dim.d_date_sk IN (2451181, 2451182, 2451188, 2451189, 2451195, 2451196, 2451202, 2451203, 2451209, 2451210, 2451216, 2451217, 2451223, 2451224, 2451230, 2451231, 2451237, 2451238, 2451244, 2451245, 2451251, 2451252, 2451258, 2451259, 2451265, 2451266, 2451272, 2451273, 2451279, 2451280, 2451286, 2451287, 2451293, 2451294, 2451300, 2451301, 2451307, 2451308, 2451314, 2451315, 2451321, 2451322, 2451328, 2451329, 2451335, 2451336, 2451342, 2451343, 2451349, 2451350, 2451356, 2451357, 2451363, 2451364, 2451370, 2451371, 2451377, 2451378, 2451384, 2451385, 2451391, 2451392, 2451398, 2451399, 2451405, 2451406, 2451412, 2451413, 2451419, 2451420, 2451426, 2451427, 2451433, 2451434, 2451440, 2451441, 2451447, 2451448, 2451454, 2451455, 2451461, 2451462, 2451468, 2451469, 2451475, 2451476, 2451482, 2451483, 2451489, 2451490, 2451496, 2451497, 2451503, 2451504, 2451510, 2451511, 2451517, 2451518, 2451524, 2451525, 2451531, 2451532, 2451538, 2451539, 2451545, 2451546, 2451552, 2451553, 2451559, 2451560, 2451566, 2451567, 2451573, 2451574, 2451580, 2451581, 2451587, 2451588, 2451594, 2451595, 2451601, 2451602, 2451608, 2451609, 2451615, 2451616, 2451622, 2451623, 2451629, 2451630, 2451636, 2451637, 2451643, 2451644, 2451650, 2451651, 2451657, 2451658, 2451664, 2451665, 2451671, 2451672, 2451678, 2451679, 2451685, 2451686, 2451692, 2451693, 2451699, 2451700, 2451706, 2451707, 2451713, 2451714, 2451720, 2451721, 2451727, 2451728, 2451734, 2451735, 2451741, 2451742, 2451748, 2451749, 2451755, 2451756, 2451762, 2451763, 2451769, 2451770, 2451776, 2451777, 2451783, 2451784, 2451790, 2451791, 2451797, 2451798, 2451804, 2451805, 2451811, 2451812, 2451818, 2451819, 2451825, 2451826, 2451832, 2451833, 2451839, 2451840, 2451846, 2451847, 2451853, 2451854, 2451860, 2451861, 2451867, 2451868, 2451874, 2451875, 2451881, 2451882, 2451888, 2451889, 2451895, 2451896, 2451902, 2451903, 2451909, 2451910, 2451916, 2451917, 2451923, 2451924, 2451930, 2451931, 2451937, 2451938, 2451944, 2451945, 2451951, 2451952, 2451958, 2451959, 2451965, 2451966, 2451972, 2451973, 2451979, 2451980, 2451986, 2451987, 2451993, 2451994, 2452000, 2452001, 2452007, 2452008, 2452014, 2452015, 2452021, 2452022, 2452028, 2452029, 2452035, 2452036, 2452042, 2452043, 2452049, 2452050, 2452056, 2452057, 2452063, 2452064, 2452070, 2452071, 2452077, 2452078, 2452084, 2452085, 2452091, 2452092, 2452098, 2452099, 2452105, 2452106, 2452112, 2452113, 2452119, 2452120, 2452126, 2452127, 2452133, 2452134, 2452140, 2452141, 2452147, 2452148, 2452154, 2452155, 2452161, 2452162, 2452168, 2452169, 2452175, 2452176, 2452182, 2452183, 2452189, 2452190, 2452196, 2452197, 2452203, 2452204, 2452210, 2452211, 2452217, 2452218, 2452224, 2452225, 2452231, 2452232, 2452238, 2452239, 2452245, 2452246, 2452252, 2452253, 2452259, 2452260, 2452266, 2452267, 2452273, 2452274)
| | |
| | 05:HASH JOIN [INNER JOIN]
| | | hash predicates: customer_address.ca_address_sk = store_sales.ss_addr_sk
| | | runtime filters: RF005 <- store_sales.ss_addr_sk
| | |
| | |--00:SCAN HDFS [tpcds.store_sales]
| | | partitions=20/120 files=20 size=3.33MB
| | | runtime filters: RF002 -> store_sales.ss_store_sk, RF003 -> store_sales.ss_hdemo_sk, RF004 -> store_sales.ss_sold_date_sk
| | |
| | 04:SCAN HDFS [tpcds.customer_address]
| | partitions=1/1 files=1 size=5.25MB
| | runtime filters: RF005 -> customer_address.ca_address_sk
| |
| 10:SCAN HDFS [tpcds.customer]
| partitions=1/1 files=1 size=12.60MB
| runtime filters: RF001 -> c_customer_sk
|
11:SCAN HDFS [tpcds.customer_address current_addr]
partitions=1/1 files=1 size=5.25MB
runtime filters: RF000 -> current_addr.ca_address_sk
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
23:MERGING-EXCHANGE [UNPARTITIONED]
| order by: c_last_name ASC, c_first_name ASC, ca_city ASC, bought_city ASC, ss_ticket_number ASC
| limit: 100
|
14:TOP-N [LIMIT=100]
| order by: c_last_name ASC, c_first_name ASC, ca_city ASC, bought_city ASC, ss_ticket_number ASC
|
13:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: current_addr.ca_address_sk = customer.c_current_addr_sk
| other predicates: current_addr.ca_city != ca_city
| runtime filters: RF000 <- customer.c_current_addr_sk
|
|--22:EXCHANGE [BROADCAST]
| |
| 12:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: c_customer_sk = ss_customer_sk
| | runtime filters: RF001 <- ss_customer_sk
| |
| |--21:EXCHANGE [BROADCAST]
| | |
| | 20:AGGREGATE [FINALIZE]
| | | output: sum:merge(ss_coupon_amt), sum:merge(ss_net_profit)
| | | group by: ss_ticket_number, ss_customer_sk, ss_addr_sk, ca_city
| | |
| | 19:EXCHANGE [HASH(ss_ticket_number,ss_customer_sk,ss_addr_sk,ca_city)]
| | |
| | 09:AGGREGATE [STREAMING]
| | | output: sum(ss_coupon_amt), sum(ss_net_profit)
| | | group by: ss_ticket_number, ss_customer_sk, ss_addr_sk, ca_city
| | |
| | 08:HASH JOIN [INNER JOIN, BROADCAST]
| | | hash predicates: store_sales.ss_store_sk = store.s_store_sk
| | | runtime filters: RF002 <- store.s_store_sk
| | |
| | |--18:EXCHANGE [BROADCAST]
| | | |
| | | 02:SCAN HDFS [tpcds.store]
| | | partitions=1/1 files=1 size=3.08KB
| | | predicates: store.s_city IN ('Midway', 'Concord', 'Spring Hill', 'Brownsville', 'Greenville')
| | |
| | 07:HASH JOIN [INNER JOIN, BROADCAST]
| | | hash predicates: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk
| | | runtime filters: RF003 <- household_demographics.hd_demo_sk
| | |
| | |--17:EXCHANGE [BROADCAST]
| | | |
| | | 03:SCAN HDFS [tpcds.household_demographics]
| | | partitions=1/1 files=1 size=148.10KB
| | | predicates: (household_demographics.hd_dep_count = 5 OR household_demographics.hd_vehicle_count = 3)
| | |
| | 06:HASH JOIN [INNER JOIN, BROADCAST]
| | | hash predicates: store_sales.ss_sold_date_sk = date_dim.d_date_sk
| | | runtime filters: RF004 <- date_dim.d_date_sk
| | |
| | |--16:EXCHANGE [BROADCAST]
| | | |
| | | 01:SCAN HDFS [tpcds.date_dim]
| | | partitions=1/1 files=1 size=9.84MB
| | | predicates: date_dim.d_year IN (1999, 2000, 2001), date_dim.d_dow IN (6, 0), tpcds.date_dim.d_date_sk IN (2451181, 2451182, 2451188, 2451189, 2451195, 2451196, 2451202, 2451203, 2451209, 2451210, 2451216, 2451217, 2451223, 2451224, 2451230, 2451231, 2451237, 2451238, 2451244, 2451245, 2451251, 2451252, 2451258, 2451259, 2451265, 2451266, 2451272, 2451273, 2451279, 2451280, 2451286, 2451287, 2451293, 2451294, 2451300, 2451301, 2451307, 2451308, 2451314, 2451315, 2451321, 2451322, 2451328, 2451329, 2451335, 2451336, 2451342, 2451343, 2451349, 2451350, 2451356, 2451357, 2451363, 2451364, 2451370, 2451371, 2451377, 2451378, 2451384, 2451385, 2451391, 2451392, 2451398, 2451399, 2451405, 2451406, 2451412, 2451413, 2451419, 2451420, 2451426, 2451427, 2451433, 2451434, 2451440, 2451441, 2451447, 2451448, 2451454, 2451455, 2451461, 2451462, 2451468, 2451469, 2451475, 2451476, 2451482, 2451483, 2451489, 2451490, 2451496, 2451497, 2451503, 2451504, 2451510, 2451511, 2451517, 2451518, 2451524, 2451525, 2451531, 2451532, 2451538, 2451539, 2451545, 2451546, 2451552, 2451553, 2451559, 2451560, 2451566, 2451567, 2451573, 2451574, 2451580, 2451581, 2451587, 2451588, 2451594, 2451595, 2451601, 2451602, 2451608, 2451609, 2451615, 2451616, 2451622, 2451623, 2451629, 2451630, 2451636, 2451637, 2451643, 2451644, 2451650, 2451651, 2451657, 2451658, 2451664, 2451665, 2451671, 2451672, 2451678, 2451679, 2451685, 2451686, 2451692, 2451693, 2451699, 2451700, 2451706, 2451707, 2451713, 2451714, 2451720, 2451721, 2451727, 2451728, 2451734, 2451735, 2451741, 2451742, 2451748, 2451749, 2451755, 2451756, 2451762, 2451763, 2451769, 2451770, 2451776, 2451777, 2451783, 2451784, 2451790, 2451791, 2451797, 2451798, 2451804, 2451805, 2451811, 2451812, 2451818, 2451819, 2451825, 2451826, 2451832, 2451833, 2451839, 2451840, 2451846, 2451847, 2451853, 2451854, 2451860, 2451861, 2451867, 2451868, 2451874, 2451875, 2451881, 2451882, 2451888, 2451889, 2451895, 2451896, 2451902, 2451903, 2451909, 2451910, 2451916, 2451917, 2451923, 2451924, 2451930, 2451931, 2451937, 2451938, 2451944, 2451945, 2451951, 2451952, 2451958, 2451959, 2451965, 2451966, 2451972, 2451973, 2451979, 2451980, 2451986, 2451987, 2451993, 2451994, 2452000, 2452001, 2452007, 2452008, 2452014, 2452015, 2452021, 2452022, 2452028, 2452029, 2452035, 2452036, 2452042, 2452043, 2452049, 2452050, 2452056, 2452057, 2452063, 2452064, 2452070, 2452071, 2452077, 2452078, 2452084, 2452085, 2452091, 2452092, 2452098, 2452099, 2452105, 2452106, 2452112, 2452113, 2452119, 2452120, 2452126, 2452127, 2452133, 2452134, 2452140, 2452141, 2452147, 2452148, 2452154, 2452155, 2452161, 2452162, 2452168, 2452169, 2452175, 2452176, 2452182, 2452183, 2452189, 2452190, 2452196, 2452197, 2452203, 2452204, 2452210, 2452211, 2452217, 2452218, 2452224, 2452225, 2452231, 2452232, 2452238, 2452239, 2452245, 2452246, 2452252, 2452253, 2452259, 2452260, 2452266, 2452267, 2452273, 2452274)
| | |
| | 05:HASH JOIN [INNER JOIN, BROADCAST]
| | | hash predicates: customer_address.ca_address_sk = store_sales.ss_addr_sk
| | | runtime filters: RF005 <- store_sales.ss_addr_sk
| | |
| | |--15:EXCHANGE [BROADCAST]
| | | |
| | | 00:SCAN HDFS [tpcds.store_sales]
| | | partitions=20/120 files=20 size=3.33MB
| | | runtime filters: RF002 -> store_sales.ss_store_sk, RF003 -> store_sales.ss_hdemo_sk, RF004 -> store_sales.ss_sold_date_sk
| | |
| | 04:SCAN HDFS [tpcds.customer_address]
| | partitions=1/1 files=1 size=5.25MB
| | runtime filters: RF005 -> customer_address.ca_address_sk
| |
| 10:SCAN HDFS [tpcds.customer]
| partitions=1/1 files=1 size=12.60MB
| runtime filters: RF001 -> c_customer_sk
|
11:SCAN HDFS [tpcds.customer_address current_addr]
partitions=1/1 files=1 size=5.25MB
runtime filters: RF000 -> current_addr.ca_address_sk
---- PARALLELPLANS
PLAN-ROOT SINK
|
23:MERGING-EXCHANGE [UNPARTITIONED]
| order by: c_last_name ASC, c_first_name ASC, ca_city ASC, bought_city ASC, ss_ticket_number ASC
| limit: 100
|
14:TOP-N [LIMIT=100]
| order by: c_last_name ASC, c_first_name ASC, ca_city ASC, bought_city ASC, ss_ticket_number ASC
|
13:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: current_addr.ca_address_sk = customer.c_current_addr_sk
| other predicates: current_addr.ca_city != ca_city
| runtime filters: RF000 <- customer.c_current_addr_sk
|
|--JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: customer.c_current_addr_sk
| |
| 22:EXCHANGE [BROADCAST]
| |
| 12:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: c_customer_sk = ss_customer_sk
| | runtime filters: RF001 <- ss_customer_sk
| |
| |--JOIN BUILD
| | | join-table-id=01 plan-id=02 cohort-id=02
| | | build expressions: ss_customer_sk
| | |
| | 21:EXCHANGE [BROADCAST]
| | |
| | 20:AGGREGATE [FINALIZE]
| | | output: sum:merge(ss_coupon_amt), sum:merge(ss_net_profit)
| | | group by: ss_ticket_number, ss_customer_sk, ss_addr_sk, ca_city
| | |
| | 19:EXCHANGE [HASH(ss_ticket_number,ss_customer_sk,ss_addr_sk,ca_city)]
| | |
| | 09:AGGREGATE [STREAMING]
| | | output: sum(ss_coupon_amt), sum(ss_net_profit)
| | | group by: ss_ticket_number, ss_customer_sk, ss_addr_sk, ca_city
| | |
| | 08:HASH JOIN [INNER JOIN, BROADCAST]
| | | hash predicates: store_sales.ss_store_sk = store.s_store_sk
| | | runtime filters: RF002 <- store.s_store_sk
| | |
| | |--JOIN BUILD
| | | | join-table-id=02 plan-id=03 cohort-id=03
| | | | build expressions: store.s_store_sk
| | | |
| | | 18:EXCHANGE [BROADCAST]
| | | |
| | | 02:SCAN HDFS [tpcds.store]
| | | partitions=1/1 files=1 size=3.08KB
| | | predicates: store.s_city IN ('Midway', 'Concord', 'Spring Hill', 'Brownsville', 'Greenville')
| | |
| | 07:HASH JOIN [INNER JOIN, BROADCAST]
| | | hash predicates: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk
| | | runtime filters: RF003 <- household_demographics.hd_demo_sk
| | |
| | |--JOIN BUILD
| | | | join-table-id=03 plan-id=04 cohort-id=03
| | | | build expressions: household_demographics.hd_demo_sk
| | | |
| | | 17:EXCHANGE [BROADCAST]
| | | |
| | | 03:SCAN HDFS [tpcds.household_demographics]
| | | partitions=1/1 files=1 size=148.10KB
| | | predicates: (household_demographics.hd_dep_count = 5 OR household_demographics.hd_vehicle_count = 3)
| | |
| | 06:HASH JOIN [INNER JOIN, BROADCAST]
| | | hash predicates: store_sales.ss_sold_date_sk = date_dim.d_date_sk
| | | runtime filters: RF004 <- date_dim.d_date_sk
| | |
| | |--JOIN BUILD
| | | | join-table-id=04 plan-id=05 cohort-id=03
| | | | build expressions: date_dim.d_date_sk
| | | |
| | | 16:EXCHANGE [BROADCAST]
| | | |
| | | 01:SCAN HDFS [tpcds.date_dim]
| | | partitions=1/1 files=1 size=9.84MB
| | | predicates: date_dim.d_year IN (1999, 2000, 2001), date_dim.d_dow IN (6, 0), tpcds.date_dim.d_date_sk IN (2451181, 2451182, 2451188, 2451189, 2451195, 2451196, 2451202, 2451203, 2451209, 2451210, 2451216, 2451217, 2451223, 2451224, 2451230, 2451231, 2451237, 2451238, 2451244, 2451245, 2451251, 2451252, 2451258, 2451259, 2451265, 2451266, 2451272, 2451273, 2451279, 2451280, 2451286, 2451287, 2451293, 2451294, 2451300, 2451301, 2451307, 2451308, 2451314, 2451315, 2451321, 2451322, 2451328, 2451329, 2451335, 2451336, 2451342, 2451343, 2451349, 2451350, 2451356, 2451357, 2451363, 2451364, 2451370, 2451371, 2451377, 2451378, 2451384, 2451385, 2451391, 2451392, 2451398, 2451399, 2451405, 2451406, 2451412, 2451413, 2451419, 2451420, 2451426, 2451427, 2451433, 2451434, 2451440, 2451441, 2451447, 2451448, 2451454, 2451455, 2451461, 2451462, 2451468, 2451469, 2451475, 2451476, 2451482, 2451483, 2451489, 2451490, 2451496, 2451497, 2451503, 2451504, 2451510, 2451511, 2451517, 2451518, 2451524, 2451525, 2451531, 2451532, 2451538, 2451539, 2451545, 2451546, 2451552, 2451553, 2451559, 2451560, 2451566, 2451567, 2451573, 2451574, 2451580, 2451581, 2451587, 2451588, 2451594, 2451595, 2451601, 2451602, 2451608, 2451609, 2451615, 2451616, 2451622, 2451623, 2451629, 2451630, 2451636, 2451637, 2451643, 2451644, 2451650, 2451651, 2451657, 2451658, 2451664, 2451665, 2451671, 2451672, 2451678, 2451679, 2451685, 2451686, 2451692, 2451693, 2451699, 2451700, 2451706, 2451707, 2451713, 2451714, 2451720, 2451721, 2451727, 2451728, 2451734, 2451735, 2451741, 2451742, 2451748, 2451749, 2451755, 2451756, 2451762, 2451763, 2451769, 2451770, 2451776, 2451777, 2451783, 2451784, 2451790, 2451791, 2451797, 2451798, 2451804, 2451805, 2451811, 2451812, 2451818, 2451819, 2451825, 2451826, 2451832, 2451833, 2451839, 2451840, 2451846, 2451847, 2451853, 2451854, 2451860, 2451861, 2451867, 2451868, 2451874, 2451875, 2451881, 2451882, 2451888, 2451889, 2451895, 2451896, 2451902, 2451903, 2451909, 2451910, 2451916, 2451917, 2451923, 2451924, 2451930, 2451931, 2451937, 2451938, 2451944, 2451945, 2451951, 2451952, 2451958, 2451959, 2451965, 2451966, 2451972, 2451973, 2451979, 2451980, 2451986, 2451987, 2451993, 2451994, 2452000, 2452001, 2452007, 2452008, 2452014, 2452015, 2452021, 2452022, 2452028, 2452029, 2452035, 2452036, 2452042, 2452043, 2452049, 2452050, 2452056, 2452057, 2452063, 2452064, 2452070, 2452071, 2452077, 2452078, 2452084, 2452085, 2452091, 2452092, 2452098, 2452099, 2452105, 2452106, 2452112, 2452113, 2452119, 2452120, 2452126, 2452127, 2452133, 2452134, 2452140, 2452141, 2452147, 2452148, 2452154, 2452155, 2452161, 2452162, 2452168, 2452169, 2452175, 2452176, 2452182, 2452183, 2452189, 2452190, 2452196, 2452197, 2452203, 2452204, 2452210, 2452211, 2452217, 2452218, 2452224, 2452225, 2452231, 2452232, 2452238, 2452239, 2452245, 2452246, 2452252, 2452253, 2452259, 2452260, 2452266, 2452267, 2452273, 2452274)
| | |
| | 05:HASH JOIN [INNER JOIN, BROADCAST]
| | | hash predicates: customer_address.ca_address_sk = store_sales.ss_addr_sk
| | | runtime filters: RF005 <- store_sales.ss_addr_sk
| | |
| | |--JOIN BUILD
| | | | join-table-id=05 plan-id=06 cohort-id=03
| | | | build expressions: store_sales.ss_addr_sk
| | | |
| | | 15:EXCHANGE [BROADCAST]
| | | |
| | | 00:SCAN HDFS [tpcds.store_sales]
| | | partitions=20/120 files=20 size=3.33MB
| | | runtime filters: RF002 -> store_sales.ss_store_sk, RF003 -> store_sales.ss_hdemo_sk, RF004 -> store_sales.ss_sold_date_sk
| | |
| | 04:SCAN HDFS [tpcds.customer_address]
| | partitions=1/1 files=1 size=5.25MB
| | runtime filters: RF005 -> customer_address.ca_address_sk
| |
| 10:SCAN HDFS [tpcds.customer]
| partitions=1/1 files=1 size=12.60MB
| runtime filters: RF001 -> c_customer_sk
|
11:SCAN HDFS [tpcds.customer_address current_addr]
partitions=1/1 files=1 size=5.25MB
runtime filters: RF000 -> current_addr.ca_address_sk
====
# TPCDS-Q52
select
dt.d_year,
item.i_brand_id brand_id,
item.i_brand brand,
sum(ss_ext_sales_price) ext_price
from
date_dim dt,
store_sales,
item
where
dt.d_date_sk = store_sales.ss_sold_date_sk
and store_sales.ss_item_sk = item.i_item_sk
and item.i_manager_id = 1
and dt.d_moy = 12
and dt.d_year = 1998
group by
dt.d_year,
item.i_brand,
item.i_brand_id
order by
dt.d_year,
ext_price desc,
brand_id
limit 100
---- PLAN
PLAN-ROOT SINK
|
06:TOP-N [LIMIT=100]
| order by: dt.d_year ASC, sum(ss_ext_sales_price) DESC, item.i_brand_id ASC
|
05:AGGREGATE [FINALIZE]
| output: sum(ss_ext_sales_price)
| group by: dt.d_year, item.i_brand, item.i_brand_id
|
04:HASH JOIN [INNER JOIN]
| hash predicates: store_sales.ss_sold_date_sk = dt.d_date_sk
| runtime filters: RF000 <- dt.d_date_sk
|
|--00:SCAN HDFS [tpcds.date_dim dt]
| partitions=1/1 files=1 size=9.84MB
| predicates: dt.d_year = 1998, dt.d_moy = 12
|
03:HASH JOIN [INNER JOIN]
| hash predicates: store_sales.ss_item_sk = item.i_item_sk
| runtime filters: RF001 <- item.i_item_sk
|
|--02:SCAN HDFS [tpcds.item]
| partitions=1/1 files=1 size=4.82MB
| predicates: item.i_manager_id = 1
|
01:SCAN HDFS [tpcds.store_sales]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF000 -> store_sales.ss_sold_date_sk, RF001 -> store_sales.ss_item_sk
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
11:MERGING-EXCHANGE [UNPARTITIONED]
| order by: dt.d_year ASC, sum(ss_ext_sales_price) DESC, item.i_brand_id ASC
| limit: 100
|
06:TOP-N [LIMIT=100]
| order by: dt.d_year ASC, sum(ss_ext_sales_price) DESC, item.i_brand_id ASC
|
10:AGGREGATE [FINALIZE]
| output: sum:merge(ss_ext_sales_price)
| group by: dt.d_year, item.i_brand, item.i_brand_id
|
09:EXCHANGE [HASH(dt.d_year,item.i_brand,item.i_brand_id)]
|
05:AGGREGATE [STREAMING]
| output: sum(ss_ext_sales_price)
| group by: dt.d_year, item.i_brand, item.i_brand_id
|
04:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: store_sales.ss_sold_date_sk = dt.d_date_sk
| runtime filters: RF000 <- dt.d_date_sk
|
|--08:EXCHANGE [BROADCAST]
| |
| 00:SCAN HDFS [tpcds.date_dim dt]
| partitions=1/1 files=1 size=9.84MB
| predicates: dt.d_year = 1998, dt.d_moy = 12
|
03:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: store_sales.ss_item_sk = item.i_item_sk
| runtime filters: RF001 <- item.i_item_sk
|
|--07:EXCHANGE [BROADCAST]
| |
| 02:SCAN HDFS [tpcds.item]
| partitions=1/1 files=1 size=4.82MB
| predicates: item.i_manager_id = 1
|
01:SCAN HDFS [tpcds.store_sales]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF000 -> store_sales.ss_sold_date_sk, RF001 -> store_sales.ss_item_sk
---- PARALLELPLANS
PLAN-ROOT SINK
|
11:MERGING-EXCHANGE [UNPARTITIONED]
| order by: dt.d_year ASC, sum(ss_ext_sales_price) DESC, item.i_brand_id ASC
| limit: 100
|
06:TOP-N [LIMIT=100]
| order by: dt.d_year ASC, sum(ss_ext_sales_price) DESC, item.i_brand_id ASC
|
10:AGGREGATE [FINALIZE]
| output: sum:merge(ss_ext_sales_price)
| group by: dt.d_year, item.i_brand, item.i_brand_id
|
09:EXCHANGE [HASH(dt.d_year,item.i_brand,item.i_brand_id)]
|
05:AGGREGATE [STREAMING]
| output: sum(ss_ext_sales_price)
| group by: dt.d_year, item.i_brand, item.i_brand_id
|
04:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: store_sales.ss_sold_date_sk = dt.d_date_sk
| runtime filters: RF000 <- dt.d_date_sk
|
|--JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: dt.d_date_sk
| |
| 08:EXCHANGE [BROADCAST]
| |
| 00:SCAN HDFS [tpcds.date_dim dt]
| partitions=1/1 files=1 size=9.84MB
| predicates: dt.d_year = 1998, dt.d_moy = 12
|
03:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: store_sales.ss_item_sk = item.i_item_sk
| runtime filters: RF001 <- item.i_item_sk
|
|--JOIN BUILD
| | join-table-id=01 plan-id=02 cohort-id=01
| | build expressions: item.i_item_sk
| |
| 07:EXCHANGE [BROADCAST]
| |
| 02:SCAN HDFS [tpcds.item]
| partitions=1/1 files=1 size=4.82MB
| predicates: item.i_manager_id = 1
|
01:SCAN HDFS [tpcds.store_sales]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF000 -> store_sales.ss_sold_date_sk, RF001 -> store_sales.ss_item_sk
====
# TPCDS-Q53
select
*
from
(select
i_manufact_id,
sum(ss_sales_price) sum_sales
from
item,
store_sales,
date_dim,
store
where
ss_item_sk = i_item_sk
and ss_sold_date_sk = d_date_sk
and ss_store_sk = s_store_sk
and d_month_seq in (1212, 1212 + 1, 1212 + 2, 1212 + 3, 1212 + 4, 1212 + 5, 1212 + 6, 1212 + 7, 1212 + 8, 1212 + 9, 1212 + 10, 1212 + 11)
and ((i_category in ('Books', 'Children', 'Electronics')
and i_class in ('personal', 'portable', 'reference', 'self-help')
and i_brand in ('scholaramalgamalg #14', 'scholaramalgamalg #7', 'exportiunivamalg #9', 'scholaramalgamalg #9'))
or (i_category in ('Women', 'Music', 'Men')
and i_class in ('accessories', 'classical', 'fragrances', 'pants')
and i_brand in ('amalgimporto #1', 'edu packscholar #1', 'exportiimporto #1', 'importoamalg #1')))
group by
i_manufact_id,
d_qoy
) tmp1
order by
sum_sales,
i_manufact_id
limit 100
---- PLAN
PLAN-ROOT SINK
|
08:TOP-N [LIMIT=100]
| order by: sum_sales ASC, i_manufact_id ASC
|
07:AGGREGATE [FINALIZE]
| output: sum(ss_sales_price)
| group by: i_manufact_id, d_qoy
|
06:HASH JOIN [INNER JOIN]
| hash predicates: ss_store_sk = s_store_sk
| runtime filters: RF000 <- s_store_sk
|
|--03:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
|
05:HASH JOIN [INNER JOIN]
| hash predicates: d_date_sk = ss_sold_date_sk
| runtime filters: RF001 <- ss_sold_date_sk
|
|--04:HASH JOIN [INNER JOIN]
| | hash predicates: ss_item_sk = i_item_sk
| | runtime filters: RF002 <- i_item_sk
| |
| |--00:SCAN HDFS [tpcds.item]
| | partitions=1/1 files=1 size=4.82MB
| | predicates: ((i_category IN ('Books', 'Children', 'Electronics') AND i_class IN ('personal', 'portable', 'reference', 'self-help') AND i_brand IN ('scholaramalgamalg #14', 'scholaramalgamalg #7', 'exportiunivamalg #9', 'scholaramalgamalg #9')) OR (i_category IN ('Women', 'Music', 'Men') AND i_class IN ('accessories', 'classical', 'fragrances', 'pants') AND i_brand IN ('amalgimporto #1', 'edu packscholar #1', 'exportiimporto #1', 'importoamalg #1')))
| |
| 01:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF000 -> ss_store_sk, RF002 -> ss_item_sk
|
02:SCAN HDFS [tpcds.date_dim]
partitions=1/1 files=1 size=9.84MB
predicates: d_month_seq IN (1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223)
runtime filters: RF001 -> d_date_sk
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
14:MERGING-EXCHANGE [UNPARTITIONED]
| order by: sum_sales ASC, i_manufact_id ASC
| limit: 100
|
08:TOP-N [LIMIT=100]
| order by: sum_sales ASC, i_manufact_id ASC
|
13:AGGREGATE [FINALIZE]
| output: sum:merge(ss_sales_price)
| group by: i_manufact_id, d_qoy
|
12:EXCHANGE [HASH(i_manufact_id,d_qoy)]
|
07:AGGREGATE [STREAMING]
| output: sum(ss_sales_price)
| group by: i_manufact_id, d_qoy
|
06:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_store_sk = s_store_sk
| runtime filters: RF000 <- s_store_sk
|
|--11:EXCHANGE [BROADCAST]
| |
| 03:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
|
05:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: d_date_sk = ss_sold_date_sk
| runtime filters: RF001 <- ss_sold_date_sk
|
|--10:EXCHANGE [BROADCAST]
| |
| 04:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_item_sk = i_item_sk
| | runtime filters: RF002 <- i_item_sk
| |
| |--09:EXCHANGE [BROADCAST]
| | |
| | 00:SCAN HDFS [tpcds.item]
| | partitions=1/1 files=1 size=4.82MB
| | predicates: ((i_category IN ('Books', 'Children', 'Electronics') AND i_class IN ('personal', 'portable', 'reference', 'self-help') AND i_brand IN ('scholaramalgamalg #14', 'scholaramalgamalg #7', 'exportiunivamalg #9', 'scholaramalgamalg #9')) OR (i_category IN ('Women', 'Music', 'Men') AND i_class IN ('accessories', 'classical', 'fragrances', 'pants') AND i_brand IN ('amalgimporto #1', 'edu packscholar #1', 'exportiimporto #1', 'importoamalg #1')))
| |
| 01:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF000 -> ss_store_sk, RF002 -> ss_item_sk
|
02:SCAN HDFS [tpcds.date_dim]
partitions=1/1 files=1 size=9.84MB
predicates: d_month_seq IN (1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223)
runtime filters: RF001 -> d_date_sk
---- PARALLELPLANS
PLAN-ROOT SINK
|
14:MERGING-EXCHANGE [UNPARTITIONED]
| order by: sum_sales ASC, i_manufact_id ASC
| limit: 100
|
08:TOP-N [LIMIT=100]
| order by: sum_sales ASC, i_manufact_id ASC
|
13:AGGREGATE [FINALIZE]
| output: sum:merge(ss_sales_price)
| group by: i_manufact_id, d_qoy
|
12:EXCHANGE [HASH(i_manufact_id,d_qoy)]
|
07:AGGREGATE [STREAMING]
| output: sum(ss_sales_price)
| group by: i_manufact_id, d_qoy
|
06:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_store_sk = s_store_sk
| runtime filters: RF000 <- s_store_sk
|
|--JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: s_store_sk
| |
| 11:EXCHANGE [BROADCAST]
| |
| 03:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
|
05:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: d_date_sk = ss_sold_date_sk
| runtime filters: RF001 <- ss_sold_date_sk
|
|--JOIN BUILD
| | join-table-id=01 plan-id=02 cohort-id=01
| | build expressions: ss_sold_date_sk
| |
| 10:EXCHANGE [BROADCAST]
| |
| 04:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_item_sk = i_item_sk
| | runtime filters: RF002 <- i_item_sk
| |
| |--JOIN BUILD
| | | join-table-id=02 plan-id=03 cohort-id=02
| | | build expressions: i_item_sk
| | |
| | 09:EXCHANGE [BROADCAST]
| | |
| | 00:SCAN HDFS [tpcds.item]
| | partitions=1/1 files=1 size=4.82MB
| | predicates: ((i_category IN ('Books', 'Children', 'Electronics') AND i_class IN ('personal', 'portable', 'reference', 'self-help') AND i_brand IN ('scholaramalgamalg #14', 'scholaramalgamalg #7', 'exportiunivamalg #9', 'scholaramalgamalg #9')) OR (i_category IN ('Women', 'Music', 'Men') AND i_class IN ('accessories', 'classical', 'fragrances', 'pants') AND i_brand IN ('amalgimporto #1', 'edu packscholar #1', 'exportiimporto #1', 'importoamalg #1')))
| |
| 01:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF000 -> ss_store_sk, RF002 -> ss_item_sk
|
02:SCAN HDFS [tpcds.date_dim]
partitions=1/1 files=1 size=9.84MB
predicates: d_month_seq IN (1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223)
runtime filters: RF001 -> d_date_sk
====
# TPCDS-Q55
select
i_brand_id brand_id,
i_brand brand,
sum(ss_ext_sales_price) ext_price
from
date_dim,
store_sales,
item
where
d_date_sk = ss_sold_date_sk
and ss_item_sk = i_item_sk
and i_manager_id = 36
and d_moy = 12
and d_year = 2001
group by
i_brand,
i_brand_id
order by
ext_price desc,
i_brand_id
limit 100
---- PLAN
PLAN-ROOT SINK
|
06:TOP-N [LIMIT=100]
| order by: sum(ss_ext_sales_price) DESC, i_brand_id ASC
|
05:AGGREGATE [FINALIZE]
| output: sum(ss_ext_sales_price)
| group by: i_brand, i_brand_id
|
04:HASH JOIN [INNER JOIN]
| hash predicates: ss_sold_date_sk = d_date_sk
| runtime filters: RF000 <- d_date_sk
|
|--00:SCAN HDFS [tpcds.date_dim]
| partitions=1/1 files=1 size=9.84MB
| predicates: d_year = 2001, d_moy = 12
|
03:HASH JOIN [INNER JOIN]
| hash predicates: ss_item_sk = i_item_sk
| runtime filters: RF001 <- i_item_sk
|
|--02:SCAN HDFS [tpcds.item]
| partitions=1/1 files=1 size=4.82MB
| predicates: i_manager_id = 36
|
01:SCAN HDFS [tpcds.store_sales]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF000 -> ss_sold_date_sk, RF001 -> ss_item_sk
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
11:MERGING-EXCHANGE [UNPARTITIONED]
| order by: sum(ss_ext_sales_price) DESC, i_brand_id ASC
| limit: 100
|
06:TOP-N [LIMIT=100]
| order by: sum(ss_ext_sales_price) DESC, i_brand_id ASC
|
10:AGGREGATE [FINALIZE]
| output: sum:merge(ss_ext_sales_price)
| group by: i_brand, i_brand_id
|
09:EXCHANGE [HASH(i_brand,i_brand_id)]
|
05:AGGREGATE [STREAMING]
| output: sum(ss_ext_sales_price)
| group by: i_brand, i_brand_id
|
04:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_sold_date_sk = d_date_sk
| runtime filters: RF000 <- d_date_sk
|
|--08:EXCHANGE [BROADCAST]
| |
| 00:SCAN HDFS [tpcds.date_dim]
| partitions=1/1 files=1 size=9.84MB
| predicates: d_year = 2001, d_moy = 12
|
03:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_item_sk = i_item_sk
| runtime filters: RF001 <- i_item_sk
|
|--07:EXCHANGE [BROADCAST]
| |
| 02:SCAN HDFS [tpcds.item]
| partitions=1/1 files=1 size=4.82MB
| predicates: i_manager_id = 36
|
01:SCAN HDFS [tpcds.store_sales]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF000 -> ss_sold_date_sk, RF001 -> ss_item_sk
---- PARALLELPLANS
PLAN-ROOT SINK
|
11:MERGING-EXCHANGE [UNPARTITIONED]
| order by: sum(ss_ext_sales_price) DESC, i_brand_id ASC
| limit: 100
|
06:TOP-N [LIMIT=100]
| order by: sum(ss_ext_sales_price) DESC, i_brand_id ASC
|
10:AGGREGATE [FINALIZE]
| output: sum:merge(ss_ext_sales_price)
| group by: i_brand, i_brand_id
|
09:EXCHANGE [HASH(i_brand,i_brand_id)]
|
05:AGGREGATE [STREAMING]
| output: sum(ss_ext_sales_price)
| group by: i_brand, i_brand_id
|
04:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_sold_date_sk = d_date_sk
| runtime filters: RF000 <- d_date_sk
|
|--JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: d_date_sk
| |
| 08:EXCHANGE [BROADCAST]
| |
| 00:SCAN HDFS [tpcds.date_dim]
| partitions=1/1 files=1 size=9.84MB
| predicates: d_year = 2001, d_moy = 12
|
03:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_item_sk = i_item_sk
| runtime filters: RF001 <- i_item_sk
|
|--JOIN BUILD
| | join-table-id=01 plan-id=02 cohort-id=01
| | build expressions: i_item_sk
| |
| 07:EXCHANGE [BROADCAST]
| |
| 02:SCAN HDFS [tpcds.item]
| partitions=1/1 files=1 size=4.82MB
| predicates: i_manager_id = 36
|
01:SCAN HDFS [tpcds.store_sales]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF000 -> ss_sold_date_sk, RF001 -> ss_item_sk
====
# TPCDS-Q59
with
wss as
(select
d_week_seq,
ss_store_sk,
sum(case when (d_day_name = 'Sunday') then ss_sales_price else null end) sun_sales,
sum(case when (d_day_name = 'Monday') then ss_sales_price else null end) mon_sales,
sum(case when (d_day_name = 'Tuesday') then ss_sales_price else null end) tue_sales,
sum(case when (d_day_name = 'Wednesday') then ss_sales_price else null end) wed_sales,
sum(case when (d_day_name = 'Thursday') then ss_sales_price else null end) thu_sales,
sum(case when (d_day_name = 'Friday') then ss_sales_price else null end) fri_sales,
sum(case when (d_day_name = 'Saturday') then ss_sales_price else null end) sat_sales
from
store_sales,
date_dim
where
d_date_sk = ss_sold_date_sk
group by
d_week_seq,
ss_store_sk
)
select
s_store_name1,
s_store_id1,
d_week_seq1,
sun_sales1 / sun_sales2,
mon_sales1 / mon_sales2,
tue_sales1 / tue_sales2,
wed_sales1 / wed_sales2,
thu_sales1 / thu_sales2,
fri_sales1 / fri_sales2,
sat_sales1 / sat_sales2
from
(select
s_store_name s_store_name1,
wss.d_week_seq d_week_seq1,
s_store_id s_store_id1,
sun_sales sun_sales1,
mon_sales mon_sales1,
tue_sales tue_sales1,
wed_sales wed_sales1,
thu_sales thu_sales1,
fri_sales fri_sales1,
sat_sales sat_sales1
from
wss,
store,
date_dim d
where
d.d_week_seq = wss.d_week_seq
and ss_store_sk = s_store_sk
and d_month_seq between 1185 and 1185 + 11
) y,
(select
s_store_name s_store_name2,
wss.d_week_seq d_week_seq2,
s_store_id s_store_id2,
sun_sales sun_sales2,
mon_sales mon_sales2,
tue_sales tue_sales2,
wed_sales wed_sales2,
thu_sales thu_sales2,
fri_sales fri_sales2,
sat_sales sat_sales2
from
wss,
store,
date_dim d
where
d.d_week_seq = wss.d_week_seq
and ss_store_sk = s_store_sk
and d_month_seq between 1185 + 12 and 1185 + 23
) x
where
s_store_id1 = s_store_id2
and d_week_seq1 = d_week_seq2 - 52
order by
s_store_name1,
s_store_id1,
d_week_seq1
limit 100
---- PLAN
PLAN-ROOT SINK
|
17:TOP-N [LIMIT=100]
| order by: s_store_name1 ASC, s_store_id1 ASC, d_week_seq1 ASC
|
16:HASH JOIN [INNER JOIN]
| hash predicates: d_week_seq = d_week_seq - 52, s_store_id = s_store_id
| runtime filters: RF000 <- d_week_seq - 52, RF001 <- s_store_id
|
|--15:HASH JOIN [INNER JOIN]
| | hash predicates: ss_store_sk = s_store_sk
| | runtime filters: RF005 <- s_store_sk
| |
| |--12:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| |
| 14:HASH JOIN [INNER JOIN]
| | hash predicates: d_week_seq = d.d_week_seq
| | runtime filters: RF006 <- d.d_week_seq
| |
| |--13:SCAN HDFS [tpcds.date_dim d]
| | partitions=1/1 files=1 size=9.84MB
| | predicates: d_month_seq <= 1208, d_month_seq >= 1197
| |
| 11:AGGREGATE [FINALIZE]
| | output: sum(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE NULL END)
| | group by: d_week_seq, ss_store_sk
| |
| 10:HASH JOIN [INNER JOIN]
| | hash predicates: ss_sold_date_sk = d_date_sk
| | runtime filters: RF007 <- d_date_sk
| |
| |--09:SCAN HDFS [tpcds.date_dim]
| | partitions=1/1 files=1 size=9.84MB
| | runtime filters: RF006 -> tpcds.date_dim.d_week_seq
| |
| 08:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF005 -> tpcds.store_sales.ss_store_sk, RF007 -> ss_sold_date_sk
|
07:HASH JOIN [INNER JOIN]
| hash predicates: ss_store_sk = s_store_sk
| runtime filters: RF002 <- s_store_sk
|
|--04:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
| runtime filters: RF001 -> s_store_id
|
06:HASH JOIN [INNER JOIN]
| hash predicates: d_week_seq = d.d_week_seq
| runtime filters: RF003 <- d.d_week_seq
|
|--05:SCAN HDFS [tpcds.date_dim d]
| partitions=1/1 files=1 size=9.84MB
| predicates: d_month_seq <= 1196, d_month_seq >= 1185
| runtime filters: RF000 -> d.d_week_seq
|
03:AGGREGATE [FINALIZE]
| output: sum(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE NULL END)
| group by: d_week_seq, ss_store_sk
|
02:HASH JOIN [INNER JOIN]
| hash predicates: ss_sold_date_sk = d_date_sk
| runtime filters: RF004 <- d_date_sk
|
|--01:SCAN HDFS [tpcds.date_dim]
| partitions=1/1 files=1 size=9.84MB
| runtime filters: RF000 -> tpcds.date_dim.d_week_seq, RF003 -> tpcds.date_dim.d_week_seq
|
00:SCAN HDFS [tpcds.store_sales]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF002 -> tpcds.store_sales.ss_store_sk, RF004 -> ss_sold_date_sk
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
32:MERGING-EXCHANGE [UNPARTITIONED]
| order by: s_store_name1 ASC, s_store_id1 ASC, d_week_seq1 ASC
| limit: 100
|
17:TOP-N [LIMIT=100]
| order by: s_store_name1 ASC, s_store_id1 ASC, d_week_seq1 ASC
|
16:HASH JOIN [INNER JOIN, PARTITIONED]
| hash predicates: d_week_seq = d_week_seq - 52, s_store_id = s_store_id
| runtime filters: RF000 <- d_week_seq - 52, RF001 <- s_store_id
|
|--31:EXCHANGE [HASH(d_week_seq - 52,s_store_id)]
| |
| 15:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_store_sk = s_store_sk
| | runtime filters: RF005 <- s_store_sk
| |
| |--29:EXCHANGE [BROADCAST]
| | |
| | 12:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| |
| 14:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: d_week_seq = d.d_week_seq
| | runtime filters: RF006 <- d.d_week_seq
| |
| |--28:EXCHANGE [BROADCAST]
| | |
| | 13:SCAN HDFS [tpcds.date_dim d]
| | partitions=1/1 files=1 size=9.84MB
| | predicates: d_month_seq <= 1208, d_month_seq >= 1197
| |
| 27:AGGREGATE [FINALIZE]
| | output: sum:merge(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE NULL END)
| | group by: d_week_seq, ss_store_sk
| |
| 26:EXCHANGE [HASH(d_week_seq,ss_store_sk)]
| |
| 11:AGGREGATE [STREAMING]
| | output: sum(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE NULL END)
| | group by: d_week_seq, ss_store_sk
| |
| 10:HASH JOIN [INNER JOIN, PARTITIONED]
| | hash predicates: ss_sold_date_sk = d_date_sk
| | runtime filters: RF007 <- d_date_sk
| |
| |--25:EXCHANGE [HASH(d_date_sk)]
| | |
| | 09:SCAN HDFS [tpcds.date_dim]
| | partitions=1/1 files=1 size=9.84MB
| | runtime filters: RF006 -> tpcds.date_dim.d_week_seq
| |
| 24:EXCHANGE [HASH(ss_sold_date_sk)]
| |
| 08:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF005 -> tpcds.store_sales.ss_store_sk, RF007 -> ss_sold_date_sk
|
30:EXCHANGE [HASH(d_week_seq,s_store_id)]
|
07:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_store_sk = s_store_sk
| runtime filters: RF002 <- s_store_sk
|
|--23:EXCHANGE [BROADCAST]
| |
| 04:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
| runtime filters: RF001 -> s_store_id
|
06:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: d_week_seq = d.d_week_seq
| runtime filters: RF003 <- d.d_week_seq
|
|--22:EXCHANGE [BROADCAST]
| |
| 05:SCAN HDFS [tpcds.date_dim d]
| partitions=1/1 files=1 size=9.84MB
| predicates: d_month_seq <= 1196, d_month_seq >= 1185
| runtime filters: RF000 -> d.d_week_seq
|
21:AGGREGATE [FINALIZE]
| output: sum:merge(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE NULL END)
| group by: d_week_seq, ss_store_sk
|
20:EXCHANGE [HASH(d_week_seq,ss_store_sk)]
|
03:AGGREGATE [STREAMING]
| output: sum(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE NULL END)
| group by: d_week_seq, ss_store_sk
|
02:HASH JOIN [INNER JOIN, PARTITIONED]
| hash predicates: ss_sold_date_sk = d_date_sk
| runtime filters: RF004 <- d_date_sk
|
|--19:EXCHANGE [HASH(d_date_sk)]
| |
| 01:SCAN HDFS [tpcds.date_dim]
| partitions=1/1 files=1 size=9.84MB
| runtime filters: RF000 -> tpcds.date_dim.d_week_seq, RF003 -> tpcds.date_dim.d_week_seq
|
18:EXCHANGE [HASH(ss_sold_date_sk)]
|
00:SCAN HDFS [tpcds.store_sales]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF002 -> tpcds.store_sales.ss_store_sk, RF004 -> ss_sold_date_sk
---- PARALLELPLANS
PLAN-ROOT SINK
|
32:MERGING-EXCHANGE [UNPARTITIONED]
| order by: s_store_name1 ASC, s_store_id1 ASC, d_week_seq1 ASC
| limit: 100
|
17:TOP-N [LIMIT=100]
| order by: s_store_name1 ASC, s_store_id1 ASC, d_week_seq1 ASC
|
16:HASH JOIN [INNER JOIN, PARTITIONED]
| hash predicates: d_week_seq = d_week_seq - 52, s_store_id = s_store_id
| runtime filters: RF000 <- d_week_seq - 52, RF001 <- s_store_id
|
|--JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: d_week_seq - 52, s_store_id
| |
| 31:EXCHANGE [HASH(d_week_seq - 52,s_store_id)]
| |
| 15:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_store_sk = s_store_sk
| | runtime filters: RF005 <- s_store_sk
| |
| |--JOIN BUILD
| | | join-table-id=01 plan-id=02 cohort-id=02
| | | build expressions: s_store_sk
| | |
| | 29:EXCHANGE [BROADCAST]
| | |
| | 12:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| |
| 14:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: d_week_seq = d.d_week_seq
| | runtime filters: RF006 <- d.d_week_seq
| |
| |--JOIN BUILD
| | | join-table-id=02 plan-id=03 cohort-id=02
| | | build expressions: d.d_week_seq
| | |
| | 28:EXCHANGE [BROADCAST]
| | |
| | 13:SCAN HDFS [tpcds.date_dim d]
| | partitions=1/1 files=1 size=9.84MB
| | predicates: d_month_seq <= 1208, d_month_seq >= 1197
| |
| 27:AGGREGATE [FINALIZE]
| | output: sum:merge(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE NULL END)
| | group by: d_week_seq, ss_store_sk
| |
| 26:EXCHANGE [HASH(d_week_seq,ss_store_sk)]
| |
| 11:AGGREGATE [STREAMING]
| | output: sum(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE NULL END)
| | group by: d_week_seq, ss_store_sk
| |
| 10:HASH JOIN [INNER JOIN, PARTITIONED]
| | hash predicates: ss_sold_date_sk = d_date_sk
| | runtime filters: RF007 <- d_date_sk
| |
| |--JOIN BUILD
| | | join-table-id=03 plan-id=04 cohort-id=02
| | | build expressions: d_date_sk
| | |
| | 25:EXCHANGE [HASH(d_date_sk)]
| | |
| | 09:SCAN HDFS [tpcds.date_dim]
| | partitions=1/1 files=1 size=9.84MB
| | runtime filters: RF006 -> tpcds.date_dim.d_week_seq
| |
| 24:EXCHANGE [HASH(ss_sold_date_sk)]
| |
| 08:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF005 -> tpcds.store_sales.ss_store_sk, RF007 -> ss_sold_date_sk
|
30:EXCHANGE [HASH(d_week_seq,s_store_id)]
|
07:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_store_sk = s_store_sk
| runtime filters: RF002 <- s_store_sk
|
|--JOIN BUILD
| | join-table-id=04 plan-id=05 cohort-id=01
| | build expressions: s_store_sk
| |
| 23:EXCHANGE [BROADCAST]
| |
| 04:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
| runtime filters: RF001 -> s_store_id
|
06:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: d_week_seq = d.d_week_seq
| runtime filters: RF003 <- d.d_week_seq
|
|--JOIN BUILD
| | join-table-id=05 plan-id=06 cohort-id=01
| | build expressions: d.d_week_seq
| |
| 22:EXCHANGE [BROADCAST]
| |
| 05:SCAN HDFS [tpcds.date_dim d]
| partitions=1/1 files=1 size=9.84MB
| predicates: d_month_seq <= 1196, d_month_seq >= 1185
| runtime filters: RF000 -> d.d_week_seq
|
21:AGGREGATE [FINALIZE]
| output: sum:merge(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE NULL END)
| group by: d_week_seq, ss_store_sk
|
20:EXCHANGE [HASH(d_week_seq,ss_store_sk)]
|
03:AGGREGATE [STREAMING]
| output: sum(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE NULL END)
| group by: d_week_seq, ss_store_sk
|
02:HASH JOIN [INNER JOIN, PARTITIONED]
| hash predicates: ss_sold_date_sk = d_date_sk
| runtime filters: RF004 <- d_date_sk
|
|--JOIN BUILD
| | join-table-id=06 plan-id=07 cohort-id=01
| | build expressions: d_date_sk
| |
| 19:EXCHANGE [HASH(d_date_sk)]
| |
| 01:SCAN HDFS [tpcds.date_dim]
| partitions=1/1 files=1 size=9.84MB
| runtime filters: RF000 -> tpcds.date_dim.d_week_seq, RF003 -> tpcds.date_dim.d_week_seq
|
18:EXCHANGE [HASH(ss_sold_date_sk)]
|
00:SCAN HDFS [tpcds.store_sales]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF002 -> tpcds.store_sales.ss_store_sk, RF004 -> ss_sold_date_sk
====
# TPCDS-Q63
select
*
from
(select
i_manager_id,
sum(ss_sales_price) sum_sales,
avg(sum(ss_sales_price)) over (partition by i_manager_id) avg_monthly_sales
from
item,
store_sales,
date_dim,
store
where
ss_item_sk = i_item_sk
and ss_sold_date_sk = d_date_sk
and ss_store_sk = s_store_sk
and d_month_seq in (1212, 1212 + 1, 1212 + 2, 1212 + 3, 1212 + 4, 1212 + 5, 1212 + 6, 1212 + 7, 1212 + 8, 1212 + 9, 1212 + 10, 1212 + 11)
and ((i_category in ('Books', 'Children', 'Electronics')
and i_class in ('personal', 'portable', 'refernece', 'self-help')
and i_brand in ('scholaramalgamalg #14', 'scholaramalgamalg #7', 'exportiunivamalg #9', 'scholaramalgamalg #9'))
or (i_category in ('Women', 'Music', 'Men')
and i_class in ('accessories', 'classical', 'fragrances', 'pants')
and i_brand in ('amalgimporto #1', 'edu packscholar #1', 'exportiimporto #1', 'importoamalg #1')))
and ss_sold_date_sk between 2451911 and 2452275 -- partition key filter
group by
i_manager_id,
d_moy
) tmp1
where
case when avg_monthly_sales > 0 then abs (sum_sales - avg_monthly_sales) / avg_monthly_sales else null end > 0.1
order by
i_manager_id,
avg_monthly_sales,
sum_sales
limit 100
---- PLAN
PLAN-ROOT SINK
|
11:TOP-N [LIMIT=100]
| order by: i_manager_id ASC, avg_monthly_sales ASC, sum_sales ASC
|
10:SELECT
| predicates: CASE WHEN avg(sum(ss_sales_price)) > 0 THEN abs(sum(ss_sales_price) - avg(sum(ss_sales_price))) / avg(sum(ss_sales_price)) ELSE NULL END > 0.1
|
09:ANALYTIC
| functions: avg(sum(ss_sales_price))
| partition by: i_manager_id
|
08:SORT
| order by: i_manager_id ASC NULLS FIRST
|
07:AGGREGATE [FINALIZE]
| output: sum(ss_sales_price)
| group by: i_manager_id, d_moy
|
06:HASH JOIN [INNER JOIN]
| hash predicates: ss_store_sk = s_store_sk
| runtime filters: RF000 <- s_store_sk
|
|--03:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
|
05:HASH JOIN [INNER JOIN]
| hash predicates: d_date_sk = ss_sold_date_sk
| runtime filters: RF001 <- ss_sold_date_sk
|
|--04:HASH JOIN [INNER JOIN]
| | hash predicates: ss_item_sk = i_item_sk
| | runtime filters: RF002 <- i_item_sk
| |
| |--00:SCAN HDFS [tpcds.item]
| | partitions=1/1 files=1 size=4.82MB
| | predicates: ((i_category IN ('Books', 'Children', 'Electronics') AND i_class IN ('personal', 'portable', 'refernece', 'self-help') AND i_brand IN ('scholaramalgamalg #14', 'scholaramalgamalg #7', 'exportiunivamalg #9', 'scholaramalgamalg #9')) OR (i_category IN ('Women', 'Music', 'Men') AND i_class IN ('accessories', 'classical', 'fragrances', 'pants') AND i_brand IN ('amalgimporto #1', 'edu packscholar #1', 'exportiimporto #1', 'importoamalg #1')))
| |
| 01:SCAN HDFS [tpcds.store_sales]
| partitions=24/120 files=24 size=4.32MB
| runtime filters: RF000 -> ss_store_sk, RF002 -> ss_item_sk
|
02:SCAN HDFS [tpcds.date_dim]
partitions=1/1 files=1 size=9.84MB
predicates: tpcds.date_dim.d_date_sk <= 2452275, tpcds.date_dim.d_date_sk >= 2451911, d_month_seq IN (1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223)
runtime filters: RF001 -> d_date_sk
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
17:MERGING-EXCHANGE [UNPARTITIONED]
| order by: i_manager_id ASC, avg_monthly_sales ASC, sum_sales ASC
| limit: 100
|
11:TOP-N [LIMIT=100]
| order by: i_manager_id ASC, avg_monthly_sales ASC, sum_sales ASC
|
10:SELECT
| predicates: CASE WHEN avg(sum(ss_sales_price)) > 0 THEN abs(sum(ss_sales_price) - avg(sum(ss_sales_price))) / avg(sum(ss_sales_price)) ELSE NULL END > 0.1
|
09:ANALYTIC
| functions: avg(sum(ss_sales_price))
| partition by: i_manager_id
|
08:SORT
| order by: i_manager_id ASC NULLS FIRST
|
16:AGGREGATE [FINALIZE]
| output: sum:merge(ss_sales_price)
| group by: i_manager_id, d_moy
|
15:EXCHANGE [HASH(i_manager_id)]
|
07:AGGREGATE [STREAMING]
| output: sum(ss_sales_price)
| group by: i_manager_id, d_moy
|
06:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_store_sk = s_store_sk
| runtime filters: RF000 <- s_store_sk
|
|--14:EXCHANGE [BROADCAST]
| |
| 03:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
|
05:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: d_date_sk = ss_sold_date_sk
| runtime filters: RF001 <- ss_sold_date_sk
|
|--13:EXCHANGE [BROADCAST]
| |
| 04:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_item_sk = i_item_sk
| | runtime filters: RF002 <- i_item_sk
| |
| |--12:EXCHANGE [BROADCAST]
| | |
| | 00:SCAN HDFS [tpcds.item]
| | partitions=1/1 files=1 size=4.82MB
| | predicates: ((i_category IN ('Books', 'Children', 'Electronics') AND i_class IN ('personal', 'portable', 'refernece', 'self-help') AND i_brand IN ('scholaramalgamalg #14', 'scholaramalgamalg #7', 'exportiunivamalg #9', 'scholaramalgamalg #9')) OR (i_category IN ('Women', 'Music', 'Men') AND i_class IN ('accessories', 'classical', 'fragrances', 'pants') AND i_brand IN ('amalgimporto #1', 'edu packscholar #1', 'exportiimporto #1', 'importoamalg #1')))
| |
| 01:SCAN HDFS [tpcds.store_sales]
| partitions=24/120 files=24 size=4.32MB
| runtime filters: RF000 -> ss_store_sk, RF002 -> ss_item_sk
|
02:SCAN HDFS [tpcds.date_dim]
partitions=1/1 files=1 size=9.84MB
predicates: tpcds.date_dim.d_date_sk <= 2452275, tpcds.date_dim.d_date_sk >= 2451911, d_month_seq IN (1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223)
runtime filters: RF001 -> d_date_sk
---- PARALLELPLANS
PLAN-ROOT SINK
|
17:MERGING-EXCHANGE [UNPARTITIONED]
| order by: i_manager_id ASC, avg_monthly_sales ASC, sum_sales ASC
| limit: 100
|
11:TOP-N [LIMIT=100]
| order by: i_manager_id ASC, avg_monthly_sales ASC, sum_sales ASC
|
10:SELECT
| predicates: CASE WHEN avg(sum(ss_sales_price)) > 0 THEN abs(sum(ss_sales_price) - avg(sum(ss_sales_price))) / avg(sum(ss_sales_price)) ELSE NULL END > 0.1
|
09:ANALYTIC
| functions: avg(sum(ss_sales_price))
| partition by: i_manager_id
|
08:SORT
| order by: i_manager_id ASC NULLS FIRST
|
16:AGGREGATE [FINALIZE]
| output: sum:merge(ss_sales_price)
| group by: i_manager_id, d_moy
|
15:EXCHANGE [HASH(i_manager_id)]
|
07:AGGREGATE [STREAMING]
| output: sum(ss_sales_price)
| group by: i_manager_id, d_moy
|
06:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_store_sk = s_store_sk
| runtime filters: RF000 <- s_store_sk
|
|--JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: s_store_sk
| |
| 14:EXCHANGE [BROADCAST]
| |
| 03:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
|
05:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: d_date_sk = ss_sold_date_sk
| runtime filters: RF001 <- ss_sold_date_sk
|
|--JOIN BUILD
| | join-table-id=01 plan-id=02 cohort-id=01
| | build expressions: ss_sold_date_sk
| |
| 13:EXCHANGE [BROADCAST]
| |
| 04:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_item_sk = i_item_sk
| | runtime filters: RF002 <- i_item_sk
| |
| |--JOIN BUILD
| | | join-table-id=02 plan-id=03 cohort-id=02
| | | build expressions: i_item_sk
| | |
| | 12:EXCHANGE [BROADCAST]
| | |
| | 00:SCAN HDFS [tpcds.item]
| | partitions=1/1 files=1 size=4.82MB
| | predicates: ((i_category IN ('Books', 'Children', 'Electronics') AND i_class IN ('personal', 'portable', 'refernece', 'self-help') AND i_brand IN ('scholaramalgamalg #14', 'scholaramalgamalg #7', 'exportiunivamalg #9', 'scholaramalgamalg #9')) OR (i_category IN ('Women', 'Music', 'Men') AND i_class IN ('accessories', 'classical', 'fragrances', 'pants') AND i_brand IN ('amalgimporto #1', 'edu packscholar #1', 'exportiimporto #1', 'importoamalg #1')))
| |
| 01:SCAN HDFS [tpcds.store_sales]
| partitions=24/120 files=24 size=4.32MB
| runtime filters: RF000 -> ss_store_sk, RF002 -> ss_item_sk
|
02:SCAN HDFS [tpcds.date_dim]
partitions=1/1 files=1 size=9.84MB
predicates: tpcds.date_dim.d_date_sk <= 2452275, tpcds.date_dim.d_date_sk >= 2451911, d_month_seq IN (1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223)
runtime filters: RF001 -> d_date_sk
====
# TPCDS-Q65
select
s_store_name,
i_item_desc,
sc.revenue,
i_current_price,
i_wholesale_cost,
i_brand
from
store,
item,
(select
ss_store_sk,
avg(revenue) as ave
from
(select
ss_store_sk,
ss_item_sk,
sum(ss_sales_price) as revenue
from
store_sales,
date_dim
where
ss_sold_date_sk = d_date_sk
and d_month_seq between 1212 and 1212 + 11
group by
ss_store_sk,
ss_item_sk
) sa
group by
ss_store_sk
) sb,
(select
ss_store_sk,
ss_item_sk,
sum(ss_sales_price) as revenue
from
store_sales,
date_dim
where
ss_sold_date_sk = d_date_sk
and d_month_seq between 1212 and 1212 + 11
group by
ss_store_sk,
ss_item_sk
) sc
where
sb.ss_store_sk = sc.ss_store_sk
and sc.revenue <= 0.1 * sb.ave
and s_store_sk = sc.ss_store_sk
and i_item_sk = sc.ss_item_sk
order by
s_store_name,
i_item_desc
limit 100
---- PLAN
PLAN-ROOT SINK
|
14:TOP-N [LIMIT=100]
| order by: s_store_name ASC, i_item_desc ASC
|
13:HASH JOIN [INNER JOIN]
| hash predicates: i_item_sk = ss_item_sk
| runtime filters: RF000 <- ss_item_sk
|
|--12:HASH JOIN [INNER JOIN]
| | hash predicates: s_store_sk = ss_store_sk
| | runtime filters: RF001 <- ss_store_sk
| |
| |--11:HASH JOIN [INNER JOIN]
| | | hash predicates: ss_store_sk = ss_store_sk
| | | other predicates: sum(ss_sales_price) <= 0.1 * avg(revenue)
| | | runtime filters: RF002 <- ss_store_sk
| | |
| | |--06:AGGREGATE [FINALIZE]
| | | | output: avg(sum(ss_sales_price))
| | | | group by: ss_store_sk
| | | |
| | | 05:AGGREGATE [FINALIZE]
| | | | output: sum(ss_sales_price)
| | | | group by: ss_store_sk, ss_item_sk
| | | |
| | | 04:HASH JOIN [INNER JOIN]
| | | | hash predicates: ss_sold_date_sk = d_date_sk
| | | | runtime filters: RF004 <- d_date_sk
| | | |
| | | |--03:SCAN HDFS [tpcds.date_dim]
| | | | partitions=1/1 files=1 size=9.84MB
| | | | predicates: d_month_seq <= 1223, d_month_seq >= 1212
| | | |
| | | 02:SCAN HDFS [tpcds.store_sales]
| | | partitions=120/120 files=120 size=21.31MB
| | | runtime filters: RF004 -> ss_sold_date_sk
| | |
| | 10:AGGREGATE [FINALIZE]
| | | output: sum(ss_sales_price)
| | | group by: ss_store_sk, ss_item_sk
| | |
| | 09:HASH JOIN [INNER JOIN]
| | | hash predicates: ss_sold_date_sk = d_date_sk
| | | runtime filters: RF003 <- d_date_sk
| | |
| | |--08:SCAN HDFS [tpcds.date_dim]
| | | partitions=1/1 files=1 size=9.84MB
| | | predicates: d_month_seq <= 1223, d_month_seq >= 1212
| | |
| | 07:SCAN HDFS [tpcds.store_sales]
| | partitions=120/120 files=120 size=21.31MB
| | runtime filters: RF002 -> tpcds.store_sales.ss_store_sk, RF003 -> ss_sold_date_sk
| |
| 00:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
| runtime filters: RF001 -> s_store_sk
|
01:SCAN HDFS [tpcds.item]
partitions=1/1 files=1 size=4.82MB
runtime filters: RF000 -> i_item_sk
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
26:MERGING-EXCHANGE [UNPARTITIONED]
| order by: s_store_name ASC, i_item_desc ASC
| limit: 100
|
14:TOP-N [LIMIT=100]
| order by: s_store_name ASC, i_item_desc ASC
|
13:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: i_item_sk = ss_item_sk
| runtime filters: RF000 <- ss_item_sk
|
|--25:EXCHANGE [BROADCAST]
| |
| 12:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: s_store_sk = ss_store_sk
| | runtime filters: RF001 <- ss_store_sk
| |
| |--24:EXCHANGE [BROADCAST]
| | |
| | 11:HASH JOIN [INNER JOIN, BROADCAST]
| | | hash predicates: ss_store_sk = ss_store_sk
| | | other predicates: sum(ss_sales_price) <= 0.1 * avg(revenue)
| | | runtime filters: RF002 <- ss_store_sk
| | |
| | |--23:EXCHANGE [BROADCAST]
| | | |
| | | 22:AGGREGATE [FINALIZE]
| | | | output: avg:merge(revenue)
| | | | group by: ss_store_sk
| | | |
| | | 21:EXCHANGE [HASH(ss_store_sk)]
| | | |
| | | 06:AGGREGATE [STREAMING]
| | | | output: avg(sum(ss_sales_price))
| | | | group by: ss_store_sk
| | | |
| | | 20:AGGREGATE [FINALIZE]
| | | | output: sum:merge(ss_sales_price)
| | | | group by: ss_store_sk, ss_item_sk
| | | |
| | | 19:EXCHANGE [HASH(ss_store_sk,ss_item_sk)]
| | | |
| | | 05:AGGREGATE [STREAMING]
| | | | output: sum(ss_sales_price)
| | | | group by: ss_store_sk, ss_item_sk
| | | |
| | | 04:HASH JOIN [INNER JOIN, BROADCAST]
| | | | hash predicates: ss_sold_date_sk = d_date_sk
| | | | runtime filters: RF004 <- d_date_sk
| | | |
| | | |--18:EXCHANGE [BROADCAST]
| | | | |
| | | | 03:SCAN HDFS [tpcds.date_dim]
| | | | partitions=1/1 files=1 size=9.84MB
| | | | predicates: d_month_seq <= 1223, d_month_seq >= 1212
| | | |
| | | 02:SCAN HDFS [tpcds.store_sales]
| | | partitions=120/120 files=120 size=21.31MB
| | | runtime filters: RF004 -> ss_sold_date_sk
| | |
| | 17:AGGREGATE [FINALIZE]
| | | output: sum:merge(ss_sales_price)
| | | group by: ss_store_sk, ss_item_sk
| | |
| | 16:EXCHANGE [HASH(ss_store_sk,ss_item_sk)]
| | |
| | 10:AGGREGATE [STREAMING]
| | | output: sum(ss_sales_price)
| | | group by: ss_store_sk, ss_item_sk
| | |
| | 09:HASH JOIN [INNER JOIN, BROADCAST]
| | | hash predicates: ss_sold_date_sk = d_date_sk
| | | runtime filters: RF003 <- d_date_sk
| | |
| | |--15:EXCHANGE [BROADCAST]
| | | |
| | | 08:SCAN HDFS [tpcds.date_dim]
| | | partitions=1/1 files=1 size=9.84MB
| | | predicates: d_month_seq <= 1223, d_month_seq >= 1212
| | |
| | 07:SCAN HDFS [tpcds.store_sales]
| | partitions=120/120 files=120 size=21.31MB
| | runtime filters: RF002 -> tpcds.store_sales.ss_store_sk, RF003 -> ss_sold_date_sk
| |
| 00:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
| runtime filters: RF001 -> s_store_sk
|
01:SCAN HDFS [tpcds.item]
partitions=1/1 files=1 size=4.82MB
runtime filters: RF000 -> i_item_sk
---- PARALLELPLANS
PLAN-ROOT SINK
|
26:MERGING-EXCHANGE [UNPARTITIONED]
| order by: s_store_name ASC, i_item_desc ASC
| limit: 100
|
14:TOP-N [LIMIT=100]
| order by: s_store_name ASC, i_item_desc ASC
|
13:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: i_item_sk = ss_item_sk
| runtime filters: RF000 <- ss_item_sk
|
|--JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: ss_item_sk
| |
| 25:EXCHANGE [BROADCAST]
| |
| 12:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: s_store_sk = ss_store_sk
| | runtime filters: RF001 <- ss_store_sk
| |
| |--JOIN BUILD
| | | join-table-id=01 plan-id=02 cohort-id=02
| | | build expressions: ss_store_sk
| | |
| | 24:EXCHANGE [BROADCAST]
| | |
| | 11:HASH JOIN [INNER JOIN, BROADCAST]
| | | hash predicates: ss_store_sk = ss_store_sk
| | | other predicates: sum(ss_sales_price) <= 0.1 * avg(revenue)
| | | runtime filters: RF002 <- ss_store_sk
| | |
| | |--JOIN BUILD
| | | | join-table-id=02 plan-id=03 cohort-id=03
| | | | build expressions: ss_store_sk
| | | |
| | | 23:EXCHANGE [BROADCAST]
| | | |
| | | 22:AGGREGATE [FINALIZE]
| | | | output: avg:merge(revenue)
| | | | group by: ss_store_sk
| | | |
| | | 21:EXCHANGE [HASH(ss_store_sk)]
| | | |
| | | 06:AGGREGATE [STREAMING]
| | | | output: avg(sum(ss_sales_price))
| | | | group by: ss_store_sk
| | | |
| | | 20:AGGREGATE [FINALIZE]
| | | | output: sum:merge(ss_sales_price)
| | | | group by: ss_store_sk, ss_item_sk
| | | |
| | | 19:EXCHANGE [HASH(ss_store_sk,ss_item_sk)]
| | | |
| | | 05:AGGREGATE [STREAMING]
| | | | output: sum(ss_sales_price)
| | | | group by: ss_store_sk, ss_item_sk
| | | |
| | | 04:HASH JOIN [INNER JOIN, BROADCAST]
| | | | hash predicates: ss_sold_date_sk = d_date_sk
| | | | runtime filters: RF004 <- d_date_sk
| | | |
| | | |--JOIN BUILD
| | | | | join-table-id=03 plan-id=04 cohort-id=04
| | | | | build expressions: d_date_sk
| | | | |
| | | | 18:EXCHANGE [BROADCAST]
| | | | |
| | | | 03:SCAN HDFS [tpcds.date_dim]
| | | | partitions=1/1 files=1 size=9.84MB
| | | | predicates: d_month_seq <= 1223, d_month_seq >= 1212
| | | |
| | | 02:SCAN HDFS [tpcds.store_sales]
| | | partitions=120/120 files=120 size=21.31MB
| | | runtime filters: RF004 -> ss_sold_date_sk
| | |
| | 17:AGGREGATE [FINALIZE]
| | | output: sum:merge(ss_sales_price)
| | | group by: ss_store_sk, ss_item_sk
| | |
| | 16:EXCHANGE [HASH(ss_store_sk,ss_item_sk)]
| | |
| | 10:AGGREGATE [STREAMING]
| | | output: sum(ss_sales_price)
| | | group by: ss_store_sk, ss_item_sk
| | |
| | 09:HASH JOIN [INNER JOIN, BROADCAST]
| | | hash predicates: ss_sold_date_sk = d_date_sk
| | | runtime filters: RF003 <- d_date_sk
| | |
| | |--JOIN BUILD
| | | | join-table-id=04 plan-id=05 cohort-id=03
| | | | build expressions: d_date_sk
| | | |
| | | 15:EXCHANGE [BROADCAST]
| | | |
| | | 08:SCAN HDFS [tpcds.date_dim]
| | | partitions=1/1 files=1 size=9.84MB
| | | predicates: d_month_seq <= 1223, d_month_seq >= 1212
| | |
| | 07:SCAN HDFS [tpcds.store_sales]
| | partitions=120/120 files=120 size=21.31MB
| | runtime filters: RF002 -> tpcds.store_sales.ss_store_sk, RF003 -> ss_sold_date_sk
| |
| 00:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
| runtime filters: RF001 -> s_store_sk
|
01:SCAN HDFS [tpcds.item]
partitions=1/1 files=1 size=4.82MB
runtime filters: RF000 -> i_item_sk
====
# TPCDS-Q68
select
c_last_name,
c_first_name,
ca_city,
bought_city,
ss_ticket_number,
extended_price,
extended_tax,
list_price
from
(select
ss_ticket_number,
ss_customer_sk,
ca_city bought_city,
sum(ss_ext_sales_price) extended_price,
sum(ss_ext_list_price) list_price,
sum(ss_ext_tax) extended_tax
from
store_sales,
date_dim,
store,
household_demographics,
customer_address
where
store_sales.ss_sold_date_sk = date_dim.d_date_sk
and store_sales.ss_store_sk = store.s_store_sk
and store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk
and store_sales.ss_addr_sk = customer_address.ca_address_sk
and (household_demographics.hd_dep_count = 5
or household_demographics.hd_vehicle_count = 3)
and store.s_city in ('Midway', 'Fairview')
and d_date between '1999-01-01' and '1999-03-31'
group by
ss_ticket_number,
ss_customer_sk,
ss_addr_sk,
ca_city
) dn,
customer,
customer_address current_addr
where
ss_customer_sk = c_customer_sk
and customer.c_current_addr_sk = current_addr.ca_address_sk
and current_addr.ca_city <> bought_city
order by
c_last_name,
ss_ticket_number
limit 100
---- PLAN
PLAN-ROOT SINK
|
14:TOP-N [LIMIT=100]
| order by: c_last_name ASC, ss_ticket_number ASC
|
13:HASH JOIN [INNER JOIN]
| hash predicates: customer.c_current_addr_sk = current_addr.ca_address_sk
| other predicates: current_addr.ca_city != ca_city
| runtime filters: RF000 <- current_addr.ca_address_sk
|
|--11:SCAN HDFS [tpcds.customer_address current_addr]
| partitions=1/1 files=1 size=5.25MB
|
12:HASH JOIN [INNER JOIN]
| hash predicates: c_customer_sk = ss_customer_sk
| runtime filters: RF001 <- ss_customer_sk
|
|--09:AGGREGATE [FINALIZE]
| | output: sum(ss_ext_sales_price), sum(ss_ext_list_price), sum(ss_ext_tax)
| | group by: ss_ticket_number, ss_customer_sk, ss_addr_sk, ca_city
| |
| 08:HASH JOIN [INNER JOIN]
| | hash predicates: store_sales.ss_addr_sk = customer_address.ca_address_sk
| | runtime filters: RF002 <- customer_address.ca_address_sk
| |
| |--04:SCAN HDFS [tpcds.customer_address]
| | partitions=1/1 files=1 size=5.25MB
| |
| 07:HASH JOIN [INNER JOIN]
| | hash predicates: store_sales.ss_store_sk = store.s_store_sk
| | runtime filters: RF003 <- store.s_store_sk
| |
| |--02:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| | predicates: store.s_city IN ('Midway', 'Fairview')
| |
| 06:HASH JOIN [INNER JOIN]
| | hash predicates: store_sales.ss_sold_date_sk = date_dim.d_date_sk
| | runtime filters: RF004 <- date_dim.d_date_sk
| |
| |--01:SCAN HDFS [tpcds.date_dim]
| | partitions=1/1 files=1 size=9.84MB
| | predicates: d_date <= '1999-03-31', d_date >= '1999-01-01'
| |
| 05:HASH JOIN [INNER JOIN]
| | hash predicates: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk
| | runtime filters: RF005 <- household_demographics.hd_demo_sk
| |
| |--03:SCAN HDFS [tpcds.household_demographics]
| | partitions=1/1 files=1 size=148.10KB
| | predicates: (household_demographics.hd_dep_count = 5 OR household_demographics.hd_vehicle_count = 3)
| |
| 00:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF002 -> store_sales.ss_addr_sk, RF003 -> store_sales.ss_store_sk, RF004 -> store_sales.ss_sold_date_sk, RF005 -> store_sales.ss_hdemo_sk
|
10:SCAN HDFS [tpcds.customer]
partitions=1/1 files=1 size=12.60MB
runtime filters: RF000 -> customer.c_current_addr_sk, RF001 -> c_customer_sk
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
23:MERGING-EXCHANGE [UNPARTITIONED]
| order by: c_last_name ASC, ss_ticket_number ASC
| limit: 100
|
14:TOP-N [LIMIT=100]
| order by: c_last_name ASC, ss_ticket_number ASC
|
13:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: customer.c_current_addr_sk = current_addr.ca_address_sk
| other predicates: current_addr.ca_city != ca_city
| runtime filters: RF000 <- current_addr.ca_address_sk
|
|--22:EXCHANGE [BROADCAST]
| |
| 11:SCAN HDFS [tpcds.customer_address current_addr]
| partitions=1/1 files=1 size=5.25MB
|
12:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: c_customer_sk = ss_customer_sk
| runtime filters: RF001 <- ss_customer_sk
|
|--21:EXCHANGE [BROADCAST]
| |
| 20:AGGREGATE [FINALIZE]
| | output: sum:merge(ss_ext_sales_price), sum:merge(ss_ext_list_price), sum:merge(ss_ext_tax)
| | group by: ss_ticket_number, ss_customer_sk, ss_addr_sk, ca_city
| |
| 19:EXCHANGE [HASH(ss_ticket_number,ss_customer_sk,ss_addr_sk,ca_city)]
| |
| 09:AGGREGATE [STREAMING]
| | output: sum(ss_ext_sales_price), sum(ss_ext_list_price), sum(ss_ext_tax)
| | group by: ss_ticket_number, ss_customer_sk, ss_addr_sk, ca_city
| |
| 08:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: store_sales.ss_addr_sk = customer_address.ca_address_sk
| | runtime filters: RF002 <- customer_address.ca_address_sk
| |
| |--18:EXCHANGE [BROADCAST]
| | |
| | 04:SCAN HDFS [tpcds.customer_address]
| | partitions=1/1 files=1 size=5.25MB
| |
| 07:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: store_sales.ss_store_sk = store.s_store_sk
| | runtime filters: RF003 <- store.s_store_sk
| |
| |--17:EXCHANGE [BROADCAST]
| | |
| | 02:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| | predicates: store.s_city IN ('Midway', 'Fairview')
| |
| 06:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: store_sales.ss_sold_date_sk = date_dim.d_date_sk
| | runtime filters: RF004 <- date_dim.d_date_sk
| |
| |--16:EXCHANGE [BROADCAST]
| | |
| | 01:SCAN HDFS [tpcds.date_dim]
| | partitions=1/1 files=1 size=9.84MB
| | predicates: d_date <= '1999-03-31', d_date >= '1999-01-01'
| |
| 05:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk
| | runtime filters: RF005 <- household_demographics.hd_demo_sk
| |
| |--15:EXCHANGE [BROADCAST]
| | |
| | 03:SCAN HDFS [tpcds.household_demographics]
| | partitions=1/1 files=1 size=148.10KB
| | predicates: (household_demographics.hd_dep_count = 5 OR household_demographics.hd_vehicle_count = 3)
| |
| 00:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF002 -> store_sales.ss_addr_sk, RF003 -> store_sales.ss_store_sk, RF004 -> store_sales.ss_sold_date_sk, RF005 -> store_sales.ss_hdemo_sk
|
10:SCAN HDFS [tpcds.customer]
partitions=1/1 files=1 size=12.60MB
runtime filters: RF000 -> customer.c_current_addr_sk, RF001 -> c_customer_sk
---- PARALLELPLANS
PLAN-ROOT SINK
|
23:MERGING-EXCHANGE [UNPARTITIONED]
| order by: c_last_name ASC, ss_ticket_number ASC
| limit: 100
|
14:TOP-N [LIMIT=100]
| order by: c_last_name ASC, ss_ticket_number ASC
|
13:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: customer.c_current_addr_sk = current_addr.ca_address_sk
| other predicates: current_addr.ca_city != ca_city
| runtime filters: RF000 <- current_addr.ca_address_sk
|
|--JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: current_addr.ca_address_sk
| |
| 22:EXCHANGE [BROADCAST]
| |
| 11:SCAN HDFS [tpcds.customer_address current_addr]
| partitions=1/1 files=1 size=5.25MB
|
12:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: c_customer_sk = ss_customer_sk
| runtime filters: RF001 <- ss_customer_sk
|
|--JOIN BUILD
| | join-table-id=01 plan-id=02 cohort-id=01
| | build expressions: ss_customer_sk
| |
| 21:EXCHANGE [BROADCAST]
| |
| 20:AGGREGATE [FINALIZE]
| | output: sum:merge(ss_ext_sales_price), sum:merge(ss_ext_list_price), sum:merge(ss_ext_tax)
| | group by: ss_ticket_number, ss_customer_sk, ss_addr_sk, ca_city
| |
| 19:EXCHANGE [HASH(ss_ticket_number,ss_customer_sk,ss_addr_sk,ca_city)]
| |
| 09:AGGREGATE [STREAMING]
| | output: sum(ss_ext_sales_price), sum(ss_ext_list_price), sum(ss_ext_tax)
| | group by: ss_ticket_number, ss_customer_sk, ss_addr_sk, ca_city
| |
| 08:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: store_sales.ss_addr_sk = customer_address.ca_address_sk
| | runtime filters: RF002 <- customer_address.ca_address_sk
| |
| |--JOIN BUILD
| | | join-table-id=02 plan-id=03 cohort-id=02
| | | build expressions: customer_address.ca_address_sk
| | |
| | 18:EXCHANGE [BROADCAST]
| | |
| | 04:SCAN HDFS [tpcds.customer_address]
| | partitions=1/1 files=1 size=5.25MB
| |
| 07:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: store_sales.ss_store_sk = store.s_store_sk
| | runtime filters: RF003 <- store.s_store_sk
| |
| |--JOIN BUILD
| | | join-table-id=03 plan-id=04 cohort-id=02
| | | build expressions: store.s_store_sk
| | |
| | 17:EXCHANGE [BROADCAST]
| | |
| | 02:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| | predicates: store.s_city IN ('Midway', 'Fairview')
| |
| 06:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: store_sales.ss_sold_date_sk = date_dim.d_date_sk
| | runtime filters: RF004 <- date_dim.d_date_sk
| |
| |--JOIN BUILD
| | | join-table-id=04 plan-id=05 cohort-id=02
| | | build expressions: date_dim.d_date_sk
| | |
| | 16:EXCHANGE [BROADCAST]
| | |
| | 01:SCAN HDFS [tpcds.date_dim]
| | partitions=1/1 files=1 size=9.84MB
| | predicates: d_date <= '1999-03-31', d_date >= '1999-01-01'
| |
| 05:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk
| | runtime filters: RF005 <- household_demographics.hd_demo_sk
| |
| |--JOIN BUILD
| | | join-table-id=05 plan-id=06 cohort-id=02
| | | build expressions: household_demographics.hd_demo_sk
| | |
| | 15:EXCHANGE [BROADCAST]
| | |
| | 03:SCAN HDFS [tpcds.household_demographics]
| | partitions=1/1 files=1 size=148.10KB
| | predicates: (household_demographics.hd_dep_count = 5 OR household_demographics.hd_vehicle_count = 3)
| |
| 00:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF002 -> store_sales.ss_addr_sk, RF003 -> store_sales.ss_store_sk, RF004 -> store_sales.ss_sold_date_sk, RF005 -> store_sales.ss_hdemo_sk
|
10:SCAN HDFS [tpcds.customer]
partitions=1/1 files=1 size=12.60MB
runtime filters: RF000 -> customer.c_current_addr_sk, RF001 -> c_customer_sk
====
# TPCDS-Q73
select
c_last_name,
c_first_name,
c_salutation,
c_preferred_cust_flag,
ss_ticket_number,
cnt
from
(select
ss_ticket_number,
ss_customer_sk,
count(*) cnt
from
store_sales,
date_dim,
store,
household_demographics
where
store_sales.ss_sold_date_sk = date_dim.d_date_sk
and store_sales.ss_store_sk = store.s_store_sk
and store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk
and (household_demographics.hd_buy_potential = '>10000'
or household_demographics.hd_buy_potential = 'unknown')
and household_demographics.hd_vehicle_count > 0
and case when household_demographics.hd_vehicle_count > 0 then household_demographics.hd_dep_count / household_demographics.hd_vehicle_count else null end > 1
and store.s_county in ('Saginaw County', 'Sumner County', 'Appanoose County', 'Daviess County')
group by
ss_ticket_number,
ss_customer_sk
) dj,
customer
where
ss_customer_sk = c_customer_sk
and cnt between 1 and 5
order by
cnt desc
limit 1000
---- PLAN
PLAN-ROOT SINK
|
10:TOP-N [LIMIT=1000]
| order by: cnt DESC
|
09:HASH JOIN [INNER JOIN]
| hash predicates: c_customer_sk = ss_customer_sk
| runtime filters: RF000 <- ss_customer_sk
|
|--07:AGGREGATE [FINALIZE]
| | output: count(*)
| | group by: ss_ticket_number, ss_customer_sk
| | having: count(*) <= 5, count(*) >= 1
| |
| 06:HASH JOIN [INNER JOIN]
| | hash predicates: store_sales.ss_store_sk = store.s_store_sk
| | runtime filters: RF001 <- store.s_store_sk
| |
| |--02:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| | predicates: store.s_county IN ('Saginaw County', 'Sumner County', 'Appanoose County', 'Daviess County')
| |
| 05:HASH JOIN [INNER JOIN]
| | hash predicates: store_sales.ss_sold_date_sk = date_dim.d_date_sk
| | runtime filters: RF002 <- date_dim.d_date_sk
| |
| |--01:SCAN HDFS [tpcds.date_dim]
| | partitions=1/1 files=1 size=9.84MB
| |
| 04:HASH JOIN [INNER JOIN]
| | hash predicates: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk
| | runtime filters: RF003 <- household_demographics.hd_demo_sk
| |
| |--03:SCAN HDFS [tpcds.household_demographics]
| | partitions=1/1 files=1 size=148.10KB
| | predicates: household_demographics.hd_vehicle_count > 0, CASE WHEN household_demographics.hd_vehicle_count > 0 THEN household_demographics.hd_dep_count / household_demographics.hd_vehicle_count ELSE NULL END > 1, (household_demographics.hd_buy_potential = '>10000' OR household_demographics.hd_buy_potential = 'unknown')
| |
| 00:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF001 -> store_sales.ss_store_sk, RF002 -> store_sales.ss_sold_date_sk, RF003 -> store_sales.ss_hdemo_sk
|
08:SCAN HDFS [tpcds.customer]
partitions=1/1 files=1 size=12.60MB
runtime filters: RF000 -> c_customer_sk
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
18:MERGING-EXCHANGE [UNPARTITIONED]
| order by: cnt DESC
| limit: 1000
|
10:TOP-N [LIMIT=1000]
| order by: cnt DESC
|
09:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: c_customer_sk = ss_customer_sk
| runtime filters: RF000 <- ss_customer_sk
|
|--17:EXCHANGE [BROADCAST]
| |
| 16:AGGREGATE [FINALIZE]
| | output: count:merge(*)
| | group by: ss_ticket_number, ss_customer_sk
| | having: count(*) <= 5, count(*) >= 1
| |
| 15:EXCHANGE [HASH(ss_ticket_number,ss_customer_sk)]
| |
| 07:AGGREGATE [STREAMING]
| | output: count(*)
| | group by: ss_ticket_number, ss_customer_sk
| |
| 06:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: store_sales.ss_store_sk = store.s_store_sk
| | runtime filters: RF001 <- store.s_store_sk
| |
| |--14:EXCHANGE [BROADCAST]
| | |
| | 02:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| | predicates: store.s_county IN ('Saginaw County', 'Sumner County', 'Appanoose County', 'Daviess County')
| |
| 05:HASH JOIN [INNER JOIN, PARTITIONED]
| | hash predicates: store_sales.ss_sold_date_sk = date_dim.d_date_sk
| | runtime filters: RF002 <- date_dim.d_date_sk
| |
| |--13:EXCHANGE [HASH(date_dim.d_date_sk)]
| | |
| | 01:SCAN HDFS [tpcds.date_dim]
| | partitions=1/1 files=1 size=9.84MB
| |
| 12:EXCHANGE [HASH(store_sales.ss_sold_date_sk)]
| |
| 04:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk
| | runtime filters: RF003 <- household_demographics.hd_demo_sk
| |
| |--11:EXCHANGE [BROADCAST]
| | |
| | 03:SCAN HDFS [tpcds.household_demographics]
| | partitions=1/1 files=1 size=148.10KB
| | predicates: household_demographics.hd_vehicle_count > 0, CASE WHEN household_demographics.hd_vehicle_count > 0 THEN household_demographics.hd_dep_count / household_demographics.hd_vehicle_count ELSE NULL END > 1, (household_demographics.hd_buy_potential = '>10000' OR household_demographics.hd_buy_potential = 'unknown')
| |
| 00:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF001 -> store_sales.ss_store_sk, RF002 -> store_sales.ss_sold_date_sk, RF003 -> store_sales.ss_hdemo_sk
|
08:SCAN HDFS [tpcds.customer]
partitions=1/1 files=1 size=12.60MB
runtime filters: RF000 -> c_customer_sk
---- PARALLELPLANS
PLAN-ROOT SINK
|
18:MERGING-EXCHANGE [UNPARTITIONED]
| order by: cnt DESC
| limit: 1000
|
10:TOP-N [LIMIT=1000]
| order by: cnt DESC
|
09:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: c_customer_sk = ss_customer_sk
| runtime filters: RF000 <- ss_customer_sk
|
|--JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: ss_customer_sk
| |
| 17:EXCHANGE [BROADCAST]
| |
| 16:AGGREGATE [FINALIZE]
| | output: count:merge(*)
| | group by: ss_ticket_number, ss_customer_sk
| | having: count(*) <= 5, count(*) >= 1
| |
| 15:EXCHANGE [HASH(ss_ticket_number,ss_customer_sk)]
| |
| 07:AGGREGATE [STREAMING]
| | output: count(*)
| | group by: ss_ticket_number, ss_customer_sk
| |
| 06:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: store_sales.ss_store_sk = store.s_store_sk
| | runtime filters: RF001 <- store.s_store_sk
| |
| |--JOIN BUILD
| | | join-table-id=01 plan-id=02 cohort-id=02
| | | build expressions: store.s_store_sk
| | |
| | 14:EXCHANGE [BROADCAST]
| | |
| | 02:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| | predicates: store.s_county IN ('Saginaw County', 'Sumner County', 'Appanoose County', 'Daviess County')
| |
| 05:HASH JOIN [INNER JOIN, PARTITIONED]
| | hash predicates: store_sales.ss_sold_date_sk = date_dim.d_date_sk
| | runtime filters: RF002 <- date_dim.d_date_sk
| |
| |--JOIN BUILD
| | | join-table-id=02 plan-id=03 cohort-id=02
| | | build expressions: date_dim.d_date_sk
| | |
| | 13:EXCHANGE [HASH(date_dim.d_date_sk)]
| | |
| | 01:SCAN HDFS [tpcds.date_dim]
| | partitions=1/1 files=1 size=9.84MB
| |
| 12:EXCHANGE [HASH(store_sales.ss_sold_date_sk)]
| |
| 04:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk
| | runtime filters: RF003 <- household_demographics.hd_demo_sk
| |
| |--JOIN BUILD
| | | join-table-id=03 plan-id=04 cohort-id=02
| | | build expressions: household_demographics.hd_demo_sk
| | |
| | 11:EXCHANGE [BROADCAST]
| | |
| | 03:SCAN HDFS [tpcds.household_demographics]
| | partitions=1/1 files=1 size=148.10KB
| | predicates: household_demographics.hd_vehicle_count > 0, CASE WHEN household_demographics.hd_vehicle_count > 0 THEN household_demographics.hd_dep_count / household_demographics.hd_vehicle_count ELSE NULL END > 1, (household_demographics.hd_buy_potential = '>10000' OR household_demographics.hd_buy_potential = 'unknown')
| |
| 00:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF001 -> store_sales.ss_store_sk, RF002 -> store_sales.ss_sold_date_sk, RF003 -> store_sales.ss_hdemo_sk
|
08:SCAN HDFS [tpcds.customer]
partitions=1/1 files=1 size=12.60MB
runtime filters: RF000 -> c_customer_sk
====
# TPCDS-Q79
select
c_last_name,
c_first_name,
substr(s_city, 1, 30),
ss_ticket_number,
amt,
profit
from
(select
ss_ticket_number,
ss_customer_sk,
store.s_city,
sum(ss_coupon_amt) amt,
sum(ss_net_profit) profit
from
store_sales,
date_dim,
store,
household_demographics
where
store_sales.ss_sold_date_sk = date_dim.d_date_sk
and store_sales.ss_store_sk = store.s_store_sk
and store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk
and (household_demographics.hd_dep_count = 8
or household_demographics.hd_vehicle_count > 0)
and store.s_number_employees between 200 and 295
and d_date between '1999-01-01' and '1999-03-31'
group by
ss_ticket_number,
ss_customer_sk,
ss_addr_sk,
store.s_city
) ms,
customer
where
ss_customer_sk = c_customer_sk
order by
c_last_name,
c_first_name,
substr(s_city, 1, 30),
profit
limit 100
---- PLAN
PLAN-ROOT SINK
|
10:TOP-N [LIMIT=100]
| order by: c_last_name ASC, c_first_name ASC, substr(s_city, 1, 30) ASC, profit ASC
|
09:HASH JOIN [INNER JOIN]
| hash predicates: c_customer_sk = ss_customer_sk
| runtime filters: RF000 <- ss_customer_sk
|
|--07:AGGREGATE [FINALIZE]
| | output: sum(ss_coupon_amt), sum(ss_net_profit)
| | group by: ss_ticket_number, ss_customer_sk, ss_addr_sk, store.s_city
| |
| 06:HASH JOIN [INNER JOIN]
| | hash predicates: store_sales.ss_sold_date_sk = date_dim.d_date_sk
| | runtime filters: RF001 <- date_dim.d_date_sk
| |
| |--01:SCAN HDFS [tpcds.date_dim]
| | partitions=1/1 files=1 size=9.84MB
| | predicates: d_date <= '1999-03-31', d_date >= '1999-01-01'
| |
| 05:HASH JOIN [INNER JOIN]
| | hash predicates: store_sales.ss_store_sk = store.s_store_sk
| | runtime filters: RF002 <- store.s_store_sk
| |
| |--02:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| | predicates: store.s_number_employees <= 295, store.s_number_employees >= 200
| |
| 04:HASH JOIN [INNER JOIN]
| | hash predicates: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk
| | runtime filters: RF003 <- household_demographics.hd_demo_sk
| |
| |--03:SCAN HDFS [tpcds.household_demographics]
| | partitions=1/1 files=1 size=148.10KB
| | predicates: (household_demographics.hd_dep_count = 8 OR household_demographics.hd_vehicle_count > 0)
| |
| 00:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF001 -> store_sales.ss_sold_date_sk, RF002 -> store_sales.ss_store_sk, RF003 -> store_sales.ss_hdemo_sk
|
08:SCAN HDFS [tpcds.customer]
partitions=1/1 files=1 size=12.60MB
runtime filters: RF000 -> c_customer_sk
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
18:MERGING-EXCHANGE [UNPARTITIONED]
| order by: c_last_name ASC, c_first_name ASC, substr(s_city, 1, 30) ASC, profit ASC
| limit: 100
|
10:TOP-N [LIMIT=100]
| order by: c_last_name ASC, c_first_name ASC, substr(s_city, 1, 30) ASC, profit ASC
|
09:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: c_customer_sk = ss_customer_sk
| runtime filters: RF000 <- ss_customer_sk
|
|--17:EXCHANGE [BROADCAST]
| |
| 16:AGGREGATE [FINALIZE]
| | output: sum:merge(ss_coupon_amt), sum:merge(ss_net_profit)
| | group by: ss_ticket_number, ss_customer_sk, ss_addr_sk, store.s_city
| |
| 15:EXCHANGE [HASH(ss_ticket_number,ss_customer_sk,ss_addr_sk,store.s_city)]
| |
| 07:AGGREGATE [STREAMING]
| | output: sum(ss_coupon_amt), sum(ss_net_profit)
| | group by: ss_ticket_number, ss_customer_sk, ss_addr_sk, store.s_city
| |
| 06:HASH JOIN [INNER JOIN, PARTITIONED]
| | hash predicates: store_sales.ss_sold_date_sk = date_dim.d_date_sk
| | runtime filters: RF001 <- date_dim.d_date_sk
| |
| |--14:EXCHANGE [HASH(date_dim.d_date_sk)]
| | |
| | 01:SCAN HDFS [tpcds.date_dim]
| | partitions=1/1 files=1 size=9.84MB
| | predicates: d_date <= '1999-03-31', d_date >= '1999-01-01'
| |
| 13:EXCHANGE [HASH(store_sales.ss_sold_date_sk)]
| |
| 05:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: store_sales.ss_store_sk = store.s_store_sk
| | runtime filters: RF002 <- store.s_store_sk
| |
| |--12:EXCHANGE [BROADCAST]
| | |
| | 02:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| | predicates: store.s_number_employees <= 295, store.s_number_employees >= 200
| |
| 04:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk
| | runtime filters: RF003 <- household_demographics.hd_demo_sk
| |
| |--11:EXCHANGE [BROADCAST]
| | |
| | 03:SCAN HDFS [tpcds.household_demographics]
| | partitions=1/1 files=1 size=148.10KB
| | predicates: (household_demographics.hd_dep_count = 8 OR household_demographics.hd_vehicle_count > 0)
| |
| 00:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF001 -> store_sales.ss_sold_date_sk, RF002 -> store_sales.ss_store_sk, RF003 -> store_sales.ss_hdemo_sk
|
08:SCAN HDFS [tpcds.customer]
partitions=1/1 files=1 size=12.60MB
runtime filters: RF000 -> c_customer_sk
---- PARALLELPLANS
PLAN-ROOT SINK
|
18:MERGING-EXCHANGE [UNPARTITIONED]
| order by: c_last_name ASC, c_first_name ASC, substr(s_city, 1, 30) ASC, profit ASC
| limit: 100
|
10:TOP-N [LIMIT=100]
| order by: c_last_name ASC, c_first_name ASC, substr(s_city, 1, 30) ASC, profit ASC
|
09:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: c_customer_sk = ss_customer_sk
| runtime filters: RF000 <- ss_customer_sk
|
|--JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: ss_customer_sk
| |
| 17:EXCHANGE [BROADCAST]
| |
| 16:AGGREGATE [FINALIZE]
| | output: sum:merge(ss_coupon_amt), sum:merge(ss_net_profit)
| | group by: ss_ticket_number, ss_customer_sk, ss_addr_sk, store.s_city
| |
| 15:EXCHANGE [HASH(ss_ticket_number,ss_customer_sk,ss_addr_sk,store.s_city)]
| |
| 07:AGGREGATE [STREAMING]
| | output: sum(ss_coupon_amt), sum(ss_net_profit)
| | group by: ss_ticket_number, ss_customer_sk, ss_addr_sk, store.s_city
| |
| 06:HASH JOIN [INNER JOIN, PARTITIONED]
| | hash predicates: store_sales.ss_sold_date_sk = date_dim.d_date_sk
| | runtime filters: RF001 <- date_dim.d_date_sk
| |
| |--JOIN BUILD
| | | join-table-id=01 plan-id=02 cohort-id=02
| | | build expressions: date_dim.d_date_sk
| | |
| | 14:EXCHANGE [HASH(date_dim.d_date_sk)]
| | |
| | 01:SCAN HDFS [tpcds.date_dim]
| | partitions=1/1 files=1 size=9.84MB
| | predicates: d_date <= '1999-03-31', d_date >= '1999-01-01'
| |
| 13:EXCHANGE [HASH(store_sales.ss_sold_date_sk)]
| |
| 05:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: store_sales.ss_store_sk = store.s_store_sk
| | runtime filters: RF002 <- store.s_store_sk
| |
| |--JOIN BUILD
| | | join-table-id=02 plan-id=03 cohort-id=02
| | | build expressions: store.s_store_sk
| | |
| | 12:EXCHANGE [BROADCAST]
| | |
| | 02:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| | predicates: store.s_number_employees <= 295, store.s_number_employees >= 200
| |
| 04:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk
| | runtime filters: RF003 <- household_demographics.hd_demo_sk
| |
| |--JOIN BUILD
| | | join-table-id=03 plan-id=04 cohort-id=02
| | | build expressions: household_demographics.hd_demo_sk
| | |
| | 11:EXCHANGE [BROADCAST]
| | |
| | 03:SCAN HDFS [tpcds.household_demographics]
| | partitions=1/1 files=1 size=148.10KB
| | predicates: (household_demographics.hd_dep_count = 8 OR household_demographics.hd_vehicle_count > 0)
| |
| 00:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF001 -> store_sales.ss_sold_date_sk, RF002 -> store_sales.ss_store_sk, RF003 -> store_sales.ss_hdemo_sk
|
08:SCAN HDFS [tpcds.customer]
partitions=1/1 files=1 size=12.60MB
runtime filters: RF000 -> c_customer_sk
====
# TPCDS-Q89
/* Modifications: Added Partition Key filter because Impala does not do dynamic partition
pruning.*/
select * from (select *
from (
select i_category, i_class, i_brand,
s_store_name, s_company_name,
d_moy,
sum(ss_sales_price) sum_sales,
avg(sum(ss_sales_price)) over
(partition by i_category, i_brand, s_store_name, s_company_name)
avg_monthly_sales
from item, store_sales, date_dim, store
where ss_item_sk = i_item_sk and
ss_sold_date_sk = d_date_sk and
ss_store_sk = s_store_sk and
d_year in (2000) and
((i_category in ('Children','Music','Home') and
i_class in ('toddlers','pop','lighting')
)
or (i_category in ('Jewelry','Books','Sports') and
i_class in ('costume','travel','football')
))
and ss_sold_date_sk between 2451545 and 2451910 -- partition key filter
group by i_category, i_class, i_brand,
s_store_name, s_company_name, d_moy) tmp1
where case when (avg_monthly_sales <> 0) then (abs(sum_sales - avg_monthly_sales) / avg_monthly_sales) else null end > 0.1
order by sum_sales - avg_monthly_sales, s_store_name
limit 100) tmp2
---- PLAN
PLAN-ROOT SINK
|
11:TOP-N [LIMIT=100]
| order by: sum_sales - avg_monthly_sales ASC, s_store_name ASC
|
10:SELECT
| predicates: CASE WHEN (avg(sum(ss_sales_price)) != 0) THEN (abs(sum(ss_sales_price) - avg(sum(ss_sales_price))) / avg(sum(ss_sales_price))) ELSE NULL END > 0.1
|
09:ANALYTIC
| functions: avg(sum(ss_sales_price))
| partition by: i_category, i_brand, s_store_name, s_company_name
|
08:SORT
| order by: i_category ASC NULLS FIRST, i_brand ASC NULLS FIRST, s_store_name ASC NULLS FIRST, s_company_name ASC NULLS FIRST
|
07:AGGREGATE [FINALIZE]
| output: sum(ss_sales_price)
| group by: i_category, i_class, i_brand, s_store_name, s_company_name, d_moy
|
06:HASH JOIN [INNER JOIN]
| hash predicates: ss_store_sk = s_store_sk
| runtime filters: RF000 <- s_store_sk
|
|--03:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
|
05:HASH JOIN [INNER JOIN]
| hash predicates: ss_sold_date_sk = d_date_sk
| runtime filters: RF001 <- d_date_sk
|
|--02:SCAN HDFS [tpcds.date_dim]
| partitions=1/1 files=1 size=9.84MB
| predicates: d_year IN (2000), tpcds.date_dim.d_date_sk <= 2451910, tpcds.date_dim.d_date_sk >= 2451545
|
04:HASH JOIN [INNER JOIN]
| hash predicates: ss_item_sk = i_item_sk
| runtime filters: RF002 <- i_item_sk
|
|--00:SCAN HDFS [tpcds.item]
| partitions=1/1 files=1 size=4.82MB
| predicates: ((i_category IN ('Children', 'Music', 'Home') AND i_class IN ('toddlers', 'pop', 'lighting')) OR (i_category IN ('Jewelry', 'Books', 'Sports') AND i_class IN ('costume', 'travel', 'football')))
|
01:SCAN HDFS [tpcds.store_sales]
partitions=24/120 files=24 size=4.16MB
runtime filters: RF000 -> ss_store_sk, RF001 -> ss_sold_date_sk, RF002 -> ss_item_sk
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
17:MERGING-EXCHANGE [UNPARTITIONED]
| order by: sum_sales - avg_monthly_sales ASC, s_store_name ASC
| limit: 100
|
11:TOP-N [LIMIT=100]
| order by: sum_sales - avg_monthly_sales ASC, s_store_name ASC
|
10:SELECT
| predicates: CASE WHEN (avg(sum(ss_sales_price)) != 0) THEN (abs(sum(ss_sales_price) - avg(sum(ss_sales_price))) / avg(sum(ss_sales_price))) ELSE NULL END > 0.1
|
09:ANALYTIC
| functions: avg(sum(ss_sales_price))
| partition by: i_category, i_brand, s_store_name, s_company_name
|
08:SORT
| order by: i_category ASC NULLS FIRST, i_brand ASC NULLS FIRST, s_store_name ASC NULLS FIRST, s_company_name ASC NULLS FIRST
|
16:AGGREGATE [FINALIZE]
| output: sum:merge(ss_sales_price)
| group by: i_category, i_class, i_brand, s_store_name, s_company_name, d_moy
|
15:EXCHANGE [HASH(i_category,i_brand,s_store_name,s_company_name)]
|
07:AGGREGATE [STREAMING]
| output: sum(ss_sales_price)
| group by: i_category, i_class, i_brand, s_store_name, s_company_name, d_moy
|
06:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_store_sk = s_store_sk
| runtime filters: RF000 <- s_store_sk
|
|--14:EXCHANGE [BROADCAST]
| |
| 03:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
|
05:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_sold_date_sk = d_date_sk
| runtime filters: RF001 <- d_date_sk
|
|--13:EXCHANGE [BROADCAST]
| |
| 02:SCAN HDFS [tpcds.date_dim]
| partitions=1/1 files=1 size=9.84MB
| predicates: d_year IN (2000), tpcds.date_dim.d_date_sk <= 2451910, tpcds.date_dim.d_date_sk >= 2451545
|
04:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_item_sk = i_item_sk
| runtime filters: RF002 <- i_item_sk
|
|--12:EXCHANGE [BROADCAST]
| |
| 00:SCAN HDFS [tpcds.item]
| partitions=1/1 files=1 size=4.82MB
| predicates: ((i_category IN ('Children', 'Music', 'Home') AND i_class IN ('toddlers', 'pop', 'lighting')) OR (i_category IN ('Jewelry', 'Books', 'Sports') AND i_class IN ('costume', 'travel', 'football')))
|
01:SCAN HDFS [tpcds.store_sales]
partitions=24/120 files=24 size=4.16MB
runtime filters: RF000 -> ss_store_sk, RF001 -> ss_sold_date_sk, RF002 -> ss_item_sk
---- PARALLELPLANS
PLAN-ROOT SINK
|
17:MERGING-EXCHANGE [UNPARTITIONED]
| order by: sum_sales - avg_monthly_sales ASC, s_store_name ASC
| limit: 100
|
11:TOP-N [LIMIT=100]
| order by: sum_sales - avg_monthly_sales ASC, s_store_name ASC
|
10:SELECT
| predicates: CASE WHEN (avg(sum(ss_sales_price)) != 0) THEN (abs(sum(ss_sales_price) - avg(sum(ss_sales_price))) / avg(sum(ss_sales_price))) ELSE NULL END > 0.1
|
09:ANALYTIC
| functions: avg(sum(ss_sales_price))
| partition by: i_category, i_brand, s_store_name, s_company_name
|
08:SORT
| order by: i_category ASC NULLS FIRST, i_brand ASC NULLS FIRST, s_store_name ASC NULLS FIRST, s_company_name ASC NULLS FIRST
|
16:AGGREGATE [FINALIZE]
| output: sum:merge(ss_sales_price)
| group by: i_category, i_class, i_brand, s_store_name, s_company_name, d_moy
|
15:EXCHANGE [HASH(i_category,i_brand,s_store_name,s_company_name)]
|
07:AGGREGATE [STREAMING]
| output: sum(ss_sales_price)
| group by: i_category, i_class, i_brand, s_store_name, s_company_name, d_moy
|
06:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_store_sk = s_store_sk
| runtime filters: RF000 <- s_store_sk
|
|--JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: s_store_sk
| |
| 14:EXCHANGE [BROADCAST]
| |
| 03:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
|
05:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_sold_date_sk = d_date_sk
| runtime filters: RF001 <- d_date_sk
|
|--JOIN BUILD
| | join-table-id=01 plan-id=02 cohort-id=01
| | build expressions: d_date_sk
| |
| 13:EXCHANGE [BROADCAST]
| |
| 02:SCAN HDFS [tpcds.date_dim]
| partitions=1/1 files=1 size=9.84MB
| predicates: d_year IN (2000), tpcds.date_dim.d_date_sk <= 2451910, tpcds.date_dim.d_date_sk >= 2451545
|
04:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_item_sk = i_item_sk
| runtime filters: RF002 <- i_item_sk
|
|--JOIN BUILD
| | join-table-id=02 plan-id=03 cohort-id=01
| | build expressions: i_item_sk
| |
| 12:EXCHANGE [BROADCAST]
| |
| 00:SCAN HDFS [tpcds.item]
| partitions=1/1 files=1 size=4.82MB
| predicates: ((i_category IN ('Children', 'Music', 'Home') AND i_class IN ('toddlers', 'pop', 'lighting')) OR (i_category IN ('Jewelry', 'Books', 'Sports') AND i_class IN ('costume', 'travel', 'football')))
|
01:SCAN HDFS [tpcds.store_sales]
partitions=24/120 files=24 size=4.16MB
runtime filters: RF000 -> ss_store_sk, RF001 -> ss_sold_date_sk, RF002 -> ss_item_sk
====
# TPCDS-Q96
SELECT
COUNT(*) AS total
FROM store_sales ss
JOIN time_dim td
ON (ss.ss_sold_time_sk = td.t_time_sk)
JOIN household_demographics hd
ON (ss.ss_hdemo_sk = hd.hd_demo_sk)
JOIN store s
ON (ss.ss_store_sk = s.s_store_sk)
WHERE
td.t_hour = 8
AND td.t_minute >= 30
AND hd.hd_dep_count = 5
AND s.s_store_name = 'ese'
---- PLAN
PLAN-ROOT SINK
|
07:AGGREGATE [FINALIZE]
| output: count(*)
|
06:HASH JOIN [INNER JOIN]
| hash predicates: ss.ss_store_sk = s.s_store_sk
| runtime filters: RF000 <- s.s_store_sk
|
|--03:SCAN HDFS [tpcds.store s]
| partitions=1/1 files=1 size=3.08KB
| predicates: s.s_store_name = 'ese'
|
05:HASH JOIN [INNER JOIN]
| hash predicates: ss.ss_hdemo_sk = hd.hd_demo_sk
| runtime filters: RF001 <- hd.hd_demo_sk
|
|--02:SCAN HDFS [tpcds.household_demographics hd]
| partitions=1/1 files=1 size=148.10KB
| predicates: hd.hd_dep_count = 5
|
04:HASH JOIN [INNER JOIN]
| hash predicates: ss.ss_sold_time_sk = td.t_time_sk
| runtime filters: RF002 <- td.t_time_sk
|
|--01:SCAN HDFS [tpcds.time_dim td]
| partitions=1/1 files=1 size=4.87MB
| predicates: td.t_hour = 8, td.t_minute >= 30
|
00:SCAN HDFS [tpcds.store_sales ss]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF000 -> ss.ss_store_sk, RF001 -> ss.ss_hdemo_sk, RF002 -> ss.ss_sold_time_sk
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
12:AGGREGATE [FINALIZE]
| output: count:merge(*)
|
11:EXCHANGE [UNPARTITIONED]
|
07:AGGREGATE
| output: count(*)
|
06:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss.ss_store_sk = s.s_store_sk
| runtime filters: RF000 <- s.s_store_sk
|
|--10:EXCHANGE [BROADCAST]
| |
| 03:SCAN HDFS [tpcds.store s]
| partitions=1/1 files=1 size=3.08KB
| predicates: s.s_store_name = 'ese'
|
05:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss.ss_hdemo_sk = hd.hd_demo_sk
| runtime filters: RF001 <- hd.hd_demo_sk
|
|--09:EXCHANGE [BROADCAST]
| |
| 02:SCAN HDFS [tpcds.household_demographics hd]
| partitions=1/1 files=1 size=148.10KB
| predicates: hd.hd_dep_count = 5
|
04:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss.ss_sold_time_sk = td.t_time_sk
| runtime filters: RF002 <- td.t_time_sk
|
|--08:EXCHANGE [BROADCAST]
| |
| 01:SCAN HDFS [tpcds.time_dim td]
| partitions=1/1 files=1 size=4.87MB
| predicates: td.t_hour = 8, td.t_minute >= 30
|
00:SCAN HDFS [tpcds.store_sales ss]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF000 -> ss.ss_store_sk, RF001 -> ss.ss_hdemo_sk, RF002 -> ss.ss_sold_time_sk
---- PARALLELPLANS
PLAN-ROOT SINK
|
12:AGGREGATE [FINALIZE]
| output: count:merge(*)
|
11:EXCHANGE [UNPARTITIONED]
|
07:AGGREGATE
| output: count(*)
|
06:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss.ss_store_sk = s.s_store_sk
| runtime filters: RF000 <- s.s_store_sk
|
|--JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: s.s_store_sk
| |
| 10:EXCHANGE [BROADCAST]
| |
| 03:SCAN HDFS [tpcds.store s]
| partitions=1/1 files=1 size=3.08KB
| predicates: s.s_store_name = 'ese'
|
05:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss.ss_hdemo_sk = hd.hd_demo_sk
| runtime filters: RF001 <- hd.hd_demo_sk
|
|--JOIN BUILD
| | join-table-id=01 plan-id=02 cohort-id=01
| | build expressions: hd.hd_demo_sk
| |
| 09:EXCHANGE [BROADCAST]
| |
| 02:SCAN HDFS [tpcds.household_demographics hd]
| partitions=1/1 files=1 size=148.10KB
| predicates: hd.hd_dep_count = 5
|
04:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss.ss_sold_time_sk = td.t_time_sk
| runtime filters: RF002 <- td.t_time_sk
|
|--JOIN BUILD
| | join-table-id=02 plan-id=03 cohort-id=01
| | build expressions: td.t_time_sk
| |
| 08:EXCHANGE [BROADCAST]
| |
| 01:SCAN HDFS [tpcds.time_dim td]
| partitions=1/1 files=1 size=4.87MB
| predicates: td.t_hour = 8, td.t_minute >= 30
|
00:SCAN HDFS [tpcds.store_sales ss]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF000 -> ss.ss_store_sk, RF001 -> ss.ss_hdemo_sk, RF002 -> ss.ss_sold_time_sk
====
# TPCDS-Q98
select
i_item_desc,
i_category,
i_class,
i_current_price,
sum(ss_ext_sales_price) as itemrevenue,
sum(ss_ext_sales_price)*100/sum(sum(ss_ext_sales_price)) over (partition by i_class) as revenueratio
from
store_sales,
item,
date_dim
where
ss_item_sk = i_item_sk
and i_category in ('Jewelry', 'Sports', 'Books')
and ss_sold_date_sk = d_date_sk
and ss_sold_date_sk between 2451911 and 2451941
and d_date between '2001-01-01' and '2001-01-31' -- original uses interval and the
group by
i_item_id,
i_item_desc,
i_category,
i_class,
i_current_price
order by
i_category,
i_class,
i_item_id,
i_item_desc,
revenueratio
limit 1000
---- PLAN
PLAN-ROOT SINK
|
08:TOP-N [LIMIT=1000]
| order by: i_category ASC, i_class ASC, i_item_id ASC, i_item_desc ASC, sum(ss_ext_sales_price) * 100 / sum(sum(ss_ext_sales_price)) ASC
|
07:ANALYTIC
| functions: sum(sum(ss_ext_sales_price))
| partition by: i_class
|
06:SORT
| order by: i_class ASC NULLS FIRST
|
05:AGGREGATE [FINALIZE]
| output: sum(ss_ext_sales_price)
| group by: i_item_id, i_item_desc, i_category, i_class, i_current_price
|
04:HASH JOIN [INNER JOIN]
| hash predicates: d_date_sk = ss_sold_date_sk
| runtime filters: RF000 <- ss_sold_date_sk
|
|--03:HASH JOIN [INNER JOIN]
| | hash predicates: i_item_sk = ss_item_sk
| | runtime filters: RF001 <- ss_item_sk
| |
| |--00:SCAN HDFS [tpcds.store_sales]
| | partitions=2/120 files=2 size=480.36KB
| |
| 01:SCAN HDFS [tpcds.item]
| partitions=1/1 files=1 size=4.82MB
| predicates: i_category IN ('Jewelry', 'Sports', 'Books')
| runtime filters: RF001 -> i_item_sk
|
02:SCAN HDFS [tpcds.date_dim]
partitions=1/1 files=1 size=9.84MB
predicates: tpcds.date_dim.d_date_sk <= 2451941, tpcds.date_dim.d_date_sk >= 2451911, d_date <= '2001-01-31', d_date >= '2001-01-01'
runtime filters: RF000 -> d_date_sk
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
13:MERGING-EXCHANGE [UNPARTITIONED]
| order by: i_category ASC, i_class ASC, i_item_id ASC, i_item_desc ASC, sum(ss_ext_sales_price) * 100 / sum(sum(ss_ext_sales_price)) ASC
| limit: 1000
|
08:TOP-N [LIMIT=1000]
| order by: i_category ASC, i_class ASC, i_item_id ASC, i_item_desc ASC, sum(ss_ext_sales_price) * 100 / sum(sum(ss_ext_sales_price)) ASC
|
07:ANALYTIC
| functions: sum(sum(ss_ext_sales_price))
| partition by: i_class
|
06:SORT
| order by: i_class ASC NULLS FIRST
|
12:AGGREGATE [FINALIZE]
| output: sum:merge(ss_ext_sales_price)
| group by: i_item_id, i_item_desc, i_category, i_class, i_current_price
|
11:EXCHANGE [HASH(i_class)]
|
05:AGGREGATE [STREAMING]
| output: sum(ss_ext_sales_price)
| group by: i_item_id, i_item_desc, i_category, i_class, i_current_price
|
04:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: d_date_sk = ss_sold_date_sk
| runtime filters: RF000 <- ss_sold_date_sk
|
|--10:EXCHANGE [BROADCAST]
| |
| 03:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: i_item_sk = ss_item_sk
| | runtime filters: RF001 <- ss_item_sk
| |
| |--09:EXCHANGE [BROADCAST]
| | |
| | 00:SCAN HDFS [tpcds.store_sales]
| | partitions=2/120 files=2 size=480.36KB
| |
| 01:SCAN HDFS [tpcds.item]
| partitions=1/1 files=1 size=4.82MB
| predicates: i_category IN ('Jewelry', 'Sports', 'Books')
| runtime filters: RF001 -> i_item_sk
|
02:SCAN HDFS [tpcds.date_dim]
partitions=1/1 files=1 size=9.84MB
predicates: tpcds.date_dim.d_date_sk <= 2451941, tpcds.date_dim.d_date_sk >= 2451911, d_date <= '2001-01-31', d_date >= '2001-01-01'
runtime filters: RF000 -> d_date_sk
---- PARALLELPLANS
PLAN-ROOT SINK
|
13:MERGING-EXCHANGE [UNPARTITIONED]
| order by: i_category ASC, i_class ASC, i_item_id ASC, i_item_desc ASC, sum(ss_ext_sales_price) * 100 / sum(sum(ss_ext_sales_price)) ASC
| limit: 1000
|
08:TOP-N [LIMIT=1000]
| order by: i_category ASC, i_class ASC, i_item_id ASC, i_item_desc ASC, sum(ss_ext_sales_price) * 100 / sum(sum(ss_ext_sales_price)) ASC
|
07:ANALYTIC
| functions: sum(sum(ss_ext_sales_price))
| partition by: i_class
|
06:SORT
| order by: i_class ASC NULLS FIRST
|
12:AGGREGATE [FINALIZE]
| output: sum:merge(ss_ext_sales_price)
| group by: i_item_id, i_item_desc, i_category, i_class, i_current_price
|
11:EXCHANGE [HASH(i_class)]
|
05:AGGREGATE [STREAMING]
| output: sum(ss_ext_sales_price)
| group by: i_item_id, i_item_desc, i_category, i_class, i_current_price
|
04:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: d_date_sk = ss_sold_date_sk
| runtime filters: RF000 <- ss_sold_date_sk
|
|--JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: ss_sold_date_sk
| |
| 10:EXCHANGE [BROADCAST]
| |
| 03:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: i_item_sk = ss_item_sk
| | runtime filters: RF001 <- ss_item_sk
| |
| |--JOIN BUILD
| | | join-table-id=01 plan-id=02 cohort-id=02
| | | build expressions: ss_item_sk
| | |
| | 09:EXCHANGE [BROADCAST]
| | |
| | 00:SCAN HDFS [tpcds.store_sales]
| | partitions=2/120 files=2 size=480.36KB
| |
| 01:SCAN HDFS [tpcds.item]
| partitions=1/1 files=1 size=4.82MB
| predicates: i_category IN ('Jewelry', 'Sports', 'Books')
| runtime filters: RF001 -> i_item_sk
|
02:SCAN HDFS [tpcds.date_dim]
partitions=1/1 files=1 size=9.84MB
predicates: tpcds.date_dim.d_date_sk <= 2451941, tpcds.date_dim.d_date_sk >= 2451911, d_date <= '2001-01-31', d_date >= '2001-01-01'
runtime filters: RF000 -> d_date_sk
====
# TPCD-Q6
select * from (
select a.ca_state state, count(*) cnt
from customer_address a
,customer c
,store_sales s
,date_dim d
,item i
where
a.ca_address_sk = c.c_current_addr_sk
and c.c_customer_sk = s.ss_customer_sk
and s.ss_sold_date_sk = d.d_date_sk
and s.ss_item_sk = i.i_item_sk
and d.d_month_seq =
(select distinct (d_month_seq)
from date_dim
where d_year = 1999
and d_moy = 1
limit 1)
and i.i_current_price > 1.2 *
(select avg(j.i_current_price)
from item j
where j.i_category = i.i_category)
group by a.ca_state
having count(*) >= 10
order by cnt limit 100) as t
---- PLAN
PLAN-ROOT SINK
|
16:TOP-N [LIMIT=100]
| order by: count(*) ASC
|
15:AGGREGATE [FINALIZE]
| output: count(*)
| group by: a.ca_state
| having: count(*) >= 10
|
14:HASH JOIN [LEFT SEMI JOIN]
| hash predicates: i.i_category = j.i_category
| other join predicates: i.i_current_price > 1.2 * avg(j.i_current_price)
| runtime filters: RF000 <- j.i_category
|
|--08:AGGREGATE [FINALIZE]
| | output: avg(j.i_current_price)
| | group by: j.i_category
| |
| 07:SCAN HDFS [tpcds.item j]
| partitions=1/1 files=1 size=4.82MB
|
13:HASH JOIN [LEFT SEMI JOIN]
| hash predicates: d.d_month_seq = (d_month_seq)
| runtime filters: RF001 <- (d_month_seq)
|
|--06:AGGREGATE [FINALIZE]
| | group by: (d_month_seq)
| | limit: 1
| |
| 05:SCAN HDFS [tpcds.date_dim]
| partitions=1/1 files=1 size=9.84MB
| predicates: d_year = 1999, d_moy = 1
|
12:HASH JOIN [INNER JOIN]
| hash predicates: s.ss_item_sk = i.i_item_sk
| runtime filters: RF002 <- i.i_item_sk
|
|--04:SCAN HDFS [tpcds.item i]
| partitions=1/1 files=1 size=4.82MB
| runtime filters: RF000 -> i.i_category
|
11:HASH JOIN [INNER JOIN]
| hash predicates: s.ss_sold_date_sk = d.d_date_sk
| runtime filters: RF003 <- d.d_date_sk
|
|--03:SCAN HDFS [tpcds.date_dim d]
| partitions=1/1 files=1 size=9.84MB
| runtime filters: RF001 -> d.d_month_seq
|
10:HASH JOIN [INNER JOIN]
| hash predicates: c.c_current_addr_sk = a.ca_address_sk
| runtime filters: RF004 <- a.ca_address_sk
|
|--00:SCAN HDFS [tpcds.customer_address a]
| partitions=1/1 files=1 size=5.25MB
|
09:HASH JOIN [INNER JOIN]
| hash predicates: s.ss_customer_sk = c.c_customer_sk
| runtime filters: RF005 <- c.c_customer_sk
|
|--01:SCAN HDFS [tpcds.customer c]
| partitions=1/1 files=1 size=12.60MB
| runtime filters: RF004 -> c.c_current_addr_sk
|
02:SCAN HDFS [tpcds.store_sales s]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF002 -> s.ss_item_sk, RF003 -> s.ss_sold_date_sk, RF005 -> s.ss_customer_sk
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
31:MERGING-EXCHANGE [UNPARTITIONED]
| order by: count(*) ASC
| limit: 100
|
16:TOP-N [LIMIT=100]
| order by: count(*) ASC
|
30:AGGREGATE [FINALIZE]
| output: count:merge(*)
| group by: a.ca_state
| having: count(*) >= 10
|
29:EXCHANGE [HASH(a.ca_state)]
|
15:AGGREGATE [STREAMING]
| output: count(*)
| group by: a.ca_state
|
14:HASH JOIN [LEFT SEMI JOIN, BROADCAST]
| hash predicates: i.i_category = j.i_category
| other join predicates: i.i_current_price > 1.2 * avg(j.i_current_price)
| runtime filters: RF000 <- j.i_category
|
|--28:EXCHANGE [BROADCAST]
| |
| 27:AGGREGATE [FINALIZE]
| | output: avg:merge(j.i_current_price)
| | group by: j.i_category
| |
| 26:EXCHANGE [HASH(j.i_category)]
| |
| 08:AGGREGATE [STREAMING]
| | output: avg(j.i_current_price)
| | group by: j.i_category
| |
| 07:SCAN HDFS [tpcds.item j]
| partitions=1/1 files=1 size=4.82MB
|
13:HASH JOIN [LEFT SEMI JOIN, BROADCAST]
| hash predicates: d.d_month_seq = (d_month_seq)
| runtime filters: RF001 <- (d_month_seq)
|
|--25:EXCHANGE [BROADCAST]
| |
| 24:EXCHANGE [UNPARTITIONED]
| | limit: 1
| |
| 23:AGGREGATE [FINALIZE]
| | group by: (d_month_seq)
| | limit: 1
| |
| 22:EXCHANGE [HASH((d_month_seq))]
| |
| 06:AGGREGATE [STREAMING]
| | group by: (d_month_seq)
| |
| 05:SCAN HDFS [tpcds.date_dim]
| partitions=1/1 files=1 size=9.84MB
| predicates: d_year = 1999, d_moy = 1
|
12:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: s.ss_item_sk = i.i_item_sk
| runtime filters: RF002 <- i.i_item_sk
|
|--21:EXCHANGE [BROADCAST]
| |
| 04:SCAN HDFS [tpcds.item i]
| partitions=1/1 files=1 size=4.82MB
| runtime filters: RF000 -> i.i_category
|
11:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: s.ss_sold_date_sk = d.d_date_sk
| runtime filters: RF003 <- d.d_date_sk
|
|--20:EXCHANGE [BROADCAST]
| |
| 03:SCAN HDFS [tpcds.date_dim d]
| partitions=1/1 files=1 size=9.84MB
| runtime filters: RF001 -> d.d_month_seq
|
10:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: c.c_current_addr_sk = a.ca_address_sk
| runtime filters: RF004 <- a.ca_address_sk
|
|--19:EXCHANGE [BROADCAST]
| |
| 00:SCAN HDFS [tpcds.customer_address a]
| partitions=1/1 files=1 size=5.25MB
|
09:HASH JOIN [INNER JOIN, PARTITIONED]
| hash predicates: s.ss_customer_sk = c.c_customer_sk
| runtime filters: RF005 <- c.c_customer_sk
|
|--18:EXCHANGE [HASH(c.c_customer_sk)]
| |
| 01:SCAN HDFS [tpcds.customer c]
| partitions=1/1 files=1 size=12.60MB
| runtime filters: RF004 -> c.c_current_addr_sk
|
17:EXCHANGE [HASH(s.ss_customer_sk)]
|
02:SCAN HDFS [tpcds.store_sales s]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF002 -> s.ss_item_sk, RF003 -> s.ss_sold_date_sk, RF005 -> s.ss_customer_sk
---- PARALLELPLANS
PLAN-ROOT SINK
|
31:MERGING-EXCHANGE [UNPARTITIONED]
| order by: count(*) ASC
| limit: 100
|
16:TOP-N [LIMIT=100]
| order by: count(*) ASC
|
30:AGGREGATE [FINALIZE]
| output: count:merge(*)
| group by: a.ca_state
| having: count(*) >= 10
|
29:EXCHANGE [HASH(a.ca_state)]
|
15:AGGREGATE [STREAMING]
| output: count(*)
| group by: a.ca_state
|
14:HASH JOIN [LEFT SEMI JOIN, BROADCAST]
| hash predicates: i.i_category = j.i_category
| other join predicates: i.i_current_price > 1.2 * avg(j.i_current_price)
| runtime filters: RF000 <- j.i_category
|
|--JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: j.i_category
| |
| 28:EXCHANGE [BROADCAST]
| |
| 27:AGGREGATE [FINALIZE]
| | output: avg:merge(j.i_current_price)
| | group by: j.i_category
| |
| 26:EXCHANGE [HASH(j.i_category)]
| |
| 08:AGGREGATE [STREAMING]
| | output: avg(j.i_current_price)
| | group by: j.i_category
| |
| 07:SCAN HDFS [tpcds.item j]
| partitions=1/1 files=1 size=4.82MB
|
13:HASH JOIN [LEFT SEMI JOIN, BROADCAST]
| hash predicates: d.d_month_seq = (d_month_seq)
| runtime filters: RF001 <- (d_month_seq)
|
|--JOIN BUILD
| | join-table-id=01 plan-id=02 cohort-id=01
| | build expressions: (d_month_seq)
| |
| 25:EXCHANGE [BROADCAST]
| |
| 24:EXCHANGE [UNPARTITIONED]
| | limit: 1
| |
| 23:AGGREGATE [FINALIZE]
| | group by: (d_month_seq)
| | limit: 1
| |
| 22:EXCHANGE [HASH((d_month_seq))]
| |
| 06:AGGREGATE [STREAMING]
| | group by: (d_month_seq)
| |
| 05:SCAN HDFS [tpcds.date_dim]
| partitions=1/1 files=1 size=9.84MB
| predicates: d_year = 1999, d_moy = 1
|
12:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: s.ss_item_sk = i.i_item_sk
| runtime filters: RF002 <- i.i_item_sk
|
|--JOIN BUILD
| | join-table-id=02 plan-id=03 cohort-id=01
| | build expressions: i.i_item_sk
| |
| 21:EXCHANGE [BROADCAST]
| |
| 04:SCAN HDFS [tpcds.item i]
| partitions=1/1 files=1 size=4.82MB
| runtime filters: RF000 -> i.i_category
|
11:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: s.ss_sold_date_sk = d.d_date_sk
| runtime filters: RF003 <- d.d_date_sk
|
|--JOIN BUILD
| | join-table-id=03 plan-id=04 cohort-id=01
| | build expressions: d.d_date_sk
| |
| 20:EXCHANGE [BROADCAST]
| |
| 03:SCAN HDFS [tpcds.date_dim d]
| partitions=1/1 files=1 size=9.84MB
| runtime filters: RF001 -> d.d_month_seq
|
10:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: c.c_current_addr_sk = a.ca_address_sk
| runtime filters: RF004 <- a.ca_address_sk
|
|--JOIN BUILD
| | join-table-id=04 plan-id=05 cohort-id=01
| | build expressions: a.ca_address_sk
| |
| 19:EXCHANGE [BROADCAST]
| |
| 00:SCAN HDFS [tpcds.customer_address a]
| partitions=1/1 files=1 size=5.25MB
|
09:HASH JOIN [INNER JOIN, PARTITIONED]
| hash predicates: s.ss_customer_sk = c.c_customer_sk
| runtime filters: RF005 <- c.c_customer_sk
|
|--JOIN BUILD
| | join-table-id=05 plan-id=06 cohort-id=01
| | build expressions: c.c_customer_sk
| |
| 18:EXCHANGE [HASH(c.c_customer_sk)]
| |
| 01:SCAN HDFS [tpcds.customer c]
| partitions=1/1 files=1 size=12.60MB
| runtime filters: RF004 -> c.c_current_addr_sk
|
17:EXCHANGE [HASH(s.ss_customer_sk)]
|
02:SCAN HDFS [tpcds.store_sales s]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF002 -> s.ss_item_sk, RF003 -> s.ss_sold_date_sk, RF005 -> s.ss_customer_sk
====
# TPCDS-Q47
with v1 as (
select i_category, i_brand,
s_store_name, s_company_name,
d_year, d_moy,
sum(ss_sales_price) sum_sales,
avg(sum(ss_sales_price)) over
(partition by i_category, i_brand,
s_store_name, s_company_name, d_year)
avg_monthly_sales,
rank() over
(partition by i_category, i_brand,
s_store_name, s_company_name
order by d_year, d_moy) rn
from item, store_sales, date_dim, store
where ss_item_sk = i_item_sk and
ss_sold_date_sk = d_date_sk and
ss_store_sk = s_store_sk and
(
d_year = 2000 or
( d_year = 2000-1 and d_moy =12) or
( d_year = 2000+1 and d_moy =1)
)
group by i_category, i_brand,
s_store_name, s_company_name,
d_year, d_moy),
v2 as(
select v1.i_category, v1.i_brand
,v1.d_year
,v1.avg_monthly_sales
,v1.sum_sales, v1_lag.sum_sales psum, v1_lead.sum_sales nsum
from v1, v1 v1_lag, v1 v1_lead
where v1.i_category = v1_lag.i_category and
v1.i_category = v1_lead.i_category and
v1.i_brand = v1_lag.i_brand and
v1.i_brand = v1_lead.i_brand and
v1.s_store_name = v1_lag.s_store_name and
v1.s_store_name = v1_lead.s_store_name and
v1.s_company_name = v1_lag.s_company_name and
v1.s_company_name = v1_lead.s_company_name and
v1.rn = v1_lag.rn + 1 and
v1.rn = v1_lead.rn - 1)
select * from ( select *
from v2
where d_year = 2000 and
avg_monthly_sales > 0 and
case when avg_monthly_sales > 0 then abs(sum_sales - avg_monthly_sales) / avg_monthly_sales else null end > 0.1
order by sum_sales - avg_monthly_sales, d_year
limit 100
) as v3
---- PLAN
PLAN-ROOT SINK
|
35:TOP-N [LIMIT=100]
| order by: sum_sales - avg_monthly_sales ASC, d_year ASC
|
34:HASH JOIN [INNER JOIN]
| hash predicates: rank() - 1 = rank(), s_store_name = s_store_name, i_category = i_category, s_company_name = s_company_name, i_brand = i_brand
|
|--33:HASH JOIN [INNER JOIN]
| | hash predicates: rank() + 1 = rank(), s_store_name = s_store_name, i_category = i_category, s_company_name = s_company_name, i_brand = i_brand
| |
| |--12:SELECT
| | | predicates: d_year = 2000, avg(sum(ss_sales_price)) > 0, CASE WHEN avg(sum(ss_sales_price)) > 0 THEN abs(sum(ss_sales_price) - avg(sum(ss_sales_price))) / avg(sum(ss_sales_price)) ELSE NULL END > 0.1
| | |
| | 11:ANALYTIC
| | | functions: avg(sum(ss_sales_price))
| | | partition by: i_category, i_brand, s_store_name, s_company_name, d_year
| | |
| | 10:SORT
| | | order by: i_category ASC NULLS FIRST, i_brand ASC NULLS FIRST, s_store_name ASC NULLS FIRST, s_company_name ASC NULLS FIRST, d_year ASC NULLS FIRST
| | |
| | 09:ANALYTIC
| | | functions: rank()
| | | partition by: i_category, i_brand, s_store_name, s_company_name
| | | order by: d_year ASC, d_moy ASC
| | | window: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
| | |
| | 08:SORT
| | | order by: i_category ASC NULLS FIRST, i_brand ASC NULLS FIRST, s_store_name ASC NULLS FIRST, s_company_name ASC NULLS FIRST, d_year ASC, d_moy ASC
| | |
| | 07:AGGREGATE [FINALIZE]
| | | output: sum(ss_sales_price)
| | | group by: i_category, i_brand, s_store_name, s_company_name, d_year, d_moy
| | |
| | 06:HASH JOIN [INNER JOIN]
| | | hash predicates: ss_store_sk = s_store_sk
| | | runtime filters: RF006 <- s_store_sk
| | |
| | |--03:SCAN HDFS [tpcds.store]
| | | partitions=1/1 files=1 size=3.08KB
| | |
| | 05:HASH JOIN [INNER JOIN]
| | | hash predicates: ss_sold_date_sk = d_date_sk
| | | runtime filters: RF007 <- d_date_sk
| | |
| | |--02:SCAN HDFS [tpcds.date_dim]
| | | partitions=1/1 files=1 size=9.84MB
| | | predicates: (d_year = 2000 OR (d_year = 1999 AND d_moy = 12) OR (d_year = 2001 AND d_moy = 1))
| | |
| | 04:HASH JOIN [INNER JOIN]
| | | hash predicates: ss_item_sk = i_item_sk
| | | runtime filters: RF008 <- i_item_sk
| | |
| | |--00:SCAN HDFS [tpcds.item]
| | | partitions=1/1 files=1 size=4.82MB
| | |
| | 01:SCAN HDFS [tpcds.store_sales]
| | partitions=120/120 files=120 size=21.31MB
| | runtime filters: RF006 -> ss_store_sk, RF007 -> ss_sold_date_sk, RF008 -> ss_item_sk
| |
| 22:ANALYTIC
| | functions: rank()
| | partition by: i_category, i_brand, s_store_name, s_company_name
| | order by: d_year ASC, d_moy ASC
| | window: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
| |
| 21:SORT
| | order by: i_category ASC NULLS FIRST, i_brand ASC NULLS FIRST, s_store_name ASC NULLS FIRST, s_company_name ASC NULLS FIRST, d_year ASC, d_moy ASC
| |
| 20:AGGREGATE [FINALIZE]
| | output: sum(ss_sales_price)
| | group by: i_category, i_brand, s_store_name, s_company_name, d_year, d_moy
| |
| 19:HASH JOIN [INNER JOIN]
| | hash predicates: ss_store_sk = s_store_sk
| | runtime filters: RF003 <- s_store_sk
| |
| |--16:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| |
| 18:HASH JOIN [INNER JOIN]
| | hash predicates: ss_sold_date_sk = d_date_sk
| | runtime filters: RF004 <- d_date_sk
| |
| |--15:SCAN HDFS [tpcds.date_dim]
| | partitions=1/1 files=1 size=9.84MB
| | predicates: (d_year = 2000 OR (d_year = 1999 AND d_moy = 12) OR (d_year = 2001 AND d_moy = 1))
| |
| 17:HASH JOIN [INNER JOIN]
| | hash predicates: ss_item_sk = i_item_sk
| | runtime filters: RF005 <- i_item_sk
| |
| |--13:SCAN HDFS [tpcds.item]
| | partitions=1/1 files=1 size=4.82MB
| |
| 14:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF003 -> ss_store_sk, RF004 -> ss_sold_date_sk, RF005 -> ss_item_sk
|
32:ANALYTIC
| functions: rank()
| partition by: i_category, i_brand, s_store_name, s_company_name
| order by: d_year ASC, d_moy ASC
| window: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
|
31:SORT
| order by: i_category ASC NULLS FIRST, i_brand ASC NULLS FIRST, s_store_name ASC NULLS FIRST, s_company_name ASC NULLS FIRST, d_year ASC, d_moy ASC
|
30:AGGREGATE [FINALIZE]
| output: sum(ss_sales_price)
| group by: i_category, i_brand, s_store_name, s_company_name, d_year, d_moy
|
29:HASH JOIN [INNER JOIN]
| hash predicates: ss_store_sk = s_store_sk
| runtime filters: RF000 <- s_store_sk
|
|--26:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
|
28:HASH JOIN [INNER JOIN]
| hash predicates: ss_sold_date_sk = d_date_sk
| runtime filters: RF001 <- d_date_sk
|
|--25:SCAN HDFS [tpcds.date_dim]
| partitions=1/1 files=1 size=9.84MB
| predicates: (d_year = 2000 OR (d_year = 1999 AND d_moy = 12) OR (d_year = 2001 AND d_moy = 1))
|
27:HASH JOIN [INNER JOIN]
| hash predicates: ss_item_sk = i_item_sk
| runtime filters: RF002 <- i_item_sk
|
|--23:SCAN HDFS [tpcds.item]
| partitions=1/1 files=1 size=4.82MB
|
24:SCAN HDFS [tpcds.store_sales]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF000 -> ss_store_sk, RF001 -> ss_sold_date_sk, RF002 -> ss_item_sk
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
53:MERGING-EXCHANGE [UNPARTITIONED]
| order by: sum_sales - avg_monthly_sales ASC, d_year ASC
| limit: 100
|
35:TOP-N [LIMIT=100]
| order by: sum_sales - avg_monthly_sales ASC, d_year ASC
|
34:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: rank() - 1 = rank(), s_store_name = s_store_name, i_category = i_category, s_company_name = s_company_name, i_brand = i_brand
|
|--52:EXCHANGE [BROADCAST]
| |
| 33:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: rank() + 1 = rank(), s_store_name = s_store_name, i_category = i_category, s_company_name = s_company_name, i_brand = i_brand
| |
| |--51:EXCHANGE [BROADCAST]
| | |
| | 12:SELECT
| | | predicates: d_year = 2000, avg(sum(ss_sales_price)) > 0, CASE WHEN avg(sum(ss_sales_price)) > 0 THEN abs(sum(ss_sales_price) - avg(sum(ss_sales_price))) / avg(sum(ss_sales_price)) ELSE NULL END > 0.1
| | |
| | 11:ANALYTIC
| | | functions: avg(sum(ss_sales_price))
| | | partition by: i_category, i_brand, s_store_name, s_company_name, d_year
| | |
| | 10:SORT
| | | order by: i_category ASC NULLS FIRST, i_brand ASC NULLS FIRST, s_store_name ASC NULLS FIRST, s_company_name ASC NULLS FIRST, d_year ASC NULLS FIRST
| | |
| | 09:ANALYTIC
| | | functions: rank()
| | | partition by: i_category, i_brand, s_store_name, s_company_name
| | | order by: d_year ASC, d_moy ASC
| | | window: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
| | |
| | 08:SORT
| | | order by: i_category ASC NULLS FIRST, i_brand ASC NULLS FIRST, s_store_name ASC NULLS FIRST, s_company_name ASC NULLS FIRST, d_year ASC, d_moy ASC
| | |
| | 50:AGGREGATE [FINALIZE]
| | | output: sum:merge(ss_sales_price)
| | | group by: i_category, i_brand, s_store_name, s_company_name, d_year, d_moy
| | |
| | 49:EXCHANGE [HASH(i_category,i_brand,s_store_name,s_company_name)]
| | |
| | 07:AGGREGATE [STREAMING]
| | | output: sum(ss_sales_price)
| | | group by: i_category, i_brand, s_store_name, s_company_name, d_year, d_moy
| | |
| | 06:HASH JOIN [INNER JOIN, BROADCAST]
| | | hash predicates: ss_store_sk = s_store_sk
| | | runtime filters: RF006 <- s_store_sk
| | |
| | |--48:EXCHANGE [BROADCAST]
| | | |
| | | 03:SCAN HDFS [tpcds.store]
| | | partitions=1/1 files=1 size=3.08KB
| | |
| | 05:HASH JOIN [INNER JOIN, BROADCAST]
| | | hash predicates: ss_sold_date_sk = d_date_sk
| | | runtime filters: RF007 <- d_date_sk
| | |
| | |--47:EXCHANGE [BROADCAST]
| | | |
| | | 02:SCAN HDFS [tpcds.date_dim]
| | | partitions=1/1 files=1 size=9.84MB
| | | predicates: (d_year = 2000 OR (d_year = 1999 AND d_moy = 12) OR (d_year = 2001 AND d_moy = 1))
| | |
| | 04:HASH JOIN [INNER JOIN, BROADCAST]
| | | hash predicates: ss_item_sk = i_item_sk
| | | runtime filters: RF008 <- i_item_sk
| | |
| | |--46:EXCHANGE [BROADCAST]
| | | |
| | | 00:SCAN HDFS [tpcds.item]
| | | partitions=1/1 files=1 size=4.82MB
| | |
| | 01:SCAN HDFS [tpcds.store_sales]
| | partitions=120/120 files=120 size=21.31MB
| | runtime filters: RF006 -> ss_store_sk, RF007 -> ss_sold_date_sk, RF008 -> ss_item_sk
| |
| 22:ANALYTIC
| | functions: rank()
| | partition by: i_category, i_brand, s_store_name, s_company_name
| | order by: d_year ASC, d_moy ASC
| | window: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
| |
| 21:SORT
| | order by: i_category ASC NULLS FIRST, i_brand ASC NULLS FIRST, s_store_name ASC NULLS FIRST, s_company_name ASC NULLS FIRST, d_year ASC, d_moy ASC
| |
| 45:AGGREGATE [FINALIZE]
| | output: sum:merge(ss_sales_price)
| | group by: i_category, i_brand, s_store_name, s_company_name, d_year, d_moy
| |
| 44:EXCHANGE [HASH(i_category,i_brand,s_store_name,s_company_name)]
| |
| 20:AGGREGATE [STREAMING]
| | output: sum(ss_sales_price)
| | group by: i_category, i_brand, s_store_name, s_company_name, d_year, d_moy
| |
| 19:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_store_sk = s_store_sk
| | runtime filters: RF003 <- s_store_sk
| |
| |--43:EXCHANGE [BROADCAST]
| | |
| | 16:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| |
| 18:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_sold_date_sk = d_date_sk
| | runtime filters: RF004 <- d_date_sk
| |
| |--42:EXCHANGE [BROADCAST]
| | |
| | 15:SCAN HDFS [tpcds.date_dim]
| | partitions=1/1 files=1 size=9.84MB
| | predicates: (d_year = 2000 OR (d_year = 1999 AND d_moy = 12) OR (d_year = 2001 AND d_moy = 1))
| |
| 17:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_item_sk = i_item_sk
| | runtime filters: RF005 <- i_item_sk
| |
| |--41:EXCHANGE [BROADCAST]
| | |
| | 13:SCAN HDFS [tpcds.item]
| | partitions=1/1 files=1 size=4.82MB
| |
| 14:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF003 -> ss_store_sk, RF004 -> ss_sold_date_sk, RF005 -> ss_item_sk
|
32:ANALYTIC
| functions: rank()
| partition by: i_category, i_brand, s_store_name, s_company_name
| order by: d_year ASC, d_moy ASC
| window: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
|
31:SORT
| order by: i_category ASC NULLS FIRST, i_brand ASC NULLS FIRST, s_store_name ASC NULLS FIRST, s_company_name ASC NULLS FIRST, d_year ASC, d_moy ASC
|
40:AGGREGATE [FINALIZE]
| output: sum:merge(ss_sales_price)
| group by: i_category, i_brand, s_store_name, s_company_name, d_year, d_moy
|
39:EXCHANGE [HASH(i_category,i_brand,s_store_name,s_company_name)]
|
30:AGGREGATE [STREAMING]
| output: sum(ss_sales_price)
| group by: i_category, i_brand, s_store_name, s_company_name, d_year, d_moy
|
29:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_store_sk = s_store_sk
| runtime filters: RF000 <- s_store_sk
|
|--38:EXCHANGE [BROADCAST]
| |
| 26:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
|
28:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_sold_date_sk = d_date_sk
| runtime filters: RF001 <- d_date_sk
|
|--37:EXCHANGE [BROADCAST]
| |
| 25:SCAN HDFS [tpcds.date_dim]
| partitions=1/1 files=1 size=9.84MB
| predicates: (d_year = 2000 OR (d_year = 1999 AND d_moy = 12) OR (d_year = 2001 AND d_moy = 1))
|
27:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_item_sk = i_item_sk
| runtime filters: RF002 <- i_item_sk
|
|--36:EXCHANGE [BROADCAST]
| |
| 23:SCAN HDFS [tpcds.item]
| partitions=1/1 files=1 size=4.82MB
|
24:SCAN HDFS [tpcds.store_sales]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF000 -> ss_store_sk, RF001 -> ss_sold_date_sk, RF002 -> ss_item_sk
---- PARALLELPLANS
PLAN-ROOT SINK
|
53:MERGING-EXCHANGE [UNPARTITIONED]
| order by: sum_sales - avg_monthly_sales ASC, d_year ASC
| limit: 100
|
35:TOP-N [LIMIT=100]
| order by: sum_sales - avg_monthly_sales ASC, d_year ASC
|
34:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: rank() - 1 = rank(), s_store_name = s_store_name, i_category = i_category, s_company_name = s_company_name, i_brand = i_brand
|
|--JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: rank(), s_store_name, i_category, s_company_name, i_brand
| |
| 52:EXCHANGE [BROADCAST]
| |
| 33:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: rank() + 1 = rank(), s_store_name = s_store_name, i_category = i_category, s_company_name = s_company_name, i_brand = i_brand
| |
| |--JOIN BUILD
| | | join-table-id=01 plan-id=02 cohort-id=02
| | | build expressions: rank(), s_store_name, i_category, s_company_name, i_brand
| | |
| | 51:EXCHANGE [BROADCAST]
| | |
| | 12:SELECT
| | | predicates: d_year = 2000, avg(sum(ss_sales_price)) > 0, CASE WHEN avg(sum(ss_sales_price)) > 0 THEN abs(sum(ss_sales_price) - avg(sum(ss_sales_price))) / avg(sum(ss_sales_price)) ELSE NULL END > 0.1
| | |
| | 11:ANALYTIC
| | | functions: avg(sum(ss_sales_price))
| | | partition by: i_category, i_brand, s_store_name, s_company_name, d_year
| | |
| | 10:SORT
| | | order by: i_category ASC NULLS FIRST, i_brand ASC NULLS FIRST, s_store_name ASC NULLS FIRST, s_company_name ASC NULLS FIRST, d_year ASC NULLS FIRST
| | |
| | 09:ANALYTIC
| | | functions: rank()
| | | partition by: i_category, i_brand, s_store_name, s_company_name
| | | order by: d_year ASC, d_moy ASC
| | | window: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
| | |
| | 08:SORT
| | | order by: i_category ASC NULLS FIRST, i_brand ASC NULLS FIRST, s_store_name ASC NULLS FIRST, s_company_name ASC NULLS FIRST, d_year ASC, d_moy ASC
| | |
| | 50:AGGREGATE [FINALIZE]
| | | output: sum:merge(ss_sales_price)
| | | group by: i_category, i_brand, s_store_name, s_company_name, d_year, d_moy
| | |
| | 49:EXCHANGE [HASH(i_category,i_brand,s_store_name,s_company_name)]
| | |
| | 07:AGGREGATE [STREAMING]
| | | output: sum(ss_sales_price)
| | | group by: i_category, i_brand, s_store_name, s_company_name, d_year, d_moy
| | |
| | 06:HASH JOIN [INNER JOIN, BROADCAST]
| | | hash predicates: ss_store_sk = s_store_sk
| | | runtime filters: RF006 <- s_store_sk
| | |
| | |--JOIN BUILD
| | | | join-table-id=02 plan-id=03 cohort-id=03
| | | | build expressions: s_store_sk
| | | |
| | | 48:EXCHANGE [BROADCAST]
| | | |
| | | 03:SCAN HDFS [tpcds.store]
| | | partitions=1/1 files=1 size=3.08KB
| | |
| | 05:HASH JOIN [INNER JOIN, BROADCAST]
| | | hash predicates: ss_sold_date_sk = d_date_sk
| | | runtime filters: RF007 <- d_date_sk
| | |
| | |--JOIN BUILD
| | | | join-table-id=03 plan-id=04 cohort-id=03
| | | | build expressions: d_date_sk
| | | |
| | | 47:EXCHANGE [BROADCAST]
| | | |
| | | 02:SCAN HDFS [tpcds.date_dim]
| | | partitions=1/1 files=1 size=9.84MB
| | | predicates: (d_year = 2000 OR (d_year = 1999 AND d_moy = 12) OR (d_year = 2001 AND d_moy = 1))
| | |
| | 04:HASH JOIN [INNER JOIN, BROADCAST]
| | | hash predicates: ss_item_sk = i_item_sk
| | | runtime filters: RF008 <- i_item_sk
| | |
| | |--JOIN BUILD
| | | | join-table-id=04 plan-id=05 cohort-id=03
| | | | build expressions: i_item_sk
| | | |
| | | 46:EXCHANGE [BROADCAST]
| | | |
| | | 00:SCAN HDFS [tpcds.item]
| | | partitions=1/1 files=1 size=4.82MB
| | |
| | 01:SCAN HDFS [tpcds.store_sales]
| | partitions=120/120 files=120 size=21.31MB
| | runtime filters: RF006 -> ss_store_sk, RF007 -> ss_sold_date_sk, RF008 -> ss_item_sk
| |
| 22:ANALYTIC
| | functions: rank()
| | partition by: i_category, i_brand, s_store_name, s_company_name
| | order by: d_year ASC, d_moy ASC
| | window: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
| |
| 21:SORT
| | order by: i_category ASC NULLS FIRST, i_brand ASC NULLS FIRST, s_store_name ASC NULLS FIRST, s_company_name ASC NULLS FIRST, d_year ASC, d_moy ASC
| |
| 45:AGGREGATE [FINALIZE]
| | output: sum:merge(ss_sales_price)
| | group by: i_category, i_brand, s_store_name, s_company_name, d_year, d_moy
| |
| 44:EXCHANGE [HASH(i_category,i_brand,s_store_name,s_company_name)]
| |
| 20:AGGREGATE [STREAMING]
| | output: sum(ss_sales_price)
| | group by: i_category, i_brand, s_store_name, s_company_name, d_year, d_moy
| |
| 19:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_store_sk = s_store_sk
| | runtime filters: RF003 <- s_store_sk
| |
| |--JOIN BUILD
| | | join-table-id=05 plan-id=06 cohort-id=02
| | | build expressions: s_store_sk
| | |
| | 43:EXCHANGE [BROADCAST]
| | |
| | 16:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| |
| 18:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_sold_date_sk = d_date_sk
| | runtime filters: RF004 <- d_date_sk
| |
| |--JOIN BUILD
| | | join-table-id=06 plan-id=07 cohort-id=02
| | | build expressions: d_date_sk
| | |
| | 42:EXCHANGE [BROADCAST]
| | |
| | 15:SCAN HDFS [tpcds.date_dim]
| | partitions=1/1 files=1 size=9.84MB
| | predicates: (d_year = 2000 OR (d_year = 1999 AND d_moy = 12) OR (d_year = 2001 AND d_moy = 1))
| |
| 17:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_item_sk = i_item_sk
| | runtime filters: RF005 <- i_item_sk
| |
| |--JOIN BUILD
| | | join-table-id=07 plan-id=08 cohort-id=02
| | | build expressions: i_item_sk
| | |
| | 41:EXCHANGE [BROADCAST]
| | |
| | 13:SCAN HDFS [tpcds.item]
| | partitions=1/1 files=1 size=4.82MB
| |
| 14:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF003 -> ss_store_sk, RF004 -> ss_sold_date_sk, RF005 -> ss_item_sk
|
32:ANALYTIC
| functions: rank()
| partition by: i_category, i_brand, s_store_name, s_company_name
| order by: d_year ASC, d_moy ASC
| window: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
|
31:SORT
| order by: i_category ASC NULLS FIRST, i_brand ASC NULLS FIRST, s_store_name ASC NULLS FIRST, s_company_name ASC NULLS FIRST, d_year ASC, d_moy ASC
|
40:AGGREGATE [FINALIZE]
| output: sum:merge(ss_sales_price)
| group by: i_category, i_brand, s_store_name, s_company_name, d_year, d_moy
|
39:EXCHANGE [HASH(i_category,i_brand,s_store_name,s_company_name)]
|
30:AGGREGATE [STREAMING]
| output: sum(ss_sales_price)
| group by: i_category, i_brand, s_store_name, s_company_name, d_year, d_moy
|
29:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_store_sk = s_store_sk
| runtime filters: RF000 <- s_store_sk
|
|--JOIN BUILD
| | join-table-id=08 plan-id=09 cohort-id=01
| | build expressions: s_store_sk
| |
| 38:EXCHANGE [BROADCAST]
| |
| 26:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
|
28:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_sold_date_sk = d_date_sk
| runtime filters: RF001 <- d_date_sk
|
|--JOIN BUILD
| | join-table-id=09 plan-id=10 cohort-id=01
| | build expressions: d_date_sk
| |
| 37:EXCHANGE [BROADCAST]
| |
| 25:SCAN HDFS [tpcds.date_dim]
| partitions=1/1 files=1 size=9.84MB
| predicates: (d_year = 2000 OR (d_year = 1999 AND d_moy = 12) OR (d_year = 2001 AND d_moy = 1))
|
27:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_item_sk = i_item_sk
| runtime filters: RF002 <- i_item_sk
|
|--JOIN BUILD
| | join-table-id=10 plan-id=11 cohort-id=01
| | build expressions: i_item_sk
| |
| 36:EXCHANGE [BROADCAST]
| |
| 23:SCAN HDFS [tpcds.item]
| partitions=1/1 files=1 size=4.82MB
|
24:SCAN HDFS [tpcds.store_sales]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF000 -> ss_store_sk, RF001 -> ss_sold_date_sk, RF002 -> ss_item_sk
====
# TPCDS-Q66
select promotions,total,cast(promotions as decimal(15,4))/cast(total as decimal(15,4))*100
from
(select sum(ss_ext_sales_price) promotions
from store_sales
,store
,promotion
,date_dim
,customer
,customer_address
,item
where ss_sold_date_sk = d_date_sk
and ss_store_sk = s_store_sk
and ss_promo_sk = p_promo_sk
and ss_customer_sk= c_customer_sk
and ca_address_sk = c_current_addr_sk
and ss_item_sk = i_item_sk
and ca_gmt_offset = -5
and i_category = 'Books'
and (p_channel_dmail = 'Y' or p_channel_email = 'Y' or p_channel_tv = 'Y')
and s_gmt_offset = -5
and d_year = 2000
and d_moy = 11) promotional_sales,
(select sum(ss_ext_sales_price) total
from store_sales
,store
,date_dim
,customer
,customer_address
,item
where ss_sold_date_sk = d_date_sk
and ss_store_sk = s_store_sk
and ss_customer_sk= c_customer_sk
and ca_address_sk = c_current_addr_sk
and ss_item_sk = i_item_sk
and ca_gmt_offset = -5
and i_category = 'Books'
and s_gmt_offset = -5
and d_year = 2000
and d_moy = 11) all_sales
order by promotions, total
---- PLAN
PLAN-ROOT SINK
|
27:SORT
| order by: promotions ASC, total ASC
|
26:NESTED LOOP JOIN [CROSS JOIN]
|
|--25:AGGREGATE [FINALIZE]
| | output: sum(ss_ext_sales_price)
| |
| 24:HASH JOIN [INNER JOIN]
| | hash predicates: c_current_addr_sk = ca_address_sk
| | runtime filters: RF006 <- ca_address_sk
| |
| |--18:SCAN HDFS [tpcds.customer_address]
| | partitions=1/1 files=1 size=5.25MB
| | predicates: ca_gmt_offset = -5
| |
| 23:HASH JOIN [INNER JOIN]
| | hash predicates: ss_customer_sk = c_customer_sk
| | runtime filters: RF007 <- c_customer_sk
| |
| |--17:SCAN HDFS [tpcds.customer]
| | partitions=1/1 files=1 size=12.60MB
| | runtime filters: RF006 -> c_current_addr_sk
| |
| 22:HASH JOIN [INNER JOIN]
| | hash predicates: ss_store_sk = s_store_sk
| |
| |--15:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| | predicates: s_gmt_offset = -5
| |
| 21:HASH JOIN [INNER JOIN]
| | hash predicates: ss_sold_date_sk = d_date_sk
| | runtime filters: RF009 <- d_date_sk
| |
| |--16:SCAN HDFS [tpcds.date_dim]
| | partitions=1/1 files=1 size=9.84MB
| | predicates: d_year = 2000, d_moy = 11
| |
| 20:HASH JOIN [INNER JOIN]
| | hash predicates: ss_item_sk = i_item_sk
| | runtime filters: RF010 <- i_item_sk
| |
| |--19:SCAN HDFS [tpcds.item]
| | partitions=1/1 files=1 size=4.82MB
| | predicates: i_category = 'Books'
| |
| 14:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF010 -> ss_item_sk, RF009 -> ss_sold_date_sk, RF007 -> ss_customer_sk
|
13:AGGREGATE [FINALIZE]
| output: sum(ss_ext_sales_price)
|
12:HASH JOIN [INNER JOIN]
| hash predicates: c_current_addr_sk = ca_address_sk
| runtime filters: RF000 <- ca_address_sk
|
|--05:SCAN HDFS [tpcds.customer_address]
| partitions=1/1 files=1 size=5.25MB
| predicates: ca_gmt_offset = -5
|
11:HASH JOIN [INNER JOIN]
| hash predicates: ss_customer_sk = c_customer_sk
| runtime filters: RF001 <- c_customer_sk
|
|--04:SCAN HDFS [tpcds.customer]
| partitions=1/1 files=1 size=12.60MB
| runtime filters: RF000 -> c_current_addr_sk
|
10:HASH JOIN [INNER JOIN]
| hash predicates: ss_store_sk = s_store_sk
| runtime filters: RF002 <- s_store_sk
|
|--01:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
| predicates: s_gmt_offset = -5
|
09:HASH JOIN [INNER JOIN]
| hash predicates: ss_sold_date_sk = d_date_sk
| runtime filters: RF003 <- d_date_sk
|
|--03:SCAN HDFS [tpcds.date_dim]
| partitions=1/1 files=1 size=9.84MB
| predicates: d_year = 2000, d_moy = 11
|
08:HASH JOIN [INNER JOIN]
| hash predicates: ss_promo_sk = p_promo_sk
| runtime filters: RF004 <- p_promo_sk
|
|--02:SCAN HDFS [tpcds.promotion]
| partitions=1/1 files=1 size=36.36KB
| predicates: (p_channel_dmail = 'Y' OR p_channel_email = 'Y' OR p_channel_tv = 'Y')
|
07:HASH JOIN [INNER JOIN]
| hash predicates: ss_item_sk = i_item_sk
| runtime filters: RF005 <- i_item_sk
|
|--06:SCAN HDFS [tpcds.item]
| partitions=1/1 files=1 size=4.82MB
| predicates: i_category = 'Books'
|
00:SCAN HDFS [tpcds.store_sales]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF005 -> ss_item_sk, RF004 -> ss_promo_sk, RF003 -> ss_sold_date_sk, RF001 -> ss_customer_sk, RF002 -> ss_store_sk
---- PARALLELPLANS
PLAN-ROOT SINK
|
27:SORT
| order by: promotions ASC, total ASC
|
26:NESTED LOOP JOIN [CROSS JOIN, BROADCAST]
| join table id: 00
|
|--JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| |
| 45:EXCHANGE [UNPARTITIONED]
| |
| 44:AGGREGATE [FINALIZE]
| | output: sum:merge(ss_ext_sales_price)
| |
| 43:EXCHANGE [UNPARTITIONED]
| |
| 25:AGGREGATE
| | output: sum(ss_ext_sales_price)
| |
| 24:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: c_current_addr_sk = ca_address_sk
| | runtime filters: RF006 <- ca_address_sk
| |
| |--JOIN BUILD
| | | join-table-id=01 plan-id=02 cohort-id=02
| | | build expressions: ca_address_sk
| | |
| | 42:EXCHANGE [BROADCAST]
| | |
| | 18:SCAN HDFS [tpcds.customer_address]
| | partitions=1/1 files=1 size=5.25MB
| | predicates: ca_gmt_offset = -5
| |
| 23:HASH JOIN [INNER JOIN, PARTITIONED]
| | hash predicates: ss_customer_sk = c_customer_sk
| | runtime filters: RF007 <- c_customer_sk
| |
| |--JOIN BUILD
| | | join-table-id=02 plan-id=03 cohort-id=02
| | | build expressions: c_customer_sk
| | |
| | 41:EXCHANGE [HASH(c_customer_sk)]
| | |
| | 17:SCAN HDFS [tpcds.customer]
| | partitions=1/1 files=1 size=12.60MB
| | runtime filters: RF006 -> c_current_addr_sk
| |
| 40:EXCHANGE [HASH(ss_customer_sk)]
| |
| 22:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_store_sk = s_store_sk
| |
| |--JOIN BUILD
| | | join-table-id=03 plan-id=04 cohort-id=02
| | | build expressions: s_store_sk
| | |
| | 39:EXCHANGE [BROADCAST]
| | |
| | 15:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| | predicates: s_gmt_offset = -5
| |
| 21:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_sold_date_sk = d_date_sk
| | runtime filters: RF009 <- d_date_sk
| |
| |--JOIN BUILD
| | | join-table-id=04 plan-id=05 cohort-id=02
| | | build expressions: d_date_sk
| | |
| | 38:EXCHANGE [BROADCAST]
| | |
| | 16:SCAN HDFS [tpcds.date_dim]
| | partitions=1/1 files=1 size=9.84MB
| | predicates: d_year = 2000, d_moy = 11
| |
| 20:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_item_sk = i_item_sk
| | runtime filters: RF010 <- i_item_sk
| |
| |--JOIN BUILD
| | | join-table-id=05 plan-id=06 cohort-id=02
| | | build expressions: i_item_sk
| | |
| | 37:EXCHANGE [BROADCAST]
| | |
| | 19:SCAN HDFS [tpcds.item]
| | partitions=1/1 files=1 size=4.82MB
| | predicates: i_category = 'Books'
| |
| 14:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF010 -> ss_item_sk, RF009 -> ss_sold_date_sk, RF007 -> ss_customer_sk
|
36:AGGREGATE [FINALIZE]
| output: sum:merge(ss_ext_sales_price)
|
35:EXCHANGE [UNPARTITIONED]
|
13:AGGREGATE
| output: sum(ss_ext_sales_price)
|
12:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: c_current_addr_sk = ca_address_sk
| runtime filters: RF000 <- ca_address_sk
|
|--JOIN BUILD
| | join-table-id=06 plan-id=07 cohort-id=01
| | build expressions: ca_address_sk
| |
| 34:EXCHANGE [BROADCAST]
| |
| 05:SCAN HDFS [tpcds.customer_address]
| partitions=1/1 files=1 size=5.25MB
| predicates: ca_gmt_offset = -5
|
11:HASH JOIN [INNER JOIN, PARTITIONED]
| hash predicates: ss_customer_sk = c_customer_sk
| runtime filters: RF001 <- c_customer_sk
|
|--JOIN BUILD
| | join-table-id=07 plan-id=08 cohort-id=01
| | build expressions: c_customer_sk
| |
| 33:EXCHANGE [HASH(c_customer_sk)]
| |
| 04:SCAN HDFS [tpcds.customer]
| partitions=1/1 files=1 size=12.60MB
| runtime filters: RF000 -> c_current_addr_sk
|
32:EXCHANGE [HASH(ss_customer_sk)]
|
10:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_store_sk = s_store_sk
| runtime filters: RF002 <- s_store_sk
|
|--JOIN BUILD
| | join-table-id=08 plan-id=09 cohort-id=01
| | build expressions: s_store_sk
| |
| 31:EXCHANGE [BROADCAST]
| |
| 01:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
| predicates: s_gmt_offset = -5
|
09:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_sold_date_sk = d_date_sk
| runtime filters: RF003 <- d_date_sk
|
|--JOIN BUILD
| | join-table-id=09 plan-id=10 cohort-id=01
| | build expressions: d_date_sk
| |
| 30:EXCHANGE [BROADCAST]
| |
| 03:SCAN HDFS [tpcds.date_dim]
| partitions=1/1 files=1 size=9.84MB
| predicates: d_year = 2000, d_moy = 11
|
08:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_promo_sk = p_promo_sk
| runtime filters: RF004 <- p_promo_sk
|
|--JOIN BUILD
| | join-table-id=10 plan-id=11 cohort-id=01
| | build expressions: p_promo_sk
| |
| 29:EXCHANGE [BROADCAST]
| |
| 02:SCAN HDFS [tpcds.promotion]
| partitions=1/1 files=1 size=36.36KB
| predicates: (p_channel_dmail = 'Y' OR p_channel_email = 'Y' OR p_channel_tv = 'Y')
|
07:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_item_sk = i_item_sk
| runtime filters: RF005 <- i_item_sk
|
|--JOIN BUILD
| | join-table-id=11 plan-id=12 cohort-id=01
| | build expressions: i_item_sk
| |
| 28:EXCHANGE [BROADCAST]
| |
| 06:SCAN HDFS [tpcds.item]
| partitions=1/1 files=1 size=4.82MB
| predicates: i_category = 'Books'
|
00:SCAN HDFS [tpcds.store_sales]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF005 -> ss_item_sk, RF004 -> ss_promo_sk, RF003 -> ss_sold_date_sk, RF001 -> ss_customer_sk, RF002 -> ss_store_sk
====
# TPCDS-Q88
select *
from
(select count(*) h8_30_to_9
from store_sales, household_demographics , time_dim, store
where ss_sold_time_sk = time_dim.t_time_sk
and ss_hdemo_sk = household_demographics.hd_demo_sk
and ss_store_sk = s_store_sk
and time_dim.t_hour = 8
and time_dim.t_minute >= 30
and ((household_demographics.hd_dep_count = 1 and household_demographics.hd_vehicle_count<=1+2) or
(household_demographics.hd_dep_count = 0 and household_demographics.hd_vehicle_count<=0+2) or
(household_demographics.hd_dep_count = 2 and household_demographics.hd_vehicle_count<=2+2))
and store.s_store_name = 'ese') s1,
(select count(*) h9_to_9_30
from store_sales, household_demographics , time_dim, store
where ss_sold_time_sk = time_dim.t_time_sk
and ss_hdemo_sk = household_demographics.hd_demo_sk
and ss_store_sk = s_store_sk
and time_dim.t_hour = 9
and time_dim.t_minute < 30
and ((household_demographics.hd_dep_count = 1 and household_demographics.hd_vehicle_count<=1+2) or
(household_demographics.hd_dep_count = 0 and household_demographics.hd_vehicle_count<=0+2) or
(household_demographics.hd_dep_count = 2 and household_demographics.hd_vehicle_count<=2+2))
and store.s_store_name = 'ese') s2,
(select count(*) h9_30_to_10
from store_sales, household_demographics , time_dim, store
where ss_sold_time_sk = time_dim.t_time_sk
and ss_hdemo_sk = household_demographics.hd_demo_sk
and ss_store_sk = s_store_sk
and time_dim.t_hour = 9
and time_dim.t_minute >= 30
and ((household_demographics.hd_dep_count = 1 and household_demographics.hd_vehicle_count<=1+2) or
(household_demographics.hd_dep_count = 0 and household_demographics.hd_vehicle_count<=0+2) or
(household_demographics.hd_dep_count = 2 and household_demographics.hd_vehicle_count<=2+2))
and store.s_store_name = 'ese') s3,
(select count(*) h10_to_10_30
from store_sales, household_demographics , time_dim, store
where ss_sold_time_sk = time_dim.t_time_sk
and ss_hdemo_sk = household_demographics.hd_demo_sk
and ss_store_sk = s_store_sk
and time_dim.t_hour = 10
and time_dim.t_minute < 30
and ((household_demographics.hd_dep_count = 1 and household_demographics.hd_vehicle_count<=1+2) or
(household_demographics.hd_dep_count = 0 and household_demographics.hd_vehicle_count<=0+2) or
(household_demographics.hd_dep_count = 2 and household_demographics.hd_vehicle_count<=2+2))
and store.s_store_name = 'ese') s4,
(select count(*) h10_30_to_11
from store_sales, household_demographics , time_dim, store
where ss_sold_time_sk = time_dim.t_time_sk
and ss_hdemo_sk = household_demographics.hd_demo_sk
and ss_store_sk = s_store_sk
and time_dim.t_hour = 10
and time_dim.t_minute >= 30
and ((household_demographics.hd_dep_count = 1 and household_demographics.hd_vehicle_count<=1+2) or
(household_demographics.hd_dep_count = 0 and household_demographics.hd_vehicle_count<=0+2) or
(household_demographics.hd_dep_count = 2 and household_demographics.hd_vehicle_count<=2+2))
and store.s_store_name = 'ese') s5,
(select count(*) h11_to_11_30
from store_sales, household_demographics , time_dim, store
where ss_sold_time_sk = time_dim.t_time_sk
and ss_hdemo_sk = household_demographics.hd_demo_sk
and ss_store_sk = s_store_sk
and time_dim.t_hour = 11
and time_dim.t_minute < 30
and ((household_demographics.hd_dep_count = 1 and household_demographics.hd_vehicle_count<=1+2) or
(household_demographics.hd_dep_count = 0 and household_demographics.hd_vehicle_count<=0+2) or
(household_demographics.hd_dep_count = 2 and household_demographics.hd_vehicle_count<=2+2))
and store.s_store_name = 'ese') s6,
(select count(*) h11_30_to_12
from store_sales, household_demographics , time_dim, store
where ss_sold_time_sk = time_dim.t_time_sk
and ss_hdemo_sk = household_demographics.hd_demo_sk
and ss_store_sk = s_store_sk
and time_dim.t_hour = 11
and time_dim.t_minute >= 30
and ((household_demographics.hd_dep_count = 1 and household_demographics.hd_vehicle_count<=1+2) or
(household_demographics.hd_dep_count = 0 and household_demographics.hd_vehicle_count<=0+2) or
(household_demographics.hd_dep_count = 2 and household_demographics.hd_vehicle_count<=2+2))
and store.s_store_name = 'ese') s7,
(select count(*) h12_to_12_30
from store_sales, household_demographics , time_dim, store
where ss_sold_time_sk = time_dim.t_time_sk
and ss_hdemo_sk = household_demographics.hd_demo_sk
and ss_store_sk = s_store_sk
and time_dim.t_hour = 12
and time_dim.t_minute < 30
and ((household_demographics.hd_dep_count = 1 and household_demographics.hd_vehicle_count<=1+2) or
(household_demographics.hd_dep_count = 0 and household_demographics.hd_vehicle_count<=0+2) or
(household_demographics.hd_dep_count = 2 and household_demographics.hd_vehicle_count<=2+2))
and store.s_store_name = 'ese') s8
---- PLAN
PLAN-ROOT SINK
|
70:NESTED LOOP JOIN [CROSS JOIN]
|
|--63:AGGREGATE [FINALIZE]
| | output: count(*)
| |
| 62:HASH JOIN [INNER JOIN]
| | hash predicates: ss_store_sk = s_store_sk
| |
| |--59:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| | predicates: store.s_store_name = 'ese'
| |
| 61:HASH JOIN [INNER JOIN]
| | hash predicates: ss_hdemo_sk = household_demographics.hd_demo_sk
| |
| |--57:SCAN HDFS [tpcds.household_demographics]
| | partitions=1/1 files=1 size=148.10KB
| | predicates: ((household_demographics.hd_dep_count = 1 AND household_demographics.hd_vehicle_count <= 3) OR (household_demographics.hd_dep_count = 0 AND household_demographics.hd_vehicle_count <= 2) OR (household_demographics.hd_dep_count = 2 AND household_demographics.hd_vehicle_count <= 4))
| |
| 60:HASH JOIN [INNER JOIN]
| | hash predicates: ss_sold_time_sk = time_dim.t_time_sk
| | runtime filters: RF023 <- time_dim.t_time_sk
| |
| |--58:SCAN HDFS [tpcds.time_dim]
| | partitions=1/1 files=1 size=4.87MB
| | predicates: time_dim.t_hour = 12, time_dim.t_minute < 30
| |
| 56:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF023 -> ss_sold_time_sk
|
69:NESTED LOOP JOIN [CROSS JOIN]
|
|--55:AGGREGATE [FINALIZE]
| | output: count(*)
| |
| 54:HASH JOIN [INNER JOIN]
| | hash predicates: ss_store_sk = s_store_sk
| |
| |--51:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| | predicates: store.s_store_name = 'ese'
| |
| 53:HASH JOIN [INNER JOIN]
| | hash predicates: ss_hdemo_sk = household_demographics.hd_demo_sk
| |
| |--49:SCAN HDFS [tpcds.household_demographics]
| | partitions=1/1 files=1 size=148.10KB
| | predicates: ((household_demographics.hd_dep_count = 1 AND household_demographics.hd_vehicle_count <= 3) OR (household_demographics.hd_dep_count = 0 AND household_demographics.hd_vehicle_count <= 2) OR (household_demographics.hd_dep_count = 2 AND household_demographics.hd_vehicle_count <= 4))
| |
| 52:HASH JOIN [INNER JOIN]
| | hash predicates: ss_sold_time_sk = time_dim.t_time_sk
| | runtime filters: RF020 <- time_dim.t_time_sk
| |
| |--50:SCAN HDFS [tpcds.time_dim]
| | partitions=1/1 files=1 size=4.87MB
| | predicates: time_dim.t_hour = 11, time_dim.t_minute >= 30
| |
| 48:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF020 -> ss_sold_time_sk
|
68:NESTED LOOP JOIN [CROSS JOIN]
|
|--47:AGGREGATE [FINALIZE]
| | output: count(*)
| |
| 46:HASH JOIN [INNER JOIN]
| | hash predicates: ss_store_sk = s_store_sk
| |
| |--43:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| | predicates: store.s_store_name = 'ese'
| |
| 45:HASH JOIN [INNER JOIN]
| | hash predicates: ss_hdemo_sk = household_demographics.hd_demo_sk
| |
| |--41:SCAN HDFS [tpcds.household_demographics]
| | partitions=1/1 files=1 size=148.10KB
| | predicates: ((household_demographics.hd_dep_count = 1 AND household_demographics.hd_vehicle_count <= 3) OR (household_demographics.hd_dep_count = 0 AND household_demographics.hd_vehicle_count <= 2) OR (household_demographics.hd_dep_count = 2 AND household_demographics.hd_vehicle_count <= 4))
| |
| 44:HASH JOIN [INNER JOIN]
| | hash predicates: ss_sold_time_sk = time_dim.t_time_sk
| | runtime filters: RF017 <- time_dim.t_time_sk
| |
| |--42:SCAN HDFS [tpcds.time_dim]
| | partitions=1/1 files=1 size=4.87MB
| | predicates: time_dim.t_hour = 11, time_dim.t_minute < 30
| |
| 40:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF017 -> ss_sold_time_sk
|
67:NESTED LOOP JOIN [CROSS JOIN]
|
|--39:AGGREGATE [FINALIZE]
| | output: count(*)
| |
| 38:HASH JOIN [INNER JOIN]
| | hash predicates: ss_store_sk = s_store_sk
| |
| |--35:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| | predicates: store.s_store_name = 'ese'
| |
| 37:HASH JOIN [INNER JOIN]
| | hash predicates: ss_hdemo_sk = household_demographics.hd_demo_sk
| |
| |--33:SCAN HDFS [tpcds.household_demographics]
| | partitions=1/1 files=1 size=148.10KB
| | predicates: ((household_demographics.hd_dep_count = 1 AND household_demographics.hd_vehicle_count <= 3) OR (household_demographics.hd_dep_count = 0 AND household_demographics.hd_vehicle_count <= 2) OR (household_demographics.hd_dep_count = 2 AND household_demographics.hd_vehicle_count <= 4))
| |
| 36:HASH JOIN [INNER JOIN]
| | hash predicates: ss_sold_time_sk = time_dim.t_time_sk
| | runtime filters: RF014 <- time_dim.t_time_sk
| |
| |--34:SCAN HDFS [tpcds.time_dim]
| | partitions=1/1 files=1 size=4.87MB
| | predicates: time_dim.t_hour = 10, time_dim.t_minute >= 30
| |
| 32:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF014 -> ss_sold_time_sk
|
66:NESTED LOOP JOIN [CROSS JOIN]
|
|--31:AGGREGATE [FINALIZE]
| | output: count(*)
| |
| 30:HASH JOIN [INNER JOIN]
| | hash predicates: ss_store_sk = s_store_sk
| |
| |--27:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| | predicates: store.s_store_name = 'ese'
| |
| 29:HASH JOIN [INNER JOIN]
| | hash predicates: ss_hdemo_sk = household_demographics.hd_demo_sk
| |
| |--25:SCAN HDFS [tpcds.household_demographics]
| | partitions=1/1 files=1 size=148.10KB
| | predicates: ((household_demographics.hd_dep_count = 1 AND household_demographics.hd_vehicle_count <= 3) OR (household_demographics.hd_dep_count = 0 AND household_demographics.hd_vehicle_count <= 2) OR (household_demographics.hd_dep_count = 2 AND household_demographics.hd_vehicle_count <= 4))
| |
| 28:HASH JOIN [INNER JOIN]
| | hash predicates: ss_sold_time_sk = time_dim.t_time_sk
| | runtime filters: RF011 <- time_dim.t_time_sk
| |
| |--26:SCAN HDFS [tpcds.time_dim]
| | partitions=1/1 files=1 size=4.87MB
| | predicates: time_dim.t_hour = 10, time_dim.t_minute < 30
| |
| 24:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF011 -> ss_sold_time_sk
|
65:NESTED LOOP JOIN [CROSS JOIN]
|
|--23:AGGREGATE [FINALIZE]
| | output: count(*)
| |
| 22:HASH JOIN [INNER JOIN]
| | hash predicates: ss_store_sk = s_store_sk
| |
| |--19:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| | predicates: store.s_store_name = 'ese'
| |
| 21:HASH JOIN [INNER JOIN]
| | hash predicates: ss_hdemo_sk = household_demographics.hd_demo_sk
| |
| |--17:SCAN HDFS [tpcds.household_demographics]
| | partitions=1/1 files=1 size=148.10KB
| | predicates: ((household_demographics.hd_dep_count = 1 AND household_demographics.hd_vehicle_count <= 3) OR (household_demographics.hd_dep_count = 0 AND household_demographics.hd_vehicle_count <= 2) OR (household_demographics.hd_dep_count = 2 AND household_demographics.hd_vehicle_count <= 4))
| |
| 20:HASH JOIN [INNER JOIN]
| | hash predicates: ss_sold_time_sk = time_dim.t_time_sk
| | runtime filters: RF008 <- time_dim.t_time_sk
| |
| |--18:SCAN HDFS [tpcds.time_dim]
| | partitions=1/1 files=1 size=4.87MB
| | predicates: time_dim.t_hour = 9, time_dim.t_minute >= 30
| |
| 16:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF008 -> ss_sold_time_sk
|
64:NESTED LOOP JOIN [CROSS JOIN]
|
|--15:AGGREGATE [FINALIZE]
| | output: count(*)
| |
| 14:HASH JOIN [INNER JOIN]
| | hash predicates: ss_store_sk = s_store_sk
| |
| |--11:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| | predicates: store.s_store_name = 'ese'
| |
| 13:HASH JOIN [INNER JOIN]
| | hash predicates: ss_hdemo_sk = household_demographics.hd_demo_sk
| | runtime filters: RF004 <- household_demographics.hd_demo_sk
| |
| |--09:SCAN HDFS [tpcds.household_demographics]
| | partitions=1/1 files=1 size=148.10KB
| | predicates: ((household_demographics.hd_dep_count = 1 AND household_demographics.hd_vehicle_count <= 3) OR (household_demographics.hd_dep_count = 0 AND household_demographics.hd_vehicle_count <= 2) OR (household_demographics.hd_dep_count = 2 AND household_demographics.hd_vehicle_count <= 4))
| |
| 12:HASH JOIN [INNER JOIN]
| | hash predicates: ss_sold_time_sk = time_dim.t_time_sk
| | runtime filters: RF005 <- time_dim.t_time_sk
| |
| |--10:SCAN HDFS [tpcds.time_dim]
| | partitions=1/1 files=1 size=4.87MB
| | predicates: time_dim.t_hour = 9, time_dim.t_minute < 30
| |
| 08:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF005 -> ss_sold_time_sk, RF004 -> ss_hdemo_sk
|
07:AGGREGATE [FINALIZE]
| output: count(*)
|
06:HASH JOIN [INNER JOIN]
| hash predicates: ss_store_sk = s_store_sk
|
|--03:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
| predicates: store.s_store_name = 'ese'
|
05:HASH JOIN [INNER JOIN]
| hash predicates: ss_hdemo_sk = household_demographics.hd_demo_sk
| runtime filters: RF001 <- household_demographics.hd_demo_sk
|
|--01:SCAN HDFS [tpcds.household_demographics]
| partitions=1/1 files=1 size=148.10KB
| predicates: ((household_demographics.hd_dep_count = 1 AND household_demographics.hd_vehicle_count <= 3) OR (household_demographics.hd_dep_count = 0 AND household_demographics.hd_vehicle_count <= 2) OR (household_demographics.hd_dep_count = 2 AND household_demographics.hd_vehicle_count <= 4))
|
04:HASH JOIN [INNER JOIN]
| hash predicates: ss_sold_time_sk = time_dim.t_time_sk
| runtime filters: RF002 <- time_dim.t_time_sk
|
|--02:SCAN HDFS [tpcds.time_dim]
| partitions=1/1 files=1 size=4.87MB
| predicates: time_dim.t_hour = 8, time_dim.t_minute >= 30
|
00:SCAN HDFS [tpcds.store_sales]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF002 -> ss_sold_time_sk, RF001 -> ss_hdemo_sk
---- PARALLELPLANS
PLAN-ROOT SINK
|
70:NESTED LOOP JOIN [CROSS JOIN, BROADCAST]
| join table id: 00
|
|--JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| |
| 117:EXCHANGE [UNPARTITIONED]
| |
| 116:AGGREGATE [FINALIZE]
| | output: count:merge(*)
| |
| 115:EXCHANGE [UNPARTITIONED]
| |
| 63:AGGREGATE
| | output: count(*)
| |
| 62:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_store_sk = s_store_sk
| |
| |--JOIN BUILD
| | | join-table-id=01 plan-id=02 cohort-id=02
| | | build expressions: s_store_sk
| | |
| | 114:EXCHANGE [BROADCAST]
| | |
| | 59:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| | predicates: store.s_store_name = 'ese'
| |
| 61:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_hdemo_sk = household_demographics.hd_demo_sk
| |
| |--JOIN BUILD
| | | join-table-id=02 plan-id=03 cohort-id=02
| | | build expressions: household_demographics.hd_demo_sk
| | |
| | 113:EXCHANGE [BROADCAST]
| | |
| | 57:SCAN HDFS [tpcds.household_demographics]
| | partitions=1/1 files=1 size=148.10KB
| | predicates: ((household_demographics.hd_dep_count = 1 AND household_demographics.hd_vehicle_count <= 3) OR (household_demographics.hd_dep_count = 0 AND household_demographics.hd_vehicle_count <= 2) OR (household_demographics.hd_dep_count = 2 AND household_demographics.hd_vehicle_count <= 4))
| |
| 60:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_sold_time_sk = time_dim.t_time_sk
| | runtime filters: RF023 <- time_dim.t_time_sk
| |
| |--JOIN BUILD
| | | join-table-id=03 plan-id=04 cohort-id=02
| | | build expressions: time_dim.t_time_sk
| | |
| | 112:EXCHANGE [BROADCAST]
| | |
| | 58:SCAN HDFS [tpcds.time_dim]
| | partitions=1/1 files=1 size=4.87MB
| | predicates: time_dim.t_hour = 12, time_dim.t_minute < 30
| |
| 56:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF023 -> ss_sold_time_sk
|
69:NESTED LOOP JOIN [CROSS JOIN, BROADCAST]
| join table id: 04
|
|--JOIN BUILD
| | join-table-id=04 plan-id=05 cohort-id=01
| |
| 111:EXCHANGE [UNPARTITIONED]
| |
| 110:AGGREGATE [FINALIZE]
| | output: count:merge(*)
| |
| 109:EXCHANGE [UNPARTITIONED]
| |
| 55:AGGREGATE
| | output: count(*)
| |
| 54:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_store_sk = s_store_sk
| |
| |--JOIN BUILD
| | | join-table-id=05 plan-id=06 cohort-id=03
| | | build expressions: s_store_sk
| | |
| | 108:EXCHANGE [BROADCAST]
| | |
| | 51:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| | predicates: store.s_store_name = 'ese'
| |
| 53:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_hdemo_sk = household_demographics.hd_demo_sk
| |
| |--JOIN BUILD
| | | join-table-id=06 plan-id=07 cohort-id=03
| | | build expressions: household_demographics.hd_demo_sk
| | |
| | 107:EXCHANGE [BROADCAST]
| | |
| | 49:SCAN HDFS [tpcds.household_demographics]
| | partitions=1/1 files=1 size=148.10KB
| | predicates: ((household_demographics.hd_dep_count = 1 AND household_demographics.hd_vehicle_count <= 3) OR (household_demographics.hd_dep_count = 0 AND household_demographics.hd_vehicle_count <= 2) OR (household_demographics.hd_dep_count = 2 AND household_demographics.hd_vehicle_count <= 4))
| |
| 52:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_sold_time_sk = time_dim.t_time_sk
| | runtime filters: RF020 <- time_dim.t_time_sk
| |
| |--JOIN BUILD
| | | join-table-id=07 plan-id=08 cohort-id=03
| | | build expressions: time_dim.t_time_sk
| | |
| | 106:EXCHANGE [BROADCAST]
| | |
| | 50:SCAN HDFS [tpcds.time_dim]
| | partitions=1/1 files=1 size=4.87MB
| | predicates: time_dim.t_hour = 11, time_dim.t_minute >= 30
| |
| 48:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF020 -> ss_sold_time_sk
|
68:NESTED LOOP JOIN [CROSS JOIN, BROADCAST]
| join table id: 08
|
|--JOIN BUILD
| | join-table-id=08 plan-id=09 cohort-id=01
| |
| 105:EXCHANGE [UNPARTITIONED]
| |
| 104:AGGREGATE [FINALIZE]
| | output: count:merge(*)
| |
| 103:EXCHANGE [UNPARTITIONED]
| |
| 47:AGGREGATE
| | output: count(*)
| |
| 46:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_store_sk = s_store_sk
| |
| |--JOIN BUILD
| | | join-table-id=09 plan-id=10 cohort-id=04
| | | build expressions: s_store_sk
| | |
| | 102:EXCHANGE [BROADCAST]
| | |
| | 43:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| | predicates: store.s_store_name = 'ese'
| |
| 45:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_hdemo_sk = household_demographics.hd_demo_sk
| |
| |--JOIN BUILD
| | | join-table-id=10 plan-id=11 cohort-id=04
| | | build expressions: household_demographics.hd_demo_sk
| | |
| | 101:EXCHANGE [BROADCAST]
| | |
| | 41:SCAN HDFS [tpcds.household_demographics]
| | partitions=1/1 files=1 size=148.10KB
| | predicates: ((household_demographics.hd_dep_count = 1 AND household_demographics.hd_vehicle_count <= 3) OR (household_demographics.hd_dep_count = 0 AND household_demographics.hd_vehicle_count <= 2) OR (household_demographics.hd_dep_count = 2 AND household_demographics.hd_vehicle_count <= 4))
| |
| 44:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_sold_time_sk = time_dim.t_time_sk
| | runtime filters: RF017 <- time_dim.t_time_sk
| |
| |--JOIN BUILD
| | | join-table-id=11 plan-id=12 cohort-id=04
| | | build expressions: time_dim.t_time_sk
| | |
| | 100:EXCHANGE [BROADCAST]
| | |
| | 42:SCAN HDFS [tpcds.time_dim]
| | partitions=1/1 files=1 size=4.87MB
| | predicates: time_dim.t_hour = 11, time_dim.t_minute < 30
| |
| 40:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF017 -> ss_sold_time_sk
|
67:NESTED LOOP JOIN [CROSS JOIN, BROADCAST]
| join table id: 12
|
|--JOIN BUILD
| | join-table-id=12 plan-id=13 cohort-id=01
| |
| 99:EXCHANGE [UNPARTITIONED]
| |
| 98:AGGREGATE [FINALIZE]
| | output: count:merge(*)
| |
| 97:EXCHANGE [UNPARTITIONED]
| |
| 39:AGGREGATE
| | output: count(*)
| |
| 38:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_store_sk = s_store_sk
| |
| |--JOIN BUILD
| | | join-table-id=13 plan-id=14 cohort-id=05
| | | build expressions: s_store_sk
| | |
| | 96:EXCHANGE [BROADCAST]
| | |
| | 35:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| | predicates: store.s_store_name = 'ese'
| |
| 37:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_hdemo_sk = household_demographics.hd_demo_sk
| |
| |--JOIN BUILD
| | | join-table-id=14 plan-id=15 cohort-id=05
| | | build expressions: household_demographics.hd_demo_sk
| | |
| | 95:EXCHANGE [BROADCAST]
| | |
| | 33:SCAN HDFS [tpcds.household_demographics]
| | partitions=1/1 files=1 size=148.10KB
| | predicates: ((household_demographics.hd_dep_count = 1 AND household_demographics.hd_vehicle_count <= 3) OR (household_demographics.hd_dep_count = 0 AND household_demographics.hd_vehicle_count <= 2) OR (household_demographics.hd_dep_count = 2 AND household_demographics.hd_vehicle_count <= 4))
| |
| 36:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_sold_time_sk = time_dim.t_time_sk
| | runtime filters: RF014 <- time_dim.t_time_sk
| |
| |--JOIN BUILD
| | | join-table-id=15 plan-id=16 cohort-id=05
| | | build expressions: time_dim.t_time_sk
| | |
| | 94:EXCHANGE [BROADCAST]
| | |
| | 34:SCAN HDFS [tpcds.time_dim]
| | partitions=1/1 files=1 size=4.87MB
| | predicates: time_dim.t_hour = 10, time_dim.t_minute >= 30
| |
| 32:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF014 -> ss_sold_time_sk
|
66:NESTED LOOP JOIN [CROSS JOIN, BROADCAST]
| join table id: 16
|
|--JOIN BUILD
| | join-table-id=16 plan-id=17 cohort-id=01
| |
| 93:EXCHANGE [UNPARTITIONED]
| |
| 92:AGGREGATE [FINALIZE]
| | output: count:merge(*)
| |
| 91:EXCHANGE [UNPARTITIONED]
| |
| 31:AGGREGATE
| | output: count(*)
| |
| 30:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_store_sk = s_store_sk
| |
| |--JOIN BUILD
| | | join-table-id=17 plan-id=18 cohort-id=06
| | | build expressions: s_store_sk
| | |
| | 90:EXCHANGE [BROADCAST]
| | |
| | 27:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| | predicates: store.s_store_name = 'ese'
| |
| 29:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_hdemo_sk = household_demographics.hd_demo_sk
| |
| |--JOIN BUILD
| | | join-table-id=18 plan-id=19 cohort-id=06
| | | build expressions: household_demographics.hd_demo_sk
| | |
| | 89:EXCHANGE [BROADCAST]
| | |
| | 25:SCAN HDFS [tpcds.household_demographics]
| | partitions=1/1 files=1 size=148.10KB
| | predicates: ((household_demographics.hd_dep_count = 1 AND household_demographics.hd_vehicle_count <= 3) OR (household_demographics.hd_dep_count = 0 AND household_demographics.hd_vehicle_count <= 2) OR (household_demographics.hd_dep_count = 2 AND household_demographics.hd_vehicle_count <= 4))
| |
| 28:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_sold_time_sk = time_dim.t_time_sk
| | runtime filters: RF011 <- time_dim.t_time_sk
| |
| |--JOIN BUILD
| | | join-table-id=19 plan-id=20 cohort-id=06
| | | build expressions: time_dim.t_time_sk
| | |
| | 88:EXCHANGE [BROADCAST]
| | |
| | 26:SCAN HDFS [tpcds.time_dim]
| | partitions=1/1 files=1 size=4.87MB
| | predicates: time_dim.t_hour = 10, time_dim.t_minute < 30
| |
| 24:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF011 -> ss_sold_time_sk
|
65:NESTED LOOP JOIN [CROSS JOIN, BROADCAST]
| join table id: 20
|
|--JOIN BUILD
| | join-table-id=20 plan-id=21 cohort-id=01
| |
| 87:EXCHANGE [UNPARTITIONED]
| |
| 86:AGGREGATE [FINALIZE]
| | output: count:merge(*)
| |
| 85:EXCHANGE [UNPARTITIONED]
| |
| 23:AGGREGATE
| | output: count(*)
| |
| 22:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_store_sk = s_store_sk
| |
| |--JOIN BUILD
| | | join-table-id=21 plan-id=22 cohort-id=07
| | | build expressions: s_store_sk
| | |
| | 84:EXCHANGE [BROADCAST]
| | |
| | 19:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| | predicates: store.s_store_name = 'ese'
| |
| 21:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_hdemo_sk = household_demographics.hd_demo_sk
| |
| |--JOIN BUILD
| | | join-table-id=22 plan-id=23 cohort-id=07
| | | build expressions: household_demographics.hd_demo_sk
| | |
| | 83:EXCHANGE [BROADCAST]
| | |
| | 17:SCAN HDFS [tpcds.household_demographics]
| | partitions=1/1 files=1 size=148.10KB
| | predicates: ((household_demographics.hd_dep_count = 1 AND household_demographics.hd_vehicle_count <= 3) OR (household_demographics.hd_dep_count = 0 AND household_demographics.hd_vehicle_count <= 2) OR (household_demographics.hd_dep_count = 2 AND household_demographics.hd_vehicle_count <= 4))
| |
| 20:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_sold_time_sk = time_dim.t_time_sk
| | runtime filters: RF008 <- time_dim.t_time_sk
| |
| |--JOIN BUILD
| | | join-table-id=23 plan-id=24 cohort-id=07
| | | build expressions: time_dim.t_time_sk
| | |
| | 82:EXCHANGE [BROADCAST]
| | |
| | 18:SCAN HDFS [tpcds.time_dim]
| | partitions=1/1 files=1 size=4.87MB
| | predicates: time_dim.t_hour = 9, time_dim.t_minute >= 30
| |
| 16:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF008 -> ss_sold_time_sk
|
64:NESTED LOOP JOIN [CROSS JOIN, BROADCAST]
| join table id: 24
|
|--JOIN BUILD
| | join-table-id=24 plan-id=25 cohort-id=01
| |
| 81:EXCHANGE [UNPARTITIONED]
| |
| 80:AGGREGATE [FINALIZE]
| | output: count:merge(*)
| |
| 79:EXCHANGE [UNPARTITIONED]
| |
| 15:AGGREGATE
| | output: count(*)
| |
| 14:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_store_sk = s_store_sk
| |
| |--JOIN BUILD
| | | join-table-id=25 plan-id=26 cohort-id=08
| | | build expressions: s_store_sk
| | |
| | 78:EXCHANGE [BROADCAST]
| | |
| | 11:SCAN HDFS [tpcds.store]
| | partitions=1/1 files=1 size=3.08KB
| | predicates: store.s_store_name = 'ese'
| |
| 13:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_hdemo_sk = household_demographics.hd_demo_sk
| | runtime filters: RF004 <- household_demographics.hd_demo_sk
| |
| |--JOIN BUILD
| | | join-table-id=26 plan-id=27 cohort-id=08
| | | build expressions: household_demographics.hd_demo_sk
| | |
| | 77:EXCHANGE [BROADCAST]
| | |
| | 09:SCAN HDFS [tpcds.household_demographics]
| | partitions=1/1 files=1 size=148.10KB
| | predicates: ((household_demographics.hd_dep_count = 1 AND household_demographics.hd_vehicle_count <= 3) OR (household_demographics.hd_dep_count = 0 AND household_demographics.hd_vehicle_count <= 2) OR (household_demographics.hd_dep_count = 2 AND household_demographics.hd_vehicle_count <= 4))
| |
| 12:HASH JOIN [INNER JOIN, BROADCAST]
| | hash predicates: ss_sold_time_sk = time_dim.t_time_sk
| | runtime filters: RF005 <- time_dim.t_time_sk
| |
| |--JOIN BUILD
| | | join-table-id=27 plan-id=28 cohort-id=08
| | | build expressions: time_dim.t_time_sk
| | |
| | 76:EXCHANGE [BROADCAST]
| | |
| | 10:SCAN HDFS [tpcds.time_dim]
| | partitions=1/1 files=1 size=4.87MB
| | predicates: time_dim.t_hour = 9, time_dim.t_minute < 30
| |
| 08:SCAN HDFS [tpcds.store_sales]
| partitions=120/120 files=120 size=21.31MB
| runtime filters: RF005 -> ss_sold_time_sk, RF004 -> ss_hdemo_sk
|
75:AGGREGATE [FINALIZE]
| output: count:merge(*)
|
74:EXCHANGE [UNPARTITIONED]
|
07:AGGREGATE
| output: count(*)
|
06:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_store_sk = s_store_sk
|
|--JOIN BUILD
| | join-table-id=28 plan-id=29 cohort-id=01
| | build expressions: s_store_sk
| |
| 73:EXCHANGE [BROADCAST]
| |
| 03:SCAN HDFS [tpcds.store]
| partitions=1/1 files=1 size=3.08KB
| predicates: store.s_store_name = 'ese'
|
05:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_hdemo_sk = household_demographics.hd_demo_sk
| runtime filters: RF001 <- household_demographics.hd_demo_sk
|
|--JOIN BUILD
| | join-table-id=29 plan-id=30 cohort-id=01
| | build expressions: household_demographics.hd_demo_sk
| |
| 72:EXCHANGE [BROADCAST]
| |
| 01:SCAN HDFS [tpcds.household_demographics]
| partitions=1/1 files=1 size=148.10KB
| predicates: ((household_demographics.hd_dep_count = 1 AND household_demographics.hd_vehicle_count <= 3) OR (household_demographics.hd_dep_count = 0 AND household_demographics.hd_vehicle_count <= 2) OR (household_demographics.hd_dep_count = 2 AND household_demographics.hd_vehicle_count <= 4))
|
04:HASH JOIN [INNER JOIN, BROADCAST]
| hash predicates: ss_sold_time_sk = time_dim.t_time_sk
| runtime filters: RF002 <- time_dim.t_time_sk
|
|--JOIN BUILD
| | join-table-id=30 plan-id=31 cohort-id=01
| | build expressions: time_dim.t_time_sk
| |
| 71:EXCHANGE [BROADCAST]
| |
| 02:SCAN HDFS [tpcds.time_dim]
| partitions=1/1 files=1 size=4.87MB
| predicates: time_dim.t_hour = 8, time_dim.t_minute >= 30
|
00:SCAN HDFS [tpcds.store_sales]
partitions=120/120 files=120 size=21.31MB
runtime filters: RF002 -> ss_sold_time_sk, RF001 -> ss_hdemo_sk
====