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


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

(2) InputAdapter
Input [2]: [ss_sold_date_sk#1, ss_customer_sk#2]
Arguments: [#1, #2]

(3) NativeFilter
Input [2]: [#1#1, #2#2]
Condition : (isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_customer_sk#2))

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

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

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

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

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

(141) Scan parquet
Output [3]: [d_date_sk#3, d_date#4, d_month_seq#5]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_date:date,d_month_seq:int>

(10) InputAdapter
Input [3]: [d_date_sk#3, d_date#4, d_month_seq#5]
Arguments: [#3, #4, #5]

(11) NativeFilter
Input [3]: [#3#3, #4#4, #5#5]
Condition : (((isnotnull(d_month_seq#5) AND (d_month_seq#5 >= 1200)) AND (d_month_seq#5 <= 1211)) AND isnotnull(d_date_sk#3))

(12) NativeProject
Output [2]: [d_date_sk#3, d_date#4]
Input [3]: [#3#3, #4#4, #5#5]

(13) NativeShuffleExchange
Input [2]: [d_date_sk#3, d_date#4]
Arguments: hashpartitioning(d_date_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=2]

(14) ShuffleQueryStage
Output [2]: [d_date_sk#3, d_date#4]
Arguments: X

(15) AQEShuffleRead
Input [2]: [d_date_sk#3, d_date#4]
Arguments: coalesced

(16) InputAdapter
Input [2]: [d_date_sk#3, d_date#4]

(17) NativeSort
Input [2]: [d_date_sk#3, d_date#4]
Arguments: [d_date_sk#3 ASC NULLS FIRST], false

(18) NativeSortMergeJoin
Left keys [1]: [ss_sold_date_sk#1]
Right keys [1]: [d_date_sk#3]
Join type: Inner
Join condition: None

(19) NativeProject
Output [2]: [ss_customer_sk#2, d_date#4]
Input [4]: [#1#1, #2#2, d_date_sk#3, d_date#4]

(20) NativeShuffleExchange
Input [2]: [ss_customer_sk#2, d_date#4]
Arguments: hashpartitioning(ss_customer_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=3]

(21) ShuffleQueryStage
Output [2]: [ss_customer_sk#2, d_date#4]
Arguments: X

(22) AQEShuffleRead
Input [2]: [ss_customer_sk#2, d_date#4]
Arguments: coalesced

(23) InputAdapter
Input [2]: [ss_customer_sk#2, d_date#4]

(24) NativeSort
Input [2]: [ss_customer_sk#2, d_date#4]
Arguments: [ss_customer_sk#2 ASC NULLS FIRST], false

(150) Scan parquet
Output [3]: [c_customer_sk#6, c_first_name#7, c_last_name#8]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(c_customer_sk)]
ReadSchema: struct<c_customer_sk:int,c_first_name:string,c_last_name:string>

(26) InputAdapter
Input [3]: [c_customer_sk#6, c_first_name#7, c_last_name#8]
Arguments: [#6, #7, #8]

(27) NativeFilter
Input [3]: [#6#6, #7#7, #8#8]
Condition : isnotnull(c_customer_sk#6)

(28) NativeShuffleExchange
Input [3]: [#6#6, #7#7, #8#8]
Arguments: hashpartitioning(c_customer_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=4]

(29) ShuffleQueryStage
Output [3]: [#6#6, #7#7, #8#8]
Arguments: X

(30) AQEShuffleRead
Input [3]: [#6#6, #7#7, #8#8]
Arguments: coalesced

(31) InputAdapter
Input [3]: [#6#6, #7#7, #8#8]

(32) NativeSort
Input [3]: [#6#6, #7#7, #8#8]
Arguments: [c_customer_sk#6 ASC NULLS FIRST], false

(33) NativeSortMergeJoin
Left keys [1]: [ss_customer_sk#2]
Right keys [1]: [c_customer_sk#6]
Join type: Inner
Join condition: None

(34) NativeProject
Output [3]: [c_last_name#8, c_first_name#7, d_date#4]
Input [5]: [ss_customer_sk#2, d_date#4, #6#6, #7#7, #8#8]

(35) NativeHashAggregate
Input [3]: [c_last_name#8, c_first_name#7, d_date#4]
Keys [3]: [c_last_name#8, c_first_name#7, d_date#4]
Functions: []
Aggregate Attributes: []
Results [3]: [c_last_name#8, c_first_name#7, d_date#4]

(36) NativeShuffleExchange
Input [3]: [c_last_name#8, c_first_name#7, d_date#4]
Arguments: hashpartitioning(c_last_name#8, c_first_name#7, d_date#4, 100), ENSURE_REQUIREMENTS, [plan_id=5]

(37) ShuffleQueryStage
Output [3]: [c_last_name#8, c_first_name#7, d_date#4]
Arguments: X

(38) AQEShuffleRead
Input [3]: [c_last_name#8, c_first_name#7, d_date#4]
Arguments: coalesced

(39) InputAdapter
Input [3]: [c_last_name#8, c_first_name#7, d_date#4]

(40) NativeHashAggregate
Input [3]: [c_last_name#8, c_first_name#7, d_date#4]
Keys [3]: [c_last_name#8, c_first_name#7, d_date#4]
Functions: []
Aggregate Attributes: []
Results [3]: [c_last_name#8, c_first_name#7, d_date#4]

(41) NativeProject
Output [3]: [c_last_name#8, c_first_name#7, d_date#4]
Input [3]: [c_last_name#8, c_first_name#7, d_date#4]

(42) NativeShuffleExchange
Input [3]: [c_last_name#8, c_first_name#7, d_date#4]
Arguments: hashpartitioning(coalesce(c_last_name#8, ), isnull(c_last_name#8), coalesce(c_first_name#7, ), isnull(c_first_name#7), coalesce(d_date#4, 1970-01-01), isnull(d_date#4), 100), ENSURE_REQUIREMENTS, [plan_id=6]

(43) ShuffleQueryStage
Output [3]: [c_last_name#8, c_first_name#7, d_date#4]
Arguments: X

(44) AQEShuffleRead
Input [3]: [c_last_name#8, c_first_name#7, d_date#4]
Arguments: coalesced

(45) InputAdapter
Input [3]: [c_last_name#8, c_first_name#7, d_date#4]

(46) NativeSort
Input [3]: [c_last_name#8, c_first_name#7, d_date#4]
Arguments: [coalesce(c_last_name#8, ) ASC NULLS FIRST, isnull(c_last_name#8) ASC NULLS FIRST, coalesce(c_first_name#7, ) ASC NULLS FIRST, isnull(c_first_name#7) ASC NULLS FIRST, coalesce(d_date#4, 1970-01-01) ASC NULLS FIRST, isnull(d_date#4) ASC NULLS FIRST], false

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

(48) InputAdapter
Input [2]: [cs_sold_date_sk#9, cs_bill_customer_sk#10]
Arguments: [#9, #10]

(49) NativeFilter
Input [2]: [#9#9, #10#10]
Condition : (isnotnull(cs_sold_date_sk#9) AND isnotnull(cs_bill_customer_sk#10))

(50) NativeShuffleExchange
Input [2]: [#9#9, #10#10]
Arguments: hashpartitioning(cs_sold_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=7]

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

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

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

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

(55) ReusedExchange [Reuses operator id: 13]
Output [2]: [d_date_sk#11, d_date#12]

(56) ShuffleQueryStage
Output [2]: [d_date_sk#11, d_date#12]
Arguments: X

(57) AQEShuffleRead
Input [2]: [d_date_sk#11, d_date#12]
Arguments: coalesced

(58) InputAdapter
Input [2]: [d_date_sk#11, d_date#12]
Arguments: [#11, #12]

(59) InputAdapter
Input [2]: [#11#11, #12#12]

(60) NativeSort
Input [2]: [#11#11, #12#12]
Arguments: [d_date_sk#11 ASC NULLS FIRST], false

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

(62) NativeProject
Output [2]: [cs_bill_customer_sk#10, d_date#12]
Input [4]: [#9#9, #10#10, #11#11, #12#12]

(63) NativeShuffleExchange
Input [2]: [cs_bill_customer_sk#10, d_date#12]
Arguments: hashpartitioning(cs_bill_customer_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=8]

(64) ShuffleQueryStage
Output [2]: [cs_bill_customer_sk#10, d_date#12]
Arguments: X

(65) AQEShuffleRead
Input [2]: [cs_bill_customer_sk#10, d_date#12]
Arguments: coalesced

(66) InputAdapter
Input [2]: [cs_bill_customer_sk#10, d_date#12]

(67) NativeSort
Input [2]: [cs_bill_customer_sk#10, d_date#12]
Arguments: [cs_bill_customer_sk#10 ASC NULLS FIRST], false

(68) ReusedExchange [Reuses operator id: 28]
Output [3]: [c_customer_sk#13, c_first_name#14, c_last_name#15]

(69) ShuffleQueryStage
Output [3]: [c_customer_sk#13, c_first_name#14, c_last_name#15]
Arguments: X

(70) AQEShuffleRead
Input [3]: [c_customer_sk#13, c_first_name#14, c_last_name#15]
Arguments: coalesced

(71) InputAdapter
Input [3]: [c_customer_sk#13, c_first_name#14, c_last_name#15]
Arguments: [#13, #14, #15]

(72) InputAdapter
Input [3]: [#13#13, #14#14, #15#15]

(73) NativeSort
Input [3]: [#13#13, #14#14, #15#15]
Arguments: [c_customer_sk#13 ASC NULLS FIRST], false

(74) NativeSortMergeJoin
Left keys [1]: [cs_bill_customer_sk#10]
Right keys [1]: [c_customer_sk#13]
Join type: Inner
Join condition: None

(75) NativeProject
Output [3]: [c_last_name#15, c_first_name#14, d_date#12]
Input [5]: [cs_bill_customer_sk#10, d_date#12, #13#13, #14#14, #15#15]

(76) NativeHashAggregate
Input [3]: [c_last_name#15, c_first_name#14, d_date#12]
Keys [3]: [c_last_name#15, c_first_name#14, d_date#12]
Functions: []
Aggregate Attributes: []
Results [3]: [c_last_name#15, c_first_name#14, d_date#12]

(77) NativeShuffleExchange
Input [3]: [c_last_name#15, c_first_name#14, d_date#12]
Arguments: hashpartitioning(c_last_name#15, c_first_name#14, d_date#12, 100), ENSURE_REQUIREMENTS, [plan_id=9]

(78) ShuffleQueryStage
Output [3]: [c_last_name#15, c_first_name#14, d_date#12]
Arguments: X

(79) AQEShuffleRead
Input [3]: [c_last_name#15, c_first_name#14, d_date#12]
Arguments: coalesced

(80) InputAdapter
Input [3]: [c_last_name#15, c_first_name#14, d_date#12]

(81) NativeHashAggregate
Input [3]: [c_last_name#15, c_first_name#14, d_date#12]
Keys [3]: [c_last_name#15, c_first_name#14, d_date#12]
Functions: []
Aggregate Attributes: []
Results [3]: [c_last_name#15, c_first_name#14, d_date#12]

(82) NativeProject
Output [3]: [c_last_name#15, c_first_name#14, d_date#12]
Input [3]: [c_last_name#15, c_first_name#14, d_date#12]

(83) NativeShuffleExchange
Input [3]: [c_last_name#15, c_first_name#14, d_date#12]
Arguments: hashpartitioning(coalesce(c_last_name#15, ), isnull(c_last_name#15), coalesce(c_first_name#14, ), isnull(c_first_name#14), coalesce(d_date#12, 1970-01-01), isnull(d_date#12), 100), ENSURE_REQUIREMENTS, [plan_id=10]

(84) ShuffleQueryStage
Output [3]: [c_last_name#15, c_first_name#14, d_date#12]
Arguments: X

(85) AQEShuffleRead
Input [3]: [c_last_name#15, c_first_name#14, d_date#12]
Arguments: coalesced

(86) InputAdapter
Input [3]: [c_last_name#15, c_first_name#14, d_date#12]

(87) NativeSort
Input [3]: [c_last_name#15, c_first_name#14, d_date#12]
Arguments: [coalesce(c_last_name#15, ) ASC NULLS FIRST, isnull(c_last_name#15) ASC NULLS FIRST, coalesce(c_first_name#14, ) ASC NULLS FIRST, isnull(c_first_name#14) ASC NULLS FIRST, coalesce(d_date#12, 1970-01-01) ASC NULLS FIRST, isnull(d_date#12) ASC NULLS FIRST], false

(88) NativeSortMergeJoin
Left keys [6]: [coalesce(c_last_name#8, ), isnull(c_last_name#8), coalesce(c_first_name#7, ), isnull(c_first_name#7), coalesce(d_date#4, 1970-01-01), isnull(d_date#4)]
Right keys [6]: [coalesce(c_last_name#15, ), isnull(c_last_name#15), coalesce(c_first_name#14, ), isnull(c_first_name#14), coalesce(d_date#12, 1970-01-01), isnull(d_date#12)]
Join type: LeftSemi
Join condition: None

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

(90) InputAdapter
Input [2]: [ws_sold_date_sk#16, ws_bill_customer_sk#17]
Arguments: [#16, #17]

(91) NativeFilter
Input [2]: [#16#16, #17#17]
Condition : (isnotnull(ws_sold_date_sk#16) AND isnotnull(ws_bill_customer_sk#17))

(92) NativeShuffleExchange
Input [2]: [#16#16, #17#17]
Arguments: hashpartitioning(ws_sold_date_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=11]

(93) ShuffleQueryStage
Output [2]: [#16#16, #17#17]
Arguments: X

(94) AQEShuffleRead
Input [2]: [#16#16, #17#17]
Arguments: coalesced

(95) InputAdapter
Input [2]: [#16#16, #17#17]

(96) NativeSort
Input [2]: [#16#16, #17#17]
Arguments: [ws_sold_date_sk#16 ASC NULLS FIRST], false

(97) ReusedExchange [Reuses operator id: 13]
Output [2]: [d_date_sk#18, d_date#19]

(98) ShuffleQueryStage
Output [2]: [d_date_sk#18, d_date#19]
Arguments: X

(99) AQEShuffleRead
Input [2]: [d_date_sk#18, d_date#19]
Arguments: coalesced

(100) InputAdapter
Input [2]: [d_date_sk#18, d_date#19]
Arguments: [#18, #19]

(101) InputAdapter
Input [2]: [#18#18, #19#19]

(102) NativeSort
Input [2]: [#18#18, #19#19]
Arguments: [d_date_sk#18 ASC NULLS FIRST], false

(103) NativeSortMergeJoin
Left keys [1]: [ws_sold_date_sk#16]
Right keys [1]: [d_date_sk#18]
Join type: Inner
Join condition: None

(104) NativeProject
Output [2]: [ws_bill_customer_sk#17, d_date#19]
Input [4]: [#16#16, #17#17, #18#18, #19#19]

(105) NativeShuffleExchange
Input [2]: [ws_bill_customer_sk#17, d_date#19]
Arguments: hashpartitioning(ws_bill_customer_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=12]

(106) ShuffleQueryStage
Output [2]: [ws_bill_customer_sk#17, d_date#19]
Arguments: X

(107) AQEShuffleRead
Input [2]: [ws_bill_customer_sk#17, d_date#19]
Arguments: coalesced

(108) InputAdapter
Input [2]: [ws_bill_customer_sk#17, d_date#19]

(109) NativeSort
Input [2]: [ws_bill_customer_sk#17, d_date#19]
Arguments: [ws_bill_customer_sk#17 ASC NULLS FIRST], false

(110) ReusedExchange [Reuses operator id: 28]
Output [3]: [c_customer_sk#20, c_first_name#21, c_last_name#22]

(111) ShuffleQueryStage
Output [3]: [c_customer_sk#20, c_first_name#21, c_last_name#22]
Arguments: X

(112) AQEShuffleRead
Input [3]: [c_customer_sk#20, c_first_name#21, c_last_name#22]
Arguments: coalesced

(113) InputAdapter
Input [3]: [c_customer_sk#20, c_first_name#21, c_last_name#22]
Arguments: [#20, #21, #22]

(114) InputAdapter
Input [3]: [#20#20, #21#21, #22#22]

(115) NativeSort
Input [3]: [#20#20, #21#21, #22#22]
Arguments: [c_customer_sk#20 ASC NULLS FIRST], false

(116) NativeSortMergeJoin
Left keys [1]: [ws_bill_customer_sk#17]
Right keys [1]: [c_customer_sk#20]
Join type: Inner
Join condition: None

(117) NativeProject
Output [3]: [c_last_name#22, c_first_name#21, d_date#19]
Input [5]: [ws_bill_customer_sk#17, d_date#19, #20#20, #21#21, #22#22]

(118) NativeHashAggregate
Input [3]: [c_last_name#22, c_first_name#21, d_date#19]
Keys [3]: [c_last_name#22, c_first_name#21, d_date#19]
Functions: []
Aggregate Attributes: []
Results [3]: [c_last_name#22, c_first_name#21, d_date#19]

(119) NativeShuffleExchange
Input [3]: [c_last_name#22, c_first_name#21, d_date#19]
Arguments: hashpartitioning(c_last_name#22, c_first_name#21, d_date#19, 100), ENSURE_REQUIREMENTS, [plan_id=13]

(120) ShuffleQueryStage
Output [3]: [c_last_name#22, c_first_name#21, d_date#19]
Arguments: X

(121) AQEShuffleRead
Input [3]: [c_last_name#22, c_first_name#21, d_date#19]
Arguments: coalesced

(122) InputAdapter
Input [3]: [c_last_name#22, c_first_name#21, d_date#19]

(123) NativeHashAggregate
Input [3]: [c_last_name#22, c_first_name#21, d_date#19]
Keys [3]: [c_last_name#22, c_first_name#21, d_date#19]
Functions: []
Aggregate Attributes: []
Results [3]: [c_last_name#22, c_first_name#21, d_date#19]

(124) NativeProject
Output [3]: [c_last_name#22, c_first_name#21, d_date#19]
Input [3]: [c_last_name#22, c_first_name#21, d_date#19]

(125) NativeShuffleExchange
Input [3]: [c_last_name#22, c_first_name#21, d_date#19]
Arguments: hashpartitioning(coalesce(c_last_name#22, ), isnull(c_last_name#22), coalesce(c_first_name#21, ), isnull(c_first_name#21), coalesce(d_date#19, 1970-01-01), isnull(d_date#19), 100), ENSURE_REQUIREMENTS, [plan_id=14]

(126) ShuffleQueryStage
Output [3]: [c_last_name#22, c_first_name#21, d_date#19]
Arguments: X

(127) AQEShuffleRead
Input [3]: [c_last_name#22, c_first_name#21, d_date#19]
Arguments: coalesced

(128) InputAdapter
Input [3]: [c_last_name#22, c_first_name#21, d_date#19]

(129) NativeSort
Input [3]: [c_last_name#22, c_first_name#21, d_date#19]
Arguments: [coalesce(c_last_name#22, ) ASC NULLS FIRST, isnull(c_last_name#22) ASC NULLS FIRST, coalesce(c_first_name#21, ) ASC NULLS FIRST, isnull(c_first_name#21) ASC NULLS FIRST, coalesce(d_date#19, 1970-01-01) ASC NULLS FIRST, isnull(d_date#19) ASC NULLS FIRST], false

(130) NativeSortMergeJoin
Left keys [6]: [coalesce(c_last_name#8, ), isnull(c_last_name#8), coalesce(c_first_name#7, ), isnull(c_first_name#7), coalesce(d_date#4, 1970-01-01), isnull(d_date#4)]
Right keys [6]: [coalesce(c_last_name#22, ), isnull(c_last_name#22), coalesce(c_first_name#21, ), isnull(c_first_name#21), coalesce(d_date#19, 1970-01-01), isnull(d_date#19)]
Join type: LeftSemi
Join condition: None

(131) NativeProject
Output: []
Input [3]: [c_last_name#8, c_first_name#7, d_date#4]

(132) NativeHashAggregate
Input: []
Keys: []
Functions [1]: [partial_count(1)]
Aggregate Attributes [1]: [count#23]
Results [1]: [#24]

(133) NativeShuffleExchange
Input [1]: [#24]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=15]

(134) ShuffleQueryStage
Output [1]: [#24]
Arguments: X

(135) NativeHashAggregate
Input [1]: [#24]
Keys: []
Functions [1]: [count(1)]
Aggregate Attributes [1]: [count(1)#25]
Results [1]: [count(1)#25]

(136) NativeProject
Output [1]: [count(1)#25 AS count(1)#26]
Input [1]: [count(1)#25]

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

(138) Filter
Input [2]: [ss_sold_date_sk#1, ss_customer_sk#2]
Condition : (isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_customer_sk#2))

(139) Exchange
Input [2]: [ss_sold_date_sk#1, ss_customer_sk#2]
Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=16]

(140) Sort
Input [2]: [ss_sold_date_sk#1, ss_customer_sk#2]
Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0

(141) Scan parquet
Output [3]: [d_date_sk#3, d_date#4, d_month_seq#5]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_date:date,d_month_seq:int>

(142) Filter
Input [3]: [d_date_sk#3, d_date#4, d_month_seq#5]
Condition : (((isnotnull(d_month_seq#5) AND (d_month_seq#5 >= 1200)) AND (d_month_seq#5 <= 1211)) AND isnotnull(d_date_sk#3))

(143) Project
Output [2]: [d_date_sk#3, d_date#4]
Input [3]: [d_date_sk#3, d_date#4, d_month_seq#5]

(144) Exchange
Input [2]: [d_date_sk#3, d_date#4]
Arguments: hashpartitioning(d_date_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=17]

(145) Sort
Input [2]: [d_date_sk#3, d_date#4]
Arguments: [d_date_sk#3 ASC NULLS FIRST], false, 0

(146) SortMergeJoin
Left keys [1]: [ss_sold_date_sk#1]
Right keys [1]: [d_date_sk#3]
Join type: Inner
Join condition: None

(147) Project
Output [2]: [ss_customer_sk#2, d_date#4]
Input [4]: [ss_sold_date_sk#1, ss_customer_sk#2, d_date_sk#3, d_date#4]

(148) Exchange
Input [2]: [ss_customer_sk#2, d_date#4]
Arguments: hashpartitioning(ss_customer_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=18]

(149) Sort
Input [2]: [ss_customer_sk#2, d_date#4]
Arguments: [ss_customer_sk#2 ASC NULLS FIRST], false, 0

(150) Scan parquet
Output [3]: [c_customer_sk#6, c_first_name#7, c_last_name#8]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(c_customer_sk)]
ReadSchema: struct<c_customer_sk:int,c_first_name:string,c_last_name:string>

(151) Filter
Input [3]: [c_customer_sk#6, c_first_name#7, c_last_name#8]
Condition : isnotnull(c_customer_sk#6)

(152) Exchange
Input [3]: [c_customer_sk#6, c_first_name#7, c_last_name#8]
Arguments: hashpartitioning(c_customer_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=19]

(153) Sort
Input [3]: [c_customer_sk#6, c_first_name#7, c_last_name#8]
Arguments: [c_customer_sk#6 ASC NULLS FIRST], false, 0

(154) SortMergeJoin
Left keys [1]: [ss_customer_sk#2]
Right keys [1]: [c_customer_sk#6]
Join type: Inner
Join condition: None

(155) Project
Output [3]: [c_last_name#8, c_first_name#7, d_date#4]
Input [5]: [ss_customer_sk#2, d_date#4, c_customer_sk#6, c_first_name#7, c_last_name#8]

(156) HashAggregate
Input [3]: [c_last_name#8, c_first_name#7, d_date#4]
Keys [3]: [c_last_name#8, c_first_name#7, d_date#4]
Functions: []
Aggregate Attributes: []
Results [3]: [c_last_name#8, c_first_name#7, d_date#4]

(157) Exchange
Input [3]: [c_last_name#8, c_first_name#7, d_date#4]
Arguments: hashpartitioning(c_last_name#8, c_first_name#7, d_date#4, 100), ENSURE_REQUIREMENTS, [plan_id=20]

(158) HashAggregate
Input [3]: [c_last_name#8, c_first_name#7, d_date#4]
Keys [3]: [c_last_name#8, c_first_name#7, d_date#4]
Functions: []
Aggregate Attributes: []
Results [3]: [c_last_name#8, c_first_name#7, d_date#4]

(159) Exchange
Input [3]: [c_last_name#8, c_first_name#7, d_date#4]
Arguments: hashpartitioning(coalesce(c_last_name#8, ), isnull(c_last_name#8), coalesce(c_first_name#7, ), isnull(c_first_name#7), coalesce(d_date#4, 1970-01-01), isnull(d_date#4), 100), ENSURE_REQUIREMENTS, [plan_id=21]

(160) Sort
Input [3]: [c_last_name#8, c_first_name#7, d_date#4]
Arguments: [coalesce(c_last_name#8, ) ASC NULLS FIRST, isnull(c_last_name#8) ASC NULLS FIRST, coalesce(c_first_name#7, ) ASC NULLS FIRST, isnull(c_first_name#7) ASC NULLS FIRST, coalesce(d_date#4, 1970-01-01) ASC NULLS FIRST, isnull(d_date#4) ASC NULLS FIRST], false, 0

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

(162) Filter
Input [2]: [cs_sold_date_sk#9, cs_bill_customer_sk#10]
Condition : (isnotnull(cs_sold_date_sk#9) AND isnotnull(cs_bill_customer_sk#10))

(163) Exchange
Input [2]: [cs_sold_date_sk#9, cs_bill_customer_sk#10]
Arguments: hashpartitioning(cs_sold_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=22]

(164) Sort
Input [2]: [cs_sold_date_sk#9, cs_bill_customer_sk#10]
Arguments: [cs_sold_date_sk#9 ASC NULLS FIRST], false, 0

(165) Scan parquet
Output [3]: [d_date_sk#11, d_date#12, d_month_seq#27]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_date:date,d_month_seq:int>

(166) Filter
Input [3]: [d_date_sk#11, d_date#12, d_month_seq#27]
Condition : (((isnotnull(d_month_seq#27) AND (d_month_seq#27 >= 1200)) AND (d_month_seq#27 <= 1211)) AND isnotnull(d_date_sk#11))

(167) Project
Output [2]: [d_date_sk#11, d_date#12]
Input [3]: [d_date_sk#11, d_date#12, d_month_seq#27]

(168) Exchange
Input [2]: [d_date_sk#11, d_date#12]
Arguments: hashpartitioning(d_date_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=23]

(169) Sort
Input [2]: [d_date_sk#11, d_date#12]
Arguments: [d_date_sk#11 ASC NULLS FIRST], false, 0

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

(171) Project
Output [2]: [cs_bill_customer_sk#10, d_date#12]
Input [4]: [cs_sold_date_sk#9, cs_bill_customer_sk#10, d_date_sk#11, d_date#12]

(172) Exchange
Input [2]: [cs_bill_customer_sk#10, d_date#12]
Arguments: hashpartitioning(cs_bill_customer_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=24]

(173) Sort
Input [2]: [cs_bill_customer_sk#10, d_date#12]
Arguments: [cs_bill_customer_sk#10 ASC NULLS FIRST], false, 0

(174) Scan parquet
Output [3]: [c_customer_sk#13, c_first_name#14, c_last_name#15]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(c_customer_sk)]
ReadSchema: struct<c_customer_sk:int,c_first_name:string,c_last_name:string>

(175) Filter
Input [3]: [c_customer_sk#13, c_first_name#14, c_last_name#15]
Condition : isnotnull(c_customer_sk#13)

(176) Exchange
Input [3]: [c_customer_sk#13, c_first_name#14, c_last_name#15]
Arguments: hashpartitioning(c_customer_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=25]

(177) Sort
Input [3]: [c_customer_sk#13, c_first_name#14, c_last_name#15]
Arguments: [c_customer_sk#13 ASC NULLS FIRST], false, 0

(178) SortMergeJoin
Left keys [1]: [cs_bill_customer_sk#10]
Right keys [1]: [c_customer_sk#13]
Join type: Inner
Join condition: None

(179) Project
Output [3]: [c_last_name#15, c_first_name#14, d_date#12]
Input [5]: [cs_bill_customer_sk#10, d_date#12, c_customer_sk#13, c_first_name#14, c_last_name#15]

(180) HashAggregate
Input [3]: [c_last_name#15, c_first_name#14, d_date#12]
Keys [3]: [c_last_name#15, c_first_name#14, d_date#12]
Functions: []
Aggregate Attributes: []
Results [3]: [c_last_name#15, c_first_name#14, d_date#12]

(181) Exchange
Input [3]: [c_last_name#15, c_first_name#14, d_date#12]
Arguments: hashpartitioning(c_last_name#15, c_first_name#14, d_date#12, 100), ENSURE_REQUIREMENTS, [plan_id=26]

(182) HashAggregate
Input [3]: [c_last_name#15, c_first_name#14, d_date#12]
Keys [3]: [c_last_name#15, c_first_name#14, d_date#12]
Functions: []
Aggregate Attributes: []
Results [3]: [c_last_name#15, c_first_name#14, d_date#12]

(183) Exchange
Input [3]: [c_last_name#15, c_first_name#14, d_date#12]
Arguments: hashpartitioning(coalesce(c_last_name#15, ), isnull(c_last_name#15), coalesce(c_first_name#14, ), isnull(c_first_name#14), coalesce(d_date#12, 1970-01-01), isnull(d_date#12), 100), ENSURE_REQUIREMENTS, [plan_id=27]

(184) Sort
Input [3]: [c_last_name#15, c_first_name#14, d_date#12]
Arguments: [coalesce(c_last_name#15, ) ASC NULLS FIRST, isnull(c_last_name#15) ASC NULLS FIRST, coalesce(c_first_name#14, ) ASC NULLS FIRST, isnull(c_first_name#14) ASC NULLS FIRST, coalesce(d_date#12, 1970-01-01) ASC NULLS FIRST, isnull(d_date#12) ASC NULLS FIRST], false, 0

(185) SortMergeJoin
Left keys [6]: [coalesce(c_last_name#8, ), isnull(c_last_name#8), coalesce(c_first_name#7, ), isnull(c_first_name#7), coalesce(d_date#4, 1970-01-01), isnull(d_date#4)]
Right keys [6]: [coalesce(c_last_name#15, ), isnull(c_last_name#15), coalesce(c_first_name#14, ), isnull(c_first_name#14), coalesce(d_date#12, 1970-01-01), isnull(d_date#12)]
Join type: LeftSemi
Join condition: None

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

(187) Filter
Input [2]: [ws_sold_date_sk#16, ws_bill_customer_sk#17]
Condition : (isnotnull(ws_sold_date_sk#16) AND isnotnull(ws_bill_customer_sk#17))

(188) Exchange
Input [2]: [ws_sold_date_sk#16, ws_bill_customer_sk#17]
Arguments: hashpartitioning(ws_sold_date_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=28]

(189) Sort
Input [2]: [ws_sold_date_sk#16, ws_bill_customer_sk#17]
Arguments: [ws_sold_date_sk#16 ASC NULLS FIRST], false, 0

(190) Scan parquet
Output [3]: [d_date_sk#18, d_date#19, d_month_seq#28]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_date:date,d_month_seq:int>

(191) Filter
Input [3]: [d_date_sk#18, d_date#19, d_month_seq#28]
Condition : (((isnotnull(d_month_seq#28) AND (d_month_seq#28 >= 1200)) AND (d_month_seq#28 <= 1211)) AND isnotnull(d_date_sk#18))

(192) Project
Output [2]: [d_date_sk#18, d_date#19]
Input [3]: [d_date_sk#18, d_date#19, d_month_seq#28]

(193) Exchange
Input [2]: [d_date_sk#18, d_date#19]
Arguments: hashpartitioning(d_date_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=29]

(194) Sort
Input [2]: [d_date_sk#18, d_date#19]
Arguments: [d_date_sk#18 ASC NULLS FIRST], false, 0

(195) SortMergeJoin
Left keys [1]: [ws_sold_date_sk#16]
Right keys [1]: [d_date_sk#18]
Join type: Inner
Join condition: None

(196) Project
Output [2]: [ws_bill_customer_sk#17, d_date#19]
Input [4]: [ws_sold_date_sk#16, ws_bill_customer_sk#17, d_date_sk#18, d_date#19]

(197) Exchange
Input [2]: [ws_bill_customer_sk#17, d_date#19]
Arguments: hashpartitioning(ws_bill_customer_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=30]

(198) Sort
Input [2]: [ws_bill_customer_sk#17, d_date#19]
Arguments: [ws_bill_customer_sk#17 ASC NULLS FIRST], false, 0

(199) Scan parquet
Output [3]: [c_customer_sk#20, c_first_name#21, c_last_name#22]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(c_customer_sk)]
ReadSchema: struct<c_customer_sk:int,c_first_name:string,c_last_name:string>

(200) Filter
Input [3]: [c_customer_sk#20, c_first_name#21, c_last_name#22]
Condition : isnotnull(c_customer_sk#20)

(201) Exchange
Input [3]: [c_customer_sk#20, c_first_name#21, c_last_name#22]
Arguments: hashpartitioning(c_customer_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=31]

(202) Sort
Input [3]: [c_customer_sk#20, c_first_name#21, c_last_name#22]
Arguments: [c_customer_sk#20 ASC NULLS FIRST], false, 0

(203) SortMergeJoin
Left keys [1]: [ws_bill_customer_sk#17]
Right keys [1]: [c_customer_sk#20]
Join type: Inner
Join condition: None

(204) Project
Output [3]: [c_last_name#22, c_first_name#21, d_date#19]
Input [5]: [ws_bill_customer_sk#17, d_date#19, c_customer_sk#20, c_first_name#21, c_last_name#22]

(205) HashAggregate
Input [3]: [c_last_name#22, c_first_name#21, d_date#19]
Keys [3]: [c_last_name#22, c_first_name#21, d_date#19]
Functions: []
Aggregate Attributes: []
Results [3]: [c_last_name#22, c_first_name#21, d_date#19]

(206) Exchange
Input [3]: [c_last_name#22, c_first_name#21, d_date#19]
Arguments: hashpartitioning(c_last_name#22, c_first_name#21, d_date#19, 100), ENSURE_REQUIREMENTS, [plan_id=32]

(207) HashAggregate
Input [3]: [c_last_name#22, c_first_name#21, d_date#19]
Keys [3]: [c_last_name#22, c_first_name#21, d_date#19]
Functions: []
Aggregate Attributes: []
Results [3]: [c_last_name#22, c_first_name#21, d_date#19]

(208) Exchange
Input [3]: [c_last_name#22, c_first_name#21, d_date#19]
Arguments: hashpartitioning(coalesce(c_last_name#22, ), isnull(c_last_name#22), coalesce(c_first_name#21, ), isnull(c_first_name#21), coalesce(d_date#19, 1970-01-01), isnull(d_date#19), 100), ENSURE_REQUIREMENTS, [plan_id=33]

(209) Sort
Input [3]: [c_last_name#22, c_first_name#21, d_date#19]
Arguments: [coalesce(c_last_name#22, ) ASC NULLS FIRST, isnull(c_last_name#22) ASC NULLS FIRST, coalesce(c_first_name#21, ) ASC NULLS FIRST, isnull(c_first_name#21) ASC NULLS FIRST, coalesce(d_date#19, 1970-01-01) ASC NULLS FIRST, isnull(d_date#19) ASC NULLS FIRST], false, 0

(210) SortMergeJoin
Left keys [6]: [coalesce(c_last_name#8, ), isnull(c_last_name#8), coalesce(c_first_name#7, ), isnull(c_first_name#7), coalesce(d_date#4, 1970-01-01), isnull(d_date#4)]
Right keys [6]: [coalesce(c_last_name#22, ), isnull(c_last_name#22), coalesce(c_first_name#21, ), isnull(c_first_name#21), coalesce(d_date#19, 1970-01-01), isnull(d_date#19)]
Join type: LeftSemi
Join condition: None

(211) Project
Output: []
Input [3]: [c_last_name#8, c_first_name#7, d_date#4]

(212) HashAggregate
Input: []
Keys: []
Functions [1]: [partial_count(1)]
Aggregate Attributes [1]: [count#23]
Results [1]: [count#29]

(213) Exchange
Input [1]: [count#29]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=34]

(214) HashAggregate
Input [1]: [count#29]
Keys: []
Functions [1]: [count(1)]
Aggregate Attributes [1]: [count(1)#25]
Results [1]: [count(1)#25 AS count(1)#26]

(215) AdaptiveSparkPlan
Output [1]: [count(1)#26]
Arguments: isFinalPlan=true

