Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] batch coalesce can fail to appear between columnar shuffle and subsequent columnar operation #698

Closed
jlowe opened this issue Sep 9, 2020 · 10 comments · Fixed by #720
Assignees
Labels
bug Something isn't working P0 Must have for release

Comments

@jlowe
Copy link
Member

jlowe commented Sep 9, 2020

Describe the bug
Normally a GpuCoalesceBatches query plan node should appear after a GPU columnar exchange and before a subsequent GPU operation. In some cases the coalesce node can be missing as noted at #622 (comment)

Steps/Code to reproduce bug
Run TPC-DS query 18 with adaptive query execution enabled. Other queries as identified in #622 could also be used.

Expected behavior
A GpuCoalesceBatches node must be inserted after every GPU columnar shuffle that is followed by a subsequent GPU operation.

@jlowe jlowe added bug Something isn't working ? - Needs Triage Need team to review and classify labels Sep 9, 2020
@jlowe
Copy link
Member Author

jlowe commented Sep 9, 2020

cc: @andygrove

@andygrove andygrove self-assigned this Sep 9, 2020
@andygrove
Copy link
Contributor

I'm pretty sure I know what is causing this. When planning a new shuffle query stage, we do remove the GpuCoalesceBatches that wraps the GpuShuffleExchangeExec because we need to return something that implements ShuffleExchangeLike. We insert the GpuCoalesceBatches on the reducer side instead. Either this behavior is incorrect (and we somehow need to have an operator that combines the shuffle + coalesce) or the coalesce step is being removed in other situations where it should not be removed. I will investigate.

@andygrove
Copy link
Contributor

For reference, this is from running q56 (from our derived version of TPC-DS) with the lastest plugin code and Spark 3.0.1 with AQE on. I do not see any missing coalesce steps with this or q18.

q56coalesce

@andygrove
Copy link
Contributor

@JustPlay could you confirm which version of the plugin you are using (perhaps the commit hash that you built from)

@JustPlay
Copy link

JustPlay commented Sep 10, 2020

I have tested tpc-ds query 10, 33, 18, when AQE=ON bug, when AQE=OFF good

spark.sql.adaptive.enabled=true OR false

I'm using spark-3.0.1-rc3 (the .zip package)

for rapids-0.2:
commit id : 46225d7
https://github.com/NVIDIA/spark-rapids/tree/46225d723b3b795a6216036667373f0731765268
20200901

@andygrove

what's more, it's really hart the performance, really

@JustPlay
Copy link

JustPlay commented Sep 10, 2020

@andygrove

I have tried the latest version, the BUG still exists

git.log


image


image


image

@andygrove
Copy link
Contributor

@JustPlay Thanks for the information. I have a theory on this and it would be useful if you could send me the query plan so that I confirm. I suspect that although you have AQE enabled, the query isn't using AQE due to some restrictions. For example, if your plan starts with an InsertAdaptiveSparkPlan then there are cases where it won't enable AQE for the read query.

If this is the case you should see a warning similar to "spark.sql.adaptive.enabled is enabled but is not supported for query".

I think that there is a bug in the plugin where we would still remove the coalesce from the exchange in this case but won't insert it around the custom shuffle reader because there is no custom shuffle reader due to AQE being disabled. I will be working to confirm this today and come up with a solution.

@JustPlay
Copy link

JustPlay commented Sep 10, 2020

@JustPlay Thanks for the information. I have a theory on this and it would be useful if you could send me the query plan so that I confirm. I suspect that although you have AQE enabled, the query isn't using AQE due to some restrictions. For example, if your plan starts with an InsertAdaptiveSparkPlan then there are cases where it won't enable AQE for the read query.

If this is the case you should see a warning similar to "spark.sql.adaptive.enabled is enabled but is not supported for query".

I think that there is a bug in the plugin where we would still remove the coalesce from the exchange in this case but won't insert it around the custom shuffle reader because there is no custom shuffle reader due to AQE being disabled. I will be working to confirm this today and come up with a solution.

