== Physical Plan ==
VeloxColumnarToRow (327)
+- TakeOrderedAndProjectExecTransformer (326)
   +- ^ RegularHashAggregateExecTransformer (324)
      +- ^ InputIteratorTransformer (323)
         +- ColumnarExchange (321)
            +- VeloxResizeBatches (320)
               +- ^ ProjectExecTransformer (318)
                  +- ^ FlushableHashAggregateExecTransformer (317)
                     +- ^ InputIteratorTransformer (316)
                        +- ColumnarUnion (314)
                           :- ^ RegularHashAggregateExecTransformer (175)
                           :  +- ^ InputIteratorTransformer (174)
                           :     +- ColumnarUnion (172)
                           :        :- ^ FilterExecTransformer (116)
                           :        :  +- ^ ProjectExecTransformer (115)
                           :        :     +- ^ RegularHashAggregateExecTransformer (114)
                           :        :        +- ^ InputIteratorTransformer (113)
                           :        :           +- ColumnarExchange (111)
                           :        :              +- VeloxResizeBatches (110)
                           :        :                 +- ^ ProjectExecTransformer (108)
                           :        :                    +- ^ FlushableHashAggregateExecTransformer (107)
                           :        :                       +- ^ ProjectExecTransformer (106)
                           :        :                          +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (105)
                           :        :                             :- ^ ProjectExecTransformer (94)
                           :        :                             :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (93)
                           :        :                             :     :- ^ BroadcastHashJoinExecTransformer LeftSemi BuildRight (89)
                           :        :                             :     :  :- ^ FilterExecTransformer (2)
                           :        :                             :     :  :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (1)
                           :        :                             :     :  +- ^ InputIteratorTransformer (88)
                           :        :                             :     :     +- ColumnarBroadcastExchange (86)
                           :        :                             :     :        +- ^ ProjectExecTransformer (84)
                           :        :                             :     :           +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (83)
                           :        :                             :     :              :- ^ FilterExecTransformer (4)
                           :        :                             :     :              :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.item (3)
                           :        :                             :     :              +- ^ InputIteratorTransformer (82)
                           :        :                             :     :                 +- ColumnarBroadcastExchange (80)
                           :        :                             :     :                    +- ^ ShuffledHashJoinExecTransformer LeftSemi BuildRight (78)
                           :        :                             :     :                       :- ^ InputIteratorTransformer (60)
                           :        :                             :     :                       :  +- ColumnarExchange (58)
                           :        :                             :     :                       :     +- VeloxResizeBatches (57)
                           :        :                             :     :                       :        +- ^ ProjectExecTransformer (55)
                           :        :                             :     :                       :           +- ^ FlushableHashAggregateExecTransformer (54)
                           :        :                             :     :                       :              +- ^ InputIteratorTransformer (53)
                           :        :                             :     :                       :                 +- ColumnarExchange (51)
                           :        :                             :     :                       :                    +- VeloxResizeBatches (50)
                           :        :                             :     :                       :                       +- ^ ProjectExecTransformer (48)
                           :        :                             :     :                       :                          +- ^ FlushableHashAggregateExecTransformer (47)
                           :        :                             :     :                       :                             +- ^ ProjectExecTransformer (46)
                           :        :                             :     :                       :                                +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (45)
                           :        :                             :     :                       :                                   :- ^ ProjectExecTransformer (11)
                           :        :                             :     :                       :                                   :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (10)
                           :        :                             :     :                       :                                   :     :- ^ FilterExecTransformer (6)
                           :        :                             :     :                       :                                   :     :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (5)
                           :        :                             :     :                       :                                   :     +- ^ InputIteratorTransformer (9)
                           :        :                             :     :                       :                                   :        +- ReusedExchange (7)
                           :        :                             :     :                       :                                   +- ^ InputIteratorTransformer (44)
                           :        :                             :     :                       :                                      +- ColumnarBroadcastExchange (42)
                           :        :                             :     :                       :                                         +- ^ ShuffledHashJoinExecTransformer LeftSemi BuildRight (40)
                           :        :                             :     :                       :                                            :- ^ InputIteratorTransformer (19)
                           :        :                             :     :                       :                                            :  +- ColumnarExchange (17)
                           :        :                             :     :                       :                                            :     +- VeloxResizeBatches (16)
                           :        :                             :     :                       :                                            :        +- ^ ProjectExecTransformer (14)
                           :        :                             :     :                       :                                            :           +- ^ FilterExecTransformer (13)
                           :        :                             :     :                       :                                            :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.item (12)
                           :        :                             :     :                       :                                            +- ^ InputIteratorTransformer (39)
                           :        :                             :     :                       :                                               +- ColumnarExchange (37)
                           :        :                             :     :                       :                                                  +- VeloxResizeBatches (36)
                           :        :                             :     :                       :                                                     +- ^ ProjectExecTransformer (34)
                           :        :                             :     :                       :                                                        +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (33)
                           :        :                             :     :                       :                                                           :- ^ ProjectExecTransformer (26)
                           :        :                             :     :                       :                                                           :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (25)
                           :        :                             :     :                       :                                                           :     :- ^ FilterExecTransformer (21)
                           :        :                             :     :                       :                                                           :     :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.catalog_sales (20)
                           :        :                             :     :                       :                                                           :     +- ^ InputIteratorTransformer (24)
                           :        :                             :     :                       :                                                           :        +- ReusedExchange (22)
                           :        :                             :     :                       :                                                           +- ^ InputIteratorTransformer (32)
                           :        :                             :     :                       :                                                              +- ColumnarBroadcastExchange (30)
                           :        :                             :     :                       :                                                                 +- ^ FilterExecTransformer (28)
                           :        :                             :     :                       :                                                                    +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.item (27)
                           :        :                             :     :                       +- ^ InputIteratorTransformer (77)
                           :        :                             :     :                          +- ColumnarExchange (75)
                           :        :                             :     :                             +- VeloxResizeBatches (74)
                           :        :                             :     :                                +- ^ ProjectExecTransformer (72)
                           :        :                             :     :                                   +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (71)
                           :        :                             :     :                                      :- ^ ProjectExecTransformer (67)
                           :        :                             :     :                                      :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (66)
                           :        :                             :     :                                      :     :- ^ FilterExecTransformer (62)
                           :        :                             :     :                                      :     :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.web_sales (61)
                           :        :                             :     :                                      :     +- ^ InputIteratorTransformer (65)
                           :        :                             :     :                                      :        +- ReusedExchange (63)
                           :        :                             :     :                                      +- ^ InputIteratorTransformer (70)
                           :        :                             :     :                                         +- ReusedExchange (68)
                           :        :                             :     +- ^ InputIteratorTransformer (92)
                           :        :                             :        +- ReusedExchange (90)
                           :        :                             +- ^ InputIteratorTransformer (104)
                           :        :                                +- ColumnarBroadcastExchange (102)
                           :        :                                   +- ^ BroadcastHashJoinExecTransformer LeftSemi BuildRight (100)
                           :        :                                      :- ^ FilterExecTransformer (96)
                           :        :                                      :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.item (95)
                           :        :                                      +- ^ InputIteratorTransformer (99)
                           :        :                                         +- ReusedExchange (97)
                           :        :- ^ FilterExecTransformer (143)
                           :        :  +- ^ ProjectExecTransformer (142)
                           :        :     +- ^ RegularHashAggregateExecTransformer (141)
                           :        :        +- ^ InputIteratorTransformer (140)
                           :        :           +- ColumnarExchange (138)
                           :        :              +- VeloxResizeBatches (137)
                           :        :                 +- ^ ProjectExecTransformer (135)
                           :        :                    +- ^ FlushableHashAggregateExecTransformer (134)
                           :        :                       +- ^ ProjectExecTransformer (133)
                           :        :                          +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (132)
                           :        :                             :- ^ ProjectExecTransformer (128)
                           :        :                             :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (127)
                           :        :                             :     :- ^ BroadcastHashJoinExecTransformer LeftSemi BuildRight (123)
                           :        :                             :     :  :- ^ FilterExecTransformer (119)
                           :        :                             :     :  :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.catalog_sales (118)
                           :        :                             :     :  +- ^ InputIteratorTransformer (122)
                           :        :                             :     :     +- ReusedExchange (120)
                           :        :                             :     +- ^ InputIteratorTransformer (126)
                           :        :                             :        +- ReusedExchange (124)
                           :        :                             +- ^ InputIteratorTransformer (131)
                           :        :                                +- ReusedExchange (129)
                           :        +- ^ FilterExecTransformer (170)
                           :           +- ^ ProjectExecTransformer (169)
                           :              +- ^ RegularHashAggregateExecTransformer (168)
                           :                 +- ^ InputIteratorTransformer (167)
                           :                    +- ColumnarExchange (165)
                           :                       +- VeloxResizeBatches (164)
                           :                          +- ^ ProjectExecTransformer (162)
                           :                             +- ^ FlushableHashAggregateExecTransformer (161)
                           :                                +- ^ ProjectExecTransformer (160)
                           :                                   +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (159)
                           :                                      :- ^ ProjectExecTransformer (155)
                           :                                      :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (154)
                           :                                      :     :- ^ BroadcastHashJoinExecTransformer LeftSemi BuildRight (150)
                           :                                      :     :  :- ^ FilterExecTransformer (146)
                           :                                      :     :  :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.web_sales (145)
                           :                                      :     :  +- ^ InputIteratorTransformer (149)
                           :                                      :     :     +- ReusedExchange (147)
                           :                                      :     +- ^ InputIteratorTransformer (153)
                           :                                      :        +- ReusedExchange (151)
                           :                                      +- ^ InputIteratorTransformer (158)
                           :                                         +- ReusedExchange (156)
                           :- ^ ProjectExecTransformer (211)
                           :  +- ^ RegularHashAggregateExecTransformer (210)
                           :     +- ^ InputIteratorTransformer (209)
                           :        +- ColumnarExchange (207)
                           :           +- VeloxResizeBatches (206)
                           :              +- ^ ProjectExecTransformer (204)
                           :                 +- ^ FlushableHashAggregateExecTransformer (203)
                           :                    +- ^ ProjectExecTransformer (202)
                           :                       +- ^ RegularHashAggregateExecTransformer (201)
                           :                          +- ^ InputIteratorTransformer (200)
                           :                             +- ColumnarUnion (198)
                           :                                :- ^ FilterExecTransformer (182)
                           :                                :  +- ^ ProjectExecTransformer (181)
                           :                                :     +- ^ RegularHashAggregateExecTransformer (180)
                           :                                :        +- ^ InputIteratorTransformer (179)
                           :                                :           +- ReusedExchange (177)
                           :                                :- ^ FilterExecTransformer (189)
                           :                                :  +- ^ ProjectExecTransformer (188)
                           :                                :     +- ^ RegularHashAggregateExecTransformer (187)
                           :                                :        +- ^ InputIteratorTransformer (186)
                           :                                :           +- ReusedExchange (184)
                           :                                +- ^ FilterExecTransformer (196)
                           :                                   +- ^ ProjectExecTransformer (195)
                           :                                      +- ^ RegularHashAggregateExecTransformer (194)
                           :                                         +- ^ InputIteratorTransformer (193)
                           :                                            +- ReusedExchange (191)
                           :- ^ ProjectExecTransformer (247)
                           :  +- ^ RegularHashAggregateExecTransformer (246)
                           :     +- ^ InputIteratorTransformer (245)
                           :        +- ColumnarExchange (243)
                           :           +- VeloxResizeBatches (242)
                           :              +- ^ ProjectExecTransformer (240)
                           :                 +- ^ FlushableHashAggregateExecTransformer (239)
                           :                    +- ^ ProjectExecTransformer (238)
                           :                       +- ^ RegularHashAggregateExecTransformer (237)
                           :                          +- ^ InputIteratorTransformer (236)
                           :                             +- ColumnarUnion (234)
                           :                                :- ^ FilterExecTransformer (218)
                           :                                :  +- ^ ProjectExecTransformer (217)
                           :                                :     +- ^ RegularHashAggregateExecTransformer (216)
                           :                                :        +- ^ InputIteratorTransformer (215)
                           :                                :           +- ReusedExchange (213)
                           :                                :- ^ FilterExecTransformer (225)
                           :                                :  +- ^ ProjectExecTransformer (224)
                           :                                :     +- ^ RegularHashAggregateExecTransformer (223)
                           :                                :        +- ^ InputIteratorTransformer (222)
                           :                                :           +- ReusedExchange (220)
                           :                                +- ^ FilterExecTransformer (232)
                           :                                   +- ^ ProjectExecTransformer (231)
                           :                                      +- ^ RegularHashAggregateExecTransformer (230)
                           :                                         +- ^ InputIteratorTransformer (229)
                           :                                            +- ReusedExchange (227)
                           :- ^ ProjectExecTransformer (283)
                           :  +- ^ RegularHashAggregateExecTransformer (282)
                           :     +- ^ InputIteratorTransformer (281)
                           :        +- ColumnarExchange (279)
                           :           +- VeloxResizeBatches (278)
                           :              +- ^ ProjectExecTransformer (276)
                           :                 +- ^ FlushableHashAggregateExecTransformer (275)
                           :                    +- ^ ProjectExecTransformer (274)
                           :                       +- ^ RegularHashAggregateExecTransformer (273)
                           :                          +- ^ InputIteratorTransformer (272)
                           :                             +- ColumnarUnion (270)
                           :                                :- ^ FilterExecTransformer (254)
                           :                                :  +- ^ ProjectExecTransformer (253)
                           :                                :     +- ^ RegularHashAggregateExecTransformer (252)
                           :                                :        +- ^ InputIteratorTransformer (251)
                           :                                :           +- ReusedExchange (249)
                           :                                :- ^ FilterExecTransformer (261)
                           :                                :  +- ^ ProjectExecTransformer (260)
                           :                                :     +- ^ RegularHashAggregateExecTransformer (259)
                           :                                :        +- ^ InputIteratorTransformer (258)
                           :                                :           +- ReusedExchange (256)
                           :                                +- ^ FilterExecTransformer (268)
                           :                                   +- ^ ProjectExecTransformer (267)
                           :                                      +- ^ RegularHashAggregateExecTransformer (266)
                           :                                         +- ^ InputIteratorTransformer (265)
                           :                                            +- ReusedExchange (263)
                           +- ^ ProjectExecTransformer (312)
                              +- ^ RegularHashAggregateExecTransformer (311)
                                 +- ^ ProjectExecTransformer (310)
                                    +- ^ RegularHashAggregateExecTransformer (309)
                                       +- ^ InputIteratorTransformer (308)
                                          +- ColumnarUnion (306)
                                             :- ^ FilterExecTransformer (290)
                                             :  +- ^ ProjectExecTransformer (289)
                                             :     +- ^ RegularHashAggregateExecTransformer (288)
                                             :        +- ^ InputIteratorTransformer (287)
                                             :           +- ReusedExchange (285)
                                             :- ^ FilterExecTransformer (297)
                                             :  +- ^ ProjectExecTransformer (296)
                                             :     +- ^ RegularHashAggregateExecTransformer (295)
                                             :        +- ^ InputIteratorTransformer (294)
                                             :           +- ReusedExchange (292)
                                             +- ^ FilterExecTransformer (304)
                                                +- ^ ProjectExecTransformer (303)
                                                   +- ^ RegularHashAggregateExecTransformer (302)
                                                      +- ^ InputIteratorTransformer (301)
                                                         +- ReusedExchange (299)


