commit 1be9a0b6bf56a5b2fa2c0dd60bd9d1150ac3395f Author: Pengcheng Xiong Date: Thu Jun 1 12:45:44 2017 -0700 pa diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveFilterAggregateTransposeRule.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveFilterAggregateTransposeRule.java index 0e5c7313b6..89293a7b29 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveFilterAggregateTransposeRule.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveFilterAggregateTransposeRule.java @@ -20,16 +20,16 @@ import org.apache.calcite.plan.RelOptRuleCall; import org.apache.calcite.rel.core.Aggregate; import org.apache.calcite.rel.core.Filter; -import org.apache.calcite.rel.core.RelFactories.FilterFactory; import org.apache.calcite.rel.rules.FilterAggregateTransposeRule; import org.apache.calcite.rex.RexNode; +import org.apache.calcite.tools.RelBuilderFactory; import org.apache.hadoop.hive.ql.optimizer.calcite.HiveCalciteUtil; public class HiveFilterAggregateTransposeRule extends FilterAggregateTransposeRule { public HiveFilterAggregateTransposeRule(Class filterClass, - FilterFactory filterFactory, Class aggregateClass) { - super(filterClass, filterFactory, aggregateClass); + RelBuilderFactory builderFactory, Class aggregateClass) { + super(filterClass, builderFactory, aggregateClass); } @Override diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java index 7f583ed075..348331e052 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java @@ -1670,7 +1670,8 @@ private RelNode applyPreJoinOrderingTransforms(RelNode basePlan, RelMetadataProv rules.add(HiveFilterSortTransposeRule.INSTANCE); rules.add(HiveFilterJoinRule.JOIN); rules.add(HiveFilterJoinRule.FILTER_ON_JOIN); - rules.add(new HiveFilterAggregateTransposeRule(Filter.class, HiveRelFactories.HIVE_FILTER_FACTORY, Aggregate.class)); + rules.add(new HiveFilterAggregateTransposeRule(Filter.class, HiveRelFactories.HIVE_BUILDER, + Aggregate.class)); rules.add(new FilterMergeRule(HiveRelFactories.HIVE_BUILDER)); if (conf.getBoolVar(HiveConf.ConfVars.HIVE_OPTIMIZE_REDUCE_WITH_STATS)) { rules.add(HiveReduceExpressionsWithStatsRule.INSTANCE); diff --git a/ql/src/test/queries/clientpositive/filter_aggr.q b/ql/src/test/queries/clientpositive/filter_aggr.q new file mode 100644 index 0000000000..44e088b00d --- /dev/null +++ b/ql/src/test/queries/clientpositive/filter_aggr.q @@ -0,0 +1,18 @@ +set hive.mapred.mode=nonstrict; + +explain extended +select key, c, m from +( +select key, c, 1 as m from (select key, count(key) as c from src group by key)s1 +union all +select key, c, 2 as m from (select key, count(key) as c from src group by key)s2 +)sub +where m = 1; + +select key, c, m from +( +select key, c, 1 as m from (select key, count(key) as c from src group by key)s1 +union all +select key, c, 2 as m from (select key, count(key) as c from src group by key)s2 +)sub +where m = 1; diff --git a/ql/src/test/queries/clientpositive/perf/query4.q b/ql/src/test/queries/clientpositive/perf/query4.q new file mode 100644 index 0000000000..631a464028 --- /dev/null +++ b/ql/src/test/queries/clientpositive/perf/query4.q @@ -0,0 +1,111 @@ +set hive.mapred.mode=nonstrict; +-- start query 1 in stream 0 using template query4.tpl and seed 1819994127 +explain +with year_total as ( + select c_customer_id customer_id + ,c_first_name customer_first_name + ,c_last_name customer_last_name + ,c_preferred_cust_flag customer_preferred_cust_flag + ,c_birth_country customer_birth_country + ,c_login customer_login + ,c_email_address customer_email_address + ,d_year dyear + ,sum(((ss_ext_list_price-ss_ext_wholesale_cost-ss_ext_discount_amt)+ss_ext_sales_price)/2) year_total + ,'s' sale_type + from customer + ,store_sales + ,date_dim + where c_customer_sk = ss_customer_sk + and ss_sold_date_sk = d_date_sk + group by c_customer_id + ,c_first_name + ,c_last_name + ,c_preferred_cust_flag + ,c_birth_country + ,c_login + ,c_email_address + ,d_year + union all + select c_customer_id customer_id + ,c_first_name customer_first_name + ,c_last_name customer_last_name + ,c_preferred_cust_flag customer_preferred_cust_flag + ,c_birth_country customer_birth_country + ,c_login customer_login + ,c_email_address customer_email_address + ,d_year dyear + ,sum((((cs_ext_list_price-cs_ext_wholesale_cost-cs_ext_discount_amt)+cs_ext_sales_price)/2) ) year_total + ,'c' sale_type + from customer + ,catalog_sales + ,date_dim + where c_customer_sk = cs_bill_customer_sk + and cs_sold_date_sk = d_date_sk + group by c_customer_id + ,c_first_name + ,c_last_name + ,c_preferred_cust_flag + ,c_birth_country + ,c_login + ,c_email_address + ,d_year +union all + select c_customer_id customer_id + ,c_first_name customer_first_name + ,c_last_name customer_last_name + ,c_preferred_cust_flag customer_preferred_cust_flag + ,c_birth_country customer_birth_country + ,c_login customer_login + ,c_email_address customer_email_address + ,d_year dyear + ,sum((((ws_ext_list_price-ws_ext_wholesale_cost-ws_ext_discount_amt)+ws_ext_sales_price)/2) ) year_total + ,'w' sale_type + from customer + ,web_sales + ,date_dim + where c_customer_sk = ws_bill_customer_sk + and ws_sold_date_sk = d_date_sk + group by c_customer_id + ,c_first_name + ,c_last_name + ,c_preferred_cust_flag + ,c_birth_country + ,c_login + ,c_email_address + ,d_year + ) + select t_s_secyear.customer_preferred_cust_flag + from year_total t_s_firstyear + ,year_total t_s_secyear + ,year_total t_c_firstyear + ,year_total t_c_secyear + ,year_total t_w_firstyear + ,year_total t_w_secyear + where t_s_secyear.customer_id = t_s_firstyear.customer_id + and t_s_firstyear.customer_id = t_c_secyear.customer_id + and t_s_firstyear.customer_id = t_c_firstyear.customer_id + and t_s_firstyear.customer_id = t_w_firstyear.customer_id + and t_s_firstyear.customer_id = t_w_secyear.customer_id + and t_s_firstyear.sale_type = 's' + and t_c_firstyear.sale_type = 'c' + and t_w_firstyear.sale_type = 'w' + and t_s_secyear.sale_type = 's' + and t_c_secyear.sale_type = 'c' + and t_w_secyear.sale_type = 'w' + and t_s_firstyear.dyear = 2001 + and t_s_secyear.dyear = 2001+1 + and t_c_firstyear.dyear = 2001 + and t_c_secyear.dyear = 2001+1 + and t_w_firstyear.dyear = 2001 + and t_w_secyear.dyear = 2001+1 + and t_s_firstyear.year_total > 0 + and t_c_firstyear.year_total > 0 + and t_w_firstyear.year_total > 0 + and case when t_c_firstyear.year_total > 0 then t_c_secyear.year_total / t_c_firstyear.year_total else null end + > case when t_s_firstyear.year_total > 0 then t_s_secyear.year_total / t_s_firstyear.year_total else null end + and case when t_c_firstyear.year_total > 0 then t_c_secyear.year_total / t_c_firstyear.year_total else null end + > case when t_w_firstyear.year_total > 0 then t_w_secyear.year_total / t_w_firstyear.year_total else null end + order by t_s_secyear.customer_preferred_cust_flag +limit 100; + +-- end query 1 in stream 0 using template query4.tpl diff --git a/ql/src/test/queries/clientpositive/perf/query74.q b/ql/src/test/queries/clientpositive/perf/query74.q new file mode 100644 index 0000000000..b25db9c0e0 --- /dev/null +++ b/ql/src/test/queries/clientpositive/perf/query74.q @@ -0,0 +1,63 @@ +set hive.mapred.mode=nonstrict; +-- start query 1 in stream 0 using template query74.tpl and seed 1556717815 +explain +with year_total as ( + select c_customer_id customer_id + ,c_first_name customer_first_name + ,c_last_name customer_last_name + ,d_year as year + ,max(ss_net_paid) year_total + ,'s' sale_type + from customer + ,store_sales + ,date_dim + where c_customer_sk = ss_customer_sk + and ss_sold_date_sk = d_date_sk + and d_year in (2001,2001+1) + group by c_customer_id + ,c_first_name + ,c_last_name + ,d_year + union all + select c_customer_id customer_id + ,c_first_name customer_first_name + ,c_last_name customer_last_name + ,d_year as year + ,max(ws_net_paid) year_total + ,'w' sale_type + from customer + ,web_sales + ,date_dim + where c_customer_sk = ws_bill_customer_sk + and ws_sold_date_sk = d_date_sk + and d_year in (2001,2001+1) + group by c_customer_id + ,c_first_name + ,c_last_name + ,d_year + ) + select + t_s_secyear.customer_id, t_s_secyear.customer_first_name, t_s_secyear.customer_last_name + from year_total t_s_firstyear + ,year_total t_s_secyear + ,year_total t_w_firstyear + ,year_total t_w_secyear + where t_s_secyear.customer_id = t_s_firstyear.customer_id + and t_s_firstyear.customer_id = t_w_secyear.customer_id + and t_s_firstyear.customer_id = t_w_firstyear.customer_id + and t_s_firstyear.sale_type = 's' + and t_w_firstyear.sale_type = 'w' + and t_s_secyear.sale_type = 's' + and t_w_secyear.sale_type = 'w' + and t_s_firstyear.year = 2001 + and t_s_secyear.year = 2001+1 + and t_w_firstyear.year = 2001 + and t_w_secyear.year = 2001+1 + and t_s_firstyear.year_total > 0 + and t_w_firstyear.year_total > 0 + and case when t_w_firstyear.year_total > 0 then t_w_secyear.year_total / t_w_firstyear.year_total else null end + > case when t_s_firstyear.year_total > 0 then t_s_secyear.year_total / t_s_firstyear.year_total else null end + order by 2,1,3 +limit 100; + +-- end query 1 in stream 0 using template query74.tpl diff --git a/ql/src/test/results/clientpositive/filter_aggr.q.out b/ql/src/test/results/clientpositive/filter_aggr.q.out new file mode 100644 index 0000000000..db7dcaed3f --- /dev/null +++ b/ql/src/test/results/clientpositive/filter_aggr.q.out @@ -0,0 +1,680 @@ +PREHOOK: query: explain extended +select key, c, m from +( +select key, c, 1 as m from (select key, count(key) as c from src group by key)s1 +union all +select key, c, 2 as m from (select key, count(key) as c from src group by key)s2 +)sub +where m = 1 +PREHOOK: type: QUERY +POSTHOOK: query: explain extended +select key, c, m from +( +select key, c, 1 as m from (select key, count(key) as c from src group by key)s1 +union all +select key, c, 2 as m from (select key, count(key) as c from src group by key)s2 +)sub +where m = 1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1, Stage-3 + Stage-3 is a root stage + Stage-0 depends on stages: Stage-2 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + GatherStats: false + Select Operator + expressions: key (type: string) + outputColumnNames: key + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count(key) + keys: key (type: string) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + null sort order: a + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + tag: -1 + value expressions: _col1 (type: bigint) + auto parallelism: false + Path -> Alias: +#### A masked pattern was here #### + Path -> Partition: +#### A masked pattern was here #### + Partition + base file name: src + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + COLUMN_STATS_ACCURATE {"BASIC_STATS":"true","COLUMN_STATS":{"key":"true","value":"true"}} + bucket_count -1 + column.name.delimiter , + columns key,value + columns.comments 'default','default' + columns.types string:string +#### A masked pattern was here #### + name default.src + numFiles 1 + numRows 500 + rawDataSize 5312 + serialization.ddl struct src { string key, string value} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + totalSize 5812 +#### A masked pattern was here #### + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + COLUMN_STATS_ACCURATE {"BASIC_STATS":"true","COLUMN_STATS":{"key":"true","value":"true"}} + bucket_count -1 + column.name.delimiter , + columns key,value + columns.comments 'default','default' + columns.types string:string +#### A masked pattern was here #### + name default.src + numFiles 1 + numRows 500 + rawDataSize 5312 + serialization.ddl struct src { string key, string value} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + totalSize 5812 +#### A masked pattern was here #### + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.src + name: default.src + Truncated Path -> Alias: + /src [null-subquery1:$hdt$_0-subquery1:src] + Needs Tagging: false + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0) + keys: KEY._col0 (type: string) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: bigint), 1 (type: int) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + GlobalTableId: 0 +#### A masked pattern was here #### + NumFilesPerFileSink: 1 + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + properties: + column.name.delimiter , + columns _col0,_col1,_col2 + columns.types string,bigint,int + escape.delim \ + serialization.lib org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe + serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe + TotalFiles: 1 + GatherStats: false + MultiFileSpray: false + + Stage: Stage-2 + Map Reduce + Map Operator Tree: + TableScan + GatherStats: false + Union + Statistics: Num rows: 251 Data size: 2666 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + GlobalTableId: 0 +#### A masked pattern was here #### + NumFilesPerFileSink: 1 + Statistics: Num rows: 251 Data size: 2666 Basic stats: COMPLETE Column stats: NONE +#### A masked pattern was here #### + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + properties: + columns _col0,_col1,_col2 + columns.types string:bigint:int + escape.delim \ + hive.serialization.extend.additional.nesting.levels true + serialization.escape.crlf true + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + TotalFiles: 1 + GatherStats: false + MultiFileSpray: false + TableScan + GatherStats: false + Union + Statistics: Num rows: 251 Data size: 2666 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + GlobalTableId: 0 +#### A masked pattern was here #### + NumFilesPerFileSink: 1 + Statistics: Num rows: 251 Data size: 2666 Basic stats: COMPLETE Column stats: NONE +#### A masked pattern was here #### + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + properties: + columns _col0,_col1,_col2 + columns.types string:bigint:int + escape.delim \ + hive.serialization.extend.additional.nesting.levels true + serialization.escape.crlf true + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + TotalFiles: 1 + GatherStats: false + MultiFileSpray: false + Path -> Alias: +#### A masked pattern was here #### + Path -> Partition: +#### A masked pattern was here #### + Partition + base file name: -mr-10004 + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + properties: + column.name.delimiter , + columns _col0,_col1,_col2 + columns.types string,bigint,int + escape.delim \ + serialization.lib org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe + serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe + + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + properties: + column.name.delimiter , + columns _col0,_col1,_col2 + columns.types string,bigint,int + escape.delim \ + serialization.lib org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe + serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe +#### A masked pattern was here #### + Partition + base file name: -mr-10005 + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + properties: + column.name.delimiter , + columns _col0,_col1,_col2 + columns.types string,bigint,int + escape.delim \ + serialization.lib org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe + serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe + + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + properties: + column.name.delimiter , + columns _col0,_col1,_col2 + columns.types string,bigint,int + escape.delim \ + serialization.lib org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe + serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe + Truncated Path -> Alias: +#### A masked pattern was here #### + + Stage: Stage-3 + Map Reduce + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + GatherStats: false + Filter Operator + isSamplingPred: false + predicate: false (type: boolean) + Statistics: Num rows: 1 Data size: 10 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count(key) + keys: key (type: string) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 10 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + null sort order: a + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 1 Data size: 10 Basic stats: COMPLETE Column stats: NONE + tag: -1 + value expressions: _col1 (type: bigint) + auto parallelism: false + Path -> Alias: + nullscan://null/default.src/part_ [null-subquery2:$hdt$_0-subquery2:src] + Path -> Partition: + nullscan://null/default.src/part_ + Partition + input format: org.apache.hadoop.hive.ql.io.OneNullRowInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + COLUMN_STATS_ACCURATE {"BASIC_STATS":"true","COLUMN_STATS":{"key":"true","value":"true"}} + bucket_count -1 + column.name.delimiter , + columns key,value + columns.comments 'default','default' + columns.types string:string +#### A masked pattern was here #### + name default.src + numFiles 1 + numRows 500 + rawDataSize 5312 + serialization.ddl struct src { string key, string value} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.NullStructSerDe + totalSize 5812 +#### A masked pattern was here #### + serde: org.apache.hadoop.hive.serde2.NullStructSerDe + + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + COLUMN_STATS_ACCURATE {"BASIC_STATS":"true","COLUMN_STATS":{"key":"true","value":"true"}} + bucket_count -1 + column.name.delimiter , + columns key,value + columns.comments 'default','default' + columns.types string:string +#### A masked pattern was here #### + name default.src + numFiles 1 + numRows 500 + rawDataSize 5312 + serialization.ddl struct src { string key, string value} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + totalSize 5812 +#### A masked pattern was here #### + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.src + name: default.src + Truncated Path -> Alias: + nullscan://null/default.src/part_ [null-subquery2:$hdt$_0-subquery2:src] + Needs Tagging: false + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0) + keys: KEY._col0 (type: string) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 10 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: bigint), 2 (type: int) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 1 Data size: 10 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + GlobalTableId: 0 +#### A masked pattern was here #### + NumFilesPerFileSink: 1 + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + properties: + column.name.delimiter , + columns _col0,_col1,_col2 + columns.types string,bigint,int + escape.delim \ + serialization.lib org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe + serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe + TotalFiles: 1 + GatherStats: false + MultiFileSpray: false + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select key, c, m from +( +select key, c, 1 as m from (select key, count(key) as c from src group by key)s1 +union all +select key, c, 2 as m from (select key, count(key) as c from src group by key)s2 +)sub +where m = 1 +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: select key, c, m from +( +select key, c, 1 as m from (select key, count(key) as c from src group by key)s1 +union all +select key, c, 2 as m from (select key, count(key) as c from src group by key)s2 +)sub +where m = 1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +0 3 1 +10 1 1 +100 2 1 +103 2 1 +104 2 1 +105 1 1 +11 1 1 +111 1 1 +113 2 1 +114 1 1 +116 1 1 +118 2 1 +119 3 1 +12 2 1 +120 2 1 +125 2 1 +126 1 1 +128 3 1 +129 2 1 +131 1 1 +133 1 1 +134 2 1 +136 1 1 +137 2 1 +138 4 1 +143 1 1 +145 1 1 +146 2 1 +149 2 1 +15 2 1 +150 1 1 +152 2 1 +153 1 1 +155 1 1 +156 1 1 +157 1 1 +158 1 1 +160 1 1 +162 1 1 +163 1 1 +164 2 1 +165 2 1 +166 1 1 +167 3 1 +168 1 1 +169 4 1 +17 1 1 +170 1 1 +172 2 1 +174 2 1 +175 2 1 +176 2 1 +177 1 1 +178 1 1 +179 2 1 +18 2 1 +180 1 1 +181 1 1 +183 1 1 +186 1 1 +187 3 1 +189 1 1 +19 1 1 +190 1 1 +191 2 1 +192 1 1 +193 3 1 +194 1 1 +195 2 1 +196 1 1 +197 2 1 +199 3 1 +2 1 1 +20 1 1 +200 2 1 +201 1 1 +202 1 1 +203 2 1 +205 2 1 +207 2 1 +208 3 1 +209 2 1 +213 2 1 +214 1 1 +216 2 1 +217 2 1 +218 1 1 +219 2 1 +221 2 1 +222 1 1 +223 2 1 +224 2 1 +226 1 1 +228 1 1 +229 2 1 +230 5 1 +233 2 1 +235 1 1 +237 2 1 +238 2 1 +239 2 1 +24 2 1 +241 1 1 +242 2 1 +244 1 1 +247 1 1 +248 1 1 +249 1 1 +252 1 1 +255 2 1 +256 2 1 +257 1 1 +258 1 1 +26 2 1 +260 1 1 +262 1 1 +263 1 1 +265 2 1 +266 1 1 +27 1 1 +272 2 1 +273 3 1 +274 1 1 +275 1 1 +277 4 1 +278 2 1 +28 1 1 +280 2 1 +281 2 1 +282 2 1 +283 1 1 +284 1 1 +285 1 1 +286 1 1 +287 1 1 +288 2 1 +289 1 1 +291 1 1 +292 1 1 +296 1 1 +298 3 1 +30 1 1 +302 1 1 +305 1 1 +306 1 1 +307 2 1 +308 1 1 +309 2 1 +310 1 1 +311 3 1 +315 1 1 +316 3 1 +317 2 1 +318 3 1 +321 2 1 +322 2 1 +323 1 1 +325 2 1 +327 3 1 +33 1 1 +331 2 1 +332 1 1 +333 2 1 +335 1 1 +336 1 1 +338 1 1 +339 1 1 +34 1 1 +341 1 1 +342 2 1 +344 2 1 +345 1 1 +348 5 1 +35 3 1 +351 1 1 +353 2 1 +356 1 1 +360 1 1 +362 1 1 +364 1 1 +365 1 1 +366 1 1 +367 2 1 +368 1 1 +369 3 1 +37 2 1 +373 1 1 +374 1 1 +375 1 1 +377 1 1 +378 1 1 +379 1 1 +382 2 1 +384 3 1 +386 1 1 +389 1 1 +392 1 1 +393 1 1 +394 1 1 +395 2 1 +396 3 1 +397 2 1 +399 2 1 +4 1 1 +400 1 1 +401 5 1 +402 1 1 +403 3 1 +404 2 1 +406 4 1 +407 1 1 +409 3 1 +41 1 1 +411 1 1 +413 2 1 +414 2 1 +417 3 1 +418 1 1 +419 1 1 +42 2 1 +421 1 1 +424 2 1 +427 1 1 +429 2 1 +43 1 1 +430 3 1 +431 3 1 +432 1 1 +435 1 1 +436 1 1 +437 1 1 +438 3 1 +439 2 1 +44 1 1 +443 1 1 +444 1 1 +446 1 1 +448 1 1 +449 1 1 +452 1 1 +453 1 1 +454 3 1 +455 1 1 +457 1 1 +458 2 1 +459 2 1 +460 1 1 +462 2 1 +463 2 1 +466 3 1 +467 1 1 +468 4 1 +469 5 1 +47 1 1 +470 1 1 +472 1 1 +475 1 1 +477 1 1 +478 2 1 +479 1 1 +480 3 1 +481 1 1 +482 1 1 +483 1 1 +484 1 1 +485 1 1 +487 1 1 +489 4 1 +490 1 1 +491 1 1 +492 2 1 +493 1 1 +494 1 1 +495 1 1 +496 1 1 +497 1 1 +498 3 1 +5 3 1 +51 2 1 +53 1 1 +54 1 1 +57 1 1 +58 2 1 +64 1 1 +65 1 1 +66 1 1 +67 2 1 +69 1 1 +70 3 1 +72 2 1 +74 1 1 +76 2 1 +77 1 1 +78 1 1 +8 1 1 +80 1 1 +82 1 1 +83 2 1 +84 2 1 +85 1 1 +86 1 1 +87 1 1 +9 1 1 +90 3 1 +92 1 1 +95 2 1 +96 1 1 +97 2 1 +98 2 1 diff --git a/ql/src/test/results/clientpositive/perf/query4.q.out b/ql/src/test/results/clientpositive/perf/query4.q.out new file mode 100644 index 0000000000..1b2048649a --- /dev/null +++ b/ql/src/test/results/clientpositive/perf/query4.q.out @@ -0,0 +1,1128 @@ +PREHOOK: query: explain +with year_total as ( + select c_customer_id customer_id + ,c_first_name customer_first_name + ,c_last_name customer_last_name + ,c_preferred_cust_flag customer_preferred_cust_flag + ,c_birth_country customer_birth_country + ,c_login customer_login + ,c_email_address customer_email_address + ,d_year dyear + ,sum(((ss_ext_list_price-ss_ext_wholesale_cost-ss_ext_discount_amt)+ss_ext_sales_price)/2) year_total + ,'s' sale_type + from customer + ,store_sales + ,date_dim + where c_customer_sk = ss_customer_sk + and ss_sold_date_sk = d_date_sk + group by c_customer_id + ,c_first_name + ,c_last_name + ,c_preferred_cust_flag + ,c_birth_country + ,c_login + ,c_email_address + ,d_year + union all + select c_customer_id customer_id + ,c_first_name customer_first_name + ,c_last_name customer_last_name + ,c_preferred_cust_flag customer_preferred_cust_flag + ,c_birth_country customer_birth_country + ,c_login customer_login + ,c_email_address customer_email_address + ,d_year dyear + ,sum((((cs_ext_list_price-cs_ext_wholesale_cost-cs_ext_discount_amt)+cs_ext_sales_price)/2) ) year_total + ,'c' sale_type + from customer + ,catalog_sales + ,date_dim + where c_customer_sk = cs_bill_customer_sk + and cs_sold_date_sk = d_date_sk + group by c_customer_id + ,c_first_name + ,c_last_name + ,c_preferred_cust_flag + ,c_birth_country + ,c_login + ,c_email_address + ,d_year +union all + select c_customer_id customer_id + ,c_first_name customer_first_name + ,c_last_name customer_last_name + ,c_preferred_cust_flag customer_preferred_cust_flag + ,c_birth_country customer_birth_country + ,c_login customer_login + ,c_email_address customer_email_address + ,d_year dyear + ,sum((((ws_ext_list_price-ws_ext_wholesale_cost-ws_ext_discount_amt)+ws_ext_sales_price)/2) ) year_total + ,'w' sale_type + from customer + ,web_sales + ,date_dim + where c_customer_sk = ws_bill_customer_sk + and ws_sold_date_sk = d_date_sk + group by c_customer_id + ,c_first_name + ,c_last_name + ,c_preferred_cust_flag + ,c_birth_country + ,c_login + ,c_email_address + ,d_year + ) + select t_s_secyear.customer_preferred_cust_flag + from year_total t_s_firstyear + ,year_total t_s_secyear + ,year_total t_c_firstyear + ,year_total t_c_secyear + ,year_total t_w_firstyear + ,year_total t_w_secyear + where t_s_secyear.customer_id = t_s_firstyear.customer_id + and t_s_firstyear.customer_id = t_c_secyear.customer_id + and t_s_firstyear.customer_id = t_c_firstyear.customer_id + and t_s_firstyear.customer_id = t_w_firstyear.customer_id + and t_s_firstyear.customer_id = t_w_secyear.customer_id + and t_s_firstyear.sale_type = 's' + and t_c_firstyear.sale_type = 'c' + and t_w_firstyear.sale_type = 'w' + and t_s_secyear.sale_type = 's' + and t_c_secyear.sale_type = 'c' + and t_w_secyear.sale_type = 'w' + and t_s_firstyear.dyear = 2001 + and t_s_secyear.dyear = 2001+1 + and t_c_firstyear.dyear = 2001 + and t_c_secyear.dyear = 2001+1 + and t_w_firstyear.dyear = 2001 + and t_w_secyear.dyear = 2001+1 + and t_s_firstyear.year_total > 0 + and t_c_firstyear.year_total > 0 + and t_w_firstyear.year_total > 0 + and case when t_c_firstyear.year_total > 0 then t_c_secyear.year_total / t_c_firstyear.year_total else null end + > case when t_s_firstyear.year_total > 0 then t_s_secyear.year_total / t_s_firstyear.year_total else null end + and case when t_c_firstyear.year_total > 0 then t_c_secyear.year_total / t_c_firstyear.year_total else null end + > case when t_w_firstyear.year_total > 0 then t_w_secyear.year_total / t_w_firstyear.year_total else null end + order by t_s_secyear.customer_preferred_cust_flag +limit 100 +PREHOOK: type: QUERY +POSTHOOK: query: explain +with year_total as ( + select c_customer_id customer_id + ,c_first_name customer_first_name + ,c_last_name customer_last_name + ,c_preferred_cust_flag customer_preferred_cust_flag + ,c_birth_country customer_birth_country + ,c_login customer_login + ,c_email_address customer_email_address + ,d_year dyear + ,sum(((ss_ext_list_price-ss_ext_wholesale_cost-ss_ext_discount_amt)+ss_ext_sales_price)/2) year_total + ,'s' sale_type + from customer + ,store_sales + ,date_dim + where c_customer_sk = ss_customer_sk + and ss_sold_date_sk = d_date_sk + group by c_customer_id + ,c_first_name + ,c_last_name + ,c_preferred_cust_flag + ,c_birth_country + ,c_login + ,c_email_address + ,d_year + union all + select c_customer_id customer_id + ,c_first_name customer_first_name + ,c_last_name customer_last_name + ,c_preferred_cust_flag customer_preferred_cust_flag + ,c_birth_country customer_birth_country + ,c_login customer_login + ,c_email_address customer_email_address + ,d_year dyear + ,sum((((cs_ext_list_price-cs_ext_wholesale_cost-cs_ext_discount_amt)+cs_ext_sales_price)/2) ) year_total + ,'c' sale_type + from customer + ,catalog_sales + ,date_dim + where c_customer_sk = cs_bill_customer_sk + and cs_sold_date_sk = d_date_sk + group by c_customer_id + ,c_first_name + ,c_last_name + ,c_preferred_cust_flag + ,c_birth_country + ,c_login + ,c_email_address + ,d_year +union all + select c_customer_id customer_id + ,c_first_name customer_first_name + ,c_last_name customer_last_name + ,c_preferred_cust_flag customer_preferred_cust_flag + ,c_birth_country customer_birth_country + ,c_login customer_login + ,c_email_address customer_email_address + ,d_year dyear + ,sum((((ws_ext_list_price-ws_ext_wholesale_cost-ws_ext_discount_amt)+ws_ext_sales_price)/2) ) year_total + ,'w' sale_type + from customer + ,web_sales + ,date_dim + where c_customer_sk = ws_bill_customer_sk + and ws_sold_date_sk = d_date_sk + group by c_customer_id + ,c_first_name + ,c_last_name + ,c_preferred_cust_flag + ,c_birth_country + ,c_login + ,c_email_address + ,d_year + ) + select t_s_secyear.customer_preferred_cust_flag + from year_total t_s_firstyear + ,year_total t_s_secyear + ,year_total t_c_firstyear + ,year_total t_c_secyear + ,year_total t_w_firstyear + ,year_total t_w_secyear + where t_s_secyear.customer_id = t_s_firstyear.customer_id + and t_s_firstyear.customer_id = t_c_secyear.customer_id + and t_s_firstyear.customer_id = t_c_firstyear.customer_id + and t_s_firstyear.customer_id = t_w_firstyear.customer_id + and t_s_firstyear.customer_id = t_w_secyear.customer_id + and t_s_firstyear.sale_type = 's' + and t_c_firstyear.sale_type = 'c' + and t_w_firstyear.sale_type = 'w' + and t_s_secyear.sale_type = 's' + and t_c_secyear.sale_type = 'c' + and t_w_secyear.sale_type = 'w' + and t_s_firstyear.dyear = 2001 + and t_s_secyear.dyear = 2001+1 + and t_c_firstyear.dyear = 2001 + and t_c_secyear.dyear = 2001+1 + and t_w_firstyear.dyear = 2001 + and t_w_secyear.dyear = 2001+1 + and t_s_firstyear.year_total > 0 + and t_c_firstyear.year_total > 0 + and t_w_firstyear.year_total > 0 + and case when t_c_firstyear.year_total > 0 then t_c_secyear.year_total / t_c_firstyear.year_total else null end + > case when t_s_firstyear.year_total > 0 then t_s_secyear.year_total / t_s_firstyear.year_total else null end + and case when t_c_firstyear.year_total > 0 then t_c_secyear.year_total / t_c_firstyear.year_total else null end + > case when t_w_firstyear.year_total > 0 then t_w_secyear.year_total / t_w_firstyear.year_total else null end + order by t_s_secyear.customer_preferred_cust_flag +limit 100 +POSTHOOK: type: QUERY +Plan optimized by CBO. + +Vertex dependency in root stage +Reducer 10 <- Reducer 9 (SIMPLE_EDGE), Union 11 (CONTAINS) +Reducer 12 <- Map 1 (SIMPLE_EDGE), Map 28 (SIMPLE_EDGE) +Reducer 13 <- Map 65 (SIMPLE_EDGE), Reducer 12 (SIMPLE_EDGE) +Reducer 14 <- Reducer 13 (SIMPLE_EDGE), Union 15 (CONTAINS) +Reducer 16 <- Map 1 (SIMPLE_EDGE), Map 28 (SIMPLE_EDGE) +Reducer 17 <- Map 65 (SIMPLE_EDGE), Reducer 16 (SIMPLE_EDGE) +Reducer 18 <- Reducer 17 (SIMPLE_EDGE), Union 19 (CONTAINS) +Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 28 (SIMPLE_EDGE) +Reducer 20 <- Map 1 (SIMPLE_EDGE), Map 28 (SIMPLE_EDGE) +Reducer 21 <- Map 65 (SIMPLE_EDGE), Reducer 20 (SIMPLE_EDGE) +Reducer 22 <- Reducer 21 (SIMPLE_EDGE), Union 23 (CONTAINS) +Reducer 24 <- Map 1 (SIMPLE_EDGE), Map 28 (SIMPLE_EDGE) +Reducer 25 <- Map 65 (SIMPLE_EDGE), Reducer 24 (SIMPLE_EDGE) +Reducer 26 <- Reducer 25 (SIMPLE_EDGE), Union 27 (CONTAINS) +Reducer 29 <- Map 28 (SIMPLE_EDGE), Map 66 (SIMPLE_EDGE) +Reducer 3 <- Map 65 (SIMPLE_EDGE), Reducer 2 (SIMPLE_EDGE) +Reducer 30 <- Map 65 (SIMPLE_EDGE), Reducer 29 (SIMPLE_EDGE) +Reducer 31 <- Reducer 30 (SIMPLE_EDGE), Union 5 (CONTAINS) +Reducer 32 <- Map 28 (SIMPLE_EDGE), Map 67 (SIMPLE_EDGE) +Reducer 33 <- Map 65 (SIMPLE_EDGE), Reducer 32 (SIMPLE_EDGE) +Reducer 34 <- Reducer 33 (SIMPLE_EDGE), Union 5 (CONTAINS) +Reducer 35 <- Map 28 (SIMPLE_EDGE), Map 66 (SIMPLE_EDGE) +Reducer 36 <- Map 65 (SIMPLE_EDGE), Reducer 35 (SIMPLE_EDGE) +Reducer 37 <- Reducer 36 (SIMPLE_EDGE), Union 11 (CONTAINS) +Reducer 38 <- Map 28 (SIMPLE_EDGE), Map 67 (SIMPLE_EDGE) +Reducer 39 <- Map 65 (SIMPLE_EDGE), Reducer 38 (SIMPLE_EDGE) +Reducer 4 <- Reducer 3 (SIMPLE_EDGE), Union 5 (CONTAINS) +Reducer 40 <- Reducer 39 (SIMPLE_EDGE), Union 11 (CONTAINS) +Reducer 41 <- Map 28 (SIMPLE_EDGE), Map 66 (SIMPLE_EDGE) +Reducer 42 <- Map 65 (SIMPLE_EDGE), Reducer 41 (SIMPLE_EDGE) +Reducer 43 <- Reducer 42 (SIMPLE_EDGE), Union 15 (CONTAINS) +Reducer 44 <- Map 28 (SIMPLE_EDGE), Map 67 (SIMPLE_EDGE) +Reducer 45 <- Map 65 (SIMPLE_EDGE), Reducer 44 (SIMPLE_EDGE) +Reducer 46 <- Reducer 45 (SIMPLE_EDGE), Union 15 (CONTAINS) +Reducer 47 <- Map 28 (SIMPLE_EDGE), Map 66 (SIMPLE_EDGE) +Reducer 48 <- Map 65 (SIMPLE_EDGE), Reducer 47 (SIMPLE_EDGE) +Reducer 49 <- Reducer 48 (SIMPLE_EDGE), Union 19 (CONTAINS) +Reducer 50 <- Map 28 (SIMPLE_EDGE), Map 67 (SIMPLE_EDGE) +Reducer 51 <- Map 65 (SIMPLE_EDGE), Reducer 50 (SIMPLE_EDGE) +Reducer 52 <- Reducer 51 (SIMPLE_EDGE), Union 19 (CONTAINS) +Reducer 53 <- Map 28 (SIMPLE_EDGE), Map 66 (SIMPLE_EDGE) +Reducer 54 <- Map 65 (SIMPLE_EDGE), Reducer 53 (SIMPLE_EDGE) +Reducer 55 <- Reducer 54 (SIMPLE_EDGE), Union 23 (CONTAINS) +Reducer 56 <- Map 28 (SIMPLE_EDGE), Map 67 (SIMPLE_EDGE) +Reducer 57 <- Map 65 (SIMPLE_EDGE), Reducer 56 (SIMPLE_EDGE) +Reducer 58 <- Reducer 57 (SIMPLE_EDGE), Union 23 (CONTAINS) +Reducer 59 <- Map 28 (SIMPLE_EDGE), Map 66 (SIMPLE_EDGE) +Reducer 6 <- Union 11 (SIMPLE_EDGE), Union 15 (SIMPLE_EDGE), Union 19 (SIMPLE_EDGE), Union 23 (SIMPLE_EDGE), Union 27 (SIMPLE_EDGE), Union 5 (SIMPLE_EDGE) +Reducer 60 <- Map 65 (SIMPLE_EDGE), Reducer 59 (SIMPLE_EDGE) +Reducer 61 <- Reducer 60 (SIMPLE_EDGE), Union 27 (CONTAINS) +Reducer 62 <- Map 28 (SIMPLE_EDGE), Map 67 (SIMPLE_EDGE) +Reducer 63 <- Map 65 (SIMPLE_EDGE), Reducer 62 (SIMPLE_EDGE) +Reducer 64 <- Reducer 63 (SIMPLE_EDGE), Union 27 (CONTAINS) +Reducer 7 <- Reducer 6 (SIMPLE_EDGE) +Reducer 8 <- Map 1 (SIMPLE_EDGE), Map 28 (SIMPLE_EDGE) +Reducer 9 <- Map 65 (SIMPLE_EDGE), Reducer 8 (SIMPLE_EDGE) + +Stage-0 + Fetch Operator + limit:100 + Stage-1 + Reducer 7 + File Output Operator [FS_412] + Limit [LIM_411] (rows=100 width=88) + Number of rows:100 + Select Operator [SEL_410] (rows=479156402 width=88) + Output:["_col0"] + <-Reducer 6 [SIMPLE_EDGE] + SHUFFLE [RS_409] + Select Operator [SEL_408] (rows=479156402 width=88) + Output:["_col0"] + Filter Operator [FIL_406] (rows=479156402 width=88) + predicate:(CASE WHEN ((_col1 > 0)) THEN (CASE WHEN ((_col3 > 0)) THEN (((_col9 / _col3) > (_col12 / _col1))) ELSE ((null > (_col12 / _col1))) END) ELSE (CASE WHEN ((_col3 > 0)) THEN (((_col9 / _col3) > null)) ELSE (null) END) END and CASE WHEN ((_col5 > 0)) THEN (CASE WHEN ((_col3 > 0)) THEN (((_col9 / _col3) > (_col7 / _col5))) ELSE ((null > (_col7 / _col5))) END) ELSE (CASE WHEN ((_col3 > 0)) THEN (((_col9 / _col3) > null)) ELSE (null) END) END) + Merge Join Operator [MERGEJOIN_866] (rows=1916625609 width=88) + Conds:Union 5._col0=Union 11._col0(Inner),Union 5._col0=Union 15._col0(Inner),Union 5._col0=Union 19._col0(Inner),Union 5._col0=Union 23._col0(Inner),Union 5._col0=Union 27._col0(Inner),Output:["_col1","_col3","_col5","_col7","_col9","_col11","_col12"] + <-Union 11 [SIMPLE_EDGE] + <-Reducer 10 [CONTAINS] + Reduce Output Operator [RS_400] + PartitionCols:_col0 + Select Operator [SEL_87] (rows=1 width=105) + Output:["_col0","_col1"] + Group By Operator [GBY_86] (rows=1 width=105) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6, KEY._col7 + <-Reducer 9 [SIMPLE_EDGE] + SHUFFLE [RS_85] + PartitionCols:_col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + Group By Operator [GBY_84] (rows=1 width=105) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"],aggregations:["sum(_col8)"],keys:_col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + Select Operator [SEL_82] (rows=1 width=105) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"] + Merge Join Operator [MERGEJOIN_837] (rows=1 width=105) + Conds:RS_79._col1=RS_80._col0(Inner),Output:["_col2","_col3","_col4","_col5","_col7","_col9","_col10","_col11","_col12","_col13","_col14","_col15"] + <-Map 65 [SIMPLE_EDGE] + SHUFFLE [RS_80] + PartitionCols:_col0 + Select Operator [SEL_75] (rows=1 width=860) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"] + Filter Operator [FIL_784] (rows=1 width=860) + predicate:false + TableScan [TS_6] (rows=80000000 width=860) + default@customer,customer,Tbl:COMPLETE,Col:NONE,Output:["c_customer_sk","c_customer_id","c_first_name","c_last_name","c_preferred_cust_flag","c_birth_country","c_login","c_email_address"] + <-Reducer 8 [SIMPLE_EDGE] + SHUFFLE [RS_79] + PartitionCols:_col1 + Merge Join Operator [MERGEJOIN_836] (rows=1 width=96) + Conds:RS_76._col0=RS_77._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col5","_col7"] + <-Map 28 [SIMPLE_EDGE] + SHUFFLE [RS_77] + PartitionCols:_col0 + Select Operator [SEL_72] (rows=1 width=1119) + Output:["_col0","_col1"] + Filter Operator [FIL_783] (rows=1 width=1119) + predicate:false + TableScan [TS_3] (rows=73049 width=1119) + default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_year"] + <-Map 1 [SIMPLE_EDGE] + SHUFFLE [RS_76] + PartitionCols:_col0 + Select Operator [SEL_69] (rows=1 width=88) + Output:["_col0","_col1","_col2","_col3","_col4","_col5"] + Filter Operator [FIL_782] (rows=1 width=88) + predicate:false + TableScan [TS_0] (rows=575995635 width=88) + default@store_sales,store_sales,Tbl:COMPLETE,Col:NONE,Output:["ss_sold_date_sk","ss_customer_sk","ss_ext_discount_amt","ss_ext_sales_price","ss_ext_wholesale_cost","ss_ext_list_price"] + <-Reducer 37 [CONTAINS] + Reduce Output Operator [RS_400] + PartitionCols:_col0 + Select Operator [SEL_109] (rows=58077952 width=135) + Output:["_col0","_col1"] + Filter Operator [FIL_108] (rows=58077952 width=135) + predicate:(_col7 > 0) + Select Operator [SEL_827] (rows=174233858 width=135) + Output:["_col0","_col7"] + Group By Operator [GBY_107] (rows=174233858 width=135) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6 + <-Reducer 36 [SIMPLE_EDGE] + SHUFFLE [RS_106] + PartitionCols:_col0, _col1, _col2, _col3, _col4, _col5, _col6 + Group By Operator [GBY_105] (rows=348467716 width=135) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(_col7)"],keys:_col0, _col1, _col2, _col3, _col4, _col5, _col6 + Select Operator [SEL_103] (rows=348467716 width=135) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"] + Merge Join Operator [MERGEJOIN_839] (rows=348467716 width=135) + Conds:RS_100._col1=RS_101._col0(Inner),Output:["_col2","_col3","_col4","_col5","_col9","_col10","_col11","_col12","_col13","_col14","_col15"] + <-Map 65 [SIMPLE_EDGE] + SHUFFLE [RS_101] + PartitionCols:_col0 + Select Operator [SEL_96] (rows=80000000 width=860) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"] + Filter Operator [FIL_787] (rows=80000000 width=860) + predicate:(c_customer_sk is not null and c_customer_id is not null) + Please refer to the previous TableScan [TS_6] + <-Reducer 35 [SIMPLE_EDGE] + SHUFFLE [RS_100] + PartitionCols:_col1 + Merge Join Operator [MERGEJOIN_838] (rows=316788826 width=135) + Conds:RS_97._col0=RS_98._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col5"] + <-Map 28 [SIMPLE_EDGE] + SHUFFLE [RS_98] + PartitionCols:_col0 + Select Operator [SEL_93] (rows=36524 width=1119) + Output:["_col0"] + Filter Operator [FIL_786] (rows=36524 width=1119) + predicate:((d_year = 2001) and d_date_sk is not null) + Please refer to the previous TableScan [TS_3] + <-Map 66 [SIMPLE_EDGE] + SHUFFLE [RS_97] + PartitionCols:_col0 + Select Operator [SEL_90] (rows=287989836 width=135) + Output:["_col0","_col1","_col2","_col3","_col4","_col5"] + Filter Operator [FIL_785] (rows=287989836 width=135) + predicate:(cs_bill_customer_sk is not null and cs_sold_date_sk is not null) + TableScan [TS_22] (rows=287989836 width=135) + default@catalog_sales,catalog_sales,Tbl:COMPLETE,Col:NONE,Output:["cs_sold_date_sk","cs_bill_customer_sk","cs_ext_discount_amt","cs_ext_sales_price","cs_ext_wholesale_cost","cs_ext_list_price"] + <-Reducer 40 [CONTAINS] + Reduce Output Operator [RS_400] + PartitionCols:_col0 + Select Operator [SEL_132] (rows=1 width=162) + Output:["_col0","_col1"] + Group By Operator [GBY_131] (rows=1 width=162) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6, KEY._col7 + <-Reducer 39 [SIMPLE_EDGE] + SHUFFLE [RS_130] + PartitionCols:_col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + Group By Operator [GBY_129] (rows=1 width=162) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"],aggregations:["sum(_col8)"],keys:_col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + Select Operator [SEL_127] (rows=1 width=162) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"] + Merge Join Operator [MERGEJOIN_841] (rows=1 width=162) + Conds:RS_124._col1=RS_125._col0(Inner),Output:["_col2","_col3","_col4","_col5","_col7","_col9","_col10","_col11","_col12","_col13","_col14","_col15"] + <-Map 65 [SIMPLE_EDGE] + SHUFFLE [RS_125] + PartitionCols:_col0 + Select Operator [SEL_120] (rows=1 width=860) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"] + Filter Operator [FIL_790] (rows=1 width=860) + predicate:false + Please refer to the previous TableScan [TS_6] + <-Reducer 38 [SIMPLE_EDGE] + SHUFFLE [RS_124] + PartitionCols:_col1 + Merge Join Operator [MERGEJOIN_840] (rows=1 width=148) + Conds:RS_121._col0=RS_122._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col5","_col7"] + <-Map 28 [SIMPLE_EDGE] + SHUFFLE [RS_122] + PartitionCols:_col0 + Select Operator [SEL_117] (rows=1 width=1119) + Output:["_col0","_col1"] + Filter Operator [FIL_789] (rows=1 width=1119) + predicate:false + Please refer to the previous TableScan [TS_3] + <-Map 67 [SIMPLE_EDGE] + SHUFFLE [RS_121] + PartitionCols:_col0 + Select Operator [SEL_114] (rows=1 width=135) + Output:["_col0","_col1","_col2","_col3","_col4","_col5"] + Filter Operator [FIL_788] (rows=1 width=135) + predicate:false + TableScan [TS_45] (rows=144002668 width=135) + default@web_sales,web_sales,Tbl:COMPLETE,Col:NONE,Output:["ws_sold_date_sk","ws_bill_customer_sk","ws_ext_discount_amt","ws_ext_sales_price","ws_ext_wholesale_cost","ws_ext_list_price"] + <-Union 15 [SIMPLE_EDGE] + <-Reducer 14 [CONTAINS] + Reduce Output Operator [RS_401] + PartitionCols:_col0 + Select Operator [SEL_154] (rows=1 width=105) + Output:["_col0","_col1"] + Group By Operator [GBY_153] (rows=1 width=105) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6, KEY._col7 + <-Reducer 13 [SIMPLE_EDGE] + SHUFFLE [RS_152] + PartitionCols:_col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + Group By Operator [GBY_151] (rows=1 width=105) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"],aggregations:["sum(_col8)"],keys:_col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + Select Operator [SEL_149] (rows=1 width=105) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"] + Merge Join Operator [MERGEJOIN_843] (rows=1 width=105) + Conds:RS_146._col1=RS_147._col0(Inner),Output:["_col2","_col3","_col4","_col5","_col7","_col9","_col10","_col11","_col12","_col13","_col14","_col15"] + <-Map 65 [SIMPLE_EDGE] + SHUFFLE [RS_147] + PartitionCols:_col0 + Select Operator [SEL_142] (rows=1 width=860) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"] + Filter Operator [FIL_793] (rows=1 width=860) + predicate:false + Please refer to the previous TableScan [TS_6] + <-Reducer 12 [SIMPLE_EDGE] + SHUFFLE [RS_146] + PartitionCols:_col1 + Merge Join Operator [MERGEJOIN_842] (rows=1 width=96) + Conds:RS_143._col0=RS_144._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col5","_col7"] + <-Map 28 [SIMPLE_EDGE] + SHUFFLE [RS_144] + PartitionCols:_col0 + Select Operator [SEL_139] (rows=1 width=1119) + Output:["_col0","_col1"] + Filter Operator [FIL_792] (rows=1 width=1119) + predicate:false + Please refer to the previous TableScan [TS_3] + <-Map 1 [SIMPLE_EDGE] + SHUFFLE [RS_143] + PartitionCols:_col0 + Select Operator [SEL_136] (rows=1 width=88) + Output:["_col0","_col1","_col2","_col3","_col4","_col5"] + Filter Operator [FIL_791] (rows=1 width=88) + predicate:false + Please refer to the previous TableScan [TS_0] + <-Reducer 43 [CONTAINS] + Reduce Output Operator [RS_401] + PartitionCols:_col0 + Select Operator [SEL_175] (rows=1 width=162) + Output:["_col0","_col1"] + Group By Operator [GBY_174] (rows=1 width=162) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6, KEY._col7 + <-Reducer 42 [SIMPLE_EDGE] + SHUFFLE [RS_173] + PartitionCols:_col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + Group By Operator [GBY_172] (rows=1 width=162) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"],aggregations:["sum(_col8)"],keys:_col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + Select Operator [SEL_170] (rows=1 width=162) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"] + Merge Join Operator [MERGEJOIN_845] (rows=1 width=162) + Conds:RS_167._col1=RS_168._col0(Inner),Output:["_col2","_col3","_col4","_col5","_col7","_col9","_col10","_col11","_col12","_col13","_col14","_col15"] + <-Map 65 [SIMPLE_EDGE] + SHUFFLE [RS_168] + PartitionCols:_col0 + Select Operator [SEL_163] (rows=1 width=860) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"] + Filter Operator [FIL_796] (rows=1 width=860) + predicate:false + Please refer to the previous TableScan [TS_6] + <-Reducer 41 [SIMPLE_EDGE] + SHUFFLE [RS_167] + PartitionCols:_col1 + Merge Join Operator [MERGEJOIN_844] (rows=1 width=148) + Conds:RS_164._col0=RS_165._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col5","_col7"] + <-Map 28 [SIMPLE_EDGE] + SHUFFLE [RS_165] + PartitionCols:_col0 + Select Operator [SEL_160] (rows=1 width=1119) + Output:["_col0","_col1"] + Filter Operator [FIL_795] (rows=1 width=1119) + predicate:false + Please refer to the previous TableScan [TS_3] + <-Map 66 [SIMPLE_EDGE] + SHUFFLE [RS_164] + PartitionCols:_col0 + Select Operator [SEL_157] (rows=1 width=135) + Output:["_col0","_col1","_col2","_col3","_col4","_col5"] + Filter Operator [FIL_794] (rows=1 width=135) + predicate:false + Please refer to the previous TableScan [TS_22] + <-Reducer 46 [CONTAINS] + Reduce Output Operator [RS_401] + PartitionCols:_col0 + Select Operator [SEL_199] (rows=29040539 width=135) + Output:["_col0","_col1"] + Filter Operator [FIL_198] (rows=29040539 width=135) + predicate:(_col7 > 0) + Select Operator [SEL_828] (rows=87121617 width=135) + Output:["_col0","_col7"] + Group By Operator [GBY_197] (rows=87121617 width=135) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6 + <-Reducer 45 [SIMPLE_EDGE] + SHUFFLE [RS_196] + PartitionCols:_col0, _col1, _col2, _col3, _col4, _col5, _col6 + Group By Operator [GBY_195] (rows=174243235 width=135) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(_col7)"],keys:_col0, _col1, _col2, _col3, _col4, _col5, _col6 + Select Operator [SEL_193] (rows=174243235 width=135) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"] + Merge Join Operator [MERGEJOIN_847] (rows=174243235 width=135) + Conds:RS_190._col1=RS_191._col0(Inner),Output:["_col2","_col3","_col4","_col5","_col9","_col10","_col11","_col12","_col13","_col14","_col15"] + <-Map 65 [SIMPLE_EDGE] + SHUFFLE [RS_191] + PartitionCols:_col0 + Select Operator [SEL_186] (rows=80000000 width=860) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"] + Filter Operator [FIL_799] (rows=80000000 width=860) + predicate:(c_customer_sk is not null and c_customer_id is not null) + Please refer to the previous TableScan [TS_6] + <-Reducer 44 [SIMPLE_EDGE] + SHUFFLE [RS_190] + PartitionCols:_col1 + Merge Join Operator [MERGEJOIN_846] (rows=158402938 width=135) + Conds:RS_187._col0=RS_188._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col5"] + <-Map 28 [SIMPLE_EDGE] + SHUFFLE [RS_188] + PartitionCols:_col0 + Select Operator [SEL_183] (rows=36524 width=1119) + Output:["_col0"] + Filter Operator [FIL_798] (rows=36524 width=1119) + predicate:((d_year = 2001) and d_date_sk is not null) + Please refer to the previous TableScan [TS_3] + <-Map 67 [SIMPLE_EDGE] + SHUFFLE [RS_187] + PartitionCols:_col0 + Select Operator [SEL_180] (rows=144002668 width=135) + Output:["_col0","_col1","_col2","_col3","_col4","_col5"] + Filter Operator [FIL_797] (rows=144002668 width=135) + predicate:(ws_bill_customer_sk is not null and ws_sold_date_sk is not null) + Please refer to the previous TableScan [TS_45] + <-Union 19 [SIMPLE_EDGE] + <-Reducer 18 [CONTAINS] + Reduce Output Operator [RS_402] + PartitionCols:_col0 + Select Operator [SEL_221] (rows=1 width=105) + Output:["_col0","_col1"] + Group By Operator [GBY_220] (rows=1 width=105) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6, KEY._col7 + <-Reducer 17 [SIMPLE_EDGE] + SHUFFLE [RS_219] + PartitionCols:_col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + Group By Operator [GBY_218] (rows=1 width=105) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"],aggregations:["sum(_col8)"],keys:_col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + Select Operator [SEL_216] (rows=1 width=105) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"] + Merge Join Operator [MERGEJOIN_849] (rows=1 width=105) + Conds:RS_213._col1=RS_214._col0(Inner),Output:["_col2","_col3","_col4","_col5","_col7","_col9","_col10","_col11","_col12","_col13","_col14","_col15"] + <-Map 65 [SIMPLE_EDGE] + SHUFFLE [RS_214] + PartitionCols:_col0 + Select Operator [SEL_209] (rows=1 width=860) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"] + Filter Operator [FIL_802] (rows=1 width=860) + predicate:false + Please refer to the previous TableScan [TS_6] + <-Reducer 16 [SIMPLE_EDGE] + SHUFFLE [RS_213] + PartitionCols:_col1 + Merge Join Operator [MERGEJOIN_848] (rows=1 width=96) + Conds:RS_210._col0=RS_211._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col5","_col7"] + <-Map 28 [SIMPLE_EDGE] + SHUFFLE [RS_211] + PartitionCols:_col0 + Select Operator [SEL_206] (rows=1 width=1119) + Output:["_col0","_col1"] + Filter Operator [FIL_801] (rows=1 width=1119) + predicate:false + Please refer to the previous TableScan [TS_3] + <-Map 1 [SIMPLE_EDGE] + SHUFFLE [RS_210] + PartitionCols:_col0 + Select Operator [SEL_203] (rows=1 width=88) + Output:["_col0","_col1","_col2","_col3","_col4","_col5"] + Filter Operator [FIL_800] (rows=1 width=88) + predicate:false + Please refer to the previous TableScan [TS_0] + <-Reducer 49 [CONTAINS] + Reduce Output Operator [RS_402] + PartitionCols:_col0 + Select Operator [SEL_242] (rows=1 width=162) + Output:["_col0","_col1"] + Group By Operator [GBY_241] (rows=1 width=162) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6, KEY._col7 + <-Reducer 48 [SIMPLE_EDGE] + SHUFFLE [RS_240] + PartitionCols:_col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + Group By Operator [GBY_239] (rows=1 width=162) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"],aggregations:["sum(_col8)"],keys:_col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + Select Operator [SEL_237] (rows=1 width=162) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"] + Merge Join Operator [MERGEJOIN_851] (rows=1 width=162) + Conds:RS_234._col1=RS_235._col0(Inner),Output:["_col2","_col3","_col4","_col5","_col7","_col9","_col10","_col11","_col12","_col13","_col14","_col15"] + <-Map 65 [SIMPLE_EDGE] + SHUFFLE [RS_235] + PartitionCols:_col0 + Select Operator [SEL_230] (rows=1 width=860) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"] + Filter Operator [FIL_805] (rows=1 width=860) + predicate:false + Please refer to the previous TableScan [TS_6] + <-Reducer 47 [SIMPLE_EDGE] + SHUFFLE [RS_234] + PartitionCols:_col1 + Merge Join Operator [MERGEJOIN_850] (rows=1 width=148) + Conds:RS_231._col0=RS_232._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col5","_col7"] + <-Map 28 [SIMPLE_EDGE] + SHUFFLE [RS_232] + PartitionCols:_col0 + Select Operator [SEL_227] (rows=1 width=1119) + Output:["_col0","_col1"] + Filter Operator [FIL_804] (rows=1 width=1119) + predicate:false + Please refer to the previous TableScan [TS_3] + <-Map 66 [SIMPLE_EDGE] + SHUFFLE [RS_231] + PartitionCols:_col0 + Select Operator [SEL_224] (rows=1 width=135) + Output:["_col0","_col1","_col2","_col3","_col4","_col5"] + Filter Operator [FIL_803] (rows=1 width=135) + predicate:false + Please refer to the previous TableScan [TS_22] + <-Reducer 52 [CONTAINS] + Reduce Output Operator [RS_402] + PartitionCols:_col0 + Select Operator [SEL_265] (rows=87121617 width=135) + Output:["_col0","_col1"] + Group By Operator [GBY_264] (rows=87121617 width=135) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6 + <-Reducer 51 [SIMPLE_EDGE] + SHUFFLE [RS_263] + PartitionCols:_col0, _col1, _col2, _col3, _col4, _col5, _col6 + Group By Operator [GBY_262] (rows=174243235 width=135) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(_col7)"],keys:_col0, _col1, _col2, _col3, _col4, _col5, _col6 + Select Operator [SEL_260] (rows=174243235 width=135) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"] + Merge Join Operator [MERGEJOIN_853] (rows=174243235 width=135) + Conds:RS_257._col1=RS_258._col0(Inner),Output:["_col2","_col3","_col4","_col5","_col9","_col10","_col11","_col12","_col13","_col14","_col15"] + <-Map 65 [SIMPLE_EDGE] + SHUFFLE [RS_258] + PartitionCols:_col0 + Select Operator [SEL_253] (rows=80000000 width=860) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"] + Filter Operator [FIL_808] (rows=80000000 width=860) + predicate:(c_customer_sk is not null and c_customer_id is not null) + Please refer to the previous TableScan [TS_6] + <-Reducer 50 [SIMPLE_EDGE] + SHUFFLE [RS_257] + PartitionCols:_col1 + Merge Join Operator [MERGEJOIN_852] (rows=158402938 width=135) + Conds:RS_254._col0=RS_255._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col5"] + <-Map 28 [SIMPLE_EDGE] + SHUFFLE [RS_255] + PartitionCols:_col0 + Select Operator [SEL_250] (rows=36524 width=1119) + Output:["_col0"] + Filter Operator [FIL_807] (rows=36524 width=1119) + predicate:((d_year = 2002) and d_date_sk is not null) + Please refer to the previous TableScan [TS_3] + <-Map 67 [SIMPLE_EDGE] + SHUFFLE [RS_254] + PartitionCols:_col0 + Select Operator [SEL_247] (rows=144002668 width=135) + Output:["_col0","_col1","_col2","_col3","_col4","_col5"] + Filter Operator [FIL_806] (rows=144002668 width=135) + predicate:(ws_bill_customer_sk is not null and ws_sold_date_sk is not null) + Please refer to the previous TableScan [TS_45] + <-Union 23 [SIMPLE_EDGE] + <-Reducer 22 [CONTAINS] + Reduce Output Operator [RS_403] + PartitionCols:_col0 + Select Operator [SEL_287] (rows=1 width=105) + Output:["_col0","_col1"] + Group By Operator [GBY_286] (rows=1 width=105) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6, KEY._col7 + <-Reducer 21 [SIMPLE_EDGE] + SHUFFLE [RS_285] + PartitionCols:_col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + Group By Operator [GBY_284] (rows=1 width=105) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"],aggregations:["sum(_col8)"],keys:_col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + Select Operator [SEL_282] (rows=1 width=105) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"] + Merge Join Operator [MERGEJOIN_855] (rows=1 width=105) + Conds:RS_279._col1=RS_280._col0(Inner),Output:["_col2","_col3","_col4","_col5","_col7","_col9","_col10","_col11","_col12","_col13","_col14","_col15"] + <-Map 65 [SIMPLE_EDGE] + SHUFFLE [RS_280] + PartitionCols:_col0 + Select Operator [SEL_275] (rows=1 width=860) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"] + Filter Operator [FIL_811] (rows=1 width=860) + predicate:false + Please refer to the previous TableScan [TS_6] + <-Reducer 20 [SIMPLE_EDGE] + SHUFFLE [RS_279] + PartitionCols:_col1 + Merge Join Operator [MERGEJOIN_854] (rows=1 width=96) + Conds:RS_276._col0=RS_277._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col5","_col7"] + <-Map 28 [SIMPLE_EDGE] + SHUFFLE [RS_277] + PartitionCols:_col0 + Select Operator [SEL_272] (rows=1 width=1119) + Output:["_col0","_col1"] + Filter Operator [FIL_810] (rows=1 width=1119) + predicate:false + Please refer to the previous TableScan [TS_3] + <-Map 1 [SIMPLE_EDGE] + SHUFFLE [RS_276] + PartitionCols:_col0 + Select Operator [SEL_269] (rows=1 width=88) + Output:["_col0","_col1","_col2","_col3","_col4","_col5"] + Filter Operator [FIL_809] (rows=1 width=88) + predicate:false + Please refer to the previous TableScan [TS_0] + <-Reducer 55 [CONTAINS] + Reduce Output Operator [RS_403] + PartitionCols:_col0 + Select Operator [SEL_308] (rows=174233858 width=135) + Output:["_col0","_col1"] + Group By Operator [GBY_307] (rows=174233858 width=135) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6 + <-Reducer 54 [SIMPLE_EDGE] + SHUFFLE [RS_306] + PartitionCols:_col0, _col1, _col2, _col3, _col4, _col5, _col6 + Group By Operator [GBY_305] (rows=348467716 width=135) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(_col7)"],keys:_col0, _col1, _col2, _col3, _col4, _col5, _col6 + Select Operator [SEL_303] (rows=348467716 width=135) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"] + Merge Join Operator [MERGEJOIN_857] (rows=348467716 width=135) + Conds:RS_300._col1=RS_301._col0(Inner),Output:["_col2","_col3","_col4","_col5","_col9","_col10","_col11","_col12","_col13","_col14","_col15"] + <-Map 65 [SIMPLE_EDGE] + SHUFFLE [RS_301] + PartitionCols:_col0 + Select Operator [SEL_296] (rows=80000000 width=860) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"] + Filter Operator [FIL_814] (rows=80000000 width=860) + predicate:(c_customer_sk is not null and c_customer_id is not null) + Please refer to the previous TableScan [TS_6] + <-Reducer 53 [SIMPLE_EDGE] + SHUFFLE [RS_300] + PartitionCols:_col1 + Merge Join Operator [MERGEJOIN_856] (rows=316788826 width=135) + Conds:RS_297._col0=RS_298._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col5"] + <-Map 28 [SIMPLE_EDGE] + SHUFFLE [RS_298] + PartitionCols:_col0 + Select Operator [SEL_293] (rows=36524 width=1119) + Output:["_col0"] + Filter Operator [FIL_813] (rows=36524 width=1119) + predicate:((d_year = 2002) and d_date_sk is not null) + Please refer to the previous TableScan [TS_3] + <-Map 66 [SIMPLE_EDGE] + SHUFFLE [RS_297] + PartitionCols:_col0 + Select Operator [SEL_290] (rows=287989836 width=135) + Output:["_col0","_col1","_col2","_col3","_col4","_col5"] + Filter Operator [FIL_812] (rows=287989836 width=135) + predicate:(cs_bill_customer_sk is not null and cs_sold_date_sk is not null) + Please refer to the previous TableScan [TS_22] + <-Reducer 58 [CONTAINS] + Reduce Output Operator [RS_403] + PartitionCols:_col0 + Select Operator [SEL_331] (rows=1 width=162) + Output:["_col0","_col1"] + Group By Operator [GBY_330] (rows=1 width=162) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6, KEY._col7 + <-Reducer 57 [SIMPLE_EDGE] + SHUFFLE [RS_329] + PartitionCols:_col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + Group By Operator [GBY_328] (rows=1 width=162) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"],aggregations:["sum(_col8)"],keys:_col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + Select Operator [SEL_326] (rows=1 width=162) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"] + Merge Join Operator [MERGEJOIN_859] (rows=1 width=162) + Conds:RS_323._col1=RS_324._col0(Inner),Output:["_col2","_col3","_col4","_col5","_col7","_col9","_col10","_col11","_col12","_col13","_col14","_col15"] + <-Map 65 [SIMPLE_EDGE] + SHUFFLE [RS_324] + PartitionCols:_col0 + Select Operator [SEL_319] (rows=1 width=860) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"] + Filter Operator [FIL_817] (rows=1 width=860) + predicate:false + Please refer to the previous TableScan [TS_6] + <-Reducer 56 [SIMPLE_EDGE] + SHUFFLE [RS_323] + PartitionCols:_col1 + Merge Join Operator [MERGEJOIN_858] (rows=1 width=148) + Conds:RS_320._col0=RS_321._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col5","_col7"] + <-Map 28 [SIMPLE_EDGE] + SHUFFLE [RS_321] + PartitionCols:_col0 + Select Operator [SEL_316] (rows=1 width=1119) + Output:["_col0","_col1"] + Filter Operator [FIL_816] (rows=1 width=1119) + predicate:false + Please refer to the previous TableScan [TS_3] + <-Map 67 [SIMPLE_EDGE] + SHUFFLE [RS_320] + PartitionCols:_col0 + Select Operator [SEL_313] (rows=1 width=135) + Output:["_col0","_col1","_col2","_col3","_col4","_col5"] + Filter Operator [FIL_815] (rows=1 width=135) + predicate:false + Please refer to the previous TableScan [TS_45] + <-Union 27 [SIMPLE_EDGE] + <-Reducer 26 [CONTAINS] + Reduce Output Operator [RS_404] + PartitionCols:_col0 + Select Operator [SEL_353] (rows=348477374 width=88) + Output:["_col0","_col1","_col2"] + Group By Operator [GBY_352] (rows=348477374 width=88) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6 + <-Reducer 25 [SIMPLE_EDGE] + SHUFFLE [RS_351] + PartitionCols:_col0, _col1, _col2, _col3, _col4, _col5, _col6 + Group By Operator [GBY_350] (rows=696954748 width=88) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(_col7)"],keys:_col0, _col1, _col2, _col3, _col4, _col5, _col6 + Select Operator [SEL_348] (rows=696954748 width=88) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"] + Merge Join Operator [MERGEJOIN_861] (rows=696954748 width=88) + Conds:RS_345._col1=RS_346._col0(Inner),Output:["_col2","_col3","_col4","_col5","_col9","_col10","_col11","_col12","_col13","_col14","_col15"] + <-Map 65 [SIMPLE_EDGE] + SHUFFLE [RS_346] + PartitionCols:_col0 + Select Operator [SEL_341] (rows=80000000 width=860) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"] + Filter Operator [FIL_820] (rows=80000000 width=860) + predicate:(c_customer_sk is not null and c_customer_id is not null) + Please refer to the previous TableScan [TS_6] + <-Reducer 24 [SIMPLE_EDGE] + SHUFFLE [RS_345] + PartitionCols:_col1 + Merge Join Operator [MERGEJOIN_860] (rows=633595212 width=88) + Conds:RS_342._col0=RS_343._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col5"] + <-Map 28 [SIMPLE_EDGE] + SHUFFLE [RS_343] + PartitionCols:_col0 + Select Operator [SEL_338] (rows=36524 width=1119) + Output:["_col0"] + Filter Operator [FIL_819] (rows=36524 width=1119) + predicate:((d_year = 2002) and d_date_sk is not null) + Please refer to the previous TableScan [TS_3] + <-Map 1 [SIMPLE_EDGE] + SHUFFLE [RS_342] + PartitionCols:_col0 + Select Operator [SEL_335] (rows=575995635 width=88) + Output:["_col0","_col1","_col2","_col3","_col4","_col5"] + Filter Operator [FIL_818] (rows=575995635 width=88) + predicate:(ss_customer_sk is not null and ss_sold_date_sk is not null) + Please refer to the previous TableScan [TS_0] + <-Reducer 61 [CONTAINS] + Reduce Output Operator [RS_404] + PartitionCols:_col0 + Select Operator [SEL_374] (rows=1 width=162) + Output:["_col0","_col1","_col2"] + Group By Operator [GBY_373] (rows=1 width=162) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6, KEY._col7 + <-Reducer 60 [SIMPLE_EDGE] + SHUFFLE [RS_372] + PartitionCols:_col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + Group By Operator [GBY_371] (rows=1 width=162) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"],aggregations:["sum(_col8)"],keys:_col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + Select Operator [SEL_369] (rows=1 width=162) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"] + Merge Join Operator [MERGEJOIN_863] (rows=1 width=162) + Conds:RS_366._col1=RS_367._col0(Inner),Output:["_col2","_col3","_col4","_col5","_col7","_col9","_col10","_col11","_col12","_col13","_col14","_col15"] + <-Map 65 [SIMPLE_EDGE] + SHUFFLE [RS_367] + PartitionCols:_col0 + Select Operator [SEL_362] (rows=1 width=860) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"] + Filter Operator [FIL_823] (rows=1 width=860) + predicate:false + Please refer to the previous TableScan [TS_6] + <-Reducer 59 [SIMPLE_EDGE] + SHUFFLE [RS_366] + PartitionCols:_col1 + Merge Join Operator [MERGEJOIN_862] (rows=1 width=148) + Conds:RS_363._col0=RS_364._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col5","_col7"] + <-Map 28 [SIMPLE_EDGE] + SHUFFLE [RS_364] + PartitionCols:_col0 + Select Operator [SEL_359] (rows=1 width=1119) + Output:["_col0","_col1"] + Filter Operator [FIL_822] (rows=1 width=1119) + predicate:false + Please refer to the previous TableScan [TS_3] + <-Map 66 [SIMPLE_EDGE] + SHUFFLE [RS_363] + PartitionCols:_col0 + Select Operator [SEL_356] (rows=1 width=135) + Output:["_col0","_col1","_col2","_col3","_col4","_col5"] + Filter Operator [FIL_821] (rows=1 width=135) + predicate:false + Please refer to the previous TableScan [TS_22] + <-Reducer 64 [CONTAINS] + Reduce Output Operator [RS_404] + PartitionCols:_col0 + Select Operator [SEL_397] (rows=1 width=162) + Output:["_col0","_col1","_col2"] + Group By Operator [GBY_396] (rows=1 width=162) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6, KEY._col7 + <-Reducer 63 [SIMPLE_EDGE] + SHUFFLE [RS_395] + PartitionCols:_col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + Group By Operator [GBY_394] (rows=1 width=162) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"],aggregations:["sum(_col8)"],keys:_col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + Select Operator [SEL_392] (rows=1 width=162) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"] + Merge Join Operator [MERGEJOIN_865] (rows=1 width=162) + Conds:RS_389._col1=RS_390._col0(Inner),Output:["_col2","_col3","_col4","_col5","_col7","_col9","_col10","_col11","_col12","_col13","_col14","_col15"] + <-Map 65 [SIMPLE_EDGE] + SHUFFLE [RS_390] + PartitionCols:_col0 + Select Operator [SEL_385] (rows=1 width=860) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"] + Filter Operator [FIL_826] (rows=1 width=860) + predicate:false + Please refer to the previous TableScan [TS_6] + <-Reducer 62 [SIMPLE_EDGE] + SHUFFLE [RS_389] + PartitionCols:_col1 + Merge Join Operator [MERGEJOIN_864] (rows=1 width=148) + Conds:RS_386._col0=RS_387._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col5","_col7"] + <-Map 28 [SIMPLE_EDGE] + SHUFFLE [RS_387] + PartitionCols:_col0 + Select Operator [SEL_382] (rows=1 width=1119) + Output:["_col0","_col1"] + Filter Operator [FIL_825] (rows=1 width=1119) + predicate:false + Please refer to the previous TableScan [TS_3] + <-Map 67 [SIMPLE_EDGE] + SHUFFLE [RS_386] + PartitionCols:_col0 + Select Operator [SEL_379] (rows=1 width=135) + Output:["_col0","_col1","_col2","_col3","_col4","_col5"] + Filter Operator [FIL_824] (rows=1 width=135) + predicate:false + Please refer to the previous TableScan [TS_45] + <-Union 5 [SIMPLE_EDGE] + <-Reducer 31 [CONTAINS] + Reduce Output Operator [RS_399] + PartitionCols:_col0 + Select Operator [SEL_42] (rows=1 width=162) + Output:["_col0","_col1"] + Group By Operator [GBY_41] (rows=1 width=162) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6, KEY._col7 + <-Reducer 30 [SIMPLE_EDGE] + SHUFFLE [RS_40] + PartitionCols:_col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + Group By Operator [GBY_39] (rows=1 width=162) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"],aggregations:["sum(_col8)"],keys:_col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + Select Operator [SEL_37] (rows=1 width=162) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"] + Merge Join Operator [MERGEJOIN_833] (rows=1 width=162) + Conds:RS_34._col1=RS_35._col0(Inner),Output:["_col2","_col3","_col4","_col5","_col7","_col9","_col10","_col11","_col12","_col13","_col14","_col15"] + <-Map 65 [SIMPLE_EDGE] + SHUFFLE [RS_35] + PartitionCols:_col0 + Select Operator [SEL_30] (rows=1 width=860) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"] + Filter Operator [FIL_778] (rows=1 width=860) + predicate:false + Please refer to the previous TableScan [TS_6] + <-Reducer 29 [SIMPLE_EDGE] + SHUFFLE [RS_34] + PartitionCols:_col1 + Merge Join Operator [MERGEJOIN_832] (rows=1 width=148) + Conds:RS_31._col0=RS_32._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col5","_col7"] + <-Map 28 [SIMPLE_EDGE] + SHUFFLE [RS_32] + PartitionCols:_col0 + Select Operator [SEL_27] (rows=1 width=1119) + Output:["_col0","_col1"] + Filter Operator [FIL_777] (rows=1 width=1119) + predicate:false + Please refer to the previous TableScan [TS_3] + <-Map 66 [SIMPLE_EDGE] + SHUFFLE [RS_31] + PartitionCols:_col0 + Select Operator [SEL_24] (rows=1 width=135) + Output:["_col0","_col1","_col2","_col3","_col4","_col5"] + Filter Operator [FIL_776] (rows=1 width=135) + predicate:false + Please refer to the previous TableScan [TS_22] + <-Reducer 34 [CONTAINS] + Reduce Output Operator [RS_399] + PartitionCols:_col0 + Select Operator [SEL_65] (rows=1 width=162) + Output:["_col0","_col1"] + Group By Operator [GBY_64] (rows=1 width=162) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6, KEY._col7 + <-Reducer 33 [SIMPLE_EDGE] + SHUFFLE [RS_63] + PartitionCols:_col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + Group By Operator [GBY_62] (rows=1 width=162) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"],aggregations:["sum(_col8)"],keys:_col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + Select Operator [SEL_60] (rows=1 width=162) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8"] + Merge Join Operator [MERGEJOIN_835] (rows=1 width=162) + Conds:RS_57._col1=RS_58._col0(Inner),Output:["_col2","_col3","_col4","_col5","_col7","_col9","_col10","_col11","_col12","_col13","_col14","_col15"] + <-Map 65 [SIMPLE_EDGE] + SHUFFLE [RS_58] + PartitionCols:_col0 + Select Operator [SEL_53] (rows=1 width=860) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"] + Filter Operator [FIL_781] (rows=1 width=860) + predicate:false + Please refer to the previous TableScan [TS_6] + <-Reducer 32 [SIMPLE_EDGE] + SHUFFLE [RS_57] + PartitionCols:_col1 + Merge Join Operator [MERGEJOIN_834] (rows=1 width=148) + Conds:RS_54._col0=RS_55._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col5","_col7"] + <-Map 28 [SIMPLE_EDGE] + SHUFFLE [RS_55] + PartitionCols:_col0 + Select Operator [SEL_50] (rows=1 width=1119) + Output:["_col0","_col1"] + Filter Operator [FIL_780] (rows=1 width=1119) + predicate:false + Please refer to the previous TableScan [TS_3] + <-Map 67 [SIMPLE_EDGE] + SHUFFLE [RS_54] + PartitionCols:_col0 + Select Operator [SEL_47] (rows=1 width=135) + Output:["_col0","_col1","_col2","_col3","_col4","_col5"] + Filter Operator [FIL_779] (rows=1 width=135) + predicate:false + Please refer to the previous TableScan [TS_45] + <-Reducer 4 [CONTAINS] + Reduce Output Operator [RS_399] + PartitionCols:_col0 + Select Operator [SEL_21] (rows=116159124 width=88) + Output:["_col0","_col1"] + Filter Operator [FIL_20] (rows=116159124 width=88) + predicate:(_col7 > 0) + Select Operator [SEL_829] (rows=348477374 width=88) + Output:["_col0","_col7"] + Group By Operator [GBY_19] (rows=348477374 width=88) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6 + <-Reducer 3 [SIMPLE_EDGE] + SHUFFLE [RS_18] + PartitionCols:_col0, _col1, _col2, _col3, _col4, _col5, _col6 + Group By Operator [GBY_17] (rows=696954748 width=88) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"],aggregations:["sum(_col7)"],keys:_col0, _col1, _col2, _col3, _col4, _col5, _col6 + Select Operator [SEL_15] (rows=696954748 width=88) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"] + Merge Join Operator [MERGEJOIN_831] (rows=696954748 width=88) + Conds:RS_12._col1=RS_13._col0(Inner),Output:["_col2","_col3","_col4","_col5","_col9","_col10","_col11","_col12","_col13","_col14","_col15"] + <-Map 65 [SIMPLE_EDGE] + SHUFFLE [RS_13] + PartitionCols:_col0 + Select Operator [SEL_8] (rows=80000000 width=860) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"] + Filter Operator [FIL_775] (rows=80000000 width=860) + predicate:(c_customer_sk is not null and c_customer_id is not null) + Please refer to the previous TableScan [TS_6] + <-Reducer 2 [SIMPLE_EDGE] + SHUFFLE [RS_12] + PartitionCols:_col1 + Merge Join Operator [MERGEJOIN_830] (rows=633595212 width=88) + Conds:RS_9._col0=RS_10._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col5"] + <-Map 28 [SIMPLE_EDGE] + SHUFFLE [RS_10] + PartitionCols:_col0 + Select Operator [SEL_5] (rows=36524 width=1119) + Output:["_col0"] + Filter Operator [FIL_774] (rows=36524 width=1119) + predicate:((d_year = 2001) and d_date_sk is not null) + Please refer to the previous TableScan [TS_3] + <-Map 1 [SIMPLE_EDGE] + SHUFFLE [RS_9] + PartitionCols:_col0 + Select Operator [SEL_2] (rows=575995635 width=88) + Output:["_col0","_col1","_col2","_col3","_col4","_col5"] + Filter Operator [FIL_773] (rows=575995635 width=88) + predicate:(ss_customer_sk is not null and ss_sold_date_sk is not null) + Please refer to the previous TableScan [TS_0] + diff --git a/ql/src/test/results/clientpositive/perf/query74.q.out b/ql/src/test/results/clientpositive/perf/query74.q.out new file mode 100644 index 0000000000..bb4a71e6ce --- /dev/null +++ b/ql/src/test/results/clientpositive/perf/query74.q.out @@ -0,0 +1,529 @@ +PREHOOK: query: explain +with year_total as ( + select c_customer_id customer_id + ,c_first_name customer_first_name + ,c_last_name customer_last_name + ,d_year as year + ,max(ss_net_paid) year_total + ,'s' sale_type + from customer + ,store_sales + ,date_dim + where c_customer_sk = ss_customer_sk + and ss_sold_date_sk = d_date_sk + and d_year in (2001,2001+1) + group by c_customer_id + ,c_first_name + ,c_last_name + ,d_year + union all + select c_customer_id customer_id + ,c_first_name customer_first_name + ,c_last_name customer_last_name + ,d_year as year + ,max(ws_net_paid) year_total + ,'w' sale_type + from customer + ,web_sales + ,date_dim + where c_customer_sk = ws_bill_customer_sk + and ws_sold_date_sk = d_date_sk + and d_year in (2001,2001+1) + group by c_customer_id + ,c_first_name + ,c_last_name + ,d_year + ) + select + t_s_secyear.customer_id, t_s_secyear.customer_first_name, t_s_secyear.customer_last_name + from year_total t_s_firstyear + ,year_total t_s_secyear + ,year_total t_w_firstyear + ,year_total t_w_secyear + where t_s_secyear.customer_id = t_s_firstyear.customer_id + and t_s_firstyear.customer_id = t_w_secyear.customer_id + and t_s_firstyear.customer_id = t_w_firstyear.customer_id + and t_s_firstyear.sale_type = 's' + and t_w_firstyear.sale_type = 'w' + and t_s_secyear.sale_type = 's' + and t_w_secyear.sale_type = 'w' + and t_s_firstyear.year = 2001 + and t_s_secyear.year = 2001+1 + and t_w_firstyear.year = 2001 + and t_w_secyear.year = 2001+1 + and t_s_firstyear.year_total > 0 + and t_w_firstyear.year_total > 0 + and case when t_w_firstyear.year_total > 0 then t_w_secyear.year_total / t_w_firstyear.year_total else null end + > case when t_s_firstyear.year_total > 0 then t_s_secyear.year_total / t_s_firstyear.year_total else null end + order by 2,1,3 +limit 100 +PREHOOK: type: QUERY +POSTHOOK: query: explain +with year_total as ( + select c_customer_id customer_id + ,c_first_name customer_first_name + ,c_last_name customer_last_name + ,d_year as year + ,max(ss_net_paid) year_total + ,'s' sale_type + from customer + ,store_sales + ,date_dim + where c_customer_sk = ss_customer_sk + and ss_sold_date_sk = d_date_sk + and d_year in (2001,2001+1) + group by c_customer_id + ,c_first_name + ,c_last_name + ,d_year + union all + select c_customer_id customer_id + ,c_first_name customer_first_name + ,c_last_name customer_last_name + ,d_year as year + ,max(ws_net_paid) year_total + ,'w' sale_type + from customer + ,web_sales + ,date_dim + where c_customer_sk = ws_bill_customer_sk + and ws_sold_date_sk = d_date_sk + and d_year in (2001,2001+1) + group by c_customer_id + ,c_first_name + ,c_last_name + ,d_year + ) + select + t_s_secyear.customer_id, t_s_secyear.customer_first_name, t_s_secyear.customer_last_name + from year_total t_s_firstyear + ,year_total t_s_secyear + ,year_total t_w_firstyear + ,year_total t_w_secyear + where t_s_secyear.customer_id = t_s_firstyear.customer_id + and t_s_firstyear.customer_id = t_w_secyear.customer_id + and t_s_firstyear.customer_id = t_w_firstyear.customer_id + and t_s_firstyear.sale_type = 's' + and t_w_firstyear.sale_type = 'w' + and t_s_secyear.sale_type = 's' + and t_w_secyear.sale_type = 'w' + and t_s_firstyear.year = 2001 + and t_s_secyear.year = 2001+1 + and t_w_firstyear.year = 2001 + and t_w_secyear.year = 2001+1 + and t_s_firstyear.year_total > 0 + and t_w_firstyear.year_total > 0 + and case when t_w_firstyear.year_total > 0 then t_w_secyear.year_total / t_w_firstyear.year_total else null end + > case when t_s_firstyear.year_total > 0 then t_s_secyear.year_total / t_s_firstyear.year_total else null end + order by 2,1,3 +limit 100 +POSTHOOK: type: QUERY +Plan optimized by CBO. + +Vertex dependency in root stage +Reducer 10 <- Reducer 9 (SIMPLE_EDGE), Union 11 (CONTAINS) +Reducer 12 <- Map 1 (SIMPLE_EDGE), Map 20 (SIMPLE_EDGE) +Reducer 13 <- Map 33 (SIMPLE_EDGE), Reducer 12 (SIMPLE_EDGE) +Reducer 14 <- Reducer 13 (SIMPLE_EDGE), Union 15 (CONTAINS) +Reducer 16 <- Map 1 (SIMPLE_EDGE), Map 20 (SIMPLE_EDGE) +Reducer 17 <- Map 33 (SIMPLE_EDGE), Reducer 16 (SIMPLE_EDGE) +Reducer 18 <- Reducer 17 (SIMPLE_EDGE), Union 19 (CONTAINS) +Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 20 (SIMPLE_EDGE) +Reducer 21 <- Map 20 (SIMPLE_EDGE), Map 34 (SIMPLE_EDGE) +Reducer 22 <- Map 33 (SIMPLE_EDGE), Reducer 21 (SIMPLE_EDGE) +Reducer 23 <- Reducer 22 (SIMPLE_EDGE), Union 5 (CONTAINS) +Reducer 24 <- Map 20 (SIMPLE_EDGE), Map 34 (SIMPLE_EDGE) +Reducer 25 <- Map 33 (SIMPLE_EDGE), Reducer 24 (SIMPLE_EDGE) +Reducer 26 <- Reducer 25 (SIMPLE_EDGE), Union 11 (CONTAINS) +Reducer 27 <- Map 20 (SIMPLE_EDGE), Map 34 (SIMPLE_EDGE) +Reducer 28 <- Map 33 (SIMPLE_EDGE), Reducer 27 (SIMPLE_EDGE) +Reducer 29 <- Reducer 28 (SIMPLE_EDGE), Union 15 (CONTAINS) +Reducer 3 <- Map 33 (SIMPLE_EDGE), Reducer 2 (SIMPLE_EDGE) +Reducer 30 <- Map 20 (SIMPLE_EDGE), Map 34 (SIMPLE_EDGE) +Reducer 31 <- Map 33 (SIMPLE_EDGE), Reducer 30 (SIMPLE_EDGE) +Reducer 32 <- Reducer 31 (SIMPLE_EDGE), Union 19 (CONTAINS) +Reducer 4 <- Reducer 3 (SIMPLE_EDGE), Union 5 (CONTAINS) +Reducer 6 <- Union 11 (SIMPLE_EDGE), Union 15 (SIMPLE_EDGE), Union 19 (SIMPLE_EDGE), Union 5 (SIMPLE_EDGE) +Reducer 7 <- Reducer 6 (SIMPLE_EDGE) +Reducer 8 <- Map 1 (SIMPLE_EDGE), Map 20 (SIMPLE_EDGE) +Reducer 9 <- Map 33 (SIMPLE_EDGE), Reducer 8 (SIMPLE_EDGE) + +Stage-0 + Fetch Operator + limit:100 + Stage-1 + Reducer 7 + File Output Operator [FS_184] + Limit [LIM_183] (rows=100 width=88) + Number of rows:100 + Select Operator [SEL_182] (rows=574987681 width=88) + Output:["_col0","_col1","_col2"] + <-Reducer 6 [SIMPLE_EDGE] + SHUFFLE [RS_181] + Select Operator [SEL_180] (rows=574987681 width=88) + Output:["_col0","_col1","_col2"] + Filter Operator [FIL_179] (rows=574987681 width=88) + predicate:CASE WHEN ((_col1 > 0)) THEN (CASE WHEN ((_col3 > 0)) THEN (((_col5 / _col3) > (_col9 / _col1))) ELSE ((null > (_col9 / _col1))) END) ELSE (CASE WHEN ((_col3 > 0)) THEN (((_col5 / _col3) > null)) ELSE (null) END) END + Merge Join Operator [MERGEJOIN_339] (rows=1149975362 width=88) + Conds:Union 5._col0=Union 11._col0(Inner),Union 5._col0=Union 15._col0(Inner),Union 5._col0=Union 19._col0(Inner),Output:["_col1","_col3","_col5","_col6","_col7","_col8","_col9"] + <-Union 11 [SIMPLE_EDGE] + <-Reducer 10 [CONTAINS] + Reduce Output Operator [RS_175] + PartitionCols:_col0 + Select Operator [SEL_63] (rows=1 width=105) + Output:["_col0","_col1"] + Group By Operator [GBY_62] (rows=1 width=105) + Output:["_col0","_col1","_col2","_col3","_col4"],aggregations:["max(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3 + <-Reducer 9 [SIMPLE_EDGE] + SHUFFLE [RS_61] + PartitionCols:_col0, _col1, _col2, _col3 + Group By Operator [GBY_60] (rows=1 width=105) + Output:["_col0","_col1","_col2","_col3","_col4"],aggregations:["max(_col2)"],keys:_col6, _col4, _col7, _col8 + Merge Join Operator [MERGEJOIN_328] (rows=1 width=105) + Conds:RS_56._col1=RS_57._col0(Inner),Output:["_col2","_col4","_col6","_col7","_col8"] + <-Map 33 [SIMPLE_EDGE] + SHUFFLE [RS_57] + PartitionCols:_col0 + Select Operator [SEL_52] (rows=1 width=860) + Output:["_col0","_col1","_col2","_col3"] + Filter Operator [FIL_305] (rows=1 width=860) + predicate:false + TableScan [TS_6] (rows=80000000 width=860) + default@customer,customer,Tbl:COMPLETE,Col:NONE,Output:["c_customer_sk","c_customer_id","c_first_name","c_last_name"] + <-Reducer 8 [SIMPLE_EDGE] + SHUFFLE [RS_56] + PartitionCols:_col1 + Merge Join Operator [MERGEJOIN_327] (rows=1 width=96) + Conds:RS_53._col0=RS_54._col0(Inner),Output:["_col1","_col2","_col4"] + <-Map 20 [SIMPLE_EDGE] + SHUFFLE [RS_54] + PartitionCols:_col0 + Select Operator [SEL_49] (rows=1 width=1119) + Output:["_col0","_col1"] + Filter Operator [FIL_304] (rows=1 width=1119) + predicate:false + TableScan [TS_3] (rows=73049 width=1119) + default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_year"] + <-Map 1 [SIMPLE_EDGE] + SHUFFLE [RS_53] + PartitionCols:_col0 + Select Operator [SEL_46] (rows=1 width=88) + Output:["_col0","_col1","_col2"] + Filter Operator [FIL_303] (rows=1 width=88) + predicate:false + TableScan [TS_0] (rows=575995635 width=88) + default@store_sales,store_sales,Tbl:COMPLETE,Col:NONE,Output:["ss_sold_date_sk","ss_customer_sk","ss_net_paid"] + <-Reducer 26 [CONTAINS] + Reduce Output Operator [RS_175] + PartitionCols:_col0 + Select Operator [SEL_85] (rows=29040539 width=135) + Output:["_col0","_col1"] + Filter Operator [FIL_84] (rows=29040539 width=135) + predicate:(_col4 > 0) + Select Operator [SEL_321] (rows=87121617 width=135) + Output:["_col0","_col4"] + Group By Operator [GBY_83] (rows=87121617 width=135) + Output:["_col0","_col1","_col2","_col3","_col4"],aggregations:["max(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3 + <-Reducer 25 [SIMPLE_EDGE] + SHUFFLE [RS_82] + PartitionCols:_col0, _col1, _col2, _col3 + Group By Operator [GBY_81] (rows=174243235 width=135) + Output:["_col0","_col1","_col2","_col3","_col4"],aggregations:["max(_col2)"],keys:_col6, _col7, _col8, _col4 + Merge Join Operator [MERGEJOIN_330] (rows=174243235 width=135) + Conds:RS_77._col1=RS_78._col0(Inner),Output:["_col2","_col4","_col6","_col7","_col8"] + <-Map 33 [SIMPLE_EDGE] + SHUFFLE [RS_78] + PartitionCols:_col0 + Select Operator [SEL_73] (rows=80000000 width=860) + Output:["_col0","_col1","_col2","_col3"] + Filter Operator [FIL_308] (rows=80000000 width=860) + predicate:(c_customer_sk is not null and c_customer_id is not null) + Please refer to the previous TableScan [TS_6] + <-Reducer 24 [SIMPLE_EDGE] + SHUFFLE [RS_77] + PartitionCols:_col1 + Merge Join Operator [MERGEJOIN_329] (rows=158402938 width=135) + Conds:RS_74._col0=RS_75._col0(Inner),Output:["_col1","_col2","_col4"] + <-Map 20 [SIMPLE_EDGE] + SHUFFLE [RS_75] + PartitionCols:_col0 + Select Operator [SEL_70] (rows=18262 width=1119) + Output:["_col0","_col1"] + Filter Operator [FIL_307] (rows=18262 width=1119) + predicate:((d_year) IN (2001, 2002) and (d_year = 2001) and d_date_sk is not null) + Please refer to the previous TableScan [TS_3] + <-Map 34 [SIMPLE_EDGE] + SHUFFLE [RS_74] + PartitionCols:_col0 + Select Operator [SEL_67] (rows=144002668 width=135) + Output:["_col0","_col1","_col2"] + Filter Operator [FIL_306] (rows=144002668 width=135) + predicate:(ws_bill_customer_sk is not null and ws_sold_date_sk is not null) + TableScan [TS_21] (rows=144002668 width=135) + default@web_sales,web_sales,Tbl:COMPLETE,Col:NONE,Output:["ws_sold_date_sk","ws_bill_customer_sk","ws_net_paid"] + <-Union 15 [SIMPLE_EDGE] + <-Reducer 14 [CONTAINS] + Reduce Output Operator [RS_176] + PartitionCols:_col0 + Select Operator [SEL_107] (rows=1 width=105) + Output:["_col0","_col1"] + Group By Operator [GBY_106] (rows=1 width=105) + Output:["_col0","_col1","_col2","_col3","_col4"],aggregations:["max(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3 + <-Reducer 13 [SIMPLE_EDGE] + SHUFFLE [RS_105] + PartitionCols:_col0, _col1, _col2, _col3 + Group By Operator [GBY_104] (rows=1 width=105) + Output:["_col0","_col1","_col2","_col3","_col4"],aggregations:["max(_col2)"],keys:_col6, _col4, _col7, _col8 + Merge Join Operator [MERGEJOIN_332] (rows=1 width=105) + Conds:RS_100._col1=RS_101._col0(Inner),Output:["_col2","_col4","_col6","_col7","_col8"] + <-Map 33 [SIMPLE_EDGE] + SHUFFLE [RS_101] + PartitionCols:_col0 + Select Operator [SEL_96] (rows=1 width=860) + Output:["_col0","_col1","_col2","_col3"] + Filter Operator [FIL_311] (rows=1 width=860) + predicate:false + Please refer to the previous TableScan [TS_6] + <-Reducer 12 [SIMPLE_EDGE] + SHUFFLE [RS_100] + PartitionCols:_col1 + Merge Join Operator [MERGEJOIN_331] (rows=1 width=96) + Conds:RS_97._col0=RS_98._col0(Inner),Output:["_col1","_col2","_col4"] + <-Map 20 [SIMPLE_EDGE] + SHUFFLE [RS_98] + PartitionCols:_col0 + Select Operator [SEL_93] (rows=1 width=1119) + Output:["_col0","_col1"] + Filter Operator [FIL_310] (rows=1 width=1119) + predicate:false + Please refer to the previous TableScan [TS_3] + <-Map 1 [SIMPLE_EDGE] + SHUFFLE [RS_97] + PartitionCols:_col0 + Select Operator [SEL_90] (rows=1 width=88) + Output:["_col0","_col1","_col2"] + Filter Operator [FIL_309] (rows=1 width=88) + predicate:false + Please refer to the previous TableScan [TS_0] + <-Reducer 29 [CONTAINS] + Reduce Output Operator [RS_176] + PartitionCols:_col0 + Select Operator [SEL_128] (rows=87121617 width=135) + Output:["_col0","_col1"] + Group By Operator [GBY_127] (rows=87121617 width=135) + Output:["_col0","_col1","_col2","_col3","_col4"],aggregations:["max(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3 + <-Reducer 28 [SIMPLE_EDGE] + SHUFFLE [RS_126] + PartitionCols:_col0, _col1, _col2, _col3 + Group By Operator [GBY_125] (rows=174243235 width=135) + Output:["_col0","_col1","_col2","_col3","_col4"],aggregations:["max(_col2)"],keys:_col6, _col7, _col8, _col4 + Merge Join Operator [MERGEJOIN_334] (rows=174243235 width=135) + Conds:RS_121._col1=RS_122._col0(Inner),Output:["_col2","_col4","_col6","_col7","_col8"] + <-Map 33 [SIMPLE_EDGE] + SHUFFLE [RS_122] + PartitionCols:_col0 + Select Operator [SEL_117] (rows=80000000 width=860) + Output:["_col0","_col1","_col2","_col3"] + Filter Operator [FIL_314] (rows=80000000 width=860) + predicate:(c_customer_sk is not null and c_customer_id is not null) + Please refer to the previous TableScan [TS_6] + <-Reducer 27 [SIMPLE_EDGE] + SHUFFLE [RS_121] + PartitionCols:_col1 + Merge Join Operator [MERGEJOIN_333] (rows=158402938 width=135) + Conds:RS_118._col0=RS_119._col0(Inner),Output:["_col1","_col2","_col4"] + <-Map 20 [SIMPLE_EDGE] + SHUFFLE [RS_119] + PartitionCols:_col0 + Select Operator [SEL_114] (rows=18262 width=1119) + Output:["_col0","_col1"] + Filter Operator [FIL_313] (rows=18262 width=1119) + predicate:((d_year) IN (2001, 2002) and (d_year = 2002) and d_date_sk is not null) + Please refer to the previous TableScan [TS_3] + <-Map 34 [SIMPLE_EDGE] + SHUFFLE [RS_118] + PartitionCols:_col0 + Select Operator [SEL_111] (rows=144002668 width=135) + Output:["_col0","_col1","_col2"] + Filter Operator [FIL_312] (rows=144002668 width=135) + predicate:(ws_bill_customer_sk is not null and ws_sold_date_sk is not null) + Please refer to the previous TableScan [TS_21] + <-Union 19 [SIMPLE_EDGE] + <-Reducer 18 [CONTAINS] + Reduce Output Operator [RS_177] + PartitionCols:_col0 + Select Operator [SEL_150] (rows=348477374 width=88) + Output:["_col0","_col1","_col2","_col3"] + Group By Operator [GBY_149] (rows=348477374 width=88) + Output:["_col0","_col1","_col2","_col3","_col4"],aggregations:["max(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3 + <-Reducer 17 [SIMPLE_EDGE] + SHUFFLE [RS_148] + PartitionCols:_col0, _col1, _col2, _col3 + Group By Operator [GBY_147] (rows=696954748 width=88) + Output:["_col0","_col1","_col2","_col3","_col4"],aggregations:["max(_col2)"],keys:_col6, _col7, _col8, _col4 + Merge Join Operator [MERGEJOIN_336] (rows=696954748 width=88) + Conds:RS_143._col1=RS_144._col0(Inner),Output:["_col2","_col4","_col6","_col7","_col8"] + <-Map 33 [SIMPLE_EDGE] + SHUFFLE [RS_144] + PartitionCols:_col0 + Select Operator [SEL_139] (rows=80000000 width=860) + Output:["_col0","_col1","_col2","_col3"] + Filter Operator [FIL_317] (rows=80000000 width=860) + predicate:(c_customer_sk is not null and c_customer_id is not null) + Please refer to the previous TableScan [TS_6] + <-Reducer 16 [SIMPLE_EDGE] + SHUFFLE [RS_143] + PartitionCols:_col1 + Merge Join Operator [MERGEJOIN_335] (rows=633595212 width=88) + Conds:RS_140._col0=RS_141._col0(Inner),Output:["_col1","_col2","_col4"] + <-Map 20 [SIMPLE_EDGE] + SHUFFLE [RS_141] + PartitionCols:_col0 + Select Operator [SEL_136] (rows=18262 width=1119) + Output:["_col0","_col1"] + Filter Operator [FIL_316] (rows=18262 width=1119) + predicate:((d_year) IN (2001, 2002) and (d_year = 2002) and d_date_sk is not null) + Please refer to the previous TableScan [TS_3] + <-Map 1 [SIMPLE_EDGE] + SHUFFLE [RS_140] + PartitionCols:_col0 + Select Operator [SEL_133] (rows=575995635 width=88) + Output:["_col0","_col1","_col2"] + Filter Operator [FIL_315] (rows=575995635 width=88) + predicate:(ss_customer_sk is not null and ss_sold_date_sk is not null) + Please refer to the previous TableScan [TS_0] + <-Reducer 32 [CONTAINS] + Reduce Output Operator [RS_177] + PartitionCols:_col0 + Select Operator [SEL_170] (rows=1 width=162) + Output:["_col0","_col1","_col2","_col3"] + Group By Operator [GBY_169] (rows=1 width=162) + Output:["_col0","_col1","_col2","_col3","_col4"],aggregations:["max(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3 + <-Reducer 31 [SIMPLE_EDGE] + SHUFFLE [RS_168] + PartitionCols:_col0, _col1, _col2, _col3 + Group By Operator [GBY_167] (rows=1 width=162) + Output:["_col0","_col1","_col2","_col3","_col4"],aggregations:["max(_col2)"],keys:_col6, _col4, _col7, _col8 + Merge Join Operator [MERGEJOIN_338] (rows=1 width=162) + Conds:RS_163._col1=RS_164._col0(Inner),Output:["_col2","_col4","_col6","_col7","_col8"] + <-Map 33 [SIMPLE_EDGE] + SHUFFLE [RS_164] + PartitionCols:_col0 + Select Operator [SEL_159] (rows=1 width=860) + Output:["_col0","_col1","_col2","_col3"] + Filter Operator [FIL_320] (rows=1 width=860) + predicate:false + Please refer to the previous TableScan [TS_6] + <-Reducer 30 [SIMPLE_EDGE] + SHUFFLE [RS_163] + PartitionCols:_col1 + Merge Join Operator [MERGEJOIN_337] (rows=1 width=148) + Conds:RS_160._col0=RS_161._col0(Inner),Output:["_col1","_col2","_col4"] + <-Map 20 [SIMPLE_EDGE] + SHUFFLE [RS_161] + PartitionCols:_col0 + Select Operator [SEL_156] (rows=1 width=1119) + Output:["_col0","_col1"] + Filter Operator [FIL_319] (rows=1 width=1119) + predicate:false + Please refer to the previous TableScan [TS_3] + <-Map 34 [SIMPLE_EDGE] + SHUFFLE [RS_160] + PartitionCols:_col0 + Select Operator [SEL_153] (rows=1 width=135) + Output:["_col0","_col1","_col2"] + Filter Operator [FIL_318] (rows=1 width=135) + predicate:false + Please refer to the previous TableScan [TS_21] + <-Union 5 [SIMPLE_EDGE] + <-Reducer 23 [CONTAINS] + Reduce Output Operator [RS_174] + PartitionCols:_col0 + Select Operator [SEL_40] (rows=1 width=162) + Output:["_col0","_col1"] + Group By Operator [GBY_39] (rows=1 width=162) + Output:["_col0","_col1","_col2","_col3","_col4"],aggregations:["max(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3 + <-Reducer 22 [SIMPLE_EDGE] + SHUFFLE [RS_38] + PartitionCols:_col0, _col1, _col2, _col3 + Group By Operator [GBY_37] (rows=1 width=162) + Output:["_col0","_col1","_col2","_col3","_col4"],aggregations:["max(_col2)"],keys:_col6, _col4, _col7, _col8 + Merge Join Operator [MERGEJOIN_326] (rows=1 width=162) + Conds:RS_33._col1=RS_34._col0(Inner),Output:["_col2","_col4","_col6","_col7","_col8"] + <-Map 33 [SIMPLE_EDGE] + SHUFFLE [RS_34] + PartitionCols:_col0 + Select Operator [SEL_29] (rows=1 width=860) + Output:["_col0","_col1","_col2","_col3"] + Filter Operator [FIL_302] (rows=1 width=860) + predicate:false + Please refer to the previous TableScan [TS_6] + <-Reducer 21 [SIMPLE_EDGE] + SHUFFLE [RS_33] + PartitionCols:_col1 + Merge Join Operator [MERGEJOIN_325] (rows=1 width=148) + Conds:RS_30._col0=RS_31._col0(Inner),Output:["_col1","_col2","_col4"] + <-Map 20 [SIMPLE_EDGE] + SHUFFLE [RS_31] + PartitionCols:_col0 + Select Operator [SEL_26] (rows=1 width=1119) + Output:["_col0","_col1"] + Filter Operator [FIL_301] (rows=1 width=1119) + predicate:false + Please refer to the previous TableScan [TS_3] + <-Map 34 [SIMPLE_EDGE] + SHUFFLE [RS_30] + PartitionCols:_col0 + Select Operator [SEL_23] (rows=1 width=135) + Output:["_col0","_col1","_col2"] + Filter Operator [FIL_300] (rows=1 width=135) + predicate:false + Please refer to the previous TableScan [TS_21] + <-Reducer 4 [CONTAINS] + Reduce Output Operator [RS_174] + PartitionCols:_col0 + Select Operator [SEL_20] (rows=116159124 width=88) + Output:["_col0","_col1"] + Filter Operator [FIL_19] (rows=116159124 width=88) + predicate:(_col4 > 0) + Select Operator [SEL_322] (rows=348477374 width=88) + Output:["_col0","_col4"] + Group By Operator [GBY_18] (rows=348477374 width=88) + Output:["_col0","_col1","_col2","_col3","_col4"],aggregations:["max(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3 + <-Reducer 3 [SIMPLE_EDGE] + SHUFFLE [RS_17] + PartitionCols:_col0, _col1, _col2, _col3 + Group By Operator [GBY_16] (rows=696954748 width=88) + Output:["_col0","_col1","_col2","_col3","_col4"],aggregations:["max(_col2)"],keys:_col6, _col7, _col8, _col4 + Merge Join Operator [MERGEJOIN_324] (rows=696954748 width=88) + Conds:RS_12._col1=RS_13._col0(Inner),Output:["_col2","_col4","_col6","_col7","_col8"] + <-Map 33 [SIMPLE_EDGE] + SHUFFLE [RS_13] + PartitionCols:_col0 + Select Operator [SEL_8] (rows=80000000 width=860) + Output:["_col0","_col1","_col2","_col3"] + Filter Operator [FIL_299] (rows=80000000 width=860) + predicate:(c_customer_sk is not null and c_customer_id is not null) + Please refer to the previous TableScan [TS_6] + <-Reducer 2 [SIMPLE_EDGE] + SHUFFLE [RS_12] + PartitionCols:_col1 + Merge Join Operator [MERGEJOIN_323] (rows=633595212 width=88) + Conds:RS_9._col0=RS_10._col0(Inner),Output:["_col1","_col2","_col4"] + <-Map 20 [SIMPLE_EDGE] + SHUFFLE [RS_10] + PartitionCols:_col0 + Select Operator [SEL_5] (rows=18262 width=1119) + Output:["_col0","_col1"] + Filter Operator [FIL_298] (rows=18262 width=1119) + predicate:((d_year) IN (2001, 2002) and (d_year = 2001) and d_date_sk is not null) + Please refer to the previous TableScan [TS_3] + <-Map 1 [SIMPLE_EDGE] + SHUFFLE [RS_9] + PartitionCols:_col0 + Select Operator [SEL_2] (rows=575995635 width=88) + Output:["_col0","_col1","_col2"] + Filter Operator [FIL_297] (rows=575995635 width=88) + predicate:(ss_customer_sk is not null and ss_sold_date_sk is not null) + Please refer to the previous TableScan [TS_0] +