== Physical Plan ==
VeloxColumnarToRow (250)
+- TakeOrderedAndProjectExecTransformer (249)
   +- ^ RegularHashAggregateExecTransformer (247)
      +- ^ InputIteratorTransformer (246)
         +- ColumnarExchange (244)
            +- VeloxResizeBatches (243)
               +- ^ ProjectExecTransformer (241)
                  +- ^ FlushableHashAggregateExecTransformer (240)
                     +- ^ InputIteratorTransformer (239)
                        +- ColumnarUnion (237)
                           :- ^ RegularHashAggregateExecTransformer (182)
                           :  +- ^ InputIteratorTransformer (181)
                           :     +- ColumnarExchange (179)
                           :        +- VeloxResizeBatches (178)
                           :           +- ^ ProjectExecTransformer (176)
                           :              +- ^ FlushableHashAggregateExecTransformer (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 (197)
                           :  +- ^ RegularHashAggregateExecTransformer (196)
                           :     +- ^ InputIteratorTransformer (195)
                           :        +- ColumnarExchange (193)
                           :           +- VeloxResizeBatches (192)
                           :              +- ^ ProjectExecTransformer (190)
                           :                 +- ^ FlushableHashAggregateExecTransformer (189)
                           :                    +- ^ ProjectExecTransformer (188)
                           :                       +- ^ RegularHashAggregateExecTransformer (187)
                           :                          +- ^ InputIteratorTransformer (186)
                           :                             +- ReusedExchange (184)
                           :- ^ ProjectExecTransformer (212)
                           :  +- ^ RegularHashAggregateExecTransformer (211)
                           :     +- ^ InputIteratorTransformer (210)
                           :        +- ColumnarExchange (208)
                           :           +- VeloxResizeBatches (207)
                           :              +- ^ ProjectExecTransformer (205)
                           :                 +- ^ FlushableHashAggregateExecTransformer (204)
                           :                    +- ^ ProjectExecTransformer (203)
                           :                       +- ^ RegularHashAggregateExecTransformer (202)
                           :                          +- ^ InputIteratorTransformer (201)
                           :                             +- ReusedExchange (199)
                           :- ^ ProjectExecTransformer (227)
                           :  +- ^ RegularHashAggregateExecTransformer (226)
                           :     +- ^ InputIteratorTransformer (225)
                           :        +- ColumnarExchange (223)
                           :           +- VeloxResizeBatches (222)
                           :              +- ^ ProjectExecTransformer (220)
                           :                 +- ^ FlushableHashAggregateExecTransformer (219)
                           :                    +- ^ ProjectExecTransformer (218)
                           :                       +- ^ RegularHashAggregateExecTransformer (217)
                           :                          +- ^ InputIteratorTransformer (216)
                           :                             +- ReusedExchange (214)
                           +- ^ ProjectExecTransformer (235)
                              +- ^ RegularHashAggregateExecTransformer (234)
                                 +- ^ ProjectExecTransformer (233)
                                    +- ^ RegularHashAggregateExecTransformer (232)
                                       +- ^ InputIteratorTransformer (231)
                                          +- ReusedExchange (229)


(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: 299]
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: 299]
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: 299]
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: 294]
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: 294]
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: 294]
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: UnknownPartitioning(0)

