== Physical Plan ==
AdaptiveSparkPlan (186)
+- == Final Plan ==
   NativeTakeOrdered (117)
   +- NativeProject (116)
      +- NativeHashAggregate (115)
         +- InputAdapter (114)
            +- AQEShuffleRead (113)
               +- ShuffleQueryStage (112), Statistics(X)
                  +- NativeShuffleExchange (111)
                     +- NativeHashAggregate (110)
                        +- NativeProject (109)
                           +- NativeSortMergeJoin Inner (108)
                              :- NativeSort (99)
                              :  +- InputAdapter (98)
                              :     +- AQEShuffleRead (97)
                              :        +- ShuffleQueryStage (96), Statistics(X)
                              :           +- NativeShuffleExchange (95)
                              :              +- NativeProject (94)
                              :                 +- NativeSortMergeJoin Inner (93)
                              :                    :- NativeSort (83)
                              :                    :  +- InputAdapter (82)
                              :                    :     +- AQEShuffleRead (81)
                              :                    :        +- ShuffleQueryStage (80), Statistics(X)
                              :                    :           +- NativeShuffleExchange (79)
                              :                    :              +- NativeProject (78)
                              :                    :                 +- NativeSortMergeJoin LeftAnti (77)
                              :                    :                    :- NativeSortMergeJoin LeftAnti (55)
                              :                    :                    :  :- NativeSortMergeJoin LeftSemi (33)
                              :                    :                    :  :  :- NativeSort (8)
                              :                    :                    :  :  :  +- InputAdapter (7)
                              :                    :                    :  :  :     +- AQEShuffleRead (6)
                              :                    :                    :  :  :        +- ShuffleQueryStage (5), Statistics(X)
                              :                    :                    :  :  :           +- NativeShuffleExchange (4)
                              :                    :                    :  :  :              +- NativeFilter (3)
                              :                    :                    :  :  :                 +- InputAdapter (2)
                              :                    :                    :  :  :                    +- NativeParquetScan  (1)
                              :                    :                    :  :  +- NativeSort (32)
                              :                    :                    :  :     +- InputAdapter (31)
                              :                    :                    :  :        +- AQEShuffleRead (30)
                              :                    :                    :  :           +- ShuffleQueryStage (29), Statistics(X)
                              :                    :                    :  :              +- NativeShuffleExchange (28)
                              :                    :                    :  :                 +- NativeProject (27)
                              :                    :                    :  :                    +- NativeSortMergeJoin Inner (26)
                              :                    :                    :  :                       :- NativeSort (16)
                              :                    :                    :  :                       :  +- InputAdapter (15)
                              :                    :                    :  :                       :     +- AQEShuffleRead (14)
                              :                    :                    :  :                       :        +- ShuffleQueryStage (13), Statistics(X)
                              :                    :                    :  :                       :           +- NativeShuffleExchange (12)
                              :                    :                    :  :                       :              +- NativeFilter (11)
                              :                    :                    :  :                       :                 +- InputAdapter (10)
                              :                    :                    :  :                       :                    +- NativeParquetScan  (9)
                              :                    :                    :  :                       +- NativeSort (25)
                              :                    :                    :  :                          +- InputAdapter (24)
                              :                    :                    :  :                             +- AQEShuffleRead (23)
                              :                    :                    :  :                                +- ShuffleQueryStage (22), Statistics(X)
                              :                    :                    :  :                                   +- NativeShuffleExchange (21)
                              :                    :                    :  :                                      +- NativeProject (20)
                              :                    :                    :  :                                         +- NativeFilter (19)
                              :                    :                    :  :                                            +- InputAdapter (18)
                              :                    :                    :  :                                               +- NativeParquetScan  (17)
                              :                    :                    :  +- NativeSort (54)
                              :                    :                    :     +- InputAdapter (53)
                              :                    :                    :        +- AQEShuffleRead (52)
                              :                    :                    :           +- ShuffleQueryStage (51), Statistics(X)
                              :                    :                    :              +- NativeShuffleExchange (50)
                              :                    :                    :                 +- NativeProject (49)
                              :                    :                    :                    +- NativeSortMergeJoin Inner (48)
                              :                    :                    :                       :- NativeSort (41)
                              :                    :                    :                       :  +- InputAdapter (40)
                              :                    :                    :                       :     +- AQEShuffleRead (39)
                              :                    :                    :                       :        +- ShuffleQueryStage (38), Statistics(X)
                              :                    :                    :                       :           +- NativeShuffleExchange (37)
                              :                    :                    :                       :              +- NativeFilter (36)
                              :                    :                    :                       :                 +- InputAdapter (35)
                              :                    :                    :                       :                    +- NativeParquetScan  (34)
                              :                    :                    :                       +- NativeSort (47)
                              :                    :                    :                          +- InputAdapter (46)
                              :                    :                    :                             +- InputAdapter (45)
                              :                    :                    :                                +- AQEShuffleRead (44)
                              :                    :                    :                                   +- ShuffleQueryStage (43), Statistics(X)
                              :                    :                    :                                      +- ReusedExchange (42)
                              :                    :                    +- NativeSort (76)
                              :                    :                       +- InputAdapter (75)
                              :                    :                          +- AQEShuffleRead (74)
                              :                    :                             +- ShuffleQueryStage (73), Statistics(X)
                              :                    :                                +- NativeShuffleExchange (72)
                              :                    :                                   +- NativeProject (71)
                              :                    :                                      +- NativeSortMergeJoin Inner (70)
                              :                    :                                         :- NativeSort (63)
                              :                    :                                         :  +- InputAdapter (62)
                              :                    :                                         :     +- AQEShuffleRead (61)
                              :                    :                                         :        +- ShuffleQueryStage (60), Statistics(X)
                              :                    :                                         :           +- NativeShuffleExchange (59)
                              :                    :                                         :              +- NativeFilter (58)
                              :                    :                                         :                 +- InputAdapter (57)
                              :                    :                                         :                    +- NativeParquetScan  (56)
                              :                    :                                         +- NativeSort (69)
                              :                    :                                            +- InputAdapter (68)
                              :                    :                                               +- InputAdapter (67)
                              :                    :                                                  +- AQEShuffleRead (66)
                              :                    :                                                     +- ShuffleQueryStage (65), Statistics(X)
                              :                    :                                                        +- ReusedExchange (64)
                              :                    +- NativeSort (92)
                              :                       +- InputAdapter (91)
                              :                          +- AQEShuffleRead (90)
                              :                             +- ShuffleQueryStage (89), Statistics(X)
                              :                                +- NativeShuffleExchange (88)
                              :                                   +- NativeProject (87)
                              :                                      +- NativeFilter (86)
                              :                                         +- InputAdapter (85)
                              :                                            +- NativeParquetScan  (84)
                              +- NativeSort (107)
                                 +- InputAdapter (106)
                                    +- AQEShuffleRead (105)
                                       +- ShuffleQueryStage (104), Statistics(X)
                                          +- NativeShuffleExchange (103)
                                             +- NativeFilter (102)
                                                +- InputAdapter (101)
                                                   +- NativeParquetScan  (100)
