== Physical Plan ==
VeloxColumnarToRow (127)
+- TakeOrderedAndProjectExecTransformer (126)
   +- ^ FilterExecTransformer (124)
      +- ^ RegularHashAggregateExecTransformer (123)
         +- ^ ProjectExecTransformer (122)
            +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (121)
               :- ^ WindowExecTransformer (110)
               :  +- ^ SortExecTransformer (109)
               :     +- ^ InputIteratorTransformer (108)
               :        +- ColumnarExchange (106)
               :           +- VeloxResizeBatches (105)
               :              +- ^ ProjectExecTransformer (103)
               :                 +- ^ FilterExecTransformer (102)
               :                    +- ^ ShuffledHashJoinExecTransformer FullOuter BuildRight (101)
               :                       :- ^ InputIteratorTransformer (50)
               :                       :  +- ColumnarExchange (48)
               :                       :     +- VeloxResizeBatches (47)
               :                       :        +- ^ ProjectExecTransformer (45)
               :                       :           +- ^ RegularHashAggregateExecTransformer (44)
               :                       :              +- ^ InputIteratorTransformer (43)
               :                       :                 +- ColumnarExchange (41)
               :                       :                    +- VeloxResizeBatches (40)
               :                       :                       +- ^ ProjectExecTransformer (38)
               :                       :                          +- ^ FlushableHashAggregateExecTransformer (37)
               :                       :                             +- ^ ProjectExecTransformer (36)
               :                       :                                +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (35)
               :                       :                                   :- ^ ProjectExecTransformer (24)
               :                       :                                   :  +- ^ WindowExecTransformer (23)
               :                       :                                   :     +- ^ SortExecTransformer (22)
               :                       :                                   :        +- ^ InputIteratorTransformer (21)
               :                       :                                   :           +- ColumnarExchange (19)
               :                       :                                   :              +- VeloxResizeBatches (18)
               :                       :                                   :                 +- ^ ProjectExecTransformer (16)
               :                       :                                   :                    +- ^ RegularHashAggregateExecTransformer (15)
               :                       :                                   :                       +- ^ InputIteratorTransformer (14)
               :                       :                                   :                          +- ColumnarExchange (12)
               :                       :                                   :                             +- VeloxResizeBatches (11)
               :                       :                                   :                                +- ^ ProjectExecTransformer (9)
               :                       :                                   :                                   +- ^ FlushableHashAggregateExecTransformer (8)
               :                       :                                   :                                      +- ^ ProjectExecTransformer (7)
               :                       :                                   :                                         +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (6)
               :                       :                                   :                                            :- ^ FilterExecTransformer (2)
               :                       :                                   :                                            :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.web_sales (1)
               :                       :                                   :                                            +- ^ InputIteratorTransformer (5)
               :                       :                                   :                                               +- ReusedExchange (3)
               :                       :                                   +- ^ InputIteratorTransformer (34)
               :                       :                                      +- ColumnarBroadcastExchange (32)
               :                       :                                         +- ^ ProjectExecTransformer (30)
               :                       :                                            +- ^ WindowExecTransformer (29)
               :                       :                                               +- ^ SortExecTransformer (28)
               :                       :                                                  +- ^ InputIteratorTransformer (27)
               :                       :                                                     +- ReusedExchange (25)
               :                       +- ^ InputIteratorTransformer (100)
               :                          +- ColumnarExchange (98)
               :                             +- VeloxResizeBatches (97)
               :                                +- ^ ProjectExecTransformer (95)
               :                                   +- ^ RegularHashAggregateExecTransformer (94)
               :                                      +- ^ InputIteratorTransformer (93)
               :                                         +- ColumnarExchange (91)
               :                                            +- VeloxResizeBatches (90)
               :                                               +- ^ ProjectExecTransformer (88)
               :                                                  +- ^ FlushableHashAggregateExecTransformer (87)
               :                                                     +- ^ ProjectExecTransformer (86)
               :                                                        +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (85)
               :                                                           :- ^ ProjectExecTransformer (74)
               :                                                           :  +- ^ WindowExecTransformer (73)
               :                                                           :     +- ^ SortExecTransformer (72)
               :                                                           :        +- ^ InputIteratorTransformer (71)
               :                                                           :           +- ColumnarExchange (69)
               :                                                           :              +- VeloxResizeBatches (68)
               :                                                           :                 +- ^ ProjectExecTransformer (66)
               :                                                           :                    +- ^ RegularHashAggregateExecTransformer (65)
               :                                                           :                       +- ^ InputIteratorTransformer (64)
               :                                                           :                          +- ColumnarExchange (62)
               :                                                           :                             +- VeloxResizeBatches (61)
               :                                                           :                                +- ^ ProjectExecTransformer (59)
               :                                                           :                                   +- ^ FlushableHashAggregateExecTransformer (58)
               :                                                           :                                      +- ^ ProjectExecTransformer (57)
               :                                                           :                                         +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (56)
               :                                                           :                                            :- ^ FilterExecTransformer (52)
               :                                                           :                                            :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (51)
               :                                                           :                                            +- ^ InputIteratorTransformer (55)
               :                                                           :                                               +- ReusedExchange (53)
               :                                                           +- ^ InputIteratorTransformer (84)
               :                                                              +- ColumnarBroadcastExchange (82)
               :                                                                 +- ^ ProjectExecTransformer (80)
               :                                                                    +- ^ WindowExecTransformer (79)
               :                                                                       +- ^ SortExecTransformer (78)
               :                                                                          +- ^ InputIteratorTransformer (77)
               :                                                                             +- ReusedExchange (75)
               +- ^ InputIteratorTransformer (120)
                  +- ColumnarBroadcastExchange (118)
                     +- ^ ProjectExecTransformer (116)
                        +- ^ WindowExecTransformer (115)
                           +- ^ SortExecTransformer (114)
                              +- ^ InputIteratorTransformer (113)
                                 +- ReusedExchange (111)


