local exchange (GATHER, SINGLE, [])
    remote exchange (GATHER, SINGLE, [])
        local exchange (GATHER, SINGLE, [])
            local exchange (REPARTITION, ROUND_ROBIN, [])
                join (INNER, PARTITIONED):
                    join (INNER, PARTITIONED):
                        final aggregation over (c_customer_id_70, c_first_name_77, c_last_name_78, d_year_122)
                            local exchange (GATHER, SINGLE, [])
                                remote exchange (REPARTITION, HASH, [c_customer_id_70])
                                    intermediate aggregation over (c_customer_id_70, c_first_name_77, c_last_name_78, d_year_122)
                                        join (INNER, PARTITIONED):
                                            remote exchange (REPARTITION, HASH, [ss_customer_sk_92])
                                                intermediate aggregation over (d_year_122, ss_customer_sk_92)
                                                    join (INNER, REPLICATED):
                                                        partial aggregation over (ss_customer_sk_92, ss_sold_date_sk_112)
                                                            dynamic filter (ss_customer_sk_92::EQUAL, ss_sold_date_sk_112::EQUAL)
                                                                scan store_sales
                                                        local exchange (GATHER, SINGLE, [])
                                                            remote exchange (REPLICATE, BROADCAST, [])
                                                                scan date_dim
                                            local exchange (GATHER, SINGLE, [])
                                                remote exchange (REPARTITION, HASH, [c_customer_sk_69])
                                                    dynamic filter (c_customer_id_70::EQUAL, c_customer_id_70::EQUAL)
                                                        scan customer
                        final aggregation over (c_customer_id_327, c_first_name_334, c_last_name_335, d_year_390)
                            local exchange (GATHER, SINGLE, [])
                                remote exchange (REPARTITION, HASH, [c_customer_id_327])
                                    intermediate aggregation over (c_customer_id_327, c_first_name_334, c_last_name_335, d_year_390)
                                        join (INNER, PARTITIONED):
                                            remote exchange (REPARTITION, HASH, [ws_bill_customer_sk_350])
                                                intermediate aggregation over (d_year_390, ws_bill_customer_sk_350)
                                                    join (INNER, REPLICATED):
                                                        partial aggregation over (ws_bill_customer_sk_350, ws_sold_date_sk_380)
                                                            dynamic filter (ws_bill_customer_sk_350::EQUAL, ws_sold_date_sk_380::EQUAL)
                                                                scan web_sales
                                                        local exchange (GATHER, SINGLE, [])
                                                            remote exchange (REPLICATE, BROADCAST, [])
                                                                scan date_dim
                                            local exchange (GATHER, SINGLE, [])
                                                remote exchange (REPARTITION, HASH, [c_customer_sk_326])
                                                    dynamic filter (c_customer_id_327::EQUAL)
                                                        scan customer
                    join (INNER, PARTITIONED):
                        final aggregation over (c_customer_id, c_first_name, c_last_name, d_year)
                            local exchange (GATHER, SINGLE, [])
                                remote exchange (REPARTITION, HASH, [c_customer_id])
                                    intermediate aggregation over (c_customer_id, c_first_name, c_last_name, d_year)
                                        join (INNER, PARTITIONED):
                                            remote exchange (REPARTITION, HASH, [ss_customer_sk])
                                                intermediate aggregation over (d_year, ss_customer_sk)
                                                    join (INNER, REPLICATED):
                                                        partial aggregation over (ss_customer_sk, ss_sold_date_sk)
                                                            dynamic filter (ss_customer_sk::EQUAL, ss_sold_date_sk::EQUAL)
                                                                scan store_sales
                                                        local exchange (GATHER, SINGLE, [])
                                                            remote exchange (REPLICATE, BROADCAST, [])
                                                                scan date_dim
                                            local exchange (GATHER, SINGLE, [])
                                                remote exchange (REPARTITION, HASH, [c_customer_sk])
                                                    dynamic filter (c_customer_id::EQUAL)
                                                        scan customer
                        final aggregation over (c_customer_id_504, c_first_name_511, c_last_name_512, d_year_567)
                            local exchange (GATHER, SINGLE, [])
                                remote exchange (REPARTITION, HASH, [c_customer_id_504])
                                    intermediate aggregation over (c_customer_id_504, c_first_name_511, c_last_name_512, d_year_567)
                                        join (INNER, PARTITIONED):
                                            remote exchange (REPARTITION, HASH, [ws_bill_customer_sk_527])
                                                intermediate aggregation over (d_year_567, ws_bill_customer_sk_527)
                                                    join (INNER, REPLICATED):
                                                        partial aggregation over (ws_bill_customer_sk_527, ws_sold_date_sk_557)
                                                            dynamic filter (ws_bill_customer_sk_527::EQUAL, ws_sold_date_sk_557::EQUAL)
                                                                scan web_sales
                                                        local exchange (GATHER, SINGLE, [])
                                                            remote exchange (REPLICATE, BROADCAST, [])
                                                                scan date_dim
                                            local exchange (GATHER, SINGLE, [])
                                                remote exchange (REPARTITION, HASH, [c_customer_sk_503])
                                                    scan customer