+- == Initial Plan ==
   TakeOrderedAndProject (185)
   +- HashAggregate (184)
      +- Exchange (183)
         +- HashAggregate (182)
            +- Project (181)
               +- SortMergeJoin Inner (180)
                  :- Sort (175)
                  :  +- Exchange (174)
                  :     +- Project (173)
                  :        +- SortMergeJoin Inner (172)
                  :           :- Sort (166)
                  :           :  +- Exchange (165)
                  :           :     +- Project (164)
                  :           :        +- SortMergeJoin LeftAnti (163)
                  :           :           :- SortMergeJoin LeftAnti (149)
                  :           :           :  :- SortMergeJoin LeftSemi (135)
                  :           :           :  :  :- Sort (121)
                  :           :           :  :  :  +- Exchange (120)
                  :           :           :  :  :     +- Filter (119)
                  :           :           :  :  :        +- Scan parquet (118)
                  :           :           :  :  +- Sort (134)
                  :           :           :  :     +- Exchange (133)
                  :           :           :  :        +- Project (132)
                  :           :           :  :           +- SortMergeJoin Inner (131)
                  :           :           :  :              :- Sort (125)
                  :           :           :  :              :  +- Exchange (124)
                  :           :           :  :              :     +- Filter (123)
                  :           :           :  :              :        +- Scan parquet (122)
                  :           :           :  :              +- Sort (130)
                  :           :           :  :                 +- Exchange (129)
                  :           :           :  :                    +- Project (128)
                  :           :           :  :                       +- Filter (127)
                  :           :           :  :                          +- Scan parquet (126)
                  :           :           :  +- Sort (148)
                  :           :           :     +- Exchange (147)
                  :           :           :        +- Project (146)
                  :           :           :           +- SortMergeJoin Inner (145)
                  :           :           :              :- Sort (139)
                  :           :           :              :  +- Exchange (138)
                  :           :           :              :     +- Filter (137)
                  :           :           :              :        +- Scan parquet (136)
                  :           :           :              +- Sort (144)
                  :           :           :                 +- Exchange (143)
                  :           :           :                    +- Project (142)
                  :           :           :                       +- Filter (141)
                  :           :           :                          +- Scan parquet (140)
                  :           :           +- Sort (162)
                  :           :              +- Exchange (161)
                  :           :                 +- Project (160)
                  :           :                    +- SortMergeJoin Inner (159)
                  :           :                       :- Sort (153)
                  :           :                       :  +- Exchange (152)
                  :           :                       :     +- Filter (151)
                  :           :                       :        +- Scan parquet (150)
                  :           :                       +- Sort (158)
                  :           :                          +- Exchange (157)
                  :           :                             +- Project (156)
                  :           :                                +- Filter (155)
                  :           :                                   +- Scan parquet (154)
                  :           +- Sort (171)
                  :              +- Exchange (170)
                  :                 +- Project (169)
                  :                    +- Filter (168)
                  :                       +- Scan parquet (167)
                  +- Sort (179)
                     +- Exchange (178)
                        +- Filter (177)
                           +- Scan parquet (176)