(1) FileSourceScanExecTransformer parquet spark_catalog.default.web_sales
Output [3]: [ws_item_sk#1, ws_sales_price#2, ws_sold_date_sk#3]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(ws_sold_date_sk#3), dynamicpruningexpression(ws_sold_date_sk#3 IN dynamicpruning#4)]
PushedFilters: [IsNotNull(ws_item_sk)]
ReadSchema: struct<ws_item_sk:int,ws_sales_price:decimal(7,2)>

(2) FilterExecTransformer
Input [3]: [ws_item_sk#1, ws_sales_price#2, ws_sold_date_sk#3]
Arguments: isnotnull(ws_item_sk#1)

(3) ReusedExchange [Reuses operator id: 132]
Output [2]: [d_date_sk#5, d_date#6]

(4) InputAdapter
Input [2]: [d_date_sk#5, d_date#6]

(5) InputIteratorTransformer
Input [2]: [d_date_sk#5, d_date#6]

(6) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_sold_date_sk#3]
Right keys [1]: [d_date_sk#5]
Join type: Inner
Join condition: None

(7) ProjectExecTransformer
Output [3]: [ws_item_sk#1, d_date#6, UnscaledValue(ws_sales_price#2) AS _pre_1#7]
Input [5]: [ws_item_sk#1, ws_sales_price#2, ws_sold_date_sk#3, d_date_sk#5, d_date#6]

(8) FlushableHashAggregateExecTransformer
Input [3]: [ws_item_sk#1, d_date#6, _pre_1#7]
Keys [2]: [ws_item_sk#1, d_date#6]
Functions [1]: [partial_sum(_pre_1#7)]
Aggregate Attributes [1]: [sum#8]
Results [3]: [ws_item_sk#1, d_date#6, sum#9]

(9) ProjectExecTransformer
Output [4]: [hash(ws_item_sk#1, d_date#6, 42) AS hash_partition_key#10, ws_item_sk#1, d_date#6, sum#9]
Input [3]: [ws_item_sk#1, d_date#6, sum#9]

(10) WholeStageCodegenTransformer (3)
Input [4]: [hash_partition_key#10, ws_item_sk#1, d_date#6, sum#9]
Arguments: false

(11) VeloxResizeBatches
Input [4]: [hash_partition_key#10, ws_item_sk#1, d_date#6, sum#9]
Arguments: 1024, 2147483647, 10485760

(12) ColumnarExchange
Input [4]: [hash_partition_key#10, ws_item_sk#1, d_date#6, sum#9]
Arguments: hashpartitioning(ws_item_sk#1, d_date#6, 1), ENSURE_REQUIREMENTS, [ws_item_sk#1, d_date#6, sum#9], [plan_id=1], [shuffle_writer_type=hash]

(13) InputAdapter
Input [3]: [ws_item_sk#1, d_date#6, sum#9]

(14) InputIteratorTransformer
Input [3]: [ws_item_sk#1, d_date#6, sum#9]

(15) RegularHashAggregateExecTransformer
Input [3]: [ws_item_sk#1, d_date#6, sum#9]
Keys [2]: [ws_item_sk#1, d_date#6]
Functions [1]: [sum(UnscaledValue(ws_sales_price#2))]
Aggregate Attributes [1]: [sum(UnscaledValue(ws_sales_price#2))#11]
Results [3]: [ws_item_sk#1, d_date#6, sum(UnscaledValue(ws_sales_price#2))#11]

(16) ProjectExecTransformer
Output [5]: [hash(ws_item_sk#1, 42) AS hash_partition_key#12, ws_item_sk#1 AS item_sk#13, d_date#6, MakeDecimal(sum(UnscaledValue(ws_sales_price#2))#11,17,2) AS sumws#14, ws_item_sk#1]
Input [3]: [ws_item_sk#1, d_date#6, sum(UnscaledValue(ws_sales_price#2))#11]

(17) WholeStageCodegenTransformer (4)
Input [5]: [hash_partition_key#12, item_sk#13, d_date#6, sumws#14, ws_item_sk#1]
Arguments: false

(18) VeloxResizeBatches
Input [5]: [hash_partition_key#12, item_sk#13, d_date#6, sumws#14, ws_item_sk#1]
Arguments: 1024, 2147483647, 10485760

(19) ColumnarExchange
Input [5]: [hash_partition_key#12, item_sk#13, d_date#6, sumws#14, ws_item_sk#1]
Arguments: hashpartitioning(ws_item_sk#1, 1), ENSURE_REQUIREMENTS, [item_sk#13, d_date#6, sumws#14, ws_item_sk#1], [plan_id=2], [shuffle_writer_type=hash]

(20) InputAdapter
Input [4]: [item_sk#13, d_date#6, sumws#14, ws_item_sk#1]

(21) InputIteratorTransformer
Input [4]: [item_sk#13, d_date#6, sumws#14, ws_item_sk#1]

(22) SortExecTransformer
Input [4]: [item_sk#13, d_date#6, sumws#14, ws_item_sk#1]
Arguments: [ws_item_sk#1 ASC NULLS FIRST, d_date#6 ASC NULLS FIRST], false, 0

(23) WindowExecTransformer
Input [4]: [item_sk#13, d_date#6, sumws#14, ws_item_sk#1]
Arguments: [row_number() windowspecdefinition(ws_item_sk#1, d_date#6 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rk#15], [ws_item_sk#1], [d_date#6 ASC NULLS FIRST]

(24) ProjectExecTransformer
Output [4]: [item_sk#13, d_date#6, sumws#14, rk#15]
Input [5]: [item_sk#13, d_date#6, sumws#14, ws_item_sk#1, rk#15]

(25) ReusedExchange [Reuses operator id: 19]
Output [4]: [item_sk#16, d_date#17, sumws#18, ws_item_sk#19]

(26) InputAdapter
Input [4]: [item_sk#16, d_date#17, sumws#18, ws_item_sk#19]

(27) InputIteratorTransformer
Input [4]: [item_sk#16, d_date#17, sumws#18, ws_item_sk#19]

(28) SortExecTransformer
Input [4]: [item_sk#16, d_date#17, sumws#18, ws_item_sk#19]
Arguments: [ws_item_sk#19 ASC NULLS FIRST, d_date#17 ASC NULLS FIRST], false, 0

(29) WindowExecTransformer
Input [4]: [item_sk#16, d_date#17, sumws#18, ws_item_sk#19]
Arguments: [row_number() windowspecdefinition(ws_item_sk#19, d_date#17 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rk#20], [ws_item_sk#19], [d_date#17 ASC NULLS FIRST]

(30) ProjectExecTransformer
Output [3]: [item_sk#16, sumws#18, rk#20]
Input [5]: [item_sk#16, d_date#17, sumws#18, ws_item_sk#19, rk#20]

(31) WholeStageCodegenTransformer (9)
Input [3]: [item_sk#16, sumws#18, rk#20]
Arguments: false

(32) ColumnarBroadcastExchange
Input [3]: [item_sk#16, sumws#18, rk#20]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=3]

(33) InputAdapter
Input [3]: [item_sk#16, sumws#18, rk#20]

(34) InputIteratorTransformer
Input [3]: [item_sk#16, sumws#18, rk#20]

(35) BroadcastHashJoinExecTransformer
Left keys [1]: [item_sk#13]
Right keys [1]: [item_sk#16]
Join type: Inner
Join condition: (rk#15 >= rk#20)

(36) ProjectExecTransformer
Output [4]: [item_sk#13, d_date#6, sumws#14, sumws#18]
Input [7]: [item_sk#13, d_date#6, sumws#14, rk#15, item_sk#16, sumws#18, rk#20]

(37) FlushableHashAggregateExecTransformer
Input [4]: [item_sk#13, d_date#6, sumws#14, sumws#18]
Keys [3]: [item_sk#13, d_date#6, sumws#14]
Functions [1]: [partial_sum(sumws#18)]
Aggregate Attributes [2]: [sum#21, isEmpty#22]
Results [5]: [item_sk#13, d_date#6, sumws#14, sum#23, isEmpty#24]

(38) ProjectExecTransformer
Output [6]: [hash(item_sk#13, d_date#6, sumws#14, 42) AS hash_partition_key#25, item_sk#13, d_date#6, sumws#14, sum#23, isEmpty#24]
Input [5]: [item_sk#13, d_date#6, sumws#14, sum#23, isEmpty#24]

(39) WholeStageCodegenTransformer (10)
Input [6]: [hash_partition_key#25, item_sk#13, d_date#6, sumws#14, sum#23, isEmpty#24]
Arguments: false

(40) VeloxResizeBatches
Input [6]: [hash_partition_key#25, item_sk#13, d_date#6, sumws#14, sum#23, isEmpty#24]
Arguments: 1024, 2147483647, 10485760

(41) ColumnarExchange
Input [6]: [hash_partition_key#25, item_sk#13, d_date#6, sumws#14, sum#23, isEmpty#24]
Arguments: hashpartitioning(item_sk#13, d_date#6, sumws#14, 1), ENSURE_REQUIREMENTS, [item_sk#13, d_date#6, sumws#14, sum#23, isEmpty#24], [plan_id=4], [shuffle_writer_type=hash]

(42) InputAdapter
Input [5]: [item_sk#13, d_date#6, sumws#14, sum#23, isEmpty#24]

(43) InputIteratorTransformer
Input [5]: [item_sk#13, d_date#6, sumws#14, sum#23, isEmpty#24]

(44) RegularHashAggregateExecTransformer
Input [5]: [item_sk#13, d_date#6, sumws#14, sum#23, isEmpty#24]
Keys [3]: [item_sk#13, d_date#6, sumws#14]
Functions [1]: [sum(sumws#18)]
Aggregate Attributes [1]: [sum(sumws#18)#26]
Results [4]: [item_sk#13, d_date#6, sumws#14, sum(sumws#18)#26]

(45) ProjectExecTransformer
Output [4]: [hash(item_sk#13, d_date#6, 42) AS hash_partition_key#27, item_sk#13, d_date#6, sum(sumws#18)#26 AS cume_sales#28]
Input [4]: [item_sk#13, d_date#6, sumws#14, sum(sumws#18)#26]

(46) WholeStageCodegenTransformer (11)
Input [4]: [hash_partition_key#27, item_sk#13, d_date#6, cume_sales#28]
Arguments: false

(47) VeloxResizeBatches
Input [4]: [hash_partition_key#27, item_sk#13, d_date#6, cume_sales#28]
Arguments: 1024, 2147483647, 10485760

(48) ColumnarExchange
Input [4]: [hash_partition_key#27, item_sk#13, d_date#6, cume_sales#28]
Arguments: hashpartitioning(item_sk#13, d_date#6, 1), ENSURE_REQUIREMENTS, [item_sk#13, d_date#6, cume_sales#28], [plan_id=5], [shuffle_writer_type=hash]

(49) InputAdapter
Input [3]: [item_sk#13, d_date#6, cume_sales#28]

(50) InputIteratorTransformer
Input [3]: [item_sk#13, d_date#6, cume_sales#28]

(51) FileSourceScanExecTransformer parquet spark_catalog.default.store_sales
Output [3]: [ss_item_sk#29, ss_sales_price#30, ss_sold_date_sk#31]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(ss_sold_date_sk#31), dynamicpruningexpression(ss_sold_date_sk#31 IN dynamicpruning#4)]
PushedFilters: [IsNotNull(ss_item_sk)]
ReadSchema: struct<ss_item_sk:int,ss_sales_price:decimal(7,2)>

(52) FilterExecTransformer
Input [3]: [ss_item_sk#29, ss_sales_price#30, ss_sold_date_sk#31]
Arguments: isnotnull(ss_item_sk#29)

(53) ReusedExchange [Reuses operator id: 132]
Output [2]: [d_date_sk#32, d_date#33]

(54) InputAdapter
Input [2]: [d_date_sk#32, d_date#33]

(55) InputIteratorTransformer
Input [2]: [d_date_sk#32, d_date#33]

(56) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_sold_date_sk#31]
Right keys [1]: [d_date_sk#32]
Join type: Inner
Join condition: None

(57) ProjectExecTransformer
Output [3]: [ss_item_sk#29, d_date#33, UnscaledValue(ss_sales_price#30) AS _pre_2#34]
Input [5]: [ss_item_sk#29, ss_sales_price#30, ss_sold_date_sk#31, d_date_sk#32, d_date#33]

(58) FlushableHashAggregateExecTransformer
Input [3]: [ss_item_sk#29, d_date#33, _pre_2#34]
Keys [2]: [ss_item_sk#29, d_date#33]
Functions [1]: [partial_sum(_pre_2#34)]
Aggregate Attributes [1]: [sum#35]
Results [3]: [ss_item_sk#29, d_date#33, sum#36]

(59) ProjectExecTransformer
Output [4]: [hash(ss_item_sk#29, d_date#33, 42) AS hash_partition_key#37, ss_item_sk#29, d_date#33, sum#36]
Input [3]: [ss_item_sk#29, d_date#33, sum#36]

(60) WholeStageCodegenTransformer (14)
Input [4]: [hash_partition_key#37, ss_item_sk#29, d_date#33, sum#36]
Arguments: false

(61) VeloxResizeBatches
Input [4]: [hash_partition_key#37, ss_item_sk#29, d_date#33, sum#36]
Arguments: 1024, 2147483647, 10485760

(62) ColumnarExchange
Input [4]: [hash_partition_key#37, ss_item_sk#29, d_date#33, sum#36]
Arguments: hashpartitioning(ss_item_sk#29, d_date#33, 1), ENSURE_REQUIREMENTS, [ss_item_sk#29, d_date#33, sum#36], [plan_id=6], [shuffle_writer_type=hash]

(63) InputAdapter
Input [3]: [ss_item_sk#29, d_date#33, sum#36]

(64) InputIteratorTransformer
Input [3]: [ss_item_sk#29, d_date#33, sum#36]

(65) RegularHashAggregateExecTransformer
Input [3]: [ss_item_sk#29, d_date#33, sum#36]
Keys [2]: [ss_item_sk#29, d_date#33]
Functions [1]: [sum(UnscaledValue(ss_sales_price#30))]
Aggregate Attributes [1]: [sum(UnscaledValue(ss_sales_price#30))#38]
Results [3]: [ss_item_sk#29, d_date#33, sum(UnscaledValue(ss_sales_price#30))#38]

(66) ProjectExecTransformer
Output [5]: [hash(ss_item_sk#29, 42) AS hash_partition_key#39, ss_item_sk#29 AS item_sk#40, d_date#33, MakeDecimal(sum(UnscaledValue(ss_sales_price#30))#38,17,2) AS sumss#41, ss_item_sk#29]
Input [3]: [ss_item_sk#29, d_date#33, sum(UnscaledValue(ss_sales_price#30))#38]

(67) WholeStageCodegenTransformer (15)
Input [5]: [hash_partition_key#39, item_sk#40, d_date#33, sumss#41, ss_item_sk#29]
Arguments: false

(68) VeloxResizeBatches
Input [5]: [hash_partition_key#39, item_sk#40, d_date#33, sumss#41, ss_item_sk#29]
Arguments: 1024, 2147483647, 10485760

(69) ColumnarExchange
Input [5]: [hash_partition_key#39, item_sk#40, d_date#33, sumss#41, ss_item_sk#29]
Arguments: hashpartitioning(ss_item_sk#29, 1), ENSURE_REQUIREMENTS, [item_sk#40, d_date#33, sumss#41, ss_item_sk#29], [plan_id=7], [shuffle_writer_type=hash]

(70) InputAdapter
Input [4]: [item_sk#40, d_date#33, sumss#41, ss_item_sk#29]

(71) InputIteratorTransformer
Input [4]: [item_sk#40, d_date#33, sumss#41, ss_item_sk#29]

(72) SortExecTransformer
Input [4]: [item_sk#40, d_date#33, sumss#41, ss_item_sk#29]
Arguments: [ss_item_sk#29 ASC NULLS FIRST, d_date#33 ASC NULLS FIRST], false, 0

(73) WindowExecTransformer
Input [4]: [item_sk#40, d_date#33, sumss#41, ss_item_sk#29]
Arguments: [row_number() windowspecdefinition(ss_item_sk#29, d_date#33 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rk#42], [ss_item_sk#29], [d_date#33 ASC NULLS FIRST]

(74) ProjectExecTransformer
Output [4]: [item_sk#40, d_date#33, sumss#41, rk#42]
Input [5]: [item_sk#40, d_date#33, sumss#41, ss_item_sk#29, rk#42]

(75) ReusedExchange [Reuses operator id: 69]
Output [4]: [item_sk#43, d_date#44, sumss#45, ss_item_sk#46]

(76) InputAdapter
Input [4]: [item_sk#43, d_date#44, sumss#45, ss_item_sk#46]

(77) InputIteratorTransformer
Input [4]: [item_sk#43, d_date#44, sumss#45, ss_item_sk#46]

(78) SortExecTransformer
Input [4]: [item_sk#43, d_date#44, sumss#45, ss_item_sk#46]
Arguments: [ss_item_sk#46 ASC NULLS FIRST, d_date#44 ASC NULLS FIRST], false, 0

(79) WindowExecTransformer
Input [4]: [item_sk#43, d_date#44, sumss#45, ss_item_sk#46]
Arguments: [row_number() windowspecdefinition(ss_item_sk#46, d_date#44 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rk#47], [ss_item_sk#46], [d_date#44 ASC NULLS FIRST]

(80) ProjectExecTransformer
Output [3]: [item_sk#43, sumss#45, rk#47]
Input [5]: [item_sk#43, d_date#44, sumss#45, ss_item_sk#46, rk#47]

(81) WholeStageCodegenTransformer (20)
Input [3]: [item_sk#43, sumss#45, rk#47]
Arguments: false

(82) ColumnarBroadcastExchange
Input [3]: [item_sk#43, sumss#45, rk#47]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=8]

(83) InputAdapter
Input [3]: [item_sk#43, sumss#45, rk#47]

(84) InputIteratorTransformer
Input [3]: [item_sk#43, sumss#45, rk#47]

(85) BroadcastHashJoinExecTransformer
Left keys [1]: [item_sk#40]
Right keys [1]: [item_sk#43]
Join type: Inner
Join condition: (rk#42 >= rk#47)

(86) ProjectExecTransformer
Output [4]: [item_sk#40, d_date#33, sumss#41, sumss#45]
Input [7]: [item_sk#40, d_date#33, sumss#41, rk#42, item_sk#43, sumss#45, rk#47]

(87) FlushableHashAggregateExecTransformer
Input [4]: [item_sk#40, d_date#33, sumss#41, sumss#45]
Keys [3]: [item_sk#40, d_date#33, sumss#41]
Functions [1]: [partial_sum(sumss#45)]
Aggregate Attributes [2]: [sum#48, isEmpty#49]
Results [5]: [item_sk#40, d_date#33, sumss#41, sum#50, isEmpty#51]

(88) ProjectExecTransformer
Output [6]: [hash(item_sk#40, d_date#33, sumss#41, 42) AS hash_partition_key#52, item_sk#40, d_date#33, sumss#41, sum#50, isEmpty#51]
Input [5]: [item_sk#40, d_date#33, sumss#41, sum#50, isEmpty#51]

(89) WholeStageCodegenTransformer (21)
Input [6]: [hash_partition_key#52, item_sk#40, d_date#33, sumss#41, sum#50, isEmpty#51]
Arguments: false

(90) VeloxResizeBatches
Input [6]: [hash_partition_key#52, item_sk#40, d_date#33, sumss#41, sum#50, isEmpty#51]
Arguments: 1024, 2147483647, 10485760

(91) ColumnarExchange
Input [6]: [hash_partition_key#52, item_sk#40, d_date#33, sumss#41, sum#50, isEmpty#51]
Arguments: hashpartitioning(item_sk#40, d_date#33, sumss#41, 1), ENSURE_REQUIREMENTS, [item_sk#40, d_date#33, sumss#41, sum#50, isEmpty#51], [plan_id=9], [shuffle_writer_type=hash]

(92) InputAdapter
Input [5]: [item_sk#40, d_date#33, sumss#41, sum#50, isEmpty#51]

(93) InputIteratorTransformer
Input [5]: [item_sk#40, d_date#33, sumss#41, sum#50, isEmpty#51]

(94) RegularHashAggregateExecTransformer
Input [5]: [item_sk#40, d_date#33, sumss#41, sum#50, isEmpty#51]
Keys [3]: [item_sk#40, d_date#33, sumss#41]
Functions [1]: [sum(sumss#45)]
Aggregate Attributes [1]: [sum(sumss#45)#53]
Results [4]: [item_sk#40, d_date#33, sumss#41, sum(sumss#45)#53]

(95) ProjectExecTransformer
Output [4]: [hash(item_sk#40, d_date#33, 42) AS hash_partition_key#54, item_sk#40, d_date#33, sum(sumss#45)#53 AS cume_sales#55]
Input [4]: [item_sk#40, d_date#33, sumss#41, sum(sumss#45)#53]

(96) WholeStageCodegenTransformer (22)
Input [4]: [hash_partition_key#54, item_sk#40, d_date#33, cume_sales#55]
Arguments: false

(97) VeloxResizeBatches
Input [4]: [hash_partition_key#54, item_sk#40, d_date#33, cume_sales#55]
Arguments: 1024, 2147483647, 10485760

(98) ColumnarExchange
Input [4]: [hash_partition_key#54, item_sk#40, d_date#33, cume_sales#55]
Arguments: hashpartitioning(item_sk#40, d_date#33, 1), ENSURE_REQUIREMENTS, [item_sk#40, d_date#33, cume_sales#55], [plan_id=10], [shuffle_writer_type=hash]

(99) InputAdapter
Input [3]: [item_sk#40, d_date#33, cume_sales#55]

(100) InputIteratorTransformer
Input [3]: [item_sk#40, d_date#33, cume_sales#55]

(101) ShuffledHashJoinExecTransformer
Left keys [2]: [item_sk#13, d_date#6]
Right keys [2]: [item_sk#40, d_date#33]
Join type: FullOuter
Join condition: None

(102) FilterExecTransformer
Input [6]: [item_sk#13, d_date#6, cume_sales#28, item_sk#40, d_date#33, cume_sales#55]
Arguments: isnotnull(CASE WHEN isnotnull(item_sk#13) THEN item_sk#13 ELSE item_sk#40 END)

(103) ProjectExecTransformer
Output [5]: [hash(CASE WHEN isnotnull(item_sk#13) THEN item_sk#13 ELSE item_sk#40 END, 42) AS hash_partition_key#56, CASE WHEN isnotnull(item_sk#13) THEN item_sk#13 ELSE item_sk#40 END AS item_sk#57, CASE WHEN isnotnull(d_date#6) THEN d_date#6 ELSE d_date#33 END AS d_date#58, cume_sales#28 AS web_sales#59, cume_sales#55 AS store_sales#60]
Input [6]: [item_sk#13, d_date#6, cume_sales#28, item_sk#40, d_date#33, cume_sales#55]

(104) WholeStageCodegenTransformer (23)
Input [5]: [hash_partition_key#56, item_sk#57, d_date#58, web_sales#59, store_sales#60]
Arguments: false

(105) VeloxResizeBatches
Input [5]: [hash_partition_key#56, item_sk#57, d_date#58, web_sales#59, store_sales#60]
Arguments: 1024, 2147483647, 10485760

(106) ColumnarExchange
Input [5]: [hash_partition_key#56, item_sk#57, d_date#58, web_sales#59, store_sales#60]
Arguments: hashpartitioning(item_sk#57, 1), ENSURE_REQUIREMENTS, [item_sk#57, d_date#58, web_sales#59, store_sales#60], [plan_id=11], [shuffle_writer_type=hash]

(107) InputAdapter
Input [4]: [item_sk#57, d_date#58, web_sales#59, store_sales#60]

(108) InputIteratorTransformer
Input [4]: [item_sk#57, d_date#58, web_sales#59, store_sales#60]

(109) SortExecTransformer
Input [4]: [item_sk#57, d_date#58, web_sales#59, store_sales#60]
Arguments: [item_sk#57 ASC NULLS FIRST, d_date#58 ASC NULLS FIRST], false, 0

(110) WindowExecTransformer
Input [4]: [item_sk#57, d_date#58, web_sales#59, store_sales#60]
Arguments: [row_number() windowspecdefinition(item_sk#57, d_date#58 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rk#61], [item_sk#57], [d_date#58 ASC NULLS FIRST]

(111) ReusedExchange [Reuses operator id: 106]
Output [4]: [item_sk#62, d_date#63, web_sales#64, store_sales#65]

(112) InputAdapter
Input [4]: [item_sk#62, d_date#63, web_sales#64, store_sales#65]

(113) InputIteratorTransformer
Input [4]: [item_sk#62, d_date#63, web_sales#64, store_sales#65]

(114) SortExecTransformer
Input [4]: [item_sk#62, d_date#63, web_sales#64, store_sales#65]
Arguments: [item_sk#62 ASC NULLS FIRST, d_date#63 ASC NULLS FIRST], false, 0

(115) WindowExecTransformer
Input [4]: [item_sk#62, d_date#63, web_sales#64, store_sales#65]
Arguments: [row_number() windowspecdefinition(item_sk#62, d_date#63 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rk#66], [item_sk#62], [d_date#63 ASC NULLS FIRST]

(116) ProjectExecTransformer
Output [4]: [item_sk#62, web_sales#64, store_sales#65, rk#66]
Input [5]: [item_sk#62, d_date#63, web_sales#64, store_sales#65, rk#66]

(117) WholeStageCodegenTransformer (47)
Input [4]: [item_sk#62, web_sales#64, store_sales#65, rk#66]
Arguments: false

(118) ColumnarBroadcastExchange
Input [4]: [item_sk#62, web_sales#64, store_sales#65, rk#66]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=12]

(119) InputAdapter
Input [4]: [item_sk#62, web_sales#64, store_sales#65, rk#66]

(120) InputIteratorTransformer
Input [4]: [item_sk#62, web_sales#64, store_sales#65, rk#66]

(121) BroadcastHashJoinExecTransformer
Left keys [1]: [item_sk#57]
Right keys [1]: [item_sk#62]
Join type: Inner
Join condition: (rk#61 >= rk#66)

(122) ProjectExecTransformer
Output [6]: [item_sk#57, d_date#58, web_sales#59, store_sales#60, web_sales#64, store_sales#65]
Input [9]: [item_sk#57, d_date#58, web_sales#59, store_sales#60, rk#61, item_sk#62, web_sales#64, store_sales#65, rk#66]

(123) RegularHashAggregateExecTransformer
Input [6]: [item_sk#57, d_date#58, web_sales#59, store_sales#60, web_sales#64, store_sales#65]
Keys [4]: [item_sk#57, d_date#58, web_sales#59, store_sales#60]
Functions [2]: [max(web_sales#64), max(store_sales#65)]
Aggregate Attributes [2]: [max(web_sales#64)#67, max(store_sales#65)#68]
Results [6]: [item_sk#57, d_date#58, web_sales#59, store_sales#60, max(web_sales#64)#67 AS web_cumulative#69, max(store_sales#65)#68 AS store_cumulative#70]

(124) FilterExecTransformer
Input [6]: [item_sk#57, d_date#58, web_sales#59, store_sales#60, web_cumulative#69, store_cumulative#70]
Arguments: ((isnotnull(web_cumulative#69) AND isnotnull(store_cumulative#70)) AND (web_cumulative#69 > store_cumulative#70))

(125) WholeStageCodegenTransformer (48)
Input [6]: [item_sk#57, d_date#58, web_sales#59, store_sales#60, web_cumulative#69, store_cumulative#70]
Arguments: false

(126) TakeOrderedAndProjectExecTransformer
Input [6]: [item_sk#57, d_date#58, web_sales#59, store_sales#60, web_cumulative#69, store_cumulative#70]
Arguments: 100, [item_sk#57 ASC NULLS FIRST, d_date#58 ASC NULLS FIRST], [item_sk#57, d_date#58, web_sales#59, store_sales#60, web_cumulative#69, store_cumulative#70], 0

(127) VeloxColumnarToRow
Input [6]: [item_sk#57, d_date#58, web_sales#59, store_sales#60, web_cumulative#69, store_cumulative#70]

===== Subqueries =====

Subquery:1 Hosting operator id = 1 Hosting Expression = ws_sold_date_sk#3 IN dynamicpruning#4
ColumnarBroadcastExchange (132)
+- ^ ProjectExecTransformer (130)
   +- ^ FilterExecTransformer (129)
      +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (128)


(128) FileSourceScanExecTransformer parquet spark_catalog.default.date_dim
Output [3]: [d_date_sk#5, d_date#6, d_month_seq#71]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1212), LessThanOrEqual(d_month_seq,1223), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_date:date,d_month_seq:int>

(129) FilterExecTransformer
Input [3]: [d_date_sk#5, d_date#6, d_month_seq#71]
Arguments: (((isnotnull(d_month_seq#71) AND (d_month_seq#71 >= 1212)) AND (d_month_seq#71 <= 1223)) AND isnotnull(d_date_sk#5))

(130) ProjectExecTransformer
Output [2]: [d_date_sk#5, d_date#6]
Input [3]: [d_date_sk#5, d_date#6, d_month_seq#71]

(131) WholeStageCodegenTransformer (1)
Input [2]: [d_date_sk#5, d_date#6]
Arguments: false

(132) ColumnarBroadcastExchange
Input [2]: [d_date_sk#5, d_date#6]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=13]

Subquery:2 Hosting operator id = 51 Hosting Expression = ss_sold_date_sk#31 IN dynamicpruning#4