(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) ReusedExchange [Reuses operator id: 376]
Output [1]: [d_date_sk#13]

(8) InputAdapter
Input [1]: [d_date_sk#13]

(9) InputIteratorTransformer
Input [1]: [d_date_sk#13]

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

(11) ProjectExecTransformer
Output [1]: [ss_item_sk#10]
Input [3]: [ss_item_sk#10, ss_sold_date_sk#11, d_date_sk#13]

(12) FileSourceScanExecTransformer parquet spark_catalog.default.item
Output [4]: [i_item_sk#14, i_brand_id#15, i_class_id#16, i_category_id#17]
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>

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

(14) ProjectExecTransformer
Output [5]: [hash(coalesce(i_brand_id#15, 0), isnull(i_brand_id#15), coalesce(i_class_id#16, 0), isnull(i_class_id#16), coalesce(i_category_id#17, 0), isnull(i_category_id#17), 42) AS hash_partition_key#18, i_item_sk#14, i_brand_id#15, i_class_id#16, i_category_id#17]
Input [4]: [i_item_sk#14, i_brand_id#15, i_class_id#16, i_category_id#17]

(15) WholeStageCodegenTransformer (15)
Input [5]: [hash_partition_key#18, i_item_sk#14, i_brand_id#15, i_class_id#16, i_category_id#17]
Arguments: false

(16) VeloxResizeBatches
Input [5]: [hash_partition_key#18, i_item_sk#14, i_brand_id#15, i_class_id#16, i_category_id#17]
Arguments: 1024, 2147483647, 10485760

(17) ColumnarExchange
Input [5]: [hash_partition_key#18, i_item_sk#14, i_brand_id#15, i_class_id#16, i_category_id#17]
Arguments: hashpartitioning(coalesce(i_brand_id#15, 0), isnull(i_brand_id#15), coalesce(i_class_id#16, 0), isnull(i_class_id#16), coalesce(i_category_id#17, 0), isnull(i_category_id#17), 1), ENSURE_REQUIREMENTS, [i_item_sk#14, i_brand_id#15, i_class_id#16, i_category_id#17], [plan_id=1], [shuffle_writer_type=hash]

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

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

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

(21) FilterExecTransformer
Input [2]: [cs_item_sk#19, cs_sold_date_sk#20]
Arguments: isnotnull(cs_item_sk#19)

(22) ReusedExchange [Reuses operator id: 376]
Output [1]: [d_date_sk#21]

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

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

(25) BroadcastHashJoinExecTransformer
Left keys [1]: [cs_sold_date_sk#20]
Right keys [1]: [d_date_sk#21]
Join type: Inner
Join condition: None

(26) ProjectExecTransformer
Output [1]: [cs_item_sk#19]
Input [3]: [cs_item_sk#19, cs_sold_date_sk#20, d_date_sk#21]

(27) FileSourceScanExecTransformer parquet spark_catalog.default.item
Output [4]: [i_item_sk#22, i_brand_id#23, i_class_id#24, i_category_id#25]
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>

(28) FilterExecTransformer
Input [4]: [i_item_sk#22, i_brand_id#23, i_class_id#24, i_category_id#25]
Arguments: isnotnull(i_item_sk#22)

(29) WholeStageCodegenTransformer (18)
Input [4]: [i_item_sk#22, i_brand_id#23, i_class_id#24, i_category_id#25]
Arguments: false

(30) ColumnarBroadcastExchange
Input [4]: [i_item_sk#22, i_brand_id#23, i_class_id#24, i_category_id#25]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=2]

(31) InputAdapter
Input [4]: [i_item_sk#22, i_brand_id#23, i_class_id#24, i_category_id#25]

(32) InputIteratorTransformer
Input [4]: [i_item_sk#22, i_brand_id#23, i_class_id#24, i_category_id#25]

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

(34) ProjectExecTransformer
Output [4]: [hash(coalesce(i_brand_id#23, 0), isnull(i_brand_id#23), coalesce(i_class_id#24, 0), isnull(i_class_id#24), coalesce(i_category_id#25, 0), isnull(i_category_id#25), 42) AS hash_partition_key#26, i_brand_id#23, i_class_id#24, i_category_id#25]
Input [5]: [cs_item_sk#19, i_item_sk#22, i_brand_id#23, i_class_id#24, i_category_id#25]

(35) WholeStageCodegenTransformer (19)
Input [4]: [hash_partition_key#26, i_brand_id#23, i_class_id#24, i_category_id#25]
Arguments: false

(36) VeloxResizeBatches
Input [4]: [hash_partition_key#26, i_brand_id#23, i_class_id#24, i_category_id#25]
Arguments: 1024, 2147483647, 10485760

(37) ColumnarExchange
Input [4]: [hash_partition_key#26, i_brand_id#23, i_class_id#24, i_category_id#25]
Arguments: hashpartitioning(coalesce(i_brand_id#23, 0), isnull(i_brand_id#23), coalesce(i_class_id#24, 0), isnull(i_class_id#24), coalesce(i_category_id#25, 0), isnull(i_category_id#25), 1), ENSURE_REQUIREMENTS, [i_brand_id#23, i_class_id#24, i_category_id#25], [plan_id=3], [shuffle_writer_type=hash]

(38) InputAdapter
Input [3]: [i_brand_id#23, i_class_id#24, i_category_id#25]

(39) InputIteratorTransformer
Input [3]: [i_brand_id#23, i_class_id#24, i_category_id#25]

(40) ShuffledHashJoinExecTransformer
Left keys [6]: [coalesce(i_brand_id#15, 0), isnull(i_brand_id#15), coalesce(i_class_id#16, 0), isnull(i_class_id#16), coalesce(i_category_id#17, 0), isnull(i_category_id#17)]
Right keys [6]: [coalesce(i_brand_id#23, 0), isnull(i_brand_id#23), coalesce(i_class_id#24, 0), isnull(i_class_id#24), coalesce(i_category_id#25, 0), isnull(i_category_id#25)]
Join type: LeftSemi
Join condition: None

(41) WholeStageCodegenTransformer (20)
Input [4]: [i_item_sk#14, i_brand_id#15, i_class_id#16, i_category_id#17]
Arguments: false

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

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

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

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

(46) ProjectExecTransformer
Output [3]: [i_brand_id#15 AS brand_id#27, i_class_id#16 AS class_id#28, i_category_id#17 AS category_id#29]
Input [5]: [ss_item_sk#10, i_item_sk#14, i_brand_id#15, i_class_id#16, i_category_id#17]

(47) FlushableHashAggregateExecTransformer
Input [3]: [brand_id#27, class_id#28, category_id#29]
Keys [3]: [brand_id#27, class_id#28, category_id#29]
Functions: []
Aggregate Attributes: []
Results [3]: [brand_id#27, class_id#28, category_id#29]

(48) ProjectExecTransformer
Output [4]: [hash(brand_id#27, class_id#28, category_id#29, 42) AS hash_partition_key#30, brand_id#27, class_id#28, category_id#29]
Input [3]: [brand_id#27, class_id#28, category_id#29]

(49) WholeStageCodegenTransformer (21)
Input [4]: [hash_partition_key#30, brand_id#27, class_id#28, category_id#29]
Arguments: false

(50) VeloxResizeBatches
Input [4]: [hash_partition_key#30, brand_id#27, class_id#28, category_id#29]
Arguments: 1024, 2147483647, 10485760

(51) ColumnarExchange
Input [4]: [hash_partition_key#30, brand_id#27, class_id#28, category_id#29]
Arguments: hashpartitioning(brand_id#27, class_id#28, category_id#29, 1), ENSURE_REQUIREMENTS, [brand_id#27, class_id#28, category_id#29], [plan_id=5], [shuffle_writer_type=hash]

(52) InputAdapter
Input [3]: [brand_id#27, class_id#28, category_id#29]

(53) InputIteratorTransformer
Input [3]: [brand_id#27, class_id#28, category_id#29]

(54) FlushableHashAggregateExecTransformer
Input [3]: [brand_id#27, class_id#28, category_id#29]
Keys [3]: [brand_id#27, class_id#28, category_id#29]
Functions: []
Aggregate Attributes: []
Results [3]: [brand_id#27, class_id#28, category_id#29]

(55) ProjectExecTransformer
Output [4]: [hash(coalesce(brand_id#27, 0), isnull(brand_id#27), coalesce(class_id#28, 0), isnull(class_id#28), coalesce(category_id#29, 0), isnull(category_id#29), 42) AS hash_partition_key#31, brand_id#27, class_id#28, category_id#29]
Input [3]: [brand_id#27, class_id#28, category_id#29]

(56) WholeStageCodegenTransformer (22)
Input [4]: [hash_partition_key#31, brand_id#27, class_id#28, category_id#29]
Arguments: false

(57) VeloxResizeBatches
Input [4]: [hash_partition_key#31, brand_id#27, class_id#28, category_id#29]
Arguments: 1024, 2147483647, 10485760

(58) ColumnarExchange
Input [4]: [hash_partition_key#31, brand_id#27, class_id#28, category_id#29]
Arguments: hashpartitioning(coalesce(brand_id#27, 0), isnull(brand_id#27), coalesce(class_id#28, 0), isnull(class_id#28), coalesce(category_id#29, 0), isnull(category_id#29), 1), ENSURE_REQUIREMENTS, [brand_id#27, class_id#28, category_id#29], [plan_id=6], [shuffle_writer_type=hash]

(59) InputAdapter
Input [3]: [brand_id#27, class_id#28, category_id#29]

(60) InputIteratorTransformer
Input [3]: [brand_id#27, class_id#28, category_id#29]

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

(62) FilterExecTransformer
Input [2]: [ws_item_sk#32, ws_sold_date_sk#33]
Arguments: isnotnull(ws_item_sk#32)

(63) ReusedExchange [Reuses operator id: 376]
Output [1]: [d_date_sk#34]

(64) InputAdapter
Input [1]: [d_date_sk#34]

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

(66) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_sold_date_sk#33]
Right keys [1]: [d_date_sk#34]
Join type: Inner
Join condition: None

(67) ProjectExecTransformer
Output [1]: [ws_item_sk#32]
Input [3]: [ws_item_sk#32, ws_sold_date_sk#33, d_date_sk#34]

(68) ReusedExchange [Reuses operator id: 30]
Output [4]: [i_item_sk#35, i_brand_id#36, i_class_id#37, i_category_id#38]

(69) InputAdapter
Input [4]: [i_item_sk#35, i_brand_id#36, i_class_id#37, i_category_id#38]

(70) InputIteratorTransformer
Input [4]: [i_item_sk#35, i_brand_id#36, i_class_id#37, i_category_id#38]

(71) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_item_sk#32]
Right keys [1]: [i_item_sk#35]
Join type: Inner
Join condition: None

(72) ProjectExecTransformer
Output [4]: [hash(coalesce(i_brand_id#36, 0), isnull(i_brand_id#36), coalesce(i_class_id#37, 0), isnull(i_class_id#37), coalesce(i_category_id#38, 0), isnull(i_category_id#38), 42) AS hash_partition_key#39, i_brand_id#36, i_class_id#37, i_category_id#38]
Input [5]: [ws_item_sk#32, i_item_sk#35, i_brand_id#36, i_class_id#37, i_category_id#38]

(73) WholeStageCodegenTransformer (26)
Input [4]: [hash_partition_key#39, i_brand_id#36, i_class_id#37, i_category_id#38]
Arguments: false

(74) VeloxResizeBatches
Input [4]: [hash_partition_key#39, i_brand_id#36, i_class_id#37, i_category_id#38]
Arguments: 1024, 2147483647, 10485760

(75) ColumnarExchange
Input [4]: [hash_partition_key#39, i_brand_id#36, i_class_id#37, i_category_id#38]
Arguments: hashpartitioning(coalesce(i_brand_id#36, 0), isnull(i_brand_id#36), coalesce(i_class_id#37, 0), isnull(i_class_id#37), coalesce(i_category_id#38, 0), isnull(i_category_id#38), 1), ENSURE_REQUIREMENTS, [i_brand_id#36, i_class_id#37, i_category_id#38], [plan_id=7], [shuffle_writer_type=hash]

(76) InputAdapter
Input [3]: [i_brand_id#36, i_class_id#37, i_category_id#38]

(77) InputIteratorTransformer
Input [3]: [i_brand_id#36, i_class_id#37, i_category_id#38]

(78) ShuffledHashJoinExecTransformer
Left keys [6]: [coalesce(brand_id#27, 0), isnull(brand_id#27), coalesce(class_id#28, 0), isnull(class_id#28), coalesce(category_id#29, 0), isnull(category_id#29)]
Right keys [6]: [coalesce(i_brand_id#36, 0), isnull(i_brand_id#36), coalesce(i_class_id#37, 0), isnull(i_class_id#37), coalesce(i_category_id#38, 0), isnull(i_category_id#38)]
Join type: LeftSemi
Join condition: None

(79) WholeStageCodegenTransformer (27)
Input [3]: [brand_id#27, class_id#28, category_id#29]
Arguments: false

(80) ColumnarBroadcastExchange
Input [3]: [brand_id#27, class_id#28, category_id#29]
Arguments: HashedRelationBroadcastMode(List(input[0, int, true], input[1, int, true], input[2, int, true]),false), [plan_id=8]

(81) InputAdapter
Input [3]: [brand_id#27, class_id#28, category_id#29]

(82) InputIteratorTransformer
Input [3]: [brand_id#27, class_id#28, category_id#29]

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

(84) ProjectExecTransformer
Output [1]: [i_item_sk#6 AS ss_item_sk#40]
Input [7]: [i_item_sk#6, i_brand_id#7, i_class_id#8, i_category_id#9, brand_id#27, class_id#28, category_id#29]

(85) WholeStageCodegenTransformer (28)
Input [1]: [ss_item_sk#40]
Arguments: false

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

(87) InputAdapter
Input [1]: [ss_item_sk#40]

(88) InputIteratorTransformer
Input [1]: [ss_item_sk#40]

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

(90) ReusedExchange [Reuses operator id: 371]
Output [1]: [d_date_sk#41]

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

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

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

(94) ProjectExecTransformer
Output [3]: [ss_item_sk#1, ss_quantity#2, ss_list_price#3]
Input [5]: [ss_item_sk#1, ss_quantity#2, ss_list_price#3, ss_sold_date_sk#4, d_date_sk#41]

(95) FileSourceScanExecTransformer parquet spark_catalog.default.item
Output [4]: [i_item_sk#42, i_brand_id#43, i_class_id#44, i_category_id#45]
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>

(96) FilterExecTransformer
Input [4]: [i_item_sk#42, i_brand_id#43, i_class_id#44, i_category_id#45]
Arguments: isnotnull(i_item_sk#42)

(97) ReusedExchange [Reuses operator id: 86]
Output [1]: [ss_item_sk#40]

(98) InputAdapter
Input [1]: [ss_item_sk#40]

(99) InputIteratorTransformer
Input [1]: [ss_item_sk#40]

(100) BroadcastHashJoinExecTransformer
Left keys [1]: [i_item_sk#42]
Right keys [1]: [ss_item_sk#40]
Join type: LeftSemi
Join condition: None

(101) WholeStageCodegenTransformer (46)
Input [4]: [i_item_sk#42, i_brand_id#43, i_class_id#44, i_category_id#45]
Arguments: false

(102) ColumnarBroadcastExchange
Input [4]: [i_item_sk#42, i_brand_id#43, i_class_id#44, i_category_id#45]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=10]

(103) InputAdapter
Input [4]: [i_item_sk#42, i_brand_id#43, i_class_id#44, i_category_id#45]

(104) InputIteratorTransformer
Input [4]: [i_item_sk#42, i_brand_id#43, i_class_id#44, i_category_id#45]

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

(106) ProjectExecTransformer
Output [4]: [i_brand_id#43, i_class_id#44, i_category_id#45, (cast(ss_quantity#2 as decimal(10,0)) * ss_list_price#3) AS _pre_1#46]
Input [7]: [ss_item_sk#1, ss_quantity#2, ss_list_price#3, i_item_sk#42, i_brand_id#43, i_class_id#44, i_category_id#45]

(107) FlushableHashAggregateExecTransformer
Input [4]: [i_brand_id#43, i_class_id#44, i_category_id#45, _pre_1#46]
Keys [3]: [i_brand_id#43, i_class_id#44, i_category_id#45]
Functions [2]: [partial_sum(_pre_1#46), partial_count(1)]
Aggregate Attributes [3]: [sum#47, isEmpty#48, count#49]
Results [6]: [i_brand_id#43, i_class_id#44, i_category_id#45, sum#50, isEmpty#51, count#52]

(108) ProjectExecTransformer
Output [7]: [hash(i_brand_id#43, i_class_id#44, i_category_id#45, 42) AS hash_partition_key#53, i_brand_id#43, i_class_id#44, i_category_id#45, sum#50, isEmpty#51, count#52]
Input [6]: [i_brand_id#43, i_class_id#44, i_category_id#45, sum#50, isEmpty#51, count#52]

(109) WholeStageCodegenTransformer (47)
Input [7]: [hash_partition_key#53, i_brand_id#43, i_class_id#44, i_category_id#45, sum#50, isEmpty#51, count#52]
Arguments: false

(110) VeloxResizeBatches
Input [7]: [hash_partition_key#53, i_brand_id#43, i_class_id#44, i_category_id#45, sum#50, isEmpty#51, count#52]
Arguments: 1024, 2147483647, 10485760

(111) ColumnarExchange
Input [7]: [hash_partition_key#53, i_brand_id#43, i_class_id#44, i_category_id#45, sum#50, isEmpty#51, count#52]
Arguments: hashpartitioning(i_brand_id#43, i_class_id#44, i_category_id#45, 1), ENSURE_REQUIREMENTS, [i_brand_id#43, i_class_id#44, i_category_id#45, sum#50, isEmpty#51, count#52], [plan_id=11], [shuffle_writer_type=hash]

(112) InputAdapter
Input [6]: [i_brand_id#43, i_class_id#44, i_category_id#45, sum#50, isEmpty#51, count#52]

(113) InputIteratorTransformer
Input [6]: [i_brand_id#43, i_class_id#44, i_category_id#45, sum#50, isEmpty#51, count#52]

(114) RegularHashAggregateExecTransformer
Input [6]: [i_brand_id#43, i_class_id#44, i_category_id#45, sum#50, isEmpty#51, count#52]
Keys [3]: [i_brand_id#43, i_class_id#44, i_category_id#45]
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))#54, count(1)#55]
Results [5]: [i_brand_id#43, i_class_id#44, i_category_id#45, sum((cast(ss_quantity#2 as decimal(10,0)) * ss_list_price#3))#54, count(1)#55]

(115) ProjectExecTransformer
Output [6]: [store AS channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum((cast(ss_quantity#2 as decimal(10,0)) * ss_list_price#3))#54 AS sales#57, count(1)#55 AS number_sales#58]
Input [5]: [i_brand_id#43, i_class_id#44, i_category_id#45, sum((cast(ss_quantity#2 as decimal(10,0)) * ss_list_price#3))#54, count(1)#55]

(116) FilterExecTransformer
Input [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sales#57, number_sales#58]
Arguments: (isnotnull(sales#57) AND (cast(sales#57 as decimal(32,6)) > cast(Subquery scalar-subquery#59, [id=#12] as decimal(32,6))))

(117) WholeStageCodegenTransformer (48)
Input [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sales#57, number_sales#58]
Arguments: false

(118) FileSourceScanExecTransformer parquet spark_catalog.default.catalog_sales
Output [4]: [cs_item_sk#60, cs_quantity#61, cs_list_price#62, cs_sold_date_sk#63]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(cs_sold_date_sk#63), dynamicpruningexpression(cs_sold_date_sk#63 IN dynamicpruning#5)]
PushedFilters: [IsNotNull(cs_item_sk)]
ReadSchema: struct<cs_item_sk:int,cs_quantity:int,cs_list_price:decimal(7,2)>

(119) FilterExecTransformer
Input [4]: [cs_item_sk#60, cs_quantity#61, cs_list_price#62, cs_sold_date_sk#63]
Arguments: isnotnull(cs_item_sk#60)

(120) ReusedExchange [Reuses operator id: 86]
Output [1]: [ss_item_sk#64]

(121) InputAdapter
Input [1]: [ss_item_sk#64]

(122) InputIteratorTransformer
Input [1]: [ss_item_sk#64]

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

(124) ReusedExchange [Reuses operator id: 371]
Output [1]: [d_date_sk#65]

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

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

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

(128) ProjectExecTransformer
Output [3]: [cs_item_sk#60, cs_quantity#61, cs_list_price#62]
Input [5]: [cs_item_sk#60, cs_quantity#61, cs_list_price#62, cs_sold_date_sk#63, d_date_sk#65]

(129) ReusedExchange [Reuses operator id: 102]
Output [4]: [i_item_sk#66, i_brand_id#67, i_class_id#68, i_category_id#69]

(130) InputAdapter
Input [4]: [i_item_sk#66, i_brand_id#67, i_class_id#68, i_category_id#69]

(131) InputIteratorTransformer
Input [4]: [i_item_sk#66, i_brand_id#67, i_class_id#68, i_category_id#69]

(132) BroadcastHashJoinExecTransformer
Left keys [1]: [cs_item_sk#60]
Right keys [1]: [i_item_sk#66]
Join type: Inner
Join condition: None

(133) ProjectExecTransformer
Output [4]: [i_brand_id#67, i_class_id#68, i_category_id#69, (cast(cs_quantity#61 as decimal(10,0)) * cs_list_price#62) AS _pre_2#70]
Input [7]: [cs_item_sk#60, cs_quantity#61, cs_list_price#62, i_item_sk#66, i_brand_id#67, i_class_id#68, i_category_id#69]

(134) FlushableHashAggregateExecTransformer
Input [4]: [i_brand_id#67, i_class_id#68, i_category_id#69, _pre_2#70]
Keys [3]: [i_brand_id#67, i_class_id#68, i_category_id#69]
Functions [2]: [partial_sum(_pre_2#70), partial_count(1)]
Aggregate Attributes [3]: [sum#71, isEmpty#72, count#73]
Results [6]: [i_brand_id#67, i_class_id#68, i_category_id#69, sum#74, isEmpty#75, count#76]

(135) ProjectExecTransformer
Output [7]: [hash(i_brand_id#67, i_class_id#68, i_category_id#69, 42) AS hash_partition_key#77, i_brand_id#67, i_class_id#68, i_category_id#69, sum#74, isEmpty#75, count#76]
Input [6]: [i_brand_id#67, i_class_id#68, i_category_id#69, sum#74, isEmpty#75, count#76]

(136) WholeStageCodegenTransformer (95)
Input [7]: [hash_partition_key#77, i_brand_id#67, i_class_id#68, i_category_id#69, sum#74, isEmpty#75, count#76]
Arguments: false

(137) VeloxResizeBatches
Input [7]: [hash_partition_key#77, i_brand_id#67, i_class_id#68, i_category_id#69, sum#74, isEmpty#75, count#76]
Arguments: 1024, 2147483647, 10485760

(138) ColumnarExchange
Input [7]: [hash_partition_key#77, i_brand_id#67, i_class_id#68, i_category_id#69, sum#74, isEmpty#75, count#76]
Arguments: hashpartitioning(i_brand_id#67, i_class_id#68, i_category_id#69, 1), ENSURE_REQUIREMENTS, [i_brand_id#67, i_class_id#68, i_category_id#69, sum#74, isEmpty#75, count#76], [plan_id=13], [shuffle_writer_type=hash]

(139) InputAdapter
Input [6]: [i_brand_id#67, i_class_id#68, i_category_id#69, sum#74, isEmpty#75, count#76]

(140) InputIteratorTransformer
Input [6]: [i_brand_id#67, i_class_id#68, i_category_id#69, sum#74, isEmpty#75, count#76]

(141) RegularHashAggregateExecTransformer
Input [6]: [i_brand_id#67, i_class_id#68, i_category_id#69, sum#74, isEmpty#75, count#76]
Keys [3]: [i_brand_id#67, i_class_id#68, i_category_id#69]
Functions [2]: [sum((cast(cs_quantity#61 as decimal(10,0)) * cs_list_price#62)), count(1)]
Aggregate Attributes [2]: [sum((cast(cs_quantity#61 as decimal(10,0)) * cs_list_price#62))#78, count(1)#79]
Results [5]: [i_brand_id#67, i_class_id#68, i_category_id#69, sum((cast(cs_quantity#61 as decimal(10,0)) * cs_list_price#62))#78, count(1)#79]

(142) ProjectExecTransformer
Output [6]: [catalog AS channel#80, i_brand_id#67, i_class_id#68, i_category_id#69, sum((cast(cs_quantity#61 as decimal(10,0)) * cs_list_price#62))#78 AS sales#81, count(1)#79 AS number_sales#82]
Input [5]: [i_brand_id#67, i_class_id#68, i_category_id#69, sum((cast(cs_quantity#61 as decimal(10,0)) * cs_list_price#62))#78, count(1)#79]

(143) FilterExecTransformer
Input [6]: [channel#80, i_brand_id#67, i_class_id#68, i_category_id#69, sales#81, number_sales#82]
Arguments: (isnotnull(sales#81) AND (cast(sales#81 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#59, [id=#12] as decimal(32,6))))

(144) WholeStageCodegenTransformer (96)
Input [6]: [channel#80, i_brand_id#67, i_class_id#68, i_category_id#69, sales#81, number_sales#82]
Arguments: false

(145) FileSourceScanExecTransformer parquet spark_catalog.default.web_sales
Output [4]: [ws_item_sk#83, ws_quantity#84, ws_list_price#85, ws_sold_date_sk#86]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(ws_sold_date_sk#86), dynamicpruningexpression(ws_sold_date_sk#86 IN dynamicpruning#5)]
PushedFilters: [IsNotNull(ws_item_sk)]
ReadSchema: struct<ws_item_sk:int,ws_quantity:int,ws_list_price:decimal(7,2)>

(146) FilterExecTransformer
Input [4]: [ws_item_sk#83, ws_quantity#84, ws_list_price#85, ws_sold_date_sk#86]
Arguments: isnotnull(ws_item_sk#83)

(147) ReusedExchange [Reuses operator id: 86]
Output [1]: [ss_item_sk#87]

(148) InputAdapter
Input [1]: [ss_item_sk#87]

(149) InputIteratorTransformer
Input [1]: [ss_item_sk#87]

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

(151) ReusedExchange [Reuses operator id: 371]
Output [1]: [d_date_sk#88]

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

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

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

(155) ProjectExecTransformer
Output [3]: [ws_item_sk#83, ws_quantity#84, ws_list_price#85]
Input [5]: [ws_item_sk#83, ws_quantity#84, ws_list_price#85, ws_sold_date_sk#86, d_date_sk#88]

(156) ReusedExchange [Reuses operator id: 102]
Output [4]: [i_item_sk#89, i_brand_id#90, i_class_id#91, i_category_id#92]

(157) InputAdapter
Input [4]: [i_item_sk#89, i_brand_id#90, i_class_id#91, i_category_id#92]

(158) InputIteratorTransformer
Input [4]: [i_item_sk#89, i_brand_id#90, i_class_id#91, i_category_id#92]

(159) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_item_sk#83]
Right keys [1]: [i_item_sk#89]
Join type: Inner
Join condition: None

(160) ProjectExecTransformer
Output [4]: [i_brand_id#90, i_class_id#91, i_category_id#92, (cast(ws_quantity#84 as decimal(10,0)) * ws_list_price#85) AS _pre_3#93]
Input [7]: [ws_item_sk#83, ws_quantity#84, ws_list_price#85, i_item_sk#89, i_brand_id#90, i_class_id#91, i_category_id#92]

(161) FlushableHashAggregateExecTransformer
Input [4]: [i_brand_id#90, i_class_id#91, i_category_id#92, _pre_3#93]
Keys [3]: [i_brand_id#90, i_class_id#91, i_category_id#92]
Functions [2]: [partial_sum(_pre_3#93), partial_count(1)]
Aggregate Attributes [3]: [sum#94, isEmpty#95, count#96]
Results [6]: [i_brand_id#90, i_class_id#91, i_category_id#92, sum#97, isEmpty#98, count#99]

(162) ProjectExecTransformer
Output [7]: [hash(i_brand_id#90, i_class_id#91, i_category_id#92, 42) AS hash_partition_key#100, i_brand_id#90, i_class_id#91, i_category_id#92, sum#97, isEmpty#98, count#99]
Input [6]: [i_brand_id#90, i_class_id#91, i_category_id#92, sum#97, isEmpty#98, count#99]

(163) WholeStageCodegenTransformer (143)
Input [7]: [hash_partition_key#100, i_brand_id#90, i_class_id#91, i_category_id#92, sum#97, isEmpty#98, count#99]
Arguments: false

(164) VeloxResizeBatches
Input [7]: [hash_partition_key#100, i_brand_id#90, i_class_id#91, i_category_id#92, sum#97, isEmpty#98, count#99]
Arguments: 1024, 2147483647, 10485760

(165) ColumnarExchange
Input [7]: [hash_partition_key#100, i_brand_id#90, i_class_id#91, i_category_id#92, sum#97, isEmpty#98, count#99]
Arguments: hashpartitioning(i_brand_id#90, i_class_id#91, i_category_id#92, 1), ENSURE_REQUIREMENTS, [i_brand_id#90, i_class_id#91, i_category_id#92, sum#97, isEmpty#98, count#99], [plan_id=14], [shuffle_writer_type=hash]

(166) InputAdapter
Input [6]: [i_brand_id#90, i_class_id#91, i_category_id#92, sum#97, isEmpty#98, count#99]

(167) InputIteratorTransformer
Input [6]: [i_brand_id#90, i_class_id#91, i_category_id#92, sum#97, isEmpty#98, count#99]

(168) RegularHashAggregateExecTransformer
Input [6]: [i_brand_id#90, i_class_id#91, i_category_id#92, sum#97, isEmpty#98, count#99]
Keys [3]: [i_brand_id#90, i_class_id#91, i_category_id#92]
Functions [2]: [sum((cast(ws_quantity#84 as decimal(10,0)) * ws_list_price#85)), count(1)]
Aggregate Attributes [2]: [sum((cast(ws_quantity#84 as decimal(10,0)) * ws_list_price#85))#101, count(1)#102]
Results [5]: [i_brand_id#90, i_class_id#91, i_category_id#92, sum((cast(ws_quantity#84 as decimal(10,0)) * ws_list_price#85))#101, count(1)#102]

(169) ProjectExecTransformer
Output [6]: [web AS channel#103, i_brand_id#90, i_class_id#91, i_category_id#92, sum((cast(ws_quantity#84 as decimal(10,0)) * ws_list_price#85))#101 AS sales#104, count(1)#102 AS number_sales#105]
Input [5]: [i_brand_id#90, i_class_id#91, i_category_id#92, sum((cast(ws_quantity#84 as decimal(10,0)) * ws_list_price#85))#101, count(1)#102]

(170) FilterExecTransformer
Input [6]: [channel#103, i_brand_id#90, i_class_id#91, i_category_id#92, sales#104, number_sales#105]
Arguments: (isnotnull(sales#104) AND (cast(sales#104 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#59, [id=#12] as decimal(32,6))))

(171) WholeStageCodegenTransformer (144)
Input [6]: [channel#103, i_brand_id#90, i_class_id#91, i_category_id#92, sales#104, number_sales#105]
Arguments: false

(172) ColumnarUnion
Arguments: hashpartitioning(i_brand_id#43, i_class_id#44, i_category_id#45, 1)

(173) InputAdapter
Input [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sales#57, number_sales#58]

(174) InputIteratorTransformer
Input [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sales#57, number_sales#58]

(175) RegularHashAggregateExecTransformer
Input [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sales#57, number_sales#58]
Keys [4]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45]
Functions [2]: [sum(sales#57), sum(number_sales#58)]
Aggregate Attributes [2]: [sum(sales#57)#106, sum(number_sales#58)#107]
Results [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum(sales#57)#106 AS sum_sales#108, sum(number_sales#58)#107 AS number_sales#109]

(176) WholeStageCodegenTransformer (145)
Input [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#108, number_sales#109]
Arguments: false

(177) ReusedExchange [Reuses operator id: 111]
Output [6]: [i_brand_id#110, i_class_id#111, i_category_id#112, sum#113, isEmpty#114, count#52]

(178) InputAdapter
Input [6]: [i_brand_id#110, i_class_id#111, i_category_id#112, sum#113, isEmpty#114, count#52]

(179) InputIteratorTransformer
Input [6]: [i_brand_id#110, i_class_id#111, i_category_id#112, sum#113, isEmpty#114, count#52]

(180) RegularHashAggregateExecTransformer
Input [6]: [i_brand_id#110, i_class_id#111, i_category_id#112, sum#113, isEmpty#114, count#52]
Keys [3]: [i_brand_id#110, i_class_id#111, i_category_id#112]
Functions [2]: [sum((cast(ss_quantity#115 as decimal(10,0)) * ss_list_price#116)), count(1)]
Aggregate Attributes [2]: [sum((cast(ss_quantity#115 as decimal(10,0)) * ss_list_price#116))#54, count(1)#55]
Results [5]: [i_brand_id#110, i_class_id#111, i_category_id#112, sum((cast(ss_quantity#115 as decimal(10,0)) * ss_list_price#116))#54, count(1)#55]

(181) ProjectExecTransformer
Output [6]: [store AS channel#117, i_brand_id#110, i_class_id#111, i_category_id#112, sum((cast(ss_quantity#115 as decimal(10,0)) * ss_list_price#116))#54 AS sales#118, count(1)#55 AS number_sales#119]
Input [5]: [i_brand_id#110, i_class_id#111, i_category_id#112, sum((cast(ss_quantity#115 as decimal(10,0)) * ss_list_price#116))#54, count(1)#55]

(182) FilterExecTransformer
Input [6]: [channel#117, i_brand_id#110, i_class_id#111, i_category_id#112, sales#118, number_sales#119]
Arguments: (isnotnull(sales#118) AND (cast(sales#118 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#59, [id=#12] as decimal(32,6))))

(183) WholeStageCodegenTransformer (193)
Input [6]: [channel#117, i_brand_id#110, i_class_id#111, i_category_id#112, sales#118, number_sales#119]
Arguments: false

(184) ReusedExchange [Reuses operator id: 138]
Output [6]: [i_brand_id#120, i_class_id#121, i_category_id#122, sum#123, isEmpty#124, count#76]

(185) InputAdapter
Input [6]: [i_brand_id#120, i_class_id#121, i_category_id#122, sum#123, isEmpty#124, count#76]

(186) InputIteratorTransformer
Input [6]: [i_brand_id#120, i_class_id#121, i_category_id#122, sum#123, isEmpty#124, count#76]

(187) RegularHashAggregateExecTransformer
Input [6]: [i_brand_id#120, i_class_id#121, i_category_id#122, sum#123, isEmpty#124, count#76]
Keys [3]: [i_brand_id#120, i_class_id#121, i_category_id#122]
Functions [2]: [sum((cast(cs_quantity#125 as decimal(10,0)) * cs_list_price#126)), count(1)]
Aggregate Attributes [2]: [sum((cast(cs_quantity#125 as decimal(10,0)) * cs_list_price#126))#78, count(1)#79]
Results [5]: [i_brand_id#120, i_class_id#121, i_category_id#122, sum((cast(cs_quantity#125 as decimal(10,0)) * cs_list_price#126))#78, count(1)#79]

(188) ProjectExecTransformer
Output [6]: [catalog AS channel#127, i_brand_id#120, i_class_id#121, i_category_id#122, sum((cast(cs_quantity#125 as decimal(10,0)) * cs_list_price#126))#78 AS sales#128, count(1)#79 AS number_sales#129]
Input [5]: [i_brand_id#120, i_class_id#121, i_category_id#122, sum((cast(cs_quantity#125 as decimal(10,0)) * cs_list_price#126))#78, count(1)#79]

(189) FilterExecTransformer
Input [6]: [channel#127, i_brand_id#120, i_class_id#121, i_category_id#122, sales#128, number_sales#129]
Arguments: (isnotnull(sales#128) AND (cast(sales#128 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#59, [id=#12] as decimal(32,6))))

(190) WholeStageCodegenTransformer (241)
Input [6]: [channel#127, i_brand_id#120, i_class_id#121, i_category_id#122, sales#128, number_sales#129]
Arguments: false

(191) ReusedExchange [Reuses operator id: 165]
Output [6]: [i_brand_id#130, i_class_id#131, i_category_id#132, sum#133, isEmpty#134, count#99]

(192) InputAdapter
Input [6]: [i_brand_id#130, i_class_id#131, i_category_id#132, sum#133, isEmpty#134, count#99]

(193) InputIteratorTransformer
Input [6]: [i_brand_id#130, i_class_id#131, i_category_id#132, sum#133, isEmpty#134, count#99]

(194) RegularHashAggregateExecTransformer
Input [6]: [i_brand_id#130, i_class_id#131, i_category_id#132, sum#133, isEmpty#134, count#99]
Keys [3]: [i_brand_id#130, i_class_id#131, i_category_id#132]
Functions [2]: [sum((cast(ws_quantity#135 as decimal(10,0)) * ws_list_price#136)), count(1)]
Aggregate Attributes [2]: [sum((cast(ws_quantity#135 as decimal(10,0)) * ws_list_price#136))#101, count(1)#102]
Results [5]: [i_brand_id#130, i_class_id#131, i_category_id#132, sum((cast(ws_quantity#135 as decimal(10,0)) * ws_list_price#136))#101, count(1)#102]

(195) ProjectExecTransformer
Output [6]: [web AS channel#137, i_brand_id#130, i_class_id#131, i_category_id#132, sum((cast(ws_quantity#135 as decimal(10,0)) * ws_list_price#136))#101 AS sales#138, count(1)#102 AS number_sales#139]
Input [5]: [i_brand_id#130, i_class_id#131, i_category_id#132, sum((cast(ws_quantity#135 as decimal(10,0)) * ws_list_price#136))#101, count(1)#102]

(196) FilterExecTransformer
Input [6]: [channel#137, i_brand_id#130, i_class_id#131, i_category_id#132, sales#138, number_sales#139]
Arguments: (isnotnull(sales#138) AND (cast(sales#138 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#59, [id=#12] as decimal(32,6))))

(197) WholeStageCodegenTransformer (289)
Input [6]: [channel#137, i_brand_id#130, i_class_id#131, i_category_id#132, sales#138, number_sales#139]
Arguments: false

(198) ColumnarUnion
Arguments: hashpartitioning(i_brand_id#110, i_class_id#111, i_category_id#112, 1)

(199) InputAdapter
Input [6]: [channel#117, i_brand_id#110, i_class_id#111, i_category_id#112, sales#118, number_sales#119]

(200) InputIteratorTransformer
Input [6]: [channel#117, i_brand_id#110, i_class_id#111, i_category_id#112, sales#118, number_sales#119]

(201) RegularHashAggregateExecTransformer
Input [6]: [channel#117, i_brand_id#110, i_class_id#111, i_category_id#112, sales#118, number_sales#119]
Keys [4]: [channel#117, i_brand_id#110, i_class_id#111, i_category_id#112]
Functions [2]: [sum(sales#118), sum(number_sales#119)]
Aggregate Attributes [2]: [sum(sales#118)#106, sum(number_sales#119)#107]
Results [6]: [channel#117, i_brand_id#110, i_class_id#111, i_category_id#112, sum(sales#118)#106, sum(number_sales#119)#107]

(202) ProjectExecTransformer
Output [5]: [channel#117, i_brand_id#110, i_class_id#111, sum(sales#118)#106 AS sum_sales#140, sum(number_sales#119)#107 AS number_sales#141]
Input [6]: [channel#117, i_brand_id#110, i_class_id#111, i_category_id#112, sum(sales#118)#106, sum(number_sales#119)#107]

(203) FlushableHashAggregateExecTransformer
Input [5]: [channel#117, i_brand_id#110, i_class_id#111, sum_sales#140, number_sales#141]
Keys [3]: [channel#117, i_brand_id#110, i_class_id#111]
Functions [2]: [partial_sum(sum_sales#140), partial_sum(number_sales#141)]
Aggregate Attributes [3]: [sum#142, isEmpty#143, sum#144]
Results [6]: [channel#117, i_brand_id#110, i_class_id#111, sum#145, isEmpty#146, sum#147]

(204) ProjectExecTransformer
Output [7]: [hash(channel#117, i_brand_id#110, i_class_id#111, 42) AS hash_partition_key#148, channel#117, i_brand_id#110, i_class_id#111, sum#145, isEmpty#146, sum#147]
Input [6]: [channel#117, i_brand_id#110, i_class_id#111, sum#145, isEmpty#146, sum#147]

(205) WholeStageCodegenTransformer (290)
Input [7]: [hash_partition_key#148, channel#117, i_brand_id#110, i_class_id#111, sum#145, isEmpty#146, sum#147]
Arguments: false

(206) VeloxResizeBatches
Input [7]: [hash_partition_key#148, channel#117, i_brand_id#110, i_class_id#111, sum#145, isEmpty#146, sum#147]
Arguments: 1024, 2147483647, 10485760

(207) ColumnarExchange
Input [7]: [hash_partition_key#148, channel#117, i_brand_id#110, i_class_id#111, sum#145, isEmpty#146, sum#147]
Arguments: hashpartitioning(channel#117, i_brand_id#110, i_class_id#111, 1), ENSURE_REQUIREMENTS, [channel#117, i_brand_id#110, i_class_id#111, sum#145, isEmpty#146, sum#147], [plan_id=15], [shuffle_writer_type=hash]

(208) InputAdapter
Input [6]: [channel#117, i_brand_id#110, i_class_id#111, sum#145, isEmpty#146, sum#147]

(209) InputIteratorTransformer
Input [6]: [channel#117, i_brand_id#110, i_class_id#111, sum#145, isEmpty#146, sum#147]

(210) RegularHashAggregateExecTransformer
Input [6]: [channel#117, i_brand_id#110, i_class_id#111, sum#145, isEmpty#146, sum#147]
Keys [3]: [channel#117, i_brand_id#110, i_class_id#111]
Functions [2]: [sum(sum_sales#140), sum(number_sales#141)]
Aggregate Attributes [2]: [sum(sum_sales#140)#149, sum(number_sales#141)#150]
Results [5]: [channel#117, i_brand_id#110, i_class_id#111, sum(sum_sales#140)#149, sum(number_sales#141)#150]

(211) ProjectExecTransformer
Output [6]: [channel#117, i_brand_id#110, i_class_id#111, null AS i_category_id#151, sum(sum_sales#140)#149 AS sum(sum_sales)#152, sum(number_sales#141)#150 AS sum(number_sales)#153]
Input [5]: [channel#117, i_brand_id#110, i_class_id#111, sum(sum_sales#140)#149, sum(number_sales#141)#150]

(212) WholeStageCodegenTransformer (291)
Input [6]: [channel#117, i_brand_id#110, i_class_id#111, i_category_id#151, sum(sum_sales)#152, sum(number_sales)#153]
Arguments: false

(213) ReusedExchange [Reuses operator id: 111]
Output [6]: [i_brand_id#154, i_class_id#155, i_category_id#156, sum#157, isEmpty#158, count#52]

(214) InputAdapter
Input [6]: [i_brand_id#154, i_class_id#155, i_category_id#156, sum#157, isEmpty#158, count#52]

(215) InputIteratorTransformer
Input [6]: [i_brand_id#154, i_class_id#155, i_category_id#156, sum#157, isEmpty#158, count#52]

(216) RegularHashAggregateExecTransformer
Input [6]: [i_brand_id#154, i_class_id#155, i_category_id#156, sum#157, isEmpty#158, count#52]
Keys [3]: [i_brand_id#154, i_class_id#155, i_category_id#156]
Functions [2]: [sum((cast(ss_quantity#159 as decimal(10,0)) * ss_list_price#160)), count(1)]
Aggregate Attributes [2]: [sum((cast(ss_quantity#159 as decimal(10,0)) * ss_list_price#160))#54, count(1)#55]
Results [5]: [i_brand_id#154, i_class_id#155, i_category_id#156, sum((cast(ss_quantity#159 as decimal(10,0)) * ss_list_price#160))#54, count(1)#55]

(217) ProjectExecTransformer
Output [6]: [store AS channel#161, i_brand_id#154, i_class_id#155, i_category_id#156, sum((cast(ss_quantity#159 as decimal(10,0)) * ss_list_price#160))#54 AS sales#162, count(1)#55 AS number_sales#163]
Input [5]: [i_brand_id#154, i_class_id#155, i_category_id#156, sum((cast(ss_quantity#159 as decimal(10,0)) * ss_list_price#160))#54, count(1)#55]

(218) FilterExecTransformer
Input [6]: [channel#161, i_brand_id#154, i_class_id#155, i_category_id#156, sales#162, number_sales#163]
Arguments: (isnotnull(sales#162) AND (cast(sales#162 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#59, [id=#12] as decimal(32,6))))

(219) WholeStageCodegenTransformer (339)
Input [6]: [channel#161, i_brand_id#154, i_class_id#155, i_category_id#156, sales#162, number_sales#163]
Arguments: false

(220) ReusedExchange [Reuses operator id: 138]
Output [6]: [i_brand_id#164, i_class_id#165, i_category_id#166, sum#167, isEmpty#168, count#76]

(221) InputAdapter
Input [6]: [i_brand_id#164, i_class_id#165, i_category_id#166, sum#167, isEmpty#168, count#76]

(222) InputIteratorTransformer
Input [6]: [i_brand_id#164, i_class_id#165, i_category_id#166, sum#167, isEmpty#168, count#76]

(223) RegularHashAggregateExecTransformer
Input [6]: [i_brand_id#164, i_class_id#165, i_category_id#166, sum#167, isEmpty#168, count#76]
Keys [3]: [i_brand_id#164, i_class_id#165, i_category_id#166]
Functions [2]: [sum((cast(cs_quantity#169 as decimal(10,0)) * cs_list_price#170)), count(1)]
Aggregate Attributes [2]: [sum((cast(cs_quantity#169 as decimal(10,0)) * cs_list_price#170))#78, count(1)#79]
Results [5]: [i_brand_id#164, i_class_id#165, i_category_id#166, sum((cast(cs_quantity#169 as decimal(10,0)) * cs_list_price#170))#78, count(1)#79]

(224) ProjectExecTransformer
Output [6]: [catalog AS channel#171, i_brand_id#164, i_class_id#165, i_category_id#166, sum((cast(cs_quantity#169 as decimal(10,0)) * cs_list_price#170))#78 AS sales#172, count(1)#79 AS number_sales#173]
Input [5]: [i_brand_id#164, i_class_id#165, i_category_id#166, sum((cast(cs_quantity#169 as decimal(10,0)) * cs_list_price#170))#78, count(1)#79]

(225) FilterExecTransformer
Input [6]: [channel#171, i_brand_id#164, i_class_id#165, i_category_id#166, sales#172, number_sales#173]
Arguments: (isnotnull(sales#172) AND (cast(sales#172 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#59, [id=#12] as decimal(32,6))))

(226) WholeStageCodegenTransformer (387)
Input [6]: [channel#171, i_brand_id#164, i_class_id#165, i_category_id#166, sales#172, number_sales#173]
Arguments: false

(227) ReusedExchange [Reuses operator id: 165]
Output [6]: [i_brand_id#174, i_class_id#175, i_category_id#176, sum#177, isEmpty#178, count#99]

(228) InputAdapter
Input [6]: [i_brand_id#174, i_class_id#175, i_category_id#176, sum#177, isEmpty#178, count#99]

(229) InputIteratorTransformer
Input [6]: [i_brand_id#174, i_class_id#175, i_category_id#176, sum#177, isEmpty#178, count#99]

(230) RegularHashAggregateExecTransformer
Input [6]: [i_brand_id#174, i_class_id#175, i_category_id#176, sum#177, isEmpty#178, count#99]
Keys [3]: [i_brand_id#174, i_class_id#175, i_category_id#176]
Functions [2]: [sum((cast(ws_quantity#179 as decimal(10,0)) * ws_list_price#180)), count(1)]
Aggregate Attributes [2]: [sum((cast(ws_quantity#179 as decimal(10,0)) * ws_list_price#180))#101, count(1)#102]
Results [5]: [i_brand_id#174, i_class_id#175, i_category_id#176, sum((cast(ws_quantity#179 as decimal(10,0)) * ws_list_price#180))#101, count(1)#102]

(231) ProjectExecTransformer
Output [6]: [web AS channel#181, i_brand_id#174, i_class_id#175, i_category_id#176, sum((cast(ws_quantity#179 as decimal(10,0)) * ws_list_price#180))#101 AS sales#182, count(1)#102 AS number_sales#183]
Input [5]: [i_brand_id#174, i_class_id#175, i_category_id#176, sum((cast(ws_quantity#179 as decimal(10,0)) * ws_list_price#180))#101, count(1)#102]

(232) FilterExecTransformer
Input [6]: [channel#181, i_brand_id#174, i_class_id#175, i_category_id#176, sales#182, number_sales#183]
Arguments: (isnotnull(sales#182) AND (cast(sales#182 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#59, [id=#12] as decimal(32,6))))

(233) WholeStageCodegenTransformer (435)
Input [6]: [channel#181, i_brand_id#174, i_class_id#175, i_category_id#176, sales#182, number_sales#183]
Arguments: false

(234) ColumnarUnion
Arguments: hashpartitioning(i_brand_id#154, i_class_id#155, i_category_id#156, 1)

(235) InputAdapter
Input [6]: [channel#161, i_brand_id#154, i_class_id#155, i_category_id#156, sales#162, number_sales#163]

(236) InputIteratorTransformer
Input [6]: [channel#161, i_brand_id#154, i_class_id#155, i_category_id#156, sales#162, number_sales#163]

(237) RegularHashAggregateExecTransformer
Input [6]: [channel#161, i_brand_id#154, i_class_id#155, i_category_id#156, sales#162, number_sales#163]
Keys [4]: [channel#161, i_brand_id#154, i_class_id#155, i_category_id#156]
Functions [2]: [sum(sales#162), sum(number_sales#163)]
Aggregate Attributes [2]: [sum(sales#162)#106, sum(number_sales#163)#107]
Results [6]: [channel#161, i_brand_id#154, i_class_id#155, i_category_id#156, sum(sales#162)#106, sum(number_sales#163)#107]

(238) ProjectExecTransformer
Output [4]: [channel#161, i_brand_id#154, sum(sales#162)#106 AS sum_sales#184, sum(number_sales#163)#107 AS number_sales#185]
Input [6]: [channel#161, i_brand_id#154, i_class_id#155, i_category_id#156, sum(sales#162)#106, sum(number_sales#163)#107]

(239) FlushableHashAggregateExecTransformer
Input [4]: [channel#161, i_brand_id#154, sum_sales#184, number_sales#185]
Keys [2]: [channel#161, i_brand_id#154]
Functions [2]: [partial_sum(sum_sales#184), partial_sum(number_sales#185)]
Aggregate Attributes [3]: [sum#186, isEmpty#187, sum#188]
Results [5]: [channel#161, i_brand_id#154, sum#189, isEmpty#190, sum#191]

(240) ProjectExecTransformer
Output [6]: [hash(channel#161, i_brand_id#154, 42) AS hash_partition_key#192, channel#161, i_brand_id#154, sum#189, isEmpty#190, sum#191]
Input [5]: [channel#161, i_brand_id#154, sum#189, isEmpty#190, sum#191]

(241) WholeStageCodegenTransformer (436)
Input [6]: [hash_partition_key#192, channel#161, i_brand_id#154, sum#189, isEmpty#190, sum#191]
Arguments: false

(242) VeloxResizeBatches
Input [6]: [hash_partition_key#192, channel#161, i_brand_id#154, sum#189, isEmpty#190, sum#191]
Arguments: 1024, 2147483647, 10485760

(243) ColumnarExchange
Input [6]: [hash_partition_key#192, channel#161, i_brand_id#154, sum#189, isEmpty#190, sum#191]
Arguments: hashpartitioning(channel#161, i_brand_id#154, 1), ENSURE_REQUIREMENTS, [channel#161, i_brand_id#154, sum#189, isEmpty#190, sum#191], [plan_id=16], [shuffle_writer_type=hash]

(244) InputAdapter
Input [5]: [channel#161, i_brand_id#154, sum#189, isEmpty#190, sum#191]

(245) InputIteratorTransformer
Input [5]: [channel#161, i_brand_id#154, sum#189, isEmpty#190, sum#191]

(246) RegularHashAggregateExecTransformer
Input [5]: [channel#161, i_brand_id#154, sum#189, isEmpty#190, sum#191]
Keys [2]: [channel#161, i_brand_id#154]
Functions [2]: [sum(sum_sales#184), sum(number_sales#185)]
Aggregate Attributes [2]: [sum(sum_sales#184)#193, sum(number_sales#185)#194]
Results [4]: [channel#161, i_brand_id#154, sum(sum_sales#184)#193, sum(number_sales#185)#194]

(247) ProjectExecTransformer
Output [6]: [channel#161, i_brand_id#154, null AS i_class_id#195, null AS i_category_id#196, sum(sum_sales#184)#193 AS sum(sum_sales)#197, sum(number_sales#185)#194 AS sum(number_sales)#198]
Input [4]: [channel#161, i_brand_id#154, sum(sum_sales#184)#193, sum(number_sales#185)#194]

(248) WholeStageCodegenTransformer (437)
Input [6]: [channel#161, i_brand_id#154, i_class_id#195, i_category_id#196, sum(sum_sales)#197, sum(number_sales)#198]
Arguments: false

(249) ReusedExchange [Reuses operator id: 111]
Output [6]: [i_brand_id#199, i_class_id#200, i_category_id#201, sum#202, isEmpty#203, count#52]

(250) InputAdapter
Input [6]: [i_brand_id#199, i_class_id#200, i_category_id#201, sum#202, isEmpty#203, count#52]

(251) InputIteratorTransformer
Input [6]: [i_brand_id#199, i_class_id#200, i_category_id#201, sum#202, isEmpty#203, count#52]

(252) RegularHashAggregateExecTransformer
Input [6]: [i_brand_id#199, i_class_id#200, i_category_id#201, sum#202, isEmpty#203, count#52]
Keys [3]: [i_brand_id#199, i_class_id#200, i_category_id#201]
Functions [2]: [sum((cast(ss_quantity#204 as decimal(10,0)) * ss_list_price#205)), count(1)]
Aggregate Attributes [2]: [sum((cast(ss_quantity#204 as decimal(10,0)) * ss_list_price#205))#54, count(1)#55]
Results [5]: [i_brand_id#199, i_class_id#200, i_category_id#201, sum((cast(ss_quantity#204 as decimal(10,0)) * ss_list_price#205))#54, count(1)#55]

(253) ProjectExecTransformer
Output [6]: [store AS channel#206, i_brand_id#199, i_class_id#200, i_category_id#201, sum((cast(ss_quantity#204 as decimal(10,0)) * ss_list_price#205))#54 AS sales#207, count(1)#55 AS number_sales#208]
Input [5]: [i_brand_id#199, i_class_id#200, i_category_id#201, sum((cast(ss_quantity#204 as decimal(10,0)) * ss_list_price#205))#54, count(1)#55]

(254) FilterExecTransformer
Input [6]: [channel#206, i_brand_id#199, i_class_id#200, i_category_id#201, sales#207, number_sales#208]
Arguments: (isnotnull(sales#207) AND (cast(sales#207 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#59, [id=#12] as decimal(32,6))))

(255) WholeStageCodegenTransformer (485)
Input [6]: [channel#206, i_brand_id#199, i_class_id#200, i_category_id#201, sales#207, number_sales#208]
Arguments: false

(256) ReusedExchange [Reuses operator id: 138]
Output [6]: [i_brand_id#209, i_class_id#210, i_category_id#211, sum#212, isEmpty#213, count#76]

(257) InputAdapter
Input [6]: [i_brand_id#209, i_class_id#210, i_category_id#211, sum#212, isEmpty#213, count#76]

(258) InputIteratorTransformer
Input [6]: [i_brand_id#209, i_class_id#210, i_category_id#211, sum#212, isEmpty#213, count#76]

(259) RegularHashAggregateExecTransformer
Input [6]: [i_brand_id#209, i_class_id#210, i_category_id#211, sum#212, isEmpty#213, count#76]
Keys [3]: [i_brand_id#209, i_class_id#210, i_category_id#211]
Functions [2]: [sum((cast(cs_quantity#214 as decimal(10,0)) * cs_list_price#215)), count(1)]
Aggregate Attributes [2]: [sum((cast(cs_quantity#214 as decimal(10,0)) * cs_list_price#215))#78, count(1)#79]
Results [5]: [i_brand_id#209, i_class_id#210, i_category_id#211, sum((cast(cs_quantity#214 as decimal(10,0)) * cs_list_price#215))#78, count(1)#79]

(260) ProjectExecTransformer
Output [6]: [catalog AS channel#216, i_brand_id#209, i_class_id#210, i_category_id#211, sum((cast(cs_quantity#214 as decimal(10,0)) * cs_list_price#215))#78 AS sales#217, count(1)#79 AS number_sales#218]
Input [5]: [i_brand_id#209, i_class_id#210, i_category_id#211, sum((cast(cs_quantity#214 as decimal(10,0)) * cs_list_price#215))#78, count(1)#79]

(261) FilterExecTransformer
Input [6]: [channel#216, i_brand_id#209, i_class_id#210, i_category_id#211, sales#217, number_sales#218]
Arguments: (isnotnull(sales#217) AND (cast(sales#217 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#59, [id=#12] as decimal(32,6))))

(262) WholeStageCodegenTransformer (533)
Input [6]: [channel#216, i_brand_id#209, i_class_id#210, i_category_id#211, sales#217, number_sales#218]
Arguments: false

(263) ReusedExchange [Reuses operator id: 165]
Output [6]: [i_brand_id#219, i_class_id#220, i_category_id#221, sum#222, isEmpty#223, count#99]

(264) InputAdapter
Input [6]: [i_brand_id#219, i_class_id#220, i_category_id#221, sum#222, isEmpty#223, count#99]

(265) InputIteratorTransformer
Input [6]: [i_brand_id#219, i_class_id#220, i_category_id#221, sum#222, isEmpty#223, count#99]

(266) RegularHashAggregateExecTransformer
Input [6]: [i_brand_id#219, i_class_id#220, i_category_id#221, sum#222, isEmpty#223, count#99]
Keys [3]: [i_brand_id#219, i_class_id#220, i_category_id#221]
Functions [2]: [sum((cast(ws_quantity#224 as decimal(10,0)) * ws_list_price#225)), count(1)]
Aggregate Attributes [2]: [sum((cast(ws_quantity#224 as decimal(10,0)) * ws_list_price#225))#101, count(1)#102]
Results [5]: [i_brand_id#219, i_class_id#220, i_category_id#221, sum((cast(ws_quantity#224 as decimal(10,0)) * ws_list_price#225))#101, count(1)#102]

(267) ProjectExecTransformer
Output [6]: [web AS channel#226, i_brand_id#219, i_class_id#220, i_category_id#221, sum((cast(ws_quantity#224 as decimal(10,0)) * ws_list_price#225))#101 AS sales#227, count(1)#102 AS number_sales#228]
Input [5]: [i_brand_id#219, i_class_id#220, i_category_id#221, sum((cast(ws_quantity#224 as decimal(10,0)) * ws_list_price#225))#101, count(1)#102]

(268) FilterExecTransformer
Input [6]: [channel#226, i_brand_id#219, i_class_id#220, i_category_id#221, sales#227, number_sales#228]
Arguments: (isnotnull(sales#227) AND (cast(sales#227 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#59, [id=#12] as decimal(32,6))))

(269) WholeStageCodegenTransformer (581)
Input [6]: [channel#226, i_brand_id#219, i_class_id#220, i_category_id#221, sales#227, number_sales#228]
Arguments: false

(270) ColumnarUnion
Arguments: hashpartitioning(i_brand_id#199, i_class_id#200, i_category_id#201, 1)

(271) InputAdapter
Input [6]: [channel#206, i_brand_id#199, i_class_id#200, i_category_id#201, sales#207, number_sales#208]

(272) InputIteratorTransformer
Input [6]: [channel#206, i_brand_id#199, i_class_id#200, i_category_id#201, sales#207, number_sales#208]

(273) RegularHashAggregateExecTransformer
Input [6]: [channel#206, i_brand_id#199, i_class_id#200, i_category_id#201, sales#207, number_sales#208]
Keys [4]: [channel#206, i_brand_id#199, i_class_id#200, i_category_id#201]
Functions [2]: [sum(sales#207), sum(number_sales#208)]
Aggregate Attributes [2]: [sum(sales#207)#106, sum(number_sales#208)#107]
Results [6]: [channel#206, i_brand_id#199, i_class_id#200, i_category_id#201, sum(sales#207)#106, sum(number_sales#208)#107]

(274) ProjectExecTransformer
Output [3]: [channel#206, sum(sales#207)#106 AS sum_sales#229, sum(number_sales#208)#107 AS number_sales#230]
Input [6]: [channel#206, i_brand_id#199, i_class_id#200, i_category_id#201, sum(sales#207)#106, sum(number_sales#208)#107]

(275) FlushableHashAggregateExecTransformer
Input [3]: [channel#206, sum_sales#229, number_sales#230]
Keys [1]: [channel#206]
Functions [2]: [partial_sum(sum_sales#229), partial_sum(number_sales#230)]
Aggregate Attributes [3]: [sum#231, isEmpty#232, sum#233]
Results [4]: [channel#206, sum#234, isEmpty#235, sum#236]

(276) ProjectExecTransformer
Output [5]: [hash(channel#206, 42) AS hash_partition_key#237, channel#206, sum#234, isEmpty#235, sum#236]
Input [4]: [channel#206, sum#234, isEmpty#235, sum#236]

(277) WholeStageCodegenTransformer (582)
Input [5]: [hash_partition_key#237, channel#206, sum#234, isEmpty#235, sum#236]
Arguments: false

(278) VeloxResizeBatches
Input [5]: [hash_partition_key#237, channel#206, sum#234, isEmpty#235, sum#236]
Arguments: 1024, 2147483647, 10485760

(279) ColumnarExchange
Input [5]: [hash_partition_key#237, channel#206, sum#234, isEmpty#235, sum#236]
Arguments: hashpartitioning(channel#206, 1), ENSURE_REQUIREMENTS, [channel#206, sum#234, isEmpty#235, sum#236], [plan_id=17], [shuffle_writer_type=hash]

(280) InputAdapter
Input [4]: [channel#206, sum#234, isEmpty#235, sum#236]

(281) InputIteratorTransformer
Input [4]: [channel#206, sum#234, isEmpty#235, sum#236]

(282) RegularHashAggregateExecTransformer
Input [4]: [channel#206, sum#234, isEmpty#235, sum#236]
Keys [1]: [channel#206]
Functions [2]: [sum(sum_sales#229), sum(number_sales#230)]
Aggregate Attributes [2]: [sum(sum_sales#229)#238, sum(number_sales#230)#239]
Results [3]: [channel#206, sum(sum_sales#229)#238, sum(number_sales#230)#239]

(283) ProjectExecTransformer
Output [6]: [channel#206, null AS i_brand_id#240, null AS i_class_id#241, null AS i_category_id#242, sum(sum_sales#229)#238 AS sum(sum_sales)#243, sum(number_sales#230)#239 AS sum(number_sales)#244]
Input [3]: [channel#206, sum(sum_sales#229)#238, sum(number_sales#230)#239]

(284) WholeStageCodegenTransformer (583)
Input [6]: [channel#206, i_brand_id#240, i_class_id#241, i_category_id#242, sum(sum_sales)#243, sum(number_sales)#244]
Arguments: false

(285) ReusedExchange [Reuses operator id: 111]
Output [6]: [i_brand_id#245, i_class_id#246, i_category_id#247, sum#248, isEmpty#249, count#52]

(286) InputAdapter
Input [6]: [i_brand_id#245, i_class_id#246, i_category_id#247, sum#248, isEmpty#249, count#52]

(287) InputIteratorTransformer
Input [6]: [i_brand_id#245, i_class_id#246, i_category_id#247, sum#248, isEmpty#249, count#52]

(288) RegularHashAggregateExecTransformer
Input [6]: [i_brand_id#245, i_class_id#246, i_category_id#247, sum#248, isEmpty#249, count#52]
Keys [3]: [i_brand_id#245, i_class_id#246, i_category_id#247]
Functions [2]: [sum((cast(ss_quantity#250 as decimal(10,0)) * ss_list_price#251)), count(1)]
Aggregate Attributes [2]: [sum((cast(ss_quantity#250 as decimal(10,0)) * ss_list_price#251))#54, count(1)#55]
Results [5]: [i_brand_id#245, i_class_id#246, i_category_id#247, sum((cast(ss_quantity#250 as decimal(10,0)) * ss_list_price#251))#54, count(1)#55]

(289) ProjectExecTransformer
Output [6]: [store AS channel#252, i_brand_id#245, i_class_id#246, i_category_id#247, sum((cast(ss_quantity#250 as decimal(10,0)) * ss_list_price#251))#54 AS sales#253, count(1)#55 AS number_sales#254]
Input [5]: [i_brand_id#245, i_class_id#246, i_category_id#247, sum((cast(ss_quantity#250 as decimal(10,0)) * ss_list_price#251))#54, count(1)#55]

(290) FilterExecTransformer
Input [6]: [channel#252, i_brand_id#245, i_class_id#246, i_category_id#247, sales#253, number_sales#254]
Arguments: (isnotnull(sales#253) AND (cast(sales#253 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#59, [id=#12] as decimal(32,6))))

(291) WholeStageCodegenTransformer (631)
Input [6]: [channel#252, i_brand_id#245, i_class_id#246, i_category_id#247, sales#253, number_sales#254]
Arguments: false

(292) ReusedExchange [Reuses operator id: 138]
Output [6]: [i_brand_id#255, i_class_id#256, i_category_id#257, sum#258, isEmpty#259, count#76]

(293) InputAdapter
Input [6]: [i_brand_id#255, i_class_id#256, i_category_id#257, sum#258, isEmpty#259, count#76]

(294) InputIteratorTransformer
Input [6]: [i_brand_id#255, i_class_id#256, i_category_id#257, sum#258, isEmpty#259, count#76]

(295) RegularHashAggregateExecTransformer
Input [6]: [i_brand_id#255, i_class_id#256, i_category_id#257, sum#258, isEmpty#259, count#76]
Keys [3]: [i_brand_id#255, i_class_id#256, i_category_id#257]
Functions [2]: [sum((cast(cs_quantity#260 as decimal(10,0)) * cs_list_price#261)), count(1)]
Aggregate Attributes [2]: [sum((cast(cs_quantity#260 as decimal(10,0)) * cs_list_price#261))#78, count(1)#79]
Results [5]: [i_brand_id#255, i_class_id#256, i_category_id#257, sum((cast(cs_quantity#260 as decimal(10,0)) * cs_list_price#261))#78, count(1)#79]

(296) ProjectExecTransformer
Output [6]: [catalog AS channel#262, i_brand_id#255, i_class_id#256, i_category_id#257, sum((cast(cs_quantity#260 as decimal(10,0)) * cs_list_price#261))#78 AS sales#263, count(1)#79 AS number_sales#264]
Input [5]: [i_brand_id#255, i_class_id#256, i_category_id#257, sum((cast(cs_quantity#260 as decimal(10,0)) * cs_list_price#261))#78, count(1)#79]

(297) FilterExecTransformer
Input [6]: [channel#262, i_brand_id#255, i_class_id#256, i_category_id#257, sales#263, number_sales#264]
Arguments: (isnotnull(sales#263) AND (cast(sales#263 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#59, [id=#12] as decimal(32,6))))

(298) WholeStageCodegenTransformer (679)
Input [6]: [channel#262, i_brand_id#255, i_class_id#256, i_category_id#257, sales#263, number_sales#264]
Arguments: false

(299) ReusedExchange [Reuses operator id: 165]
Output [6]: [i_brand_id#265, i_class_id#266, i_category_id#267, sum#268, isEmpty#269, count#99]

(300) InputAdapter
Input [6]: [i_brand_id#265, i_class_id#266, i_category_id#267, sum#268, isEmpty#269, count#99]

(301) InputIteratorTransformer
Input [6]: [i_brand_id#265, i_class_id#266, i_category_id#267, sum#268, isEmpty#269, count#99]

(302) RegularHashAggregateExecTransformer
Input [6]: [i_brand_id#265, i_class_id#266, i_category_id#267, sum#268, isEmpty#269, count#99]
Keys [3]: [i_brand_id#265, i_class_id#266, i_category_id#267]
Functions [2]: [sum((cast(ws_quantity#270 as decimal(10,0)) * ws_list_price#271)), count(1)]
Aggregate Attributes [2]: [sum((cast(ws_quantity#270 as decimal(10,0)) * ws_list_price#271))#101, count(1)#102]
Results [5]: [i_brand_id#265, i_class_id#266, i_category_id#267, sum((cast(ws_quantity#270 as decimal(10,0)) * ws_list_price#271))#101, count(1)#102]

(303) ProjectExecTransformer
Output [6]: [web AS channel#272, i_brand_id#265, i_class_id#266, i_category_id#267, sum((cast(ws_quantity#270 as decimal(10,0)) * ws_list_price#271))#101 AS sales#273, count(1)#102 AS number_sales#274]
Input [5]: [i_brand_id#265, i_class_id#266, i_category_id#267, sum((cast(ws_quantity#270 as decimal(10,0)) * ws_list_price#271))#101, count(1)#102]

(304) FilterExecTransformer
Input [6]: [channel#272, i_brand_id#265, i_class_id#266, i_category_id#267, sales#273, number_sales#274]
Arguments: (isnotnull(sales#273) AND (cast(sales#273 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#59, [id=#12] as decimal(32,6))))

(305) WholeStageCodegenTransformer (727)
Input [6]: [channel#272, i_brand_id#265, i_class_id#266, i_category_id#267, sales#273, number_sales#274]
Arguments: false

(306) ColumnarUnion
Arguments: hashpartitioning(i_brand_id#245, i_class_id#246, i_category_id#247, 1)

(307) InputAdapter
Input [6]: [channel#252, i_brand_id#245, i_class_id#246, i_category_id#247, sales#253, number_sales#254]

(308) InputIteratorTransformer
Input [6]: [channel#252, i_brand_id#245, i_class_id#246, i_category_id#247, sales#253, number_sales#254]

(309) RegularHashAggregateExecTransformer
Input [6]: [channel#252, i_brand_id#245, i_class_id#246, i_category_id#247, sales#253, number_sales#254]
Keys [4]: [channel#252, i_brand_id#245, i_class_id#246, i_category_id#247]
Functions [2]: [sum(sales#253), sum(number_sales#254)]
Aggregate Attributes [2]: [sum(sales#253)#106, sum(number_sales#254)#107]
Results [6]: [channel#252, i_brand_id#245, i_class_id#246, i_category_id#247, sum(sales#253)#106, sum(number_sales#254)#107]

(310) ProjectExecTransformer
Output [2]: [sum(sales#253)#106 AS sum_sales#275, sum(number_sales#254)#107 AS number_sales#276]
Input [6]: [channel#252, i_brand_id#245, i_class_id#246, i_category_id#247, sum(sales#253)#106, sum(number_sales#254)#107]

(311) RegularHashAggregateExecTransformer
Input [2]: [sum_sales#275, number_sales#276]
Keys: []
Functions [2]: [sum(sum_sales#275), sum(number_sales#276)]
Aggregate Attributes [2]: [sum(sum_sales#275)#277, sum(number_sales#276)#278]
Results [2]: [sum(sum_sales#275)#277, sum(number_sales#276)#278]

(312) ProjectExecTransformer
Output [6]: [null AS channel#279, null AS i_brand_id#280, null AS i_class_id#281, null AS i_category_id#282, sum(sum_sales#275)#277 AS sum(sum_sales)#283, sum(number_sales#276)#278 AS sum(number_sales)#284]
Input [2]: [sum(sum_sales#275)#277, sum(number_sales#276)#278]

(313) WholeStageCodegenTransformer (728)
Input [6]: [channel#279, i_brand_id#280, i_class_id#281, i_category_id#282, sum(sum_sales)#283, sum(number_sales)#284]
Arguments: false

(314) ColumnarUnion
Arguments: UnknownPartitioning(0)

(315) InputAdapter
Input [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#108, number_sales#109]

(316) InputIteratorTransformer
Input [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#108, number_sales#109]

(317) FlushableHashAggregateExecTransformer
Input [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#108, number_sales#109]
Keys [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#108, number_sales#109]
Functions: []
Aggregate Attributes: []
Results [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#108, number_sales#109]

(318) ProjectExecTransformer
Output [7]: [hash(channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#108, number_sales#109, 42) AS hash_partition_key#285, channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#108, number_sales#109]
Input [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#108, number_sales#109]

(319) WholeStageCodegenTransformer (729)
Input [7]: [hash_partition_key#285, channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#108, number_sales#109]
Arguments: false

(320) VeloxResizeBatches
Input [7]: [hash_partition_key#285, channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#108, number_sales#109]
Arguments: 1024, 2147483647, 10485760

(321) ColumnarExchange
Input [7]: [hash_partition_key#285, channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#108, number_sales#109]
Arguments: hashpartitioning(channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#108, number_sales#109, 1), ENSURE_REQUIREMENTS, [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#108, number_sales#109], [plan_id=18], [shuffle_writer_type=hash]

(322) InputAdapter
Input [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#108, number_sales#109]

(323) InputIteratorTransformer
Input [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#108, number_sales#109]

(324) RegularHashAggregateExecTransformer
Input [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#108, number_sales#109]
Keys [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#108, number_sales#109]
Functions: []
Aggregate Attributes: []
Results [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#108, number_sales#109]

(325) WholeStageCodegenTransformer (730)
Input [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#108, number_sales#109]
Arguments: false

(326) TakeOrderedAndProjectExecTransformer
Input [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#108, number_sales#109]
Arguments: 100, [channel#56 ASC NULLS FIRST, i_brand_id#43 ASC NULLS FIRST, i_class_id#44 ASC NULLS FIRST, i_category_id#45 ASC NULLS FIRST], [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#108, number_sales#109], 0

(327) VeloxColumnarToRow
Input [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#108, number_sales#109]

===== Subqueries =====

Subquery:1 Hosting operator id = 116 Hosting Expression = Subquery scalar-subquery#59, [id=#12]
VeloxColumnarToRow (361)
+- ^ RegularHashAggregateExecTransformer (359)
   +- ^ InputIteratorTransformer (358)
      +- ColumnarExchange (356)
         +- VeloxResizeBatches (355)
            +- ^ FlushableHashAggregateExecTransformer (353)
               +- ^ ProjectExecTransformer (352)
                  +- ^ InputIteratorTransformer (351)
                     +- ColumnarUnion (349)
                        :- ^ ProjectExecTransformer (333)
                        :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (332)
                        :     :- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (328)
                        :     +- ^ InputIteratorTransformer (331)
                        :        +- ReusedExchange (329)
                        :- ^ ProjectExecTransformer (340)
                        :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (339)
                        :     :- ^ FileSourceScanExecTransformer parquet spark_catalog.default.catalog_sales (335)
                        :     +- ^ InputIteratorTransformer (338)
                        :        +- ReusedExchange (336)
                        +- ^ ProjectExecTransformer (347)
                           +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (346)
                              :- ^ FileSourceScanExecTransformer parquet spark_catalog.default.web_sales (342)
                              +- ^ InputIteratorTransformer (345)
                                 +- ReusedExchange (343)


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

(329) ReusedExchange [Reuses operator id: 376]
Output [1]: [d_date_sk#289]

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

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

(332) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_sold_date_sk#288]
Right keys [1]: [d_date_sk#289]
Join type: Inner
Join condition: None

(333) ProjectExecTransformer
Output [2]: [ss_quantity#286 AS quantity#290, ss_list_price#287 AS list_price#291]
Input [4]: [ss_quantity#286, ss_list_price#287, ss_sold_date_sk#288, d_date_sk#289]

(334) WholeStageCodegenTransformer (3)
Input [2]: [quantity#290, list_price#291]
Arguments: false

(335) FileSourceScanExecTransformer parquet spark_catalog.default.catalog_sales
Output [3]: [cs_quantity#292, cs_list_price#293, cs_sold_date_sk#294]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(cs_sold_date_sk#294), dynamicpruningexpression(cs_sold_date_sk#294 IN dynamicpruning#295)]
ReadSchema: struct<cs_quantity:int,cs_list_price:decimal(7,2)>

(336) ReusedExchange [Reuses operator id: 366]
Output [1]: [d_date_sk#296]

(337) InputAdapter
Input [1]: [d_date_sk#296]

(338) InputIteratorTransformer
Input [1]: [d_date_sk#296]

(339) BroadcastHashJoinExecTransformer
Left keys [1]: [cs_sold_date_sk#294]
Right keys [1]: [d_date_sk#296]
Join type: Inner
Join condition: None

(340) ProjectExecTransformer
Output [2]: [cs_quantity#292 AS quantity#297, cs_list_price#293 AS list_price#298]
Input [4]: [cs_quantity#292, cs_list_price#293, cs_sold_date_sk#294, d_date_sk#296]

(341) WholeStageCodegenTransformer (6)
Input [2]: [quantity#297, list_price#298]
Arguments: false

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

(343) ReusedExchange [Reuses operator id: 366]
Output [1]: [d_date_sk#302]

(344) InputAdapter
Input [1]: [d_date_sk#302]

(345) InputIteratorTransformer
Input [1]: [d_date_sk#302]

(346) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_sold_date_sk#301]
Right keys [1]: [d_date_sk#302]
Join type: Inner
Join condition: None

(347) ProjectExecTransformer
Output [2]: [ws_quantity#299 AS quantity#303, ws_list_price#300 AS list_price#304]
Input [4]: [ws_quantity#299, ws_list_price#300, ws_sold_date_sk#301, d_date_sk#302]

(348) WholeStageCodegenTransformer (9)
Input [2]: [quantity#303, list_price#304]
Arguments: false

(349) ColumnarUnion
Arguments: UnknownPartitioning(0)

(350) InputAdapter
Input [2]: [quantity#290, list_price#291]

(351) InputIteratorTransformer
Input [2]: [quantity#290, list_price#291]

(352) ProjectExecTransformer
Output [1]: [(cast(quantity#290 as decimal(10,0)) * list_price#291) AS _pre_4#305]
Input [2]: [quantity#290, list_price#291]

(353) FlushableHashAggregateExecTransformer
Input [1]: [_pre_4#305]
Keys: []
Functions [1]: [partial_avg(_pre_4#305)]
Aggregate Attributes [2]: [sum#306, count#307]
Results [2]: [sum#308, count#309]

(354) WholeStageCodegenTransformer (10)
Input [2]: [sum#308, count#309]
Arguments: false

(355) VeloxResizeBatches
Input [2]: [sum#308, count#309]
Arguments: 1024, 2147483647, 10485760

(356) ColumnarExchange
Input [2]: [sum#308, count#309]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=19], [shuffle_writer_type=hash]

(357) InputAdapter
Input [2]: [sum#308, count#309]

(358) InputIteratorTransformer
Input [2]: [sum#308, count#309]

(359) RegularHashAggregateExecTransformer
Input [2]: [sum#308, count#309]
Keys: []
Functions [1]: [avg((cast(quantity#290 as decimal(10,0)) * list_price#291))]
Aggregate Attributes [1]: [avg((cast(quantity#290 as decimal(10,0)) * list_price#291))#310]
Results [1]: [avg((cast(quantity#290 as decimal(10,0)) * list_price#291))#310 AS average_sales#311]

(360) WholeStageCodegenTransformer (11)
Input [1]: [average_sales#311]
Arguments: false

(361) VeloxColumnarToRow
Input [1]: [average_sales#311]

Subquery:2 Hosting operator id = 328 Hosting Expression = ss_sold_date_sk#288 IN dynamicpruning#12

Subquery:3 Hosting operator id = 335 Hosting Expression = cs_sold_date_sk#294 IN dynamicpruning#295
ColumnarBroadcastExchange (366)
+- ^ ProjectExecTransformer (364)
   +- ^ FilterExecTransformer (363)
      +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (362)


(362) FileSourceScanExecTransformer parquet spark_catalog.default.date_dim
Output [2]: [d_date_sk#296, d_year#312]
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>

(363) FilterExecTransformer
Input [2]: [d_date_sk#296, d_year#312]
Arguments: (((isnotnull(d_year#312) AND (d_year#312 >= 1998)) AND (d_year#312 <= 2000)) AND isnotnull(d_date_sk#296))

(364) ProjectExecTransformer
Output [1]: [d_date_sk#296]
Input [2]: [d_date_sk#296, d_year#312]

(365) WholeStageCodegenTransformer (4)
Input [1]: [d_date_sk#296]
Arguments: false

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

Subquery:4 Hosting operator id = 342 Hosting Expression = ws_sold_date_sk#301 IN dynamicpruning#295

Subquery:5 Hosting operator id = 1 Hosting Expression = ss_sold_date_sk#4 IN dynamicpruning#5
ColumnarBroadcastExchange (371)
+- ^ ProjectExecTransformer (369)
   +- ^ FilterExecTransformer (368)
      +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (367)


(367) FileSourceScanExecTransformer parquet spark_catalog.default.date_dim
Output [3]: [d_date_sk#41, d_year#313, d_moy#314]
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>

(368) FilterExecTransformer
Input [3]: [d_date_sk#41, d_year#313, d_moy#314]
Arguments: ((((isnotnull(d_year#313) AND isnotnull(d_moy#314)) AND (d_year#313 = 2000)) AND (d_moy#314 = 11)) AND isnotnull(d_date_sk#41))

(369) ProjectExecTransformer
Output [1]: [d_date_sk#41]
Input [3]: [d_date_sk#41, d_year#313, d_moy#314]

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

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

Subquery:6 Hosting operator id = 5 Hosting Expression = ss_sold_date_sk#11 IN dynamicpruning#12
ColumnarBroadcastExchange (376)
+- ^ ProjectExecTransformer (374)
   +- ^ FilterExecTransformer (373)
      +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (372)


(372) FileSourceScanExecTransformer parquet spark_catalog.default.date_dim
Output [2]: [d_date_sk#13, d_year#315]
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>

(373) FilterExecTransformer
Input [2]: [d_date_sk#13, d_year#315]
Arguments: (((isnotnull(d_year#315) AND (d_year#315 >= 1999)) AND (d_year#315 <= 2001)) AND isnotnull(d_date_sk#13))

(374) ProjectExecTransformer
Output [1]: [d_date_sk#13]
Input [2]: [d_date_sk#13, d_year#315]

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

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

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

Subquery:8 Hosting operator id = 61 Hosting Expression = ws_sold_date_sk#33 IN dynamicpruning#12

Subquery:9 Hosting operator id = 143 Hosting Expression = ReusedSubquery Subquery scalar-subquery#59, [id=#12]

Subquery:10 Hosting operator id = 118 Hosting Expression = cs_sold_date_sk#63 IN dynamicpruning#5

Subquery:11 Hosting operator id = 170 Hosting Expression = ReusedSubquery Subquery scalar-subquery#59, [id=#12]

Subquery:12 Hosting operator id = 145 Hosting Expression = ws_sold_date_sk#86 IN dynamicpruning#5

Subquery:13 Hosting operator id = 182 Hosting Expression = ReusedSubquery Subquery scalar-subquery#59, [id=#12]

Subquery:14 Hosting operator id = 189 Hosting Expression = ReusedSubquery Subquery scalar-subquery#59, [id=#12]

Subquery:15 Hosting operator id = 196 Hosting Expression = ReusedSubquery Subquery scalar-subquery#59, [id=#12]

Subquery:16 Hosting operator id = 218 Hosting Expression = ReusedSubquery Subquery scalar-subquery#59, [id=#12]

Subquery:17 Hosting operator id = 225 Hosting Expression = ReusedSubquery Subquery scalar-subquery#59, [id=#12]

Subquery:18 Hosting operator id = 232 Hosting Expression = ReusedSubquery Subquery scalar-subquery#59, [id=#12]

Subquery:19 Hosting operator id = 254 Hosting Expression = ReusedSubquery Subquery scalar-subquery#59, [id=#12]

Subquery:20 Hosting operator id = 261 Hosting Expression = ReusedSubquery Subquery scalar-subquery#59, [id=#12]

Subquery:21 Hosting operator id = 268 Hosting Expression = ReusedSubquery Subquery scalar-subquery#59, [id=#12]

Subquery:22 Hosting operator id = 290 Hosting Expression = ReusedSubquery Subquery scalar-subquery#59, [id=#12]

Subquery:23 Hosting operator id = 297 Hosting Expression = ReusedSubquery Subquery scalar-subquery#59, [id=#12]

Subquery:24 Hosting operator id = 304 Hosting Expression = ReusedSubquery Subquery scalar-subquery#59, [id=#12]


