== Physical Plan ==
VeloxColumnarToRow (313)
+- TakeOrderedAndProjectExecTransformer (312)
   +- ^ RegularHashAggregateExecTransformer (310)
      +- ^ InputIteratorTransformer (309)
         +- ColumnarExchange (307)
            +- VeloxResizeBatches (306)
               +- ^ ProjectExecTransformer (304)
                  +- ^ FlushableHashAggregateExecTransformer (303)
                     +- ^ InputIteratorTransformer (302)
                        +- ColumnarUnion (300)
                           :- ^ RegularHashAggregateExecTransformer (161)
                           :  +- ^ InputIteratorTransformer (160)
                           :     +- ColumnarUnion (158)
                           :        :- ^ FilterExecTransformer (102)
                           :        :  +- ^ ProjectExecTransformer (101)
                           :        :     +- ^ RegularHashAggregateExecTransformer (100)
                           :        :        +- ^ InputIteratorTransformer (99)
                           :        :           +- ColumnarExchange (97)
                           :        :              +- VeloxResizeBatches (96)
                           :        :                 +- ^ ProjectExecTransformer (94)
                           :        :                    +- ^ FlushableHashAggregateExecTransformer (93)
                           :        :                       +- ^ ProjectExecTransformer (92)
                           :        :                          +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (91)
                           :        :                             :- ^ ProjectExecTransformer (87)
                           :        :                             :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (86)
                           :        :                             :     :- ^ BroadcastHashJoinExecTransformer LeftSemi BuildRight (75)
                           :        :                             :     :  :- ^ FilterExecTransformer (2)
                           :        :                             :     :  :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (1)
                           :        :                             :     :  +- ^ InputIteratorTransformer (74)
                           :        :                             :     :     +- ColumnarBroadcastExchange (72)
                           :        :                             :     :        +- ^ ProjectExecTransformer (70)
                           :        :                             :     :           +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (69)
                           :        :                             :     :              :- ^ FilterExecTransformer (4)
                           :        :                             :     :              :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.item (3)
                           :        :                             :     :              +- ^ InputIteratorTransformer (68)
                           :        :                             :     :                 +- ColumnarBroadcastExchange (66)
                           :        :                             :     :                    +- ^ BroadcastHashJoinExecTransformer LeftSemi BuildRight (64)
                           :        :                             :     :                       :- ^ RegularHashAggregateExecTransformer (47)
                           :        :                             :     :                       :  +- ^ InputIteratorTransformer (46)
                           :        :                             :     :                       :     +- ColumnarExchange (44)
                           :        :                             :     :                       :        +- VeloxResizeBatches (43)
                           :        :                             :     :                       :           +- ^ ProjectExecTransformer (41)
                           :        :                             :     :                       :              +- ^ FlushableHashAggregateExecTransformer (40)
                           :        :                             :     :                       :                 +- ^ ProjectExecTransformer (39)
                           :        :                             :     :                       :                    +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (38)
                           :        :                             :     :                       :                       :- ^ ProjectExecTransformer (34)
                           :        :                             :     :                       :                       :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (33)
                           :        :                             :     :                       :                       :     :- ^ FilterExecTransformer (6)
                           :        :                             :     :                       :                       :     :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (5)
                           :        :                             :     :                       :                       :     +- ^ InputIteratorTransformer (32)
                           :        :                             :     :                       :                       :        +- ColumnarBroadcastExchange (30)
                           :        :                             :     :                       :                       :           +- ^ BroadcastHashJoinExecTransformer LeftSemi BuildRight (28)
                           :        :                             :     :                       :                       :              :- ^ FilterExecTransformer (8)
                           :        :                             :     :                       :                       :              :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.item (7)
                           :        :                             :     :                       :                       :              +- ^ InputIteratorTransformer (27)
                           :        :                             :     :                       :                       :                 +- ColumnarBroadcastExchange (25)
                           :        :                             :     :                       :                       :                    +- ^ ProjectExecTransformer (23)
                           :        :                             :     :                       :                       :                       +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (22)
                           :        :                             :     :                       :                       :                          :- ^ ProjectExecTransformer (18)
                           :        :                             :     :                       :                       :                          :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (17)
                           :        :                             :     :                       :                       :                          :     :- ^ FilterExecTransformer (10)
                           :        :                             :     :                       :                       :                          :     :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.catalog_sales (9)
                           :        :                             :     :                       :                       :                          :     +- ^ InputIteratorTransformer (16)
                           :        :                             :     :                       :                       :                          :        +- ColumnarBroadcastExchange (14)
                           :        :                             :     :                       :                       :                          :           +- ^ FilterExecTransformer (12)
                           :        :                             :     :                       :                       :                          :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.item (11)
                           :        :                             :     :                       :                       :                          +- ^ InputIteratorTransformer (21)
                           :        :                             :     :                       :                       :                             +- ReusedExchange (19)
                           :        :                             :     :                       :                       +- ^ InputIteratorTransformer (37)
                           :        :                             :     :                       :                          +- ReusedExchange (35)
                           :        :                             :     :                       +- ^ InputIteratorTransformer (63)
                           :        :                             :     :                          +- ColumnarBroadcastExchange (61)
                           :        :                             :     :                             +- ^ ProjectExecTransformer (59)
                           :        :                             :     :                                +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (58)
                           :        :                             :     :                                   :- ^ ProjectExecTransformer (54)
                           :        :                             :     :                                   :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (53)
                           :        :                             :     :                                   :     :- ^ FilterExecTransformer (49)
                           :        :                             :     :                                   :     :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.web_sales (48)
                           :        :                             :     :                                   :     +- ^ InputIteratorTransformer (52)
                           :        :                             :     :                                   :        +- ReusedExchange (50)
                           :        :                             :     :                                   +- ^ InputIteratorTransformer (57)
                           :        :                             :     :                                      +- ReusedExchange (55)
                           :        :                             :     +- ^ InputIteratorTransformer (85)
                           :        :                             :        +- ColumnarBroadcastExchange (83)
                           :        :                             :           +- ^ BroadcastHashJoinExecTransformer LeftSemi BuildRight (81)
                           :        :                             :              :- ^ FilterExecTransformer (77)
                           :        :                             :              :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.item (76)
                           :        :                             :              +- ^ InputIteratorTransformer (80)
                           :        :                             :                 +- ReusedExchange (78)
                           :        :                             +- ^ InputIteratorTransformer (90)
                           :        :                                +- ReusedExchange (88)
                           :        :- ^ FilterExecTransformer (129)
                           :        :  +- ^ ProjectExecTransformer (128)
                           :        :     +- ^ RegularHashAggregateExecTransformer (127)
                           :        :        +- ^ InputIteratorTransformer (126)
                           :        :           +- ColumnarExchange (124)
                           :        :              +- VeloxResizeBatches (123)
                           :        :                 +- ^ ProjectExecTransformer (121)
                           :        :                    +- ^ FlushableHashAggregateExecTransformer (120)
                           :        :                       +- ^ ProjectExecTransformer (119)
                           :        :                          +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (118)
                           :        :                             :- ^ ProjectExecTransformer (114)
                           :        :                             :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (113)
                           :        :                             :     :- ^ BroadcastHashJoinExecTransformer LeftSemi BuildRight (109)
                           :        :                             :     :  :- ^ FilterExecTransformer (105)
                           :        :                             :     :  :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.catalog_sales (104)
                           :        :                             :     :  +- ^ InputIteratorTransformer (108)
                           :        :                             :     :     +- ReusedExchange (106)
                           :        :                             :     +- ^ InputIteratorTransformer (112)
                           :        :                             :        +- ReusedExchange (110)
                           :        :                             +- ^ InputIteratorTransformer (117)
                           :        :                                +- ReusedExchange (115)
                           :        +- ^ FilterExecTransformer (156)
                           :           +- ^ ProjectExecTransformer (155)
                           :              +- ^ RegularHashAggregateExecTransformer (154)
                           :                 +- ^ InputIteratorTransformer (153)
                           :                    +- ColumnarExchange (151)
                           :                       +- VeloxResizeBatches (150)
                           :                          +- ^ ProjectExecTransformer (148)
                           :                             +- ^ FlushableHashAggregateExecTransformer (147)
                           :                                +- ^ ProjectExecTransformer (146)
                           :                                   +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (145)
                           :                                      :- ^ ProjectExecTransformer (141)
                           :                                      :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (140)
                           :                                      :     :- ^ BroadcastHashJoinExecTransformer LeftSemi BuildRight (136)
                           :                                      :     :  :- ^ FilterExecTransformer (132)
                           :                                      :     :  :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.web_sales (131)
                           :                                      :     :  +- ^ InputIteratorTransformer (135)
                           :                                      :     :     +- ReusedExchange (133)
                           :                                      :     +- ^ InputIteratorTransformer (139)
                           :                                      :        +- ReusedExchange (137)
                           :                                      +- ^ InputIteratorTransformer (144)
                           :                                         +- ReusedExchange (142)
                           :- ^ ProjectExecTransformer (197)
                           :  +- ^ RegularHashAggregateExecTransformer (196)
                           :     +- ^ InputIteratorTransformer (195)
                           :        +- ColumnarExchange (193)
                           :           +- VeloxResizeBatches (192)
                           :              +- ^ ProjectExecTransformer (190)
                           :                 +- ^ FlushableHashAggregateExecTransformer (189)
                           :                    +- ^ ProjectExecTransformer (188)
                           :                       +- ^ RegularHashAggregateExecTransformer (187)
                           :                          +- ^ InputIteratorTransformer (186)
                           :                             +- ColumnarUnion (184)
                           :                                :- ^ FilterExecTransformer (168)
                           :                                :  +- ^ ProjectExecTransformer (167)
                           :                                :     +- ^ RegularHashAggregateExecTransformer (166)
                           :                                :        +- ^ InputIteratorTransformer (165)
                           :                                :           +- ReusedExchange (163)
                           :                                :- ^ FilterExecTransformer (175)
                           :                                :  +- ^ ProjectExecTransformer (174)
                           :                                :     +- ^ RegularHashAggregateExecTransformer (173)
                           :                                :        +- ^ InputIteratorTransformer (172)
                           :                                :           +- ReusedExchange (170)
                           :                                +- ^ FilterExecTransformer (182)
                           :                                   +- ^ ProjectExecTransformer (181)
                           :                                      +- ^ RegularHashAggregateExecTransformer (180)
                           :                                         +- ^ InputIteratorTransformer (179)
                           :                                            +- ReusedExchange (177)
                           :- ^ ProjectExecTransformer (233)
                           :  +- ^ RegularHashAggregateExecTransformer (232)
                           :     +- ^ InputIteratorTransformer (231)
                           :        +- ColumnarExchange (229)
                           :           +- VeloxResizeBatches (228)
                           :              +- ^ ProjectExecTransformer (226)
                           :                 +- ^ FlushableHashAggregateExecTransformer (225)
                           :                    +- ^ ProjectExecTransformer (224)
                           :                       +- ^ RegularHashAggregateExecTransformer (223)
                           :                          +- ^ InputIteratorTransformer (222)
                           :                             +- ColumnarUnion (220)
                           :                                :- ^ FilterExecTransformer (204)
                           :                                :  +- ^ ProjectExecTransformer (203)
                           :                                :     +- ^ RegularHashAggregateExecTransformer (202)
                           :                                :        +- ^ InputIteratorTransformer (201)
                           :                                :           +- ReusedExchange (199)
                           :                                :- ^ FilterExecTransformer (211)
                           :                                :  +- ^ ProjectExecTransformer (210)
                           :                                :     +- ^ RegularHashAggregateExecTransformer (209)
                           :                                :        +- ^ InputIteratorTransformer (208)
                           :                                :           +- ReusedExchange (206)
                           :                                +- ^ FilterExecTransformer (218)
                           :                                   +- ^ ProjectExecTransformer (217)
                           :                                      +- ^ RegularHashAggregateExecTransformer (216)
                           :                                         +- ^ InputIteratorTransformer (215)
                           :                                            +- ReusedExchange (213)
                           :- ^ ProjectExecTransformer (269)
                           :  +- ^ RegularHashAggregateExecTransformer (268)
                           :     +- ^ InputIteratorTransformer (267)
                           :        +- ColumnarExchange (265)
                           :           +- VeloxResizeBatches (264)
                           :              +- ^ ProjectExecTransformer (262)
                           :                 +- ^ FlushableHashAggregateExecTransformer (261)
                           :                    +- ^ ProjectExecTransformer (260)
                           :                       +- ^ RegularHashAggregateExecTransformer (259)
                           :                          +- ^ InputIteratorTransformer (258)
                           :                             +- ColumnarUnion (256)
                           :                                :- ^ FilterExecTransformer (240)
                           :                                :  +- ^ ProjectExecTransformer (239)
                           :                                :     +- ^ RegularHashAggregateExecTransformer (238)
                           :                                :        +- ^ InputIteratorTransformer (237)
                           :                                :           +- ReusedExchange (235)
                           :                                :- ^ FilterExecTransformer (247)
                           :                                :  +- ^ ProjectExecTransformer (246)
                           :                                :     +- ^ RegularHashAggregateExecTransformer (245)
                           :                                :        +- ^ InputIteratorTransformer (244)
                           :                                :           +- ReusedExchange (242)
                           :                                +- ^ FilterExecTransformer (254)
                           :                                   +- ^ ProjectExecTransformer (253)
                           :                                      +- ^ RegularHashAggregateExecTransformer (252)
                           :                                         +- ^ InputIteratorTransformer (251)
                           :                                            +- ReusedExchange (249)
                           +- ^ ProjectExecTransformer (298)
                              +- ^ RegularHashAggregateExecTransformer (297)
                                 +- ^ ProjectExecTransformer (296)
                                    +- ^ RegularHashAggregateExecTransformer (295)
                                       +- ^ InputIteratorTransformer (294)
                                          +- ColumnarUnion (292)
                                             :- ^ FilterExecTransformer (276)
                                             :  +- ^ ProjectExecTransformer (275)
                                             :     +- ^ RegularHashAggregateExecTransformer (274)
                                             :        +- ^ InputIteratorTransformer (273)
                                             :           +- ReusedExchange (271)
                                             :- ^ FilterExecTransformer (283)
                                             :  +- ^ ProjectExecTransformer (282)
                                             :     +- ^ RegularHashAggregateExecTransformer (281)
                                             :        +- ^ InputIteratorTransformer (280)
                                             :           +- ReusedExchange (278)
                                             +- ^ FilterExecTransformer (290)
                                                +- ^ ProjectExecTransformer (289)
                                                   +- ^ RegularHashAggregateExecTransformer (288)
                                                      +- ^ InputIteratorTransformer (287)
                                                         +- ReusedExchange (285)


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