(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) FlushableHashAggregateExecTransformer
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]: [partial_sum(sales#57), partial_sum(number_sales#58)]
Aggregate Attributes [3]: [sum#106, isEmpty#107, sum#108]
Results [7]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum#109, isEmpty#110, sum#111]

(176) ProjectExecTransformer
Output [8]: [hash(channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, 42) AS hash_partition_key#112, channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum#109, isEmpty#110, sum#111]
Input [7]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum#109, isEmpty#110, sum#111]

(177) WholeStageCodegenTransformer (145)
Input [8]: [hash_partition_key#112, channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum#109, isEmpty#110, sum#111]
Arguments: false

(178) VeloxResizeBatches
Input [8]: [hash_partition_key#112, channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum#109, isEmpty#110, sum#111]
Arguments: 1024, 2147483647, 10485760

(179) ColumnarExchange
Input [8]: [hash_partition_key#112, channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum#109, isEmpty#110, sum#111]
Arguments: hashpartitioning(channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, 1), ENSURE_REQUIREMENTS, [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum#109, isEmpty#110, sum#111], [plan_id=15], [shuffle_writer_type=hash]

(180) InputAdapter
Input [7]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum#109, isEmpty#110, sum#111]

(181) InputIteratorTransformer
Input [7]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum#109, isEmpty#110, sum#111]

(182) RegularHashAggregateExecTransformer
Input [7]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum#109, isEmpty#110, sum#111]
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)#113, sum(number_sales#58)#114]
Results [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum(sales#57)#113 AS sum_sales#115, sum(number_sales#58)#114 AS number_sales#116]

(183) WholeStageCodegenTransformer (146)
Input [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#115, number_sales#116]
Arguments: false

(184) ReusedExchange [Reuses operator id: 179]
Output [7]: [channel#117, i_brand_id#118, i_class_id#119, i_category_id#120, sum#121, isEmpty#122, sum#123]

(185) InputAdapter
Input [7]: [channel#117, i_brand_id#118, i_class_id#119, i_category_id#120, sum#121, isEmpty#122, sum#123]

(186) InputIteratorTransformer
Input [7]: [channel#117, i_brand_id#118, i_class_id#119, i_category_id#120, sum#121, isEmpty#122, sum#123]

(187) RegularHashAggregateExecTransformer
Input [7]: [channel#117, i_brand_id#118, i_class_id#119, i_category_id#120, sum#121, isEmpty#122, sum#123]
Keys [4]: [channel#117, i_brand_id#118, i_class_id#119, i_category_id#120]
Functions [2]: [sum(sales#124), sum(number_sales#125)]
Aggregate Attributes [2]: [sum(sales#124)#113, sum(number_sales#125)#114]
Results [6]: [channel#117, i_brand_id#118, i_class_id#119, i_category_id#120, sum(sales#124)#113, sum(number_sales#125)#114]

(188) ProjectExecTransformer
Output [5]: [channel#117, i_brand_id#118, i_class_id#119, sum(sales#124)#113 AS sum_sales#126, sum(number_sales#125)#114 AS number_sales#127]
Input [6]: [channel#117, i_brand_id#118, i_class_id#119, i_category_id#120, sum(sales#124)#113, sum(number_sales#125)#114]

(189) FlushableHashAggregateExecTransformer
Input [5]: [channel#117, i_brand_id#118, i_class_id#119, sum_sales#126, number_sales#127]
Keys [3]: [channel#117, i_brand_id#118, i_class_id#119]
Functions [2]: [partial_sum(sum_sales#126), partial_sum(number_sales#127)]
Aggregate Attributes [3]: [sum#128, isEmpty#129, sum#130]
Results [6]: [channel#117, i_brand_id#118, i_class_id#119, sum#131, isEmpty#132, sum#133]

(190) ProjectExecTransformer
Output [7]: [hash(channel#117, i_brand_id#118, i_class_id#119, 42) AS hash_partition_key#134, channel#117, i_brand_id#118, i_class_id#119, sum#131, isEmpty#132, sum#133]
Input [6]: [channel#117, i_brand_id#118, i_class_id#119, sum#131, isEmpty#132, sum#133]

(191) WholeStageCodegenTransformer (292)
Input [7]: [hash_partition_key#134, channel#117, i_brand_id#118, i_class_id#119, sum#131, isEmpty#132, sum#133]
Arguments: false

(192) VeloxResizeBatches
Input [7]: [hash_partition_key#134, channel#117, i_brand_id#118, i_class_id#119, sum#131, isEmpty#132, sum#133]
Arguments: 1024, 2147483647, 10485760

(193) ColumnarExchange
Input [7]: [hash_partition_key#134, channel#117, i_brand_id#118, i_class_id#119, sum#131, isEmpty#132, sum#133]
Arguments: hashpartitioning(channel#117, i_brand_id#118, i_class_id#119, 1), ENSURE_REQUIREMENTS, [channel#117, i_brand_id#118, i_class_id#119, sum#131, isEmpty#132, sum#133], [plan_id=16], [shuffle_writer_type=hash]

(194) InputAdapter
Input [6]: [channel#117, i_brand_id#118, i_class_id#119, sum#131, isEmpty#132, sum#133]

(195) InputIteratorTransformer
Input [6]: [channel#117, i_brand_id#118, i_class_id#119, sum#131, isEmpty#132, sum#133]

(196) RegularHashAggregateExecTransformer
Input [6]: [channel#117, i_brand_id#118, i_class_id#119, sum#131, isEmpty#132, sum#133]
Keys [3]: [channel#117, i_brand_id#118, i_class_id#119]
Functions [2]: [sum(sum_sales#126), sum(number_sales#127)]
Aggregate Attributes [2]: [sum(sum_sales#126)#135, sum(number_sales#127)#136]
Results [5]: [channel#117, i_brand_id#118, i_class_id#119, sum(sum_sales#126)#135, sum(number_sales#127)#136]

(197) ProjectExecTransformer
Output [6]: [channel#117, i_brand_id#118, i_class_id#119, null AS i_category_id#137, sum(sum_sales#126)#135 AS sum(sum_sales)#138, sum(number_sales#127)#136 AS sum(number_sales)#139]
Input [5]: [channel#117, i_brand_id#118, i_class_id#119, sum(sum_sales#126)#135, sum(number_sales#127)#136]

(198) WholeStageCodegenTransformer (293)
Input [6]: [channel#117, i_brand_id#118, i_class_id#119, i_category_id#137, sum(sum_sales)#138, sum(number_sales)#139]
Arguments: false

(199) ReusedExchange [Reuses operator id: 179]
Output [7]: [channel#140, i_brand_id#141, i_class_id#142, i_category_id#143, sum#144, isEmpty#145, sum#146]

(200) InputAdapter
Input [7]: [channel#140, i_brand_id#141, i_class_id#142, i_category_id#143, sum#144, isEmpty#145, sum#146]

(201) InputIteratorTransformer
Input [7]: [channel#140, i_brand_id#141, i_class_id#142, i_category_id#143, sum#144, isEmpty#145, sum#146]

(202) RegularHashAggregateExecTransformer
Input [7]: [channel#140, i_brand_id#141, i_class_id#142, i_category_id#143, sum#144, isEmpty#145, sum#146]
Keys [4]: [channel#140, i_brand_id#141, i_class_id#142, i_category_id#143]
Functions [2]: [sum(sales#147), sum(number_sales#148)]
Aggregate Attributes [2]: [sum(sales#147)#113, sum(number_sales#148)#114]
Results [6]: [channel#140, i_brand_id#141, i_class_id#142, i_category_id#143, sum(sales#147)#113, sum(number_sales#148)#114]

(203) ProjectExecTransformer
Output [4]: [channel#140, i_brand_id#141, sum(sales#147)#113 AS sum_sales#149, sum(number_sales#148)#114 AS number_sales#150]
Input [6]: [channel#140, i_brand_id#141, i_class_id#142, i_category_id#143, sum(sales#147)#113, sum(number_sales#148)#114]

(204) FlushableHashAggregateExecTransformer
Input [4]: [channel#140, i_brand_id#141, sum_sales#149, number_sales#150]
Keys [2]: [channel#140, i_brand_id#141]
Functions [2]: [partial_sum(sum_sales#149), partial_sum(number_sales#150)]
Aggregate Attributes [3]: [sum#151, isEmpty#152, sum#153]
Results [5]: [channel#140, i_brand_id#141, sum#154, isEmpty#155, sum#156]

(205) ProjectExecTransformer
Output [6]: [hash(channel#140, i_brand_id#141, 42) AS hash_partition_key#157, channel#140, i_brand_id#141, sum#154, isEmpty#155, sum#156]
Input [5]: [channel#140, i_brand_id#141, sum#154, isEmpty#155, sum#156]

(206) WholeStageCodegenTransformer (439)
Input [6]: [hash_partition_key#157, channel#140, i_brand_id#141, sum#154, isEmpty#155, sum#156]
Arguments: false

(207) VeloxResizeBatches
Input [6]: [hash_partition_key#157, channel#140, i_brand_id#141, sum#154, isEmpty#155, sum#156]
Arguments: 1024, 2147483647, 10485760

(208) ColumnarExchange
Input [6]: [hash_partition_key#157, channel#140, i_brand_id#141, sum#154, isEmpty#155, sum#156]
Arguments: hashpartitioning(channel#140, i_brand_id#141, 1), ENSURE_REQUIREMENTS, [channel#140, i_brand_id#141, sum#154, isEmpty#155, sum#156], [plan_id=17], [shuffle_writer_type=hash]

(209) InputAdapter
Input [5]: [channel#140, i_brand_id#141, sum#154, isEmpty#155, sum#156]

(210) InputIteratorTransformer
Input [5]: [channel#140, i_brand_id#141, sum#154, isEmpty#155, sum#156]

(211) RegularHashAggregateExecTransformer
Input [5]: [channel#140, i_brand_id#141, sum#154, isEmpty#155, sum#156]
Keys [2]: [channel#140, i_brand_id#141]
Functions [2]: [sum(sum_sales#149), sum(number_sales#150)]
Aggregate Attributes [2]: [sum(sum_sales#149)#158, sum(number_sales#150)#159]
Results [4]: [channel#140, i_brand_id#141, sum(sum_sales#149)#158, sum(number_sales#150)#159]

(212) ProjectExecTransformer
Output [6]: [channel#140, i_brand_id#141, null AS i_class_id#160, null AS i_category_id#161, sum(sum_sales#149)#158 AS sum(sum_sales)#162, sum(number_sales#150)#159 AS sum(number_sales)#163]
Input [4]: [channel#140, i_brand_id#141, sum(sum_sales#149)#158, sum(number_sales#150)#159]

(213) WholeStageCodegenTransformer (440)
Input [6]: [channel#140, i_brand_id#141, i_class_id#160, i_category_id#161, sum(sum_sales)#162, sum(number_sales)#163]
Arguments: false

(214) ReusedExchange [Reuses operator id: 179]
Output [7]: [channel#164, i_brand_id#165, i_class_id#166, i_category_id#167, sum#168, isEmpty#169, sum#170]

(215) InputAdapter
Input [7]: [channel#164, i_brand_id#165, i_class_id#166, i_category_id#167, sum#168, isEmpty#169, sum#170]

(216) InputIteratorTransformer
Input [7]: [channel#164, i_brand_id#165, i_class_id#166, i_category_id#167, sum#168, isEmpty#169, sum#170]

(217) RegularHashAggregateExecTransformer
Input [7]: [channel#164, i_brand_id#165, i_class_id#166, i_category_id#167, sum#168, isEmpty#169, sum#170]
Keys [4]: [channel#164, i_brand_id#165, i_class_id#166, i_category_id#167]
Functions [2]: [sum(sales#171), sum(number_sales#172)]
Aggregate Attributes [2]: [sum(sales#171)#113, sum(number_sales#172)#114]
Results [6]: [channel#164, i_brand_id#165, i_class_id#166, i_category_id#167, sum(sales#171)#113, sum(number_sales#172)#114]

(218) ProjectExecTransformer
Output [3]: [channel#164, sum(sales#171)#113 AS sum_sales#173, sum(number_sales#172)#114 AS number_sales#174]
Input [6]: [channel#164, i_brand_id#165, i_class_id#166, i_category_id#167, sum(sales#171)#113, sum(number_sales#172)#114]

(219) FlushableHashAggregateExecTransformer
Input [3]: [channel#164, sum_sales#173, number_sales#174]
Keys [1]: [channel#164]
Functions [2]: [partial_sum(sum_sales#173), partial_sum(number_sales#174)]
Aggregate Attributes [3]: [sum#175, isEmpty#176, sum#177]
Results [4]: [channel#164, sum#178, isEmpty#179, sum#180]

(220) ProjectExecTransformer
Output [5]: [hash(channel#164, 42) AS hash_partition_key#181, channel#164, sum#178, isEmpty#179, sum#180]
Input [4]: [channel#164, sum#178, isEmpty#179, sum#180]

(221) WholeStageCodegenTransformer (586)
Input [5]: [hash_partition_key#181, channel#164, sum#178, isEmpty#179, sum#180]
Arguments: false

(222) VeloxResizeBatches
Input [5]: [hash_partition_key#181, channel#164, sum#178, isEmpty#179, sum#180]
Arguments: 1024, 2147483647, 10485760

(223) ColumnarExchange
Input [5]: [hash_partition_key#181, channel#164, sum#178, isEmpty#179, sum#180]
Arguments: hashpartitioning(channel#164, 1), ENSURE_REQUIREMENTS, [channel#164, sum#178, isEmpty#179, sum#180], [plan_id=18], [shuffle_writer_type=hash]

(224) InputAdapter
Input [4]: [channel#164, sum#178, isEmpty#179, sum#180]

(225) InputIteratorTransformer
Input [4]: [channel#164, sum#178, isEmpty#179, sum#180]

(226) RegularHashAggregateExecTransformer
Input [4]: [channel#164, sum#178, isEmpty#179, sum#180]
Keys [1]: [channel#164]
Functions [2]: [sum(sum_sales#173), sum(number_sales#174)]
Aggregate Attributes [2]: [sum(sum_sales#173)#182, sum(number_sales#174)#183]
Results [3]: [channel#164, sum(sum_sales#173)#182, sum(number_sales#174)#183]

(227) ProjectExecTransformer
Output [6]: [channel#164, null AS i_brand_id#184, null AS i_class_id#185, null AS i_category_id#186, sum(sum_sales#173)#182 AS sum(sum_sales)#187, sum(number_sales#174)#183 AS sum(number_sales)#188]
Input [3]: [channel#164, sum(sum_sales#173)#182, sum(number_sales#174)#183]

(228) WholeStageCodegenTransformer (587)
Input [6]: [channel#164, i_brand_id#184, i_class_id#185, i_category_id#186, sum(sum_sales)#187, sum(number_sales)#188]
Arguments: false

(229) ReusedExchange [Reuses operator id: 179]
Output [7]: [channel#189, i_brand_id#190, i_class_id#191, i_category_id#192, sum#193, isEmpty#194, sum#195]

(230) InputAdapter
Input [7]: [channel#189, i_brand_id#190, i_class_id#191, i_category_id#192, sum#193, isEmpty#194, sum#195]

(231) InputIteratorTransformer
Input [7]: [channel#189, i_brand_id#190, i_class_id#191, i_category_id#192, sum#193, isEmpty#194, sum#195]

(232) RegularHashAggregateExecTransformer
Input [7]: [channel#189, i_brand_id#190, i_class_id#191, i_category_id#192, sum#193, isEmpty#194, sum#195]
Keys [4]: [channel#189, i_brand_id#190, i_class_id#191, i_category_id#192]
Functions [2]: [sum(sales#196), sum(number_sales#197)]
Aggregate Attributes [2]: [sum(sales#196)#113, sum(number_sales#197)#114]
Results [6]: [channel#189, i_brand_id#190, i_class_id#191, i_category_id#192, sum(sales#196)#113, sum(number_sales#197)#114]

(233) ProjectExecTransformer
Output [2]: [sum(sales#196)#113 AS sum_sales#198, sum(number_sales#197)#114 AS number_sales#199]
Input [6]: [channel#189, i_brand_id#190, i_class_id#191, i_category_id#192, sum(sales#196)#113, sum(number_sales#197)#114]

(234) RegularHashAggregateExecTransformer
Input [2]: [sum_sales#198, number_sales#199]
Keys: []
Functions [2]: [sum(sum_sales#198), sum(number_sales#199)]
Aggregate Attributes [2]: [sum(sum_sales#198)#200, sum(number_sales#199)#201]
Results [2]: [sum(sum_sales#198)#200, sum(number_sales#199)#201]

(235) ProjectExecTransformer
Output [6]: [null AS channel#202, null AS i_brand_id#203, null AS i_class_id#204, null AS i_category_id#205, sum(sum_sales#198)#200 AS sum(sum_sales)#206, sum(number_sales#199)#201 AS sum(number_sales)#207]
Input [2]: [sum(sum_sales#198)#200, sum(number_sales#199)#201]

(236) WholeStageCodegenTransformer (733)
Input [6]: [channel#202, i_brand_id#203, i_class_id#204, i_category_id#205, sum(sum_sales)#206, sum(number_sales)#207]
Arguments: false

(237) ColumnarUnion
Arguments: UnknownPartitioning(0)

(238) InputAdapter
Input [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#115, number_sales#116]

(239) InputIteratorTransformer
Input [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#115, number_sales#116]

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

(241) ProjectExecTransformer
Output [7]: [hash(channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#115, number_sales#116, 42) AS hash_partition_key#208, channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#115, number_sales#116]
Input [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#115, number_sales#116]

(242) WholeStageCodegenTransformer (734)
Input [7]: [hash_partition_key#208, channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#115, number_sales#116]
Arguments: false

(243) VeloxResizeBatches
Input [7]: [hash_partition_key#208, channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#115, number_sales#116]
Arguments: 1024, 2147483647, 10485760

(244) ColumnarExchange
Input [7]: [hash_partition_key#208, channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#115, number_sales#116]
Arguments: hashpartitioning(channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#115, number_sales#116, 1), ENSURE_REQUIREMENTS, [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#115, number_sales#116], [plan_id=19], [shuffle_writer_type=hash]

(245) InputAdapter
Input [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#115, number_sales#116]

(246) InputIteratorTransformer
Input [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#115, number_sales#116]

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

(248) WholeStageCodegenTransformer (735)
Input [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#115, number_sales#116]
Arguments: false

(249) TakeOrderedAndProjectExecTransformer
Input [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#115, number_sales#116]
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#115, number_sales#116], 0

(250) VeloxColumnarToRow
Input [6]: [channel#56, i_brand_id#43, i_class_id#44, i_category_id#45, sum_sales#115, number_sales#116]

===== Subqueries =====

Subquery:1 Hosting operator id = 116 Hosting Expression = Subquery scalar-subquery#59, [id=#12]
VeloxColumnarToRow (284)
+- ^ RegularHashAggregateExecTransformer (282)
   +- ^ InputIteratorTransformer (281)
      +- ColumnarExchange (279)
         +- VeloxResizeBatches (278)
            +- ^ FlushableHashAggregateExecTransformer (276)
               +- ^ ProjectExecTransformer (275)
                  +- ^ InputIteratorTransformer (274)
                     +- ColumnarUnion (272)
                        :- ^ ProjectExecTransformer (256)
                        :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (255)
                        :     :- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (251)
                        :     +- ^ InputIteratorTransformer (254)
                        :        +- ReusedExchange (252)
                        :- ^ ProjectExecTransformer (263)
                        :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (262)
                        :     :- ^ FileSourceScanExecTransformer parquet spark_catalog.default.catalog_sales (258)
                        :     +- ^ InputIteratorTransformer (261)
                        :        +- ReusedExchange (259)
                        +- ^ ProjectExecTransformer (270)
                           +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (269)
                              :- ^ FileSourceScanExecTransformer parquet spark_catalog.default.web_sales (265)
                              +- ^ InputIteratorTransformer (268)
                                 +- ReusedExchange (266)


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

(252) ReusedExchange [Reuses operator id: 299]
Output [1]: [d_date_sk#212]

(253) InputAdapter
Input [1]: [d_date_sk#212]

(254) InputIteratorTransformer
Input [1]: [d_date_sk#212]

(255) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_sold_date_sk#211]
Right keys [1]: [d_date_sk#212]
Join type: Inner
Join condition: None

(256) ProjectExecTransformer
Output [2]: [ss_quantity#209 AS quantity#213, ss_list_price#210 AS list_price#214]
Input [4]: [ss_quantity#209, ss_list_price#210, ss_sold_date_sk#211, d_date_sk#212]

(257) WholeStageCodegenTransformer (3)
Input [2]: [quantity#213, list_price#214]
Arguments: false

(258) FileSourceScanExecTransformer parquet spark_catalog.default.catalog_sales
Output [3]: [cs_quantity#215, cs_list_price#216, cs_sold_date_sk#217]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(cs_sold_date_sk#217), dynamicpruningexpression(cs_sold_date_sk#217 IN dynamicpruning#218)]
ReadSchema: struct<cs_quantity:int,cs_list_price:decimal(7,2)>

(259) ReusedExchange [Reuses operator id: 289]
Output [1]: [d_date_sk#219]

(260) InputAdapter
Input [1]: [d_date_sk#219]

(261) InputIteratorTransformer
Input [1]: [d_date_sk#219]

(262) BroadcastHashJoinExecTransformer
Left keys [1]: [cs_sold_date_sk#217]
Right keys [1]: [d_date_sk#219]
Join type: Inner
Join condition: None

(263) ProjectExecTransformer
Output [2]: [cs_quantity#215 AS quantity#220, cs_list_price#216 AS list_price#221]
Input [4]: [cs_quantity#215, cs_list_price#216, cs_sold_date_sk#217, d_date_sk#219]

(264) WholeStageCodegenTransformer (6)
Input [2]: [quantity#220, list_price#221]
Arguments: false

(265) FileSourceScanExecTransformer parquet spark_catalog.default.web_sales
Output [3]: [ws_quantity#222, ws_list_price#223, ws_sold_date_sk#224]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(ws_sold_date_sk#224), dynamicpruningexpression(ws_sold_date_sk#224 IN dynamicpruning#218)]
ReadSchema: struct<ws_quantity:int,ws_list_price:decimal(7,2)>

(266) ReusedExchange [Reuses operator id: 289]
Output [1]: [d_date_sk#225]

(267) InputAdapter
Input [1]: [d_date_sk#225]

(268) InputIteratorTransformer
Input [1]: [d_date_sk#225]

(269) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_sold_date_sk#224]
Right keys [1]: [d_date_sk#225]
Join type: Inner
Join condition: None

(270) ProjectExecTransformer
Output [2]: [ws_quantity#222 AS quantity#226, ws_list_price#223 AS list_price#227]
Input [4]: [ws_quantity#222, ws_list_price#223, ws_sold_date_sk#224, d_date_sk#225]

(271) WholeStageCodegenTransformer (9)
Input [2]: [quantity#226, list_price#227]
Arguments: false

(272) ColumnarUnion
Arguments: UnknownPartitioning(0)

(273) InputAdapter
Input [2]: [quantity#213, list_price#214]

(274) InputIteratorTransformer
Input [2]: [quantity#213, list_price#214]

(275) ProjectExecTransformer
Output [1]: [(cast(quantity#213 as decimal(10,0)) * list_price#214) AS _pre_4#228]
Input [2]: [quantity#213, list_price#214]

(276) FlushableHashAggregateExecTransformer
Input [1]: [_pre_4#228]
Keys: []
Functions [1]: [partial_avg(_pre_4#228)]
Aggregate Attributes [2]: [sum#229, count#230]
Results [2]: [sum#231, count#232]

(277) WholeStageCodegenTransformer (10)
Input [2]: [sum#231, count#232]
Arguments: false

(278) VeloxResizeBatches
Input [2]: [sum#231, count#232]
Arguments: 1024, 2147483647, 10485760

(279) ColumnarExchange
Input [2]: [sum#231, count#232]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=20], [shuffle_writer_type=hash]

(280) InputAdapter
Input [2]: [sum#231, count#232]

(281) InputIteratorTransformer
Input [2]: [sum#231, count#232]

(282) RegularHashAggregateExecTransformer
Input [2]: [sum#231, count#232]
Keys: []
Functions [1]: [avg((cast(quantity#213 as decimal(10,0)) * list_price#214))]
Aggregate Attributes [1]: [avg((cast(quantity#213 as decimal(10,0)) * list_price#214))#233]
Results [1]: [avg((cast(quantity#213 as decimal(10,0)) * list_price#214))#233 AS average_sales#234]

(283) WholeStageCodegenTransformer (11)
Input [1]: [average_sales#234]
Arguments: false

(284) VeloxColumnarToRow
Input [1]: [average_sales#234]

Subquery:2 Hosting operator id = 251 Hosting Expression = ss_sold_date_sk#211 IN dynamicpruning#12

Subquery:3 Hosting operator id = 258 Hosting Expression = cs_sold_date_sk#217 IN dynamicpruning#218
ColumnarBroadcastExchange (289)
+- ^ ProjectExecTransformer (287)
   +- ^ FilterExecTransformer (286)
      +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (285)


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

(286) FilterExecTransformer
Input [2]: [d_date_sk#219, d_year#235]
Arguments: (((isnotnull(d_year#235) AND (d_year#235 >= 1998)) AND (d_year#235 <= 2000)) AND isnotnull(d_date_sk#219))

(287) ProjectExecTransformer
Output [1]: [d_date_sk#219]
Input [2]: [d_date_sk#219, d_year#235]

(288) WholeStageCodegenTransformer (4)
Input [1]: [d_date_sk#219]
Arguments: false

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

Subquery:4 Hosting operator id = 265 Hosting Expression = ws_sold_date_sk#224 IN dynamicpruning#218

Subquery:5 Hosting operator id = 1 Hosting Expression = ss_sold_date_sk#4 IN dynamicpruning#5
ColumnarBroadcastExchange (294)
+- ^ ProjectExecTransformer (292)
   +- ^ FilterExecTransformer (291)
      +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (290)


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

(291) FilterExecTransformer
Input [3]: [d_date_sk#41, d_year#236, d_moy#237]
Arguments: ((((isnotnull(d_year#236) AND isnotnull(d_moy#237)) AND (d_year#236 = 2000)) AND (d_moy#237 = 11)) AND isnotnull(d_date_sk#41))

(292) ProjectExecTransformer
Output [1]: [d_date_sk#41]
Input [3]: [d_date_sk#41, d_year#236, d_moy#237]

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

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

Subquery:6 Hosting operator id = 5 Hosting Expression = ss_sold_date_sk#11 IN dynamicpruning#12
ColumnarBroadcastExchange (299)
+- ^ ProjectExecTransformer (297)
   +- ^ FilterExecTransformer (296)
      +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (295)


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

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

(297) ProjectExecTransformer
Output [1]: [d_date_sk#13]
Input [2]: [d_date_sk#13, d_year#238]

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

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

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


