== Physical Plan ==
VeloxColumnarToRow (372)
+- TakeOrderedAndProjectExecTransformer (371)
   +- ^ RegularHashAggregateExecTransformer (369)
      +- ^ InputIteratorTransformer (368)
         +- ColumnarExchange (366)
            +- VeloxResizeBatches (365)
               +- ^ ProjectExecTransformer (363)
                  +- ^ FlushableHashAggregateExecTransformer (362)
                     +- ^ InputIteratorTransformer (361)
                        +- ColumnarUnion (359)
                           :- ^ ProjectExecTransformer (173)
                           :  +- ^ RegularHashAggregateExecTransformer (172)
                           :     +- ^ InputIteratorTransformer (171)
                           :        +- ColumnarExchange (169)
                           :           +- VeloxResizeBatches (168)
                           :              +- ^ ProjectExecTransformer (166)
                           :                 +- ^ FlushableHashAggregateExecTransformer (165)
                           :                    +- ^ InputIteratorTransformer (164)
                           :                       +- ColumnarUnion (162)
                           :                          :- ^ ProjectExecTransformer (58)
                           :                          :  +- ^ RegularHashAggregateExecTransformer (57)
                           :                          :     +- ^ InputIteratorTransformer (56)
                           :                          :        +- ColumnarExchange (54)
                           :                          :           +- VeloxResizeBatches (53)
                           :                          :              +- ^ ProjectExecTransformer (51)
                           :                          :                 +- ^ FlushableHashAggregateExecTransformer (50)
                           :                          :                    +- ^ ProjectExecTransformer (49)
                           :                          :                       +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (48)
                           :                          :                          :- ^ ProjectExecTransformer (41)
                           :                          :                          :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (40)
                           :                          :                          :     :- ^ ProjectExecTransformer (36)
                           :                          :                          :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (35)
                           :                          :                          :     :     :- ^ ProjectExecTransformer (27)
                           :                          :                          :     :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (26)
                           :                          :                          :     :     :     :- ^ ProjectExecTransformer (18)
                           :                          :                          :     :     :     :  +- ^ ShuffledHashJoinExecTransformer LeftOuter BuildRight (17)
                           :                          :                          :     :     :     :     :- ^ InputIteratorTransformer (8)
                           :                          :                          :     :     :     :     :  +- ColumnarExchange (6)
                           :                          :                          :     :     :     :     :     +- VeloxResizeBatches (5)
                           :                          :                          :     :     :     :     :        +- ^ ProjectExecTransformer (3)
                           :                          :                          :     :     :     :     :           +- ^ FilterExecTransformer (2)
                           :                          :                          :     :     :     :     :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (1)
                           :                          :                          :     :     :     :     +- ^ InputIteratorTransformer (16)
                           :                          :                          :     :     :     :        +- ColumnarExchange (14)
                           :                          :                          :     :     :     :           +- VeloxResizeBatches (13)
                           :                          :                          :     :     :     :              +- ^ ProjectExecTransformer (11)
                           :                          :                          :     :     :     :                 +- ^ FilterExecTransformer (10)
                           :                          :                          :     :     :     :                    +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_returns (9)
                           :                          :                          :     :     :     +- ^ InputIteratorTransformer (25)
                           :                          :                          :     :     :        +- ColumnarBroadcastExchange (23)
                           :                          :                          :     :     :           +- ^ ProjectExecTransformer (21)
                           :                          :                          :     :     :              +- ^ FilterExecTransformer (20)
                           :                          :                          :     :     :                 +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.item (19)
                           :                          :                          :     :     +- ^ InputIteratorTransformer (34)
                           :                          :                          :     :        +- ColumnarBroadcastExchange (32)
                           :                          :                          :     :           +- ^ ProjectExecTransformer (30)
                           :                          :                          :     :              +- ^ FilterExecTransformer (29)
                           :                          :                          :     :                 +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.promotion (28)
                           :                          :                          :     +- ^ InputIteratorTransformer (39)
                           :                          :                          :        +- ReusedExchange (37)
                           :                          :                          +- ^ InputIteratorTransformer (47)
                           :                          :                             +- ColumnarBroadcastExchange (45)
                           :                          :                                +- ^ FilterExecTransformer (43)
                           :                          :                                   +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store (42)
                           :                          :- ^ ProjectExecTransformer (109)
                           :                          :  +- ^ RegularHashAggregateExecTransformer (108)
                           :                          :     +- ^ InputIteratorTransformer (107)
                           :                          :        +- ColumnarExchange (105)
                           :                          :           +- VeloxResizeBatches (104)
                           :                          :              +- ^ ProjectExecTransformer (102)
                           :                          :                 +- ^ FlushableHashAggregateExecTransformer (101)
                           :                          :                    +- ^ ProjectExecTransformer (100)
                           :                          :                       +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (99)
                           :                          :                          :- ^ ProjectExecTransformer (92)
                           :                          :                          :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (91)
                           :                          :                          :     :- ^ ProjectExecTransformer (87)
                           :                          :                          :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (86)
                           :                          :                          :     :     :- ^ ProjectExecTransformer (82)
                           :                          :                          :     :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (81)
                           :                          :                          :     :     :     :- ^ ProjectExecTransformer (77)
                           :                          :                          :     :     :     :  +- ^ ShuffledHashJoinExecTransformer LeftOuter BuildRight (76)
                           :                          :                          :     :     :     :     :- ^ InputIteratorTransformer (67)
                           :                          :                          :     :     :     :     :  +- ColumnarExchange (65)
                           :                          :                          :     :     :     :     :     +- VeloxResizeBatches (64)
                           :                          :                          :     :     :     :     :        +- ^ ProjectExecTransformer (62)
                           :                          :                          :     :     :     :     :           +- ^ FilterExecTransformer (61)
                           :                          :                          :     :     :     :     :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.catalog_sales (60)
                           :                          :                          :     :     :     :     +- ^ InputIteratorTransformer (75)
                           :                          :                          :     :     :     :        +- ColumnarExchange (73)
                           :                          :                          :     :     :     :           +- VeloxResizeBatches (72)
                           :                          :                          :     :     :     :              +- ^ ProjectExecTransformer (70)
                           :                          :                          :     :     :     :                 +- ^ FilterExecTransformer (69)
                           :                          :                          :     :     :     :                    +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.catalog_returns (68)
                           :                          :                          :     :     :     +- ^ InputIteratorTransformer (80)
                           :                          :                          :     :     :        +- ReusedExchange (78)
                           :                          :                          :     :     +- ^ InputIteratorTransformer (85)
                           :                          :                          :     :        +- ReusedExchange (83)
                           :                          :                          :     +- ^ InputIteratorTransformer (90)
                           :                          :                          :        +- ReusedExchange (88)
                           :                          :                          +- ^ InputIteratorTransformer (98)
                           :                          :                             +- ColumnarBroadcastExchange (96)
                           :                          :                                +- ^ FilterExecTransformer (94)
                           :                          :                                   +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.catalog_page (93)
                           :                          +- ^ ProjectExecTransformer (160)
                           :                             +- ^ RegularHashAggregateExecTransformer (159)
                           :                                +- ^ InputIteratorTransformer (158)
                           :                                   +- ColumnarExchange (156)
                           :                                      +- VeloxResizeBatches (155)
                           :                                         +- ^ ProjectExecTransformer (153)
                           :                                            +- ^ FlushableHashAggregateExecTransformer (152)
                           :                                               +- ^ ProjectExecTransformer (151)
                           :                                                  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (150)
                           :                                                     :- ^ ProjectExecTransformer (143)
                           :                                                     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (142)
                           :                                                     :     :- ^ ProjectExecTransformer (138)
                           :                                                     :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (137)
                           :                                                     :     :     :- ^ ProjectExecTransformer (133)
                           :                                                     :     :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (132)
                           :                                                     :     :     :     :- ^ ProjectExecTransformer (128)
                           :                                                     :     :     :     :  +- ^ ShuffledHashJoinExecTransformer LeftOuter BuildRight (127)
                           :                                                     :     :     :     :     :- ^ InputIteratorTransformer (118)
                           :                                                     :     :     :     :     :  +- ColumnarExchange (116)
                           :                                                     :     :     :     :     :     +- VeloxResizeBatches (115)
                           :                                                     :     :     :     :     :        +- ^ ProjectExecTransformer (113)
                           :                                                     :     :     :     :     :           +- ^ FilterExecTransformer (112)
                           :                                                     :     :     :     :     :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.web_sales (111)
                           :                                                     :     :     :     :     +- ^ InputIteratorTransformer (126)
                           :                                                     :     :     :     :        +- ColumnarExchange (124)
                           :                                                     :     :     :     :           +- VeloxResizeBatches (123)
                           :                                                     :     :     :     :              +- ^ ProjectExecTransformer (121)
                           :                                                     :     :     :     :                 +- ^ FilterExecTransformer (120)
                           :                                                     :     :     :     :                    +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.web_returns (119)
                           :                                                     :     :     :     +- ^ InputIteratorTransformer (131)
                           :                                                     :     :     :        +- ReusedExchange (129)
                           :                                                     :     :     +- ^ InputIteratorTransformer (136)
                           :                                                     :     :        +- ReusedExchange (134)
                           :                                                     :     +- ^ InputIteratorTransformer (141)
                           :                                                     :        +- ReusedExchange (139)
                           :                                                     +- ^ InputIteratorTransformer (149)
                           :                                                        +- ColumnarBroadcastExchange (147)
                           :                                                           +- ^ FilterExecTransformer (145)
                           :                                                              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.web_site (144)
                           :- ^ ProjectExecTransformer (250)
                           :  +- ^ RegularHashAggregateExecTransformer (249)
                           :     +- ^ InputIteratorTransformer (248)
                           :        +- ColumnarExchange (246)
                           :           +- VeloxResizeBatches (245)
                           :              +- ^ ProjectExecTransformer (243)
                           :                 +- ^ FlushableHashAggregateExecTransformer (242)
                           :                    +- ^ ProjectExecTransformer (241)
                           :                       +- ^ RegularHashAggregateExecTransformer (240)
                           :                          +- ^ InputIteratorTransformer (239)
                           :                             +- ColumnarExchange (237)
                           :                                +- VeloxResizeBatches (236)
                           :                                   +- ^ ProjectExecTransformer (234)
                           :                                      +- ^ FlushableHashAggregateExecTransformer (233)
                           :                                         +- ^ InputIteratorTransformer (232)
                           :                                            +- ColumnarUnion (230)
                           :                                               :- ^ ProjectExecTransformer (179)
                           :                                               :  +- ^ RegularHashAggregateExecTransformer (178)
                           :                                               :     +- ^ InputIteratorTransformer (177)
                           :                                               :        +- ReusedExchange (175)
                           :                                               :- ^ ProjectExecTransformer (185)
                           :                                               :  +- ^ RegularHashAggregateExecTransformer (184)
                           :                                               :     +- ^ InputIteratorTransformer (183)
                           :                                               :        +- ReusedExchange (181)
                           :                                               +- ^ ProjectExecTransformer (228)
                           :                                                  +- ^ RegularHashAggregateExecTransformer (227)
                           :                                                     +- ^ InputIteratorTransformer (226)
                           :                                                        +- ColumnarExchange (224)
                           :                                                           +- VeloxResizeBatches (223)
                           :                                                              +- ^ ProjectExecTransformer (221)
                           :                                                                 +- ^ FlushableHashAggregateExecTransformer (220)
                           :                                                                    +- ^ ProjectExecTransformer (219)
                           :                                                                       +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (218)
                           :                                                                          :- ^ ProjectExecTransformer (214)
                           :                                                                          :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (213)
                           :                                                                          :     :- ^ ProjectExecTransformer (209)
                           :                                                                          :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (208)
                           :                                                                          :     :     :- ^ ProjectExecTransformer (204)
                           :                                                                          :     :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (203)
                           :                                                                          :     :     :     :- ^ ProjectExecTransformer (199)
                           :                                                                          :     :     :     :  +- ^ ShuffledHashJoinExecTransformer LeftOuter BuildRight (198)
                           :                                                                          :     :     :     :     :- ^ InputIteratorTransformer (194)
                           :                                                                          :     :     :     :     :  +- ColumnarExchange (192)
                           :                                                                          :     :     :     :     :     +- VeloxResizeBatches (191)
                           :                                                                          :     :     :     :     :        +- ^ ProjectExecTransformer (189)
                           :                                                                          :     :     :     :     :           +- ^ FilterExecTransformer (188)
                           :                                                                          :     :     :     :     :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.web_sales (187)
                           :                                                                          :     :     :     :     +- ^ InputIteratorTransformer (197)
                           :                                                                          :     :     :     :        +- ReusedExchange (195)
                           :                                                                          :     :     :     +- ^ InputIteratorTransformer (202)
                           :                                                                          :     :     :        +- ReusedExchange (200)
                           :                                                                          :     :     +- ^ InputIteratorTransformer (207)
                           :                                                                          :     :        +- ReusedExchange (205)
                           :                                                                          :     +- ^ InputIteratorTransformer (212)
                           :                                                                          :        +- ReusedExchange (210)
                           :                                                                          +- ^ InputIteratorTransformer (217)
                           :                                                                             +- ReusedExchange (215)
                           +- ^ ProjectExecTransformer (357)
                              +- ^ RegularHashAggregateExecTransformer (356)
                                 +- ^ ProjectExecTransformer (355)
                                    +- ^ RegularHashAggregateExecTransformer (354)
                                       +- ^ InputIteratorTransformer (353)
                                          +- ColumnarExchange (351)
                                             +- VeloxResizeBatches (350)
                                                +- ^ ProjectExecTransformer (348)
                                                   +- ^ FlushableHashAggregateExecTransformer (347)
                                                      +- ^ InputIteratorTransformer (346)
                                                         +- ColumnarUnion (344)
                                                            :- ^ ProjectExecTransformer (293)
                                                            :  +- ^ RegularHashAggregateExecTransformer (292)
                                                            :     +- ^ InputIteratorTransformer (291)
                                                            :        +- ColumnarExchange (289)
                                                            :           +- VeloxResizeBatches (288)
                                                            :              +- ^ ProjectExecTransformer (286)
                                                            :                 +- ^ FlushableHashAggregateExecTransformer (285)
                                                            :                    +- ^ ProjectExecTransformer (284)
                                                            :                       +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (283)
                                                            :                          :- ^ ProjectExecTransformer (279)
                                                            :                          :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (278)
                                                            :                          :     :- ^ ProjectExecTransformer (274)
                                                            :                          :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (273)
                                                            :                          :     :     :- ^ ProjectExecTransformer (269)
                                                            :                          :     :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (268)
                                                            :                          :     :     :     :- ^ ProjectExecTransformer (264)
                                                            :                          :     :     :     :  +- ^ ShuffledHashJoinExecTransformer LeftOuter BuildRight (263)
                                                            :                          :     :     :     :     :- ^ InputIteratorTransformer (259)
                                                            :                          :     :     :     :     :  +- ColumnarExchange (257)
                                                            :                          :     :     :     :     :     +- VeloxResizeBatches (256)
                                                            :                          :     :     :     :     :        +- ^ ProjectExecTransformer (254)
                                                            :                          :     :     :     :     :           +- ^ FilterExecTransformer (253)
                                                            :                          :     :     :     :     :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (252)
                                                            :                          :     :     :     :     +- ^ InputIteratorTransformer (262)
                                                            :                          :     :     :     :        +- ReusedExchange (260)
                                                            :                          :     :     :     +- ^ InputIteratorTransformer (267)
                                                            :                          :     :     :        +- ReusedExchange (265)
                                                            :                          :     :     +- ^ InputIteratorTransformer (272)
                                                            :                          :     :        +- ReusedExchange (270)
                                                            :                          :     +- ^ InputIteratorTransformer (277)
                                                            :                          :        +- ReusedExchange (275)
                                                            :                          +- ^ InputIteratorTransformer (282)
                                                            :                             +- ReusedExchange (280)
                                                            :- ^ ProjectExecTransformer (336)
                                                            :  +- ^ RegularHashAggregateExecTransformer (335)
                                                            :     +- ^ InputIteratorTransformer (334)
                                                            :        +- ColumnarExchange (332)
                                                            :           +- VeloxResizeBatches (331)
                                                            :              +- ^ ProjectExecTransformer (329)
                                                            :                 +- ^ FlushableHashAggregateExecTransformer (328)
                                                            :                    +- ^ ProjectExecTransformer (327)
                                                            :                       +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (326)
                                                            :                          :- ^ ProjectExecTransformer (322)
                                                            :                          :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (321)
                                                            :                          :     :- ^ ProjectExecTransformer (317)
                                                            :                          :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (316)
                                                            :                          :     :     :- ^ ProjectExecTransformer (312)
                                                            :                          :     :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (311)
                                                            :                          :     :     :     :- ^ ProjectExecTransformer (307)
                                                            :                          :     :     :     :  +- ^ ShuffledHashJoinExecTransformer LeftOuter BuildRight (306)
                                                            :                          :     :     :     :     :- ^ InputIteratorTransformer (302)
                                                            :                          :     :     :     :     :  +- ColumnarExchange (300)
                                                            :                          :     :     :     :     :     +- VeloxResizeBatches (299)
                                                            :                          :     :     :     :     :        +- ^ ProjectExecTransformer (297)
                                                            :                          :     :     :     :     :           +- ^ FilterExecTransformer (296)
                                                            :                          :     :     :     :     :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.catalog_sales (295)
                                                            :                          :     :     :     :     +- ^ InputIteratorTransformer (305)
                                                            :                          :     :     :     :        +- ReusedExchange (303)
                                                            :                          :     :     :     +- ^ InputIteratorTransformer (310)
                                                            :                          :     :     :        +- ReusedExchange (308)
                                                            :                          :     :     +- ^ InputIteratorTransformer (315)
                                                            :                          :     :        +- ReusedExchange (313)
                                                            :                          :     +- ^ InputIteratorTransformer (320)
                                                            :                          :        +- ReusedExchange (318)
                                                            :                          +- ^ InputIteratorTransformer (325)
                                                            :                             +- ReusedExchange (323)
                                                            +- ^ ProjectExecTransformer (342)
                                                               +- ^ RegularHashAggregateExecTransformer (341)
                                                                  +- ^ InputIteratorTransformer (340)
                                                                     +- ReusedExchange (338)


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