(118) Scan parquet
Output [3]: [c_customer_sk#1, c_current_cdemo_sk#2, c_current_addr_sk#3]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(c_current_addr_sk), IsNotNull(c_current_cdemo_sk)]
ReadSchema: struct<c_customer_sk:int,c_current_cdemo_sk:int,c_current_addr_sk:int>

(2) InputAdapter
Input [3]: [c_customer_sk#1, c_current_cdemo_sk#2, c_current_addr_sk#3]
Arguments: [#1, #2, #3]

(3) NativeFilter
Input [3]: [#1#1, #2#2, #3#3]
Condition : (isnotnull(c_current_addr_sk#3) AND isnotnull(c_current_cdemo_sk#2))

(4) NativeShuffleExchange
Input [3]: [#1#1, #2#2, #3#3]
Arguments: hashpartitioning(c_customer_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1]

(5) ShuffleQueryStage
Output [3]: [#1#1, #2#2, #3#3]
Arguments: X

(6) AQEShuffleRead
Input [3]: [#1#1, #2#2, #3#3]
Arguments: coalesced

(7) InputAdapter
Input [3]: [#1#1, #2#2, #3#3]

(8) NativeSort
Input [3]: [#1#1, #2#2, #3#3]
Arguments: [c_customer_sk#1 ASC NULLS FIRST], false

(122) Scan parquet
Output [2]: [ss_sold_date_sk#4, ss_customer_sk#5]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ss_sold_date_sk)]
ReadSchema: struct<ss_sold_date_sk:int,ss_customer_sk:int>

(10) InputAdapter
Input [2]: [ss_sold_date_sk#4, ss_customer_sk#5]
Arguments: [#4, #5]

(11) NativeFilter
Input [2]: [#4#4, #5#5]
Condition : isnotnull(ss_sold_date_sk#4)

(12) NativeShuffleExchange
Input [2]: [#4#4, #5#5]
Arguments: hashpartitioning(ss_sold_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=2]

(13) ShuffleQueryStage
Output [2]: [#4#4, #5#5]
Arguments: X

(14) AQEShuffleRead
Input [2]: [#4#4, #5#5]
Arguments: coalesced

(15) InputAdapter
Input [2]: [#4#4, #5#5]

(16) NativeSort
Input [2]: [#4#4, #5#5]
Arguments: [ss_sold_date_sk#4 ASC NULLS FIRST], false

(126) Scan parquet
Output [3]: [d_date_sk#6, d_year#7, d_moy#8]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), GreaterThanOrEqual(d_moy,4), LessThanOrEqual(d_moy,6), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_moy:int>

(18) InputAdapter
Input [3]: [d_date_sk#6, d_year#7, d_moy#8]
Arguments: [#6, #7, #8]

(19) NativeFilter
Input [3]: [#6#6, #7#7, #8#8]
Condition : (((((isnotnull(d_year#7) AND isnotnull(d_moy#8)) AND (d_year#7 = 2001)) AND (d_moy#8 >= 4)) AND (d_moy#8 <= 6)) AND isnotnull(d_date_sk#6))

(20) NativeProject
Output [1]: [d_date_sk#6]
Input [3]: [#6#6, #7#7, #8#8]

(21) NativeShuffleExchange
Input [1]: [d_date_sk#6]
Arguments: hashpartitioning(d_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=3]

(22) ShuffleQueryStage
Output [1]: [d_date_sk#6]
Arguments: X

(23) AQEShuffleRead
Input [1]: [d_date_sk#6]
Arguments: coalesced

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

(25) NativeSort
Input [1]: [d_date_sk#6]
Arguments: [d_date_sk#6 ASC NULLS FIRST], false

(26) NativeSortMergeJoin
Left keys [1]: [ss_sold_date_sk#4]
Right keys [1]: [d_date_sk#6]
Join type: Inner
Join condition: None

(27) NativeProject
Output [1]: [ss_customer_sk#5]
Input [3]: [#4#4, #5#5, d_date_sk#6]

(28) NativeShuffleExchange
Input [1]: [ss_customer_sk#5]
Arguments: hashpartitioning(ss_customer_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=4]

(29) ShuffleQueryStage
Output [1]: [ss_customer_sk#5]
Arguments: X

(30) AQEShuffleRead
Input [1]: [ss_customer_sk#5]
Arguments: coalesced

(31) InputAdapter
Input [1]: [ss_customer_sk#5]

(32) NativeSort
Input [1]: [ss_customer_sk#5]
Arguments: [ss_customer_sk#5 ASC NULLS FIRST], false

(33) NativeSortMergeJoin
Left keys [1]: [c_customer_sk#1]
Right keys [1]: [ss_customer_sk#5]
Join type: LeftSemi
Join condition: None

(136) Scan parquet
Output [2]: [ws_sold_date_sk#9, ws_bill_customer_sk#10]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ws_sold_date_sk)]
ReadSchema: struct<ws_sold_date_sk:int,ws_bill_customer_sk:int>

(35) InputAdapter
Input [2]: [ws_sold_date_sk#9, ws_bill_customer_sk#10]
Arguments: [#9, #10]

(36) NativeFilter
Input [2]: [#9#9, #10#10]
Condition : isnotnull(ws_sold_date_sk#9)

(37) NativeShuffleExchange
Input [2]: [#9#9, #10#10]
Arguments: hashpartitioning(ws_sold_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=5]

(38) ShuffleQueryStage
Output [2]: [#9#9, #10#10]
Arguments: X

(39) AQEShuffleRead
Input [2]: [#9#9, #10#10]
Arguments: coalesced

(40) InputAdapter
Input [2]: [#9#9, #10#10]

(41) NativeSort
Input [2]: [#9#9, #10#10]
Arguments: [ws_sold_date_sk#9 ASC NULLS FIRST], false

(42) ReusedExchange [Reuses operator id: 21]
Output [1]: [d_date_sk#11]

(43) ShuffleQueryStage
Output [1]: [d_date_sk#11]
Arguments: X

(44) AQEShuffleRead
Input [1]: [d_date_sk#11]
Arguments: coalesced

(45) InputAdapter
Input [1]: [d_date_sk#11]
Arguments: [#11]

(46) InputAdapter
Input [1]: [#11#11]

(47) NativeSort
Input [1]: [#11#11]
Arguments: [d_date_sk#11 ASC NULLS FIRST], false

(48) NativeSortMergeJoin
Left keys [1]: [ws_sold_date_sk#9]
Right keys [1]: [d_date_sk#11]
Join type: Inner
Join condition: None

(49) NativeProject
Output [1]: [ws_bill_customer_sk#10]
Input [3]: [#9#9, #10#10, #11#11]

(50) NativeShuffleExchange
Input [1]: [ws_bill_customer_sk#10]
Arguments: hashpartitioning(ws_bill_customer_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=6]

(51) ShuffleQueryStage
Output [1]: [ws_bill_customer_sk#10]
Arguments: X

(52) AQEShuffleRead
Input [1]: [ws_bill_customer_sk#10]
Arguments: coalesced

(53) InputAdapter
Input [1]: [ws_bill_customer_sk#10]

(54) NativeSort
Input [1]: [ws_bill_customer_sk#10]
Arguments: [ws_bill_customer_sk#10 ASC NULLS FIRST], false

(55) NativeSortMergeJoin
Left keys [1]: [c_customer_sk#1]
Right keys [1]: [ws_bill_customer_sk#10]
Join type: LeftAnti
Join condition: None

(150) Scan parquet
Output [2]: [cs_sold_date_sk#12, cs_ship_customer_sk#13]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(cs_sold_date_sk)]
ReadSchema: struct<cs_sold_date_sk:int,cs_ship_customer_sk:int>

(57) InputAdapter
Input [2]: [cs_sold_date_sk#12, cs_ship_customer_sk#13]
Arguments: [#12, #13]

(58) NativeFilter
Input [2]: [#12#12, #13#13]
Condition : isnotnull(cs_sold_date_sk#12)

(59) NativeShuffleExchange
Input [2]: [#12#12, #13#13]
Arguments: hashpartitioning(cs_sold_date_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=7]

(60) ShuffleQueryStage
Output [2]: [#12#12, #13#13]
Arguments: X

(61) AQEShuffleRead
Input [2]: [#12#12, #13#13]
Arguments: coalesced

(62) InputAdapter
Input [2]: [#12#12, #13#13]

(63) NativeSort
Input [2]: [#12#12, #13#13]
Arguments: [cs_sold_date_sk#12 ASC NULLS FIRST], false

(64) ReusedExchange [Reuses operator id: 21]
Output [1]: [d_date_sk#14]

(65) ShuffleQueryStage
Output [1]: [d_date_sk#14]
Arguments: X

(66) AQEShuffleRead
Input [1]: [d_date_sk#14]
Arguments: coalesced

(67) InputAdapter
Input [1]: [d_date_sk#14]
Arguments: [#14]

(68) InputAdapter
Input [1]: [#14#14]

(69) NativeSort
Input [1]: [#14#14]
Arguments: [d_date_sk#14 ASC NULLS FIRST], false

(70) NativeSortMergeJoin
Left keys [1]: [cs_sold_date_sk#12]
Right keys [1]: [d_date_sk#14]
Join type: Inner
Join condition: None

(71) NativeProject
Output [1]: [cs_ship_customer_sk#13]
Input [3]: [#12#12, #13#13, #14#14]

(72) NativeShuffleExchange
Input [1]: [cs_ship_customer_sk#13]
Arguments: hashpartitioning(cs_ship_customer_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=8]

(73) ShuffleQueryStage
Output [1]: [cs_ship_customer_sk#13]
Arguments: X

(74) AQEShuffleRead
Input [1]: [cs_ship_customer_sk#13]
Arguments: coalesced

(75) InputAdapter
Input [1]: [cs_ship_customer_sk#13]

(76) NativeSort
Input [1]: [cs_ship_customer_sk#13]
Arguments: [cs_ship_customer_sk#13 ASC NULLS FIRST], false

(77) NativeSortMergeJoin
Left keys [1]: [c_customer_sk#1]
Right keys [1]: [cs_ship_customer_sk#13]
Join type: LeftAnti
Join condition: None

(78) NativeProject
Output [2]: [c_current_cdemo_sk#2, c_current_addr_sk#3]
Input [3]: [#1#1, #2#2, #3#3]

(79) NativeShuffleExchange
Input [2]: [c_current_cdemo_sk#2, c_current_addr_sk#3]
Arguments: hashpartitioning(c_current_addr_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=9]

(80) ShuffleQueryStage
Output [2]: [c_current_cdemo_sk#2, c_current_addr_sk#3]
Arguments: X

(81) AQEShuffleRead
Input [2]: [c_current_cdemo_sk#2, c_current_addr_sk#3]
Arguments: coalesced

(82) InputAdapter
Input [2]: [c_current_cdemo_sk#2, c_current_addr_sk#3]

(83) NativeSort
Input [2]: [c_current_cdemo_sk#2, c_current_addr_sk#3]
Arguments: [c_current_addr_sk#3 ASC NULLS FIRST], false

(167) Scan parquet
Output [2]: [ca_address_sk#15, ca_state#16]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [In(ca_state, [GA,KY,NM]), IsNotNull(ca_address_sk)]
ReadSchema: struct<ca_address_sk:int,ca_state:string>

(85) InputAdapter
Input [2]: [ca_address_sk#15, ca_state#16]
Arguments: [#15, #16]

(86) NativeFilter
Input [2]: [#15#15, #16#16]
Condition : (ca_state#16 IN (KY,GA,NM) AND isnotnull(ca_address_sk#15))

(87) NativeProject
Output [1]: [ca_address_sk#15]
Input [2]: [#15#15, #16#16]

(88) NativeShuffleExchange
Input [1]: [ca_address_sk#15]
Arguments: hashpartitioning(ca_address_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=10]

(89) ShuffleQueryStage
Output [1]: [ca_address_sk#15]
Arguments: X

(90) AQEShuffleRead
Input [1]: [ca_address_sk#15]
Arguments: coalesced

(91) InputAdapter
Input [1]: [ca_address_sk#15]

(92) NativeSort
Input [1]: [ca_address_sk#15]
Arguments: [ca_address_sk#15 ASC NULLS FIRST], false

(93) NativeSortMergeJoin
Left keys [1]: [c_current_addr_sk#3]
Right keys [1]: [ca_address_sk#15]
Join type: Inner
Join condition: None

(94) NativeProject
Output [1]: [c_current_cdemo_sk#2]
Input [3]: [c_current_cdemo_sk#2, c_current_addr_sk#3, ca_address_sk#15]

(95) NativeShuffleExchange
Input [1]: [c_current_cdemo_sk#2]
Arguments: hashpartitioning(c_current_cdemo_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=11]

(96) ShuffleQueryStage
Output [1]: [c_current_cdemo_sk#2]
Arguments: X

(97) AQEShuffleRead
Input [1]: [c_current_cdemo_sk#2]
Arguments: coalesced

(98) InputAdapter
Input [1]: [c_current_cdemo_sk#2]

(99) NativeSort
Input [1]: [c_current_cdemo_sk#2]
Arguments: [c_current_cdemo_sk#2 ASC NULLS FIRST], false

(176) Scan parquet
Output [6]: [cd_demo_sk#17, cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(cd_demo_sk)]
ReadSchema: struct<cd_demo_sk:int,cd_gender:string,cd_marital_status:string,cd_education_status:string,cd_purchase_estimate:int,cd_credit_rating:string>

(101) InputAdapter
Input [6]: [cd_demo_sk#17, cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22]
Arguments: [#17, #18, #19, #20, #21, #22]

(102) NativeFilter
Input [6]: [#17#17, #18#18, #19#19, #20#20, #21#21, #22#22]
Condition : isnotnull(cd_demo_sk#17)

(103) NativeShuffleExchange
Input [6]: [#17#17, #18#18, #19#19, #20#20, #21#21, #22#22]
Arguments: hashpartitioning(cd_demo_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=12]

(104) ShuffleQueryStage
Output [6]: [#17#17, #18#18, #19#19, #20#20, #21#21, #22#22]
Arguments: X

(105) AQEShuffleRead
Input [6]: [#17#17, #18#18, #19#19, #20#20, #21#21, #22#22]
Arguments: coalesced

(106) InputAdapter
Input [6]: [#17#17, #18#18, #19#19, #20#20, #21#21, #22#22]

(107) NativeSort
Input [6]: [#17#17, #18#18, #19#19, #20#20, #21#21, #22#22]
Arguments: [cd_demo_sk#17 ASC NULLS FIRST], false

(108) NativeSortMergeJoin
Left keys [1]: [c_current_cdemo_sk#2]
Right keys [1]: [cd_demo_sk#17]
Join type: Inner
Join condition: None

(109) NativeProject
Output [5]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22]
Input [7]: [c_current_cdemo_sk#2, #17#17, #18#18, #19#19, #20#20, #21#21, #22#22]

(110) NativeHashAggregate
Input [5]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22]
Keys [5]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22]
Functions [1]: [partial_count(1)]
Aggregate Attributes [1]: [count#23]
Results [6]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22, #24]

(111) NativeShuffleExchange
Input [6]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22, #24]
Arguments: hashpartitioning(cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22, 100), ENSURE_REQUIREMENTS, [plan_id=13]

(112) ShuffleQueryStage
Output [6]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22, #24]
Arguments: X

(113) AQEShuffleRead
Input [6]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22, #24]
Arguments: coalesced

(114) InputAdapter
Input [6]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22, #24]

(115) NativeHashAggregate
Input [6]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22, #24]
Keys [5]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22]
Functions [1]: [count(1)]
Aggregate Attributes [1]: [count(1)#25]
Results [6]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22, count(1)#25]

(116) NativeProject
Output [8]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, count(1)#25 AS cnt1#26, cd_purchase_estimate#21, count(1)#25 AS cnt2#27, cd_credit_rating#22, count(1)#25 AS cnt3#28]
Input [6]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22, count(1)#25]

(117) NativeTakeOrdered
Input [8]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cnt1#26, cd_purchase_estimate#21, cnt2#27, cd_credit_rating#22, cnt3#28]
Arguments: X, X, [cd_gender#18 ASC NULLS FIRST, cd_marital_status#19 ASC NULLS FIRST, cd_education_status#20 ASC NULLS FIRST, cd_purchase_estimate#21 ASC NULLS FIRST, cd_credit_rating#22 ASC NULLS FIRST]

(118) Scan parquet
Output [3]: [c_customer_sk#1, c_current_cdemo_sk#2, c_current_addr_sk#3]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(c_current_addr_sk), IsNotNull(c_current_cdemo_sk)]
ReadSchema: struct<c_customer_sk:int,c_current_cdemo_sk:int,c_current_addr_sk:int>

(119) Filter
Input [3]: [c_customer_sk#1, c_current_cdemo_sk#2, c_current_addr_sk#3]
Condition : (isnotnull(c_current_addr_sk#3) AND isnotnull(c_current_cdemo_sk#2))

(120) Exchange
Input [3]: [c_customer_sk#1, c_current_cdemo_sk#2, c_current_addr_sk#3]
Arguments: hashpartitioning(c_customer_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=14]

(121) Sort
Input [3]: [c_customer_sk#1, c_current_cdemo_sk#2, c_current_addr_sk#3]
Arguments: [c_customer_sk#1 ASC NULLS FIRST], false, 0

(122) Scan parquet
Output [2]: [ss_sold_date_sk#4, ss_customer_sk#5]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ss_sold_date_sk)]
ReadSchema: struct<ss_sold_date_sk:int,ss_customer_sk:int>

(123) Filter
Input [2]: [ss_sold_date_sk#4, ss_customer_sk#5]
Condition : isnotnull(ss_sold_date_sk#4)

(124) Exchange
Input [2]: [ss_sold_date_sk#4, ss_customer_sk#5]
Arguments: hashpartitioning(ss_sold_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=15]

(125) Sort
Input [2]: [ss_sold_date_sk#4, ss_customer_sk#5]
Arguments: [ss_sold_date_sk#4 ASC NULLS FIRST], false, 0

(126) Scan parquet
Output [3]: [d_date_sk#6, d_year#7, d_moy#8]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), GreaterThanOrEqual(d_moy,4), LessThanOrEqual(d_moy,6), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_moy:int>

(127) Filter
Input [3]: [d_date_sk#6, d_year#7, d_moy#8]
Condition : (((((isnotnull(d_year#7) AND isnotnull(d_moy#8)) AND (d_year#7 = 2001)) AND (d_moy#8 >= 4)) AND (d_moy#8 <= 6)) AND isnotnull(d_date_sk#6))

(128) Project
Output [1]: [d_date_sk#6]
Input [3]: [d_date_sk#6, d_year#7, d_moy#8]

(129) Exchange
Input [1]: [d_date_sk#6]
Arguments: hashpartitioning(d_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=16]

(130) Sort
Input [1]: [d_date_sk#6]
Arguments: [d_date_sk#6 ASC NULLS FIRST], false, 0

(131) SortMergeJoin
Left keys [1]: [ss_sold_date_sk#4]
Right keys [1]: [d_date_sk#6]
Join type: Inner
Join condition: None

(132) Project
Output [1]: [ss_customer_sk#5]
Input [3]: [ss_sold_date_sk#4, ss_customer_sk#5, d_date_sk#6]

(133) Exchange
Input [1]: [ss_customer_sk#5]
Arguments: hashpartitioning(ss_customer_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=17]

(134) Sort
Input [1]: [ss_customer_sk#5]
Arguments: [ss_customer_sk#5 ASC NULLS FIRST], false, 0

(135) SortMergeJoin
Left keys [1]: [c_customer_sk#1]
Right keys [1]: [ss_customer_sk#5]
Join type: LeftSemi
Join condition: None

(136) Scan parquet
Output [2]: [ws_sold_date_sk#9, ws_bill_customer_sk#10]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ws_sold_date_sk)]
ReadSchema: struct<ws_sold_date_sk:int,ws_bill_customer_sk:int>

(137) Filter
Input [2]: [ws_sold_date_sk#9, ws_bill_customer_sk#10]
Condition : isnotnull(ws_sold_date_sk#9)

(138) Exchange
Input [2]: [ws_sold_date_sk#9, ws_bill_customer_sk#10]
Arguments: hashpartitioning(ws_sold_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=18]

(139) Sort
Input [2]: [ws_sold_date_sk#9, ws_bill_customer_sk#10]
Arguments: [ws_sold_date_sk#9 ASC NULLS FIRST], false, 0

(140) Scan parquet
Output [3]: [d_date_sk#11, d_year#29, d_moy#30]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), GreaterThanOrEqual(d_moy,4), LessThanOrEqual(d_moy,6), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_moy:int>

(141) Filter
Input [3]: [d_date_sk#11, d_year#29, d_moy#30]
Condition : (((((isnotnull(d_year#29) AND isnotnull(d_moy#30)) AND (d_year#29 = 2001)) AND (d_moy#30 >= 4)) AND (d_moy#30 <= 6)) AND isnotnull(d_date_sk#11))

(142) Project
Output [1]: [d_date_sk#11]
Input [3]: [d_date_sk#11, d_year#29, d_moy#30]

(143) Exchange
Input [1]: [d_date_sk#11]
Arguments: hashpartitioning(d_date_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=19]

(144) Sort
Input [1]: [d_date_sk#11]
Arguments: [d_date_sk#11 ASC NULLS FIRST], false, 0

(145) SortMergeJoin
Left keys [1]: [ws_sold_date_sk#9]
Right keys [1]: [d_date_sk#11]
Join type: Inner
Join condition: None

(146) Project
Output [1]: [ws_bill_customer_sk#10]
Input [3]: [ws_sold_date_sk#9, ws_bill_customer_sk#10, d_date_sk#11]

(147) Exchange
Input [1]: [ws_bill_customer_sk#10]
Arguments: hashpartitioning(ws_bill_customer_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=20]

(148) Sort
Input [1]: [ws_bill_customer_sk#10]
Arguments: [ws_bill_customer_sk#10 ASC NULLS FIRST], false, 0

(149) SortMergeJoin
Left keys [1]: [c_customer_sk#1]
Right keys [1]: [ws_bill_customer_sk#10]
Join type: LeftAnti
Join condition: None

(150) Scan parquet
Output [2]: [cs_sold_date_sk#12, cs_ship_customer_sk#13]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(cs_sold_date_sk)]
ReadSchema: struct<cs_sold_date_sk:int,cs_ship_customer_sk:int>

(151) Filter
Input [2]: [cs_sold_date_sk#12, cs_ship_customer_sk#13]
Condition : isnotnull(cs_sold_date_sk#12)

(152) Exchange
Input [2]: [cs_sold_date_sk#12, cs_ship_customer_sk#13]
Arguments: hashpartitioning(cs_sold_date_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=21]

(153) Sort
Input [2]: [cs_sold_date_sk#12, cs_ship_customer_sk#13]
Arguments: [cs_sold_date_sk#12 ASC NULLS FIRST], false, 0

(154) Scan parquet
Output [3]: [d_date_sk#14, d_year#31, d_moy#32]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), GreaterThanOrEqual(d_moy,4), LessThanOrEqual(d_moy,6), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_moy:int>

(155) Filter
Input [3]: [d_date_sk#14, d_year#31, d_moy#32]
Condition : (((((isnotnull(d_year#31) AND isnotnull(d_moy#32)) AND (d_year#31 = 2001)) AND (d_moy#32 >= 4)) AND (d_moy#32 <= 6)) AND isnotnull(d_date_sk#14))

(156) Project
Output [1]: [d_date_sk#14]
Input [3]: [d_date_sk#14, d_year#31, d_moy#32]

(157) Exchange
Input [1]: [d_date_sk#14]
Arguments: hashpartitioning(d_date_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=22]

(158) Sort
Input [1]: [d_date_sk#14]
Arguments: [d_date_sk#14 ASC NULLS FIRST], false, 0

(159) SortMergeJoin
Left keys [1]: [cs_sold_date_sk#12]
Right keys [1]: [d_date_sk#14]
Join type: Inner
Join condition: None

(160) Project
Output [1]: [cs_ship_customer_sk#13]
Input [3]: [cs_sold_date_sk#12, cs_ship_customer_sk#13, d_date_sk#14]

(161) Exchange
Input [1]: [cs_ship_customer_sk#13]
Arguments: hashpartitioning(cs_ship_customer_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=23]

(162) Sort
Input [1]: [cs_ship_customer_sk#13]
Arguments: [cs_ship_customer_sk#13 ASC NULLS FIRST], false, 0

(163) SortMergeJoin
Left keys [1]: [c_customer_sk#1]
Right keys [1]: [cs_ship_customer_sk#13]
Join type: LeftAnti
Join condition: None

(164) Project
Output [2]: [c_current_cdemo_sk#2, c_current_addr_sk#3]
Input [3]: [c_customer_sk#1, c_current_cdemo_sk#2, c_current_addr_sk#3]

(165) Exchange
Input [2]: [c_current_cdemo_sk#2, c_current_addr_sk#3]
Arguments: hashpartitioning(c_current_addr_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=24]

(166) Sort
Input [2]: [c_current_cdemo_sk#2, c_current_addr_sk#3]
Arguments: [c_current_addr_sk#3 ASC NULLS FIRST], false, 0

(167) Scan parquet
Output [2]: [ca_address_sk#15, ca_state#16]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [In(ca_state, [GA,KY,NM]), IsNotNull(ca_address_sk)]
ReadSchema: struct<ca_address_sk:int,ca_state:string>

(168) Filter
Input [2]: [ca_address_sk#15, ca_state#16]
Condition : (ca_state#16 IN (KY,GA,NM) AND isnotnull(ca_address_sk#15))

(169) Project
Output [1]: [ca_address_sk#15]
Input [2]: [ca_address_sk#15, ca_state#16]

(170) Exchange
Input [1]: [ca_address_sk#15]
Arguments: hashpartitioning(ca_address_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=25]

(171) Sort
Input [1]: [ca_address_sk#15]
Arguments: [ca_address_sk#15 ASC NULLS FIRST], false, 0

(172) SortMergeJoin
Left keys [1]: [c_current_addr_sk#3]
Right keys [1]: [ca_address_sk#15]
Join type: Inner
Join condition: None

(173) Project
Output [1]: [c_current_cdemo_sk#2]
Input [3]: [c_current_cdemo_sk#2, c_current_addr_sk#3, ca_address_sk#15]

(174) Exchange
Input [1]: [c_current_cdemo_sk#2]
Arguments: hashpartitioning(c_current_cdemo_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=26]

(175) Sort
Input [1]: [c_current_cdemo_sk#2]
Arguments: [c_current_cdemo_sk#2 ASC NULLS FIRST], false, 0

(176) Scan parquet
Output [6]: [cd_demo_sk#17, cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(cd_demo_sk)]
ReadSchema: struct<cd_demo_sk:int,cd_gender:string,cd_marital_status:string,cd_education_status:string,cd_purchase_estimate:int,cd_credit_rating:string>

(177) Filter
Input [6]: [cd_demo_sk#17, cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22]
Condition : isnotnull(cd_demo_sk#17)

(178) Exchange
Input [6]: [cd_demo_sk#17, cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22]
Arguments: hashpartitioning(cd_demo_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=27]

(179) Sort
Input [6]: [cd_demo_sk#17, cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22]
Arguments: [cd_demo_sk#17 ASC NULLS FIRST], false, 0

(180) SortMergeJoin
Left keys [1]: [c_current_cdemo_sk#2]
Right keys [1]: [cd_demo_sk#17]
Join type: Inner
Join condition: None

(181) Project
Output [5]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22]
Input [7]: [c_current_cdemo_sk#2, cd_demo_sk#17, cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22]

(182) HashAggregate
Input [5]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22]
Keys [5]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22]
Functions [1]: [partial_count(1)]
Aggregate Attributes [1]: [count#23]
Results [6]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22, count#33]

(183) Exchange
Input [6]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22, count#33]
Arguments: hashpartitioning(cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22, 100), ENSURE_REQUIREMENTS, [plan_id=28]

(184) HashAggregate
Input [6]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22, count#33]
Keys [5]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22]
Functions [1]: [count(1)]
Aggregate Attributes [1]: [count(1)#25]
Results [8]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, count(1)#25 AS cnt1#26, cd_purchase_estimate#21, count(1)#25 AS cnt2#27, cd_credit_rating#22, count(1)#25 AS cnt3#28]

(185) TakeOrderedAndProject
Input [8]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cnt1#26, cd_purchase_estimate#21, cnt2#27, cd_credit_rating#22, cnt3#28]
Arguments: X, [cd_gender#18 ASC NULLS FIRST, cd_marital_status#19 ASC NULLS FIRST, cd_education_status#20 ASC NULLS FIRST, cd_purchase_estimate#21 ASC NULLS FIRST, cd_credit_rating#22 ASC NULLS FIRST], [cd_gender#18, cd_marital_status#19, cd_education_status#20, cnt1#26, cd_purchase_estimate#21, cnt2#27, cd_credit_rating#22, cnt3#28]

(186) AdaptiveSparkPlan
Output [8]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cnt1#26, cd_purchase_estimate#21, cnt2#27, cd_credit_rating#22, cnt3#28]
Arguments: isFinalPlan=true