(2) FilterExecTransformer
Input [4]: [ss_item_sk#1, ss_quantity#2, ss_list_price#3, ss_sold_date_sk#4]
Arguments: isnotnull(ss_item_sk#1)

(3) FileSourceScanExecTransformer parquet spark_catalog.default.item
Output [4]: [i_item_sk#6, i_brand_id#7, i_class_id#8, i_category_id#9]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/item]
PushedFilters: [IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id)]
ReadSchema: struct<i_item_sk:int,i_brand_id:int,i_class_id:int,i_category_id:int>

(4) FilterExecTransformer
Input [4]: [i_item_sk#6, i_brand_id#7, i_class_id#8, i_category_id#9]
Arguments: ((isnotnull(i_brand_id#7) AND isnotnull(i_class_id#8)) AND isnotnull(i_category_id#9))

(5) FileSourceScanExecTransformer parquet spark_catalog.default.store_sales
Output [2]: [ss_item_sk#10, ss_sold_date_sk#11]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(ss_sold_date_sk#11), dynamicpruningexpression(ss_sold_date_sk#11 IN dynamicpruning#12)]
PushedFilters: [IsNotNull(ss_item_sk)]
ReadSchema: struct<ss_item_sk:int>

(6) FilterExecTransformer
Input [2]: [ss_item_sk#10, ss_sold_date_sk#11]
Arguments: isnotnull(ss_item_sk#10)

(7) FileSourceScanExecTransformer parquet spark_catalog.default.item
Output [4]: [i_item_sk#13, i_brand_id#14, i_class_id#15, i_category_id#16]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/item]
PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id)]
ReadSchema: struct<i_item_sk:int,i_brand_id:int,i_class_id:int,i_category_id:int>

(8) FilterExecTransformer
Input [4]: [i_item_sk#13, i_brand_id#14, i_class_id#15, i_category_id#16]
Arguments: (((isnotnull(i_item_sk#13) AND isnotnull(i_brand_id#14)) AND isnotnull(i_class_id#15)) AND isnotnull(i_category_id#16))

(9) FileSourceScanExecTransformer parquet spark_catalog.default.catalog_sales
Output [2]: [cs_item_sk#17, cs_sold_date_sk#18]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(cs_sold_date_sk#18), dynamicpruningexpression(cs_sold_date_sk#18 IN dynamicpruning#12)]
PushedFilters: [IsNotNull(cs_item_sk)]
ReadSchema: struct<cs_item_sk:int>

(10) FilterExecTransformer
Input [2]: [cs_item_sk#17, cs_sold_date_sk#18]
Arguments: isnotnull(cs_item_sk#17)

(11) FileSourceScanExecTransformer parquet spark_catalog.default.item
Output [4]: [i_item_sk#19, i_brand_id#20, i_class_id#21, i_category_id#22]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/item]
PushedFilters: [IsNotNull(i_item_sk)]
ReadSchema: struct<i_item_sk:int,i_brand_id:int,i_class_id:int,i_category_id:int>

(12) FilterExecTransformer
Input [4]: [i_item_sk#19, i_brand_id#20, i_class_id#21, i_category_id#22]
Arguments: isnotnull(i_item_sk#19)

(13) WholeStageCodegenTransformer (15)
Input [4]: [i_item_sk#19, i_brand_id#20, i_class_id#21, i_category_id#22]
Arguments: false

(14) ColumnarBroadcastExchange
Input [4]: [i_item_sk#19, i_brand_id#20, i_class_id#21, i_category_id#22]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=1]

(15) InputAdapter
Input [4]: [i_item_sk#19, i_brand_id#20, i_class_id#21, i_category_id#22]

(16) InputIteratorTransformer
Input [4]: [i_item_sk#19, i_brand_id#20, i_class_id#21, i_category_id#22]

(17) BroadcastHashJoinExecTransformer
Left keys [1]: [cs_item_sk#17]
Right keys [1]: [i_item_sk#19]
Join type: Inner
Join condition: None

(18) ProjectExecTransformer
Output [4]: [cs_sold_date_sk#18, i_brand_id#20, i_class_id#21, i_category_id#22]
Input [6]: [cs_item_sk#17, cs_sold_date_sk#18, i_item_sk#19, i_brand_id#20, i_class_id#21, i_category_id#22]

(19) ReusedExchange [Reuses operator id: 362]
Output [1]: [d_date_sk#23]

(20) InputAdapter
Input [1]: [d_date_sk#23]

(21) InputIteratorTransformer
Input [1]: [d_date_sk#23]

(22) BroadcastHashJoinExecTransformer
Left keys [1]: [cs_sold_date_sk#18]
Right keys [1]: [d_date_sk#23]
Join type: Inner
Join condition: None

(23) ProjectExecTransformer
Output [3]: [i_brand_id#20, i_class_id#21, i_category_id#22]
Input [5]: [cs_sold_date_sk#18, i_brand_id#20, i_class_id#21, i_category_id#22, d_date_sk#23]

(24) WholeStageCodegenTransformer (17)
Input [3]: [i_brand_id#20, i_class_id#21, i_category_id#22]
Arguments: false

(25) ColumnarBroadcastExchange
Input [3]: [i_brand_id#20, i_class_id#21, i_category_id#22]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, int, true], 0), isnull(input[0, int, true]), coalesce(input[1, int, true], 0), isnull(input[1, int, true]), coalesce(input[2, int, true], 0), isnull(input[2, int, true])),false), [plan_id=2]

(26) InputAdapter
Input [3]: [i_brand_id#20, i_class_id#21, i_category_id#22]

(27) InputIteratorTransformer
Input [3]: [i_brand_id#20, i_class_id#21, i_category_id#22]

(28) BroadcastHashJoinExecTransformer
Left keys [6]: [coalesce(i_brand_id#14, 0), isnull(i_brand_id#14), coalesce(i_class_id#15, 0), isnull(i_class_id#15), coalesce(i_category_id#16, 0), isnull(i_category_id#16)]
Right keys [6]: [coalesce(i_brand_id#20, 0), isnull(i_brand_id#20), coalesce(i_class_id#21, 0), isnull(i_class_id#21), coalesce(i_category_id#22, 0), isnull(i_category_id#22)]
Join type: LeftSemi
Join condition: None

(29) WholeStageCodegenTransformer (18)
Input [4]: [i_item_sk#13, i_brand_id#14, i_class_id#15, i_category_id#16]
Arguments: false

(30) ColumnarBroadcastExchange
Input [4]: [i_item_sk#13, i_brand_id#14, i_class_id#15, i_category_id#16]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=3]

(31) InputAdapter
Input [4]: [i_item_sk#13, i_brand_id#14, i_class_id#15, i_category_id#16]

(32) InputIteratorTransformer
Input [4]: [i_item_sk#13, i_brand_id#14, i_class_id#15, i_category_id#16]

(33) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_item_sk#10]
Right keys [1]: [i_item_sk#13]
Join type: Inner
Join condition: None

(34) ProjectExecTransformer
Output [4]: [ss_sold_date_sk#11, i_brand_id#14, i_class_id#15, i_category_id#16]
Input [6]: [ss_item_sk#10, ss_sold_date_sk#11, i_item_sk#13, i_brand_id#14, i_class_id#15, i_category_id#16]

(35) ReusedExchange [Reuses operator id: 362]
Output [1]: [d_date_sk#24]

(36) InputAdapter
Input [1]: [d_date_sk#24]

(37) InputIteratorTransformer
Input [1]: [d_date_sk#24]

(38) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_sold_date_sk#11]
Right keys [1]: [d_date_sk#24]
Join type: Inner
Join condition: None

(39) ProjectExecTransformer
Output [3]: [i_brand_id#14 AS brand_id#25, i_class_id#15 AS class_id#26, i_category_id#16 AS category_id#27]
Input [5]: [ss_sold_date_sk#11, i_brand_id#14, i_class_id#15, i_category_id#16, d_date_sk#24]

(40) FlushableHashAggregateExecTransformer
Input [3]: [brand_id#25, class_id#26, category_id#27]
Keys [3]: [brand_id#25, class_id#26, category_id#27]
Functions: []
Aggregate Attributes: []
Results [3]: [brand_id#25, class_id#26, category_id#27]

(41) ProjectExecTransformer
Output [4]: [hash(brand_id#25, class_id#26, category_id#27, 42) AS hash_partition_key#28, brand_id#25, class_id#26, category_id#27]
Input [3]: [brand_id#25, class_id#26, category_id#27]

(42) WholeStageCodegenTransformer (20)
Input [4]: [hash_partition_key#28, brand_id#25, class_id#26, category_id#27]
Arguments: false

(43) VeloxResizeBatches
Input [4]: [hash_partition_key#28, brand_id#25, class_id#26, category_id#27]
Arguments: 1024, 2147483647, 10485760

(44) ColumnarExchange
Input [4]: [hash_partition_key#28, brand_id#25, class_id#26, category_id#27]
Arguments: hashpartitioning(brand_id#25, class_id#26, category_id#27, 1), ENSURE_REQUIREMENTS, [brand_id#25, class_id#26, category_id#27], [plan_id=4], [shuffle_writer_type=hash]

(45) InputAdapter
Input [3]: [brand_id#25, class_id#26, category_id#27]

(46) InputIteratorTransformer
Input [3]: [brand_id#25, class_id#26, category_id#27]

(47) RegularHashAggregateExecTransformer
Input [3]: [brand_id#25, class_id#26, category_id#27]
Keys [3]: [brand_id#25, class_id#26, category_id#27]
Functions: []
Aggregate Attributes: []
Results [3]: [brand_id#25, class_id#26, category_id#27]

(48) FileSourceScanExecTransformer parquet spark_catalog.default.web_sales
Output [2]: [ws_item_sk#29, ws_sold_date_sk#30]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(ws_sold_date_sk#30), dynamicpruningexpression(ws_sold_date_sk#30 IN dynamicpruning#12)]
PushedFilters: [IsNotNull(ws_item_sk)]
ReadSchema: struct<ws_item_sk:int>

(49) FilterExecTransformer
Input [2]: [ws_item_sk#29, ws_sold_date_sk#30]
Arguments: isnotnull(ws_item_sk#29)

(50) ReusedExchange [Reuses operator id: 14]
Output [4]: [i_item_sk#31, i_brand_id#32, i_class_id#33, i_category_id#34]

(51) InputAdapter
Input [4]: [i_item_sk#31, i_brand_id#32, i_class_id#33, i_category_id#34]

(52) InputIteratorTransformer
Input [4]: [i_item_sk#31, i_brand_id#32, i_class_id#33, i_category_id#34]

(53) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_item_sk#29]
Right keys [1]: [i_item_sk#31]
Join type: Inner
Join condition: None

(54) ProjectExecTransformer
Output [4]: [ws_sold_date_sk#30, i_brand_id#32, i_class_id#33, i_category_id#34]
Input [6]: [ws_item_sk#29, ws_sold_date_sk#30, i_item_sk#31, i_brand_id#32, i_class_id#33, i_category_id#34]

(55) ReusedExchange [Reuses operator id: 362]
Output [1]: [d_date_sk#35]

(56) InputAdapter
Input [1]: [d_date_sk#35]

(57) InputIteratorTransformer
Input [1]: [d_date_sk#35]

(58) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_sold_date_sk#30]
Right keys [1]: [d_date_sk#35]
Join type: Inner
Join condition: None

(59) ProjectExecTransformer
Output [3]: [i_brand_id#32, i_class_id#33, i_category_id#34]
Input [5]: [ws_sold_date_sk#30, i_brand_id#32, i_class_id#33, i_category_id#34, d_date_sk#35]

(60) WholeStageCodegenTransformer (24)
Input [3]: [i_brand_id#32, i_class_id#33, i_category_id#34]
Arguments: false

(61) ColumnarBroadcastExchange
Input [3]: [i_brand_id#32, i_class_id#33, i_category_id#34]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, int, true], 0), isnull(input[0, int, true]), coalesce(input[1, int, true], 0), isnull(input[1, int, true]), coalesce(input[2, int, true], 0), isnull(input[2, int, true])),false), [plan_id=5]

(62) InputAdapter
Input [3]: [i_brand_id#32, i_class_id#33, i_category_id#34]

(63) InputIteratorTransformer
Input [3]: [i_brand_id#32, i_class_id#33, i_category_id#34]

(64) BroadcastHashJoinExecTransformer
Left keys [6]: [coalesce(brand_id#25, 0), isnull(brand_id#25), coalesce(class_id#26, 0), isnull(class_id#26), coalesce(category_id#27, 0), isnull(category_id#27)]
Right keys [6]: [coalesce(i_brand_id#32, 0), isnull(i_brand_id#32), coalesce(i_class_id#33, 0), isnull(i_class_id#33), coalesce(i_category_id#34, 0), isnull(i_category_id#34)]
Join type: LeftSemi
Join condition: None

(65) WholeStageCodegenTransformer (25)
Input [3]: [brand_id#25, class_id#26, category_id#27]
Arguments: false

(66) ColumnarBroadcastExchange
Input [3]: [brand_id#25, class_id#26, category_id#27]
Arguments: HashedRelationBroadcastMode(List(input[0, int, true], input[1, int, true], input[2, int, true]),false), [plan_id=6]

(67) InputAdapter
Input [3]: [brand_id#25, class_id#26, category_id#27]

(68) InputIteratorTransformer
Input [3]: [brand_id#25, class_id#26, category_id#27]

(69) BroadcastHashJoinExecTransformer
Left keys [3]: [i_brand_id#7, i_class_id#8, i_category_id#9]
Right keys [3]: [brand_id#25, class_id#26, category_id#27]
Join type: Inner
Join condition: None

(70) ProjectExecTransformer
Output [1]: [i_item_sk#6 AS ss_item_sk#36]
Input [7]: [i_item_sk#6, i_brand_id#7, i_class_id#8, i_category_id#9, brand_id#25, class_id#26, category_id#27]

(71) WholeStageCodegenTransformer (26)
Input [1]: [ss_item_sk#36]
Arguments: false

(72) ColumnarBroadcastExchange
Input [1]: [ss_item_sk#36]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=7]

(73) InputAdapter
Input [1]: [ss_item_sk#36]

(74) InputIteratorTransformer
Input [1]: [ss_item_sk#36]

(75) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_item_sk#1]
Right keys [1]: [ss_item_sk#36]
Join type: LeftSemi
Join condition: None

(76) FileSourceScanExecTransformer parquet spark_catalog.default.item
Output [4]: [i_item_sk#37, i_brand_id#38, i_class_id#39, i_category_id#40]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/item]
PushedFilters: [IsNotNull(i_item_sk)]
ReadSchema: struct<i_item_sk:int,i_brand_id:int,i_class_id:int,i_category_id:int>

(77) FilterExecTransformer
Input [4]: [i_item_sk#37, i_brand_id#38, i_class_id#39, i_category_id#40]
Arguments: isnotnull(i_item_sk#37)

(78) ReusedExchange [Reuses operator id: 72]
Output [1]: [ss_item_sk#36]

(79) InputAdapter
Input [1]: [ss_item_sk#36]

(80) InputIteratorTransformer
Input [1]: [ss_item_sk#36]

(81) BroadcastHashJoinExecTransformer
Left keys [1]: [i_item_sk#37]
Right keys [1]: [ss_item_sk#36]
Join type: LeftSemi
Join condition: None

(82) WholeStageCodegenTransformer (41)
Input [4]: [i_item_sk#37, i_brand_id#38, i_class_id#39, i_category_id#40]
Arguments: false

(83) ColumnarBroadcastExchange
Input [4]: [i_item_sk#37, i_brand_id#38, i_class_id#39, i_category_id#40]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=8]

(84) InputAdapter
Input [4]: [i_item_sk#37, i_brand_id#38, i_class_id#39, i_category_id#40]

(85) InputIteratorTransformer
Input [4]: [i_item_sk#37, i_brand_id#38, i_class_id#39, i_category_id#40]

(86) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_item_sk#1]
Right keys [1]: [i_item_sk#37]
Join type: Inner
Join condition: None

(87) ProjectExecTransformer
Output [6]: [ss_quantity#2, ss_list_price#3, ss_sold_date_sk#4, i_brand_id#38, i_class_id#39, i_category_id#40]
Input [8]: [ss_item_sk#1, ss_quantity#2, ss_list_price#3, ss_sold_date_sk#4, i_item_sk#37, i_brand_id#38, i_class_id#39, i_category_id#40]

(88) ReusedExchange [Reuses operator id: 357]
Output [1]: [d_date_sk#41]

(89) InputAdapter
Input [1]: [d_date_sk#41]

(90) InputIteratorTransformer
Input [1]: [d_date_sk#41]

(91) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_sold_date_sk#4]
Right keys [1]: [d_date_sk#41]
Join type: Inner
Join condition: None

(92) ProjectExecTransformer
Output [4]: [i_brand_id#38, i_class_id#39, i_category_id#40, (cast(ss_quantity#2 as decimal(10,0)) * ss_list_price#3) AS _pre_1#42]
Input [7]: [ss_quantity#2, ss_list_price#3, ss_sold_date_sk#4, i_brand_id#38, i_class_id#39, i_category_id#40, d_date_sk#41]

(93) FlushableHashAggregateExecTransformer
Input [4]: [i_brand_id#38, i_class_id#39, i_category_id#40, _pre_1#42]
Keys [3]: [i_brand_id#38, i_class_id#39, i_category_id#40]
Functions [2]: [partial_sum(_pre_1#42), partial_count(1)]
Aggregate Attributes [3]: [sum#43, isEmpty#44, count#45]
Results [6]: [i_brand_id#38, i_class_id#39, i_category_id#40, sum#46, isEmpty#47, count#48]

(94) ProjectExecTransformer
Output [7]: [hash(i_brand_id#38, i_class_id#39, i_category_id#40, 42) AS hash_partition_key#49, i_brand_id#38, i_class_id#39, i_category_id#40, sum#46, isEmpty#47, count#48]
Input [6]: [i_brand_id#38, i_class_id#39, i_category_id#40, sum#46, isEmpty#47, count#48]

(95) WholeStageCodegenTransformer (43)
Input [7]: [hash_partition_key#49, i_brand_id#38, i_class_id#39, i_category_id#40, sum#46, isEmpty#47, count#48]
Arguments: false

(96) VeloxResizeBatches
Input [7]: [hash_partition_key#49, i_brand_id#38, i_class_id#39, i_category_id#40, sum#46, isEmpty#47, count#48]
Arguments: 1024, 2147483647, 10485760

(97) ColumnarExchange
Input [7]: [hash_partition_key#49, i_brand_id#38, i_class_id#39, i_category_id#40, sum#46, isEmpty#47, count#48]
Arguments: hashpartitioning(i_brand_id#38, i_class_id#39, i_category_id#40, 1), ENSURE_REQUIREMENTS, [i_brand_id#38, i_class_id#39, i_category_id#40, sum#46, isEmpty#47, count#48], [plan_id=9], [shuffle_writer_type=hash]

(98) InputAdapter
Input [6]: [i_brand_id#38, i_class_id#39, i_category_id#40, sum#46, isEmpty#47, count#48]

(99) InputIteratorTransformer
Input [6]: [i_brand_id#38, i_class_id#39, i_category_id#40, sum#46, isEmpty#47, count#48]

(100) RegularHashAggregateExecTransformer
Input [6]: [i_brand_id#38, i_class_id#39, i_category_id#40, sum#46, isEmpty#47, count#48]
Keys [3]: [i_brand_id#38, i_class_id#39, i_category_id#40]
Functions [2]: [sum((cast(ss_quantity#2 as decimal(10,0)) * ss_list_price#3)), count(1)]
Aggregate Attributes [2]: [sum((cast(ss_quantity#2 as decimal(10,0)) * ss_list_price#3))#50, count(1)#51]
Results [5]: [i_brand_id#38, i_class_id#39, i_category_id#40, sum((cast(ss_quantity#2 as decimal(10,0)) * ss_list_price#3))#50, count(1)#51]

(101) ProjectExecTransformer
Output [6]: [store AS channel#52, i_brand_id#38, i_class_id#39, i_category_id#40, sum((cast(ss_quantity#2 as decimal(10,0)) * ss_list_price#3))#50 AS sales#53, count(1)#51 AS number_sales#54]
Input [5]: [i_brand_id#38, i_class_id#39, i_category_id#40, sum((cast(ss_quantity#2 as decimal(10,0)) * ss_list_price#3))#50, count(1)#51]

(102) FilterExecTransformer
Input [6]: [channel#52, i_brand_id#38, i_class_id#39, i_category_id#40, sales#53, number_sales#54]
Arguments: (isnotnull(sales#53) AND (cast(sales#53 as decimal(32,6)) > cast(Subquery scalar-subquery#55, [id=#10] as decimal(32,6))))

(103) WholeStageCodegenTransformer (44)
Input [6]: [channel#52, i_brand_id#38, i_class_id#39, i_category_id#40, sales#53, number_sales#54]
Arguments: false

(104) FileSourceScanExecTransformer parquet spark_catalog.default.catalog_sales
Output [4]: [cs_item_sk#56, cs_quantity#57, cs_list_price#58, cs_sold_date_sk#59]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(cs_sold_date_sk#59), dynamicpruningexpression(cs_sold_date_sk#59 IN dynamicpruning#5)]
PushedFilters: [IsNotNull(cs_item_sk)]
ReadSchema: struct<cs_item_sk:int,cs_quantity:int,cs_list_price:decimal(7,2)>

(105) FilterExecTransformer
Input [4]: [cs_item_sk#56, cs_quantity#57, cs_list_price#58, cs_sold_date_sk#59]
Arguments: isnotnull(cs_item_sk#56)

(106) ReusedExchange [Reuses operator id: 72]
Output [1]: [ss_item_sk#60]

(107) InputAdapter
Input [1]: [ss_item_sk#60]

(108) InputIteratorTransformer
Input [1]: [ss_item_sk#60]

(109) BroadcastHashJoinExecTransformer
Left keys [1]: [cs_item_sk#56]
Right keys [1]: [ss_item_sk#60]
Join type: LeftSemi
Join condition: None

(110) ReusedExchange [Reuses operator id: 83]
Output [4]: [i_item_sk#61, i_brand_id#62, i_class_id#63, i_category_id#64]

(111) InputAdapter
Input [4]: [i_item_sk#61, i_brand_id#62, i_class_id#63, i_category_id#64]

(112) InputIteratorTransformer
Input [4]: [i_item_sk#61, i_brand_id#62, i_class_id#63, i_category_id#64]

(113) BroadcastHashJoinExecTransformer
Left keys [1]: [cs_item_sk#56]
Right keys [1]: [i_item_sk#61]
Join type: Inner
Join condition: None

(114) ProjectExecTransformer
Output [6]: [cs_quantity#57, cs_list_price#58, cs_sold_date_sk#59, i_brand_id#62, i_class_id#63, i_category_id#64]
Input [8]: [cs_item_sk#56, cs_quantity#57, cs_list_price#58, cs_sold_date_sk#59, i_item_sk#61, i_brand_id#62, i_class_id#63, i_category_id#64]

(115) ReusedExchange [Reuses operator id: 357]
Output [1]: [d_date_sk#65]

(116) InputAdapter
Input [1]: [d_date_sk#65]

(117) InputIteratorTransformer
Input [1]: [d_date_sk#65]

(118) BroadcastHashJoinExecTransformer
Left keys [1]: [cs_sold_date_sk#59]
Right keys [1]: [d_date_sk#65]
Join type: Inner
Join condition: None

(119) ProjectExecTransformer
Output [4]: [i_brand_id#62, i_class_id#63, i_category_id#64, (cast(cs_quantity#57 as decimal(10,0)) * cs_list_price#58) AS _pre_2#66]
Input [7]: [cs_quantity#57, cs_list_price#58, cs_sold_date_sk#59, i_brand_id#62, i_class_id#63, i_category_id#64, d_date_sk#65]

(120) FlushableHashAggregateExecTransformer
Input [4]: [i_brand_id#62, i_class_id#63, i_category_id#64, _pre_2#66]
Keys [3]: [i_brand_id#62, i_class_id#63, i_category_id#64]
Functions [2]: [partial_sum(_pre_2#66), partial_count(1)]
Aggregate Attributes [3]: [sum#67, isEmpty#68, count#69]
Results [6]: [i_brand_id#62, i_class_id#63, i_category_id#64, sum#70, isEmpty#71, count#72]

(121) ProjectExecTransformer
Output [7]: [hash(i_brand_id#62, i_class_id#63, i_category_id#64, 42) AS hash_partition_key#73, i_brand_id#62, i_class_id#63, i_category_id#64, sum#70, isEmpty#71, count#72]
Input [6]: [i_brand_id#62, i_class_id#63, i_category_id#64, sum#70, isEmpty#71, count#72]

(122) WholeStageCodegenTransformer (87)
Input [7]: [hash_partition_key#73, i_brand_id#62, i_class_id#63, i_category_id#64, sum#70, isEmpty#71, count#72]
Arguments: false

(123) VeloxResizeBatches
Input [7]: [hash_partition_key#73, i_brand_id#62, i_class_id#63, i_category_id#64, sum#70, isEmpty#71, count#72]
Arguments: 1024, 2147483647, 10485760

(124) ColumnarExchange
Input [7]: [hash_partition_key#73, i_brand_id#62, i_class_id#63, i_category_id#64, sum#70, isEmpty#71, count#72]
Arguments: hashpartitioning(i_brand_id#62, i_class_id#63, i_category_id#64, 1), ENSURE_REQUIREMENTS, [i_brand_id#62, i_class_id#63, i_category_id#64, sum#70, isEmpty#71, count#72], [plan_id=11], [shuffle_writer_type=hash]

(125) InputAdapter
Input [6]: [i_brand_id#62, i_class_id#63, i_category_id#64, sum#70, isEmpty#71, count#72]

(126) InputIteratorTransformer
Input [6]: [i_brand_id#62, i_class_id#63, i_category_id#64, sum#70, isEmpty#71, count#72]

(127) RegularHashAggregateExecTransformer
Input [6]: [i_brand_id#62, i_class_id#63, i_category_id#64, sum#70, isEmpty#71, count#72]
Keys [3]: [i_brand_id#62, i_class_id#63, i_category_id#64]
Functions [2]: [sum((cast(cs_quantity#57 as decimal(10,0)) * cs_list_price#58)), count(1)]
Aggregate Attributes [2]: [sum((cast(cs_quantity#57 as decimal(10,0)) * cs_list_price#58))#74, count(1)#75]
Results [5]: [i_brand_id#62, i_class_id#63, i_category_id#64, sum((cast(cs_quantity#57 as decimal(10,0)) * cs_list_price#58))#74, count(1)#75]

(128) ProjectExecTransformer
Output [6]: [catalog AS channel#76, i_brand_id#62, i_class_id#63, i_category_id#64, sum((cast(cs_quantity#57 as decimal(10,0)) * cs_list_price#58))#74 AS sales#77, count(1)#75 AS number_sales#78]
Input [5]: [i_brand_id#62, i_class_id#63, i_category_id#64, sum((cast(cs_quantity#57 as decimal(10,0)) * cs_list_price#58))#74, count(1)#75]

(129) FilterExecTransformer
Input [6]: [channel#76, i_brand_id#62, i_class_id#63, i_category_id#64, sales#77, number_sales#78]
Arguments: (isnotnull(sales#77) AND (cast(sales#77 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#55, [id=#10] as decimal(32,6))))

(130) WholeStageCodegenTransformer (88)
Input [6]: [channel#76, i_brand_id#62, i_class_id#63, i_category_id#64, sales#77, number_sales#78]
Arguments: false

(131) FileSourceScanExecTransformer parquet spark_catalog.default.web_sales
Output [4]: [ws_item_sk#79, ws_quantity#80, ws_list_price#81, ws_sold_date_sk#82]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(ws_sold_date_sk#82), dynamicpruningexpression(ws_sold_date_sk#82 IN dynamicpruning#5)]
PushedFilters: [IsNotNull(ws_item_sk)]
ReadSchema: struct<ws_item_sk:int,ws_quantity:int,ws_list_price:decimal(7,2)>

(132) FilterExecTransformer
Input [4]: [ws_item_sk#79, ws_quantity#80, ws_list_price#81, ws_sold_date_sk#82]
Arguments: isnotnull(ws_item_sk#79)

(133) ReusedExchange [Reuses operator id: 72]
Output [1]: [ss_item_sk#83]

(134) InputAdapter
Input [1]: [ss_item_sk#83]

(135) InputIteratorTransformer
Input [1]: [ss_item_sk#83]

(136) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_item_sk#79]
Right keys [1]: [ss_item_sk#83]
Join type: LeftSemi
Join condition: None

(137) ReusedExchange [Reuses operator id: 83]
Output [4]: [i_item_sk#84, i_brand_id#85, i_class_id#86, i_category_id#87]

(138) InputAdapter
Input [4]: [i_item_sk#84, i_brand_id#85, i_class_id#86, i_category_id#87]

(139) InputIteratorTransformer
Input [4]: [i_item_sk#84, i_brand_id#85, i_class_id#86, i_category_id#87]

(140) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_item_sk#79]
Right keys [1]: [i_item_sk#84]
Join type: Inner
Join condition: None

(141) ProjectExecTransformer
Output [6]: [ws_quantity#80, ws_list_price#81, ws_sold_date_sk#82, i_brand_id#85, i_class_id#86, i_category_id#87]
Input [8]: [ws_item_sk#79, ws_quantity#80, ws_list_price#81, ws_sold_date_sk#82, i_item_sk#84, i_brand_id#85, i_class_id#86, i_category_id#87]

(142) ReusedExchange [Reuses operator id: 357]
Output [1]: [d_date_sk#88]

(143) InputAdapter
Input [1]: [d_date_sk#88]

(144) InputIteratorTransformer
Input [1]: [d_date_sk#88]

(145) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_sold_date_sk#82]
Right keys [1]: [d_date_sk#88]
Join type: Inner
Join condition: None

(146) ProjectExecTransformer
Output [4]: [i_brand_id#85, i_class_id#86, i_category_id#87, (cast(ws_quantity#80 as decimal(10,0)) * ws_list_price#81) AS _pre_3#89]
Input [7]: [ws_quantity#80, ws_list_price#81, ws_sold_date_sk#82, i_brand_id#85, i_class_id#86, i_category_id#87, d_date_sk#88]

(147) FlushableHashAggregateExecTransformer
Input [4]: [i_brand_id#85, i_class_id#86, i_category_id#87, _pre_3#89]
Keys [3]: [i_brand_id#85, i_class_id#86, i_category_id#87]
Functions [2]: [partial_sum(_pre_3#89), partial_count(1)]
Aggregate Attributes [3]: [sum#90, isEmpty#91, count#92]
Results [6]: [i_brand_id#85, i_class_id#86, i_category_id#87, sum#93, isEmpty#94, count#95]

(148) ProjectExecTransformer
Output [7]: [hash(i_brand_id#85, i_class_id#86, i_category_id#87, 42) AS hash_partition_key#96, i_brand_id#85, i_class_id#86, i_category_id#87, sum#93, isEmpty#94, count#95]
Input [6]: [i_brand_id#85, i_class_id#86, i_category_id#87, sum#93, isEmpty#94, count#95]

(149) WholeStageCodegenTransformer (131)
Input [7]: [hash_partition_key#96, i_brand_id#85, i_class_id#86, i_category_id#87, sum#93, isEmpty#94, count#95]
Arguments: false

(150) VeloxResizeBatches
Input [7]: [hash_partition_key#96, i_brand_id#85, i_class_id#86, i_category_id#87, sum#93, isEmpty#94, count#95]
Arguments: 1024, 2147483647, 10485760

(151) ColumnarExchange
Input [7]: [hash_partition_key#96, i_brand_id#85, i_class_id#86, i_category_id#87, sum#93, isEmpty#94, count#95]
Arguments: hashpartitioning(i_brand_id#85, i_class_id#86, i_category_id#87, 1), ENSURE_REQUIREMENTS, [i_brand_id#85, i_class_id#86, i_category_id#87, sum#93, isEmpty#94, count#95], [plan_id=12], [shuffle_writer_type=hash]

(152) InputAdapter
Input [6]: [i_brand_id#85, i_class_id#86, i_category_id#87, sum#93, isEmpty#94, count#95]

(153) InputIteratorTransformer
Input [6]: [i_brand_id#85, i_class_id#86, i_category_id#87, sum#93, isEmpty#94, count#95]

(154) RegularHashAggregateExecTransformer
Input [6]: [i_brand_id#85, i_class_id#86, i_category_id#87, sum#93, isEmpty#94, count#95]
Keys [3]: [i_brand_id#85, i_class_id#86, i_category_id#87]
Functions [2]: [sum((cast(ws_quantity#80 as decimal(10,0)) * ws_list_price#81)), count(1)]
Aggregate Attributes [2]: [sum((cast(ws_quantity#80 as decimal(10,0)) * ws_list_price#81))#97, count(1)#98]
Results [5]: [i_brand_id#85, i_class_id#86, i_category_id#87, sum((cast(ws_quantity#80 as decimal(10,0)) * ws_list_price#81))#97, count(1)#98]

(155) ProjectExecTransformer
Output [6]: [web AS channel#99, i_brand_id#85, i_class_id#86, i_category_id#87, sum((cast(ws_quantity#80 as decimal(10,0)) * ws_list_price#81))#97 AS sales#100, count(1)#98 AS number_sales#101]
Input [5]: [i_brand_id#85, i_class_id#86, i_category_id#87, sum((cast(ws_quantity#80 as decimal(10,0)) * ws_list_price#81))#97, count(1)#98]

(156) FilterExecTransformer
Input [6]: [channel#99, i_brand_id#85, i_class_id#86, i_category_id#87, sales#100, number_sales#101]
Arguments: (isnotnull(sales#100) AND (cast(sales#100 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#55, [id=#10] as decimal(32,6))))

(157) WholeStageCodegenTransformer (132)
Input [6]: [channel#99, i_brand_id#85, i_class_id#86, i_category_id#87, sales#100, number_sales#101]
Arguments: false

(158) ColumnarUnion
Arguments: hashpartitioning(i_brand_id#38, i_class_id#39, i_category_id#40, 1)

(159) InputAdapter
Input [6]: [channel#52, i_brand_id#38, i_class_id#39, i_category_id#40, sales#53, number_sales#54]

(160) InputIteratorTransformer
Input [6]: [channel#52, i_brand_id#38, i_class_id#39, i_category_id#40, sales#53, number_sales#54]

(161) RegularHashAggregateExecTransformer
Input [6]: [channel#52, i_brand_id#38, i_class_id#39, i_category_id#40, sales#53, number_sales#54]
Keys [4]: [channel#52, i_brand_id#38, i_class_id#39, i_category_id#40]
Functions [2]: [sum(sales#53), sum(number_sales#54)]
Aggregate Attributes [2]: [sum(sales#53)#102, sum(number_sales#54)#103]
Results [6]: [channel#52, i_brand_id#38, i_class_id#39, i_category_id#40, sum(sales#53)#102 AS sum_sales#104, sum(number_sales#54)#103 AS number_sales#105]

(162) WholeStageCodegenTransformer (133)
Input [6]: [channel#52, i_brand_id#38, i_class_id#39, i_category_id#40, sum_sales#104, number_sales#105]
Arguments: false

(163) ReusedExchange [Reuses operator id: 97]
Output [6]: [i_brand_id#106, i_class_id#107, i_category_id#108, sum#109, isEmpty#110, count#48]

(164) InputAdapter
Input [6]: [i_brand_id#106, i_class_id#107, i_category_id#108, sum#109, isEmpty#110, count#48]

(165) InputIteratorTransformer
Input [6]: [i_brand_id#106, i_class_id#107, i_category_id#108, sum#109, isEmpty#110, count#48]

(166) RegularHashAggregateExecTransformer
Input [6]: [i_brand_id#106, i_class_id#107, i_category_id#108, sum#109, isEmpty#110, count#48]
Keys [3]: [i_brand_id#106, i_class_id#107, i_category_id#108]
Functions [2]: [sum((cast(ss_quantity#111 as decimal(10,0)) * ss_list_price#112)), count(1)]
Aggregate Attributes [2]: [sum((cast(ss_quantity#111 as decimal(10,0)) * ss_list_price#112))#50, count(1)#51]
Results [5]: [i_brand_id#106, i_class_id#107, i_category_id#108, sum((cast(ss_quantity#111 as decimal(10,0)) * ss_list_price#112))#50, count(1)#51]

(167) ProjectExecTransformer
Output [6]: [store AS channel#113, i_brand_id#106, i_class_id#107, i_category_id#108, sum((cast(ss_quantity#111 as decimal(10,0)) * ss_list_price#112))#50 AS sales#114, count(1)#51 AS number_sales#115]
Input [5]: [i_brand_id#106, i_class_id#107, i_category_id#108, sum((cast(ss_quantity#111 as decimal(10,0)) * ss_list_price#112))#50, count(1)#51]

(168) FilterExecTransformer
Input [6]: [channel#113, i_brand_id#106, i_class_id#107, i_category_id#108, sales#114, number_sales#115]
Arguments: (isnotnull(sales#114) AND (cast(sales#114 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#55, [id=#10] as decimal(32,6))))

(169) WholeStageCodegenTransformer (177)
Input [6]: [channel#113, i_brand_id#106, i_class_id#107, i_category_id#108, sales#114, number_sales#115]
Arguments: false

(170) ReusedExchange [Reuses operator id: 124]
Output [6]: [i_brand_id#116, i_class_id#117, i_category_id#118, sum#119, isEmpty#120, count#72]

(171) InputAdapter
Input [6]: [i_brand_id#116, i_class_id#117, i_category_id#118, sum#119, isEmpty#120, count#72]

(172) InputIteratorTransformer
Input [6]: [i_brand_id#116, i_class_id#117, i_category_id#118, sum#119, isEmpty#120, count#72]

(173) RegularHashAggregateExecTransformer
Input [6]: [i_brand_id#116, i_class_id#117, i_category_id#118, sum#119, isEmpty#120, count#72]
Keys [3]: [i_brand_id#116, i_class_id#117, i_category_id#118]
Functions [2]: [sum((cast(cs_quantity#121 as decimal(10,0)) * cs_list_price#122)), count(1)]
Aggregate Attributes [2]: [sum((cast(cs_quantity#121 as decimal(10,0)) * cs_list_price#122))#74, count(1)#75]
Results [5]: [i_brand_id#116, i_class_id#117, i_category_id#118, sum((cast(cs_quantity#121 as decimal(10,0)) * cs_list_price#122))#74, count(1)#75]

(174) ProjectExecTransformer
Output [6]: [catalog AS channel#123, i_brand_id#116, i_class_id#117, i_category_id#118, sum((cast(cs_quantity#121 as decimal(10,0)) * cs_list_price#122))#74 AS sales#124, count(1)#75 AS number_sales#125]
Input [5]: [i_brand_id#116, i_class_id#117, i_category_id#118, sum((cast(cs_quantity#121 as decimal(10,0)) * cs_list_price#122))#74, count(1)#75]

(175) FilterExecTransformer
Input [6]: [channel#123, i_brand_id#116, i_class_id#117, i_category_id#118, sales#124, number_sales#125]
Arguments: (isnotnull(sales#124) AND (cast(sales#124 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#55, [id=#10] as decimal(32,6))))

(176) WholeStageCodegenTransformer (221)
Input [6]: [channel#123, i_brand_id#116, i_class_id#117, i_category_id#118, sales#124, number_sales#125]
Arguments: false

(177) ReusedExchange [Reuses operator id: 151]
Output [6]: [i_brand_id#126, i_class_id#127, i_category_id#128, sum#129, isEmpty#130, count#95]

(178) InputAdapter
Input [6]: [i_brand_id#126, i_class_id#127, i_category_id#128, sum#129, isEmpty#130, count#95]

(179) InputIteratorTransformer
Input [6]: [i_brand_id#126, i_class_id#127, i_category_id#128, sum#129, isEmpty#130, count#95]

(180) RegularHashAggregateExecTransformer
Input [6]: [i_brand_id#126, i_class_id#127, i_category_id#128, sum#129, isEmpty#130, count#95]
Keys [3]: [i_brand_id#126, i_class_id#127, i_category_id#128]
Functions [2]: [sum((cast(ws_quantity#131 as decimal(10,0)) * ws_list_price#132)), count(1)]
Aggregate Attributes [2]: [sum((cast(ws_quantity#131 as decimal(10,0)) * ws_list_price#132))#97, count(1)#98]
Results [5]: [i_brand_id#126, i_class_id#127, i_category_id#128, sum((cast(ws_quantity#131 as decimal(10,0)) * ws_list_price#132))#97, count(1)#98]

(181) ProjectExecTransformer
Output [6]: [web AS channel#133, i_brand_id#126, i_class_id#127, i_category_id#128, sum((cast(ws_quantity#131 as decimal(10,0)) * ws_list_price#132))#97 AS sales#134, count(1)#98 AS number_sales#135]
Input [5]: [i_brand_id#126, i_class_id#127, i_category_id#128, sum((cast(ws_quantity#131 as decimal(10,0)) * ws_list_price#132))#97, count(1)#98]

(182) FilterExecTransformer
Input [6]: [channel#133, i_brand_id#126, i_class_id#127, i_category_id#128, sales#134, number_sales#135]
Arguments: (isnotnull(sales#134) AND (cast(sales#134 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#55, [id=#10] as decimal(32,6))))

(183) WholeStageCodegenTransformer (265)
Input [6]: [channel#133, i_brand_id#126, i_class_id#127, i_category_id#128, sales#134, number_sales#135]
Arguments: false

(184) ColumnarUnion
Arguments: hashpartitioning(i_brand_id#106, i_class_id#107, i_category_id#108, 1)

(185) InputAdapter
Input [6]: [channel#113, i_brand_id#106, i_class_id#107, i_category_id#108, sales#114, number_sales#115]

(186) InputIteratorTransformer
Input [6]: [channel#113, i_brand_id#106, i_class_id#107, i_category_id#108, sales#114, number_sales#115]

(187) RegularHashAggregateExecTransformer
Input [6]: [channel#113, i_brand_id#106, i_class_id#107, i_category_id#108, sales#114, number_sales#115]
Keys [4]: [channel#113, i_brand_id#106, i_class_id#107, i_category_id#108]
Functions [2]: [sum(sales#114), sum(number_sales#115)]
Aggregate Attributes [2]: [sum(sales#114)#102, sum(number_sales#115)#103]
Results [6]: [channel#113, i_brand_id#106, i_class_id#107, i_category_id#108, sum(sales#114)#102, sum(number_sales#115)#103]

(188) ProjectExecTransformer
Output [5]: [channel#113, i_brand_id#106, i_class_id#107, sum(sales#114)#102 AS sum_sales#136, sum(number_sales#115)#103 AS number_sales#137]
Input [6]: [channel#113, i_brand_id#106, i_class_id#107, i_category_id#108, sum(sales#114)#102, sum(number_sales#115)#103]

(189) FlushableHashAggregateExecTransformer
Input [5]: [channel#113, i_brand_id#106, i_class_id#107, sum_sales#136, number_sales#137]
Keys [3]: [channel#113, i_brand_id#106, i_class_id#107]
Functions [2]: [partial_sum(sum_sales#136), partial_sum(number_sales#137)]
Aggregate Attributes [3]: [sum#138, isEmpty#139, sum#140]
Results [6]: [channel#113, i_brand_id#106, i_class_id#107, sum#141, isEmpty#142, sum#143]

(190) ProjectExecTransformer
Output [7]: [hash(channel#113, i_brand_id#106, i_class_id#107, 42) AS hash_partition_key#144, channel#113, i_brand_id#106, i_class_id#107, sum#141, isEmpty#142, sum#143]
Input [6]: [channel#113, i_brand_id#106, i_class_id#107, sum#141, isEmpty#142, sum#143]

(191) WholeStageCodegenTransformer (266)
Input [7]: [hash_partition_key#144, channel#113, i_brand_id#106, i_class_id#107, sum#141, isEmpty#142, sum#143]
Arguments: false

(192) VeloxResizeBatches
Input [7]: [hash_partition_key#144, channel#113, i_brand_id#106, i_class_id#107, sum#141, isEmpty#142, sum#143]
Arguments: 1024, 2147483647, 10485760

(193) ColumnarExchange
Input [7]: [hash_partition_key#144, channel#113, i_brand_id#106, i_class_id#107, sum#141, isEmpty#142, sum#143]
Arguments: hashpartitioning(channel#113, i_brand_id#106, i_class_id#107, 1), ENSURE_REQUIREMENTS, [channel#113, i_brand_id#106, i_class_id#107, sum#141, isEmpty#142, sum#143], [plan_id=13], [shuffle_writer_type=hash]

(194) InputAdapter
Input [6]: [channel#113, i_brand_id#106, i_class_id#107, sum#141, isEmpty#142, sum#143]

(195) InputIteratorTransformer
Input [6]: [channel#113, i_brand_id#106, i_class_id#107, sum#141, isEmpty#142, sum#143]

(196) RegularHashAggregateExecTransformer
Input [6]: [channel#113, i_brand_id#106, i_class_id#107, sum#141, isEmpty#142, sum#143]
Keys [3]: [channel#113, i_brand_id#106, i_class_id#107]
Functions [2]: [sum(sum_sales#136), sum(number_sales#137)]
Aggregate Attributes [2]: [sum(sum_sales#136)#145, sum(number_sales#137)#146]
Results [5]: [channel#113, i_brand_id#106, i_class_id#107, sum(sum_sales#136)#145, sum(number_sales#137)#146]

(197) ProjectExecTransformer
Output [6]: [channel#113, i_brand_id#106, i_class_id#107, null AS i_category_id#147, sum(sum_sales#136)#145 AS sum(sum_sales)#148, sum(number_sales#137)#146 AS sum(number_sales)#149]
Input [5]: [channel#113, i_brand_id#106, i_class_id#107, sum(sum_sales#136)#145, sum(number_sales#137)#146]

(198) WholeStageCodegenTransformer (267)
Input [6]: [channel#113, i_brand_id#106, i_class_id#107, i_category_id#147, sum(sum_sales)#148, sum(number_sales)#149]
Arguments: false

(199) ReusedExchange [Reuses operator id: 97]
Output [6]: [i_brand_id#150, i_class_id#151, i_category_id#152, sum#153, isEmpty#154, count#48]

(200) InputAdapter
Input [6]: [i_brand_id#150, i_class_id#151, i_category_id#152, sum#153, isEmpty#154, count#48]

(201) InputIteratorTransformer
Input [6]: [i_brand_id#150, i_class_id#151, i_category_id#152, sum#153, isEmpty#154, count#48]

(202) RegularHashAggregateExecTransformer
Input [6]: [i_brand_id#150, i_class_id#151, i_category_id#152, sum#153, isEmpty#154, count#48]
Keys [3]: [i_brand_id#150, i_class_id#151, i_category_id#152]
Functions [2]: [sum((cast(ss_quantity#155 as decimal(10,0)) * ss_list_price#156)), count(1)]
Aggregate Attributes [2]: [sum((cast(ss_quantity#155 as decimal(10,0)) * ss_list_price#156))#50, count(1)#51]
Results [5]: [i_brand_id#150, i_class_id#151, i_category_id#152, sum((cast(ss_quantity#155 as decimal(10,0)) * ss_list_price#156))#50, count(1)#51]

(203) ProjectExecTransformer
Output [6]: [store AS channel#157, i_brand_id#150, i_class_id#151, i_category_id#152, sum((cast(ss_quantity#155 as decimal(10,0)) * ss_list_price#156))#50 AS sales#158, count(1)#51 AS number_sales#159]
Input [5]: [i_brand_id#150, i_class_id#151, i_category_id#152, sum((cast(ss_quantity#155 as decimal(10,0)) * ss_list_price#156))#50, count(1)#51]

(204) FilterExecTransformer
Input [6]: [channel#157, i_brand_id#150, i_class_id#151, i_category_id#152, sales#158, number_sales#159]
Arguments: (isnotnull(sales#158) AND (cast(sales#158 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#55, [id=#10] as decimal(32,6))))

(205) WholeStageCodegenTransformer (311)
Input [6]: [channel#157, i_brand_id#150, i_class_id#151, i_category_id#152, sales#158, number_sales#159]
Arguments: false

(206) ReusedExchange [Reuses operator id: 124]
Output [6]: [i_brand_id#160, i_class_id#161, i_category_id#162, sum#163, isEmpty#164, count#72]

(207) InputAdapter
Input [6]: [i_brand_id#160, i_class_id#161, i_category_id#162, sum#163, isEmpty#164, count#72]

(208) InputIteratorTransformer
Input [6]: [i_brand_id#160, i_class_id#161, i_category_id#162, sum#163, isEmpty#164, count#72]

(209) RegularHashAggregateExecTransformer
Input [6]: [i_brand_id#160, i_class_id#161, i_category_id#162, sum#163, isEmpty#164, count#72]
Keys [3]: [i_brand_id#160, i_class_id#161, i_category_id#162]
Functions [2]: [sum((cast(cs_quantity#165 as decimal(10,0)) * cs_list_price#166)), count(1)]
Aggregate Attributes [2]: [sum((cast(cs_quantity#165 as decimal(10,0)) * cs_list_price#166))#74, count(1)#75]
Results [5]: [i_brand_id#160, i_class_id#161, i_category_id#162, sum((cast(cs_quantity#165 as decimal(10,0)) * cs_list_price#166))#74, count(1)#75]

(210) ProjectExecTransformer
Output [6]: [catalog AS channel#167, i_brand_id#160, i_class_id#161, i_category_id#162, sum((cast(cs_quantity#165 as decimal(10,0)) * cs_list_price#166))#74 AS sales#168, count(1)#75 AS number_sales#169]
Input [5]: [i_brand_id#160, i_class_id#161, i_category_id#162, sum((cast(cs_quantity#165 as decimal(10,0)) * cs_list_price#166))#74, count(1)#75]

(211) FilterExecTransformer
Input [6]: [channel#167, i_brand_id#160, i_class_id#161, i_category_id#162, sales#168, number_sales#169]
Arguments: (isnotnull(sales#168) AND (cast(sales#168 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#55, [id=#10] as decimal(32,6))))

(212) WholeStageCodegenTransformer (355)
Input [6]: [channel#167, i_brand_id#160, i_class_id#161, i_category_id#162, sales#168, number_sales#169]
Arguments: false

(213) ReusedExchange [Reuses operator id: 151]
Output [6]: [i_brand_id#170, i_class_id#171, i_category_id#172, sum#173, isEmpty#174, count#95]

(214) InputAdapter
Input [6]: [i_brand_id#170, i_class_id#171, i_category_id#172, sum#173, isEmpty#174, count#95]

(215) InputIteratorTransformer
Input [6]: [i_brand_id#170, i_class_id#171, i_category_id#172, sum#173, isEmpty#174, count#95]

(216) RegularHashAggregateExecTransformer
Input [6]: [i_brand_id#170, i_class_id#171, i_category_id#172, sum#173, isEmpty#174, count#95]
Keys [3]: [i_brand_id#170, i_class_id#171, i_category_id#172]
Functions [2]: [sum((cast(ws_quantity#175 as decimal(10,0)) * ws_list_price#176)), count(1)]
Aggregate Attributes [2]: [sum((cast(ws_quantity#175 as decimal(10,0)) * ws_list_price#176))#97, count(1)#98]
Results [5]: [i_brand_id#170, i_class_id#171, i_category_id#172, sum((cast(ws_quantity#175 as decimal(10,0)) * ws_list_price#176))#97, count(1)#98]

(217) ProjectExecTransformer
Output [6]: [web AS channel#177, i_brand_id#170, i_class_id#171, i_category_id#172, sum((cast(ws_quantity#175 as decimal(10,0)) * ws_list_price#176))#97 AS sales#178, count(1)#98 AS number_sales#179]
Input [5]: [i_brand_id#170, i_class_id#171, i_category_id#172, sum((cast(ws_quantity#175 as decimal(10,0)) * ws_list_price#176))#97, count(1)#98]

(218) FilterExecTransformer
Input [6]: [channel#177, i_brand_id#170, i_class_id#171, i_category_id#172, sales#178, number_sales#179]
Arguments: (isnotnull(sales#178) AND (cast(sales#178 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#55, [id=#10] as decimal(32,6))))

(219) WholeStageCodegenTransformer (399)
Input [6]: [channel#177, i_brand_id#170, i_class_id#171, i_category_id#172, sales#178, number_sales#179]
Arguments: false

(220) ColumnarUnion
Arguments: hashpartitioning(i_brand_id#150, i_class_id#151, i_category_id#152, 1)

(221) InputAdapter
Input [6]: [channel#157, i_brand_id#150, i_class_id#151, i_category_id#152, sales#158, number_sales#159]

(222) InputIteratorTransformer
Input [6]: [channel#157, i_brand_id#150, i_class_id#151, i_category_id#152, sales#158, number_sales#159]

(223) RegularHashAggregateExecTransformer
Input [6]: [channel#157, i_brand_id#150, i_class_id#151, i_category_id#152, sales#158, number_sales#159]
Keys [4]: [channel#157, i_brand_id#150, i_class_id#151, i_category_id#152]
Functions [2]: [sum(sales#158), sum(number_sales#159)]
Aggregate Attributes [2]: [sum(sales#158)#102, sum(number_sales#159)#103]
Results [6]: [channel#157, i_brand_id#150, i_class_id#151, i_category_id#152, sum(sales#158)#102, sum(number_sales#159)#103]

(224) ProjectExecTransformer
Output [4]: [channel#157, i_brand_id#150, sum(sales#158)#102 AS sum_sales#180, sum(number_sales#159)#103 AS number_sales#181]
Input [6]: [channel#157, i_brand_id#150, i_class_id#151, i_category_id#152, sum(sales#158)#102, sum(number_sales#159)#103]

(225) FlushableHashAggregateExecTransformer
Input [4]: [channel#157, i_brand_id#150, sum_sales#180, number_sales#181]
Keys [2]: [channel#157, i_brand_id#150]
Functions [2]: [partial_sum(sum_sales#180), partial_sum(number_sales#181)]
Aggregate Attributes [3]: [sum#182, isEmpty#183, sum#184]
Results [5]: [channel#157, i_brand_id#150, sum#185, isEmpty#186, sum#187]

(226) ProjectExecTransformer
Output [6]: [hash(channel#157, i_brand_id#150, 42) AS hash_partition_key#188, channel#157, i_brand_id#150, sum#185, isEmpty#186, sum#187]
Input [5]: [channel#157, i_brand_id#150, sum#185, isEmpty#186, sum#187]

(227) WholeStageCodegenTransformer (400)
Input [6]: [hash_partition_key#188, channel#157, i_brand_id#150, sum#185, isEmpty#186, sum#187]
Arguments: false

(228) VeloxResizeBatches
Input [6]: [hash_partition_key#188, channel#157, i_brand_id#150, sum#185, isEmpty#186, sum#187]
Arguments: 1024, 2147483647, 10485760

(229) ColumnarExchange
Input [6]: [hash_partition_key#188, channel#157, i_brand_id#150, sum#185, isEmpty#186, sum#187]
Arguments: hashpartitioning(channel#157, i_brand_id#150, 1), ENSURE_REQUIREMENTS, [channel#157, i_brand_id#150, sum#185, isEmpty#186, sum#187], [plan_id=14], [shuffle_writer_type=hash]

(230) InputAdapter
Input [5]: [channel#157, i_brand_id#150, sum#185, isEmpty#186, sum#187]

(231) InputIteratorTransformer
Input [5]: [channel#157, i_brand_id#150, sum#185, isEmpty#186, sum#187]

(232) RegularHashAggregateExecTransformer
Input [5]: [channel#157, i_brand_id#150, sum#185, isEmpty#186, sum#187]
Keys [2]: [channel#157, i_brand_id#150]
Functions [2]: [sum(sum_sales#180), sum(number_sales#181)]
Aggregate Attributes [2]: [sum(sum_sales#180)#189, sum(number_sales#181)#190]
Results [4]: [channel#157, i_brand_id#150, sum(sum_sales#180)#189, sum(number_sales#181)#190]

(233) ProjectExecTransformer
Output [6]: [channel#157, i_brand_id#150, null AS i_class_id#191, null AS i_category_id#192, sum(sum_sales#180)#189 AS sum(sum_sales)#193, sum(number_sales#181)#190 AS sum(number_sales)#194]
Input [4]: [channel#157, i_brand_id#150, sum(sum_sales#180)#189, sum(number_sales#181)#190]

(234) WholeStageCodegenTransformer (401)
Input [6]: [channel#157, i_brand_id#150, i_class_id#191, i_category_id#192, sum(sum_sales)#193, sum(number_sales)#194]
Arguments: false

(235) ReusedExchange [Reuses operator id: 97]
Output [6]: [i_brand_id#195, i_class_id#196, i_category_id#197, sum#198, isEmpty#199, count#48]

(236) InputAdapter
Input [6]: [i_brand_id#195, i_class_id#196, i_category_id#197, sum#198, isEmpty#199, count#48]

(237) InputIteratorTransformer
Input [6]: [i_brand_id#195, i_class_id#196, i_category_id#197, sum#198, isEmpty#199, count#48]

(238) RegularHashAggregateExecTransformer
Input [6]: [i_brand_id#195, i_class_id#196, i_category_id#197, sum#198, isEmpty#199, count#48]
Keys [3]: [i_brand_id#195, i_class_id#196, i_category_id#197]
Functions [2]: [sum((cast(ss_quantity#200 as decimal(10,0)) * ss_list_price#201)), count(1)]
Aggregate Attributes [2]: [sum((cast(ss_quantity#200 as decimal(10,0)) * ss_list_price#201))#50, count(1)#51]
Results [5]: [i_brand_id#195, i_class_id#196, i_category_id#197, sum((cast(ss_quantity#200 as decimal(10,0)) * ss_list_price#201))#50, count(1)#51]

(239) ProjectExecTransformer
Output [6]: [store AS channel#202, i_brand_id#195, i_class_id#196, i_category_id#197, sum((cast(ss_quantity#200 as decimal(10,0)) * ss_list_price#201))#50 AS sales#203, count(1)#51 AS number_sales#204]
Input [5]: [i_brand_id#195, i_class_id#196, i_category_id#197, sum((cast(ss_quantity#200 as decimal(10,0)) * ss_list_price#201))#50, count(1)#51]

(240) FilterExecTransformer
Input [6]: [channel#202, i_brand_id#195, i_class_id#196, i_category_id#197, sales#203, number_sales#204]
Arguments: (isnotnull(sales#203) AND (cast(sales#203 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#55, [id=#10] as decimal(32,6))))

(241) WholeStageCodegenTransformer (445)
Input [6]: [channel#202, i_brand_id#195, i_class_id#196, i_category_id#197, sales#203, number_sales#204]
Arguments: false

(242) ReusedExchange [Reuses operator id: 124]
Output [6]: [i_brand_id#205, i_class_id#206, i_category_id#207, sum#208, isEmpty#209, count#72]

(243) InputAdapter
Input [6]: [i_brand_id#205, i_class_id#206, i_category_id#207, sum#208, isEmpty#209, count#72]

(244) InputIteratorTransformer
Input [6]: [i_brand_id#205, i_class_id#206, i_category_id#207, sum#208, isEmpty#209, count#72]

(245) RegularHashAggregateExecTransformer
Input [6]: [i_brand_id#205, i_class_id#206, i_category_id#207, sum#208, isEmpty#209, count#72]
Keys [3]: [i_brand_id#205, i_class_id#206, i_category_id#207]
Functions [2]: [sum((cast(cs_quantity#210 as decimal(10,0)) * cs_list_price#211)), count(1)]
Aggregate Attributes [2]: [sum((cast(cs_quantity#210 as decimal(10,0)) * cs_list_price#211))#74, count(1)#75]
Results [5]: [i_brand_id#205, i_class_id#206, i_category_id#207, sum((cast(cs_quantity#210 as decimal(10,0)) * cs_list_price#211))#74, count(1)#75]

(246) ProjectExecTransformer
Output [6]: [catalog AS channel#212, i_brand_id#205, i_class_id#206, i_category_id#207, sum((cast(cs_quantity#210 as decimal(10,0)) * cs_list_price#211))#74 AS sales#213, count(1)#75 AS number_sales#214]
Input [5]: [i_brand_id#205, i_class_id#206, i_category_id#207, sum((cast(cs_quantity#210 as decimal(10,0)) * cs_list_price#211))#74, count(1)#75]

(247) FilterExecTransformer
Input [6]: [channel#212, i_brand_id#205, i_class_id#206, i_category_id#207, sales#213, number_sales#214]
Arguments: (isnotnull(sales#213) AND (cast(sales#213 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#55, [id=#10] as decimal(32,6))))

(248) WholeStageCodegenTransformer (489)
Input [6]: [channel#212, i_brand_id#205, i_class_id#206, i_category_id#207, sales#213, number_sales#214]
Arguments: false

(249) ReusedExchange [Reuses operator id: 151]
Output [6]: [i_brand_id#215, i_class_id#216, i_category_id#217, sum#218, isEmpty#219, count#95]

(250) InputAdapter
Input [6]: [i_brand_id#215, i_class_id#216, i_category_id#217, sum#218, isEmpty#219, count#95]

(251) InputIteratorTransformer
Input [6]: [i_brand_id#215, i_class_id#216, i_category_id#217, sum#218, isEmpty#219, count#95]

(252) RegularHashAggregateExecTransformer
Input [6]: [i_brand_id#215, i_class_id#216, i_category_id#217, sum#218, isEmpty#219, count#95]
Keys [3]: [i_brand_id#215, i_class_id#216, i_category_id#217]
Functions [2]: [sum((cast(ws_quantity#220 as decimal(10,0)) * ws_list_price#221)), count(1)]
Aggregate Attributes [2]: [sum((cast(ws_quantity#220 as decimal(10,0)) * ws_list_price#221))#97, count(1)#98]
Results [5]: [i_brand_id#215, i_class_id#216, i_category_id#217, sum((cast(ws_quantity#220 as decimal(10,0)) * ws_list_price#221))#97, count(1)#98]

(253) ProjectExecTransformer
Output [6]: [web AS channel#222, i_brand_id#215, i_class_id#216, i_category_id#217, sum((cast(ws_quantity#220 as decimal(10,0)) * ws_list_price#221))#97 AS sales#223, count(1)#98 AS number_sales#224]
Input [5]: [i_brand_id#215, i_class_id#216, i_category_id#217, sum((cast(ws_quantity#220 as decimal(10,0)) * ws_list_price#221))#97, count(1)#98]

(254) FilterExecTransformer
Input [6]: [channel#222, i_brand_id#215, i_class_id#216, i_category_id#217, sales#223, number_sales#224]
Arguments: (isnotnull(sales#223) AND (cast(sales#223 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#55, [id=#10] as decimal(32,6))))

(255) WholeStageCodegenTransformer (533)
Input [6]: [channel#222, i_brand_id#215, i_class_id#216, i_category_id#217, sales#223, number_sales#224]
Arguments: false

(256) ColumnarUnion
Arguments: hashpartitioning(i_brand_id#195, i_class_id#196, i_category_id#197, 1)

(257) InputAdapter
Input [6]: [channel#202, i_brand_id#195, i_class_id#196, i_category_id#197, sales#203, number_sales#204]

(258) InputIteratorTransformer
Input [6]: [channel#202, i_brand_id#195, i_class_id#196, i_category_id#197, sales#203, number_sales#204]

(259) RegularHashAggregateExecTransformer
Input [6]: [channel#202, i_brand_id#195, i_class_id#196, i_category_id#197, sales#203, number_sales#204]
Keys [4]: [channel#202, i_brand_id#195, i_class_id#196, i_category_id#197]
Functions [2]: [sum(sales#203), sum(number_sales#204)]
Aggregate Attributes [2]: [sum(sales#203)#102, sum(number_sales#204)#103]
Results [6]: [channel#202, i_brand_id#195, i_class_id#196, i_category_id#197, sum(sales#203)#102, sum(number_sales#204)#103]

(260) ProjectExecTransformer
Output [3]: [channel#202, sum(sales#203)#102 AS sum_sales#225, sum(number_sales#204)#103 AS number_sales#226]
Input [6]: [channel#202, i_brand_id#195, i_class_id#196, i_category_id#197, sum(sales#203)#102, sum(number_sales#204)#103]

(261) FlushableHashAggregateExecTransformer
Input [3]: [channel#202, sum_sales#225, number_sales#226]
Keys [1]: [channel#202]
Functions [2]: [partial_sum(sum_sales#225), partial_sum(number_sales#226)]
Aggregate Attributes [3]: [sum#227, isEmpty#228, sum#229]
Results [4]: [channel#202, sum#230, isEmpty#231, sum#232]

(262) ProjectExecTransformer
Output [5]: [hash(channel#202, 42) AS hash_partition_key#233, channel#202, sum#230, isEmpty#231, sum#232]
Input [4]: [channel#202, sum#230, isEmpty#231, sum#232]

(263) WholeStageCodegenTransformer (534)
Input [5]: [hash_partition_key#233, channel#202, sum#230, isEmpty#231, sum#232]
Arguments: false

(264) VeloxResizeBatches
Input [5]: [hash_partition_key#233, channel#202, sum#230, isEmpty#231, sum#232]
Arguments: 1024, 2147483647, 10485760

(265) ColumnarExchange
Input [5]: [hash_partition_key#233, channel#202, sum#230, isEmpty#231, sum#232]
Arguments: hashpartitioning(channel#202, 1), ENSURE_REQUIREMENTS, [channel#202, sum#230, isEmpty#231, sum#232], [plan_id=15], [shuffle_writer_type=hash]

(266) InputAdapter
Input [4]: [channel#202, sum#230, isEmpty#231, sum#232]

(267) InputIteratorTransformer
Input [4]: [channel#202, sum#230, isEmpty#231, sum#232]

(268) RegularHashAggregateExecTransformer
Input [4]: [channel#202, sum#230, isEmpty#231, sum#232]
Keys [1]: [channel#202]
Functions [2]: [sum(sum_sales#225), sum(number_sales#226)]
Aggregate Attributes [2]: [sum(sum_sales#225)#234, sum(number_sales#226)#235]
Results [3]: [channel#202, sum(sum_sales#225)#234, sum(number_sales#226)#235]

(269) ProjectExecTransformer
Output [6]: [channel#202, null AS i_brand_id#236, null AS i_class_id#237, null AS i_category_id#238, sum(sum_sales#225)#234 AS sum(sum_sales)#239, sum(number_sales#226)#235 AS sum(number_sales)#240]
Input [3]: [channel#202, sum(sum_sales#225)#234, sum(number_sales#226)#235]

(270) WholeStageCodegenTransformer (535)
Input [6]: [channel#202, i_brand_id#236, i_class_id#237, i_category_id#238, sum(sum_sales)#239, sum(number_sales)#240]
Arguments: false

(271) ReusedExchange [Reuses operator id: 97]
Output [6]: [i_brand_id#241, i_class_id#242, i_category_id#243, sum#244, isEmpty#245, count#48]

(272) InputAdapter
Input [6]: [i_brand_id#241, i_class_id#242, i_category_id#243, sum#244, isEmpty#245, count#48]

(273) InputIteratorTransformer
Input [6]: [i_brand_id#241, i_class_id#242, i_category_id#243, sum#244, isEmpty#245, count#48]

(274) RegularHashAggregateExecTransformer
Input [6]: [i_brand_id#241, i_class_id#242, i_category_id#243, sum#244, isEmpty#245, count#48]
Keys [3]: [i_brand_id#241, i_class_id#242, i_category_id#243]
Functions [2]: [sum((cast(ss_quantity#246 as decimal(10,0)) * ss_list_price#247)), count(1)]
Aggregate Attributes [2]: [sum((cast(ss_quantity#246 as decimal(10,0)) * ss_list_price#247))#50, count(1)#51]
Results [5]: [i_brand_id#241, i_class_id#242, i_category_id#243, sum((cast(ss_quantity#246 as decimal(10,0)) * ss_list_price#247))#50, count(1)#51]

(275) ProjectExecTransformer
Output [6]: [store AS channel#248, i_brand_id#241, i_class_id#242, i_category_id#243, sum((cast(ss_quantity#246 as decimal(10,0)) * ss_list_price#247))#50 AS sales#249, count(1)#51 AS number_sales#250]
Input [5]: [i_brand_id#241, i_class_id#242, i_category_id#243, sum((cast(ss_quantity#246 as decimal(10,0)) * ss_list_price#247))#50, count(1)#51]

(276) FilterExecTransformer
Input [6]: [channel#248, i_brand_id#241, i_class_id#242, i_category_id#243, sales#249, number_sales#250]
Arguments: (isnotnull(sales#249) AND (cast(sales#249 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#55, [id=#10] as decimal(32,6))))

(277) WholeStageCodegenTransformer (579)
Input [6]: [channel#248, i_brand_id#241, i_class_id#242, i_category_id#243, sales#249, number_sales#250]
Arguments: false

(278) ReusedExchange [Reuses operator id: 124]
Output [6]: [i_brand_id#251, i_class_id#252, i_category_id#253, sum#254, isEmpty#255, count#72]

(279) InputAdapter
Input [6]: [i_brand_id#251, i_class_id#252, i_category_id#253, sum#254, isEmpty#255, count#72]

(280) InputIteratorTransformer
Input [6]: [i_brand_id#251, i_class_id#252, i_category_id#253, sum#254, isEmpty#255, count#72]

(281) RegularHashAggregateExecTransformer
Input [6]: [i_brand_id#251, i_class_id#252, i_category_id#253, sum#254, isEmpty#255, count#72]
Keys [3]: [i_brand_id#251, i_class_id#252, i_category_id#253]
Functions [2]: [sum((cast(cs_quantity#256 as decimal(10,0)) * cs_list_price#257)), count(1)]
Aggregate Attributes [2]: [sum((cast(cs_quantity#256 as decimal(10,0)) * cs_list_price#257))#74, count(1)#75]
Results [5]: [i_brand_id#251, i_class_id#252, i_category_id#253, sum((cast(cs_quantity#256 as decimal(10,0)) * cs_list_price#257))#74, count(1)#75]

(282) ProjectExecTransformer
Output [6]: [catalog AS channel#258, i_brand_id#251, i_class_id#252, i_category_id#253, sum((cast(cs_quantity#256 as decimal(10,0)) * cs_list_price#257))#74 AS sales#259, count(1)#75 AS number_sales#260]
Input [5]: [i_brand_id#251, i_class_id#252, i_category_id#253, sum((cast(cs_quantity#256 as decimal(10,0)) * cs_list_price#257))#74, count(1)#75]

(283) FilterExecTransformer
Input [6]: [channel#258, i_brand_id#251, i_class_id#252, i_category_id#253, sales#259, number_sales#260]
Arguments: (isnotnull(sales#259) AND (cast(sales#259 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#55, [id=#10] as decimal(32,6))))

(284) WholeStageCodegenTransformer (623)
Input [6]: [channel#258, i_brand_id#251, i_class_id#252, i_category_id#253, sales#259, number_sales#260]
Arguments: false

(285) ReusedExchange [Reuses operator id: 151]
Output [6]: [i_brand_id#261, i_class_id#262, i_category_id#263, sum#264, isEmpty#265, count#95]

(286) InputAdapter
Input [6]: [i_brand_id#261, i_class_id#262, i_category_id#263, sum#264, isEmpty#265, count#95]

(287) InputIteratorTransformer
Input [6]: [i_brand_id#261, i_class_id#262, i_category_id#263, sum#264, isEmpty#265, count#95]

(288) RegularHashAggregateExecTransformer
Input [6]: [i_brand_id#261, i_class_id#262, i_category_id#263, sum#264, isEmpty#265, count#95]
Keys [3]: [i_brand_id#261, i_class_id#262, i_category_id#263]
Functions [2]: [sum((cast(ws_quantity#266 as decimal(10,0)) * ws_list_price#267)), count(1)]
Aggregate Attributes [2]: [sum((cast(ws_quantity#266 as decimal(10,0)) * ws_list_price#267))#97, count(1)#98]
Results [5]: [i_brand_id#261, i_class_id#262, i_category_id#263, sum((cast(ws_quantity#266 as decimal(10,0)) * ws_list_price#267))#97, count(1)#98]

(289) ProjectExecTransformer
Output [6]: [web AS channel#268, i_brand_id#261, i_class_id#262, i_category_id#263, sum((cast(ws_quantity#266 as decimal(10,0)) * ws_list_price#267))#97 AS sales#269, count(1)#98 AS number_sales#270]
Input [5]: [i_brand_id#261, i_class_id#262, i_category_id#263, sum((cast(ws_quantity#266 as decimal(10,0)) * ws_list_price#267))#97, count(1)#98]

(290) FilterExecTransformer
Input [6]: [channel#268, i_brand_id#261, i_class_id#262, i_category_id#263, sales#269, number_sales#270]
Arguments: (isnotnull(sales#269) AND (cast(sales#269 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#55, [id=#10] as decimal(32,6))))

(291) WholeStageCodegenTransformer (667)
Input [6]: [channel#268, i_brand_id#261, i_class_id#262, i_category_id#263, sales#269, number_sales#270]
Arguments: false

(292) ColumnarUnion
Arguments: hashpartitioning(i_brand_id#241, i_class_id#242, i_category_id#243, 1)

(293) InputAdapter
Input [6]: [channel#248, i_brand_id#241, i_class_id#242, i_category_id#243, sales#249, number_sales#250]

(294) InputIteratorTransformer
Input [6]: [channel#248, i_brand_id#241, i_class_id#242, i_category_id#243, sales#249, number_sales#250]

(295) RegularHashAggregateExecTransformer
Input [6]: [channel#248, i_brand_id#241, i_class_id#242, i_category_id#243, sales#249, number_sales#250]
Keys [4]: [channel#248, i_brand_id#241, i_class_id#242, i_category_id#243]
Functions [2]: [sum(sales#249), sum(number_sales#250)]
Aggregate Attributes [2]: [sum(sales#249)#102, sum(number_sales#250)#103]
Results [6]: [channel#248, i_brand_id#241, i_class_id#242, i_category_id#243, sum(sales#249)#102, sum(number_sales#250)#103]

(296) ProjectExecTransformer
Output [2]: [sum(sales#249)#102 AS sum_sales#271, sum(number_sales#250)#103 AS number_sales#272]
Input [6]: [channel#248, i_brand_id#241, i_class_id#242, i_category_id#243, sum(sales#249)#102, sum(number_sales#250)#103]

(297) RegularHashAggregateExecTransformer
Input [2]: [sum_sales#271, number_sales#272]
Keys: []
Functions [2]: [sum(sum_sales#271), sum(number_sales#272)]
Aggregate Attributes [2]: [sum(sum_sales#271)#273, sum(number_sales#272)#274]
Results [2]: [sum(sum_sales#271)#273, sum(number_sales#272)#274]

(298) ProjectExecTransformer
Output [6]: [null AS channel#275, null AS i_brand_id#276, null AS i_class_id#277, null AS i_category_id#278, sum(sum_sales#271)#273 AS sum(sum_sales)#279, sum(number_sales#272)#274 AS sum(number_sales)#280]
Input [2]: [sum(sum_sales#271)#273, sum(number_sales#272)#274]

(299) WholeStageCodegenTransformer (668)
Input [6]: [channel#275, i_brand_id#276, i_class_id#277, i_category_id#278, sum(sum_sales)#279, sum(number_sales)#280]
Arguments: false

(300) ColumnarUnion
Arguments: UnknownPartitioning(0)

(301) InputAdapter
Input [6]: [channel#52, i_brand_id#38, i_class_id#39, i_category_id#40, sum_sales#104, number_sales#105]

(302) InputIteratorTransformer
Input [6]: [channel#52, i_brand_id#38, i_class_id#39, i_category_id#40, sum_sales#104, number_sales#105]

(303) FlushableHashAggregateExecTransformer
Input [6]: [channel#52, i_brand_id#38, i_class_id#39, i_category_id#40, sum_sales#104, number_sales#105]
Keys [6]: [channel#52, i_brand_id#38, i_class_id#39, i_category_id#40, sum_sales#104, number_sales#105]
Functions: []
Aggregate Attributes: []
Results [6]: [channel#52, i_brand_id#38, i_class_id#39, i_category_id#40, sum_sales#104, number_sales#105]

(304) ProjectExecTransformer
Output [7]: [hash(channel#52, i_brand_id#38, i_class_id#39, i_category_id#40, sum_sales#104, number_sales#105, 42) AS hash_partition_key#281, channel#52, i_brand_id#38, i_class_id#39, i_category_id#40, sum_sales#104, number_sales#105]
Input [6]: [channel#52, i_brand_id#38, i_class_id#39, i_category_id#40, sum_sales#104, number_sales#105]

(305) WholeStageCodegenTransformer (669)
Input [7]: [hash_partition_key#281, channel#52, i_brand_id#38, i_class_id#39, i_category_id#40, sum_sales#104, number_sales#105]
Arguments: false

(306) VeloxResizeBatches
Input [7]: [hash_partition_key#281, channel#52, i_brand_id#38, i_class_id#39, i_category_id#40, sum_sales#104, number_sales#105]
Arguments: 1024, 2147483647, 10485760

(307) ColumnarExchange
Input [7]: [hash_partition_key#281, channel#52, i_brand_id#38, i_class_id#39, i_category_id#40, sum_sales#104, number_sales#105]
Arguments: hashpartitioning(channel#52, i_brand_id#38, i_class_id#39, i_category_id#40, sum_sales#104, number_sales#105, 1), ENSURE_REQUIREMENTS, [channel#52, i_brand_id#38, i_class_id#39, i_category_id#40, sum_sales#104, number_sales#105], [plan_id=16], [shuffle_writer_type=hash]

(308) InputAdapter
Input [6]: [channel#52, i_brand_id#38, i_class_id#39, i_category_id#40, sum_sales#104, number_sales#105]

(309) InputIteratorTransformer
Input [6]: [channel#52, i_brand_id#38, i_class_id#39, i_category_id#40, sum_sales#104, number_sales#105]

(310) RegularHashAggregateExecTransformer
Input [6]: [channel#52, i_brand_id#38, i_class_id#39, i_category_id#40, sum_sales#104, number_sales#105]
Keys [6]: [channel#52, i_brand_id#38, i_class_id#39, i_category_id#40, sum_sales#104, number_sales#105]
Functions: []
Aggregate Attributes: []
Results [6]: [channel#52, i_brand_id#38, i_class_id#39, i_category_id#40, sum_sales#104, number_sales#105]

(311) WholeStageCodegenTransformer (670)
Input [6]: [channel#52, i_brand_id#38, i_class_id#39, i_category_id#40, sum_sales#104, number_sales#105]
Arguments: false

(312) TakeOrderedAndProjectExecTransformer
Input [6]: [channel#52, i_brand_id#38, i_class_id#39, i_category_id#40, sum_sales#104, number_sales#105]
Arguments: 100, [channel#52 ASC NULLS FIRST, i_brand_id#38 ASC NULLS FIRST, i_class_id#39 ASC NULLS FIRST, i_category_id#40 ASC NULLS FIRST], [channel#52, i_brand_id#38, i_class_id#39, i_category_id#40, sum_sales#104, number_sales#105], 0

(313) VeloxColumnarToRow
Input [6]: [channel#52, i_brand_id#38, i_class_id#39, i_category_id#40, sum_sales#104, number_sales#105]

===== Subqueries =====

Subquery:1 Hosting operator id = 102 Hosting Expression = Subquery scalar-subquery#55, [id=#10]
VeloxColumnarToRow (347)
+- ^ RegularHashAggregateExecTransformer (345)
   +- ^ InputIteratorTransformer (344)
      +- ColumnarExchange (342)
         +- VeloxResizeBatches (341)
            +- ^ FlushableHashAggregateExecTransformer (339)
               +- ^ ProjectExecTransformer (338)
                  +- ^ InputIteratorTransformer (337)
                     +- ColumnarUnion (335)
                        :- ^ ProjectExecTransformer (319)
                        :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (318)
                        :     :- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (314)
                        :     +- ^ InputIteratorTransformer (317)
                        :        +- ReusedExchange (315)
                        :- ^ ProjectExecTransformer (326)
                        :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (325)
                        :     :- ^ FileSourceScanExecTransformer parquet spark_catalog.default.catalog_sales (321)
                        :     +- ^ InputIteratorTransformer (324)
                        :        +- ReusedExchange (322)
                        +- ^ ProjectExecTransformer (333)
                           +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (332)
                              :- ^ FileSourceScanExecTransformer parquet spark_catalog.default.web_sales (328)
                              +- ^ InputIteratorTransformer (331)
                                 +- ReusedExchange (329)


(314) FileSourceScanExecTransformer parquet spark_catalog.default.store_sales
Output [3]: [ss_quantity#282, ss_list_price#283, ss_sold_date_sk#284]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(ss_sold_date_sk#284), dynamicpruningexpression(ss_sold_date_sk#284 IN dynamicpruning#12)]
ReadSchema: struct<ss_quantity:int,ss_list_price:decimal(7,2)>

(315) ReusedExchange [Reuses operator id: 362]
Output [1]: [d_date_sk#285]

(316) InputAdapter
Input [1]: [d_date_sk#285]

(317) InputIteratorTransformer
Input [1]: [d_date_sk#285]

(318) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_sold_date_sk#284]
Right keys [1]: [d_date_sk#285]
Join type: Inner
Join condition: None

(319) ProjectExecTransformer
Output [2]: [ss_quantity#282 AS quantity#286, ss_list_price#283 AS list_price#287]
Input [4]: [ss_quantity#282, ss_list_price#283, ss_sold_date_sk#284, d_date_sk#285]

(320) WholeStageCodegenTransformer (3)
Input [2]: [quantity#286, list_price#287]
Arguments: false

(321) FileSourceScanExecTransformer parquet spark_catalog.default.catalog_sales
Output [3]: [cs_quantity#288, cs_list_price#289, cs_sold_date_sk#290]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(cs_sold_date_sk#290), dynamicpruningexpression(cs_sold_date_sk#290 IN dynamicpruning#291)]
ReadSchema: struct<cs_quantity:int,cs_list_price:decimal(7,2)>

(322) ReusedExchange [Reuses operator id: 352]
Output [1]: [d_date_sk#292]

(323) InputAdapter
Input [1]: [d_date_sk#292]

(324) InputIteratorTransformer
Input [1]: [d_date_sk#292]

(325) BroadcastHashJoinExecTransformer
Left keys [1]: [cs_sold_date_sk#290]
Right keys [1]: [d_date_sk#292]
Join type: Inner
Join condition: None

(326) ProjectExecTransformer
Output [2]: [cs_quantity#288 AS quantity#293, cs_list_price#289 AS list_price#294]
Input [4]: [cs_quantity#288, cs_list_price#289, cs_sold_date_sk#290, d_date_sk#292]

(327) WholeStageCodegenTransformer (6)
Input [2]: [quantity#293, list_price#294]
Arguments: false

(328) FileSourceScanExecTransformer parquet spark_catalog.default.web_sales
Output [3]: [ws_quantity#295, ws_list_price#296, ws_sold_date_sk#297]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(ws_sold_date_sk#297), dynamicpruningexpression(ws_sold_date_sk#297 IN dynamicpruning#291)]
ReadSchema: struct<ws_quantity:int,ws_list_price:decimal(7,2)>

(329) ReusedExchange [Reuses operator id: 352]
Output [1]: [d_date_sk#298]

(330) InputAdapter
Input [1]: [d_date_sk#298]

(331) InputIteratorTransformer
Input [1]: [d_date_sk#298]

(332) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_sold_date_sk#297]
Right keys [1]: [d_date_sk#298]
Join type: Inner
Join condition: None

(333) ProjectExecTransformer
Output [2]: [ws_quantity#295 AS quantity#299, ws_list_price#296 AS list_price#300]
Input [4]: [ws_quantity#295, ws_list_price#296, ws_sold_date_sk#297, d_date_sk#298]

(334) WholeStageCodegenTransformer (9)
Input [2]: [quantity#299, list_price#300]
Arguments: false

(335) ColumnarUnion
Arguments: UnknownPartitioning(0)

(336) InputAdapter
Input [2]: [quantity#286, list_price#287]

(337) InputIteratorTransformer
Input [2]: [quantity#286, list_price#287]

(338) ProjectExecTransformer
Output [1]: [(cast(quantity#286 as decimal(10,0)) * list_price#287) AS _pre_4#301]
Input [2]: [quantity#286, list_price#287]

(339) FlushableHashAggregateExecTransformer
Input [1]: [_pre_4#301]
Keys: []
Functions [1]: [partial_avg(_pre_4#301)]
Aggregate Attributes [2]: [sum#302, count#303]
Results [2]: [sum#304, count#305]

(340) WholeStageCodegenTransformer (10)
Input [2]: [sum#304, count#305]
Arguments: false

(341) VeloxResizeBatches
Input [2]: [sum#304, count#305]
Arguments: 1024, 2147483647, 10485760

(342) ColumnarExchange
Input [2]: [sum#304, count#305]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=17], [shuffle_writer_type=hash]

(343) InputAdapter
Input [2]: [sum#304, count#305]

(344) InputIteratorTransformer
Input [2]: [sum#304, count#305]

(345) RegularHashAggregateExecTransformer
Input [2]: [sum#304, count#305]
Keys: []
Functions [1]: [avg((cast(quantity#286 as decimal(10,0)) * list_price#287))]
Aggregate Attributes [1]: [avg((cast(quantity#286 as decimal(10,0)) * list_price#287))#306]
Results [1]: [avg((cast(quantity#286 as decimal(10,0)) * list_price#287))#306 AS average_sales#307]

(346) WholeStageCodegenTransformer (11)
Input [1]: [average_sales#307]
Arguments: false

(347) VeloxColumnarToRow
Input [1]: [average_sales#307]

Subquery:2 Hosting operator id = 314 Hosting Expression = ss_sold_date_sk#284 IN dynamicpruning#12

Subquery:3 Hosting operator id = 321 Hosting Expression = cs_sold_date_sk#290 IN dynamicpruning#291
ColumnarBroadcastExchange (352)
+- ^ ProjectExecTransformer (350)
   +- ^ FilterExecTransformer (349)
      +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (348)


(348) FileSourceScanExecTransformer parquet spark_catalog.default.date_dim
Output [2]: [d_date_sk#292, d_year#308]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1998), LessThanOrEqual(d_year,2000), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int>

(349) FilterExecTransformer
Input [2]: [d_date_sk#292, d_year#308]
Arguments: (((isnotnull(d_year#308) AND (d_year#308 >= 1998)) AND (d_year#308 <= 2000)) AND isnotnull(d_date_sk#292))

(350) ProjectExecTransformer
Output [1]: [d_date_sk#292]
Input [2]: [d_date_sk#292, d_year#308]

(351) WholeStageCodegenTransformer (4)
Input [1]: [d_date_sk#292]
Arguments: false

(352) ColumnarBroadcastExchange
Input [1]: [d_date_sk#292]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=18]

Subquery:4 Hosting operator id = 328 Hosting Expression = ws_sold_date_sk#297 IN dynamicpruning#291

Subquery:5 Hosting operator id = 1 Hosting Expression = ss_sold_date_sk#4 IN dynamicpruning#5
ColumnarBroadcastExchange (357)
+- ^ ProjectExecTransformer (355)
   +- ^ FilterExecTransformer (354)
      +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (353)


(353) FileSourceScanExecTransformer parquet spark_catalog.default.date_dim
Output [3]: [d_date_sk#41, d_year#309, d_moy#310]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2000), EqualTo(d_moy,11), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_moy:int>

(354) FilterExecTransformer
Input [3]: [d_date_sk#41, d_year#309, d_moy#310]
Arguments: ((((isnotnull(d_year#309) AND isnotnull(d_moy#310)) AND (d_year#309 = 2000)) AND (d_moy#310 = 11)) AND isnotnull(d_date_sk#41))

(355) ProjectExecTransformer
Output [1]: [d_date_sk#41]
Input [3]: [d_date_sk#41, d_year#309, d_moy#310]

(356) WholeStageCodegenTransformer (12)
Input [1]: [d_date_sk#41]
Arguments: false

(357) ColumnarBroadcastExchange
Input [1]: [d_date_sk#41]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=19]

Subquery:6 Hosting operator id = 5 Hosting Expression = ss_sold_date_sk#11 IN dynamicpruning#12
ColumnarBroadcastExchange (362)
+- ^ ProjectExecTransformer (360)
   +- ^ FilterExecTransformer (359)
      +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (358)


(358) FileSourceScanExecTransformer parquet spark_catalog.default.date_dim
Output [2]: [d_date_sk#24, d_year#311]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int>

(359) FilterExecTransformer
Input [2]: [d_date_sk#24, d_year#311]
Arguments: (((isnotnull(d_year#311) AND (d_year#311 >= 1999)) AND (d_year#311 <= 2001)) AND isnotnull(d_date_sk#24))

(360) ProjectExecTransformer
Output [1]: [d_date_sk#24]
Input [2]: [d_date_sk#24, d_year#311]

(361) WholeStageCodegenTransformer (13)
Input [1]: [d_date_sk#24]
Arguments: false

(362) ColumnarBroadcastExchange
Input [1]: [d_date_sk#24]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=20]

Subquery:7 Hosting operator id = 9 Hosting Expression = cs_sold_date_sk#18 IN dynamicpruning#12

Subquery:8 Hosting operator id = 48 Hosting Expression = ws_sold_date_sk#30 IN dynamicpruning#12

Subquery:9 Hosting operator id = 129 Hosting Expression = ReusedSubquery Subquery scalar-subquery#55, [id=#10]

Subquery:10 Hosting operator id = 104 Hosting Expression = cs_sold_date_sk#59 IN dynamicpruning#5

Subquery:11 Hosting operator id = 156 Hosting Expression = ReusedSubquery Subquery scalar-subquery#55, [id=#10]

Subquery:12 Hosting operator id = 131 Hosting Expression = ws_sold_date_sk#82 IN dynamicpruning#5

Subquery:13 Hosting operator id = 168 Hosting Expression = ReusedSubquery Subquery scalar-subquery#55, [id=#10]

Subquery:14 Hosting operator id = 175 Hosting Expression = ReusedSubquery Subquery scalar-subquery#55, [id=#10]

Subquery:15 Hosting operator id = 182 Hosting Expression = ReusedSubquery Subquery scalar-subquery#55, [id=#10]

Subquery:16 Hosting operator id = 204 Hosting Expression = ReusedSubquery Subquery scalar-subquery#55, [id=#10]

Subquery:17 Hosting operator id = 211 Hosting Expression = ReusedSubquery Subquery scalar-subquery#55, [id=#10]

Subquery:18 Hosting operator id = 218 Hosting Expression = ReusedSubquery Subquery scalar-subquery#55, [id=#10]

Subquery:19 Hosting operator id = 240 Hosting Expression = ReusedSubquery Subquery scalar-subquery#55, [id=#10]

Subquery:20 Hosting operator id = 247 Hosting Expression = ReusedSubquery Subquery scalar-subquery#55, [id=#10]

Subquery:21 Hosting operator id = 254 Hosting Expression = ReusedSubquery Subquery scalar-subquery#55, [id=#10]

Subquery:22 Hosting operator id = 276 Hosting Expression = ReusedSubquery Subquery scalar-subquery#55, [id=#10]

Subquery:23 Hosting operator id = 283 Hosting Expression = ReusedSubquery Subquery scalar-subquery#55, [id=#10]

Subquery:24 Hosting operator id = 290 Hosting Expression = ReusedSubquery Subquery scalar-subquery#55, [id=#10]