(2) FilterExecTransformer
Input [7]: [ss_item_sk#1, ss_store_sk#2, ss_promo_sk#3, ss_ticket_number#4, ss_ext_sales_price#5, ss_net_profit#6, ss_sold_date_sk#7]
Arguments: ((((isnotnull(ss_store_sk#2) AND isnotnull(ss_item_sk#1)) AND isnotnull(ss_promo_sk#3)) AND velox_might_contain(Subquery scalar-subquery#9, [id=#1], xxhash64(ss_item_sk#1, 42))) AND velox_might_contain(Subquery scalar-subquery#10, [id=#2], xxhash64(ss_promo_sk#3, 42)))

(3) ProjectExecTransformer
Output [8]: [hash(ss_item_sk#1, ss_ticket_number#4, 42) AS hash_partition_key#11, ss_item_sk#1, ss_store_sk#2, ss_promo_sk#3, ss_ticket_number#4, ss_ext_sales_price#5, ss_net_profit#6, ss_sold_date_sk#7]
Input [7]: [ss_item_sk#1, ss_store_sk#2, ss_promo_sk#3, ss_ticket_number#4, ss_ext_sales_price#5, ss_net_profit#6, ss_sold_date_sk#7]

(4) WholeStageCodegenTransformer (6)
Input [8]: [hash_partition_key#11, ss_item_sk#1, ss_store_sk#2, ss_promo_sk#3, ss_ticket_number#4, ss_ext_sales_price#5, ss_net_profit#6, ss_sold_date_sk#7]
Arguments: false

(5) VeloxResizeBatches
Input [8]: [hash_partition_key#11, ss_item_sk#1, ss_store_sk#2, ss_promo_sk#3, ss_ticket_number#4, ss_ext_sales_price#5, ss_net_profit#6, ss_sold_date_sk#7]
Arguments: 1024, 2147483647, 10485760

(6) ColumnarExchange
Input [8]: [hash_partition_key#11, ss_item_sk#1, ss_store_sk#2, ss_promo_sk#3, ss_ticket_number#4, ss_ext_sales_price#5, ss_net_profit#6, ss_sold_date_sk#7]
Arguments: hashpartitioning(ss_item_sk#1, ss_ticket_number#4, 1), ENSURE_REQUIREMENTS, [ss_item_sk#1, ss_store_sk#2, ss_promo_sk#3, ss_ticket_number#4, ss_ext_sales_price#5, ss_net_profit#6, ss_sold_date_sk#7], [plan_id=3], [shuffle_writer_type=hash]

(7) InputAdapter
Input [7]: [ss_item_sk#1, ss_store_sk#2, ss_promo_sk#3, ss_ticket_number#4, ss_ext_sales_price#5, ss_net_profit#6, ss_sold_date_sk#7]

(8) InputIteratorTransformer
Input [7]: [ss_item_sk#1, ss_store_sk#2, ss_promo_sk#3, ss_ticket_number#4, ss_ext_sales_price#5, ss_net_profit#6, ss_sold_date_sk#7]

(9) FileSourceScanExecTransformer parquet spark_catalog.default.store_returns
Output [5]: [sr_item_sk#12, sr_ticket_number#13, sr_return_amt#14, sr_net_loss#15, sr_returned_date_sk#16]
Batched: true
Location: CatalogFileIndex [{warehouse_dir}/store_returns]
PushedFilters: [IsNotNull(sr_item_sk), IsNotNull(sr_ticket_number)]
ReadSchema: struct<sr_item_sk:int,sr_ticket_number:int,sr_return_amt:decimal(7,2),sr_net_loss:decimal(7,2)>

(10) FilterExecTransformer
Input [5]: [sr_item_sk#12, sr_ticket_number#13, sr_return_amt#14, sr_net_loss#15, sr_returned_date_sk#16]
Arguments: (isnotnull(sr_item_sk#12) AND isnotnull(sr_ticket_number#13))

(11) ProjectExecTransformer
Output [5]: [hash(sr_item_sk#12, sr_ticket_number#13, 42) AS hash_partition_key#17, sr_item_sk#12, sr_ticket_number#13, sr_return_amt#14, sr_net_loss#15]
Input [5]: [sr_item_sk#12, sr_ticket_number#13, sr_return_amt#14, sr_net_loss#15, sr_returned_date_sk#16]

(12) WholeStageCodegenTransformer (7)
Input [5]: [hash_partition_key#17, sr_item_sk#12, sr_ticket_number#13, sr_return_amt#14, sr_net_loss#15]
Arguments: false

(13) VeloxResizeBatches
Input [5]: [hash_partition_key#17, sr_item_sk#12, sr_ticket_number#13, sr_return_amt#14, sr_net_loss#15]
Arguments: 1024, 2147483647, 10485760

(14) ColumnarExchange
Input [5]: [hash_partition_key#17, sr_item_sk#12, sr_ticket_number#13, sr_return_amt#14, sr_net_loss#15]
Arguments: hashpartitioning(sr_item_sk#12, sr_ticket_number#13, 1), ENSURE_REQUIREMENTS, [sr_item_sk#12, sr_ticket_number#13, sr_return_amt#14, sr_net_loss#15], [plan_id=4], [shuffle_writer_type=hash]

(15) InputAdapter
Input [4]: [sr_item_sk#12, sr_ticket_number#13, sr_return_amt#14, sr_net_loss#15]

(16) InputIteratorTransformer
Input [4]: [sr_item_sk#12, sr_ticket_number#13, sr_return_amt#14, sr_net_loss#15]

(17) ShuffledHashJoinExecTransformer
Left keys [2]: [ss_item_sk#1, ss_ticket_number#4]
Right keys [2]: [sr_item_sk#12, sr_ticket_number#13]
Join type: LeftOuter
Join condition: None

(18) ProjectExecTransformer
Output [8]: [ss_item_sk#1, ss_store_sk#2, ss_promo_sk#3, ss_ext_sales_price#5, ss_net_profit#6, ss_sold_date_sk#7, sr_return_amt#14, sr_net_loss#15]
Input [11]: [ss_item_sk#1, ss_store_sk#2, ss_promo_sk#3, ss_ticket_number#4, ss_ext_sales_price#5, ss_net_profit#6, ss_sold_date_sk#7, sr_item_sk#12, sr_ticket_number#13, sr_return_amt#14, sr_net_loss#15]

(19) FileSourceScanExecTransformer parquet spark_catalog.default.item
Output [2]: [i_item_sk#18, i_current_price#19]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/item]
PushedFilters: [IsNotNull(i_current_price), GreaterThan(i_current_price,50.00), IsNotNull(i_item_sk)]
ReadSchema: struct<i_item_sk:int,i_current_price:decimal(7,2)>

(20) FilterExecTransformer
Input [2]: [i_item_sk#18, i_current_price#19]
Arguments: ((isnotnull(i_current_price#19) AND (i_current_price#19 > 50.00)) AND isnotnull(i_item_sk#18))

(21) ProjectExecTransformer
Output [1]: [i_item_sk#18]
Input [2]: [i_item_sk#18, i_current_price#19]

(22) WholeStageCodegenTransformer (8)
Input [1]: [i_item_sk#18]
Arguments: false

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

(24) InputAdapter
Input [1]: [i_item_sk#18]

(25) InputIteratorTransformer
Input [1]: [i_item_sk#18]

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

(27) ProjectExecTransformer
Output [7]: [ss_store_sk#2, ss_promo_sk#3, ss_ext_sales_price#5, ss_net_profit#6, ss_sold_date_sk#7, sr_return_amt#14, sr_net_loss#15]
Input [9]: [ss_item_sk#1, ss_store_sk#2, ss_promo_sk#3, ss_ext_sales_price#5, ss_net_profit#6, ss_sold_date_sk#7, sr_return_amt#14, sr_net_loss#15, i_item_sk#18]

(28) FileSourceScanExecTransformer parquet spark_catalog.default.promotion
Output [2]: [p_promo_sk#20, p_channel_tv#21]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/promotion]
PushedFilters: [IsNotNull(p_channel_tv), EqualTo(p_channel_tv,N), IsNotNull(p_promo_sk)]
ReadSchema: struct<p_promo_sk:int,p_channel_tv:string>

(29) FilterExecTransformer
Input [2]: [p_promo_sk#20, p_channel_tv#21]
Arguments: ((isnotnull(p_channel_tv#21) AND (p_channel_tv#21 = N)) AND isnotnull(p_promo_sk#20))

(30) ProjectExecTransformer
Output [1]: [p_promo_sk#20]
Input [2]: [p_promo_sk#20, p_channel_tv#21]

(31) WholeStageCodegenTransformer (9)
Input [1]: [p_promo_sk#20]
Arguments: false

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

(33) InputAdapter
Input [1]: [p_promo_sk#20]

(34) InputIteratorTransformer
Input [1]: [p_promo_sk#20]

(35) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_promo_sk#3]
Right keys [1]: [p_promo_sk#20]
Join type: Inner
Join condition: None

(36) ProjectExecTransformer
Output [6]: [ss_store_sk#2, ss_ext_sales_price#5, ss_net_profit#6, ss_sold_date_sk#7, sr_return_amt#14, sr_net_loss#15]
Input [8]: [ss_store_sk#2, ss_promo_sk#3, ss_ext_sales_price#5, ss_net_profit#6, ss_sold_date_sk#7, sr_return_amt#14, sr_net_loss#15, p_promo_sk#20]

(37) ReusedExchange [Reuses operator id: 401]
Output [1]: [d_date_sk#22]

(38) InputAdapter
Input [1]: [d_date_sk#22]

(39) InputIteratorTransformer
Input [1]: [d_date_sk#22]

(40) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_sold_date_sk#7]
Right keys [1]: [d_date_sk#22]
Join type: Inner
Join condition: None

(41) ProjectExecTransformer
Output [5]: [ss_store_sk#2, ss_ext_sales_price#5, ss_net_profit#6, sr_return_amt#14, sr_net_loss#15]
Input [7]: [ss_store_sk#2, ss_ext_sales_price#5, ss_net_profit#6, ss_sold_date_sk#7, sr_return_amt#14, sr_net_loss#15, d_date_sk#22]

(42) FileSourceScanExecTransformer parquet spark_catalog.default.store
Output [2]: [s_store_sk#23, s_store_id#24]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/store]
PushedFilters: [IsNotNull(s_store_sk)]
ReadSchema: struct<s_store_sk:int,s_store_id:string>

(43) FilterExecTransformer
Input [2]: [s_store_sk#23, s_store_id#24]
Arguments: isnotnull(s_store_sk#23)

(44) WholeStageCodegenTransformer (11)
Input [2]: [s_store_sk#23, s_store_id#24]
Arguments: false

(45) ColumnarBroadcastExchange
Input [2]: [s_store_sk#23, s_store_id#24]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=7]

(46) InputAdapter
Input [2]: [s_store_sk#23, s_store_id#24]

(47) InputIteratorTransformer
Input [2]: [s_store_sk#23, s_store_id#24]

(48) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_store_sk#2]
Right keys [1]: [s_store_sk#23]
Join type: Inner
Join condition: None

(49) ProjectExecTransformer
Output [4]: [s_store_id#24, UnscaledValue(ss_ext_sales_price#5) AS _pre_1#25, coalesce(cast(sr_return_amt#14 as decimal(12,2)), 0.00) AS _pre_2#26, (ss_net_profit#6 - coalesce(cast(sr_net_loss#15 as decimal(12,2)), 0.00)) AS _pre_3#27]
Input [7]: [ss_store_sk#2, ss_ext_sales_price#5, ss_net_profit#6, sr_return_amt#14, sr_net_loss#15, s_store_sk#23, s_store_id#24]

(50) FlushableHashAggregateExecTransformer
Input [4]: [s_store_id#24, _pre_1#25, _pre_2#26, _pre_3#27]
Keys [1]: [s_store_id#24]
Functions [3]: [partial_sum(_pre_1#25), partial_sum(_pre_2#26), partial_sum(_pre_3#27)]
Aggregate Attributes [5]: [sum#28, sum#29, isEmpty#30, sum#31, isEmpty#32]
Results [6]: [s_store_id#24, sum#33, sum#34, isEmpty#35, sum#36, isEmpty#37]

(51) ProjectExecTransformer
Output [7]: [hash(s_store_id#24, 42) AS hash_partition_key#38, s_store_id#24, sum#33, sum#34, isEmpty#35, sum#36, isEmpty#37]
Input [6]: [s_store_id#24, sum#33, sum#34, isEmpty#35, sum#36, isEmpty#37]

(52) WholeStageCodegenTransformer (12)
Input [7]: [hash_partition_key#38, s_store_id#24, sum#33, sum#34, isEmpty#35, sum#36, isEmpty#37]
Arguments: false

(53) VeloxResizeBatches
Input [7]: [hash_partition_key#38, s_store_id#24, sum#33, sum#34, isEmpty#35, sum#36, isEmpty#37]
Arguments: 1024, 2147483647, 10485760

(54) ColumnarExchange
Input [7]: [hash_partition_key#38, s_store_id#24, sum#33, sum#34, isEmpty#35, sum#36, isEmpty#37]
Arguments: hashpartitioning(s_store_id#24, 1), ENSURE_REQUIREMENTS, [s_store_id#24, sum#33, sum#34, isEmpty#35, sum#36, isEmpty#37], [plan_id=8], [shuffle_writer_type=hash]

(55) InputAdapter
Input [6]: [s_store_id#24, sum#33, sum#34, isEmpty#35, sum#36, isEmpty#37]

(56) InputIteratorTransformer
Input [6]: [s_store_id#24, sum#33, sum#34, isEmpty#35, sum#36, isEmpty#37]

(57) RegularHashAggregateExecTransformer
Input [6]: [s_store_id#24, sum#33, sum#34, isEmpty#35, sum#36, isEmpty#37]
Keys [1]: [s_store_id#24]
Functions [3]: [sum(UnscaledValue(ss_ext_sales_price#5)), sum(coalesce(cast(sr_return_amt#14 as decimal(12,2)), 0.00)), sum((ss_net_profit#6 - coalesce(cast(sr_net_loss#15 as decimal(12,2)), 0.00)))]
Aggregate Attributes [3]: [sum(UnscaledValue(ss_ext_sales_price#5))#39, sum(coalesce(cast(sr_return_amt#14 as decimal(12,2)), 0.00))#40, sum((ss_net_profit#6 - coalesce(cast(sr_net_loss#15 as decimal(12,2)), 0.00)))#41]
Results [4]: [s_store_id#24, sum(UnscaledValue(ss_ext_sales_price#5))#39, sum(coalesce(cast(sr_return_amt#14 as decimal(12,2)), 0.00))#40, sum((ss_net_profit#6 - coalesce(cast(sr_net_loss#15 as decimal(12,2)), 0.00)))#41]

(58) ProjectExecTransformer
Output [5]: [store channel AS channel#42, concat(store, s_store_id#24) AS id#43, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#5))#39,17,2) AS sales#44, sum(coalesce(cast(sr_return_amt#14 as decimal(12,2)), 0.00))#40 AS returns#45, sum((ss_net_profit#6 - coalesce(cast(sr_net_loss#15 as decimal(12,2)), 0.00)))#41 AS profit#46]
Input [4]: [s_store_id#24, sum(UnscaledValue(ss_ext_sales_price#5))#39, sum(coalesce(cast(sr_return_amt#14 as decimal(12,2)), 0.00))#40, sum((ss_net_profit#6 - coalesce(cast(sr_net_loss#15 as decimal(12,2)), 0.00)))#41]

(59) WholeStageCodegenTransformer (13)
Input [5]: [channel#42, id#43, sales#44, returns#45, profit#46]
Arguments: false

(60) FileSourceScanExecTransformer parquet spark_catalog.default.catalog_sales
Output [7]: [cs_catalog_page_sk#47, cs_item_sk#48, cs_promo_sk#49, cs_order_number#50, cs_ext_sales_price#51, cs_net_profit#52, cs_sold_date_sk#53]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(cs_sold_date_sk#53), dynamicpruningexpression(cs_sold_date_sk#53 IN dynamicpruning#8)]
PushedFilters: [IsNotNull(cs_catalog_page_sk), IsNotNull(cs_item_sk), IsNotNull(cs_promo_sk)]
ReadSchema: struct<cs_catalog_page_sk:int,cs_item_sk:int,cs_promo_sk:int,cs_order_number:int,cs_ext_sales_price:decimal(7,2),cs_net_profit:decimal(7,2)>

(61) FilterExecTransformer
Input [7]: [cs_catalog_page_sk#47, cs_item_sk#48, cs_promo_sk#49, cs_order_number#50, cs_ext_sales_price#51, cs_net_profit#52, cs_sold_date_sk#53]
Arguments: ((((isnotnull(cs_catalog_page_sk#47) AND isnotnull(cs_item_sk#48)) AND isnotnull(cs_promo_sk#49)) AND velox_might_contain(ReusedSubquery Subquery scalar-subquery#9, [id=#1], xxhash64(cs_item_sk#48, 42))) AND velox_might_contain(ReusedSubquery Subquery scalar-subquery#10, [id=#2], xxhash64(cs_promo_sk#49, 42)))

(62) ProjectExecTransformer
Output [8]: [hash(cs_item_sk#48, cs_order_number#50, 42) AS hash_partition_key#54, cs_catalog_page_sk#47, cs_item_sk#48, cs_promo_sk#49, cs_order_number#50, cs_ext_sales_price#51, cs_net_profit#52, cs_sold_date_sk#53]
Input [7]: [cs_catalog_page_sk#47, cs_item_sk#48, cs_promo_sk#49, cs_order_number#50, cs_ext_sales_price#51, cs_net_profit#52, cs_sold_date_sk#53]

(63) WholeStageCodegenTransformer (19)
Input [8]: [hash_partition_key#54, cs_catalog_page_sk#47, cs_item_sk#48, cs_promo_sk#49, cs_order_number#50, cs_ext_sales_price#51, cs_net_profit#52, cs_sold_date_sk#53]
Arguments: false

(64) VeloxResizeBatches
Input [8]: [hash_partition_key#54, cs_catalog_page_sk#47, cs_item_sk#48, cs_promo_sk#49, cs_order_number#50, cs_ext_sales_price#51, cs_net_profit#52, cs_sold_date_sk#53]
Arguments: 1024, 2147483647, 10485760

(65) ColumnarExchange
Input [8]: [hash_partition_key#54, cs_catalog_page_sk#47, cs_item_sk#48, cs_promo_sk#49, cs_order_number#50, cs_ext_sales_price#51, cs_net_profit#52, cs_sold_date_sk#53]
Arguments: hashpartitioning(cs_item_sk#48, cs_order_number#50, 1), ENSURE_REQUIREMENTS, [cs_catalog_page_sk#47, cs_item_sk#48, cs_promo_sk#49, cs_order_number#50, cs_ext_sales_price#51, cs_net_profit#52, cs_sold_date_sk#53], [plan_id=9], [shuffle_writer_type=hash]

(66) InputAdapter
Input [7]: [cs_catalog_page_sk#47, cs_item_sk#48, cs_promo_sk#49, cs_order_number#50, cs_ext_sales_price#51, cs_net_profit#52, cs_sold_date_sk#53]

(67) InputIteratorTransformer
Input [7]: [cs_catalog_page_sk#47, cs_item_sk#48, cs_promo_sk#49, cs_order_number#50, cs_ext_sales_price#51, cs_net_profit#52, cs_sold_date_sk#53]

(68) FileSourceScanExecTransformer parquet spark_catalog.default.catalog_returns
Output [5]: [cr_item_sk#55, cr_order_number#56, cr_return_amount#57, cr_net_loss#58, cr_returned_date_sk#59]
Batched: true
Location: CatalogFileIndex [{warehouse_dir}/catalog_returns]
PushedFilters: [IsNotNull(cr_item_sk), IsNotNull(cr_order_number)]
ReadSchema: struct<cr_item_sk:int,cr_order_number:int,cr_return_amount:decimal(7,2),cr_net_loss:decimal(7,2)>

(69) FilterExecTransformer
Input [5]: [cr_item_sk#55, cr_order_number#56, cr_return_amount#57, cr_net_loss#58, cr_returned_date_sk#59]
Arguments: (isnotnull(cr_item_sk#55) AND isnotnull(cr_order_number#56))

(70) ProjectExecTransformer
Output [5]: [hash(cr_item_sk#55, cr_order_number#56, 42) AS hash_partition_key#60, cr_item_sk#55, cr_order_number#56, cr_return_amount#57, cr_net_loss#58]
Input [5]: [cr_item_sk#55, cr_order_number#56, cr_return_amount#57, cr_net_loss#58, cr_returned_date_sk#59]

(71) WholeStageCodegenTransformer (20)
Input [5]: [hash_partition_key#60, cr_item_sk#55, cr_order_number#56, cr_return_amount#57, cr_net_loss#58]
Arguments: false

(72) VeloxResizeBatches
Input [5]: [hash_partition_key#60, cr_item_sk#55, cr_order_number#56, cr_return_amount#57, cr_net_loss#58]
Arguments: 1024, 2147483647, 10485760

(73) ColumnarExchange
Input [5]: [hash_partition_key#60, cr_item_sk#55, cr_order_number#56, cr_return_amount#57, cr_net_loss#58]
Arguments: hashpartitioning(cr_item_sk#55, cr_order_number#56, 1), ENSURE_REQUIREMENTS, [cr_item_sk#55, cr_order_number#56, cr_return_amount#57, cr_net_loss#58], [plan_id=10], [shuffle_writer_type=hash]

(74) InputAdapter
Input [4]: [cr_item_sk#55, cr_order_number#56, cr_return_amount#57, cr_net_loss#58]

(75) InputIteratorTransformer
Input [4]: [cr_item_sk#55, cr_order_number#56, cr_return_amount#57, cr_net_loss#58]

(76) ShuffledHashJoinExecTransformer
Left keys [2]: [cs_item_sk#48, cs_order_number#50]
Right keys [2]: [cr_item_sk#55, cr_order_number#56]
Join type: LeftOuter
Join condition: None

(77) ProjectExecTransformer
Output [8]: [cs_catalog_page_sk#47, cs_item_sk#48, cs_promo_sk#49, cs_ext_sales_price#51, cs_net_profit#52, cs_sold_date_sk#53, cr_return_amount#57, cr_net_loss#58]
Input [11]: [cs_catalog_page_sk#47, cs_item_sk#48, cs_promo_sk#49, cs_order_number#50, cs_ext_sales_price#51, cs_net_profit#52, cs_sold_date_sk#53, cr_item_sk#55, cr_order_number#56, cr_return_amount#57, cr_net_loss#58]

(78) ReusedExchange [Reuses operator id: 23]
Output [1]: [i_item_sk#61]

(79) InputAdapter
Input [1]: [i_item_sk#61]

(80) InputIteratorTransformer
Input [1]: [i_item_sk#61]

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

(82) ProjectExecTransformer
Output [7]: [cs_catalog_page_sk#47, cs_promo_sk#49, cs_ext_sales_price#51, cs_net_profit#52, cs_sold_date_sk#53, cr_return_amount#57, cr_net_loss#58]
Input [9]: [cs_catalog_page_sk#47, cs_item_sk#48, cs_promo_sk#49, cs_ext_sales_price#51, cs_net_profit#52, cs_sold_date_sk#53, cr_return_amount#57, cr_net_loss#58, i_item_sk#61]

(83) ReusedExchange [Reuses operator id: 32]
Output [1]: [p_promo_sk#62]

(84) InputAdapter
Input [1]: [p_promo_sk#62]

(85) InputIteratorTransformer
Input [1]: [p_promo_sk#62]

(86) BroadcastHashJoinExecTransformer
Left keys [1]: [cs_promo_sk#49]
Right keys [1]: [p_promo_sk#62]
Join type: Inner
Join condition: None

(87) ProjectExecTransformer
Output [6]: [cs_catalog_page_sk#47, cs_ext_sales_price#51, cs_net_profit#52, cs_sold_date_sk#53, cr_return_amount#57, cr_net_loss#58]
Input [8]: [cs_catalog_page_sk#47, cs_promo_sk#49, cs_ext_sales_price#51, cs_net_profit#52, cs_sold_date_sk#53, cr_return_amount#57, cr_net_loss#58, p_promo_sk#62]

(88) ReusedExchange [Reuses operator id: 401]
Output [1]: [d_date_sk#63]

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

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

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

(92) ProjectExecTransformer
Output [5]: [cs_catalog_page_sk#47, cs_ext_sales_price#51, cs_net_profit#52, cr_return_amount#57, cr_net_loss#58]
Input [7]: [cs_catalog_page_sk#47, cs_ext_sales_price#51, cs_net_profit#52, cs_sold_date_sk#53, cr_return_amount#57, cr_net_loss#58, d_date_sk#63]

(93) FileSourceScanExecTransformer parquet spark_catalog.default.catalog_page
Output [2]: [cp_catalog_page_sk#64, cp_catalog_page_id#65]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/catalog_page]
PushedFilters: [IsNotNull(cp_catalog_page_sk)]
ReadSchema: struct<cp_catalog_page_sk:int,cp_catalog_page_id:string>

(94) FilterExecTransformer
Input [2]: [cp_catalog_page_sk#64, cp_catalog_page_id#65]
Arguments: isnotnull(cp_catalog_page_sk#64)

(95) WholeStageCodegenTransformer (24)
Input [2]: [cp_catalog_page_sk#64, cp_catalog_page_id#65]
Arguments: false

(96) ColumnarBroadcastExchange
Input [2]: [cp_catalog_page_sk#64, cp_catalog_page_id#65]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=11]

(97) InputAdapter
Input [2]: [cp_catalog_page_sk#64, cp_catalog_page_id#65]

(98) InputIteratorTransformer
Input [2]: [cp_catalog_page_sk#64, cp_catalog_page_id#65]

(99) BroadcastHashJoinExecTransformer
Left keys [1]: [cs_catalog_page_sk#47]
Right keys [1]: [cp_catalog_page_sk#64]
Join type: Inner
Join condition: None

(100) ProjectExecTransformer
Output [4]: [cp_catalog_page_id#65, UnscaledValue(cs_ext_sales_price#51) AS _pre_4#66, coalesce(cast(cr_return_amount#57 as decimal(12,2)), 0.00) AS _pre_5#67, (cs_net_profit#52 - coalesce(cast(cr_net_loss#58 as decimal(12,2)), 0.00)) AS _pre_6#68]
Input [7]: [cs_catalog_page_sk#47, cs_ext_sales_price#51, cs_net_profit#52, cr_return_amount#57, cr_net_loss#58, cp_catalog_page_sk#64, cp_catalog_page_id#65]

(101) FlushableHashAggregateExecTransformer
Input [4]: [cp_catalog_page_id#65, _pre_4#66, _pre_5#67, _pre_6#68]
Keys [1]: [cp_catalog_page_id#65]
Functions [3]: [partial_sum(_pre_4#66), partial_sum(_pre_5#67), partial_sum(_pre_6#68)]
Aggregate Attributes [5]: [sum#69, sum#70, isEmpty#71, sum#72, isEmpty#73]
Results [6]: [cp_catalog_page_id#65, sum#74, sum#75, isEmpty#76, sum#77, isEmpty#78]

(102) ProjectExecTransformer
Output [7]: [hash(cp_catalog_page_id#65, 42) AS hash_partition_key#79, cp_catalog_page_id#65, sum#74, sum#75, isEmpty#76, sum#77, isEmpty#78]
Input [6]: [cp_catalog_page_id#65, sum#74, sum#75, isEmpty#76, sum#77, isEmpty#78]

(103) WholeStageCodegenTransformer (25)
Input [7]: [hash_partition_key#79, cp_catalog_page_id#65, sum#74, sum#75, isEmpty#76, sum#77, isEmpty#78]
Arguments: false

(104) VeloxResizeBatches
Input [7]: [hash_partition_key#79, cp_catalog_page_id#65, sum#74, sum#75, isEmpty#76, sum#77, isEmpty#78]
Arguments: 1024, 2147483647, 10485760

(105) ColumnarExchange
Input [7]: [hash_partition_key#79, cp_catalog_page_id#65, sum#74, sum#75, isEmpty#76, sum#77, isEmpty#78]
Arguments: hashpartitioning(cp_catalog_page_id#65, 1), ENSURE_REQUIREMENTS, [cp_catalog_page_id#65, sum#74, sum#75, isEmpty#76, sum#77, isEmpty#78], [plan_id=12], [shuffle_writer_type=hash]

(106) InputAdapter
Input [6]: [cp_catalog_page_id#65, sum#74, sum#75, isEmpty#76, sum#77, isEmpty#78]

(107) InputIteratorTransformer
Input [6]: [cp_catalog_page_id#65, sum#74, sum#75, isEmpty#76, sum#77, isEmpty#78]

(108) RegularHashAggregateExecTransformer
Input [6]: [cp_catalog_page_id#65, sum#74, sum#75, isEmpty#76, sum#77, isEmpty#78]
Keys [1]: [cp_catalog_page_id#65]
Functions [3]: [sum(UnscaledValue(cs_ext_sales_price#51)), sum(coalesce(cast(cr_return_amount#57 as decimal(12,2)), 0.00)), sum((cs_net_profit#52 - coalesce(cast(cr_net_loss#58 as decimal(12,2)), 0.00)))]
Aggregate Attributes [3]: [sum(UnscaledValue(cs_ext_sales_price#51))#80, sum(coalesce(cast(cr_return_amount#57 as decimal(12,2)), 0.00))#81, sum((cs_net_profit#52 - coalesce(cast(cr_net_loss#58 as decimal(12,2)), 0.00)))#82]
Results [4]: [cp_catalog_page_id#65, sum(UnscaledValue(cs_ext_sales_price#51))#80, sum(coalesce(cast(cr_return_amount#57 as decimal(12,2)), 0.00))#81, sum((cs_net_profit#52 - coalesce(cast(cr_net_loss#58 as decimal(12,2)), 0.00)))#82]

(109) ProjectExecTransformer
Output [5]: [catalog channel AS channel#83, concat(catalog_page, cp_catalog_page_id#65) AS id#84, MakeDecimal(sum(UnscaledValue(cs_ext_sales_price#51))#80,17,2) AS sales#85, sum(coalesce(cast(cr_return_amount#57 as decimal(12,2)), 0.00))#81 AS returns#86, sum((cs_net_profit#52 - coalesce(cast(cr_net_loss#58 as decimal(12,2)), 0.00)))#82 AS profit#87]
Input [4]: [cp_catalog_page_id#65, sum(UnscaledValue(cs_ext_sales_price#51))#80, sum(coalesce(cast(cr_return_amount#57 as decimal(12,2)), 0.00))#81, sum((cs_net_profit#52 - coalesce(cast(cr_net_loss#58 as decimal(12,2)), 0.00)))#82]

(110) WholeStageCodegenTransformer (26)
Input [5]: [channel#83, id#84, sales#85, returns#86, profit#87]
Arguments: false

(111) FileSourceScanExecTransformer parquet spark_catalog.default.web_sales
Output [7]: [ws_item_sk#88, ws_web_site_sk#89, ws_promo_sk#90, ws_order_number#91, ws_ext_sales_price#92, ws_net_profit#93, ws_sold_date_sk#94]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(ws_sold_date_sk#94), dynamicpruningexpression(ws_sold_date_sk#94 IN dynamicpruning#8)]
PushedFilters: [IsNotNull(ws_web_site_sk), IsNotNull(ws_item_sk), IsNotNull(ws_promo_sk)]
ReadSchema: struct<ws_item_sk:int,ws_web_site_sk:int,ws_promo_sk:int,ws_order_number:int,ws_ext_sales_price:decimal(7,2),ws_net_profit:decimal(7,2)>

(112) FilterExecTransformer
Input [7]: [ws_item_sk#88, ws_web_site_sk#89, ws_promo_sk#90, ws_order_number#91, ws_ext_sales_price#92, ws_net_profit#93, ws_sold_date_sk#94]
Arguments: ((((isnotnull(ws_web_site_sk#89) AND isnotnull(ws_item_sk#88)) AND isnotnull(ws_promo_sk#90)) AND velox_might_contain(ReusedSubquery Subquery scalar-subquery#9, [id=#1], xxhash64(ws_item_sk#88, 42))) AND velox_might_contain(ReusedSubquery Subquery scalar-subquery#10, [id=#2], xxhash64(ws_promo_sk#90, 42)))

(113) ProjectExecTransformer
Output [8]: [hash(ws_item_sk#88, ws_order_number#91, 42) AS hash_partition_key#95, ws_item_sk#88, ws_web_site_sk#89, ws_promo_sk#90, ws_order_number#91, ws_ext_sales_price#92, ws_net_profit#93, ws_sold_date_sk#94]
Input [7]: [ws_item_sk#88, ws_web_site_sk#89, ws_promo_sk#90, ws_order_number#91, ws_ext_sales_price#92, ws_net_profit#93, ws_sold_date_sk#94]

(114) WholeStageCodegenTransformer (32)
Input [8]: [hash_partition_key#95, ws_item_sk#88, ws_web_site_sk#89, ws_promo_sk#90, ws_order_number#91, ws_ext_sales_price#92, ws_net_profit#93, ws_sold_date_sk#94]
Arguments: false

(115) VeloxResizeBatches
Input [8]: [hash_partition_key#95, ws_item_sk#88, ws_web_site_sk#89, ws_promo_sk#90, ws_order_number#91, ws_ext_sales_price#92, ws_net_profit#93, ws_sold_date_sk#94]
Arguments: 1024, 2147483647, 10485760

(116) ColumnarExchange
Input [8]: [hash_partition_key#95, ws_item_sk#88, ws_web_site_sk#89, ws_promo_sk#90, ws_order_number#91, ws_ext_sales_price#92, ws_net_profit#93, ws_sold_date_sk#94]
Arguments: hashpartitioning(ws_item_sk#88, ws_order_number#91, 1), ENSURE_REQUIREMENTS, [ws_item_sk#88, ws_web_site_sk#89, ws_promo_sk#90, ws_order_number#91, ws_ext_sales_price#92, ws_net_profit#93, ws_sold_date_sk#94], [plan_id=13], [shuffle_writer_type=hash]

(117) InputAdapter
Input [7]: [ws_item_sk#88, ws_web_site_sk#89, ws_promo_sk#90, ws_order_number#91, ws_ext_sales_price#92, ws_net_profit#93, ws_sold_date_sk#94]

(118) InputIteratorTransformer
Input [7]: [ws_item_sk#88, ws_web_site_sk#89, ws_promo_sk#90, ws_order_number#91, ws_ext_sales_price#92, ws_net_profit#93, ws_sold_date_sk#94]

(119) FileSourceScanExecTransformer parquet spark_catalog.default.web_returns
Output [5]: [wr_item_sk#96, wr_order_number#97, wr_return_amt#98, wr_net_loss#99, wr_returned_date_sk#100]
Batched: true
Location: CatalogFileIndex [{warehouse_dir}/web_returns]
PushedFilters: [IsNotNull(wr_item_sk), IsNotNull(wr_order_number)]
ReadSchema: struct<wr_item_sk:int,wr_order_number:int,wr_return_amt:decimal(7,2),wr_net_loss:decimal(7,2)>

(120) FilterExecTransformer
Input [5]: [wr_item_sk#96, wr_order_number#97, wr_return_amt#98, wr_net_loss#99, wr_returned_date_sk#100]
Arguments: (isnotnull(wr_item_sk#96) AND isnotnull(wr_order_number#97))

(121) ProjectExecTransformer
Output [5]: [hash(wr_item_sk#96, wr_order_number#97, 42) AS hash_partition_key#101, wr_item_sk#96, wr_order_number#97, wr_return_amt#98, wr_net_loss#99]
Input [5]: [wr_item_sk#96, wr_order_number#97, wr_return_amt#98, wr_net_loss#99, wr_returned_date_sk#100]

(122) WholeStageCodegenTransformer (33)
Input [5]: [hash_partition_key#101, wr_item_sk#96, wr_order_number#97, wr_return_amt#98, wr_net_loss#99]
Arguments: false

(123) VeloxResizeBatches
Input [5]: [hash_partition_key#101, wr_item_sk#96, wr_order_number#97, wr_return_amt#98, wr_net_loss#99]
Arguments: 1024, 2147483647, 10485760

(124) ColumnarExchange
Input [5]: [hash_partition_key#101, wr_item_sk#96, wr_order_number#97, wr_return_amt#98, wr_net_loss#99]
Arguments: hashpartitioning(wr_item_sk#96, wr_order_number#97, 1), ENSURE_REQUIREMENTS, [wr_item_sk#96, wr_order_number#97, wr_return_amt#98, wr_net_loss#99], [plan_id=14], [shuffle_writer_type=hash]

(125) InputAdapter
Input [4]: [wr_item_sk#96, wr_order_number#97, wr_return_amt#98, wr_net_loss#99]

(126) InputIteratorTransformer
Input [4]: [wr_item_sk#96, wr_order_number#97, wr_return_amt#98, wr_net_loss#99]

(127) ShuffledHashJoinExecTransformer
Left keys [2]: [ws_item_sk#88, ws_order_number#91]
Right keys [2]: [wr_item_sk#96, wr_order_number#97]
Join type: LeftOuter
Join condition: None

(128) ProjectExecTransformer
Output [8]: [ws_item_sk#88, ws_web_site_sk#89, ws_promo_sk#90, ws_ext_sales_price#92, ws_net_profit#93, ws_sold_date_sk#94, wr_return_amt#98, wr_net_loss#99]
Input [11]: [ws_item_sk#88, ws_web_site_sk#89, ws_promo_sk#90, ws_order_number#91, ws_ext_sales_price#92, ws_net_profit#93, ws_sold_date_sk#94, wr_item_sk#96, wr_order_number#97, wr_return_amt#98, wr_net_loss#99]

(129) ReusedExchange [Reuses operator id: 23]
Output [1]: [i_item_sk#102]

(130) InputAdapter
Input [1]: [i_item_sk#102]

(131) InputIteratorTransformer
Input [1]: [i_item_sk#102]

(132) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_item_sk#88]
Right keys [1]: [i_item_sk#102]
Join type: Inner
Join condition: None

(133) ProjectExecTransformer
Output [7]: [ws_web_site_sk#89, ws_promo_sk#90, ws_ext_sales_price#92, ws_net_profit#93, ws_sold_date_sk#94, wr_return_amt#98, wr_net_loss#99]
Input [9]: [ws_item_sk#88, ws_web_site_sk#89, ws_promo_sk#90, ws_ext_sales_price#92, ws_net_profit#93, ws_sold_date_sk#94, wr_return_amt#98, wr_net_loss#99, i_item_sk#102]

(134) ReusedExchange [Reuses operator id: 32]
Output [1]: [p_promo_sk#103]

(135) InputAdapter
Input [1]: [p_promo_sk#103]

(136) InputIteratorTransformer
Input [1]: [p_promo_sk#103]

(137) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_promo_sk#90]
Right keys [1]: [p_promo_sk#103]
Join type: Inner
Join condition: None

(138) ProjectExecTransformer
Output [6]: [ws_web_site_sk#89, ws_ext_sales_price#92, ws_net_profit#93, ws_sold_date_sk#94, wr_return_amt#98, wr_net_loss#99]
Input [8]: [ws_web_site_sk#89, ws_promo_sk#90, ws_ext_sales_price#92, ws_net_profit#93, ws_sold_date_sk#94, wr_return_amt#98, wr_net_loss#99, p_promo_sk#103]

(139) ReusedExchange [Reuses operator id: 401]
Output [1]: [d_date_sk#104]

(140) InputAdapter
Input [1]: [d_date_sk#104]

(141) InputIteratorTransformer
Input [1]: [d_date_sk#104]

(142) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_sold_date_sk#94]
Right keys [1]: [d_date_sk#104]
Join type: Inner
Join condition: None

(143) ProjectExecTransformer
Output [5]: [ws_web_site_sk#89, ws_ext_sales_price#92, ws_net_profit#93, wr_return_amt#98, wr_net_loss#99]
Input [7]: [ws_web_site_sk#89, ws_ext_sales_price#92, ws_net_profit#93, ws_sold_date_sk#94, wr_return_amt#98, wr_net_loss#99, d_date_sk#104]

(144) FileSourceScanExecTransformer parquet spark_catalog.default.web_site
Output [2]: [web_site_sk#105, web_site_id#106]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/web_site]
PushedFilters: [IsNotNull(web_site_sk)]
ReadSchema: struct<web_site_sk:int,web_site_id:string>

(145) FilterExecTransformer
Input [2]: [web_site_sk#105, web_site_id#106]
Arguments: isnotnull(web_site_sk#105)

(146) WholeStageCodegenTransformer (37)
Input [2]: [web_site_sk#105, web_site_id#106]
Arguments: false

(147) ColumnarBroadcastExchange
Input [2]: [web_site_sk#105, web_site_id#106]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=15]

(148) InputAdapter
Input [2]: [web_site_sk#105, web_site_id#106]

(149) InputIteratorTransformer
Input [2]: [web_site_sk#105, web_site_id#106]

(150) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_web_site_sk#89]
Right keys [1]: [web_site_sk#105]
Join type: Inner
Join condition: None

(151) ProjectExecTransformer
Output [4]: [web_site_id#106, UnscaledValue(ws_ext_sales_price#92) AS _pre_7#107, coalesce(cast(wr_return_amt#98 as decimal(12,2)), 0.00) AS _pre_8#108, (ws_net_profit#93 - coalesce(cast(wr_net_loss#99 as decimal(12,2)), 0.00)) AS _pre_9#109]
Input [7]: [ws_web_site_sk#89, ws_ext_sales_price#92, ws_net_profit#93, wr_return_amt#98, wr_net_loss#99, web_site_sk#105, web_site_id#106]

(152) FlushableHashAggregateExecTransformer
Input [4]: [web_site_id#106, _pre_7#107, _pre_8#108, _pre_9#109]
Keys [1]: [web_site_id#106]
Functions [3]: [partial_sum(_pre_7#107), partial_sum(_pre_8#108), partial_sum(_pre_9#109)]
Aggregate Attributes [5]: [sum#110, sum#111, isEmpty#112, sum#113, isEmpty#114]
Results [6]: [web_site_id#106, sum#115, sum#116, isEmpty#117, sum#118, isEmpty#119]

(153) ProjectExecTransformer
Output [7]: [hash(web_site_id#106, 42) AS hash_partition_key#120, web_site_id#106, sum#115, sum#116, isEmpty#117, sum#118, isEmpty#119]
Input [6]: [web_site_id#106, sum#115, sum#116, isEmpty#117, sum#118, isEmpty#119]

(154) WholeStageCodegenTransformer (38)
Input [7]: [hash_partition_key#120, web_site_id#106, sum#115, sum#116, isEmpty#117, sum#118, isEmpty#119]
Arguments: false

(155) VeloxResizeBatches
Input [7]: [hash_partition_key#120, web_site_id#106, sum#115, sum#116, isEmpty#117, sum#118, isEmpty#119]
Arguments: 1024, 2147483647, 10485760

(156) ColumnarExchange
Input [7]: [hash_partition_key#120, web_site_id#106, sum#115, sum#116, isEmpty#117, sum#118, isEmpty#119]
Arguments: hashpartitioning(web_site_id#106, 1), ENSURE_REQUIREMENTS, [web_site_id#106, sum#115, sum#116, isEmpty#117, sum#118, isEmpty#119], [plan_id=16], [shuffle_writer_type=hash]

(157) InputAdapter
Input [6]: [web_site_id#106, sum#115, sum#116, isEmpty#117, sum#118, isEmpty#119]

(158) InputIteratorTransformer
Input [6]: [web_site_id#106, sum#115, sum#116, isEmpty#117, sum#118, isEmpty#119]

(159) RegularHashAggregateExecTransformer
Input [6]: [web_site_id#106, sum#115, sum#116, isEmpty#117, sum#118, isEmpty#119]
Keys [1]: [web_site_id#106]
Functions [3]: [sum(UnscaledValue(ws_ext_sales_price#92)), sum(coalesce(cast(wr_return_amt#98 as decimal(12,2)), 0.00)), sum((ws_net_profit#93 - coalesce(cast(wr_net_loss#99 as decimal(12,2)), 0.00)))]
Aggregate Attributes [3]: [sum(UnscaledValue(ws_ext_sales_price#92))#121, sum(coalesce(cast(wr_return_amt#98 as decimal(12,2)), 0.00))#122, sum((ws_net_profit#93 - coalesce(cast(wr_net_loss#99 as decimal(12,2)), 0.00)))#123]
Results [4]: [web_site_id#106, sum(UnscaledValue(ws_ext_sales_price#92))#121, sum(coalesce(cast(wr_return_amt#98 as decimal(12,2)), 0.00))#122, sum((ws_net_profit#93 - coalesce(cast(wr_net_loss#99 as decimal(12,2)), 0.00)))#123]

(160) ProjectExecTransformer
Output [5]: [web channel AS channel#124, concat(web_site, web_site_id#106) AS id#125, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#92))#121,17,2) AS sales#126, sum(coalesce(cast(wr_return_amt#98 as decimal(12,2)), 0.00))#122 AS returns#127, sum((ws_net_profit#93 - coalesce(cast(wr_net_loss#99 as decimal(12,2)), 0.00)))#123 AS profit#128]
Input [4]: [web_site_id#106, sum(UnscaledValue(ws_ext_sales_price#92))#121, sum(coalesce(cast(wr_return_amt#98 as decimal(12,2)), 0.00))#122, sum((ws_net_profit#93 - coalesce(cast(wr_net_loss#99 as decimal(12,2)), 0.00)))#123]

(161) WholeStageCodegenTransformer (39)
Input [5]: [channel#124, id#125, sales#126, returns#127, profit#128]
Arguments: false

(162) ColumnarUnion
Arguments: UnknownPartitioning(0)

(163) InputAdapter
Input [5]: [channel#42, id#43, sales#44, returns#45, profit#46]

(164) InputIteratorTransformer
Input [5]: [channel#42, id#43, sales#44, returns#45, profit#46]

(165) FlushableHashAggregateExecTransformer
Input [5]: [channel#42, id#43, sales#44, returns#45, profit#46]
Keys [2]: [channel#42, id#43]
Functions [3]: [partial_sum(sales#44), partial_sum(returns#45), partial_sum(profit#46)]
Aggregate Attributes [6]: [sum#129, isEmpty#130, sum#131, isEmpty#132, sum#133, isEmpty#134]
Results [8]: [channel#42, id#43, sum#135, isEmpty#136, sum#137, isEmpty#138, sum#139, isEmpty#140]

(166) ProjectExecTransformer
Output [9]: [hash(channel#42, id#43, 42) AS hash_partition_key#141, channel#42, id#43, sum#135, isEmpty#136, sum#137, isEmpty#138, sum#139, isEmpty#140]
Input [8]: [channel#42, id#43, sum#135, isEmpty#136, sum#137, isEmpty#138, sum#139, isEmpty#140]

(167) WholeStageCodegenTransformer (40)
Input [9]: [hash_partition_key#141, channel#42, id#43, sum#135, isEmpty#136, sum#137, isEmpty#138, sum#139, isEmpty#140]
Arguments: false

(168) VeloxResizeBatches
Input [9]: [hash_partition_key#141, channel#42, id#43, sum#135, isEmpty#136, sum#137, isEmpty#138, sum#139, isEmpty#140]
Arguments: 1024, 2147483647, 10485760

(169) ColumnarExchange
Input [9]: [hash_partition_key#141, channel#42, id#43, sum#135, isEmpty#136, sum#137, isEmpty#138, sum#139, isEmpty#140]
Arguments: hashpartitioning(channel#42, id#43, 1), ENSURE_REQUIREMENTS, [channel#42, id#43, sum#135, isEmpty#136, sum#137, isEmpty#138, sum#139, isEmpty#140], [plan_id=17], [shuffle_writer_type=hash]

(170) InputAdapter
Input [8]: [channel#42, id#43, sum#135, isEmpty#136, sum#137, isEmpty#138, sum#139, isEmpty#140]

(171) InputIteratorTransformer
Input [8]: [channel#42, id#43, sum#135, isEmpty#136, sum#137, isEmpty#138, sum#139, isEmpty#140]

(172) RegularHashAggregateExecTransformer
Input [8]: [channel#42, id#43, sum#135, isEmpty#136, sum#137, isEmpty#138, sum#139, isEmpty#140]
Keys [2]: [channel#42, id#43]
Functions [3]: [sum(sales#44), sum(returns#45), sum(profit#46)]
Aggregate Attributes [3]: [sum(sales#44)#142, sum(returns#45)#143, sum(profit#46)#144]
Results [5]: [channel#42, id#43, sum(sales#44)#142, sum(returns#45)#143, sum(profit#46)#144]

(173) ProjectExecTransformer
Output [5]: [channel#42, id#43, cast(sum(sales#44)#142 as decimal(37,2)) AS sales#145, cast(sum(returns#45)#143 as decimal(38,2)) AS returns#146, cast(sum(profit#46)#144 as decimal(38,2)) AS profit#147]
Input [5]: [channel#42, id#43, sum(sales#44)#142, sum(returns#45)#143, sum(profit#46)#144]

(174) WholeStageCodegenTransformer (41)
Input [5]: [channel#42, id#43, sales#145, returns#146, profit#147]
Arguments: false

(175) ReusedExchange [Reuses operator id: 54]
Output [6]: [s_store_id#148, sum#149, sum#150, isEmpty#151, sum#152, isEmpty#153]

(176) InputAdapter
Input [6]: [s_store_id#148, sum#149, sum#150, isEmpty#151, sum#152, isEmpty#153]

(177) InputIteratorTransformer
Input [6]: [s_store_id#148, sum#149, sum#150, isEmpty#151, sum#152, isEmpty#153]

(178) RegularHashAggregateExecTransformer
Input [6]: [s_store_id#148, sum#149, sum#150, isEmpty#151, sum#152, isEmpty#153]
Keys [1]: [s_store_id#148]
Functions [3]: [sum(UnscaledValue(ss_ext_sales_price#154)), sum(coalesce(cast(sr_return_amt#155 as decimal(12,2)), 0.00)), sum((ss_net_profit#156 - coalesce(cast(sr_net_loss#157 as decimal(12,2)), 0.00)))]
Aggregate Attributes [3]: [sum(UnscaledValue(ss_ext_sales_price#154))#39, sum(coalesce(cast(sr_return_amt#155 as decimal(12,2)), 0.00))#40, sum((ss_net_profit#156 - coalesce(cast(sr_net_loss#157 as decimal(12,2)), 0.00)))#41]
Results [4]: [s_store_id#148, sum(UnscaledValue(ss_ext_sales_price#154))#39, sum(coalesce(cast(sr_return_amt#155 as decimal(12,2)), 0.00))#40, sum((ss_net_profit#156 - coalesce(cast(sr_net_loss#157 as decimal(12,2)), 0.00)))#41]

(179) ProjectExecTransformer
Output [5]: [store channel AS channel#158, concat(store, s_store_id#148) AS id#159, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#154))#39,17,2) AS sales#160, sum(coalesce(cast(sr_return_amt#155 as decimal(12,2)), 0.00))#40 AS returns#161, sum((ss_net_profit#156 - coalesce(cast(sr_net_loss#157 as decimal(12,2)), 0.00)))#41 AS profit#162]
Input [4]: [s_store_id#148, sum(UnscaledValue(ss_ext_sales_price#154))#39, sum(coalesce(cast(sr_return_amt#155 as decimal(12,2)), 0.00))#40, sum((ss_net_profit#156 - coalesce(cast(sr_net_loss#157 as decimal(12,2)), 0.00)))#41]

(180) WholeStageCodegenTransformer (54)
Input [5]: [channel#158, id#159, sales#160, returns#161, profit#162]
Arguments: false

(181) ReusedExchange [Reuses operator id: 105]
Output [6]: [cp_catalog_page_id#163, sum#164, sum#165, isEmpty#166, sum#167, isEmpty#168]

(182) InputAdapter
Input [6]: [cp_catalog_page_id#163, sum#164, sum#165, isEmpty#166, sum#167, isEmpty#168]

(183) InputIteratorTransformer
Input [6]: [cp_catalog_page_id#163, sum#164, sum#165, isEmpty#166, sum#167, isEmpty#168]

(184) RegularHashAggregateExecTransformer
Input [6]: [cp_catalog_page_id#163, sum#164, sum#165, isEmpty#166, sum#167, isEmpty#168]
Keys [1]: [cp_catalog_page_id#163]
Functions [3]: [sum(UnscaledValue(cs_ext_sales_price#169)), sum(coalesce(cast(cr_return_amount#170 as decimal(12,2)), 0.00)), sum((cs_net_profit#171 - coalesce(cast(cr_net_loss#172 as decimal(12,2)), 0.00)))]
Aggregate Attributes [3]: [sum(UnscaledValue(cs_ext_sales_price#169))#80, sum(coalesce(cast(cr_return_amount#170 as decimal(12,2)), 0.00))#81, sum((cs_net_profit#171 - coalesce(cast(cr_net_loss#172 as decimal(12,2)), 0.00)))#82]
Results [4]: [cp_catalog_page_id#163, sum(UnscaledValue(cs_ext_sales_price#169))#80, sum(coalesce(cast(cr_return_amount#170 as decimal(12,2)), 0.00))#81, sum((cs_net_profit#171 - coalesce(cast(cr_net_loss#172 as decimal(12,2)), 0.00)))#82]

(185) ProjectExecTransformer
Output [5]: [catalog channel AS channel#173, concat(catalog_page, cp_catalog_page_id#163) AS id#174, MakeDecimal(sum(UnscaledValue(cs_ext_sales_price#169))#80,17,2) AS sales#175, sum(coalesce(cast(cr_return_amount#170 as decimal(12,2)), 0.00))#81 AS returns#176, sum((cs_net_profit#171 - coalesce(cast(cr_net_loss#172 as decimal(12,2)), 0.00)))#82 AS profit#177]
Input [4]: [cp_catalog_page_id#163, sum(UnscaledValue(cs_ext_sales_price#169))#80, sum(coalesce(cast(cr_return_amount#170 as decimal(12,2)), 0.00))#81, sum((cs_net_profit#171 - coalesce(cast(cr_net_loss#172 as decimal(12,2)), 0.00)))#82]

(186) WholeStageCodegenTransformer (67)
Input [5]: [channel#173, id#174, sales#175, returns#176, profit#177]
Arguments: false

(187) FileSourceScanExecTransformer parquet spark_catalog.default.web_sales
Output [7]: [ws_item_sk#178, ws_web_site_sk#179, ws_promo_sk#180, ws_order_number#181, ws_ext_sales_price#182, ws_net_profit#183, ws_sold_date_sk#184]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(ws_sold_date_sk#184), dynamicpruningexpression(ws_sold_date_sk#184 IN dynamicpruning#8)]
PushedFilters: [IsNotNull(ws_web_site_sk), IsNotNull(ws_item_sk), IsNotNull(ws_promo_sk)]
ReadSchema: struct<ws_item_sk:int,ws_web_site_sk:int,ws_promo_sk:int,ws_order_number:int,ws_ext_sales_price:decimal(7,2),ws_net_profit:decimal(7,2)>

(188) FilterExecTransformer
Input [7]: [ws_item_sk#178, ws_web_site_sk#179, ws_promo_sk#180, ws_order_number#181, ws_ext_sales_price#182, ws_net_profit#183, ws_sold_date_sk#184]
Arguments: ((isnotnull(ws_web_site_sk#179) AND isnotnull(ws_item_sk#178)) AND isnotnull(ws_promo_sk#180))

(189) ProjectExecTransformer
Output [8]: [hash(ws_item_sk#178, ws_order_number#181, 42) AS hash_partition_key#185, ws_item_sk#178, ws_web_site_sk#179, ws_promo_sk#180, ws_order_number#181, ws_ext_sales_price#182, ws_net_profit#183, ws_sold_date_sk#184]
Input [7]: [ws_item_sk#178, ws_web_site_sk#179, ws_promo_sk#180, ws_order_number#181, ws_ext_sales_price#182, ws_net_profit#183, ws_sold_date_sk#184]

(190) WholeStageCodegenTransformer (69)
Input [8]: [hash_partition_key#185, ws_item_sk#178, ws_web_site_sk#179, ws_promo_sk#180, ws_order_number#181, ws_ext_sales_price#182, ws_net_profit#183, ws_sold_date_sk#184]
Arguments: false

(191) VeloxResizeBatches
Input [8]: [hash_partition_key#185, ws_item_sk#178, ws_web_site_sk#179, ws_promo_sk#180, ws_order_number#181, ws_ext_sales_price#182, ws_net_profit#183, ws_sold_date_sk#184]
Arguments: 1024, 2147483647, 10485760

(192) ColumnarExchange
Input [8]: [hash_partition_key#185, ws_item_sk#178, ws_web_site_sk#179, ws_promo_sk#180, ws_order_number#181, ws_ext_sales_price#182, ws_net_profit#183, ws_sold_date_sk#184]
Arguments: hashpartitioning(ws_item_sk#178, ws_order_number#181, 1), ENSURE_REQUIREMENTS, [ws_item_sk#178, ws_web_site_sk#179, ws_promo_sk#180, ws_order_number#181, ws_ext_sales_price#182, ws_net_profit#183, ws_sold_date_sk#184], [plan_id=18], [shuffle_writer_type=hash]

(193) InputAdapter
Input [7]: [ws_item_sk#178, ws_web_site_sk#179, ws_promo_sk#180, ws_order_number#181, ws_ext_sales_price#182, ws_net_profit#183, ws_sold_date_sk#184]

(194) InputIteratorTransformer
Input [7]: [ws_item_sk#178, ws_web_site_sk#179, ws_promo_sk#180, ws_order_number#181, ws_ext_sales_price#182, ws_net_profit#183, ws_sold_date_sk#184]

(195) ReusedExchange [Reuses operator id: 124]
Output [4]: [wr_item_sk#186, wr_order_number#187, wr_return_amt#188, wr_net_loss#189]

(196) InputAdapter
Input [4]: [wr_item_sk#186, wr_order_number#187, wr_return_amt#188, wr_net_loss#189]

(197) InputIteratorTransformer
Input [4]: [wr_item_sk#186, wr_order_number#187, wr_return_amt#188, wr_net_loss#189]

(198) ShuffledHashJoinExecTransformer
Left keys [2]: [ws_item_sk#178, ws_order_number#181]
Right keys [2]: [wr_item_sk#186, wr_order_number#187]
Join type: LeftOuter
Join condition: None

(199) ProjectExecTransformer
Output [8]: [ws_item_sk#178, ws_web_site_sk#179, ws_promo_sk#180, ws_ext_sales_price#182, ws_net_profit#183, ws_sold_date_sk#184, wr_return_amt#188, wr_net_loss#189]
Input [11]: [ws_item_sk#178, ws_web_site_sk#179, ws_promo_sk#180, ws_order_number#181, ws_ext_sales_price#182, ws_net_profit#183, ws_sold_date_sk#184, wr_item_sk#186, wr_order_number#187, wr_return_amt#188, wr_net_loss#189]

(200) ReusedExchange [Reuses operator id: 23]
Output [1]: [i_item_sk#190]

(201) InputAdapter
Input [1]: [i_item_sk#190]

(202) InputIteratorTransformer
Input [1]: [i_item_sk#190]

(203) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_item_sk#178]
Right keys [1]: [i_item_sk#190]
Join type: Inner
Join condition: None

(204) ProjectExecTransformer
Output [7]: [ws_web_site_sk#179, ws_promo_sk#180, ws_ext_sales_price#182, ws_net_profit#183, ws_sold_date_sk#184, wr_return_amt#188, wr_net_loss#189]
Input [9]: [ws_item_sk#178, ws_web_site_sk#179, ws_promo_sk#180, ws_ext_sales_price#182, ws_net_profit#183, ws_sold_date_sk#184, wr_return_amt#188, wr_net_loss#189, i_item_sk#190]

(205) ReusedExchange [Reuses operator id: 32]
Output [1]: [p_promo_sk#191]

(206) InputAdapter
Input [1]: [p_promo_sk#191]

(207) InputIteratorTransformer
Input [1]: [p_promo_sk#191]

(208) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_promo_sk#180]
Right keys [1]: [p_promo_sk#191]
Join type: Inner
Join condition: None

(209) ProjectExecTransformer
Output [6]: [ws_web_site_sk#179, ws_ext_sales_price#182, ws_net_profit#183, ws_sold_date_sk#184, wr_return_amt#188, wr_net_loss#189]
Input [8]: [ws_web_site_sk#179, ws_promo_sk#180, ws_ext_sales_price#182, ws_net_profit#183, ws_sold_date_sk#184, wr_return_amt#188, wr_net_loss#189, p_promo_sk#191]

(210) ReusedExchange [Reuses operator id: 401]
Output [1]: [d_date_sk#192]

(211) InputAdapter
Input [1]: [d_date_sk#192]

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

(213) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_sold_date_sk#184]
Right keys [1]: [d_date_sk#192]
Join type: Inner
Join condition: None

(214) ProjectExecTransformer
Output [5]: [ws_web_site_sk#179, ws_ext_sales_price#182, ws_net_profit#183, wr_return_amt#188, wr_net_loss#189]
Input [7]: [ws_web_site_sk#179, ws_ext_sales_price#182, ws_net_profit#183, ws_sold_date_sk#184, wr_return_amt#188, wr_net_loss#189, d_date_sk#192]

(215) ReusedExchange [Reuses operator id: 147]
Output [2]: [web_site_sk#193, web_site_id#194]

(216) InputAdapter
Input [2]: [web_site_sk#193, web_site_id#194]

(217) InputIteratorTransformer
Input [2]: [web_site_sk#193, web_site_id#194]

(218) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_web_site_sk#179]
Right keys [1]: [web_site_sk#193]
Join type: Inner
Join condition: None

(219) ProjectExecTransformer
Output [4]: [web_site_id#194, UnscaledValue(ws_ext_sales_price#182) AS _pre_10#195, coalesce(cast(wr_return_amt#188 as decimal(12,2)), 0.00) AS _pre_11#196, (ws_net_profit#183 - coalesce(cast(wr_net_loss#189 as decimal(12,2)), 0.00)) AS _pre_12#197]
Input [7]: [ws_web_site_sk#179, ws_ext_sales_price#182, ws_net_profit#183, wr_return_amt#188, wr_net_loss#189, web_site_sk#193, web_site_id#194]

(220) FlushableHashAggregateExecTransformer
Input [4]: [web_site_id#194, _pre_10#195, _pre_11#196, _pre_12#197]
Keys [1]: [web_site_id#194]
Functions [3]: [partial_sum(_pre_10#195), partial_sum(_pre_11#196), partial_sum(_pre_12#197)]
Aggregate Attributes [5]: [sum#198, sum#199, isEmpty#200, sum#201, isEmpty#202]
Results [6]: [web_site_id#194, sum#203, sum#204, isEmpty#205, sum#206, isEmpty#207]

(221) ProjectExecTransformer
Output [7]: [hash(web_site_id#194, 42) AS hash_partition_key#208, web_site_id#194, sum#203, sum#204, isEmpty#205, sum#206, isEmpty#207]
Input [6]: [web_site_id#194, sum#203, sum#204, isEmpty#205, sum#206, isEmpty#207]

(222) WholeStageCodegenTransformer (75)
Input [7]: [hash_partition_key#208, web_site_id#194, sum#203, sum#204, isEmpty#205, sum#206, isEmpty#207]
Arguments: false

(223) VeloxResizeBatches
Input [7]: [hash_partition_key#208, web_site_id#194, sum#203, sum#204, isEmpty#205, sum#206, isEmpty#207]
Arguments: 1024, 2147483647, 10485760

(224) ColumnarExchange
Input [7]: [hash_partition_key#208, web_site_id#194, sum#203, sum#204, isEmpty#205, sum#206, isEmpty#207]
Arguments: hashpartitioning(web_site_id#194, 1), ENSURE_REQUIREMENTS, [web_site_id#194, sum#203, sum#204, isEmpty#205, sum#206, isEmpty#207], [plan_id=19], [shuffle_writer_type=hash]

(225) InputAdapter
Input [6]: [web_site_id#194, sum#203, sum#204, isEmpty#205, sum#206, isEmpty#207]

(226) InputIteratorTransformer
Input [6]: [web_site_id#194, sum#203, sum#204, isEmpty#205, sum#206, isEmpty#207]

(227) RegularHashAggregateExecTransformer
Input [6]: [web_site_id#194, sum#203, sum#204, isEmpty#205, sum#206, isEmpty#207]
Keys [1]: [web_site_id#194]
Functions [3]: [sum(UnscaledValue(ws_ext_sales_price#182)), sum(coalesce(cast(wr_return_amt#188 as decimal(12,2)), 0.00)), sum((ws_net_profit#183 - coalesce(cast(wr_net_loss#189 as decimal(12,2)), 0.00)))]
Aggregate Attributes [3]: [sum(UnscaledValue(ws_ext_sales_price#182))#121, sum(coalesce(cast(wr_return_amt#188 as decimal(12,2)), 0.00))#122, sum((ws_net_profit#183 - coalesce(cast(wr_net_loss#189 as decimal(12,2)), 0.00)))#123]
Results [4]: [web_site_id#194, sum(UnscaledValue(ws_ext_sales_price#182))#121, sum(coalesce(cast(wr_return_amt#188 as decimal(12,2)), 0.00))#122, sum((ws_net_profit#183 - coalesce(cast(wr_net_loss#189 as decimal(12,2)), 0.00)))#123]

(228) ProjectExecTransformer
Output [5]: [web channel AS channel#209, concat(web_site, web_site_id#194) AS id#210, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#182))#121,17,2) AS sales#211, sum(coalesce(cast(wr_return_amt#188 as decimal(12,2)), 0.00))#122 AS returns#212, sum((ws_net_profit#183 - coalesce(cast(wr_net_loss#189 as decimal(12,2)), 0.00)))#123 AS profit#213]
Input [4]: [web_site_id#194, sum(UnscaledValue(ws_ext_sales_price#182))#121, sum(coalesce(cast(wr_return_amt#188 as decimal(12,2)), 0.00))#122, sum((ws_net_profit#183 - coalesce(cast(wr_net_loss#189 as decimal(12,2)), 0.00)))#123]

(229) WholeStageCodegenTransformer (76)
Input [5]: [channel#209, id#210, sales#211, returns#212, profit#213]
Arguments: false

(230) ColumnarUnion
Arguments: UnknownPartitioning(0)

(231) InputAdapter
Input [5]: [channel#158, id#159, sales#160, returns#161, profit#162]

(232) InputIteratorTransformer
Input [5]: [channel#158, id#159, sales#160, returns#161, profit#162]

(233) FlushableHashAggregateExecTransformer
Input [5]: [channel#158, id#159, sales#160, returns#161, profit#162]
Keys [2]: [channel#158, id#159]
Functions [3]: [partial_sum(sales#160), partial_sum(returns#161), partial_sum(profit#162)]
Aggregate Attributes [6]: [sum#214, isEmpty#215, sum#216, isEmpty#217, sum#218, isEmpty#219]
Results [8]: [channel#158, id#159, sum#220, isEmpty#221, sum#222, isEmpty#223, sum#224, isEmpty#225]

(234) ProjectExecTransformer
Output [9]: [hash(channel#158, id#159, 42) AS hash_partition_key#226, channel#158, id#159, sum#220, isEmpty#221, sum#222, isEmpty#223, sum#224, isEmpty#225]
Input [8]: [channel#158, id#159, sum#220, isEmpty#221, sum#222, isEmpty#223, sum#224, isEmpty#225]

(235) WholeStageCodegenTransformer (77)
Input [9]: [hash_partition_key#226, channel#158, id#159, sum#220, isEmpty#221, sum#222, isEmpty#223, sum#224, isEmpty#225]
Arguments: false

(236) VeloxResizeBatches
Input [9]: [hash_partition_key#226, channel#158, id#159, sum#220, isEmpty#221, sum#222, isEmpty#223, sum#224, isEmpty#225]
Arguments: 1024, 2147483647, 10485760

(237) ColumnarExchange
Input [9]: [hash_partition_key#226, channel#158, id#159, sum#220, isEmpty#221, sum#222, isEmpty#223, sum#224, isEmpty#225]
Arguments: hashpartitioning(channel#158, id#159, 1), ENSURE_REQUIREMENTS, [channel#158, id#159, sum#220, isEmpty#221, sum#222, isEmpty#223, sum#224, isEmpty#225], [plan_id=20], [shuffle_writer_type=hash]

(238) InputAdapter
Input [8]: [channel#158, id#159, sum#220, isEmpty#221, sum#222, isEmpty#223, sum#224, isEmpty#225]

(239) InputIteratorTransformer
Input [8]: [channel#158, id#159, sum#220, isEmpty#221, sum#222, isEmpty#223, sum#224, isEmpty#225]

(240) RegularHashAggregateExecTransformer
Input [8]: [channel#158, id#159, sum#220, isEmpty#221, sum#222, isEmpty#223, sum#224, isEmpty#225]
Keys [2]: [channel#158, id#159]
Functions [3]: [sum(sales#160), sum(returns#161), sum(profit#162)]
Aggregate Attributes [3]: [sum(sales#160)#142, sum(returns#161)#143, sum(profit#162)#144]
Results [5]: [channel#158, id#159, sum(sales#160)#142, sum(returns#161)#143, sum(profit#162)#144]

(241) ProjectExecTransformer
Output [4]: [channel#158, sum(sales#160)#142 AS sales#227, sum(returns#161)#143 AS returns#228, sum(profit#162)#144 AS profit#229]
Input [5]: [channel#158, id#159, sum(sales#160)#142, sum(returns#161)#143, sum(profit#162)#144]

(242) FlushableHashAggregateExecTransformer
Input [4]: [channel#158, sales#227, returns#228, profit#229]
Keys [1]: [channel#158]
Functions [3]: [partial_sum(sales#227), partial_sum(returns#228), partial_sum(profit#229)]
Aggregate Attributes [6]: [sum#230, isEmpty#231, sum#232, isEmpty#233, sum#234, isEmpty#235]
Results [7]: [channel#158, sum#236, isEmpty#237, sum#238, isEmpty#239, sum#240, isEmpty#241]

(243) ProjectExecTransformer
Output [8]: [hash(channel#158, 42) AS hash_partition_key#242, channel#158, sum#236, isEmpty#237, sum#238, isEmpty#239, sum#240, isEmpty#241]
Input [7]: [channel#158, sum#236, isEmpty#237, sum#238, isEmpty#239, sum#240, isEmpty#241]

(244) WholeStageCodegenTransformer (78)
Input [8]: [hash_partition_key#242, channel#158, sum#236, isEmpty#237, sum#238, isEmpty#239, sum#240, isEmpty#241]
Arguments: false

(245) VeloxResizeBatches
Input [8]: [hash_partition_key#242, channel#158, sum#236, isEmpty#237, sum#238, isEmpty#239, sum#240, isEmpty#241]
Arguments: 1024, 2147483647, 10485760

(246) ColumnarExchange
Input [8]: [hash_partition_key#242, channel#158, sum#236, isEmpty#237, sum#238, isEmpty#239, sum#240, isEmpty#241]
Arguments: hashpartitioning(channel#158, 1), ENSURE_REQUIREMENTS, [channel#158, sum#236, isEmpty#237, sum#238, isEmpty#239, sum#240, isEmpty#241], [plan_id=21], [shuffle_writer_type=hash]

(247) InputAdapter
Input [7]: [channel#158, sum#236, isEmpty#237, sum#238, isEmpty#239, sum#240, isEmpty#241]

(248) InputIteratorTransformer
Input [7]: [channel#158, sum#236, isEmpty#237, sum#238, isEmpty#239, sum#240, isEmpty#241]

(249) RegularHashAggregateExecTransformer
Input [7]: [channel#158, sum#236, isEmpty#237, sum#238, isEmpty#239, sum#240, isEmpty#241]
Keys [1]: [channel#158]
Functions [3]: [sum(sales#227), sum(returns#228), sum(profit#229)]
Aggregate Attributes [3]: [sum(sales#227)#243, sum(returns#228)#244, sum(profit#229)#245]
Results [4]: [channel#158, sum(sales#227)#243, sum(returns#228)#244, sum(profit#229)#245]

(250) ProjectExecTransformer
Output [5]: [channel#158, null AS id#246, sum(sales#227)#243 AS sales#247, sum(returns#228)#244 AS returns#248, sum(profit#229)#245 AS profit#249]
Input [4]: [channel#158, sum(sales#227)#243, sum(returns#228)#244, sum(profit#229)#245]

(251) WholeStageCodegenTransformer (79)
Input [5]: [channel#158, id#246, sales#247, returns#248, profit#249]
Arguments: false

(252) FileSourceScanExecTransformer parquet spark_catalog.default.store_sales
Output [7]: [ss_item_sk#250, ss_store_sk#251, ss_promo_sk#252, ss_ticket_number#253, ss_ext_sales_price#254, ss_net_profit#255, ss_sold_date_sk#256]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(ss_sold_date_sk#256), dynamicpruningexpression(ss_sold_date_sk#256 IN dynamicpruning#8)]
PushedFilters: [IsNotNull(ss_store_sk), IsNotNull(ss_item_sk), IsNotNull(ss_promo_sk)]
ReadSchema: struct<ss_item_sk:int,ss_store_sk:int,ss_promo_sk:int,ss_ticket_number:int,ss_ext_sales_price:decimal(7,2),ss_net_profit:decimal(7,2)>

(253) FilterExecTransformer
Input [7]: [ss_item_sk#250, ss_store_sk#251, ss_promo_sk#252, ss_ticket_number#253, ss_ext_sales_price#254, ss_net_profit#255, ss_sold_date_sk#256]
Arguments: ((isnotnull(ss_store_sk#251) AND isnotnull(ss_item_sk#250)) AND isnotnull(ss_promo_sk#252))

(254) ProjectExecTransformer
Output [8]: [hash(ss_item_sk#250, ss_ticket_number#253, 42) AS hash_partition_key#257, ss_item_sk#250, ss_store_sk#251, ss_promo_sk#252, ss_ticket_number#253, ss_ext_sales_price#254, ss_net_profit#255, ss_sold_date_sk#256]
Input [7]: [ss_item_sk#250, ss_store_sk#251, ss_promo_sk#252, ss_ticket_number#253, ss_ext_sales_price#254, ss_net_profit#255, ss_sold_date_sk#256]

(255) WholeStageCodegenTransformer (81)
Input [8]: [hash_partition_key#257, ss_item_sk#250, ss_store_sk#251, ss_promo_sk#252, ss_ticket_number#253, ss_ext_sales_price#254, ss_net_profit#255, ss_sold_date_sk#256]
Arguments: false

(256) VeloxResizeBatches
Input [8]: [hash_partition_key#257, ss_item_sk#250, ss_store_sk#251, ss_promo_sk#252, ss_ticket_number#253, ss_ext_sales_price#254, ss_net_profit#255, ss_sold_date_sk#256]
Arguments: 1024, 2147483647, 10485760

(257) ColumnarExchange
Input [8]: [hash_partition_key#257, ss_item_sk#250, ss_store_sk#251, ss_promo_sk#252, ss_ticket_number#253, ss_ext_sales_price#254, ss_net_profit#255, ss_sold_date_sk#256]
Arguments: hashpartitioning(ss_item_sk#250, ss_ticket_number#253, 1), ENSURE_REQUIREMENTS, [ss_item_sk#250, ss_store_sk#251, ss_promo_sk#252, ss_ticket_number#253, ss_ext_sales_price#254, ss_net_profit#255, ss_sold_date_sk#256], [plan_id=22], [shuffle_writer_type=hash]

(258) InputAdapter
Input [7]: [ss_item_sk#250, ss_store_sk#251, ss_promo_sk#252, ss_ticket_number#253, ss_ext_sales_price#254, ss_net_profit#255, ss_sold_date_sk#256]

(259) InputIteratorTransformer
Input [7]: [ss_item_sk#250, ss_store_sk#251, ss_promo_sk#252, ss_ticket_number#253, ss_ext_sales_price#254, ss_net_profit#255, ss_sold_date_sk#256]

(260) ReusedExchange [Reuses operator id: 14]
Output [4]: [sr_item_sk#258, sr_ticket_number#259, sr_return_amt#260, sr_net_loss#261]

(261) InputAdapter
Input [4]: [sr_item_sk#258, sr_ticket_number#259, sr_return_amt#260, sr_net_loss#261]

(262) InputIteratorTransformer
Input [4]: [sr_item_sk#258, sr_ticket_number#259, sr_return_amt#260, sr_net_loss#261]

(263) ShuffledHashJoinExecTransformer
Left keys [2]: [ss_item_sk#250, ss_ticket_number#253]
Right keys [2]: [sr_item_sk#258, sr_ticket_number#259]
Join type: LeftOuter
Join condition: None

(264) ProjectExecTransformer
Output [8]: [ss_item_sk#250, ss_store_sk#251, ss_promo_sk#252, ss_ext_sales_price#254, ss_net_profit#255, ss_sold_date_sk#256, sr_return_amt#260, sr_net_loss#261]
Input [11]: [ss_item_sk#250, ss_store_sk#251, ss_promo_sk#252, ss_ticket_number#253, ss_ext_sales_price#254, ss_net_profit#255, ss_sold_date_sk#256, sr_item_sk#258, sr_ticket_number#259, sr_return_amt#260, sr_net_loss#261]

(265) ReusedExchange [Reuses operator id: 23]
Output [1]: [i_item_sk#262]

(266) InputAdapter
Input [1]: [i_item_sk#262]

(267) InputIteratorTransformer
Input [1]: [i_item_sk#262]

(268) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_item_sk#250]
Right keys [1]: [i_item_sk#262]
Join type: Inner
Join condition: None

(269) ProjectExecTransformer
Output [7]: [ss_store_sk#251, ss_promo_sk#252, ss_ext_sales_price#254, ss_net_profit#255, ss_sold_date_sk#256, sr_return_amt#260, sr_net_loss#261]
Input [9]: [ss_item_sk#250, ss_store_sk#251, ss_promo_sk#252, ss_ext_sales_price#254, ss_net_profit#255, ss_sold_date_sk#256, sr_return_amt#260, sr_net_loss#261, i_item_sk#262]

(270) ReusedExchange [Reuses operator id: 32]
Output [1]: [p_promo_sk#263]

(271) InputAdapter
Input [1]: [p_promo_sk#263]

(272) InputIteratorTransformer
Input [1]: [p_promo_sk#263]

(273) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_promo_sk#252]
Right keys [1]: [p_promo_sk#263]
Join type: Inner
Join condition: None

(274) ProjectExecTransformer
Output [6]: [ss_store_sk#251, ss_ext_sales_price#254, ss_net_profit#255, ss_sold_date_sk#256, sr_return_amt#260, sr_net_loss#261]
Input [8]: [ss_store_sk#251, ss_promo_sk#252, ss_ext_sales_price#254, ss_net_profit#255, ss_sold_date_sk#256, sr_return_amt#260, sr_net_loss#261, p_promo_sk#263]

(275) ReusedExchange [Reuses operator id: 401]
Output [1]: [d_date_sk#264]

(276) InputAdapter
Input [1]: [d_date_sk#264]

(277) InputIteratorTransformer
Input [1]: [d_date_sk#264]

(278) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_sold_date_sk#256]
Right keys [1]: [d_date_sk#264]
Join type: Inner
Join condition: None

(279) ProjectExecTransformer
Output [5]: [ss_store_sk#251, ss_ext_sales_price#254, ss_net_profit#255, sr_return_amt#260, sr_net_loss#261]
Input [7]: [ss_store_sk#251, ss_ext_sales_price#254, ss_net_profit#255, ss_sold_date_sk#256, sr_return_amt#260, sr_net_loss#261, d_date_sk#264]

(280) ReusedExchange [Reuses operator id: 45]
Output [2]: [s_store_sk#265, s_store_id#266]

(281) InputAdapter
Input [2]: [s_store_sk#265, s_store_id#266]

(282) InputIteratorTransformer
Input [2]: [s_store_sk#265, s_store_id#266]

(283) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_store_sk#251]
Right keys [1]: [s_store_sk#265]
Join type: Inner
Join condition: None

(284) ProjectExecTransformer
Output [4]: [s_store_id#266, UnscaledValue(ss_ext_sales_price#254) AS _pre_13#267, coalesce(cast(sr_return_amt#260 as decimal(12,2)), 0.00) AS _pre_14#268, (ss_net_profit#255 - coalesce(cast(sr_net_loss#261 as decimal(12,2)), 0.00)) AS _pre_15#269]
Input [7]: [ss_store_sk#251, ss_ext_sales_price#254, ss_net_profit#255, sr_return_amt#260, sr_net_loss#261, s_store_sk#265, s_store_id#266]

(285) FlushableHashAggregateExecTransformer
Input [4]: [s_store_id#266, _pre_13#267, _pre_14#268, _pre_15#269]
Keys [1]: [s_store_id#266]
Functions [3]: [partial_sum(_pre_13#267), partial_sum(_pre_14#268), partial_sum(_pre_15#269)]
Aggregate Attributes [5]: [sum#270, sum#271, isEmpty#272, sum#273, isEmpty#274]
Results [6]: [s_store_id#266, sum#275, sum#276, isEmpty#277, sum#278, isEmpty#279]

(286) ProjectExecTransformer
Output [7]: [hash(s_store_id#266, 42) AS hash_partition_key#280, s_store_id#266, sum#275, sum#276, isEmpty#277, sum#278, isEmpty#279]
Input [6]: [s_store_id#266, sum#275, sum#276, isEmpty#277, sum#278, isEmpty#279]

(287) WholeStageCodegenTransformer (87)
Input [7]: [hash_partition_key#280, s_store_id#266, sum#275, sum#276, isEmpty#277, sum#278, isEmpty#279]
Arguments: false

(288) VeloxResizeBatches
Input [7]: [hash_partition_key#280, s_store_id#266, sum#275, sum#276, isEmpty#277, sum#278, isEmpty#279]
Arguments: 1024, 2147483647, 10485760

(289) ColumnarExchange
Input [7]: [hash_partition_key#280, s_store_id#266, sum#275, sum#276, isEmpty#277, sum#278, isEmpty#279]
Arguments: hashpartitioning(s_store_id#266, 1), ENSURE_REQUIREMENTS, [s_store_id#266, sum#275, sum#276, isEmpty#277, sum#278, isEmpty#279], [plan_id=23], [shuffle_writer_type=hash]

(290) InputAdapter
Input [6]: [s_store_id#266, sum#275, sum#276, isEmpty#277, sum#278, isEmpty#279]

(291) InputIteratorTransformer
Input [6]: [s_store_id#266, sum#275, sum#276, isEmpty#277, sum#278, isEmpty#279]

(292) RegularHashAggregateExecTransformer
Input [6]: [s_store_id#266, sum#275, sum#276, isEmpty#277, sum#278, isEmpty#279]
Keys [1]: [s_store_id#266]
Functions [3]: [sum(UnscaledValue(ss_ext_sales_price#254)), sum(coalesce(cast(sr_return_amt#260 as decimal(12,2)), 0.00)), sum((ss_net_profit#255 - coalesce(cast(sr_net_loss#261 as decimal(12,2)), 0.00)))]
Aggregate Attributes [3]: [sum(UnscaledValue(ss_ext_sales_price#254))#39, sum(coalesce(cast(sr_return_amt#260 as decimal(12,2)), 0.00))#40, sum((ss_net_profit#255 - coalesce(cast(sr_net_loss#261 as decimal(12,2)), 0.00)))#41]
Results [4]: [s_store_id#266, sum(UnscaledValue(ss_ext_sales_price#254))#39, sum(coalesce(cast(sr_return_amt#260 as decimal(12,2)), 0.00))#40, sum((ss_net_profit#255 - coalesce(cast(sr_net_loss#261 as decimal(12,2)), 0.00)))#41]

(293) ProjectExecTransformer
Output [5]: [store channel AS channel#281, concat(store, s_store_id#266) AS id#282, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#254))#39,17,2) AS sales#283, sum(coalesce(cast(sr_return_amt#260 as decimal(12,2)), 0.00))#40 AS returns#284, sum((ss_net_profit#255 - coalesce(cast(sr_net_loss#261 as decimal(12,2)), 0.00)))#41 AS profit#285]
Input [4]: [s_store_id#266, sum(UnscaledValue(ss_ext_sales_price#254))#39, sum(coalesce(cast(sr_return_amt#260 as decimal(12,2)), 0.00))#40, sum((ss_net_profit#255 - coalesce(cast(sr_net_loss#261 as decimal(12,2)), 0.00)))#41]

(294) WholeStageCodegenTransformer (88)
Input [5]: [channel#281, id#282, sales#283, returns#284, profit#285]
Arguments: false

(295) FileSourceScanExecTransformer parquet spark_catalog.default.catalog_sales
Output [7]: [cs_catalog_page_sk#286, cs_item_sk#287, cs_promo_sk#288, cs_order_number#289, cs_ext_sales_price#290, cs_net_profit#291, cs_sold_date_sk#292]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(cs_sold_date_sk#292), dynamicpruningexpression(cs_sold_date_sk#292 IN dynamicpruning#8)]
PushedFilters: [IsNotNull(cs_catalog_page_sk), IsNotNull(cs_item_sk), IsNotNull(cs_promo_sk)]
ReadSchema: struct<cs_catalog_page_sk:int,cs_item_sk:int,cs_promo_sk:int,cs_order_number:int,cs_ext_sales_price:decimal(7,2),cs_net_profit:decimal(7,2)>

(296) FilterExecTransformer
Input [7]: [cs_catalog_page_sk#286, cs_item_sk#287, cs_promo_sk#288, cs_order_number#289, cs_ext_sales_price#290, cs_net_profit#291, cs_sold_date_sk#292]
Arguments: ((isnotnull(cs_catalog_page_sk#286) AND isnotnull(cs_item_sk#287)) AND isnotnull(cs_promo_sk#288))

(297) ProjectExecTransformer
Output [8]: [hash(cs_item_sk#287, cs_order_number#289, 42) AS hash_partition_key#293, cs_catalog_page_sk#286, cs_item_sk#287, cs_promo_sk#288, cs_order_number#289, cs_ext_sales_price#290, cs_net_profit#291, cs_sold_date_sk#292]
Input [7]: [cs_catalog_page_sk#286, cs_item_sk#287, cs_promo_sk#288, cs_order_number#289, cs_ext_sales_price#290, cs_net_profit#291, cs_sold_date_sk#292]

(298) WholeStageCodegenTransformer (90)
Input [8]: [hash_partition_key#293, cs_catalog_page_sk#286, cs_item_sk#287, cs_promo_sk#288, cs_order_number#289, cs_ext_sales_price#290, cs_net_profit#291, cs_sold_date_sk#292]
Arguments: false

(299) VeloxResizeBatches
Input [8]: [hash_partition_key#293, cs_catalog_page_sk#286, cs_item_sk#287, cs_promo_sk#288, cs_order_number#289, cs_ext_sales_price#290, cs_net_profit#291, cs_sold_date_sk#292]
Arguments: 1024, 2147483647, 10485760

(300) ColumnarExchange
Input [8]: [hash_partition_key#293, cs_catalog_page_sk#286, cs_item_sk#287, cs_promo_sk#288, cs_order_number#289, cs_ext_sales_price#290, cs_net_profit#291, cs_sold_date_sk#292]
Arguments: hashpartitioning(cs_item_sk#287, cs_order_number#289, 1), ENSURE_REQUIREMENTS, [cs_catalog_page_sk#286, cs_item_sk#287, cs_promo_sk#288, cs_order_number#289, cs_ext_sales_price#290, cs_net_profit#291, cs_sold_date_sk#292], [plan_id=24], [shuffle_writer_type=hash]

(301) InputAdapter
Input [7]: [cs_catalog_page_sk#286, cs_item_sk#287, cs_promo_sk#288, cs_order_number#289, cs_ext_sales_price#290, cs_net_profit#291, cs_sold_date_sk#292]

(302) InputIteratorTransformer
Input [7]: [cs_catalog_page_sk#286, cs_item_sk#287, cs_promo_sk#288, cs_order_number#289, cs_ext_sales_price#290, cs_net_profit#291, cs_sold_date_sk#292]

(303) ReusedExchange [Reuses operator id: 73]
Output [4]: [cr_item_sk#294, cr_order_number#295, cr_return_amount#296, cr_net_loss#297]

(304) InputAdapter
Input [4]: [cr_item_sk#294, cr_order_number#295, cr_return_amount#296, cr_net_loss#297]

(305) InputIteratorTransformer
Input [4]: [cr_item_sk#294, cr_order_number#295, cr_return_amount#296, cr_net_loss#297]

(306) ShuffledHashJoinExecTransformer
Left keys [2]: [cs_item_sk#287, cs_order_number#289]
Right keys [2]: [cr_item_sk#294, cr_order_number#295]
Join type: LeftOuter
Join condition: None

(307) ProjectExecTransformer
Output [8]: [cs_catalog_page_sk#286, cs_item_sk#287, cs_promo_sk#288, cs_ext_sales_price#290, cs_net_profit#291, cs_sold_date_sk#292, cr_return_amount#296, cr_net_loss#297]
Input [11]: [cs_catalog_page_sk#286, cs_item_sk#287, cs_promo_sk#288, cs_order_number#289, cs_ext_sales_price#290, cs_net_profit#291, cs_sold_date_sk#292, cr_item_sk#294, cr_order_number#295, cr_return_amount#296, cr_net_loss#297]

(308) ReusedExchange [Reuses operator id: 23]
Output [1]: [i_item_sk#298]

(309) InputAdapter
Input [1]: [i_item_sk#298]

(310) InputIteratorTransformer
Input [1]: [i_item_sk#298]

(311) BroadcastHashJoinExecTransformer
Left keys [1]: [cs_item_sk#287]
Right keys [1]: [i_item_sk#298]
Join type: Inner
Join condition: None

(312) ProjectExecTransformer
Output [7]: [cs_catalog_page_sk#286, cs_promo_sk#288, cs_ext_sales_price#290, cs_net_profit#291, cs_sold_date_sk#292, cr_return_amount#296, cr_net_loss#297]
Input [9]: [cs_catalog_page_sk#286, cs_item_sk#287, cs_promo_sk#288, cs_ext_sales_price#290, cs_net_profit#291, cs_sold_date_sk#292, cr_return_amount#296, cr_net_loss#297, i_item_sk#298]

(313) ReusedExchange [Reuses operator id: 32]
Output [1]: [p_promo_sk#299]

(314) InputAdapter
Input [1]: [p_promo_sk#299]

(315) InputIteratorTransformer
Input [1]: [p_promo_sk#299]

(316) BroadcastHashJoinExecTransformer
Left keys [1]: [cs_promo_sk#288]
Right keys [1]: [p_promo_sk#299]
Join type: Inner
Join condition: None

(317) ProjectExecTransformer
Output [6]: [cs_catalog_page_sk#286, cs_ext_sales_price#290, cs_net_profit#291, cs_sold_date_sk#292, cr_return_amount#296, cr_net_loss#297]
Input [8]: [cs_catalog_page_sk#286, cs_promo_sk#288, cs_ext_sales_price#290, cs_net_profit#291, cs_sold_date_sk#292, cr_return_amount#296, cr_net_loss#297, p_promo_sk#299]

(318) ReusedExchange [Reuses operator id: 401]
Output [1]: [d_date_sk#300]

(319) InputAdapter
Input [1]: [d_date_sk#300]

(320) InputIteratorTransformer
Input [1]: [d_date_sk#300]

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

(322) ProjectExecTransformer
Output [5]: [cs_catalog_page_sk#286, cs_ext_sales_price#290, cs_net_profit#291, cr_return_amount#296, cr_net_loss#297]
Input [7]: [cs_catalog_page_sk#286, cs_ext_sales_price#290, cs_net_profit#291, cs_sold_date_sk#292, cr_return_amount#296, cr_net_loss#297, d_date_sk#300]

(323) ReusedExchange [Reuses operator id: 96]
Output [2]: [cp_catalog_page_sk#301, cp_catalog_page_id#302]

(324) InputAdapter
Input [2]: [cp_catalog_page_sk#301, cp_catalog_page_id#302]

(325) InputIteratorTransformer
Input [2]: [cp_catalog_page_sk#301, cp_catalog_page_id#302]

(326) BroadcastHashJoinExecTransformer
Left keys [1]: [cs_catalog_page_sk#286]
Right keys [1]: [cp_catalog_page_sk#301]
Join type: Inner
Join condition: None

(327) ProjectExecTransformer
Output [4]: [cp_catalog_page_id#302, UnscaledValue(cs_ext_sales_price#290) AS _pre_16#303, coalesce(cast(cr_return_amount#296 as decimal(12,2)), 0.00) AS _pre_17#304, (cs_net_profit#291 - coalesce(cast(cr_net_loss#297 as decimal(12,2)), 0.00)) AS _pre_18#305]
Input [7]: [cs_catalog_page_sk#286, cs_ext_sales_price#290, cs_net_profit#291, cr_return_amount#296, cr_net_loss#297, cp_catalog_page_sk#301, cp_catalog_page_id#302]

(328) FlushableHashAggregateExecTransformer
Input [4]: [cp_catalog_page_id#302, _pre_16#303, _pre_17#304, _pre_18#305]
Keys [1]: [cp_catalog_page_id#302]
Functions [3]: [partial_sum(_pre_16#303), partial_sum(_pre_17#304), partial_sum(_pre_18#305)]
Aggregate Attributes [5]: [sum#306, sum#307, isEmpty#308, sum#309, isEmpty#310]
Results [6]: [cp_catalog_page_id#302, sum#311, sum#312, isEmpty#313, sum#314, isEmpty#315]

(329) ProjectExecTransformer
Output [7]: [hash(cp_catalog_page_id#302, 42) AS hash_partition_key#316, cp_catalog_page_id#302, sum#311, sum#312, isEmpty#313, sum#314, isEmpty#315]
Input [6]: [cp_catalog_page_id#302, sum#311, sum#312, isEmpty#313, sum#314, isEmpty#315]

(330) WholeStageCodegenTransformer (96)
Input [7]: [hash_partition_key#316, cp_catalog_page_id#302, sum#311, sum#312, isEmpty#313, sum#314, isEmpty#315]
Arguments: false

(331) VeloxResizeBatches
Input [7]: [hash_partition_key#316, cp_catalog_page_id#302, sum#311, sum#312, isEmpty#313, sum#314, isEmpty#315]
Arguments: 1024, 2147483647, 10485760

(332) ColumnarExchange
Input [7]: [hash_partition_key#316, cp_catalog_page_id#302, sum#311, sum#312, isEmpty#313, sum#314, isEmpty#315]
Arguments: hashpartitioning(cp_catalog_page_id#302, 1), ENSURE_REQUIREMENTS, [cp_catalog_page_id#302, sum#311, sum#312, isEmpty#313, sum#314, isEmpty#315], [plan_id=25], [shuffle_writer_type=hash]

(333) InputAdapter
Input [6]: [cp_catalog_page_id#302, sum#311, sum#312, isEmpty#313, sum#314, isEmpty#315]

(334) InputIteratorTransformer
Input [6]: [cp_catalog_page_id#302, sum#311, sum#312, isEmpty#313, sum#314, isEmpty#315]

(335) RegularHashAggregateExecTransformer
Input [6]: [cp_catalog_page_id#302, sum#311, sum#312, isEmpty#313, sum#314, isEmpty#315]
Keys [1]: [cp_catalog_page_id#302]
Functions [3]: [sum(UnscaledValue(cs_ext_sales_price#290)), sum(coalesce(cast(cr_return_amount#296 as decimal(12,2)), 0.00)), sum((cs_net_profit#291 - coalesce(cast(cr_net_loss#297 as decimal(12,2)), 0.00)))]
Aggregate Attributes [3]: [sum(UnscaledValue(cs_ext_sales_price#290))#80, sum(coalesce(cast(cr_return_amount#296 as decimal(12,2)), 0.00))#81, sum((cs_net_profit#291 - coalesce(cast(cr_net_loss#297 as decimal(12,2)), 0.00)))#82]
Results [4]: [cp_catalog_page_id#302, sum(UnscaledValue(cs_ext_sales_price#290))#80, sum(coalesce(cast(cr_return_amount#296 as decimal(12,2)), 0.00))#81, sum((cs_net_profit#291 - coalesce(cast(cr_net_loss#297 as decimal(12,2)), 0.00)))#82]

(336) ProjectExecTransformer
Output [5]: [catalog channel AS channel#317, concat(catalog_page, cp_catalog_page_id#302) AS id#318, MakeDecimal(sum(UnscaledValue(cs_ext_sales_price#290))#80,17,2) AS sales#319, sum(coalesce(cast(cr_return_amount#296 as decimal(12,2)), 0.00))#81 AS returns#320, sum((cs_net_profit#291 - coalesce(cast(cr_net_loss#297 as decimal(12,2)), 0.00)))#82 AS profit#321]
Input [4]: [cp_catalog_page_id#302, sum(UnscaledValue(cs_ext_sales_price#290))#80, sum(coalesce(cast(cr_return_amount#296 as decimal(12,2)), 0.00))#81, sum((cs_net_profit#291 - coalesce(cast(cr_net_loss#297 as decimal(12,2)), 0.00)))#82]

(337) WholeStageCodegenTransformer (97)
Input [5]: [channel#317, id#318, sales#319, returns#320, profit#321]
Arguments: false

(338) ReusedExchange [Reuses operator id: 224]
Output [6]: [web_site_id#322, sum#323, sum#324, isEmpty#325, sum#326, isEmpty#327]

(339) InputAdapter
Input [6]: [web_site_id#322, sum#323, sum#324, isEmpty#325, sum#326, isEmpty#327]

(340) InputIteratorTransformer
Input [6]: [web_site_id#322, sum#323, sum#324, isEmpty#325, sum#326, isEmpty#327]

(341) RegularHashAggregateExecTransformer
Input [6]: [web_site_id#322, sum#323, sum#324, isEmpty#325, sum#326, isEmpty#327]
Keys [1]: [web_site_id#322]
Functions [3]: [sum(UnscaledValue(ws_ext_sales_price#328)), sum(coalesce(cast(wr_return_amt#329 as decimal(12,2)), 0.00)), sum((ws_net_profit#330 - coalesce(cast(wr_net_loss#331 as decimal(12,2)), 0.00)))]
Aggregate Attributes [3]: [sum(UnscaledValue(ws_ext_sales_price#328))#121, sum(coalesce(cast(wr_return_amt#329 as decimal(12,2)), 0.00))#122, sum((ws_net_profit#330 - coalesce(cast(wr_net_loss#331 as decimal(12,2)), 0.00)))#123]
Results [4]: [web_site_id#322, sum(UnscaledValue(ws_ext_sales_price#328))#121, sum(coalesce(cast(wr_return_amt#329 as decimal(12,2)), 0.00))#122, sum((ws_net_profit#330 - coalesce(cast(wr_net_loss#331 as decimal(12,2)), 0.00)))#123]

(342) ProjectExecTransformer
Output [5]: [web channel AS channel#332, concat(web_site, web_site_id#322) AS id#333, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#328))#121,17,2) AS sales#334, sum(coalesce(cast(wr_return_amt#329 as decimal(12,2)), 0.00))#122 AS returns#335, sum((ws_net_profit#330 - coalesce(cast(wr_net_loss#331 as decimal(12,2)), 0.00)))#123 AS profit#336]
Input [4]: [web_site_id#322, sum(UnscaledValue(ws_ext_sales_price#328))#121, sum(coalesce(cast(wr_return_amt#329 as decimal(12,2)), 0.00))#122, sum((ws_net_profit#330 - coalesce(cast(wr_net_loss#331 as decimal(12,2)), 0.00)))#123]

(343) WholeStageCodegenTransformer (106)
Input [5]: [channel#332, id#333, sales#334, returns#335, profit#336]
Arguments: false

(344) ColumnarUnion
Arguments: UnknownPartitioning(0)

(345) InputAdapter
Input [5]: [channel#281, id#282, sales#283, returns#284, profit#285]

(346) InputIteratorTransformer
Input [5]: [channel#281, id#282, sales#283, returns#284, profit#285]

(347) FlushableHashAggregateExecTransformer
Input [5]: [channel#281, id#282, sales#283, returns#284, profit#285]
Keys [2]: [channel#281, id#282]
Functions [3]: [partial_sum(sales#283), partial_sum(returns#284), partial_sum(profit#285)]
Aggregate Attributes [6]: [sum#337, isEmpty#338, sum#339, isEmpty#340, sum#341, isEmpty#342]
Results [8]: [channel#281, id#282, sum#343, isEmpty#344, sum#345, isEmpty#346, sum#347, isEmpty#348]

(348) ProjectExecTransformer
Output [9]: [hash(channel#281, id#282, 42) AS hash_partition_key#349, channel#281, id#282, sum#343, isEmpty#344, sum#345, isEmpty#346, sum#347, isEmpty#348]
Input [8]: [channel#281, id#282, sum#343, isEmpty#344, sum#345, isEmpty#346, sum#347, isEmpty#348]

(349) WholeStageCodegenTransformer (107)
Input [9]: [hash_partition_key#349, channel#281, id#282, sum#343, isEmpty#344, sum#345, isEmpty#346, sum#347, isEmpty#348]
Arguments: false

(350) VeloxResizeBatches
Input [9]: [hash_partition_key#349, channel#281, id#282, sum#343, isEmpty#344, sum#345, isEmpty#346, sum#347, isEmpty#348]
Arguments: 1024, 2147483647, 10485760

(351) ColumnarExchange
Input [9]: [hash_partition_key#349, channel#281, id#282, sum#343, isEmpty#344, sum#345, isEmpty#346, sum#347, isEmpty#348]
Arguments: hashpartitioning(channel#281, id#282, 1), ENSURE_REQUIREMENTS, [channel#281, id#282, sum#343, isEmpty#344, sum#345, isEmpty#346, sum#347, isEmpty#348], [plan_id=26], [shuffle_writer_type=hash]

(352) InputAdapter
Input [8]: [channel#281, id#282, sum#343, isEmpty#344, sum#345, isEmpty#346, sum#347, isEmpty#348]

(353) InputIteratorTransformer
Input [8]: [channel#281, id#282, sum#343, isEmpty#344, sum#345, isEmpty#346, sum#347, isEmpty#348]

(354) RegularHashAggregateExecTransformer
Input [8]: [channel#281, id#282, sum#343, isEmpty#344, sum#345, isEmpty#346, sum#347, isEmpty#348]
Keys [2]: [channel#281, id#282]
Functions [3]: [sum(sales#283), sum(returns#284), sum(profit#285)]
Aggregate Attributes [3]: [sum(sales#283)#142, sum(returns#284)#143, sum(profit#285)#144]
Results [5]: [channel#281, id#282, sum(sales#283)#142, sum(returns#284)#143, sum(profit#285)#144]

(355) ProjectExecTransformer
Output [3]: [sum(sales#283)#142 AS sales#350, sum(returns#284)#143 AS returns#351, sum(profit#285)#144 AS profit#352]
Input [5]: [channel#281, id#282, sum(sales#283)#142, sum(returns#284)#143, sum(profit#285)#144]

(356) RegularHashAggregateExecTransformer
Input [3]: [sales#350, returns#351, profit#352]
Keys: []
Functions [3]: [sum(sales#350), sum(returns#351), sum(profit#352)]
Aggregate Attributes [3]: [sum(sales#350)#353, sum(returns#351)#354, sum(profit#352)#355]
Results [3]: [sum(sales#350)#353, sum(returns#351)#354, sum(profit#352)#355]

(357) ProjectExecTransformer
Output [5]: [null AS channel#356, null AS id#357, sum(sales#350)#353 AS sales#358, sum(returns#351)#354 AS returns#359, sum(profit#352)#355 AS profit#360]
Input [3]: [sum(sales#350)#353, sum(returns#351)#354, sum(profit#352)#355]

(358) WholeStageCodegenTransformer (108)
Input [5]: [channel#356, id#357, sales#358, returns#359, profit#360]
Arguments: false

(359) ColumnarUnion
Arguments: UnknownPartitioning(0)

(360) InputAdapter
Input [5]: [channel#42, id#43, sales#145, returns#146, profit#147]

(361) InputIteratorTransformer
Input [5]: [channel#42, id#43, sales#145, returns#146, profit#147]

(362) FlushableHashAggregateExecTransformer
Input [5]: [channel#42, id#43, sales#145, returns#146, profit#147]
Keys [5]: [channel#42, id#43, sales#145, returns#146, profit#147]
Functions: []
Aggregate Attributes: []
Results [5]: [channel#42, id#43, sales#145, returns#146, profit#147]

(363) ProjectExecTransformer
Output [6]: [hash(channel#42, id#43, sales#145, returns#146, profit#147, 42) AS hash_partition_key#361, channel#42, id#43, sales#145, returns#146, profit#147]
Input [5]: [channel#42, id#43, sales#145, returns#146, profit#147]

(364) WholeStageCodegenTransformer (109)
Input [6]: [hash_partition_key#361, channel#42, id#43, sales#145, returns#146, profit#147]
Arguments: false

(365) VeloxResizeBatches
Input [6]: [hash_partition_key#361, channel#42, id#43, sales#145, returns#146, profit#147]
Arguments: 1024, 2147483647, 10485760

(366) ColumnarExchange
Input [6]: [hash_partition_key#361, channel#42, id#43, sales#145, returns#146, profit#147]
Arguments: hashpartitioning(channel#42, id#43, sales#145, returns#146, profit#147, 1), ENSURE_REQUIREMENTS, [channel#42, id#43, sales#145, returns#146, profit#147], [plan_id=27], [shuffle_writer_type=hash]

(367) InputAdapter
Input [5]: [channel#42, id#43, sales#145, returns#146, profit#147]

(368) InputIteratorTransformer
Input [5]: [channel#42, id#43, sales#145, returns#146, profit#147]

(369) RegularHashAggregateExecTransformer
Input [5]: [channel#42, id#43, sales#145, returns#146, profit#147]
Keys [5]: [channel#42, id#43, sales#145, returns#146, profit#147]
Functions: []
Aggregate Attributes: []
Results [5]: [channel#42, id#43, sales#145, returns#146, profit#147]

(370) WholeStageCodegenTransformer (110)
Input [5]: [channel#42, id#43, sales#145, returns#146, profit#147]
Arguments: false

(371) TakeOrderedAndProjectExecTransformer
Input [5]: [channel#42, id#43, sales#145, returns#146, profit#147]
Arguments: 100, [channel#42 ASC NULLS FIRST, id#43 ASC NULLS FIRST], [channel#42, id#43, sales#145, returns#146, profit#147], 0

(372) VeloxColumnarToRow
Input [5]: [channel#42, id#43, sales#145, returns#146, profit#147]

===== Subqueries =====

Subquery:1 Hosting operator id = 2 Hosting Expression = Subquery scalar-subquery#9, [id=#1]
VeloxColumnarToRow (384)
+- ^ RegularHashAggregateExecTransformer (382)
   +- ^ InputIteratorTransformer (381)
      +- ColumnarExchange (379)
         +- VeloxResizeBatches (378)
            +- ^ FlushableHashAggregateExecTransformer (376)
               +- ^ ProjectExecTransformer (375)
                  +- ^ FilterExecTransformer (374)
                     +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.item (373)


(373) FileSourceScanExecTransformer parquet spark_catalog.default.item
Output [2]: [i_item_sk#18, i_current_price#19]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/item]
PushedFilters: [IsNotNull(i_current_price), GreaterThan(i_current_price,50.00), IsNotNull(i_item_sk)]
ReadSchema: struct<i_item_sk:int,i_current_price:decimal(7,2)>

(374) FilterExecTransformer
Input [2]: [i_item_sk#18, i_current_price#19]
Arguments: ((isnotnull(i_current_price#19) AND (i_current_price#19 > 50.00)) AND isnotnull(i_item_sk#18))

(375) ProjectExecTransformer
Output [1]: [xxhash64(i_item_sk#18, 42) AS _pre_19#362]
Input [2]: [i_item_sk#18, i_current_price#19]

(376) FlushableHashAggregateExecTransformer
Input [1]: [_pre_19#362]
Keys: []
Functions [1]: [partial_velox_bloom_filter_agg(_pre_19#362, 101823, 1521109, 0, 0)]
Aggregate Attributes [1]: [buf#363]
Results [1]: [buf#364]

(377) WholeStageCodegenTransformer (1)
Input [1]: [buf#364]
Arguments: false

(378) VeloxResizeBatches
Input [1]: [buf#364]
Arguments: 1024, 2147483647, 10485760

(379) ColumnarExchange
Input [1]: [buf#364]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=28], [shuffle_writer_type=hash]

(380) InputAdapter
Input [1]: [buf#364]

(381) InputIteratorTransformer
Input [1]: [buf#364]

(382) RegularHashAggregateExecTransformer
Input [1]: [buf#364]
Keys: []
Functions [1]: [velox_bloom_filter_agg(xxhash64(i_item_sk#18, 42), 101823, 1521109, 0, 0)]
Aggregate Attributes [1]: [bloom_filter_agg(xxhash64(i_item_sk#18, 42), 101823, 1521109, 0, 0)#365]
Results [1]: [bloom_filter_agg(xxhash64(i_item_sk#18, 42), 101823, 1521109, 0, 0)#365 AS bloomFilter#366]

(383) WholeStageCodegenTransformer (2)
Input [1]: [bloomFilter#366]
Arguments: false

(384) VeloxColumnarToRow
Input [1]: [bloomFilter#366]

Subquery:2 Hosting operator id = 2 Hosting Expression = Subquery scalar-subquery#10, [id=#2]
VeloxColumnarToRow (396)
+- ^ RegularHashAggregateExecTransformer (394)
   +- ^ InputIteratorTransformer (393)
      +- ColumnarExchange (391)
         +- VeloxResizeBatches (390)
            +- ^ FlushableHashAggregateExecTransformer (388)
               +- ^ ProjectExecTransformer (387)
                  +- ^ FilterExecTransformer (386)
                     +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.promotion (385)


(385) FileSourceScanExecTransformer parquet spark_catalog.default.promotion
Output [2]: [p_promo_sk#20, p_channel_tv#21]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/promotion]
PushedFilters: [IsNotNull(p_channel_tv), EqualTo(p_channel_tv,N), IsNotNull(p_promo_sk)]
ReadSchema: struct<p_promo_sk:int,p_channel_tv:string>

(386) FilterExecTransformer
Input [2]: [p_promo_sk#20, p_channel_tv#21]
Arguments: ((isnotnull(p_channel_tv#21) AND (p_channel_tv#21 = N)) AND isnotnull(p_promo_sk#20))

(387) ProjectExecTransformer
Output [1]: [xxhash64(p_promo_sk#20, 42) AS _pre_20#367]
Input [2]: [p_promo_sk#20, p_channel_tv#21]

(388) FlushableHashAggregateExecTransformer
Input [1]: [_pre_20#367]
Keys: []
Functions [1]: [partial_velox_bloom_filter_agg(_pre_20#367, 986, 24246, 0, 0)]
Aggregate Attributes [1]: [buf#368]
Results [1]: [buf#369]

(389) WholeStageCodegenTransformer (3)
Input [1]: [buf#369]
Arguments: false

(390) VeloxResizeBatches
Input [1]: [buf#369]
Arguments: 1024, 2147483647, 10485760

(391) ColumnarExchange
Input [1]: [buf#369]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=29], [shuffle_writer_type=hash]

(392) InputAdapter
Input [1]: [buf#369]

(393) InputIteratorTransformer
Input [1]: [buf#369]

(394) RegularHashAggregateExecTransformer
Input [1]: [buf#369]
Keys: []
Functions [1]: [velox_bloom_filter_agg(xxhash64(p_promo_sk#20, 42), 986, 24246, 0, 0)]
Aggregate Attributes [1]: [bloom_filter_agg(xxhash64(p_promo_sk#20, 42), 986, 24246, 0, 0)#370]
Results [1]: [bloom_filter_agg(xxhash64(p_promo_sk#20, 42), 986, 24246, 0, 0)#370 AS bloomFilter#371]

(395) WholeStageCodegenTransformer (4)
Input [1]: [bloomFilter#371]
Arguments: false

(396) VeloxColumnarToRow
Input [1]: [bloomFilter#371]

Subquery:3 Hosting operator id = 1 Hosting Expression = ss_sold_date_sk#7 IN dynamicpruning#8
ColumnarBroadcastExchange (401)
+- ^ ProjectExecTransformer (399)
   +- ^ FilterExecTransformer (398)
      +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (397)


(397) FileSourceScanExecTransformer parquet spark_catalog.default.date_dim
Output [2]: [d_date_sk#22, d_date#372]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,1998-08-04), LessThanOrEqual(d_date,1998-09-03), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_date:date>

(398) FilterExecTransformer
Input [2]: [d_date_sk#22, d_date#372]
Arguments: (((isnotnull(d_date#372) AND (d_date#372 >= 1998-08-04)) AND (d_date#372 <= 1998-09-03)) AND isnotnull(d_date_sk#22))

(399) ProjectExecTransformer
Output [1]: [d_date_sk#22]
Input [2]: [d_date_sk#22, d_date#372]

(400) WholeStageCodegenTransformer (5)
Input [1]: [d_date_sk#22]
Arguments: false

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

Subquery:4 Hosting operator id = 1 Hosting Expression = Subquery scalar-subquery#9, [id=#1]
VeloxColumnarToRow (384)
+- ^ RegularHashAggregateExecTransformer (382)
   +- ^ InputIteratorTransformer (381)
      +- ColumnarExchange (379)
         +- VeloxResizeBatches (378)
            +- ^ FlushableHashAggregateExecTransformer (376)
               +- ^ ProjectExecTransformer (375)
                  +- ^ FilterExecTransformer (374)
                     +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.item (373)


Subquery:5 Hosting operator id = 1 Hosting Expression = Subquery scalar-subquery#10, [id=#2]
VeloxColumnarToRow (396)
+- ^ RegularHashAggregateExecTransformer (394)
   +- ^ InputIteratorTransformer (393)
      +- ColumnarExchange (391)
         +- VeloxResizeBatches (390)
            +- ^ FlushableHashAggregateExecTransformer (388)
               +- ^ ProjectExecTransformer (387)
                  +- ^ FilterExecTransformer (386)
                     +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.promotion (385)


Subquery:6 Hosting operator id = 61 Hosting Expression = ReusedSubquery Subquery scalar-subquery#9, [id=#1]

Subquery:7 Hosting operator id = 61 Hosting Expression = ReusedSubquery Subquery scalar-subquery#10, [id=#2]

Subquery:8 Hosting operator id = 60 Hosting Expression = cs_sold_date_sk#53 IN dynamicpruning#8

Subquery:9 Hosting operator id = 60 Hosting Expression = ReusedSubquery Subquery scalar-subquery#9, [id=#1]

Subquery:10 Hosting operator id = 60 Hosting Expression = ReusedSubquery Subquery scalar-subquery#10, [id=#2]

Subquery:11 Hosting operator id = 112 Hosting Expression = ReusedSubquery Subquery scalar-subquery#9, [id=#1]

Subquery:12 Hosting operator id = 112 Hosting Expression = ReusedSubquery Subquery scalar-subquery#10, [id=#2]

Subquery:13 Hosting operator id = 111 Hosting Expression = ws_sold_date_sk#94 IN dynamicpruning#8

Subquery:14 Hosting operator id = 111 Hosting Expression = ReusedSubquery Subquery scalar-subquery#9, [id=#1]

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

Subquery:16 Hosting operator id = 187 Hosting Expression = ws_sold_date_sk#184 IN dynamicpruning#8

Subquery:17 Hosting operator id = 252 Hosting Expression = ss_sold_date_sk#256 IN dynamicpruning#8

Subquery:18 Hosting operator id = 295 Hosting Expression = cs_sold_date_sk#292 IN dynamicpruning#8