== Parsed Logical Plan ==
GlobalLimit 21
+- LocalLimit 21
   +- Project [cast(i_item_id#152 as string) AS i_item_id#182, cast(ca_country#153 as string) AS ca_country#183, cast(ca_state#154 as string) AS ca_state#184, cast(ca_county#155 as string) AS ca_county#185, cast(agg1#0 as string) AS agg1#186, cast(agg2#1 as string) AS agg2#187, cast(agg3#2 as string) AS agg3#188, cast(agg4#3 as string) AS agg4#189, cast(agg5#4 as string) AS agg5#190, cast(agg6#5 as string) AS agg6#191, cast(agg7#6 as string) AS agg7#192]
      +- GlobalLimit 100
         +- LocalLimit 100
            +- Sort [ca_country#153 ASC NULLS FIRST, ca_state#154 ASC NULLS FIRST, ca_county#155 ASC NULLS FIRST, i_item_id#152 ASC NULLS FIRST], true
               +- Aggregate [i_item_id#152, ca_country#153, ca_state#154, ca_county#155, spark_grouping_id#147], [i_item_id#152, ca_country#153, ca_state#154, ca_county#155, avg(cast(cs_quantity#24L as decimal(12,2))) AS agg1#0, avg(cast(cs_list_price#26 as decimal(12,2))) AS agg2#1, avg(cast(cs_coupon_amt#33 as decimal(12,2))) AS agg3#2, avg(cast(cs_sales_price#27 as decimal(12,2))) AS agg4#3, avg(cast(cs_net_profit#39 as decimal(12,2))) AS agg5#4, avg(cast(c_birth_year#63L as decimal(12,2))) AS agg6#5, avg(cast(cd_dep_count#47L as decimal(12,2))) AS agg7#6]
                  +- Expand [List(cs_sold_time_sk#7, cs_ship_date_sk#8, cs_bill_customer_sk#9, cs_bill_cdemo_sk#10, cs_bill_hdemo_sk#11, cs_bill_addr_sk#12, cs_ship_customer_sk#13, cs_ship_cdemo_sk#14, cs_ship_hdemo_sk#15, cs_ship_addr_sk#16, cs_call_center_sk#17, cs_catalog_page_sk#18, cs_ship_mode_sk#19, cs_warehouse_sk#20, cs_item_sk#21, cs_promo_sk#22, cs_order_number#23L, cs_quantity#24L, cs_wholesale_cost#25, cs_list_price#26, cs_sales_price#27, cs_ext_discount_amt#28, cs_ext_sales_price#29, cs_ext_wholesale_cost#30, cs_ext_list_price#31, cs_ext_tax#32, cs_coupon_amt#33, cs_ext_ship_cost#34, cs_net_paid#35, cs_net_paid_inc_tax#36, cs_net_paid_inc_ship#37, cs_net_paid_inc_ship_tax#38, cs_net_profit#39, cs_sold_date_sk#40, cd_demo_sk#41, cd_gender#42, cd_marital_status#43, cd_education_status#44, cd_purchase_estimate#45L, cd_credit_rating#46, cd_dep_count#47L, cd_dep_employed_count#48L, cd_dep_college_count#49L, cd_demo_sk#131, cd_gender#132, cd_marital_status#133, cd_education_status#134, cd_purchase_estimate#135L, cd_credit_rating#136, cd_dep_count#137L, cd_dep_employed_count#138L, cd_dep_college_count#139L, c_customer_sk#50, c_customer_id#51, c_current_cdemo_sk#52, c_current_hdemo_sk#53, c_current_addr_sk#54, c_first_shipto_date_sk#55, c_first_sales_date_sk#56, c_salutation#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_day#61L, c_birth_month#62L, c_birth_year#63L, c_birth_country#64, c_login#65, c_email_address#66, c_last_review_date_sk#67, ca_address_sk#68, ca_address_id#69, ca_street_number#70, ca_street_name#71, ca_street_type#72, ca_suite_number#73, ca_city#74, ca_county#75, ca_state#76, ca_zip#77, ca_country#78, ca_gmt_offset#79, ca_location_type#80, d_date_sk#81, d_date_id#82, d_date#83, d_month_seq#84L, d_week_seq#85L, d_quarter_seq#86L, d_year#87L, d_dow#88L, d_moy#89L, d_dom#90L, d_qoy#91L, d_fy_year#92L, d_fy_quarter_seq#93L, d_fy_week_seq#94L, d_day_name#95, d_quarter_name#96, d_holiday#97, d_weekend#98, d_following_holiday#99, d_first_dom#100L, d_last_dom#101L, d_same_day_ly#102L, d_same_day_lq#103L, d_current_day#104, d_current_week#105, d_current_month#106, d_current_quarter#107, d_current_year#108, i_item_sk#109, i_item_id#110, i_rec_start_date#111, i_rec_end_date#112, i_item_desc#113, i_current_price#114, i_wholesale_cost#115, i_brand_id#116L, i_brand#117, i_class_id#118L, i_class#119, i_category_id#120L, i_category#121, i_manufact_id#122L, i_manufact#123, i_size#124, i_formulation#125, i_color#126, i_units#127, i_container#128, i_manager_id#129L, i_product_name#130, i_item_id#148, ca_country#149, ca_state#150, ca_county#151, 0), List(cs_sold_time_sk#7, cs_ship_date_sk#8, cs_bill_customer_sk#9, cs_bill_cdemo_sk#10, cs_bill_hdemo_sk#11, cs_bill_addr_sk#12, cs_ship_customer_sk#13, cs_ship_cdemo_sk#14, cs_ship_hdemo_sk#15, cs_ship_addr_sk#16, cs_call_center_sk#17, cs_catalog_page_sk#18, cs_ship_mode_sk#19, cs_warehouse_sk#20, cs_item_sk#21, cs_promo_sk#22, cs_order_number#23L, cs_quantity#24L, cs_wholesale_cost#25, cs_list_price#26, cs_sales_price#27, cs_ext_discount_amt#28, cs_ext_sales_price#29, cs_ext_wholesale_cost#30, cs_ext_list_price#31, cs_ext_tax#32, cs_coupon_amt#33, cs_ext_ship_cost#34, cs_net_paid#35, cs_net_paid_inc_tax#36, cs_net_paid_inc_ship#37, cs_net_paid_inc_ship_tax#38, cs_net_profit#39, cs_sold_date_sk#40, cd_demo_sk#41, cd_gender#42, cd_marital_status#43, cd_education_status#44, cd_purchase_estimate#45L, cd_credit_rating#46, cd_dep_count#47L, cd_dep_employed_count#48L, cd_dep_college_count#49L, cd_demo_sk#131, cd_gender#132, cd_marital_status#133, cd_education_status#134, cd_purchase_estimate#135L, cd_credit_rating#136, cd_dep_count#137L, cd_dep_employed_count#138L, cd_dep_college_count#139L, c_customer_sk#50, c_customer_id#51, c_current_cdemo_sk#52, c_current_hdemo_sk#53, c_current_addr_sk#54, c_first_shipto_date_sk#55, c_first_sales_date_sk#56, c_salutation#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_day#61L, c_birth_month#62L, c_birth_year#63L, c_birth_country#64, c_login#65, c_email_address#66, c_last_review_date_sk#67, ca_address_sk#68, ca_address_id#69, ca_street_number#70, ca_street_name#71, ca_street_type#72, ca_suite_number#73, ca_city#74, ca_county#75, ca_state#76, ca_zip#77, ca_country#78, ca_gmt_offset#79, ca_location_type#80, d_date_sk#81, d_date_id#82, d_date#83, d_month_seq#84L, d_week_seq#85L, d_quarter_seq#86L, d_year#87L, d_dow#88L, d_moy#89L, d_dom#90L, d_qoy#91L, d_fy_year#92L, d_fy_quarter_seq#93L, d_fy_week_seq#94L, d_day_name#95, d_quarter_name#96, d_holiday#97, d_weekend#98, d_following_holiday#99, d_first_dom#100L, d_last_dom#101L, d_same_day_ly#102L, d_same_day_lq#103L, d_current_day#104, d_current_week#105, d_current_month#106, d_current_quarter#107, d_current_year#108, i_item_sk#109, i_item_id#110, i_rec_start_date#111, i_rec_end_date#112, i_item_desc#113, i_current_price#114, i_wholesale_cost#115, i_brand_id#116L, i_brand#117, i_class_id#118L, i_class#119, i_category_id#120L, i_category#121, i_manufact_id#122L, i_manufact#123, i_size#124, i_formulation#125, i_color#126, i_units#127, i_container#128, i_manager_id#129L, i_product_name#130, i_item_id#148, ca_country#149, ca_state#150, null, 1), List(cs_sold_time_sk#7, cs_ship_date_sk#8, cs_bill_customer_sk#9, cs_bill_cdemo_sk#10, cs_bill_hdemo_sk#11, cs_bill_addr_sk#12, cs_ship_customer_sk#13, cs_ship_cdemo_sk#14, cs_ship_hdemo_sk#15, cs_ship_addr_sk#16, cs_call_center_sk#17, cs_catalog_page_sk#18, cs_ship_mode_sk#19, cs_warehouse_sk#20, cs_item_sk#21, cs_promo_sk#22, cs_order_number#23L, cs_quantity#24L, cs_wholesale_cost#25, cs_list_price#26, cs_sales_price#27, cs_ext_discount_amt#28, cs_ext_sales_price#29, cs_ext_wholesale_cost#30, cs_ext_list_price#31, cs_ext_tax#32, cs_coupon_amt#33, cs_ext_ship_cost#34, cs_net_paid#35, cs_net_paid_inc_tax#36, cs_net_paid_inc_ship#37, cs_net_paid_inc_ship_tax#38, cs_net_profit#39, cs_sold_date_sk#40, cd_demo_sk#41, cd_gender#42, cd_marital_status#43, cd_education_status#44, cd_purchase_estimate#45L, cd_credit_rating#46, cd_dep_count#47L, cd_dep_employed_count#48L, cd_dep_college_count#49L, cd_demo_sk#131, cd_gender#132, cd_marital_status#133, cd_education_status#134, cd_purchase_estimate#135L, cd_credit_rating#136, cd_dep_count#137L, cd_dep_employed_count#138L, cd_dep_college_count#139L, c_customer_sk#50, c_customer_id#51, c_current_cdemo_sk#52, c_current_hdemo_sk#53, c_current_addr_sk#54, c_first_shipto_date_sk#55, c_first_sales_date_sk#56, c_salutation#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_day#61L, c_birth_month#62L, c_birth_year#63L, c_birth_country#64, c_login#65, c_email_address#66, c_last_review_date_sk#67, ca_address_sk#68, ca_address_id#69, ca_street_number#70, ca_street_name#71, ca_street_type#72, ca_suite_number#73, ca_city#74, ca_county#75, ca_state#76, ca_zip#77, ca_country#78, ca_gmt_offset#79, ca_location_type#80, d_date_sk#81, d_date_id#82, d_date#83, d_month_seq#84L, d_week_seq#85L, d_quarter_seq#86L, d_year#87L, d_dow#88L, d_moy#89L, d_dom#90L, d_qoy#91L, d_fy_year#92L, d_fy_quarter_seq#93L, d_fy_week_seq#94L, d_day_name#95, d_quarter_name#96, d_holiday#97, d_weekend#98, d_following_holiday#99, d_first_dom#100L, d_last_dom#101L, d_same_day_ly#102L, d_same_day_lq#103L, d_current_day#104, d_current_week#105, d_current_month#106, d_current_quarter#107, d_current_year#108, i_item_sk#109, i_item_id#110, i_rec_start_date#111, i_rec_end_date#112, i_item_desc#113, i_current_price#114, i_wholesale_cost#115, i_brand_id#116L, i_brand#117, i_class_id#118L, i_class#119, i_category_id#120L, i_category#121, i_manufact_id#122L, i_manufact#123, i_size#124, i_formulation#125, i_color#126, i_units#127, i_container#128, i_manager_id#129L, i_product_name#130, i_item_id#148, ca_country#149, null, null, 3), List(cs_sold_time_sk#7, cs_ship_date_sk#8, cs_bill_customer_sk#9, cs_bill_cdemo_sk#10, cs_bill_hdemo_sk#11, cs_bill_addr_sk#12, cs_ship_customer_sk#13, cs_ship_cdemo_sk#14, cs_ship_hdemo_sk#15, cs_ship_addr_sk#16, cs_call_center_sk#17, cs_catalog_page_sk#18, cs_ship_mode_sk#19, cs_warehouse_sk#20, cs_item_sk#21, cs_promo_sk#22, cs_order_number#23L, cs_quantity#24L, cs_wholesale_cost#25, cs_list_price#26, cs_sales_price#27, cs_ext_discount_amt#28, cs_ext_sales_price#29, cs_ext_wholesale_cost#30, cs_ext_list_price#31, cs_ext_tax#32, cs_coupon_amt#33, cs_ext_ship_cost#34, cs_net_paid#35, cs_net_paid_inc_tax#36, cs_net_paid_inc_ship#37, cs_net_paid_inc_ship_tax#38, cs_net_profit#39, cs_sold_date_sk#40, cd_demo_sk#41, cd_gender#42, cd_marital_status#43, cd_education_status#44, cd_purchase_estimate#45L, cd_credit_rating#46, cd_dep_count#47L, cd_dep_employed_count#48L, cd_dep_college_count#49L, cd_demo_sk#131, cd_gender#132, cd_marital_status#133, cd_education_status#134, cd_purchase_estimate#135L, cd_credit_rating#136, cd_dep_count#137L, cd_dep_employed_count#138L, cd_dep_college_count#139L, c_customer_sk#50, c_customer_id#51, c_current_cdemo_sk#52, c_current_hdemo_sk#53, c_current_addr_sk#54, c_first_shipto_date_sk#55, c_first_sales_date_sk#56, c_salutation#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_day#61L, c_birth_month#62L, c_birth_year#63L, c_birth_country#64, c_login#65, c_email_address#66, c_last_review_date_sk#67, ca_address_sk#68, ca_address_id#69, ca_street_number#70, ca_street_name#71, ca_street_type#72, ca_suite_number#73, ca_city#74, ca_county#75, ca_state#76, ca_zip#77, ca_country#78, ca_gmt_offset#79, ca_location_type#80, d_date_sk#81, d_date_id#82, d_date#83, d_month_seq#84L, d_week_seq#85L, d_quarter_seq#86L, d_year#87L, d_dow#88L, d_moy#89L, d_dom#90L, d_qoy#91L, d_fy_year#92L, d_fy_quarter_seq#93L, d_fy_week_seq#94L, d_day_name#95, d_quarter_name#96, d_holiday#97, d_weekend#98, d_following_holiday#99, d_first_dom#100L, d_last_dom#101L, d_same_day_ly#102L, d_same_day_lq#103L, d_current_day#104, d_current_week#105, d_current_month#106, d_current_quarter#107, d_current_year#108, i_item_sk#109, i_item_id#110, i_rec_start_date#111, i_rec_end_date#112, i_item_desc#113, i_current_price#114, i_wholesale_cost#115, i_brand_id#116L, i_brand#117, i_class_id#118L, i_class#119, i_category_id#120L, i_category#121, i_manufact_id#122L, i_manufact#123, i_size#124, i_formulation#125, i_color#126, i_units#127, i_container#128, i_manager_id#129L, i_product_name#130, i_item_id#148, null, null, null, 7), List(cs_sold_time_sk#7, cs_ship_date_sk#8, cs_bill_customer_sk#9, cs_bill_cdemo_sk#10, cs_bill_hdemo_sk#11, cs_bill_addr_sk#12, cs_ship_customer_sk#13, cs_ship_cdemo_sk#14, cs_ship_hdemo_sk#15, cs_ship_addr_sk#16, cs_call_center_sk#17, cs_catalog_page_sk#18, cs_ship_mode_sk#19, cs_warehouse_sk#20, cs_item_sk#21, cs_promo_sk#22, cs_order_number#23L, cs_quantity#24L, cs_wholesale_cost#25, cs_list_price#26, cs_sales_price#27, cs_ext_discount_amt#28, cs_ext_sales_price#29, cs_ext_wholesale_cost#30, cs_ext_list_price#31, cs_ext_tax#32, cs_coupon_amt#33, cs_ext_ship_cost#34, cs_net_paid#35, cs_net_paid_inc_tax#36, cs_net_paid_inc_ship#37, cs_net_paid_inc_ship_tax#38, cs_net_profit#39, cs_sold_date_sk#40, cd_demo_sk#41, cd_gender#42, cd_marital_status#43, cd_education_status#44, cd_purchase_estimate#45L, cd_credit_rating#46, cd_dep_count#47L, cd_dep_employed_count#48L, cd_dep_college_count#49L, cd_demo_sk#131, cd_gender#132, cd_marital_status#133, cd_education_status#134, cd_purchase_estimate#135L, cd_credit_rating#136, cd_dep_count#137L, cd_dep_employed_count#138L, cd_dep_college_count#139L, c_customer_sk#50, c_customer_id#51, c_current_cdemo_sk#52, c_current_hdemo_sk#53, c_current_addr_sk#54, c_first_shipto_date_sk#55, c_first_sales_date_sk#56, c_salutation#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_day#61L, c_birth_month#62L, c_birth_year#63L, c_birth_country#64, c_login#65, c_email_address#66, c_last_review_date_sk#67, ca_address_sk#68, ca_address_id#69, ca_street_number#70, ca_street_name#71, ca_street_type#72, ca_suite_number#73, ca_city#74, ca_county#75, ca_state#76, ca_zip#77, ca_country#78, ca_gmt_offset#79, ca_location_type#80, d_date_sk#81, d_date_id#82, d_date#83, d_month_seq#84L, d_week_seq#85L, d_quarter_seq#86L, d_year#87L, d_dow#88L, d_moy#89L, d_dom#90L, d_qoy#91L, d_fy_year#92L, d_fy_quarter_seq#93L, d_fy_week_seq#94L, d_day_name#95, d_quarter_name#96, d_holiday#97, d_weekend#98, d_following_holiday#99, d_first_dom#100L, d_last_dom#101L, d_same_day_ly#102L, d_same_day_lq#103L, d_current_day#104, d_current_week#105, d_current_month#106, d_current_quarter#107, d_current_year#108, i_item_sk#109, i_item_id#110, i_rec_start_date#111, i_rec_end_date#112, i_item_desc#113, i_current_price#114, i_wholesale_cost#115, i_brand_id#116L, i_brand#117, i_class_id#118L, i_class#119, i_category_id#120L, i_category#121, i_manufact_id#122L, i_manufact#123, i_size#124, i_formulation#125, i_color#126, i_units#127, i_container#128, i_manager_id#129L, i_product_name#130, null, null, null, null, 15)], [cs_sold_time_sk#7, cs_ship_date_sk#8, cs_bill_customer_sk#9, cs_bill_cdemo_sk#10, cs_bill_hdemo_sk#11, cs_bill_addr_sk#12, cs_ship_customer_sk#13, cs_ship_cdemo_sk#14, cs_ship_hdemo_sk#15, cs_ship_addr_sk#16, cs_call_center_sk#17, cs_catalog_page_sk#18, cs_ship_mode_sk#19, cs_warehouse_sk#20, cs_item_sk#21, cs_promo_sk#22, cs_order_number#23L, cs_quantity#24L, cs_wholesale_cost#25, cs_list_price#26, cs_sales_price#27, cs_ext_discount_amt#28, cs_ext_sales_price#29, cs_ext_wholesale_cost#30, cs_ext_list_price#31, cs_ext_tax#32, cs_coupon_amt#33, cs_ext_ship_cost#34, cs_net_paid#35, cs_net_paid_inc_tax#36, cs_net_paid_inc_ship#37, cs_net_paid_inc_ship_tax#38, cs_net_profit#39, cs_sold_date_sk#40, cd_demo_sk#41, cd_gender#42, cd_marital_status#43, cd_education_status#44, cd_purchase_estimate#45L, cd_credit_rating#46, cd_dep_count#47L, cd_dep_employed_count#48L, cd_dep_college_count#49L, cd_demo_sk#131, cd_gender#132, cd_marital_status#133, cd_education_status#134, cd_purchase_estimate#135L, cd_credit_rating#136, cd_dep_count#137L, cd_dep_employed_count#138L, cd_dep_college_count#139L, c_customer_sk#50, c_customer_id#51, c_current_cdemo_sk#52, c_current_hdemo_sk#53, c_current_addr_sk#54, c_first_shipto_date_sk#55, c_first_sales_date_sk#56, c_salutation#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_day#61L, c_birth_month#62L, c_birth_year#63L, c_birth_country#64, c_login#65, c_email_address#66, c_last_review_date_sk#67, ca_address_sk#68, ca_address_id#69, ca_street_number#70, ca_street_name#71, ca_street_type#72, ca_suite_number#73, ca_city#74, ca_county#75, ca_state#76, ca_zip#77, ca_country#78, ca_gmt_offset#79, ca_location_type#80, d_date_sk#81, d_date_id#82, d_date#83, d_month_seq#84L, d_week_seq#85L, d_quarter_seq#86L, d_year#87L, d_dow#88L, d_moy#89L, d_dom#90L, d_qoy#91L, d_fy_year#92L, d_fy_quarter_seq#93L, d_fy_week_seq#94L, d_day_name#95, d_quarter_name#96, d_holiday#97, d_weekend#98, d_following_holiday#99, d_first_dom#100L, d_last_dom#101L, d_same_day_ly#102L, d_same_day_lq#103L, d_current_day#104, d_current_week#105, d_current_month#106, d_current_quarter#107, d_current_year#108, i_item_sk#109, i_item_id#110, i_rec_start_date#111, i_rec_end_date#112, i_item_desc#113, i_current_price#114, i_wholesale_cost#115, i_brand_id#116L, i_brand#117, i_class_id#118L, i_class#119, i_category_id#120L, i_category#121, i_manufact_id#122L, i_manufact#123, i_size#124, i_formulation#125, i_color#126, i_units#127, i_container#128, i_manager_id#129L, i_product_name#130, i_item_id#152, ca_country#153, ca_state#154, ca_county#155, spark_grouping_id#147]
                     +- Project [cs_sold_time_sk#7, cs_ship_date_sk#8, cs_bill_customer_sk#9, cs_bill_cdemo_sk#10, cs_bill_hdemo_sk#11, cs_bill_addr_sk#12, cs_ship_customer_sk#13, cs_ship_cdemo_sk#14, cs_ship_hdemo_sk#15, cs_ship_addr_sk#16, cs_call_center_sk#17, cs_catalog_page_sk#18, cs_ship_mode_sk#19, cs_warehouse_sk#20, cs_item_sk#21, cs_promo_sk#22, cs_order_number#23L, cs_quantity#24L, cs_wholesale_cost#25, cs_list_price#26, cs_sales_price#27, cs_ext_discount_amt#28, cs_ext_sales_price#29, cs_ext_wholesale_cost#30, cs_ext_list_price#31, cs_ext_tax#32, cs_coupon_amt#33, cs_ext_ship_cost#34, cs_net_paid#35, cs_net_paid_inc_tax#36, cs_net_paid_inc_ship#37, cs_net_paid_inc_ship_tax#38, cs_net_profit#39, cs_sold_date_sk#40, cd_demo_sk#41, cd_gender#42, cd_marital_status#43, cd_education_status#44, cd_purchase_estimate#45L, cd_credit_rating#46, cd_dep_count#47L, cd_dep_employed_count#48L, cd_dep_college_count#49L, cd_demo_sk#131, cd_gender#132, cd_marital_status#133, cd_education_status#134, cd_purchase_estimate#135L, cd_credit_rating#136, cd_dep_count#137L, cd_dep_employed_count#138L, cd_dep_college_count#139L, c_customer_sk#50, c_customer_id#51, c_current_cdemo_sk#52, c_current_hdemo_sk#53, c_current_addr_sk#54, c_first_shipto_date_sk#55, c_first_sales_date_sk#56, c_salutation#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_day#61L, c_birth_month#62L, c_birth_year#63L, c_birth_country#64, c_login#65, c_email_address#66, c_last_review_date_sk#67, ca_address_sk#68, ca_address_id#69, ca_street_number#70, ca_street_name#71, ca_street_type#72, ca_suite_number#73, ca_city#74, ca_county#75, ca_state#76, ca_zip#77, ca_country#78, ca_gmt_offset#79, ca_location_type#80, d_date_sk#81, d_date_id#82, d_date#83, d_month_seq#84L, d_week_seq#85L, d_quarter_seq#86L, d_year#87L, d_dow#88L, d_moy#89L, d_dom#90L, d_qoy#91L, d_fy_year#92L, d_fy_quarter_seq#93L, d_fy_week_seq#94L, d_day_name#95, d_quarter_name#96, d_holiday#97, d_weekend#98, d_following_holiday#99, d_first_dom#100L, d_last_dom#101L, d_same_day_ly#102L, d_same_day_lq#103L, d_current_day#104, d_current_week#105, d_current_month#106, d_current_quarter#107, d_current_year#108, i_item_sk#109, i_item_id#110, i_rec_start_date#111, i_rec_end_date#112, i_item_desc#113, i_current_price#114, i_wholesale_cost#115, i_brand_id#116L, i_brand#117, i_class_id#118L, i_class#119, i_category_id#120L, i_category#121, i_manufact_id#122L, i_manufact#123, i_size#124, i_formulation#125, i_color#126, i_units#127, i_container#128, i_manager_id#129L, i_product_name#130, i_item_id#110 AS i_item_id#148, ca_country#78 AS ca_country#149, ca_state#76 AS ca_state#150, ca_county#75 AS ca_county#151]
                        +- Filter (((((cs_sold_date_sk#40 = d_date_sk#81) AND (cs_item_sk#21 = i_item_sk#109)) AND (cs_bill_cdemo_sk#10 = cd_demo_sk#41)) AND (((cs_bill_customer_sk#9 = c_customer_sk#50) AND (cd_gender#42 = F)) AND (cd_education_status#44 = Unknown))) AND ((((c_current_cdemo_sk#52 = cd_demo_sk#131) AND (c_current_addr_sk#54 = ca_address_sk#68)) AND cast(c_birth_month#62L as bigint) IN (cast(1 as bigint),cast(6 as bigint),cast(8 as bigint),cast(9 as bigint),cast(12 as bigint),cast(2 as bigint))) AND ((d_year#87L = cast(1998 as bigint)) AND ca_state#76 IN (MS,IN,ND,OK,NM,VA,MS))))
                           +- Join Inner
                              :- Join Inner
                              :  :- Join Inner
                              :  :  :- Join Inner
                              :  :  :  :- Join Inner
                              :  :  :  :  :- Join Inner
                              :  :  :  :  :  :- SubqueryAlias spark_catalog.data_3t.catalog_sales
                              :  :  :  :  :  :  +- Relation[cs_sold_time_sk#7,cs_ship_date_sk#8,cs_bill_customer_sk#9,cs_bill_cdemo_sk#10,cs_bill_hdemo_sk#11,cs_bill_addr_sk#12,cs_ship_customer_sk#13,cs_ship_cdemo_sk#14,cs_ship_hdemo_sk#15,cs_ship_addr_sk#16,cs_call_center_sk#17,cs_catalog_page_sk#18,cs_ship_mode_sk#19,cs_warehouse_sk#20,cs_item_sk#21,cs_promo_sk#22,cs_order_number#23L,cs_quantity#24L,cs_wholesale_cost#25,cs_list_price#26,cs_sales_price#27,cs_ext_discount_amt#28,cs_ext_sales_price#29,cs_ext_wholesale_cost#30,cs_ext_list_price#31,cs_ext_tax#32,cs_coupon_amt#33,cs_ext_ship_cost#34,cs_net_paid#35,cs_net_paid_inc_tax#36,cs_net_paid_inc_ship#37,cs_net_paid_inc_ship_tax#38,cs_net_profit#39,cs_sold_date_sk#40] parquet
                              :  :  :  :  :  +- SubqueryAlias cd1
                              :  :  :  :  :     +- SubqueryAlias spark_catalog.data_3t.customer_demographics
                              :  :  :  :  :        +- Relation[cd_demo_sk#41,cd_gender#42,cd_marital_status#43,cd_education_status#44,cd_purchase_estimate#45L,cd_credit_rating#46,cd_dep_count#47L,cd_dep_employed_count#48L,cd_dep_college_count#49L] parquet
                              :  :  :  :  +- SubqueryAlias cd2
                              :  :  :  :     +- SubqueryAlias spark_catalog.data_3t.customer_demographics
                              :  :  :  :        +- Relation[cd_demo_sk#131,cd_gender#132,cd_marital_status#133,cd_education_status#134,cd_purchase_estimate#135L,cd_credit_rating#136,cd_dep_count#137L,cd_dep_employed_count#138L,cd_dep_college_count#139L] parquet
                              :  :  :  +- SubqueryAlias spark_catalog.data_3t.customer
                              :  :  :     +- Relation[c_customer_sk#50,c_customer_id#51,c_current_cdemo_sk#52,c_current_hdemo_sk#53,c_current_addr_sk#54,c_first_shipto_date_sk#55,c_first_sales_date_sk#56,c_salutation#57,c_first_name#58,c_last_name#59,c_preferred_cust_flag#60,c_birth_day#61L,c_birth_month#62L,c_birth_year#63L,c_birth_country#64,c_login#65,c_email_address#66,c_last_review_date_sk#67] parquet
                              :  :  +- SubqueryAlias spark_catalog.data_3t.customer_address
                              :  :     +- Relation[ca_address_sk#68,ca_address_id#69,ca_street_number#70,ca_street_name#71,ca_street_type#72,ca_suite_number#73,ca_city#74,ca_county#75,ca_state#76,ca_zip#77,ca_country#78,ca_gmt_offset#79,ca_location_type#80] parquet
                              :  +- SubqueryAlias spark_catalog.data_3t.date_dim
                              :     +- Relation[d_date_sk#81,d_date_id#82,d_date#83,d_month_seq#84L,d_week_seq#85L,d_quarter_seq#86L,d_year#87L,d_dow#88L,d_moy#89L,d_dom#90L,d_qoy#91L,d_fy_year#92L,d_fy_quarter_seq#93L,d_fy_week_seq#94L,d_day_name#95,d_quarter_name#96,d_holiday#97,d_weekend#98,d_following_holiday#99,d_first_dom#100L,d_last_dom#101L,d_same_day_ly#102L,d_same_day_lq#103L,d_current_day#104,d_current_week#105,d_current_month#106,d_current_quarter#107,d_current_year#108] parquet
                              +- SubqueryAlias spark_catalog.data_3t.item
                                 +- Relation[i_item_sk#109,i_item_id#110,i_rec_start_date#111,i_rec_end_date#112,i_item_desc#113,i_current_price#114,i_wholesale_cost#115,i_brand_id#116L,i_brand#117,i_class_id#118L,i_class#119,i_category_id#120L,i_category#121,i_manufact_id#122L,i_manufact#123,i_size#124,i_formulation#125,i_color#126,i_units#127,i_container#128,i_manager_id#129L,i_product_name#130] parquet

== Analyzed Logical Plan ==
i_item_id: string, ca_country: string, ca_state: string, ca_county: string, agg1: string, agg2: string, agg3: string, agg4: string, agg5: string, agg6: string, agg7: string
GlobalLimit 21
+- LocalLimit 21
   +- Project [cast(i_item_id#152 as string) AS i_item_id#182, cast(ca_country#153 as string) AS ca_country#183, cast(ca_state#154 as string) AS ca_state#184, cast(ca_county#155 as string) AS ca_county#185, cast(agg1#0 as string) AS agg1#186, cast(agg2#1 as string) AS agg2#187, cast(agg3#2 as string) AS agg3#188, cast(agg4#3 as string) AS agg4#189, cast(agg5#4 as string) AS agg5#190, cast(agg6#5 as string) AS agg6#191, cast(agg7#6 as string) AS agg7#192]
      +- GlobalLimit 100
         +- LocalLimit 100
            +- Sort [ca_country#153 ASC NULLS FIRST, ca_state#154 ASC NULLS FIRST, ca_county#155 ASC NULLS FIRST, i_item_id#152 ASC NULLS FIRST], true
               +- Aggregate [i_item_id#152, ca_country#153, ca_state#154, ca_county#155, spark_grouping_id#147], [i_item_id#152, ca_country#153, ca_state#154, ca_county#155, avg(cast(cs_quantity#24L as decimal(12,2))) AS agg1#0, avg(cast(cs_list_price#26 as decimal(12,2))) AS agg2#1, avg(cast(cs_coupon_amt#33 as decimal(12,2))) AS agg3#2, avg(cast(cs_sales_price#27 as decimal(12,2))) AS agg4#3, avg(cast(cs_net_profit#39 as decimal(12,2))) AS agg5#4, avg(cast(c_birth_year#63L as decimal(12,2))) AS agg6#5, avg(cast(cd_dep_count#47L as decimal(12,2))) AS agg7#6]
                  +- Expand [List(cs_sold_time_sk#7, cs_ship_date_sk#8, cs_bill_customer_sk#9, cs_bill_cdemo_sk#10, cs_bill_hdemo_sk#11, cs_bill_addr_sk#12, cs_ship_customer_sk#13, cs_ship_cdemo_sk#14, cs_ship_hdemo_sk#15, cs_ship_addr_sk#16, cs_call_center_sk#17, cs_catalog_page_sk#18, cs_ship_mode_sk#19, cs_warehouse_sk#20, cs_item_sk#21, cs_promo_sk#22, cs_order_number#23L, cs_quantity#24L, cs_wholesale_cost#25, cs_list_price#26, cs_sales_price#27, cs_ext_discount_amt#28, cs_ext_sales_price#29, cs_ext_wholesale_cost#30, cs_ext_list_price#31, cs_ext_tax#32, cs_coupon_amt#33, cs_ext_ship_cost#34, cs_net_paid#35, cs_net_paid_inc_tax#36, cs_net_paid_inc_ship#37, cs_net_paid_inc_ship_tax#38, cs_net_profit#39, cs_sold_date_sk#40, cd_demo_sk#41, cd_gender#42, cd_marital_status#43, cd_education_status#44, cd_purchase_estimate#45L, cd_credit_rating#46, cd_dep_count#47L, cd_dep_employed_count#48L, cd_dep_college_count#49L, cd_demo_sk#131, cd_gender#132, cd_marital_status#133, cd_education_status#134, cd_purchase_estimate#135L, cd_credit_rating#136, cd_dep_count#137L, cd_dep_employed_count#138L, cd_dep_college_count#139L, c_customer_sk#50, c_customer_id#51, c_current_cdemo_sk#52, c_current_hdemo_sk#53, c_current_addr_sk#54, c_first_shipto_date_sk#55, c_first_sales_date_sk#56, c_salutation#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_day#61L, c_birth_month#62L, c_birth_year#63L, c_birth_country#64, c_login#65, c_email_address#66, c_last_review_date_sk#67, ca_address_sk#68, ca_address_id#69, ca_street_number#70, ca_street_name#71, ca_street_type#72, ca_suite_number#73, ca_city#74, ca_county#75, ca_state#76, ca_zip#77, ca_country#78, ca_gmt_offset#79, ca_location_type#80, d_date_sk#81, d_date_id#82, d_date#83, d_month_seq#84L, d_week_seq#85L, d_quarter_seq#86L, d_year#87L, d_dow#88L, d_moy#89L, d_dom#90L, d_qoy#91L, d_fy_year#92L, d_fy_quarter_seq#93L, d_fy_week_seq#94L, d_day_name#95, d_quarter_name#96, d_holiday#97, d_weekend#98, d_following_holiday#99, d_first_dom#100L, d_last_dom#101L, d_same_day_ly#102L, d_same_day_lq#103L, d_current_day#104, d_current_week#105, d_current_month#106, d_current_quarter#107, d_current_year#108, i_item_sk#109, i_item_id#110, i_rec_start_date#111, i_rec_end_date#112, i_item_desc#113, i_current_price#114, i_wholesale_cost#115, i_brand_id#116L, i_brand#117, i_class_id#118L, i_class#119, i_category_id#120L, i_category#121, i_manufact_id#122L, i_manufact#123, i_size#124, i_formulation#125, i_color#126, i_units#127, i_container#128, i_manager_id#129L, i_product_name#130, i_item_id#148, ca_country#149, ca_state#150, ca_county#151, 0), List(cs_sold_time_sk#7, cs_ship_date_sk#8, cs_bill_customer_sk#9, cs_bill_cdemo_sk#10, cs_bill_hdemo_sk#11, cs_bill_addr_sk#12, cs_ship_customer_sk#13, cs_ship_cdemo_sk#14, cs_ship_hdemo_sk#15, cs_ship_addr_sk#16, cs_call_center_sk#17, cs_catalog_page_sk#18, cs_ship_mode_sk#19, cs_warehouse_sk#20, cs_item_sk#21, cs_promo_sk#22, cs_order_number#23L, cs_quantity#24L, cs_wholesale_cost#25, cs_list_price#26, cs_sales_price#27, cs_ext_discount_amt#28, cs_ext_sales_price#29, cs_ext_wholesale_cost#30, cs_ext_list_price#31, cs_ext_tax#32, cs_coupon_amt#33, cs_ext_ship_cost#34, cs_net_paid#35, cs_net_paid_inc_tax#36, cs_net_paid_inc_ship#37, cs_net_paid_inc_ship_tax#38, cs_net_profit#39, cs_sold_date_sk#40, cd_demo_sk#41, cd_gender#42, cd_marital_status#43, cd_education_status#44, cd_purchase_estimate#45L, cd_credit_rating#46, cd_dep_count#47L, cd_dep_employed_count#48L, cd_dep_college_count#49L, cd_demo_sk#131, cd_gender#132, cd_marital_status#133, cd_education_status#134, cd_purchase_estimate#135L, cd_credit_rating#136, cd_dep_count#137L, cd_dep_employed_count#138L, cd_dep_college_count#139L, c_customer_sk#50, c_customer_id#51, c_current_cdemo_sk#52, c_current_hdemo_sk#53, c_current_addr_sk#54, c_first_shipto_date_sk#55, c_first_sales_date_sk#56, c_salutation#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_day#61L, c_birth_month#62L, c_birth_year#63L, c_birth_country#64, c_login#65, c_email_address#66, c_last_review_date_sk#67, ca_address_sk#68, ca_address_id#69, ca_street_number#70, ca_street_name#71, ca_street_type#72, ca_suite_number#73, ca_city#74, ca_county#75, ca_state#76, ca_zip#77, ca_country#78, ca_gmt_offset#79, ca_location_type#80, d_date_sk#81, d_date_id#82, d_date#83, d_month_seq#84L, d_week_seq#85L, d_quarter_seq#86L, d_year#87L, d_dow#88L, d_moy#89L, d_dom#90L, d_qoy#91L, d_fy_year#92L, d_fy_quarter_seq#93L, d_fy_week_seq#94L, d_day_name#95, d_quarter_name#96, d_holiday#97, d_weekend#98, d_following_holiday#99, d_first_dom#100L, d_last_dom#101L, d_same_day_ly#102L, d_same_day_lq#103L, d_current_day#104, d_current_week#105, d_current_month#106, d_current_quarter#107, d_current_year#108, i_item_sk#109, i_item_id#110, i_rec_start_date#111, i_rec_end_date#112, i_item_desc#113, i_current_price#114, i_wholesale_cost#115, i_brand_id#116L, i_brand#117, i_class_id#118L, i_class#119, i_category_id#120L, i_category#121, i_manufact_id#122L, i_manufact#123, i_size#124, i_formulation#125, i_color#126, i_units#127, i_container#128, i_manager_id#129L, i_product_name#130, i_item_id#148, ca_country#149, ca_state#150, null, 1), List(cs_sold_time_sk#7, cs_ship_date_sk#8, cs_bill_customer_sk#9, cs_bill_cdemo_sk#10, cs_bill_hdemo_sk#11, cs_bill_addr_sk#12, cs_ship_customer_sk#13, cs_ship_cdemo_sk#14, cs_ship_hdemo_sk#15, cs_ship_addr_sk#16, cs_call_center_sk#17, cs_catalog_page_sk#18, cs_ship_mode_sk#19, cs_warehouse_sk#20, cs_item_sk#21, cs_promo_sk#22, cs_order_number#23L, cs_quantity#24L, cs_wholesale_cost#25, cs_list_price#26, cs_sales_price#27, cs_ext_discount_amt#28, cs_ext_sales_price#29, cs_ext_wholesale_cost#30, cs_ext_list_price#31, cs_ext_tax#32, cs_coupon_amt#33, cs_ext_ship_cost#34, cs_net_paid#35, cs_net_paid_inc_tax#36, cs_net_paid_inc_ship#37, cs_net_paid_inc_ship_tax#38, cs_net_profit#39, cs_sold_date_sk#40, cd_demo_sk#41, cd_gender#42, cd_marital_status#43, cd_education_status#44, cd_purchase_estimate#45L, cd_credit_rating#46, cd_dep_count#47L, cd_dep_employed_count#48L, cd_dep_college_count#49L, cd_demo_sk#131, cd_gender#132, cd_marital_status#133, cd_education_status#134, cd_purchase_estimate#135L, cd_credit_rating#136, cd_dep_count#137L, cd_dep_employed_count#138L, cd_dep_college_count#139L, c_customer_sk#50, c_customer_id#51, c_current_cdemo_sk#52, c_current_hdemo_sk#53, c_current_addr_sk#54, c_first_shipto_date_sk#55, c_first_sales_date_sk#56, c_salutation#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_day#61L, c_birth_month#62L, c_birth_year#63L, c_birth_country#64, c_login#65, c_email_address#66, c_last_review_date_sk#67, ca_address_sk#68, ca_address_id#69, ca_street_number#70, ca_street_name#71, ca_street_type#72, ca_suite_number#73, ca_city#74, ca_county#75, ca_state#76, ca_zip#77, ca_country#78, ca_gmt_offset#79, ca_location_type#80, d_date_sk#81, d_date_id#82, d_date#83, d_month_seq#84L, d_week_seq#85L, d_quarter_seq#86L, d_year#87L, d_dow#88L, d_moy#89L, d_dom#90L, d_qoy#91L, d_fy_year#92L, d_fy_quarter_seq#93L, d_fy_week_seq#94L, d_day_name#95, d_quarter_name#96, d_holiday#97, d_weekend#98, d_following_holiday#99, d_first_dom#100L, d_last_dom#101L, d_same_day_ly#102L, d_same_day_lq#103L, d_current_day#104, d_current_week#105, d_current_month#106, d_current_quarter#107, d_current_year#108, i_item_sk#109, i_item_id#110, i_rec_start_date#111, i_rec_end_date#112, i_item_desc#113, i_current_price#114, i_wholesale_cost#115, i_brand_id#116L, i_brand#117, i_class_id#118L, i_class#119, i_category_id#120L, i_category#121, i_manufact_id#122L, i_manufact#123, i_size#124, i_formulation#125, i_color#126, i_units#127, i_container#128, i_manager_id#129L, i_product_name#130, i_item_id#148, ca_country#149, null, null, 3), List(cs_sold_time_sk#7, cs_ship_date_sk#8, cs_bill_customer_sk#9, cs_bill_cdemo_sk#10, cs_bill_hdemo_sk#11, cs_bill_addr_sk#12, cs_ship_customer_sk#13, cs_ship_cdemo_sk#14, cs_ship_hdemo_sk#15, cs_ship_addr_sk#16, cs_call_center_sk#17, cs_catalog_page_sk#18, cs_ship_mode_sk#19, cs_warehouse_sk#20, cs_item_sk#21, cs_promo_sk#22, cs_order_number#23L, cs_quantity#24L, cs_wholesale_cost#25, cs_list_price#26, cs_sales_price#27, cs_ext_discount_amt#28, cs_ext_sales_price#29, cs_ext_wholesale_cost#30, cs_ext_list_price#31, cs_ext_tax#32, cs_coupon_amt#33, cs_ext_ship_cost#34, cs_net_paid#35, cs_net_paid_inc_tax#36, cs_net_paid_inc_ship#37, cs_net_paid_inc_ship_tax#38, cs_net_profit#39, cs_sold_date_sk#40, cd_demo_sk#41, cd_gender#42, cd_marital_status#43, cd_education_status#44, cd_purchase_estimate#45L, cd_credit_rating#46, cd_dep_count#47L, cd_dep_employed_count#48L, cd_dep_college_count#49L, cd_demo_sk#131, cd_gender#132, cd_marital_status#133, cd_education_status#134, cd_purchase_estimate#135L, cd_credit_rating#136, cd_dep_count#137L, cd_dep_employed_count#138L, cd_dep_college_count#139L, c_customer_sk#50, c_customer_id#51, c_current_cdemo_sk#52, c_current_hdemo_sk#53, c_current_addr_sk#54, c_first_shipto_date_sk#55, c_first_sales_date_sk#56, c_salutation#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_day#61L, c_birth_month#62L, c_birth_year#63L, c_birth_country#64, c_login#65, c_email_address#66, c_last_review_date_sk#67, ca_address_sk#68, ca_address_id#69, ca_street_number#70, ca_street_name#71, ca_street_type#72, ca_suite_number#73, ca_city#74, ca_county#75, ca_state#76, ca_zip#77, ca_country#78, ca_gmt_offset#79, ca_location_type#80, d_date_sk#81, d_date_id#82, d_date#83, d_month_seq#84L, d_week_seq#85L, d_quarter_seq#86L, d_year#87L, d_dow#88L, d_moy#89L, d_dom#90L, d_qoy#91L, d_fy_year#92L, d_fy_quarter_seq#93L, d_fy_week_seq#94L, d_day_name#95, d_quarter_name#96, d_holiday#97, d_weekend#98, d_following_holiday#99, d_first_dom#100L, d_last_dom#101L, d_same_day_ly#102L, d_same_day_lq#103L, d_current_day#104, d_current_week#105, d_current_month#106, d_current_quarter#107, d_current_year#108, i_item_sk#109, i_item_id#110, i_rec_start_date#111, i_rec_end_date#112, i_item_desc#113, i_current_price#114, i_wholesale_cost#115, i_brand_id#116L, i_brand#117, i_class_id#118L, i_class#119, i_category_id#120L, i_category#121, i_manufact_id#122L, i_manufact#123, i_size#124, i_formulation#125, i_color#126, i_units#127, i_container#128, i_manager_id#129L, i_product_name#130, i_item_id#148, null, null, null, 7), List(cs_sold_time_sk#7, cs_ship_date_sk#8, cs_bill_customer_sk#9, cs_bill_cdemo_sk#10, cs_bill_hdemo_sk#11, cs_bill_addr_sk#12, cs_ship_customer_sk#13, cs_ship_cdemo_sk#14, cs_ship_hdemo_sk#15, cs_ship_addr_sk#16, cs_call_center_sk#17, cs_catalog_page_sk#18, cs_ship_mode_sk#19, cs_warehouse_sk#20, cs_item_sk#21, cs_promo_sk#22, cs_order_number#23L, cs_quantity#24L, cs_wholesale_cost#25, cs_list_price#26, cs_sales_price#27, cs_ext_discount_amt#28, cs_ext_sales_price#29, cs_ext_wholesale_cost#30, cs_ext_list_price#31, cs_ext_tax#32, cs_coupon_amt#33, cs_ext_ship_cost#34, cs_net_paid#35, cs_net_paid_inc_tax#36, cs_net_paid_inc_ship#37, cs_net_paid_inc_ship_tax#38, cs_net_profit#39, cs_sold_date_sk#40, cd_demo_sk#41, cd_gender#42, cd_marital_status#43, cd_education_status#44, cd_purchase_estimate#45L, cd_credit_rating#46, cd_dep_count#47L, cd_dep_employed_count#48L, cd_dep_college_count#49L, cd_demo_sk#131, cd_gender#132, cd_marital_status#133, cd_education_status#134, cd_purchase_estimate#135L, cd_credit_rating#136, cd_dep_count#137L, cd_dep_employed_count#138L, cd_dep_college_count#139L, c_customer_sk#50, c_customer_id#51, c_current_cdemo_sk#52, c_current_hdemo_sk#53, c_current_addr_sk#54, c_first_shipto_date_sk#55, c_first_sales_date_sk#56, c_salutation#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_day#61L, c_birth_month#62L, c_birth_year#63L, c_birth_country#64, c_login#65, c_email_address#66, c_last_review_date_sk#67, ca_address_sk#68, ca_address_id#69, ca_street_number#70, ca_street_name#71, ca_street_type#72, ca_suite_number#73, ca_city#74, ca_county#75, ca_state#76, ca_zip#77, ca_country#78, ca_gmt_offset#79, ca_location_type#80, d_date_sk#81, d_date_id#82, d_date#83, d_month_seq#84L, d_week_seq#85L, d_quarter_seq#86L, d_year#87L, d_dow#88L, d_moy#89L, d_dom#90L, d_qoy#91L, d_fy_year#92L, d_fy_quarter_seq#93L, d_fy_week_seq#94L, d_day_name#95, d_quarter_name#96, d_holiday#97, d_weekend#98, d_following_holiday#99, d_first_dom#100L, d_last_dom#101L, d_same_day_ly#102L, d_same_day_lq#103L, d_current_day#104, d_current_week#105, d_current_month#106, d_current_quarter#107, d_current_year#108, i_item_sk#109, i_item_id#110, i_rec_start_date#111, i_rec_end_date#112, i_item_desc#113, i_current_price#114, i_wholesale_cost#115, i_brand_id#116L, i_brand#117, i_class_id#118L, i_class#119, i_category_id#120L, i_category#121, i_manufact_id#122L, i_manufact#123, i_size#124, i_formulation#125, i_color#126, i_units#127, i_container#128, i_manager_id#129L, i_product_name#130, null, null, null, null, 15)], [cs_sold_time_sk#7, cs_ship_date_sk#8, cs_bill_customer_sk#9, cs_bill_cdemo_sk#10, cs_bill_hdemo_sk#11, cs_bill_addr_sk#12, cs_ship_customer_sk#13, cs_ship_cdemo_sk#14, cs_ship_hdemo_sk#15, cs_ship_addr_sk#16, cs_call_center_sk#17, cs_catalog_page_sk#18, cs_ship_mode_sk#19, cs_warehouse_sk#20, cs_item_sk#21, cs_promo_sk#22, cs_order_number#23L, cs_quantity#24L, cs_wholesale_cost#25, cs_list_price#26, cs_sales_price#27, cs_ext_discount_amt#28, cs_ext_sales_price#29, cs_ext_wholesale_cost#30, cs_ext_list_price#31, cs_ext_tax#32, cs_coupon_amt#33, cs_ext_ship_cost#34, cs_net_paid#35, cs_net_paid_inc_tax#36, cs_net_paid_inc_ship#37, cs_net_paid_inc_ship_tax#38, cs_net_profit#39, cs_sold_date_sk#40, cd_demo_sk#41, cd_gender#42, cd_marital_status#43, cd_education_status#44, cd_purchase_estimate#45L, cd_credit_rating#46, cd_dep_count#47L, cd_dep_employed_count#48L, cd_dep_college_count#49L, cd_demo_sk#131, cd_gender#132, cd_marital_status#133, cd_education_status#134, cd_purchase_estimate#135L, cd_credit_rating#136, cd_dep_count#137L, cd_dep_employed_count#138L, cd_dep_college_count#139L, c_customer_sk#50, c_customer_id#51, c_current_cdemo_sk#52, c_current_hdemo_sk#53, c_current_addr_sk#54, c_first_shipto_date_sk#55, c_first_sales_date_sk#56, c_salutation#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_day#61L, c_birth_month#62L, c_birth_year#63L, c_birth_country#64, c_login#65, c_email_address#66, c_last_review_date_sk#67, ca_address_sk#68, ca_address_id#69, ca_street_number#70, ca_street_name#71, ca_street_type#72, ca_suite_number#73, ca_city#74, ca_county#75, ca_state#76, ca_zip#77, ca_country#78, ca_gmt_offset#79, ca_location_type#80, d_date_sk#81, d_date_id#82, d_date#83, d_month_seq#84L, d_week_seq#85L, d_quarter_seq#86L, d_year#87L, d_dow#88L, d_moy#89L, d_dom#90L, d_qoy#91L, d_fy_year#92L, d_fy_quarter_seq#93L, d_fy_week_seq#94L, d_day_name#95, d_quarter_name#96, d_holiday#97, d_weekend#98, d_following_holiday#99, d_first_dom#100L, d_last_dom#101L, d_same_day_ly#102L, d_same_day_lq#103L, d_current_day#104, d_current_week#105, d_current_month#106, d_current_quarter#107, d_current_year#108, i_item_sk#109, i_item_id#110, i_rec_start_date#111, i_rec_end_date#112, i_item_desc#113, i_current_price#114, i_wholesale_cost#115, i_brand_id#116L, i_brand#117, i_class_id#118L, i_class#119, i_category_id#120L, i_category#121, i_manufact_id#122L, i_manufact#123, i_size#124, i_formulation#125, i_color#126, i_units#127, i_container#128, i_manager_id#129L, i_product_name#130, i_item_id#152, ca_country#153, ca_state#154, ca_county#155, spark_grouping_id#147]
                     +- Project [cs_sold_time_sk#7, cs_ship_date_sk#8, cs_bill_customer_sk#9, cs_bill_cdemo_sk#10, cs_bill_hdemo_sk#11, cs_bill_addr_sk#12, cs_ship_customer_sk#13, cs_ship_cdemo_sk#14, cs_ship_hdemo_sk#15, cs_ship_addr_sk#16, cs_call_center_sk#17, cs_catalog_page_sk#18, cs_ship_mode_sk#19, cs_warehouse_sk#20, cs_item_sk#21, cs_promo_sk#22, cs_order_number#23L, cs_quantity#24L, cs_wholesale_cost#25, cs_list_price#26, cs_sales_price#27, cs_ext_discount_amt#28, cs_ext_sales_price#29, cs_ext_wholesale_cost#30, cs_ext_list_price#31, cs_ext_tax#32, cs_coupon_amt#33, cs_ext_ship_cost#34, cs_net_paid#35, cs_net_paid_inc_tax#36, cs_net_paid_inc_ship#37, cs_net_paid_inc_ship_tax#38, cs_net_profit#39, cs_sold_date_sk#40, cd_demo_sk#41, cd_gender#42, cd_marital_status#43, cd_education_status#44, cd_purchase_estimate#45L, cd_credit_rating#46, cd_dep_count#47L, cd_dep_employed_count#48L, cd_dep_college_count#49L, cd_demo_sk#131, cd_gender#132, cd_marital_status#133, cd_education_status#134, cd_purchase_estimate#135L, cd_credit_rating#136, cd_dep_count#137L, cd_dep_employed_count#138L, cd_dep_college_count#139L, c_customer_sk#50, c_customer_id#51, c_current_cdemo_sk#52, c_current_hdemo_sk#53, c_current_addr_sk#54, c_first_shipto_date_sk#55, c_first_sales_date_sk#56, c_salutation#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_day#61L, c_birth_month#62L, c_birth_year#63L, c_birth_country#64, c_login#65, c_email_address#66, c_last_review_date_sk#67, ca_address_sk#68, ca_address_id#69, ca_street_number#70, ca_street_name#71, ca_street_type#72, ca_suite_number#73, ca_city#74, ca_county#75, ca_state#76, ca_zip#77, ca_country#78, ca_gmt_offset#79, ca_location_type#80, d_date_sk#81, d_date_id#82, d_date#83, d_month_seq#84L, d_week_seq#85L, d_quarter_seq#86L, d_year#87L, d_dow#88L, d_moy#89L, d_dom#90L, d_qoy#91L, d_fy_year#92L, d_fy_quarter_seq#93L, d_fy_week_seq#94L, d_day_name#95, d_quarter_name#96, d_holiday#97, d_weekend#98, d_following_holiday#99, d_first_dom#100L, d_last_dom#101L, d_same_day_ly#102L, d_same_day_lq#103L, d_current_day#104, d_current_week#105, d_current_month#106, d_current_quarter#107, d_current_year#108, i_item_sk#109, i_item_id#110, i_rec_start_date#111, i_rec_end_date#112, i_item_desc#113, i_current_price#114, i_wholesale_cost#115, i_brand_id#116L, i_brand#117, i_class_id#118L, i_class#119, i_category_id#120L, i_category#121, i_manufact_id#122L, i_manufact#123, i_size#124, i_formulation#125, i_color#126, i_units#127, i_container#128, i_manager_id#129L, i_product_name#130, i_item_id#110 AS i_item_id#148, ca_country#78 AS ca_country#149, ca_state#76 AS ca_state#150, ca_county#75 AS ca_county#151]
                        +- Filter (((((cs_sold_date_sk#40 = d_date_sk#81) AND (cs_item_sk#21 = i_item_sk#109)) AND (cs_bill_cdemo_sk#10 = cd_demo_sk#41)) AND (((cs_bill_customer_sk#9 = c_customer_sk#50) AND (cd_gender#42 = F)) AND (cd_education_status#44 = Unknown))) AND ((((c_current_cdemo_sk#52 = cd_demo_sk#131) AND (c_current_addr_sk#54 = ca_address_sk#68)) AND cast(c_birth_month#62L as bigint) IN (cast(1 as bigint),cast(6 as bigint),cast(8 as bigint),cast(9 as bigint),cast(12 as bigint),cast(2 as bigint))) AND ((d_year#87L = cast(1998 as bigint)) AND ca_state#76 IN (MS,IN,ND,OK,NM,VA,MS))))
                           +- Join Inner
                              :- Join Inner
                              :  :- Join Inner
                              :  :  :- Join Inner
                              :  :  :  :- Join Inner
                              :  :  :  :  :- Join Inner
                              :  :  :  :  :  :- SubqueryAlias spark_catalog.data_3t.catalog_sales
                              :  :  :  :  :  :  +- Relation[cs_sold_time_sk#7,cs_ship_date_sk#8,cs_bill_customer_sk#9,cs_bill_cdemo_sk#10,cs_bill_hdemo_sk#11,cs_bill_addr_sk#12,cs_ship_customer_sk#13,cs_ship_cdemo_sk#14,cs_ship_hdemo_sk#15,cs_ship_addr_sk#16,cs_call_center_sk#17,cs_catalog_page_sk#18,cs_ship_mode_sk#19,cs_warehouse_sk#20,cs_item_sk#21,cs_promo_sk#22,cs_order_number#23L,cs_quantity#24L,cs_wholesale_cost#25,cs_list_price#26,cs_sales_price#27,cs_ext_discount_amt#28,cs_ext_sales_price#29,cs_ext_wholesale_cost#30,cs_ext_list_price#31,cs_ext_tax#32,cs_coupon_amt#33,cs_ext_ship_cost#34,cs_net_paid#35,cs_net_paid_inc_tax#36,cs_net_paid_inc_ship#37,cs_net_paid_inc_ship_tax#38,cs_net_profit#39,cs_sold_date_sk#40] parquet
                              :  :  :  :  :  +- SubqueryAlias cd1
                              :  :  :  :  :     +- SubqueryAlias spark_catalog.data_3t.customer_demographics
                              :  :  :  :  :        +- Relation[cd_demo_sk#41,cd_gender#42,cd_marital_status#43,cd_education_status#44,cd_purchase_estimate#45L,cd_credit_rating#46,cd_dep_count#47L,cd_dep_employed_count#48L,cd_dep_college_count#49L] parquet
                              :  :  :  :  +- SubqueryAlias cd2
                              :  :  :  :     +- SubqueryAlias spark_catalog.data_3t.customer_demographics
                              :  :  :  :        +- Relation[cd_demo_sk#131,cd_gender#132,cd_marital_status#133,cd_education_status#134,cd_purchase_estimate#135L,cd_credit_rating#136,cd_dep_count#137L,cd_dep_employed_count#138L,cd_dep_college_count#139L] parquet
                              :  :  :  +- SubqueryAlias spark_catalog.data_3t.customer
                              :  :  :     +- Relation[c_customer_sk#50,c_customer_id#51,c_current_cdemo_sk#52,c_current_hdemo_sk#53,c_current_addr_sk#54,c_first_shipto_date_sk#55,c_first_sales_date_sk#56,c_salutation#57,c_first_name#58,c_last_name#59,c_preferred_cust_flag#60,c_birth_day#61L,c_birth_month#62L,c_birth_year#63L,c_birth_country#64,c_login#65,c_email_address#66,c_last_review_date_sk#67] parquet
                              :  :  +- SubqueryAlias spark_catalog.data_3t.customer_address
                              :  :     +- Relation[ca_address_sk#68,ca_address_id#69,ca_street_number#70,ca_street_name#71,ca_street_type#72,ca_suite_number#73,ca_city#74,ca_county#75,ca_state#76,ca_zip#77,ca_country#78,ca_gmt_offset#79,ca_location_type#80] parquet
                              :  +- SubqueryAlias spark_catalog.data_3t.date_dim
                              :     +- Relation[d_date_sk#81,d_date_id#82,d_date#83,d_month_seq#84L,d_week_seq#85L,d_quarter_seq#86L,d_year#87L,d_dow#88L,d_moy#89L,d_dom#90L,d_qoy#91L,d_fy_year#92L,d_fy_quarter_seq#93L,d_fy_week_seq#94L,d_day_name#95,d_quarter_name#96,d_holiday#97,d_weekend#98,d_following_holiday#99,d_first_dom#100L,d_last_dom#101L,d_same_day_ly#102L,d_same_day_lq#103L,d_current_day#104,d_current_week#105,d_current_month#106,d_current_quarter#107,d_current_year#108] parquet
                              +- SubqueryAlias spark_catalog.data_3t.item
                                 +- Relation[i_item_sk#109,i_item_id#110,i_rec_start_date#111,i_rec_end_date#112,i_item_desc#113,i_current_price#114,i_wholesale_cost#115,i_brand_id#116L,i_brand#117,i_class_id#118L,i_class#119,i_category_id#120L,i_category#121,i_manufact_id#122L,i_manufact#123,i_size#124,i_formulation#125,i_color#126,i_units#127,i_container#128,i_manager_id#129L,i_product_name#130] parquet

== Optimized Logical Plan ==
GlobalLimit 21
+- LocalLimit 21
   +- Project [i_item_id#152, ca_country#153, ca_state#154, ca_county#155, cast(agg1#0 as string) AS agg1#186, cast(agg2#1 as string) AS agg2#187, cast(agg3#2 as string) AS agg3#188, cast(agg4#3 as string) AS agg4#189, cast(agg5#4 as string) AS agg5#190, cast(agg6#5 as string) AS agg6#191, cast(agg7#6 as string) AS agg7#192]
      +- GlobalLimit 100
         +- LocalLimit 100
            +- Sort [ca_country#153 ASC NULLS FIRST, ca_state#154 ASC NULLS FIRST, ca_county#155 ASC NULLS FIRST, i_item_id#152 ASC NULLS FIRST], true
               +- Aggregate [i_item_id#152, ca_country#153, ca_state#154, ca_county#155, spark_grouping_id#147], [i_item_id#152, ca_country#153, ca_state#154, ca_county#155, avg(cast(cs_quantity#24L as decimal(12,2))) AS agg1#0, avg(cast(cs_list_price#26 as decimal(12,2))) AS agg2#1, avg(cast(cs_coupon_amt#33 as decimal(12,2))) AS agg3#2, avg(cast(cs_sales_price#27 as decimal(12,2))) AS agg4#3, avg(cast(cs_net_profit#39 as decimal(12,2))) AS agg5#4, avg(cast(c_birth_year#63L as decimal(12,2))) AS agg6#5, avg(cast(cd_dep_count#47L as decimal(12,2))) AS agg7#6]
                  +- Expand [List(cs_quantity#24L, cs_list_price#26, cs_sales_price#27, cs_coupon_amt#33, cs_net_profit#39, cd_dep_count#47L, c_birth_year#63L, i_item_id#110, ca_country#78, ca_state#76, ca_county#75, 0), List(cs_quantity#24L, cs_list_price#26, cs_sales_price#27, cs_coupon_amt#33, cs_net_profit#39, cd_dep_count#47L, c_birth_year#63L, i_item_id#110, ca_country#78, ca_state#76, null, 1), List(cs_quantity#24L, cs_list_price#26, cs_sales_price#27, cs_coupon_amt#33, cs_net_profit#39, cd_dep_count#47L, c_birth_year#63L, i_item_id#110, ca_country#78, null, null, 3), List(cs_quantity#24L, cs_list_price#26, cs_sales_price#27, cs_coupon_amt#33, cs_net_profit#39, cd_dep_count#47L, c_birth_year#63L, i_item_id#110, null, null, null, 7), List(cs_quantity#24L, cs_list_price#26, cs_sales_price#27, cs_coupon_amt#33, cs_net_profit#39, cd_dep_count#47L, c_birth_year#63L, null, null, null, null, 15)], [cs_quantity#24L, cs_list_price#26, cs_sales_price#27, cs_coupon_amt#33, cs_net_profit#39, cd_dep_count#47L, c_birth_year#63L, i_item_id#152, ca_country#153, ca_state#154, ca_county#155, spark_grouping_id#147]
                     +- Project [cs_quantity#24L, cs_list_price#26, cs_sales_price#27, cs_coupon_amt#33, cs_net_profit#39, cd_dep_count#47L, c_birth_year#63L, i_item_id#110, ca_country#78, ca_state#76, ca_county#75]
                        +- Join Inner, (cs_item_sk#21 = i_item_sk#109)
                           :- Project [cs_item_sk#21, cs_quantity#24L, cs_list_price#26, cs_sales_price#27, cs_coupon_amt#33, cs_net_profit#39, cd_dep_count#47L, c_birth_year#63L, ca_county#75, ca_state#76, ca_country#78]
                           :  +- Join Inner, (cs_sold_date_sk#40 = d_date_sk#81)
                           :     :- Project [cs_item_sk#21, cs_quantity#24L, cs_list_price#26, cs_sales_price#27, cs_coupon_amt#33, cs_net_profit#39, cs_sold_date_sk#40, cd_dep_count#47L, c_birth_year#63L, ca_county#75, ca_state#76, ca_country#78]
                           :     :  +- Join Inner, (c_current_addr_sk#54 = ca_address_sk#68)
                           :     :     :- Project [cs_item_sk#21, cs_quantity#24L, cs_list_price#26, cs_sales_price#27, cs_coupon_amt#33, cs_net_profit#39, cs_sold_date_sk#40, cd_dep_count#47L, c_current_addr_sk#54, c_birth_year#63L]
                           :     :     :  +- Join Inner, (c_current_cdemo_sk#52 = cd_demo_sk#131)
                           :     :     :     :- Project [cs_item_sk#21, cs_quantity#24L, cs_list_price#26, cs_sales_price#27, cs_coupon_amt#33, cs_net_profit#39, cs_sold_date_sk#40, cd_dep_count#47L, c_current_cdemo_sk#52, c_current_addr_sk#54, c_birth_year#63L]
                           :     :     :     :  +- Join Inner, (cs_bill_customer_sk#9 = c_customer_sk#50)
                           :     :     :     :     :- Project [cs_bill_customer_sk#9, cs_item_sk#21, cs_quantity#24L, cs_list_price#26, cs_sales_price#27, cs_coupon_amt#33, cs_net_profit#39, cs_sold_date_sk#40, cd_dep_count#47L]
                           :     :     :     :     :  +- Join Inner, (cs_bill_cdemo_sk#10 = cd_demo_sk#41)
                           :     :     :     :     :     :- Project [cs_bill_customer_sk#9, cs_bill_cdemo_sk#10, cs_item_sk#21, cs_quantity#24L, cs_list_price#26, cs_sales_price#27, cs_coupon_amt#33, cs_net_profit#39, cs_sold_date_sk#40]
                           :     :     :     :     :     :  +- Filter ((((isnotnull(cs_bill_cdemo_sk#10) AND isnotnull(cs_bill_customer_sk#9)) AND isnotnull(cs_sold_date_sk#40)) AND isnotnull(cs_item_sk#21)) AND dynamicpruning#204 [cs_sold_date_sk#40])
                           :     :     :     :     :     :     :  +- Project [d_date_sk#81]
                           :     :     :     :     :     :     :     +- Filter ((isnotnull(d_year#87L) AND (d_year#87L = 1998)) AND isnotnull(d_date_sk#81))
                           :     :     :     :     :     :     :        +- Relation[d_date_sk#81,d_date_id#82,d_date#83,d_month_seq#84L,d_week_seq#85L,d_quarter_seq#86L,d_year#87L,d_dow#88L,d_moy#89L,d_dom#90L,d_qoy#91L,d_fy_year#92L,d_fy_quarter_seq#93L,d_fy_week_seq#94L,d_day_name#95,d_quarter_name#96,d_holiday#97,d_weekend#98,d_following_holiday#99,d_first_dom#100L,d_last_dom#101L,d_same_day_ly#102L,d_same_day_lq#103L,d_current_day#104,d_current_week#105,d_current_month#106,d_current_quarter#107,d_current_year#108] parquet
                           :     :     :     :     :     :     +- Relation[cs_sold_time_sk#7,cs_ship_date_sk#8,cs_bill_customer_sk#9,cs_bill_cdemo_sk#10,cs_bill_hdemo_sk#11,cs_bill_addr_sk#12,cs_ship_customer_sk#13,cs_ship_cdemo_sk#14,cs_ship_hdemo_sk#15,cs_ship_addr_sk#16,cs_call_center_sk#17,cs_catalog_page_sk#18,cs_ship_mode_sk#19,cs_warehouse_sk#20,cs_item_sk#21,cs_promo_sk#22,cs_order_number#23L,cs_quantity#24L,cs_wholesale_cost#25,cs_list_price#26,cs_sales_price#27,cs_ext_discount_amt#28,cs_ext_sales_price#29,cs_ext_wholesale_cost#30,cs_ext_list_price#31,cs_ext_tax#32,cs_coupon_amt#33,cs_ext_ship_cost#34,cs_net_paid#35,cs_net_paid_inc_tax#36,cs_net_paid_inc_ship#37,cs_net_paid_inc_ship_tax#38,cs_net_profit#39,cs_sold_date_sk#40] parquet
                           :     :     :     :     :     +- Project [cd_demo_sk#41, cd_dep_count#47L]
                           :     :     :     :     :        +- Filter ((((isnotnull(cd_gender#42) AND isnotnull(cd_education_status#44)) AND (cd_gender#42 = F)) AND (cd_education_status#44 = Unknown)) AND isnotnull(cd_demo_sk#41))
                           :     :     :     :     :           +- Relation[cd_demo_sk#41,cd_gender#42,cd_marital_status#43,cd_education_status#44,cd_purchase_estimate#45L,cd_credit_rating#46,cd_dep_count#47L,cd_dep_employed_count#48L,cd_dep_college_count#49L] parquet
                           :     :     :     :     +- Project [c_customer_sk#50, c_current_cdemo_sk#52, c_current_addr_sk#54, c_birth_year#63L]
                           :     :     :     :        +- Filter (((c_birth_month#62L IN (1,6,8,9,12,2) AND isnotnull(c_customer_sk#50)) AND isnotnull(c_current_cdemo_sk#52)) AND isnotnull(c_current_addr_sk#54))
                           :     :     :     :           +- Relation[c_customer_sk#50,c_customer_id#51,c_current_cdemo_sk#52,c_current_hdemo_sk#53,c_current_addr_sk#54,c_first_shipto_date_sk#55,c_first_sales_date_sk#56,c_salutation#57,c_first_name#58,c_last_name#59,c_preferred_cust_flag#60,c_birth_day#61L,c_birth_month#62L,c_birth_year#63L,c_birth_country#64,c_login#65,c_email_address#66,c_last_review_date_sk#67] parquet
                           :     :     :     +- Project [cd_demo_sk#131]
                           :     :     :        +- Filter isnotnull(cd_demo_sk#131)
                           :     :     :           +- Relation[cd_demo_sk#131,cd_gender#132,cd_marital_status#133,cd_education_status#134,cd_purchase_estimate#135L,cd_credit_rating#136,cd_dep_count#137L,cd_dep_employed_count#138L,cd_dep_college_count#139L] parquet
                           :     :     +- Project [ca_address_sk#68, ca_county#75, ca_state#76, ca_country#78]
                           :     :        +- Filter (ca_state#76 IN (MS,IN,ND,OK,NM,VA) AND isnotnull(ca_address_sk#68))
                           :     :           +- Relation[ca_address_sk#68,ca_address_id#69,ca_street_number#70,ca_street_name#71,ca_street_type#72,ca_suite_number#73,ca_city#74,ca_county#75,ca_state#76,ca_zip#77,ca_country#78,ca_gmt_offset#79,ca_location_type#80] parquet
                           :     +- Project [d_date_sk#81]
                           :        +- Filter ((isnotnull(d_year#87L) AND (d_year#87L = 1998)) AND isnotnull(d_date_sk#81))
                           :           +- Relation[d_date_sk#81,d_date_id#82,d_date#83,d_month_seq#84L,d_week_seq#85L,d_quarter_seq#86L,d_year#87L,d_dow#88L,d_moy#89L,d_dom#90L,d_qoy#91L,d_fy_year#92L,d_fy_quarter_seq#93L,d_fy_week_seq#94L,d_day_name#95,d_quarter_name#96,d_holiday#97,d_weekend#98,d_following_holiday#99,d_first_dom#100L,d_last_dom#101L,d_same_day_ly#102L,d_same_day_lq#103L,d_current_day#104,d_current_week#105,d_current_month#106,d_current_quarter#107,d_current_year#108] parquet
                           +- Project [i_item_sk#109, i_item_id#110]
                              +- Filter isnotnull(i_item_sk#109)
                                 +- Relation[i_item_sk#109,i_item_id#110,i_rec_start_date#111,i_rec_end_date#112,i_item_desc#113,i_current_price#114,i_wholesale_cost#115,i_brand_id#116L,i_brand#117,i_class_id#118L,i_class#119,i_category_id#120L,i_category#121,i_manufact_id#122L,i_manufact#123,i_size#124,i_formulation#125,i_color#126,i_units#127,i_container#128,i_manager_id#129L,i_product_name#130] parquet

== Physical Plan ==
*(4) GpuColumnarToRow false
+- GpuGlobalLimit 21
   +- GpuColumnarExchange gpusinglepartitioning(), true, [id=#393]
      +- GpuLocalLimit 21
         +- GpuRowToColumnar TargetSize(536870912)
            +- *(3) Project [i_item_id#152, ca_country#153, ca_state#154, ca_county#155, cast(agg1#0 as string) AS agg1#186, cast(agg2#1 as string) AS agg2#187, cast(agg3#2 as string) AS agg3#188, cast(agg4#3 as string) AS agg4#189, cast(agg5#4 as string) AS agg5#190, cast(agg6#5 as string) AS agg6#191, cast(agg7#6 as string) AS agg7#192]
               +- TakeOrderedAndProject(limit=100, orderBy=[ca_country#153 ASC NULLS FIRST,ca_state#154 ASC NULLS FIRST,ca_county#155 ASC NULLS FIRST,i_item_id#152 ASC NULLS FIRST], output=[i_item_id#152,ca_country#153,ca_state#154,ca_county#155,agg1#0,agg2#1,agg3#2,agg4#3,agg5#4,agg6#5,agg7#6])
                  +- *(2) HashAggregate(keys=[i_item_id#152, ca_country#153, ca_state#154, ca_county#155, spark_grouping_id#147], functions=[avg(cast(cs_quantity#24L as decimal(12,2))), avg(cast(cs_list_price#26 as decimal(12,2))), avg(cast(cs_coupon_amt#33 as decimal(12,2))), avg(cast(cs_sales_price#27 as decimal(12,2))), avg(cast(cs_net_profit#39 as decimal(12,2))), avg(cast(c_birth_year#63L as decimal(12,2))), avg(cast(cd_dep_count#47L as decimal(12,2)))], output=[i_item_id#152, ca_country#153, ca_state#154, ca_county#155, agg1#0, agg2#1, agg3#2, agg4#3, agg5#4, agg6#5, agg7#6])
                     +- Exchange hashpartitioning(i_item_id#152, ca_country#153, ca_state#154, ca_county#155, spark_grouping_id#147, 32), true, [id=#383]
                        +- *(1) HashAggregate(keys=[i_item_id#152, ca_country#153, ca_state#154, ca_county#155, spark_grouping_id#147], functions=[partial_avg(cast(cs_quantity#24L as decimal(12,2))), partial_avg(cast(cs_list_price#26 as decimal(12,2))), partial_avg(cast(cs_coupon_amt#33 as decimal(12,2))), partial_avg(cast(cs_sales_price#27 as decimal(12,2))), partial_avg(cast(cs_net_profit#39 as decimal(12,2))), partial_avg(cast(c_birth_year#63L as decimal(12,2))), partial_avg(cast(cd_dep_count#47L as decimal(12,2)))], output=[i_item_id#152, ca_country#153, ca_state#154, ca_county#155, spark_grouping_id#147, sum#219, count#220L, sum#221, count#222L, sum#223, count#224L, sum#225, count#226L, sum#227, count#228L, sum#229, count#230L, sum#231, count#232L])
                           +- *(1) GpuColumnarToRow false
                              +- GpuExpand [List(cs_quantity#24L, cs_list_price#26, cs_sales_price#27, cs_coupon_amt#33, cs_net_profit#39, cd_dep_count#47L, c_birth_year#63L, i_item_id#110, ca_country#78, ca_state#76, ca_county#75, 0), List(cs_quantity#24L, cs_list_price#26, cs_sales_price#27, cs_coupon_amt#33, cs_net_profit#39, cd_dep_count#47L, c_birth_year#63L, i_item_id#110, ca_country#78, ca_state#76, null, 1), List(cs_quantity#24L, cs_list_price#26, cs_sales_price#27, cs_coupon_amt#33, cs_net_profit#39, cd_dep_count#47L, c_birth_year#63L, i_item_id#110, ca_country#78, null, null, 3), List(cs_quantity#24L, cs_list_price#26, cs_sales_price#27, cs_coupon_amt#33, cs_net_profit#39, cd_dep_count#47L, c_birth_year#63L, i_item_id#110, null, null, null, 7), List(cs_quantity#24L, cs_list_price#26, cs_sales_price#27, cs_coupon_amt#33, cs_net_profit#39, cd_dep_count#47L, c_birth_year#63L, null, null, null, null, 15)], [cs_quantity#24L, cs_list_price#26, cs_sales_price#27, cs_coupon_amt#33, cs_net_profit#39, cd_dep_count#47L, c_birth_year#63L, i_item_id#152, ca_country#153, ca_state#154, ca_county#155, spark_grouping_id#147]
                                 +- GpuProject [cs_quantity#24L, cs_list_price#26, cs_sales_price#27, cs_coupon_amt#33, cs_net_profit#39, cd_dep_count#47L, c_birth_year#63L, i_item_id#110, ca_country#78, ca_state#76, ca_county#75]
                                    +- GpuBroadcastHashJoin [cs_item_sk#21], [i_item_sk#109], Inner, BuildRight
                                       :- GpuProject [cs_item_sk#21, cs_quantity#24L, cs_list_price#26, cs_sales_price#27, cs_coupon_amt#33, cs_net_profit#39, cd_dep_count#47L, c_birth_year#63L, ca_county#75, ca_state#76, ca_country#78]
                                       :  +- GpuBroadcastHashJoin [cs_sold_date_sk#40], [d_date_sk#81], Inner, BuildRight
                                       :     :- GpuProject [cs_item_sk#21, cs_quantity#24L, cs_list_price#26, cs_sales_price#27, cs_coupon_amt#33, cs_net_profit#39, cs_sold_date_sk#40, cd_dep_count#47L, c_birth_year#63L, ca_county#75, ca_state#76, ca_country#78]
                                       :     :  +- GpuShuffledHashJoin [c_current_addr_sk#54], [ca_address_sk#68], Inner, BuildRight, false
                                       :     :     :- GpuColumnarExchange gpuhashpartitioning(c_current_addr_sk#54, 32), true, [id=#359]
                                       :     :     :  +- GpuProject [cs_item_sk#21, cs_quantity#24L, cs_list_price#26, cs_sales_price#27, cs_coupon_amt#33, cs_net_profit#39, cs_sold_date_sk#40, cd_dep_count#47L, c_current_addr_sk#54, c_birth_year#63L]
                                       :     :     :     +- GpuBroadcastHashJoin [c_current_cdemo_sk#52], [cd_demo_sk#131], Inner, BuildRight
                                       :     :     :        :- GpuProject [cs_item_sk#21, cs_quantity#24L, cs_list_price#26, cs_sales_price#27, cs_coupon_amt#33, cs_net_profit#39, cs_sold_date_sk#40, cd_dep_count#47L, c_current_cdemo_sk#52, c_current_addr_sk#54, c_birth_year#63L]
                                       :     :     :        :  +- GpuShuffledHashJoin [cs_bill_customer_sk#9], [c_customer_sk#50], Inner, BuildRight, false
                                       :     :     :        :     :- GpuColumnarExchange gpuhashpartitioning(cs_bill_customer_sk#9, 32), true, [id=#305]
                                       :     :     :        :     :  +- GpuProject [cs_bill_customer_sk#9, cs_item_sk#21, cs_quantity#24L, cs_list_price#26, cs_sales_price#27, cs_coupon_amt#33, cs_net_profit#39, cs_sold_date_sk#40, cd_dep_count#47L]
                                       :     :     :        :     :     +- GpuBroadcastHashJoin [cs_bill_cdemo_sk#10], [cd_demo_sk#41], Inner, BuildRight
                                       :     :     :        :     :        :- GpuProject [cs_bill_customer_sk#9, cs_bill_cdemo_sk#10, cs_item_sk#21, cs_quantity#24L, cs_list_price#26, cs_sales_price#27, cs_coupon_amt#33, cs_net_profit#39, cs_sold_date_sk#40]
                                       :     :     :        :     :        :  +- GpuCoalesceBatches TargetSize(536870912)
                                       :     :     :        :     :        :     +- GpuFilter ((gpuisnotnull(cs_bill_cdemo_sk#10) AND gpuisnotnull(cs_bill_customer_sk#9)) AND gpuisnotnull(cs_item_sk#21))
                                       :     :     :        :     :        :        +- GpuFileGpuScan parquet data_3t.catalog_sales[cs_bill_customer_sk#9,cs_bill_cdemo_sk#10,cs_item_sk#21,cs_quantity#24L,cs_list_price#26,cs_sales_price#27,cs_coupon_amt#33,cs_net_profit#39,cs_sold_date_sk#40] Batched: true, DataFilters: [isnotnull(cs_bill_cdemo_sk#10), isnotnull(cs_bill_customer_sk#9), isnotnull(cs_item_sk#21)], Format: Parquet, Location: InMemoryFileIndex[hdfs://10.255.127.23:9000/data/1T/catalog_sales/cs_sold_date_sk=2450815, hdfs:/..., PartitionFilters: [isnotnull(cs_sold_date_sk#40), dynamicpruningexpression(cs_sold_date_sk#40 IN dynamicpruning#204)], PushedFilters: [IsNotNull(cs_bill_cdemo_sk), IsNotNull(cs_bill_customer_sk), IsNotNull(cs_item_sk)], ReadSchema: struct<cs_bill_customer_sk:int,cs_bill_cdemo_sk:int,cs_item_sk:int,cs_quantity:bigint,cs_list_pri...
                                       :     :     :        :     :        :              +- SubqueryBroadcast dynamicpruning#204, 0, [d_date_sk#81], [id=#162]
                                       :     :     :        :     :        :                 +- BroadcastExchange HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint))), [id=#161]
                                       :     :     :        :     :        :                    +- *(1) GpuColumnarToRow false
                                       :     :     :        :     :        :                       +- GpuProject [d_date_sk#81]
                                       :     :     :        :     :        :                          +- GpuCoalesceBatches TargetSize(536870912)
                                       :     :     :        :     :        :                             +- GpuFilter ((gpuisnotnull(d_year#87L) AND (d_year#87L = 1998)) AND gpuisnotnull(d_date_sk#81))
                                       :     :     :        :     :        :                                +- GpuFileGpuScan parquet data_3t.date_dim[d_date_sk#81,d_year#87L] Batched: true, DataFilters: [isnotnull(d_year#87L), (d_year#87L = 1998), isnotnull(d_date_sk#81)], Format: Parquet, Location: InMemoryFileIndex[hdfs://10.255.127.23:9000/data/1T/date_dim], PartitionFilters: [], PushedFilters: [IsNotNull(d_year), EqualTo(d_year,1998), IsNotNull(d_date_sk)], ReadSchema: struct<d_date_sk:int,d_year:bigint>
                                       :     :     :        :     :        +- GpuBroadcastExchange HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint))), [id=#302]
                                       :     :     :        :     :           +- GpuProject [cd_demo_sk#41, cd_dep_count#47L]
                                       :     :     :        :     :              +- GpuCoalesceBatches TargetSize(536870912)
                                       :     :     :        :     :                 +- GpuFilter ((((gpuisnotnull(cd_gender#42) AND gpuisnotnull(cd_education_status#44)) AND (cd_gender#42 = F)) AND (cd_education_status#44 = Unknown)) AND gpuisnotnull(cd_demo_sk#41))
                                       :     :     :        :     :                    +- GpuFileGpuScan parquet data_3t.customer_demographics[cd_demo_sk#41,cd_gender#42,cd_education_status#44,cd_dep_count#47L] Batched: true, DataFilters: [isnotnull(cd_gender#42), isnotnull(cd_education_status#44), (cd_gender#42 = F), (cd_education_st..., Format: Parquet, Location: InMemoryFileIndex[hdfs://10.255.127.23:9000/data/1T/customer_demographics], PartitionFilters: [], PushedFilters: [IsNotNull(cd_gender), IsNotNull(cd_education_status), EqualTo(cd_gender,F), EqualTo(cd_education..., ReadSchema: struct<cd_demo_sk:int,cd_gender:string,cd_education_status:string,cd_dep_count:bigint>
                                       :     :     :        :     +- GpuCoalesceBatches RequireSingleBatch
                                       :     :     :        :        +- GpuColumnarExchange gpuhashpartitioning(c_customer_sk#50, 32), true, [id=#309]
                                       :     :     :        :           +- GpuProject [c_customer_sk#50, c_current_cdemo_sk#52, c_current_addr_sk#54, c_birth_year#63L]
                                       :     :     :        :              +- GpuCoalesceBatches TargetSize(536870912)
                                       :     :     :        :                 +- GpuFilter (((c_birth_month#62L INSET (1,6,8,9,12,2) AND gpuisnotnull(c_customer_sk#50)) AND gpuisnotnull(c_current_cdemo_sk#52)) AND gpuisnotnull(c_current_addr_sk#54))
                                       :     :     :        :                    +- GpuFileGpuScan parquet data_3t.customer[c_customer_sk#50,c_current_cdemo_sk#52,c_current_addr_sk#54,c_birth_month#62L,c_birth_year#63L] Batched: true, DataFilters: [c_birth_month#62L IN (1,6,8,9,12,2), isnotnull(c_customer_sk#50), isnotnull(c_current_cdemo_sk#5..., Format: Parquet, Location: InMemoryFileIndex[hdfs://10.255.127.23:9000/data/1T/customer], PartitionFilters: [], PushedFilters: [In(c_birth_month, [1,6,8,9,12,2]), IsNotNull(c_customer_sk), IsNotNull(c_current_cdemo_sk), IsNo..., ReadSchema: struct<c_customer_sk:int,c_current_cdemo_sk:int,c_current_addr_sk:int,c_birth_month:bigint,c_birt...
                                       :     :     :        +- GpuBroadcastExchange HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint))), [id=#316]
                                       :     :     :           +- GpuProject [cd_demo_sk#131]
                                       :     :     :              +- GpuCoalesceBatches TargetSize(536870912)
                                       :     :     :                 +- GpuFilter gpuisnotnull(cd_demo_sk#131)
                                       :     :     :                    +- GpuFileGpuScan parquet data_3t.customer_demographics[cd_demo_sk#131] Batched: true, DataFilters: [isnotnull(cd_demo_sk#131)], Format: Parquet, Location: InMemoryFileIndex[hdfs://10.255.127.23:9000/data/1T/customer_demographics], PartitionFilters: [], PushedFilters: [IsNotNull(cd_demo_sk)], ReadSchema: struct<cd_demo_sk:int>
                                       :     :     +- GpuCoalesceBatches RequireSingleBatch
                                       :     :        +- GpuColumnarExchange gpuhashpartitioning(ca_address_sk#68, 32), true, [id=#323]
                                       :     :           +- GpuProject [ca_address_sk#68, ca_county#75, ca_state#76, ca_country#78]
                                       :     :              +- GpuCoalesceBatches TargetSize(536870912)
                                       :     :                 +- GpuFilter (ca_state#76 INSET (MS,IN,ND,OK,NM,VA) AND gpuisnotnull(ca_address_sk#68))
                                       :     :                    +- GpuFileGpuScan parquet data_3t.customer_address[ca_address_sk#68,ca_county#75,ca_state#76,ca_country#78] Batched: true, DataFilters: [ca_state#76 IN (MS,IN,ND,OK,NM,VA), isnotnull(ca_address_sk#68)], Format: Parquet, Location: InMemoryFileIndex[hdfs://10.255.127.23:9000/data/1T/customer_address], PartitionFilters: [], PushedFilters: [In(ca_state, [MS,IN,ND,OK,NM,VA]), IsNotNull(ca_address_sk)], ReadSchema: struct<ca_address_sk:int,ca_county:string,ca_state:string,ca_country:string>
                                       :     +- GpuBroadcastExchange HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint))), [id=#330]
                                       :        +- GpuProject [d_date_sk#81]
                                       :           +- GpuCoalesceBatches TargetSize(536870912)
                                       :              +- GpuFilter ((gpuisnotnull(d_year#87L) AND (d_year#87L = 1998)) AND gpuisnotnull(d_date_sk#81))
                                       :                 +- GpuFileGpuScan parquet data_3t.date_dim[d_date_sk#81,d_year#87L] Batched: true, DataFilters: [isnotnull(d_year#87L), (d_year#87L = 1998), isnotnull(d_date_sk#81)], Format: Parquet, Location: InMemoryFileIndex[hdfs://10.255.127.23:9000/data/1T/date_dim], PartitionFilters: [], PushedFilters: [IsNotNull(d_year), EqualTo(d_year,1998), IsNotNull(d_date_sk)], ReadSchema: struct<d_date_sk:int,d_year:bigint>
                                       +- GpuBroadcastExchange HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint))), [id=#335]
                                          +- GpuProject [i_item_sk#109, i_item_id#110]
                                             +- GpuCoalesceBatches TargetSize(536870912)
                                                +- GpuFilter gpuisnotnull(i_item_sk#109)
                                                   +- GpuFileGpuScan parquet data_3t.item[i_item_sk#109,i_item_id#110] Batched: true, DataFilters: [isnotnull(i_item_sk#109)], Format: Parquet, Location: InMemoryFileIndex[hdfs://10.255.127.23:9000/data/1T/item], PartitionFilters: [], PushedFilters: [IsNotNull(i_item_sk)], ReadSchema: struct<i_item_sk:int,i_item_id:string>

@andygrove would this help? OR what you need is something else?

@andygrove
Copy link
Contributor

Thanks @JustPlay but the plan you posted isn't using AQE at all. I can tell because of this:

== Physical Plan ==
*(4) GpuColumnarToRow false

If the query was using AQE, the physical plan would start with an AdaptiveSparkPlanExec node instead.

Are there any warnings in your driver logs about not using AQE for the query?

I think this still confirms my theory though, that AQE is enabled but not being used for this specific query for some reason, and our plugin is treating it as an adaptive query, therefore removing the coalesce from the shuffle exchanges.

@andygrove
Copy link
Contributor

I have been able to reproduce the issue now with a query that uses dynamic partition pruning, and therefore disables AQE for the query. It results in the following physical plan, which is missing a coalesce batches operator between the GpuShuffledHashJoin and GpuColumnarExchange operators.

== Physical Plan ==
*(1) GpuColumnarToRow false
+- GpuProject [a#29, b#31]
   +- GpuShuffledHashJoin [a#29], [a#32], Inner, BuildRight, false
      :- GpuColumnarExchange gpuhashpartitioning(a#29, 200), true, [id=#125]
      :  +- GpuProject [a#29]
      :     +- GpuCoalesceBatches TargetSize(2147483647)
      :        +- GpuFilter ((a#29 = 5) AND gpuisnotnull(a#29))
      :           +- GpuFileGpuScan parquet default.t1[a#29] Batched: true, DataFilters: [(a#29 = 5), isnotnull(a#29)], Format: Parquet, Location: InMemoryFileIndex[file:/tmp/spark-warehouse3154704202236575659/t1], PartitionFilters: [], PushedFilters: [EqualTo(a,5), IsNotNull(a)], ReadSchema: struct<a:int>
      +- GpuCoalesceBatches RequireSingleBatch
         +- GpuColumnarExchange gpuhashpartitioning(a#32, 200), true, [id=#117]
            +- GpuFileGpuScan parquet default.t2[b#31,a#32] Batched: true, DataFilters: [], Format: Parquet, Location: InMemoryFileIndex[file:/tmp/spark-warehouse3154704202236575659/t2/a=5], PartitionFilters: [isnotnull(a#32), (a#32 = 5), dynamicpruningexpression(true)], PushedFilters: [], ReadSchema: struct<b:int>

@sameerz sameerz removed the ? - Needs Triage Need team to review and classify label Sep 10, 2020
@sameerz sameerz added this to the Aug 31 - Sep 11 milestone Sep 10, 2020
@sameerz sameerz added the P0 Must have for release label Sep 10, 2020
tgravescs pushed a commit to tgravescs/spark-rapids that referenced this issue Nov 30, 2023
…IDIA#698)

Signed-off-by: spark-rapids automation <[email protected]>

Signed-off-by: spark-rapids automation <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working P0 Must have for release
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants