diff --git a/.gitignore b/.gitignore index 50a495d96..9bb8dcb54 100644 --- a/.gitignore +++ b/.gitignore @@ -57,3 +57,7 @@ native-engine/_build # exclude org.apache.auron.common.AuronBuildInfo common/src/main/resources/auron-build-info.properties + + +.flattened-pom.xml +dependency-reduced-pom.xml \ No newline at end of file diff --git a/.rat-excludes b/.rat-excludes index 05405443c..09a244b20 100644 --- a/.rat-excludes +++ b/.rat-excludes @@ -33,3 +33,5 @@ NOTICE* docs/** build/apache-maven-*/** src/main/resources/auron-build-info.properties +**/tpcds-plan-stability/** +**/tpcds-queries/** diff --git a/auron-build.sh b/auron-build.sh index 0fabf830b..d947b79e7 100755 --- a/auron-build.sh +++ b/auron-build.sh @@ -359,9 +359,9 @@ fi BUILD_ARGS=() if [[ "$SKIP_TESTS" == true ]]; then - BUILD_ARGS+=("package" "-DskipTests") + BUILD_ARGS+=("install" "-DskipTests") else - BUILD_ARGS+=("package") + BUILD_ARGS+=("install") fi if [[ "$SPARK_TESTS" == true ]]; then diff --git a/dev/auron-it/dependency-reduced-pom.xml b/dev/auron-it/dependency-reduced-pom.xml new file mode 100644 index 000000000..0f8218df9 --- /dev/null +++ b/dev/auron-it/dependency-reduced-pom.xml @@ -0,0 +1,192 @@ + + + 4.0.0 + org.apache.auron + auron-it + Apache Auron Integration Tests + 7.0.0-SNAPSHOT + Apache Auron Integration Tests Project + https://github.com/apache/auron.git/auron-it + + + Apache Announce List + announce-subscribe@apache.org + announce-unsubscribe@apache.org + announce@apache.org + https://mail-archives.apache.org/mod_mbox/www-announce/ + + + + + Apache-2.0 + https://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + scm:git:https://gitbox.apache.org/repos/asf/maven-apache-parent.git/auron-parent_2.12/auron-it + scm:git:https://gitbox.apache.org/repos/asf/maven-apache-parent.git/auron-parent_2.12/auron-it + apache-35 + https://github.com/apache/maven-apache-parent/tree/apache-35/auron-parent_2.12/auron-it + + + The Apache Software Foundation + https://www.apache.org/ + + + + + + false + + gcs-maven-central-mirror + GCS Maven Central mirror Asia Pacific + https://maven-central-asia.storage-download.googleapis.com/maven2/ + + + + + org.apache.spark + spark-core_2.12 + 3.5.7 + provided + + + * + io.netty + + + + + org.apache.spark + spark-catalyst_2.12 + 3.5.7 + provided + + + org.apache.spark + spark-hive_2.12 + 3.5.7 + provided + + + * + org.apache.arrow + + + + + org.apache.spark + spark-sql_2.12 + 3.5.7 + provided + + + * + io.netty + + + * + org.apache.arrow + + + + + org.apache.spark + spark-core_2.12 + 3.5.7 + test-jar + test + + + org.scalatest + scalatest_2.12 + 3.2.9 + test + + + scalatest-core_2.12 + org.scalatest + + + scalatest-featurespec_2.12 + org.scalatest + + + scalatest-flatspec_2.12 + org.scalatest + + + scalatest-freespec_2.12 + org.scalatest + + + scalatest-funsuite_2.12 + org.scalatest + + + scalatest-funspec_2.12 + org.scalatest + + + scalatest-propspec_2.12 + org.scalatest + + + scalatest-refspec_2.12 + org.scalatest + + + scalatest-wordspec_2.12 + org.scalatest + + + scalatest-diagrams_2.12 + org.scalatest + + + scalatest-matchers-core_2.12 + org.scalatest + + + scalatest-shouldmatchers_2.12 + org.scalatest + + + scalatest-mustmatchers_2.12 + org.scalatest + + + + + org.scala-lang + scala-library + 2.12.18 + provided + + + org.scala-lang + scala-compiler + 2.12.18 + provided + + + org.scala-lang + scala-reflect + 2.12.18 + provided + + + + + apache.releases.https + Apache Release Distribution Repository + https://repository.apache.org/service/local/staging/deploy/maven2 + + + apache.snapshots.https + Apache Development Snapshot Repository + https://repository.apache.org/content/repositories/snapshots + + + diff --git a/dev/auron-it/local-run-tpcds.sh b/dev/auron-it/local-run-tpcds.sh new file mode 100755 index 000000000..8af426a8d --- /dev/null +++ b/dev/auron-it/local-run-tpcds.sh @@ -0,0 +1,55 @@ +#!/usr/bin/env bash + +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +set -ex + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +AURON_DIR="$SCRIPT_DIR/../.." + +# TPC-DS Dataset Preparation +# 1. Download pre-generated 1GB TPC-DS dataset: https://github.com/auron-project/tpcds_1g +# 2. OR generate via databricks/tpcds-kit: https://github.com/databricks/tpcds-kit +# Place data in a readable directory (e.g., /tmp/tpcds_1g) post-generation. + +# Run TPC-DS Benchmark (Vanilla Spark vs Auron) +# - Executes specified TPC-DS queries (all if --query-filter unspecified) with Vanilla Spark/Auron +# - Verifies query result consistency (enabled by default) and reports execution time and speedup (Vanilla/Auron) +$SCRIPT_DIR/run-it.sh \ + --type tpcds \ + --data-location /tmp/tpcds_1g \ + --query-filter q1,q2,q3 + +# Run Only Auron plan stability check +# - Validates Auron physical plans against golden files. +$SCRIPT_DIR/run-it.sh \ + --type tpcds \ + --data-location /tmp/tpcds_1g \ + --query-filter q1,q2,q3 \ + --auron-only \ + --plan-check + +# Regenerate Golden Files for Plan Stability Check +# - Rewrites golden plan files using Auron plans for the current Spark version +$SCRIPT_DIR/run-it.sh \ + --type tpcds \ + --data-location /tmp/tpcds_1g \ + --query-filter q1,q2,q3 \ + --auron-only \ + --regen-golden diff --git a/dev/auron-it/pom.xml b/dev/auron-it/pom.xml new file mode 100644 index 000000000..fe2ca581a --- /dev/null +++ b/dev/auron-it/pom.xml @@ -0,0 +1,286 @@ + + + + 4.0.0 + + org.apache.auron + auron-parent_${scalaVersion} + ${project.version} + ../../pom.xml + + + auron-it + jar + Apache Auron Integration Tests + Apache Auron Integration Tests Project + + + + + + + org.apache.auron + auron-${shimName}_${scalaVersion} + ${project.version} + + + + com.github.scopt + scopt_${scalaVersion} + 4.1.0 + compile + + + org.apache.spark + spark-core_${scalaVersion} + provided + + + org.apache.spark + spark-catalyst_${scalaVersion} + provided + + + org.apache.spark + spark-hive_${scalaVersion} + provided + + + org.apache.spark + spark-sql_${scalaVersion} + provided + + + + org.apache.spark + spark-core_${scalaVersion} + test-jar + + + org.scalatest + scalatest_${scalaVersion} + 3.2.9 + test + + + + + + + + com.diffplug.spotless + spotless-maven-plugin + ${spotless.plugin.version} + + + + + + ${maven.multiModuleProjectDirectory}/../../dev/license-header + + + + + ${scalafmtVersion} + ${maven.multiModuleProjectDirectory}/../../scalafmt.conf + ${scalaVersion} + + + ${maven.multiModuleProjectDirectory}/../../dev/license-header + + + + + UTF-8 + ${line.separator} + false + true + true + 2 + false + false + recommended_2008_06 + + + + + false + false + false + + + + + + scalafix + + apply + + validate + + + + + + + io.github.evis + scalafix-maven-plugin_${scalaVersion} + 0.1.4_0.9.31 + + ${maven.multiModuleProjectDirectory}/../../scalafix.conf + + + + com.nequissimus + sort-imports_${scalaVersion} + 0.6.1 + + + + + scalafix + + scalafix + + prepare-package + + + + + + org.apache.rat + apache-rat-plugin + true + + false + 0 + + + Apache License 2.0 + + + ${maven.multiModuleProjectDirectory}/../../.rat-excludes + + + + + check + + verify + + + + + + org.apache.maven.plugins + maven-shade-plugin + + + + shade + + package + + true + true + jar-with-dependencies + + + *:* + + + + + + + org.apache.auron.integration.Main + + + + + + + + + + + + spark-3.0 + + spark-3.0 + 3.0.3 + + + + + spark-3.1 + + spark-3.1 + 3.1.3 + + + + + spark-3.2 + + spark-3.2 + 3.2.4 + + + + + spark-3.3 + + spark-3.3 + 3.3.4 + + + + + spark-3.4 + + spark-3.4 + 3.4.4 + + + + + spark-3.5 + + spark-3.5 + 3.5.7 + + + + + scala-2.12 + + 2.12 + 2.12.18 + + + + + scala-2.13 + + 2.13 + 2.13.13 + + + + diff --git a/dev/auron-it/run-it.sh b/dev/auron-it/run-it.sh new file mode 100755 index 000000000..8e0e694bb --- /dev/null +++ b/dev/auron-it/run-it.sh @@ -0,0 +1,81 @@ +#!/usr/bin/env bash + +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +set -exo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +AURON_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)" + +MVN_CMD="${AURON_DIR}/build/mvn" +export RUST_BACKTRACE=1 +SPARK_VERSION="${SPARK_VERSION:-spark-3.5}" +SCALA_VERSION="${SCALA_VERSION:-2.12}" +PROFILES="-P${SPARK_VERSION},scala-${SCALA_VERSION}" +PROJECT_VERSION="$("${MVN_CMD}" -f "${AURON_DIR}/pom.xml" -q ${PROFILES} help:evaluate -Dexpression=project.version -DforceStdout)" + +AURON_SPARK_JAR="${AURON_SPARK_JAR:-${AURON_DIR}/dev/mvn-build-helper/assembly/target/auron-${SPARK_VERSION}_${SCALA_VERSION}-${PROJECT_VERSION}.jar}" +AURON_IT_JAR="${AURON_DIR}/dev/auron-it/target/auron-it-${PROJECT_VERSION}-jar-with-dependencies.jar" + + +if [[ -z "${SPARK_HOME:-}" ]]; then + echo "ERROR: SPARK_HOME environment variable must be set" + exit 1 +fi + +if [[ ! -f "${AURON_SPARK_JAR}" ]]; then + echo "ERROR: Auron Spark JAR not found at: ${AURON_SPARK_JAR}" + echo "Hint: Rebuild with: ./auron-build.sh" + exit 1 +fi + +if [[ ! -f "$AURON_IT_JAR" ]]; then + echo "INFO: Building missing Auron it jar..." + pushd "${SCRIPT_DIR}" + "${MVN_CMD}" ${PROFILES} package -DskipTests + popd +fi + +# Split input arguments into two parts: Spark confs and args +SPARK_CONF=() +ARGS=() +while [[ $# -gt 0 ]]; do + case $1 in + --master=*) + SPARK_CONF+=("$1") ;; + --conf) + shift + SPARK_CONF+=("--conf" "$1") ;; + *) + ARGS+=("$1") ;; + esac + shift +done + +exec $SPARK_HOME/bin/spark-submit \ + --driver-memory 5g \ + --conf spark.driver.memoryOverhead=3072 \ + --conf spark.auron.memoryFraction=0.8 \ + --conf spark.driver.extraJavaOptions=-XX:+UseG1GC \ + --conf spark.ui.enabled=false \ + --jars "${AURON_SPARK_JAR}" \ + "${SPARK_CONF[@]}" \ + "${AURON_IT_JAR}" \ + "${ARGS[@]}" \ No newline at end of file diff --git a/dev/auron-it/src/main/resources/log4j.properties b/dev/auron-it/src/main/resources/log4j.properties new file mode 100644 index 000000000..4c4853a57 --- /dev/null +++ b/dev/auron-it/src/main/resources/log4j.properties @@ -0,0 +1,46 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Set everything to be logged to the file core/target/unit-tests.log +log4j.rootLogger=WARN, CA + +#Console Appender +log4j.appender.CA=org.apache.log4j.ConsoleAppender +log4j.appender.CA.layout=org.apache.log4j.PatternLayout +log4j.appender.CA.layout.ConversionPattern=%d{HH:mm:ss.SSS} %p %c: %m%n +log4j.appender.CA.Threshold=DEBUG +log4j.appender.CA.follow=true + +# Some packages are noisy for no good reason. +log4j.additivity.org.apache.parquet.hadoop.ParquetRecordReader=false +log4j.logger.org.apache.parquet.hadoop.ParquetRecordReader=OFF + +log4j.additivity.org.apache.parquet.hadoop.ParquetOutputCommitter=false +log4j.logger.org.apache.parquet.hadoop.ParquetOutputCommitter=OFF + +log4j.additivity.org.apache.hadoop.hive.serde2.lazy.LazyStruct=false +log4j.logger.org.apache.hadoop.hive.serde2.lazy.LazyStruct=OFF + +log4j.additivity.org.apache.hadoop.hive.metastore.RetryingHMSHandler=false +log4j.logger.org.apache.hadoop.hive.metastore.RetryingHMSHandler=OFF + +log4j.additivity.hive.ql.metadata.Hive=false +log4j.logger.hive.ql.metadata.Hive=OFF + +# Parquet related logging +log4j.logger.org.apache.parquet.CorruptStatistics=ERROR +log4j.logger.parquet.CorruptStatistics=ERROR diff --git a/dev/auron-it/src/main/resources/log4j2.properties b/dev/auron-it/src/main/resources/log4j2.properties new file mode 100644 index 000000000..1723186a2 --- /dev/null +++ b/dev/auron-it/src/main/resources/log4j2.properties @@ -0,0 +1,68 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Set everything to be logged to the file core/target/unit-tests.log +rootLogger.level = warn +rootLogger.appenderRef.stdout.ref = STDOUT + +#Console Appender +appender.console.type = Console +appender.console.name = STDOUT +appender.console.target = SYSTEM_OUT +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = %d{HH:mm:ss.SSS} %p %c: %m%n%ex +appender.console.filter.threshold.type = ThresholdFilter +appender.console.filter.threshold.level = debug + +#File Appender +#appender.file.type = File +#appender.file.name = File +#appender.file.fileName = target/unit-tests.log +#appender.file.layout.type = PatternLayout +#appender.file.layout.pattern = %d{HH:mm:ss.SSS} %t %p %c{1}: %m%n%ex + +# Set the logger level of File Appender to WARN +# appender.file.filter.threshold.type = ThresholdFilter +# appender.file.filter.threshold.level = info + +# Some packages are noisy for no good reason. +logger.parquet_recordreader.name = org.apache.parquet.hadoop.ParquetRecordReader +logger.parquet_recordreader.additivity = false +logger.parquet_recordreader.level = off + +logger.parquet_outputcommitter.name = org.apache.parquet.hadoop.ParquetOutputCommitter +logger.parquet_outputcommitter.additivity = false +logger.parquet_outputcommitter.level = off + +logger.hadoop_lazystruct.name = org.apache.hadoop.hive.serde2.lazy.LazyStruct +logger.hadoop_lazystruct.additivity = false +logger.hadoop_lazystruct.level = off + +logger.hadoop_retryinghmshandler.name = org.apache.hadoop.hive.metastore.RetryingHMSHandler +logger.hadoop_retryinghmshandler.additivity = false +logger.hadoop_retryinghmshandler.level = off + +logger.hive_metadata.name = hive.ql.metadata.Hive +logger.hive_metadata.additivity = false +logger.hive_metadata.level = off + +# Parquet related logging +logger.parquet1.name = org.apache.parquet.CorruptStatistics +logger.parquet1.level = error + +logger.parquet2.name = parquet.CorruptStatistics +logger.parquet2.level = error diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q1.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q1.txt new file mode 100644 index 000000000..b10e1f182 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q1.txt @@ -0,0 +1,836 @@ +== Physical Plan == +AdaptiveSparkPlan (151) ++- == Final Plan == + NativeTakeOrdered (96) + +- NativeProject (95) + +- NativeSortMergeJoin Inner (94) + :- NativeSort (85) + : +- InputAdapter (84) + : +- AQEShuffleRead (83) + : +- ShuffleQueryStage (82), Statistics(X) + : +- NativeShuffleExchange (81) + : +- NativeProject (80) + : +- NativeSortMergeJoin Inner (79) + : :- ConvertToNative (69) + : : +- * Project (68) + : : +- * SortMergeJoin Inner (67) + : : :- NativeSort (33) + : : : +- InputAdapter (32) + : : : +- AQEShuffleRead (31) + : : : +- ShuffleQueryStage (30), Statistics(X) + : : : +- NativeShuffleExchange (29) + : : : +- NativeFilter (28) + : : : +- NativeProject (27) + : : : +- NativeHashAggregate (26) + : : : +- InputAdapter (25) + : : : +- AQEShuffleRead (24) + : : : +- ShuffleQueryStage (23), Statistics(X) + : : : +- NativeShuffleExchange (22) + : : : +- NativeHashAggregate (21) + : : : +- NativeProject (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 (66) + : : +- NativeFilter (65) + : : +- NativeProject (64) + : : +- NativeHashAggregate (63) + : : +- InputAdapter (62) + : : +- AQEShuffleRead (61) + : : +- ShuffleQueryStage (60), Statistics(X) + : : +- NativeShuffleExchange (59) + : : +- NativeHashAggregate (58) + : : +- NativeProject (57) + : : +- NativeHashAggregate (56) + : : +- InputAdapter (55) + : : +- AQEShuffleRead (54) + : : +- ShuffleQueryStage (53), Statistics(X) + : : +- NativeShuffleExchange (52) + : : +- NativeHashAggregate (51) + : : +- NativeProject (50) + : : +- NativeProject (49) + : : +- NativeSortMergeJoin Inner (48) + : : :- NativeSort (41) + : : : +- InputAdapter (40) + : : : +- AQEShuffleRead (39) + : : : +- ShuffleQueryStage (38), Statistics(X) + : : : +- NativeShuffleExchange (37) + : : : +- NativeFilter (36) + : : : +- InputAdapter (35) + : : : +- NativeParquetScan (34) + : : +- NativeSort (47) + : : +- InputAdapter (46) + : : +- InputAdapter (45) + : : +- AQEShuffleRead (44) + : : +- ShuffleQueryStage (43), Statistics(X) + : : +- ReusedExchange (42) + : +- NativeSort (78) + : +- InputAdapter (77) + : +- AQEShuffleRead (76) + : +- ShuffleQueryStage (75), Statistics(X) + : +- NativeShuffleExchange (74) + : +- NativeProject (73) + : +- NativeFilter (72) + : +- InputAdapter (71) + : +- NativeParquetScan (70) + +- NativeSort (93) + +- InputAdapter (92) + +- AQEShuffleRead (91) + +- ShuffleQueryStage (90), Statistics(X) + +- NativeShuffleExchange (89) + +- NativeFilter (88) + +- InputAdapter (87) + +- NativeParquetScan (86) ++- == Initial Plan == + TakeOrderedAndProject (150) + +- Project (149) + +- SortMergeJoin Inner (148) + :- Sort (143) + : +- Exchange (142) + : +- Project (141) + : +- SortMergeJoin Inner (140) + : :- Project (134) + : : +- SortMergeJoin Inner (133) + : : :- Sort (113) + : : : +- Exchange (112) + : : : +- Filter (111) + : : : +- HashAggregate (110) + : : : +- Exchange (109) + : : : +- HashAggregate (108) + : : : +- Project (107) + : : : +- SortMergeJoin Inner (106) + : : : :- Sort (100) + : : : : +- Exchange (99) + : : : : +- Filter (98) + : : : : +- Scan parquet (97) + : : : +- Sort (105) + : : : +- Exchange (104) + : : : +- Project (103) + : : : +- Filter (102) + : : : +- Scan parquet (101) + : : +- Sort (132) + : : +- Filter (131) + : : +- HashAggregate (130) + : : +- Exchange (129) + : : +- HashAggregate (128) + : : +- HashAggregate (127) + : : +- Exchange (126) + : : +- HashAggregate (125) + : : +- Project (124) + : : +- SortMergeJoin Inner (123) + : : :- Sort (117) + : : : +- Exchange (116) + : : : +- Filter (115) + : : : +- Scan parquet (114) + : : +- Sort (122) + : : +- Exchange (121) + : : +- Project (120) + : : +- Filter (119) + : : +- Scan parquet (118) + : +- Sort (139) + : +- Exchange (138) + : +- Project (137) + : +- Filter (136) + : +- Scan parquet (135) + +- Sort (147) + +- Exchange (146) + +- Filter (145) + +- Scan parquet (144) + + +(97) Scan parquet +Output [4]: [sr_returned_date_sk#1, sr_customer_sk#2, sr_store_sk#3, sr_return_amt#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_returned_date_sk), IsNotNull(sr_store_sk), IsNotNull(sr_customer_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [4]: [sr_returned_date_sk#1, sr_customer_sk#2, sr_store_sk#3, sr_return_amt#4] +Arguments: [#1, #2, #3, #4] + +(3) NativeFilter +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Condition : ((isnotnull(sr_returned_date_sk#1) AND isnotnull(sr_store_sk#3)) AND isnotnull(sr_customer_sk#2)) + +(4) NativeShuffleExchange +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: hashpartitioning(sr_returned_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: X + +(6) AQEShuffleRead +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: coalesced + +(7) InputAdapter +Input [4]: [#1#1, #2#2, #3#3, #4#4] + +(8) NativeSort +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: [sr_returned_date_sk#1 ASC NULLS FIRST], false + +(101) Scan parquet +Output [2]: [d_date_sk#5, d_year#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [d_date_sk#5, d_year#6] +Arguments: [#5, #6] + +(11) NativeFilter +Input [2]: [#5#5, #6#6] +Condition : ((isnotnull(d_year#6) AND (d_year#6 = 2000)) AND isnotnull(d_date_sk#5)) + +(12) NativeProject +Output [1]: [d_date_sk#5] +Input [2]: [#5#5, #6#6] + +(13) NativeShuffleExchange +Input [1]: [d_date_sk#5] +Arguments: hashpartitioning(d_date_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [1]: [d_date_sk#5] +Arguments: X + +(15) AQEShuffleRead +Input [1]: [d_date_sk#5] +Arguments: coalesced + +(16) InputAdapter +Input [1]: [d_date_sk#5] + +(17) NativeSort +Input [1]: [d_date_sk#5] +Arguments: [d_date_sk#5 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [sr_returned_date_sk#1] +Right keys [1]: [d_date_sk#5] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [3]: [sr_customer_sk#2, sr_store_sk#3, sr_return_amt#4] +Input [5]: [#1#1, #2#2, #3#3, #4#4, d_date_sk#5] + +(20) NativeProject +Output [3]: [sr_customer_sk#2 AS sr_customer_sk#2, sr_store_sk#3 AS sr_store_sk#3, UnscaledValue(sr_return_amt#4) AS _c2#7] +Input [3]: [sr_customer_sk#2, sr_store_sk#3, sr_return_amt#4] + +(21) NativeHashAggregate +Input [3]: [sr_customer_sk#2, sr_store_sk#3, _c2#7] +Keys [2]: [sr_customer_sk#2, sr_store_sk#3] +Functions [1]: [partial_sum(_c2#7)] +Aggregate Attributes [1]: [sum#8] +Results [3]: [sr_customer_sk#2, sr_store_sk#3, #9#9] + +(22) NativeShuffleExchange +Input [3]: [sr_customer_sk#2, sr_store_sk#3, #9#9] +Arguments: hashpartitioning(sr_customer_sk#2, sr_store_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(23) ShuffleQueryStage +Output [3]: [sr_customer_sk#2, sr_store_sk#3, #9#9] +Arguments: X + +(24) AQEShuffleRead +Input [3]: [sr_customer_sk#2, sr_store_sk#3, #9#9] +Arguments: coalesced + +(25) InputAdapter +Input [3]: [sr_customer_sk#2, sr_store_sk#3, #9#9] + +(26) NativeHashAggregate +Input [3]: [sr_customer_sk#2, sr_store_sk#3, #9#9] +Keys [2]: [sr_customer_sk#2, sr_store_sk#3] +Functions [1]: [sum(UnscaledValue(sr_return_amt#4))] +Aggregate Attributes [1]: [sum(UnscaledValue(sr_return_amt#4))#10] +Results [3]: [sr_customer_sk#2, sr_store_sk#3, sum(UnscaledValue(sr_return_amt#4))#10] + +(27) NativeProject +Output [3]: [sr_customer_sk#2 AS ctr_customer_sk#11, sr_store_sk#3 AS ctr_store_sk#12, MakeDecimal(sum(UnscaledValue(sr_return_amt#4))#10,17,2) AS ctr_total_return#13] +Input [3]: [sr_customer_sk#2, sr_store_sk#3, sum(UnscaledValue(sr_return_amt#4))#10] + +(28) NativeFilter +Input [3]: [ctr_customer_sk#11, ctr_store_sk#12, ctr_total_return#13] +Condition : isnotnull(ctr_total_return#13) + +(29) NativeShuffleExchange +Input [3]: [ctr_customer_sk#11, ctr_store_sk#12, ctr_total_return#13] +Arguments: hashpartitioning(ctr_store_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(30) ShuffleQueryStage +Output [3]: [ctr_customer_sk#11, ctr_store_sk#12, ctr_total_return#13] +Arguments: X + +(31) AQEShuffleRead +Input [3]: [ctr_customer_sk#11, ctr_store_sk#12, ctr_total_return#13] +Arguments: coalesced + +(32) InputAdapter +Input [3]: [ctr_customer_sk#11, ctr_store_sk#12, ctr_total_return#13] + +(33) NativeSort +Input [3]: [ctr_customer_sk#11, ctr_store_sk#12, ctr_total_return#13] +Arguments: [ctr_store_sk#12 ASC NULLS FIRST], false + +(114) Scan parquet +Output [4]: [sr_returned_date_sk#14, sr_customer_sk#15, sr_store_sk#16, sr_return_amt#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_returned_date_sk), IsNotNull(sr_store_sk)] +ReadSchema: struct + +(35) InputAdapter +Input [4]: [sr_returned_date_sk#14, sr_customer_sk#15, sr_store_sk#16, sr_return_amt#17] +Arguments: [#14, #15, #16, #17] + +(36) NativeFilter +Input [4]: [#14#14, #15#15, #16#16, #17#17] +Condition : (isnotnull(sr_returned_date_sk#14) AND isnotnull(sr_store_sk#16)) + +(37) NativeShuffleExchange +Input [4]: [#14#14, #15#15, #16#16, #17#17] +Arguments: hashpartitioning(sr_returned_date_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(38) ShuffleQueryStage +Output [4]: [#14#14, #15#15, #16#16, #17#17] +Arguments: X + +(39) AQEShuffleRead +Input [4]: [#14#14, #15#15, #16#16, #17#17] +Arguments: coalesced + +(40) InputAdapter +Input [4]: [#14#14, #15#15, #16#16, #17#17] + +(41) NativeSort +Input [4]: [#14#14, #15#15, #16#16, #17#17] +Arguments: [sr_returned_date_sk#14 ASC NULLS FIRST], false + +(42) ReusedExchange [Reuses operator id: 13] +Output [1]: [d_date_sk#18] + +(43) ShuffleQueryStage +Output [1]: [d_date_sk#18] +Arguments: X + +(44) AQEShuffleRead +Input [1]: [d_date_sk#18] +Arguments: coalesced + +(45) InputAdapter +Input [1]: [d_date_sk#18] +Arguments: [#18] + +(46) InputAdapter +Input [1]: [#18#18] + +(47) NativeSort +Input [1]: [#18#18] +Arguments: [d_date_sk#18 ASC NULLS FIRST], false + +(48) NativeSortMergeJoin +Left keys [1]: [sr_returned_date_sk#14] +Right keys [1]: [d_date_sk#18] +Join type: Inner +Join condition: None + +(49) NativeProject +Output [3]: [sr_customer_sk#15, sr_store_sk#16, sr_return_amt#17] +Input [5]: [#14#14, #15#15, #16#16, #17#17, #18#18] + +(50) NativeProject +Output [3]: [sr_customer_sk#15 AS sr_customer_sk#15, sr_store_sk#16 AS sr_store_sk#16, UnscaledValue(sr_return_amt#17) AS _c2#19] +Input [3]: [sr_customer_sk#15, sr_store_sk#16, sr_return_amt#17] + +(51) NativeHashAggregate +Input [3]: [sr_customer_sk#15, sr_store_sk#16, _c2#19] +Keys [2]: [sr_customer_sk#15, sr_store_sk#16] +Functions [1]: [partial_sum(_c2#19)] +Aggregate Attributes [1]: [sum#20] +Results [3]: [sr_customer_sk#15, sr_store_sk#16, #9#9] + +(52) NativeShuffleExchange +Input [3]: [sr_customer_sk#15, sr_store_sk#16, #9#9] +Arguments: hashpartitioning(sr_customer_sk#15, sr_store_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(53) ShuffleQueryStage +Output [3]: [sr_customer_sk#15, sr_store_sk#16, #9#9] +Arguments: X + +(54) AQEShuffleRead +Input [3]: [sr_customer_sk#15, sr_store_sk#16, #9#9] +Arguments: coalesced + +(55) InputAdapter +Input [3]: [sr_customer_sk#15, sr_store_sk#16, #9#9] + +(56) NativeHashAggregate +Input [3]: [sr_customer_sk#15, sr_store_sk#16, #9#9] +Keys [2]: [sr_customer_sk#15, sr_store_sk#16] +Functions [1]: [sum(UnscaledValue(sr_return_amt#17))] +Aggregate Attributes [1]: [sum(UnscaledValue(sr_return_amt#17))#10] +Results [3]: [sr_customer_sk#15, sr_store_sk#16, sum(UnscaledValue(sr_return_amt#17))#10] + +(57) NativeProject +Output [2]: [sr_store_sk#16 AS ctr_store_sk#21, MakeDecimal(sum(UnscaledValue(sr_return_amt#17))#10,17,2) AS ctr_total_return#22] +Input [3]: [sr_customer_sk#15, sr_store_sk#16, sum(UnscaledValue(sr_return_amt#17))#10] + +(58) NativeHashAggregate +Input [2]: [ctr_store_sk#21, ctr_total_return#22] +Keys [1]: [ctr_store_sk#21] +Functions [1]: [partial_avg(ctr_total_return#22)] +Aggregate Attributes [2]: [sum#23, count#24] +Results [2]: [ctr_store_sk#21, #9#9] + +(59) NativeShuffleExchange +Input [2]: [ctr_store_sk#21, #9#9] +Arguments: hashpartitioning(ctr_store_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(60) ShuffleQueryStage +Output [2]: [ctr_store_sk#21, #9#9] +Arguments: X + +(61) AQEShuffleRead +Input [2]: [ctr_store_sk#21, #9#9] +Arguments: coalesced + +(62) InputAdapter +Input [2]: [ctr_store_sk#21, #9#9] + +(63) NativeHashAggregate +Input [2]: [ctr_store_sk#21, #9#9] +Keys [1]: [ctr_store_sk#21] +Functions [1]: [avg(ctr_total_return#22)] +Aggregate Attributes [1]: [avg(ctr_total_return#22)#25] +Results [2]: [ctr_store_sk#21, avg(ctr_total_return#22)#25] + +(64) NativeProject +Output [2]: [(avg(ctr_total_return#22)#25 * 1.2) AS (avg(ctr_total_return) * 1.2)#26, ctr_store_sk#21] +Input [2]: [ctr_store_sk#21, avg(ctr_total_return#22)#25] + +(65) NativeFilter +Input [2]: [(avg(ctr_total_return) * 1.2)#26, ctr_store_sk#21] +Condition : isnotnull((avg(ctr_total_return) * 1.2)#26) + +(66) NativeSort +Input [2]: [(avg(ctr_total_return) * 1.2)#26, ctr_store_sk#21] +Arguments: [ctr_store_sk#21 ASC NULLS FIRST], false + +(67) SortMergeJoin [codegen id : 1] +Left keys [1]: [ctr_store_sk#12] +Right keys [1]: [ctr_store_sk#21] +Join type: Inner +Join condition: (cast(ctr_total_return#13 as decimal(24,7)) > (avg(ctr_total_return) * 1.2)#26) + +(68) Project [codegen id : 1] +Output [2]: [ctr_customer_sk#11, ctr_store_sk#12] +Input [5]: [ctr_customer_sk#11, ctr_store_sk#12, ctr_total_return#13, (avg(ctr_total_return) * 1.2)#26, ctr_store_sk#21] + +(69) ConvertToNative +Input [2]: [ctr_customer_sk#11, ctr_store_sk#12] + +(135) Scan parquet +Output [2]: [s_store_sk#27, s_state#28] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_state), EqualTo(s_state,TN), IsNotNull(s_store_sk)] +ReadSchema: struct + +(71) InputAdapter +Input [2]: [s_store_sk#27, s_state#28] +Arguments: [#27, #28] + +(72) NativeFilter +Input [2]: [#27#27, #28#28] +Condition : ((isnotnull(s_state#28) AND (s_state#28 = TN)) AND isnotnull(s_store_sk#27)) + +(73) NativeProject +Output [1]: [s_store_sk#27] +Input [2]: [#27#27, #28#28] + +(74) NativeShuffleExchange +Input [1]: [s_store_sk#27] +Arguments: hashpartitioning(s_store_sk#27, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(75) ShuffleQueryStage +Output [1]: [s_store_sk#27] +Arguments: X + +(76) AQEShuffleRead +Input [1]: [s_store_sk#27] +Arguments: coalesced + +(77) InputAdapter +Input [1]: [s_store_sk#27] + +(78) NativeSort +Input [1]: [s_store_sk#27] +Arguments: [s_store_sk#27 ASC NULLS FIRST], false + +(79) NativeSortMergeJoin +Left keys [1]: [ctr_store_sk#12] +Right keys [1]: [s_store_sk#27] +Join type: Inner +Join condition: None + +(80) NativeProject +Output [1]: [ctr_customer_sk#11] +Input [3]: [ctr_customer_sk#11, ctr_store_sk#12, s_store_sk#27] + +(81) NativeShuffleExchange +Input [1]: [ctr_customer_sk#11] +Arguments: hashpartitioning(ctr_customer_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(82) ShuffleQueryStage +Output [1]: [ctr_customer_sk#11] +Arguments: X + +(83) AQEShuffleRead +Input [1]: [ctr_customer_sk#11] +Arguments: coalesced + +(84) InputAdapter +Input [1]: [ctr_customer_sk#11] + +(85) NativeSort +Input [1]: [ctr_customer_sk#11] +Arguments: [ctr_customer_sk#11 ASC NULLS FIRST], false + +(144) Scan parquet +Output [2]: [c_customer_sk#29, c_customer_id#30] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk)] +ReadSchema: struct + +(87) InputAdapter +Input [2]: [c_customer_sk#29, c_customer_id#30] +Arguments: [#29, #30] + +(88) NativeFilter +Input [2]: [#29#29, #30#30] +Condition : isnotnull(c_customer_sk#29) + +(89) NativeShuffleExchange +Input [2]: [#29#29, #30#30] +Arguments: hashpartitioning(c_customer_sk#29, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(90) ShuffleQueryStage +Output [2]: [#29#29, #30#30] +Arguments: X + +(91) AQEShuffleRead +Input [2]: [#29#29, #30#30] +Arguments: coalesced + +(92) InputAdapter +Input [2]: [#29#29, #30#30] + +(93) NativeSort +Input [2]: [#29#29, #30#30] +Arguments: [c_customer_sk#29 ASC NULLS FIRST], false + +(94) NativeSortMergeJoin +Left keys [1]: [ctr_customer_sk#11] +Right keys [1]: [c_customer_sk#29] +Join type: Inner +Join condition: None + +(95) NativeProject +Output [1]: [c_customer_id#30] +Input [3]: [ctr_customer_sk#11, #29#29, #30#30] + +(96) NativeTakeOrdered +Input [1]: [c_customer_id#30] +Arguments: X, [c_customer_id#30 ASC NULLS FIRST] + +(97) Scan parquet +Output [4]: [sr_returned_date_sk#1, sr_customer_sk#2, sr_store_sk#3, sr_return_amt#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_returned_date_sk), IsNotNull(sr_store_sk), IsNotNull(sr_customer_sk)] +ReadSchema: struct + +(98) Filter +Input [4]: [sr_returned_date_sk#1, sr_customer_sk#2, sr_store_sk#3, sr_return_amt#4] +Condition : ((isnotnull(sr_returned_date_sk#1) AND isnotnull(sr_store_sk#3)) AND isnotnull(sr_customer_sk#2)) + +(99) Exchange +Input [4]: [sr_returned_date_sk#1, sr_customer_sk#2, sr_store_sk#3, sr_return_amt#4] +Arguments: hashpartitioning(sr_returned_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(100) Sort +Input [4]: [sr_returned_date_sk#1, sr_customer_sk#2, sr_store_sk#3, sr_return_amt#4] +Arguments: [sr_returned_date_sk#1 ASC NULLS FIRST], false, 0 + +(101) Scan parquet +Output [2]: [d_date_sk#5, d_year#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(102) Filter +Input [2]: [d_date_sk#5, d_year#6] +Condition : ((isnotnull(d_year#6) AND (d_year#6 = 2000)) AND isnotnull(d_date_sk#5)) + +(103) Project +Output [1]: [d_date_sk#5] +Input [2]: [d_date_sk#5, d_year#6] + +(104) Exchange +Input [1]: [d_date_sk#5] +Arguments: hashpartitioning(d_date_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(105) Sort +Input [1]: [d_date_sk#5] +Arguments: [d_date_sk#5 ASC NULLS FIRST], false, 0 + +(106) SortMergeJoin +Left keys [1]: [sr_returned_date_sk#1] +Right keys [1]: [d_date_sk#5] +Join type: Inner +Join condition: None + +(107) Project +Output [3]: [sr_customer_sk#2, sr_store_sk#3, sr_return_amt#4] +Input [5]: [sr_returned_date_sk#1, sr_customer_sk#2, sr_store_sk#3, sr_return_amt#4, d_date_sk#5] + +(108) HashAggregate +Input [3]: [sr_customer_sk#2, sr_store_sk#3, sr_return_amt#4] +Keys [2]: [sr_customer_sk#2, sr_store_sk#3] +Functions [1]: [partial_sum(UnscaledValue(sr_return_amt#4))] +Aggregate Attributes [1]: [sum#8] +Results [3]: [sr_customer_sk#2, sr_store_sk#3, sum#31] + +(109) Exchange +Input [3]: [sr_customer_sk#2, sr_store_sk#3, sum#31] +Arguments: hashpartitioning(sr_customer_sk#2, sr_store_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(110) HashAggregate +Input [3]: [sr_customer_sk#2, sr_store_sk#3, sum#31] +Keys [2]: [sr_customer_sk#2, sr_store_sk#3] +Functions [1]: [sum(UnscaledValue(sr_return_amt#4))] +Aggregate Attributes [1]: [sum(UnscaledValue(sr_return_amt#4))#10] +Results [3]: [sr_customer_sk#2 AS ctr_customer_sk#11, sr_store_sk#3 AS ctr_store_sk#12, MakeDecimal(sum(UnscaledValue(sr_return_amt#4))#10,17,2) AS ctr_total_return#13] + +(111) Filter +Input [3]: [ctr_customer_sk#11, ctr_store_sk#12, ctr_total_return#13] +Condition : isnotnull(ctr_total_return#13) + +(112) Exchange +Input [3]: [ctr_customer_sk#11, ctr_store_sk#12, ctr_total_return#13] +Arguments: hashpartitioning(ctr_store_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(113) Sort +Input [3]: [ctr_customer_sk#11, ctr_store_sk#12, ctr_total_return#13] +Arguments: [ctr_store_sk#12 ASC NULLS FIRST], false, 0 + +(114) Scan parquet +Output [4]: [sr_returned_date_sk#14, sr_customer_sk#15, sr_store_sk#16, sr_return_amt#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_returned_date_sk), IsNotNull(sr_store_sk)] +ReadSchema: struct + +(115) Filter +Input [4]: [sr_returned_date_sk#14, sr_customer_sk#15, sr_store_sk#16, sr_return_amt#17] +Condition : (isnotnull(sr_returned_date_sk#14) AND isnotnull(sr_store_sk#16)) + +(116) Exchange +Input [4]: [sr_returned_date_sk#14, sr_customer_sk#15, sr_store_sk#16, sr_return_amt#17] +Arguments: hashpartitioning(sr_returned_date_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(117) Sort +Input [4]: [sr_returned_date_sk#14, sr_customer_sk#15, sr_store_sk#16, sr_return_amt#17] +Arguments: [sr_returned_date_sk#14 ASC NULLS FIRST], false, 0 + +(118) Scan parquet +Output [2]: [d_date_sk#18, d_year#32] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(119) Filter +Input [2]: [d_date_sk#18, d_year#32] +Condition : ((isnotnull(d_year#32) AND (d_year#32 = 2000)) AND isnotnull(d_date_sk#18)) + +(120) Project +Output [1]: [d_date_sk#18] +Input [2]: [d_date_sk#18, d_year#32] + +(121) Exchange +Input [1]: [d_date_sk#18] +Arguments: hashpartitioning(d_date_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(122) Sort +Input [1]: [d_date_sk#18] +Arguments: [d_date_sk#18 ASC NULLS FIRST], false, 0 + +(123) SortMergeJoin +Left keys [1]: [sr_returned_date_sk#14] +Right keys [1]: [d_date_sk#18] +Join type: Inner +Join condition: None + +(124) Project +Output [3]: [sr_customer_sk#15, sr_store_sk#16, sr_return_amt#17] +Input [5]: [sr_returned_date_sk#14, sr_customer_sk#15, sr_store_sk#16, sr_return_amt#17, d_date_sk#18] + +(125) HashAggregate +Input [3]: [sr_customer_sk#15, sr_store_sk#16, sr_return_amt#17] +Keys [2]: [sr_customer_sk#15, sr_store_sk#16] +Functions [1]: [partial_sum(UnscaledValue(sr_return_amt#17))] +Aggregate Attributes [1]: [sum#20] +Results [3]: [sr_customer_sk#15, sr_store_sk#16, sum#33] + +(126) Exchange +Input [3]: [sr_customer_sk#15, sr_store_sk#16, sum#33] +Arguments: hashpartitioning(sr_customer_sk#15, sr_store_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(127) HashAggregate +Input [3]: [sr_customer_sk#15, sr_store_sk#16, sum#33] +Keys [2]: [sr_customer_sk#15, sr_store_sk#16] +Functions [1]: [sum(UnscaledValue(sr_return_amt#17))] +Aggregate Attributes [1]: [sum(UnscaledValue(sr_return_amt#17))#10] +Results [2]: [sr_store_sk#16 AS ctr_store_sk#21, MakeDecimal(sum(UnscaledValue(sr_return_amt#17))#10,17,2) AS ctr_total_return#22] + +(128) HashAggregate +Input [2]: [ctr_store_sk#21, ctr_total_return#22] +Keys [1]: [ctr_store_sk#21] +Functions [1]: [partial_avg(ctr_total_return#22)] +Aggregate Attributes [2]: [sum#23, count#24] +Results [3]: [ctr_store_sk#21, sum#34, count#35] + +(129) Exchange +Input [3]: [ctr_store_sk#21, sum#34, count#35] +Arguments: hashpartitioning(ctr_store_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(130) HashAggregate +Input [3]: [ctr_store_sk#21, sum#34, count#35] +Keys [1]: [ctr_store_sk#21] +Functions [1]: [avg(ctr_total_return#22)] +Aggregate Attributes [1]: [avg(ctr_total_return#22)#25] +Results [2]: [(avg(ctr_total_return#22)#25 * 1.2) AS (avg(ctr_total_return) * 1.2)#26, ctr_store_sk#21] + +(131) Filter +Input [2]: [(avg(ctr_total_return) * 1.2)#26, ctr_store_sk#21] +Condition : isnotnull((avg(ctr_total_return) * 1.2)#26) + +(132) Sort +Input [2]: [(avg(ctr_total_return) * 1.2)#26, ctr_store_sk#21] +Arguments: [ctr_store_sk#21 ASC NULLS FIRST], false, 0 + +(133) SortMergeJoin +Left keys [1]: [ctr_store_sk#12] +Right keys [1]: [ctr_store_sk#21] +Join type: Inner +Join condition: (cast(ctr_total_return#13 as decimal(24,7)) > (avg(ctr_total_return) * 1.2)#26) + +(134) Project +Output [2]: [ctr_customer_sk#11, ctr_store_sk#12] +Input [5]: [ctr_customer_sk#11, ctr_store_sk#12, ctr_total_return#13, (avg(ctr_total_return) * 1.2)#26, ctr_store_sk#21] + +(135) Scan parquet +Output [2]: [s_store_sk#27, s_state#28] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_state), EqualTo(s_state,TN), IsNotNull(s_store_sk)] +ReadSchema: struct + +(136) Filter +Input [2]: [s_store_sk#27, s_state#28] +Condition : ((isnotnull(s_state#28) AND (s_state#28 = TN)) AND isnotnull(s_store_sk#27)) + +(137) Project +Output [1]: [s_store_sk#27] +Input [2]: [s_store_sk#27, s_state#28] + +(138) Exchange +Input [1]: [s_store_sk#27] +Arguments: hashpartitioning(s_store_sk#27, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(139) Sort +Input [1]: [s_store_sk#27] +Arguments: [s_store_sk#27 ASC NULLS FIRST], false, 0 + +(140) SortMergeJoin +Left keys [1]: [ctr_store_sk#12] +Right keys [1]: [s_store_sk#27] +Join type: Inner +Join condition: None + +(141) Project +Output [1]: [ctr_customer_sk#11] +Input [3]: [ctr_customer_sk#11, ctr_store_sk#12, s_store_sk#27] + +(142) Exchange +Input [1]: [ctr_customer_sk#11] +Arguments: hashpartitioning(ctr_customer_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(143) Sort +Input [1]: [ctr_customer_sk#11] +Arguments: [ctr_customer_sk#11 ASC NULLS FIRST], false, 0 + +(144) Scan parquet +Output [2]: [c_customer_sk#29, c_customer_id#30] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk)] +ReadSchema: struct + +(145) Filter +Input [2]: [c_customer_sk#29, c_customer_id#30] +Condition : isnotnull(c_customer_sk#29) + +(146) Exchange +Input [2]: [c_customer_sk#29, c_customer_id#30] +Arguments: hashpartitioning(c_customer_sk#29, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(147) Sort +Input [2]: [c_customer_sk#29, c_customer_id#30] +Arguments: [c_customer_sk#29 ASC NULLS FIRST], false, 0 + +(148) SortMergeJoin +Left keys [1]: [ctr_customer_sk#11] +Right keys [1]: [c_customer_sk#29] +Join type: Inner +Join condition: None + +(149) Project +Output [1]: [c_customer_id#30] +Input [3]: [ctr_customer_sk#11, c_customer_sk#29, c_customer_id#30] + +(150) TakeOrderedAndProject +Input [1]: [c_customer_id#30] +Arguments: X, [c_customer_id#30 ASC NULLS FIRST], [c_customer_id#30] + +(151) AdaptiveSparkPlan +Output [1]: [c_customer_id#30] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q10.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q10.txt new file mode 100644 index 000000000..e48303a35 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q10.txt @@ -0,0 +1,1020 @@ +== Physical Plan == +AdaptiveSparkPlan (188) ++- == Final Plan == + NativeTakeOrdered (118) + +- NativeProject (117) + +- NativeHashAggregate (116) + +- InputAdapter (115) + +- AQEShuffleRead (114) + +- ShuffleQueryStage (113), Statistics(X) + +- NativeShuffleExchange (112) + +- NativeHashAggregate (111) + +- NativeProject (110) + +- NativeSortMergeJoin Inner (109) + :- NativeSort (100) + : +- InputAdapter (99) + : +- AQEShuffleRead (98) + : +- ShuffleQueryStage (97), Statistics(X) + : +- NativeShuffleExchange (96) + : +- NativeProject (95) + : +- NativeSortMergeJoin Inner (94) + : :- NativeSort (84) + : : +- InputAdapter (83) + : : +- AQEShuffleRead (82) + : : +- ShuffleQueryStage (81), Statistics(X) + : : +- NativeShuffleExchange (80) + : : +- NativeProject (79) + : : +- NativeFilter (78) + : : +- NativeSortMergeJoin ExistenceJoin(exists#1) (77) + : : :- NativeSortMergeJoin ExistenceJoin(exists#2) (55) + : : : :- NativeSortMergeJoin LeftSemi (33) + : : : : :- NativeSort (8) + : : : : : +- InputAdapter (7) + : : : : : +- AQEShuffleRead (6) + : : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : : +- NativeShuffleExchange (4) + : : : : : +- NativeFilter (3) + : : : : : +- InputAdapter (2) + : : : : : +- NativeParquetScan (1) + : : : : +- NativeSort (32) + : : : : +- InputAdapter (31) + : : : : +- AQEShuffleRead (30) + : : : : +- ShuffleQueryStage (29), Statistics(X) + : : : : +- NativeShuffleExchange (28) + : : : : +- NativeProject (27) + : : : : +- NativeSortMergeJoin Inner (26) + : : : : :- NativeSort (16) + : : : : : +- InputAdapter (15) + : : : : : +- AQEShuffleRead (14) + : : : : : +- ShuffleQueryStage (13), Statistics(X) + : : : : : +- NativeShuffleExchange (12) + : : : : : +- NativeFilter (11) + : : : : : +- InputAdapter (10) + : : : : : +- NativeParquetScan (9) + : : : : +- NativeSort (25) + : : : : +- InputAdapter (24) + : : : : +- AQEShuffleRead (23) + : : : : +- ShuffleQueryStage (22), Statistics(X) + : : : : +- NativeShuffleExchange (21) + : : : : +- NativeProject (20) + : : : : +- NativeFilter (19) + : : : : +- InputAdapter (18) + : : : : +- NativeParquetScan (17) + : : : +- NativeSort (54) + : : : +- InputAdapter (53) + : : : +- AQEShuffleRead (52) + : : : +- ShuffleQueryStage (51), Statistics(X) + : : : +- NativeShuffleExchange (50) + : : : +- NativeProject (49) + : : : +- NativeSortMergeJoin Inner (48) + : : : :- NativeSort (41) + : : : : +- InputAdapter (40) + : : : : +- AQEShuffleRead (39) + : : : : +- ShuffleQueryStage (38), Statistics(X) + : : : : +- NativeShuffleExchange (37) + : : : : +- NativeFilter (36) + : : : : +- InputAdapter (35) + : : : : +- NativeParquetScan (34) + : : : +- NativeSort (47) + : : : +- InputAdapter (46) + : : : +- InputAdapter (45) + : : : +- AQEShuffleRead (44) + : : : +- ShuffleQueryStage (43), Statistics(X) + : : : +- ReusedExchange (42) + : : +- NativeSort (76) + : : +- InputAdapter (75) + : : +- AQEShuffleRead (74) + : : +- ShuffleQueryStage (73), Statistics(X) + : : +- NativeShuffleExchange (72) + : : +- NativeProject (71) + : : +- NativeSortMergeJoin Inner (70) + : : :- NativeSort (63) + : : : +- InputAdapter (62) + : : : +- AQEShuffleRead (61) + : : : +- ShuffleQueryStage (60), Statistics(X) + : : : +- NativeShuffleExchange (59) + : : : +- NativeFilter (58) + : : : +- InputAdapter (57) + : : : +- NativeParquetScan (56) + : : +- NativeSort (69) + : : +- InputAdapter (68) + : : +- InputAdapter (67) + : : +- AQEShuffleRead (66) + : : +- ShuffleQueryStage (65), Statistics(X) + : : +- ReusedExchange (64) + : +- NativeSort (93) + : +- InputAdapter (92) + : +- AQEShuffleRead (91) + : +- ShuffleQueryStage (90), Statistics(X) + : +- NativeShuffleExchange (89) + : +- NativeProject (88) + : +- NativeFilter (87) + : +- InputAdapter (86) + : +- NativeParquetScan (85) + +- NativeSort (108) + +- InputAdapter (107) + +- AQEShuffleRead (106) + +- ShuffleQueryStage (105), Statistics(X) + +- NativeShuffleExchange (104) + +- NativeFilter (103) + +- InputAdapter (102) + +- NativeParquetScan (101) ++- == Initial Plan == + TakeOrderedAndProject (187) + +- HashAggregate (186) + +- Exchange (185) + +- HashAggregate (184) + +- Project (183) + +- SortMergeJoin Inner (182) + :- Sort (177) + : +- Exchange (176) + : +- Project (175) + : +- SortMergeJoin Inner (174) + : :- Sort (168) + : : +- Exchange (167) + : : +- Project (166) + : : +- Filter (165) + : : +- SortMergeJoin ExistenceJoin(exists#1) (164) + : : :- SortMergeJoin ExistenceJoin(exists#2) (150) + : : : :- SortMergeJoin LeftSemi (136) + : : : : :- Sort (122) + : : : : : +- Exchange (121) + : : : : : +- Filter (120) + : : : : : +- Scan parquet (119) + : : : : +- Sort (135) + : : : : +- Exchange (134) + : : : : +- Project (133) + : : : : +- SortMergeJoin Inner (132) + : : : : :- Sort (126) + : : : : : +- Exchange (125) + : : : : : +- Filter (124) + : : : : : +- Scan parquet (123) + : : : : +- Sort (131) + : : : : +- Exchange (130) + : : : : +- Project (129) + : : : : +- Filter (128) + : : : : +- Scan parquet (127) + : : : +- 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 (163) + : : +- Exchange (162) + : : +- Project (161) + : : +- SortMergeJoin Inner (160) + : : :- Sort (154) + : : : +- Exchange (153) + : : : +- Filter (152) + : : : +- Scan parquet (151) + : : +- Sort (159) + : : +- Exchange (158) + : : +- Project (157) + : : +- Filter (156) + : : +- Scan parquet (155) + : +- Sort (173) + : +- Exchange (172) + : +- Project (171) + : +- Filter (170) + : +- Scan parquet (169) + +- Sort (181) + +- Exchange (180) + +- Filter (179) + +- Scan parquet (178) + + +(119) Scan parquet +Output [3]: [c_customer_sk#3, c_current_cdemo_sk#4, c_current_addr_sk#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_current_addr_sk), IsNotNull(c_current_cdemo_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [c_customer_sk#3, c_current_cdemo_sk#4, c_current_addr_sk#5] +Arguments: [#3, #4, #5] + +(3) NativeFilter +Input [3]: [#3#3, #4#4, #5#5] +Condition : (isnotnull(c_current_addr_sk#5) AND isnotnull(c_current_cdemo_sk#4)) + +(4) NativeShuffleExchange +Input [3]: [#3#3, #4#4, #5#5] +Arguments: hashpartitioning(c_customer_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [3]: [#3#3, #4#4, #5#5] +Arguments: X + +(6) AQEShuffleRead +Input [3]: [#3#3, #4#4, #5#5] +Arguments: coalesced + +(7) InputAdapter +Input [3]: [#3#3, #4#4, #5#5] + +(8) NativeSort +Input [3]: [#3#3, #4#4, #5#5] +Arguments: [c_customer_sk#3 ASC NULLS FIRST], false + +(123) Scan parquet +Output [2]: [ss_sold_date_sk#6, ss_customer_sk#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [ss_sold_date_sk#6, ss_customer_sk#7] +Arguments: [#6, #7] + +(11) NativeFilter +Input [2]: [#6#6, #7#7] +Condition : isnotnull(ss_sold_date_sk#6) + +(12) NativeShuffleExchange +Input [2]: [#6#6, #7#7] +Arguments: hashpartitioning(ss_sold_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [2]: [#6#6, #7#7] +Arguments: X + +(14) AQEShuffleRead +Input [2]: [#6#6, #7#7] +Arguments: coalesced + +(15) InputAdapter +Input [2]: [#6#6, #7#7] + +(16) NativeSort +Input [2]: [#6#6, #7#7] +Arguments: [ss_sold_date_sk#6 ASC NULLS FIRST], false + +(127) Scan parquet +Output [3]: [d_date_sk#8, d_year#9, d_moy#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2002), GreaterThanOrEqual(d_moy,1), LessThanOrEqual(d_moy,4), IsNotNull(d_date_sk)] +ReadSchema: struct + +(18) InputAdapter +Input [3]: [d_date_sk#8, d_year#9, d_moy#10] +Arguments: [#8, #9, #10] + +(19) NativeFilter +Input [3]: [#8#8, #9#9, #10#10] +Condition : (((((isnotnull(d_year#9) AND isnotnull(d_moy#10)) AND (d_year#9 = 2002)) AND (d_moy#10 >= 1)) AND (d_moy#10 <= 4)) AND isnotnull(d_date_sk#8)) + +(20) NativeProject +Output [1]: [d_date_sk#8] +Input [3]: [#8#8, #9#9, #10#10] + +(21) NativeShuffleExchange +Input [1]: [d_date_sk#8] +Arguments: hashpartitioning(d_date_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(22) ShuffleQueryStage +Output [1]: [d_date_sk#8] +Arguments: X + +(23) AQEShuffleRead +Input [1]: [d_date_sk#8] +Arguments: coalesced + +(24) InputAdapter +Input [1]: [d_date_sk#8] + +(25) NativeSort +Input [1]: [d_date_sk#8] +Arguments: [d_date_sk#8 ASC NULLS FIRST], false + +(26) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#6] +Right keys [1]: [d_date_sk#8] +Join type: Inner +Join condition: None + +(27) NativeProject +Output [1]: [ss_customer_sk#7] +Input [3]: [#6#6, #7#7, d_date_sk#8] + +(28) NativeShuffleExchange +Input [1]: [ss_customer_sk#7] +Arguments: hashpartitioning(ss_customer_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(29) ShuffleQueryStage +Output [1]: [ss_customer_sk#7] +Arguments: X + +(30) AQEShuffleRead +Input [1]: [ss_customer_sk#7] +Arguments: coalesced + +(31) InputAdapter +Input [1]: [ss_customer_sk#7] + +(32) NativeSort +Input [1]: [ss_customer_sk#7] +Arguments: [ss_customer_sk#7 ASC NULLS FIRST], false + +(33) NativeSortMergeJoin +Left keys [1]: [c_customer_sk#3] +Right keys [1]: [ss_customer_sk#7] +Join type: LeftSemi +Join condition: None + +(137) Scan parquet +Output [2]: [ws_sold_date_sk#11, ws_bill_customer_sk#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(35) InputAdapter +Input [2]: [ws_sold_date_sk#11, ws_bill_customer_sk#12] +Arguments: [#11, #12] + +(36) NativeFilter +Input [2]: [#11#11, #12#12] +Condition : isnotnull(ws_sold_date_sk#11) + +(37) NativeShuffleExchange +Input [2]: [#11#11, #12#12] +Arguments: hashpartitioning(ws_sold_date_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(38) ShuffleQueryStage +Output [2]: [#11#11, #12#12] +Arguments: X + +(39) AQEShuffleRead +Input [2]: [#11#11, #12#12] +Arguments: coalesced + +(40) InputAdapter +Input [2]: [#11#11, #12#12] + +(41) NativeSort +Input [2]: [#11#11, #12#12] +Arguments: [ws_sold_date_sk#11 ASC NULLS FIRST], false + +(42) ReusedExchange [Reuses operator id: 21] +Output [1]: [d_date_sk#13] + +(43) ShuffleQueryStage +Output [1]: [d_date_sk#13] +Arguments: X + +(44) AQEShuffleRead +Input [1]: [d_date_sk#13] +Arguments: coalesced + +(45) InputAdapter +Input [1]: [d_date_sk#13] +Arguments: [#13] + +(46) InputAdapter +Input [1]: [#13#13] + +(47) NativeSort +Input [1]: [#13#13] +Arguments: [d_date_sk#13 ASC NULLS FIRST], false + +(48) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#11] +Right keys [1]: [d_date_sk#13] +Join type: Inner +Join condition: None + +(49) NativeProject +Output [1]: [ws_bill_customer_sk#12] +Input [3]: [#11#11, #12#12, #13#13] + +(50) NativeShuffleExchange +Input [1]: [ws_bill_customer_sk#12] +Arguments: hashpartitioning(ws_bill_customer_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(51) ShuffleQueryStage +Output [1]: [ws_bill_customer_sk#12] +Arguments: X + +(52) AQEShuffleRead +Input [1]: [ws_bill_customer_sk#12] +Arguments: coalesced + +(53) InputAdapter +Input [1]: [ws_bill_customer_sk#12] + +(54) NativeSort +Input [1]: [ws_bill_customer_sk#12] +Arguments: [ws_bill_customer_sk#12 ASC NULLS FIRST], false + +(55) NativeSortMergeJoin +Left keys [1]: [c_customer_sk#3] +Right keys [1]: [ws_bill_customer_sk#12] +Join type: ExistenceJoin(exists#2) +Join condition: None + +(151) Scan parquet +Output [2]: [cs_sold_date_sk#14, cs_ship_customer_sk#15] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(57) InputAdapter +Input [2]: [cs_sold_date_sk#14, cs_ship_customer_sk#15] +Arguments: [#14, #15] + +(58) NativeFilter +Input [2]: [#14#14, #15#15] +Condition : isnotnull(cs_sold_date_sk#14) + +(59) NativeShuffleExchange +Input [2]: [#14#14, #15#15] +Arguments: hashpartitioning(cs_sold_date_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(60) ShuffleQueryStage +Output [2]: [#14#14, #15#15] +Arguments: X + +(61) AQEShuffleRead +Input [2]: [#14#14, #15#15] +Arguments: coalesced + +(62) InputAdapter +Input [2]: [#14#14, #15#15] + +(63) NativeSort +Input [2]: [#14#14, #15#15] +Arguments: [cs_sold_date_sk#14 ASC NULLS FIRST], false + +(64) ReusedExchange [Reuses operator id: 21] +Output [1]: [d_date_sk#16] + +(65) ShuffleQueryStage +Output [1]: [d_date_sk#16] +Arguments: X + +(66) AQEShuffleRead +Input [1]: [d_date_sk#16] +Arguments: coalesced + +(67) InputAdapter +Input [1]: [d_date_sk#16] +Arguments: [#16] + +(68) InputAdapter +Input [1]: [#16#16] + +(69) NativeSort +Input [1]: [#16#16] +Arguments: [d_date_sk#16 ASC NULLS FIRST], false + +(70) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#14] +Right keys [1]: [d_date_sk#16] +Join type: Inner +Join condition: None + +(71) NativeProject +Output [1]: [cs_ship_customer_sk#15] +Input [3]: [#14#14, #15#15, #16#16] + +(72) NativeShuffleExchange +Input [1]: [cs_ship_customer_sk#15] +Arguments: hashpartitioning(cs_ship_customer_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(73) ShuffleQueryStage +Output [1]: [cs_ship_customer_sk#15] +Arguments: X + +(74) AQEShuffleRead +Input [1]: [cs_ship_customer_sk#15] +Arguments: coalesced + +(75) InputAdapter +Input [1]: [cs_ship_customer_sk#15] + +(76) NativeSort +Input [1]: [cs_ship_customer_sk#15] +Arguments: [cs_ship_customer_sk#15 ASC NULLS FIRST], false + +(77) NativeSortMergeJoin +Left keys [1]: [c_customer_sk#3] +Right keys [1]: [cs_ship_customer_sk#15] +Join type: ExistenceJoin(exists#1) +Join condition: None + +(78) NativeFilter +Input [5]: [#3#3, #4#4, #5#5, exists#2, exists#1] +Condition : (exists#2 OR exists#1) + +(79) NativeProject +Output [2]: [c_current_cdemo_sk#4, c_current_addr_sk#5] +Input [5]: [#3#3, #4#4, #5#5, exists#2, exists#1] + +(80) NativeShuffleExchange +Input [2]: [c_current_cdemo_sk#4, c_current_addr_sk#5] +Arguments: hashpartitioning(c_current_addr_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(81) ShuffleQueryStage +Output [2]: [c_current_cdemo_sk#4, c_current_addr_sk#5] +Arguments: X + +(82) AQEShuffleRead +Input [2]: [c_current_cdemo_sk#4, c_current_addr_sk#5] +Arguments: coalesced + +(83) InputAdapter +Input [2]: [c_current_cdemo_sk#4, c_current_addr_sk#5] + +(84) NativeSort +Input [2]: [c_current_cdemo_sk#4, c_current_addr_sk#5] +Arguments: [c_current_addr_sk#5 ASC NULLS FIRST], false + +(169) Scan parquet +Output [2]: [ca_address_sk#17, ca_county#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(ca_county, [Dona Ana County,Jefferson County,La Porte County,Rush County,Toole County]), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(86) InputAdapter +Input [2]: [ca_address_sk#17, ca_county#18] +Arguments: [#17, #18] + +(87) NativeFilter +Input [2]: [#17#17, #18#18] +Condition : (ca_county#18 IN (Rush County,Toole County,Jefferson County,Dona Ana County,La Porte County) AND isnotnull(ca_address_sk#17)) + +(88) NativeProject +Output [1]: [ca_address_sk#17] +Input [2]: [#17#17, #18#18] + +(89) NativeShuffleExchange +Input [1]: [ca_address_sk#17] +Arguments: hashpartitioning(ca_address_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(90) ShuffleQueryStage +Output [1]: [ca_address_sk#17] +Arguments: X + +(91) AQEShuffleRead +Input [1]: [ca_address_sk#17] +Arguments: coalesced + +(92) InputAdapter +Input [1]: [ca_address_sk#17] + +(93) NativeSort +Input [1]: [ca_address_sk#17] +Arguments: [ca_address_sk#17 ASC NULLS FIRST], false + +(94) NativeSortMergeJoin +Left keys [1]: [c_current_addr_sk#5] +Right keys [1]: [ca_address_sk#17] +Join type: Inner +Join condition: None + +(95) NativeProject +Output [1]: [c_current_cdemo_sk#4] +Input [3]: [c_current_cdemo_sk#4, c_current_addr_sk#5, ca_address_sk#17] + +(96) NativeShuffleExchange +Input [1]: [c_current_cdemo_sk#4] +Arguments: hashpartitioning(c_current_cdemo_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(97) ShuffleQueryStage +Output [1]: [c_current_cdemo_sk#4] +Arguments: X + +(98) AQEShuffleRead +Input [1]: [c_current_cdemo_sk#4] +Arguments: coalesced + +(99) InputAdapter +Input [1]: [c_current_cdemo_sk#4] + +(100) NativeSort +Input [1]: [c_current_cdemo_sk#4] +Arguments: [c_current_cdemo_sk#4 ASC NULLS FIRST], false + +(178) Scan parquet +Output [9]: [cd_demo_sk#19, cd_gender#20, cd_marital_status#21, cd_education_status#22, cd_purchase_estimate#23, cd_credit_rating#24, cd_dep_count#25, cd_dep_employed_count#26, cd_dep_college_count#27] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_demo_sk)] +ReadSchema: struct + +(102) InputAdapter +Input [9]: [cd_demo_sk#19, cd_gender#20, cd_marital_status#21, cd_education_status#22, cd_purchase_estimate#23, cd_credit_rating#24, cd_dep_count#25, cd_dep_employed_count#26, cd_dep_college_count#27] +Arguments: [#19, #20, #21, #22, #23, #24, #25, #26, #27] + +(103) NativeFilter +Input [9]: [#19#19, #20#20, #21#21, #22#22, #23#23, #24#24, #25#25, #26#26, #27#27] +Condition : isnotnull(cd_demo_sk#19) + +(104) NativeShuffleExchange +Input [9]: [#19#19, #20#20, #21#21, #22#22, #23#23, #24#24, #25#25, #26#26, #27#27] +Arguments: hashpartitioning(cd_demo_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(105) ShuffleQueryStage +Output [9]: [#19#19, #20#20, #21#21, #22#22, #23#23, #24#24, #25#25, #26#26, #27#27] +Arguments: X + +(106) AQEShuffleRead +Input [9]: [#19#19, #20#20, #21#21, #22#22, #23#23, #24#24, #25#25, #26#26, #27#27] +Arguments: coalesced + +(107) InputAdapter +Input [9]: [#19#19, #20#20, #21#21, #22#22, #23#23, #24#24, #25#25, #26#26, #27#27] + +(108) NativeSort +Input [9]: [#19#19, #20#20, #21#21, #22#22, #23#23, #24#24, #25#25, #26#26, #27#27] +Arguments: [cd_demo_sk#19 ASC NULLS FIRST], false + +(109) NativeSortMergeJoin +Left keys [1]: [c_current_cdemo_sk#4] +Right keys [1]: [cd_demo_sk#19] +Join type: Inner +Join condition: None + +(110) NativeProject +Output [8]: [cd_gender#20, cd_marital_status#21, cd_education_status#22, cd_purchase_estimate#23, cd_credit_rating#24, cd_dep_count#25, cd_dep_employed_count#26, cd_dep_college_count#27] +Input [10]: [c_current_cdemo_sk#4, #19#19, #20#20, #21#21, #22#22, #23#23, #24#24, #25#25, #26#26, #27#27] + +(111) NativeHashAggregate +Input [8]: [cd_gender#20, cd_marital_status#21, cd_education_status#22, cd_purchase_estimate#23, cd_credit_rating#24, cd_dep_count#25, cd_dep_employed_count#26, cd_dep_college_count#27] +Keys [8]: [cd_gender#20, cd_marital_status#21, cd_education_status#22, cd_purchase_estimate#23, cd_credit_rating#24, cd_dep_count#25, cd_dep_employed_count#26, cd_dep_college_count#27] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#28] +Results [9]: [cd_gender#20, cd_marital_status#21, cd_education_status#22, cd_purchase_estimate#23, cd_credit_rating#24, cd_dep_count#25, cd_dep_employed_count#26, cd_dep_college_count#27, #29#29] + +(112) NativeShuffleExchange +Input [9]: [cd_gender#20, cd_marital_status#21, cd_education_status#22, cd_purchase_estimate#23, cd_credit_rating#24, cd_dep_count#25, cd_dep_employed_count#26, cd_dep_college_count#27, #29#29] +Arguments: hashpartitioning(cd_gender#20, cd_marital_status#21, cd_education_status#22, cd_purchase_estimate#23, cd_credit_rating#24, cd_dep_count#25, cd_dep_employed_count#26, cd_dep_college_count#27, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(113) ShuffleQueryStage +Output [9]: [cd_gender#20, cd_marital_status#21, cd_education_status#22, cd_purchase_estimate#23, cd_credit_rating#24, cd_dep_count#25, cd_dep_employed_count#26, cd_dep_college_count#27, #29#29] +Arguments: X + +(114) AQEShuffleRead +Input [9]: [cd_gender#20, cd_marital_status#21, cd_education_status#22, cd_purchase_estimate#23, cd_credit_rating#24, cd_dep_count#25, cd_dep_employed_count#26, cd_dep_college_count#27, #29#29] +Arguments: coalesced + +(115) InputAdapter +Input [9]: [cd_gender#20, cd_marital_status#21, cd_education_status#22, cd_purchase_estimate#23, cd_credit_rating#24, cd_dep_count#25, cd_dep_employed_count#26, cd_dep_college_count#27, #29#29] + +(116) NativeHashAggregate +Input [9]: [cd_gender#20, cd_marital_status#21, cd_education_status#22, cd_purchase_estimate#23, cd_credit_rating#24, cd_dep_count#25, cd_dep_employed_count#26, cd_dep_college_count#27, #29#29] +Keys [8]: [cd_gender#20, cd_marital_status#21, cd_education_status#22, cd_purchase_estimate#23, cd_credit_rating#24, cd_dep_count#25, cd_dep_employed_count#26, cd_dep_college_count#27] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#30] +Results [9]: [cd_gender#20, cd_marital_status#21, cd_education_status#22, cd_purchase_estimate#23, cd_credit_rating#24, cd_dep_count#25, cd_dep_employed_count#26, cd_dep_college_count#27, count(1)#30] + +(117) NativeProject +Output [14]: [cd_gender#20, cd_marital_status#21, cd_education_status#22, count(1)#30 AS cnt1#31, cd_purchase_estimate#23, count(1)#30 AS cnt2#32, cd_credit_rating#24, count(1)#30 AS cnt3#33, cd_dep_count#25, count(1)#30 AS cnt4#34, cd_dep_employed_count#26, count(1)#30 AS cnt5#35, cd_dep_college_count#27, count(1)#30 AS cnt6#36] +Input [9]: [cd_gender#20, cd_marital_status#21, cd_education_status#22, cd_purchase_estimate#23, cd_credit_rating#24, cd_dep_count#25, cd_dep_employed_count#26, cd_dep_college_count#27, count(1)#30] + +(118) NativeTakeOrdered +Input [14]: [cd_gender#20, cd_marital_status#21, cd_education_status#22, cnt1#31, cd_purchase_estimate#23, cnt2#32, cd_credit_rating#24, cnt3#33, cd_dep_count#25, cnt4#34, cd_dep_employed_count#26, cnt5#35, cd_dep_college_count#27, cnt6#36] +Arguments: X, [cd_gender#20 ASC NULLS FIRST, cd_marital_status#21 ASC NULLS FIRST, cd_education_status#22 ASC NULLS FIRST, cd_purchase_estimate#23 ASC NULLS FIRST, cd_credit_rating#24 ASC NULLS FIRST, cd_dep_count#25 ASC NULLS FIRST, cd_dep_employed_count#26 ASC NULLS FIRST, cd_dep_college_count#27 ASC NULLS FIRST] + +(119) Scan parquet +Output [3]: [c_customer_sk#3, c_current_cdemo_sk#4, c_current_addr_sk#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_current_addr_sk), IsNotNull(c_current_cdemo_sk)] +ReadSchema: struct + +(120) Filter +Input [3]: [c_customer_sk#3, c_current_cdemo_sk#4, c_current_addr_sk#5] +Condition : (isnotnull(c_current_addr_sk#5) AND isnotnull(c_current_cdemo_sk#4)) + +(121) Exchange +Input [3]: [c_customer_sk#3, c_current_cdemo_sk#4, c_current_addr_sk#5] +Arguments: hashpartitioning(c_customer_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(122) Sort +Input [3]: [c_customer_sk#3, c_current_cdemo_sk#4, c_current_addr_sk#5] +Arguments: [c_customer_sk#3 ASC NULLS FIRST], false, 0 + +(123) Scan parquet +Output [2]: [ss_sold_date_sk#6, ss_customer_sk#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(124) Filter +Input [2]: [ss_sold_date_sk#6, ss_customer_sk#7] +Condition : isnotnull(ss_sold_date_sk#6) + +(125) Exchange +Input [2]: [ss_sold_date_sk#6, ss_customer_sk#7] +Arguments: hashpartitioning(ss_sold_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(126) Sort +Input [2]: [ss_sold_date_sk#6, ss_customer_sk#7] +Arguments: [ss_sold_date_sk#6 ASC NULLS FIRST], false, 0 + +(127) Scan parquet +Output [3]: [d_date_sk#8, d_year#9, d_moy#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2002), GreaterThanOrEqual(d_moy,1), LessThanOrEqual(d_moy,4), IsNotNull(d_date_sk)] +ReadSchema: struct + +(128) Filter +Input [3]: [d_date_sk#8, d_year#9, d_moy#10] +Condition : (((((isnotnull(d_year#9) AND isnotnull(d_moy#10)) AND (d_year#9 = 2002)) AND (d_moy#10 >= 1)) AND (d_moy#10 <= 4)) AND isnotnull(d_date_sk#8)) + +(129) Project +Output [1]: [d_date_sk#8] +Input [3]: [d_date_sk#8, d_year#9, d_moy#10] + +(130) Exchange +Input [1]: [d_date_sk#8] +Arguments: hashpartitioning(d_date_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(131) Sort +Input [1]: [d_date_sk#8] +Arguments: [d_date_sk#8 ASC NULLS FIRST], false, 0 + +(132) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#6] +Right keys [1]: [d_date_sk#8] +Join type: Inner +Join condition: None + +(133) Project +Output [1]: [ss_customer_sk#7] +Input [3]: [ss_sold_date_sk#6, ss_customer_sk#7, d_date_sk#8] + +(134) Exchange +Input [1]: [ss_customer_sk#7] +Arguments: hashpartitioning(ss_customer_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(135) Sort +Input [1]: [ss_customer_sk#7] +Arguments: [ss_customer_sk#7 ASC NULLS FIRST], false, 0 + +(136) SortMergeJoin +Left keys [1]: [c_customer_sk#3] +Right keys [1]: [ss_customer_sk#7] +Join type: LeftSemi +Join condition: None + +(137) Scan parquet +Output [2]: [ws_sold_date_sk#11, ws_bill_customer_sk#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(138) Filter +Input [2]: [ws_sold_date_sk#11, ws_bill_customer_sk#12] +Condition : isnotnull(ws_sold_date_sk#11) + +(139) Exchange +Input [2]: [ws_sold_date_sk#11, ws_bill_customer_sk#12] +Arguments: hashpartitioning(ws_sold_date_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(140) Sort +Input [2]: [ws_sold_date_sk#11, ws_bill_customer_sk#12] +Arguments: [ws_sold_date_sk#11 ASC NULLS FIRST], false, 0 + +(141) Scan parquet +Output [3]: [d_date_sk#13, d_year#37, d_moy#38] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2002), GreaterThanOrEqual(d_moy,1), LessThanOrEqual(d_moy,4), IsNotNull(d_date_sk)] +ReadSchema: struct + +(142) Filter +Input [3]: [d_date_sk#13, d_year#37, d_moy#38] +Condition : (((((isnotnull(d_year#37) AND isnotnull(d_moy#38)) AND (d_year#37 = 2002)) AND (d_moy#38 >= 1)) AND (d_moy#38 <= 4)) AND isnotnull(d_date_sk#13)) + +(143) Project +Output [1]: [d_date_sk#13] +Input [3]: [d_date_sk#13, d_year#37, d_moy#38] + +(144) Exchange +Input [1]: [d_date_sk#13] +Arguments: hashpartitioning(d_date_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(145) Sort +Input [1]: [d_date_sk#13] +Arguments: [d_date_sk#13 ASC NULLS FIRST], false, 0 + +(146) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#11] +Right keys [1]: [d_date_sk#13] +Join type: Inner +Join condition: None + +(147) Project +Output [1]: [ws_bill_customer_sk#12] +Input [3]: [ws_sold_date_sk#11, ws_bill_customer_sk#12, d_date_sk#13] + +(148) Exchange +Input [1]: [ws_bill_customer_sk#12] +Arguments: hashpartitioning(ws_bill_customer_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(149) Sort +Input [1]: [ws_bill_customer_sk#12] +Arguments: [ws_bill_customer_sk#12 ASC NULLS FIRST], false, 0 + +(150) SortMergeJoin +Left keys [1]: [c_customer_sk#3] +Right keys [1]: [ws_bill_customer_sk#12] +Join type: ExistenceJoin(exists#2) +Join condition: None + +(151) Scan parquet +Output [2]: [cs_sold_date_sk#14, cs_ship_customer_sk#15] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(152) Filter +Input [2]: [cs_sold_date_sk#14, cs_ship_customer_sk#15] +Condition : isnotnull(cs_sold_date_sk#14) + +(153) Exchange +Input [2]: [cs_sold_date_sk#14, cs_ship_customer_sk#15] +Arguments: hashpartitioning(cs_sold_date_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(154) Sort +Input [2]: [cs_sold_date_sk#14, cs_ship_customer_sk#15] +Arguments: [cs_sold_date_sk#14 ASC NULLS FIRST], false, 0 + +(155) Scan parquet +Output [3]: [d_date_sk#16, d_year#39, d_moy#40] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2002), GreaterThanOrEqual(d_moy,1), LessThanOrEqual(d_moy,4), IsNotNull(d_date_sk)] +ReadSchema: struct + +(156) Filter +Input [3]: [d_date_sk#16, d_year#39, d_moy#40] +Condition : (((((isnotnull(d_year#39) AND isnotnull(d_moy#40)) AND (d_year#39 = 2002)) AND (d_moy#40 >= 1)) AND (d_moy#40 <= 4)) AND isnotnull(d_date_sk#16)) + +(157) Project +Output [1]: [d_date_sk#16] +Input [3]: [d_date_sk#16, d_year#39, d_moy#40] + +(158) Exchange +Input [1]: [d_date_sk#16] +Arguments: hashpartitioning(d_date_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(159) Sort +Input [1]: [d_date_sk#16] +Arguments: [d_date_sk#16 ASC NULLS FIRST], false, 0 + +(160) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#14] +Right keys [1]: [d_date_sk#16] +Join type: Inner +Join condition: None + +(161) Project +Output [1]: [cs_ship_customer_sk#15] +Input [3]: [cs_sold_date_sk#14, cs_ship_customer_sk#15, d_date_sk#16] + +(162) Exchange +Input [1]: [cs_ship_customer_sk#15] +Arguments: hashpartitioning(cs_ship_customer_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(163) Sort +Input [1]: [cs_ship_customer_sk#15] +Arguments: [cs_ship_customer_sk#15 ASC NULLS FIRST], false, 0 + +(164) SortMergeJoin +Left keys [1]: [c_customer_sk#3] +Right keys [1]: [cs_ship_customer_sk#15] +Join type: ExistenceJoin(exists#1) +Join condition: None + +(165) Filter +Input [5]: [c_customer_sk#3, c_current_cdemo_sk#4, c_current_addr_sk#5, exists#2, exists#1] +Condition : (exists#2 OR exists#1) + +(166) Project +Output [2]: [c_current_cdemo_sk#4, c_current_addr_sk#5] +Input [5]: [c_customer_sk#3, c_current_cdemo_sk#4, c_current_addr_sk#5, exists#2, exists#1] + +(167) Exchange +Input [2]: [c_current_cdemo_sk#4, c_current_addr_sk#5] +Arguments: hashpartitioning(c_current_addr_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(168) Sort +Input [2]: [c_current_cdemo_sk#4, c_current_addr_sk#5] +Arguments: [c_current_addr_sk#5 ASC NULLS FIRST], false, 0 + +(169) Scan parquet +Output [2]: [ca_address_sk#17, ca_county#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(ca_county, [Dona Ana County,Jefferson County,La Porte County,Rush County,Toole County]), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(170) Filter +Input [2]: [ca_address_sk#17, ca_county#18] +Condition : (ca_county#18 IN (Rush County,Toole County,Jefferson County,Dona Ana County,La Porte County) AND isnotnull(ca_address_sk#17)) + +(171) Project +Output [1]: [ca_address_sk#17] +Input [2]: [ca_address_sk#17, ca_county#18] + +(172) Exchange +Input [1]: [ca_address_sk#17] +Arguments: hashpartitioning(ca_address_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(173) Sort +Input [1]: [ca_address_sk#17] +Arguments: [ca_address_sk#17 ASC NULLS FIRST], false, 0 + +(174) SortMergeJoin +Left keys [1]: [c_current_addr_sk#5] +Right keys [1]: [ca_address_sk#17] +Join type: Inner +Join condition: None + +(175) Project +Output [1]: [c_current_cdemo_sk#4] +Input [3]: [c_current_cdemo_sk#4, c_current_addr_sk#5, ca_address_sk#17] + +(176) Exchange +Input [1]: [c_current_cdemo_sk#4] +Arguments: hashpartitioning(c_current_cdemo_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(177) Sort +Input [1]: [c_current_cdemo_sk#4] +Arguments: [c_current_cdemo_sk#4 ASC NULLS FIRST], false, 0 + +(178) Scan parquet +Output [9]: [cd_demo_sk#19, cd_gender#20, cd_marital_status#21, cd_education_status#22, cd_purchase_estimate#23, cd_credit_rating#24, cd_dep_count#25, cd_dep_employed_count#26, cd_dep_college_count#27] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_demo_sk)] +ReadSchema: struct + +(179) Filter +Input [9]: [cd_demo_sk#19, cd_gender#20, cd_marital_status#21, cd_education_status#22, cd_purchase_estimate#23, cd_credit_rating#24, cd_dep_count#25, cd_dep_employed_count#26, cd_dep_college_count#27] +Condition : isnotnull(cd_demo_sk#19) + +(180) Exchange +Input [9]: [cd_demo_sk#19, cd_gender#20, cd_marital_status#21, cd_education_status#22, cd_purchase_estimate#23, cd_credit_rating#24, cd_dep_count#25, cd_dep_employed_count#26, cd_dep_college_count#27] +Arguments: hashpartitioning(cd_demo_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(181) Sort +Input [9]: [cd_demo_sk#19, cd_gender#20, cd_marital_status#21, cd_education_status#22, cd_purchase_estimate#23, cd_credit_rating#24, cd_dep_count#25, cd_dep_employed_count#26, cd_dep_college_count#27] +Arguments: [cd_demo_sk#19 ASC NULLS FIRST], false, 0 + +(182) SortMergeJoin +Left keys [1]: [c_current_cdemo_sk#4] +Right keys [1]: [cd_demo_sk#19] +Join type: Inner +Join condition: None + +(183) Project +Output [8]: [cd_gender#20, cd_marital_status#21, cd_education_status#22, cd_purchase_estimate#23, cd_credit_rating#24, cd_dep_count#25, cd_dep_employed_count#26, cd_dep_college_count#27] +Input [10]: [c_current_cdemo_sk#4, cd_demo_sk#19, cd_gender#20, cd_marital_status#21, cd_education_status#22, cd_purchase_estimate#23, cd_credit_rating#24, cd_dep_count#25, cd_dep_employed_count#26, cd_dep_college_count#27] + +(184) HashAggregate +Input [8]: [cd_gender#20, cd_marital_status#21, cd_education_status#22, cd_purchase_estimate#23, cd_credit_rating#24, cd_dep_count#25, cd_dep_employed_count#26, cd_dep_college_count#27] +Keys [8]: [cd_gender#20, cd_marital_status#21, cd_education_status#22, cd_purchase_estimate#23, cd_credit_rating#24, cd_dep_count#25, cd_dep_employed_count#26, cd_dep_college_count#27] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#28] +Results [9]: [cd_gender#20, cd_marital_status#21, cd_education_status#22, cd_purchase_estimate#23, cd_credit_rating#24, cd_dep_count#25, cd_dep_employed_count#26, cd_dep_college_count#27, count#41] + +(185) Exchange +Input [9]: [cd_gender#20, cd_marital_status#21, cd_education_status#22, cd_purchase_estimate#23, cd_credit_rating#24, cd_dep_count#25, cd_dep_employed_count#26, cd_dep_college_count#27, count#41] +Arguments: hashpartitioning(cd_gender#20, cd_marital_status#21, cd_education_status#22, cd_purchase_estimate#23, cd_credit_rating#24, cd_dep_count#25, cd_dep_employed_count#26, cd_dep_college_count#27, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(186) HashAggregate +Input [9]: [cd_gender#20, cd_marital_status#21, cd_education_status#22, cd_purchase_estimate#23, cd_credit_rating#24, cd_dep_count#25, cd_dep_employed_count#26, cd_dep_college_count#27, count#41] +Keys [8]: [cd_gender#20, cd_marital_status#21, cd_education_status#22, cd_purchase_estimate#23, cd_credit_rating#24, cd_dep_count#25, cd_dep_employed_count#26, cd_dep_college_count#27] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#30] +Results [14]: [cd_gender#20, cd_marital_status#21, cd_education_status#22, count(1)#30 AS cnt1#31, cd_purchase_estimate#23, count(1)#30 AS cnt2#32, cd_credit_rating#24, count(1)#30 AS cnt3#33, cd_dep_count#25, count(1)#30 AS cnt4#34, cd_dep_employed_count#26, count(1)#30 AS cnt5#35, cd_dep_college_count#27, count(1)#30 AS cnt6#36] + +(187) TakeOrderedAndProject +Input [14]: [cd_gender#20, cd_marital_status#21, cd_education_status#22, cnt1#31, cd_purchase_estimate#23, cnt2#32, cd_credit_rating#24, cnt3#33, cd_dep_count#25, cnt4#34, cd_dep_employed_count#26, cnt5#35, cd_dep_college_count#27, cnt6#36] +Arguments: X, [cd_gender#20 ASC NULLS FIRST, cd_marital_status#21 ASC NULLS FIRST, cd_education_status#22 ASC NULLS FIRST, cd_purchase_estimate#23 ASC NULLS FIRST, cd_credit_rating#24 ASC NULLS FIRST, cd_dep_count#25 ASC NULLS FIRST, cd_dep_employed_count#26 ASC NULLS FIRST, cd_dep_college_count#27 ASC NULLS FIRST], [cd_gender#20, cd_marital_status#21, cd_education_status#22, cnt1#31, cd_purchase_estimate#23, cnt2#32, cd_credit_rating#24, cnt3#33, cd_dep_count#25, cnt4#34, cd_dep_employed_count#26, cnt5#35, cd_dep_college_count#27, cnt6#36] + +(188) AdaptiveSparkPlan +Output [14]: [cd_gender#20, cd_marital_status#21, cd_education_status#22, cnt1#31, cd_purchase_estimate#23, cnt2#32, cd_credit_rating#24, cnt3#33, cd_dep_count#25, cnt4#34, cd_dep_employed_count#26, cnt5#35, cd_dep_college_count#27, cnt6#36] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q11.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q11.txt new file mode 100644 index 000000000..dee507214 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q11.txt @@ -0,0 +1,1394 @@ +== Physical Plan == +AdaptiveSparkPlan (255) ++- == Final Plan == + TakeOrderedAndProject (153) + +- * Project (152) + +- * SortMergeJoin Inner (151) + :- NativeProject (123) + : +- NativeSortMergeJoin Inner (122) + : :- NativeProject (78) + : : +- NativeSortMergeJoin Inner (77) + : : :- NativeSort (47) + : : : +- InputAdapter (46) + : : : +- AQEShuffleRead (45) + : : : +- ShuffleQueryStage (44), Statistics(X) + : : : +- NativeShuffleExchange (43) + : : : +- NativeFilter (42) + : : : +- NativeProject (41) + : : : +- NativeHashAggregate (40) + : : : +- InputAdapter (39) + : : : +- AQEShuffleRead (38) + : : : +- ShuffleQueryStage (37), Statistics(X) + : : : +- NativeShuffleExchange (36) + : : : +- NativeHashAggregate (35) + : : : +- NativeProject (34) + : : : +- NativeProject (33) + : : : +- NativeSortMergeJoin Inner (32) + : : : :- NativeSort (23) + : : : : +- InputAdapter (22) + : : : : +- AQEShuffleRead (21) + : : : : +- ShuffleQueryStage (20), Statistics(X) + : : : : +- NativeShuffleExchange (19) + : : : : +- NativeProject (18) + : : : : +- NativeSortMergeJoin Inner (17) + : : : : :- NativeSort (8) + : : : : : +- InputAdapter (7) + : : : : : +- AQEShuffleRead (6) + : : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : : +- NativeShuffleExchange (4) + : : : : : +- NativeFilter (3) + : : : : : +- InputAdapter (2) + : : : : : +- NativeParquetScan (1) + : : : : +- NativeSort (16) + : : : : +- InputAdapter (15) + : : : : +- AQEShuffleRead (14) + : : : : +- ShuffleQueryStage (13), Statistics(X) + : : : : +- NativeShuffleExchange (12) + : : : : +- NativeFilter (11) + : : : : +- InputAdapter (10) + : : : : +- NativeParquetScan (9) + : : : +- NativeSort (31) + : : : +- InputAdapter (30) + : : : +- AQEShuffleRead (29) + : : : +- ShuffleQueryStage (28), Statistics(X) + : : : +- NativeShuffleExchange (27) + : : : +- NativeFilter (26) + : : : +- InputAdapter (25) + : : : +- NativeParquetScan (24) + : : +- NativeSort (76) + : : +- InputAdapter (75) + : : +- AQEShuffleRead (74) + : : +- ShuffleQueryStage (73), Statistics(X) + : : +- NativeShuffleExchange (72) + : : +- NativeProject (71) + : : +- NativeHashAggregate (70) + : : +- InputAdapter (69) + : : +- AQEShuffleRead (68) + : : +- ShuffleQueryStage (67), Statistics(X) + : : +- NativeShuffleExchange (66) + : : +- NativeHashAggregate (65) + : : +- NativeProject (64) + : : +- NativeProject (63) + : : +- NativeSortMergeJoin Inner (62) + : : :- NativeSort (53) + : : : +- InputAdapter (52) + : : : +- InputAdapter (51) + : : : +- AQEShuffleRead (50) + : : : +- ShuffleQueryStage (49), Statistics(X) + : : : +- ReusedExchange (48) + : : +- NativeSort (61) + : : +- InputAdapter (60) + : : +- AQEShuffleRead (59) + : : +- ShuffleQueryStage (58), Statistics(X) + : : +- NativeShuffleExchange (57) + : : +- NativeFilter (56) + : : +- InputAdapter (55) + : : +- NativeParquetScan (54) + : +- NativeSort (121) + : +- InputAdapter (120) + : +- AQEShuffleRead (119) + : +- ShuffleQueryStage (118), Statistics(X) + : +- NativeShuffleExchange (117) + : +- NativeFilter (116) + : +- NativeProject (115) + : +- NativeHashAggregate (114) + : +- InputAdapter (113) + : +- AQEShuffleRead (112) + : +- ShuffleQueryStage (111), Statistics(X) + : +- NativeShuffleExchange (110) + : +- NativeHashAggregate (109) + : +- NativeProject (108) + : +- NativeProject (107) + : +- NativeSortMergeJoin Inner (106) + : :- NativeSort (99) + : : +- InputAdapter (98) + : : +- AQEShuffleRead (97) + : : +- ShuffleQueryStage (96), Statistics(X) + : : +- NativeShuffleExchange (95) + : : +- NativeProject (94) + : : +- NativeSortMergeJoin Inner (93) + : : :- NativeSort (84) + : : : +- InputAdapter (83) + : : : +- InputAdapter (82) + : : : +- AQEShuffleRead (81) + : : : +- ShuffleQueryStage (80), Statistics(X) + : : : +- ReusedExchange (79) + : : +- NativeSort (92) + : : +- InputAdapter (91) + : : +- AQEShuffleRead (90) + : : +- ShuffleQueryStage (89), Statistics(X) + : : +- NativeShuffleExchange (88) + : : +- NativeFilter (87) + : : +- InputAdapter (86) + : : +- NativeParquetScan (85) + : +- NativeSort (105) + : +- InputAdapter (104) + : +- InputAdapter (103) + : +- AQEShuffleRead (102) + : +- ShuffleQueryStage (101), Statistics(X) + : +- ReusedExchange (100) + +- NativeSort (150) + +- InputAdapter (149) + +- AQEShuffleRead (148) + +- ShuffleQueryStage (147), Statistics(X) + +- NativeShuffleExchange (146) + +- NativeProject (145) + +- NativeHashAggregate (144) + +- InputAdapter (143) + +- AQEShuffleRead (142) + +- ShuffleQueryStage (141), Statistics(X) + +- NativeShuffleExchange (140) + +- NativeHashAggregate (139) + +- NativeProject (138) + +- NativeProject (137) + +- NativeSortMergeJoin Inner (136) + :- NativeSort (129) + : +- InputAdapter (128) + : +- InputAdapter (127) + : +- AQEShuffleRead (126) + : +- ShuffleQueryStage (125), Statistics(X) + : +- ReusedExchange (124) + +- NativeSort (135) + +- InputAdapter (134) + +- InputAdapter (133) + +- AQEShuffleRead (132) + +- ShuffleQueryStage (131), Statistics(X) + +- ReusedExchange (130) ++- == Initial Plan == + TakeOrderedAndProject (254) + +- Project (253) + +- SortMergeJoin Inner (252) + :- Project (228) + : +- SortMergeJoin Inner (227) + : :- Project (202) + : : +- SortMergeJoin Inner (201) + : : :- Sort (177) + : : : +- Exchange (176) + : : : +- Filter (175) + : : : +- HashAggregate (174) + : : : +- Exchange (173) + : : : +- HashAggregate (172) + : : : +- Project (171) + : : : +- SortMergeJoin Inner (170) + : : : :- Sort (165) + : : : : +- Exchange (164) + : : : : +- Project (163) + : : : : +- SortMergeJoin Inner (162) + : : : : :- Sort (157) + : : : : : +- Exchange (156) + : : : : : +- Filter (155) + : : : : : +- Scan parquet (154) + : : : : +- Sort (161) + : : : : +- Exchange (160) + : : : : +- Filter (159) + : : : : +- Scan parquet (158) + : : : +- Sort (169) + : : : +- Exchange (168) + : : : +- Filter (167) + : : : +- Scan parquet (166) + : : +- Sort (200) + : : +- Exchange (199) + : : +- HashAggregate (198) + : : +- Exchange (197) + : : +- HashAggregate (196) + : : +- Project (195) + : : +- SortMergeJoin Inner (194) + : : :- Sort (189) + : : : +- Exchange (188) + : : : +- Project (187) + : : : +- SortMergeJoin Inner (186) + : : : :- Sort (181) + : : : : +- Exchange (180) + : : : : +- Filter (179) + : : : : +- Scan parquet (178) + : : : +- Sort (185) + : : : +- Exchange (184) + : : : +- Filter (183) + : : : +- Scan parquet (182) + : : +- Sort (193) + : : +- Exchange (192) + : : +- Filter (191) + : : +- Scan parquet (190) + : +- Sort (226) + : +- Exchange (225) + : +- Filter (224) + : +- HashAggregate (223) + : +- Exchange (222) + : +- HashAggregate (221) + : +- Project (220) + : +- SortMergeJoin Inner (219) + : :- Sort (214) + : : +- Exchange (213) + : : +- Project (212) + : : +- SortMergeJoin Inner (211) + : : :- Sort (206) + : : : +- Exchange (205) + : : : +- Filter (204) + : : : +- Scan parquet (203) + : : +- Sort (210) + : : +- Exchange (209) + : : +- Filter (208) + : : +- Scan parquet (207) + : +- Sort (218) + : +- Exchange (217) + : +- Filter (216) + : +- Scan parquet (215) + +- Sort (251) + +- Exchange (250) + +- HashAggregate (249) + +- Exchange (248) + +- HashAggregate (247) + +- Project (246) + +- SortMergeJoin Inner (245) + :- Sort (240) + : +- Exchange (239) + : +- Project (238) + : +- SortMergeJoin Inner (237) + : :- Sort (232) + : : +- Exchange (231) + : : +- Filter (230) + : : +- Scan parquet (229) + : +- Sort (236) + : +- Exchange (235) + : +- Filter (234) + : +- Scan parquet (233) + +- Sort (244) + +- Exchange (243) + +- Filter (242) + +- Scan parquet (241) + + +(154) Scan parquet +Output [8]: [c_customer_sk#1, c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_customer_id)] +ReadSchema: struct + +(2) InputAdapter +Input [8]: [c_customer_sk#1, c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8] +Arguments: [#1, #2, #3, #4, #5, #6, #7, #8] + +(3) NativeFilter +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Condition : (isnotnull(c_customer_sk#1) AND isnotnull(c_customer_id#2)) + +(4) NativeShuffleExchange +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: hashpartitioning(c_customer_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: X + +(6) AQEShuffleRead +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: coalesced + +(7) InputAdapter +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] + +(8) NativeSort +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: [c_customer_sk#1 ASC NULLS FIRST], false + +(158) Scan parquet +Output [4]: [ss_sold_date_sk#9, ss_customer_sk#10, ss_ext_discount_amt#11, ss_ext_list_price#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [4]: [ss_sold_date_sk#9, ss_customer_sk#10, ss_ext_discount_amt#11, ss_ext_list_price#12] +Arguments: [#9, #10, #11, #12] + +(11) NativeFilter +Input [4]: [#9#9, #10#10, #11#11, #12#12] +Condition : (isnotnull(ss_customer_sk#10) AND isnotnull(ss_sold_date_sk#9)) + +(12) NativeShuffleExchange +Input [4]: [#9#9, #10#10, #11#11, #12#12] +Arguments: hashpartitioning(ss_customer_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [4]: [#9#9, #10#10, #11#11, #12#12] +Arguments: X + +(14) AQEShuffleRead +Input [4]: [#9#9, #10#10, #11#11, #12#12] +Arguments: coalesced + +(15) InputAdapter +Input [4]: [#9#9, #10#10, #11#11, #12#12] + +(16) NativeSort +Input [4]: [#9#9, #10#10, #11#11, #12#12] +Arguments: [ss_customer_sk#10 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [1]: [c_customer_sk#1] +Right keys [1]: [ss_customer_sk#10] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [10]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_sold_date_sk#9, ss_ext_discount_amt#11, ss_ext_list_price#12] +Input [12]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9, #10#10, #11#11, #12#12] + +(19) NativeShuffleExchange +Input [10]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_sold_date_sk#9, ss_ext_discount_amt#11, ss_ext_list_price#12] +Arguments: hashpartitioning(ss_sold_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [10]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_sold_date_sk#9, ss_ext_discount_amt#11, ss_ext_list_price#12] +Arguments: X + +(21) AQEShuffleRead +Input [10]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_sold_date_sk#9, ss_ext_discount_amt#11, ss_ext_list_price#12] +Arguments: coalesced + +(22) InputAdapter +Input [10]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_sold_date_sk#9, ss_ext_discount_amt#11, ss_ext_list_price#12] + +(23) NativeSort +Input [10]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_sold_date_sk#9, ss_ext_discount_amt#11, ss_ext_list_price#12] +Arguments: [ss_sold_date_sk#9 ASC NULLS FIRST], false + +(166) Scan parquet +Output [2]: [d_date_sk#13, d_year#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(25) InputAdapter +Input [2]: [d_date_sk#13, d_year#14] +Arguments: [#13, #14] + +(26) NativeFilter +Input [2]: [#13#13, #14#14] +Condition : ((isnotnull(d_year#14) AND (d_year#14 = 2001)) AND isnotnull(d_date_sk#13)) + +(27) NativeShuffleExchange +Input [2]: [#13#13, #14#14] +Arguments: hashpartitioning(d_date_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(28) ShuffleQueryStage +Output [2]: [#13#13, #14#14] +Arguments: X + +(29) AQEShuffleRead +Input [2]: [#13#13, #14#14] +Arguments: coalesced + +(30) InputAdapter +Input [2]: [#13#13, #14#14] + +(31) NativeSort +Input [2]: [#13#13, #14#14] +Arguments: [d_date_sk#13 ASC NULLS FIRST], false + +(32) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#9] +Right keys [1]: [d_date_sk#13] +Join type: Inner +Join condition: None + +(33) NativeProject +Output [10]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_ext_discount_amt#11, ss_ext_list_price#12, d_year#14] +Input [12]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_sold_date_sk#9, ss_ext_discount_amt#11, ss_ext_list_price#12, #13#13, #14#14] + +(34) NativeProject +Output [9]: [c_customer_id#2 AS c_customer_id#2, c_first_name#3 AS c_first_name#3, c_last_name#4 AS c_last_name#4, d_year#14 AS d_year#14, c_preferred_cust_flag#5 AS c_preferred_cust_flag#5, c_birth_country#6 AS c_birth_country#6, c_login#7 AS c_login#7, c_email_address#8 AS c_email_address#8, UnscaledValue((ss_ext_list_price#12 - ss_ext_discount_amt#11)) AS _c8#15] +Input [10]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_ext_discount_amt#11, ss_ext_list_price#12, d_year#14] + +(35) NativeHashAggregate +Input [9]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#14, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, _c8#15] +Keys [8]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#14, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8] +Functions [1]: [partial_sum(_c8#15)] +Aggregate Attributes [1]: [sum#16] +Results [9]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#14, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, #17#17] + +(36) NativeShuffleExchange +Input [9]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#14, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, #17#17] +Arguments: hashpartitioning(c_customer_id#2, c_first_name#3, c_last_name#4, d_year#14, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [9]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#14, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, #17#17] +Arguments: X + +(38) AQEShuffleRead +Input [9]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#14, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, #17#17] +Arguments: coalesced + +(39) InputAdapter +Input [9]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#14, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, #17#17] + +(40) NativeHashAggregate +Input [9]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#14, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, #17#17] +Keys [8]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#14, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8] +Functions [1]: [sum(UnscaledValue((ss_ext_list_price#12 - ss_ext_discount_amt#11)))] +Aggregate Attributes [1]: [sum(UnscaledValue((ss_ext_list_price#12 - ss_ext_discount_amt#11)))#18] +Results [9]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#14, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, sum(UnscaledValue((ss_ext_list_price#12 - ss_ext_discount_amt#11)))#18] + +(41) NativeProject +Output [2]: [c_customer_id#2 AS customer_id#19, MakeDecimal(sum(UnscaledValue((ss_ext_list_price#12 - ss_ext_discount_amt#11)))#18,18,2) AS year_total#20] +Input [9]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#14, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, sum(UnscaledValue((ss_ext_list_price#12 - ss_ext_discount_amt#11)))#18] + +(42) NativeFilter +Input [2]: [customer_id#19, year_total#20] +Condition : (isnotnull(year_total#20) AND (year_total#20 > 0.00)) + +(43) NativeShuffleExchange +Input [2]: [customer_id#19, year_total#20] +Arguments: hashpartitioning(customer_id#19, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) ShuffleQueryStage +Output [2]: [customer_id#19, year_total#20] +Arguments: X + +(45) AQEShuffleRead +Input [2]: [customer_id#19, year_total#20] +Arguments: coalesced + +(46) InputAdapter +Input [2]: [customer_id#19, year_total#20] + +(47) NativeSort +Input [2]: [customer_id#19, year_total#20] +Arguments: [customer_id#19 ASC NULLS FIRST], false + +(48) ReusedExchange [Reuses operator id: 19] +Output [10]: [c_customer_id#21, c_first_name#22, c_last_name#23, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27, ss_sold_date_sk#28, ss_ext_discount_amt#29, ss_ext_list_price#30] + +(49) ShuffleQueryStage +Output [10]: [c_customer_id#21, c_first_name#22, c_last_name#23, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27, ss_sold_date_sk#28, ss_ext_discount_amt#29, ss_ext_list_price#30] +Arguments: X + +(50) AQEShuffleRead +Input [10]: [c_customer_id#21, c_first_name#22, c_last_name#23, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27, ss_sold_date_sk#28, ss_ext_discount_amt#29, ss_ext_list_price#30] +Arguments: coalesced + +(51) InputAdapter +Input [10]: [c_customer_id#21, c_first_name#22, c_last_name#23, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27, ss_sold_date_sk#28, ss_ext_discount_amt#29, ss_ext_list_price#30] +Arguments: [#21, #22, #23, #24, #25, #26, #27, #28, #29, #30] + +(52) InputAdapter +Input [10]: [#21#21, #22#22, #23#23, #24#24, #25#25, #26#26, #27#27, #28#28, #29#29, #30#30] + +(53) NativeSort +Input [10]: [#21#21, #22#22, #23#23, #24#24, #25#25, #26#26, #27#27, #28#28, #29#29, #30#30] +Arguments: [ss_sold_date_sk#28 ASC NULLS FIRST], false + +(190) Scan parquet +Output [2]: [d_date_sk#31, d_year#32] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2002), IsNotNull(d_date_sk)] +ReadSchema: struct + +(55) InputAdapter +Input [2]: [d_date_sk#31, d_year#32] +Arguments: [#31, #32] + +(56) NativeFilter +Input [2]: [#31#31, #32#32] +Condition : ((isnotnull(d_year#32) AND (d_year#32 = 2002)) AND isnotnull(d_date_sk#31)) + +(57) NativeShuffleExchange +Input [2]: [#31#31, #32#32] +Arguments: hashpartitioning(d_date_sk#31, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(58) ShuffleQueryStage +Output [2]: [#31#31, #32#32] +Arguments: X + +(59) AQEShuffleRead +Input [2]: [#31#31, #32#32] +Arguments: coalesced + +(60) InputAdapter +Input [2]: [#31#31, #32#32] + +(61) NativeSort +Input [2]: [#31#31, #32#32] +Arguments: [d_date_sk#31 ASC NULLS FIRST], false + +(62) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#28] +Right keys [1]: [d_date_sk#31] +Join type: Inner +Join condition: None + +(63) NativeProject +Output [10]: [c_customer_id#21, c_first_name#22, c_last_name#23, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27, ss_ext_discount_amt#29, ss_ext_list_price#30, d_year#32] +Input [12]: [#21#21, #22#22, #23#23, #24#24, #25#25, #26#26, #27#27, #28#28, #29#29, #30#30, #31#31, #32#32] + +(64) NativeProject +Output [9]: [c_customer_id#21 AS c_customer_id#21, c_first_name#22 AS c_first_name#22, c_last_name#23 AS c_last_name#23, d_year#32 AS d_year#32, c_preferred_cust_flag#24 AS c_preferred_cust_flag#24, c_birth_country#25 AS c_birth_country#25, c_login#26 AS c_login#26, c_email_address#27 AS c_email_address#27, UnscaledValue((ss_ext_list_price#30 - ss_ext_discount_amt#29)) AS _c8#33] +Input [10]: [c_customer_id#21, c_first_name#22, c_last_name#23, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27, ss_ext_discount_amt#29, ss_ext_list_price#30, d_year#32] + +(65) NativeHashAggregate +Input [9]: [c_customer_id#21, c_first_name#22, c_last_name#23, d_year#32, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27, _c8#33] +Keys [8]: [c_customer_id#21, c_first_name#22, c_last_name#23, d_year#32, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27] +Functions [1]: [partial_sum(_c8#33)] +Aggregate Attributes [1]: [sum#34] +Results [9]: [c_customer_id#21, c_first_name#22, c_last_name#23, d_year#32, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27, #17#17] + +(66) NativeShuffleExchange +Input [9]: [c_customer_id#21, c_first_name#22, c_last_name#23, d_year#32, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27, #17#17] +Arguments: hashpartitioning(c_customer_id#21, c_first_name#22, c_last_name#23, d_year#32, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(67) ShuffleQueryStage +Output [9]: [c_customer_id#21, c_first_name#22, c_last_name#23, d_year#32, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27, #17#17] +Arguments: X + +(68) AQEShuffleRead +Input [9]: [c_customer_id#21, c_first_name#22, c_last_name#23, d_year#32, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27, #17#17] +Arguments: coalesced + +(69) InputAdapter +Input [9]: [c_customer_id#21, c_first_name#22, c_last_name#23, d_year#32, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27, #17#17] + +(70) NativeHashAggregate +Input [9]: [c_customer_id#21, c_first_name#22, c_last_name#23, d_year#32, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27, #17#17] +Keys [8]: [c_customer_id#21, c_first_name#22, c_last_name#23, d_year#32, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27] +Functions [1]: [sum(UnscaledValue((ss_ext_list_price#30 - ss_ext_discount_amt#29)))] +Aggregate Attributes [1]: [sum(UnscaledValue((ss_ext_list_price#30 - ss_ext_discount_amt#29)))#18] +Results [9]: [c_customer_id#21, c_first_name#22, c_last_name#23, d_year#32, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27, sum(UnscaledValue((ss_ext_list_price#30 - ss_ext_discount_amt#29)))#18] + +(71) NativeProject +Output [3]: [c_customer_id#21 AS customer_id#35, c_preferred_cust_flag#24 AS customer_preferred_cust_flag#36, MakeDecimal(sum(UnscaledValue((ss_ext_list_price#30 - ss_ext_discount_amt#29)))#18,18,2) AS year_total#37] +Input [9]: [c_customer_id#21, c_first_name#22, c_last_name#23, d_year#32, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27, sum(UnscaledValue((ss_ext_list_price#30 - ss_ext_discount_amt#29)))#18] + +(72) NativeShuffleExchange +Input [3]: [customer_id#35, customer_preferred_cust_flag#36, year_total#37] +Arguments: hashpartitioning(customer_id#35, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(73) ShuffleQueryStage +Output [3]: [customer_id#35, customer_preferred_cust_flag#36, year_total#37] +Arguments: X + +(74) AQEShuffleRead +Input [3]: [customer_id#35, customer_preferred_cust_flag#36, year_total#37] +Arguments: coalesced + +(75) InputAdapter +Input [3]: [customer_id#35, customer_preferred_cust_flag#36, year_total#37] + +(76) NativeSort +Input [3]: [customer_id#35, customer_preferred_cust_flag#36, year_total#37] +Arguments: [customer_id#35 ASC NULLS FIRST], false + +(77) NativeSortMergeJoin +Left keys [1]: [customer_id#19] +Right keys [1]: [customer_id#35] +Join type: Inner +Join condition: None + +(78) NativeProject +Output [4]: [customer_id#19, year_total#20, customer_preferred_cust_flag#36, year_total#37] +Input [5]: [customer_id#19, year_total#20, customer_id#35, customer_preferred_cust_flag#36, year_total#37] + +(79) ReusedExchange [Reuses operator id: 4] +Output [8]: [c_customer_sk#38, c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45] + +(80) ShuffleQueryStage +Output [8]: [c_customer_sk#38, c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45] +Arguments: X + +(81) AQEShuffleRead +Input [8]: [c_customer_sk#38, c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45] +Arguments: coalesced + +(82) InputAdapter +Input [8]: [c_customer_sk#38, c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45] +Arguments: [#38, #39, #40, #41, #42, #43, #44, #45] + +(83) InputAdapter +Input [8]: [#38#38, #39#39, #40#40, #41#41, #42#42, #43#43, #44#44, #45#45] + +(84) NativeSort +Input [8]: [#38#38, #39#39, #40#40, #41#41, #42#42, #43#43, #44#44, #45#45] +Arguments: [c_customer_sk#38 ASC NULLS FIRST], false + +(207) Scan parquet +Output [4]: [ws_sold_date_sk#46, ws_bill_customer_sk#47, ws_ext_discount_amt#48, ws_ext_list_price#49] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_bill_customer_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(86) InputAdapter +Input [4]: [ws_sold_date_sk#46, ws_bill_customer_sk#47, ws_ext_discount_amt#48, ws_ext_list_price#49] +Arguments: [#46, #47, #48, #49] + +(87) NativeFilter +Input [4]: [#46#46, #47#47, #48#48, #49#49] +Condition : (isnotnull(ws_bill_customer_sk#47) AND isnotnull(ws_sold_date_sk#46)) + +(88) NativeShuffleExchange +Input [4]: [#46#46, #47#47, #48#48, #49#49] +Arguments: hashpartitioning(ws_bill_customer_sk#47, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(89) ShuffleQueryStage +Output [4]: [#46#46, #47#47, #48#48, #49#49] +Arguments: X + +(90) AQEShuffleRead +Input [4]: [#46#46, #47#47, #48#48, #49#49] +Arguments: coalesced + +(91) InputAdapter +Input [4]: [#46#46, #47#47, #48#48, #49#49] + +(92) NativeSort +Input [4]: [#46#46, #47#47, #48#48, #49#49] +Arguments: [ws_bill_customer_sk#47 ASC NULLS FIRST], false + +(93) NativeSortMergeJoin +Left keys [1]: [c_customer_sk#38] +Right keys [1]: [ws_bill_customer_sk#47] +Join type: Inner +Join condition: None + +(94) NativeProject +Output [10]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, ws_sold_date_sk#46, ws_ext_discount_amt#48, ws_ext_list_price#49] +Input [12]: [#38#38, #39#39, #40#40, #41#41, #42#42, #43#43, #44#44, #45#45, #46#46, #47#47, #48#48, #49#49] + +(95) NativeShuffleExchange +Input [10]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, ws_sold_date_sk#46, ws_ext_discount_amt#48, ws_ext_list_price#49] +Arguments: hashpartitioning(ws_sold_date_sk#46, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(96) ShuffleQueryStage +Output [10]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, ws_sold_date_sk#46, ws_ext_discount_amt#48, ws_ext_list_price#49] +Arguments: X + +(97) AQEShuffleRead +Input [10]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, ws_sold_date_sk#46, ws_ext_discount_amt#48, ws_ext_list_price#49] +Arguments: coalesced + +(98) InputAdapter +Input [10]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, ws_sold_date_sk#46, ws_ext_discount_amt#48, ws_ext_list_price#49] + +(99) NativeSort +Input [10]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, ws_sold_date_sk#46, ws_ext_discount_amt#48, ws_ext_list_price#49] +Arguments: [ws_sold_date_sk#46 ASC NULLS FIRST], false + +(100) ReusedExchange [Reuses operator id: 27] +Output [2]: [d_date_sk#50, d_year#51] + +(101) ShuffleQueryStage +Output [2]: [d_date_sk#50, d_year#51] +Arguments: X + +(102) AQEShuffleRead +Input [2]: [d_date_sk#50, d_year#51] +Arguments: coalesced + +(103) InputAdapter +Input [2]: [d_date_sk#50, d_year#51] +Arguments: [#50, #51] + +(104) InputAdapter +Input [2]: [#50#50, #51#51] + +(105) NativeSort +Input [2]: [#50#50, #51#51] +Arguments: [d_date_sk#50 ASC NULLS FIRST], false + +(106) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#46] +Right keys [1]: [d_date_sk#50] +Join type: Inner +Join condition: None + +(107) NativeProject +Output [10]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, ws_ext_discount_amt#48, ws_ext_list_price#49, d_year#51] +Input [12]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, ws_sold_date_sk#46, ws_ext_discount_amt#48, ws_ext_list_price#49, #50#50, #51#51] + +(108) NativeProject +Output [9]: [c_customer_id#39 AS c_customer_id#39, c_first_name#40 AS c_first_name#40, c_last_name#41 AS c_last_name#41, c_preferred_cust_flag#42 AS c_preferred_cust_flag#42, c_birth_country#43 AS c_birth_country#43, c_login#44 AS c_login#44, c_email_address#45 AS c_email_address#45, d_year#51 AS d_year#51, UnscaledValue((ws_ext_list_price#49 - ws_ext_discount_amt#48)) AS _c8#52] +Input [10]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, ws_ext_discount_amt#48, ws_ext_list_price#49, d_year#51] + +(109) NativeHashAggregate +Input [9]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, d_year#51, _c8#52] +Keys [8]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, d_year#51] +Functions [1]: [partial_sum(_c8#52)] +Aggregate Attributes [1]: [sum#53] +Results [9]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, d_year#51, #17#17] + +(110) NativeShuffleExchange +Input [9]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, d_year#51, #17#17] +Arguments: hashpartitioning(c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, d_year#51, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(111) ShuffleQueryStage +Output [9]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, d_year#51, #17#17] +Arguments: X + +(112) AQEShuffleRead +Input [9]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, d_year#51, #17#17] +Arguments: coalesced + +(113) InputAdapter +Input [9]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, d_year#51, #17#17] + +(114) NativeHashAggregate +Input [9]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, d_year#51, #17#17] +Keys [8]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, d_year#51] +Functions [1]: [sum(UnscaledValue((ws_ext_list_price#49 - ws_ext_discount_amt#48)))] +Aggregate Attributes [1]: [sum(UnscaledValue((ws_ext_list_price#49 - ws_ext_discount_amt#48)))#54] +Results [9]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, d_year#51, sum(UnscaledValue((ws_ext_list_price#49 - ws_ext_discount_amt#48)))#54] + +(115) NativeProject +Output [2]: [c_customer_id#39 AS customer_id#55, MakeDecimal(sum(UnscaledValue((ws_ext_list_price#49 - ws_ext_discount_amt#48)))#54,18,2) AS year_total#56] +Input [9]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, d_year#51, sum(UnscaledValue((ws_ext_list_price#49 - ws_ext_discount_amt#48)))#54] + +(116) NativeFilter +Input [2]: [customer_id#55, year_total#56] +Condition : (isnotnull(year_total#56) AND (year_total#56 > 0.00)) + +(117) NativeShuffleExchange +Input [2]: [customer_id#55, year_total#56] +Arguments: hashpartitioning(customer_id#55, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(118) ShuffleQueryStage +Output [2]: [customer_id#55, year_total#56] +Arguments: X + +(119) AQEShuffleRead +Input [2]: [customer_id#55, year_total#56] +Arguments: coalesced + +(120) InputAdapter +Input [2]: [customer_id#55, year_total#56] + +(121) NativeSort +Input [2]: [customer_id#55, year_total#56] +Arguments: [customer_id#55 ASC NULLS FIRST], false + +(122) NativeSortMergeJoin +Left keys [1]: [customer_id#19] +Right keys [1]: [customer_id#55] +Join type: Inner +Join condition: None + +(123) NativeProject +Output [5]: [customer_id#19, year_total#20, customer_preferred_cust_flag#36, year_total#37, year_total#56] +Input [6]: [customer_id#19, year_total#20, customer_preferred_cust_flag#36, year_total#37, customer_id#55, year_total#56] + +(124) ReusedExchange [Reuses operator id: 95] +Output [10]: [c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, ws_sold_date_sk#64, ws_ext_discount_amt#65, ws_ext_list_price#66] + +(125) ShuffleQueryStage +Output [10]: [c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, ws_sold_date_sk#64, ws_ext_discount_amt#65, ws_ext_list_price#66] +Arguments: X + +(126) AQEShuffleRead +Input [10]: [c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, ws_sold_date_sk#64, ws_ext_discount_amt#65, ws_ext_list_price#66] +Arguments: coalesced + +(127) InputAdapter +Input [10]: [c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, ws_sold_date_sk#64, ws_ext_discount_amt#65, ws_ext_list_price#66] +Arguments: [#57, #58, #59, #60, #61, #62, #63, #64, #65, #66] + +(128) InputAdapter +Input [10]: [#57#57, #58#58, #59#59, #60#60, #61#61, #62#62, #63#63, #64#64, #65#65, #66#66] + +(129) NativeSort +Input [10]: [#57#57, #58#58, #59#59, #60#60, #61#61, #62#62, #63#63, #64#64, #65#65, #66#66] +Arguments: [ws_sold_date_sk#64 ASC NULLS FIRST], false + +(130) ReusedExchange [Reuses operator id: 57] +Output [2]: [d_date_sk#67, d_year#68] + +(131) ShuffleQueryStage +Output [2]: [d_date_sk#67, d_year#68] +Arguments: X + +(132) AQEShuffleRead +Input [2]: [d_date_sk#67, d_year#68] +Arguments: coalesced + +(133) InputAdapter +Input [2]: [d_date_sk#67, d_year#68] +Arguments: [#67, #68] + +(134) InputAdapter +Input [2]: [#67#67, #68#68] + +(135) NativeSort +Input [2]: [#67#67, #68#68] +Arguments: [d_date_sk#67 ASC NULLS FIRST], false + +(136) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#64] +Right keys [1]: [d_date_sk#67] +Join type: Inner +Join condition: None + +(137) NativeProject +Output [10]: [c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, ws_ext_discount_amt#65, ws_ext_list_price#66, d_year#68] +Input [12]: [#57#57, #58#58, #59#59, #60#60, #61#61, #62#62, #63#63, #64#64, #65#65, #66#66, #67#67, #68#68] + +(138) NativeProject +Output [9]: [c_customer_id#57 AS c_customer_id#57, c_first_name#58 AS c_first_name#58, c_last_name#59 AS c_last_name#59, c_preferred_cust_flag#60 AS c_preferred_cust_flag#60, c_birth_country#61 AS c_birth_country#61, c_login#62 AS c_login#62, c_email_address#63 AS c_email_address#63, d_year#68 AS d_year#68, UnscaledValue((ws_ext_list_price#66 - ws_ext_discount_amt#65)) AS _c8#69] +Input [10]: [c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, ws_ext_discount_amt#65, ws_ext_list_price#66, d_year#68] + +(139) NativeHashAggregate +Input [9]: [c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, d_year#68, _c8#69] +Keys [8]: [c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, d_year#68] +Functions [1]: [partial_sum(_c8#69)] +Aggregate Attributes [1]: [sum#70] +Results [9]: [c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, d_year#68, #17#17] + +(140) NativeShuffleExchange +Input [9]: [c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, d_year#68, #17#17] +Arguments: hashpartitioning(c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, d_year#68, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(141) ShuffleQueryStage +Output [9]: [c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, d_year#68, #17#17] +Arguments: X + +(142) AQEShuffleRead +Input [9]: [c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, d_year#68, #17#17] +Arguments: coalesced + +(143) InputAdapter +Input [9]: [c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, d_year#68, #17#17] + +(144) NativeHashAggregate +Input [9]: [c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, d_year#68, #17#17] +Keys [8]: [c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, d_year#68] +Functions [1]: [sum(UnscaledValue((ws_ext_list_price#66 - ws_ext_discount_amt#65)))] +Aggregate Attributes [1]: [sum(UnscaledValue((ws_ext_list_price#66 - ws_ext_discount_amt#65)))#54] +Results [9]: [c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, d_year#68, sum(UnscaledValue((ws_ext_list_price#66 - ws_ext_discount_amt#65)))#54] + +(145) NativeProject +Output [2]: [c_customer_id#57 AS customer_id#71, MakeDecimal(sum(UnscaledValue((ws_ext_list_price#66 - ws_ext_discount_amt#65)))#54,18,2) AS year_total#72] +Input [9]: [c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, d_year#68, sum(UnscaledValue((ws_ext_list_price#66 - ws_ext_discount_amt#65)))#54] + +(146) NativeShuffleExchange +Input [2]: [customer_id#71, year_total#72] +Arguments: hashpartitioning(customer_id#71, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(147) ShuffleQueryStage +Output [2]: [customer_id#71, year_total#72] +Arguments: X + +(148) AQEShuffleRead +Input [2]: [customer_id#71, year_total#72] +Arguments: coalesced + +(149) InputAdapter +Input [2]: [customer_id#71, year_total#72] + +(150) NativeSort +Input [2]: [customer_id#71, year_total#72] +Arguments: [customer_id#71 ASC NULLS FIRST], false + +(151) SortMergeJoin [codegen id : 1] +Left keys [1]: [customer_id#19] +Right keys [1]: [customer_id#71] +Join type: Inner +Join condition: (CASE WHEN (year_total#56 > 0.00) THEN (year_total#72 / year_total#56) END > CASE WHEN (year_total#20 > 0.00) THEN (year_total#37 / year_total#20) END) + +(152) Project [codegen id : 1] +Output [1]: [customer_preferred_cust_flag#36] +Input [7]: [customer_id#19, year_total#20, customer_preferred_cust_flag#36, year_total#37, year_total#56, customer_id#71, year_total#72] + +(153) TakeOrderedAndProject +Input [1]: [customer_preferred_cust_flag#36] +Arguments: X, [customer_preferred_cust_flag#36 ASC NULLS FIRST], [customer_preferred_cust_flag#36] + +(154) Scan parquet +Output [8]: [c_customer_sk#1, c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_customer_id)] +ReadSchema: struct + +(155) Filter +Input [8]: [c_customer_sk#1, c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8] +Condition : (isnotnull(c_customer_sk#1) AND isnotnull(c_customer_id#2)) + +(156) Exchange +Input [8]: [c_customer_sk#1, c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8] +Arguments: hashpartitioning(c_customer_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(157) Sort +Input [8]: [c_customer_sk#1, c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8] +Arguments: [c_customer_sk#1 ASC NULLS FIRST], false, 0 + +(158) Scan parquet +Output [4]: [ss_sold_date_sk#9, ss_customer_sk#10, ss_ext_discount_amt#11, ss_ext_list_price#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(159) Filter +Input [4]: [ss_sold_date_sk#9, ss_customer_sk#10, ss_ext_discount_amt#11, ss_ext_list_price#12] +Condition : (isnotnull(ss_customer_sk#10) AND isnotnull(ss_sold_date_sk#9)) + +(160) Exchange +Input [4]: [ss_sold_date_sk#9, ss_customer_sk#10, ss_ext_discount_amt#11, ss_ext_list_price#12] +Arguments: hashpartitioning(ss_customer_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(161) Sort +Input [4]: [ss_sold_date_sk#9, ss_customer_sk#10, ss_ext_discount_amt#11, ss_ext_list_price#12] +Arguments: [ss_customer_sk#10 ASC NULLS FIRST], false, 0 + +(162) SortMergeJoin +Left keys [1]: [c_customer_sk#1] +Right keys [1]: [ss_customer_sk#10] +Join type: Inner +Join condition: None + +(163) Project +Output [10]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_sold_date_sk#9, ss_ext_discount_amt#11, ss_ext_list_price#12] +Input [12]: [c_customer_sk#1, c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_sold_date_sk#9, ss_customer_sk#10, ss_ext_discount_amt#11, ss_ext_list_price#12] + +(164) Exchange +Input [10]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_sold_date_sk#9, ss_ext_discount_amt#11, ss_ext_list_price#12] +Arguments: hashpartitioning(ss_sold_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(165) Sort +Input [10]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_sold_date_sk#9, ss_ext_discount_amt#11, ss_ext_list_price#12] +Arguments: [ss_sold_date_sk#9 ASC NULLS FIRST], false, 0 + +(166) Scan parquet +Output [2]: [d_date_sk#13, d_year#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(167) Filter +Input [2]: [d_date_sk#13, d_year#14] +Condition : ((isnotnull(d_year#14) AND (d_year#14 = 2001)) AND isnotnull(d_date_sk#13)) + +(168) Exchange +Input [2]: [d_date_sk#13, d_year#14] +Arguments: hashpartitioning(d_date_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(169) Sort +Input [2]: [d_date_sk#13, d_year#14] +Arguments: [d_date_sk#13 ASC NULLS FIRST], false, 0 + +(170) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#9] +Right keys [1]: [d_date_sk#13] +Join type: Inner +Join condition: None + +(171) Project +Output [10]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_ext_discount_amt#11, ss_ext_list_price#12, d_year#14] +Input [12]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_sold_date_sk#9, ss_ext_discount_amt#11, ss_ext_list_price#12, d_date_sk#13, d_year#14] + +(172) HashAggregate +Input [10]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_ext_discount_amt#11, ss_ext_list_price#12, d_year#14] +Keys [8]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#14, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8] +Functions [1]: [partial_sum(UnscaledValue((ss_ext_list_price#12 - ss_ext_discount_amt#11)))] +Aggregate Attributes [1]: [sum#16] +Results [9]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#14, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, sum#73] + +(173) Exchange +Input [9]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#14, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, sum#73] +Arguments: hashpartitioning(c_customer_id#2, c_first_name#3, c_last_name#4, d_year#14, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(174) HashAggregate +Input [9]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#14, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, sum#73] +Keys [8]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#14, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8] +Functions [1]: [sum(UnscaledValue((ss_ext_list_price#12 - ss_ext_discount_amt#11)))] +Aggregate Attributes [1]: [sum(UnscaledValue((ss_ext_list_price#12 - ss_ext_discount_amt#11)))#18] +Results [2]: [c_customer_id#2 AS customer_id#19, MakeDecimal(sum(UnscaledValue((ss_ext_list_price#12 - ss_ext_discount_amt#11)))#18,18,2) AS year_total#20] + +(175) Filter +Input [2]: [customer_id#19, year_total#20] +Condition : (isnotnull(year_total#20) AND (year_total#20 > 0.00)) + +(176) Exchange +Input [2]: [customer_id#19, year_total#20] +Arguments: hashpartitioning(customer_id#19, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(177) Sort +Input [2]: [customer_id#19, year_total#20] +Arguments: [customer_id#19 ASC NULLS FIRST], false, 0 + +(178) Scan parquet +Output [8]: [c_customer_sk#74, c_customer_id#21, c_first_name#22, c_last_name#23, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_customer_id)] +ReadSchema: struct + +(179) Filter +Input [8]: [c_customer_sk#74, c_customer_id#21, c_first_name#22, c_last_name#23, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27] +Condition : (isnotnull(c_customer_sk#74) AND isnotnull(c_customer_id#21)) + +(180) Exchange +Input [8]: [c_customer_sk#74, c_customer_id#21, c_first_name#22, c_last_name#23, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27] +Arguments: hashpartitioning(c_customer_sk#74, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(181) Sort +Input [8]: [c_customer_sk#74, c_customer_id#21, c_first_name#22, c_last_name#23, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27] +Arguments: [c_customer_sk#74 ASC NULLS FIRST], false, 0 + +(182) Scan parquet +Output [4]: [ss_sold_date_sk#28, ss_customer_sk#75, ss_ext_discount_amt#29, ss_ext_list_price#30] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(183) Filter +Input [4]: [ss_sold_date_sk#28, ss_customer_sk#75, ss_ext_discount_amt#29, ss_ext_list_price#30] +Condition : (isnotnull(ss_customer_sk#75) AND isnotnull(ss_sold_date_sk#28)) + +(184) Exchange +Input [4]: [ss_sold_date_sk#28, ss_customer_sk#75, ss_ext_discount_amt#29, ss_ext_list_price#30] +Arguments: hashpartitioning(ss_customer_sk#75, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(185) Sort +Input [4]: [ss_sold_date_sk#28, ss_customer_sk#75, ss_ext_discount_amt#29, ss_ext_list_price#30] +Arguments: [ss_customer_sk#75 ASC NULLS FIRST], false, 0 + +(186) SortMergeJoin +Left keys [1]: [c_customer_sk#74] +Right keys [1]: [ss_customer_sk#75] +Join type: Inner +Join condition: None + +(187) Project +Output [10]: [c_customer_id#21, c_first_name#22, c_last_name#23, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27, ss_sold_date_sk#28, ss_ext_discount_amt#29, ss_ext_list_price#30] +Input [12]: [c_customer_sk#74, c_customer_id#21, c_first_name#22, c_last_name#23, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27, ss_sold_date_sk#28, ss_customer_sk#75, ss_ext_discount_amt#29, ss_ext_list_price#30] + +(188) Exchange +Input [10]: [c_customer_id#21, c_first_name#22, c_last_name#23, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27, ss_sold_date_sk#28, ss_ext_discount_amt#29, ss_ext_list_price#30] +Arguments: hashpartitioning(ss_sold_date_sk#28, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(189) Sort +Input [10]: [c_customer_id#21, c_first_name#22, c_last_name#23, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27, ss_sold_date_sk#28, ss_ext_discount_amt#29, ss_ext_list_price#30] +Arguments: [ss_sold_date_sk#28 ASC NULLS FIRST], false, 0 + +(190) Scan parquet +Output [2]: [d_date_sk#31, d_year#32] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2002), IsNotNull(d_date_sk)] +ReadSchema: struct + +(191) Filter +Input [2]: [d_date_sk#31, d_year#32] +Condition : ((isnotnull(d_year#32) AND (d_year#32 = 2002)) AND isnotnull(d_date_sk#31)) + +(192) Exchange +Input [2]: [d_date_sk#31, d_year#32] +Arguments: hashpartitioning(d_date_sk#31, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(193) Sort +Input [2]: [d_date_sk#31, d_year#32] +Arguments: [d_date_sk#31 ASC NULLS FIRST], false, 0 + +(194) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#28] +Right keys [1]: [d_date_sk#31] +Join type: Inner +Join condition: None + +(195) Project +Output [10]: [c_customer_id#21, c_first_name#22, c_last_name#23, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27, ss_ext_discount_amt#29, ss_ext_list_price#30, d_year#32] +Input [12]: [c_customer_id#21, c_first_name#22, c_last_name#23, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27, ss_sold_date_sk#28, ss_ext_discount_amt#29, ss_ext_list_price#30, d_date_sk#31, d_year#32] + +(196) HashAggregate +Input [10]: [c_customer_id#21, c_first_name#22, c_last_name#23, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27, ss_ext_discount_amt#29, ss_ext_list_price#30, d_year#32] +Keys [8]: [c_customer_id#21, c_first_name#22, c_last_name#23, d_year#32, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27] +Functions [1]: [partial_sum(UnscaledValue((ss_ext_list_price#30 - ss_ext_discount_amt#29)))] +Aggregate Attributes [1]: [sum#34] +Results [9]: [c_customer_id#21, c_first_name#22, c_last_name#23, d_year#32, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27, sum#76] + +(197) Exchange +Input [9]: [c_customer_id#21, c_first_name#22, c_last_name#23, d_year#32, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27, sum#76] +Arguments: hashpartitioning(c_customer_id#21, c_first_name#22, c_last_name#23, d_year#32, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(198) HashAggregate +Input [9]: [c_customer_id#21, c_first_name#22, c_last_name#23, d_year#32, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27, sum#76] +Keys [8]: [c_customer_id#21, c_first_name#22, c_last_name#23, d_year#32, c_preferred_cust_flag#24, c_birth_country#25, c_login#26, c_email_address#27] +Functions [1]: [sum(UnscaledValue((ss_ext_list_price#30 - ss_ext_discount_amt#29)))] +Aggregate Attributes [1]: [sum(UnscaledValue((ss_ext_list_price#30 - ss_ext_discount_amt#29)))#18] +Results [3]: [c_customer_id#21 AS customer_id#35, c_preferred_cust_flag#24 AS customer_preferred_cust_flag#36, MakeDecimal(sum(UnscaledValue((ss_ext_list_price#30 - ss_ext_discount_amt#29)))#18,18,2) AS year_total#37] + +(199) Exchange +Input [3]: [customer_id#35, customer_preferred_cust_flag#36, year_total#37] +Arguments: hashpartitioning(customer_id#35, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(200) Sort +Input [3]: [customer_id#35, customer_preferred_cust_flag#36, year_total#37] +Arguments: [customer_id#35 ASC NULLS FIRST], false, 0 + +(201) SortMergeJoin +Left keys [1]: [customer_id#19] +Right keys [1]: [customer_id#35] +Join type: Inner +Join condition: None + +(202) Project +Output [4]: [customer_id#19, year_total#20, customer_preferred_cust_flag#36, year_total#37] +Input [5]: [customer_id#19, year_total#20, customer_id#35, customer_preferred_cust_flag#36, year_total#37] + +(203) Scan parquet +Output [8]: [c_customer_sk#38, c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_customer_id)] +ReadSchema: struct + +(204) Filter +Input [8]: [c_customer_sk#38, c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45] +Condition : (isnotnull(c_customer_sk#38) AND isnotnull(c_customer_id#39)) + +(205) Exchange +Input [8]: [c_customer_sk#38, c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45] +Arguments: hashpartitioning(c_customer_sk#38, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(206) Sort +Input [8]: [c_customer_sk#38, c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45] +Arguments: [c_customer_sk#38 ASC NULLS FIRST], false, 0 + +(207) Scan parquet +Output [4]: [ws_sold_date_sk#46, ws_bill_customer_sk#47, ws_ext_discount_amt#48, ws_ext_list_price#49] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_bill_customer_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(208) Filter +Input [4]: [ws_sold_date_sk#46, ws_bill_customer_sk#47, ws_ext_discount_amt#48, ws_ext_list_price#49] +Condition : (isnotnull(ws_bill_customer_sk#47) AND isnotnull(ws_sold_date_sk#46)) + +(209) Exchange +Input [4]: [ws_sold_date_sk#46, ws_bill_customer_sk#47, ws_ext_discount_amt#48, ws_ext_list_price#49] +Arguments: hashpartitioning(ws_bill_customer_sk#47, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(210) Sort +Input [4]: [ws_sold_date_sk#46, ws_bill_customer_sk#47, ws_ext_discount_amt#48, ws_ext_list_price#49] +Arguments: [ws_bill_customer_sk#47 ASC NULLS FIRST], false, 0 + +(211) SortMergeJoin +Left keys [1]: [c_customer_sk#38] +Right keys [1]: [ws_bill_customer_sk#47] +Join type: Inner +Join condition: None + +(212) Project +Output [10]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, ws_sold_date_sk#46, ws_ext_discount_amt#48, ws_ext_list_price#49] +Input [12]: [c_customer_sk#38, c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, ws_sold_date_sk#46, ws_bill_customer_sk#47, ws_ext_discount_amt#48, ws_ext_list_price#49] + +(213) Exchange +Input [10]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, ws_sold_date_sk#46, ws_ext_discount_amt#48, ws_ext_list_price#49] +Arguments: hashpartitioning(ws_sold_date_sk#46, 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(214) Sort +Input [10]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, ws_sold_date_sk#46, ws_ext_discount_amt#48, ws_ext_list_price#49] +Arguments: [ws_sold_date_sk#46 ASC NULLS FIRST], false, 0 + +(215) Scan parquet +Output [2]: [d_date_sk#50, d_year#51] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(216) Filter +Input [2]: [d_date_sk#50, d_year#51] +Condition : ((isnotnull(d_year#51) AND (d_year#51 = 2001)) AND isnotnull(d_date_sk#50)) + +(217) Exchange +Input [2]: [d_date_sk#50, d_year#51] +Arguments: hashpartitioning(d_date_sk#50, 100), ENSURE_REQUIREMENTS, [plan_id=31] + +(218) Sort +Input [2]: [d_date_sk#50, d_year#51] +Arguments: [d_date_sk#50 ASC NULLS FIRST], false, 0 + +(219) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#46] +Right keys [1]: [d_date_sk#50] +Join type: Inner +Join condition: None + +(220) Project +Output [10]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, ws_ext_discount_amt#48, ws_ext_list_price#49, d_year#51] +Input [12]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, ws_sold_date_sk#46, ws_ext_discount_amt#48, ws_ext_list_price#49, d_date_sk#50, d_year#51] + +(221) HashAggregate +Input [10]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, ws_ext_discount_amt#48, ws_ext_list_price#49, d_year#51] +Keys [8]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, d_year#51] +Functions [1]: [partial_sum(UnscaledValue((ws_ext_list_price#49 - ws_ext_discount_amt#48)))] +Aggregate Attributes [1]: [sum#53] +Results [9]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, d_year#51, sum#77] + +(222) Exchange +Input [9]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, d_year#51, sum#77] +Arguments: hashpartitioning(c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, d_year#51, 100), ENSURE_REQUIREMENTS, [plan_id=32] + +(223) HashAggregate +Input [9]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, d_year#51, sum#77] +Keys [8]: [c_customer_id#39, c_first_name#40, c_last_name#41, c_preferred_cust_flag#42, c_birth_country#43, c_login#44, c_email_address#45, d_year#51] +Functions [1]: [sum(UnscaledValue((ws_ext_list_price#49 - ws_ext_discount_amt#48)))] +Aggregate Attributes [1]: [sum(UnscaledValue((ws_ext_list_price#49 - ws_ext_discount_amt#48)))#54] +Results [2]: [c_customer_id#39 AS customer_id#55, MakeDecimal(sum(UnscaledValue((ws_ext_list_price#49 - ws_ext_discount_amt#48)))#54,18,2) AS year_total#56] + +(224) Filter +Input [2]: [customer_id#55, year_total#56] +Condition : (isnotnull(year_total#56) AND (year_total#56 > 0.00)) + +(225) Exchange +Input [2]: [customer_id#55, year_total#56] +Arguments: hashpartitioning(customer_id#55, 100), ENSURE_REQUIREMENTS, [plan_id=33] + +(226) Sort +Input [2]: [customer_id#55, year_total#56] +Arguments: [customer_id#55 ASC NULLS FIRST], false, 0 + +(227) SortMergeJoin +Left keys [1]: [customer_id#19] +Right keys [1]: [customer_id#55] +Join type: Inner +Join condition: None + +(228) Project +Output [5]: [customer_id#19, year_total#20, customer_preferred_cust_flag#36, year_total#37, year_total#56] +Input [6]: [customer_id#19, year_total#20, customer_preferred_cust_flag#36, year_total#37, customer_id#55, year_total#56] + +(229) Scan parquet +Output [8]: [c_customer_sk#78, c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_customer_id)] +ReadSchema: struct + +(230) Filter +Input [8]: [c_customer_sk#78, c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63] +Condition : (isnotnull(c_customer_sk#78) AND isnotnull(c_customer_id#57)) + +(231) Exchange +Input [8]: [c_customer_sk#78, c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63] +Arguments: hashpartitioning(c_customer_sk#78, 100), ENSURE_REQUIREMENTS, [plan_id=34] + +(232) Sort +Input [8]: [c_customer_sk#78, c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63] +Arguments: [c_customer_sk#78 ASC NULLS FIRST], false, 0 + +(233) Scan parquet +Output [4]: [ws_sold_date_sk#64, ws_bill_customer_sk#79, ws_ext_discount_amt#65, ws_ext_list_price#66] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_bill_customer_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(234) Filter +Input [4]: [ws_sold_date_sk#64, ws_bill_customer_sk#79, ws_ext_discount_amt#65, ws_ext_list_price#66] +Condition : (isnotnull(ws_bill_customer_sk#79) AND isnotnull(ws_sold_date_sk#64)) + +(235) Exchange +Input [4]: [ws_sold_date_sk#64, ws_bill_customer_sk#79, ws_ext_discount_amt#65, ws_ext_list_price#66] +Arguments: hashpartitioning(ws_bill_customer_sk#79, 100), ENSURE_REQUIREMENTS, [plan_id=35] + +(236) Sort +Input [4]: [ws_sold_date_sk#64, ws_bill_customer_sk#79, ws_ext_discount_amt#65, ws_ext_list_price#66] +Arguments: [ws_bill_customer_sk#79 ASC NULLS FIRST], false, 0 + +(237) SortMergeJoin +Left keys [1]: [c_customer_sk#78] +Right keys [1]: [ws_bill_customer_sk#79] +Join type: Inner +Join condition: None + +(238) Project +Output [10]: [c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, ws_sold_date_sk#64, ws_ext_discount_amt#65, ws_ext_list_price#66] +Input [12]: [c_customer_sk#78, c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, ws_sold_date_sk#64, ws_bill_customer_sk#79, ws_ext_discount_amt#65, ws_ext_list_price#66] + +(239) Exchange +Input [10]: [c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, ws_sold_date_sk#64, ws_ext_discount_amt#65, ws_ext_list_price#66] +Arguments: hashpartitioning(ws_sold_date_sk#64, 100), ENSURE_REQUIREMENTS, [plan_id=36] + +(240) Sort +Input [10]: [c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, ws_sold_date_sk#64, ws_ext_discount_amt#65, ws_ext_list_price#66] +Arguments: [ws_sold_date_sk#64 ASC NULLS FIRST], false, 0 + +(241) Scan parquet +Output [2]: [d_date_sk#67, d_year#68] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2002), IsNotNull(d_date_sk)] +ReadSchema: struct + +(242) Filter +Input [2]: [d_date_sk#67, d_year#68] +Condition : ((isnotnull(d_year#68) AND (d_year#68 = 2002)) AND isnotnull(d_date_sk#67)) + +(243) Exchange +Input [2]: [d_date_sk#67, d_year#68] +Arguments: hashpartitioning(d_date_sk#67, 100), ENSURE_REQUIREMENTS, [plan_id=37] + +(244) Sort +Input [2]: [d_date_sk#67, d_year#68] +Arguments: [d_date_sk#67 ASC NULLS FIRST], false, 0 + +(245) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#64] +Right keys [1]: [d_date_sk#67] +Join type: Inner +Join condition: None + +(246) Project +Output [10]: [c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, ws_ext_discount_amt#65, ws_ext_list_price#66, d_year#68] +Input [12]: [c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, ws_sold_date_sk#64, ws_ext_discount_amt#65, ws_ext_list_price#66, d_date_sk#67, d_year#68] + +(247) HashAggregate +Input [10]: [c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, ws_ext_discount_amt#65, ws_ext_list_price#66, d_year#68] +Keys [8]: [c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, d_year#68] +Functions [1]: [partial_sum(UnscaledValue((ws_ext_list_price#66 - ws_ext_discount_amt#65)))] +Aggregate Attributes [1]: [sum#70] +Results [9]: [c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, d_year#68, sum#80] + +(248) Exchange +Input [9]: [c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, d_year#68, sum#80] +Arguments: hashpartitioning(c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, d_year#68, 100), ENSURE_REQUIREMENTS, [plan_id=38] + +(249) HashAggregate +Input [9]: [c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, d_year#68, sum#80] +Keys [8]: [c_customer_id#57, c_first_name#58, c_last_name#59, c_preferred_cust_flag#60, c_birth_country#61, c_login#62, c_email_address#63, d_year#68] +Functions [1]: [sum(UnscaledValue((ws_ext_list_price#66 - ws_ext_discount_amt#65)))] +Aggregate Attributes [1]: [sum(UnscaledValue((ws_ext_list_price#66 - ws_ext_discount_amt#65)))#54] +Results [2]: [c_customer_id#57 AS customer_id#71, MakeDecimal(sum(UnscaledValue((ws_ext_list_price#66 - ws_ext_discount_amt#65)))#54,18,2) AS year_total#72] + +(250) Exchange +Input [2]: [customer_id#71, year_total#72] +Arguments: hashpartitioning(customer_id#71, 100), ENSURE_REQUIREMENTS, [plan_id=39] + +(251) Sort +Input [2]: [customer_id#71, year_total#72] +Arguments: [customer_id#71 ASC NULLS FIRST], false, 0 + +(252) SortMergeJoin +Left keys [1]: [customer_id#19] +Right keys [1]: [customer_id#71] +Join type: Inner +Join condition: (CASE WHEN (year_total#56 > 0.00) THEN (year_total#72 / year_total#56) END > CASE WHEN (year_total#20 > 0.00) THEN (year_total#37 / year_total#20) END) + +(253) Project +Output [1]: [customer_preferred_cust_flag#36] +Input [7]: [customer_id#19, year_total#20, customer_preferred_cust_flag#36, year_total#37, year_total#56, customer_id#71, year_total#72] + +(254) TakeOrderedAndProject +Input [1]: [customer_preferred_cust_flag#36] +Arguments: X, [customer_preferred_cust_flag#36 ASC NULLS FIRST], [customer_preferred_cust_flag#36] + +(255) AdaptiveSparkPlan +Output [1]: [customer_preferred_cust_flag#36] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q12.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q12.txt new file mode 100644 index 000000000..0c56ed9fd --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q12.txt @@ -0,0 +1,427 @@ +== Physical Plan == +AdaptiveSparkPlan (78) ++- == Final Plan == + TakeOrderedAndProject (50) + +- * Project (49) + +- Window (48) + +- NativeSort (47) + +- InputAdapter (46) + +- AQEShuffleRead (45) + +- ShuffleQueryStage (44), Statistics(X) + +- NativeShuffleExchange (43) + +- NativeProject (42) + +- NativeHashAggregate (41) + +- InputAdapter (40) + +- AQEShuffleRead (39) + +- ShuffleQueryStage (38), Statistics(X) + +- NativeShuffleExchange (37) + +- NativeHashAggregate (36) + +- NativeProject (35) + +- NativeProject (34) + +- NativeSortMergeJoin Inner (33) + :- NativeSort (23) + : +- InputAdapter (22) + : +- AQEShuffleRead (21) + : +- ShuffleQueryStage (20), Statistics(X) + : +- NativeShuffleExchange (19) + : +- NativeProject (18) + : +- NativeSortMergeJoin Inner (17) + : :- NativeSort (8) + : : +- InputAdapter (7) + : : +- AQEShuffleRead (6) + : : +- ShuffleQueryStage (5), Statistics(X) + : : +- NativeShuffleExchange (4) + : : +- NativeFilter (3) + : : +- InputAdapter (2) + : : +- NativeParquetScan (1) + : +- NativeSort (16) + : +- InputAdapter (15) + : +- AQEShuffleRead (14) + : +- ShuffleQueryStage (13), Statistics(X) + : +- NativeShuffleExchange (12) + : +- NativeFilter (11) + : +- InputAdapter (10) + : +- NativeParquetScan (9) + +- NativeSort (32) + +- InputAdapter (31) + +- AQEShuffleRead (30) + +- ShuffleQueryStage (29), Statistics(X) + +- NativeShuffleExchange (28) + +- NativeProject (27) + +- NativeFilter (26) + +- InputAdapter (25) + +- NativeParquetScan (24) ++- == Initial Plan == + TakeOrderedAndProject (77) + +- Project (76) + +- Window (75) + +- Sort (74) + +- Exchange (73) + +- HashAggregate (72) + +- Exchange (71) + +- HashAggregate (70) + +- Project (69) + +- SortMergeJoin Inner (68) + :- Sort (62) + : +- Exchange (61) + : +- Project (60) + : +- SortMergeJoin Inner (59) + : :- Sort (54) + : : +- Exchange (53) + : : +- Filter (52) + : : +- Scan parquet (51) + : +- Sort (58) + : +- Exchange (57) + : +- Filter (56) + : +- Scan parquet (55) + +- Sort (67) + +- Exchange (66) + +- Project (65) + +- Filter (64) + +- Scan parquet (63) + + +(51) Scan parquet +Output [3]: [ws_sold_date_sk#1, ws_item_sk#2, ws_ext_sales_price#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [ws_sold_date_sk#1, ws_item_sk#2, ws_ext_sales_price#3] +Arguments: [#1, #2, #3] + +(3) NativeFilter +Input [3]: [#1#1, #2#2, #3#3] +Condition : (isnotnull(ws_item_sk#2) AND isnotnull(ws_sold_date_sk#1)) + +(4) NativeShuffleExchange +Input [3]: [#1#1, #2#2, #3#3] +Arguments: hashpartitioning(ws_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [3]: [#1#1, #2#2, #3#3] +Arguments: X + +(6) AQEShuffleRead +Input [3]: [#1#1, #2#2, #3#3] +Arguments: coalesced + +(7) InputAdapter +Input [3]: [#1#1, #2#2, #3#3] + +(8) NativeSort +Input [3]: [#1#1, #2#2, #3#3] +Arguments: [ws_item_sk#2 ASC NULLS FIRST], false + +(55) Scan parquet +Output [6]: [i_item_sk#4, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(i_category, [Books,Home,Sports]), IsNotNull(i_item_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [6]: [i_item_sk#4, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Arguments: [#4, #5, #6, #7, #8, #9] + +(11) NativeFilter +Input [6]: [#4#4, #5#5, #6#6, #7#7, #8#8, #9#9] +Condition : (i_category#9 IN (Sports,Books,Home) AND isnotnull(i_item_sk#4)) + +(12) NativeShuffleExchange +Input [6]: [#4#4, #5#5, #6#6, #7#7, #8#8, #9#9] +Arguments: hashpartitioning(i_item_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [6]: [#4#4, #5#5, #6#6, #7#7, #8#8, #9#9] +Arguments: X + +(14) AQEShuffleRead +Input [6]: [#4#4, #5#5, #6#6, #7#7, #8#8, #9#9] +Arguments: coalesced + +(15) InputAdapter +Input [6]: [#4#4, #5#5, #6#6, #7#7, #8#8, #9#9] + +(16) NativeSort +Input [6]: [#4#4, #5#5, #6#6, #7#7, #8#8, #9#9] +Arguments: [i_item_sk#4 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [1]: [ws_item_sk#2] +Right keys [1]: [i_item_sk#4] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [7]: [ws_sold_date_sk#1, ws_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Input [9]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9] + +(19) NativeShuffleExchange +Input [7]: [ws_sold_date_sk#1, ws_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Arguments: hashpartitioning(ws_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [7]: [ws_sold_date_sk#1, ws_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Arguments: X + +(21) AQEShuffleRead +Input [7]: [ws_sold_date_sk#1, ws_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Arguments: coalesced + +(22) InputAdapter +Input [7]: [ws_sold_date_sk#1, ws_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] + +(23) NativeSort +Input [7]: [ws_sold_date_sk#1, ws_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Arguments: [ws_sold_date_sk#1 ASC NULLS FIRST], false + +(63) Scan parquet +Output [2]: [d_date_sk#10, d_date#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,1999-02-22), LessThanOrEqual(d_date,1999-03-24), IsNotNull(d_date_sk)] +ReadSchema: struct + +(25) InputAdapter +Input [2]: [d_date_sk#10, d_date#11] +Arguments: [#10, #11] + +(26) NativeFilter +Input [2]: [#10#10, #11#11] +Condition : (((isnotnull(d_date#11) AND (d_date#11 >= 1999-02-22)) AND (d_date#11 <= 1999-03-24)) AND isnotnull(d_date_sk#10)) + +(27) NativeProject +Output [1]: [d_date_sk#10] +Input [2]: [#10#10, #11#11] + +(28) NativeShuffleExchange +Input [1]: [d_date_sk#10] +Arguments: hashpartitioning(d_date_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(29) ShuffleQueryStage +Output [1]: [d_date_sk#10] +Arguments: X + +(30) AQEShuffleRead +Input [1]: [d_date_sk#10] +Arguments: coalesced + +(31) InputAdapter +Input [1]: [d_date_sk#10] + +(32) NativeSort +Input [1]: [d_date_sk#10] +Arguments: [d_date_sk#10 ASC NULLS FIRST], false + +(33) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#1] +Right keys [1]: [d_date_sk#10] +Join type: Inner +Join condition: None + +(34) NativeProject +Output [6]: [ws_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Input [8]: [ws_sold_date_sk#1, ws_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9, d_date_sk#10] + +(35) NativeProject +Output [6]: [i_item_id#5 AS i_item_id#5, i_item_desc#6 AS i_item_desc#6, i_category#9 AS i_category#9, i_class#8 AS i_class#8, i_current_price#7 AS i_current_price#7, UnscaledValue(ws_ext_sales_price#3) AS _c5#12] +Input [6]: [ws_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] + +(36) NativeHashAggregate +Input [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, _c5#12] +Keys [5]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7] +Functions [1]: [partial_sum(_c5#12)] +Aggregate Attributes [1]: [sum#13] +Results [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, #14#14] + +(37) NativeShuffleExchange +Input [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, #14#14] +Arguments: hashpartitioning(i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(38) ShuffleQueryStage +Output [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, #14#14] +Arguments: X + +(39) AQEShuffleRead +Input [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, #14#14] +Arguments: coalesced + +(40) InputAdapter +Input [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, #14#14] + +(41) NativeHashAggregate +Input [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, #14#14] +Keys [5]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7] +Functions [1]: [sum(UnscaledValue(ws_ext_sales_price#3))] +Aggregate Attributes [1]: [sum(UnscaledValue(ws_ext_sales_price#3))#15] +Results [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, sum(UnscaledValue(ws_ext_sales_price#3))#15] + +(42) NativeProject +Output [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#3))#15,17,2) AS itemrevenue#16, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#3))#15,17,2) AS _w0#17, i_item_id#5] +Input [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, sum(UnscaledValue(ws_ext_sales_price#3))#15] + +(43) NativeShuffleExchange +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5] +Arguments: hashpartitioning(i_class#8, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) ShuffleQueryStage +Output [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5] +Arguments: X + +(45) AQEShuffleRead +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5] +Arguments: coalesced + +(46) InputAdapter +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5] + +(47) NativeSort +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5] +Arguments: [i_class#8 ASC NULLS FIRST], false + +(48) Window +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5] +Arguments: [sum(_w0#17) windowspecdefinition(i_class#8, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#18], [i_class#8] + +(49) Project [codegen id : 1] +Output [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, ((_w0#17 * 100) / _we0#18) AS revenueratio#19, i_item_id#5] +Input [8]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5, _we0#18] + +(50) TakeOrderedAndProject +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, revenueratio#19, i_item_id#5] +Arguments: X, [i_category#9 ASC NULLS FIRST, i_class#8 ASC NULLS FIRST, i_item_id#5 ASC NULLS FIRST, i_item_desc#6 ASC NULLS FIRST, revenueratio#19 ASC NULLS FIRST], [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, revenueratio#19] + +(51) Scan parquet +Output [3]: [ws_sold_date_sk#1, ws_item_sk#2, ws_ext_sales_price#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(52) Filter +Input [3]: [ws_sold_date_sk#1, ws_item_sk#2, ws_ext_sales_price#3] +Condition : (isnotnull(ws_item_sk#2) AND isnotnull(ws_sold_date_sk#1)) + +(53) Exchange +Input [3]: [ws_sold_date_sk#1, ws_item_sk#2, ws_ext_sales_price#3] +Arguments: hashpartitioning(ws_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(54) Sort +Input [3]: [ws_sold_date_sk#1, ws_item_sk#2, ws_ext_sales_price#3] +Arguments: [ws_item_sk#2 ASC NULLS FIRST], false, 0 + +(55) Scan parquet +Output [6]: [i_item_sk#4, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(i_category, [Books,Home,Sports]), IsNotNull(i_item_sk)] +ReadSchema: struct + +(56) Filter +Input [6]: [i_item_sk#4, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Condition : (i_category#9 IN (Sports,Books,Home) AND isnotnull(i_item_sk#4)) + +(57) Exchange +Input [6]: [i_item_sk#4, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Arguments: hashpartitioning(i_item_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(58) Sort +Input [6]: [i_item_sk#4, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Arguments: [i_item_sk#4 ASC NULLS FIRST], false, 0 + +(59) SortMergeJoin +Left keys [1]: [ws_item_sk#2] +Right keys [1]: [i_item_sk#4] +Join type: Inner +Join condition: None + +(60) Project +Output [7]: [ws_sold_date_sk#1, ws_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Input [9]: [ws_sold_date_sk#1, ws_item_sk#2, ws_ext_sales_price#3, i_item_sk#4, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] + +(61) Exchange +Input [7]: [ws_sold_date_sk#1, ws_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Arguments: hashpartitioning(ws_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(62) Sort +Input [7]: [ws_sold_date_sk#1, ws_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Arguments: [ws_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(63) Scan parquet +Output [2]: [d_date_sk#10, d_date#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,1999-02-22), LessThanOrEqual(d_date,1999-03-24), IsNotNull(d_date_sk)] +ReadSchema: struct + +(64) Filter +Input [2]: [d_date_sk#10, d_date#11] +Condition : (((isnotnull(d_date#11) AND (d_date#11 >= 1999-02-22)) AND (d_date#11 <= 1999-03-24)) AND isnotnull(d_date_sk#10)) + +(65) Project +Output [1]: [d_date_sk#10] +Input [2]: [d_date_sk#10, d_date#11] + +(66) Exchange +Input [1]: [d_date_sk#10] +Arguments: hashpartitioning(d_date_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(67) Sort +Input [1]: [d_date_sk#10] +Arguments: [d_date_sk#10 ASC NULLS FIRST], false, 0 + +(68) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#1] +Right keys [1]: [d_date_sk#10] +Join type: Inner +Join condition: None + +(69) Project +Output [6]: [ws_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Input [8]: [ws_sold_date_sk#1, ws_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9, d_date_sk#10] + +(70) HashAggregate +Input [6]: [ws_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Keys [5]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7] +Functions [1]: [partial_sum(UnscaledValue(ws_ext_sales_price#3))] +Aggregate Attributes [1]: [sum#13] +Results [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, sum#20] + +(71) Exchange +Input [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, sum#20] +Arguments: hashpartitioning(i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(72) HashAggregate +Input [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, sum#20] +Keys [5]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7] +Functions [1]: [sum(UnscaledValue(ws_ext_sales_price#3))] +Aggregate Attributes [1]: [sum(UnscaledValue(ws_ext_sales_price#3))#15] +Results [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#3))#15,17,2) AS itemrevenue#16, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#3))#15,17,2) AS _w0#17, i_item_id#5] + +(73) Exchange +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5] +Arguments: hashpartitioning(i_class#8, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(74) Sort +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5] +Arguments: [i_class#8 ASC NULLS FIRST], false, 0 + +(75) Window +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5] +Arguments: [sum(_w0#17) windowspecdefinition(i_class#8, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#18], [i_class#8] + +(76) Project +Output [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, ((_w0#17 * 100) / _we0#18) AS revenueratio#19, i_item_id#5] +Input [8]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5, _we0#18] + +(77) TakeOrderedAndProject +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, revenueratio#19, i_item_id#5] +Arguments: X, [i_category#9 ASC NULLS FIRST, i_class#8 ASC NULLS FIRST, i_item_id#5 ASC NULLS FIRST, i_item_desc#6 ASC NULLS FIRST, revenueratio#19 ASC NULLS FIRST], [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, revenueratio#19] + +(78) AdaptiveSparkPlan +Output [6]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, revenueratio#19] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q13.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q13.txt new file mode 100644 index 000000000..a952eab95 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q13.txt @@ -0,0 +1,731 @@ +== Physical Plan == +AdaptiveSparkPlan (134) ++- == Final Plan == + * HashAggregate (86) + +- ShuffleQueryStage (85), Statistics(X) + +- Exchange (84) + +- * HashAggregate (83) + +- * Project (82) + +- * SortMergeJoin Inner (81) + :- NativeSort (72) + : +- InputAdapter (71) + : +- AQEShuffleRead (70) + : +- ShuffleQueryStage (69), Statistics(X) + : +- NativeShuffleExchange (68) + : +- ConvertToNative (67) + : +- * Project (66) + : +- * SortMergeJoin Inner (65) + : :- NativeSort (56) + : : +- InputAdapter (55) + : : +- AQEShuffleRead (54) + : : +- ShuffleQueryStage (53), Statistics(X) + : : +- NativeShuffleExchange (52) + : : +- NativeProject (51) + : : +- NativeSortMergeJoin Inner (50) + : : :- NativeSort (40) + : : : +- InputAdapter (39) + : : : +- AQEShuffleRead (38) + : : : +- ShuffleQueryStage (37), Statistics(X) + : : : +- NativeShuffleExchange (36) + : : : +- ConvertToNative (35) + : : : +- * Project (34) + : : : +- * SortMergeJoin Inner (33) + : : : :- NativeSort (23) + : : : : +- InputAdapter (22) + : : : : +- AQEShuffleRead (21) + : : : : +- ShuffleQueryStage (20), Statistics(X) + : : : : +- NativeShuffleExchange (19) + : : : : +- NativeProject (18) + : : : : +- NativeSortMergeJoin Inner (17) + : : : : :- NativeSort (8) + : : : : : +- InputAdapter (7) + : : : : : +- AQEShuffleRead (6) + : : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : : +- NativeShuffleExchange (4) + : : : : : +- NativeFilter (3) + : : : : : +- InputAdapter (2) + : : : : : +- NativeParquetScan (1) + : : : : +- NativeSort (16) + : : : : +- InputAdapter (15) + : : : : +- AQEShuffleRead (14) + : : : : +- ShuffleQueryStage (13), Statistics(X) + : : : : +- NativeShuffleExchange (12) + : : : : +- NativeFilter (11) + : : : : +- InputAdapter (10) + : : : : +- NativeParquetScan (9) + : : : +- NativeSort (32) + : : : +- InputAdapter (31) + : : : +- AQEShuffleRead (30) + : : : +- ShuffleQueryStage (29), Statistics(X) + : : : +- NativeShuffleExchange (28) + : : : +- NativeProject (27) + : : : +- NativeFilter (26) + : : : +- InputAdapter (25) + : : : +- NativeParquetScan (24) + : : +- NativeSort (49) + : : +- InputAdapter (48) + : : +- AQEShuffleRead (47) + : : +- ShuffleQueryStage (46), Statistics(X) + : : +- NativeShuffleExchange (45) + : : +- NativeProject (44) + : : +- NativeFilter (43) + : : +- InputAdapter (42) + : : +- NativeParquetScan (41) + : +- NativeSort (64) + : +- InputAdapter (63) + : +- AQEShuffleRead (62) + : +- ShuffleQueryStage (61), Statistics(X) + : +- NativeShuffleExchange (60) + : +- NativeFilter (59) + : +- InputAdapter (58) + : +- NativeParquetScan (57) + +- NativeSort (80) + +- InputAdapter (79) + +- AQEShuffleRead (78) + +- ShuffleQueryStage (77), Statistics(X) + +- NativeShuffleExchange (76) + +- NativeFilter (75) + +- InputAdapter (74) + +- NativeParquetScan (73) ++- == Initial Plan == + HashAggregate (133) + +- Exchange (132) + +- HashAggregate (131) + +- Project (130) + +- SortMergeJoin Inner (129) + :- Sort (124) + : +- Exchange (123) + : +- Project (122) + : +- SortMergeJoin Inner (121) + : :- Sort (116) + : : +- Exchange (115) + : : +- Project (114) + : : +- SortMergeJoin Inner (113) + : : :- Sort (107) + : : : +- Exchange (106) + : : : +- Project (105) + : : : +- SortMergeJoin Inner (104) + : : : :- Sort (98) + : : : : +- Exchange (97) + : : : : +- Project (96) + : : : : +- SortMergeJoin Inner (95) + : : : : :- Sort (90) + : : : : : +- Exchange (89) + : : : : : +- Filter (88) + : : : : : +- Scan parquet (87) + : : : : +- Sort (94) + : : : : +- Exchange (93) + : : : : +- Filter (92) + : : : : +- Scan parquet (91) + : : : +- Sort (103) + : : : +- Exchange (102) + : : : +- Project (101) + : : : +- Filter (100) + : : : +- Scan parquet (99) + : : +- Sort (112) + : : +- Exchange (111) + : : +- Project (110) + : : +- Filter (109) + : : +- Scan parquet (108) + : +- Sort (120) + : +- Exchange (119) + : +- Filter (118) + : +- Scan parquet (117) + +- Sort (128) + +- Exchange (127) + +- Filter (126) + +- Scan parquet (125) + + +(87) Scan parquet +Output [10]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_store_sk), IsNotNull(ss_addr_sk), IsNotNull(ss_sold_date_sk), IsNotNull(ss_cdemo_sk), IsNotNull(ss_hdemo_sk), Or(Or(And(GreaterThanOrEqual(ss_net_profit,100.00),LessThanOrEqual(ss_net_profit,200.00)),And(GreaterThanOrEqual(ss_net_profit,150.00),LessThanOrEqual(ss_net_profit,300.00))),And(GreaterThanOrEqual(ss_net_profit,50.00),LessThanOrEqual(ss_net_profit,250.00))), Or(Or(And(GreaterThanOrEqual(ss_sales_price,100.00),LessThanOrEqual(ss_sales_price,150.00)),And(GreaterThanOrEqual(ss_sales_price,50.00),LessThanOrEqual(ss_sales_price,100.00))),And(GreaterThanOrEqual(ss_sales_price,150.00),LessThanOrEqual(ss_sales_price,200.00)))] +ReadSchema: struct + +(2) InputAdapter +Input [10]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10] +Arguments: [#1, #2, #3, #4, #5, #6, #7, #8, #9, #10] + +(3) NativeFilter +Input [10]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9, #10#10] +Condition : ((((((isnotnull(ss_store_sk#5) AND isnotnull(ss_addr_sk#4)) AND isnotnull(ss_sold_date_sk#1)) AND isnotnull(ss_cdemo_sk#2)) AND isnotnull(ss_hdemo_sk#3)) AND ((((ss_net_profit#10 >= 100.00) AND (ss_net_profit#10 <= 200.00)) OR ((ss_net_profit#10 >= 150.00) AND (ss_net_profit#10 <= 300.00))) OR ((ss_net_profit#10 >= 50.00) AND (ss_net_profit#10 <= 250.00)))) AND ((((ss_sales_price#7 >= 100.00) AND (ss_sales_price#7 <= 150.00)) OR ((ss_sales_price#7 >= 50.00) AND (ss_sales_price#7 <= 100.00))) OR ((ss_sales_price#7 >= 150.00) AND (ss_sales_price#7 <= 200.00)))) + +(4) NativeShuffleExchange +Input [10]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9, #10#10] +Arguments: hashpartitioning(ss_store_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [10]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9, #10#10] +Arguments: X + +(6) AQEShuffleRead +Input [10]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9, #10#10] +Arguments: coalesced + +(7) InputAdapter +Input [10]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9, #10#10] + +(8) NativeSort +Input [10]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9, #10#10] +Arguments: [ss_store_sk#5 ASC NULLS FIRST], false + +(91) Scan parquet +Output [1]: [s_store_sk#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [1]: [s_store_sk#11] +Arguments: [#11] + +(11) NativeFilter +Input [1]: [#11#11] +Condition : isnotnull(s_store_sk#11) + +(12) NativeShuffleExchange +Input [1]: [#11#11] +Arguments: hashpartitioning(s_store_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [1]: [#11#11] +Arguments: X + +(14) AQEShuffleRead +Input [1]: [#11#11] +Arguments: coalesced + +(15) InputAdapter +Input [1]: [#11#11] + +(16) NativeSort +Input [1]: [#11#11] +Arguments: [s_store_sk#11 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#5] +Right keys [1]: [s_store_sk#11] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [9]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10] +Input [11]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9, #10#10, #11#11] + +(19) NativeShuffleExchange +Input [9]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10] +Arguments: hashpartitioning(ss_addr_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [9]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10] +Arguments: X + +(21) AQEShuffleRead +Input [9]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10] +Arguments: coalesced + +(22) InputAdapter +Input [9]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10] + +(23) NativeSort +Input [9]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10] +Arguments: [ss_addr_sk#4 ASC NULLS FIRST], false + +(99) Scan parquet +Output [3]: [ca_address_sk#12, ca_state#13, ca_country#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_country), EqualTo(ca_country,United States), IsNotNull(ca_address_sk), Or(Or(In(ca_state, [OH,TX]),In(ca_state, [KY,NM,OR])),In(ca_state, [MS,TX,VA]))] +ReadSchema: struct + +(25) InputAdapter +Input [3]: [ca_address_sk#12, ca_state#13, ca_country#14] +Arguments: [#12, #13, #14] + +(26) NativeFilter +Input [3]: [#12#12, #13#13, #14#14] +Condition : (((isnotnull(ca_country#14) AND (ca_country#14 = United States)) AND isnotnull(ca_address_sk#12)) AND ((ca_state#13 IN (TX,OH) OR ca_state#13 IN (OR,NM,KY)) OR ca_state#13 IN (VA,TX,MS))) + +(27) NativeProject +Output [2]: [ca_address_sk#12, ca_state#13] +Input [3]: [#12#12, #13#13, #14#14] + +(28) NativeShuffleExchange +Input [2]: [ca_address_sk#12, ca_state#13] +Arguments: hashpartitioning(ca_address_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(29) ShuffleQueryStage +Output [2]: [ca_address_sk#12, ca_state#13] +Arguments: X + +(30) AQEShuffleRead +Input [2]: [ca_address_sk#12, ca_state#13] +Arguments: coalesced + +(31) InputAdapter +Input [2]: [ca_address_sk#12, ca_state#13] + +(32) NativeSort +Input [2]: [ca_address_sk#12, ca_state#13] +Arguments: [ca_address_sk#12 ASC NULLS FIRST], false + +(33) SortMergeJoin [codegen id : 1] +Left keys [1]: [ss_addr_sk#4] +Right keys [1]: [ca_address_sk#12] +Join type: Inner +Join condition: ((((ca_state#13 IN (TX,OH) AND (ss_net_profit#10 >= 100.00)) AND (ss_net_profit#10 <= 200.00)) OR ((ca_state#13 IN (OR,NM,KY) AND (ss_net_profit#10 >= 150.00)) AND (ss_net_profit#10 <= 300.00))) OR ((ca_state#13 IN (VA,TX,MS) AND (ss_net_profit#10 >= 50.00)) AND (ss_net_profit#10 <= 250.00))) + +(34) Project [codegen id : 1] +Output [7]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9] +Input [11]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10, ca_address_sk#12, ca_state#13] + +(35) ConvertToNative +Input [7]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9] + +(36) NativeShuffleExchange +Input [7]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [7]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9] +Arguments: X + +(38) AQEShuffleRead +Input [7]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9] +Arguments: coalesced + +(39) InputAdapter +Input [7]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9] + +(40) NativeSort +Input [7]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(108) Scan parquet +Output [2]: [d_date_sk#15, d_year#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(42) InputAdapter +Input [2]: [d_date_sk#15, d_year#16] +Arguments: [#15, #16] + +(43) NativeFilter +Input [2]: [#15#15, #16#16] +Condition : ((isnotnull(d_year#16) AND (d_year#16 = 2001)) AND isnotnull(d_date_sk#15)) + +(44) NativeProject +Output [1]: [d_date_sk#15] +Input [2]: [#15#15, #16#16] + +(45) NativeShuffleExchange +Input [1]: [d_date_sk#15] +Arguments: hashpartitioning(d_date_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(46) ShuffleQueryStage +Output [1]: [d_date_sk#15] +Arguments: X + +(47) AQEShuffleRead +Input [1]: [d_date_sk#15] +Arguments: coalesced + +(48) InputAdapter +Input [1]: [d_date_sk#15] + +(49) NativeSort +Input [1]: [d_date_sk#15] +Arguments: [d_date_sk#15 ASC NULLS FIRST], false + +(50) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#15] +Join type: Inner +Join condition: None + +(51) NativeProject +Output [6]: [ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9] +Input [8]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, d_date_sk#15] + +(52) NativeShuffleExchange +Input [6]: [ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9] +Arguments: hashpartitioning(ss_cdemo_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(53) ShuffleQueryStage +Output [6]: [ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9] +Arguments: X + +(54) AQEShuffleRead +Input [6]: [ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9] +Arguments: coalesced + +(55) InputAdapter +Input [6]: [ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9] + +(56) NativeSort +Input [6]: [ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9] +Arguments: [ss_cdemo_sk#2 ASC NULLS FIRST], false + +(117) Scan parquet +Output [3]: [cd_demo_sk#17, cd_marital_status#18, cd_education_status#19] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_demo_sk), Or(Or(And(EqualTo(cd_marital_status,M),EqualTo(cd_education_status,Advanced Degree)),And(EqualTo(cd_marital_status,S),EqualTo(cd_education_status,College))),And(EqualTo(cd_marital_status,W),EqualTo(cd_education_status,2 yr Degree)))] +ReadSchema: struct + +(58) InputAdapter +Input [3]: [cd_demo_sk#17, cd_marital_status#18, cd_education_status#19] +Arguments: [#17, #18, #19] + +(59) NativeFilter +Input [3]: [#17#17, #18#18, #19#19] +Condition : (isnotnull(cd_demo_sk#17) AND ((((cd_marital_status#18 = M) AND (cd_education_status#19 = Advanced Degree)) OR ((cd_marital_status#18 = S) AND (cd_education_status#19 = College))) OR ((cd_marital_status#18 = W) AND (cd_education_status#19 = 2 yr Degree)))) + +(60) NativeShuffleExchange +Input [3]: [#17#17, #18#18, #19#19] +Arguments: hashpartitioning(cd_demo_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(61) ShuffleQueryStage +Output [3]: [#17#17, #18#18, #19#19] +Arguments: X + +(62) AQEShuffleRead +Input [3]: [#17#17, #18#18, #19#19] +Arguments: coalesced + +(63) InputAdapter +Input [3]: [#17#17, #18#18, #19#19] + +(64) NativeSort +Input [3]: [#17#17, #18#18, #19#19] +Arguments: [cd_demo_sk#17 ASC NULLS FIRST], false + +(65) SortMergeJoin [codegen id : 2] +Left keys [1]: [ss_cdemo_sk#2] +Right keys [1]: [cd_demo_sk#17] +Join type: Inner +Join condition: ((((((cd_marital_status#18 = M) AND (cd_education_status#19 = Advanced Degree)) AND (ss_sales_price#7 >= 100.00)) AND (ss_sales_price#7 <= 150.00)) OR ((((cd_marital_status#18 = S) AND (cd_education_status#19 = College)) AND (ss_sales_price#7 >= 50.00)) AND (ss_sales_price#7 <= 100.00))) OR ((((cd_marital_status#18 = W) AND (cd_education_status#19 = 2 yr Degree)) AND (ss_sales_price#7 >= 150.00)) AND (ss_sales_price#7 <= 200.00))) + +(66) Project [codegen id : 2] +Output [7]: [ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, cd_marital_status#18, cd_education_status#19] +Input [9]: [ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, #17#17, #18#18, #19#19] + +(67) ConvertToNative +Input [7]: [ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, cd_marital_status#18, cd_education_status#19] + +(68) NativeShuffleExchange +Input [7]: [ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, cd_marital_status#18, cd_education_status#19] +Arguments: hashpartitioning(ss_hdemo_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(69) ShuffleQueryStage +Output [7]: [ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, cd_marital_status#18, cd_education_status#19] +Arguments: X + +(70) AQEShuffleRead +Input [7]: [ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, cd_marital_status#18, cd_education_status#19] +Arguments: coalesced + +(71) InputAdapter +Input [7]: [ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, cd_marital_status#18, cd_education_status#19] + +(72) NativeSort +Input [7]: [ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, cd_marital_status#18, cd_education_status#19] +Arguments: [ss_hdemo_sk#3 ASC NULLS FIRST], false + +(125) Scan parquet +Output [2]: [hd_demo_sk#20, hd_dep_count#21] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(hd_demo_sk), Or(EqualTo(hd_dep_count,3),EqualTo(hd_dep_count,1))] +ReadSchema: struct + +(74) InputAdapter +Input [2]: [hd_demo_sk#20, hd_dep_count#21] +Arguments: [#20, #21] + +(75) NativeFilter +Input [2]: [#20#20, #21#21] +Condition : (isnotnull(hd_demo_sk#20) AND ((hd_dep_count#21 = 3) OR (hd_dep_count#21 = 1))) + +(76) NativeShuffleExchange +Input [2]: [#20#20, #21#21] +Arguments: hashpartitioning(hd_demo_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(77) ShuffleQueryStage +Output [2]: [#20#20, #21#21] +Arguments: X + +(78) AQEShuffleRead +Input [2]: [#20#20, #21#21] +Arguments: coalesced + +(79) InputAdapter +Input [2]: [#20#20, #21#21] + +(80) NativeSort +Input [2]: [#20#20, #21#21] +Arguments: [hd_demo_sk#20 ASC NULLS FIRST], false + +(81) SortMergeJoin [codegen id : 3] +Left keys [1]: [ss_hdemo_sk#3] +Right keys [1]: [hd_demo_sk#20] +Join type: Inner +Join condition: (((((((cd_marital_status#18 = M) AND (cd_education_status#19 = Advanced Degree)) AND (ss_sales_price#7 >= 100.00)) AND (ss_sales_price#7 <= 150.00)) AND (hd_dep_count#21 = 3)) OR (((((cd_marital_status#18 = S) AND (cd_education_status#19 = College)) AND (ss_sales_price#7 >= 50.00)) AND (ss_sales_price#7 <= 100.00)) AND (hd_dep_count#21 = 1))) OR (((((cd_marital_status#18 = W) AND (cd_education_status#19 = 2 yr Degree)) AND (ss_sales_price#7 >= 150.00)) AND (ss_sales_price#7 <= 200.00)) AND (hd_dep_count#21 = 1))) + +(82) Project [codegen id : 3] +Output [3]: [ss_quantity#6, ss_ext_sales_price#8, ss_ext_wholesale_cost#9] +Input [9]: [ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, cd_marital_status#18, cd_education_status#19, #20#20, #21#21] + +(83) HashAggregate [codegen id : 3] +Input [3]: [ss_quantity#6, ss_ext_sales_price#8, ss_ext_wholesale_cost#9] +Keys: [] +Functions [4]: [partial_avg(ss_quantity#6), partial_avg(UnscaledValue(ss_ext_sales_price#8)), partial_avg(UnscaledValue(ss_ext_wholesale_cost#9)), partial_sum(UnscaledValue(ss_ext_wholesale_cost#9))] +Aggregate Attributes [7]: [sum#22, count#23, sum#24, count#25, sum#26, count#27, sum#28] +Results [7]: [sum#29, count#30, sum#31, count#32, sum#33, count#34, sum#35] + +(84) Exchange +Input [7]: [sum#29, count#30, sum#31, count#32, sum#33, count#34, sum#35] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=11] + +(85) ShuffleQueryStage +Output [7]: [sum#29, count#30, sum#31, count#32, sum#33, count#34, sum#35] +Arguments: X + +(86) HashAggregate [codegen id : 4] +Input [7]: [sum#29, count#30, sum#31, count#32, sum#33, count#34, sum#35] +Keys: [] +Functions [4]: [avg(ss_quantity#6), avg(UnscaledValue(ss_ext_sales_price#8)), avg(UnscaledValue(ss_ext_wholesale_cost#9)), sum(UnscaledValue(ss_ext_wholesale_cost#9))] +Aggregate Attributes [4]: [avg(ss_quantity#6)#36, avg(UnscaledValue(ss_ext_sales_price#8))#37, avg(UnscaledValue(ss_ext_wholesale_cost#9))#38, sum(UnscaledValue(ss_ext_wholesale_cost#9))#39] +Results [4]: [avg(ss_quantity#6)#36 AS avg(ss_quantity)#40, cast((avg(UnscaledValue(ss_ext_sales_price#8))#37 / 100.0) as decimal(11,6)) AS avg(ss_ext_sales_price)#41, cast((avg(UnscaledValue(ss_ext_wholesale_cost#9))#38 / 100.0) as decimal(11,6)) AS avg(ss_ext_wholesale_cost)#42, MakeDecimal(sum(UnscaledValue(ss_ext_wholesale_cost#9))#39,17,2) AS sum(ss_ext_wholesale_cost)#43] + +(87) Scan parquet +Output [10]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_store_sk), IsNotNull(ss_addr_sk), IsNotNull(ss_sold_date_sk), IsNotNull(ss_cdemo_sk), IsNotNull(ss_hdemo_sk), Or(Or(And(GreaterThanOrEqual(ss_net_profit,100.00),LessThanOrEqual(ss_net_profit,200.00)),And(GreaterThanOrEqual(ss_net_profit,150.00),LessThanOrEqual(ss_net_profit,300.00))),And(GreaterThanOrEqual(ss_net_profit,50.00),LessThanOrEqual(ss_net_profit,250.00))), Or(Or(And(GreaterThanOrEqual(ss_sales_price,100.00),LessThanOrEqual(ss_sales_price,150.00)),And(GreaterThanOrEqual(ss_sales_price,50.00),LessThanOrEqual(ss_sales_price,100.00))),And(GreaterThanOrEqual(ss_sales_price,150.00),LessThanOrEqual(ss_sales_price,200.00)))] +ReadSchema: struct + +(88) Filter +Input [10]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10] +Condition : ((((((isnotnull(ss_store_sk#5) AND isnotnull(ss_addr_sk#4)) AND isnotnull(ss_sold_date_sk#1)) AND isnotnull(ss_cdemo_sk#2)) AND isnotnull(ss_hdemo_sk#3)) AND ((((ss_net_profit#10 >= 100.00) AND (ss_net_profit#10 <= 200.00)) OR ((ss_net_profit#10 >= 150.00) AND (ss_net_profit#10 <= 300.00))) OR ((ss_net_profit#10 >= 50.00) AND (ss_net_profit#10 <= 250.00)))) AND ((((ss_sales_price#7 >= 100.00) AND (ss_sales_price#7 <= 150.00)) OR ((ss_sales_price#7 >= 50.00) AND (ss_sales_price#7 <= 100.00))) OR ((ss_sales_price#7 >= 150.00) AND (ss_sales_price#7 <= 200.00)))) + +(89) Exchange +Input [10]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10] +Arguments: hashpartitioning(ss_store_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(90) Sort +Input [10]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10] +Arguments: [ss_store_sk#5 ASC NULLS FIRST], false, 0 + +(91) Scan parquet +Output [1]: [s_store_sk#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(92) Filter +Input [1]: [s_store_sk#11] +Condition : isnotnull(s_store_sk#11) + +(93) Exchange +Input [1]: [s_store_sk#11] +Arguments: hashpartitioning(s_store_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(94) Sort +Input [1]: [s_store_sk#11] +Arguments: [s_store_sk#11 ASC NULLS FIRST], false, 0 + +(95) SortMergeJoin +Left keys [1]: [ss_store_sk#5] +Right keys [1]: [s_store_sk#11] +Join type: Inner +Join condition: None + +(96) Project +Output [9]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10] +Input [11]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10, s_store_sk#11] + +(97) Exchange +Input [9]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10] +Arguments: hashpartitioning(ss_addr_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(98) Sort +Input [9]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10] +Arguments: [ss_addr_sk#4 ASC NULLS FIRST], false, 0 + +(99) Scan parquet +Output [3]: [ca_address_sk#12, ca_state#13, ca_country#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_country), EqualTo(ca_country,United States), IsNotNull(ca_address_sk), Or(Or(In(ca_state, [OH,TX]),In(ca_state, [KY,NM,OR])),In(ca_state, [MS,TX,VA]))] +ReadSchema: struct + +(100) Filter +Input [3]: [ca_address_sk#12, ca_state#13, ca_country#14] +Condition : (((isnotnull(ca_country#14) AND (ca_country#14 = United States)) AND isnotnull(ca_address_sk#12)) AND ((ca_state#13 IN (TX,OH) OR ca_state#13 IN (OR,NM,KY)) OR ca_state#13 IN (VA,TX,MS))) + +(101) Project +Output [2]: [ca_address_sk#12, ca_state#13] +Input [3]: [ca_address_sk#12, ca_state#13, ca_country#14] + +(102) Exchange +Input [2]: [ca_address_sk#12, ca_state#13] +Arguments: hashpartitioning(ca_address_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(103) Sort +Input [2]: [ca_address_sk#12, ca_state#13] +Arguments: [ca_address_sk#12 ASC NULLS FIRST], false, 0 + +(104) SortMergeJoin +Left keys [1]: [ss_addr_sk#4] +Right keys [1]: [ca_address_sk#12] +Join type: Inner +Join condition: ((((ca_state#13 IN (TX,OH) AND (ss_net_profit#10 >= 100.00)) AND (ss_net_profit#10 <= 200.00)) OR ((ca_state#13 IN (OR,NM,KY) AND (ss_net_profit#10 >= 150.00)) AND (ss_net_profit#10 <= 300.00))) OR ((ca_state#13 IN (VA,TX,MS) AND (ss_net_profit#10 >= 50.00)) AND (ss_net_profit#10 <= 250.00))) + +(105) Project +Output [7]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9] +Input [11]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10, ca_address_sk#12, ca_state#13] + +(106) Exchange +Input [7]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(107) Sort +Input [7]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(108) Scan parquet +Output [2]: [d_date_sk#15, d_year#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(109) Filter +Input [2]: [d_date_sk#15, d_year#16] +Condition : ((isnotnull(d_year#16) AND (d_year#16 = 2001)) AND isnotnull(d_date_sk#15)) + +(110) Project +Output [1]: [d_date_sk#15] +Input [2]: [d_date_sk#15, d_year#16] + +(111) Exchange +Input [1]: [d_date_sk#15] +Arguments: hashpartitioning(d_date_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(112) Sort +Input [1]: [d_date_sk#15] +Arguments: [d_date_sk#15 ASC NULLS FIRST], false, 0 + +(113) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#15] +Join type: Inner +Join condition: None + +(114) Project +Output [6]: [ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9] +Input [8]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, d_date_sk#15] + +(115) Exchange +Input [6]: [ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9] +Arguments: hashpartitioning(ss_cdemo_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(116) Sort +Input [6]: [ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9] +Arguments: [ss_cdemo_sk#2 ASC NULLS FIRST], false, 0 + +(117) Scan parquet +Output [3]: [cd_demo_sk#17, cd_marital_status#18, cd_education_status#19] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_demo_sk), Or(Or(And(EqualTo(cd_marital_status,M),EqualTo(cd_education_status,Advanced Degree)),And(EqualTo(cd_marital_status,S),EqualTo(cd_education_status,College))),And(EqualTo(cd_marital_status,W),EqualTo(cd_education_status,2 yr Degree)))] +ReadSchema: struct + +(118) Filter +Input [3]: [cd_demo_sk#17, cd_marital_status#18, cd_education_status#19] +Condition : (isnotnull(cd_demo_sk#17) AND ((((cd_marital_status#18 = M) AND (cd_education_status#19 = Advanced Degree)) OR ((cd_marital_status#18 = S) AND (cd_education_status#19 = College))) OR ((cd_marital_status#18 = W) AND (cd_education_status#19 = 2 yr Degree)))) + +(119) Exchange +Input [3]: [cd_demo_sk#17, cd_marital_status#18, cd_education_status#19] +Arguments: hashpartitioning(cd_demo_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(120) Sort +Input [3]: [cd_demo_sk#17, cd_marital_status#18, cd_education_status#19] +Arguments: [cd_demo_sk#17 ASC NULLS FIRST], false, 0 + +(121) SortMergeJoin +Left keys [1]: [ss_cdemo_sk#2] +Right keys [1]: [cd_demo_sk#17] +Join type: Inner +Join condition: ((((((cd_marital_status#18 = M) AND (cd_education_status#19 = Advanced Degree)) AND (ss_sales_price#7 >= 100.00)) AND (ss_sales_price#7 <= 150.00)) OR ((((cd_marital_status#18 = S) AND (cd_education_status#19 = College)) AND (ss_sales_price#7 >= 50.00)) AND (ss_sales_price#7 <= 100.00))) OR ((((cd_marital_status#18 = W) AND (cd_education_status#19 = 2 yr Degree)) AND (ss_sales_price#7 >= 150.00)) AND (ss_sales_price#7 <= 200.00))) + +(122) Project +Output [7]: [ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, cd_marital_status#18, cd_education_status#19] +Input [9]: [ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, cd_demo_sk#17, cd_marital_status#18, cd_education_status#19] + +(123) Exchange +Input [7]: [ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, cd_marital_status#18, cd_education_status#19] +Arguments: hashpartitioning(ss_hdemo_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(124) Sort +Input [7]: [ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, cd_marital_status#18, cd_education_status#19] +Arguments: [ss_hdemo_sk#3 ASC NULLS FIRST], false, 0 + +(125) Scan parquet +Output [2]: [hd_demo_sk#20, hd_dep_count#21] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(hd_demo_sk), Or(EqualTo(hd_dep_count,3),EqualTo(hd_dep_count,1))] +ReadSchema: struct + +(126) Filter +Input [2]: [hd_demo_sk#20, hd_dep_count#21] +Condition : (isnotnull(hd_demo_sk#20) AND ((hd_dep_count#21 = 3) OR (hd_dep_count#21 = 1))) + +(127) Exchange +Input [2]: [hd_demo_sk#20, hd_dep_count#21] +Arguments: hashpartitioning(hd_demo_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(128) Sort +Input [2]: [hd_demo_sk#20, hd_dep_count#21] +Arguments: [hd_demo_sk#20 ASC NULLS FIRST], false, 0 + +(129) SortMergeJoin +Left keys [1]: [ss_hdemo_sk#3] +Right keys [1]: [hd_demo_sk#20] +Join type: Inner +Join condition: (((((((cd_marital_status#18 = M) AND (cd_education_status#19 = Advanced Degree)) AND (ss_sales_price#7 >= 100.00)) AND (ss_sales_price#7 <= 150.00)) AND (hd_dep_count#21 = 3)) OR (((((cd_marital_status#18 = S) AND (cd_education_status#19 = College)) AND (ss_sales_price#7 >= 50.00)) AND (ss_sales_price#7 <= 100.00)) AND (hd_dep_count#21 = 1))) OR (((((cd_marital_status#18 = W) AND (cd_education_status#19 = 2 yr Degree)) AND (ss_sales_price#7 >= 150.00)) AND (ss_sales_price#7 <= 200.00)) AND (hd_dep_count#21 = 1))) + +(130) Project +Output [3]: [ss_quantity#6, ss_ext_sales_price#8, ss_ext_wholesale_cost#9] +Input [9]: [ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, cd_marital_status#18, cd_education_status#19, hd_demo_sk#20, hd_dep_count#21] + +(131) HashAggregate +Input [3]: [ss_quantity#6, ss_ext_sales_price#8, ss_ext_wholesale_cost#9] +Keys: [] +Functions [4]: [partial_avg(ss_quantity#6), partial_avg(UnscaledValue(ss_ext_sales_price#8)), partial_avg(UnscaledValue(ss_ext_wholesale_cost#9)), partial_sum(UnscaledValue(ss_ext_wholesale_cost#9))] +Aggregate Attributes [7]: [sum#22, count#23, sum#24, count#25, sum#26, count#27, sum#28] +Results [7]: [sum#29, count#30, sum#31, count#32, sum#33, count#34, sum#35] + +(132) Exchange +Input [7]: [sum#29, count#30, sum#31, count#32, sum#33, count#34, sum#35] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=22] + +(133) HashAggregate +Input [7]: [sum#29, count#30, sum#31, count#32, sum#33, count#34, sum#35] +Keys: [] +Functions [4]: [avg(ss_quantity#6), avg(UnscaledValue(ss_ext_sales_price#8)), avg(UnscaledValue(ss_ext_wholesale_cost#9)), sum(UnscaledValue(ss_ext_wholesale_cost#9))] +Aggregate Attributes [4]: [avg(ss_quantity#6)#36, avg(UnscaledValue(ss_ext_sales_price#8))#37, avg(UnscaledValue(ss_ext_wholesale_cost#9))#38, sum(UnscaledValue(ss_ext_wholesale_cost#9))#39] +Results [4]: [avg(ss_quantity#6)#36 AS avg(ss_quantity)#40, cast((avg(UnscaledValue(ss_ext_sales_price#8))#37 / 100.0) as decimal(11,6)) AS avg(ss_ext_sales_price)#41, cast((avg(UnscaledValue(ss_ext_wholesale_cost#9))#38 / 100.0) as decimal(11,6)) AS avg(ss_ext_wholesale_cost)#42, MakeDecimal(sum(UnscaledValue(ss_ext_wholesale_cost#9))#39,17,2) AS sum(ss_ext_wholesale_cost)#43] + +(134) AdaptiveSparkPlan +Output [4]: [avg(ss_quantity)#40, avg(ss_ext_sales_price)#41, avg(ss_ext_wholesale_cost)#42, sum(ss_ext_wholesale_cost)#43] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q14a.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q14a.txt new file mode 100644 index 000000000..993561aa7 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q14a.txt @@ -0,0 +1,5343 @@ +== Physical Plan == +AdaptiveSparkPlan (874) ++- == Final Plan == + NativeTakeOrdered (309) + +- NativeProject (308) + +- NativeHashAggregate (307) + +- InputAdapter (306) + +- AQEShuffleRead (305) + +- ShuffleQueryStage (304), Statistics(X) + +- NativeShuffleExchange (303) + +- NativeHashAggregate (302) + +- NativeExpand (301) + +- InputAdapter (300) + +- NativeUnion (299) + :- NativeProject (192) + : +- NativeFilter (191) + : +- NativeProject (190) + : +- NativeHashAggregate (189) + : +- InputAdapter (188) + : +- AQEShuffleRead (187) + : +- ShuffleQueryStage (186), Statistics(X) + : +- NativeShuffleExchange (185) + : +- NativeHashAggregate (184) + : +- NativeProject (183) + : +- NativeProject (182) + : +- NativeSortMergeJoin Inner (181) + : :- NativeSort (171) + : : +- InputAdapter (170) + : : +- AQEShuffleRead (169) + : : +- ShuffleQueryStage (168), Statistics(X) + : : +- NativeShuffleExchange (167) + : : +- NativeProject (166) + : : +- NativeSortMergeJoin Inner (165) + : : :- NativeSortMergeJoin LeftSemi (152) + : : : :- NativeSort (8) + : : : : +- InputAdapter (7) + : : : : +- AQEShuffleRead (6) + : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : +- NativeShuffleExchange (4) + : : : : +- NativeFilter (3) + : : : : +- InputAdapter (2) + : : : : +- NativeParquetScan (1) + : : : +- NativeSort (151) + : : : +- InputAdapter (150) + : : : +- AQEShuffleRead (149) + : : : +- ShuffleQueryStage (148), Statistics(X) + : : : +- NativeShuffleExchange (147) + : : : +- NativeProject (146) + : : : +- NativeSortMergeJoin Inner (145) + : : : :- NativeSort (16) + : : : : +- InputAdapter (15) + : : : : +- AQEShuffleRead (14) + : : : : +- ShuffleQueryStage (13), Statistics(X) + : : : : +- NativeShuffleExchange (12) + : : : : +- NativeFilter (11) + : : : : +- InputAdapter (10) + : : : : +- NativeParquetScan (9) + : : : +- NativeSort (144) + : : : +- InputAdapter (143) + : : : +- AQEShuffleRead (142) + : : : +- ShuffleQueryStage (141), Statistics(X) + : : : +- NativeShuffleExchange (140) + : : : +- NativeSortMergeJoin LeftSemi (139) + : : : :- NativeSort (104) + : : : : +- InputAdapter (103) + : : : : +- AQEShuffleRead (102) + : : : : +- ShuffleQueryStage (101), Statistics(X) + : : : : +- NativeShuffleExchange (100) + : : : : +- NativeProject (99) + : : : : +- NativeHashAggregate (98) + : : : : +- InputAdapter (97) + : : : : +- AQEShuffleRead (96) + : : : : +- ShuffleQueryStage (95), Statistics(X) + : : : : +- NativeShuffleExchange (94) + : : : : +- NativeHashAggregate (93) + : : : : +- NativeProject (92) + : : : : +- NativeSortMergeJoin Inner (91) + : : : : :- NativeSort (84) + : : : : : +- InputAdapter (83) + : : : : : +- AQEShuffleRead (82) + : : : : : +- ShuffleQueryStage (81), Statistics(X) + : : : : : +- NativeShuffleExchange (80) + : : : : : +- NativeProject (79) + : : : : : +- NativeSortMergeJoin Inner (78) + : : : : : :- NativeSort (24) + : : : : : : +- InputAdapter (23) + : : : : : : +- AQEShuffleRead (22) + : : : : : : +- ShuffleQueryStage (21), Statistics(X) + : : : : : : +- NativeShuffleExchange (20) + : : : : : : +- NativeFilter (19) + : : : : : : +- InputAdapter (18) + : : : : : : +- NativeParquetScan (17) + : : : : : +- NativeSort (77) + : : : : : +- InputAdapter (76) + : : : : : +- AQEShuffleRead (75) + : : : : : +- ShuffleQueryStage (74), Statistics(X) + : : : : : +- NativeShuffleExchange (73) + : : : : : +- NativeSortMergeJoin LeftSemi (72) + : : : : : :- NativeSort (32) + : : : : : : +- InputAdapter (31) + : : : : : : +- AQEShuffleRead (30) + : : : : : : +- ShuffleQueryStage (29), Statistics(X) + : : : : : : +- NativeShuffleExchange (28) + : : : : : : +- NativeFilter (27) + : : : : : : +- InputAdapter (26) + : : : : : : +- NativeParquetScan (25) + : : : : : +- NativeSort (71) + : : : : : +- InputAdapter (70) + : : : : : +- AQEShuffleRead (69) + : : : : : +- ShuffleQueryStage (68), Statistics(X) + : : : : : +- NativeShuffleExchange (67) + : : : : : +- NativeProject (66) + : : : : : +- NativeSortMergeJoin Inner (65) + : : : : : :- NativeSort (55) + : : : : : : +- InputAdapter (54) + : : : : : : +- AQEShuffleRead (53) + : : : : : : +- ShuffleQueryStage (52), Statistics(X) + : : : : : : +- NativeShuffleExchange (51) + : : : : : : +- NativeProject (50) + : : : : : : +- NativeSortMergeJoin Inner (49) + : : : : : : :- NativeSort (40) + : : : : : : : +- InputAdapter (39) + : : : : : : : +- AQEShuffleRead (38) + : : : : : : : +- ShuffleQueryStage (37), Statistics(X) + : : : : : : : +- NativeShuffleExchange (36) + : : : : : : : +- NativeFilter (35) + : : : : : : : +- InputAdapter (34) + : : : : : : : +- NativeParquetScan (33) + : : : : : : +- NativeSort (48) + : : : : : : +- InputAdapter (47) + : : : : : : +- AQEShuffleRead (46) + : : : : : : +- ShuffleQueryStage (45), Statistics(X) + : : : : : : +- NativeShuffleExchange (44) + : : : : : : +- NativeFilter (43) + : : : : : : +- InputAdapter (42) + : : : : : : +- NativeParquetScan (41) + : : : : : +- NativeSort (64) + : : : : : +- InputAdapter (63) + : : : : : +- AQEShuffleRead (62) + : : : : : +- ShuffleQueryStage (61), Statistics(X) + : : : : : +- NativeShuffleExchange (60) + : : : : : +- NativeProject (59) + : : : : : +- NativeFilter (58) + : : : : : +- InputAdapter (57) + : : : : : +- NativeParquetScan (56) + : : : : +- NativeSort (90) + : : : : +- InputAdapter (89) + : : : : +- InputAdapter (88) + : : : : +- AQEShuffleRead (87) + : : : : +- ShuffleQueryStage (86), Statistics(X) + : : : : +- ReusedExchange (85) + : : : +- NativeSort (138) + : : : +- InputAdapter (137) + : : : +- AQEShuffleRead (136) + : : : +- ShuffleQueryStage (135), Statistics(X) + : : : +- NativeShuffleExchange (134) + : : : +- NativeProject (133) + : : : +- NativeSortMergeJoin Inner (132) + : : : :- NativeSort (125) + : : : : +- InputAdapter (124) + : : : : +- AQEShuffleRead (123) + : : : : +- ShuffleQueryStage (122), Statistics(X) + : : : : +- NativeShuffleExchange (121) + : : : : +- NativeProject (120) + : : : : +- NativeSortMergeJoin Inner (119) + : : : : :- NativeSort (112) + : : : : : +- InputAdapter (111) + : : : : : +- AQEShuffleRead (110) + : : : : : +- ShuffleQueryStage (109), Statistics(X) + : : : : : +- NativeShuffleExchange (108) + : : : : : +- NativeFilter (107) + : : : : : +- InputAdapter (106) + : : : : : +- NativeParquetScan (105) + : : : : +- NativeSort (118) + : : : : +- InputAdapter (117) + : : : : +- InputAdapter (116) + : : : : +- AQEShuffleRead (115) + : : : : +- ShuffleQueryStage (114), Statistics(X) + : : : : +- ReusedExchange (113) + : : : +- NativeSort (131) + : : : +- InputAdapter (130) + : : : +- InputAdapter (129) + : : : +- AQEShuffleRead (128) + : : : +- ShuffleQueryStage (127), Statistics(X) + : : : +- ReusedExchange (126) + : : +- NativeSortMergeJoin LeftSemi (164) + : : :- NativeSort (158) + : : : +- InputAdapter (157) + : : : +- InputAdapter (156) + : : : +- AQEShuffleRead (155) + : : : +- ShuffleQueryStage (154), Statistics(X) + : : : +- ReusedExchange (153) + : : +- NativeSort (163) + : : +- InputAdapter (162) + : : +- AQEShuffleRead (161) + : : +- ShuffleQueryStage (160), Statistics(X) + : : +- ReusedExchange (159) + : +- NativeSort (180) + : +- InputAdapter (179) + : +- AQEShuffleRead (178) + : +- ShuffleQueryStage (177), Statistics(X) + : +- NativeShuffleExchange (176) + : +- NativeProject (175) + : +- NativeFilter (174) + : +- InputAdapter (173) + : +- NativeParquetScan (172) + :- NativeProject (245) + : +- NativeFilter (244) + : +- NativeProject (243) + : +- NativeHashAggregate (242) + : +- InputAdapter (241) + : +- AQEShuffleRead (240) + : +- ShuffleQueryStage (239), Statistics(X) + : +- NativeShuffleExchange (238) + : +- NativeHashAggregate (237) + : +- NativeProject (236) + : +- NativeProject (235) + : +- NativeSortMergeJoin Inner (234) + : :- NativeSort (227) + : : +- InputAdapter (226) + : : +- AQEShuffleRead (225) + : : +- ShuffleQueryStage (224), Statistics(X) + : : +- NativeShuffleExchange (223) + : : +- NativeProject (222) + : : +- NativeSortMergeJoin Inner (221) + : : :- NativeSortMergeJoin LeftSemi (207) + : : : :- NativeSort (200) + : : : : +- InputAdapter (199) + : : : : +- AQEShuffleRead (198) + : : : : +- ShuffleQueryStage (197), Statistics(X) + : : : : +- NativeShuffleExchange (196) + : : : : +- NativeFilter (195) + : : : : +- InputAdapter (194) + : : : : +- NativeParquetScan (193) + : : : +- NativeSort (206) + : : : +- InputAdapter (205) + : : : +- InputAdapter (204) + : : : +- AQEShuffleRead (203) + : : : +- ShuffleQueryStage (202), Statistics(X) + : : : +- ReusedExchange (201) + : : +- NativeSortMergeJoin LeftSemi (220) + : : :- NativeSort (213) + : : : +- InputAdapter (212) + : : : +- InputAdapter (211) + : : : +- AQEShuffleRead (210) + : : : +- ShuffleQueryStage (209), Statistics(X) + : : : +- ReusedExchange (208) + : : +- NativeSort (219) + : : +- InputAdapter (218) + : : +- InputAdapter (217) + : : +- AQEShuffleRead (216) + : : +- ShuffleQueryStage (215), Statistics(X) + : : +- ReusedExchange (214) + : +- NativeSort (233) + : +- InputAdapter (232) + : +- InputAdapter (231) + : +- AQEShuffleRead (230) + : +- ShuffleQueryStage (229), Statistics(X) + : +- ReusedExchange (228) + +- NativeProject (298) + +- NativeFilter (297) + +- NativeProject (296) + +- NativeHashAggregate (295) + +- InputAdapter (294) + +- AQEShuffleRead (293) + +- ShuffleQueryStage (292), Statistics(X) + +- NativeShuffleExchange (291) + +- NativeHashAggregate (290) + +- NativeProject (289) + +- NativeProject (288) + +- NativeSortMergeJoin Inner (287) + :- NativeSort (280) + : +- InputAdapter (279) + : +- AQEShuffleRead (278) + : +- ShuffleQueryStage (277), Statistics(X) + : +- NativeShuffleExchange (276) + : +- NativeProject (275) + : +- NativeSortMergeJoin Inner (274) + : :- NativeSortMergeJoin LeftSemi (260) + : : :- NativeSort (253) + : : : +- InputAdapter (252) + : : : +- AQEShuffleRead (251) + : : : +- ShuffleQueryStage (250), Statistics(X) + : : : +- NativeShuffleExchange (249) + : : : +- NativeFilter (248) + : : : +- InputAdapter (247) + : : : +- NativeParquetScan (246) + : : +- NativeSort (259) + : : +- InputAdapter (258) + : : +- InputAdapter (257) + : : +- AQEShuffleRead (256) + : : +- ShuffleQueryStage (255), Statistics(X) + : : +- ReusedExchange (254) + : +- NativeSortMergeJoin LeftSemi (273) + : :- NativeSort (266) + : : +- InputAdapter (265) + : : +- InputAdapter (264) + : : +- AQEShuffleRead (263) + : : +- ShuffleQueryStage (262), Statistics(X) + : : +- ReusedExchange (261) + : +- NativeSort (272) + : +- InputAdapter (271) + : +- InputAdapter (270) + : +- AQEShuffleRead (269) + : +- ShuffleQueryStage (268), Statistics(X) + : +- ReusedExchange (267) + +- NativeSort (286) + +- InputAdapter (285) + +- InputAdapter (284) + +- AQEShuffleRead (283) + +- ShuffleQueryStage (282), Statistics(X) + +- ReusedExchange (281) ++- == Initial Plan == + TakeOrderedAndProject (873) + +- HashAggregate (872) + +- Exchange (871) + +- HashAggregate (870) + +- Expand (869) + +- Union (868) + :- Project (495) + : +- Filter (494) + : +- HashAggregate (493) + : +- Exchange (492) + : +- HashAggregate (491) + : +- Project (490) + : +- SortMergeJoin Inner (489) + : :- Sort (483) + : : +- Exchange (482) + : : +- Project (481) + : : +- SortMergeJoin Inner (480) + : : :- SortMergeJoin LeftSemi (394) + : : : :- Sort (313) + : : : : +- Exchange (312) + : : : : +- Filter (311) + : : : : +- Scan parquet (310) + : : : +- Sort (393) + : : : +- Exchange (392) + : : : +- Project (391) + : : : +- SortMergeJoin Inner (390) + : : : :- Sort (317) + : : : : +- Exchange (316) + : : : : +- Filter (315) + : : : : +- Scan parquet (314) + : : : +- Sort (389) + : : : +- Exchange (388) + : : : +- SortMergeJoin LeftSemi (387) + : : : :- Sort (365) + : : : : +- Exchange (364) + : : : : +- HashAggregate (363) + : : : : +- Exchange (362) + : : : : +- HashAggregate (361) + : : : : +- Project (360) + : : : : +- SortMergeJoin Inner (359) + : : : : :- Sort (353) + : : : : : +- Exchange (352) + : : : : : +- Project (351) + : : : : : +- SortMergeJoin Inner (350) + : : : : : :- Sort (321) + : : : : : : +- Exchange (320) + : : : : : : +- Filter (319) + : : : : : : +- Scan parquet (318) + : : : : : +- Sort (349) + : : : : : +- Exchange (348) + : : : : : +- SortMergeJoin LeftSemi (347) + : : : : : :- Sort (325) + : : : : : : +- Exchange (324) + : : : : : : +- Filter (323) + : : : : : : +- Scan parquet (322) + : : : : : +- Sort (346) + : : : : : +- Exchange (345) + : : : : : +- Project (344) + : : : : : +- SortMergeJoin Inner (343) + : : : : : :- Sort (337) + : : : : : : +- Exchange (336) + : : : : : : +- Project (335) + : : : : : : +- SortMergeJoin Inner (334) + : : : : : : :- Sort (329) + : : : : : : : +- Exchange (328) + : : : : : : : +- Filter (327) + : : : : : : : +- Scan parquet (326) + : : : : : : +- Sort (333) + : : : : : : +- Exchange (332) + : : : : : : +- Filter (331) + : : : : : : +- Scan parquet (330) + : : : : : +- Sort (342) + : : : : : +- Exchange (341) + : : : : : +- Project (340) + : : : : : +- Filter (339) + : : : : : +- Scan parquet (338) + : : : : +- Sort (358) + : : : : +- Exchange (357) + : : : : +- Project (356) + : : : : +- Filter (355) + : : : : +- Scan parquet (354) + : : : +- Sort (386) + : : : +- Exchange (385) + : : : +- Project (384) + : : : +- SortMergeJoin Inner (383) + : : : :- Sort (377) + : : : : +- Exchange (376) + : : : : +- Project (375) + : : : : +- SortMergeJoin Inner (374) + : : : : :- Sort (369) + : : : : : +- Exchange (368) + : : : : : +- Filter (367) + : : : : : +- Scan parquet (366) + : : : : +- Sort (373) + : : : : +- Exchange (372) + : : : : +- Filter (371) + : : : : +- Scan parquet (370) + : : : +- Sort (382) + : : : +- Exchange (381) + : : : +- Project (380) + : : : +- Filter (379) + : : : +- Scan parquet (378) + : : +- SortMergeJoin LeftSemi (479) + : : :- Sort (398) + : : : +- Exchange (397) + : : : +- Filter (396) + : : : +- Scan parquet (395) + : : +- Sort (478) + : : +- Exchange (477) + : : +- Project (476) + : : +- SortMergeJoin Inner (475) + : : :- Sort (402) + : : : +- Exchange (401) + : : : +- Filter (400) + : : : +- Scan parquet (399) + : : +- Sort (474) + : : +- Exchange (473) + : : +- SortMergeJoin LeftSemi (472) + : : :- Sort (450) + : : : +- Exchange (449) + : : : +- HashAggregate (448) + : : : +- Exchange (447) + : : : +- HashAggregate (446) + : : : +- Project (445) + : : : +- SortMergeJoin Inner (444) + : : : :- Sort (438) + : : : : +- Exchange (437) + : : : : +- Project (436) + : : : : +- SortMergeJoin Inner (435) + : : : : :- Sort (406) + : : : : : +- Exchange (405) + : : : : : +- Filter (404) + : : : : : +- Scan parquet (403) + : : : : +- Sort (434) + : : : : +- Exchange (433) + : : : : +- SortMergeJoin LeftSemi (432) + : : : : :- Sort (410) + : : : : : +- Exchange (409) + : : : : : +- Filter (408) + : : : : : +- Scan parquet (407) + : : : : +- Sort (431) + : : : : +- Exchange (430) + : : : : +- Project (429) + : : : : +- SortMergeJoin Inner (428) + : : : : :- Sort (422) + : : : : : +- Exchange (421) + : : : : : +- Project (420) + : : : : : +- SortMergeJoin Inner (419) + : : : : : :- Sort (414) + : : : : : : +- Exchange (413) + : : : : : : +- Filter (412) + : : : : : : +- Scan parquet (411) + : : : : : +- Sort (418) + : : : : : +- Exchange (417) + : : : : : +- Filter (416) + : : : : : +- Scan parquet (415) + : : : : +- Sort (427) + : : : : +- Exchange (426) + : : : : +- Project (425) + : : : : +- Filter (424) + : : : : +- Scan parquet (423) + : : : +- Sort (443) + : : : +- Exchange (442) + : : : +- Project (441) + : : : +- Filter (440) + : : : +- Scan parquet (439) + : : +- Sort (471) + : : +- Exchange (470) + : : +- Project (469) + : : +- SortMergeJoin Inner (468) + : : :- Sort (462) + : : : +- Exchange (461) + : : : +- Project (460) + : : : +- SortMergeJoin Inner (459) + : : : :- Sort (454) + : : : : +- Exchange (453) + : : : : +- Filter (452) + : : : : +- Scan parquet (451) + : : : +- Sort (458) + : : : +- Exchange (457) + : : : +- Filter (456) + : : : +- Scan parquet (455) + : : +- Sort (467) + : : +- Exchange (466) + : : +- Project (465) + : : +- Filter (464) + : : +- Scan parquet (463) + : +- Sort (488) + : +- Exchange (487) + : +- Project (486) + : +- Filter (485) + : +- Scan parquet (484) + :- Project (681) + : +- Filter (680) + : +- HashAggregate (679) + : +- Exchange (678) + : +- HashAggregate (677) + : +- Project (676) + : +- SortMergeJoin Inner (675) + : :- Sort (669) + : : +- Exchange (668) + : : +- Project (667) + : : +- SortMergeJoin Inner (666) + : : :- SortMergeJoin LeftSemi (580) + : : : :- Sort (499) + : : : : +- Exchange (498) + : : : : +- Filter (497) + : : : : +- Scan parquet (496) + : : : +- Sort (579) + : : : +- Exchange (578) + : : : +- Project (577) + : : : +- SortMergeJoin Inner (576) + : : : :- Sort (503) + : : : : +- Exchange (502) + : : : : +- Filter (501) + : : : : +- Scan parquet (500) + : : : +- Sort (575) + : : : +- Exchange (574) + : : : +- SortMergeJoin LeftSemi (573) + : : : :- Sort (551) + : : : : +- Exchange (550) + : : : : +- HashAggregate (549) + : : : : +- Exchange (548) + : : : : +- HashAggregate (547) + : : : : +- Project (546) + : : : : +- SortMergeJoin Inner (545) + : : : : :- Sort (539) + : : : : : +- Exchange (538) + : : : : : +- Project (537) + : : : : : +- SortMergeJoin Inner (536) + : : : : : :- Sort (507) + : : : : : : +- Exchange (506) + : : : : : : +- Filter (505) + : : : : : : +- Scan parquet (504) + : : : : : +- Sort (535) + : : : : : +- Exchange (534) + : : : : : +- SortMergeJoin LeftSemi (533) + : : : : : :- Sort (511) + : : : : : : +- Exchange (510) + : : : : : : +- Filter (509) + : : : : : : +- Scan parquet (508) + : : : : : +- Sort (532) + : : : : : +- Exchange (531) + : : : : : +- Project (530) + : : : : : +- SortMergeJoin Inner (529) + : : : : : :- Sort (523) + : : : : : : +- Exchange (522) + : : : : : : +- Project (521) + : : : : : : +- SortMergeJoin Inner (520) + : : : : : : :- Sort (515) + : : : : : : : +- Exchange (514) + : : : : : : : +- Filter (513) + : : : : : : : +- Scan parquet (512) + : : : : : : +- Sort (519) + : : : : : : +- Exchange (518) + : : : : : : +- Filter (517) + : : : : : : +- Scan parquet (516) + : : : : : +- Sort (528) + : : : : : +- Exchange (527) + : : : : : +- Project (526) + : : : : : +- Filter (525) + : : : : : +- Scan parquet (524) + : : : : +- Sort (544) + : : : : +- Exchange (543) + : : : : +- Project (542) + : : : : +- Filter (541) + : : : : +- Scan parquet (540) + : : : +- Sort (572) + : : : +- Exchange (571) + : : : +- Project (570) + : : : +- SortMergeJoin Inner (569) + : : : :- Sort (563) + : : : : +- Exchange (562) + : : : : +- Project (561) + : : : : +- SortMergeJoin Inner (560) + : : : : :- Sort (555) + : : : : : +- Exchange (554) + : : : : : +- Filter (553) + : : : : : +- Scan parquet (552) + : : : : +- Sort (559) + : : : : +- Exchange (558) + : : : : +- Filter (557) + : : : : +- Scan parquet (556) + : : : +- Sort (568) + : : : +- Exchange (567) + : : : +- Project (566) + : : : +- Filter (565) + : : : +- Scan parquet (564) + : : +- SortMergeJoin LeftSemi (665) + : : :- Sort (584) + : : : +- Exchange (583) + : : : +- Filter (582) + : : : +- Scan parquet (581) + : : +- Sort (664) + : : +- Exchange (663) + : : +- Project (662) + : : +- SortMergeJoin Inner (661) + : : :- Sort (588) + : : : +- Exchange (587) + : : : +- Filter (586) + : : : +- Scan parquet (585) + : : +- Sort (660) + : : +- Exchange (659) + : : +- SortMergeJoin LeftSemi (658) + : : :- Sort (636) + : : : +- Exchange (635) + : : : +- HashAggregate (634) + : : : +- Exchange (633) + : : : +- HashAggregate (632) + : : : +- Project (631) + : : : +- SortMergeJoin Inner (630) + : : : :- Sort (624) + : : : : +- Exchange (623) + : : : : +- Project (622) + : : : : +- SortMergeJoin Inner (621) + : : : : :- Sort (592) + : : : : : +- Exchange (591) + : : : : : +- Filter (590) + : : : : : +- Scan parquet (589) + : : : : +- Sort (620) + : : : : +- Exchange (619) + : : : : +- SortMergeJoin LeftSemi (618) + : : : : :- Sort (596) + : : : : : +- Exchange (595) + : : : : : +- Filter (594) + : : : : : +- Scan parquet (593) + : : : : +- Sort (617) + : : : : +- Exchange (616) + : : : : +- Project (615) + : : : : +- SortMergeJoin Inner (614) + : : : : :- Sort (608) + : : : : : +- Exchange (607) + : : : : : +- Project (606) + : : : : : +- SortMergeJoin Inner (605) + : : : : : :- Sort (600) + : : : : : : +- Exchange (599) + : : : : : : +- Filter (598) + : : : : : : +- Scan parquet (597) + : : : : : +- Sort (604) + : : : : : +- Exchange (603) + : : : : : +- Filter (602) + : : : : : +- Scan parquet (601) + : : : : +- Sort (613) + : : : : +- Exchange (612) + : : : : +- Project (611) + : : : : +- Filter (610) + : : : : +- Scan parquet (609) + : : : +- Sort (629) + : : : +- Exchange (628) + : : : +- Project (627) + : : : +- Filter (626) + : : : +- Scan parquet (625) + : : +- Sort (657) + : : +- Exchange (656) + : : +- Project (655) + : : +- SortMergeJoin Inner (654) + : : :- Sort (648) + : : : +- Exchange (647) + : : : +- Project (646) + : : : +- SortMergeJoin Inner (645) + : : : :- Sort (640) + : : : : +- Exchange (639) + : : : : +- Filter (638) + : : : : +- Scan parquet (637) + : : : +- Sort (644) + : : : +- Exchange (643) + : : : +- Filter (642) + : : : +- Scan parquet (641) + : : +- Sort (653) + : : +- Exchange (652) + : : +- Project (651) + : : +- Filter (650) + : : +- Scan parquet (649) + : +- Sort (674) + : +- Exchange (673) + : +- Project (672) + : +- Filter (671) + : +- Scan parquet (670) + +- Project (867) + +- Filter (866) + +- HashAggregate (865) + +- Exchange (864) + +- HashAggregate (863) + +- Project (862) + +- SortMergeJoin Inner (861) + :- Sort (855) + : +- Exchange (854) + : +- Project (853) + : +- SortMergeJoin Inner (852) + : :- SortMergeJoin LeftSemi (766) + : : :- Sort (685) + : : : +- Exchange (684) + : : : +- Filter (683) + : : : +- Scan parquet (682) + : : +- Sort (765) + : : +- Exchange (764) + : : +- Project (763) + : : +- SortMergeJoin Inner (762) + : : :- Sort (689) + : : : +- Exchange (688) + : : : +- Filter (687) + : : : +- Scan parquet (686) + : : +- Sort (761) + : : +- Exchange (760) + : : +- SortMergeJoin LeftSemi (759) + : : :- Sort (737) + : : : +- Exchange (736) + : : : +- HashAggregate (735) + : : : +- Exchange (734) + : : : +- HashAggregate (733) + : : : +- Project (732) + : : : +- SortMergeJoin Inner (731) + : : : :- Sort (725) + : : : : +- Exchange (724) + : : : : +- Project (723) + : : : : +- SortMergeJoin Inner (722) + : : : : :- Sort (693) + : : : : : +- Exchange (692) + : : : : : +- Filter (691) + : : : : : +- Scan parquet (690) + : : : : +- Sort (721) + : : : : +- Exchange (720) + : : : : +- SortMergeJoin LeftSemi (719) + : : : : :- Sort (697) + : : : : : +- Exchange (696) + : : : : : +- Filter (695) + : : : : : +- Scan parquet (694) + : : : : +- Sort (718) + : : : : +- Exchange (717) + : : : : +- Project (716) + : : : : +- SortMergeJoin Inner (715) + : : : : :- Sort (709) + : : : : : +- Exchange (708) + : : : : : +- Project (707) + : : : : : +- SortMergeJoin Inner (706) + : : : : : :- Sort (701) + : : : : : : +- Exchange (700) + : : : : : : +- Filter (699) + : : : : : : +- Scan parquet (698) + : : : : : +- Sort (705) + : : : : : +- Exchange (704) + : : : : : +- Filter (703) + : : : : : +- Scan parquet (702) + : : : : +- Sort (714) + : : : : +- Exchange (713) + : : : : +- Project (712) + : : : : +- Filter (711) + : : : : +- Scan parquet (710) + : : : +- Sort (730) + : : : +- Exchange (729) + : : : +- Project (728) + : : : +- Filter (727) + : : : +- Scan parquet (726) + : : +- Sort (758) + : : +- Exchange (757) + : : +- Project (756) + : : +- SortMergeJoin Inner (755) + : : :- Sort (749) + : : : +- Exchange (748) + : : : +- Project (747) + : : : +- SortMergeJoin Inner (746) + : : : :- Sort (741) + : : : : +- Exchange (740) + : : : : +- Filter (739) + : : : : +- Scan parquet (738) + : : : +- Sort (745) + : : : +- Exchange (744) + : : : +- Filter (743) + : : : +- Scan parquet (742) + : : +- Sort (754) + : : +- Exchange (753) + : : +- Project (752) + : : +- Filter (751) + : : +- Scan parquet (750) + : +- SortMergeJoin LeftSemi (851) + : :- Sort (770) + : : +- Exchange (769) + : : +- Filter (768) + : : +- Scan parquet (767) + : +- Sort (850) + : +- Exchange (849) + : +- Project (848) + : +- SortMergeJoin Inner (847) + : :- Sort (774) + : : +- Exchange (773) + : : +- Filter (772) + : : +- Scan parquet (771) + : +- Sort (846) + : +- Exchange (845) + : +- SortMergeJoin LeftSemi (844) + : :- Sort (822) + : : +- Exchange (821) + : : +- HashAggregate (820) + : : +- Exchange (819) + : : +- HashAggregate (818) + : : +- Project (817) + : : +- SortMergeJoin Inner (816) + : : :- Sort (810) + : : : +- Exchange (809) + : : : +- Project (808) + : : : +- SortMergeJoin Inner (807) + : : : :- Sort (778) + : : : : +- Exchange (777) + : : : : +- Filter (776) + : : : : +- Scan parquet (775) + : : : +- Sort (806) + : : : +- Exchange (805) + : : : +- SortMergeJoin LeftSemi (804) + : : : :- Sort (782) + : : : : +- Exchange (781) + : : : : +- Filter (780) + : : : : +- Scan parquet (779) + : : : +- Sort (803) + : : : +- Exchange (802) + : : : +- Project (801) + : : : +- SortMergeJoin Inner (800) + : : : :- Sort (794) + : : : : +- Exchange (793) + : : : : +- Project (792) + : : : : +- SortMergeJoin Inner (791) + : : : : :- Sort (786) + : : : : : +- Exchange (785) + : : : : : +- Filter (784) + : : : : : +- Scan parquet (783) + : : : : +- Sort (790) + : : : : +- Exchange (789) + : : : : +- Filter (788) + : : : : +- Scan parquet (787) + : : : +- Sort (799) + : : : +- Exchange (798) + : : : +- Project (797) + : : : +- Filter (796) + : : : +- Scan parquet (795) + : : +- Sort (815) + : : +- Exchange (814) + : : +- Project (813) + : : +- Filter (812) + : : +- Scan parquet (811) + : +- Sort (843) + : +- Exchange (842) + : +- Project (841) + : +- SortMergeJoin Inner (840) + : :- Sort (834) + : : +- Exchange (833) + : : +- Project (832) + : : +- SortMergeJoin Inner (831) + : : :- Sort (826) + : : : +- Exchange (825) + : : : +- Filter (824) + : : : +- Scan parquet (823) + : : +- Sort (830) + : : +- Exchange (829) + : : +- Filter (828) + : : +- Scan parquet (827) + : +- Sort (839) + : +- Exchange (838) + : +- Project (837) + : +- Filter (836) + : +- Scan parquet (835) + +- Sort (860) + +- Exchange (859) + +- Project (858) + +- Filter (857) + +- Scan parquet (856) + + +(310) Scan parquet +Output [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_quantity#3, ss_list_price#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_quantity#3, ss_list_price#4] +Arguments: [#1, #2, #3, #4] + +(3) NativeFilter +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Condition : (isnotnull(ss_item_sk#2) AND isnotnull(ss_sold_date_sk#1)) + +(4) NativeShuffleExchange +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: X + +(6) AQEShuffleRead +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: coalesced + +(7) InputAdapter +Input [4]: [#1#1, #2#2, #3#3, #4#4] + +(8) NativeSort +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false + +(314) Scan parquet +Output [4]: [i_item_sk#5, i_brand_id#6, i_class_id#7, i_category_id#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id)] +ReadSchema: struct + +(10) InputAdapter +Input [4]: [i_item_sk#5, i_brand_id#6, i_class_id#7, i_category_id#8] +Arguments: [#5, #6, #7, #8] + +(11) NativeFilter +Input [4]: [#5#5, #6#6, #7#7, #8#8] +Condition : ((isnotnull(i_brand_id#6) AND isnotnull(i_class_id#7)) AND isnotnull(i_category_id#8)) + +(12) NativeShuffleExchange +Input [4]: [#5#5, #6#6, #7#7, #8#8] +Arguments: hashpartitioning(i_brand_id#6, i_class_id#7, i_category_id#8, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [4]: [#5#5, #6#6, #7#7, #8#8] +Arguments: X + +(14) AQEShuffleRead +Input [4]: [#5#5, #6#6, #7#7, #8#8] +Arguments: coalesced + +(15) InputAdapter +Input [4]: [#5#5, #6#6, #7#7, #8#8] + +(16) NativeSort +Input [4]: [#5#5, #6#6, #7#7, #8#8] +Arguments: [i_brand_id#6 ASC NULLS FIRST, i_class_id#7 ASC NULLS FIRST, i_category_id#8 ASC NULLS FIRST], false + +(318) Scan parquet +Output [2]: [ss_sold_date_sk#9, ss_item_sk#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(18) InputAdapter +Input [2]: [ss_sold_date_sk#9, ss_item_sk#10] +Arguments: [#9, #10] + +(19) NativeFilter +Input [2]: [#9#9, #10#10] +Condition : (isnotnull(ss_item_sk#10) AND isnotnull(ss_sold_date_sk#9)) + +(20) NativeShuffleExchange +Input [2]: [#9#9, #10#10] +Arguments: hashpartitioning(ss_item_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [2]: [#9#9, #10#10] +Arguments: X + +(22) AQEShuffleRead +Input [2]: [#9#9, #10#10] +Arguments: coalesced + +(23) InputAdapter +Input [2]: [#9#9, #10#10] + +(24) NativeSort +Input [2]: [#9#9, #10#10] +Arguments: [ss_item_sk#10 ASC NULLS FIRST], false + +(322) Scan parquet +Output [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id)] +ReadSchema: struct + +(26) InputAdapter +Input [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: [#11, #12, #13, #14] + +(27) NativeFilter +Input [4]: [#11#11, #12#12, #13#13, #14#14] +Condition : (((isnotnull(i_item_sk#11) AND isnotnull(i_brand_id#12)) AND isnotnull(i_class_id#13)) AND isnotnull(i_category_id#14)) + +(28) NativeShuffleExchange +Input [4]: [#11#11, #12#12, #13#13, #14#14] +Arguments: hashpartitioning(coalesce(i_brand_id#12, 0), isnull(i_brand_id#12), coalesce(i_class_id#13, 0), isnull(i_class_id#13), coalesce(i_category_id#14, 0), isnull(i_category_id#14), 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(29) ShuffleQueryStage +Output [4]: [#11#11, #12#12, #13#13, #14#14] +Arguments: X + +(30) AQEShuffleRead +Input [4]: [#11#11, #12#12, #13#13, #14#14] +Arguments: coalesced + +(31) InputAdapter +Input [4]: [#11#11, #12#12, #13#13, #14#14] + +(32) NativeSort +Input [4]: [#11#11, #12#12, #13#13, #14#14] +Arguments: [coalesce(i_brand_id#12, 0) ASC NULLS FIRST, isnull(i_brand_id#12) ASC NULLS FIRST, coalesce(i_class_id#13, 0) ASC NULLS FIRST, isnull(i_class_id#13) ASC NULLS FIRST, coalesce(i_category_id#14, 0) ASC NULLS FIRST, isnull(i_category_id#14) ASC NULLS FIRST], false + +(326) Scan parquet +Output [2]: [cs_sold_date_sk#15, cs_item_sk#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(34) InputAdapter +Input [2]: [cs_sold_date_sk#15, cs_item_sk#16] +Arguments: [#15, #16] + +(35) NativeFilter +Input [2]: [#15#15, #16#16] +Condition : (isnotnull(cs_item_sk#16) AND isnotnull(cs_sold_date_sk#15)) + +(36) NativeShuffleExchange +Input [2]: [#15#15, #16#16] +Arguments: hashpartitioning(cs_item_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [2]: [#15#15, #16#16] +Arguments: X + +(38) AQEShuffleRead +Input [2]: [#15#15, #16#16] +Arguments: coalesced + +(39) InputAdapter +Input [2]: [#15#15, #16#16] + +(40) NativeSort +Input [2]: [#15#15, #16#16] +Arguments: [cs_item_sk#16 ASC NULLS FIRST], false + +(330) Scan parquet +Output [4]: [i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(42) InputAdapter +Input [4]: [i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: [#17, #18, #19, #20] + +(43) NativeFilter +Input [4]: [#17#17, #18#18, #19#19, #20#20] +Condition : isnotnull(i_item_sk#17) + +(44) NativeShuffleExchange +Input [4]: [#17#17, #18#18, #19#19, #20#20] +Arguments: hashpartitioning(i_item_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(45) ShuffleQueryStage +Output [4]: [#17#17, #18#18, #19#19, #20#20] +Arguments: X + +(46) AQEShuffleRead +Input [4]: [#17#17, #18#18, #19#19, #20#20] +Arguments: coalesced + +(47) InputAdapter +Input [4]: [#17#17, #18#18, #19#19, #20#20] + +(48) NativeSort +Input [4]: [#17#17, #18#18, #19#19, #20#20] +Arguments: [i_item_sk#17 ASC NULLS FIRST], false + +(49) NativeSortMergeJoin +Left keys [1]: [cs_item_sk#16] +Right keys [1]: [i_item_sk#17] +Join type: Inner +Join condition: None + +(50) NativeProject +Output [4]: [cs_sold_date_sk#15, i_brand_id#18, i_class_id#19, i_category_id#20] +Input [6]: [#15#15, #16#16, #17#17, #18#18, #19#19, #20#20] + +(51) NativeShuffleExchange +Input [4]: [cs_sold_date_sk#15, i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: hashpartitioning(cs_sold_date_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(52) ShuffleQueryStage +Output [4]: [cs_sold_date_sk#15, i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: X + +(53) AQEShuffleRead +Input [4]: [cs_sold_date_sk#15, i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: coalesced + +(54) InputAdapter +Input [4]: [cs_sold_date_sk#15, i_brand_id#18, i_class_id#19, i_category_id#20] + +(55) NativeSort +Input [4]: [cs_sold_date_sk#15, i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: [cs_sold_date_sk#15 ASC NULLS FIRST], false + +(338) Scan parquet +Output [2]: [d_date_sk#21, d_year#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(57) InputAdapter +Input [2]: [d_date_sk#21, d_year#22] +Arguments: [#21, #22] + +(58) NativeFilter +Input [2]: [#21#21, #22#22] +Condition : (((isnotnull(d_year#22) AND (d_year#22 >= 1999)) AND (d_year#22 <= 2001)) AND isnotnull(d_date_sk#21)) + +(59) NativeProject +Output [1]: [d_date_sk#21] +Input [2]: [#21#21, #22#22] + +(60) NativeShuffleExchange +Input [1]: [d_date_sk#21] +Arguments: hashpartitioning(d_date_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(61) ShuffleQueryStage +Output [1]: [d_date_sk#21] +Arguments: X + +(62) AQEShuffleRead +Input [1]: [d_date_sk#21] +Arguments: coalesced + +(63) InputAdapter +Input [1]: [d_date_sk#21] + +(64) NativeSort +Input [1]: [d_date_sk#21] +Arguments: [d_date_sk#21 ASC NULLS FIRST], false + +(65) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#15] +Right keys [1]: [d_date_sk#21] +Join type: Inner +Join condition: None + +(66) NativeProject +Output [3]: [i_brand_id#18, i_class_id#19, i_category_id#20] +Input [5]: [cs_sold_date_sk#15, i_brand_id#18, i_class_id#19, i_category_id#20, d_date_sk#21] + +(67) NativeShuffleExchange +Input [3]: [i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: hashpartitioning(coalesce(i_brand_id#18, 0), isnull(i_brand_id#18), coalesce(i_class_id#19, 0), isnull(i_class_id#19), coalesce(i_category_id#20, 0), isnull(i_category_id#20), 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(68) ShuffleQueryStage +Output [3]: [i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: X + +(69) AQEShuffleRead +Input [3]: [i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: coalesced + +(70) InputAdapter +Input [3]: [i_brand_id#18, i_class_id#19, i_category_id#20] + +(71) NativeSort +Input [3]: [i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: [coalesce(i_brand_id#18, 0) ASC NULLS FIRST, isnull(i_brand_id#18) ASC NULLS FIRST, coalesce(i_class_id#19, 0) ASC NULLS FIRST, isnull(i_class_id#19) ASC NULLS FIRST, coalesce(i_category_id#20, 0) ASC NULLS FIRST, isnull(i_category_id#20) ASC NULLS FIRST], false + +(72) NativeSortMergeJoin +Left keys [6]: [coalesce(i_brand_id#12, 0), isnull(i_brand_id#12), coalesce(i_class_id#13, 0), isnull(i_class_id#13), coalesce(i_category_id#14, 0), isnull(i_category_id#14)] +Right keys [6]: [coalesce(i_brand_id#18, 0), isnull(i_brand_id#18), coalesce(i_class_id#19, 0), isnull(i_class_id#19), coalesce(i_category_id#20, 0), isnull(i_category_id#20)] +Join type: LeftSemi +Join condition: None + +(73) NativeShuffleExchange +Input [4]: [#11#11, #12#12, #13#13, #14#14] +Arguments: hashpartitioning(i_item_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(74) ShuffleQueryStage +Output [4]: [#11#11, #12#12, #13#13, #14#14] +Arguments: X + +(75) AQEShuffleRead +Input [4]: [#11#11, #12#12, #13#13, #14#14] +Arguments: coalesced + +(76) InputAdapter +Input [4]: [#11#11, #12#12, #13#13, #14#14] + +(77) NativeSort +Input [4]: [#11#11, #12#12, #13#13, #14#14] +Arguments: [i_item_sk#11 ASC NULLS FIRST], false + +(78) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#10] +Right keys [1]: [i_item_sk#11] +Join type: Inner +Join condition: None + +(79) NativeProject +Output [4]: [ss_sold_date_sk#9, i_brand_id#12, i_class_id#13, i_category_id#14] +Input [6]: [#9#9, #10#10, #11#11, #12#12, #13#13, #14#14] + +(80) NativeShuffleExchange +Input [4]: [ss_sold_date_sk#9, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: hashpartitioning(ss_sold_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(81) ShuffleQueryStage +Output [4]: [ss_sold_date_sk#9, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: X + +(82) AQEShuffleRead +Input [4]: [ss_sold_date_sk#9, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: coalesced + +(83) InputAdapter +Input [4]: [ss_sold_date_sk#9, i_brand_id#12, i_class_id#13, i_category_id#14] + +(84) NativeSort +Input [4]: [ss_sold_date_sk#9, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: [ss_sold_date_sk#9 ASC NULLS FIRST], false + +(85) ReusedExchange [Reuses operator id: 60] +Output [1]: [d_date_sk#23] + +(86) ShuffleQueryStage +Output [1]: [d_date_sk#23] +Arguments: X + +(87) AQEShuffleRead +Input [1]: [d_date_sk#23] +Arguments: coalesced + +(88) InputAdapter +Input [1]: [d_date_sk#23] +Arguments: [#23] + +(89) InputAdapter +Input [1]: [#23#23] + +(90) NativeSort +Input [1]: [#23#23] +Arguments: [d_date_sk#23 ASC NULLS FIRST], false + +(91) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#9] +Right keys [1]: [d_date_sk#23] +Join type: Inner +Join condition: None + +(92) NativeProject +Output [3]: [i_brand_id#12 AS brand_id#24, i_class_id#13 AS class_id#25, i_category_id#14 AS category_id#26] +Input [5]: [ss_sold_date_sk#9, i_brand_id#12, i_class_id#13, i_category_id#14, #23#23] + +(93) NativeHashAggregate +Input [3]: [brand_id#24, class_id#25, category_id#26] +Keys [3]: [brand_id#24, class_id#25, category_id#26] +Functions: [] +Aggregate Attributes: [] +Results [4]: [brand_id#24, class_id#25, category_id#26, #27#27] + +(94) NativeShuffleExchange +Input [4]: [brand_id#24, class_id#25, category_id#26, #27#27] +Arguments: hashpartitioning(brand_id#24, class_id#25, category_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(95) ShuffleQueryStage +Output [4]: [brand_id#24, class_id#25, category_id#26, #27#27] +Arguments: X + +(96) AQEShuffleRead +Input [4]: [brand_id#24, class_id#25, category_id#26, #27#27] +Arguments: coalesced + +(97) InputAdapter +Input [4]: [brand_id#24, class_id#25, category_id#26, #27#27] + +(98) NativeHashAggregate +Input [4]: [brand_id#24, class_id#25, category_id#26, #27#27] +Keys [3]: [brand_id#24, class_id#25, category_id#26] +Functions: [] +Aggregate Attributes: [] +Results [4]: [brand_id#24, class_id#25, category_id#26, #27#27] + +(99) NativeProject +Output [3]: [brand_id#24, class_id#25, category_id#26] +Input [4]: [brand_id#24, class_id#25, category_id#26, #27#27] + +(100) NativeShuffleExchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(coalesce(brand_id#24, 0), isnull(brand_id#24), coalesce(class_id#25, 0), isnull(class_id#25), coalesce(category_id#26, 0), isnull(category_id#26), 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(101) ShuffleQueryStage +Output [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: X + +(102) AQEShuffleRead +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: coalesced + +(103) InputAdapter +Input [3]: [brand_id#24, class_id#25, category_id#26] + +(104) NativeSort +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: [coalesce(brand_id#24, 0) ASC NULLS FIRST, isnull(brand_id#24) ASC NULLS FIRST, coalesce(class_id#25, 0) ASC NULLS FIRST, isnull(class_id#25) ASC NULLS FIRST, coalesce(category_id#26, 0) ASC NULLS FIRST, isnull(category_id#26) ASC NULLS FIRST], false + +(366) Scan parquet +Output [2]: [ws_sold_date_sk#28, ws_item_sk#29] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(106) InputAdapter +Input [2]: [ws_sold_date_sk#28, ws_item_sk#29] +Arguments: [#28, #29] + +(107) NativeFilter +Input [2]: [#28#28, #29#29] +Condition : (isnotnull(ws_item_sk#29) AND isnotnull(ws_sold_date_sk#28)) + +(108) NativeShuffleExchange +Input [2]: [#28#28, #29#29] +Arguments: hashpartitioning(ws_item_sk#29, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(109) ShuffleQueryStage +Output [2]: [#28#28, #29#29] +Arguments: X + +(110) AQEShuffleRead +Input [2]: [#28#28, #29#29] +Arguments: coalesced + +(111) InputAdapter +Input [2]: [#28#28, #29#29] + +(112) NativeSort +Input [2]: [#28#28, #29#29] +Arguments: [ws_item_sk#29 ASC NULLS FIRST], false + +(113) ReusedExchange [Reuses operator id: 44] +Output [4]: [i_item_sk#30, i_brand_id#31, i_class_id#32, i_category_id#33] + +(114) ShuffleQueryStage +Output [4]: [i_item_sk#30, i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: X + +(115) AQEShuffleRead +Input [4]: [i_item_sk#30, i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: coalesced + +(116) InputAdapter +Input [4]: [i_item_sk#30, i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: [#30, #31, #32, #33] + +(117) InputAdapter +Input [4]: [#30#30, #31#31, #32#32, #33#33] + +(118) NativeSort +Input [4]: [#30#30, #31#31, #32#32, #33#33] +Arguments: [i_item_sk#30 ASC NULLS FIRST], false + +(119) NativeSortMergeJoin +Left keys [1]: [ws_item_sk#29] +Right keys [1]: [i_item_sk#30] +Join type: Inner +Join condition: None + +(120) NativeProject +Output [4]: [ws_sold_date_sk#28, i_brand_id#31, i_class_id#32, i_category_id#33] +Input [6]: [#28#28, #29#29, #30#30, #31#31, #32#32, #33#33] + +(121) NativeShuffleExchange +Input [4]: [ws_sold_date_sk#28, i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: hashpartitioning(ws_sold_date_sk#28, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(122) ShuffleQueryStage +Output [4]: [ws_sold_date_sk#28, i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: X + +(123) AQEShuffleRead +Input [4]: [ws_sold_date_sk#28, i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: coalesced + +(124) InputAdapter +Input [4]: [ws_sold_date_sk#28, i_brand_id#31, i_class_id#32, i_category_id#33] + +(125) NativeSort +Input [4]: [ws_sold_date_sk#28, i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: [ws_sold_date_sk#28 ASC NULLS FIRST], false + +(126) ReusedExchange [Reuses operator id: 60] +Output [1]: [d_date_sk#34] + +(127) ShuffleQueryStage +Output [1]: [d_date_sk#34] +Arguments: X + +(128) AQEShuffleRead +Input [1]: [d_date_sk#34] +Arguments: coalesced + +(129) InputAdapter +Input [1]: [d_date_sk#34] +Arguments: [#34] + +(130) InputAdapter +Input [1]: [#34#34] + +(131) NativeSort +Input [1]: [#34#34] +Arguments: [d_date_sk#34 ASC NULLS FIRST], false + +(132) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#28] +Right keys [1]: [d_date_sk#34] +Join type: Inner +Join condition: None + +(133) NativeProject +Output [3]: [i_brand_id#31, i_class_id#32, i_category_id#33] +Input [5]: [ws_sold_date_sk#28, i_brand_id#31, i_class_id#32, i_category_id#33, #34#34] + +(134) NativeShuffleExchange +Input [3]: [i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: hashpartitioning(coalesce(i_brand_id#31, 0), isnull(i_brand_id#31), coalesce(i_class_id#32, 0), isnull(i_class_id#32), coalesce(i_category_id#33, 0), isnull(i_category_id#33), 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(135) ShuffleQueryStage +Output [3]: [i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: X + +(136) AQEShuffleRead +Input [3]: [i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: coalesced + +(137) InputAdapter +Input [3]: [i_brand_id#31, i_class_id#32, i_category_id#33] + +(138) NativeSort +Input [3]: [i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: [coalesce(i_brand_id#31, 0) ASC NULLS FIRST, isnull(i_brand_id#31) ASC NULLS FIRST, coalesce(i_class_id#32, 0) ASC NULLS FIRST, isnull(i_class_id#32) ASC NULLS FIRST, coalesce(i_category_id#33, 0) ASC NULLS FIRST, isnull(i_category_id#33) ASC NULLS FIRST], false + +(139) NativeSortMergeJoin +Left keys [6]: [coalesce(brand_id#24, 0), isnull(brand_id#24), coalesce(class_id#25, 0), isnull(class_id#25), coalesce(category_id#26, 0), isnull(category_id#26)] +Right keys [6]: [coalesce(i_brand_id#31, 0), isnull(i_brand_id#31), coalesce(i_class_id#32, 0), isnull(i_class_id#32), coalesce(i_category_id#33, 0), isnull(i_category_id#33)] +Join type: LeftSemi +Join condition: None + +(140) NativeShuffleExchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(brand_id#24, class_id#25, category_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(141) ShuffleQueryStage +Output [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: X + +(142) AQEShuffleRead +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: coalesced + +(143) InputAdapter +Input [3]: [brand_id#24, class_id#25, category_id#26] + +(144) NativeSort +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: [brand_id#24 ASC NULLS FIRST, class_id#25 ASC NULLS FIRST, category_id#26 ASC NULLS FIRST], false + +(145) NativeSortMergeJoin +Left keys [3]: [i_brand_id#6, i_class_id#7, i_category_id#8] +Right keys [3]: [brand_id#24, class_id#25, category_id#26] +Join type: Inner +Join condition: None + +(146) NativeProject +Output [1]: [i_item_sk#5 AS ss_item_sk#35] +Input [7]: [#5#5, #6#6, #7#7, #8#8, brand_id#24, class_id#25, category_id#26] + +(147) NativeShuffleExchange +Input [1]: [ss_item_sk#35] +Arguments: hashpartitioning(ss_item_sk#35, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(148) ShuffleQueryStage +Output [1]: [ss_item_sk#35] +Arguments: X + +(149) AQEShuffleRead +Input [1]: [ss_item_sk#35] +Arguments: coalesced + +(150) InputAdapter +Input [1]: [ss_item_sk#35] + +(151) NativeSort +Input [1]: [ss_item_sk#35] +Arguments: [ss_item_sk#35 ASC NULLS FIRST], false + +(152) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [ss_item_sk#35] +Join type: LeftSemi +Join condition: None + +(153) ReusedExchange [Reuses operator id: 44] +Output [4]: [i_item_sk#36, i_brand_id#37, i_class_id#38, i_category_id#39] + +(154) ShuffleQueryStage +Output [4]: [i_item_sk#36, i_brand_id#37, i_class_id#38, i_category_id#39] +Arguments: X + +(155) AQEShuffleRead +Input [4]: [i_item_sk#36, i_brand_id#37, i_class_id#38, i_category_id#39] +Arguments: coalesced + +(156) InputAdapter +Input [4]: [i_item_sk#36, i_brand_id#37, i_class_id#38, i_category_id#39] +Arguments: [#36, #37, #38, #39] + +(157) InputAdapter +Input [4]: [#36#36, #37#37, #38#38, #39#39] + +(158) NativeSort +Input [4]: [#36#36, #37#37, #38#38, #39#39] +Arguments: [i_item_sk#36 ASC NULLS FIRST], false + +(159) ReusedExchange [Reuses operator id: 147] +Output [1]: [ss_item_sk#35] + +(160) ShuffleQueryStage +Output [1]: [ss_item_sk#35] +Arguments: X + +(161) AQEShuffleRead +Input [1]: [ss_item_sk#35] +Arguments: coalesced + +(162) InputAdapter +Input [1]: [ss_item_sk#35] + +(163) NativeSort +Input [1]: [ss_item_sk#35] +Arguments: [ss_item_sk#35 ASC NULLS FIRST], false + +(164) NativeSortMergeJoin +Left keys [1]: [i_item_sk#36] +Right keys [1]: [ss_item_sk#35] +Join type: LeftSemi +Join condition: None + +(165) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#36] +Join type: Inner +Join condition: None + +(166) NativeProject +Output [6]: [ss_sold_date_sk#1, ss_quantity#3, ss_list_price#4, i_brand_id#37, i_class_id#38, i_category_id#39] +Input [8]: [#1#1, #2#2, #3#3, #4#4, #36#36, #37#37, #38#38, #39#39] + +(167) NativeShuffleExchange +Input [6]: [ss_sold_date_sk#1, ss_quantity#3, ss_list_price#4, i_brand_id#37, i_class_id#38, i_category_id#39] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(168) ShuffleQueryStage +Output [6]: [ss_sold_date_sk#1, ss_quantity#3, ss_list_price#4, i_brand_id#37, i_class_id#38, i_category_id#39] +Arguments: X + +(169) AQEShuffleRead +Input [6]: [ss_sold_date_sk#1, ss_quantity#3, ss_list_price#4, i_brand_id#37, i_class_id#38, i_category_id#39] +Arguments: coalesced + +(170) InputAdapter +Input [6]: [ss_sold_date_sk#1, ss_quantity#3, ss_list_price#4, i_brand_id#37, i_class_id#38, i_category_id#39] + +(171) NativeSort +Input [6]: [ss_sold_date_sk#1, ss_quantity#3, ss_list_price#4, i_brand_id#37, i_class_id#38, i_category_id#39] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(484) Scan parquet +Output [3]: [d_date_sk#40, d_year#41, d_moy#42] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), EqualTo(d_moy,11), IsNotNull(d_date_sk)] +ReadSchema: struct + +(173) InputAdapter +Input [3]: [d_date_sk#40, d_year#41, d_moy#42] +Arguments: [#40, #41, #42] + +(174) NativeFilter +Input [3]: [#40#40, #41#41, #42#42] +Condition : ((((isnotnull(d_year#41) AND isnotnull(d_moy#42)) AND (d_year#41 = 2001)) AND (d_moy#42 = 11)) AND isnotnull(d_date_sk#40)) + +(175) NativeProject +Output [1]: [d_date_sk#40] +Input [3]: [#40#40, #41#41, #42#42] + +(176) NativeShuffleExchange +Input [1]: [d_date_sk#40] +Arguments: hashpartitioning(d_date_sk#40, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(177) ShuffleQueryStage +Output [1]: [d_date_sk#40] +Arguments: X + +(178) AQEShuffleRead +Input [1]: [d_date_sk#40] +Arguments: coalesced + +(179) InputAdapter +Input [1]: [d_date_sk#40] + +(180) NativeSort +Input [1]: [d_date_sk#40] +Arguments: [d_date_sk#40 ASC NULLS FIRST], false + +(181) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#40] +Join type: Inner +Join condition: None + +(182) NativeProject +Output [5]: [ss_quantity#3, ss_list_price#4, i_brand_id#37, i_class_id#38, i_category_id#39] +Input [7]: [ss_sold_date_sk#1, ss_quantity#3, ss_list_price#4, i_brand_id#37, i_class_id#38, i_category_id#39, d_date_sk#40] + +(183) NativeProject +Output [4]: [i_brand_id#37 AS i_brand_id#37, i_class_id#38 AS i_class_id#38, i_category_id#39 AS i_category_id#39, (cast(ss_quantity#3 as decimal(10,0)) * ss_list_price#4) AS _c3#43] +Input [5]: [ss_quantity#3, ss_list_price#4, i_brand_id#37, i_class_id#38, i_category_id#39] + +(184) NativeHashAggregate +Input [4]: [i_brand_id#37, i_class_id#38, i_category_id#39, _c3#43] +Keys [3]: [i_brand_id#37, i_class_id#38, i_category_id#39] +Functions [2]: [partial_sum(_c3#43), partial_count(1)] +Aggregate Attributes [3]: [sum#44, isEmpty#45, count#46] +Results [4]: [i_brand_id#37, i_class_id#38, i_category_id#39, #27#27] + +(185) NativeShuffleExchange +Input [4]: [i_brand_id#37, i_class_id#38, i_category_id#39, #27#27] +Arguments: hashpartitioning(i_brand_id#37, i_class_id#38, i_category_id#39, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(186) ShuffleQueryStage +Output [4]: [i_brand_id#37, i_class_id#38, i_category_id#39, #27#27] +Arguments: X + +(187) AQEShuffleRead +Input [4]: [i_brand_id#37, i_class_id#38, i_category_id#39, #27#27] +Arguments: coalesced + +(188) InputAdapter +Input [4]: [i_brand_id#37, i_class_id#38, i_category_id#39, #27#27] + +(189) NativeHashAggregate +Input [4]: [i_brand_id#37, i_class_id#38, i_category_id#39, #27#27] +Keys [3]: [i_brand_id#37, i_class_id#38, i_category_id#39] +Functions [2]: [sum((cast(ss_quantity#3 as decimal(10,0)) * ss_list_price#4)), count(1)] +Aggregate Attributes [2]: [sum((cast(ss_quantity#3 as decimal(10,0)) * ss_list_price#4))#47, count(1)#48] +Results [5]: [i_brand_id#37, i_class_id#38, i_category_id#39, sum((cast(ss_quantity#3 as decimal(10,0)) * ss_list_price#4))#47, count(1)#48] + +(190) NativeProject +Output [5]: [i_brand_id#37, i_class_id#38, i_category_id#39, sum((cast(ss_quantity#3 as decimal(10,0)) * ss_list_price#4))#47 AS sales#49, count(1)#48 AS number_sales#50] +Input [5]: [i_brand_id#37, i_class_id#38, i_category_id#39, sum((cast(ss_quantity#3 as decimal(10,0)) * ss_list_price#4))#47, count(1)#48] + +(191) NativeFilter +Input [5]: [i_brand_id#37, i_class_id#38, i_category_id#39, sales#49, number_sales#50] +Condition : (isnotnull(sales#49) AND (cast(sales#49 as decimal(32,6)) > cast(Subquery subquery#51, [id=#52] as decimal(32,6)))) + +(192) NativeProject +Output [6]: [sales#49, number_sales#50, store AS channel#53, i_brand_id#37 AS i_brand_id#54, i_class_id#38 AS i_class_id#55, i_category_id#39 AS i_category_id#56] +Input [5]: [i_brand_id#37, i_class_id#38, i_category_id#39, sales#49, number_sales#50] + +(496) Scan parquet +Output [4]: [cs_sold_date_sk#57, cs_item_sk#58, cs_quantity#59, cs_list_price#60] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(194) InputAdapter +Input [4]: [cs_sold_date_sk#57, cs_item_sk#58, cs_quantity#59, cs_list_price#60] +Arguments: [#57, #58, #59, #60] + +(195) NativeFilter +Input [4]: [#57#57, #58#58, #59#59, #60#60] +Condition : (isnotnull(cs_item_sk#58) AND isnotnull(cs_sold_date_sk#57)) + +(196) NativeShuffleExchange +Input [4]: [#57#57, #58#58, #59#59, #60#60] +Arguments: hashpartitioning(cs_item_sk#58, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(197) ShuffleQueryStage +Output [4]: [#57#57, #58#58, #59#59, #60#60] +Arguments: X + +(198) AQEShuffleRead +Input [4]: [#57#57, #58#58, #59#59, #60#60] +Arguments: coalesced + +(199) InputAdapter +Input [4]: [#57#57, #58#58, #59#59, #60#60] + +(200) NativeSort +Input [4]: [#57#57, #58#58, #59#59, #60#60] +Arguments: [cs_item_sk#58 ASC NULLS FIRST], false + +(201) ReusedExchange [Reuses operator id: 147] +Output [1]: [ss_item_sk#61] + +(202) ShuffleQueryStage +Output [1]: [ss_item_sk#61] +Arguments: X + +(203) AQEShuffleRead +Input [1]: [ss_item_sk#61] +Arguments: coalesced + +(204) InputAdapter +Input [1]: [ss_item_sk#61] +Arguments: [#61] + +(205) InputAdapter +Input [1]: [#61#61] + +(206) NativeSort +Input [1]: [#61#61] +Arguments: [ss_item_sk#61 ASC NULLS FIRST], false + +(207) NativeSortMergeJoin +Left keys [1]: [cs_item_sk#58] +Right keys [1]: [ss_item_sk#61] +Join type: LeftSemi +Join condition: None + +(208) ReusedExchange [Reuses operator id: 44] +Output [4]: [i_item_sk#62, i_brand_id#63, i_class_id#64, i_category_id#65] + +(209) ShuffleQueryStage +Output [4]: [i_item_sk#62, i_brand_id#63, i_class_id#64, i_category_id#65] +Arguments: X + +(210) AQEShuffleRead +Input [4]: [i_item_sk#62, i_brand_id#63, i_class_id#64, i_category_id#65] +Arguments: coalesced + +(211) InputAdapter +Input [4]: [i_item_sk#62, i_brand_id#63, i_class_id#64, i_category_id#65] +Arguments: [#62, #63, #64, #65] + +(212) InputAdapter +Input [4]: [#62#62, #63#63, #64#64, #65#65] + +(213) NativeSort +Input [4]: [#62#62, #63#63, #64#64, #65#65] +Arguments: [i_item_sk#62 ASC NULLS FIRST], false + +(214) ReusedExchange [Reuses operator id: 147] +Output [1]: [ss_item_sk#61] + +(215) ShuffleQueryStage +Output [1]: [ss_item_sk#61] +Arguments: X + +(216) AQEShuffleRead +Input [1]: [ss_item_sk#61] +Arguments: coalesced + +(217) InputAdapter +Input [1]: [ss_item_sk#61] +Arguments: [#61] + +(218) InputAdapter +Input [1]: [#61#61] + +(219) NativeSort +Input [1]: [#61#61] +Arguments: [ss_item_sk#61 ASC NULLS FIRST], false + +(220) NativeSortMergeJoin +Left keys [1]: [i_item_sk#62] +Right keys [1]: [ss_item_sk#61] +Join type: LeftSemi +Join condition: None + +(221) NativeSortMergeJoin +Left keys [1]: [cs_item_sk#58] +Right keys [1]: [i_item_sk#62] +Join type: Inner +Join condition: None + +(222) NativeProject +Output [6]: [cs_sold_date_sk#57, cs_quantity#59, cs_list_price#60, i_brand_id#63, i_class_id#64, i_category_id#65] +Input [8]: [#57#57, #58#58, #59#59, #60#60, #62#62, #63#63, #64#64, #65#65] + +(223) NativeShuffleExchange +Input [6]: [cs_sold_date_sk#57, cs_quantity#59, cs_list_price#60, i_brand_id#63, i_class_id#64, i_category_id#65] +Arguments: hashpartitioning(cs_sold_date_sk#57, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(224) ShuffleQueryStage +Output [6]: [cs_sold_date_sk#57, cs_quantity#59, cs_list_price#60, i_brand_id#63, i_class_id#64, i_category_id#65] +Arguments: X + +(225) AQEShuffleRead +Input [6]: [cs_sold_date_sk#57, cs_quantity#59, cs_list_price#60, i_brand_id#63, i_class_id#64, i_category_id#65] +Arguments: coalesced + +(226) InputAdapter +Input [6]: [cs_sold_date_sk#57, cs_quantity#59, cs_list_price#60, i_brand_id#63, i_class_id#64, i_category_id#65] + +(227) NativeSort +Input [6]: [cs_sold_date_sk#57, cs_quantity#59, cs_list_price#60, i_brand_id#63, i_class_id#64, i_category_id#65] +Arguments: [cs_sold_date_sk#57 ASC NULLS FIRST], false + +(228) ReusedExchange [Reuses operator id: 176] +Output [1]: [d_date_sk#66] + +(229) ShuffleQueryStage +Output [1]: [d_date_sk#66] +Arguments: X + +(230) AQEShuffleRead +Input [1]: [d_date_sk#66] +Arguments: coalesced + +(231) InputAdapter +Input [1]: [d_date_sk#66] +Arguments: [#66] + +(232) InputAdapter +Input [1]: [#66#66] + +(233) NativeSort +Input [1]: [#66#66] +Arguments: [d_date_sk#66 ASC NULLS FIRST], false + +(234) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#57] +Right keys [1]: [d_date_sk#66] +Join type: Inner +Join condition: None + +(235) NativeProject +Output [5]: [cs_quantity#59, cs_list_price#60, i_brand_id#63, i_class_id#64, i_category_id#65] +Input [7]: [cs_sold_date_sk#57, cs_quantity#59, cs_list_price#60, i_brand_id#63, i_class_id#64, i_category_id#65, #66#66] + +(236) NativeProject +Output [4]: [i_brand_id#63 AS i_brand_id#63, i_class_id#64 AS i_class_id#64, i_category_id#65 AS i_category_id#65, (cast(cs_quantity#59 as decimal(10,0)) * cs_list_price#60) AS _c3#67] +Input [5]: [cs_quantity#59, cs_list_price#60, i_brand_id#63, i_class_id#64, i_category_id#65] + +(237) NativeHashAggregate +Input [4]: [i_brand_id#63, i_class_id#64, i_category_id#65, _c3#67] +Keys [3]: [i_brand_id#63, i_class_id#64, i_category_id#65] +Functions [2]: [partial_sum(_c3#67), partial_count(1)] +Aggregate Attributes [3]: [sum#68, isEmpty#69, count#70] +Results [4]: [i_brand_id#63, i_class_id#64, i_category_id#65, #27#27] + +(238) NativeShuffleExchange +Input [4]: [i_brand_id#63, i_class_id#64, i_category_id#65, #27#27] +Arguments: hashpartitioning(i_brand_id#63, i_class_id#64, i_category_id#65, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(239) ShuffleQueryStage +Output [4]: [i_brand_id#63, i_class_id#64, i_category_id#65, #27#27] +Arguments: X + +(240) AQEShuffleRead +Input [4]: [i_brand_id#63, i_class_id#64, i_category_id#65, #27#27] +Arguments: coalesced + +(241) InputAdapter +Input [4]: [i_brand_id#63, i_class_id#64, i_category_id#65, #27#27] + +(242) NativeHashAggregate +Input [4]: [i_brand_id#63, i_class_id#64, i_category_id#65, #27#27] +Keys [3]: [i_brand_id#63, i_class_id#64, i_category_id#65] +Functions [2]: [sum((cast(cs_quantity#59 as decimal(10,0)) * cs_list_price#60)), count(1)] +Aggregate Attributes [2]: [sum((cast(cs_quantity#59 as decimal(10,0)) * cs_list_price#60))#71, count(1)#72] +Results [5]: [i_brand_id#63, i_class_id#64, i_category_id#65, sum((cast(cs_quantity#59 as decimal(10,0)) * cs_list_price#60))#71, count(1)#72] + +(243) NativeProject +Output [5]: [i_brand_id#63, i_class_id#64, i_category_id#65, sum((cast(cs_quantity#59 as decimal(10,0)) * cs_list_price#60))#71 AS sales#73, count(1)#72 AS number_sales#74] +Input [5]: [i_brand_id#63, i_class_id#64, i_category_id#65, sum((cast(cs_quantity#59 as decimal(10,0)) * cs_list_price#60))#71, count(1)#72] + +(244) NativeFilter +Input [5]: [i_brand_id#63, i_class_id#64, i_category_id#65, sales#73, number_sales#74] +Condition : (isnotnull(sales#73) AND (cast(sales#73 as decimal(32,6)) > cast(ReusedSubquery Subquery subquery#51, [id=#52] as decimal(32,6)))) + +(245) NativeProject +Output [6]: [sales#73, number_sales#74, catalog AS channel#75, i_brand_id#63, i_class_id#64, i_category_id#65] +Input [5]: [i_brand_id#63, i_class_id#64, i_category_id#65, sales#73, number_sales#74] + +(682) Scan parquet +Output [4]: [ws_sold_date_sk#76, ws_item_sk#77, ws_quantity#78, ws_list_price#79] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(247) InputAdapter +Input [4]: [ws_sold_date_sk#76, ws_item_sk#77, ws_quantity#78, ws_list_price#79] +Arguments: [#76, #77, #78, #79] + +(248) NativeFilter +Input [4]: [#76#76, #77#77, #78#78, #79#79] +Condition : (isnotnull(ws_item_sk#77) AND isnotnull(ws_sold_date_sk#76)) + +(249) NativeShuffleExchange +Input [4]: [#76#76, #77#77, #78#78, #79#79] +Arguments: hashpartitioning(ws_item_sk#77, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(250) ShuffleQueryStage +Output [4]: [#76#76, #77#77, #78#78, #79#79] +Arguments: X + +(251) AQEShuffleRead +Input [4]: [#76#76, #77#77, #78#78, #79#79] +Arguments: coalesced + +(252) InputAdapter +Input [4]: [#76#76, #77#77, #78#78, #79#79] + +(253) NativeSort +Input [4]: [#76#76, #77#77, #78#78, #79#79] +Arguments: [ws_item_sk#77 ASC NULLS FIRST], false + +(254) ReusedExchange [Reuses operator id: 147] +Output [1]: [ss_item_sk#80] + +(255) ShuffleQueryStage +Output [1]: [ss_item_sk#80] +Arguments: X + +(256) AQEShuffleRead +Input [1]: [ss_item_sk#80] +Arguments: coalesced + +(257) InputAdapter +Input [1]: [ss_item_sk#80] +Arguments: [#80] + +(258) InputAdapter +Input [1]: [#80#80] + +(259) NativeSort +Input [1]: [#80#80] +Arguments: [ss_item_sk#80 ASC NULLS FIRST], false + +(260) NativeSortMergeJoin +Left keys [1]: [ws_item_sk#77] +Right keys [1]: [ss_item_sk#80] +Join type: LeftSemi +Join condition: None + +(261) ReusedExchange [Reuses operator id: 44] +Output [4]: [i_item_sk#81, i_brand_id#82, i_class_id#83, i_category_id#84] + +(262) ShuffleQueryStage +Output [4]: [i_item_sk#81, i_brand_id#82, i_class_id#83, i_category_id#84] +Arguments: X + +(263) AQEShuffleRead +Input [4]: [i_item_sk#81, i_brand_id#82, i_class_id#83, i_category_id#84] +Arguments: coalesced + +(264) InputAdapter +Input [4]: [i_item_sk#81, i_brand_id#82, i_class_id#83, i_category_id#84] +Arguments: [#81, #82, #83, #84] + +(265) InputAdapter +Input [4]: [#81#81, #82#82, #83#83, #84#84] + +(266) NativeSort +Input [4]: [#81#81, #82#82, #83#83, #84#84] +Arguments: [i_item_sk#81 ASC NULLS FIRST], false + +(267) ReusedExchange [Reuses operator id: 147] +Output [1]: [ss_item_sk#80] + +(268) ShuffleQueryStage +Output [1]: [ss_item_sk#80] +Arguments: X + +(269) AQEShuffleRead +Input [1]: [ss_item_sk#80] +Arguments: coalesced + +(270) InputAdapter +Input [1]: [ss_item_sk#80] +Arguments: [#80] + +(271) InputAdapter +Input [1]: [#80#80] + +(272) NativeSort +Input [1]: [#80#80] +Arguments: [ss_item_sk#80 ASC NULLS FIRST], false + +(273) NativeSortMergeJoin +Left keys [1]: [i_item_sk#81] +Right keys [1]: [ss_item_sk#80] +Join type: LeftSemi +Join condition: None + +(274) NativeSortMergeJoin +Left keys [1]: [ws_item_sk#77] +Right keys [1]: [i_item_sk#81] +Join type: Inner +Join condition: None + +(275) NativeProject +Output [6]: [ws_sold_date_sk#76, ws_quantity#78, ws_list_price#79, i_brand_id#82, i_class_id#83, i_category_id#84] +Input [8]: [#76#76, #77#77, #78#78, #79#79, #81#81, #82#82, #83#83, #84#84] + +(276) NativeShuffleExchange +Input [6]: [ws_sold_date_sk#76, ws_quantity#78, ws_list_price#79, i_brand_id#82, i_class_id#83, i_category_id#84] +Arguments: hashpartitioning(ws_sold_date_sk#76, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(277) ShuffleQueryStage +Output [6]: [ws_sold_date_sk#76, ws_quantity#78, ws_list_price#79, i_brand_id#82, i_class_id#83, i_category_id#84] +Arguments: X + +(278) AQEShuffleRead +Input [6]: [ws_sold_date_sk#76, ws_quantity#78, ws_list_price#79, i_brand_id#82, i_class_id#83, i_category_id#84] +Arguments: coalesced + +(279) InputAdapter +Input [6]: [ws_sold_date_sk#76, ws_quantity#78, ws_list_price#79, i_brand_id#82, i_class_id#83, i_category_id#84] + +(280) NativeSort +Input [6]: [ws_sold_date_sk#76, ws_quantity#78, ws_list_price#79, i_brand_id#82, i_class_id#83, i_category_id#84] +Arguments: [ws_sold_date_sk#76 ASC NULLS FIRST], false + +(281) ReusedExchange [Reuses operator id: 176] +Output [1]: [d_date_sk#85] + +(282) ShuffleQueryStage +Output [1]: [d_date_sk#85] +Arguments: X + +(283) AQEShuffleRead +Input [1]: [d_date_sk#85] +Arguments: coalesced + +(284) InputAdapter +Input [1]: [d_date_sk#85] +Arguments: [#85] + +(285) InputAdapter +Input [1]: [#85#85] + +(286) NativeSort +Input [1]: [#85#85] +Arguments: [d_date_sk#85 ASC NULLS FIRST], false + +(287) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#76] +Right keys [1]: [d_date_sk#85] +Join type: Inner +Join condition: None + +(288) NativeProject +Output [5]: [ws_quantity#78, ws_list_price#79, i_brand_id#82, i_class_id#83, i_category_id#84] +Input [7]: [ws_sold_date_sk#76, ws_quantity#78, ws_list_price#79, i_brand_id#82, i_class_id#83, i_category_id#84, #85#85] + +(289) NativeProject +Output [4]: [i_brand_id#82 AS i_brand_id#82, i_class_id#83 AS i_class_id#83, i_category_id#84 AS i_category_id#84, (cast(ws_quantity#78 as decimal(10,0)) * ws_list_price#79) AS _c3#86] +Input [5]: [ws_quantity#78, ws_list_price#79, i_brand_id#82, i_class_id#83, i_category_id#84] + +(290) NativeHashAggregate +Input [4]: [i_brand_id#82, i_class_id#83, i_category_id#84, _c3#86] +Keys [3]: [i_brand_id#82, i_class_id#83, i_category_id#84] +Functions [2]: [partial_sum(_c3#86), partial_count(1)] +Aggregate Attributes [3]: [sum#87, isEmpty#88, count#89] +Results [4]: [i_brand_id#82, i_class_id#83, i_category_id#84, #27#27] + +(291) NativeShuffleExchange +Input [4]: [i_brand_id#82, i_class_id#83, i_category_id#84, #27#27] +Arguments: hashpartitioning(i_brand_id#82, i_class_id#83, i_category_id#84, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(292) ShuffleQueryStage +Output [4]: [i_brand_id#82, i_class_id#83, i_category_id#84, #27#27] +Arguments: X + +(293) AQEShuffleRead +Input [4]: [i_brand_id#82, i_class_id#83, i_category_id#84, #27#27] +Arguments: coalesced + +(294) InputAdapter +Input [4]: [i_brand_id#82, i_class_id#83, i_category_id#84, #27#27] + +(295) NativeHashAggregate +Input [4]: [i_brand_id#82, i_class_id#83, i_category_id#84, #27#27] +Keys [3]: [i_brand_id#82, i_class_id#83, i_category_id#84] +Functions [2]: [sum((cast(ws_quantity#78 as decimal(10,0)) * ws_list_price#79)), count(1)] +Aggregate Attributes [2]: [sum((cast(ws_quantity#78 as decimal(10,0)) * ws_list_price#79))#90, count(1)#91] +Results [5]: [i_brand_id#82, i_class_id#83, i_category_id#84, sum((cast(ws_quantity#78 as decimal(10,0)) * ws_list_price#79))#90, count(1)#91] + +(296) NativeProject +Output [5]: [i_brand_id#82, i_class_id#83, i_category_id#84, sum((cast(ws_quantity#78 as decimal(10,0)) * ws_list_price#79))#90 AS sales#92, count(1)#91 AS number_sales#93] +Input [5]: [i_brand_id#82, i_class_id#83, i_category_id#84, sum((cast(ws_quantity#78 as decimal(10,0)) * ws_list_price#79))#90, count(1)#91] + +(297) NativeFilter +Input [5]: [i_brand_id#82, i_class_id#83, i_category_id#84, sales#92, number_sales#93] +Condition : (isnotnull(sales#92) AND (cast(sales#92 as decimal(32,6)) > cast(ReusedSubquery Subquery subquery#51, [id=#52] as decimal(32,6)))) + +(298) NativeProject +Output [6]: [sales#92, number_sales#93, web AS channel#94, i_brand_id#82, i_class_id#83, i_category_id#84] +Input [5]: [i_brand_id#82, i_class_id#83, i_category_id#84, sales#92, number_sales#93] + +(299) NativeUnion +Arguments: [sales#49, number_sales#50, channel#53, i_brand_id#54, i_class_id#55, i_category_id#56] + +(300) InputAdapter +Input [6]: [sales#49, number_sales#50, channel#53, i_brand_id#54, i_class_id#55, i_category_id#56] +Arguments: [#49, #95, #53, #54, #55, #56] + +(301) NativeExpand +Input [6]: [#49#49, #95#50, #53#53, #54#54, #55#55, #56#56] +Arguments: [[sales#49, number_sales#50, channel#53, i_brand_id#54, i_class_id#55, i_category_id#56, 0], [sales#49, number_sales#50, channel#53, i_brand_id#54, i_class_id#55, null, 1], [sales#49, number_sales#50, channel#53, i_brand_id#54, null, null, 3], [sales#49, number_sales#50, channel#53, null, null, null, 7], [sales#49, number_sales#50, null, null, null, null, 15]], [sales#49, number_sales#50, channel#96, i_brand_id#97, i_class_id#98, i_category_id#99, spark_grouping_id#100] + +(302) NativeHashAggregate +Input [7]: [sales#49, number_sales#50, channel#96, i_brand_id#97, i_class_id#98, i_category_id#99, spark_grouping_id#100] +Keys [5]: [channel#96, i_brand_id#97, i_class_id#98, i_category_id#99, spark_grouping_id#100] +Functions [2]: [partial_sum(sales#49), partial_sum(number_sales#50)] +Aggregate Attributes [3]: [sum#101, isEmpty#102, sum#103] +Results [6]: [channel#96, i_brand_id#97, i_class_id#98, i_category_id#99, spark_grouping_id#100, #27#27] + +(303) NativeShuffleExchange +Input [6]: [channel#96, i_brand_id#97, i_class_id#98, i_category_id#99, spark_grouping_id#100, #27#27] +Arguments: hashpartitioning(channel#96, i_brand_id#97, i_class_id#98, i_category_id#99, spark_grouping_id#100, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(304) ShuffleQueryStage +Output [6]: [channel#96, i_brand_id#97, i_class_id#98, i_category_id#99, spark_grouping_id#100, #27#27] +Arguments: X + +(305) AQEShuffleRead +Input [6]: [channel#96, i_brand_id#97, i_class_id#98, i_category_id#99, spark_grouping_id#100, #27#27] +Arguments: coalesced + +(306) InputAdapter +Input [6]: [channel#96, i_brand_id#97, i_class_id#98, i_category_id#99, spark_grouping_id#100, #27#27] + +(307) NativeHashAggregate +Input [6]: [channel#96, i_brand_id#97, i_class_id#98, i_category_id#99, spark_grouping_id#100, #27#27] +Keys [5]: [channel#96, i_brand_id#97, i_class_id#98, i_category_id#99, spark_grouping_id#100] +Functions [2]: [sum(sales#49), sum(number_sales#50)] +Aggregate Attributes [2]: [sum(sales#49)#104, sum(number_sales#50)#105] +Results [7]: [channel#96, i_brand_id#97, i_class_id#98, i_category_id#99, spark_grouping_id#100, sum(sales#49)#104, sum(number_sales#50)#105] + +(308) NativeProject +Output [6]: [channel#96, i_brand_id#97, i_class_id#98, i_category_id#99, sum(sales#49)#104 AS sum(sales)#106, sum(number_sales#50)#105 AS sum(number_sales)#107] +Input [7]: [channel#96, i_brand_id#97, i_class_id#98, i_category_id#99, spark_grouping_id#100, sum(sales#49)#104, sum(number_sales#50)#105] + +(309) NativeTakeOrdered +Input [6]: [channel#96, i_brand_id#97, i_class_id#98, i_category_id#99, sum(sales)#106, sum(number_sales)#107] +Arguments: X, [channel#96 ASC NULLS FIRST, i_brand_id#97 ASC NULLS FIRST, i_class_id#98 ASC NULLS FIRST, i_category_id#99 ASC NULLS FIRST] + +(310) Scan parquet +Output [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_quantity#3, ss_list_price#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(311) Filter +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_quantity#3, ss_list_price#4] +Condition : (isnotnull(ss_item_sk#2) AND isnotnull(ss_sold_date_sk#1)) + +(312) Exchange +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_quantity#3, ss_list_price#4] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(313) Sort +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_quantity#3, ss_list_price#4] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false, 0 + +(314) Scan parquet +Output [4]: [i_item_sk#5, i_brand_id#6, i_class_id#7, i_category_id#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id)] +ReadSchema: struct + +(315) Filter +Input [4]: [i_item_sk#5, i_brand_id#6, i_class_id#7, i_category_id#8] +Condition : ((isnotnull(i_brand_id#6) AND isnotnull(i_class_id#7)) AND isnotnull(i_category_id#8)) + +(316) Exchange +Input [4]: [i_item_sk#5, i_brand_id#6, i_class_id#7, i_category_id#8] +Arguments: hashpartitioning(i_brand_id#6, i_class_id#7, i_category_id#8, 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(317) Sort +Input [4]: [i_item_sk#5, i_brand_id#6, i_class_id#7, i_category_id#8] +Arguments: [i_brand_id#6 ASC NULLS FIRST, i_class_id#7 ASC NULLS FIRST, i_category_id#8 ASC NULLS FIRST], false, 0 + +(318) Scan parquet +Output [2]: [ss_sold_date_sk#9, ss_item_sk#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(319) Filter +Input [2]: [ss_sold_date_sk#9, ss_item_sk#10] +Condition : (isnotnull(ss_item_sk#10) AND isnotnull(ss_sold_date_sk#9)) + +(320) Exchange +Input [2]: [ss_sold_date_sk#9, ss_item_sk#10] +Arguments: hashpartitioning(ss_item_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=31] + +(321) Sort +Input [2]: [ss_sold_date_sk#9, ss_item_sk#10] +Arguments: [ss_item_sk#10 ASC NULLS FIRST], false, 0 + +(322) Scan parquet +Output [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id)] +ReadSchema: struct + +(323) Filter +Input [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] +Condition : (((isnotnull(i_item_sk#11) AND isnotnull(i_brand_id#12)) AND isnotnull(i_class_id#13)) AND isnotnull(i_category_id#14)) + +(324) Exchange +Input [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: hashpartitioning(coalesce(i_brand_id#12, 0), isnull(i_brand_id#12), coalesce(i_class_id#13, 0), isnull(i_class_id#13), coalesce(i_category_id#14, 0), isnull(i_category_id#14), 100), ENSURE_REQUIREMENTS, [plan_id=32] + +(325) Sort +Input [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: [coalesce(i_brand_id#12, 0) ASC NULLS FIRST, isnull(i_brand_id#12) ASC NULLS FIRST, coalesce(i_class_id#13, 0) ASC NULLS FIRST, isnull(i_class_id#13) ASC NULLS FIRST, coalesce(i_category_id#14, 0) ASC NULLS FIRST, isnull(i_category_id#14) ASC NULLS FIRST], false, 0 + +(326) Scan parquet +Output [2]: [cs_sold_date_sk#15, cs_item_sk#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(327) Filter +Input [2]: [cs_sold_date_sk#15, cs_item_sk#16] +Condition : (isnotnull(cs_item_sk#16) AND isnotnull(cs_sold_date_sk#15)) + +(328) Exchange +Input [2]: [cs_sold_date_sk#15, cs_item_sk#16] +Arguments: hashpartitioning(cs_item_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=33] + +(329) Sort +Input [2]: [cs_sold_date_sk#15, cs_item_sk#16] +Arguments: [cs_item_sk#16 ASC NULLS FIRST], false, 0 + +(330) Scan parquet +Output [4]: [i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(331) Filter +Input [4]: [i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20] +Condition : isnotnull(i_item_sk#17) + +(332) Exchange +Input [4]: [i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: hashpartitioning(i_item_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=34] + +(333) Sort +Input [4]: [i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: [i_item_sk#17 ASC NULLS FIRST], false, 0 + +(334) SortMergeJoin +Left keys [1]: [cs_item_sk#16] +Right keys [1]: [i_item_sk#17] +Join type: Inner +Join condition: None + +(335) Project +Output [4]: [cs_sold_date_sk#15, i_brand_id#18, i_class_id#19, i_category_id#20] +Input [6]: [cs_sold_date_sk#15, cs_item_sk#16, i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20] + +(336) Exchange +Input [4]: [cs_sold_date_sk#15, i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: hashpartitioning(cs_sold_date_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=35] + +(337) Sort +Input [4]: [cs_sold_date_sk#15, i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: [cs_sold_date_sk#15 ASC NULLS FIRST], false, 0 + +(338) Scan parquet +Output [2]: [d_date_sk#21, d_year#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(339) Filter +Input [2]: [d_date_sk#21, d_year#22] +Condition : (((isnotnull(d_year#22) AND (d_year#22 >= 1999)) AND (d_year#22 <= 2001)) AND isnotnull(d_date_sk#21)) + +(340) Project +Output [1]: [d_date_sk#21] +Input [2]: [d_date_sk#21, d_year#22] + +(341) Exchange +Input [1]: [d_date_sk#21] +Arguments: hashpartitioning(d_date_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=36] + +(342) Sort +Input [1]: [d_date_sk#21] +Arguments: [d_date_sk#21 ASC NULLS FIRST], false, 0 + +(343) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#15] +Right keys [1]: [d_date_sk#21] +Join type: Inner +Join condition: None + +(344) Project +Output [3]: [i_brand_id#18, i_class_id#19, i_category_id#20] +Input [5]: [cs_sold_date_sk#15, i_brand_id#18, i_class_id#19, i_category_id#20, d_date_sk#21] + +(345) Exchange +Input [3]: [i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: hashpartitioning(coalesce(i_brand_id#18, 0), isnull(i_brand_id#18), coalesce(i_class_id#19, 0), isnull(i_class_id#19), coalesce(i_category_id#20, 0), isnull(i_category_id#20), 100), ENSURE_REQUIREMENTS, [plan_id=37] + +(346) Sort +Input [3]: [i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: [coalesce(i_brand_id#18, 0) ASC NULLS FIRST, isnull(i_brand_id#18) ASC NULLS FIRST, coalesce(i_class_id#19, 0) ASC NULLS FIRST, isnull(i_class_id#19) ASC NULLS FIRST, coalesce(i_category_id#20, 0) ASC NULLS FIRST, isnull(i_category_id#20) ASC NULLS FIRST], false, 0 + +(347) SortMergeJoin +Left keys [6]: [coalesce(i_brand_id#12, 0), isnull(i_brand_id#12), coalesce(i_class_id#13, 0), isnull(i_class_id#13), coalesce(i_category_id#14, 0), isnull(i_category_id#14)] +Right keys [6]: [coalesce(i_brand_id#18, 0), isnull(i_brand_id#18), coalesce(i_class_id#19, 0), isnull(i_class_id#19), coalesce(i_category_id#20, 0), isnull(i_category_id#20)] +Join type: LeftSemi +Join condition: None + +(348) Exchange +Input [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: hashpartitioning(i_item_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=38] + +(349) Sort +Input [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: [i_item_sk#11 ASC NULLS FIRST], false, 0 + +(350) SortMergeJoin +Left keys [1]: [ss_item_sk#10] +Right keys [1]: [i_item_sk#11] +Join type: Inner +Join condition: None + +(351) Project +Output [4]: [ss_sold_date_sk#9, i_brand_id#12, i_class_id#13, i_category_id#14] +Input [6]: [ss_sold_date_sk#9, ss_item_sk#10, i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] + +(352) Exchange +Input [4]: [ss_sold_date_sk#9, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: hashpartitioning(ss_sold_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=39] + +(353) Sort +Input [4]: [ss_sold_date_sk#9, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: [ss_sold_date_sk#9 ASC NULLS FIRST], false, 0 + +(354) Scan parquet +Output [2]: [d_date_sk#23, d_year#108] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(355) Filter +Input [2]: [d_date_sk#23, d_year#108] +Condition : (((isnotnull(d_year#108) AND (d_year#108 >= 1999)) AND (d_year#108 <= 2001)) AND isnotnull(d_date_sk#23)) + +(356) Project +Output [1]: [d_date_sk#23] +Input [2]: [d_date_sk#23, d_year#108] + +(357) Exchange +Input [1]: [d_date_sk#23] +Arguments: hashpartitioning(d_date_sk#23, 100), ENSURE_REQUIREMENTS, [plan_id=40] + +(358) Sort +Input [1]: [d_date_sk#23] +Arguments: [d_date_sk#23 ASC NULLS FIRST], false, 0 + +(359) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#9] +Right keys [1]: [d_date_sk#23] +Join type: Inner +Join condition: None + +(360) Project +Output [3]: [i_brand_id#12 AS brand_id#24, i_class_id#13 AS class_id#25, i_category_id#14 AS category_id#26] +Input [5]: [ss_sold_date_sk#9, i_brand_id#12, i_class_id#13, i_category_id#14, d_date_sk#23] + +(361) HashAggregate +Input [3]: [brand_id#24, class_id#25, category_id#26] +Keys [3]: [brand_id#24, class_id#25, category_id#26] +Functions: [] +Aggregate Attributes: [] +Results [3]: [brand_id#24, class_id#25, category_id#26] + +(362) Exchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(brand_id#24, class_id#25, category_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=41] + +(363) HashAggregate +Input [3]: [brand_id#24, class_id#25, category_id#26] +Keys [3]: [brand_id#24, class_id#25, category_id#26] +Functions: [] +Aggregate Attributes: [] +Results [3]: [brand_id#24, class_id#25, category_id#26] + +(364) Exchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(coalesce(brand_id#24, 0), isnull(brand_id#24), coalesce(class_id#25, 0), isnull(class_id#25), coalesce(category_id#26, 0), isnull(category_id#26), 100), ENSURE_REQUIREMENTS, [plan_id=42] + +(365) Sort +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: [coalesce(brand_id#24, 0) ASC NULLS FIRST, isnull(brand_id#24) ASC NULLS FIRST, coalesce(class_id#25, 0) ASC NULLS FIRST, isnull(class_id#25) ASC NULLS FIRST, coalesce(category_id#26, 0) ASC NULLS FIRST, isnull(category_id#26) ASC NULLS FIRST], false, 0 + +(366) Scan parquet +Output [2]: [ws_sold_date_sk#28, ws_item_sk#29] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(367) Filter +Input [2]: [ws_sold_date_sk#28, ws_item_sk#29] +Condition : (isnotnull(ws_item_sk#29) AND isnotnull(ws_sold_date_sk#28)) + +(368) Exchange +Input [2]: [ws_sold_date_sk#28, ws_item_sk#29] +Arguments: hashpartitioning(ws_item_sk#29, 100), ENSURE_REQUIREMENTS, [plan_id=43] + +(369) Sort +Input [2]: [ws_sold_date_sk#28, ws_item_sk#29] +Arguments: [ws_item_sk#29 ASC NULLS FIRST], false, 0 + +(370) Scan parquet +Output [4]: [i_item_sk#30, i_brand_id#31, i_class_id#32, i_category_id#33] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(371) Filter +Input [4]: [i_item_sk#30, i_brand_id#31, i_class_id#32, i_category_id#33] +Condition : isnotnull(i_item_sk#30) + +(372) Exchange +Input [4]: [i_item_sk#30, i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: hashpartitioning(i_item_sk#30, 100), ENSURE_REQUIREMENTS, [plan_id=44] + +(373) Sort +Input [4]: [i_item_sk#30, i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: [i_item_sk#30 ASC NULLS FIRST], false, 0 + +(374) SortMergeJoin +Left keys [1]: [ws_item_sk#29] +Right keys [1]: [i_item_sk#30] +Join type: Inner +Join condition: None + +(375) Project +Output [4]: [ws_sold_date_sk#28, i_brand_id#31, i_class_id#32, i_category_id#33] +Input [6]: [ws_sold_date_sk#28, ws_item_sk#29, i_item_sk#30, i_brand_id#31, i_class_id#32, i_category_id#33] + +(376) Exchange +Input [4]: [ws_sold_date_sk#28, i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: hashpartitioning(ws_sold_date_sk#28, 100), ENSURE_REQUIREMENTS, [plan_id=45] + +(377) Sort +Input [4]: [ws_sold_date_sk#28, i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: [ws_sold_date_sk#28 ASC NULLS FIRST], false, 0 + +(378) Scan parquet +Output [2]: [d_date_sk#34, d_year#109] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(379) Filter +Input [2]: [d_date_sk#34, d_year#109] +Condition : (((isnotnull(d_year#109) AND (d_year#109 >= 1999)) AND (d_year#109 <= 2001)) AND isnotnull(d_date_sk#34)) + +(380) Project +Output [1]: [d_date_sk#34] +Input [2]: [d_date_sk#34, d_year#109] + +(381) Exchange +Input [1]: [d_date_sk#34] +Arguments: hashpartitioning(d_date_sk#34, 100), ENSURE_REQUIREMENTS, [plan_id=46] + +(382) Sort +Input [1]: [d_date_sk#34] +Arguments: [d_date_sk#34 ASC NULLS FIRST], false, 0 + +(383) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#28] +Right keys [1]: [d_date_sk#34] +Join type: Inner +Join condition: None + +(384) Project +Output [3]: [i_brand_id#31, i_class_id#32, i_category_id#33] +Input [5]: [ws_sold_date_sk#28, i_brand_id#31, i_class_id#32, i_category_id#33, d_date_sk#34] + +(385) Exchange +Input [3]: [i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: hashpartitioning(coalesce(i_brand_id#31, 0), isnull(i_brand_id#31), coalesce(i_class_id#32, 0), isnull(i_class_id#32), coalesce(i_category_id#33, 0), isnull(i_category_id#33), 100), ENSURE_REQUIREMENTS, [plan_id=47] + +(386) Sort +Input [3]: [i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: [coalesce(i_brand_id#31, 0) ASC NULLS FIRST, isnull(i_brand_id#31) ASC NULLS FIRST, coalesce(i_class_id#32, 0) ASC NULLS FIRST, isnull(i_class_id#32) ASC NULLS FIRST, coalesce(i_category_id#33, 0) ASC NULLS FIRST, isnull(i_category_id#33) ASC NULLS FIRST], false, 0 + +(387) SortMergeJoin +Left keys [6]: [coalesce(brand_id#24, 0), isnull(brand_id#24), coalesce(class_id#25, 0), isnull(class_id#25), coalesce(category_id#26, 0), isnull(category_id#26)] +Right keys [6]: [coalesce(i_brand_id#31, 0), isnull(i_brand_id#31), coalesce(i_class_id#32, 0), isnull(i_class_id#32), coalesce(i_category_id#33, 0), isnull(i_category_id#33)] +Join type: LeftSemi +Join condition: None + +(388) Exchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(brand_id#24, class_id#25, category_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=48] + +(389) Sort +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: [brand_id#24 ASC NULLS FIRST, class_id#25 ASC NULLS FIRST, category_id#26 ASC NULLS FIRST], false, 0 + +(390) SortMergeJoin +Left keys [3]: [i_brand_id#6, i_class_id#7, i_category_id#8] +Right keys [3]: [brand_id#24, class_id#25, category_id#26] +Join type: Inner +Join condition: None + +(391) Project +Output [1]: [i_item_sk#5 AS ss_item_sk#35] +Input [7]: [i_item_sk#5, i_brand_id#6, i_class_id#7, i_category_id#8, brand_id#24, class_id#25, category_id#26] + +(392) Exchange +Input [1]: [ss_item_sk#35] +Arguments: hashpartitioning(ss_item_sk#35, 100), ENSURE_REQUIREMENTS, [plan_id=49] + +(393) Sort +Input [1]: [ss_item_sk#35] +Arguments: [ss_item_sk#35 ASC NULLS FIRST], false, 0 + +(394) SortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [ss_item_sk#35] +Join type: LeftSemi +Join condition: None + +(395) Scan parquet +Output [4]: [i_item_sk#36, i_brand_id#37, i_class_id#38, i_category_id#39] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(396) Filter +Input [4]: [i_item_sk#36, i_brand_id#37, i_class_id#38, i_category_id#39] +Condition : isnotnull(i_item_sk#36) + +(397) Exchange +Input [4]: [i_item_sk#36, i_brand_id#37, i_class_id#38, i_category_id#39] +Arguments: hashpartitioning(i_item_sk#36, 100), ENSURE_REQUIREMENTS, [plan_id=50] + +(398) Sort +Input [4]: [i_item_sk#36, i_brand_id#37, i_class_id#38, i_category_id#39] +Arguments: [i_item_sk#36 ASC NULLS FIRST], false, 0 + +(399) Scan parquet +Output [4]: [i_item_sk#5, i_brand_id#6, i_class_id#7, i_category_id#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id)] +ReadSchema: struct + +(400) Filter +Input [4]: [i_item_sk#5, i_brand_id#6, i_class_id#7, i_category_id#8] +Condition : ((isnotnull(i_brand_id#6) AND isnotnull(i_class_id#7)) AND isnotnull(i_category_id#8)) + +(401) Exchange +Input [4]: [i_item_sk#5, i_brand_id#6, i_class_id#7, i_category_id#8] +Arguments: hashpartitioning(i_brand_id#6, i_class_id#7, i_category_id#8, 100), ENSURE_REQUIREMENTS, [plan_id=51] + +(402) Sort +Input [4]: [i_item_sk#5, i_brand_id#6, i_class_id#7, i_category_id#8] +Arguments: [i_brand_id#6 ASC NULLS FIRST, i_class_id#7 ASC NULLS FIRST, i_category_id#8 ASC NULLS FIRST], false, 0 + +(403) Scan parquet +Output [2]: [ss_sold_date_sk#9, ss_item_sk#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(404) Filter +Input [2]: [ss_sold_date_sk#9, ss_item_sk#10] +Condition : (isnotnull(ss_item_sk#10) AND isnotnull(ss_sold_date_sk#9)) + +(405) Exchange +Input [2]: [ss_sold_date_sk#9, ss_item_sk#10] +Arguments: hashpartitioning(ss_item_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=52] + +(406) Sort +Input [2]: [ss_sold_date_sk#9, ss_item_sk#10] +Arguments: [ss_item_sk#10 ASC NULLS FIRST], false, 0 + +(407) Scan parquet +Output [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id)] +ReadSchema: struct + +(408) Filter +Input [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] +Condition : (((isnotnull(i_item_sk#11) AND isnotnull(i_brand_id#12)) AND isnotnull(i_class_id#13)) AND isnotnull(i_category_id#14)) + +(409) Exchange +Input [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: hashpartitioning(coalesce(i_brand_id#12, 0), isnull(i_brand_id#12), coalesce(i_class_id#13, 0), isnull(i_class_id#13), coalesce(i_category_id#14, 0), isnull(i_category_id#14), 100), ENSURE_REQUIREMENTS, [plan_id=53] + +(410) Sort +Input [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: [coalesce(i_brand_id#12, 0) ASC NULLS FIRST, isnull(i_brand_id#12) ASC NULLS FIRST, coalesce(i_class_id#13, 0) ASC NULLS FIRST, isnull(i_class_id#13) ASC NULLS FIRST, coalesce(i_category_id#14, 0) ASC NULLS FIRST, isnull(i_category_id#14) ASC NULLS FIRST], false, 0 + +(411) Scan parquet +Output [2]: [cs_sold_date_sk#15, cs_item_sk#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(412) Filter +Input [2]: [cs_sold_date_sk#15, cs_item_sk#16] +Condition : (isnotnull(cs_item_sk#16) AND isnotnull(cs_sold_date_sk#15)) + +(413) Exchange +Input [2]: [cs_sold_date_sk#15, cs_item_sk#16] +Arguments: hashpartitioning(cs_item_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=54] + +(414) Sort +Input [2]: [cs_sold_date_sk#15, cs_item_sk#16] +Arguments: [cs_item_sk#16 ASC NULLS FIRST], false, 0 + +(415) Scan parquet +Output [4]: [i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(416) Filter +Input [4]: [i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20] +Condition : isnotnull(i_item_sk#17) + +(417) Exchange +Input [4]: [i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: hashpartitioning(i_item_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=55] + +(418) Sort +Input [4]: [i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: [i_item_sk#17 ASC NULLS FIRST], false, 0 + +(419) SortMergeJoin +Left keys [1]: [cs_item_sk#16] +Right keys [1]: [i_item_sk#17] +Join type: Inner +Join condition: None + +(420) Project +Output [4]: [cs_sold_date_sk#15, i_brand_id#18, i_class_id#19, i_category_id#20] +Input [6]: [cs_sold_date_sk#15, cs_item_sk#16, i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20] + +(421) Exchange +Input [4]: [cs_sold_date_sk#15, i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: hashpartitioning(cs_sold_date_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=56] + +(422) Sort +Input [4]: [cs_sold_date_sk#15, i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: [cs_sold_date_sk#15 ASC NULLS FIRST], false, 0 + +(423) Scan parquet +Output [2]: [d_date_sk#21, d_year#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(424) Filter +Input [2]: [d_date_sk#21, d_year#22] +Condition : (((isnotnull(d_year#22) AND (d_year#22 >= 1999)) AND (d_year#22 <= 2001)) AND isnotnull(d_date_sk#21)) + +(425) Project +Output [1]: [d_date_sk#21] +Input [2]: [d_date_sk#21, d_year#22] + +(426) Exchange +Input [1]: [d_date_sk#21] +Arguments: hashpartitioning(d_date_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=57] + +(427) Sort +Input [1]: [d_date_sk#21] +Arguments: [d_date_sk#21 ASC NULLS FIRST], false, 0 + +(428) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#15] +Right keys [1]: [d_date_sk#21] +Join type: Inner +Join condition: None + +(429) Project +Output [3]: [i_brand_id#18, i_class_id#19, i_category_id#20] +Input [5]: [cs_sold_date_sk#15, i_brand_id#18, i_class_id#19, i_category_id#20, d_date_sk#21] + +(430) Exchange +Input [3]: [i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: hashpartitioning(coalesce(i_brand_id#18, 0), isnull(i_brand_id#18), coalesce(i_class_id#19, 0), isnull(i_class_id#19), coalesce(i_category_id#20, 0), isnull(i_category_id#20), 100), ENSURE_REQUIREMENTS, [plan_id=58] + +(431) Sort +Input [3]: [i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: [coalesce(i_brand_id#18, 0) ASC NULLS FIRST, isnull(i_brand_id#18) ASC NULLS FIRST, coalesce(i_class_id#19, 0) ASC NULLS FIRST, isnull(i_class_id#19) ASC NULLS FIRST, coalesce(i_category_id#20, 0) ASC NULLS FIRST, isnull(i_category_id#20) ASC NULLS FIRST], false, 0 + +(432) SortMergeJoin +Left keys [6]: [coalesce(i_brand_id#12, 0), isnull(i_brand_id#12), coalesce(i_class_id#13, 0), isnull(i_class_id#13), coalesce(i_category_id#14, 0), isnull(i_category_id#14)] +Right keys [6]: [coalesce(i_brand_id#18, 0), isnull(i_brand_id#18), coalesce(i_class_id#19, 0), isnull(i_class_id#19), coalesce(i_category_id#20, 0), isnull(i_category_id#20)] +Join type: LeftSemi +Join condition: None + +(433) Exchange +Input [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: hashpartitioning(i_item_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=59] + +(434) Sort +Input [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: [i_item_sk#11 ASC NULLS FIRST], false, 0 + +(435) SortMergeJoin +Left keys [1]: [ss_item_sk#10] +Right keys [1]: [i_item_sk#11] +Join type: Inner +Join condition: None + +(436) Project +Output [4]: [ss_sold_date_sk#9, i_brand_id#12, i_class_id#13, i_category_id#14] +Input [6]: [ss_sold_date_sk#9, ss_item_sk#10, i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] + +(437) Exchange +Input [4]: [ss_sold_date_sk#9, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: hashpartitioning(ss_sold_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=60] + +(438) Sort +Input [4]: [ss_sold_date_sk#9, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: [ss_sold_date_sk#9 ASC NULLS FIRST], false, 0 + +(439) Scan parquet +Output [2]: [d_date_sk#23, d_year#108] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(440) Filter +Input [2]: [d_date_sk#23, d_year#108] +Condition : (((isnotnull(d_year#108) AND (d_year#108 >= 1999)) AND (d_year#108 <= 2001)) AND isnotnull(d_date_sk#23)) + +(441) Project +Output [1]: [d_date_sk#23] +Input [2]: [d_date_sk#23, d_year#108] + +(442) Exchange +Input [1]: [d_date_sk#23] +Arguments: hashpartitioning(d_date_sk#23, 100), ENSURE_REQUIREMENTS, [plan_id=61] + +(443) Sort +Input [1]: [d_date_sk#23] +Arguments: [d_date_sk#23 ASC NULLS FIRST], false, 0 + +(444) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#9] +Right keys [1]: [d_date_sk#23] +Join type: Inner +Join condition: None + +(445) Project +Output [3]: [i_brand_id#12 AS brand_id#24, i_class_id#13 AS class_id#25, i_category_id#14 AS category_id#26] +Input [5]: [ss_sold_date_sk#9, i_brand_id#12, i_class_id#13, i_category_id#14, d_date_sk#23] + +(446) HashAggregate +Input [3]: [brand_id#24, class_id#25, category_id#26] +Keys [3]: [brand_id#24, class_id#25, category_id#26] +Functions: [] +Aggregate Attributes: [] +Results [3]: [brand_id#24, class_id#25, category_id#26] + +(447) Exchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(brand_id#24, class_id#25, category_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=62] + +(448) HashAggregate +Input [3]: [brand_id#24, class_id#25, category_id#26] +Keys [3]: [brand_id#24, class_id#25, category_id#26] +Functions: [] +Aggregate Attributes: [] +Results [3]: [brand_id#24, class_id#25, category_id#26] + +(449) Exchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(coalesce(brand_id#24, 0), isnull(brand_id#24), coalesce(class_id#25, 0), isnull(class_id#25), coalesce(category_id#26, 0), isnull(category_id#26), 100), ENSURE_REQUIREMENTS, [plan_id=63] + +(450) Sort +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: [coalesce(brand_id#24, 0) ASC NULLS FIRST, isnull(brand_id#24) ASC NULLS FIRST, coalesce(class_id#25, 0) ASC NULLS FIRST, isnull(class_id#25) ASC NULLS FIRST, coalesce(category_id#26, 0) ASC NULLS FIRST, isnull(category_id#26) ASC NULLS FIRST], false, 0 + +(451) Scan parquet +Output [2]: [ws_sold_date_sk#28, ws_item_sk#29] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(452) Filter +Input [2]: [ws_sold_date_sk#28, ws_item_sk#29] +Condition : (isnotnull(ws_item_sk#29) AND isnotnull(ws_sold_date_sk#28)) + +(453) Exchange +Input [2]: [ws_sold_date_sk#28, ws_item_sk#29] +Arguments: hashpartitioning(ws_item_sk#29, 100), ENSURE_REQUIREMENTS, [plan_id=64] + +(454) Sort +Input [2]: [ws_sold_date_sk#28, ws_item_sk#29] +Arguments: [ws_item_sk#29 ASC NULLS FIRST], false, 0 + +(455) Scan parquet +Output [4]: [i_item_sk#30, i_brand_id#31, i_class_id#32, i_category_id#33] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(456) Filter +Input [4]: [i_item_sk#30, i_brand_id#31, i_class_id#32, i_category_id#33] +Condition : isnotnull(i_item_sk#30) + +(457) Exchange +Input [4]: [i_item_sk#30, i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: hashpartitioning(i_item_sk#30, 100), ENSURE_REQUIREMENTS, [plan_id=65] + +(458) Sort +Input [4]: [i_item_sk#30, i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: [i_item_sk#30 ASC NULLS FIRST], false, 0 + +(459) SortMergeJoin +Left keys [1]: [ws_item_sk#29] +Right keys [1]: [i_item_sk#30] +Join type: Inner +Join condition: None + +(460) Project +Output [4]: [ws_sold_date_sk#28, i_brand_id#31, i_class_id#32, i_category_id#33] +Input [6]: [ws_sold_date_sk#28, ws_item_sk#29, i_item_sk#30, i_brand_id#31, i_class_id#32, i_category_id#33] + +(461) Exchange +Input [4]: [ws_sold_date_sk#28, i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: hashpartitioning(ws_sold_date_sk#28, 100), ENSURE_REQUIREMENTS, [plan_id=66] + +(462) Sort +Input [4]: [ws_sold_date_sk#28, i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: [ws_sold_date_sk#28 ASC NULLS FIRST], false, 0 + +(463) Scan parquet +Output [2]: [d_date_sk#34, d_year#109] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(464) Filter +Input [2]: [d_date_sk#34, d_year#109] +Condition : (((isnotnull(d_year#109) AND (d_year#109 >= 1999)) AND (d_year#109 <= 2001)) AND isnotnull(d_date_sk#34)) + +(465) Project +Output [1]: [d_date_sk#34] +Input [2]: [d_date_sk#34, d_year#109] + +(466) Exchange +Input [1]: [d_date_sk#34] +Arguments: hashpartitioning(d_date_sk#34, 100), ENSURE_REQUIREMENTS, [plan_id=67] + +(467) Sort +Input [1]: [d_date_sk#34] +Arguments: [d_date_sk#34 ASC NULLS FIRST], false, 0 + +(468) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#28] +Right keys [1]: [d_date_sk#34] +Join type: Inner +Join condition: None + +(469) Project +Output [3]: [i_brand_id#31, i_class_id#32, i_category_id#33] +Input [5]: [ws_sold_date_sk#28, i_brand_id#31, i_class_id#32, i_category_id#33, d_date_sk#34] + +(470) Exchange +Input [3]: [i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: hashpartitioning(coalesce(i_brand_id#31, 0), isnull(i_brand_id#31), coalesce(i_class_id#32, 0), isnull(i_class_id#32), coalesce(i_category_id#33, 0), isnull(i_category_id#33), 100), ENSURE_REQUIREMENTS, [plan_id=68] + +(471) Sort +Input [3]: [i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: [coalesce(i_brand_id#31, 0) ASC NULLS FIRST, isnull(i_brand_id#31) ASC NULLS FIRST, coalesce(i_class_id#32, 0) ASC NULLS FIRST, isnull(i_class_id#32) ASC NULLS FIRST, coalesce(i_category_id#33, 0) ASC NULLS FIRST, isnull(i_category_id#33) ASC NULLS FIRST], false, 0 + +(472) SortMergeJoin +Left keys [6]: [coalesce(brand_id#24, 0), isnull(brand_id#24), coalesce(class_id#25, 0), isnull(class_id#25), coalesce(category_id#26, 0), isnull(category_id#26)] +Right keys [6]: [coalesce(i_brand_id#31, 0), isnull(i_brand_id#31), coalesce(i_class_id#32, 0), isnull(i_class_id#32), coalesce(i_category_id#33, 0), isnull(i_category_id#33)] +Join type: LeftSemi +Join condition: None + +(473) Exchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(brand_id#24, class_id#25, category_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=69] + +(474) Sort +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: [brand_id#24 ASC NULLS FIRST, class_id#25 ASC NULLS FIRST, category_id#26 ASC NULLS FIRST], false, 0 + +(475) SortMergeJoin +Left keys [3]: [i_brand_id#6, i_class_id#7, i_category_id#8] +Right keys [3]: [brand_id#24, class_id#25, category_id#26] +Join type: Inner +Join condition: None + +(476) Project +Output [1]: [i_item_sk#5 AS ss_item_sk#35] +Input [7]: [i_item_sk#5, i_brand_id#6, i_class_id#7, i_category_id#8, brand_id#24, class_id#25, category_id#26] + +(477) Exchange +Input [1]: [ss_item_sk#35] +Arguments: hashpartitioning(ss_item_sk#35, 100), ENSURE_REQUIREMENTS, [plan_id=70] + +(478) Sort +Input [1]: [ss_item_sk#35] +Arguments: [ss_item_sk#35 ASC NULLS FIRST], false, 0 + +(479) SortMergeJoin +Left keys [1]: [i_item_sk#36] +Right keys [1]: [ss_item_sk#35] +Join type: LeftSemi +Join condition: None + +(480) SortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#36] +Join type: Inner +Join condition: None + +(481) Project +Output [6]: [ss_sold_date_sk#1, ss_quantity#3, ss_list_price#4, i_brand_id#37, i_class_id#38, i_category_id#39] +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_quantity#3, ss_list_price#4, i_item_sk#36, i_brand_id#37, i_class_id#38, i_category_id#39] + +(482) Exchange +Input [6]: [ss_sold_date_sk#1, ss_quantity#3, ss_list_price#4, i_brand_id#37, i_class_id#38, i_category_id#39] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=71] + +(483) Sort +Input [6]: [ss_sold_date_sk#1, ss_quantity#3, ss_list_price#4, i_brand_id#37, i_class_id#38, i_category_id#39] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(484) Scan parquet +Output [3]: [d_date_sk#40, d_year#41, d_moy#42] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), EqualTo(d_moy,11), IsNotNull(d_date_sk)] +ReadSchema: struct + +(485) Filter +Input [3]: [d_date_sk#40, d_year#41, d_moy#42] +Condition : ((((isnotnull(d_year#41) AND isnotnull(d_moy#42)) AND (d_year#41 = 2001)) AND (d_moy#42 = 11)) AND isnotnull(d_date_sk#40)) + +(486) Project +Output [1]: [d_date_sk#40] +Input [3]: [d_date_sk#40, d_year#41, d_moy#42] + +(487) Exchange +Input [1]: [d_date_sk#40] +Arguments: hashpartitioning(d_date_sk#40, 100), ENSURE_REQUIREMENTS, [plan_id=72] + +(488) Sort +Input [1]: [d_date_sk#40] +Arguments: [d_date_sk#40 ASC NULLS FIRST], false, 0 + +(489) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#40] +Join type: Inner +Join condition: None + +(490) Project +Output [5]: [ss_quantity#3, ss_list_price#4, i_brand_id#37, i_class_id#38, i_category_id#39] +Input [7]: [ss_sold_date_sk#1, ss_quantity#3, ss_list_price#4, i_brand_id#37, i_class_id#38, i_category_id#39, d_date_sk#40] + +(491) HashAggregate +Input [5]: [ss_quantity#3, ss_list_price#4, i_brand_id#37, i_class_id#38, i_category_id#39] +Keys [3]: [i_brand_id#37, i_class_id#38, i_category_id#39] +Functions [2]: [partial_sum((cast(ss_quantity#3 as decimal(10,0)) * ss_list_price#4)), partial_count(1)] +Aggregate Attributes [3]: [sum#44, isEmpty#45, count#46] +Results [6]: [i_brand_id#37, i_class_id#38, i_category_id#39, sum#110, isEmpty#111, count#112] + +(492) Exchange +Input [6]: [i_brand_id#37, i_class_id#38, i_category_id#39, sum#110, isEmpty#111, count#112] +Arguments: hashpartitioning(i_brand_id#37, i_class_id#38, i_category_id#39, 100), ENSURE_REQUIREMENTS, [plan_id=73] + +(493) HashAggregate +Input [6]: [i_brand_id#37, i_class_id#38, i_category_id#39, sum#110, isEmpty#111, count#112] +Keys [3]: [i_brand_id#37, i_class_id#38, i_category_id#39] +Functions [2]: [sum((cast(ss_quantity#3 as decimal(10,0)) * ss_list_price#4)), count(1)] +Aggregate Attributes [2]: [sum((cast(ss_quantity#3 as decimal(10,0)) * ss_list_price#4))#47, count(1)#48] +Results [5]: [i_brand_id#37, i_class_id#38, i_category_id#39, sum((cast(ss_quantity#3 as decimal(10,0)) * ss_list_price#4))#47 AS sales#49, count(1)#48 AS number_sales#50] + +(494) Filter +Input [5]: [i_brand_id#37, i_class_id#38, i_category_id#39, sales#49, number_sales#50] +Condition : (isnotnull(sales#49) AND (cast(sales#49 as decimal(32,6)) > cast(Subquery subquery#51, [id=#52] as decimal(32,6)))) + +(495) Project +Output [6]: [sales#49, number_sales#50, store AS channel#53, i_brand_id#37 AS i_brand_id#54, i_class_id#38 AS i_class_id#55, i_category_id#39 AS i_category_id#56] +Input [5]: [i_brand_id#37, i_class_id#38, i_category_id#39, sales#49, number_sales#50] + +(496) Scan parquet +Output [4]: [cs_sold_date_sk#57, cs_item_sk#58, cs_quantity#59, cs_list_price#60] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(497) Filter +Input [4]: [cs_sold_date_sk#57, cs_item_sk#58, cs_quantity#59, cs_list_price#60] +Condition : (isnotnull(cs_item_sk#58) AND isnotnull(cs_sold_date_sk#57)) + +(498) Exchange +Input [4]: [cs_sold_date_sk#57, cs_item_sk#58, cs_quantity#59, cs_list_price#60] +Arguments: hashpartitioning(cs_item_sk#58, 100), ENSURE_REQUIREMENTS, [plan_id=74] + +(499) Sort +Input [4]: [cs_sold_date_sk#57, cs_item_sk#58, cs_quantity#59, cs_list_price#60] +Arguments: [cs_item_sk#58 ASC NULLS FIRST], false, 0 + +(500) Scan parquet +Output [4]: [i_item_sk#113, i_brand_id#114, i_class_id#115, i_category_id#116] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id)] +ReadSchema: struct + +(501) Filter +Input [4]: [i_item_sk#113, i_brand_id#114, i_class_id#115, i_category_id#116] +Condition : ((isnotnull(i_brand_id#114) AND isnotnull(i_class_id#115)) AND isnotnull(i_category_id#116)) + +(502) Exchange +Input [4]: [i_item_sk#113, i_brand_id#114, i_class_id#115, i_category_id#116] +Arguments: hashpartitioning(i_brand_id#114, i_class_id#115, i_category_id#116, 100), ENSURE_REQUIREMENTS, [plan_id=75] + +(503) Sort +Input [4]: [i_item_sk#113, i_brand_id#114, i_class_id#115, i_category_id#116] +Arguments: [i_brand_id#114 ASC NULLS FIRST, i_class_id#115 ASC NULLS FIRST, i_category_id#116 ASC NULLS FIRST], false, 0 + +(504) Scan parquet +Output [2]: [ss_sold_date_sk#117, ss_item_sk#118] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(505) Filter +Input [2]: [ss_sold_date_sk#117, ss_item_sk#118] +Condition : (isnotnull(ss_item_sk#118) AND isnotnull(ss_sold_date_sk#117)) + +(506) Exchange +Input [2]: [ss_sold_date_sk#117, ss_item_sk#118] +Arguments: hashpartitioning(ss_item_sk#118, 100), ENSURE_REQUIREMENTS, [plan_id=76] + +(507) Sort +Input [2]: [ss_sold_date_sk#117, ss_item_sk#118] +Arguments: [ss_item_sk#118 ASC NULLS FIRST], false, 0 + +(508) Scan parquet +Output [4]: [i_item_sk#119, i_brand_id#120, i_class_id#121, i_category_id#122] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id)] +ReadSchema: struct + +(509) Filter +Input [4]: [i_item_sk#119, i_brand_id#120, i_class_id#121, i_category_id#122] +Condition : (((isnotnull(i_item_sk#119) AND isnotnull(i_brand_id#120)) AND isnotnull(i_class_id#121)) AND isnotnull(i_category_id#122)) + +(510) Exchange +Input [4]: [i_item_sk#119, i_brand_id#120, i_class_id#121, i_category_id#122] +Arguments: hashpartitioning(coalesce(i_brand_id#120, 0), isnull(i_brand_id#120), coalesce(i_class_id#121, 0), isnull(i_class_id#121), coalesce(i_category_id#122, 0), isnull(i_category_id#122), 100), ENSURE_REQUIREMENTS, [plan_id=77] + +(511) Sort +Input [4]: [i_item_sk#119, i_brand_id#120, i_class_id#121, i_category_id#122] +Arguments: [coalesce(i_brand_id#120, 0) ASC NULLS FIRST, isnull(i_brand_id#120) ASC NULLS FIRST, coalesce(i_class_id#121, 0) ASC NULLS FIRST, isnull(i_class_id#121) ASC NULLS FIRST, coalesce(i_category_id#122, 0) ASC NULLS FIRST, isnull(i_category_id#122) ASC NULLS FIRST], false, 0 + +(512) Scan parquet +Output [2]: [cs_sold_date_sk#123, cs_item_sk#124] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(513) Filter +Input [2]: [cs_sold_date_sk#123, cs_item_sk#124] +Condition : (isnotnull(cs_item_sk#124) AND isnotnull(cs_sold_date_sk#123)) + +(514) Exchange +Input [2]: [cs_sold_date_sk#123, cs_item_sk#124] +Arguments: hashpartitioning(cs_item_sk#124, 100), ENSURE_REQUIREMENTS, [plan_id=78] + +(515) Sort +Input [2]: [cs_sold_date_sk#123, cs_item_sk#124] +Arguments: [cs_item_sk#124 ASC NULLS FIRST], false, 0 + +(516) Scan parquet +Output [4]: [i_item_sk#125, i_brand_id#126, i_class_id#127, i_category_id#128] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(517) Filter +Input [4]: [i_item_sk#125, i_brand_id#126, i_class_id#127, i_category_id#128] +Condition : isnotnull(i_item_sk#125) + +(518) Exchange +Input [4]: [i_item_sk#125, i_brand_id#126, i_class_id#127, i_category_id#128] +Arguments: hashpartitioning(i_item_sk#125, 100), ENSURE_REQUIREMENTS, [plan_id=79] + +(519) Sort +Input [4]: [i_item_sk#125, i_brand_id#126, i_class_id#127, i_category_id#128] +Arguments: [i_item_sk#125 ASC NULLS FIRST], false, 0 + +(520) SortMergeJoin +Left keys [1]: [cs_item_sk#124] +Right keys [1]: [i_item_sk#125] +Join type: Inner +Join condition: None + +(521) Project +Output [4]: [cs_sold_date_sk#123, i_brand_id#126, i_class_id#127, i_category_id#128] +Input [6]: [cs_sold_date_sk#123, cs_item_sk#124, i_item_sk#125, i_brand_id#126, i_class_id#127, i_category_id#128] + +(522) Exchange +Input [4]: [cs_sold_date_sk#123, i_brand_id#126, i_class_id#127, i_category_id#128] +Arguments: hashpartitioning(cs_sold_date_sk#123, 100), ENSURE_REQUIREMENTS, [plan_id=80] + +(523) Sort +Input [4]: [cs_sold_date_sk#123, i_brand_id#126, i_class_id#127, i_category_id#128] +Arguments: [cs_sold_date_sk#123 ASC NULLS FIRST], false, 0 + +(524) Scan parquet +Output [2]: [d_date_sk#129, d_year#130] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(525) Filter +Input [2]: [d_date_sk#129, d_year#130] +Condition : (((isnotnull(d_year#130) AND (d_year#130 >= 1999)) AND (d_year#130 <= 2001)) AND isnotnull(d_date_sk#129)) + +(526) Project +Output [1]: [d_date_sk#129] +Input [2]: [d_date_sk#129, d_year#130] + +(527) Exchange +Input [1]: [d_date_sk#129] +Arguments: hashpartitioning(d_date_sk#129, 100), ENSURE_REQUIREMENTS, [plan_id=81] + +(528) Sort +Input [1]: [d_date_sk#129] +Arguments: [d_date_sk#129 ASC NULLS FIRST], false, 0 + +(529) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#123] +Right keys [1]: [d_date_sk#129] +Join type: Inner +Join condition: None + +(530) Project +Output [3]: [i_brand_id#126, i_class_id#127, i_category_id#128] +Input [5]: [cs_sold_date_sk#123, i_brand_id#126, i_class_id#127, i_category_id#128, d_date_sk#129] + +(531) Exchange +Input [3]: [i_brand_id#126, i_class_id#127, i_category_id#128] +Arguments: hashpartitioning(coalesce(i_brand_id#126, 0), isnull(i_brand_id#126), coalesce(i_class_id#127, 0), isnull(i_class_id#127), coalesce(i_category_id#128, 0), isnull(i_category_id#128), 100), ENSURE_REQUIREMENTS, [plan_id=82] + +(532) Sort +Input [3]: [i_brand_id#126, i_class_id#127, i_category_id#128] +Arguments: [coalesce(i_brand_id#126, 0) ASC NULLS FIRST, isnull(i_brand_id#126) ASC NULLS FIRST, coalesce(i_class_id#127, 0) ASC NULLS FIRST, isnull(i_class_id#127) ASC NULLS FIRST, coalesce(i_category_id#128, 0) ASC NULLS FIRST, isnull(i_category_id#128) ASC NULLS FIRST], false, 0 + +(533) SortMergeJoin +Left keys [6]: [coalesce(i_brand_id#120, 0), isnull(i_brand_id#120), coalesce(i_class_id#121, 0), isnull(i_class_id#121), coalesce(i_category_id#122, 0), isnull(i_category_id#122)] +Right keys [6]: [coalesce(i_brand_id#126, 0), isnull(i_brand_id#126), coalesce(i_class_id#127, 0), isnull(i_class_id#127), coalesce(i_category_id#128, 0), isnull(i_category_id#128)] +Join type: LeftSemi +Join condition: None + +(534) Exchange +Input [4]: [i_item_sk#119, i_brand_id#120, i_class_id#121, i_category_id#122] +Arguments: hashpartitioning(i_item_sk#119, 100), ENSURE_REQUIREMENTS, [plan_id=83] + +(535) Sort +Input [4]: [i_item_sk#119, i_brand_id#120, i_class_id#121, i_category_id#122] +Arguments: [i_item_sk#119 ASC NULLS FIRST], false, 0 + +(536) SortMergeJoin +Left keys [1]: [ss_item_sk#118] +Right keys [1]: [i_item_sk#119] +Join type: Inner +Join condition: None + +(537) Project +Output [4]: [ss_sold_date_sk#117, i_brand_id#120, i_class_id#121, i_category_id#122] +Input [6]: [ss_sold_date_sk#117, ss_item_sk#118, i_item_sk#119, i_brand_id#120, i_class_id#121, i_category_id#122] + +(538) Exchange +Input [4]: [ss_sold_date_sk#117, i_brand_id#120, i_class_id#121, i_category_id#122] +Arguments: hashpartitioning(ss_sold_date_sk#117, 100), ENSURE_REQUIREMENTS, [plan_id=84] + +(539) Sort +Input [4]: [ss_sold_date_sk#117, i_brand_id#120, i_class_id#121, i_category_id#122] +Arguments: [ss_sold_date_sk#117 ASC NULLS FIRST], false, 0 + +(540) Scan parquet +Output [2]: [d_date_sk#131, d_year#132] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(541) Filter +Input [2]: [d_date_sk#131, d_year#132] +Condition : (((isnotnull(d_year#132) AND (d_year#132 >= 1999)) AND (d_year#132 <= 2001)) AND isnotnull(d_date_sk#131)) + +(542) Project +Output [1]: [d_date_sk#131] +Input [2]: [d_date_sk#131, d_year#132] + +(543) Exchange +Input [1]: [d_date_sk#131] +Arguments: hashpartitioning(d_date_sk#131, 100), ENSURE_REQUIREMENTS, [plan_id=85] + +(544) Sort +Input [1]: [d_date_sk#131] +Arguments: [d_date_sk#131 ASC NULLS FIRST], false, 0 + +(545) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#117] +Right keys [1]: [d_date_sk#131] +Join type: Inner +Join condition: None + +(546) Project +Output [3]: [i_brand_id#120 AS brand_id#24, i_class_id#121 AS class_id#25, i_category_id#122 AS category_id#26] +Input [5]: [ss_sold_date_sk#117, i_brand_id#120, i_class_id#121, i_category_id#122, d_date_sk#131] + +(547) HashAggregate +Input [3]: [brand_id#24, class_id#25, category_id#26] +Keys [3]: [brand_id#24, class_id#25, category_id#26] +Functions: [] +Aggregate Attributes: [] +Results [3]: [brand_id#24, class_id#25, category_id#26] + +(548) Exchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(brand_id#24, class_id#25, category_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=86] + +(549) HashAggregate +Input [3]: [brand_id#24, class_id#25, category_id#26] +Keys [3]: [brand_id#24, class_id#25, category_id#26] +Functions: [] +Aggregate Attributes: [] +Results [3]: [brand_id#24, class_id#25, category_id#26] + +(550) Exchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(coalesce(brand_id#24, 0), isnull(brand_id#24), coalesce(class_id#25, 0), isnull(class_id#25), coalesce(category_id#26, 0), isnull(category_id#26), 100), ENSURE_REQUIREMENTS, [plan_id=87] + +(551) Sort +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: [coalesce(brand_id#24, 0) ASC NULLS FIRST, isnull(brand_id#24) ASC NULLS FIRST, coalesce(class_id#25, 0) ASC NULLS FIRST, isnull(class_id#25) ASC NULLS FIRST, coalesce(category_id#26, 0) ASC NULLS FIRST, isnull(category_id#26) ASC NULLS FIRST], false, 0 + +(552) Scan parquet +Output [2]: [ws_sold_date_sk#133, ws_item_sk#134] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(553) Filter +Input [2]: [ws_sold_date_sk#133, ws_item_sk#134] +Condition : (isnotnull(ws_item_sk#134) AND isnotnull(ws_sold_date_sk#133)) + +(554) Exchange +Input [2]: [ws_sold_date_sk#133, ws_item_sk#134] +Arguments: hashpartitioning(ws_item_sk#134, 100), ENSURE_REQUIREMENTS, [plan_id=88] + +(555) Sort +Input [2]: [ws_sold_date_sk#133, ws_item_sk#134] +Arguments: [ws_item_sk#134 ASC NULLS FIRST], false, 0 + +(556) Scan parquet +Output [4]: [i_item_sk#135, i_brand_id#136, i_class_id#137, i_category_id#138] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(557) Filter +Input [4]: [i_item_sk#135, i_brand_id#136, i_class_id#137, i_category_id#138] +Condition : isnotnull(i_item_sk#135) + +(558) Exchange +Input [4]: [i_item_sk#135, i_brand_id#136, i_class_id#137, i_category_id#138] +Arguments: hashpartitioning(i_item_sk#135, 100), ENSURE_REQUIREMENTS, [plan_id=89] + +(559) Sort +Input [4]: [i_item_sk#135, i_brand_id#136, i_class_id#137, i_category_id#138] +Arguments: [i_item_sk#135 ASC NULLS FIRST], false, 0 + +(560) SortMergeJoin +Left keys [1]: [ws_item_sk#134] +Right keys [1]: [i_item_sk#135] +Join type: Inner +Join condition: None + +(561) Project +Output [4]: [ws_sold_date_sk#133, i_brand_id#136, i_class_id#137, i_category_id#138] +Input [6]: [ws_sold_date_sk#133, ws_item_sk#134, i_item_sk#135, i_brand_id#136, i_class_id#137, i_category_id#138] + +(562) Exchange +Input [4]: [ws_sold_date_sk#133, i_brand_id#136, i_class_id#137, i_category_id#138] +Arguments: hashpartitioning(ws_sold_date_sk#133, 100), ENSURE_REQUIREMENTS, [plan_id=90] + +(563) Sort +Input [4]: [ws_sold_date_sk#133, i_brand_id#136, i_class_id#137, i_category_id#138] +Arguments: [ws_sold_date_sk#133 ASC NULLS FIRST], false, 0 + +(564) Scan parquet +Output [2]: [d_date_sk#139, d_year#140] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(565) Filter +Input [2]: [d_date_sk#139, d_year#140] +Condition : (((isnotnull(d_year#140) AND (d_year#140 >= 1999)) AND (d_year#140 <= 2001)) AND isnotnull(d_date_sk#139)) + +(566) Project +Output [1]: [d_date_sk#139] +Input [2]: [d_date_sk#139, d_year#140] + +(567) Exchange +Input [1]: [d_date_sk#139] +Arguments: hashpartitioning(d_date_sk#139, 100), ENSURE_REQUIREMENTS, [plan_id=91] + +(568) Sort +Input [1]: [d_date_sk#139] +Arguments: [d_date_sk#139 ASC NULLS FIRST], false, 0 + +(569) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#133] +Right keys [1]: [d_date_sk#139] +Join type: Inner +Join condition: None + +(570) Project +Output [3]: [i_brand_id#136, i_class_id#137, i_category_id#138] +Input [5]: [ws_sold_date_sk#133, i_brand_id#136, i_class_id#137, i_category_id#138, d_date_sk#139] + +(571) Exchange +Input [3]: [i_brand_id#136, i_class_id#137, i_category_id#138] +Arguments: hashpartitioning(coalesce(i_brand_id#136, 0), isnull(i_brand_id#136), coalesce(i_class_id#137, 0), isnull(i_class_id#137), coalesce(i_category_id#138, 0), isnull(i_category_id#138), 100), ENSURE_REQUIREMENTS, [plan_id=92] + +(572) Sort +Input [3]: [i_brand_id#136, i_class_id#137, i_category_id#138] +Arguments: [coalesce(i_brand_id#136, 0) ASC NULLS FIRST, isnull(i_brand_id#136) ASC NULLS FIRST, coalesce(i_class_id#137, 0) ASC NULLS FIRST, isnull(i_class_id#137) ASC NULLS FIRST, coalesce(i_category_id#138, 0) ASC NULLS FIRST, isnull(i_category_id#138) ASC NULLS FIRST], false, 0 + +(573) SortMergeJoin +Left keys [6]: [coalesce(brand_id#24, 0), isnull(brand_id#24), coalesce(class_id#25, 0), isnull(class_id#25), coalesce(category_id#26, 0), isnull(category_id#26)] +Right keys [6]: [coalesce(i_brand_id#136, 0), isnull(i_brand_id#136), coalesce(i_class_id#137, 0), isnull(i_class_id#137), coalesce(i_category_id#138, 0), isnull(i_category_id#138)] +Join type: LeftSemi +Join condition: None + +(574) Exchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(brand_id#24, class_id#25, category_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=93] + +(575) Sort +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: [brand_id#24 ASC NULLS FIRST, class_id#25 ASC NULLS FIRST, category_id#26 ASC NULLS FIRST], false, 0 + +(576) SortMergeJoin +Left keys [3]: [i_brand_id#114, i_class_id#115, i_category_id#116] +Right keys [3]: [brand_id#24, class_id#25, category_id#26] +Join type: Inner +Join condition: None + +(577) Project +Output [1]: [i_item_sk#113 AS ss_item_sk#61] +Input [7]: [i_item_sk#113, i_brand_id#114, i_class_id#115, i_category_id#116, brand_id#24, class_id#25, category_id#26] + +(578) Exchange +Input [1]: [ss_item_sk#61] +Arguments: hashpartitioning(ss_item_sk#61, 100), ENSURE_REQUIREMENTS, [plan_id=94] + +(579) Sort +Input [1]: [ss_item_sk#61] +Arguments: [ss_item_sk#61 ASC NULLS FIRST], false, 0 + +(580) SortMergeJoin +Left keys [1]: [cs_item_sk#58] +Right keys [1]: [ss_item_sk#61] +Join type: LeftSemi +Join condition: None + +(581) Scan parquet +Output [4]: [i_item_sk#62, i_brand_id#63, i_class_id#64, i_category_id#65] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(582) Filter +Input [4]: [i_item_sk#62, i_brand_id#63, i_class_id#64, i_category_id#65] +Condition : isnotnull(i_item_sk#62) + +(583) Exchange +Input [4]: [i_item_sk#62, i_brand_id#63, i_class_id#64, i_category_id#65] +Arguments: hashpartitioning(i_item_sk#62, 100), ENSURE_REQUIREMENTS, [plan_id=95] + +(584) Sort +Input [4]: [i_item_sk#62, i_brand_id#63, i_class_id#64, i_category_id#65] +Arguments: [i_item_sk#62 ASC NULLS FIRST], false, 0 + +(585) Scan parquet +Output [4]: [i_item_sk#113, i_brand_id#114, i_class_id#115, i_category_id#116] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id)] +ReadSchema: struct + +(586) Filter +Input [4]: [i_item_sk#113, i_brand_id#114, i_class_id#115, i_category_id#116] +Condition : ((isnotnull(i_brand_id#114) AND isnotnull(i_class_id#115)) AND isnotnull(i_category_id#116)) + +(587) Exchange +Input [4]: [i_item_sk#113, i_brand_id#114, i_class_id#115, i_category_id#116] +Arguments: hashpartitioning(i_brand_id#114, i_class_id#115, i_category_id#116, 100), ENSURE_REQUIREMENTS, [plan_id=96] + +(588) Sort +Input [4]: [i_item_sk#113, i_brand_id#114, i_class_id#115, i_category_id#116] +Arguments: [i_brand_id#114 ASC NULLS FIRST, i_class_id#115 ASC NULLS FIRST, i_category_id#116 ASC NULLS FIRST], false, 0 + +(589) Scan parquet +Output [2]: [ss_sold_date_sk#117, ss_item_sk#118] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(590) Filter +Input [2]: [ss_sold_date_sk#117, ss_item_sk#118] +Condition : (isnotnull(ss_item_sk#118) AND isnotnull(ss_sold_date_sk#117)) + +(591) Exchange +Input [2]: [ss_sold_date_sk#117, ss_item_sk#118] +Arguments: hashpartitioning(ss_item_sk#118, 100), ENSURE_REQUIREMENTS, [plan_id=97] + +(592) Sort +Input [2]: [ss_sold_date_sk#117, ss_item_sk#118] +Arguments: [ss_item_sk#118 ASC NULLS FIRST], false, 0 + +(593) Scan parquet +Output [4]: [i_item_sk#119, i_brand_id#120, i_class_id#121, i_category_id#122] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id)] +ReadSchema: struct + +(594) Filter +Input [4]: [i_item_sk#119, i_brand_id#120, i_class_id#121, i_category_id#122] +Condition : (((isnotnull(i_item_sk#119) AND isnotnull(i_brand_id#120)) AND isnotnull(i_class_id#121)) AND isnotnull(i_category_id#122)) + +(595) Exchange +Input [4]: [i_item_sk#119, i_brand_id#120, i_class_id#121, i_category_id#122] +Arguments: hashpartitioning(coalesce(i_brand_id#120, 0), isnull(i_brand_id#120), coalesce(i_class_id#121, 0), isnull(i_class_id#121), coalesce(i_category_id#122, 0), isnull(i_category_id#122), 100), ENSURE_REQUIREMENTS, [plan_id=98] + +(596) Sort +Input [4]: [i_item_sk#119, i_brand_id#120, i_class_id#121, i_category_id#122] +Arguments: [coalesce(i_brand_id#120, 0) ASC NULLS FIRST, isnull(i_brand_id#120) ASC NULLS FIRST, coalesce(i_class_id#121, 0) ASC NULLS FIRST, isnull(i_class_id#121) ASC NULLS FIRST, coalesce(i_category_id#122, 0) ASC NULLS FIRST, isnull(i_category_id#122) ASC NULLS FIRST], false, 0 + +(597) Scan parquet +Output [2]: [cs_sold_date_sk#123, cs_item_sk#124] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(598) Filter +Input [2]: [cs_sold_date_sk#123, cs_item_sk#124] +Condition : (isnotnull(cs_item_sk#124) AND isnotnull(cs_sold_date_sk#123)) + +(599) Exchange +Input [2]: [cs_sold_date_sk#123, cs_item_sk#124] +Arguments: hashpartitioning(cs_item_sk#124, 100), ENSURE_REQUIREMENTS, [plan_id=99] + +(600) Sort +Input [2]: [cs_sold_date_sk#123, cs_item_sk#124] +Arguments: [cs_item_sk#124 ASC NULLS FIRST], false, 0 + +(601) Scan parquet +Output [4]: [i_item_sk#125, i_brand_id#126, i_class_id#127, i_category_id#128] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(602) Filter +Input [4]: [i_item_sk#125, i_brand_id#126, i_class_id#127, i_category_id#128] +Condition : isnotnull(i_item_sk#125) + +(603) Exchange +Input [4]: [i_item_sk#125, i_brand_id#126, i_class_id#127, i_category_id#128] +Arguments: hashpartitioning(i_item_sk#125, 100), ENSURE_REQUIREMENTS, [plan_id=100] + +(604) Sort +Input [4]: [i_item_sk#125, i_brand_id#126, i_class_id#127, i_category_id#128] +Arguments: [i_item_sk#125 ASC NULLS FIRST], false, 0 + +(605) SortMergeJoin +Left keys [1]: [cs_item_sk#124] +Right keys [1]: [i_item_sk#125] +Join type: Inner +Join condition: None + +(606) Project +Output [4]: [cs_sold_date_sk#123, i_brand_id#126, i_class_id#127, i_category_id#128] +Input [6]: [cs_sold_date_sk#123, cs_item_sk#124, i_item_sk#125, i_brand_id#126, i_class_id#127, i_category_id#128] + +(607) Exchange +Input [4]: [cs_sold_date_sk#123, i_brand_id#126, i_class_id#127, i_category_id#128] +Arguments: hashpartitioning(cs_sold_date_sk#123, 100), ENSURE_REQUIREMENTS, [plan_id=101] + +(608) Sort +Input [4]: [cs_sold_date_sk#123, i_brand_id#126, i_class_id#127, i_category_id#128] +Arguments: [cs_sold_date_sk#123 ASC NULLS FIRST], false, 0 + +(609) Scan parquet +Output [2]: [d_date_sk#129, d_year#130] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(610) Filter +Input [2]: [d_date_sk#129, d_year#130] +Condition : (((isnotnull(d_year#130) AND (d_year#130 >= 1999)) AND (d_year#130 <= 2001)) AND isnotnull(d_date_sk#129)) + +(611) Project +Output [1]: [d_date_sk#129] +Input [2]: [d_date_sk#129, d_year#130] + +(612) Exchange +Input [1]: [d_date_sk#129] +Arguments: hashpartitioning(d_date_sk#129, 100), ENSURE_REQUIREMENTS, [plan_id=102] + +(613) Sort +Input [1]: [d_date_sk#129] +Arguments: [d_date_sk#129 ASC NULLS FIRST], false, 0 + +(614) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#123] +Right keys [1]: [d_date_sk#129] +Join type: Inner +Join condition: None + +(615) Project +Output [3]: [i_brand_id#126, i_class_id#127, i_category_id#128] +Input [5]: [cs_sold_date_sk#123, i_brand_id#126, i_class_id#127, i_category_id#128, d_date_sk#129] + +(616) Exchange +Input [3]: [i_brand_id#126, i_class_id#127, i_category_id#128] +Arguments: hashpartitioning(coalesce(i_brand_id#126, 0), isnull(i_brand_id#126), coalesce(i_class_id#127, 0), isnull(i_class_id#127), coalesce(i_category_id#128, 0), isnull(i_category_id#128), 100), ENSURE_REQUIREMENTS, [plan_id=103] + +(617) Sort +Input [3]: [i_brand_id#126, i_class_id#127, i_category_id#128] +Arguments: [coalesce(i_brand_id#126, 0) ASC NULLS FIRST, isnull(i_brand_id#126) ASC NULLS FIRST, coalesce(i_class_id#127, 0) ASC NULLS FIRST, isnull(i_class_id#127) ASC NULLS FIRST, coalesce(i_category_id#128, 0) ASC NULLS FIRST, isnull(i_category_id#128) ASC NULLS FIRST], false, 0 + +(618) SortMergeJoin +Left keys [6]: [coalesce(i_brand_id#120, 0), isnull(i_brand_id#120), coalesce(i_class_id#121, 0), isnull(i_class_id#121), coalesce(i_category_id#122, 0), isnull(i_category_id#122)] +Right keys [6]: [coalesce(i_brand_id#126, 0), isnull(i_brand_id#126), coalesce(i_class_id#127, 0), isnull(i_class_id#127), coalesce(i_category_id#128, 0), isnull(i_category_id#128)] +Join type: LeftSemi +Join condition: None + +(619) Exchange +Input [4]: [i_item_sk#119, i_brand_id#120, i_class_id#121, i_category_id#122] +Arguments: hashpartitioning(i_item_sk#119, 100), ENSURE_REQUIREMENTS, [plan_id=104] + +(620) Sort +Input [4]: [i_item_sk#119, i_brand_id#120, i_class_id#121, i_category_id#122] +Arguments: [i_item_sk#119 ASC NULLS FIRST], false, 0 + +(621) SortMergeJoin +Left keys [1]: [ss_item_sk#118] +Right keys [1]: [i_item_sk#119] +Join type: Inner +Join condition: None + +(622) Project +Output [4]: [ss_sold_date_sk#117, i_brand_id#120, i_class_id#121, i_category_id#122] +Input [6]: [ss_sold_date_sk#117, ss_item_sk#118, i_item_sk#119, i_brand_id#120, i_class_id#121, i_category_id#122] + +(623) Exchange +Input [4]: [ss_sold_date_sk#117, i_brand_id#120, i_class_id#121, i_category_id#122] +Arguments: hashpartitioning(ss_sold_date_sk#117, 100), ENSURE_REQUIREMENTS, [plan_id=105] + +(624) Sort +Input [4]: [ss_sold_date_sk#117, i_brand_id#120, i_class_id#121, i_category_id#122] +Arguments: [ss_sold_date_sk#117 ASC NULLS FIRST], false, 0 + +(625) Scan parquet +Output [2]: [d_date_sk#131, d_year#132] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(626) Filter +Input [2]: [d_date_sk#131, d_year#132] +Condition : (((isnotnull(d_year#132) AND (d_year#132 >= 1999)) AND (d_year#132 <= 2001)) AND isnotnull(d_date_sk#131)) + +(627) Project +Output [1]: [d_date_sk#131] +Input [2]: [d_date_sk#131, d_year#132] + +(628) Exchange +Input [1]: [d_date_sk#131] +Arguments: hashpartitioning(d_date_sk#131, 100), ENSURE_REQUIREMENTS, [plan_id=106] + +(629) Sort +Input [1]: [d_date_sk#131] +Arguments: [d_date_sk#131 ASC NULLS FIRST], false, 0 + +(630) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#117] +Right keys [1]: [d_date_sk#131] +Join type: Inner +Join condition: None + +(631) Project +Output [3]: [i_brand_id#120 AS brand_id#24, i_class_id#121 AS class_id#25, i_category_id#122 AS category_id#26] +Input [5]: [ss_sold_date_sk#117, i_brand_id#120, i_class_id#121, i_category_id#122, d_date_sk#131] + +(632) HashAggregate +Input [3]: [brand_id#24, class_id#25, category_id#26] +Keys [3]: [brand_id#24, class_id#25, category_id#26] +Functions: [] +Aggregate Attributes: [] +Results [3]: [brand_id#24, class_id#25, category_id#26] + +(633) Exchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(brand_id#24, class_id#25, category_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=107] + +(634) HashAggregate +Input [3]: [brand_id#24, class_id#25, category_id#26] +Keys [3]: [brand_id#24, class_id#25, category_id#26] +Functions: [] +Aggregate Attributes: [] +Results [3]: [brand_id#24, class_id#25, category_id#26] + +(635) Exchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(coalesce(brand_id#24, 0), isnull(brand_id#24), coalesce(class_id#25, 0), isnull(class_id#25), coalesce(category_id#26, 0), isnull(category_id#26), 100), ENSURE_REQUIREMENTS, [plan_id=108] + +(636) Sort +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: [coalesce(brand_id#24, 0) ASC NULLS FIRST, isnull(brand_id#24) ASC NULLS FIRST, coalesce(class_id#25, 0) ASC NULLS FIRST, isnull(class_id#25) ASC NULLS FIRST, coalesce(category_id#26, 0) ASC NULLS FIRST, isnull(category_id#26) ASC NULLS FIRST], false, 0 + +(637) Scan parquet +Output [2]: [ws_sold_date_sk#133, ws_item_sk#134] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(638) Filter +Input [2]: [ws_sold_date_sk#133, ws_item_sk#134] +Condition : (isnotnull(ws_item_sk#134) AND isnotnull(ws_sold_date_sk#133)) + +(639) Exchange +Input [2]: [ws_sold_date_sk#133, ws_item_sk#134] +Arguments: hashpartitioning(ws_item_sk#134, 100), ENSURE_REQUIREMENTS, [plan_id=109] + +(640) Sort +Input [2]: [ws_sold_date_sk#133, ws_item_sk#134] +Arguments: [ws_item_sk#134 ASC NULLS FIRST], false, 0 + +(641) Scan parquet +Output [4]: [i_item_sk#135, i_brand_id#136, i_class_id#137, i_category_id#138] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(642) Filter +Input [4]: [i_item_sk#135, i_brand_id#136, i_class_id#137, i_category_id#138] +Condition : isnotnull(i_item_sk#135) + +(643) Exchange +Input [4]: [i_item_sk#135, i_brand_id#136, i_class_id#137, i_category_id#138] +Arguments: hashpartitioning(i_item_sk#135, 100), ENSURE_REQUIREMENTS, [plan_id=110] + +(644) Sort +Input [4]: [i_item_sk#135, i_brand_id#136, i_class_id#137, i_category_id#138] +Arguments: [i_item_sk#135 ASC NULLS FIRST], false, 0 + +(645) SortMergeJoin +Left keys [1]: [ws_item_sk#134] +Right keys [1]: [i_item_sk#135] +Join type: Inner +Join condition: None + +(646) Project +Output [4]: [ws_sold_date_sk#133, i_brand_id#136, i_class_id#137, i_category_id#138] +Input [6]: [ws_sold_date_sk#133, ws_item_sk#134, i_item_sk#135, i_brand_id#136, i_class_id#137, i_category_id#138] + +(647) Exchange +Input [4]: [ws_sold_date_sk#133, i_brand_id#136, i_class_id#137, i_category_id#138] +Arguments: hashpartitioning(ws_sold_date_sk#133, 100), ENSURE_REQUIREMENTS, [plan_id=111] + +(648) Sort +Input [4]: [ws_sold_date_sk#133, i_brand_id#136, i_class_id#137, i_category_id#138] +Arguments: [ws_sold_date_sk#133 ASC NULLS FIRST], false, 0 + +(649) Scan parquet +Output [2]: [d_date_sk#139, d_year#140] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(650) Filter +Input [2]: [d_date_sk#139, d_year#140] +Condition : (((isnotnull(d_year#140) AND (d_year#140 >= 1999)) AND (d_year#140 <= 2001)) AND isnotnull(d_date_sk#139)) + +(651) Project +Output [1]: [d_date_sk#139] +Input [2]: [d_date_sk#139, d_year#140] + +(652) Exchange +Input [1]: [d_date_sk#139] +Arguments: hashpartitioning(d_date_sk#139, 100), ENSURE_REQUIREMENTS, [plan_id=112] + +(653) Sort +Input [1]: [d_date_sk#139] +Arguments: [d_date_sk#139 ASC NULLS FIRST], false, 0 + +(654) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#133] +Right keys [1]: [d_date_sk#139] +Join type: Inner +Join condition: None + +(655) Project +Output [3]: [i_brand_id#136, i_class_id#137, i_category_id#138] +Input [5]: [ws_sold_date_sk#133, i_brand_id#136, i_class_id#137, i_category_id#138, d_date_sk#139] + +(656) Exchange +Input [3]: [i_brand_id#136, i_class_id#137, i_category_id#138] +Arguments: hashpartitioning(coalesce(i_brand_id#136, 0), isnull(i_brand_id#136), coalesce(i_class_id#137, 0), isnull(i_class_id#137), coalesce(i_category_id#138, 0), isnull(i_category_id#138), 100), ENSURE_REQUIREMENTS, [plan_id=113] + +(657) Sort +Input [3]: [i_brand_id#136, i_class_id#137, i_category_id#138] +Arguments: [coalesce(i_brand_id#136, 0) ASC NULLS FIRST, isnull(i_brand_id#136) ASC NULLS FIRST, coalesce(i_class_id#137, 0) ASC NULLS FIRST, isnull(i_class_id#137) ASC NULLS FIRST, coalesce(i_category_id#138, 0) ASC NULLS FIRST, isnull(i_category_id#138) ASC NULLS FIRST], false, 0 + +(658) SortMergeJoin +Left keys [6]: [coalesce(brand_id#24, 0), isnull(brand_id#24), coalesce(class_id#25, 0), isnull(class_id#25), coalesce(category_id#26, 0), isnull(category_id#26)] +Right keys [6]: [coalesce(i_brand_id#136, 0), isnull(i_brand_id#136), coalesce(i_class_id#137, 0), isnull(i_class_id#137), coalesce(i_category_id#138, 0), isnull(i_category_id#138)] +Join type: LeftSemi +Join condition: None + +(659) Exchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(brand_id#24, class_id#25, category_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=114] + +(660) Sort +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: [brand_id#24 ASC NULLS FIRST, class_id#25 ASC NULLS FIRST, category_id#26 ASC NULLS FIRST], false, 0 + +(661) SortMergeJoin +Left keys [3]: [i_brand_id#114, i_class_id#115, i_category_id#116] +Right keys [3]: [brand_id#24, class_id#25, category_id#26] +Join type: Inner +Join condition: None + +(662) Project +Output [1]: [i_item_sk#113 AS ss_item_sk#61] +Input [7]: [i_item_sk#113, i_brand_id#114, i_class_id#115, i_category_id#116, brand_id#24, class_id#25, category_id#26] + +(663) Exchange +Input [1]: [ss_item_sk#61] +Arguments: hashpartitioning(ss_item_sk#61, 100), ENSURE_REQUIREMENTS, [plan_id=115] + +(664) Sort +Input [1]: [ss_item_sk#61] +Arguments: [ss_item_sk#61 ASC NULLS FIRST], false, 0 + +(665) SortMergeJoin +Left keys [1]: [i_item_sk#62] +Right keys [1]: [ss_item_sk#61] +Join type: LeftSemi +Join condition: None + +(666) SortMergeJoin +Left keys [1]: [cs_item_sk#58] +Right keys [1]: [i_item_sk#62] +Join type: Inner +Join condition: None + +(667) Project +Output [6]: [cs_sold_date_sk#57, cs_quantity#59, cs_list_price#60, i_brand_id#63, i_class_id#64, i_category_id#65] +Input [8]: [cs_sold_date_sk#57, cs_item_sk#58, cs_quantity#59, cs_list_price#60, i_item_sk#62, i_brand_id#63, i_class_id#64, i_category_id#65] + +(668) Exchange +Input [6]: [cs_sold_date_sk#57, cs_quantity#59, cs_list_price#60, i_brand_id#63, i_class_id#64, i_category_id#65] +Arguments: hashpartitioning(cs_sold_date_sk#57, 100), ENSURE_REQUIREMENTS, [plan_id=116] + +(669) Sort +Input [6]: [cs_sold_date_sk#57, cs_quantity#59, cs_list_price#60, i_brand_id#63, i_class_id#64, i_category_id#65] +Arguments: [cs_sold_date_sk#57 ASC NULLS FIRST], false, 0 + +(670) Scan parquet +Output [3]: [d_date_sk#66, d_year#141, d_moy#142] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), EqualTo(d_moy,11), IsNotNull(d_date_sk)] +ReadSchema: struct + +(671) Filter +Input [3]: [d_date_sk#66, d_year#141, d_moy#142] +Condition : ((((isnotnull(d_year#141) AND isnotnull(d_moy#142)) AND (d_year#141 = 2001)) AND (d_moy#142 = 11)) AND isnotnull(d_date_sk#66)) + +(672) Project +Output [1]: [d_date_sk#66] +Input [3]: [d_date_sk#66, d_year#141, d_moy#142] + +(673) Exchange +Input [1]: [d_date_sk#66] +Arguments: hashpartitioning(d_date_sk#66, 100), ENSURE_REQUIREMENTS, [plan_id=117] + +(674) Sort +Input [1]: [d_date_sk#66] +Arguments: [d_date_sk#66 ASC NULLS FIRST], false, 0 + +(675) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#57] +Right keys [1]: [d_date_sk#66] +Join type: Inner +Join condition: None + +(676) Project +Output [5]: [cs_quantity#59, cs_list_price#60, i_brand_id#63, i_class_id#64, i_category_id#65] +Input [7]: [cs_sold_date_sk#57, cs_quantity#59, cs_list_price#60, i_brand_id#63, i_class_id#64, i_category_id#65, d_date_sk#66] + +(677) HashAggregate +Input [5]: [cs_quantity#59, cs_list_price#60, i_brand_id#63, i_class_id#64, i_category_id#65] +Keys [3]: [i_brand_id#63, i_class_id#64, i_category_id#65] +Functions [2]: [partial_sum((cast(cs_quantity#59 as decimal(10,0)) * cs_list_price#60)), partial_count(1)] +Aggregate Attributes [3]: [sum#68, isEmpty#69, count#70] +Results [6]: [i_brand_id#63, i_class_id#64, i_category_id#65, sum#143, isEmpty#144, count#145] + +(678) Exchange +Input [6]: [i_brand_id#63, i_class_id#64, i_category_id#65, sum#143, isEmpty#144, count#145] +Arguments: hashpartitioning(i_brand_id#63, i_class_id#64, i_category_id#65, 100), ENSURE_REQUIREMENTS, [plan_id=118] + +(679) HashAggregate +Input [6]: [i_brand_id#63, i_class_id#64, i_category_id#65, sum#143, isEmpty#144, count#145] +Keys [3]: [i_brand_id#63, i_class_id#64, i_category_id#65] +Functions [2]: [sum((cast(cs_quantity#59 as decimal(10,0)) * cs_list_price#60)), count(1)] +Aggregate Attributes [2]: [sum((cast(cs_quantity#59 as decimal(10,0)) * cs_list_price#60))#71, count(1)#72] +Results [5]: [i_brand_id#63, i_class_id#64, i_category_id#65, sum((cast(cs_quantity#59 as decimal(10,0)) * cs_list_price#60))#71 AS sales#73, count(1)#72 AS number_sales#74] + +(680) Filter +Input [5]: [i_brand_id#63, i_class_id#64, i_category_id#65, sales#73, number_sales#74] +Condition : (isnotnull(sales#73) AND (cast(sales#73 as decimal(32,6)) > cast(Subquery subquery#146, [id=#147] as decimal(32,6)))) + +(681) Project +Output [6]: [sales#73, number_sales#74, catalog AS channel#75, i_brand_id#63, i_class_id#64, i_category_id#65] +Input [5]: [i_brand_id#63, i_class_id#64, i_category_id#65, sales#73, number_sales#74] + +(682) Scan parquet +Output [4]: [ws_sold_date_sk#76, ws_item_sk#77, ws_quantity#78, ws_list_price#79] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(683) Filter +Input [4]: [ws_sold_date_sk#76, ws_item_sk#77, ws_quantity#78, ws_list_price#79] +Condition : (isnotnull(ws_item_sk#77) AND isnotnull(ws_sold_date_sk#76)) + +(684) Exchange +Input [4]: [ws_sold_date_sk#76, ws_item_sk#77, ws_quantity#78, ws_list_price#79] +Arguments: hashpartitioning(ws_item_sk#77, 100), ENSURE_REQUIREMENTS, [plan_id=119] + +(685) Sort +Input [4]: [ws_sold_date_sk#76, ws_item_sk#77, ws_quantity#78, ws_list_price#79] +Arguments: [ws_item_sk#77 ASC NULLS FIRST], false, 0 + +(686) Scan parquet +Output [4]: [i_item_sk#148, i_brand_id#149, i_class_id#150, i_category_id#151] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id)] +ReadSchema: struct + +(687) Filter +Input [4]: [i_item_sk#148, i_brand_id#149, i_class_id#150, i_category_id#151] +Condition : ((isnotnull(i_brand_id#149) AND isnotnull(i_class_id#150)) AND isnotnull(i_category_id#151)) + +(688) Exchange +Input [4]: [i_item_sk#148, i_brand_id#149, i_class_id#150, i_category_id#151] +Arguments: hashpartitioning(i_brand_id#149, i_class_id#150, i_category_id#151, 100), ENSURE_REQUIREMENTS, [plan_id=120] + +(689) Sort +Input [4]: [i_item_sk#148, i_brand_id#149, i_class_id#150, i_category_id#151] +Arguments: [i_brand_id#149 ASC NULLS FIRST, i_class_id#150 ASC NULLS FIRST, i_category_id#151 ASC NULLS FIRST], false, 0 + +(690) Scan parquet +Output [2]: [ss_sold_date_sk#152, ss_item_sk#153] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(691) Filter +Input [2]: [ss_sold_date_sk#152, ss_item_sk#153] +Condition : (isnotnull(ss_item_sk#153) AND isnotnull(ss_sold_date_sk#152)) + +(692) Exchange +Input [2]: [ss_sold_date_sk#152, ss_item_sk#153] +Arguments: hashpartitioning(ss_item_sk#153, 100), ENSURE_REQUIREMENTS, [plan_id=121] + +(693) Sort +Input [2]: [ss_sold_date_sk#152, ss_item_sk#153] +Arguments: [ss_item_sk#153 ASC NULLS FIRST], false, 0 + +(694) Scan parquet +Output [4]: [i_item_sk#154, i_brand_id#155, i_class_id#156, i_category_id#157] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id)] +ReadSchema: struct + +(695) Filter +Input [4]: [i_item_sk#154, i_brand_id#155, i_class_id#156, i_category_id#157] +Condition : (((isnotnull(i_item_sk#154) AND isnotnull(i_brand_id#155)) AND isnotnull(i_class_id#156)) AND isnotnull(i_category_id#157)) + +(696) Exchange +Input [4]: [i_item_sk#154, i_brand_id#155, i_class_id#156, i_category_id#157] +Arguments: hashpartitioning(coalesce(i_brand_id#155, 0), isnull(i_brand_id#155), coalesce(i_class_id#156, 0), isnull(i_class_id#156), coalesce(i_category_id#157, 0), isnull(i_category_id#157), 100), ENSURE_REQUIREMENTS, [plan_id=122] + +(697) Sort +Input [4]: [i_item_sk#154, i_brand_id#155, i_class_id#156, i_category_id#157] +Arguments: [coalesce(i_brand_id#155, 0) ASC NULLS FIRST, isnull(i_brand_id#155) ASC NULLS FIRST, coalesce(i_class_id#156, 0) ASC NULLS FIRST, isnull(i_class_id#156) ASC NULLS FIRST, coalesce(i_category_id#157, 0) ASC NULLS FIRST, isnull(i_category_id#157) ASC NULLS FIRST], false, 0 + +(698) Scan parquet +Output [2]: [cs_sold_date_sk#158, cs_item_sk#159] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(699) Filter +Input [2]: [cs_sold_date_sk#158, cs_item_sk#159] +Condition : (isnotnull(cs_item_sk#159) AND isnotnull(cs_sold_date_sk#158)) + +(700) Exchange +Input [2]: [cs_sold_date_sk#158, cs_item_sk#159] +Arguments: hashpartitioning(cs_item_sk#159, 100), ENSURE_REQUIREMENTS, [plan_id=123] + +(701) Sort +Input [2]: [cs_sold_date_sk#158, cs_item_sk#159] +Arguments: [cs_item_sk#159 ASC NULLS FIRST], false, 0 + +(702) Scan parquet +Output [4]: [i_item_sk#160, i_brand_id#161, i_class_id#162, i_category_id#163] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(703) Filter +Input [4]: [i_item_sk#160, i_brand_id#161, i_class_id#162, i_category_id#163] +Condition : isnotnull(i_item_sk#160) + +(704) Exchange +Input [4]: [i_item_sk#160, i_brand_id#161, i_class_id#162, i_category_id#163] +Arguments: hashpartitioning(i_item_sk#160, 100), ENSURE_REQUIREMENTS, [plan_id=124] + +(705) Sort +Input [4]: [i_item_sk#160, i_brand_id#161, i_class_id#162, i_category_id#163] +Arguments: [i_item_sk#160 ASC NULLS FIRST], false, 0 + +(706) SortMergeJoin +Left keys [1]: [cs_item_sk#159] +Right keys [1]: [i_item_sk#160] +Join type: Inner +Join condition: None + +(707) Project +Output [4]: [cs_sold_date_sk#158, i_brand_id#161, i_class_id#162, i_category_id#163] +Input [6]: [cs_sold_date_sk#158, cs_item_sk#159, i_item_sk#160, i_brand_id#161, i_class_id#162, i_category_id#163] + +(708) Exchange +Input [4]: [cs_sold_date_sk#158, i_brand_id#161, i_class_id#162, i_category_id#163] +Arguments: hashpartitioning(cs_sold_date_sk#158, 100), ENSURE_REQUIREMENTS, [plan_id=125] + +(709) Sort +Input [4]: [cs_sold_date_sk#158, i_brand_id#161, i_class_id#162, i_category_id#163] +Arguments: [cs_sold_date_sk#158 ASC NULLS FIRST], false, 0 + +(710) Scan parquet +Output [2]: [d_date_sk#164, d_year#165] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(711) Filter +Input [2]: [d_date_sk#164, d_year#165] +Condition : (((isnotnull(d_year#165) AND (d_year#165 >= 1999)) AND (d_year#165 <= 2001)) AND isnotnull(d_date_sk#164)) + +(712) Project +Output [1]: [d_date_sk#164] +Input [2]: [d_date_sk#164, d_year#165] + +(713) Exchange +Input [1]: [d_date_sk#164] +Arguments: hashpartitioning(d_date_sk#164, 100), ENSURE_REQUIREMENTS, [plan_id=126] + +(714) Sort +Input [1]: [d_date_sk#164] +Arguments: [d_date_sk#164 ASC NULLS FIRST], false, 0 + +(715) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#158] +Right keys [1]: [d_date_sk#164] +Join type: Inner +Join condition: None + +(716) Project +Output [3]: [i_brand_id#161, i_class_id#162, i_category_id#163] +Input [5]: [cs_sold_date_sk#158, i_brand_id#161, i_class_id#162, i_category_id#163, d_date_sk#164] + +(717) Exchange +Input [3]: [i_brand_id#161, i_class_id#162, i_category_id#163] +Arguments: hashpartitioning(coalesce(i_brand_id#161, 0), isnull(i_brand_id#161), coalesce(i_class_id#162, 0), isnull(i_class_id#162), coalesce(i_category_id#163, 0), isnull(i_category_id#163), 100), ENSURE_REQUIREMENTS, [plan_id=127] + +(718) Sort +Input [3]: [i_brand_id#161, i_class_id#162, i_category_id#163] +Arguments: [coalesce(i_brand_id#161, 0) ASC NULLS FIRST, isnull(i_brand_id#161) ASC NULLS FIRST, coalesce(i_class_id#162, 0) ASC NULLS FIRST, isnull(i_class_id#162) ASC NULLS FIRST, coalesce(i_category_id#163, 0) ASC NULLS FIRST, isnull(i_category_id#163) ASC NULLS FIRST], false, 0 + +(719) SortMergeJoin +Left keys [6]: [coalesce(i_brand_id#155, 0), isnull(i_brand_id#155), coalesce(i_class_id#156, 0), isnull(i_class_id#156), coalesce(i_category_id#157, 0), isnull(i_category_id#157)] +Right keys [6]: [coalesce(i_brand_id#161, 0), isnull(i_brand_id#161), coalesce(i_class_id#162, 0), isnull(i_class_id#162), coalesce(i_category_id#163, 0), isnull(i_category_id#163)] +Join type: LeftSemi +Join condition: None + +(720) Exchange +Input [4]: [i_item_sk#154, i_brand_id#155, i_class_id#156, i_category_id#157] +Arguments: hashpartitioning(i_item_sk#154, 100), ENSURE_REQUIREMENTS, [plan_id=128] + +(721) Sort +Input [4]: [i_item_sk#154, i_brand_id#155, i_class_id#156, i_category_id#157] +Arguments: [i_item_sk#154 ASC NULLS FIRST], false, 0 + +(722) SortMergeJoin +Left keys [1]: [ss_item_sk#153] +Right keys [1]: [i_item_sk#154] +Join type: Inner +Join condition: None + +(723) Project +Output [4]: [ss_sold_date_sk#152, i_brand_id#155, i_class_id#156, i_category_id#157] +Input [6]: [ss_sold_date_sk#152, ss_item_sk#153, i_item_sk#154, i_brand_id#155, i_class_id#156, i_category_id#157] + +(724) Exchange +Input [4]: [ss_sold_date_sk#152, i_brand_id#155, i_class_id#156, i_category_id#157] +Arguments: hashpartitioning(ss_sold_date_sk#152, 100), ENSURE_REQUIREMENTS, [plan_id=129] + +(725) Sort +Input [4]: [ss_sold_date_sk#152, i_brand_id#155, i_class_id#156, i_category_id#157] +Arguments: [ss_sold_date_sk#152 ASC NULLS FIRST], false, 0 + +(726) Scan parquet +Output [2]: [d_date_sk#166, d_year#167] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(727) Filter +Input [2]: [d_date_sk#166, d_year#167] +Condition : (((isnotnull(d_year#167) AND (d_year#167 >= 1999)) AND (d_year#167 <= 2001)) AND isnotnull(d_date_sk#166)) + +(728) Project +Output [1]: [d_date_sk#166] +Input [2]: [d_date_sk#166, d_year#167] + +(729) Exchange +Input [1]: [d_date_sk#166] +Arguments: hashpartitioning(d_date_sk#166, 100), ENSURE_REQUIREMENTS, [plan_id=130] + +(730) Sort +Input [1]: [d_date_sk#166] +Arguments: [d_date_sk#166 ASC NULLS FIRST], false, 0 + +(731) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#152] +Right keys [1]: [d_date_sk#166] +Join type: Inner +Join condition: None + +(732) Project +Output [3]: [i_brand_id#155 AS brand_id#24, i_class_id#156 AS class_id#25, i_category_id#157 AS category_id#26] +Input [5]: [ss_sold_date_sk#152, i_brand_id#155, i_class_id#156, i_category_id#157, d_date_sk#166] + +(733) HashAggregate +Input [3]: [brand_id#24, class_id#25, category_id#26] +Keys [3]: [brand_id#24, class_id#25, category_id#26] +Functions: [] +Aggregate Attributes: [] +Results [3]: [brand_id#24, class_id#25, category_id#26] + +(734) Exchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(brand_id#24, class_id#25, category_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=131] + +(735) HashAggregate +Input [3]: [brand_id#24, class_id#25, category_id#26] +Keys [3]: [brand_id#24, class_id#25, category_id#26] +Functions: [] +Aggregate Attributes: [] +Results [3]: [brand_id#24, class_id#25, category_id#26] + +(736) Exchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(coalesce(brand_id#24, 0), isnull(brand_id#24), coalesce(class_id#25, 0), isnull(class_id#25), coalesce(category_id#26, 0), isnull(category_id#26), 100), ENSURE_REQUIREMENTS, [plan_id=132] + +(737) Sort +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: [coalesce(brand_id#24, 0) ASC NULLS FIRST, isnull(brand_id#24) ASC NULLS FIRST, coalesce(class_id#25, 0) ASC NULLS FIRST, isnull(class_id#25) ASC NULLS FIRST, coalesce(category_id#26, 0) ASC NULLS FIRST, isnull(category_id#26) ASC NULLS FIRST], false, 0 + +(738) Scan parquet +Output [2]: [ws_sold_date_sk#168, ws_item_sk#169] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(739) Filter +Input [2]: [ws_sold_date_sk#168, ws_item_sk#169] +Condition : (isnotnull(ws_item_sk#169) AND isnotnull(ws_sold_date_sk#168)) + +(740) Exchange +Input [2]: [ws_sold_date_sk#168, ws_item_sk#169] +Arguments: hashpartitioning(ws_item_sk#169, 100), ENSURE_REQUIREMENTS, [plan_id=133] + +(741) Sort +Input [2]: [ws_sold_date_sk#168, ws_item_sk#169] +Arguments: [ws_item_sk#169 ASC NULLS FIRST], false, 0 + +(742) Scan parquet +Output [4]: [i_item_sk#170, i_brand_id#171, i_class_id#172, i_category_id#173] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(743) Filter +Input [4]: [i_item_sk#170, i_brand_id#171, i_class_id#172, i_category_id#173] +Condition : isnotnull(i_item_sk#170) + +(744) Exchange +Input [4]: [i_item_sk#170, i_brand_id#171, i_class_id#172, i_category_id#173] +Arguments: hashpartitioning(i_item_sk#170, 100), ENSURE_REQUIREMENTS, [plan_id=134] + +(745) Sort +Input [4]: [i_item_sk#170, i_brand_id#171, i_class_id#172, i_category_id#173] +Arguments: [i_item_sk#170 ASC NULLS FIRST], false, 0 + +(746) SortMergeJoin +Left keys [1]: [ws_item_sk#169] +Right keys [1]: [i_item_sk#170] +Join type: Inner +Join condition: None + +(747) Project +Output [4]: [ws_sold_date_sk#168, i_brand_id#171, i_class_id#172, i_category_id#173] +Input [6]: [ws_sold_date_sk#168, ws_item_sk#169, i_item_sk#170, i_brand_id#171, i_class_id#172, i_category_id#173] + +(748) Exchange +Input [4]: [ws_sold_date_sk#168, i_brand_id#171, i_class_id#172, i_category_id#173] +Arguments: hashpartitioning(ws_sold_date_sk#168, 100), ENSURE_REQUIREMENTS, [plan_id=135] + +(749) Sort +Input [4]: [ws_sold_date_sk#168, i_brand_id#171, i_class_id#172, i_category_id#173] +Arguments: [ws_sold_date_sk#168 ASC NULLS FIRST], false, 0 + +(750) Scan parquet +Output [2]: [d_date_sk#174, d_year#175] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(751) Filter +Input [2]: [d_date_sk#174, d_year#175] +Condition : (((isnotnull(d_year#175) AND (d_year#175 >= 1999)) AND (d_year#175 <= 2001)) AND isnotnull(d_date_sk#174)) + +(752) Project +Output [1]: [d_date_sk#174] +Input [2]: [d_date_sk#174, d_year#175] + +(753) Exchange +Input [1]: [d_date_sk#174] +Arguments: hashpartitioning(d_date_sk#174, 100), ENSURE_REQUIREMENTS, [plan_id=136] + +(754) Sort +Input [1]: [d_date_sk#174] +Arguments: [d_date_sk#174 ASC NULLS FIRST], false, 0 + +(755) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#168] +Right keys [1]: [d_date_sk#174] +Join type: Inner +Join condition: None + +(756) Project +Output [3]: [i_brand_id#171, i_class_id#172, i_category_id#173] +Input [5]: [ws_sold_date_sk#168, i_brand_id#171, i_class_id#172, i_category_id#173, d_date_sk#174] + +(757) Exchange +Input [3]: [i_brand_id#171, i_class_id#172, i_category_id#173] +Arguments: hashpartitioning(coalesce(i_brand_id#171, 0), isnull(i_brand_id#171), coalesce(i_class_id#172, 0), isnull(i_class_id#172), coalesce(i_category_id#173, 0), isnull(i_category_id#173), 100), ENSURE_REQUIREMENTS, [plan_id=137] + +(758) Sort +Input [3]: [i_brand_id#171, i_class_id#172, i_category_id#173] +Arguments: [coalesce(i_brand_id#171, 0) ASC NULLS FIRST, isnull(i_brand_id#171) ASC NULLS FIRST, coalesce(i_class_id#172, 0) ASC NULLS FIRST, isnull(i_class_id#172) ASC NULLS FIRST, coalesce(i_category_id#173, 0) ASC NULLS FIRST, isnull(i_category_id#173) ASC NULLS FIRST], false, 0 + +(759) SortMergeJoin +Left keys [6]: [coalesce(brand_id#24, 0), isnull(brand_id#24), coalesce(class_id#25, 0), isnull(class_id#25), coalesce(category_id#26, 0), isnull(category_id#26)] +Right keys [6]: [coalesce(i_brand_id#171, 0), isnull(i_brand_id#171), coalesce(i_class_id#172, 0), isnull(i_class_id#172), coalesce(i_category_id#173, 0), isnull(i_category_id#173)] +Join type: LeftSemi +Join condition: None + +(760) Exchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(brand_id#24, class_id#25, category_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=138] + +(761) Sort +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: [brand_id#24 ASC NULLS FIRST, class_id#25 ASC NULLS FIRST, category_id#26 ASC NULLS FIRST], false, 0 + +(762) SortMergeJoin +Left keys [3]: [i_brand_id#149, i_class_id#150, i_category_id#151] +Right keys [3]: [brand_id#24, class_id#25, category_id#26] +Join type: Inner +Join condition: None + +(763) Project +Output [1]: [i_item_sk#148 AS ss_item_sk#80] +Input [7]: [i_item_sk#148, i_brand_id#149, i_class_id#150, i_category_id#151, brand_id#24, class_id#25, category_id#26] + +(764) Exchange +Input [1]: [ss_item_sk#80] +Arguments: hashpartitioning(ss_item_sk#80, 100), ENSURE_REQUIREMENTS, [plan_id=139] + +(765) Sort +Input [1]: [ss_item_sk#80] +Arguments: [ss_item_sk#80 ASC NULLS FIRST], false, 0 + +(766) SortMergeJoin +Left keys [1]: [ws_item_sk#77] +Right keys [1]: [ss_item_sk#80] +Join type: LeftSemi +Join condition: None + +(767) Scan parquet +Output [4]: [i_item_sk#81, i_brand_id#82, i_class_id#83, i_category_id#84] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(768) Filter +Input [4]: [i_item_sk#81, i_brand_id#82, i_class_id#83, i_category_id#84] +Condition : isnotnull(i_item_sk#81) + +(769) Exchange +Input [4]: [i_item_sk#81, i_brand_id#82, i_class_id#83, i_category_id#84] +Arguments: hashpartitioning(i_item_sk#81, 100), ENSURE_REQUIREMENTS, [plan_id=140] + +(770) Sort +Input [4]: [i_item_sk#81, i_brand_id#82, i_class_id#83, i_category_id#84] +Arguments: [i_item_sk#81 ASC NULLS FIRST], false, 0 + +(771) Scan parquet +Output [4]: [i_item_sk#148, i_brand_id#149, i_class_id#150, i_category_id#151] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id)] +ReadSchema: struct + +(772) Filter +Input [4]: [i_item_sk#148, i_brand_id#149, i_class_id#150, i_category_id#151] +Condition : ((isnotnull(i_brand_id#149) AND isnotnull(i_class_id#150)) AND isnotnull(i_category_id#151)) + +(773) Exchange +Input [4]: [i_item_sk#148, i_brand_id#149, i_class_id#150, i_category_id#151] +Arguments: hashpartitioning(i_brand_id#149, i_class_id#150, i_category_id#151, 100), ENSURE_REQUIREMENTS, [plan_id=141] + +(774) Sort +Input [4]: [i_item_sk#148, i_brand_id#149, i_class_id#150, i_category_id#151] +Arguments: [i_brand_id#149 ASC NULLS FIRST, i_class_id#150 ASC NULLS FIRST, i_category_id#151 ASC NULLS FIRST], false, 0 + +(775) Scan parquet +Output [2]: [ss_sold_date_sk#152, ss_item_sk#153] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(776) Filter +Input [2]: [ss_sold_date_sk#152, ss_item_sk#153] +Condition : (isnotnull(ss_item_sk#153) AND isnotnull(ss_sold_date_sk#152)) + +(777) Exchange +Input [2]: [ss_sold_date_sk#152, ss_item_sk#153] +Arguments: hashpartitioning(ss_item_sk#153, 100), ENSURE_REQUIREMENTS, [plan_id=142] + +(778) Sort +Input [2]: [ss_sold_date_sk#152, ss_item_sk#153] +Arguments: [ss_item_sk#153 ASC NULLS FIRST], false, 0 + +(779) Scan parquet +Output [4]: [i_item_sk#154, i_brand_id#155, i_class_id#156, i_category_id#157] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id)] +ReadSchema: struct + +(780) Filter +Input [4]: [i_item_sk#154, i_brand_id#155, i_class_id#156, i_category_id#157] +Condition : (((isnotnull(i_item_sk#154) AND isnotnull(i_brand_id#155)) AND isnotnull(i_class_id#156)) AND isnotnull(i_category_id#157)) + +(781) Exchange +Input [4]: [i_item_sk#154, i_brand_id#155, i_class_id#156, i_category_id#157] +Arguments: hashpartitioning(coalesce(i_brand_id#155, 0), isnull(i_brand_id#155), coalesce(i_class_id#156, 0), isnull(i_class_id#156), coalesce(i_category_id#157, 0), isnull(i_category_id#157), 100), ENSURE_REQUIREMENTS, [plan_id=143] + +(782) Sort +Input [4]: [i_item_sk#154, i_brand_id#155, i_class_id#156, i_category_id#157] +Arguments: [coalesce(i_brand_id#155, 0) ASC NULLS FIRST, isnull(i_brand_id#155) ASC NULLS FIRST, coalesce(i_class_id#156, 0) ASC NULLS FIRST, isnull(i_class_id#156) ASC NULLS FIRST, coalesce(i_category_id#157, 0) ASC NULLS FIRST, isnull(i_category_id#157) ASC NULLS FIRST], false, 0 + +(783) Scan parquet +Output [2]: [cs_sold_date_sk#158, cs_item_sk#159] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(784) Filter +Input [2]: [cs_sold_date_sk#158, cs_item_sk#159] +Condition : (isnotnull(cs_item_sk#159) AND isnotnull(cs_sold_date_sk#158)) + +(785) Exchange +Input [2]: [cs_sold_date_sk#158, cs_item_sk#159] +Arguments: hashpartitioning(cs_item_sk#159, 100), ENSURE_REQUIREMENTS, [plan_id=144] + +(786) Sort +Input [2]: [cs_sold_date_sk#158, cs_item_sk#159] +Arguments: [cs_item_sk#159 ASC NULLS FIRST], false, 0 + +(787) Scan parquet +Output [4]: [i_item_sk#160, i_brand_id#161, i_class_id#162, i_category_id#163] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(788) Filter +Input [4]: [i_item_sk#160, i_brand_id#161, i_class_id#162, i_category_id#163] +Condition : isnotnull(i_item_sk#160) + +(789) Exchange +Input [4]: [i_item_sk#160, i_brand_id#161, i_class_id#162, i_category_id#163] +Arguments: hashpartitioning(i_item_sk#160, 100), ENSURE_REQUIREMENTS, [plan_id=145] + +(790) Sort +Input [4]: [i_item_sk#160, i_brand_id#161, i_class_id#162, i_category_id#163] +Arguments: [i_item_sk#160 ASC NULLS FIRST], false, 0 + +(791) SortMergeJoin +Left keys [1]: [cs_item_sk#159] +Right keys [1]: [i_item_sk#160] +Join type: Inner +Join condition: None + +(792) Project +Output [4]: [cs_sold_date_sk#158, i_brand_id#161, i_class_id#162, i_category_id#163] +Input [6]: [cs_sold_date_sk#158, cs_item_sk#159, i_item_sk#160, i_brand_id#161, i_class_id#162, i_category_id#163] + +(793) Exchange +Input [4]: [cs_sold_date_sk#158, i_brand_id#161, i_class_id#162, i_category_id#163] +Arguments: hashpartitioning(cs_sold_date_sk#158, 100), ENSURE_REQUIREMENTS, [plan_id=146] + +(794) Sort +Input [4]: [cs_sold_date_sk#158, i_brand_id#161, i_class_id#162, i_category_id#163] +Arguments: [cs_sold_date_sk#158 ASC NULLS FIRST], false, 0 + +(795) Scan parquet +Output [2]: [d_date_sk#164, d_year#165] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(796) Filter +Input [2]: [d_date_sk#164, d_year#165] +Condition : (((isnotnull(d_year#165) AND (d_year#165 >= 1999)) AND (d_year#165 <= 2001)) AND isnotnull(d_date_sk#164)) + +(797) Project +Output [1]: [d_date_sk#164] +Input [2]: [d_date_sk#164, d_year#165] + +(798) Exchange +Input [1]: [d_date_sk#164] +Arguments: hashpartitioning(d_date_sk#164, 100), ENSURE_REQUIREMENTS, [plan_id=147] + +(799) Sort +Input [1]: [d_date_sk#164] +Arguments: [d_date_sk#164 ASC NULLS FIRST], false, 0 + +(800) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#158] +Right keys [1]: [d_date_sk#164] +Join type: Inner +Join condition: None + +(801) Project +Output [3]: [i_brand_id#161, i_class_id#162, i_category_id#163] +Input [5]: [cs_sold_date_sk#158, i_brand_id#161, i_class_id#162, i_category_id#163, d_date_sk#164] + +(802) Exchange +Input [3]: [i_brand_id#161, i_class_id#162, i_category_id#163] +Arguments: hashpartitioning(coalesce(i_brand_id#161, 0), isnull(i_brand_id#161), coalesce(i_class_id#162, 0), isnull(i_class_id#162), coalesce(i_category_id#163, 0), isnull(i_category_id#163), 100), ENSURE_REQUIREMENTS, [plan_id=148] + +(803) Sort +Input [3]: [i_brand_id#161, i_class_id#162, i_category_id#163] +Arguments: [coalesce(i_brand_id#161, 0) ASC NULLS FIRST, isnull(i_brand_id#161) ASC NULLS FIRST, coalesce(i_class_id#162, 0) ASC NULLS FIRST, isnull(i_class_id#162) ASC NULLS FIRST, coalesce(i_category_id#163, 0) ASC NULLS FIRST, isnull(i_category_id#163) ASC NULLS FIRST], false, 0 + +(804) SortMergeJoin +Left keys [6]: [coalesce(i_brand_id#155, 0), isnull(i_brand_id#155), coalesce(i_class_id#156, 0), isnull(i_class_id#156), coalesce(i_category_id#157, 0), isnull(i_category_id#157)] +Right keys [6]: [coalesce(i_brand_id#161, 0), isnull(i_brand_id#161), coalesce(i_class_id#162, 0), isnull(i_class_id#162), coalesce(i_category_id#163, 0), isnull(i_category_id#163)] +Join type: LeftSemi +Join condition: None + +(805) Exchange +Input [4]: [i_item_sk#154, i_brand_id#155, i_class_id#156, i_category_id#157] +Arguments: hashpartitioning(i_item_sk#154, 100), ENSURE_REQUIREMENTS, [plan_id=149] + +(806) Sort +Input [4]: [i_item_sk#154, i_brand_id#155, i_class_id#156, i_category_id#157] +Arguments: [i_item_sk#154 ASC NULLS FIRST], false, 0 + +(807) SortMergeJoin +Left keys [1]: [ss_item_sk#153] +Right keys [1]: [i_item_sk#154] +Join type: Inner +Join condition: None + +(808) Project +Output [4]: [ss_sold_date_sk#152, i_brand_id#155, i_class_id#156, i_category_id#157] +Input [6]: [ss_sold_date_sk#152, ss_item_sk#153, i_item_sk#154, i_brand_id#155, i_class_id#156, i_category_id#157] + +(809) Exchange +Input [4]: [ss_sold_date_sk#152, i_brand_id#155, i_class_id#156, i_category_id#157] +Arguments: hashpartitioning(ss_sold_date_sk#152, 100), ENSURE_REQUIREMENTS, [plan_id=150] + +(810) Sort +Input [4]: [ss_sold_date_sk#152, i_brand_id#155, i_class_id#156, i_category_id#157] +Arguments: [ss_sold_date_sk#152 ASC NULLS FIRST], false, 0 + +(811) Scan parquet +Output [2]: [d_date_sk#166, d_year#167] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(812) Filter +Input [2]: [d_date_sk#166, d_year#167] +Condition : (((isnotnull(d_year#167) AND (d_year#167 >= 1999)) AND (d_year#167 <= 2001)) AND isnotnull(d_date_sk#166)) + +(813) Project +Output [1]: [d_date_sk#166] +Input [2]: [d_date_sk#166, d_year#167] + +(814) Exchange +Input [1]: [d_date_sk#166] +Arguments: hashpartitioning(d_date_sk#166, 100), ENSURE_REQUIREMENTS, [plan_id=151] + +(815) Sort +Input [1]: [d_date_sk#166] +Arguments: [d_date_sk#166 ASC NULLS FIRST], false, 0 + +(816) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#152] +Right keys [1]: [d_date_sk#166] +Join type: Inner +Join condition: None + +(817) Project +Output [3]: [i_brand_id#155 AS brand_id#24, i_class_id#156 AS class_id#25, i_category_id#157 AS category_id#26] +Input [5]: [ss_sold_date_sk#152, i_brand_id#155, i_class_id#156, i_category_id#157, d_date_sk#166] + +(818) HashAggregate +Input [3]: [brand_id#24, class_id#25, category_id#26] +Keys [3]: [brand_id#24, class_id#25, category_id#26] +Functions: [] +Aggregate Attributes: [] +Results [3]: [brand_id#24, class_id#25, category_id#26] + +(819) Exchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(brand_id#24, class_id#25, category_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=152] + +(820) HashAggregate +Input [3]: [brand_id#24, class_id#25, category_id#26] +Keys [3]: [brand_id#24, class_id#25, category_id#26] +Functions: [] +Aggregate Attributes: [] +Results [3]: [brand_id#24, class_id#25, category_id#26] + +(821) Exchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(coalesce(brand_id#24, 0), isnull(brand_id#24), coalesce(class_id#25, 0), isnull(class_id#25), coalesce(category_id#26, 0), isnull(category_id#26), 100), ENSURE_REQUIREMENTS, [plan_id=153] + +(822) Sort +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: [coalesce(brand_id#24, 0) ASC NULLS FIRST, isnull(brand_id#24) ASC NULLS FIRST, coalesce(class_id#25, 0) ASC NULLS FIRST, isnull(class_id#25) ASC NULLS FIRST, coalesce(category_id#26, 0) ASC NULLS FIRST, isnull(category_id#26) ASC NULLS FIRST], false, 0 + +(823) Scan parquet +Output [2]: [ws_sold_date_sk#168, ws_item_sk#169] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(824) Filter +Input [2]: [ws_sold_date_sk#168, ws_item_sk#169] +Condition : (isnotnull(ws_item_sk#169) AND isnotnull(ws_sold_date_sk#168)) + +(825) Exchange +Input [2]: [ws_sold_date_sk#168, ws_item_sk#169] +Arguments: hashpartitioning(ws_item_sk#169, 100), ENSURE_REQUIREMENTS, [plan_id=154] + +(826) Sort +Input [2]: [ws_sold_date_sk#168, ws_item_sk#169] +Arguments: [ws_item_sk#169 ASC NULLS FIRST], false, 0 + +(827) Scan parquet +Output [4]: [i_item_sk#170, i_brand_id#171, i_class_id#172, i_category_id#173] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(828) Filter +Input [4]: [i_item_sk#170, i_brand_id#171, i_class_id#172, i_category_id#173] +Condition : isnotnull(i_item_sk#170) + +(829) Exchange +Input [4]: [i_item_sk#170, i_brand_id#171, i_class_id#172, i_category_id#173] +Arguments: hashpartitioning(i_item_sk#170, 100), ENSURE_REQUIREMENTS, [plan_id=155] + +(830) Sort +Input [4]: [i_item_sk#170, i_brand_id#171, i_class_id#172, i_category_id#173] +Arguments: [i_item_sk#170 ASC NULLS FIRST], false, 0 + +(831) SortMergeJoin +Left keys [1]: [ws_item_sk#169] +Right keys [1]: [i_item_sk#170] +Join type: Inner +Join condition: None + +(832) Project +Output [4]: [ws_sold_date_sk#168, i_brand_id#171, i_class_id#172, i_category_id#173] +Input [6]: [ws_sold_date_sk#168, ws_item_sk#169, i_item_sk#170, i_brand_id#171, i_class_id#172, i_category_id#173] + +(833) Exchange +Input [4]: [ws_sold_date_sk#168, i_brand_id#171, i_class_id#172, i_category_id#173] +Arguments: hashpartitioning(ws_sold_date_sk#168, 100), ENSURE_REQUIREMENTS, [plan_id=156] + +(834) Sort +Input [4]: [ws_sold_date_sk#168, i_brand_id#171, i_class_id#172, i_category_id#173] +Arguments: [ws_sold_date_sk#168 ASC NULLS FIRST], false, 0 + +(835) Scan parquet +Output [2]: [d_date_sk#174, d_year#175] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(836) Filter +Input [2]: [d_date_sk#174, d_year#175] +Condition : (((isnotnull(d_year#175) AND (d_year#175 >= 1999)) AND (d_year#175 <= 2001)) AND isnotnull(d_date_sk#174)) + +(837) Project +Output [1]: [d_date_sk#174] +Input [2]: [d_date_sk#174, d_year#175] + +(838) Exchange +Input [1]: [d_date_sk#174] +Arguments: hashpartitioning(d_date_sk#174, 100), ENSURE_REQUIREMENTS, [plan_id=157] + +(839) Sort +Input [1]: [d_date_sk#174] +Arguments: [d_date_sk#174 ASC NULLS FIRST], false, 0 + +(840) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#168] +Right keys [1]: [d_date_sk#174] +Join type: Inner +Join condition: None + +(841) Project +Output [3]: [i_brand_id#171, i_class_id#172, i_category_id#173] +Input [5]: [ws_sold_date_sk#168, i_brand_id#171, i_class_id#172, i_category_id#173, d_date_sk#174] + +(842) Exchange +Input [3]: [i_brand_id#171, i_class_id#172, i_category_id#173] +Arguments: hashpartitioning(coalesce(i_brand_id#171, 0), isnull(i_brand_id#171), coalesce(i_class_id#172, 0), isnull(i_class_id#172), coalesce(i_category_id#173, 0), isnull(i_category_id#173), 100), ENSURE_REQUIREMENTS, [plan_id=158] + +(843) Sort +Input [3]: [i_brand_id#171, i_class_id#172, i_category_id#173] +Arguments: [coalesce(i_brand_id#171, 0) ASC NULLS FIRST, isnull(i_brand_id#171) ASC NULLS FIRST, coalesce(i_class_id#172, 0) ASC NULLS FIRST, isnull(i_class_id#172) ASC NULLS FIRST, coalesce(i_category_id#173, 0) ASC NULLS FIRST, isnull(i_category_id#173) ASC NULLS FIRST], false, 0 + +(844) SortMergeJoin +Left keys [6]: [coalesce(brand_id#24, 0), isnull(brand_id#24), coalesce(class_id#25, 0), isnull(class_id#25), coalesce(category_id#26, 0), isnull(category_id#26)] +Right keys [6]: [coalesce(i_brand_id#171, 0), isnull(i_brand_id#171), coalesce(i_class_id#172, 0), isnull(i_class_id#172), coalesce(i_category_id#173, 0), isnull(i_category_id#173)] +Join type: LeftSemi +Join condition: None + +(845) Exchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(brand_id#24, class_id#25, category_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=159] + +(846) Sort +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: [brand_id#24 ASC NULLS FIRST, class_id#25 ASC NULLS FIRST, category_id#26 ASC NULLS FIRST], false, 0 + +(847) SortMergeJoin +Left keys [3]: [i_brand_id#149, i_class_id#150, i_category_id#151] +Right keys [3]: [brand_id#24, class_id#25, category_id#26] +Join type: Inner +Join condition: None + +(848) Project +Output [1]: [i_item_sk#148 AS ss_item_sk#80] +Input [7]: [i_item_sk#148, i_brand_id#149, i_class_id#150, i_category_id#151, brand_id#24, class_id#25, category_id#26] + +(849) Exchange +Input [1]: [ss_item_sk#80] +Arguments: hashpartitioning(ss_item_sk#80, 100), ENSURE_REQUIREMENTS, [plan_id=160] + +(850) Sort +Input [1]: [ss_item_sk#80] +Arguments: [ss_item_sk#80 ASC NULLS FIRST], false, 0 + +(851) SortMergeJoin +Left keys [1]: [i_item_sk#81] +Right keys [1]: [ss_item_sk#80] +Join type: LeftSemi +Join condition: None + +(852) SortMergeJoin +Left keys [1]: [ws_item_sk#77] +Right keys [1]: [i_item_sk#81] +Join type: Inner +Join condition: None + +(853) Project +Output [6]: [ws_sold_date_sk#76, ws_quantity#78, ws_list_price#79, i_brand_id#82, i_class_id#83, i_category_id#84] +Input [8]: [ws_sold_date_sk#76, ws_item_sk#77, ws_quantity#78, ws_list_price#79, i_item_sk#81, i_brand_id#82, i_class_id#83, i_category_id#84] + +(854) Exchange +Input [6]: [ws_sold_date_sk#76, ws_quantity#78, ws_list_price#79, i_brand_id#82, i_class_id#83, i_category_id#84] +Arguments: hashpartitioning(ws_sold_date_sk#76, 100), ENSURE_REQUIREMENTS, [plan_id=161] + +(855) Sort +Input [6]: [ws_sold_date_sk#76, ws_quantity#78, ws_list_price#79, i_brand_id#82, i_class_id#83, i_category_id#84] +Arguments: [ws_sold_date_sk#76 ASC NULLS FIRST], false, 0 + +(856) Scan parquet +Output [3]: [d_date_sk#85, d_year#176, d_moy#177] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), EqualTo(d_moy,11), IsNotNull(d_date_sk)] +ReadSchema: struct + +(857) Filter +Input [3]: [d_date_sk#85, d_year#176, d_moy#177] +Condition : ((((isnotnull(d_year#176) AND isnotnull(d_moy#177)) AND (d_year#176 = 2001)) AND (d_moy#177 = 11)) AND isnotnull(d_date_sk#85)) + +(858) Project +Output [1]: [d_date_sk#85] +Input [3]: [d_date_sk#85, d_year#176, d_moy#177] + +(859) Exchange +Input [1]: [d_date_sk#85] +Arguments: hashpartitioning(d_date_sk#85, 100), ENSURE_REQUIREMENTS, [plan_id=162] + +(860) Sort +Input [1]: [d_date_sk#85] +Arguments: [d_date_sk#85 ASC NULLS FIRST], false, 0 + +(861) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#76] +Right keys [1]: [d_date_sk#85] +Join type: Inner +Join condition: None + +(862) Project +Output [5]: [ws_quantity#78, ws_list_price#79, i_brand_id#82, i_class_id#83, i_category_id#84] +Input [7]: [ws_sold_date_sk#76, ws_quantity#78, ws_list_price#79, i_brand_id#82, i_class_id#83, i_category_id#84, d_date_sk#85] + +(863) HashAggregate +Input [5]: [ws_quantity#78, ws_list_price#79, i_brand_id#82, i_class_id#83, i_category_id#84] +Keys [3]: [i_brand_id#82, i_class_id#83, i_category_id#84] +Functions [2]: [partial_sum((cast(ws_quantity#78 as decimal(10,0)) * ws_list_price#79)), partial_count(1)] +Aggregate Attributes [3]: [sum#87, isEmpty#88, count#89] +Results [6]: [i_brand_id#82, i_class_id#83, i_category_id#84, sum#178, isEmpty#179, count#180] + +(864) Exchange +Input [6]: [i_brand_id#82, i_class_id#83, i_category_id#84, sum#178, isEmpty#179, count#180] +Arguments: hashpartitioning(i_brand_id#82, i_class_id#83, i_category_id#84, 100), ENSURE_REQUIREMENTS, [plan_id=163] + +(865) HashAggregate +Input [6]: [i_brand_id#82, i_class_id#83, i_category_id#84, sum#178, isEmpty#179, count#180] +Keys [3]: [i_brand_id#82, i_class_id#83, i_category_id#84] +Functions [2]: [sum((cast(ws_quantity#78 as decimal(10,0)) * ws_list_price#79)), count(1)] +Aggregate Attributes [2]: [sum((cast(ws_quantity#78 as decimal(10,0)) * ws_list_price#79))#90, count(1)#91] +Results [5]: [i_brand_id#82, i_class_id#83, i_category_id#84, sum((cast(ws_quantity#78 as decimal(10,0)) * ws_list_price#79))#90 AS sales#92, count(1)#91 AS number_sales#93] + +(866) Filter +Input [5]: [i_brand_id#82, i_class_id#83, i_category_id#84, sales#92, number_sales#93] +Condition : (isnotnull(sales#92) AND (cast(sales#92 as decimal(32,6)) > cast(Subquery subquery#181, [id=#182] as decimal(32,6)))) + +(867) Project +Output [6]: [sales#92, number_sales#93, web AS channel#94, i_brand_id#82, i_class_id#83, i_category_id#84] +Input [5]: [i_brand_id#82, i_class_id#83, i_category_id#84, sales#92, number_sales#93] + +(868) Union + +(869) Expand +Input [6]: [sales#49, number_sales#50, channel#53, i_brand_id#54, i_class_id#55, i_category_id#56] +Arguments: [[sales#49, number_sales#50, channel#53, i_brand_id#54, i_class_id#55, i_category_id#56, 0], [sales#49, number_sales#50, channel#53, i_brand_id#54, i_class_id#55, null, 1], [sales#49, number_sales#50, channel#53, i_brand_id#54, null, null, 3], [sales#49, number_sales#50, channel#53, null, null, null, 7], [sales#49, number_sales#50, null, null, null, null, 15]], [sales#49, number_sales#50, channel#96, i_brand_id#97, i_class_id#98, i_category_id#99, spark_grouping_id#100] + +(870) HashAggregate +Input [7]: [sales#49, number_sales#50, channel#96, i_brand_id#97, i_class_id#98, i_category_id#99, spark_grouping_id#100] +Keys [5]: [channel#96, i_brand_id#97, i_class_id#98, i_category_id#99, spark_grouping_id#100] +Functions [2]: [partial_sum(sales#49), partial_sum(number_sales#50)] +Aggregate Attributes [3]: [sum#101, isEmpty#102, sum#103] +Results [8]: [channel#96, i_brand_id#97, i_class_id#98, i_category_id#99, spark_grouping_id#100, sum#183, isEmpty#184, sum#185] + +(871) Exchange +Input [8]: [channel#96, i_brand_id#97, i_class_id#98, i_category_id#99, spark_grouping_id#100, sum#183, isEmpty#184, sum#185] +Arguments: hashpartitioning(channel#96, i_brand_id#97, i_class_id#98, i_category_id#99, spark_grouping_id#100, 100), ENSURE_REQUIREMENTS, [plan_id=164] + +(872) HashAggregate +Input [8]: [channel#96, i_brand_id#97, i_class_id#98, i_category_id#99, spark_grouping_id#100, sum#183, isEmpty#184, sum#185] +Keys [5]: [channel#96, i_brand_id#97, i_class_id#98, i_category_id#99, spark_grouping_id#100] +Functions [2]: [sum(sales#49), sum(number_sales#50)] +Aggregate Attributes [2]: [sum(sales#49)#104, sum(number_sales#50)#105] +Results [6]: [channel#96, i_brand_id#97, i_class_id#98, i_category_id#99, sum(sales#49)#104 AS sum(sales)#106, sum(number_sales#50)#105 AS sum(number_sales)#107] + +(873) TakeOrderedAndProject +Input [6]: [channel#96, i_brand_id#97, i_class_id#98, i_category_id#99, sum(sales)#106, sum(number_sales)#107] +Arguments: X, [channel#96 ASC NULLS FIRST, i_brand_id#97 ASC NULLS FIRST, i_class_id#98 ASC NULLS FIRST, i_category_id#99 ASC NULLS FIRST], [channel#96, i_brand_id#97, i_class_id#98, i_category_id#99, sum(sales)#106, sum(number_sales)#107] + +(874) AdaptiveSparkPlan +Output [6]: [channel#96, i_brand_id#97, i_class_id#98, i_category_id#99, sum(sales)#106, sum(number_sales)#107] +Arguments: isFinalPlan=true + +===== Subqueries ===== + +Subquery:1 Hosting operator id = 191 Hosting Expression = Subquery subquery#51, [id=#52] +AdaptiveSparkPlan (968) ++- == Final Plan == + NativeProject (930) + +- NativeHashAggregate (929) + +- ShuffleQueryStage (928), Statistics(X) + +- NativeShuffleExchange (927) + +- NativeHashAggregate (926) + +- NativeProject (925) + +- InputAdapter (924) + +- NativeUnion (923) + :- NativeProject (890) + : +- NativeSortMergeJoin Inner (889) + : :- NativeSort (882) + : : +- InputAdapter (881) + : : +- AQEShuffleRead (880) + : : +- ShuffleQueryStage (879), Statistics(X) + : : +- NativeShuffleExchange (878) + : : +- NativeFilter (877) + : : +- InputAdapter (876) + : : +- NativeParquetScan (875) + : +- NativeSort (888) + : +- InputAdapter (887) + : +- InputAdapter (886) + : +- AQEShuffleRead (885) + : +- ShuffleQueryStage (884), Statistics(X) + : +- ReusedExchange (883) + :- NativeProject (906) + : +- NativeSortMergeJoin Inner (905) + : :- NativeSort (898) + : : +- InputAdapter (897) + : : +- AQEShuffleRead (896) + : : +- ShuffleQueryStage (895), Statistics(X) + : : +- NativeShuffleExchange (894) + : : +- NativeFilter (893) + : : +- InputAdapter (892) + : : +- NativeParquetScan (891) + : +- NativeSort (904) + : +- InputAdapter (903) + : +- InputAdapter (902) + : +- AQEShuffleRead (901) + : +- ShuffleQueryStage (900), Statistics(X) + : +- ReusedExchange (899) + +- NativeProject (922) + +- NativeSortMergeJoin Inner (921) + :- NativeSort (914) + : +- InputAdapter (913) + : +- AQEShuffleRead (912) + : +- ShuffleQueryStage (911), Statistics(X) + : +- NativeShuffleExchange (910) + : +- NativeFilter (909) + : +- InputAdapter (908) + : +- NativeParquetScan (907) + +- NativeSort (920) + +- InputAdapter (919) + +- InputAdapter (918) + +- AQEShuffleRead (917) + +- ShuffleQueryStage (916), Statistics(X) + +- ReusedExchange (915) ++- == Initial Plan == + HashAggregate (967) + +- Exchange (966) + +- HashAggregate (965) + +- Union (964) + :- Project (941) + : +- SortMergeJoin Inner (940) + : :- Sort (934) + : : +- Exchange (933) + : : +- Filter (932) + : : +- Scan parquet (931) + : +- Sort (939) + : +- Exchange (938) + : +- Project (937) + : +- Filter (936) + : +- Scan parquet (935) + :- Project (952) + : +- SortMergeJoin Inner (951) + : :- Sort (945) + : : +- Exchange (944) + : : +- Filter (943) + : : +- Scan parquet (942) + : +- Sort (950) + : +- Exchange (949) + : +- Project (948) + : +- Filter (947) + : +- Scan parquet (946) + +- Project (963) + +- SortMergeJoin Inner (962) + :- Sort (956) + : +- Exchange (955) + : +- Filter (954) + : +- Scan parquet (953) + +- Sort (961) + +- Exchange (960) + +- Project (959) + +- Filter (958) + +- Scan parquet (957) + + +(931) Scan parquet +Output [3]: [ss_sold_date_sk#186, ss_quantity#187, ss_list_price#188] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(876) InputAdapter +Input [3]: [ss_sold_date_sk#186, ss_quantity#187, ss_list_price#188] +Arguments: [#186, #187, #188] + +(877) NativeFilter +Input [3]: [#186#186, #187#187, #188#188] +Condition : isnotnull(ss_sold_date_sk#186) + +(878) NativeShuffleExchange +Input [3]: [#186#186, #187#187, #188#188] +Arguments: hashpartitioning(ss_sold_date_sk#186, 100), ENSURE_REQUIREMENTS, [plan_id=165] + +(879) ShuffleQueryStage +Output [3]: [#186#186, #187#187, #188#188] +Arguments: X + +(880) AQEShuffleRead +Input [3]: [#186#186, #187#187, #188#188] +Arguments: coalesced + +(881) InputAdapter +Input [3]: [#186#186, #187#187, #188#188] + +(882) NativeSort +Input [3]: [#186#186, #187#187, #188#188] +Arguments: [ss_sold_date_sk#186 ASC NULLS FIRST], false + +(883) ReusedExchange [Reuses operator id: 60] +Output [1]: [d_date_sk#189] + +(884) ShuffleQueryStage +Output [1]: [d_date_sk#189] +Arguments: X + +(885) AQEShuffleRead +Input [1]: [d_date_sk#189] +Arguments: coalesced + +(886) InputAdapter +Input [1]: [d_date_sk#189] +Arguments: [#189] + +(887) InputAdapter +Input [1]: [#189#189] + +(888) NativeSort +Input [1]: [#189#189] +Arguments: [d_date_sk#189 ASC NULLS FIRST], false + +(889) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#186] +Right keys [1]: [d_date_sk#189] +Join type: Inner +Join condition: None + +(890) NativeProject +Output [2]: [ss_quantity#187 AS quantity#190, ss_list_price#188 AS list_price#191] +Input [4]: [#186#186, #187#187, #188#188, #189#189] + +(942) Scan parquet +Output [3]: [cs_sold_date_sk#192, cs_quantity#193, cs_list_price#194] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(892) InputAdapter +Input [3]: [cs_sold_date_sk#192, cs_quantity#193, cs_list_price#194] +Arguments: [#192, #193, #194] + +(893) NativeFilter +Input [3]: [#192#192, #193#193, #194#194] +Condition : isnotnull(cs_sold_date_sk#192) + +(894) NativeShuffleExchange +Input [3]: [#192#192, #193#193, #194#194] +Arguments: hashpartitioning(cs_sold_date_sk#192, 100), ENSURE_REQUIREMENTS, [plan_id=166] + +(895) ShuffleQueryStage +Output [3]: [#192#192, #193#193, #194#194] +Arguments: X + +(896) AQEShuffleRead +Input [3]: [#192#192, #193#193, #194#194] +Arguments: coalesced + +(897) InputAdapter +Input [3]: [#192#192, #193#193, #194#194] + +(898) NativeSort +Input [3]: [#192#192, #193#193, #194#194] +Arguments: [cs_sold_date_sk#192 ASC NULLS FIRST], false + +(899) ReusedExchange [Reuses operator id: 60] +Output [1]: [d_date_sk#195] + +(900) ShuffleQueryStage +Output [1]: [d_date_sk#195] +Arguments: X + +(901) AQEShuffleRead +Input [1]: [d_date_sk#195] +Arguments: coalesced + +(902) InputAdapter +Input [1]: [d_date_sk#195] +Arguments: [#195] + +(903) InputAdapter +Input [1]: [#195#195] + +(904) NativeSort +Input [1]: [#195#195] +Arguments: [d_date_sk#195 ASC NULLS FIRST], false + +(905) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#192] +Right keys [1]: [d_date_sk#195] +Join type: Inner +Join condition: None + +(906) NativeProject +Output [2]: [cs_quantity#193 AS quantity#196, cs_list_price#194 AS list_price#197] +Input [4]: [#192#192, #193#193, #194#194, #195#195] + +(953) Scan parquet +Output [3]: [ws_sold_date_sk#198, ws_quantity#199, ws_list_price#200] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(908) InputAdapter +Input [3]: [ws_sold_date_sk#198, ws_quantity#199, ws_list_price#200] +Arguments: [#198, #199, #200] + +(909) NativeFilter +Input [3]: [#198#198, #199#199, #200#200] +Condition : isnotnull(ws_sold_date_sk#198) + +(910) NativeShuffleExchange +Input [3]: [#198#198, #199#199, #200#200] +Arguments: hashpartitioning(ws_sold_date_sk#198, 100), ENSURE_REQUIREMENTS, [plan_id=167] + +(911) ShuffleQueryStage +Output [3]: [#198#198, #199#199, #200#200] +Arguments: X + +(912) AQEShuffleRead +Input [3]: [#198#198, #199#199, #200#200] +Arguments: coalesced + +(913) InputAdapter +Input [3]: [#198#198, #199#199, #200#200] + +(914) NativeSort +Input [3]: [#198#198, #199#199, #200#200] +Arguments: [ws_sold_date_sk#198 ASC NULLS FIRST], false + +(915) ReusedExchange [Reuses operator id: 60] +Output [1]: [d_date_sk#201] + +(916) ShuffleQueryStage +Output [1]: [d_date_sk#201] +Arguments: X + +(917) AQEShuffleRead +Input [1]: [d_date_sk#201] +Arguments: coalesced + +(918) InputAdapter +Input [1]: [d_date_sk#201] +Arguments: [#201] + +(919) InputAdapter +Input [1]: [#201#201] + +(920) NativeSort +Input [1]: [#201#201] +Arguments: [d_date_sk#201 ASC NULLS FIRST], false + +(921) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#198] +Right keys [1]: [d_date_sk#201] +Join type: Inner +Join condition: None + +(922) NativeProject +Output [2]: [ws_quantity#199 AS quantity#202, ws_list_price#200 AS list_price#203] +Input [4]: [#198#198, #199#199, #200#200, #201#201] + +(923) NativeUnion +Arguments: [quantity#190, list_price#191] + +(924) InputAdapter +Input [2]: [quantity#190, list_price#191] +Arguments: [#190, #191] + +(925) NativeProject +Output [1]: [(cast(quantity#190 as decimal(10,0)) * list_price#191) AS _c0#204] +Input [2]: [#190#190, #191#191] + +(926) NativeHashAggregate +Input [1]: [_c0#204] +Keys: [] +Functions [1]: [partial_avg(_c0#204)] +Aggregate Attributes [2]: [sum#205, count#206] +Results [1]: [#27#27] + +(927) NativeShuffleExchange +Input [1]: [#27#27] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=168] + +(928) ShuffleQueryStage +Output [1]: [#27#27] +Arguments: X + +(929) NativeHashAggregate +Input [1]: [#27#27] +Keys: [] +Functions [1]: [avg((cast(quantity#190 as decimal(10,0)) * list_price#191))] +Aggregate Attributes [1]: [avg((cast(quantity#190 as decimal(10,0)) * list_price#191))#207] +Results [1]: [avg((cast(quantity#190 as decimal(10,0)) * list_price#191))#207] + +(930) NativeProject +Output [1]: [avg((cast(quantity#190 as decimal(10,0)) * list_price#191))#207 AS average_sales#208] +Input [1]: [avg((cast(quantity#190 as decimal(10,0)) * list_price#191))#207] + +(931) Scan parquet +Output [3]: [ss_sold_date_sk#186, ss_quantity#187, ss_list_price#188] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(932) Filter +Input [3]: [ss_sold_date_sk#186, ss_quantity#187, ss_list_price#188] +Condition : isnotnull(ss_sold_date_sk#186) + +(933) Exchange +Input [3]: [ss_sold_date_sk#186, ss_quantity#187, ss_list_price#188] +Arguments: hashpartitioning(ss_sold_date_sk#186, 100), ENSURE_REQUIREMENTS, [plan_id=169] + +(934) Sort +Input [3]: [ss_sold_date_sk#186, ss_quantity#187, ss_list_price#188] +Arguments: [ss_sold_date_sk#186 ASC NULLS FIRST], false, 0 + +(935) Scan parquet +Output [2]: [d_date_sk#189, d_year#209] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(936) Filter +Input [2]: [d_date_sk#189, d_year#209] +Condition : (((isnotnull(d_year#209) AND (d_year#209 >= 1999)) AND (d_year#209 <= 2001)) AND isnotnull(d_date_sk#189)) + +(937) Project +Output [1]: [d_date_sk#189] +Input [2]: [d_date_sk#189, d_year#209] + +(938) Exchange +Input [1]: [d_date_sk#189] +Arguments: hashpartitioning(d_date_sk#189, 100), ENSURE_REQUIREMENTS, [plan_id=170] + +(939) Sort +Input [1]: [d_date_sk#189] +Arguments: [d_date_sk#189 ASC NULLS FIRST], false, 0 + +(940) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#186] +Right keys [1]: [d_date_sk#189] +Join type: Inner +Join condition: None + +(941) Project +Output [2]: [ss_quantity#187 AS quantity#190, ss_list_price#188 AS list_price#191] +Input [4]: [ss_sold_date_sk#186, ss_quantity#187, ss_list_price#188, d_date_sk#189] + +(942) Scan parquet +Output [3]: [cs_sold_date_sk#192, cs_quantity#193, cs_list_price#194] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(943) Filter +Input [3]: [cs_sold_date_sk#192, cs_quantity#193, cs_list_price#194] +Condition : isnotnull(cs_sold_date_sk#192) + +(944) Exchange +Input [3]: [cs_sold_date_sk#192, cs_quantity#193, cs_list_price#194] +Arguments: hashpartitioning(cs_sold_date_sk#192, 100), ENSURE_REQUIREMENTS, [plan_id=171] + +(945) Sort +Input [3]: [cs_sold_date_sk#192, cs_quantity#193, cs_list_price#194] +Arguments: [cs_sold_date_sk#192 ASC NULLS FIRST], false, 0 + +(946) Scan parquet +Output [2]: [d_date_sk#195, d_year#210] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(947) Filter +Input [2]: [d_date_sk#195, d_year#210] +Condition : (((isnotnull(d_year#210) AND (d_year#210 >= 1999)) AND (d_year#210 <= 2001)) AND isnotnull(d_date_sk#195)) + +(948) Project +Output [1]: [d_date_sk#195] +Input [2]: [d_date_sk#195, d_year#210] + +(949) Exchange +Input [1]: [d_date_sk#195] +Arguments: hashpartitioning(d_date_sk#195, 100), ENSURE_REQUIREMENTS, [plan_id=172] + +(950) Sort +Input [1]: [d_date_sk#195] +Arguments: [d_date_sk#195 ASC NULLS FIRST], false, 0 + +(951) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#192] +Right keys [1]: [d_date_sk#195] +Join type: Inner +Join condition: None + +(952) Project +Output [2]: [cs_quantity#193 AS quantity#196, cs_list_price#194 AS list_price#197] +Input [4]: [cs_sold_date_sk#192, cs_quantity#193, cs_list_price#194, d_date_sk#195] + +(953) Scan parquet +Output [3]: [ws_sold_date_sk#198, ws_quantity#199, ws_list_price#200] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(954) Filter +Input [3]: [ws_sold_date_sk#198, ws_quantity#199, ws_list_price#200] +Condition : isnotnull(ws_sold_date_sk#198) + +(955) Exchange +Input [3]: [ws_sold_date_sk#198, ws_quantity#199, ws_list_price#200] +Arguments: hashpartitioning(ws_sold_date_sk#198, 100), ENSURE_REQUIREMENTS, [plan_id=173] + +(956) Sort +Input [3]: [ws_sold_date_sk#198, ws_quantity#199, ws_list_price#200] +Arguments: [ws_sold_date_sk#198 ASC NULLS FIRST], false, 0 + +(957) Scan parquet +Output [2]: [d_date_sk#201, d_year#211] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(958) Filter +Input [2]: [d_date_sk#201, d_year#211] +Condition : (((isnotnull(d_year#211) AND (d_year#211 >= 1999)) AND (d_year#211 <= 2001)) AND isnotnull(d_date_sk#201)) + +(959) Project +Output [1]: [d_date_sk#201] +Input [2]: [d_date_sk#201, d_year#211] + +(960) Exchange +Input [1]: [d_date_sk#201] +Arguments: hashpartitioning(d_date_sk#201, 100), ENSURE_REQUIREMENTS, [plan_id=174] + +(961) Sort +Input [1]: [d_date_sk#201] +Arguments: [d_date_sk#201 ASC NULLS FIRST], false, 0 + +(962) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#198] +Right keys [1]: [d_date_sk#201] +Join type: Inner +Join condition: None + +(963) Project +Output [2]: [ws_quantity#199 AS quantity#202, ws_list_price#200 AS list_price#203] +Input [4]: [ws_sold_date_sk#198, ws_quantity#199, ws_list_price#200, d_date_sk#201] + +(964) Union + +(965) HashAggregate +Input [2]: [quantity#190, list_price#191] +Keys: [] +Functions [1]: [partial_avg((cast(quantity#190 as decimal(10,0)) * list_price#191))] +Aggregate Attributes [2]: [sum#205, count#206] +Results [2]: [sum#212, count#213] + +(966) Exchange +Input [2]: [sum#212, count#213] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=175] + +(967) HashAggregate +Input [2]: [sum#212, count#213] +Keys: [] +Functions [1]: [avg((cast(quantity#190 as decimal(10,0)) * list_price#191))] +Aggregate Attributes [1]: [avg((cast(quantity#190 as decimal(10,0)) * list_price#191))#207] +Results [1]: [avg((cast(quantity#190 as decimal(10,0)) * list_price#191))#207 AS average_sales#208] + +(968) AdaptiveSparkPlan +Output [1]: [average_sales#208] +Arguments: isFinalPlan=true + +Subquery:2 Hosting operator id = 244 Hosting Expression = ReusedSubquery Subquery subquery#51, [id=#52] + +Subquery:3 Hosting operator id = 297 Hosting Expression = ReusedSubquery Subquery subquery#51, [id=#52] + + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q14b.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q14b.txt new file mode 100644 index 000000000..4bd6eb61b --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q14b.txt @@ -0,0 +1,3932 @@ +== Physical Plan == +AdaptiveSparkPlan (599) ++- == Final Plan == + NativeProject (224) + +- NativeTakeOrdered (223) + +- NativeSortMergeJoin Inner (222) + :- NativeSort (194) + : +- NativeFilter (193) + : +- NativeProject (192) + : +- NativeHashAggregate (191) + : +- InputAdapter (190) + : +- AQEShuffleRead (189) + : +- ShuffleQueryStage (188), Statistics(X) + : +- NativeShuffleExchange (187) + : +- NativeHashAggregate (186) + : +- NativeProject (185) + : +- NativeProject (184) + : +- NativeSortMergeJoin Inner (183) + : :- NativeSort (173) + : : +- InputAdapter (172) + : : +- AQEShuffleRead (171) + : : +- ShuffleQueryStage (170), Statistics(X) + : : +- NativeShuffleExchange (169) + : : +- NativeProject (168) + : : +- NativeSortMergeJoin Inner (167) + : : :- NativeSortMergeJoin LeftSemi (152) + : : : :- NativeSort (8) + : : : : +- InputAdapter (7) + : : : : +- AQEShuffleRead (6) + : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : +- NativeShuffleExchange (4) + : : : : +- NativeFilter (3) + : : : : +- InputAdapter (2) + : : : : +- NativeParquetScan (1) + : : : +- NativeSort (151) + : : : +- InputAdapter (150) + : : : +- AQEShuffleRead (149) + : : : +- ShuffleQueryStage (148), Statistics(X) + : : : +- NativeShuffleExchange (147) + : : : +- NativeProject (146) + : : : +- NativeSortMergeJoin Inner (145) + : : : :- NativeSort (16) + : : : : +- InputAdapter (15) + : : : : +- AQEShuffleRead (14) + : : : : +- ShuffleQueryStage (13), Statistics(X) + : : : : +- NativeShuffleExchange (12) + : : : : +- NativeFilter (11) + : : : : +- InputAdapter (10) + : : : : +- NativeParquetScan (9) + : : : +- NativeSort (144) + : : : +- InputAdapter (143) + : : : +- AQEShuffleRead (142) + : : : +- ShuffleQueryStage (141), Statistics(X) + : : : +- NativeShuffleExchange (140) + : : : +- NativeSortMergeJoin LeftSemi (139) + : : : :- NativeSort (104) + : : : : +- InputAdapter (103) + : : : : +- AQEShuffleRead (102) + : : : : +- ShuffleQueryStage (101), Statistics(X) + : : : : +- NativeShuffleExchange (100) + : : : : +- NativeProject (99) + : : : : +- NativeHashAggregate (98) + : : : : +- InputAdapter (97) + : : : : +- AQEShuffleRead (96) + : : : : +- ShuffleQueryStage (95), Statistics(X) + : : : : +- NativeShuffleExchange (94) + : : : : +- NativeHashAggregate (93) + : : : : +- NativeProject (92) + : : : : +- NativeSortMergeJoin Inner (91) + : : : : :- NativeSort (84) + : : : : : +- InputAdapter (83) + : : : : : +- AQEShuffleRead (82) + : : : : : +- ShuffleQueryStage (81), Statistics(X) + : : : : : +- NativeShuffleExchange (80) + : : : : : +- NativeProject (79) + : : : : : +- NativeSortMergeJoin Inner (78) + : : : : : :- NativeSort (24) + : : : : : : +- InputAdapter (23) + : : : : : : +- AQEShuffleRead (22) + : : : : : : +- ShuffleQueryStage (21), Statistics(X) + : : : : : : +- NativeShuffleExchange (20) + : : : : : : +- NativeFilter (19) + : : : : : : +- InputAdapter (18) + : : : : : : +- NativeParquetScan (17) + : : : : : +- NativeSort (77) + : : : : : +- InputAdapter (76) + : : : : : +- AQEShuffleRead (75) + : : : : : +- ShuffleQueryStage (74), Statistics(X) + : : : : : +- NativeShuffleExchange (73) + : : : : : +- NativeSortMergeJoin LeftSemi (72) + : : : : : :- NativeSort (32) + : : : : : : +- InputAdapter (31) + : : : : : : +- AQEShuffleRead (30) + : : : : : : +- ShuffleQueryStage (29), Statistics(X) + : : : : : : +- NativeShuffleExchange (28) + : : : : : : +- NativeFilter (27) + : : : : : : +- InputAdapter (26) + : : : : : : +- NativeParquetScan (25) + : : : : : +- NativeSort (71) + : : : : : +- InputAdapter (70) + : : : : : +- AQEShuffleRead (69) + : : : : : +- ShuffleQueryStage (68), Statistics(X) + : : : : : +- NativeShuffleExchange (67) + : : : : : +- NativeProject (66) + : : : : : +- NativeSortMergeJoin Inner (65) + : : : : : :- NativeSort (55) + : : : : : : +- InputAdapter (54) + : : : : : : +- AQEShuffleRead (53) + : : : : : : +- ShuffleQueryStage (52), Statistics(X) + : : : : : : +- NativeShuffleExchange (51) + : : : : : : +- NativeProject (50) + : : : : : : +- NativeSortMergeJoin Inner (49) + : : : : : : :- NativeSort (40) + : : : : : : : +- InputAdapter (39) + : : : : : : : +- AQEShuffleRead (38) + : : : : : : : +- ShuffleQueryStage (37), Statistics(X) + : : : : : : : +- NativeShuffleExchange (36) + : : : : : : : +- NativeFilter (35) + : : : : : : : +- InputAdapter (34) + : : : : : : : +- NativeParquetScan (33) + : : : : : : +- NativeSort (48) + : : : : : : +- InputAdapter (47) + : : : : : : +- AQEShuffleRead (46) + : : : : : : +- ShuffleQueryStage (45), Statistics(X) + : : : : : : +- NativeShuffleExchange (44) + : : : : : : +- NativeFilter (43) + : : : : : : +- InputAdapter (42) + : : : : : : +- NativeParquetScan (41) + : : : : : +- NativeSort (64) + : : : : : +- InputAdapter (63) + : : : : : +- AQEShuffleRead (62) + : : : : : +- ShuffleQueryStage (61), Statistics(X) + : : : : : +- NativeShuffleExchange (60) + : : : : : +- NativeProject (59) + : : : : : +- NativeFilter (58) + : : : : : +- InputAdapter (57) + : : : : : +- NativeParquetScan (56) + : : : : +- NativeSort (90) + : : : : +- InputAdapter (89) + : : : : +- InputAdapter (88) + : : : : +- AQEShuffleRead (87) + : : : : +- ShuffleQueryStage (86), Statistics(X) + : : : : +- ReusedExchange (85) + : : : +- NativeSort (138) + : : : +- InputAdapter (137) + : : : +- AQEShuffleRead (136) + : : : +- ShuffleQueryStage (135), Statistics(X) + : : : +- NativeShuffleExchange (134) + : : : +- NativeProject (133) + : : : +- NativeSortMergeJoin Inner (132) + : : : :- NativeSort (125) + : : : : +- InputAdapter (124) + : : : : +- AQEShuffleRead (123) + : : : : +- ShuffleQueryStage (122), Statistics(X) + : : : : +- NativeShuffleExchange (121) + : : : : +- NativeProject (120) + : : : : +- NativeSortMergeJoin Inner (119) + : : : : :- NativeSort (112) + : : : : : +- InputAdapter (111) + : : : : : +- AQEShuffleRead (110) + : : : : : +- ShuffleQueryStage (109), Statistics(X) + : : : : : +- NativeShuffleExchange (108) + : : : : : +- NativeFilter (107) + : : : : : +- InputAdapter (106) + : : : : : +- NativeParquetScan (105) + : : : : +- NativeSort (118) + : : : : +- InputAdapter (117) + : : : : +- InputAdapter (116) + : : : : +- AQEShuffleRead (115) + : : : : +- ShuffleQueryStage (114), Statistics(X) + : : : : +- ReusedExchange (113) + : : : +- NativeSort (131) + : : : +- InputAdapter (130) + : : : +- InputAdapter (129) + : : : +- AQEShuffleRead (128) + : : : +- ShuffleQueryStage (127), Statistics(X) + : : : +- ReusedExchange (126) + : : +- NativeSortMergeJoin LeftSemi (166) + : : :- NativeSort (160) + : : : +- InputAdapter (159) + : : : +- AQEShuffleRead (158) + : : : +- ShuffleQueryStage (157), Statistics(X) + : : : +- NativeShuffleExchange (156) + : : : +- NativeFilter (155) + : : : +- InputAdapter (154) + : : : +- NativeParquetScan (153) + : : +- NativeSort (165) + : : +- InputAdapter (164) + : : +- AQEShuffleRead (163) + : : +- ShuffleQueryStage (162), Statistics(X) + : : +- ReusedExchange (161) + : +- NativeSort (182) + : +- InputAdapter (181) + : +- AQEShuffleRead (180) + : +- ShuffleQueryStage (179), Statistics(X) + : +- NativeShuffleExchange (178) + : +- NativeProject (177) + : +- NativeFilter (176) + : +- InputAdapter (175) + : +- NativeParquetScan (174) + +- NativeSort (221) + +- NativeFilter (220) + +- NativeProject (219) + +- NativeHashAggregate (218) + +- InputAdapter (217) + +- AQEShuffleRead (216) + +- ShuffleQueryStage (215), Statistics(X) + +- NativeShuffleExchange (214) + +- NativeHashAggregate (213) + +- NativeProject (212) + +- NativeProject (211) + +- NativeSortMergeJoin Inner (210) + :- NativeSort (200) + : +- InputAdapter (199) + : +- InputAdapter (198) + : +- AQEShuffleRead (197) + : +- ShuffleQueryStage (196), Statistics(X) + : +- ReusedExchange (195) + +- NativeSort (209) + +- InputAdapter (208) + +- AQEShuffleRead (207) + +- ShuffleQueryStage (206), Statistics(X) + +- NativeShuffleExchange (205) + +- NativeProject (204) + +- NativeFilter (203) + +- InputAdapter (202) + +- NativeParquetScan (201) ++- == Initial Plan == + TakeOrderedAndProject (598) + +- SortMergeJoin Inner (597) + :- Sort (410) + : +- Filter (409) + : +- HashAggregate (408) + : +- Exchange (407) + : +- HashAggregate (406) + : +- Project (405) + : +- SortMergeJoin Inner (404) + : :- Sort (398) + : : +- Exchange (397) + : : +- Project (396) + : : +- SortMergeJoin Inner (395) + : : :- SortMergeJoin LeftSemi (309) + : : : :- Sort (228) + : : : : +- Exchange (227) + : : : : +- Filter (226) + : : : : +- Scan parquet (225) + : : : +- Sort (308) + : : : +- Exchange (307) + : : : +- Project (306) + : : : +- SortMergeJoin Inner (305) + : : : :- Sort (232) + : : : : +- Exchange (231) + : : : : +- Filter (230) + : : : : +- Scan parquet (229) + : : : +- Sort (304) + : : : +- Exchange (303) + : : : +- SortMergeJoin LeftSemi (302) + : : : :- Sort (280) + : : : : +- Exchange (279) + : : : : +- HashAggregate (278) + : : : : +- Exchange (277) + : : : : +- HashAggregate (276) + : : : : +- Project (275) + : : : : +- SortMergeJoin Inner (274) + : : : : :- Sort (268) + : : : : : +- Exchange (267) + : : : : : +- Project (266) + : : : : : +- SortMergeJoin Inner (265) + : : : : : :- Sort (236) + : : : : : : +- Exchange (235) + : : : : : : +- Filter (234) + : : : : : : +- Scan parquet (233) + : : : : : +- Sort (264) + : : : : : +- Exchange (263) + : : : : : +- SortMergeJoin LeftSemi (262) + : : : : : :- Sort (240) + : : : : : : +- Exchange (239) + : : : : : : +- Filter (238) + : : : : : : +- Scan parquet (237) + : : : : : +- Sort (261) + : : : : : +- Exchange (260) + : : : : : +- Project (259) + : : : : : +- SortMergeJoin Inner (258) + : : : : : :- Sort (252) + : : : : : : +- Exchange (251) + : : : : : : +- Project (250) + : : : : : : +- SortMergeJoin Inner (249) + : : : : : : :- Sort (244) + : : : : : : : +- Exchange (243) + : : : : : : : +- Filter (242) + : : : : : : : +- Scan parquet (241) + : : : : : : +- Sort (248) + : : : : : : +- Exchange (247) + : : : : : : +- Filter (246) + : : : : : : +- Scan parquet (245) + : : : : : +- Sort (257) + : : : : : +- Exchange (256) + : : : : : +- Project (255) + : : : : : +- Filter (254) + : : : : : +- Scan parquet (253) + : : : : +- Sort (273) + : : : : +- Exchange (272) + : : : : +- Project (271) + : : : : +- Filter (270) + : : : : +- Scan parquet (269) + : : : +- Sort (301) + : : : +- Exchange (300) + : : : +- Project (299) + : : : +- SortMergeJoin Inner (298) + : : : :- Sort (292) + : : : : +- Exchange (291) + : : : : +- Project (290) + : : : : +- SortMergeJoin Inner (289) + : : : : :- Sort (284) + : : : : : +- Exchange (283) + : : : : : +- Filter (282) + : : : : : +- Scan parquet (281) + : : : : +- Sort (288) + : : : : +- Exchange (287) + : : : : +- Filter (286) + : : : : +- Scan parquet (285) + : : : +- Sort (297) + : : : +- Exchange (296) + : : : +- Project (295) + : : : +- Filter (294) + : : : +- Scan parquet (293) + : : +- SortMergeJoin LeftSemi (394) + : : :- Sort (313) + : : : +- Exchange (312) + : : : +- Filter (311) + : : : +- Scan parquet (310) + : : +- Sort (393) + : : +- Exchange (392) + : : +- Project (391) + : : +- SortMergeJoin Inner (390) + : : :- Sort (317) + : : : +- Exchange (316) + : : : +- Filter (315) + : : : +- Scan parquet (314) + : : +- Sort (389) + : : +- Exchange (388) + : : +- SortMergeJoin LeftSemi (387) + : : :- Sort (365) + : : : +- Exchange (364) + : : : +- HashAggregate (363) + : : : +- Exchange (362) + : : : +- HashAggregate (361) + : : : +- Project (360) + : : : +- SortMergeJoin Inner (359) + : : : :- Sort (353) + : : : : +- Exchange (352) + : : : : +- Project (351) + : : : : +- SortMergeJoin Inner (350) + : : : : :- Sort (321) + : : : : : +- Exchange (320) + : : : : : +- Filter (319) + : : : : : +- Scan parquet (318) + : : : : +- Sort (349) + : : : : +- Exchange (348) + : : : : +- SortMergeJoin LeftSemi (347) + : : : : :- Sort (325) + : : : : : +- Exchange (324) + : : : : : +- Filter (323) + : : : : : +- Scan parquet (322) + : : : : +- Sort (346) + : : : : +- Exchange (345) + : : : : +- Project (344) + : : : : +- SortMergeJoin Inner (343) + : : : : :- Sort (337) + : : : : : +- Exchange (336) + : : : : : +- Project (335) + : : : : : +- SortMergeJoin Inner (334) + : : : : : :- Sort (329) + : : : : : : +- Exchange (328) + : : : : : : +- Filter (327) + : : : : : : +- Scan parquet (326) + : : : : : +- Sort (333) + : : : : : +- Exchange (332) + : : : : : +- Filter (331) + : : : : : +- Scan parquet (330) + : : : : +- Sort (342) + : : : : +- Exchange (341) + : : : : +- Project (340) + : : : : +- Filter (339) + : : : : +- Scan parquet (338) + : : : +- Sort (358) + : : : +- Exchange (357) + : : : +- Project (356) + : : : +- Filter (355) + : : : +- Scan parquet (354) + : : +- Sort (386) + : : +- Exchange (385) + : : +- Project (384) + : : +- SortMergeJoin Inner (383) + : : :- Sort (377) + : : : +- Exchange (376) + : : : +- Project (375) + : : : +- SortMergeJoin Inner (374) + : : : :- Sort (369) + : : : : +- Exchange (368) + : : : : +- Filter (367) + : : : : +- Scan parquet (366) + : : : +- Sort (373) + : : : +- Exchange (372) + : : : +- Filter (371) + : : : +- Scan parquet (370) + : : +- Sort (382) + : : +- Exchange (381) + : : +- Project (380) + : : +- Filter (379) + : : +- Scan parquet (378) + : +- Sort (403) + : +- Exchange (402) + : +- Project (401) + : +- Filter (400) + : +- Scan parquet (399) + +- Sort (596) + +- Filter (595) + +- HashAggregate (594) + +- Exchange (593) + +- HashAggregate (592) + +- Project (591) + +- SortMergeJoin Inner (590) + :- Sort (584) + : +- Exchange (583) + : +- Project (582) + : +- SortMergeJoin Inner (581) + : :- SortMergeJoin LeftSemi (495) + : : :- Sort (414) + : : : +- Exchange (413) + : : : +- Filter (412) + : : : +- Scan parquet (411) + : : +- Sort (494) + : : +- Exchange (493) + : : +- Project (492) + : : +- SortMergeJoin Inner (491) + : : :- Sort (418) + : : : +- Exchange (417) + : : : +- Filter (416) + : : : +- Scan parquet (415) + : : +- Sort (490) + : : +- Exchange (489) + : : +- SortMergeJoin LeftSemi (488) + : : :- Sort (466) + : : : +- Exchange (465) + : : : +- HashAggregate (464) + : : : +- Exchange (463) + : : : +- HashAggregate (462) + : : : +- Project (461) + : : : +- SortMergeJoin Inner (460) + : : : :- Sort (454) + : : : : +- Exchange (453) + : : : : +- Project (452) + : : : : +- SortMergeJoin Inner (451) + : : : : :- Sort (422) + : : : : : +- Exchange (421) + : : : : : +- Filter (420) + : : : : : +- Scan parquet (419) + : : : : +- Sort (450) + : : : : +- Exchange (449) + : : : : +- SortMergeJoin LeftSemi (448) + : : : : :- Sort (426) + : : : : : +- Exchange (425) + : : : : : +- Filter (424) + : : : : : +- Scan parquet (423) + : : : : +- Sort (447) + : : : : +- Exchange (446) + : : : : +- Project (445) + : : : : +- SortMergeJoin Inner (444) + : : : : :- Sort (438) + : : : : : +- Exchange (437) + : : : : : +- Project (436) + : : : : : +- SortMergeJoin Inner (435) + : : : : : :- Sort (430) + : : : : : : +- Exchange (429) + : : : : : : +- Filter (428) + : : : : : : +- Scan parquet (427) + : : : : : +- Sort (434) + : : : : : +- Exchange (433) + : : : : : +- Filter (432) + : : : : : +- Scan parquet (431) + : : : : +- Sort (443) + : : : : +- Exchange (442) + : : : : +- Project (441) + : : : : +- Filter (440) + : : : : +- Scan parquet (439) + : : : +- Sort (459) + : : : +- Exchange (458) + : : : +- Project (457) + : : : +- Filter (456) + : : : +- Scan parquet (455) + : : +- Sort (487) + : : +- Exchange (486) + : : +- Project (485) + : : +- SortMergeJoin Inner (484) + : : :- Sort (478) + : : : +- Exchange (477) + : : : +- Project (476) + : : : +- SortMergeJoin Inner (475) + : : : :- Sort (470) + : : : : +- Exchange (469) + : : : : +- Filter (468) + : : : : +- Scan parquet (467) + : : : +- Sort (474) + : : : +- Exchange (473) + : : : +- Filter (472) + : : : +- Scan parquet (471) + : : +- Sort (483) + : : +- Exchange (482) + : : +- Project (481) + : : +- Filter (480) + : : +- Scan parquet (479) + : +- SortMergeJoin LeftSemi (580) + : :- Sort (499) + : : +- Exchange (498) + : : +- Filter (497) + : : +- Scan parquet (496) + : +- Sort (579) + : +- Exchange (578) + : +- Project (577) + : +- SortMergeJoin Inner (576) + : :- Sort (503) + : : +- Exchange (502) + : : +- Filter (501) + : : +- Scan parquet (500) + : +- Sort (575) + : +- Exchange (574) + : +- SortMergeJoin LeftSemi (573) + : :- Sort (551) + : : +- Exchange (550) + : : +- HashAggregate (549) + : : +- Exchange (548) + : : +- HashAggregate (547) + : : +- Project (546) + : : +- SortMergeJoin Inner (545) + : : :- Sort (539) + : : : +- Exchange (538) + : : : +- Project (537) + : : : +- SortMergeJoin Inner (536) + : : : :- Sort (507) + : : : : +- Exchange (506) + : : : : +- Filter (505) + : : : : +- Scan parquet (504) + : : : +- Sort (535) + : : : +- Exchange (534) + : : : +- SortMergeJoin LeftSemi (533) + : : : :- Sort (511) + : : : : +- Exchange (510) + : : : : +- Filter (509) + : : : : +- Scan parquet (508) + : : : +- Sort (532) + : : : +- Exchange (531) + : : : +- Project (530) + : : : +- SortMergeJoin Inner (529) + : : : :- Sort (523) + : : : : +- Exchange (522) + : : : : +- Project (521) + : : : : +- SortMergeJoin Inner (520) + : : : : :- Sort (515) + : : : : : +- Exchange (514) + : : : : : +- Filter (513) + : : : : : +- Scan parquet (512) + : : : : +- Sort (519) + : : : : +- Exchange (518) + : : : : +- Filter (517) + : : : : +- Scan parquet (516) + : : : +- Sort (528) + : : : +- Exchange (527) + : : : +- Project (526) + : : : +- Filter (525) + : : : +- Scan parquet (524) + : : +- Sort (544) + : : +- Exchange (543) + : : +- Project (542) + : : +- Filter (541) + : : +- Scan parquet (540) + : +- Sort (572) + : +- Exchange (571) + : +- Project (570) + : +- SortMergeJoin Inner (569) + : :- Sort (563) + : : +- Exchange (562) + : : +- Project (561) + : : +- SortMergeJoin Inner (560) + : : :- Sort (555) + : : : +- Exchange (554) + : : : +- Filter (553) + : : : +- Scan parquet (552) + : : +- Sort (559) + : : +- Exchange (558) + : : +- Filter (557) + : : +- Scan parquet (556) + : +- Sort (568) + : +- Exchange (567) + : +- Project (566) + : +- Filter (565) + : +- Scan parquet (564) + +- Sort (589) + +- Exchange (588) + +- Project (587) + +- Filter (586) + +- Scan parquet (585) + + +(225) Scan parquet +Output [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_quantity#3, ss_list_price#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_quantity#3, ss_list_price#4] +Arguments: [#1, #2, #3, #4] + +(3) NativeFilter +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Condition : (isnotnull(ss_item_sk#2) AND isnotnull(ss_sold_date_sk#1)) + +(4) NativeShuffleExchange +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: X + +(6) AQEShuffleRead +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: coalesced + +(7) InputAdapter +Input [4]: [#1#1, #2#2, #3#3, #4#4] + +(8) NativeSort +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false + +(229) Scan parquet +Output [4]: [i_item_sk#5, i_brand_id#6, i_class_id#7, i_category_id#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id)] +ReadSchema: struct + +(10) InputAdapter +Input [4]: [i_item_sk#5, i_brand_id#6, i_class_id#7, i_category_id#8] +Arguments: [#5, #6, #7, #8] + +(11) NativeFilter +Input [4]: [#5#5, #6#6, #7#7, #8#8] +Condition : ((isnotnull(i_brand_id#6) AND isnotnull(i_class_id#7)) AND isnotnull(i_category_id#8)) + +(12) NativeShuffleExchange +Input [4]: [#5#5, #6#6, #7#7, #8#8] +Arguments: hashpartitioning(i_brand_id#6, i_class_id#7, i_category_id#8, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [4]: [#5#5, #6#6, #7#7, #8#8] +Arguments: X + +(14) AQEShuffleRead +Input [4]: [#5#5, #6#6, #7#7, #8#8] +Arguments: coalesced + +(15) InputAdapter +Input [4]: [#5#5, #6#6, #7#7, #8#8] + +(16) NativeSort +Input [4]: [#5#5, #6#6, #7#7, #8#8] +Arguments: [i_brand_id#6 ASC NULLS FIRST, i_class_id#7 ASC NULLS FIRST, i_category_id#8 ASC NULLS FIRST], false + +(233) Scan parquet +Output [2]: [ss_sold_date_sk#9, ss_item_sk#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(18) InputAdapter +Input [2]: [ss_sold_date_sk#9, ss_item_sk#10] +Arguments: [#9, #10] + +(19) NativeFilter +Input [2]: [#9#9, #10#10] +Condition : (isnotnull(ss_item_sk#10) AND isnotnull(ss_sold_date_sk#9)) + +(20) NativeShuffleExchange +Input [2]: [#9#9, #10#10] +Arguments: hashpartitioning(ss_item_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [2]: [#9#9, #10#10] +Arguments: X + +(22) AQEShuffleRead +Input [2]: [#9#9, #10#10] +Arguments: coalesced + +(23) InputAdapter +Input [2]: [#9#9, #10#10] + +(24) NativeSort +Input [2]: [#9#9, #10#10] +Arguments: [ss_item_sk#10 ASC NULLS FIRST], false + +(237) Scan parquet +Output [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id)] +ReadSchema: struct + +(26) InputAdapter +Input [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: [#11, #12, #13, #14] + +(27) NativeFilter +Input [4]: [#11#11, #12#12, #13#13, #14#14] +Condition : (((isnotnull(i_item_sk#11) AND isnotnull(i_brand_id#12)) AND isnotnull(i_class_id#13)) AND isnotnull(i_category_id#14)) + +(28) NativeShuffleExchange +Input [4]: [#11#11, #12#12, #13#13, #14#14] +Arguments: hashpartitioning(coalesce(i_brand_id#12, 0), isnull(i_brand_id#12), coalesce(i_class_id#13, 0), isnull(i_class_id#13), coalesce(i_category_id#14, 0), isnull(i_category_id#14), 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(29) ShuffleQueryStage +Output [4]: [#11#11, #12#12, #13#13, #14#14] +Arguments: X + +(30) AQEShuffleRead +Input [4]: [#11#11, #12#12, #13#13, #14#14] +Arguments: coalesced + +(31) InputAdapter +Input [4]: [#11#11, #12#12, #13#13, #14#14] + +(32) NativeSort +Input [4]: [#11#11, #12#12, #13#13, #14#14] +Arguments: [coalesce(i_brand_id#12, 0) ASC NULLS FIRST, isnull(i_brand_id#12) ASC NULLS FIRST, coalesce(i_class_id#13, 0) ASC NULLS FIRST, isnull(i_class_id#13) ASC NULLS FIRST, coalesce(i_category_id#14, 0) ASC NULLS FIRST, isnull(i_category_id#14) ASC NULLS FIRST], false + +(241) Scan parquet +Output [2]: [cs_sold_date_sk#15, cs_item_sk#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(34) InputAdapter +Input [2]: [cs_sold_date_sk#15, cs_item_sk#16] +Arguments: [#15, #16] + +(35) NativeFilter +Input [2]: [#15#15, #16#16] +Condition : (isnotnull(cs_item_sk#16) AND isnotnull(cs_sold_date_sk#15)) + +(36) NativeShuffleExchange +Input [2]: [#15#15, #16#16] +Arguments: hashpartitioning(cs_item_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [2]: [#15#15, #16#16] +Arguments: X + +(38) AQEShuffleRead +Input [2]: [#15#15, #16#16] +Arguments: coalesced + +(39) InputAdapter +Input [2]: [#15#15, #16#16] + +(40) NativeSort +Input [2]: [#15#15, #16#16] +Arguments: [cs_item_sk#16 ASC NULLS FIRST], false + +(245) Scan parquet +Output [4]: [i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(42) InputAdapter +Input [4]: [i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: [#17, #18, #19, #20] + +(43) NativeFilter +Input [4]: [#17#17, #18#18, #19#19, #20#20] +Condition : isnotnull(i_item_sk#17) + +(44) NativeShuffleExchange +Input [4]: [#17#17, #18#18, #19#19, #20#20] +Arguments: hashpartitioning(i_item_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(45) ShuffleQueryStage +Output [4]: [#17#17, #18#18, #19#19, #20#20] +Arguments: X + +(46) AQEShuffleRead +Input [4]: [#17#17, #18#18, #19#19, #20#20] +Arguments: coalesced + +(47) InputAdapter +Input [4]: [#17#17, #18#18, #19#19, #20#20] + +(48) NativeSort +Input [4]: [#17#17, #18#18, #19#19, #20#20] +Arguments: [i_item_sk#17 ASC NULLS FIRST], false + +(49) NativeSortMergeJoin +Left keys [1]: [cs_item_sk#16] +Right keys [1]: [i_item_sk#17] +Join type: Inner +Join condition: None + +(50) NativeProject +Output [4]: [cs_sold_date_sk#15, i_brand_id#18, i_class_id#19, i_category_id#20] +Input [6]: [#15#15, #16#16, #17#17, #18#18, #19#19, #20#20] + +(51) NativeShuffleExchange +Input [4]: [cs_sold_date_sk#15, i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: hashpartitioning(cs_sold_date_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(52) ShuffleQueryStage +Output [4]: [cs_sold_date_sk#15, i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: X + +(53) AQEShuffleRead +Input [4]: [cs_sold_date_sk#15, i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: coalesced + +(54) InputAdapter +Input [4]: [cs_sold_date_sk#15, i_brand_id#18, i_class_id#19, i_category_id#20] + +(55) NativeSort +Input [4]: [cs_sold_date_sk#15, i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: [cs_sold_date_sk#15 ASC NULLS FIRST], false + +(253) Scan parquet +Output [2]: [d_date_sk#21, d_year#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(57) InputAdapter +Input [2]: [d_date_sk#21, d_year#22] +Arguments: [#21, #22] + +(58) NativeFilter +Input [2]: [#21#21, #22#22] +Condition : (((isnotnull(d_year#22) AND (d_year#22 >= 1999)) AND (d_year#22 <= 2001)) AND isnotnull(d_date_sk#21)) + +(59) NativeProject +Output [1]: [d_date_sk#21] +Input [2]: [#21#21, #22#22] + +(60) NativeShuffleExchange +Input [1]: [d_date_sk#21] +Arguments: hashpartitioning(d_date_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(61) ShuffleQueryStage +Output [1]: [d_date_sk#21] +Arguments: X + +(62) AQEShuffleRead +Input [1]: [d_date_sk#21] +Arguments: coalesced + +(63) InputAdapter +Input [1]: [d_date_sk#21] + +(64) NativeSort +Input [1]: [d_date_sk#21] +Arguments: [d_date_sk#21 ASC NULLS FIRST], false + +(65) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#15] +Right keys [1]: [d_date_sk#21] +Join type: Inner +Join condition: None + +(66) NativeProject +Output [3]: [i_brand_id#18, i_class_id#19, i_category_id#20] +Input [5]: [cs_sold_date_sk#15, i_brand_id#18, i_class_id#19, i_category_id#20, d_date_sk#21] + +(67) NativeShuffleExchange +Input [3]: [i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: hashpartitioning(coalesce(i_brand_id#18, 0), isnull(i_brand_id#18), coalesce(i_class_id#19, 0), isnull(i_class_id#19), coalesce(i_category_id#20, 0), isnull(i_category_id#20), 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(68) ShuffleQueryStage +Output [3]: [i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: X + +(69) AQEShuffleRead +Input [3]: [i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: coalesced + +(70) InputAdapter +Input [3]: [i_brand_id#18, i_class_id#19, i_category_id#20] + +(71) NativeSort +Input [3]: [i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: [coalesce(i_brand_id#18, 0) ASC NULLS FIRST, isnull(i_brand_id#18) ASC NULLS FIRST, coalesce(i_class_id#19, 0) ASC NULLS FIRST, isnull(i_class_id#19) ASC NULLS FIRST, coalesce(i_category_id#20, 0) ASC NULLS FIRST, isnull(i_category_id#20) ASC NULLS FIRST], false + +(72) NativeSortMergeJoin +Left keys [6]: [coalesce(i_brand_id#12, 0), isnull(i_brand_id#12), coalesce(i_class_id#13, 0), isnull(i_class_id#13), coalesce(i_category_id#14, 0), isnull(i_category_id#14)] +Right keys [6]: [coalesce(i_brand_id#18, 0), isnull(i_brand_id#18), coalesce(i_class_id#19, 0), isnull(i_class_id#19), coalesce(i_category_id#20, 0), isnull(i_category_id#20)] +Join type: LeftSemi +Join condition: None + +(73) NativeShuffleExchange +Input [4]: [#11#11, #12#12, #13#13, #14#14] +Arguments: hashpartitioning(i_item_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(74) ShuffleQueryStage +Output [4]: [#11#11, #12#12, #13#13, #14#14] +Arguments: X + +(75) AQEShuffleRead +Input [4]: [#11#11, #12#12, #13#13, #14#14] +Arguments: coalesced + +(76) InputAdapter +Input [4]: [#11#11, #12#12, #13#13, #14#14] + +(77) NativeSort +Input [4]: [#11#11, #12#12, #13#13, #14#14] +Arguments: [i_item_sk#11 ASC NULLS FIRST], false + +(78) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#10] +Right keys [1]: [i_item_sk#11] +Join type: Inner +Join condition: None + +(79) NativeProject +Output [4]: [ss_sold_date_sk#9, i_brand_id#12, i_class_id#13, i_category_id#14] +Input [6]: [#9#9, #10#10, #11#11, #12#12, #13#13, #14#14] + +(80) NativeShuffleExchange +Input [4]: [ss_sold_date_sk#9, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: hashpartitioning(ss_sold_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(81) ShuffleQueryStage +Output [4]: [ss_sold_date_sk#9, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: X + +(82) AQEShuffleRead +Input [4]: [ss_sold_date_sk#9, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: coalesced + +(83) InputAdapter +Input [4]: [ss_sold_date_sk#9, i_brand_id#12, i_class_id#13, i_category_id#14] + +(84) NativeSort +Input [4]: [ss_sold_date_sk#9, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: [ss_sold_date_sk#9 ASC NULLS FIRST], false + +(85) ReusedExchange [Reuses operator id: 60] +Output [1]: [d_date_sk#23] + +(86) ShuffleQueryStage +Output [1]: [d_date_sk#23] +Arguments: X + +(87) AQEShuffleRead +Input [1]: [d_date_sk#23] +Arguments: coalesced + +(88) InputAdapter +Input [1]: [d_date_sk#23] +Arguments: [#23] + +(89) InputAdapter +Input [1]: [#23#23] + +(90) NativeSort +Input [1]: [#23#23] +Arguments: [d_date_sk#23 ASC NULLS FIRST], false + +(91) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#9] +Right keys [1]: [d_date_sk#23] +Join type: Inner +Join condition: None + +(92) NativeProject +Output [3]: [i_brand_id#12 AS brand_id#24, i_class_id#13 AS class_id#25, i_category_id#14 AS category_id#26] +Input [5]: [ss_sold_date_sk#9, i_brand_id#12, i_class_id#13, i_category_id#14, #23#23] + +(93) NativeHashAggregate +Input [3]: [brand_id#24, class_id#25, category_id#26] +Keys [3]: [brand_id#24, class_id#25, category_id#26] +Functions: [] +Aggregate Attributes: [] +Results [4]: [brand_id#24, class_id#25, category_id#26, #27#27] + +(94) NativeShuffleExchange +Input [4]: [brand_id#24, class_id#25, category_id#26, #27#27] +Arguments: hashpartitioning(brand_id#24, class_id#25, category_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(95) ShuffleQueryStage +Output [4]: [brand_id#24, class_id#25, category_id#26, #27#27] +Arguments: X + +(96) AQEShuffleRead +Input [4]: [brand_id#24, class_id#25, category_id#26, #27#27] +Arguments: coalesced + +(97) InputAdapter +Input [4]: [brand_id#24, class_id#25, category_id#26, #27#27] + +(98) NativeHashAggregate +Input [4]: [brand_id#24, class_id#25, category_id#26, #27#27] +Keys [3]: [brand_id#24, class_id#25, category_id#26] +Functions: [] +Aggregate Attributes: [] +Results [4]: [brand_id#24, class_id#25, category_id#26, #27#27] + +(99) NativeProject +Output [3]: [brand_id#24, class_id#25, category_id#26] +Input [4]: [brand_id#24, class_id#25, category_id#26, #27#27] + +(100) NativeShuffleExchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(coalesce(brand_id#24, 0), isnull(brand_id#24), coalesce(class_id#25, 0), isnull(class_id#25), coalesce(category_id#26, 0), isnull(category_id#26), 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(101) ShuffleQueryStage +Output [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: X + +(102) AQEShuffleRead +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: coalesced + +(103) InputAdapter +Input [3]: [brand_id#24, class_id#25, category_id#26] + +(104) NativeSort +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: [coalesce(brand_id#24, 0) ASC NULLS FIRST, isnull(brand_id#24) ASC NULLS FIRST, coalesce(class_id#25, 0) ASC NULLS FIRST, isnull(class_id#25) ASC NULLS FIRST, coalesce(category_id#26, 0) ASC NULLS FIRST, isnull(category_id#26) ASC NULLS FIRST], false + +(281) Scan parquet +Output [2]: [ws_sold_date_sk#28, ws_item_sk#29] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(106) InputAdapter +Input [2]: [ws_sold_date_sk#28, ws_item_sk#29] +Arguments: [#28, #29] + +(107) NativeFilter +Input [2]: [#28#28, #29#29] +Condition : (isnotnull(ws_item_sk#29) AND isnotnull(ws_sold_date_sk#28)) + +(108) NativeShuffleExchange +Input [2]: [#28#28, #29#29] +Arguments: hashpartitioning(ws_item_sk#29, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(109) ShuffleQueryStage +Output [2]: [#28#28, #29#29] +Arguments: X + +(110) AQEShuffleRead +Input [2]: [#28#28, #29#29] +Arguments: coalesced + +(111) InputAdapter +Input [2]: [#28#28, #29#29] + +(112) NativeSort +Input [2]: [#28#28, #29#29] +Arguments: [ws_item_sk#29 ASC NULLS FIRST], false + +(113) ReusedExchange [Reuses operator id: 44] +Output [4]: [i_item_sk#30, i_brand_id#31, i_class_id#32, i_category_id#33] + +(114) ShuffleQueryStage +Output [4]: [i_item_sk#30, i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: X + +(115) AQEShuffleRead +Input [4]: [i_item_sk#30, i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: coalesced + +(116) InputAdapter +Input [4]: [i_item_sk#30, i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: [#30, #31, #32, #33] + +(117) InputAdapter +Input [4]: [#30#30, #31#31, #32#32, #33#33] + +(118) NativeSort +Input [4]: [#30#30, #31#31, #32#32, #33#33] +Arguments: [i_item_sk#30 ASC NULLS FIRST], false + +(119) NativeSortMergeJoin +Left keys [1]: [ws_item_sk#29] +Right keys [1]: [i_item_sk#30] +Join type: Inner +Join condition: None + +(120) NativeProject +Output [4]: [ws_sold_date_sk#28, i_brand_id#31, i_class_id#32, i_category_id#33] +Input [6]: [#28#28, #29#29, #30#30, #31#31, #32#32, #33#33] + +(121) NativeShuffleExchange +Input [4]: [ws_sold_date_sk#28, i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: hashpartitioning(ws_sold_date_sk#28, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(122) ShuffleQueryStage +Output [4]: [ws_sold_date_sk#28, i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: X + +(123) AQEShuffleRead +Input [4]: [ws_sold_date_sk#28, i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: coalesced + +(124) InputAdapter +Input [4]: [ws_sold_date_sk#28, i_brand_id#31, i_class_id#32, i_category_id#33] + +(125) NativeSort +Input [4]: [ws_sold_date_sk#28, i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: [ws_sold_date_sk#28 ASC NULLS FIRST], false + +(126) ReusedExchange [Reuses operator id: 60] +Output [1]: [d_date_sk#34] + +(127) ShuffleQueryStage +Output [1]: [d_date_sk#34] +Arguments: X + +(128) AQEShuffleRead +Input [1]: [d_date_sk#34] +Arguments: coalesced + +(129) InputAdapter +Input [1]: [d_date_sk#34] +Arguments: [#34] + +(130) InputAdapter +Input [1]: [#34#34] + +(131) NativeSort +Input [1]: [#34#34] +Arguments: [d_date_sk#34 ASC NULLS FIRST], false + +(132) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#28] +Right keys [1]: [d_date_sk#34] +Join type: Inner +Join condition: None + +(133) NativeProject +Output [3]: [i_brand_id#31, i_class_id#32, i_category_id#33] +Input [5]: [ws_sold_date_sk#28, i_brand_id#31, i_class_id#32, i_category_id#33, #34#34] + +(134) NativeShuffleExchange +Input [3]: [i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: hashpartitioning(coalesce(i_brand_id#31, 0), isnull(i_brand_id#31), coalesce(i_class_id#32, 0), isnull(i_class_id#32), coalesce(i_category_id#33, 0), isnull(i_category_id#33), 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(135) ShuffleQueryStage +Output [3]: [i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: X + +(136) AQEShuffleRead +Input [3]: [i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: coalesced + +(137) InputAdapter +Input [3]: [i_brand_id#31, i_class_id#32, i_category_id#33] + +(138) NativeSort +Input [3]: [i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: [coalesce(i_brand_id#31, 0) ASC NULLS FIRST, isnull(i_brand_id#31) ASC NULLS FIRST, coalesce(i_class_id#32, 0) ASC NULLS FIRST, isnull(i_class_id#32) ASC NULLS FIRST, coalesce(i_category_id#33, 0) ASC NULLS FIRST, isnull(i_category_id#33) ASC NULLS FIRST], false + +(139) NativeSortMergeJoin +Left keys [6]: [coalesce(brand_id#24, 0), isnull(brand_id#24), coalesce(class_id#25, 0), isnull(class_id#25), coalesce(category_id#26, 0), isnull(category_id#26)] +Right keys [6]: [coalesce(i_brand_id#31, 0), isnull(i_brand_id#31), coalesce(i_class_id#32, 0), isnull(i_class_id#32), coalesce(i_category_id#33, 0), isnull(i_category_id#33)] +Join type: LeftSemi +Join condition: None + +(140) NativeShuffleExchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(brand_id#24, class_id#25, category_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(141) ShuffleQueryStage +Output [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: X + +(142) AQEShuffleRead +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: coalesced + +(143) InputAdapter +Input [3]: [brand_id#24, class_id#25, category_id#26] + +(144) NativeSort +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: [brand_id#24 ASC NULLS FIRST, class_id#25 ASC NULLS FIRST, category_id#26 ASC NULLS FIRST], false + +(145) NativeSortMergeJoin +Left keys [3]: [i_brand_id#6, i_class_id#7, i_category_id#8] +Right keys [3]: [brand_id#24, class_id#25, category_id#26] +Join type: Inner +Join condition: None + +(146) NativeProject +Output [1]: [i_item_sk#5 AS ss_item_sk#35] +Input [7]: [#5#5, #6#6, #7#7, #8#8, brand_id#24, class_id#25, category_id#26] + +(147) NativeShuffleExchange +Input [1]: [ss_item_sk#35] +Arguments: hashpartitioning(ss_item_sk#35, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(148) ShuffleQueryStage +Output [1]: [ss_item_sk#35] +Arguments: X + +(149) AQEShuffleRead +Input [1]: [ss_item_sk#35] +Arguments: coalesced + +(150) InputAdapter +Input [1]: [ss_item_sk#35] + +(151) NativeSort +Input [1]: [ss_item_sk#35] +Arguments: [ss_item_sk#35 ASC NULLS FIRST], false + +(152) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [ss_item_sk#35] +Join type: LeftSemi +Join condition: None + +(310) Scan parquet +Output [4]: [i_item_sk#36, i_brand_id#37, i_class_id#38, i_category_id#39] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id)] +ReadSchema: struct + +(154) InputAdapter +Input [4]: [i_item_sk#36, i_brand_id#37, i_class_id#38, i_category_id#39] +Arguments: [#36, #37, #38, #39] + +(155) NativeFilter +Input [4]: [#36#36, #37#37, #38#38, #39#39] +Condition : (((isnotnull(i_item_sk#36) AND isnotnull(i_brand_id#37)) AND isnotnull(i_class_id#38)) AND isnotnull(i_category_id#39)) + +(156) NativeShuffleExchange +Input [4]: [#36#36, #37#37, #38#38, #39#39] +Arguments: hashpartitioning(i_item_sk#36, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(157) ShuffleQueryStage +Output [4]: [#36#36, #37#37, #38#38, #39#39] +Arguments: X + +(158) AQEShuffleRead +Input [4]: [#36#36, #37#37, #38#38, #39#39] +Arguments: coalesced + +(159) InputAdapter +Input [4]: [#36#36, #37#37, #38#38, #39#39] + +(160) NativeSort +Input [4]: [#36#36, #37#37, #38#38, #39#39] +Arguments: [i_item_sk#36 ASC NULLS FIRST], false + +(161) ReusedExchange [Reuses operator id: 147] +Output [1]: [ss_item_sk#35] + +(162) ShuffleQueryStage +Output [1]: [ss_item_sk#35] +Arguments: X + +(163) AQEShuffleRead +Input [1]: [ss_item_sk#35] +Arguments: coalesced + +(164) InputAdapter +Input [1]: [ss_item_sk#35] + +(165) NativeSort +Input [1]: [ss_item_sk#35] +Arguments: [ss_item_sk#35 ASC NULLS FIRST], false + +(166) NativeSortMergeJoin +Left keys [1]: [i_item_sk#36] +Right keys [1]: [ss_item_sk#35] +Join type: LeftSemi +Join condition: None + +(167) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#36] +Join type: Inner +Join condition: None + +(168) NativeProject +Output [6]: [ss_sold_date_sk#1, ss_quantity#3, ss_list_price#4, i_brand_id#37, i_class_id#38, i_category_id#39] +Input [8]: [#1#1, #2#2, #3#3, #4#4, #36#36, #37#37, #38#38, #39#39] + +(169) NativeShuffleExchange +Input [6]: [ss_sold_date_sk#1, ss_quantity#3, ss_list_price#4, i_brand_id#37, i_class_id#38, i_category_id#39] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(170) ShuffleQueryStage +Output [6]: [ss_sold_date_sk#1, ss_quantity#3, ss_list_price#4, i_brand_id#37, i_class_id#38, i_category_id#39] +Arguments: X + +(171) AQEShuffleRead +Input [6]: [ss_sold_date_sk#1, ss_quantity#3, ss_list_price#4, i_brand_id#37, i_class_id#38, i_category_id#39] +Arguments: coalesced + +(172) InputAdapter +Input [6]: [ss_sold_date_sk#1, ss_quantity#3, ss_list_price#4, i_brand_id#37, i_class_id#38, i_category_id#39] + +(173) NativeSort +Input [6]: [ss_sold_date_sk#1, ss_quantity#3, ss_list_price#4, i_brand_id#37, i_class_id#38, i_category_id#39] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(399) Scan parquet +Output [2]: [d_date_sk#40, d_week_seq#41] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_week_seq), IsNotNull(d_date_sk)] +ReadSchema: struct + +(175) InputAdapter +Input [2]: [d_date_sk#40, d_week_seq#41] +Arguments: [#40, #41] + +(176) NativeFilter +Input [2]: [#40#40, #41#41] +Condition : ((isnotnull(d_week_seq#41) AND (d_week_seq#41 = Subquery subquery#42, [id=#43])) AND isnotnull(d_date_sk#40)) + +(177) NativeProject +Output [1]: [d_date_sk#40] +Input [2]: [#40#40, #41#41] + +(178) NativeShuffleExchange +Input [1]: [d_date_sk#40] +Arguments: hashpartitioning(d_date_sk#40, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(179) ShuffleQueryStage +Output [1]: [d_date_sk#40] +Arguments: X + +(180) AQEShuffleRead +Input [1]: [d_date_sk#40] +Arguments: coalesced + +(181) InputAdapter +Input [1]: [d_date_sk#40] + +(182) NativeSort +Input [1]: [d_date_sk#40] +Arguments: [d_date_sk#40 ASC NULLS FIRST], false + +(183) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#40] +Join type: Inner +Join condition: None + +(184) NativeProject +Output [5]: [ss_quantity#3, ss_list_price#4, i_brand_id#37, i_class_id#38, i_category_id#39] +Input [7]: [ss_sold_date_sk#1, ss_quantity#3, ss_list_price#4, i_brand_id#37, i_class_id#38, i_category_id#39, d_date_sk#40] + +(185) NativeProject +Output [4]: [i_brand_id#37 AS i_brand_id#37, i_class_id#38 AS i_class_id#38, i_category_id#39 AS i_category_id#39, (cast(ss_quantity#3 as decimal(10,0)) * ss_list_price#4) AS _c3#44] +Input [5]: [ss_quantity#3, ss_list_price#4, i_brand_id#37, i_class_id#38, i_category_id#39] + +(186) NativeHashAggregate +Input [4]: [i_brand_id#37, i_class_id#38, i_category_id#39, _c3#44] +Keys [3]: [i_brand_id#37, i_class_id#38, i_category_id#39] +Functions [2]: [partial_sum(_c3#44), partial_count(1)] +Aggregate Attributes [3]: [sum#45, isEmpty#46, count#47] +Results [4]: [i_brand_id#37, i_class_id#38, i_category_id#39, #27#27] + +(187) NativeShuffleExchange +Input [4]: [i_brand_id#37, i_class_id#38, i_category_id#39, #27#27] +Arguments: hashpartitioning(i_brand_id#37, i_class_id#38, i_category_id#39, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(188) ShuffleQueryStage +Output [4]: [i_brand_id#37, i_class_id#38, i_category_id#39, #27#27] +Arguments: X + +(189) AQEShuffleRead +Input [4]: [i_brand_id#37, i_class_id#38, i_category_id#39, #27#27] +Arguments: coalesced + +(190) InputAdapter +Input [4]: [i_brand_id#37, i_class_id#38, i_category_id#39, #27#27] + +(191) NativeHashAggregate +Input [4]: [i_brand_id#37, i_class_id#38, i_category_id#39, #27#27] +Keys [3]: [i_brand_id#37, i_class_id#38, i_category_id#39] +Functions [2]: [sum((cast(ss_quantity#3 as decimal(10,0)) * ss_list_price#4)), count(1)] +Aggregate Attributes [2]: [sum((cast(ss_quantity#3 as decimal(10,0)) * ss_list_price#4))#48, count(1)#49] +Results [5]: [i_brand_id#37, i_class_id#38, i_category_id#39, sum((cast(ss_quantity#3 as decimal(10,0)) * ss_list_price#4))#48, count(1)#49] + +(192) NativeProject +Output [6]: [store AS channel#50, i_brand_id#37, i_class_id#38, i_category_id#39, sum((cast(ss_quantity#3 as decimal(10,0)) * ss_list_price#4))#48 AS sales#51, count(1)#49 AS number_sales#52] +Input [5]: [i_brand_id#37, i_class_id#38, i_category_id#39, sum((cast(ss_quantity#3 as decimal(10,0)) * ss_list_price#4))#48, count(1)#49] + +(193) NativeFilter +Input [6]: [channel#50, i_brand_id#37, i_class_id#38, i_category_id#39, sales#51, number_sales#52] +Condition : (isnotnull(sales#51) AND (cast(sales#51 as decimal(32,6)) > cast(Subquery subquery#53, [id=#54] as decimal(32,6)))) + +(194) NativeSort +Input [6]: [channel#50, i_brand_id#37, i_class_id#38, i_category_id#39, sales#51, number_sales#52] +Arguments: [i_brand_id#37 ASC NULLS FIRST, i_class_id#38 ASC NULLS FIRST, i_category_id#39 ASC NULLS FIRST], false + +(195) ReusedExchange [Reuses operator id: 169] +Output [6]: [ss_sold_date_sk#55, ss_quantity#56, ss_list_price#57, i_brand_id#58, i_class_id#59, i_category_id#60] + +(196) ShuffleQueryStage +Output [6]: [ss_sold_date_sk#55, ss_quantity#56, ss_list_price#57, i_brand_id#58, i_class_id#59, i_category_id#60] +Arguments: X + +(197) AQEShuffleRead +Input [6]: [ss_sold_date_sk#55, ss_quantity#56, ss_list_price#57, i_brand_id#58, i_class_id#59, i_category_id#60] +Arguments: coalesced + +(198) InputAdapter +Input [6]: [ss_sold_date_sk#55, ss_quantity#56, ss_list_price#57, i_brand_id#58, i_class_id#59, i_category_id#60] +Arguments: [#55, #56, #57, #58, #59, #60] + +(199) InputAdapter +Input [6]: [#55#55, #56#56, #57#57, #58#58, #59#59, #60#60] + +(200) NativeSort +Input [6]: [#55#55, #56#56, #57#57, #58#58, #59#59, #60#60] +Arguments: [ss_sold_date_sk#55 ASC NULLS FIRST], false + +(585) Scan parquet +Output [2]: [d_date_sk#61, d_week_seq#62] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_week_seq), IsNotNull(d_date_sk)] +ReadSchema: struct + +(202) InputAdapter +Input [2]: [d_date_sk#61, d_week_seq#62] +Arguments: [#61, #62] + +(203) NativeFilter +Input [2]: [#61#61, #62#62] +Condition : ((isnotnull(d_week_seq#62) AND (d_week_seq#62 = Subquery subquery#63, [id=#64])) AND isnotnull(d_date_sk#61)) + +(204) NativeProject +Output [1]: [d_date_sk#61] +Input [2]: [#61#61, #62#62] + +(205) NativeShuffleExchange +Input [1]: [d_date_sk#61] +Arguments: hashpartitioning(d_date_sk#61, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(206) ShuffleQueryStage +Output [1]: [d_date_sk#61] +Arguments: X + +(207) AQEShuffleRead +Input [1]: [d_date_sk#61] +Arguments: coalesced + +(208) InputAdapter +Input [1]: [d_date_sk#61] + +(209) NativeSort +Input [1]: [d_date_sk#61] +Arguments: [d_date_sk#61 ASC NULLS FIRST], false + +(210) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#55] +Right keys [1]: [d_date_sk#61] +Join type: Inner +Join condition: None + +(211) NativeProject +Output [5]: [ss_quantity#56, ss_list_price#57, i_brand_id#58, i_class_id#59, i_category_id#60] +Input [7]: [#55#55, #56#56, #57#57, #58#58, #59#59, #60#60, d_date_sk#61] + +(212) NativeProject +Output [4]: [i_brand_id#58 AS i_brand_id#58, i_class_id#59 AS i_class_id#59, i_category_id#60 AS i_category_id#60, (cast(ss_quantity#56 as decimal(10,0)) * ss_list_price#57) AS _c3#65] +Input [5]: [ss_quantity#56, ss_list_price#57, i_brand_id#58, i_class_id#59, i_category_id#60] + +(213) NativeHashAggregate +Input [4]: [i_brand_id#58, i_class_id#59, i_category_id#60, _c3#65] +Keys [3]: [i_brand_id#58, i_class_id#59, i_category_id#60] +Functions [2]: [partial_sum(_c3#65), partial_count(1)] +Aggregate Attributes [3]: [sum#66, isEmpty#67, count#68] +Results [4]: [i_brand_id#58, i_class_id#59, i_category_id#60, #27#27] + +(214) NativeShuffleExchange +Input [4]: [i_brand_id#58, i_class_id#59, i_category_id#60, #27#27] +Arguments: hashpartitioning(i_brand_id#58, i_class_id#59, i_category_id#60, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(215) ShuffleQueryStage +Output [4]: [i_brand_id#58, i_class_id#59, i_category_id#60, #27#27] +Arguments: X + +(216) AQEShuffleRead +Input [4]: [i_brand_id#58, i_class_id#59, i_category_id#60, #27#27] +Arguments: coalesced + +(217) InputAdapter +Input [4]: [i_brand_id#58, i_class_id#59, i_category_id#60, #27#27] + +(218) NativeHashAggregate +Input [4]: [i_brand_id#58, i_class_id#59, i_category_id#60, #27#27] +Keys [3]: [i_brand_id#58, i_class_id#59, i_category_id#60] +Functions [2]: [sum((cast(ss_quantity#56 as decimal(10,0)) * ss_list_price#57)), count(1)] +Aggregate Attributes [2]: [sum((cast(ss_quantity#56 as decimal(10,0)) * ss_list_price#57))#69, count(1)#70] +Results [5]: [i_brand_id#58, i_class_id#59, i_category_id#60, sum((cast(ss_quantity#56 as decimal(10,0)) * ss_list_price#57))#69, count(1)#70] + +(219) NativeProject +Output [6]: [store AS channel#71, i_brand_id#58, i_class_id#59, i_category_id#60, sum((cast(ss_quantity#56 as decimal(10,0)) * ss_list_price#57))#69 AS sales#72, count(1)#70 AS number_sales#73] +Input [5]: [i_brand_id#58, i_class_id#59, i_category_id#60, sum((cast(ss_quantity#56 as decimal(10,0)) * ss_list_price#57))#69, count(1)#70] + +(220) NativeFilter +Input [6]: [channel#71, i_brand_id#58, i_class_id#59, i_category_id#60, sales#72, number_sales#73] +Condition : (isnotnull(sales#72) AND (cast(sales#72 as decimal(32,6)) > cast(ReusedSubquery Subquery subquery#53, [id=#54] as decimal(32,6)))) + +(221) NativeSort +Input [6]: [channel#71, i_brand_id#58, i_class_id#59, i_category_id#60, sales#72, number_sales#73] +Arguments: [i_brand_id#58 ASC NULLS FIRST, i_class_id#59 ASC NULLS FIRST, i_category_id#60 ASC NULLS FIRST], false + +(222) NativeSortMergeJoin +Left keys [3]: [i_brand_id#37, i_class_id#38, i_category_id#39] +Right keys [3]: [i_brand_id#58, i_class_id#59, i_category_id#60] +Join type: Inner +Join condition: None + +(223) NativeTakeOrdered +Input [12]: [channel#50, i_brand_id#37, i_class_id#38, i_category_id#39, sales#51, number_sales#52, channel#71, i_brand_id#58, i_class_id#59, i_category_id#60, sales#72, number_sales#73] +Arguments: X, [i_brand_id#37 ASC NULLS FIRST, i_class_id#38 ASC NULLS FIRST, i_category_id#39 ASC NULLS FIRST] + +(224) NativeProject +Output [12]: [channel#50, i_brand_id#37, i_class_id#38, i_category_id#39, sales#51, number_sales#52, channel#71, i_brand_id#58, i_class_id#59, i_category_id#60, sales#72, number_sales#73] +Input [12]: [channel#50, i_brand_id#37, i_class_id#38, i_category_id#39, sales#51, number_sales#52, channel#71, i_brand_id#58, i_class_id#59, i_category_id#60, sales#72, number_sales#73] + +(225) Scan parquet +Output [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_quantity#3, ss_list_price#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(226) Filter +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_quantity#3, ss_list_price#4] +Condition : (isnotnull(ss_item_sk#2) AND isnotnull(ss_sold_date_sk#1)) + +(227) Exchange +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_quantity#3, ss_list_price#4] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(228) Sort +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_quantity#3, ss_list_price#4] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false, 0 + +(229) Scan parquet +Output [4]: [i_item_sk#5, i_brand_id#6, i_class_id#7, i_category_id#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id)] +ReadSchema: struct + +(230) Filter +Input [4]: [i_item_sk#5, i_brand_id#6, i_class_id#7, i_category_id#8] +Condition : ((isnotnull(i_brand_id#6) AND isnotnull(i_class_id#7)) AND isnotnull(i_category_id#8)) + +(231) Exchange +Input [4]: [i_item_sk#5, i_brand_id#6, i_class_id#7, i_category_id#8] +Arguments: hashpartitioning(i_brand_id#6, i_class_id#7, i_category_id#8, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(232) Sort +Input [4]: [i_item_sk#5, i_brand_id#6, i_class_id#7, i_category_id#8] +Arguments: [i_brand_id#6 ASC NULLS FIRST, i_class_id#7 ASC NULLS FIRST, i_category_id#8 ASC NULLS FIRST], false, 0 + +(233) Scan parquet +Output [2]: [ss_sold_date_sk#9, ss_item_sk#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(234) Filter +Input [2]: [ss_sold_date_sk#9, ss_item_sk#10] +Condition : (isnotnull(ss_item_sk#10) AND isnotnull(ss_sold_date_sk#9)) + +(235) Exchange +Input [2]: [ss_sold_date_sk#9, ss_item_sk#10] +Arguments: hashpartitioning(ss_item_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(236) Sort +Input [2]: [ss_sold_date_sk#9, ss_item_sk#10] +Arguments: [ss_item_sk#10 ASC NULLS FIRST], false, 0 + +(237) Scan parquet +Output [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id)] +ReadSchema: struct + +(238) Filter +Input [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] +Condition : (((isnotnull(i_item_sk#11) AND isnotnull(i_brand_id#12)) AND isnotnull(i_class_id#13)) AND isnotnull(i_category_id#14)) + +(239) Exchange +Input [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: hashpartitioning(coalesce(i_brand_id#12, 0), isnull(i_brand_id#12), coalesce(i_class_id#13, 0), isnull(i_class_id#13), coalesce(i_category_id#14, 0), isnull(i_category_id#14), 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(240) Sort +Input [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: [coalesce(i_brand_id#12, 0) ASC NULLS FIRST, isnull(i_brand_id#12) ASC NULLS FIRST, coalesce(i_class_id#13, 0) ASC NULLS FIRST, isnull(i_class_id#13) ASC NULLS FIRST, coalesce(i_category_id#14, 0) ASC NULLS FIRST, isnull(i_category_id#14) ASC NULLS FIRST], false, 0 + +(241) Scan parquet +Output [2]: [cs_sold_date_sk#15, cs_item_sk#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(242) Filter +Input [2]: [cs_sold_date_sk#15, cs_item_sk#16] +Condition : (isnotnull(cs_item_sk#16) AND isnotnull(cs_sold_date_sk#15)) + +(243) Exchange +Input [2]: [cs_sold_date_sk#15, cs_item_sk#16] +Arguments: hashpartitioning(cs_item_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(244) Sort +Input [2]: [cs_sold_date_sk#15, cs_item_sk#16] +Arguments: [cs_item_sk#16 ASC NULLS FIRST], false, 0 + +(245) Scan parquet +Output [4]: [i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(246) Filter +Input [4]: [i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20] +Condition : isnotnull(i_item_sk#17) + +(247) Exchange +Input [4]: [i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: hashpartitioning(i_item_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(248) Sort +Input [4]: [i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: [i_item_sk#17 ASC NULLS FIRST], false, 0 + +(249) SortMergeJoin +Left keys [1]: [cs_item_sk#16] +Right keys [1]: [i_item_sk#17] +Join type: Inner +Join condition: None + +(250) Project +Output [4]: [cs_sold_date_sk#15, i_brand_id#18, i_class_id#19, i_category_id#20] +Input [6]: [cs_sold_date_sk#15, cs_item_sk#16, i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20] + +(251) Exchange +Input [4]: [cs_sold_date_sk#15, i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: hashpartitioning(cs_sold_date_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=31] + +(252) Sort +Input [4]: [cs_sold_date_sk#15, i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: [cs_sold_date_sk#15 ASC NULLS FIRST], false, 0 + +(253) Scan parquet +Output [2]: [d_date_sk#21, d_year#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(254) Filter +Input [2]: [d_date_sk#21, d_year#22] +Condition : (((isnotnull(d_year#22) AND (d_year#22 >= 1999)) AND (d_year#22 <= 2001)) AND isnotnull(d_date_sk#21)) + +(255) Project +Output [1]: [d_date_sk#21] +Input [2]: [d_date_sk#21, d_year#22] + +(256) Exchange +Input [1]: [d_date_sk#21] +Arguments: hashpartitioning(d_date_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=32] + +(257) Sort +Input [1]: [d_date_sk#21] +Arguments: [d_date_sk#21 ASC NULLS FIRST], false, 0 + +(258) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#15] +Right keys [1]: [d_date_sk#21] +Join type: Inner +Join condition: None + +(259) Project +Output [3]: [i_brand_id#18, i_class_id#19, i_category_id#20] +Input [5]: [cs_sold_date_sk#15, i_brand_id#18, i_class_id#19, i_category_id#20, d_date_sk#21] + +(260) Exchange +Input [3]: [i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: hashpartitioning(coalesce(i_brand_id#18, 0), isnull(i_brand_id#18), coalesce(i_class_id#19, 0), isnull(i_class_id#19), coalesce(i_category_id#20, 0), isnull(i_category_id#20), 100), ENSURE_REQUIREMENTS, [plan_id=33] + +(261) Sort +Input [3]: [i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: [coalesce(i_brand_id#18, 0) ASC NULLS FIRST, isnull(i_brand_id#18) ASC NULLS FIRST, coalesce(i_class_id#19, 0) ASC NULLS FIRST, isnull(i_class_id#19) ASC NULLS FIRST, coalesce(i_category_id#20, 0) ASC NULLS FIRST, isnull(i_category_id#20) ASC NULLS FIRST], false, 0 + +(262) SortMergeJoin +Left keys [6]: [coalesce(i_brand_id#12, 0), isnull(i_brand_id#12), coalesce(i_class_id#13, 0), isnull(i_class_id#13), coalesce(i_category_id#14, 0), isnull(i_category_id#14)] +Right keys [6]: [coalesce(i_brand_id#18, 0), isnull(i_brand_id#18), coalesce(i_class_id#19, 0), isnull(i_class_id#19), coalesce(i_category_id#20, 0), isnull(i_category_id#20)] +Join type: LeftSemi +Join condition: None + +(263) Exchange +Input [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: hashpartitioning(i_item_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=34] + +(264) Sort +Input [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: [i_item_sk#11 ASC NULLS FIRST], false, 0 + +(265) SortMergeJoin +Left keys [1]: [ss_item_sk#10] +Right keys [1]: [i_item_sk#11] +Join type: Inner +Join condition: None + +(266) Project +Output [4]: [ss_sold_date_sk#9, i_brand_id#12, i_class_id#13, i_category_id#14] +Input [6]: [ss_sold_date_sk#9, ss_item_sk#10, i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] + +(267) Exchange +Input [4]: [ss_sold_date_sk#9, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: hashpartitioning(ss_sold_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=35] + +(268) Sort +Input [4]: [ss_sold_date_sk#9, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: [ss_sold_date_sk#9 ASC NULLS FIRST], false, 0 + +(269) Scan parquet +Output [2]: [d_date_sk#23, d_year#74] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(270) Filter +Input [2]: [d_date_sk#23, d_year#74] +Condition : (((isnotnull(d_year#74) AND (d_year#74 >= 1999)) AND (d_year#74 <= 2001)) AND isnotnull(d_date_sk#23)) + +(271) Project +Output [1]: [d_date_sk#23] +Input [2]: [d_date_sk#23, d_year#74] + +(272) Exchange +Input [1]: [d_date_sk#23] +Arguments: hashpartitioning(d_date_sk#23, 100), ENSURE_REQUIREMENTS, [plan_id=36] + +(273) Sort +Input [1]: [d_date_sk#23] +Arguments: [d_date_sk#23 ASC NULLS FIRST], false, 0 + +(274) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#9] +Right keys [1]: [d_date_sk#23] +Join type: Inner +Join condition: None + +(275) Project +Output [3]: [i_brand_id#12 AS brand_id#24, i_class_id#13 AS class_id#25, i_category_id#14 AS category_id#26] +Input [5]: [ss_sold_date_sk#9, i_brand_id#12, i_class_id#13, i_category_id#14, d_date_sk#23] + +(276) HashAggregate +Input [3]: [brand_id#24, class_id#25, category_id#26] +Keys [3]: [brand_id#24, class_id#25, category_id#26] +Functions: [] +Aggregate Attributes: [] +Results [3]: [brand_id#24, class_id#25, category_id#26] + +(277) Exchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(brand_id#24, class_id#25, category_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=37] + +(278) HashAggregate +Input [3]: [brand_id#24, class_id#25, category_id#26] +Keys [3]: [brand_id#24, class_id#25, category_id#26] +Functions: [] +Aggregate Attributes: [] +Results [3]: [brand_id#24, class_id#25, category_id#26] + +(279) Exchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(coalesce(brand_id#24, 0), isnull(brand_id#24), coalesce(class_id#25, 0), isnull(class_id#25), coalesce(category_id#26, 0), isnull(category_id#26), 100), ENSURE_REQUIREMENTS, [plan_id=38] + +(280) Sort +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: [coalesce(brand_id#24, 0) ASC NULLS FIRST, isnull(brand_id#24) ASC NULLS FIRST, coalesce(class_id#25, 0) ASC NULLS FIRST, isnull(class_id#25) ASC NULLS FIRST, coalesce(category_id#26, 0) ASC NULLS FIRST, isnull(category_id#26) ASC NULLS FIRST], false, 0 + +(281) Scan parquet +Output [2]: [ws_sold_date_sk#28, ws_item_sk#29] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(282) Filter +Input [2]: [ws_sold_date_sk#28, ws_item_sk#29] +Condition : (isnotnull(ws_item_sk#29) AND isnotnull(ws_sold_date_sk#28)) + +(283) Exchange +Input [2]: [ws_sold_date_sk#28, ws_item_sk#29] +Arguments: hashpartitioning(ws_item_sk#29, 100), ENSURE_REQUIREMENTS, [plan_id=39] + +(284) Sort +Input [2]: [ws_sold_date_sk#28, ws_item_sk#29] +Arguments: [ws_item_sk#29 ASC NULLS FIRST], false, 0 + +(285) Scan parquet +Output [4]: [i_item_sk#30, i_brand_id#31, i_class_id#32, i_category_id#33] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(286) Filter +Input [4]: [i_item_sk#30, i_brand_id#31, i_class_id#32, i_category_id#33] +Condition : isnotnull(i_item_sk#30) + +(287) Exchange +Input [4]: [i_item_sk#30, i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: hashpartitioning(i_item_sk#30, 100), ENSURE_REQUIREMENTS, [plan_id=40] + +(288) Sort +Input [4]: [i_item_sk#30, i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: [i_item_sk#30 ASC NULLS FIRST], false, 0 + +(289) SortMergeJoin +Left keys [1]: [ws_item_sk#29] +Right keys [1]: [i_item_sk#30] +Join type: Inner +Join condition: None + +(290) Project +Output [4]: [ws_sold_date_sk#28, i_brand_id#31, i_class_id#32, i_category_id#33] +Input [6]: [ws_sold_date_sk#28, ws_item_sk#29, i_item_sk#30, i_brand_id#31, i_class_id#32, i_category_id#33] + +(291) Exchange +Input [4]: [ws_sold_date_sk#28, i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: hashpartitioning(ws_sold_date_sk#28, 100), ENSURE_REQUIREMENTS, [plan_id=41] + +(292) Sort +Input [4]: [ws_sold_date_sk#28, i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: [ws_sold_date_sk#28 ASC NULLS FIRST], false, 0 + +(293) Scan parquet +Output [2]: [d_date_sk#34, d_year#75] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(294) Filter +Input [2]: [d_date_sk#34, d_year#75] +Condition : (((isnotnull(d_year#75) AND (d_year#75 >= 1999)) AND (d_year#75 <= 2001)) AND isnotnull(d_date_sk#34)) + +(295) Project +Output [1]: [d_date_sk#34] +Input [2]: [d_date_sk#34, d_year#75] + +(296) Exchange +Input [1]: [d_date_sk#34] +Arguments: hashpartitioning(d_date_sk#34, 100), ENSURE_REQUIREMENTS, [plan_id=42] + +(297) Sort +Input [1]: [d_date_sk#34] +Arguments: [d_date_sk#34 ASC NULLS FIRST], false, 0 + +(298) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#28] +Right keys [1]: [d_date_sk#34] +Join type: Inner +Join condition: None + +(299) Project +Output [3]: [i_brand_id#31, i_class_id#32, i_category_id#33] +Input [5]: [ws_sold_date_sk#28, i_brand_id#31, i_class_id#32, i_category_id#33, d_date_sk#34] + +(300) Exchange +Input [3]: [i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: hashpartitioning(coalesce(i_brand_id#31, 0), isnull(i_brand_id#31), coalesce(i_class_id#32, 0), isnull(i_class_id#32), coalesce(i_category_id#33, 0), isnull(i_category_id#33), 100), ENSURE_REQUIREMENTS, [plan_id=43] + +(301) Sort +Input [3]: [i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: [coalesce(i_brand_id#31, 0) ASC NULLS FIRST, isnull(i_brand_id#31) ASC NULLS FIRST, coalesce(i_class_id#32, 0) ASC NULLS FIRST, isnull(i_class_id#32) ASC NULLS FIRST, coalesce(i_category_id#33, 0) ASC NULLS FIRST, isnull(i_category_id#33) ASC NULLS FIRST], false, 0 + +(302) SortMergeJoin +Left keys [6]: [coalesce(brand_id#24, 0), isnull(brand_id#24), coalesce(class_id#25, 0), isnull(class_id#25), coalesce(category_id#26, 0), isnull(category_id#26)] +Right keys [6]: [coalesce(i_brand_id#31, 0), isnull(i_brand_id#31), coalesce(i_class_id#32, 0), isnull(i_class_id#32), coalesce(i_category_id#33, 0), isnull(i_category_id#33)] +Join type: LeftSemi +Join condition: None + +(303) Exchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(brand_id#24, class_id#25, category_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=44] + +(304) Sort +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: [brand_id#24 ASC NULLS FIRST, class_id#25 ASC NULLS FIRST, category_id#26 ASC NULLS FIRST], false, 0 + +(305) SortMergeJoin +Left keys [3]: [i_brand_id#6, i_class_id#7, i_category_id#8] +Right keys [3]: [brand_id#24, class_id#25, category_id#26] +Join type: Inner +Join condition: None + +(306) Project +Output [1]: [i_item_sk#5 AS ss_item_sk#35] +Input [7]: [i_item_sk#5, i_brand_id#6, i_class_id#7, i_category_id#8, brand_id#24, class_id#25, category_id#26] + +(307) Exchange +Input [1]: [ss_item_sk#35] +Arguments: hashpartitioning(ss_item_sk#35, 100), ENSURE_REQUIREMENTS, [plan_id=45] + +(308) Sort +Input [1]: [ss_item_sk#35] +Arguments: [ss_item_sk#35 ASC NULLS FIRST], false, 0 + +(309) SortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [ss_item_sk#35] +Join type: LeftSemi +Join condition: None + +(310) Scan parquet +Output [4]: [i_item_sk#36, i_brand_id#37, i_class_id#38, i_category_id#39] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id)] +ReadSchema: struct + +(311) Filter +Input [4]: [i_item_sk#36, i_brand_id#37, i_class_id#38, i_category_id#39] +Condition : (((isnotnull(i_item_sk#36) AND isnotnull(i_brand_id#37)) AND isnotnull(i_class_id#38)) AND isnotnull(i_category_id#39)) + +(312) Exchange +Input [4]: [i_item_sk#36, i_brand_id#37, i_class_id#38, i_category_id#39] +Arguments: hashpartitioning(i_item_sk#36, 100), ENSURE_REQUIREMENTS, [plan_id=46] + +(313) Sort +Input [4]: [i_item_sk#36, i_brand_id#37, i_class_id#38, i_category_id#39] +Arguments: [i_item_sk#36 ASC NULLS FIRST], false, 0 + +(314) Scan parquet +Output [4]: [i_item_sk#5, i_brand_id#6, i_class_id#7, i_category_id#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id)] +ReadSchema: struct + +(315) Filter +Input [4]: [i_item_sk#5, i_brand_id#6, i_class_id#7, i_category_id#8] +Condition : ((isnotnull(i_brand_id#6) AND isnotnull(i_class_id#7)) AND isnotnull(i_category_id#8)) + +(316) Exchange +Input [4]: [i_item_sk#5, i_brand_id#6, i_class_id#7, i_category_id#8] +Arguments: hashpartitioning(i_brand_id#6, i_class_id#7, i_category_id#8, 100), ENSURE_REQUIREMENTS, [plan_id=47] + +(317) Sort +Input [4]: [i_item_sk#5, i_brand_id#6, i_class_id#7, i_category_id#8] +Arguments: [i_brand_id#6 ASC NULLS FIRST, i_class_id#7 ASC NULLS FIRST, i_category_id#8 ASC NULLS FIRST], false, 0 + +(318) Scan parquet +Output [2]: [ss_sold_date_sk#9, ss_item_sk#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(319) Filter +Input [2]: [ss_sold_date_sk#9, ss_item_sk#10] +Condition : (isnotnull(ss_item_sk#10) AND isnotnull(ss_sold_date_sk#9)) + +(320) Exchange +Input [2]: [ss_sold_date_sk#9, ss_item_sk#10] +Arguments: hashpartitioning(ss_item_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=48] + +(321) Sort +Input [2]: [ss_sold_date_sk#9, ss_item_sk#10] +Arguments: [ss_item_sk#10 ASC NULLS FIRST], false, 0 + +(322) Scan parquet +Output [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id)] +ReadSchema: struct + +(323) Filter +Input [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] +Condition : (((isnotnull(i_item_sk#11) AND isnotnull(i_brand_id#12)) AND isnotnull(i_class_id#13)) AND isnotnull(i_category_id#14)) + +(324) Exchange +Input [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: hashpartitioning(coalesce(i_brand_id#12, 0), isnull(i_brand_id#12), coalesce(i_class_id#13, 0), isnull(i_class_id#13), coalesce(i_category_id#14, 0), isnull(i_category_id#14), 100), ENSURE_REQUIREMENTS, [plan_id=49] + +(325) Sort +Input [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: [coalesce(i_brand_id#12, 0) ASC NULLS FIRST, isnull(i_brand_id#12) ASC NULLS FIRST, coalesce(i_class_id#13, 0) ASC NULLS FIRST, isnull(i_class_id#13) ASC NULLS FIRST, coalesce(i_category_id#14, 0) ASC NULLS FIRST, isnull(i_category_id#14) ASC NULLS FIRST], false, 0 + +(326) Scan parquet +Output [2]: [cs_sold_date_sk#15, cs_item_sk#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(327) Filter +Input [2]: [cs_sold_date_sk#15, cs_item_sk#16] +Condition : (isnotnull(cs_item_sk#16) AND isnotnull(cs_sold_date_sk#15)) + +(328) Exchange +Input [2]: [cs_sold_date_sk#15, cs_item_sk#16] +Arguments: hashpartitioning(cs_item_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=50] + +(329) Sort +Input [2]: [cs_sold_date_sk#15, cs_item_sk#16] +Arguments: [cs_item_sk#16 ASC NULLS FIRST], false, 0 + +(330) Scan parquet +Output [4]: [i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(331) Filter +Input [4]: [i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20] +Condition : isnotnull(i_item_sk#17) + +(332) Exchange +Input [4]: [i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: hashpartitioning(i_item_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=51] + +(333) Sort +Input [4]: [i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: [i_item_sk#17 ASC NULLS FIRST], false, 0 + +(334) SortMergeJoin +Left keys [1]: [cs_item_sk#16] +Right keys [1]: [i_item_sk#17] +Join type: Inner +Join condition: None + +(335) Project +Output [4]: [cs_sold_date_sk#15, i_brand_id#18, i_class_id#19, i_category_id#20] +Input [6]: [cs_sold_date_sk#15, cs_item_sk#16, i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20] + +(336) Exchange +Input [4]: [cs_sold_date_sk#15, i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: hashpartitioning(cs_sold_date_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=52] + +(337) Sort +Input [4]: [cs_sold_date_sk#15, i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: [cs_sold_date_sk#15 ASC NULLS FIRST], false, 0 + +(338) Scan parquet +Output [2]: [d_date_sk#21, d_year#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(339) Filter +Input [2]: [d_date_sk#21, d_year#22] +Condition : (((isnotnull(d_year#22) AND (d_year#22 >= 1999)) AND (d_year#22 <= 2001)) AND isnotnull(d_date_sk#21)) + +(340) Project +Output [1]: [d_date_sk#21] +Input [2]: [d_date_sk#21, d_year#22] + +(341) Exchange +Input [1]: [d_date_sk#21] +Arguments: hashpartitioning(d_date_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=53] + +(342) Sort +Input [1]: [d_date_sk#21] +Arguments: [d_date_sk#21 ASC NULLS FIRST], false, 0 + +(343) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#15] +Right keys [1]: [d_date_sk#21] +Join type: Inner +Join condition: None + +(344) Project +Output [3]: [i_brand_id#18, i_class_id#19, i_category_id#20] +Input [5]: [cs_sold_date_sk#15, i_brand_id#18, i_class_id#19, i_category_id#20, d_date_sk#21] + +(345) Exchange +Input [3]: [i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: hashpartitioning(coalesce(i_brand_id#18, 0), isnull(i_brand_id#18), coalesce(i_class_id#19, 0), isnull(i_class_id#19), coalesce(i_category_id#20, 0), isnull(i_category_id#20), 100), ENSURE_REQUIREMENTS, [plan_id=54] + +(346) Sort +Input [3]: [i_brand_id#18, i_class_id#19, i_category_id#20] +Arguments: [coalesce(i_brand_id#18, 0) ASC NULLS FIRST, isnull(i_brand_id#18) ASC NULLS FIRST, coalesce(i_class_id#19, 0) ASC NULLS FIRST, isnull(i_class_id#19) ASC NULLS FIRST, coalesce(i_category_id#20, 0) ASC NULLS FIRST, isnull(i_category_id#20) ASC NULLS FIRST], false, 0 + +(347) SortMergeJoin +Left keys [6]: [coalesce(i_brand_id#12, 0), isnull(i_brand_id#12), coalesce(i_class_id#13, 0), isnull(i_class_id#13), coalesce(i_category_id#14, 0), isnull(i_category_id#14)] +Right keys [6]: [coalesce(i_brand_id#18, 0), isnull(i_brand_id#18), coalesce(i_class_id#19, 0), isnull(i_class_id#19), coalesce(i_category_id#20, 0), isnull(i_category_id#20)] +Join type: LeftSemi +Join condition: None + +(348) Exchange +Input [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: hashpartitioning(i_item_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=55] + +(349) Sort +Input [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: [i_item_sk#11 ASC NULLS FIRST], false, 0 + +(350) SortMergeJoin +Left keys [1]: [ss_item_sk#10] +Right keys [1]: [i_item_sk#11] +Join type: Inner +Join condition: None + +(351) Project +Output [4]: [ss_sold_date_sk#9, i_brand_id#12, i_class_id#13, i_category_id#14] +Input [6]: [ss_sold_date_sk#9, ss_item_sk#10, i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14] + +(352) Exchange +Input [4]: [ss_sold_date_sk#9, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: hashpartitioning(ss_sold_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=56] + +(353) Sort +Input [4]: [ss_sold_date_sk#9, i_brand_id#12, i_class_id#13, i_category_id#14] +Arguments: [ss_sold_date_sk#9 ASC NULLS FIRST], false, 0 + +(354) Scan parquet +Output [2]: [d_date_sk#23, d_year#74] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(355) Filter +Input [2]: [d_date_sk#23, d_year#74] +Condition : (((isnotnull(d_year#74) AND (d_year#74 >= 1999)) AND (d_year#74 <= 2001)) AND isnotnull(d_date_sk#23)) + +(356) Project +Output [1]: [d_date_sk#23] +Input [2]: [d_date_sk#23, d_year#74] + +(357) Exchange +Input [1]: [d_date_sk#23] +Arguments: hashpartitioning(d_date_sk#23, 100), ENSURE_REQUIREMENTS, [plan_id=57] + +(358) Sort +Input [1]: [d_date_sk#23] +Arguments: [d_date_sk#23 ASC NULLS FIRST], false, 0 + +(359) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#9] +Right keys [1]: [d_date_sk#23] +Join type: Inner +Join condition: None + +(360) Project +Output [3]: [i_brand_id#12 AS brand_id#24, i_class_id#13 AS class_id#25, i_category_id#14 AS category_id#26] +Input [5]: [ss_sold_date_sk#9, i_brand_id#12, i_class_id#13, i_category_id#14, d_date_sk#23] + +(361) HashAggregate +Input [3]: [brand_id#24, class_id#25, category_id#26] +Keys [3]: [brand_id#24, class_id#25, category_id#26] +Functions: [] +Aggregate Attributes: [] +Results [3]: [brand_id#24, class_id#25, category_id#26] + +(362) Exchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(brand_id#24, class_id#25, category_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=58] + +(363) HashAggregate +Input [3]: [brand_id#24, class_id#25, category_id#26] +Keys [3]: [brand_id#24, class_id#25, category_id#26] +Functions: [] +Aggregate Attributes: [] +Results [3]: [brand_id#24, class_id#25, category_id#26] + +(364) Exchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(coalesce(brand_id#24, 0), isnull(brand_id#24), coalesce(class_id#25, 0), isnull(class_id#25), coalesce(category_id#26, 0), isnull(category_id#26), 100), ENSURE_REQUIREMENTS, [plan_id=59] + +(365) Sort +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: [coalesce(brand_id#24, 0) ASC NULLS FIRST, isnull(brand_id#24) ASC NULLS FIRST, coalesce(class_id#25, 0) ASC NULLS FIRST, isnull(class_id#25) ASC NULLS FIRST, coalesce(category_id#26, 0) ASC NULLS FIRST, isnull(category_id#26) ASC NULLS FIRST], false, 0 + +(366) Scan parquet +Output [2]: [ws_sold_date_sk#28, ws_item_sk#29] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(367) Filter +Input [2]: [ws_sold_date_sk#28, ws_item_sk#29] +Condition : (isnotnull(ws_item_sk#29) AND isnotnull(ws_sold_date_sk#28)) + +(368) Exchange +Input [2]: [ws_sold_date_sk#28, ws_item_sk#29] +Arguments: hashpartitioning(ws_item_sk#29, 100), ENSURE_REQUIREMENTS, [plan_id=60] + +(369) Sort +Input [2]: [ws_sold_date_sk#28, ws_item_sk#29] +Arguments: [ws_item_sk#29 ASC NULLS FIRST], false, 0 + +(370) Scan parquet +Output [4]: [i_item_sk#30, i_brand_id#31, i_class_id#32, i_category_id#33] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(371) Filter +Input [4]: [i_item_sk#30, i_brand_id#31, i_class_id#32, i_category_id#33] +Condition : isnotnull(i_item_sk#30) + +(372) Exchange +Input [4]: [i_item_sk#30, i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: hashpartitioning(i_item_sk#30, 100), ENSURE_REQUIREMENTS, [plan_id=61] + +(373) Sort +Input [4]: [i_item_sk#30, i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: [i_item_sk#30 ASC NULLS FIRST], false, 0 + +(374) SortMergeJoin +Left keys [1]: [ws_item_sk#29] +Right keys [1]: [i_item_sk#30] +Join type: Inner +Join condition: None + +(375) Project +Output [4]: [ws_sold_date_sk#28, i_brand_id#31, i_class_id#32, i_category_id#33] +Input [6]: [ws_sold_date_sk#28, ws_item_sk#29, i_item_sk#30, i_brand_id#31, i_class_id#32, i_category_id#33] + +(376) Exchange +Input [4]: [ws_sold_date_sk#28, i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: hashpartitioning(ws_sold_date_sk#28, 100), ENSURE_REQUIREMENTS, [plan_id=62] + +(377) Sort +Input [4]: [ws_sold_date_sk#28, i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: [ws_sold_date_sk#28 ASC NULLS FIRST], false, 0 + +(378) Scan parquet +Output [2]: [d_date_sk#34, d_year#75] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(379) Filter +Input [2]: [d_date_sk#34, d_year#75] +Condition : (((isnotnull(d_year#75) AND (d_year#75 >= 1999)) AND (d_year#75 <= 2001)) AND isnotnull(d_date_sk#34)) + +(380) Project +Output [1]: [d_date_sk#34] +Input [2]: [d_date_sk#34, d_year#75] + +(381) Exchange +Input [1]: [d_date_sk#34] +Arguments: hashpartitioning(d_date_sk#34, 100), ENSURE_REQUIREMENTS, [plan_id=63] + +(382) Sort +Input [1]: [d_date_sk#34] +Arguments: [d_date_sk#34 ASC NULLS FIRST], false, 0 + +(383) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#28] +Right keys [1]: [d_date_sk#34] +Join type: Inner +Join condition: None + +(384) Project +Output [3]: [i_brand_id#31, i_class_id#32, i_category_id#33] +Input [5]: [ws_sold_date_sk#28, i_brand_id#31, i_class_id#32, i_category_id#33, d_date_sk#34] + +(385) Exchange +Input [3]: [i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: hashpartitioning(coalesce(i_brand_id#31, 0), isnull(i_brand_id#31), coalesce(i_class_id#32, 0), isnull(i_class_id#32), coalesce(i_category_id#33, 0), isnull(i_category_id#33), 100), ENSURE_REQUIREMENTS, [plan_id=64] + +(386) Sort +Input [3]: [i_brand_id#31, i_class_id#32, i_category_id#33] +Arguments: [coalesce(i_brand_id#31, 0) ASC NULLS FIRST, isnull(i_brand_id#31) ASC NULLS FIRST, coalesce(i_class_id#32, 0) ASC NULLS FIRST, isnull(i_class_id#32) ASC NULLS FIRST, coalesce(i_category_id#33, 0) ASC NULLS FIRST, isnull(i_category_id#33) ASC NULLS FIRST], false, 0 + +(387) SortMergeJoin +Left keys [6]: [coalesce(brand_id#24, 0), isnull(brand_id#24), coalesce(class_id#25, 0), isnull(class_id#25), coalesce(category_id#26, 0), isnull(category_id#26)] +Right keys [6]: [coalesce(i_brand_id#31, 0), isnull(i_brand_id#31), coalesce(i_class_id#32, 0), isnull(i_class_id#32), coalesce(i_category_id#33, 0), isnull(i_category_id#33)] +Join type: LeftSemi +Join condition: None + +(388) Exchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(brand_id#24, class_id#25, category_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=65] + +(389) Sort +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: [brand_id#24 ASC NULLS FIRST, class_id#25 ASC NULLS FIRST, category_id#26 ASC NULLS FIRST], false, 0 + +(390) SortMergeJoin +Left keys [3]: [i_brand_id#6, i_class_id#7, i_category_id#8] +Right keys [3]: [brand_id#24, class_id#25, category_id#26] +Join type: Inner +Join condition: None + +(391) Project +Output [1]: [i_item_sk#5 AS ss_item_sk#35] +Input [7]: [i_item_sk#5, i_brand_id#6, i_class_id#7, i_category_id#8, brand_id#24, class_id#25, category_id#26] + +(392) Exchange +Input [1]: [ss_item_sk#35] +Arguments: hashpartitioning(ss_item_sk#35, 100), ENSURE_REQUIREMENTS, [plan_id=66] + +(393) Sort +Input [1]: [ss_item_sk#35] +Arguments: [ss_item_sk#35 ASC NULLS FIRST], false, 0 + +(394) SortMergeJoin +Left keys [1]: [i_item_sk#36] +Right keys [1]: [ss_item_sk#35] +Join type: LeftSemi +Join condition: None + +(395) SortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#36] +Join type: Inner +Join condition: None + +(396) Project +Output [6]: [ss_sold_date_sk#1, ss_quantity#3, ss_list_price#4, i_brand_id#37, i_class_id#38, i_category_id#39] +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_quantity#3, ss_list_price#4, i_item_sk#36, i_brand_id#37, i_class_id#38, i_category_id#39] + +(397) Exchange +Input [6]: [ss_sold_date_sk#1, ss_quantity#3, ss_list_price#4, i_brand_id#37, i_class_id#38, i_category_id#39] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=67] + +(398) Sort +Input [6]: [ss_sold_date_sk#1, ss_quantity#3, ss_list_price#4, i_brand_id#37, i_class_id#38, i_category_id#39] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(399) Scan parquet +Output [2]: [d_date_sk#40, d_week_seq#41] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_week_seq), IsNotNull(d_date_sk)] +ReadSchema: struct + +(400) Filter +Input [2]: [d_date_sk#40, d_week_seq#41] +Condition : ((isnotnull(d_week_seq#41) AND (d_week_seq#41 = Subquery subquery#42, [id=#43])) AND isnotnull(d_date_sk#40)) + +(401) Project +Output [1]: [d_date_sk#40] +Input [2]: [d_date_sk#40, d_week_seq#41] + +(402) Exchange +Input [1]: [d_date_sk#40] +Arguments: hashpartitioning(d_date_sk#40, 100), ENSURE_REQUIREMENTS, [plan_id=68] + +(403) Sort +Input [1]: [d_date_sk#40] +Arguments: [d_date_sk#40 ASC NULLS FIRST], false, 0 + +(404) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#40] +Join type: Inner +Join condition: None + +(405) Project +Output [5]: [ss_quantity#3, ss_list_price#4, i_brand_id#37, i_class_id#38, i_category_id#39] +Input [7]: [ss_sold_date_sk#1, ss_quantity#3, ss_list_price#4, i_brand_id#37, i_class_id#38, i_category_id#39, d_date_sk#40] + +(406) HashAggregate +Input [5]: [ss_quantity#3, ss_list_price#4, i_brand_id#37, i_class_id#38, i_category_id#39] +Keys [3]: [i_brand_id#37, i_class_id#38, i_category_id#39] +Functions [2]: [partial_sum((cast(ss_quantity#3 as decimal(10,0)) * ss_list_price#4)), partial_count(1)] +Aggregate Attributes [3]: [sum#45, isEmpty#46, count#47] +Results [6]: [i_brand_id#37, i_class_id#38, i_category_id#39, sum#76, isEmpty#77, count#78] + +(407) Exchange +Input [6]: [i_brand_id#37, i_class_id#38, i_category_id#39, sum#76, isEmpty#77, count#78] +Arguments: hashpartitioning(i_brand_id#37, i_class_id#38, i_category_id#39, 100), ENSURE_REQUIREMENTS, [plan_id=69] + +(408) HashAggregate +Input [6]: [i_brand_id#37, i_class_id#38, i_category_id#39, sum#76, isEmpty#77, count#78] +Keys [3]: [i_brand_id#37, i_class_id#38, i_category_id#39] +Functions [2]: [sum((cast(ss_quantity#3 as decimal(10,0)) * ss_list_price#4)), count(1)] +Aggregate Attributes [2]: [sum((cast(ss_quantity#3 as decimal(10,0)) * ss_list_price#4))#48, count(1)#49] +Results [6]: [store AS channel#50, i_brand_id#37, i_class_id#38, i_category_id#39, sum((cast(ss_quantity#3 as decimal(10,0)) * ss_list_price#4))#48 AS sales#51, count(1)#49 AS number_sales#52] + +(409) Filter +Input [6]: [channel#50, i_brand_id#37, i_class_id#38, i_category_id#39, sales#51, number_sales#52] +Condition : (isnotnull(sales#51) AND (cast(sales#51 as decimal(32,6)) > cast(Subquery subquery#53, [id=#54] as decimal(32,6)))) + +(410) Sort +Input [6]: [channel#50, i_brand_id#37, i_class_id#38, i_category_id#39, sales#51, number_sales#52] +Arguments: [i_brand_id#37 ASC NULLS FIRST, i_class_id#38 ASC NULLS FIRST, i_category_id#39 ASC NULLS FIRST], false, 0 + +(411) Scan parquet +Output [4]: [ss_sold_date_sk#55, ss_item_sk#79, ss_quantity#56, ss_list_price#57] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(412) Filter +Input [4]: [ss_sold_date_sk#55, ss_item_sk#79, ss_quantity#56, ss_list_price#57] +Condition : (isnotnull(ss_item_sk#79) AND isnotnull(ss_sold_date_sk#55)) + +(413) Exchange +Input [4]: [ss_sold_date_sk#55, ss_item_sk#79, ss_quantity#56, ss_list_price#57] +Arguments: hashpartitioning(ss_item_sk#79, 100), ENSURE_REQUIREMENTS, [plan_id=70] + +(414) Sort +Input [4]: [ss_sold_date_sk#55, ss_item_sk#79, ss_quantity#56, ss_list_price#57] +Arguments: [ss_item_sk#79 ASC NULLS FIRST], false, 0 + +(415) Scan parquet +Output [4]: [i_item_sk#80, i_brand_id#81, i_class_id#82, i_category_id#83] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id)] +ReadSchema: struct + +(416) Filter +Input [4]: [i_item_sk#80, i_brand_id#81, i_class_id#82, i_category_id#83] +Condition : ((isnotnull(i_brand_id#81) AND isnotnull(i_class_id#82)) AND isnotnull(i_category_id#83)) + +(417) Exchange +Input [4]: [i_item_sk#80, i_brand_id#81, i_class_id#82, i_category_id#83] +Arguments: hashpartitioning(i_brand_id#81, i_class_id#82, i_category_id#83, 100), ENSURE_REQUIREMENTS, [plan_id=71] + +(418) Sort +Input [4]: [i_item_sk#80, i_brand_id#81, i_class_id#82, i_category_id#83] +Arguments: [i_brand_id#81 ASC NULLS FIRST, i_class_id#82 ASC NULLS FIRST, i_category_id#83 ASC NULLS FIRST], false, 0 + +(419) Scan parquet +Output [2]: [ss_sold_date_sk#84, ss_item_sk#85] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(420) Filter +Input [2]: [ss_sold_date_sk#84, ss_item_sk#85] +Condition : (isnotnull(ss_item_sk#85) AND isnotnull(ss_sold_date_sk#84)) + +(421) Exchange +Input [2]: [ss_sold_date_sk#84, ss_item_sk#85] +Arguments: hashpartitioning(ss_item_sk#85, 100), ENSURE_REQUIREMENTS, [plan_id=72] + +(422) Sort +Input [2]: [ss_sold_date_sk#84, ss_item_sk#85] +Arguments: [ss_item_sk#85 ASC NULLS FIRST], false, 0 + +(423) Scan parquet +Output [4]: [i_item_sk#86, i_brand_id#87, i_class_id#88, i_category_id#89] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id)] +ReadSchema: struct + +(424) Filter +Input [4]: [i_item_sk#86, i_brand_id#87, i_class_id#88, i_category_id#89] +Condition : (((isnotnull(i_item_sk#86) AND isnotnull(i_brand_id#87)) AND isnotnull(i_class_id#88)) AND isnotnull(i_category_id#89)) + +(425) Exchange +Input [4]: [i_item_sk#86, i_brand_id#87, i_class_id#88, i_category_id#89] +Arguments: hashpartitioning(coalesce(i_brand_id#87, 0), isnull(i_brand_id#87), coalesce(i_class_id#88, 0), isnull(i_class_id#88), coalesce(i_category_id#89, 0), isnull(i_category_id#89), 100), ENSURE_REQUIREMENTS, [plan_id=73] + +(426) Sort +Input [4]: [i_item_sk#86, i_brand_id#87, i_class_id#88, i_category_id#89] +Arguments: [coalesce(i_brand_id#87, 0) ASC NULLS FIRST, isnull(i_brand_id#87) ASC NULLS FIRST, coalesce(i_class_id#88, 0) ASC NULLS FIRST, isnull(i_class_id#88) ASC NULLS FIRST, coalesce(i_category_id#89, 0) ASC NULLS FIRST, isnull(i_category_id#89) ASC NULLS FIRST], false, 0 + +(427) Scan parquet +Output [2]: [cs_sold_date_sk#90, cs_item_sk#91] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(428) Filter +Input [2]: [cs_sold_date_sk#90, cs_item_sk#91] +Condition : (isnotnull(cs_item_sk#91) AND isnotnull(cs_sold_date_sk#90)) + +(429) Exchange +Input [2]: [cs_sold_date_sk#90, cs_item_sk#91] +Arguments: hashpartitioning(cs_item_sk#91, 100), ENSURE_REQUIREMENTS, [plan_id=74] + +(430) Sort +Input [2]: [cs_sold_date_sk#90, cs_item_sk#91] +Arguments: [cs_item_sk#91 ASC NULLS FIRST], false, 0 + +(431) Scan parquet +Output [4]: [i_item_sk#92, i_brand_id#93, i_class_id#94, i_category_id#95] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(432) Filter +Input [4]: [i_item_sk#92, i_brand_id#93, i_class_id#94, i_category_id#95] +Condition : isnotnull(i_item_sk#92) + +(433) Exchange +Input [4]: [i_item_sk#92, i_brand_id#93, i_class_id#94, i_category_id#95] +Arguments: hashpartitioning(i_item_sk#92, 100), ENSURE_REQUIREMENTS, [plan_id=75] + +(434) Sort +Input [4]: [i_item_sk#92, i_brand_id#93, i_class_id#94, i_category_id#95] +Arguments: [i_item_sk#92 ASC NULLS FIRST], false, 0 + +(435) SortMergeJoin +Left keys [1]: [cs_item_sk#91] +Right keys [1]: [i_item_sk#92] +Join type: Inner +Join condition: None + +(436) Project +Output [4]: [cs_sold_date_sk#90, i_brand_id#93, i_class_id#94, i_category_id#95] +Input [6]: [cs_sold_date_sk#90, cs_item_sk#91, i_item_sk#92, i_brand_id#93, i_class_id#94, i_category_id#95] + +(437) Exchange +Input [4]: [cs_sold_date_sk#90, i_brand_id#93, i_class_id#94, i_category_id#95] +Arguments: hashpartitioning(cs_sold_date_sk#90, 100), ENSURE_REQUIREMENTS, [plan_id=76] + +(438) Sort +Input [4]: [cs_sold_date_sk#90, i_brand_id#93, i_class_id#94, i_category_id#95] +Arguments: [cs_sold_date_sk#90 ASC NULLS FIRST], false, 0 + +(439) Scan parquet +Output [2]: [d_date_sk#96, d_year#97] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(440) Filter +Input [2]: [d_date_sk#96, d_year#97] +Condition : (((isnotnull(d_year#97) AND (d_year#97 >= 1999)) AND (d_year#97 <= 2001)) AND isnotnull(d_date_sk#96)) + +(441) Project +Output [1]: [d_date_sk#96] +Input [2]: [d_date_sk#96, d_year#97] + +(442) Exchange +Input [1]: [d_date_sk#96] +Arguments: hashpartitioning(d_date_sk#96, 100), ENSURE_REQUIREMENTS, [plan_id=77] + +(443) Sort +Input [1]: [d_date_sk#96] +Arguments: [d_date_sk#96 ASC NULLS FIRST], false, 0 + +(444) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#90] +Right keys [1]: [d_date_sk#96] +Join type: Inner +Join condition: None + +(445) Project +Output [3]: [i_brand_id#93, i_class_id#94, i_category_id#95] +Input [5]: [cs_sold_date_sk#90, i_brand_id#93, i_class_id#94, i_category_id#95, d_date_sk#96] + +(446) Exchange +Input [3]: [i_brand_id#93, i_class_id#94, i_category_id#95] +Arguments: hashpartitioning(coalesce(i_brand_id#93, 0), isnull(i_brand_id#93), coalesce(i_class_id#94, 0), isnull(i_class_id#94), coalesce(i_category_id#95, 0), isnull(i_category_id#95), 100), ENSURE_REQUIREMENTS, [plan_id=78] + +(447) Sort +Input [3]: [i_brand_id#93, i_class_id#94, i_category_id#95] +Arguments: [coalesce(i_brand_id#93, 0) ASC NULLS FIRST, isnull(i_brand_id#93) ASC NULLS FIRST, coalesce(i_class_id#94, 0) ASC NULLS FIRST, isnull(i_class_id#94) ASC NULLS FIRST, coalesce(i_category_id#95, 0) ASC NULLS FIRST, isnull(i_category_id#95) ASC NULLS FIRST], false, 0 + +(448) SortMergeJoin +Left keys [6]: [coalesce(i_brand_id#87, 0), isnull(i_brand_id#87), coalesce(i_class_id#88, 0), isnull(i_class_id#88), coalesce(i_category_id#89, 0), isnull(i_category_id#89)] +Right keys [6]: [coalesce(i_brand_id#93, 0), isnull(i_brand_id#93), coalesce(i_class_id#94, 0), isnull(i_class_id#94), coalesce(i_category_id#95, 0), isnull(i_category_id#95)] +Join type: LeftSemi +Join condition: None + +(449) Exchange +Input [4]: [i_item_sk#86, i_brand_id#87, i_class_id#88, i_category_id#89] +Arguments: hashpartitioning(i_item_sk#86, 100), ENSURE_REQUIREMENTS, [plan_id=79] + +(450) Sort +Input [4]: [i_item_sk#86, i_brand_id#87, i_class_id#88, i_category_id#89] +Arguments: [i_item_sk#86 ASC NULLS FIRST], false, 0 + +(451) SortMergeJoin +Left keys [1]: [ss_item_sk#85] +Right keys [1]: [i_item_sk#86] +Join type: Inner +Join condition: None + +(452) Project +Output [4]: [ss_sold_date_sk#84, i_brand_id#87, i_class_id#88, i_category_id#89] +Input [6]: [ss_sold_date_sk#84, ss_item_sk#85, i_item_sk#86, i_brand_id#87, i_class_id#88, i_category_id#89] + +(453) Exchange +Input [4]: [ss_sold_date_sk#84, i_brand_id#87, i_class_id#88, i_category_id#89] +Arguments: hashpartitioning(ss_sold_date_sk#84, 100), ENSURE_REQUIREMENTS, [plan_id=80] + +(454) Sort +Input [4]: [ss_sold_date_sk#84, i_brand_id#87, i_class_id#88, i_category_id#89] +Arguments: [ss_sold_date_sk#84 ASC NULLS FIRST], false, 0 + +(455) Scan parquet +Output [2]: [d_date_sk#98, d_year#99] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(456) Filter +Input [2]: [d_date_sk#98, d_year#99] +Condition : (((isnotnull(d_year#99) AND (d_year#99 >= 1999)) AND (d_year#99 <= 2001)) AND isnotnull(d_date_sk#98)) + +(457) Project +Output [1]: [d_date_sk#98] +Input [2]: [d_date_sk#98, d_year#99] + +(458) Exchange +Input [1]: [d_date_sk#98] +Arguments: hashpartitioning(d_date_sk#98, 100), ENSURE_REQUIREMENTS, [plan_id=81] + +(459) Sort +Input [1]: [d_date_sk#98] +Arguments: [d_date_sk#98 ASC NULLS FIRST], false, 0 + +(460) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#84] +Right keys [1]: [d_date_sk#98] +Join type: Inner +Join condition: None + +(461) Project +Output [3]: [i_brand_id#87 AS brand_id#24, i_class_id#88 AS class_id#25, i_category_id#89 AS category_id#26] +Input [5]: [ss_sold_date_sk#84, i_brand_id#87, i_class_id#88, i_category_id#89, d_date_sk#98] + +(462) HashAggregate +Input [3]: [brand_id#24, class_id#25, category_id#26] +Keys [3]: [brand_id#24, class_id#25, category_id#26] +Functions: [] +Aggregate Attributes: [] +Results [3]: [brand_id#24, class_id#25, category_id#26] + +(463) Exchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(brand_id#24, class_id#25, category_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=82] + +(464) HashAggregate +Input [3]: [brand_id#24, class_id#25, category_id#26] +Keys [3]: [brand_id#24, class_id#25, category_id#26] +Functions: [] +Aggregate Attributes: [] +Results [3]: [brand_id#24, class_id#25, category_id#26] + +(465) Exchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(coalesce(brand_id#24, 0), isnull(brand_id#24), coalesce(class_id#25, 0), isnull(class_id#25), coalesce(category_id#26, 0), isnull(category_id#26), 100), ENSURE_REQUIREMENTS, [plan_id=83] + +(466) Sort +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: [coalesce(brand_id#24, 0) ASC NULLS FIRST, isnull(brand_id#24) ASC NULLS FIRST, coalesce(class_id#25, 0) ASC NULLS FIRST, isnull(class_id#25) ASC NULLS FIRST, coalesce(category_id#26, 0) ASC NULLS FIRST, isnull(category_id#26) ASC NULLS FIRST], false, 0 + +(467) Scan parquet +Output [2]: [ws_sold_date_sk#100, ws_item_sk#101] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(468) Filter +Input [2]: [ws_sold_date_sk#100, ws_item_sk#101] +Condition : (isnotnull(ws_item_sk#101) AND isnotnull(ws_sold_date_sk#100)) + +(469) Exchange +Input [2]: [ws_sold_date_sk#100, ws_item_sk#101] +Arguments: hashpartitioning(ws_item_sk#101, 100), ENSURE_REQUIREMENTS, [plan_id=84] + +(470) Sort +Input [2]: [ws_sold_date_sk#100, ws_item_sk#101] +Arguments: [ws_item_sk#101 ASC NULLS FIRST], false, 0 + +(471) Scan parquet +Output [4]: [i_item_sk#102, i_brand_id#103, i_class_id#104, i_category_id#105] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(472) Filter +Input [4]: [i_item_sk#102, i_brand_id#103, i_class_id#104, i_category_id#105] +Condition : isnotnull(i_item_sk#102) + +(473) Exchange +Input [4]: [i_item_sk#102, i_brand_id#103, i_class_id#104, i_category_id#105] +Arguments: hashpartitioning(i_item_sk#102, 100), ENSURE_REQUIREMENTS, [plan_id=85] + +(474) Sort +Input [4]: [i_item_sk#102, i_brand_id#103, i_class_id#104, i_category_id#105] +Arguments: [i_item_sk#102 ASC NULLS FIRST], false, 0 + +(475) SortMergeJoin +Left keys [1]: [ws_item_sk#101] +Right keys [1]: [i_item_sk#102] +Join type: Inner +Join condition: None + +(476) Project +Output [4]: [ws_sold_date_sk#100, i_brand_id#103, i_class_id#104, i_category_id#105] +Input [6]: [ws_sold_date_sk#100, ws_item_sk#101, i_item_sk#102, i_brand_id#103, i_class_id#104, i_category_id#105] + +(477) Exchange +Input [4]: [ws_sold_date_sk#100, i_brand_id#103, i_class_id#104, i_category_id#105] +Arguments: hashpartitioning(ws_sold_date_sk#100, 100), ENSURE_REQUIREMENTS, [plan_id=86] + +(478) Sort +Input [4]: [ws_sold_date_sk#100, i_brand_id#103, i_class_id#104, i_category_id#105] +Arguments: [ws_sold_date_sk#100 ASC NULLS FIRST], false, 0 + +(479) Scan parquet +Output [2]: [d_date_sk#106, d_year#107] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(480) Filter +Input [2]: [d_date_sk#106, d_year#107] +Condition : (((isnotnull(d_year#107) AND (d_year#107 >= 1999)) AND (d_year#107 <= 2001)) AND isnotnull(d_date_sk#106)) + +(481) Project +Output [1]: [d_date_sk#106] +Input [2]: [d_date_sk#106, d_year#107] + +(482) Exchange +Input [1]: [d_date_sk#106] +Arguments: hashpartitioning(d_date_sk#106, 100), ENSURE_REQUIREMENTS, [plan_id=87] + +(483) Sort +Input [1]: [d_date_sk#106] +Arguments: [d_date_sk#106 ASC NULLS FIRST], false, 0 + +(484) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#100] +Right keys [1]: [d_date_sk#106] +Join type: Inner +Join condition: None + +(485) Project +Output [3]: [i_brand_id#103, i_class_id#104, i_category_id#105] +Input [5]: [ws_sold_date_sk#100, i_brand_id#103, i_class_id#104, i_category_id#105, d_date_sk#106] + +(486) Exchange +Input [3]: [i_brand_id#103, i_class_id#104, i_category_id#105] +Arguments: hashpartitioning(coalesce(i_brand_id#103, 0), isnull(i_brand_id#103), coalesce(i_class_id#104, 0), isnull(i_class_id#104), coalesce(i_category_id#105, 0), isnull(i_category_id#105), 100), ENSURE_REQUIREMENTS, [plan_id=88] + +(487) Sort +Input [3]: [i_brand_id#103, i_class_id#104, i_category_id#105] +Arguments: [coalesce(i_brand_id#103, 0) ASC NULLS FIRST, isnull(i_brand_id#103) ASC NULLS FIRST, coalesce(i_class_id#104, 0) ASC NULLS FIRST, isnull(i_class_id#104) ASC NULLS FIRST, coalesce(i_category_id#105, 0) ASC NULLS FIRST, isnull(i_category_id#105) ASC NULLS FIRST], false, 0 + +(488) SortMergeJoin +Left keys [6]: [coalesce(brand_id#24, 0), isnull(brand_id#24), coalesce(class_id#25, 0), isnull(class_id#25), coalesce(category_id#26, 0), isnull(category_id#26)] +Right keys [6]: [coalesce(i_brand_id#103, 0), isnull(i_brand_id#103), coalesce(i_class_id#104, 0), isnull(i_class_id#104), coalesce(i_category_id#105, 0), isnull(i_category_id#105)] +Join type: LeftSemi +Join condition: None + +(489) Exchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(brand_id#24, class_id#25, category_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=89] + +(490) Sort +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: [brand_id#24 ASC NULLS FIRST, class_id#25 ASC NULLS FIRST, category_id#26 ASC NULLS FIRST], false, 0 + +(491) SortMergeJoin +Left keys [3]: [i_brand_id#81, i_class_id#82, i_category_id#83] +Right keys [3]: [brand_id#24, class_id#25, category_id#26] +Join type: Inner +Join condition: None + +(492) Project +Output [1]: [i_item_sk#80 AS ss_item_sk#108] +Input [7]: [i_item_sk#80, i_brand_id#81, i_class_id#82, i_category_id#83, brand_id#24, class_id#25, category_id#26] + +(493) Exchange +Input [1]: [ss_item_sk#108] +Arguments: hashpartitioning(ss_item_sk#108, 100), ENSURE_REQUIREMENTS, [plan_id=90] + +(494) Sort +Input [1]: [ss_item_sk#108] +Arguments: [ss_item_sk#108 ASC NULLS FIRST], false, 0 + +(495) SortMergeJoin +Left keys [1]: [ss_item_sk#79] +Right keys [1]: [ss_item_sk#108] +Join type: LeftSemi +Join condition: None + +(496) Scan parquet +Output [4]: [i_item_sk#109, i_brand_id#58, i_class_id#59, i_category_id#60] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id)] +ReadSchema: struct + +(497) Filter +Input [4]: [i_item_sk#109, i_brand_id#58, i_class_id#59, i_category_id#60] +Condition : (((isnotnull(i_item_sk#109) AND isnotnull(i_brand_id#58)) AND isnotnull(i_class_id#59)) AND isnotnull(i_category_id#60)) + +(498) Exchange +Input [4]: [i_item_sk#109, i_brand_id#58, i_class_id#59, i_category_id#60] +Arguments: hashpartitioning(i_item_sk#109, 100), ENSURE_REQUIREMENTS, [plan_id=91] + +(499) Sort +Input [4]: [i_item_sk#109, i_brand_id#58, i_class_id#59, i_category_id#60] +Arguments: [i_item_sk#109 ASC NULLS FIRST], false, 0 + +(500) Scan parquet +Output [4]: [i_item_sk#80, i_brand_id#81, i_class_id#82, i_category_id#83] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id)] +ReadSchema: struct + +(501) Filter +Input [4]: [i_item_sk#80, i_brand_id#81, i_class_id#82, i_category_id#83] +Condition : ((isnotnull(i_brand_id#81) AND isnotnull(i_class_id#82)) AND isnotnull(i_category_id#83)) + +(502) Exchange +Input [4]: [i_item_sk#80, i_brand_id#81, i_class_id#82, i_category_id#83] +Arguments: hashpartitioning(i_brand_id#81, i_class_id#82, i_category_id#83, 100), ENSURE_REQUIREMENTS, [plan_id=92] + +(503) Sort +Input [4]: [i_item_sk#80, i_brand_id#81, i_class_id#82, i_category_id#83] +Arguments: [i_brand_id#81 ASC NULLS FIRST, i_class_id#82 ASC NULLS FIRST, i_category_id#83 ASC NULLS FIRST], false, 0 + +(504) Scan parquet +Output [2]: [ss_sold_date_sk#84, ss_item_sk#85] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(505) Filter +Input [2]: [ss_sold_date_sk#84, ss_item_sk#85] +Condition : (isnotnull(ss_item_sk#85) AND isnotnull(ss_sold_date_sk#84)) + +(506) Exchange +Input [2]: [ss_sold_date_sk#84, ss_item_sk#85] +Arguments: hashpartitioning(ss_item_sk#85, 100), ENSURE_REQUIREMENTS, [plan_id=93] + +(507) Sort +Input [2]: [ss_sold_date_sk#84, ss_item_sk#85] +Arguments: [ss_item_sk#85 ASC NULLS FIRST], false, 0 + +(508) Scan parquet +Output [4]: [i_item_sk#86, i_brand_id#87, i_class_id#88, i_category_id#89] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id)] +ReadSchema: struct + +(509) Filter +Input [4]: [i_item_sk#86, i_brand_id#87, i_class_id#88, i_category_id#89] +Condition : (((isnotnull(i_item_sk#86) AND isnotnull(i_brand_id#87)) AND isnotnull(i_class_id#88)) AND isnotnull(i_category_id#89)) + +(510) Exchange +Input [4]: [i_item_sk#86, i_brand_id#87, i_class_id#88, i_category_id#89] +Arguments: hashpartitioning(coalesce(i_brand_id#87, 0), isnull(i_brand_id#87), coalesce(i_class_id#88, 0), isnull(i_class_id#88), coalesce(i_category_id#89, 0), isnull(i_category_id#89), 100), ENSURE_REQUIREMENTS, [plan_id=94] + +(511) Sort +Input [4]: [i_item_sk#86, i_brand_id#87, i_class_id#88, i_category_id#89] +Arguments: [coalesce(i_brand_id#87, 0) ASC NULLS FIRST, isnull(i_brand_id#87) ASC NULLS FIRST, coalesce(i_class_id#88, 0) ASC NULLS FIRST, isnull(i_class_id#88) ASC NULLS FIRST, coalesce(i_category_id#89, 0) ASC NULLS FIRST, isnull(i_category_id#89) ASC NULLS FIRST], false, 0 + +(512) Scan parquet +Output [2]: [cs_sold_date_sk#90, cs_item_sk#91] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(513) Filter +Input [2]: [cs_sold_date_sk#90, cs_item_sk#91] +Condition : (isnotnull(cs_item_sk#91) AND isnotnull(cs_sold_date_sk#90)) + +(514) Exchange +Input [2]: [cs_sold_date_sk#90, cs_item_sk#91] +Arguments: hashpartitioning(cs_item_sk#91, 100), ENSURE_REQUIREMENTS, [plan_id=95] + +(515) Sort +Input [2]: [cs_sold_date_sk#90, cs_item_sk#91] +Arguments: [cs_item_sk#91 ASC NULLS FIRST], false, 0 + +(516) Scan parquet +Output [4]: [i_item_sk#92, i_brand_id#93, i_class_id#94, i_category_id#95] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(517) Filter +Input [4]: [i_item_sk#92, i_brand_id#93, i_class_id#94, i_category_id#95] +Condition : isnotnull(i_item_sk#92) + +(518) Exchange +Input [4]: [i_item_sk#92, i_brand_id#93, i_class_id#94, i_category_id#95] +Arguments: hashpartitioning(i_item_sk#92, 100), ENSURE_REQUIREMENTS, [plan_id=96] + +(519) Sort +Input [4]: [i_item_sk#92, i_brand_id#93, i_class_id#94, i_category_id#95] +Arguments: [i_item_sk#92 ASC NULLS FIRST], false, 0 + +(520) SortMergeJoin +Left keys [1]: [cs_item_sk#91] +Right keys [1]: [i_item_sk#92] +Join type: Inner +Join condition: None + +(521) Project +Output [4]: [cs_sold_date_sk#90, i_brand_id#93, i_class_id#94, i_category_id#95] +Input [6]: [cs_sold_date_sk#90, cs_item_sk#91, i_item_sk#92, i_brand_id#93, i_class_id#94, i_category_id#95] + +(522) Exchange +Input [4]: [cs_sold_date_sk#90, i_brand_id#93, i_class_id#94, i_category_id#95] +Arguments: hashpartitioning(cs_sold_date_sk#90, 100), ENSURE_REQUIREMENTS, [plan_id=97] + +(523) Sort +Input [4]: [cs_sold_date_sk#90, i_brand_id#93, i_class_id#94, i_category_id#95] +Arguments: [cs_sold_date_sk#90 ASC NULLS FIRST], false, 0 + +(524) Scan parquet +Output [2]: [d_date_sk#96, d_year#97] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(525) Filter +Input [2]: [d_date_sk#96, d_year#97] +Condition : (((isnotnull(d_year#97) AND (d_year#97 >= 1999)) AND (d_year#97 <= 2001)) AND isnotnull(d_date_sk#96)) + +(526) Project +Output [1]: [d_date_sk#96] +Input [2]: [d_date_sk#96, d_year#97] + +(527) Exchange +Input [1]: [d_date_sk#96] +Arguments: hashpartitioning(d_date_sk#96, 100), ENSURE_REQUIREMENTS, [plan_id=98] + +(528) Sort +Input [1]: [d_date_sk#96] +Arguments: [d_date_sk#96 ASC NULLS FIRST], false, 0 + +(529) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#90] +Right keys [1]: [d_date_sk#96] +Join type: Inner +Join condition: None + +(530) Project +Output [3]: [i_brand_id#93, i_class_id#94, i_category_id#95] +Input [5]: [cs_sold_date_sk#90, i_brand_id#93, i_class_id#94, i_category_id#95, d_date_sk#96] + +(531) Exchange +Input [3]: [i_brand_id#93, i_class_id#94, i_category_id#95] +Arguments: hashpartitioning(coalesce(i_brand_id#93, 0), isnull(i_brand_id#93), coalesce(i_class_id#94, 0), isnull(i_class_id#94), coalesce(i_category_id#95, 0), isnull(i_category_id#95), 100), ENSURE_REQUIREMENTS, [plan_id=99] + +(532) Sort +Input [3]: [i_brand_id#93, i_class_id#94, i_category_id#95] +Arguments: [coalesce(i_brand_id#93, 0) ASC NULLS FIRST, isnull(i_brand_id#93) ASC NULLS FIRST, coalesce(i_class_id#94, 0) ASC NULLS FIRST, isnull(i_class_id#94) ASC NULLS FIRST, coalesce(i_category_id#95, 0) ASC NULLS FIRST, isnull(i_category_id#95) ASC NULLS FIRST], false, 0 + +(533) SortMergeJoin +Left keys [6]: [coalesce(i_brand_id#87, 0), isnull(i_brand_id#87), coalesce(i_class_id#88, 0), isnull(i_class_id#88), coalesce(i_category_id#89, 0), isnull(i_category_id#89)] +Right keys [6]: [coalesce(i_brand_id#93, 0), isnull(i_brand_id#93), coalesce(i_class_id#94, 0), isnull(i_class_id#94), coalesce(i_category_id#95, 0), isnull(i_category_id#95)] +Join type: LeftSemi +Join condition: None + +(534) Exchange +Input [4]: [i_item_sk#86, i_brand_id#87, i_class_id#88, i_category_id#89] +Arguments: hashpartitioning(i_item_sk#86, 100), ENSURE_REQUIREMENTS, [plan_id=100] + +(535) Sort +Input [4]: [i_item_sk#86, i_brand_id#87, i_class_id#88, i_category_id#89] +Arguments: [i_item_sk#86 ASC NULLS FIRST], false, 0 + +(536) SortMergeJoin +Left keys [1]: [ss_item_sk#85] +Right keys [1]: [i_item_sk#86] +Join type: Inner +Join condition: None + +(537) Project +Output [4]: [ss_sold_date_sk#84, i_brand_id#87, i_class_id#88, i_category_id#89] +Input [6]: [ss_sold_date_sk#84, ss_item_sk#85, i_item_sk#86, i_brand_id#87, i_class_id#88, i_category_id#89] + +(538) Exchange +Input [4]: [ss_sold_date_sk#84, i_brand_id#87, i_class_id#88, i_category_id#89] +Arguments: hashpartitioning(ss_sold_date_sk#84, 100), ENSURE_REQUIREMENTS, [plan_id=101] + +(539) Sort +Input [4]: [ss_sold_date_sk#84, i_brand_id#87, i_class_id#88, i_category_id#89] +Arguments: [ss_sold_date_sk#84 ASC NULLS FIRST], false, 0 + +(540) Scan parquet +Output [2]: [d_date_sk#98, d_year#99] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(541) Filter +Input [2]: [d_date_sk#98, d_year#99] +Condition : (((isnotnull(d_year#99) AND (d_year#99 >= 1999)) AND (d_year#99 <= 2001)) AND isnotnull(d_date_sk#98)) + +(542) Project +Output [1]: [d_date_sk#98] +Input [2]: [d_date_sk#98, d_year#99] + +(543) Exchange +Input [1]: [d_date_sk#98] +Arguments: hashpartitioning(d_date_sk#98, 100), ENSURE_REQUIREMENTS, [plan_id=102] + +(544) Sort +Input [1]: [d_date_sk#98] +Arguments: [d_date_sk#98 ASC NULLS FIRST], false, 0 + +(545) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#84] +Right keys [1]: [d_date_sk#98] +Join type: Inner +Join condition: None + +(546) Project +Output [3]: [i_brand_id#87 AS brand_id#24, i_class_id#88 AS class_id#25, i_category_id#89 AS category_id#26] +Input [5]: [ss_sold_date_sk#84, i_brand_id#87, i_class_id#88, i_category_id#89, d_date_sk#98] + +(547) HashAggregate +Input [3]: [brand_id#24, class_id#25, category_id#26] +Keys [3]: [brand_id#24, class_id#25, category_id#26] +Functions: [] +Aggregate Attributes: [] +Results [3]: [brand_id#24, class_id#25, category_id#26] + +(548) Exchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(brand_id#24, class_id#25, category_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=103] + +(549) HashAggregate +Input [3]: [brand_id#24, class_id#25, category_id#26] +Keys [3]: [brand_id#24, class_id#25, category_id#26] +Functions: [] +Aggregate Attributes: [] +Results [3]: [brand_id#24, class_id#25, category_id#26] + +(550) Exchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(coalesce(brand_id#24, 0), isnull(brand_id#24), coalesce(class_id#25, 0), isnull(class_id#25), coalesce(category_id#26, 0), isnull(category_id#26), 100), ENSURE_REQUIREMENTS, [plan_id=104] + +(551) Sort +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: [coalesce(brand_id#24, 0) ASC NULLS FIRST, isnull(brand_id#24) ASC NULLS FIRST, coalesce(class_id#25, 0) ASC NULLS FIRST, isnull(class_id#25) ASC NULLS FIRST, coalesce(category_id#26, 0) ASC NULLS FIRST, isnull(category_id#26) ASC NULLS FIRST], false, 0 + +(552) Scan parquet +Output [2]: [ws_sold_date_sk#100, ws_item_sk#101] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(553) Filter +Input [2]: [ws_sold_date_sk#100, ws_item_sk#101] +Condition : (isnotnull(ws_item_sk#101) AND isnotnull(ws_sold_date_sk#100)) + +(554) Exchange +Input [2]: [ws_sold_date_sk#100, ws_item_sk#101] +Arguments: hashpartitioning(ws_item_sk#101, 100), ENSURE_REQUIREMENTS, [plan_id=105] + +(555) Sort +Input [2]: [ws_sold_date_sk#100, ws_item_sk#101] +Arguments: [ws_item_sk#101 ASC NULLS FIRST], false, 0 + +(556) Scan parquet +Output [4]: [i_item_sk#102, i_brand_id#103, i_class_id#104, i_category_id#105] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(557) Filter +Input [4]: [i_item_sk#102, i_brand_id#103, i_class_id#104, i_category_id#105] +Condition : isnotnull(i_item_sk#102) + +(558) Exchange +Input [4]: [i_item_sk#102, i_brand_id#103, i_class_id#104, i_category_id#105] +Arguments: hashpartitioning(i_item_sk#102, 100), ENSURE_REQUIREMENTS, [plan_id=106] + +(559) Sort +Input [4]: [i_item_sk#102, i_brand_id#103, i_class_id#104, i_category_id#105] +Arguments: [i_item_sk#102 ASC NULLS FIRST], false, 0 + +(560) SortMergeJoin +Left keys [1]: [ws_item_sk#101] +Right keys [1]: [i_item_sk#102] +Join type: Inner +Join condition: None + +(561) Project +Output [4]: [ws_sold_date_sk#100, i_brand_id#103, i_class_id#104, i_category_id#105] +Input [6]: [ws_sold_date_sk#100, ws_item_sk#101, i_item_sk#102, i_brand_id#103, i_class_id#104, i_category_id#105] + +(562) Exchange +Input [4]: [ws_sold_date_sk#100, i_brand_id#103, i_class_id#104, i_category_id#105] +Arguments: hashpartitioning(ws_sold_date_sk#100, 100), ENSURE_REQUIREMENTS, [plan_id=107] + +(563) Sort +Input [4]: [ws_sold_date_sk#100, i_brand_id#103, i_class_id#104, i_category_id#105] +Arguments: [ws_sold_date_sk#100 ASC NULLS FIRST], false, 0 + +(564) Scan parquet +Output [2]: [d_date_sk#106, d_year#107] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(565) Filter +Input [2]: [d_date_sk#106, d_year#107] +Condition : (((isnotnull(d_year#107) AND (d_year#107 >= 1999)) AND (d_year#107 <= 2001)) AND isnotnull(d_date_sk#106)) + +(566) Project +Output [1]: [d_date_sk#106] +Input [2]: [d_date_sk#106, d_year#107] + +(567) Exchange +Input [1]: [d_date_sk#106] +Arguments: hashpartitioning(d_date_sk#106, 100), ENSURE_REQUIREMENTS, [plan_id=108] + +(568) Sort +Input [1]: [d_date_sk#106] +Arguments: [d_date_sk#106 ASC NULLS FIRST], false, 0 + +(569) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#100] +Right keys [1]: [d_date_sk#106] +Join type: Inner +Join condition: None + +(570) Project +Output [3]: [i_brand_id#103, i_class_id#104, i_category_id#105] +Input [5]: [ws_sold_date_sk#100, i_brand_id#103, i_class_id#104, i_category_id#105, d_date_sk#106] + +(571) Exchange +Input [3]: [i_brand_id#103, i_class_id#104, i_category_id#105] +Arguments: hashpartitioning(coalesce(i_brand_id#103, 0), isnull(i_brand_id#103), coalesce(i_class_id#104, 0), isnull(i_class_id#104), coalesce(i_category_id#105, 0), isnull(i_category_id#105), 100), ENSURE_REQUIREMENTS, [plan_id=109] + +(572) Sort +Input [3]: [i_brand_id#103, i_class_id#104, i_category_id#105] +Arguments: [coalesce(i_brand_id#103, 0) ASC NULLS FIRST, isnull(i_brand_id#103) ASC NULLS FIRST, coalesce(i_class_id#104, 0) ASC NULLS FIRST, isnull(i_class_id#104) ASC NULLS FIRST, coalesce(i_category_id#105, 0) ASC NULLS FIRST, isnull(i_category_id#105) ASC NULLS FIRST], false, 0 + +(573) SortMergeJoin +Left keys [6]: [coalesce(brand_id#24, 0), isnull(brand_id#24), coalesce(class_id#25, 0), isnull(class_id#25), coalesce(category_id#26, 0), isnull(category_id#26)] +Right keys [6]: [coalesce(i_brand_id#103, 0), isnull(i_brand_id#103), coalesce(i_class_id#104, 0), isnull(i_class_id#104), coalesce(i_category_id#105, 0), isnull(i_category_id#105)] +Join type: LeftSemi +Join condition: None + +(574) Exchange +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: hashpartitioning(brand_id#24, class_id#25, category_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=110] + +(575) Sort +Input [3]: [brand_id#24, class_id#25, category_id#26] +Arguments: [brand_id#24 ASC NULLS FIRST, class_id#25 ASC NULLS FIRST, category_id#26 ASC NULLS FIRST], false, 0 + +(576) SortMergeJoin +Left keys [3]: [i_brand_id#81, i_class_id#82, i_category_id#83] +Right keys [3]: [brand_id#24, class_id#25, category_id#26] +Join type: Inner +Join condition: None + +(577) Project +Output [1]: [i_item_sk#80 AS ss_item_sk#108] +Input [7]: [i_item_sk#80, i_brand_id#81, i_class_id#82, i_category_id#83, brand_id#24, class_id#25, category_id#26] + +(578) Exchange +Input [1]: [ss_item_sk#108] +Arguments: hashpartitioning(ss_item_sk#108, 100), ENSURE_REQUIREMENTS, [plan_id=111] + +(579) Sort +Input [1]: [ss_item_sk#108] +Arguments: [ss_item_sk#108 ASC NULLS FIRST], false, 0 + +(580) SortMergeJoin +Left keys [1]: [i_item_sk#109] +Right keys [1]: [ss_item_sk#108] +Join type: LeftSemi +Join condition: None + +(581) SortMergeJoin +Left keys [1]: [ss_item_sk#79] +Right keys [1]: [i_item_sk#109] +Join type: Inner +Join condition: None + +(582) Project +Output [6]: [ss_sold_date_sk#55, ss_quantity#56, ss_list_price#57, i_brand_id#58, i_class_id#59, i_category_id#60] +Input [8]: [ss_sold_date_sk#55, ss_item_sk#79, ss_quantity#56, ss_list_price#57, i_item_sk#109, i_brand_id#58, i_class_id#59, i_category_id#60] + +(583) Exchange +Input [6]: [ss_sold_date_sk#55, ss_quantity#56, ss_list_price#57, i_brand_id#58, i_class_id#59, i_category_id#60] +Arguments: hashpartitioning(ss_sold_date_sk#55, 100), ENSURE_REQUIREMENTS, [plan_id=112] + +(584) Sort +Input [6]: [ss_sold_date_sk#55, ss_quantity#56, ss_list_price#57, i_brand_id#58, i_class_id#59, i_category_id#60] +Arguments: [ss_sold_date_sk#55 ASC NULLS FIRST], false, 0 + +(585) Scan parquet +Output [2]: [d_date_sk#61, d_week_seq#62] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_week_seq), IsNotNull(d_date_sk)] +ReadSchema: struct + +(586) Filter +Input [2]: [d_date_sk#61, d_week_seq#62] +Condition : ((isnotnull(d_week_seq#62) AND (d_week_seq#62 = Subquery subquery#63, [id=#64])) AND isnotnull(d_date_sk#61)) + +(587) Project +Output [1]: [d_date_sk#61] +Input [2]: [d_date_sk#61, d_week_seq#62] + +(588) Exchange +Input [1]: [d_date_sk#61] +Arguments: hashpartitioning(d_date_sk#61, 100), ENSURE_REQUIREMENTS, [plan_id=113] + +(589) Sort +Input [1]: [d_date_sk#61] +Arguments: [d_date_sk#61 ASC NULLS FIRST], false, 0 + +(590) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#55] +Right keys [1]: [d_date_sk#61] +Join type: Inner +Join condition: None + +(591) Project +Output [5]: [ss_quantity#56, ss_list_price#57, i_brand_id#58, i_class_id#59, i_category_id#60] +Input [7]: [ss_sold_date_sk#55, ss_quantity#56, ss_list_price#57, i_brand_id#58, i_class_id#59, i_category_id#60, d_date_sk#61] + +(592) HashAggregate +Input [5]: [ss_quantity#56, ss_list_price#57, i_brand_id#58, i_class_id#59, i_category_id#60] +Keys [3]: [i_brand_id#58, i_class_id#59, i_category_id#60] +Functions [2]: [partial_sum((cast(ss_quantity#56 as decimal(10,0)) * ss_list_price#57)), partial_count(1)] +Aggregate Attributes [3]: [sum#66, isEmpty#67, count#68] +Results [6]: [i_brand_id#58, i_class_id#59, i_category_id#60, sum#110, isEmpty#111, count#112] + +(593) Exchange +Input [6]: [i_brand_id#58, i_class_id#59, i_category_id#60, sum#110, isEmpty#111, count#112] +Arguments: hashpartitioning(i_brand_id#58, i_class_id#59, i_category_id#60, 100), ENSURE_REQUIREMENTS, [plan_id=114] + +(594) HashAggregate +Input [6]: [i_brand_id#58, i_class_id#59, i_category_id#60, sum#110, isEmpty#111, count#112] +Keys [3]: [i_brand_id#58, i_class_id#59, i_category_id#60] +Functions [2]: [sum((cast(ss_quantity#56 as decimal(10,0)) * ss_list_price#57)), count(1)] +Aggregate Attributes [2]: [sum((cast(ss_quantity#56 as decimal(10,0)) * ss_list_price#57))#69, count(1)#70] +Results [6]: [store AS channel#71, i_brand_id#58, i_class_id#59, i_category_id#60, sum((cast(ss_quantity#56 as decimal(10,0)) * ss_list_price#57))#69 AS sales#72, count(1)#70 AS number_sales#73] + +(595) Filter +Input [6]: [channel#71, i_brand_id#58, i_class_id#59, i_category_id#60, sales#72, number_sales#73] +Condition : (isnotnull(sales#72) AND (cast(sales#72 as decimal(32,6)) > cast(Subquery subquery#113, [id=#114] as decimal(32,6)))) + +(596) Sort +Input [6]: [channel#71, i_brand_id#58, i_class_id#59, i_category_id#60, sales#72, number_sales#73] +Arguments: [i_brand_id#58 ASC NULLS FIRST, i_class_id#59 ASC NULLS FIRST, i_category_id#60 ASC NULLS FIRST], false, 0 + +(597) SortMergeJoin +Left keys [3]: [i_brand_id#37, i_class_id#38, i_category_id#39] +Right keys [3]: [i_brand_id#58, i_class_id#59, i_category_id#60] +Join type: Inner +Join condition: None + +(598) TakeOrderedAndProject +Input [12]: [channel#50, i_brand_id#37, i_class_id#38, i_category_id#39, sales#51, number_sales#52, channel#71, i_brand_id#58, i_class_id#59, i_category_id#60, sales#72, number_sales#73] +Arguments: X, [i_brand_id#37 ASC NULLS FIRST, i_class_id#38 ASC NULLS FIRST, i_category_id#39 ASC NULLS FIRST], [channel#50, i_brand_id#37, i_class_id#38, i_category_id#39, sales#51, number_sales#52, channel#71, i_brand_id#58, i_class_id#59, i_category_id#60, sales#72, number_sales#73] + +(599) AdaptiveSparkPlan +Output [12]: [channel#50, i_brand_id#37, i_class_id#38, i_category_id#39, sales#51, number_sales#52, channel#71, i_brand_id#58, i_class_id#59, i_category_id#60, sales#72, number_sales#73] +Arguments: isFinalPlan=true + +===== Subqueries ===== + +Subquery:1 Hosting operator id = 193 Hosting Expression = Subquery subquery#53, [id=#54] +AdaptiveSparkPlan (693) ++- == Final Plan == + NativeProject (655) + +- NativeHashAggregate (654) + +- ShuffleQueryStage (653), Statistics(X) + +- NativeShuffleExchange (652) + +- NativeHashAggregate (651) + +- NativeProject (650) + +- InputAdapter (649) + +- NativeUnion (648) + :- NativeProject (615) + : +- NativeSortMergeJoin Inner (614) + : :- NativeSort (607) + : : +- InputAdapter (606) + : : +- AQEShuffleRead (605) + : : +- ShuffleQueryStage (604), Statistics(X) + : : +- NativeShuffleExchange (603) + : : +- NativeFilter (602) + : : +- InputAdapter (601) + : : +- NativeParquetScan (600) + : +- NativeSort (613) + : +- InputAdapter (612) + : +- InputAdapter (611) + : +- AQEShuffleRead (610) + : +- ShuffleQueryStage (609), Statistics(X) + : +- ReusedExchange (608) + :- NativeProject (631) + : +- NativeSortMergeJoin Inner (630) + : :- NativeSort (623) + : : +- InputAdapter (622) + : : +- AQEShuffleRead (621) + : : +- ShuffleQueryStage (620), Statistics(X) + : : +- NativeShuffleExchange (619) + : : +- NativeFilter (618) + : : +- InputAdapter (617) + : : +- NativeParquetScan (616) + : +- NativeSort (629) + : +- InputAdapter (628) + : +- InputAdapter (627) + : +- AQEShuffleRead (626) + : +- ShuffleQueryStage (625), Statistics(X) + : +- ReusedExchange (624) + +- NativeProject (647) + +- NativeSortMergeJoin Inner (646) + :- NativeSort (639) + : +- InputAdapter (638) + : +- AQEShuffleRead (637) + : +- ShuffleQueryStage (636), Statistics(X) + : +- NativeShuffleExchange (635) + : +- NativeFilter (634) + : +- InputAdapter (633) + : +- NativeParquetScan (632) + +- NativeSort (645) + +- InputAdapter (644) + +- InputAdapter (643) + +- AQEShuffleRead (642) + +- ShuffleQueryStage (641), Statistics(X) + +- ReusedExchange (640) ++- == Initial Plan == + HashAggregate (692) + +- Exchange (691) + +- HashAggregate (690) + +- Union (689) + :- Project (666) + : +- SortMergeJoin Inner (665) + : :- Sort (659) + : : +- Exchange (658) + : : +- Filter (657) + : : +- Scan parquet (656) + : +- Sort (664) + : +- Exchange (663) + : +- Project (662) + : +- Filter (661) + : +- Scan parquet (660) + :- Project (677) + : +- SortMergeJoin Inner (676) + : :- Sort (670) + : : +- Exchange (669) + : : +- Filter (668) + : : +- Scan parquet (667) + : +- Sort (675) + : +- Exchange (674) + : +- Project (673) + : +- Filter (672) + : +- Scan parquet (671) + +- Project (688) + +- SortMergeJoin Inner (687) + :- Sort (681) + : +- Exchange (680) + : +- Filter (679) + : +- Scan parquet (678) + +- Sort (686) + +- Exchange (685) + +- Project (684) + +- Filter (683) + +- Scan parquet (682) + + +(656) Scan parquet +Output [3]: [ss_sold_date_sk#115, ss_quantity#116, ss_list_price#117] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(601) InputAdapter +Input [3]: [ss_sold_date_sk#115, ss_quantity#116, ss_list_price#117] +Arguments: [#115, #116, #117] + +(602) NativeFilter +Input [3]: [#115#115, #116#116, #117#117] +Condition : isnotnull(ss_sold_date_sk#115) + +(603) NativeShuffleExchange +Input [3]: [#115#115, #116#116, #117#117] +Arguments: hashpartitioning(ss_sold_date_sk#115, 100), ENSURE_REQUIREMENTS, [plan_id=115] + +(604) ShuffleQueryStage +Output [3]: [#115#115, #116#116, #117#117] +Arguments: X + +(605) AQEShuffleRead +Input [3]: [#115#115, #116#116, #117#117] +Arguments: coalesced + +(606) InputAdapter +Input [3]: [#115#115, #116#116, #117#117] + +(607) NativeSort +Input [3]: [#115#115, #116#116, #117#117] +Arguments: [ss_sold_date_sk#115 ASC NULLS FIRST], false + +(608) ReusedExchange [Reuses operator id: 60] +Output [1]: [d_date_sk#118] + +(609) ShuffleQueryStage +Output [1]: [d_date_sk#118] +Arguments: X + +(610) AQEShuffleRead +Input [1]: [d_date_sk#118] +Arguments: coalesced + +(611) InputAdapter +Input [1]: [d_date_sk#118] +Arguments: [#118] + +(612) InputAdapter +Input [1]: [#118#118] + +(613) NativeSort +Input [1]: [#118#118] +Arguments: [d_date_sk#118 ASC NULLS FIRST], false + +(614) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#115] +Right keys [1]: [d_date_sk#118] +Join type: Inner +Join condition: None + +(615) NativeProject +Output [2]: [ss_quantity#116 AS quantity#119, ss_list_price#117 AS list_price#120] +Input [4]: [#115#115, #116#116, #117#117, #118#118] + +(667) Scan parquet +Output [3]: [cs_sold_date_sk#121, cs_quantity#122, cs_list_price#123] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(617) InputAdapter +Input [3]: [cs_sold_date_sk#121, cs_quantity#122, cs_list_price#123] +Arguments: [#121, #122, #123] + +(618) NativeFilter +Input [3]: [#121#121, #122#122, #123#123] +Condition : isnotnull(cs_sold_date_sk#121) + +(619) NativeShuffleExchange +Input [3]: [#121#121, #122#122, #123#123] +Arguments: hashpartitioning(cs_sold_date_sk#121, 100), ENSURE_REQUIREMENTS, [plan_id=116] + +(620) ShuffleQueryStage +Output [3]: [#121#121, #122#122, #123#123] +Arguments: X + +(621) AQEShuffleRead +Input [3]: [#121#121, #122#122, #123#123] +Arguments: coalesced + +(622) InputAdapter +Input [3]: [#121#121, #122#122, #123#123] + +(623) NativeSort +Input [3]: [#121#121, #122#122, #123#123] +Arguments: [cs_sold_date_sk#121 ASC NULLS FIRST], false + +(624) ReusedExchange [Reuses operator id: 60] +Output [1]: [d_date_sk#124] + +(625) ShuffleQueryStage +Output [1]: [d_date_sk#124] +Arguments: X + +(626) AQEShuffleRead +Input [1]: [d_date_sk#124] +Arguments: coalesced + +(627) InputAdapter +Input [1]: [d_date_sk#124] +Arguments: [#124] + +(628) InputAdapter +Input [1]: [#124#124] + +(629) NativeSort +Input [1]: [#124#124] +Arguments: [d_date_sk#124 ASC NULLS FIRST], false + +(630) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#121] +Right keys [1]: [d_date_sk#124] +Join type: Inner +Join condition: None + +(631) NativeProject +Output [2]: [cs_quantity#122 AS quantity#125, cs_list_price#123 AS list_price#126] +Input [4]: [#121#121, #122#122, #123#123, #124#124] + +(678) Scan parquet +Output [3]: [ws_sold_date_sk#127, ws_quantity#128, ws_list_price#129] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(633) InputAdapter +Input [3]: [ws_sold_date_sk#127, ws_quantity#128, ws_list_price#129] +Arguments: [#127, #128, #129] + +(634) NativeFilter +Input [3]: [#127#127, #128#128, #129#129] +Condition : isnotnull(ws_sold_date_sk#127) + +(635) NativeShuffleExchange +Input [3]: [#127#127, #128#128, #129#129] +Arguments: hashpartitioning(ws_sold_date_sk#127, 100), ENSURE_REQUIREMENTS, [plan_id=117] + +(636) ShuffleQueryStage +Output [3]: [#127#127, #128#128, #129#129] +Arguments: X + +(637) AQEShuffleRead +Input [3]: [#127#127, #128#128, #129#129] +Arguments: coalesced + +(638) InputAdapter +Input [3]: [#127#127, #128#128, #129#129] + +(639) NativeSort +Input [3]: [#127#127, #128#128, #129#129] +Arguments: [ws_sold_date_sk#127 ASC NULLS FIRST], false + +(640) ReusedExchange [Reuses operator id: 60] +Output [1]: [d_date_sk#130] + +(641) ShuffleQueryStage +Output [1]: [d_date_sk#130] +Arguments: X + +(642) AQEShuffleRead +Input [1]: [d_date_sk#130] +Arguments: coalesced + +(643) InputAdapter +Input [1]: [d_date_sk#130] +Arguments: [#130] + +(644) InputAdapter +Input [1]: [#130#130] + +(645) NativeSort +Input [1]: [#130#130] +Arguments: [d_date_sk#130 ASC NULLS FIRST], false + +(646) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#127] +Right keys [1]: [d_date_sk#130] +Join type: Inner +Join condition: None + +(647) NativeProject +Output [2]: [ws_quantity#128 AS quantity#131, ws_list_price#129 AS list_price#132] +Input [4]: [#127#127, #128#128, #129#129, #130#130] + +(648) NativeUnion +Arguments: [quantity#119, list_price#120] + +(649) InputAdapter +Input [2]: [quantity#119, list_price#120] +Arguments: [#119, #120] + +(650) NativeProject +Output [1]: [(cast(quantity#119 as decimal(10,0)) * list_price#120) AS _c0#133] +Input [2]: [#119#119, #120#120] + +(651) NativeHashAggregate +Input [1]: [_c0#133] +Keys: [] +Functions [1]: [partial_avg(_c0#133)] +Aggregate Attributes [2]: [sum#134, count#135] +Results [1]: [#27#27] + +(652) NativeShuffleExchange +Input [1]: [#27#27] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=118] + +(653) ShuffleQueryStage +Output [1]: [#27#27] +Arguments: X + +(654) NativeHashAggregate +Input [1]: [#27#27] +Keys: [] +Functions [1]: [avg((cast(quantity#119 as decimal(10,0)) * list_price#120))] +Aggregate Attributes [1]: [avg((cast(quantity#119 as decimal(10,0)) * list_price#120))#136] +Results [1]: [avg((cast(quantity#119 as decimal(10,0)) * list_price#120))#136] + +(655) NativeProject +Output [1]: [avg((cast(quantity#119 as decimal(10,0)) * list_price#120))#136 AS average_sales#137] +Input [1]: [avg((cast(quantity#119 as decimal(10,0)) * list_price#120))#136] + +(656) Scan parquet +Output [3]: [ss_sold_date_sk#115, ss_quantity#116, ss_list_price#117] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(657) Filter +Input [3]: [ss_sold_date_sk#115, ss_quantity#116, ss_list_price#117] +Condition : isnotnull(ss_sold_date_sk#115) + +(658) Exchange +Input [3]: [ss_sold_date_sk#115, ss_quantity#116, ss_list_price#117] +Arguments: hashpartitioning(ss_sold_date_sk#115, 100), ENSURE_REQUIREMENTS, [plan_id=119] + +(659) Sort +Input [3]: [ss_sold_date_sk#115, ss_quantity#116, ss_list_price#117] +Arguments: [ss_sold_date_sk#115 ASC NULLS FIRST], false, 0 + +(660) Scan parquet +Output [2]: [d_date_sk#118, d_year#138] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(661) Filter +Input [2]: [d_date_sk#118, d_year#138] +Condition : (((isnotnull(d_year#138) AND (d_year#138 >= 1999)) AND (d_year#138 <= 2001)) AND isnotnull(d_date_sk#118)) + +(662) Project +Output [1]: [d_date_sk#118] +Input [2]: [d_date_sk#118, d_year#138] + +(663) Exchange +Input [1]: [d_date_sk#118] +Arguments: hashpartitioning(d_date_sk#118, 100), ENSURE_REQUIREMENTS, [plan_id=120] + +(664) Sort +Input [1]: [d_date_sk#118] +Arguments: [d_date_sk#118 ASC NULLS FIRST], false, 0 + +(665) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#115] +Right keys [1]: [d_date_sk#118] +Join type: Inner +Join condition: None + +(666) Project +Output [2]: [ss_quantity#116 AS quantity#119, ss_list_price#117 AS list_price#120] +Input [4]: [ss_sold_date_sk#115, ss_quantity#116, ss_list_price#117, d_date_sk#118] + +(667) Scan parquet +Output [3]: [cs_sold_date_sk#121, cs_quantity#122, cs_list_price#123] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(668) Filter +Input [3]: [cs_sold_date_sk#121, cs_quantity#122, cs_list_price#123] +Condition : isnotnull(cs_sold_date_sk#121) + +(669) Exchange +Input [3]: [cs_sold_date_sk#121, cs_quantity#122, cs_list_price#123] +Arguments: hashpartitioning(cs_sold_date_sk#121, 100), ENSURE_REQUIREMENTS, [plan_id=121] + +(670) Sort +Input [3]: [cs_sold_date_sk#121, cs_quantity#122, cs_list_price#123] +Arguments: [cs_sold_date_sk#121 ASC NULLS FIRST], false, 0 + +(671) Scan parquet +Output [2]: [d_date_sk#124, d_year#139] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(672) Filter +Input [2]: [d_date_sk#124, d_year#139] +Condition : (((isnotnull(d_year#139) AND (d_year#139 >= 1999)) AND (d_year#139 <= 2001)) AND isnotnull(d_date_sk#124)) + +(673) Project +Output [1]: [d_date_sk#124] +Input [2]: [d_date_sk#124, d_year#139] + +(674) Exchange +Input [1]: [d_date_sk#124] +Arguments: hashpartitioning(d_date_sk#124, 100), ENSURE_REQUIREMENTS, [plan_id=122] + +(675) Sort +Input [1]: [d_date_sk#124] +Arguments: [d_date_sk#124 ASC NULLS FIRST], false, 0 + +(676) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#121] +Right keys [1]: [d_date_sk#124] +Join type: Inner +Join condition: None + +(677) Project +Output [2]: [cs_quantity#122 AS quantity#125, cs_list_price#123 AS list_price#126] +Input [4]: [cs_sold_date_sk#121, cs_quantity#122, cs_list_price#123, d_date_sk#124] + +(678) Scan parquet +Output [3]: [ws_sold_date_sk#127, ws_quantity#128, ws_list_price#129] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(679) Filter +Input [3]: [ws_sold_date_sk#127, ws_quantity#128, ws_list_price#129] +Condition : isnotnull(ws_sold_date_sk#127) + +(680) Exchange +Input [3]: [ws_sold_date_sk#127, ws_quantity#128, ws_list_price#129] +Arguments: hashpartitioning(ws_sold_date_sk#127, 100), ENSURE_REQUIREMENTS, [plan_id=123] + +(681) Sort +Input [3]: [ws_sold_date_sk#127, ws_quantity#128, ws_list_price#129] +Arguments: [ws_sold_date_sk#127 ASC NULLS FIRST], false, 0 + +(682) Scan parquet +Output [2]: [d_date_sk#130, d_year#140] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), GreaterThanOrEqual(d_year,1999), LessThanOrEqual(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(683) Filter +Input [2]: [d_date_sk#130, d_year#140] +Condition : (((isnotnull(d_year#140) AND (d_year#140 >= 1999)) AND (d_year#140 <= 2001)) AND isnotnull(d_date_sk#130)) + +(684) Project +Output [1]: [d_date_sk#130] +Input [2]: [d_date_sk#130, d_year#140] + +(685) Exchange +Input [1]: [d_date_sk#130] +Arguments: hashpartitioning(d_date_sk#130, 100), ENSURE_REQUIREMENTS, [plan_id=124] + +(686) Sort +Input [1]: [d_date_sk#130] +Arguments: [d_date_sk#130 ASC NULLS FIRST], false, 0 + +(687) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#127] +Right keys [1]: [d_date_sk#130] +Join type: Inner +Join condition: None + +(688) Project +Output [2]: [ws_quantity#128 AS quantity#131, ws_list_price#129 AS list_price#132] +Input [4]: [ws_sold_date_sk#127, ws_quantity#128, ws_list_price#129, d_date_sk#130] + +(689) Union + +(690) HashAggregate +Input [2]: [quantity#119, list_price#120] +Keys: [] +Functions [1]: [partial_avg((cast(quantity#119 as decimal(10,0)) * list_price#120))] +Aggregate Attributes [2]: [sum#134, count#135] +Results [2]: [sum#141, count#142] + +(691) Exchange +Input [2]: [sum#141, count#142] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=125] + +(692) HashAggregate +Input [2]: [sum#141, count#142] +Keys: [] +Functions [1]: [avg((cast(quantity#119 as decimal(10,0)) * list_price#120))] +Aggregate Attributes [1]: [avg((cast(quantity#119 as decimal(10,0)) * list_price#120))#136] +Results [1]: [avg((cast(quantity#119 as decimal(10,0)) * list_price#120))#136 AS average_sales#137] + +(693) AdaptiveSparkPlan +Output [1]: [average_sales#137] +Arguments: isFinalPlan=true + +Subquery:2 Hosting operator id = 176 Hosting Expression = Subquery subquery#42, [id=#43] +AdaptiveSparkPlan (701) ++- == Final Plan == + NativeProject (697) + +- NativeFilter (696) + +- InputAdapter (695) + +- NativeParquetScan (694) ++- == Initial Plan == + Project (700) + +- Filter (699) + +- Scan parquet (698) + + +(698) Scan parquet +Output [4]: [d_week_seq#143, d_year#144, d_moy#145, d_dom#146] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), IsNotNull(d_dom), EqualTo(d_year,2000), EqualTo(d_moy,12), EqualTo(d_dom,11)] +ReadSchema: struct + +(695) InputAdapter +Input [4]: [d_week_seq#143, d_year#144, d_moy#145, d_dom#146] +Arguments: [#143, #144, #145, #146] + +(696) NativeFilter +Input [4]: [#143#143, #144#144, #145#145, #146#146] +Condition : (((((isnotnull(d_year#144) AND isnotnull(d_moy#145)) AND isnotnull(d_dom#146)) AND (d_year#144 = 2000)) AND (d_moy#145 = 12)) AND (d_dom#146 = 11)) + +(697) NativeProject +Output [1]: [d_week_seq#143] +Input [4]: [#143#143, #144#144, #145#145, #146#146] + +(698) Scan parquet +Output [4]: [d_week_seq#143, d_year#144, d_moy#145, d_dom#146] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), IsNotNull(d_dom), EqualTo(d_year,2000), EqualTo(d_moy,12), EqualTo(d_dom,11)] +ReadSchema: struct + +(699) Filter +Input [4]: [d_week_seq#143, d_year#144, d_moy#145, d_dom#146] +Condition : (((((isnotnull(d_year#144) AND isnotnull(d_moy#145)) AND isnotnull(d_dom#146)) AND (d_year#144 = 2000)) AND (d_moy#145 = 12)) AND (d_dom#146 = 11)) + +(700) Project +Output [1]: [d_week_seq#143] +Input [4]: [d_week_seq#143, d_year#144, d_moy#145, d_dom#146] + +(701) AdaptiveSparkPlan +Output [1]: [d_week_seq#143] +Arguments: isFinalPlan=true + +Subquery:3 Hosting operator id = 220 Hosting Expression = ReusedSubquery Subquery subquery#53, [id=#54] + +Subquery:4 Hosting operator id = 203 Hosting Expression = Subquery subquery#63, [id=#64] +AdaptiveSparkPlan (709) ++- == Final Plan == + NativeProject (705) + +- NativeFilter (704) + +- InputAdapter (703) + +- NativeParquetScan (702) ++- == Initial Plan == + Project (708) + +- Filter (707) + +- Scan parquet (706) + + +(706) Scan parquet +Output [4]: [d_week_seq#147, d_year#148, d_moy#149, d_dom#150] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), IsNotNull(d_dom), EqualTo(d_year,1999), EqualTo(d_moy,12), EqualTo(d_dom,11)] +ReadSchema: struct + +(703) InputAdapter +Input [4]: [d_week_seq#147, d_year#148, d_moy#149, d_dom#150] +Arguments: [#147, #148, #149, #150] + +(704) NativeFilter +Input [4]: [#147#147, #148#148, #149#149, #150#150] +Condition : (((((isnotnull(d_year#148) AND isnotnull(d_moy#149)) AND isnotnull(d_dom#150)) AND (d_year#148 = 1999)) AND (d_moy#149 = 12)) AND (d_dom#150 = 11)) + +(705) NativeProject +Output [1]: [d_week_seq#147] +Input [4]: [#147#147, #148#148, #149#149, #150#150] + +(706) Scan parquet +Output [4]: [d_week_seq#147, d_year#148, d_moy#149, d_dom#150] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), IsNotNull(d_dom), EqualTo(d_year,1999), EqualTo(d_moy,12), EqualTo(d_dom,11)] +ReadSchema: struct + +(707) Filter +Input [4]: [d_week_seq#147, d_year#148, d_moy#149, d_dom#150] +Condition : (((((isnotnull(d_year#148) AND isnotnull(d_moy#149)) AND isnotnull(d_dom#150)) AND (d_year#148 = 1999)) AND (d_moy#149 = 12)) AND (d_dom#150 = 11)) + +(708) Project +Output [1]: [d_week_seq#147] +Input [4]: [d_week_seq#147, d_year#148, d_moy#149, d_dom#150] + +(709) AdaptiveSparkPlan +Output [1]: [d_week_seq#147] +Arguments: isFinalPlan=true + + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q15.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q15.txt new file mode 100644 index 000000000..dee7e5004 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q15.txt @@ -0,0 +1,500 @@ +== Physical Plan == +AdaptiveSparkPlan (91) ++- == Final Plan == + NativeTakeOrdered (59) + +- NativeProject (58) + +- NativeHashAggregate (57) + +- InputAdapter (56) + +- AQEShuffleRead (55) + +- ShuffleQueryStage (54), Statistics(X) + +- NativeShuffleExchange (53) + +- NativeHashAggregate (52) + +- NativeProject (51) + +- NativeProject (50) + +- NativeSortMergeJoin Inner (49) + :- NativeSort (39) + : +- InputAdapter (38) + : +- AQEShuffleRead (37) + : +- ShuffleQueryStage (36), Statistics(X) + : +- NativeShuffleExchange (35) + : +- ConvertToNative (34) + : +- * Project (33) + : +- * SortMergeJoin Inner (32) + : :- NativeSort (23) + : : +- InputAdapter (22) + : : +- AQEShuffleRead (21) + : : +- ShuffleQueryStage (20), Statistics(X) + : : +- NativeShuffleExchange (19) + : : +- NativeProject (18) + : : +- NativeSortMergeJoin Inner (17) + : : :- NativeSort (8) + : : : +- InputAdapter (7) + : : : +- AQEShuffleRead (6) + : : : +- ShuffleQueryStage (5), Statistics(X) + : : : +- NativeShuffleExchange (4) + : : : +- NativeFilter (3) + : : : +- InputAdapter (2) + : : : +- NativeParquetScan (1) + : : +- NativeSort (16) + : : +- InputAdapter (15) + : : +- AQEShuffleRead (14) + : : +- ShuffleQueryStage (13), Statistics(X) + : : +- NativeShuffleExchange (12) + : : +- NativeFilter (11) + : : +- InputAdapter (10) + : : +- NativeParquetScan (9) + : +- NativeSort (31) + : +- InputAdapter (30) + : +- AQEShuffleRead (29) + : +- ShuffleQueryStage (28), Statistics(X) + : +- NativeShuffleExchange (27) + : +- NativeFilter (26) + : +- InputAdapter (25) + : +- NativeParquetScan (24) + +- NativeSort (48) + +- InputAdapter (47) + +- AQEShuffleRead (46) + +- ShuffleQueryStage (45), Statistics(X) + +- NativeShuffleExchange (44) + +- NativeProject (43) + +- NativeFilter (42) + +- InputAdapter (41) + +- NativeParquetScan (40) ++- == Initial Plan == + TakeOrderedAndProject (90) + +- HashAggregate (89) + +- Exchange (88) + +- HashAggregate (87) + +- Project (86) + +- SortMergeJoin Inner (85) + :- Sort (79) + : +- Exchange (78) + : +- Project (77) + : +- SortMergeJoin Inner (76) + : :- Sort (71) + : : +- Exchange (70) + : : +- Project (69) + : : +- SortMergeJoin Inner (68) + : : :- Sort (63) + : : : +- Exchange (62) + : : : +- Filter (61) + : : : +- Scan parquet (60) + : : +- Sort (67) + : : +- Exchange (66) + : : +- Filter (65) + : : +- Scan parquet (64) + : +- Sort (75) + : +- Exchange (74) + : +- Filter (73) + : +- Scan parquet (72) + +- Sort (84) + +- Exchange (83) + +- Project (82) + +- Filter (81) + +- Scan parquet (80) + + +(60) Scan parquet +Output [3]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_sales_price#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_bill_customer_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_sales_price#3] +Arguments: [#1, #2, #3] + +(3) NativeFilter +Input [3]: [#1#1, #2#2, #3#3] +Condition : (isnotnull(cs_bill_customer_sk#2) AND isnotnull(cs_sold_date_sk#1)) + +(4) NativeShuffleExchange +Input [3]: [#1#1, #2#2, #3#3] +Arguments: hashpartitioning(cs_bill_customer_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [3]: [#1#1, #2#2, #3#3] +Arguments: X + +(6) AQEShuffleRead +Input [3]: [#1#1, #2#2, #3#3] +Arguments: coalesced + +(7) InputAdapter +Input [3]: [#1#1, #2#2, #3#3] + +(8) NativeSort +Input [3]: [#1#1, #2#2, #3#3] +Arguments: [cs_bill_customer_sk#2 ASC NULLS FIRST], false + +(64) Scan parquet +Output [2]: [c_customer_sk#4, c_current_addr_sk#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_current_addr_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [c_customer_sk#4, c_current_addr_sk#5] +Arguments: [#4, #5] + +(11) NativeFilter +Input [2]: [#4#4, #5#5] +Condition : (isnotnull(c_customer_sk#4) AND isnotnull(c_current_addr_sk#5)) + +(12) NativeShuffleExchange +Input [2]: [#4#4, #5#5] +Arguments: hashpartitioning(c_customer_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [2]: [#4#4, #5#5] +Arguments: X + +(14) AQEShuffleRead +Input [2]: [#4#4, #5#5] +Arguments: coalesced + +(15) InputAdapter +Input [2]: [#4#4, #5#5] + +(16) NativeSort +Input [2]: [#4#4, #5#5] +Arguments: [c_customer_sk#4 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [1]: [cs_bill_customer_sk#2] +Right keys [1]: [c_customer_sk#4] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [3]: [cs_sold_date_sk#1, cs_sales_price#3, c_current_addr_sk#5] +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] + +(19) NativeShuffleExchange +Input [3]: [cs_sold_date_sk#1, cs_sales_price#3, c_current_addr_sk#5] +Arguments: hashpartitioning(c_current_addr_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [3]: [cs_sold_date_sk#1, cs_sales_price#3, c_current_addr_sk#5] +Arguments: X + +(21) AQEShuffleRead +Input [3]: [cs_sold_date_sk#1, cs_sales_price#3, c_current_addr_sk#5] +Arguments: coalesced + +(22) InputAdapter +Input [3]: [cs_sold_date_sk#1, cs_sales_price#3, c_current_addr_sk#5] + +(23) NativeSort +Input [3]: [cs_sold_date_sk#1, cs_sales_price#3, c_current_addr_sk#5] +Arguments: [c_current_addr_sk#5 ASC NULLS FIRST], false + +(72) Scan parquet +Output [3]: [ca_address_sk#6, ca_state#7, ca_zip#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk)] +ReadSchema: struct + +(25) InputAdapter +Input [3]: [ca_address_sk#6, ca_state#7, ca_zip#8] +Arguments: [#6, #7, #8] + +(26) NativeFilter +Input [3]: [#6#6, #7#7, #8#8] +Condition : isnotnull(ca_address_sk#6) + +(27) NativeShuffleExchange +Input [3]: [#6#6, #7#7, #8#8] +Arguments: hashpartitioning(ca_address_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(28) ShuffleQueryStage +Output [3]: [#6#6, #7#7, #8#8] +Arguments: X + +(29) AQEShuffleRead +Input [3]: [#6#6, #7#7, #8#8] +Arguments: coalesced + +(30) InputAdapter +Input [3]: [#6#6, #7#7, #8#8] + +(31) NativeSort +Input [3]: [#6#6, #7#7, #8#8] +Arguments: [ca_address_sk#6 ASC NULLS FIRST], false + +(32) SortMergeJoin [codegen id : 1] +Left keys [1]: [c_current_addr_sk#5] +Right keys [1]: [ca_address_sk#6] +Join type: Inner +Join condition: ((substr(ca_zip#8, 1, 5) IN (85669,86197,88274,83405,86475,85392,85460,80348,81792) OR ca_state#7 IN (CA,WA,GA)) OR (cs_sales_price#3 > 500.00)) + +(33) Project [codegen id : 1] +Output [3]: [cs_sold_date_sk#1, cs_sales_price#3, ca_zip#8] +Input [6]: [cs_sold_date_sk#1, cs_sales_price#3, c_current_addr_sk#5, #6#6, #7#7, #8#8] + +(34) ConvertToNative +Input [3]: [cs_sold_date_sk#1, cs_sales_price#3, ca_zip#8] + +(35) NativeShuffleExchange +Input [3]: [cs_sold_date_sk#1, cs_sales_price#3, ca_zip#8] +Arguments: hashpartitioning(cs_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(36) ShuffleQueryStage +Output [3]: [cs_sold_date_sk#1, cs_sales_price#3, ca_zip#8] +Arguments: X + +(37) AQEShuffleRead +Input [3]: [cs_sold_date_sk#1, cs_sales_price#3, ca_zip#8] +Arguments: coalesced + +(38) InputAdapter +Input [3]: [cs_sold_date_sk#1, cs_sales_price#3, ca_zip#8] + +(39) NativeSort +Input [3]: [cs_sold_date_sk#1, cs_sales_price#3, ca_zip#8] +Arguments: [cs_sold_date_sk#1 ASC NULLS FIRST], false + +(80) Scan parquet +Output [3]: [d_date_sk#9, d_year#10, d_qoy#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_qoy), IsNotNull(d_year), EqualTo(d_qoy,2), EqualTo(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(41) InputAdapter +Input [3]: [d_date_sk#9, d_year#10, d_qoy#11] +Arguments: [#9, #10, #11] + +(42) NativeFilter +Input [3]: [#9#9, #10#10, #11#11] +Condition : ((((isnotnull(d_qoy#11) AND isnotnull(d_year#10)) AND (d_qoy#11 = 2)) AND (d_year#10 = 2001)) AND isnotnull(d_date_sk#9)) + +(43) NativeProject +Output [1]: [d_date_sk#9] +Input [3]: [#9#9, #10#10, #11#11] + +(44) NativeShuffleExchange +Input [1]: [d_date_sk#9] +Arguments: hashpartitioning(d_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(45) ShuffleQueryStage +Output [1]: [d_date_sk#9] +Arguments: X + +(46) AQEShuffleRead +Input [1]: [d_date_sk#9] +Arguments: coalesced + +(47) InputAdapter +Input [1]: [d_date_sk#9] + +(48) NativeSort +Input [1]: [d_date_sk#9] +Arguments: [d_date_sk#9 ASC NULLS FIRST], false + +(49) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#1] +Right keys [1]: [d_date_sk#9] +Join type: Inner +Join condition: None + +(50) NativeProject +Output [2]: [cs_sales_price#3, ca_zip#8] +Input [4]: [cs_sold_date_sk#1, cs_sales_price#3, ca_zip#8, d_date_sk#9] + +(51) NativeProject +Output [2]: [ca_zip#8 AS ca_zip#8, UnscaledValue(cs_sales_price#3) AS _c1#12] +Input [2]: [cs_sales_price#3, ca_zip#8] + +(52) NativeHashAggregate +Input [2]: [ca_zip#8, _c1#12] +Keys [1]: [ca_zip#8] +Functions [1]: [partial_sum(_c1#12)] +Aggregate Attributes [1]: [sum#13] +Results [2]: [ca_zip#8, #14#14] + +(53) NativeShuffleExchange +Input [2]: [ca_zip#8, #14#14] +Arguments: hashpartitioning(ca_zip#8, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(54) ShuffleQueryStage +Output [2]: [ca_zip#8, #14#14] +Arguments: X + +(55) AQEShuffleRead +Input [2]: [ca_zip#8, #14#14] +Arguments: coalesced + +(56) InputAdapter +Input [2]: [ca_zip#8, #14#14] + +(57) NativeHashAggregate +Input [2]: [ca_zip#8, #14#14] +Keys [1]: [ca_zip#8] +Functions [1]: [sum(UnscaledValue(cs_sales_price#3))] +Aggregate Attributes [1]: [sum(UnscaledValue(cs_sales_price#3))#15] +Results [2]: [ca_zip#8, sum(UnscaledValue(cs_sales_price#3))#15] + +(58) NativeProject +Output [2]: [ca_zip#8, MakeDecimal(sum(UnscaledValue(cs_sales_price#3))#15,17,2) AS sum(cs_sales_price)#16] +Input [2]: [ca_zip#8, sum(UnscaledValue(cs_sales_price#3))#15] + +(59) NativeTakeOrdered +Input [2]: [ca_zip#8, sum(cs_sales_price)#16] +Arguments: X, [ca_zip#8 ASC NULLS FIRST] + +(60) Scan parquet +Output [3]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_sales_price#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_bill_customer_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(61) Filter +Input [3]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_sales_price#3] +Condition : (isnotnull(cs_bill_customer_sk#2) AND isnotnull(cs_sold_date_sk#1)) + +(62) Exchange +Input [3]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_sales_price#3] +Arguments: hashpartitioning(cs_bill_customer_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(63) Sort +Input [3]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_sales_price#3] +Arguments: [cs_bill_customer_sk#2 ASC NULLS FIRST], false, 0 + +(64) Scan parquet +Output [2]: [c_customer_sk#4, c_current_addr_sk#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_current_addr_sk)] +ReadSchema: struct + +(65) Filter +Input [2]: [c_customer_sk#4, c_current_addr_sk#5] +Condition : (isnotnull(c_customer_sk#4) AND isnotnull(c_current_addr_sk#5)) + +(66) Exchange +Input [2]: [c_customer_sk#4, c_current_addr_sk#5] +Arguments: hashpartitioning(c_customer_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(67) Sort +Input [2]: [c_customer_sk#4, c_current_addr_sk#5] +Arguments: [c_customer_sk#4 ASC NULLS FIRST], false, 0 + +(68) SortMergeJoin +Left keys [1]: [cs_bill_customer_sk#2] +Right keys [1]: [c_customer_sk#4] +Join type: Inner +Join condition: None + +(69) Project +Output [3]: [cs_sold_date_sk#1, cs_sales_price#3, c_current_addr_sk#5] +Input [5]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_sales_price#3, c_customer_sk#4, c_current_addr_sk#5] + +(70) Exchange +Input [3]: [cs_sold_date_sk#1, cs_sales_price#3, c_current_addr_sk#5] +Arguments: hashpartitioning(c_current_addr_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(71) Sort +Input [3]: [cs_sold_date_sk#1, cs_sales_price#3, c_current_addr_sk#5] +Arguments: [c_current_addr_sk#5 ASC NULLS FIRST], false, 0 + +(72) Scan parquet +Output [3]: [ca_address_sk#6, ca_state#7, ca_zip#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk)] +ReadSchema: struct + +(73) Filter +Input [3]: [ca_address_sk#6, ca_state#7, ca_zip#8] +Condition : isnotnull(ca_address_sk#6) + +(74) Exchange +Input [3]: [ca_address_sk#6, ca_state#7, ca_zip#8] +Arguments: hashpartitioning(ca_address_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(75) Sort +Input [3]: [ca_address_sk#6, ca_state#7, ca_zip#8] +Arguments: [ca_address_sk#6 ASC NULLS FIRST], false, 0 + +(76) SortMergeJoin +Left keys [1]: [c_current_addr_sk#5] +Right keys [1]: [ca_address_sk#6] +Join type: Inner +Join condition: ((substr(ca_zip#8, 1, 5) IN (85669,86197,88274,83405,86475,85392,85460,80348,81792) OR ca_state#7 IN (CA,WA,GA)) OR (cs_sales_price#3 > 500.00)) + +(77) Project +Output [3]: [cs_sold_date_sk#1, cs_sales_price#3, ca_zip#8] +Input [6]: [cs_sold_date_sk#1, cs_sales_price#3, c_current_addr_sk#5, ca_address_sk#6, ca_state#7, ca_zip#8] + +(78) Exchange +Input [3]: [cs_sold_date_sk#1, cs_sales_price#3, ca_zip#8] +Arguments: hashpartitioning(cs_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(79) Sort +Input [3]: [cs_sold_date_sk#1, cs_sales_price#3, ca_zip#8] +Arguments: [cs_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(80) Scan parquet +Output [3]: [d_date_sk#9, d_year#10, d_qoy#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_qoy), IsNotNull(d_year), EqualTo(d_qoy,2), EqualTo(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(81) Filter +Input [3]: [d_date_sk#9, d_year#10, d_qoy#11] +Condition : ((((isnotnull(d_qoy#11) AND isnotnull(d_year#10)) AND (d_qoy#11 = 2)) AND (d_year#10 = 2001)) AND isnotnull(d_date_sk#9)) + +(82) Project +Output [1]: [d_date_sk#9] +Input [3]: [d_date_sk#9, d_year#10, d_qoy#11] + +(83) Exchange +Input [1]: [d_date_sk#9] +Arguments: hashpartitioning(d_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(84) Sort +Input [1]: [d_date_sk#9] +Arguments: [d_date_sk#9 ASC NULLS FIRST], false, 0 + +(85) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#1] +Right keys [1]: [d_date_sk#9] +Join type: Inner +Join condition: None + +(86) Project +Output [2]: [cs_sales_price#3, ca_zip#8] +Input [4]: [cs_sold_date_sk#1, cs_sales_price#3, ca_zip#8, d_date_sk#9] + +(87) HashAggregate +Input [2]: [cs_sales_price#3, ca_zip#8] +Keys [1]: [ca_zip#8] +Functions [1]: [partial_sum(UnscaledValue(cs_sales_price#3))] +Aggregate Attributes [1]: [sum#13] +Results [2]: [ca_zip#8, sum#17] + +(88) Exchange +Input [2]: [ca_zip#8, sum#17] +Arguments: hashpartitioning(ca_zip#8, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(89) HashAggregate +Input [2]: [ca_zip#8, sum#17] +Keys [1]: [ca_zip#8] +Functions [1]: [sum(UnscaledValue(cs_sales_price#3))] +Aggregate Attributes [1]: [sum(UnscaledValue(cs_sales_price#3))#15] +Results [2]: [ca_zip#8, MakeDecimal(sum(UnscaledValue(cs_sales_price#3))#15,17,2) AS sum(cs_sales_price)#16] + +(90) TakeOrderedAndProject +Input [2]: [ca_zip#8, sum(cs_sales_price)#16] +Arguments: X, [ca_zip#8 ASC NULLS FIRST], [ca_zip#8, sum(cs_sales_price)#16] + +(91) AdaptiveSparkPlan +Output [2]: [ca_zip#8, sum(cs_sales_price)#16] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q16.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q16.txt new file mode 100644 index 000000000..67a27cdfe --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q16.txt @@ -0,0 +1,735 @@ +== Physical Plan == +AdaptiveSparkPlan (133) ++- == Final Plan == + NativeProject (86) + +- NativeHashAggregate (85) + +- ShuffleQueryStage (84), Statistics(X) + +- NativeShuffleExchange (83) + +- NativeHashAggregate (82) + +- NativeHashAggregate (81) + +- InputAdapter (80) + +- AQEShuffleRead (79) + +- ShuffleQueryStage (78), Statistics(X) + +- NativeShuffleExchange (77) + +- NativeHashAggregate (76) + +- NativeProject (75) + +- NativeProject (74) + +- NativeSortMergeJoin Inner (73) + :- NativeSort (63) + : +- InputAdapter (62) + : +- AQEShuffleRead (61) + : +- ShuffleQueryStage (60), Statistics(X) + : +- NativeShuffleExchange (59) + : +- NativeProject (58) + : +- NativeSortMergeJoin Inner (57) + : :- NativeSort (47) + : : +- InputAdapter (46) + : : +- AQEShuffleRead (45) + : : +- ShuffleQueryStage (44), Statistics(X) + : : +- NativeShuffleExchange (43) + : : +- NativeProject (42) + : : +- NativeSortMergeJoin Inner (41) + : : :- NativeSort (31) + : : : +- InputAdapter (30) + : : : +- AQEShuffleRead (29) + : : : +- ShuffleQueryStage (28), Statistics(X) + : : : +- NativeShuffleExchange (27) + : : : +- NativeSortMergeJoin LeftAnti (26) + : : : :- ConvertToNative (18) + : : : : +- * Project (17) + : : : : +- * SortMergeJoin LeftSemi (16) + : : : : :- NativeSort (8) + : : : : : +- InputAdapter (7) + : : : : : +- AQEShuffleRead (6) + : : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : : +- NativeShuffleExchange (4) + : : : : : +- NativeFilter (3) + : : : : : +- InputAdapter (2) + : : : : : +- NativeParquetScan (1) + : : : : +- NativeSort (15) + : : : : +- InputAdapter (14) + : : : : +- AQEShuffleRead (13) + : : : : +- ShuffleQueryStage (12), Statistics(X) + : : : : +- NativeShuffleExchange (11) + : : : : +- InputAdapter (10) + : : : : +- NativeParquetScan (9) + : : : +- NativeSort (25) + : : : +- InputAdapter (24) + : : : +- AQEShuffleRead (23) + : : : +- ShuffleQueryStage (22), Statistics(X) + : : : +- NativeShuffleExchange (21) + : : : +- InputAdapter (20) + : : : +- NativeParquetScan (19) + : : +- NativeSort (40) + : : +- InputAdapter (39) + : : +- AQEShuffleRead (38) + : : +- ShuffleQueryStage (37), Statistics(X) + : : +- NativeShuffleExchange (36) + : : +- NativeProject (35) + : : +- NativeFilter (34) + : : +- InputAdapter (33) + : : +- NativeParquetScan (32) + : +- NativeSort (56) + : +- InputAdapter (55) + : +- AQEShuffleRead (54) + : +- ShuffleQueryStage (53), Statistics(X) + : +- NativeShuffleExchange (52) + : +- NativeProject (51) + : +- NativeFilter (50) + : +- InputAdapter (49) + : +- NativeParquetScan (48) + +- NativeSort (72) + +- InputAdapter (71) + +- AQEShuffleRead (70) + +- ShuffleQueryStage (69), Statistics(X) + +- NativeShuffleExchange (68) + +- NativeProject (67) + +- NativeFilter (66) + +- InputAdapter (65) + +- NativeParquetScan (64) ++- == Initial Plan == + HashAggregate (132) + +- Exchange (131) + +- HashAggregate (130) + +- HashAggregate (129) + +- Exchange (128) + +- HashAggregate (127) + +- Project (126) + +- SortMergeJoin Inner (125) + :- Sort (119) + : +- Exchange (118) + : +- Project (117) + : +- SortMergeJoin Inner (116) + : :- Sort (110) + : : +- Exchange (109) + : : +- Project (108) + : : +- SortMergeJoin Inner (107) + : : :- Sort (101) + : : : +- Exchange (100) + : : : +- SortMergeJoin LeftAnti (99) + : : : :- Project (95) + : : : : +- SortMergeJoin LeftSemi (94) + : : : : :- Sort (90) + : : : : : +- Exchange (89) + : : : : : +- Filter (88) + : : : : : +- Scan parquet (87) + : : : : +- Sort (93) + : : : : +- Exchange (92) + : : : : +- Scan parquet (91) + : : : +- Sort (98) + : : : +- Exchange (97) + : : : +- Scan parquet (96) + : : +- Sort (106) + : : +- Exchange (105) + : : +- Project (104) + : : +- Filter (103) + : : +- Scan parquet (102) + : +- Sort (115) + : +- Exchange (114) + : +- Project (113) + : +- Filter (112) + : +- Scan parquet (111) + +- Sort (124) + +- Exchange (123) + +- Project (122) + +- Filter (121) + +- Scan parquet (120) + + +(87) Scan parquet +Output [7]: [cs_ship_date_sk#1, cs_ship_addr_sk#2, cs_call_center_sk#3, cs_warehouse_sk#4, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_ship_date_sk), IsNotNull(cs_ship_addr_sk), IsNotNull(cs_call_center_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [7]: [cs_ship_date_sk#1, cs_ship_addr_sk#2, cs_call_center_sk#3, cs_warehouse_sk#4, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Arguments: [#1, #2, #3, #4, #5, #6, #7] + +(3) NativeFilter +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Condition : ((isnotnull(cs_ship_date_sk#1) AND isnotnull(cs_ship_addr_sk#2)) AND isnotnull(cs_call_center_sk#3)) + +(4) NativeShuffleExchange +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Arguments: hashpartitioning(cs_order_number#5, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Arguments: X + +(6) AQEShuffleRead +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Arguments: coalesced + +(7) InputAdapter +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] + +(8) NativeSort +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Arguments: [cs_order_number#5 ASC NULLS FIRST], false + +(91) Scan parquet +Output [2]: [cs_warehouse_sk#8, cs_order_number#9] +Batched: true +Location: InMemoryFileIndex [file:/] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [cs_warehouse_sk#8, cs_order_number#9] +Arguments: [#8, #9] + +(11) NativeShuffleExchange +Input [2]: [#8#8, #9#9] +Arguments: hashpartitioning(cs_order_number#9, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(12) ShuffleQueryStage +Output [2]: [#8#8, #9#9] +Arguments: X + +(13) AQEShuffleRead +Input [2]: [#8#8, #9#9] +Arguments: coalesced + +(14) InputAdapter +Input [2]: [#8#8, #9#9] + +(15) NativeSort +Input [2]: [#8#8, #9#9] +Arguments: [cs_order_number#9 ASC NULLS FIRST], false + +(16) SortMergeJoin [codegen id : 1] +Left keys [1]: [cs_order_number#5] +Right keys [1]: [cs_order_number#9] +Join type: LeftSemi +Join condition: NOT (cs_warehouse_sk#4 = cs_warehouse_sk#8) + +(17) Project [codegen id : 1] +Output [6]: [cs_ship_date_sk#1, cs_ship_addr_sk#2, cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] + +(18) ConvertToNative +Input [6]: [cs_ship_date_sk#1, cs_ship_addr_sk#2, cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] + +(96) Scan parquet +Output [1]: [cr_order_number#10] +Batched: true +Location: InMemoryFileIndex [file:/] +ReadSchema: struct + +(20) InputAdapter +Input [1]: [cr_order_number#10] +Arguments: [#10] + +(21) NativeShuffleExchange +Input [1]: [#10#10] +Arguments: hashpartitioning(cr_order_number#10, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(22) ShuffleQueryStage +Output [1]: [#10#10] +Arguments: X + +(23) AQEShuffleRead +Input [1]: [#10#10] +Arguments: coalesced + +(24) InputAdapter +Input [1]: [#10#10] + +(25) NativeSort +Input [1]: [#10#10] +Arguments: [cr_order_number#10 ASC NULLS FIRST], false + +(26) NativeSortMergeJoin +Left keys [1]: [cs_order_number#5] +Right keys [1]: [cr_order_number#10] +Join type: LeftAnti +Join condition: None + +(27) NativeShuffleExchange +Input [6]: [cs_ship_date_sk#1, cs_ship_addr_sk#2, cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Arguments: hashpartitioning(cs_ship_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(28) ShuffleQueryStage +Output [6]: [cs_ship_date_sk#1, cs_ship_addr_sk#2, cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Arguments: X + +(29) AQEShuffleRead +Input [6]: [cs_ship_date_sk#1, cs_ship_addr_sk#2, cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Arguments: coalesced + +(30) InputAdapter +Input [6]: [cs_ship_date_sk#1, cs_ship_addr_sk#2, cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] + +(31) NativeSort +Input [6]: [cs_ship_date_sk#1, cs_ship_addr_sk#2, cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Arguments: [cs_ship_date_sk#1 ASC NULLS FIRST], false + +(102) Scan parquet +Output [2]: [d_date_sk#11, d_date#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,2002-02-01), LessThanOrEqual(d_date,2002-04-02), IsNotNull(d_date_sk)] +ReadSchema: struct + +(33) InputAdapter +Input [2]: [d_date_sk#11, d_date#12] +Arguments: [#11, #12] + +(34) NativeFilter +Input [2]: [#11#11, #12#12] +Condition : (((isnotnull(d_date#12) AND (d_date#12 >= 2002-02-01)) AND (d_date#12 <= 2002-04-02)) AND isnotnull(d_date_sk#11)) + +(35) NativeProject +Output [1]: [d_date_sk#11] +Input [2]: [#11#11, #12#12] + +(36) NativeShuffleExchange +Input [1]: [d_date_sk#11] +Arguments: hashpartitioning(d_date_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [1]: [d_date_sk#11] +Arguments: X + +(38) AQEShuffleRead +Input [1]: [d_date_sk#11] +Arguments: coalesced + +(39) InputAdapter +Input [1]: [d_date_sk#11] + +(40) NativeSort +Input [1]: [d_date_sk#11] +Arguments: [d_date_sk#11 ASC NULLS FIRST], false + +(41) NativeSortMergeJoin +Left keys [1]: [cs_ship_date_sk#1] +Right keys [1]: [d_date_sk#11] +Join type: Inner +Join condition: None + +(42) NativeProject +Output [5]: [cs_ship_addr_sk#2, cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Input [7]: [cs_ship_date_sk#1, cs_ship_addr_sk#2, cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7, d_date_sk#11] + +(43) NativeShuffleExchange +Input [5]: [cs_ship_addr_sk#2, cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Arguments: hashpartitioning(cs_ship_addr_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) ShuffleQueryStage +Output [5]: [cs_ship_addr_sk#2, cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Arguments: X + +(45) AQEShuffleRead +Input [5]: [cs_ship_addr_sk#2, cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Arguments: coalesced + +(46) InputAdapter +Input [5]: [cs_ship_addr_sk#2, cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] + +(47) NativeSort +Input [5]: [cs_ship_addr_sk#2, cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Arguments: [cs_ship_addr_sk#2 ASC NULLS FIRST], false + +(111) Scan parquet +Output [2]: [ca_address_sk#13, ca_state#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_state), EqualTo(ca_state,GA), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(49) InputAdapter +Input [2]: [ca_address_sk#13, ca_state#14] +Arguments: [#13, #14] + +(50) NativeFilter +Input [2]: [#13#13, #14#14] +Condition : ((isnotnull(ca_state#14) AND (ca_state#14 = GA)) AND isnotnull(ca_address_sk#13)) + +(51) NativeProject +Output [1]: [ca_address_sk#13] +Input [2]: [#13#13, #14#14] + +(52) NativeShuffleExchange +Input [1]: [ca_address_sk#13] +Arguments: hashpartitioning(ca_address_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(53) ShuffleQueryStage +Output [1]: [ca_address_sk#13] +Arguments: X + +(54) AQEShuffleRead +Input [1]: [ca_address_sk#13] +Arguments: coalesced + +(55) InputAdapter +Input [1]: [ca_address_sk#13] + +(56) NativeSort +Input [1]: [ca_address_sk#13] +Arguments: [ca_address_sk#13 ASC NULLS FIRST], false + +(57) NativeSortMergeJoin +Left keys [1]: [cs_ship_addr_sk#2] +Right keys [1]: [ca_address_sk#13] +Join type: Inner +Join condition: None + +(58) NativeProject +Output [4]: [cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Input [6]: [cs_ship_addr_sk#2, cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7, ca_address_sk#13] + +(59) NativeShuffleExchange +Input [4]: [cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Arguments: hashpartitioning(cs_call_center_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(60) ShuffleQueryStage +Output [4]: [cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Arguments: X + +(61) AQEShuffleRead +Input [4]: [cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Arguments: coalesced + +(62) InputAdapter +Input [4]: [cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] + +(63) NativeSort +Input [4]: [cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Arguments: [cs_call_center_sk#3 ASC NULLS FIRST], false + +(120) Scan parquet +Output [2]: [cc_call_center_sk#15, cc_county#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cc_county), EqualTo(cc_county,Williamson County), IsNotNull(cc_call_center_sk)] +ReadSchema: struct + +(65) InputAdapter +Input [2]: [cc_call_center_sk#15, cc_county#16] +Arguments: [#15, #16] + +(66) NativeFilter +Input [2]: [#15#15, #16#16] +Condition : ((isnotnull(cc_county#16) AND (cc_county#16 = Williamson County)) AND isnotnull(cc_call_center_sk#15)) + +(67) NativeProject +Output [1]: [cc_call_center_sk#15] +Input [2]: [#15#15, #16#16] + +(68) NativeShuffleExchange +Input [1]: [cc_call_center_sk#15] +Arguments: hashpartitioning(cc_call_center_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(69) ShuffleQueryStage +Output [1]: [cc_call_center_sk#15] +Arguments: X + +(70) AQEShuffleRead +Input [1]: [cc_call_center_sk#15] +Arguments: coalesced + +(71) InputAdapter +Input [1]: [cc_call_center_sk#15] + +(72) NativeSort +Input [1]: [cc_call_center_sk#15] +Arguments: [cc_call_center_sk#15 ASC NULLS FIRST], false + +(73) NativeSortMergeJoin +Left keys [1]: [cs_call_center_sk#3] +Right keys [1]: [cc_call_center_sk#15] +Join type: Inner +Join condition: None + +(74) NativeProject +Output [3]: [cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Input [5]: [cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7, cc_call_center_sk#15] + +(75) NativeProject +Output [3]: [cs_order_number#5 AS cs_order_number#5, UnscaledValue(cs_ext_ship_cost#6) AS _c1#17, UnscaledValue(cs_net_profit#7) AS _c2#18] +Input [3]: [cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] + +(76) NativeHashAggregate +Input [3]: [cs_order_number#5, _c1#17, _c2#18] +Keys [1]: [cs_order_number#5] +Functions [2]: [partial_sum(_c1#17), partial_sum(_c2#18)] +Aggregate Attributes [2]: [sum(UnscaledValue(cs_ext_ship_cost#6))#19, sum(UnscaledValue(cs_net_profit#7))#20] +Results [2]: [cs_order_number#5, #21#21] + +(77) NativeShuffleExchange +Input [2]: [cs_order_number#5, #21#21] +Arguments: hashpartitioning(cs_order_number#5, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(78) ShuffleQueryStage +Output [2]: [cs_order_number#5, #21#21] +Arguments: X + +(79) AQEShuffleRead +Input [2]: [cs_order_number#5, #21#21] +Arguments: coalesced + +(80) InputAdapter +Input [2]: [cs_order_number#5, #21#21] + +(81) NativeHashAggregate +Input [2]: [cs_order_number#5, #21#21] +Keys [1]: [cs_order_number#5] +Functions [2]: [merge_sum(UnscaledValue(cs_ext_ship_cost#6)), merge_sum(UnscaledValue(cs_net_profit#7))] +Aggregate Attributes [2]: [sum(UnscaledValue(cs_ext_ship_cost#6))#19, sum(UnscaledValue(cs_net_profit#7))#20] +Results [2]: [cs_order_number#5, #21#21] + +(82) NativeHashAggregate +Input [2]: [cs_order_number#5, #21#21] +Keys: [] +Functions [3]: [merge_sum(UnscaledValue(cs_ext_ship_cost#6)), merge_sum(UnscaledValue(cs_net_profit#7)), partial_count(distinct cs_order_number#5)] +Aggregate Attributes [3]: [sum(UnscaledValue(cs_ext_ship_cost#6))#19, sum(UnscaledValue(cs_net_profit#7))#20, count(cs_order_number#5)#22] +Results [1]: [#21#21] + +(83) NativeShuffleExchange +Input [1]: [#21#21] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=11] + +(84) ShuffleQueryStage +Output [1]: [#21#21] +Arguments: X + +(85) NativeHashAggregate +Input [1]: [#21#21] +Keys: [] +Functions [3]: [sum(UnscaledValue(cs_ext_ship_cost#6)), sum(UnscaledValue(cs_net_profit#7)), count(distinct cs_order_number#5)] +Aggregate Attributes [3]: [sum(UnscaledValue(cs_ext_ship_cost#6))#19, sum(UnscaledValue(cs_net_profit#7))#20, count(cs_order_number#5)#22] +Results [3]: [sum(UnscaledValue(cs_ext_ship_cost#6))#19, sum(UnscaledValue(cs_net_profit#7))#20, count(cs_order_number#5)#22] + +(86) NativeProject +Output [3]: [count(cs_order_number#5)#22 AS order count #23, MakeDecimal(sum(UnscaledValue(cs_ext_ship_cost#6))#19,17,2) AS total shipping cost #24, MakeDecimal(sum(UnscaledValue(cs_net_profit#7))#20,17,2) AS total net profit #25] +Input [3]: [sum(UnscaledValue(cs_ext_ship_cost#6))#19, sum(UnscaledValue(cs_net_profit#7))#20, count(cs_order_number#5)#22] + +(87) Scan parquet +Output [7]: [cs_ship_date_sk#1, cs_ship_addr_sk#2, cs_call_center_sk#3, cs_warehouse_sk#4, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_ship_date_sk), IsNotNull(cs_ship_addr_sk), IsNotNull(cs_call_center_sk)] +ReadSchema: struct + +(88) Filter +Input [7]: [cs_ship_date_sk#1, cs_ship_addr_sk#2, cs_call_center_sk#3, cs_warehouse_sk#4, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Condition : ((isnotnull(cs_ship_date_sk#1) AND isnotnull(cs_ship_addr_sk#2)) AND isnotnull(cs_call_center_sk#3)) + +(89) Exchange +Input [7]: [cs_ship_date_sk#1, cs_ship_addr_sk#2, cs_call_center_sk#3, cs_warehouse_sk#4, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Arguments: hashpartitioning(cs_order_number#5, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(90) Sort +Input [7]: [cs_ship_date_sk#1, cs_ship_addr_sk#2, cs_call_center_sk#3, cs_warehouse_sk#4, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Arguments: [cs_order_number#5 ASC NULLS FIRST], false, 0 + +(91) Scan parquet +Output [2]: [cs_warehouse_sk#8, cs_order_number#9] +Batched: true +Location: InMemoryFileIndex [file:/] +ReadSchema: struct + +(92) Exchange +Input [2]: [cs_warehouse_sk#8, cs_order_number#9] +Arguments: hashpartitioning(cs_order_number#9, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(93) Sort +Input [2]: [cs_warehouse_sk#8, cs_order_number#9] +Arguments: [cs_order_number#9 ASC NULLS FIRST], false, 0 + +(94) SortMergeJoin +Left keys [1]: [cs_order_number#5] +Right keys [1]: [cs_order_number#9] +Join type: LeftSemi +Join condition: NOT (cs_warehouse_sk#4 = cs_warehouse_sk#8) + +(95) Project +Output [6]: [cs_ship_date_sk#1, cs_ship_addr_sk#2, cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Input [7]: [cs_ship_date_sk#1, cs_ship_addr_sk#2, cs_call_center_sk#3, cs_warehouse_sk#4, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] + +(96) Scan parquet +Output [1]: [cr_order_number#10] +Batched: true +Location: InMemoryFileIndex [file:/] +ReadSchema: struct + +(97) Exchange +Input [1]: [cr_order_number#10] +Arguments: hashpartitioning(cr_order_number#10, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(98) Sort +Input [1]: [cr_order_number#10] +Arguments: [cr_order_number#10 ASC NULLS FIRST], false, 0 + +(99) SortMergeJoin +Left keys [1]: [cs_order_number#5] +Right keys [1]: [cr_order_number#10] +Join type: LeftAnti +Join condition: None + +(100) Exchange +Input [6]: [cs_ship_date_sk#1, cs_ship_addr_sk#2, cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Arguments: hashpartitioning(cs_ship_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(101) Sort +Input [6]: [cs_ship_date_sk#1, cs_ship_addr_sk#2, cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Arguments: [cs_ship_date_sk#1 ASC NULLS FIRST], false, 0 + +(102) Scan parquet +Output [2]: [d_date_sk#11, d_date#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,2002-02-01), LessThanOrEqual(d_date,2002-04-02), IsNotNull(d_date_sk)] +ReadSchema: struct + +(103) Filter +Input [2]: [d_date_sk#11, d_date#12] +Condition : (((isnotnull(d_date#12) AND (d_date#12 >= 2002-02-01)) AND (d_date#12 <= 2002-04-02)) AND isnotnull(d_date_sk#11)) + +(104) Project +Output [1]: [d_date_sk#11] +Input [2]: [d_date_sk#11, d_date#12] + +(105) Exchange +Input [1]: [d_date_sk#11] +Arguments: hashpartitioning(d_date_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(106) Sort +Input [1]: [d_date_sk#11] +Arguments: [d_date_sk#11 ASC NULLS FIRST], false, 0 + +(107) SortMergeJoin +Left keys [1]: [cs_ship_date_sk#1] +Right keys [1]: [d_date_sk#11] +Join type: Inner +Join condition: None + +(108) Project +Output [5]: [cs_ship_addr_sk#2, cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Input [7]: [cs_ship_date_sk#1, cs_ship_addr_sk#2, cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7, d_date_sk#11] + +(109) Exchange +Input [5]: [cs_ship_addr_sk#2, cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Arguments: hashpartitioning(cs_ship_addr_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(110) Sort +Input [5]: [cs_ship_addr_sk#2, cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Arguments: [cs_ship_addr_sk#2 ASC NULLS FIRST], false, 0 + +(111) Scan parquet +Output [2]: [ca_address_sk#13, ca_state#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_state), EqualTo(ca_state,GA), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(112) Filter +Input [2]: [ca_address_sk#13, ca_state#14] +Condition : ((isnotnull(ca_state#14) AND (ca_state#14 = GA)) AND isnotnull(ca_address_sk#13)) + +(113) Project +Output [1]: [ca_address_sk#13] +Input [2]: [ca_address_sk#13, ca_state#14] + +(114) Exchange +Input [1]: [ca_address_sk#13] +Arguments: hashpartitioning(ca_address_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(115) Sort +Input [1]: [ca_address_sk#13] +Arguments: [ca_address_sk#13 ASC NULLS FIRST], false, 0 + +(116) SortMergeJoin +Left keys [1]: [cs_ship_addr_sk#2] +Right keys [1]: [ca_address_sk#13] +Join type: Inner +Join condition: None + +(117) Project +Output [4]: [cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Input [6]: [cs_ship_addr_sk#2, cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7, ca_address_sk#13] + +(118) Exchange +Input [4]: [cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Arguments: hashpartitioning(cs_call_center_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(119) Sort +Input [4]: [cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Arguments: [cs_call_center_sk#3 ASC NULLS FIRST], false, 0 + +(120) Scan parquet +Output [2]: [cc_call_center_sk#15, cc_county#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cc_county), EqualTo(cc_county,Williamson County), IsNotNull(cc_call_center_sk)] +ReadSchema: struct + +(121) Filter +Input [2]: [cc_call_center_sk#15, cc_county#16] +Condition : ((isnotnull(cc_county#16) AND (cc_county#16 = Williamson County)) AND isnotnull(cc_call_center_sk#15)) + +(122) Project +Output [1]: [cc_call_center_sk#15] +Input [2]: [cc_call_center_sk#15, cc_county#16] + +(123) Exchange +Input [1]: [cc_call_center_sk#15] +Arguments: hashpartitioning(cc_call_center_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(124) Sort +Input [1]: [cc_call_center_sk#15] +Arguments: [cc_call_center_sk#15 ASC NULLS FIRST], false, 0 + +(125) SortMergeJoin +Left keys [1]: [cs_call_center_sk#3] +Right keys [1]: [cc_call_center_sk#15] +Join type: Inner +Join condition: None + +(126) Project +Output [3]: [cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Input [5]: [cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7, cc_call_center_sk#15] + +(127) HashAggregate +Input [3]: [cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7] +Keys [1]: [cs_order_number#5] +Functions [2]: [partial_sum(UnscaledValue(cs_ext_ship_cost#6)), partial_sum(UnscaledValue(cs_net_profit#7))] +Aggregate Attributes [2]: [sum(UnscaledValue(cs_ext_ship_cost#6))#19, sum(UnscaledValue(cs_net_profit#7))#20] +Results [3]: [cs_order_number#5, sum#26, sum#27] + +(128) Exchange +Input [3]: [cs_order_number#5, sum#26, sum#27] +Arguments: hashpartitioning(cs_order_number#5, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(129) HashAggregate +Input [3]: [cs_order_number#5, sum#26, sum#27] +Keys [1]: [cs_order_number#5] +Functions [2]: [merge_sum(UnscaledValue(cs_ext_ship_cost#6)), merge_sum(UnscaledValue(cs_net_profit#7))] +Aggregate Attributes [2]: [sum(UnscaledValue(cs_ext_ship_cost#6))#19, sum(UnscaledValue(cs_net_profit#7))#20] +Results [3]: [cs_order_number#5, sum#26, sum#27] + +(130) HashAggregate +Input [3]: [cs_order_number#5, sum#26, sum#27] +Keys: [] +Functions [3]: [merge_sum(UnscaledValue(cs_ext_ship_cost#6)), merge_sum(UnscaledValue(cs_net_profit#7)), partial_count(distinct cs_order_number#5)] +Aggregate Attributes [3]: [sum(UnscaledValue(cs_ext_ship_cost#6))#19, sum(UnscaledValue(cs_net_profit#7))#20, count(cs_order_number#5)#22] +Results [3]: [sum#26, sum#27, count#28] + +(131) Exchange +Input [3]: [sum#26, sum#27, count#28] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=22] + +(132) HashAggregate +Input [3]: [sum#26, sum#27, count#28] +Keys: [] +Functions [3]: [sum(UnscaledValue(cs_ext_ship_cost#6)), sum(UnscaledValue(cs_net_profit#7)), count(distinct cs_order_number#5)] +Aggregate Attributes [3]: [sum(UnscaledValue(cs_ext_ship_cost#6))#19, sum(UnscaledValue(cs_net_profit#7))#20, count(cs_order_number#5)#22] +Results [3]: [count(cs_order_number#5)#22 AS order count #23, MakeDecimal(sum(UnscaledValue(cs_ext_ship_cost#6))#19,17,2) AS total shipping cost #24, MakeDecimal(sum(UnscaledValue(cs_net_profit#7))#20,17,2) AS total net profit #25] + +(133) AdaptiveSparkPlan +Output [3]: [order count #23, total shipping cost #24, total net profit #25] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q17.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q17.txt new file mode 100644 index 000000000..1023ecbac --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q17.txt @@ -0,0 +1,984 @@ +== Physical Plan == +AdaptiveSparkPlan (182) ++- == Final Plan == + NativeProject (116) + +- NativeHashAggregate (115) + +- InputAdapter (114) + +- AQEShuffleRead (113) + +- ShuffleQueryStage (112), Statistics(X) + +- NativeShuffleExchange (111) + +- NativeHashAggregate (110) + +- NativeProject (109) + +- NativeProject (108) + +- NativeSortMergeJoin Inner (107) + :- NativeSort (98) + : +- InputAdapter (97) + : +- AQEShuffleRead (96) + : +- ShuffleQueryStage (95), Statistics(X) + : +- NativeShuffleExchange (94) + : +- NativeProject (93) + : +- NativeSortMergeJoin Inner (92) + : :- NativeSort (83) + : : +- InputAdapter (82) + : : +- AQEShuffleRead (81) + : : +- ShuffleQueryStage (80), Statistics(X) + : : +- NativeShuffleExchange (79) + : : +- NativeProject (78) + : : +- NativeSortMergeJoin Inner (77) + : : :- NativeSort (70) + : : : +- InputAdapter (69) + : : : +- AQEShuffleRead (68) + : : : +- ShuffleQueryStage (67), Statistics(X) + : : : +- NativeShuffleExchange (66) + : : : +- NativeProject (65) + : : : +- NativeSortMergeJoin Inner (64) + : : : :- NativeSort (54) + : : : : +- InputAdapter (53) + : : : : +- AQEShuffleRead (52) + : : : : +- ShuffleQueryStage (51), Statistics(X) + : : : : +- NativeShuffleExchange (50) + : : : : +- NativeProject (49) + : : : : +- NativeSortMergeJoin Inner (48) + : : : : :- NativeSort (38) + : : : : : +- InputAdapter (37) + : : : : : +- AQEShuffleRead (36) + : : : : : +- ShuffleQueryStage (35), Statistics(X) + : : : : : +- NativeShuffleExchange (34) + : : : : : +- NativeProject (33) + : : : : : +- NativeSortMergeJoin Inner (32) + : : : : : :- NativeSort (23) + : : : : : : +- InputAdapter (22) + : : : : : : +- AQEShuffleRead (21) + : : : : : : +- ShuffleQueryStage (20), Statistics(X) + : : : : : : +- NativeShuffleExchange (19) + : : : : : : +- NativeProject (18) + : : : : : : +- NativeSortMergeJoin Inner (17) + : : : : : : :- NativeSort (8) + : : : : : : : +- InputAdapter (7) + : : : : : : : +- AQEShuffleRead (6) + : : : : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : : : : +- NativeShuffleExchange (4) + : : : : : : : +- NativeFilter (3) + : : : : : : : +- InputAdapter (2) + : : : : : : : +- NativeParquetScan (1) + : : : : : : +- NativeSort (16) + : : : : : : +- InputAdapter (15) + : : : : : : +- AQEShuffleRead (14) + : : : : : : +- ShuffleQueryStage (13), Statistics(X) + : : : : : : +- NativeShuffleExchange (12) + : : : : : : +- NativeFilter (11) + : : : : : : +- InputAdapter (10) + : : : : : : +- NativeParquetScan (9) + : : : : : +- NativeSort (31) + : : : : : +- InputAdapter (30) + : : : : : +- AQEShuffleRead (29) + : : : : : +- ShuffleQueryStage (28), Statistics(X) + : : : : : +- NativeShuffleExchange (27) + : : : : : +- NativeFilter (26) + : : : : : +- InputAdapter (25) + : : : : : +- NativeParquetScan (24) + : : : : +- NativeSort (47) + : : : : +- InputAdapter (46) + : : : : +- AQEShuffleRead (45) + : : : : +- ShuffleQueryStage (44), Statistics(X) + : : : : +- NativeShuffleExchange (43) + : : : : +- NativeProject (42) + : : : : +- NativeFilter (41) + : : : : +- InputAdapter (40) + : : : : +- NativeParquetScan (39) + : : : +- NativeSort (63) + : : : +- InputAdapter (62) + : : : +- AQEShuffleRead (61) + : : : +- ShuffleQueryStage (60), Statistics(X) + : : : +- NativeShuffleExchange (59) + : : : +- NativeProject (58) + : : : +- NativeFilter (57) + : : : +- InputAdapter (56) + : : : +- NativeParquetScan (55) + : : +- NativeSort (76) + : : +- InputAdapter (75) + : : +- InputAdapter (74) + : : +- AQEShuffleRead (73) + : : +- ShuffleQueryStage (72), Statistics(X) + : : +- ReusedExchange (71) + : +- NativeSort (91) + : +- InputAdapter (90) + : +- AQEShuffleRead (89) + : +- ShuffleQueryStage (88), Statistics(X) + : +- NativeShuffleExchange (87) + : +- NativeFilter (86) + : +- InputAdapter (85) + : +- NativeParquetScan (84) + +- NativeSort (106) + +- InputAdapter (105) + +- AQEShuffleRead (104) + +- ShuffleQueryStage (103), Statistics(X) + +- NativeShuffleExchange (102) + +- NativeFilter (101) + +- InputAdapter (100) + +- NativeParquetScan (99) ++- == Initial Plan == + TakeOrderedAndProject (181) + +- HashAggregate (180) + +- Exchange (179) + +- HashAggregate (178) + +- Project (177) + +- SortMergeJoin Inner (176) + :- Sort (171) + : +- Exchange (170) + : +- Project (169) + : +- SortMergeJoin Inner (168) + : :- Sort (163) + : : +- Exchange (162) + : : +- Project (161) + : : +- SortMergeJoin Inner (160) + : : :- Sort (154) + : : : +- Exchange (153) + : : : +- Project (152) + : : : +- SortMergeJoin Inner (151) + : : : :- Sort (145) + : : : : +- Exchange (144) + : : : : +- Project (143) + : : : : +- SortMergeJoin Inner (142) + : : : : :- Sort (136) + : : : : : +- Exchange (135) + : : : : : +- Project (134) + : : : : : +- SortMergeJoin Inner (133) + : : : : : :- Sort (128) + : : : : : : +- Exchange (127) + : : : : : : +- Project (126) + : : : : : : +- SortMergeJoin Inner (125) + : : : : : : :- Sort (120) + : : : : : : : +- Exchange (119) + : : : : : : : +- Filter (118) + : : : : : : : +- Scan parquet (117) + : : : : : : +- Sort (124) + : : : : : : +- Exchange (123) + : : : : : : +- Filter (122) + : : : : : : +- Scan parquet (121) + : : : : : +- Sort (132) + : : : : : +- Exchange (131) + : : : : : +- Filter (130) + : : : : : +- Scan parquet (129) + : : : : +- Sort (141) + : : : : +- Exchange (140) + : : : : +- Project (139) + : : : : +- Filter (138) + : : : : +- Scan parquet (137) + : : : +- Sort (150) + : : : +- Exchange (149) + : : : +- Project (148) + : : : +- Filter (147) + : : : +- Scan parquet (146) + : : +- Sort (159) + : : +- Exchange (158) + : : +- Project (157) + : : +- Filter (156) + : : +- Scan parquet (155) + : +- Sort (167) + : +- Exchange (166) + : +- Filter (165) + : +- Scan parquet (164) + +- Sort (175) + +- Exchange (174) + +- Filter (173) + +- Scan parquet (172) + + +(117) Scan parquet +Output [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_ticket_number#5, ss_quantity#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk), IsNotNull(ss_item_sk), IsNotNull(ss_ticket_number), IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_ticket_number#5, ss_quantity#6] +Arguments: [#1, #2, #3, #4, #5, #6] + +(3) NativeFilter +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Condition : ((((isnotnull(ss_customer_sk#3) AND isnotnull(ss_item_sk#2)) AND isnotnull(ss_ticket_number#5)) AND isnotnull(ss_sold_date_sk#1)) AND isnotnull(ss_store_sk#4)) + +(4) NativeShuffleExchange +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Arguments: hashpartitioning(ss_customer_sk#3, ss_item_sk#2, ss_ticket_number#5, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Arguments: X + +(6) AQEShuffleRead +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Arguments: coalesced + +(7) InputAdapter +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] + +(8) NativeSort +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Arguments: [ss_customer_sk#3 ASC NULLS FIRST, ss_item_sk#2 ASC NULLS FIRST, ss_ticket_number#5 ASC NULLS FIRST], false + +(121) Scan parquet +Output [5]: [sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_ticket_number#10, sr_return_quantity#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_customer_sk), IsNotNull(sr_item_sk), IsNotNull(sr_ticket_number), IsNotNull(sr_returned_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [5]: [sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_ticket_number#10, sr_return_quantity#11] +Arguments: [#7, #8, #9, #10, #11] + +(11) NativeFilter +Input [5]: [#7#7, #8#8, #9#9, #10#10, #11#11] +Condition : (((isnotnull(sr_customer_sk#9) AND isnotnull(sr_item_sk#8)) AND isnotnull(sr_ticket_number#10)) AND isnotnull(sr_returned_date_sk#7)) + +(12) NativeShuffleExchange +Input [5]: [#7#7, #8#8, #9#9, #10#10, #11#11] +Arguments: hashpartitioning(sr_customer_sk#9, sr_item_sk#8, sr_ticket_number#10, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [5]: [#7#7, #8#8, #9#9, #10#10, #11#11] +Arguments: X + +(14) AQEShuffleRead +Input [5]: [#7#7, #8#8, #9#9, #10#10, #11#11] +Arguments: coalesced + +(15) InputAdapter +Input [5]: [#7#7, #8#8, #9#9, #10#10, #11#11] + +(16) NativeSort +Input [5]: [#7#7, #8#8, #9#9, #10#10, #11#11] +Arguments: [sr_customer_sk#9 ASC NULLS FIRST, sr_item_sk#8 ASC NULLS FIRST, sr_ticket_number#10 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [3]: [ss_customer_sk#3, ss_item_sk#2, ss_ticket_number#5] +Right keys [3]: [sr_customer_sk#9, sr_item_sk#8, sr_ticket_number#10] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_return_quantity#11] +Input [11]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9, #10#10, #11#11] + +(19) NativeShuffleExchange +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_return_quantity#11] +Arguments: hashpartitioning(sr_customer_sk#9, sr_item_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_return_quantity#11] +Arguments: X + +(21) AQEShuffleRead +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_return_quantity#11] +Arguments: coalesced + +(22) InputAdapter +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_return_quantity#11] + +(23) NativeSort +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_return_quantity#11] +Arguments: [sr_customer_sk#9 ASC NULLS FIRST, sr_item_sk#8 ASC NULLS FIRST], false + +(129) Scan parquet +Output [4]: [cs_sold_date_sk#12, cs_bill_customer_sk#13, cs_item_sk#14, cs_quantity#15] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_bill_customer_sk), IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(25) InputAdapter +Input [4]: [cs_sold_date_sk#12, cs_bill_customer_sk#13, cs_item_sk#14, cs_quantity#15] +Arguments: [#12, #13, #14, #15] + +(26) NativeFilter +Input [4]: [#12#12, #13#13, #14#14, #15#15] +Condition : ((isnotnull(cs_bill_customer_sk#13) AND isnotnull(cs_item_sk#14)) AND isnotnull(cs_sold_date_sk#12)) + +(27) NativeShuffleExchange +Input [4]: [#12#12, #13#13, #14#14, #15#15] +Arguments: hashpartitioning(cs_bill_customer_sk#13, cs_item_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(28) ShuffleQueryStage +Output [4]: [#12#12, #13#13, #14#14, #15#15] +Arguments: X + +(29) AQEShuffleRead +Input [4]: [#12#12, #13#13, #14#14, #15#15] +Arguments: coalesced + +(30) InputAdapter +Input [4]: [#12#12, #13#13, #14#14, #15#15] + +(31) NativeSort +Input [4]: [#12#12, #13#13, #14#14, #15#15] +Arguments: [cs_bill_customer_sk#13 ASC NULLS FIRST, cs_item_sk#14 ASC NULLS FIRST], false + +(32) NativeSortMergeJoin +Left keys [2]: [sr_customer_sk#9, sr_item_sk#8] +Right keys [2]: [cs_bill_customer_sk#13, cs_item_sk#14] +Join type: Inner +Join condition: None + +(33) NativeProject +Output [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Input [12]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_return_quantity#11, #12#12, #13#13, #14#14, #15#15] + +(34) NativeShuffleExchange +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(35) ShuffleQueryStage +Output [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: X + +(36) AQEShuffleRead +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: coalesced + +(37) InputAdapter +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] + +(38) NativeSort +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(137) Scan parquet +Output [2]: [d_date_sk#16, d_quarter_name#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_quarter_name), EqualTo(d_quarter_name,2001Q1), IsNotNull(d_date_sk)] +ReadSchema: struct + +(40) InputAdapter +Input [2]: [d_date_sk#16, d_quarter_name#17] +Arguments: [#16, #17] + +(41) NativeFilter +Input [2]: [#16#16, #17#17] +Condition : ((isnotnull(d_quarter_name#17) AND (d_quarter_name#17 = 2001Q1)) AND isnotnull(d_date_sk#16)) + +(42) NativeProject +Output [1]: [d_date_sk#16] +Input [2]: [#16#16, #17#17] + +(43) NativeShuffleExchange +Input [1]: [d_date_sk#16] +Arguments: hashpartitioning(d_date_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) ShuffleQueryStage +Output [1]: [d_date_sk#16] +Arguments: X + +(45) AQEShuffleRead +Input [1]: [d_date_sk#16] +Arguments: coalesced + +(46) InputAdapter +Input [1]: [d_date_sk#16] + +(47) NativeSort +Input [1]: [d_date_sk#16] +Arguments: [d_date_sk#16 ASC NULLS FIRST], false + +(48) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#16] +Join type: Inner +Join condition: None + +(49) NativeProject +Output [7]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Input [9]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15, d_date_sk#16] + +(50) NativeShuffleExchange +Input [7]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: hashpartitioning(sr_returned_date_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(51) ShuffleQueryStage +Output [7]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: X + +(52) AQEShuffleRead +Input [7]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: coalesced + +(53) InputAdapter +Input [7]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] + +(54) NativeSort +Input [7]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: [sr_returned_date_sk#7 ASC NULLS FIRST], false + +(146) Scan parquet +Output [2]: [d_date_sk#18, d_quarter_name#19] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(d_quarter_name, [2001Q1,2001Q2,2001Q3]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(56) InputAdapter +Input [2]: [d_date_sk#18, d_quarter_name#19] +Arguments: [#18, #19] + +(57) NativeFilter +Input [2]: [#18#18, #19#19] +Condition : (d_quarter_name#19 IN (2001Q1,2001Q2,2001Q3) AND isnotnull(d_date_sk#18)) + +(58) NativeProject +Output [1]: [d_date_sk#18] +Input [2]: [#18#18, #19#19] + +(59) NativeShuffleExchange +Input [1]: [d_date_sk#18] +Arguments: hashpartitioning(d_date_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(60) ShuffleQueryStage +Output [1]: [d_date_sk#18] +Arguments: X + +(61) AQEShuffleRead +Input [1]: [d_date_sk#18] +Arguments: coalesced + +(62) InputAdapter +Input [1]: [d_date_sk#18] + +(63) NativeSort +Input [1]: [d_date_sk#18] +Arguments: [d_date_sk#18 ASC NULLS FIRST], false + +(64) NativeSortMergeJoin +Left keys [1]: [sr_returned_date_sk#7] +Right keys [1]: [d_date_sk#18] +Join type: Inner +Join condition: None + +(65) NativeProject +Output [6]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Input [8]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15, d_date_sk#18] + +(66) NativeShuffleExchange +Input [6]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: hashpartitioning(cs_sold_date_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(67) ShuffleQueryStage +Output [6]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: X + +(68) AQEShuffleRead +Input [6]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: coalesced + +(69) InputAdapter +Input [6]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] + +(70) NativeSort +Input [6]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: [cs_sold_date_sk#12 ASC NULLS FIRST], false + +(71) ReusedExchange [Reuses operator id: 59] +Output [1]: [d_date_sk#20] + +(72) ShuffleQueryStage +Output [1]: [d_date_sk#20] +Arguments: X + +(73) AQEShuffleRead +Input [1]: [d_date_sk#20] +Arguments: coalesced + +(74) InputAdapter +Input [1]: [d_date_sk#20] +Arguments: [#20] + +(75) InputAdapter +Input [1]: [#20#20] + +(76) NativeSort +Input [1]: [#20#20] +Arguments: [d_date_sk#20 ASC NULLS FIRST], false + +(77) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#12] +Right keys [1]: [d_date_sk#20] +Join type: Inner +Join condition: None + +(78) NativeProject +Output [5]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_quantity#15] +Input [7]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15, #20#20] + +(79) NativeShuffleExchange +Input [5]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_quantity#15] +Arguments: hashpartitioning(ss_store_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(80) ShuffleQueryStage +Output [5]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_quantity#15] +Arguments: X + +(81) AQEShuffleRead +Input [5]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_quantity#15] +Arguments: coalesced + +(82) InputAdapter +Input [5]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_quantity#15] + +(83) NativeSort +Input [5]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_quantity#15] +Arguments: [ss_store_sk#4 ASC NULLS FIRST], false + +(164) Scan parquet +Output [2]: [s_store_sk#21, s_state#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(85) InputAdapter +Input [2]: [s_store_sk#21, s_state#22] +Arguments: [#21, #22] + +(86) NativeFilter +Input [2]: [#21#21, #22#22] +Condition : isnotnull(s_store_sk#21) + +(87) NativeShuffleExchange +Input [2]: [#21#21, #22#22] +Arguments: hashpartitioning(s_store_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(88) ShuffleQueryStage +Output [2]: [#21#21, #22#22] +Arguments: X + +(89) AQEShuffleRead +Input [2]: [#21#21, #22#22] +Arguments: coalesced + +(90) InputAdapter +Input [2]: [#21#21, #22#22] + +(91) NativeSort +Input [2]: [#21#21, #22#22] +Arguments: [s_store_sk#21 ASC NULLS FIRST], false + +(92) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#4] +Right keys [1]: [s_store_sk#21] +Join type: Inner +Join condition: None + +(93) NativeProject +Output [5]: [ss_item_sk#2, ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_state#22] +Input [7]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_quantity#15, #21#21, #22#22] + +(94) NativeShuffleExchange +Input [5]: [ss_item_sk#2, ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_state#22] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(95) ShuffleQueryStage +Output [5]: [ss_item_sk#2, ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_state#22] +Arguments: X + +(96) AQEShuffleRead +Input [5]: [ss_item_sk#2, ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_state#22] +Arguments: coalesced + +(97) InputAdapter +Input [5]: [ss_item_sk#2, ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_state#22] + +(98) NativeSort +Input [5]: [ss_item_sk#2, ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_state#22] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false + +(172) Scan parquet +Output [3]: [i_item_sk#23, i_item_id#24, i_item_desc#25] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(100) InputAdapter +Input [3]: [i_item_sk#23, i_item_id#24, i_item_desc#25] +Arguments: [#23, #24, #25] + +(101) NativeFilter +Input [3]: [#23#23, #24#24, #25#25] +Condition : isnotnull(i_item_sk#23) + +(102) NativeShuffleExchange +Input [3]: [#23#23, #24#24, #25#25] +Arguments: hashpartitioning(i_item_sk#23, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(103) ShuffleQueryStage +Output [3]: [#23#23, #24#24, #25#25] +Arguments: X + +(104) AQEShuffleRead +Input [3]: [#23#23, #24#24, #25#25] +Arguments: coalesced + +(105) InputAdapter +Input [3]: [#23#23, #24#24, #25#25] + +(106) NativeSort +Input [3]: [#23#23, #24#24, #25#25] +Arguments: [i_item_sk#23 ASC NULLS FIRST], false + +(107) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#23] +Join type: Inner +Join condition: None + +(108) NativeProject +Output [6]: [ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_state#22, i_item_id#24, i_item_desc#25] +Input [8]: [ss_item_sk#2, ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_state#22, #23#23, #24#24, #25#25] + +(109) NativeProject +Output [9]: [i_item_id#24 AS i_item_id#24, i_item_desc#25 AS i_item_desc#25, s_state#22 AS s_state#22, ss_quantity#6 AS _c3#26, cast(ss_quantity#6 as double) AS _c4#27, sr_return_quantity#11 AS _c5#28, cast(sr_return_quantity#11 as double) AS _c6#29, cs_quantity#15 AS _c7#30, cast(cs_quantity#15 as double) AS _c8#31] +Input [6]: [ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_state#22, i_item_id#24, i_item_desc#25] + +(110) NativeHashAggregate +Input [9]: [i_item_id#24, i_item_desc#25, s_state#22, _c3#26, _c4#27, _c5#28, _c6#29, _c7#30, _c8#31] +Keys [3]: [i_item_id#24, i_item_desc#25, s_state#22] +Functions [9]: [partial_count(_c3#26), partial_avg(_c3#26), partial_stddev_samp(_c4#27), partial_count(_c5#28), partial_avg(_c5#28), partial_stddev_samp(_c6#29), partial_count(_c7#30), partial_avg(_c7#30), partial_stddev_samp(_c8#31)] +Aggregate Attributes [18]: [count#32, sum#33, count#34, n#35, avg#36, m2#37, count#38, sum#39, count#40, n#41, avg#42, m2#43, count#44, sum#45, count#46, n#47, avg#48, m2#49] +Results [4]: [i_item_id#24, i_item_desc#25, s_state#22, #50#50] + +(111) NativeShuffleExchange +Input [4]: [i_item_id#24, i_item_desc#25, s_state#22, #50#50] +Arguments: hashpartitioning(i_item_id#24, i_item_desc#25, s_state#22, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(112) ShuffleQueryStage +Output [4]: [i_item_id#24, i_item_desc#25, s_state#22, #50#50] +Arguments: X + +(113) AQEShuffleRead +Input [4]: [i_item_id#24, i_item_desc#25, s_state#22, #50#50] +Arguments: coalesced + +(114) InputAdapter +Input [4]: [i_item_id#24, i_item_desc#25, s_state#22, #50#50] + +(115) NativeHashAggregate +Input [4]: [i_item_id#24, i_item_desc#25, s_state#22, #50#50] +Keys [3]: [i_item_id#24, i_item_desc#25, s_state#22] +Functions [9]: [count(ss_quantity#6), avg(ss_quantity#6), stddev_samp(cast(ss_quantity#6 as double)), count(sr_return_quantity#11), avg(sr_return_quantity#11), stddev_samp(cast(sr_return_quantity#11 as double)), count(cs_quantity#15), avg(cs_quantity#15), stddev_samp(cast(cs_quantity#15 as double))] +Aggregate Attributes [9]: [count(ss_quantity#6)#51, avg(ss_quantity#6)#52, stddev_samp(cast(ss_quantity#6 as double))#53, count(sr_return_quantity#11)#54, avg(sr_return_quantity#11)#55, stddev_samp(cast(sr_return_quantity#11 as double))#56, count(cs_quantity#15)#57, avg(cs_quantity#15)#58, stddev_samp(cast(cs_quantity#15 as double))#59] +Results [12]: [i_item_id#24, i_item_desc#25, s_state#22, count(ss_quantity#6)#51, avg(ss_quantity#6)#52, stddev_samp(cast(ss_quantity#6 as double))#53, count(sr_return_quantity#11)#54, avg(sr_return_quantity#11)#55, stddev_samp(cast(sr_return_quantity#11 as double))#56, count(cs_quantity#15)#57, avg(cs_quantity#15)#58, stddev_samp(cast(cs_quantity#15 as double))#59] + +(116) NativeProject +Output [15]: [i_item_id#24, i_item_desc#25, s_state#22, count(ss_quantity#6)#51 AS store_sales_quantitycount#60, avg(ss_quantity#6)#52 AS store_sales_quantityave#61, stddev_samp(cast(ss_quantity#6 as double))#53 AS store_sales_quantitystdev#62, (stddev_samp(cast(ss_quantity#6 as double))#53 / avg(ss_quantity#6)#52) AS store_sales_quantitycov#63, count(sr_return_quantity#11)#54 AS as_store_returns_quantitycount#64, avg(sr_return_quantity#11)#55 AS as_store_returns_quantityave#65, stddev_samp(cast(sr_return_quantity#11 as double))#56 AS as_store_returns_quantitystdev#66, (stddev_samp(cast(sr_return_quantity#11 as double))#56 / avg(sr_return_quantity#11)#55) AS store_returns_quantitycov#67, count(cs_quantity#15)#57 AS catalog_sales_quantitycount#68, avg(cs_quantity#15)#58 AS catalog_sales_quantityave#69, (stddev_samp(cast(cs_quantity#15 as double))#59 / avg(cs_quantity#15)#58) AS catalog_sales_quantitystdev#70, (stddev_samp(cast(cs_quantity#15 as double))#59 / avg(cs_quantity#15)#58) AS catalog_sales_quantitycov#71] +Input [12]: [i_item_id#24, i_item_desc#25, s_state#22, count(ss_quantity#6)#51, avg(ss_quantity#6)#52, stddev_samp(cast(ss_quantity#6 as double))#53, count(sr_return_quantity#11)#54, avg(sr_return_quantity#11)#55, stddev_samp(cast(sr_return_quantity#11 as double))#56, count(cs_quantity#15)#57, avg(cs_quantity#15)#58, stddev_samp(cast(cs_quantity#15 as double))#59] + +(117) Scan parquet +Output [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_ticket_number#5, ss_quantity#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk), IsNotNull(ss_item_sk), IsNotNull(ss_ticket_number), IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(118) Filter +Input [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_ticket_number#5, ss_quantity#6] +Condition : ((((isnotnull(ss_customer_sk#3) AND isnotnull(ss_item_sk#2)) AND isnotnull(ss_ticket_number#5)) AND isnotnull(ss_sold_date_sk#1)) AND isnotnull(ss_store_sk#4)) + +(119) Exchange +Input [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_ticket_number#5, ss_quantity#6] +Arguments: hashpartitioning(ss_customer_sk#3, ss_item_sk#2, ss_ticket_number#5, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(120) Sort +Input [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_ticket_number#5, ss_quantity#6] +Arguments: [ss_customer_sk#3 ASC NULLS FIRST, ss_item_sk#2 ASC NULLS FIRST, ss_ticket_number#5 ASC NULLS FIRST], false, 0 + +(121) Scan parquet +Output [5]: [sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_ticket_number#10, sr_return_quantity#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_customer_sk), IsNotNull(sr_item_sk), IsNotNull(sr_ticket_number), IsNotNull(sr_returned_date_sk)] +ReadSchema: struct + +(122) Filter +Input [5]: [sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_ticket_number#10, sr_return_quantity#11] +Condition : (((isnotnull(sr_customer_sk#9) AND isnotnull(sr_item_sk#8)) AND isnotnull(sr_ticket_number#10)) AND isnotnull(sr_returned_date_sk#7)) + +(123) Exchange +Input [5]: [sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_ticket_number#10, sr_return_quantity#11] +Arguments: hashpartitioning(sr_customer_sk#9, sr_item_sk#8, sr_ticket_number#10, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(124) Sort +Input [5]: [sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_ticket_number#10, sr_return_quantity#11] +Arguments: [sr_customer_sk#9 ASC NULLS FIRST, sr_item_sk#8 ASC NULLS FIRST, sr_ticket_number#10 ASC NULLS FIRST], false, 0 + +(125) SortMergeJoin +Left keys [3]: [ss_customer_sk#3, ss_item_sk#2, ss_ticket_number#5] +Right keys [3]: [sr_customer_sk#9, sr_item_sk#8, sr_ticket_number#10] +Join type: Inner +Join condition: None + +(126) Project +Output [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_return_quantity#11] +Input [11]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_ticket_number#5, ss_quantity#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_ticket_number#10, sr_return_quantity#11] + +(127) Exchange +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_return_quantity#11] +Arguments: hashpartitioning(sr_customer_sk#9, sr_item_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(128) Sort +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_return_quantity#11] +Arguments: [sr_customer_sk#9 ASC NULLS FIRST, sr_item_sk#8 ASC NULLS FIRST], false, 0 + +(129) Scan parquet +Output [4]: [cs_sold_date_sk#12, cs_bill_customer_sk#13, cs_item_sk#14, cs_quantity#15] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_bill_customer_sk), IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(130) Filter +Input [4]: [cs_sold_date_sk#12, cs_bill_customer_sk#13, cs_item_sk#14, cs_quantity#15] +Condition : ((isnotnull(cs_bill_customer_sk#13) AND isnotnull(cs_item_sk#14)) AND isnotnull(cs_sold_date_sk#12)) + +(131) Exchange +Input [4]: [cs_sold_date_sk#12, cs_bill_customer_sk#13, cs_item_sk#14, cs_quantity#15] +Arguments: hashpartitioning(cs_bill_customer_sk#13, cs_item_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(132) Sort +Input [4]: [cs_sold_date_sk#12, cs_bill_customer_sk#13, cs_item_sk#14, cs_quantity#15] +Arguments: [cs_bill_customer_sk#13 ASC NULLS FIRST, cs_item_sk#14 ASC NULLS FIRST], false, 0 + +(133) SortMergeJoin +Left keys [2]: [sr_customer_sk#9, sr_item_sk#8] +Right keys [2]: [cs_bill_customer_sk#13, cs_item_sk#14] +Join type: Inner +Join condition: None + +(134) Project +Output [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Input [12]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_return_quantity#11, cs_sold_date_sk#12, cs_bill_customer_sk#13, cs_item_sk#14, cs_quantity#15] + +(135) Exchange +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(136) Sort +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(137) Scan parquet +Output [2]: [d_date_sk#16, d_quarter_name#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_quarter_name), EqualTo(d_quarter_name,2001Q1), IsNotNull(d_date_sk)] +ReadSchema: struct + +(138) Filter +Input [2]: [d_date_sk#16, d_quarter_name#17] +Condition : ((isnotnull(d_quarter_name#17) AND (d_quarter_name#17 = 2001Q1)) AND isnotnull(d_date_sk#16)) + +(139) Project +Output [1]: [d_date_sk#16] +Input [2]: [d_date_sk#16, d_quarter_name#17] + +(140) Exchange +Input [1]: [d_date_sk#16] +Arguments: hashpartitioning(d_date_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(141) Sort +Input [1]: [d_date_sk#16] +Arguments: [d_date_sk#16 ASC NULLS FIRST], false, 0 + +(142) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#16] +Join type: Inner +Join condition: None + +(143) Project +Output [7]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Input [9]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15, d_date_sk#16] + +(144) Exchange +Input [7]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: hashpartitioning(sr_returned_date_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(145) Sort +Input [7]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: [sr_returned_date_sk#7 ASC NULLS FIRST], false, 0 + +(146) Scan parquet +Output [2]: [d_date_sk#18, d_quarter_name#19] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(d_quarter_name, [2001Q1,2001Q2,2001Q3]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(147) Filter +Input [2]: [d_date_sk#18, d_quarter_name#19] +Condition : (d_quarter_name#19 IN (2001Q1,2001Q2,2001Q3) AND isnotnull(d_date_sk#18)) + +(148) Project +Output [1]: [d_date_sk#18] +Input [2]: [d_date_sk#18, d_quarter_name#19] + +(149) Exchange +Input [1]: [d_date_sk#18] +Arguments: hashpartitioning(d_date_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(150) Sort +Input [1]: [d_date_sk#18] +Arguments: [d_date_sk#18 ASC NULLS FIRST], false, 0 + +(151) SortMergeJoin +Left keys [1]: [sr_returned_date_sk#7] +Right keys [1]: [d_date_sk#18] +Join type: Inner +Join condition: None + +(152) Project +Output [6]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Input [8]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15, d_date_sk#18] + +(153) Exchange +Input [6]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: hashpartitioning(cs_sold_date_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(154) Sort +Input [6]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: [cs_sold_date_sk#12 ASC NULLS FIRST], false, 0 + +(155) Scan parquet +Output [2]: [d_date_sk#20, d_quarter_name#72] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(d_quarter_name, [2001Q1,2001Q2,2001Q3]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(156) Filter +Input [2]: [d_date_sk#20, d_quarter_name#72] +Condition : (d_quarter_name#72 IN (2001Q1,2001Q2,2001Q3) AND isnotnull(d_date_sk#20)) + +(157) Project +Output [1]: [d_date_sk#20] +Input [2]: [d_date_sk#20, d_quarter_name#72] + +(158) Exchange +Input [1]: [d_date_sk#20] +Arguments: hashpartitioning(d_date_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(159) Sort +Input [1]: [d_date_sk#20] +Arguments: [d_date_sk#20 ASC NULLS FIRST], false, 0 + +(160) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#12] +Right keys [1]: [d_date_sk#20] +Join type: Inner +Join condition: None + +(161) Project +Output [5]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_quantity#15] +Input [7]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15, d_date_sk#20] + +(162) Exchange +Input [5]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_quantity#15] +Arguments: hashpartitioning(ss_store_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(163) Sort +Input [5]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_quantity#15] +Arguments: [ss_store_sk#4 ASC NULLS FIRST], false, 0 + +(164) Scan parquet +Output [2]: [s_store_sk#21, s_state#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(165) Filter +Input [2]: [s_store_sk#21, s_state#22] +Condition : isnotnull(s_store_sk#21) + +(166) Exchange +Input [2]: [s_store_sk#21, s_state#22] +Arguments: hashpartitioning(s_store_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(167) Sort +Input [2]: [s_store_sk#21, s_state#22] +Arguments: [s_store_sk#21 ASC NULLS FIRST], false, 0 + +(168) SortMergeJoin +Left keys [1]: [ss_store_sk#4] +Right keys [1]: [s_store_sk#21] +Join type: Inner +Join condition: None + +(169) Project +Output [5]: [ss_item_sk#2, ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_state#22] +Input [7]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_store_sk#21, s_state#22] + +(170) Exchange +Input [5]: [ss_item_sk#2, ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_state#22] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(171) Sort +Input [5]: [ss_item_sk#2, ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_state#22] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false, 0 + +(172) Scan parquet +Output [3]: [i_item_sk#23, i_item_id#24, i_item_desc#25] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(173) Filter +Input [3]: [i_item_sk#23, i_item_id#24, i_item_desc#25] +Condition : isnotnull(i_item_sk#23) + +(174) Exchange +Input [3]: [i_item_sk#23, i_item_id#24, i_item_desc#25] +Arguments: hashpartitioning(i_item_sk#23, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(175) Sort +Input [3]: [i_item_sk#23, i_item_id#24, i_item_desc#25] +Arguments: [i_item_sk#23 ASC NULLS FIRST], false, 0 + +(176) SortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#23] +Join type: Inner +Join condition: None + +(177) Project +Output [6]: [ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_state#22, i_item_id#24, i_item_desc#25] +Input [8]: [ss_item_sk#2, ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_state#22, i_item_sk#23, i_item_id#24, i_item_desc#25] + +(178) HashAggregate +Input [6]: [ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_state#22, i_item_id#24, i_item_desc#25] +Keys [3]: [i_item_id#24, i_item_desc#25, s_state#22] +Functions [9]: [partial_count(ss_quantity#6), partial_avg(ss_quantity#6), partial_stddev_samp(cast(ss_quantity#6 as double)), partial_count(sr_return_quantity#11), partial_avg(sr_return_quantity#11), partial_stddev_samp(cast(sr_return_quantity#11 as double)), partial_count(cs_quantity#15), partial_avg(cs_quantity#15), partial_stddev_samp(cast(cs_quantity#15 as double))] +Aggregate Attributes [18]: [count#32, sum#33, count#34, n#35, avg#36, m2#37, count#38, sum#39, count#40, n#41, avg#42, m2#43, count#44, sum#45, count#46, n#47, avg#48, m2#49] +Results [21]: [i_item_id#24, i_item_desc#25, s_state#22, count#73, sum#74, count#75, n#76, avg#77, m2#78, count#79, sum#80, count#81, n#82, avg#83, m2#84, count#85, sum#86, count#87, n#88, avg#89, m2#90] + +(179) Exchange +Input [21]: [i_item_id#24, i_item_desc#25, s_state#22, count#73, sum#74, count#75, n#76, avg#77, m2#78, count#79, sum#80, count#81, n#82, avg#83, m2#84, count#85, sum#86, count#87, n#88, avg#89, m2#90] +Arguments: hashpartitioning(i_item_id#24, i_item_desc#25, s_state#22, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(180) HashAggregate +Input [21]: [i_item_id#24, i_item_desc#25, s_state#22, count#73, sum#74, count#75, n#76, avg#77, m2#78, count#79, sum#80, count#81, n#82, avg#83, m2#84, count#85, sum#86, count#87, n#88, avg#89, m2#90] +Keys [3]: [i_item_id#24, i_item_desc#25, s_state#22] +Functions [9]: [count(ss_quantity#6), avg(ss_quantity#6), stddev_samp(cast(ss_quantity#6 as double)), count(sr_return_quantity#11), avg(sr_return_quantity#11), stddev_samp(cast(sr_return_quantity#11 as double)), count(cs_quantity#15), avg(cs_quantity#15), stddev_samp(cast(cs_quantity#15 as double))] +Aggregate Attributes [9]: [count(ss_quantity#6)#51, avg(ss_quantity#6)#52, stddev_samp(cast(ss_quantity#6 as double))#53, count(sr_return_quantity#11)#54, avg(sr_return_quantity#11)#55, stddev_samp(cast(sr_return_quantity#11 as double))#56, count(cs_quantity#15)#57, avg(cs_quantity#15)#58, stddev_samp(cast(cs_quantity#15 as double))#59] +Results [15]: [i_item_id#24, i_item_desc#25, s_state#22, count(ss_quantity#6)#51 AS store_sales_quantitycount#60, avg(ss_quantity#6)#52 AS store_sales_quantityave#61, stddev_samp(cast(ss_quantity#6 as double))#53 AS store_sales_quantitystdev#62, (stddev_samp(cast(ss_quantity#6 as double))#53 / avg(ss_quantity#6)#52) AS store_sales_quantitycov#63, count(sr_return_quantity#11)#54 AS as_store_returns_quantitycount#64, avg(sr_return_quantity#11)#55 AS as_store_returns_quantityave#65, stddev_samp(cast(sr_return_quantity#11 as double))#56 AS as_store_returns_quantitystdev#66, (stddev_samp(cast(sr_return_quantity#11 as double))#56 / avg(sr_return_quantity#11)#55) AS store_returns_quantitycov#67, count(cs_quantity#15)#57 AS catalog_sales_quantitycount#68, avg(cs_quantity#15)#58 AS catalog_sales_quantityave#69, (stddev_samp(cast(cs_quantity#15 as double))#59 / avg(cs_quantity#15)#58) AS catalog_sales_quantitystdev#70, (stddev_samp(cast(cs_quantity#15 as double))#59 / avg(cs_quantity#15)#58) AS catalog_sales_quantitycov#71] + +(181) TakeOrderedAndProject +Input [15]: [i_item_id#24, i_item_desc#25, s_state#22, store_sales_quantitycount#60, store_sales_quantityave#61, store_sales_quantitystdev#62, store_sales_quantitycov#63, as_store_returns_quantitycount#64, as_store_returns_quantityave#65, as_store_returns_quantitystdev#66, store_returns_quantitycov#67, catalog_sales_quantitycount#68, catalog_sales_quantityave#69, catalog_sales_quantitystdev#70, catalog_sales_quantitycov#71] +Arguments: X, [i_item_id#24 ASC NULLS FIRST, i_item_desc#25 ASC NULLS FIRST, s_state#22 ASC NULLS FIRST], [i_item_id#24, i_item_desc#25, s_state#22, store_sales_quantitycount#60, store_sales_quantityave#61, store_sales_quantitystdev#62, store_sales_quantitycov#63, as_store_returns_quantitycount#64, as_store_returns_quantityave#65, as_store_returns_quantitystdev#66, store_returns_quantitycov#67, catalog_sales_quantitycount#68, catalog_sales_quantityave#69, catalog_sales_quantitystdev#70, catalog_sales_quantitycov#71] + +(182) AdaptiveSparkPlan +Output [15]: [i_item_id#24, i_item_desc#25, s_state#22, store_sales_quantitycount#60, store_sales_quantityave#61, store_sales_quantitystdev#62, store_sales_quantitycov#63, as_store_returns_quantitycount#64, as_store_returns_quantityave#65, as_store_returns_quantitystdev#66, store_returns_quantitycov#67, catalog_sales_quantitycount#68, catalog_sales_quantityave#69, catalog_sales_quantitystdev#70, catalog_sales_quantitycov#71] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q18.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q18.txt new file mode 100644 index 000000000..0f2e1b470 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q18.txt @@ -0,0 +1,895 @@ +== Physical Plan == +AdaptiveSparkPlan (165) ++- == Final Plan == + NativeTakeOrdered (106) + +- NativeProject (105) + +- NativeHashAggregate (104) + +- InputAdapter (103) + +- AQEShuffleRead (102) + +- ShuffleQueryStage (101), Statistics(X) + +- NativeShuffleExchange (100) + +- NativeHashAggregate (99) + +- NativeProject (98) + +- NativeExpand (97) + +- NativeProject (96) + +- NativeSortMergeJoin Inner (95) + :- NativeSort (86) + : +- InputAdapter (85) + : +- AQEShuffleRead (84) + : +- ShuffleQueryStage (83), Statistics(X) + : +- NativeShuffleExchange (82) + : +- NativeProject (81) + : +- NativeSortMergeJoin Inner (80) + : :- NativeSort (70) + : : +- InputAdapter (69) + : : +- AQEShuffleRead (68) + : : +- ShuffleQueryStage (67), Statistics(X) + : : +- NativeShuffleExchange (66) + : : +- NativeProject (65) + : : +- NativeSortMergeJoin Inner (64) + : : :- NativeSort (55) + : : : +- InputAdapter (54) + : : : +- AQEShuffleRead (53) + : : : +- ShuffleQueryStage (52), Statistics(X) + : : : +- NativeShuffleExchange (51) + : : : +- NativeProject (50) + : : : +- NativeSortMergeJoin Inner (49) + : : : :- NativeSort (40) + : : : : +- InputAdapter (39) + : : : : +- AQEShuffleRead (38) + : : : : +- ShuffleQueryStage (37), Statistics(X) + : : : : +- NativeShuffleExchange (36) + : : : : +- NativeProject (35) + : : : : +- NativeSortMergeJoin Inner (34) + : : : : :- 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 (33) + : : : : +- InputAdapter (32) + : : : : +- AQEShuffleRead (31) + : : : : +- ShuffleQueryStage (30), Statistics(X) + : : : : +- NativeShuffleExchange (29) + : : : : +- NativeProject (28) + : : : : +- NativeFilter (27) + : : : : +- InputAdapter (26) + : : : : +- NativeParquetScan (25) + : : : +- NativeSort (48) + : : : +- InputAdapter (47) + : : : +- AQEShuffleRead (46) + : : : +- ShuffleQueryStage (45), Statistics(X) + : : : +- NativeShuffleExchange (44) + : : : +- NativeFilter (43) + : : : +- InputAdapter (42) + : : : +- NativeParquetScan (41) + : : +- NativeSort (63) + : : +- InputAdapter (62) + : : +- AQEShuffleRead (61) + : : +- ShuffleQueryStage (60), Statistics(X) + : : +- NativeShuffleExchange (59) + : : +- NativeFilter (58) + : : +- InputAdapter (57) + : : +- NativeParquetScan (56) + : +- NativeSort (79) + : +- InputAdapter (78) + : +- AQEShuffleRead (77) + : +- ShuffleQueryStage (76), Statistics(X) + : +- NativeShuffleExchange (75) + : +- NativeProject (74) + : +- NativeFilter (73) + : +- InputAdapter (72) + : +- NativeParquetScan (71) + +- NativeSort (94) + +- InputAdapter (93) + +- AQEShuffleRead (92) + +- ShuffleQueryStage (91), Statistics(X) + +- NativeShuffleExchange (90) + +- NativeFilter (89) + +- InputAdapter (88) + +- NativeParquetScan (87) ++- == Initial Plan == + TakeOrderedAndProject (164) + +- HashAggregate (163) + +- Exchange (162) + +- HashAggregate (161) + +- Expand (160) + +- Project (159) + +- SortMergeJoin Inner (158) + :- Sort (153) + : +- Exchange (152) + : +- Project (151) + : +- SortMergeJoin Inner (150) + : :- Sort (144) + : : +- Exchange (143) + : : +- Project (142) + : : +- SortMergeJoin Inner (141) + : : :- Sort (136) + : : : +- Exchange (135) + : : : +- Project (134) + : : : +- SortMergeJoin Inner (133) + : : : :- Sort (128) + : : : : +- Exchange (127) + : : : : +- Project (126) + : : : : +- SortMergeJoin Inner (125) + : : : : :- Sort (119) + : : : : : +- Exchange (118) + : : : : : +- Project (117) + : : : : : +- SortMergeJoin Inner (116) + : : : : : :- Sort (110) + : : : : : : +- Exchange (109) + : : : : : : +- Filter (108) + : : : : : : +- Scan parquet (107) + : : : : : +- Sort (115) + : : : : : +- Exchange (114) + : : : : : +- Project (113) + : : : : : +- Filter (112) + : : : : : +- Scan parquet (111) + : : : : +- Sort (124) + : : : : +- Exchange (123) + : : : : +- Project (122) + : : : : +- Filter (121) + : : : : +- Scan parquet (120) + : : : +- Sort (132) + : : : +- Exchange (131) + : : : +- Filter (130) + : : : +- Scan parquet (129) + : : +- Sort (140) + : : +- Exchange (139) + : : +- Filter (138) + : : +- Scan parquet (137) + : +- Sort (149) + : +- Exchange (148) + : +- Project (147) + : +- Filter (146) + : +- Scan parquet (145) + +- Sort (157) + +- Exchange (156) + +- Filter (155) + +- Scan parquet (154) + + +(107) Scan parquet +Output [9]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_bill_cdemo_sk#3, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_bill_cdemo_sk), IsNotNull(cs_bill_customer_sk), IsNotNull(cs_sold_date_sk), IsNotNull(cs_item_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [9]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_bill_cdemo_sk#3, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9] +Arguments: [#1, #2, #3, #4, #5, #6, #7, #8, #9] + +(3) NativeFilter +Input [9]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9] +Condition : (((isnotnull(cs_bill_cdemo_sk#3) AND isnotnull(cs_bill_customer_sk#2)) AND isnotnull(cs_sold_date_sk#1)) AND isnotnull(cs_item_sk#4)) + +(4) NativeShuffleExchange +Input [9]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9] +Arguments: hashpartitioning(cs_bill_cdemo_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [9]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9] +Arguments: X + +(6) AQEShuffleRead +Input [9]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9] +Arguments: coalesced + +(7) InputAdapter +Input [9]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9] + +(8) NativeSort +Input [9]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9] +Arguments: [cs_bill_cdemo_sk#3 ASC NULLS FIRST], false + +(111) Scan parquet +Output [4]: [cd_demo_sk#10, cd_gender#11, cd_education_status#12, cd_dep_count#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_gender), IsNotNull(cd_education_status), EqualTo(cd_gender,F), EqualTo(cd_education_status,Unknown), IsNotNull(cd_demo_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [4]: [cd_demo_sk#10, cd_gender#11, cd_education_status#12, cd_dep_count#13] +Arguments: [#10, #11, #12, #13] + +(11) NativeFilter +Input [4]: [#10#10, #11#11, #12#12, #13#13] +Condition : ((((isnotnull(cd_gender#11) AND isnotnull(cd_education_status#12)) AND (cd_gender#11 = F)) AND (cd_education_status#12 = Unknown)) AND isnotnull(cd_demo_sk#10)) + +(12) NativeProject +Output [2]: [cd_demo_sk#10, cd_dep_count#13] +Input [4]: [#10#10, #11#11, #12#12, #13#13] + +(13) NativeShuffleExchange +Input [2]: [cd_demo_sk#10, cd_dep_count#13] +Arguments: hashpartitioning(cd_demo_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [2]: [cd_demo_sk#10, cd_dep_count#13] +Arguments: X + +(15) AQEShuffleRead +Input [2]: [cd_demo_sk#10, cd_dep_count#13] +Arguments: coalesced + +(16) InputAdapter +Input [2]: [cd_demo_sk#10, cd_dep_count#13] + +(17) NativeSort +Input [2]: [cd_demo_sk#10, cd_dep_count#13] +Arguments: [cd_demo_sk#10 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [cs_bill_cdemo_sk#3] +Right keys [1]: [cd_demo_sk#10] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [9]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13] +Input [11]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9, cd_demo_sk#10, cd_dep_count#13] + +(20) NativeShuffleExchange +Input [9]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13] +Arguments: hashpartitioning(cs_bill_customer_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [9]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13] +Arguments: X + +(22) AQEShuffleRead +Input [9]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13] +Arguments: coalesced + +(23) InputAdapter +Input [9]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13] + +(24) NativeSort +Input [9]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13] +Arguments: [cs_bill_customer_sk#2 ASC NULLS FIRST], false + +(120) Scan parquet +Output [5]: [c_customer_sk#14, c_current_cdemo_sk#15, c_current_addr_sk#16, c_birth_month#17, c_birth_year#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(c_birth_month, [1,12,2,6,8,9]), IsNotNull(c_customer_sk), IsNotNull(c_current_cdemo_sk), IsNotNull(c_current_addr_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [5]: [c_customer_sk#14, c_current_cdemo_sk#15, c_current_addr_sk#16, c_birth_month#17, c_birth_year#18] +Arguments: [#14, #15, #16, #17, #18] + +(27) NativeFilter +Input [5]: [#14#14, #15#15, #16#16, #17#17, #18#18] +Condition : (((c_birth_month#17 IN (1,6,8,9,12,2) AND isnotnull(c_customer_sk#14)) AND isnotnull(c_current_cdemo_sk#15)) AND isnotnull(c_current_addr_sk#16)) + +(28) NativeProject +Output [4]: [c_customer_sk#14, c_current_cdemo_sk#15, c_current_addr_sk#16, c_birth_year#18] +Input [5]: [#14#14, #15#15, #16#16, #17#17, #18#18] + +(29) NativeShuffleExchange +Input [4]: [c_customer_sk#14, c_current_cdemo_sk#15, c_current_addr_sk#16, c_birth_year#18] +Arguments: hashpartitioning(c_customer_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(30) ShuffleQueryStage +Output [4]: [c_customer_sk#14, c_current_cdemo_sk#15, c_current_addr_sk#16, c_birth_year#18] +Arguments: X + +(31) AQEShuffleRead +Input [4]: [c_customer_sk#14, c_current_cdemo_sk#15, c_current_addr_sk#16, c_birth_year#18] +Arguments: coalesced + +(32) InputAdapter +Input [4]: [c_customer_sk#14, c_current_cdemo_sk#15, c_current_addr_sk#16, c_birth_year#18] + +(33) NativeSort +Input [4]: [c_customer_sk#14, c_current_cdemo_sk#15, c_current_addr_sk#16, c_birth_year#18] +Arguments: [c_customer_sk#14 ASC NULLS FIRST], false + +(34) NativeSortMergeJoin +Left keys [1]: [cs_bill_customer_sk#2] +Right keys [1]: [c_customer_sk#14] +Join type: Inner +Join condition: None + +(35) NativeProject +Output [11]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_current_cdemo_sk#15, c_current_addr_sk#16, c_birth_year#18] +Input [13]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_customer_sk#14, c_current_cdemo_sk#15, c_current_addr_sk#16, c_birth_year#18] + +(36) NativeShuffleExchange +Input [11]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_current_cdemo_sk#15, c_current_addr_sk#16, c_birth_year#18] +Arguments: hashpartitioning(c_current_cdemo_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [11]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_current_cdemo_sk#15, c_current_addr_sk#16, c_birth_year#18] +Arguments: X + +(38) AQEShuffleRead +Input [11]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_current_cdemo_sk#15, c_current_addr_sk#16, c_birth_year#18] +Arguments: coalesced + +(39) InputAdapter +Input [11]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_current_cdemo_sk#15, c_current_addr_sk#16, c_birth_year#18] + +(40) NativeSort +Input [11]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_current_cdemo_sk#15, c_current_addr_sk#16, c_birth_year#18] +Arguments: [c_current_cdemo_sk#15 ASC NULLS FIRST], false + +(129) Scan parquet +Output [1]: [cd_demo_sk#19] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_demo_sk)] +ReadSchema: struct + +(42) InputAdapter +Input [1]: [cd_demo_sk#19] +Arguments: [#19] + +(43) NativeFilter +Input [1]: [#19#19] +Condition : isnotnull(cd_demo_sk#19) + +(44) NativeShuffleExchange +Input [1]: [#19#19] +Arguments: hashpartitioning(cd_demo_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(45) ShuffleQueryStage +Output [1]: [#19#19] +Arguments: X + +(46) AQEShuffleRead +Input [1]: [#19#19] +Arguments: coalesced + +(47) InputAdapter +Input [1]: [#19#19] + +(48) NativeSort +Input [1]: [#19#19] +Arguments: [cd_demo_sk#19 ASC NULLS FIRST], false + +(49) NativeSortMergeJoin +Left keys [1]: [c_current_cdemo_sk#15] +Right keys [1]: [cd_demo_sk#19] +Join type: Inner +Join condition: None + +(50) NativeProject +Output [10]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_current_addr_sk#16, c_birth_year#18] +Input [12]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_current_cdemo_sk#15, c_current_addr_sk#16, c_birth_year#18, #19#19] + +(51) NativeShuffleExchange +Input [10]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_current_addr_sk#16, c_birth_year#18] +Arguments: hashpartitioning(c_current_addr_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(52) ShuffleQueryStage +Output [10]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_current_addr_sk#16, c_birth_year#18] +Arguments: X + +(53) AQEShuffleRead +Input [10]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_current_addr_sk#16, c_birth_year#18] +Arguments: coalesced + +(54) InputAdapter +Input [10]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_current_addr_sk#16, c_birth_year#18] + +(55) NativeSort +Input [10]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_current_addr_sk#16, c_birth_year#18] +Arguments: [c_current_addr_sk#16 ASC NULLS FIRST], false + +(137) Scan parquet +Output [4]: [ca_address_sk#20, ca_county#21, ca_state#22, ca_country#23] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(ca_state, [IN,MS,ND,NM,OK,VA]), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(57) InputAdapter +Input [4]: [ca_address_sk#20, ca_county#21, ca_state#22, ca_country#23] +Arguments: [#20, #21, #22, #23] + +(58) NativeFilter +Input [4]: [#20#20, #21#21, #22#22, #23#23] +Condition : (ca_state#22 IN (MS,IN,ND,OK,NM,VA) AND isnotnull(ca_address_sk#20)) + +(59) NativeShuffleExchange +Input [4]: [#20#20, #21#21, #22#22, #23#23] +Arguments: hashpartitioning(ca_address_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(60) ShuffleQueryStage +Output [4]: [#20#20, #21#21, #22#22, #23#23] +Arguments: X + +(61) AQEShuffleRead +Input [4]: [#20#20, #21#21, #22#22, #23#23] +Arguments: coalesced + +(62) InputAdapter +Input [4]: [#20#20, #21#21, #22#22, #23#23] + +(63) NativeSort +Input [4]: [#20#20, #21#21, #22#22, #23#23] +Arguments: [ca_address_sk#20 ASC NULLS FIRST], false + +(64) NativeSortMergeJoin +Left keys [1]: [c_current_addr_sk#16] +Right keys [1]: [ca_address_sk#20] +Join type: Inner +Join condition: None + +(65) NativeProject +Output [12]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, ca_county#21, ca_state#22, ca_country#23] +Input [14]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_current_addr_sk#16, c_birth_year#18, #20#20, #21#21, #22#22, #23#23] + +(66) NativeShuffleExchange +Input [12]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, ca_county#21, ca_state#22, ca_country#23] +Arguments: hashpartitioning(cs_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(67) ShuffleQueryStage +Output [12]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, ca_county#21, ca_state#22, ca_country#23] +Arguments: X + +(68) AQEShuffleRead +Input [12]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, ca_county#21, ca_state#22, ca_country#23] +Arguments: coalesced + +(69) InputAdapter +Input [12]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, ca_county#21, ca_state#22, ca_country#23] + +(70) NativeSort +Input [12]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, ca_county#21, ca_state#22, ca_country#23] +Arguments: [cs_sold_date_sk#1 ASC NULLS FIRST], false + +(145) Scan parquet +Output [2]: [d_date_sk#24, d_year#25] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,1998), IsNotNull(d_date_sk)] +ReadSchema: struct + +(72) InputAdapter +Input [2]: [d_date_sk#24, d_year#25] +Arguments: [#24, #25] + +(73) NativeFilter +Input [2]: [#24#24, #25#25] +Condition : ((isnotnull(d_year#25) AND (d_year#25 = 1998)) AND isnotnull(d_date_sk#24)) + +(74) NativeProject +Output [1]: [d_date_sk#24] +Input [2]: [#24#24, #25#25] + +(75) NativeShuffleExchange +Input [1]: [d_date_sk#24] +Arguments: hashpartitioning(d_date_sk#24, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(76) ShuffleQueryStage +Output [1]: [d_date_sk#24] +Arguments: X + +(77) AQEShuffleRead +Input [1]: [d_date_sk#24] +Arguments: coalesced + +(78) InputAdapter +Input [1]: [d_date_sk#24] + +(79) NativeSort +Input [1]: [d_date_sk#24] +Arguments: [d_date_sk#24 ASC NULLS FIRST], false + +(80) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#1] +Right keys [1]: [d_date_sk#24] +Join type: Inner +Join condition: None + +(81) NativeProject +Output [11]: [cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, ca_county#21, ca_state#22, ca_country#23] +Input [13]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, ca_county#21, ca_state#22, ca_country#23, d_date_sk#24] + +(82) NativeShuffleExchange +Input [11]: [cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, ca_county#21, ca_state#22, ca_country#23] +Arguments: hashpartitioning(cs_item_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(83) ShuffleQueryStage +Output [11]: [cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, ca_county#21, ca_state#22, ca_country#23] +Arguments: X + +(84) AQEShuffleRead +Input [11]: [cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, ca_county#21, ca_state#22, ca_country#23] +Arguments: coalesced + +(85) InputAdapter +Input [11]: [cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, ca_county#21, ca_state#22, ca_country#23] + +(86) NativeSort +Input [11]: [cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, ca_county#21, ca_state#22, ca_country#23] +Arguments: [cs_item_sk#4 ASC NULLS FIRST], false + +(154) Scan parquet +Output [2]: [i_item_sk#26, i_item_id#27] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(88) InputAdapter +Input [2]: [i_item_sk#26, i_item_id#27] +Arguments: [#26, #27] + +(89) NativeFilter +Input [2]: [#26#26, #27#27] +Condition : isnotnull(i_item_sk#26) + +(90) NativeShuffleExchange +Input [2]: [#26#26, #27#27] +Arguments: hashpartitioning(i_item_sk#26, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(91) ShuffleQueryStage +Output [2]: [#26#26, #27#27] +Arguments: X + +(92) AQEShuffleRead +Input [2]: [#26#26, #27#27] +Arguments: coalesced + +(93) InputAdapter +Input [2]: [#26#26, #27#27] + +(94) NativeSort +Input [2]: [#26#26, #27#27] +Arguments: [i_item_sk#26 ASC NULLS FIRST], false + +(95) NativeSortMergeJoin +Left keys [1]: [cs_item_sk#4] +Right keys [1]: [i_item_sk#26] +Join type: Inner +Join condition: None + +(96) NativeProject +Output [11]: [cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, i_item_id#27, ca_country#23, ca_state#22, ca_county#21] +Input [13]: [cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, ca_county#21, ca_state#22, ca_country#23, #26#26, #27#27] + +(97) NativeExpand +Input [11]: [cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, i_item_id#27, ca_country#23, ca_state#22, ca_county#21] +Arguments: [[cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, i_item_id#27, ca_country#23, ca_state#22, ca_county#21, 0], [cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, i_item_id#27, ca_country#23, ca_state#22, null, 1], [cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, i_item_id#27, ca_country#23, null, null, 3], [cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, i_item_id#27, null, null, null, 7], [cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, null, null, null, null, 15]], [cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, i_item_id#28, ca_country#29, ca_state#30, ca_county#31, spark_grouping_id#32] + +(98) NativeProject +Output [12]: [i_item_id#28 AS i_item_id#28, ca_country#29 AS ca_country#29, ca_state#30 AS ca_state#30, ca_county#31 AS ca_county#31, spark_grouping_id#32 AS spark_grouping_id#32, cast(cs_quantity#5 as decimal(12,2)) AS _c5#33, cast(cs_list_price#6 as decimal(12,2)) AS _c6#34, cast(cs_coupon_amt#8 as decimal(12,2)) AS _c7#35, cast(cs_sales_price#7 as decimal(12,2)) AS _c8#36, cast(cs_net_profit#9 as decimal(12,2)) AS _c9#37, cast(c_birth_year#18 as decimal(12,2)) AS _c10#38, cast(cd_dep_count#13 as decimal(12,2)) AS _c11#39] +Input [12]: [cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, i_item_id#28, ca_country#29, ca_state#30, ca_county#31, spark_grouping_id#32] + +(99) NativeHashAggregate +Input [12]: [i_item_id#28, ca_country#29, ca_state#30, ca_county#31, spark_grouping_id#32, _c5#33, _c6#34, _c7#35, _c8#36, _c9#37, _c10#38, _c11#39] +Keys [5]: [i_item_id#28, ca_country#29, ca_state#30, ca_county#31, spark_grouping_id#32] +Functions [7]: [partial_avg(_c5#33), partial_avg(_c6#34), partial_avg(_c7#35), partial_avg(_c8#36), partial_avg(_c9#37), partial_avg(_c10#38), partial_avg(_c11#39)] +Aggregate Attributes [14]: [sum#40, count#41, sum#42, count#43, sum#44, count#45, sum#46, count#47, sum#48, count#49, sum#50, count#51, sum#52, count#53] +Results [6]: [i_item_id#28, ca_country#29, ca_state#30, ca_county#31, spark_grouping_id#32, #54#54] + +(100) NativeShuffleExchange +Input [6]: [i_item_id#28, ca_country#29, ca_state#30, ca_county#31, spark_grouping_id#32, #54#54] +Arguments: hashpartitioning(i_item_id#28, ca_country#29, ca_state#30, ca_county#31, spark_grouping_id#32, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(101) ShuffleQueryStage +Output [6]: [i_item_id#28, ca_country#29, ca_state#30, ca_county#31, spark_grouping_id#32, #54#54] +Arguments: X + +(102) AQEShuffleRead +Input [6]: [i_item_id#28, ca_country#29, ca_state#30, ca_county#31, spark_grouping_id#32, #54#54] +Arguments: coalesced + +(103) InputAdapter +Input [6]: [i_item_id#28, ca_country#29, ca_state#30, ca_county#31, spark_grouping_id#32, #54#54] + +(104) NativeHashAggregate +Input [6]: [i_item_id#28, ca_country#29, ca_state#30, ca_county#31, spark_grouping_id#32, #54#54] +Keys [5]: [i_item_id#28, ca_country#29, ca_state#30, ca_county#31, spark_grouping_id#32] +Functions [7]: [avg(cast(cs_quantity#5 as decimal(12,2))), avg(cast(cs_list_price#6 as decimal(12,2))), avg(cast(cs_coupon_amt#8 as decimal(12,2))), avg(cast(cs_sales_price#7 as decimal(12,2))), avg(cast(cs_net_profit#9 as decimal(12,2))), avg(cast(c_birth_year#18 as decimal(12,2))), avg(cast(cd_dep_count#13 as decimal(12,2)))] +Aggregate Attributes [7]: [avg(cast(cs_quantity#5 as decimal(12,2)))#55, avg(cast(cs_list_price#6 as decimal(12,2)))#56, avg(cast(cs_coupon_amt#8 as decimal(12,2)))#57, avg(cast(cs_sales_price#7 as decimal(12,2)))#58, avg(cast(cs_net_profit#9 as decimal(12,2)))#59, avg(cast(c_birth_year#18 as decimal(12,2)))#60, avg(cast(cd_dep_count#13 as decimal(12,2)))#61] +Results [12]: [i_item_id#28, ca_country#29, ca_state#30, ca_county#31, spark_grouping_id#32, avg(cast(cs_quantity#5 as decimal(12,2)))#55, avg(cast(cs_list_price#6 as decimal(12,2)))#56, avg(cast(cs_coupon_amt#8 as decimal(12,2)))#57, avg(cast(cs_sales_price#7 as decimal(12,2)))#58, avg(cast(cs_net_profit#9 as decimal(12,2)))#59, avg(cast(c_birth_year#18 as decimal(12,2)))#60, avg(cast(cd_dep_count#13 as decimal(12,2)))#61] + +(105) NativeProject +Output [11]: [i_item_id#28, ca_country#29, ca_state#30, ca_county#31, avg(cast(cs_quantity#5 as decimal(12,2)))#55 AS agg1#62, avg(cast(cs_list_price#6 as decimal(12,2)))#56 AS agg2#63, avg(cast(cs_coupon_amt#8 as decimal(12,2)))#57 AS agg3#64, avg(cast(cs_sales_price#7 as decimal(12,2)))#58 AS agg4#65, avg(cast(cs_net_profit#9 as decimal(12,2)))#59 AS agg5#66, avg(cast(c_birth_year#18 as decimal(12,2)))#60 AS agg6#67, avg(cast(cd_dep_count#13 as decimal(12,2)))#61 AS agg7#68] +Input [12]: [i_item_id#28, ca_country#29, ca_state#30, ca_county#31, spark_grouping_id#32, avg(cast(cs_quantity#5 as decimal(12,2)))#55, avg(cast(cs_list_price#6 as decimal(12,2)))#56, avg(cast(cs_coupon_amt#8 as decimal(12,2)))#57, avg(cast(cs_sales_price#7 as decimal(12,2)))#58, avg(cast(cs_net_profit#9 as decimal(12,2)))#59, avg(cast(c_birth_year#18 as decimal(12,2)))#60, avg(cast(cd_dep_count#13 as decimal(12,2)))#61] + +(106) NativeTakeOrdered +Input [11]: [i_item_id#28, ca_country#29, ca_state#30, ca_county#31, agg1#62, agg2#63, agg3#64, agg4#65, agg5#66, agg6#67, agg7#68] +Arguments: X, [ca_country#29 DESC NULLS LAST, ca_state#30 DESC NULLS LAST, ca_county#31 DESC NULLS LAST, i_item_id#28 ASC NULLS FIRST] + +(107) Scan parquet +Output [9]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_bill_cdemo_sk#3, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_bill_cdemo_sk), IsNotNull(cs_bill_customer_sk), IsNotNull(cs_sold_date_sk), IsNotNull(cs_item_sk)] +ReadSchema: struct + +(108) Filter +Input [9]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_bill_cdemo_sk#3, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9] +Condition : (((isnotnull(cs_bill_cdemo_sk#3) AND isnotnull(cs_bill_customer_sk#2)) AND isnotnull(cs_sold_date_sk#1)) AND isnotnull(cs_item_sk#4)) + +(109) Exchange +Input [9]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_bill_cdemo_sk#3, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9] +Arguments: hashpartitioning(cs_bill_cdemo_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(110) Sort +Input [9]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_bill_cdemo_sk#3, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9] +Arguments: [cs_bill_cdemo_sk#3 ASC NULLS FIRST], false, 0 + +(111) Scan parquet +Output [4]: [cd_demo_sk#10, cd_gender#11, cd_education_status#12, cd_dep_count#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_gender), IsNotNull(cd_education_status), EqualTo(cd_gender,F), EqualTo(cd_education_status,Unknown), IsNotNull(cd_demo_sk)] +ReadSchema: struct + +(112) Filter +Input [4]: [cd_demo_sk#10, cd_gender#11, cd_education_status#12, cd_dep_count#13] +Condition : ((((isnotnull(cd_gender#11) AND isnotnull(cd_education_status#12)) AND (cd_gender#11 = F)) AND (cd_education_status#12 = Unknown)) AND isnotnull(cd_demo_sk#10)) + +(113) Project +Output [2]: [cd_demo_sk#10, cd_dep_count#13] +Input [4]: [cd_demo_sk#10, cd_gender#11, cd_education_status#12, cd_dep_count#13] + +(114) Exchange +Input [2]: [cd_demo_sk#10, cd_dep_count#13] +Arguments: hashpartitioning(cd_demo_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(115) Sort +Input [2]: [cd_demo_sk#10, cd_dep_count#13] +Arguments: [cd_demo_sk#10 ASC NULLS FIRST], false, 0 + +(116) SortMergeJoin +Left keys [1]: [cs_bill_cdemo_sk#3] +Right keys [1]: [cd_demo_sk#10] +Join type: Inner +Join condition: None + +(117) Project +Output [9]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13] +Input [11]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_bill_cdemo_sk#3, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_demo_sk#10, cd_dep_count#13] + +(118) Exchange +Input [9]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13] +Arguments: hashpartitioning(cs_bill_customer_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(119) Sort +Input [9]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13] +Arguments: [cs_bill_customer_sk#2 ASC NULLS FIRST], false, 0 + +(120) Scan parquet +Output [5]: [c_customer_sk#14, c_current_cdemo_sk#15, c_current_addr_sk#16, c_birth_month#17, c_birth_year#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(c_birth_month, [1,12,2,6,8,9]), IsNotNull(c_customer_sk), IsNotNull(c_current_cdemo_sk), IsNotNull(c_current_addr_sk)] +ReadSchema: struct + +(121) Filter +Input [5]: [c_customer_sk#14, c_current_cdemo_sk#15, c_current_addr_sk#16, c_birth_month#17, c_birth_year#18] +Condition : (((c_birth_month#17 IN (1,6,8,9,12,2) AND isnotnull(c_customer_sk#14)) AND isnotnull(c_current_cdemo_sk#15)) AND isnotnull(c_current_addr_sk#16)) + +(122) Project +Output [4]: [c_customer_sk#14, c_current_cdemo_sk#15, c_current_addr_sk#16, c_birth_year#18] +Input [5]: [c_customer_sk#14, c_current_cdemo_sk#15, c_current_addr_sk#16, c_birth_month#17, c_birth_year#18] + +(123) Exchange +Input [4]: [c_customer_sk#14, c_current_cdemo_sk#15, c_current_addr_sk#16, c_birth_year#18] +Arguments: hashpartitioning(c_customer_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(124) Sort +Input [4]: [c_customer_sk#14, c_current_cdemo_sk#15, c_current_addr_sk#16, c_birth_year#18] +Arguments: [c_customer_sk#14 ASC NULLS FIRST], false, 0 + +(125) SortMergeJoin +Left keys [1]: [cs_bill_customer_sk#2] +Right keys [1]: [c_customer_sk#14] +Join type: Inner +Join condition: None + +(126) Project +Output [11]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_current_cdemo_sk#15, c_current_addr_sk#16, c_birth_year#18] +Input [13]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_customer_sk#14, c_current_cdemo_sk#15, c_current_addr_sk#16, c_birth_year#18] + +(127) Exchange +Input [11]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_current_cdemo_sk#15, c_current_addr_sk#16, c_birth_year#18] +Arguments: hashpartitioning(c_current_cdemo_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(128) Sort +Input [11]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_current_cdemo_sk#15, c_current_addr_sk#16, c_birth_year#18] +Arguments: [c_current_cdemo_sk#15 ASC NULLS FIRST], false, 0 + +(129) Scan parquet +Output [1]: [cd_demo_sk#19] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_demo_sk)] +ReadSchema: struct + +(130) Filter +Input [1]: [cd_demo_sk#19] +Condition : isnotnull(cd_demo_sk#19) + +(131) Exchange +Input [1]: [cd_demo_sk#19] +Arguments: hashpartitioning(cd_demo_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(132) Sort +Input [1]: [cd_demo_sk#19] +Arguments: [cd_demo_sk#19 ASC NULLS FIRST], false, 0 + +(133) SortMergeJoin +Left keys [1]: [c_current_cdemo_sk#15] +Right keys [1]: [cd_demo_sk#19] +Join type: Inner +Join condition: None + +(134) Project +Output [10]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_current_addr_sk#16, c_birth_year#18] +Input [12]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_current_cdemo_sk#15, c_current_addr_sk#16, c_birth_year#18, cd_demo_sk#19] + +(135) Exchange +Input [10]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_current_addr_sk#16, c_birth_year#18] +Arguments: hashpartitioning(c_current_addr_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(136) Sort +Input [10]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_current_addr_sk#16, c_birth_year#18] +Arguments: [c_current_addr_sk#16 ASC NULLS FIRST], false, 0 + +(137) Scan parquet +Output [4]: [ca_address_sk#20, ca_county#21, ca_state#22, ca_country#23] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(ca_state, [IN,MS,ND,NM,OK,VA]), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(138) Filter +Input [4]: [ca_address_sk#20, ca_county#21, ca_state#22, ca_country#23] +Condition : (ca_state#22 IN (MS,IN,ND,OK,NM,VA) AND isnotnull(ca_address_sk#20)) + +(139) Exchange +Input [4]: [ca_address_sk#20, ca_county#21, ca_state#22, ca_country#23] +Arguments: hashpartitioning(ca_address_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(140) Sort +Input [4]: [ca_address_sk#20, ca_county#21, ca_state#22, ca_country#23] +Arguments: [ca_address_sk#20 ASC NULLS FIRST], false, 0 + +(141) SortMergeJoin +Left keys [1]: [c_current_addr_sk#16] +Right keys [1]: [ca_address_sk#20] +Join type: Inner +Join condition: None + +(142) Project +Output [12]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, ca_county#21, ca_state#22, ca_country#23] +Input [14]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_current_addr_sk#16, c_birth_year#18, ca_address_sk#20, ca_county#21, ca_state#22, ca_country#23] + +(143) Exchange +Input [12]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, ca_county#21, ca_state#22, ca_country#23] +Arguments: hashpartitioning(cs_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(144) Sort +Input [12]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, ca_county#21, ca_state#22, ca_country#23] +Arguments: [cs_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(145) Scan parquet +Output [2]: [d_date_sk#24, d_year#25] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,1998), IsNotNull(d_date_sk)] +ReadSchema: struct + +(146) Filter +Input [2]: [d_date_sk#24, d_year#25] +Condition : ((isnotnull(d_year#25) AND (d_year#25 = 1998)) AND isnotnull(d_date_sk#24)) + +(147) Project +Output [1]: [d_date_sk#24] +Input [2]: [d_date_sk#24, d_year#25] + +(148) Exchange +Input [1]: [d_date_sk#24] +Arguments: hashpartitioning(d_date_sk#24, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(149) Sort +Input [1]: [d_date_sk#24] +Arguments: [d_date_sk#24 ASC NULLS FIRST], false, 0 + +(150) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#1] +Right keys [1]: [d_date_sk#24] +Join type: Inner +Join condition: None + +(151) Project +Output [11]: [cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, ca_county#21, ca_state#22, ca_country#23] +Input [13]: [cs_sold_date_sk#1, cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, ca_county#21, ca_state#22, ca_country#23, d_date_sk#24] + +(152) Exchange +Input [11]: [cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, ca_county#21, ca_state#22, ca_country#23] +Arguments: hashpartitioning(cs_item_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(153) Sort +Input [11]: [cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, ca_county#21, ca_state#22, ca_country#23] +Arguments: [cs_item_sk#4 ASC NULLS FIRST], false, 0 + +(154) Scan parquet +Output [2]: [i_item_sk#26, i_item_id#27] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(155) Filter +Input [2]: [i_item_sk#26, i_item_id#27] +Condition : isnotnull(i_item_sk#26) + +(156) Exchange +Input [2]: [i_item_sk#26, i_item_id#27] +Arguments: hashpartitioning(i_item_sk#26, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(157) Sort +Input [2]: [i_item_sk#26, i_item_id#27] +Arguments: [i_item_sk#26 ASC NULLS FIRST], false, 0 + +(158) SortMergeJoin +Left keys [1]: [cs_item_sk#4] +Right keys [1]: [i_item_sk#26] +Join type: Inner +Join condition: None + +(159) Project +Output [11]: [cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, i_item_id#27, ca_country#23, ca_state#22, ca_county#21] +Input [13]: [cs_item_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, ca_county#21, ca_state#22, ca_country#23, i_item_sk#26, i_item_id#27] + +(160) Expand +Input [11]: [cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, i_item_id#27, ca_country#23, ca_state#22, ca_county#21] +Arguments: [[cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, i_item_id#27, ca_country#23, ca_state#22, ca_county#21, 0], [cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, i_item_id#27, ca_country#23, ca_state#22, null, 1], [cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, i_item_id#27, ca_country#23, null, null, 3], [cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, i_item_id#27, null, null, null, 7], [cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, null, null, null, null, 15]], [cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, i_item_id#28, ca_country#29, ca_state#30, ca_county#31, spark_grouping_id#32] + +(161) HashAggregate +Input [12]: [cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cs_net_profit#9, cd_dep_count#13, c_birth_year#18, i_item_id#28, ca_country#29, ca_state#30, ca_county#31, spark_grouping_id#32] +Keys [5]: [i_item_id#28, ca_country#29, ca_state#30, ca_county#31, spark_grouping_id#32] +Functions [7]: [partial_avg(cast(cs_quantity#5 as decimal(12,2))), partial_avg(cast(cs_list_price#6 as decimal(12,2))), partial_avg(cast(cs_coupon_amt#8 as decimal(12,2))), partial_avg(cast(cs_sales_price#7 as decimal(12,2))), partial_avg(cast(cs_net_profit#9 as decimal(12,2))), partial_avg(cast(c_birth_year#18 as decimal(12,2))), partial_avg(cast(cd_dep_count#13 as decimal(12,2)))] +Aggregate Attributes [14]: [sum#40, count#41, sum#42, count#43, sum#44, count#45, sum#46, count#47, sum#48, count#49, sum#50, count#51, sum#52, count#53] +Results [19]: [i_item_id#28, ca_country#29, ca_state#30, ca_county#31, spark_grouping_id#32, sum#69, count#70, sum#71, count#72, sum#73, count#74, sum#75, count#76, sum#77, count#78, sum#79, count#80, sum#81, count#82] + +(162) Exchange +Input [19]: [i_item_id#28, ca_country#29, ca_state#30, ca_county#31, spark_grouping_id#32, sum#69, count#70, sum#71, count#72, sum#73, count#74, sum#75, count#76, sum#77, count#78, sum#79, count#80, sum#81, count#82] +Arguments: hashpartitioning(i_item_id#28, ca_country#29, ca_state#30, ca_county#31, spark_grouping_id#32, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(163) HashAggregate +Input [19]: [i_item_id#28, ca_country#29, ca_state#30, ca_county#31, spark_grouping_id#32, sum#69, count#70, sum#71, count#72, sum#73, count#74, sum#75, count#76, sum#77, count#78, sum#79, count#80, sum#81, count#82] +Keys [5]: [i_item_id#28, ca_country#29, ca_state#30, ca_county#31, spark_grouping_id#32] +Functions [7]: [avg(cast(cs_quantity#5 as decimal(12,2))), avg(cast(cs_list_price#6 as decimal(12,2))), avg(cast(cs_coupon_amt#8 as decimal(12,2))), avg(cast(cs_sales_price#7 as decimal(12,2))), avg(cast(cs_net_profit#9 as decimal(12,2))), avg(cast(c_birth_year#18 as decimal(12,2))), avg(cast(cd_dep_count#13 as decimal(12,2)))] +Aggregate Attributes [7]: [avg(cast(cs_quantity#5 as decimal(12,2)))#55, avg(cast(cs_list_price#6 as decimal(12,2)))#56, avg(cast(cs_coupon_amt#8 as decimal(12,2)))#57, avg(cast(cs_sales_price#7 as decimal(12,2)))#58, avg(cast(cs_net_profit#9 as decimal(12,2)))#59, avg(cast(c_birth_year#18 as decimal(12,2)))#60, avg(cast(cd_dep_count#13 as decimal(12,2)))#61] +Results [11]: [i_item_id#28, ca_country#29, ca_state#30, ca_county#31, avg(cast(cs_quantity#5 as decimal(12,2)))#55 AS agg1#62, avg(cast(cs_list_price#6 as decimal(12,2)))#56 AS agg2#63, avg(cast(cs_coupon_amt#8 as decimal(12,2)))#57 AS agg3#64, avg(cast(cs_sales_price#7 as decimal(12,2)))#58 AS agg4#65, avg(cast(cs_net_profit#9 as decimal(12,2)))#59 AS agg5#66, avg(cast(c_birth_year#18 as decimal(12,2)))#60 AS agg6#67, avg(cast(cd_dep_count#13 as decimal(12,2)))#61 AS agg7#68] + +(164) TakeOrderedAndProject +Input [11]: [i_item_id#28, ca_country#29, ca_state#30, ca_county#31, agg1#62, agg2#63, agg3#64, agg4#65, agg5#66, agg6#67, agg7#68] +Arguments: X, [ca_country#29 DESC NULLS LAST, ca_state#30 DESC NULLS LAST, ca_county#31 DESC NULLS LAST, i_item_id#28 ASC NULLS FIRST], [i_item_id#28, ca_country#29, ca_state#30, ca_county#31, agg1#62, agg2#63, agg3#64, agg4#65, agg5#66, agg6#67, agg7#68] + +(165) AdaptiveSparkPlan +Output [11]: [i_item_id#28, ca_country#29, ca_state#30, ca_county#31, agg1#62, agg2#63, agg3#64, agg4#65, agg5#66, agg6#67, agg7#68] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q19.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q19.txt new file mode 100644 index 000000000..dc7466d29 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q19.txt @@ -0,0 +1,738 @@ +== Physical Plan == +AdaptiveSparkPlan (135) ++- == Final Plan == + TakeOrderedAndProject (86) + +- * HashAggregate (85) + +- AQEShuffleRead (84) + +- ShuffleQueryStage (83), Statistics(X) + +- Exchange (82) + +- * HashAggregate (81) + +- * Project (80) + +- * SortMergeJoin Inner (79) + :- NativeSort (70) + : +- InputAdapter (69) + : +- AQEShuffleRead (68) + : +- ShuffleQueryStage (67), Statistics(X) + : +- NativeShuffleExchange (66) + : +- NativeProject (65) + : +- NativeSortMergeJoin Inner (64) + : :- NativeSort (55) + : : +- InputAdapter (54) + : : +- AQEShuffleRead (53) + : : +- ShuffleQueryStage (52), Statistics(X) + : : +- NativeShuffleExchange (51) + : : +- NativeProject (50) + : : +- NativeSortMergeJoin Inner (49) + : : :- NativeSort (40) + : : : +- InputAdapter (39) + : : : +- AQEShuffleRead (38) + : : : +- ShuffleQueryStage (37), Statistics(X) + : : : +- NativeShuffleExchange (36) + : : : +- NativeProject (35) + : : : +- NativeSortMergeJoin Inner (34) + : : : :- NativeSort (24) + : : : : +- InputAdapter (23) + : : : : +- AQEShuffleRead (22) + : : : : +- ShuffleQueryStage (21), Statistics(X) + : : : : +- NativeShuffleExchange (20) + : : : : +- NativeProject (19) + : : : : +- NativeSortMergeJoin Inner (18) + : : : : :- NativeSort (9) + : : : : : +- InputAdapter (8) + : : : : : +- AQEShuffleRead (7) + : : : : : +- ShuffleQueryStage (6), Statistics(X) + : : : : : +- NativeShuffleExchange (5) + : : : : : +- NativeProject (4) + : : : : : +- NativeFilter (3) + : : : : : +- InputAdapter (2) + : : : : : +- NativeParquetScan (1) + : : : : +- NativeSort (17) + : : : : +- InputAdapter (16) + : : : : +- AQEShuffleRead (15) + : : : : +- ShuffleQueryStage (14), Statistics(X) + : : : : +- NativeShuffleExchange (13) + : : : : +- NativeFilter (12) + : : : : +- InputAdapter (11) + : : : : +- NativeParquetScan (10) + : : : +- NativeSort (33) + : : : +- InputAdapter (32) + : : : +- AQEShuffleRead (31) + : : : +- ShuffleQueryStage (30), Statistics(X) + : : : +- NativeShuffleExchange (29) + : : : +- NativeProject (28) + : : : +- NativeFilter (27) + : : : +- InputAdapter (26) + : : : +- NativeParquetScan (25) + : : +- NativeSort (48) + : : +- InputAdapter (47) + : : +- AQEShuffleRead (46) + : : +- ShuffleQueryStage (45), Statistics(X) + : : +- NativeShuffleExchange (44) + : : +- NativeFilter (43) + : : +- InputAdapter (42) + : : +- NativeParquetScan (41) + : +- NativeSort (63) + : +- InputAdapter (62) + : +- AQEShuffleRead (61) + : +- ShuffleQueryStage (60), Statistics(X) + : +- NativeShuffleExchange (59) + : +- NativeFilter (58) + : +- InputAdapter (57) + : +- NativeParquetScan (56) + +- NativeSort (78) + +- InputAdapter (77) + +- AQEShuffleRead (76) + +- ShuffleQueryStage (75), Statistics(X) + +- NativeShuffleExchange (74) + +- NativeFilter (73) + +- InputAdapter (72) + +- NativeParquetScan (71) ++- == Initial Plan == + TakeOrderedAndProject (134) + +- HashAggregate (133) + +- Exchange (132) + +- HashAggregate (131) + +- Project (130) + +- SortMergeJoin Inner (129) + :- Sort (124) + : +- Exchange (123) + : +- Project (122) + : +- SortMergeJoin Inner (121) + : :- Sort (116) + : : +- Exchange (115) + : : +- Project (114) + : : +- SortMergeJoin Inner (113) + : : :- Sort (108) + : : : +- Exchange (107) + : : : +- Project (106) + : : : +- SortMergeJoin Inner (105) + : : : :- Sort (99) + : : : : +- Exchange (98) + : : : : +- Project (97) + : : : : +- SortMergeJoin Inner (96) + : : : : :- Sort (91) + : : : : : +- Exchange (90) + : : : : : +- Project (89) + : : : : : +- Filter (88) + : : : : : +- Scan parquet (87) + : : : : +- Sort (95) + : : : : +- Exchange (94) + : : : : +- Filter (93) + : : : : +- Scan parquet (92) + : : : +- Sort (104) + : : : +- Exchange (103) + : : : +- Project (102) + : : : +- Filter (101) + : : : +- Scan parquet (100) + : : +- Sort (112) + : : +- Exchange (111) + : : +- Filter (110) + : : +- Scan parquet (109) + : +- Sort (120) + : +- Exchange (119) + : +- Filter (118) + : +- Scan parquet (117) + +- Sort (128) + +- Exchange (127) + +- Filter (126) + +- Scan parquet (125) + + +(87) Scan parquet +Output [3]: [d_date_sk#1, d_year#2, d_moy#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_moy), IsNotNull(d_year), EqualTo(d_moy,11), EqualTo(d_year,1998), IsNotNull(d_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [d_date_sk#1, d_year#2, d_moy#3] +Arguments: [#1, #2, #3] + +(3) NativeFilter +Input [3]: [#1#1, #2#2, #3#3] +Condition : ((((isnotnull(d_moy#3) AND isnotnull(d_year#2)) AND (d_moy#3 = 11)) AND (d_year#2 = 1998)) AND isnotnull(d_date_sk#1)) + +(4) NativeProject +Output [1]: [d_date_sk#1] +Input [3]: [#1#1, #2#2, #3#3] + +(5) NativeShuffleExchange +Input [1]: [d_date_sk#1] +Arguments: hashpartitioning(d_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(6) ShuffleQueryStage +Output [1]: [d_date_sk#1] +Arguments: X + +(7) AQEShuffleRead +Input [1]: [d_date_sk#1] +Arguments: coalesced + +(8) InputAdapter +Input [1]: [d_date_sk#1] + +(9) NativeSort +Input [1]: [d_date_sk#1] +Arguments: [d_date_sk#1 ASC NULLS FIRST], false + +(92) Scan parquet +Output [5]: [ss_sold_date_sk#4, ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_item_sk), IsNotNull(ss_customer_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(11) InputAdapter +Input [5]: [ss_sold_date_sk#4, ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8] +Arguments: [#4, #5, #6, #7, #8] + +(12) NativeFilter +Input [5]: [#4#4, #5#5, #6#6, #7#7, #8#8] +Condition : (((isnotnull(ss_sold_date_sk#4) AND isnotnull(ss_item_sk#5)) AND isnotnull(ss_customer_sk#6)) AND isnotnull(ss_store_sk#7)) + +(13) NativeShuffleExchange +Input [5]: [#4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: hashpartitioning(ss_sold_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [5]: [#4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: X + +(15) AQEShuffleRead +Input [5]: [#4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: coalesced + +(16) InputAdapter +Input [5]: [#4#4, #5#5, #6#6, #7#7, #8#8] + +(17) NativeSort +Input [5]: [#4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: [ss_sold_date_sk#4 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [d_date_sk#1] +Right keys [1]: [ss_sold_date_sk#4] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [4]: [ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8] +Input [6]: [d_date_sk#1, #4#4, #5#5, #6#6, #7#7, #8#8] + +(20) NativeShuffleExchange +Input [4]: [ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8] +Arguments: hashpartitioning(ss_item_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [4]: [ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8] +Arguments: X + +(22) AQEShuffleRead +Input [4]: [ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8] +Arguments: coalesced + +(23) InputAdapter +Input [4]: [ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8] + +(24) NativeSort +Input [4]: [ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8] +Arguments: [ss_item_sk#5 ASC NULLS FIRST], false + +(100) Scan parquet +Output [6]: [i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, i_manager_id#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_manager_id), EqualTo(i_manager_id,8), IsNotNull(i_item_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [6]: [i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, i_manager_id#14] +Arguments: [#9, #10, #11, #12, #13, #14] + +(27) NativeFilter +Input [6]: [#9#9, #10#10, #11#11, #12#12, #13#13, #14#14] +Condition : ((isnotnull(i_manager_id#14) AND (i_manager_id#14 = 8)) AND isnotnull(i_item_sk#9)) + +(28) NativeProject +Output [5]: [i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13] +Input [6]: [#9#9, #10#10, #11#11, #12#12, #13#13, #14#14] + +(29) NativeShuffleExchange +Input [5]: [i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13] +Arguments: hashpartitioning(i_item_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(30) ShuffleQueryStage +Output [5]: [i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13] +Arguments: X + +(31) AQEShuffleRead +Input [5]: [i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13] +Arguments: coalesced + +(32) InputAdapter +Input [5]: [i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13] + +(33) NativeSort +Input [5]: [i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13] +Arguments: [i_item_sk#9 ASC NULLS FIRST], false + +(34) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#5] +Right keys [1]: [i_item_sk#9] +Join type: Inner +Join condition: None + +(35) NativeProject +Output [7]: [ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13] +Input [9]: [ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8, i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13] + +(36) NativeShuffleExchange +Input [7]: [ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13] +Arguments: hashpartitioning(ss_customer_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [7]: [ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13] +Arguments: X + +(38) AQEShuffleRead +Input [7]: [ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13] +Arguments: coalesced + +(39) InputAdapter +Input [7]: [ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13] + +(40) NativeSort +Input [7]: [ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13] +Arguments: [ss_customer_sk#6 ASC NULLS FIRST], false + +(109) Scan parquet +Output [2]: [c_customer_sk#15, c_current_addr_sk#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_current_addr_sk)] +ReadSchema: struct + +(42) InputAdapter +Input [2]: [c_customer_sk#15, c_current_addr_sk#16] +Arguments: [#15, #16] + +(43) NativeFilter +Input [2]: [#15#15, #16#16] +Condition : (isnotnull(c_customer_sk#15) AND isnotnull(c_current_addr_sk#16)) + +(44) NativeShuffleExchange +Input [2]: [#15#15, #16#16] +Arguments: hashpartitioning(c_customer_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(45) ShuffleQueryStage +Output [2]: [#15#15, #16#16] +Arguments: X + +(46) AQEShuffleRead +Input [2]: [#15#15, #16#16] +Arguments: coalesced + +(47) InputAdapter +Input [2]: [#15#15, #16#16] + +(48) NativeSort +Input [2]: [#15#15, #16#16] +Arguments: [c_customer_sk#15 ASC NULLS FIRST], false + +(49) NativeSortMergeJoin +Left keys [1]: [ss_customer_sk#6] +Right keys [1]: [c_customer_sk#15] +Join type: Inner +Join condition: None + +(50) NativeProject +Output [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, c_current_addr_sk#16] +Input [9]: [ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, #15#15, #16#16] + +(51) NativeShuffleExchange +Input [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, c_current_addr_sk#16] +Arguments: hashpartitioning(c_current_addr_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(52) ShuffleQueryStage +Output [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, c_current_addr_sk#16] +Arguments: X + +(53) AQEShuffleRead +Input [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, c_current_addr_sk#16] +Arguments: coalesced + +(54) InputAdapter +Input [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, c_current_addr_sk#16] + +(55) NativeSort +Input [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, c_current_addr_sk#16] +Arguments: [c_current_addr_sk#16 ASC NULLS FIRST], false + +(117) Scan parquet +Output [2]: [ca_address_sk#17, ca_zip#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_zip)] +ReadSchema: struct + +(57) InputAdapter +Input [2]: [ca_address_sk#17, ca_zip#18] +Arguments: [#17, #18] + +(58) NativeFilter +Input [2]: [#17#17, #18#18] +Condition : (isnotnull(ca_address_sk#17) AND isnotnull(ca_zip#18)) + +(59) NativeShuffleExchange +Input [2]: [#17#17, #18#18] +Arguments: hashpartitioning(ca_address_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(60) ShuffleQueryStage +Output [2]: [#17#17, #18#18] +Arguments: X + +(61) AQEShuffleRead +Input [2]: [#17#17, #18#18] +Arguments: coalesced + +(62) InputAdapter +Input [2]: [#17#17, #18#18] + +(63) NativeSort +Input [2]: [#17#17, #18#18] +Arguments: [ca_address_sk#17 ASC NULLS FIRST], false + +(64) NativeSortMergeJoin +Left keys [1]: [c_current_addr_sk#16] +Right keys [1]: [ca_address_sk#17] +Join type: Inner +Join condition: None + +(65) NativeProject +Output [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, ca_zip#18] +Input [9]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, c_current_addr_sk#16, #17#17, #18#18] + +(66) NativeShuffleExchange +Input [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, ca_zip#18] +Arguments: hashpartitioning(ss_store_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(67) ShuffleQueryStage +Output [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, ca_zip#18] +Arguments: X + +(68) AQEShuffleRead +Input [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, ca_zip#18] +Arguments: coalesced + +(69) InputAdapter +Input [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, ca_zip#18] + +(70) NativeSort +Input [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, ca_zip#18] +Arguments: [ss_store_sk#7 ASC NULLS FIRST], false + +(125) Scan parquet +Output [2]: [s_store_sk#19, s_zip#20] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_zip), IsNotNull(s_store_sk)] +ReadSchema: struct + +(72) InputAdapter +Input [2]: [s_store_sk#19, s_zip#20] +Arguments: [#19, #20] + +(73) NativeFilter +Input [2]: [#19#19, #20#20] +Condition : (isnotnull(s_zip#20) AND isnotnull(s_store_sk#19)) + +(74) NativeShuffleExchange +Input [2]: [#19#19, #20#20] +Arguments: hashpartitioning(s_store_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(75) ShuffleQueryStage +Output [2]: [#19#19, #20#20] +Arguments: X + +(76) AQEShuffleRead +Input [2]: [#19#19, #20#20] +Arguments: coalesced + +(77) InputAdapter +Input [2]: [#19#19, #20#20] + +(78) NativeSort +Input [2]: [#19#19, #20#20] +Arguments: [s_store_sk#19 ASC NULLS FIRST], false + +(79) SortMergeJoin [codegen id : 1] +Left keys [1]: [ss_store_sk#7] +Right keys [1]: [s_store_sk#19] +Join type: Inner +Join condition: NOT (substr(ca_zip#18, 1, 5) = substr(s_zip#20, 1, 5)) + +(80) Project [codegen id : 1] +Output [5]: [ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13] +Input [9]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, ca_zip#18, #19#19, #20#20] + +(81) HashAggregate [codegen id : 1] +Input [5]: [ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13] +Keys [4]: [i_brand#11, i_brand_id#10, i_manufact_id#12, i_manufact#13] +Functions [1]: [partial_sum(UnscaledValue(ss_ext_sales_price#8))] +Aggregate Attributes [1]: [sum#21] +Results [5]: [i_brand#11, i_brand_id#10, i_manufact_id#12, i_manufact#13, sum#22] + +(82) Exchange +Input [5]: [i_brand#11, i_brand_id#10, i_manufact_id#12, i_manufact#13, sum#22] +Arguments: hashpartitioning(i_brand#11, i_brand_id#10, i_manufact_id#12, i_manufact#13, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(83) ShuffleQueryStage +Output [5]: [i_brand#11, i_brand_id#10, i_manufact_id#12, i_manufact#13, sum#22] +Arguments: X + +(84) AQEShuffleRead +Input [5]: [i_brand#11, i_brand_id#10, i_manufact_id#12, i_manufact#13, sum#22] +Arguments: coalesced + +(85) HashAggregate [codegen id : 2] +Input [5]: [i_brand#11, i_brand_id#10, i_manufact_id#12, i_manufact#13, sum#22] +Keys [4]: [i_brand#11, i_brand_id#10, i_manufact_id#12, i_manufact#13] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#8))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#8))#23] +Results [5]: [i_brand_id#10 AS brand_id#24, i_brand#11 AS brand#25, i_manufact_id#12, i_manufact#13, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#8))#23,17,2) AS ext_price#26] + +(86) TakeOrderedAndProject +Input [5]: [brand_id#24, brand#25, i_manufact_id#12, i_manufact#13, ext_price#26] +Arguments: X, [ext_price#26 DESC NULLS LAST, brand#25 ASC NULLS FIRST, brand_id#24 ASC NULLS FIRST, i_manufact_id#12 ASC NULLS FIRST, i_manufact#13 ASC NULLS FIRST], [brand_id#24, brand#25, i_manufact_id#12, i_manufact#13, ext_price#26] + +(87) Scan parquet +Output [3]: [d_date_sk#1, d_year#2, d_moy#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_moy), IsNotNull(d_year), EqualTo(d_moy,11), EqualTo(d_year,1998), IsNotNull(d_date_sk)] +ReadSchema: struct + +(88) Filter +Input [3]: [d_date_sk#1, d_year#2, d_moy#3] +Condition : ((((isnotnull(d_moy#3) AND isnotnull(d_year#2)) AND (d_moy#3 = 11)) AND (d_year#2 = 1998)) AND isnotnull(d_date_sk#1)) + +(89) Project +Output [1]: [d_date_sk#1] +Input [3]: [d_date_sk#1, d_year#2, d_moy#3] + +(90) Exchange +Input [1]: [d_date_sk#1] +Arguments: hashpartitioning(d_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(91) Sort +Input [1]: [d_date_sk#1] +Arguments: [d_date_sk#1 ASC NULLS FIRST], false, 0 + +(92) Scan parquet +Output [5]: [ss_sold_date_sk#4, ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_item_sk), IsNotNull(ss_customer_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(93) Filter +Input [5]: [ss_sold_date_sk#4, ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8] +Condition : (((isnotnull(ss_sold_date_sk#4) AND isnotnull(ss_item_sk#5)) AND isnotnull(ss_customer_sk#6)) AND isnotnull(ss_store_sk#7)) + +(94) Exchange +Input [5]: [ss_sold_date_sk#4, ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8] +Arguments: hashpartitioning(ss_sold_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(95) Sort +Input [5]: [ss_sold_date_sk#4, ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8] +Arguments: [ss_sold_date_sk#4 ASC NULLS FIRST], false, 0 + +(96) SortMergeJoin +Left keys [1]: [d_date_sk#1] +Right keys [1]: [ss_sold_date_sk#4] +Join type: Inner +Join condition: None + +(97) Project +Output [4]: [ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8] +Input [6]: [d_date_sk#1, ss_sold_date_sk#4, ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8] + +(98) Exchange +Input [4]: [ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8] +Arguments: hashpartitioning(ss_item_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(99) Sort +Input [4]: [ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8] +Arguments: [ss_item_sk#5 ASC NULLS FIRST], false, 0 + +(100) Scan parquet +Output [6]: [i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, i_manager_id#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_manager_id), EqualTo(i_manager_id,8), IsNotNull(i_item_sk)] +ReadSchema: struct + +(101) Filter +Input [6]: [i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, i_manager_id#14] +Condition : ((isnotnull(i_manager_id#14) AND (i_manager_id#14 = 8)) AND isnotnull(i_item_sk#9)) + +(102) Project +Output [5]: [i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13] +Input [6]: [i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, i_manager_id#14] + +(103) Exchange +Input [5]: [i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13] +Arguments: hashpartitioning(i_item_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(104) Sort +Input [5]: [i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13] +Arguments: [i_item_sk#9 ASC NULLS FIRST], false, 0 + +(105) SortMergeJoin +Left keys [1]: [ss_item_sk#5] +Right keys [1]: [i_item_sk#9] +Join type: Inner +Join condition: None + +(106) Project +Output [7]: [ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13] +Input [9]: [ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8, i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13] + +(107) Exchange +Input [7]: [ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13] +Arguments: hashpartitioning(ss_customer_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(108) Sort +Input [7]: [ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13] +Arguments: [ss_customer_sk#6 ASC NULLS FIRST], false, 0 + +(109) Scan parquet +Output [2]: [c_customer_sk#15, c_current_addr_sk#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_current_addr_sk)] +ReadSchema: struct + +(110) Filter +Input [2]: [c_customer_sk#15, c_current_addr_sk#16] +Condition : (isnotnull(c_customer_sk#15) AND isnotnull(c_current_addr_sk#16)) + +(111) Exchange +Input [2]: [c_customer_sk#15, c_current_addr_sk#16] +Arguments: hashpartitioning(c_customer_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(112) Sort +Input [2]: [c_customer_sk#15, c_current_addr_sk#16] +Arguments: [c_customer_sk#15 ASC NULLS FIRST], false, 0 + +(113) SortMergeJoin +Left keys [1]: [ss_customer_sk#6] +Right keys [1]: [c_customer_sk#15] +Join type: Inner +Join condition: None + +(114) Project +Output [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, c_current_addr_sk#16] +Input [9]: [ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, c_customer_sk#15, c_current_addr_sk#16] + +(115) Exchange +Input [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, c_current_addr_sk#16] +Arguments: hashpartitioning(c_current_addr_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(116) Sort +Input [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, c_current_addr_sk#16] +Arguments: [c_current_addr_sk#16 ASC NULLS FIRST], false, 0 + +(117) Scan parquet +Output [2]: [ca_address_sk#17, ca_zip#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_zip)] +ReadSchema: struct + +(118) Filter +Input [2]: [ca_address_sk#17, ca_zip#18] +Condition : (isnotnull(ca_address_sk#17) AND isnotnull(ca_zip#18)) + +(119) Exchange +Input [2]: [ca_address_sk#17, ca_zip#18] +Arguments: hashpartitioning(ca_address_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(120) Sort +Input [2]: [ca_address_sk#17, ca_zip#18] +Arguments: [ca_address_sk#17 ASC NULLS FIRST], false, 0 + +(121) SortMergeJoin +Left keys [1]: [c_current_addr_sk#16] +Right keys [1]: [ca_address_sk#17] +Join type: Inner +Join condition: None + +(122) Project +Output [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, ca_zip#18] +Input [9]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, c_current_addr_sk#16, ca_address_sk#17, ca_zip#18] + +(123) Exchange +Input [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, ca_zip#18] +Arguments: hashpartitioning(ss_store_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(124) Sort +Input [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, ca_zip#18] +Arguments: [ss_store_sk#7 ASC NULLS FIRST], false, 0 + +(125) Scan parquet +Output [2]: [s_store_sk#19, s_zip#20] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_zip), IsNotNull(s_store_sk)] +ReadSchema: struct + +(126) Filter +Input [2]: [s_store_sk#19, s_zip#20] +Condition : (isnotnull(s_zip#20) AND isnotnull(s_store_sk#19)) + +(127) Exchange +Input [2]: [s_store_sk#19, s_zip#20] +Arguments: hashpartitioning(s_store_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(128) Sort +Input [2]: [s_store_sk#19, s_zip#20] +Arguments: [s_store_sk#19 ASC NULLS FIRST], false, 0 + +(129) SortMergeJoin +Left keys [1]: [ss_store_sk#7] +Right keys [1]: [s_store_sk#19] +Join type: Inner +Join condition: NOT (substr(ca_zip#18, 1, 5) = substr(s_zip#20, 1, 5)) + +(130) Project +Output [5]: [ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13] +Input [9]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, ca_zip#18, s_store_sk#19, s_zip#20] + +(131) HashAggregate +Input [5]: [ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13] +Keys [4]: [i_brand#11, i_brand_id#10, i_manufact_id#12, i_manufact#13] +Functions [1]: [partial_sum(UnscaledValue(ss_ext_sales_price#8))] +Aggregate Attributes [1]: [sum#21] +Results [5]: [i_brand#11, i_brand_id#10, i_manufact_id#12, i_manufact#13, sum#22] + +(132) Exchange +Input [5]: [i_brand#11, i_brand_id#10, i_manufact_id#12, i_manufact#13, sum#22] +Arguments: hashpartitioning(i_brand#11, i_brand_id#10, i_manufact_id#12, i_manufact#13, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(133) HashAggregate +Input [5]: [i_brand#11, i_brand_id#10, i_manufact_id#12, i_manufact#13, sum#22] +Keys [4]: [i_brand#11, i_brand_id#10, i_manufact_id#12, i_manufact#13] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#8))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#8))#23] +Results [5]: [i_brand_id#10 AS brand_id#24, i_brand#11 AS brand#25, i_manufact_id#12, i_manufact#13, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#8))#23,17,2) AS ext_price#26] + +(134) TakeOrderedAndProject +Input [5]: [brand_id#24, brand#25, i_manufact_id#12, i_manufact#13, ext_price#26] +Arguments: X, [ext_price#26 DESC NULLS LAST, brand#25 ASC NULLS FIRST, brand_id#24 ASC NULLS FIRST, i_manufact_id#12 ASC NULLS FIRST, i_manufact#13 ASC NULLS FIRST], [brand_id#24, brand#25, i_manufact_id#12, i_manufact#13, ext_price#26] + +(135) AdaptiveSparkPlan +Output [5]: [brand_id#24, brand#25, i_manufact_id#12, i_manufact#13, ext_price#26] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q2.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q2.txt new file mode 100644 index 000000000..bd2f2a6fa --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q2.txt @@ -0,0 +1,748 @@ +== Physical Plan == +AdaptiveSparkPlan (136) ++- == Final Plan == + NativeSort (77) + +- InputAdapter (76) + +- AQEShuffleRead (75) + +- ShuffleQueryStage (74), Statistics(X) + +- NativeShuffleExchange (73) + +- ConvertToNative (72) + +- * Project (71) + +- NativeSortMergeJoin Inner (70) + :- NativeProject (45) + : +- NativeSortMergeJoin Inner (44) + : :- NativeSort (34) + : : +- NativeProject (33) + : : +- NativeHashAggregate (32) + : : +- InputAdapter (31) + : : +- AQEShuffleRead (30) + : : +- ShuffleQueryStage (29), Statistics(X) + : : +- NativeShuffleExchange (28) + : : +- NativeHashAggregate (27) + : : +- NativeProject (26) + : : +- NativeProject (25) + : : +- NativeSortMergeJoin Inner (24) + : : :- NativeSort (15) + : : : +- InputAdapter (14) + : : : +- AQEShuffleRead (13) + : : : +- ShuffleQueryStage (12), Statistics(X) + : : : +- NativeShuffleExchange (11) + : : : +- InputAdapter (10) + : : : +- NativeUnion (9) + : : : :- NativeProject (4) + : : : : +- NativeFilter (3) + : : : : +- InputAdapter (2) + : : : : +- NativeParquetScan (1) + : : : +- NativeProject (8) + : : : +- NativeFilter (7) + : : : +- InputAdapter (6) + : : : +- NativeParquetScan (5) + : : +- NativeSort (23) + : : +- InputAdapter (22) + : : +- AQEShuffleRead (21) + : : +- ShuffleQueryStage (20), Statistics(X) + : : +- NativeShuffleExchange (19) + : : +- NativeFilter (18) + : : +- InputAdapter (17) + : : +- NativeParquetScan (16) + : +- NativeSort (43) + : +- InputAdapter (42) + : +- AQEShuffleRead (41) + : +- ShuffleQueryStage (40), Statistics(X) + : +- NativeShuffleExchange (39) + : +- NativeProject (38) + : +- NativeFilter (37) + : +- InputAdapter (36) + : +- NativeParquetScan (35) + +- NativeSort (69) + +- InputAdapter (68) + +- AQEShuffleRead (67) + +- ShuffleQueryStage (66), Statistics(X) + +- NativeShuffleExchange (65) + +- NativeProject (64) + +- NativeSortMergeJoin Inner (63) + :- NativeSort (53) + : +- NativeProject (52) + : +- NativeHashAggregate (51) + : +- InputAdapter (50) + : +- InputAdapter (49) + : +- AQEShuffleRead (48) + : +- ShuffleQueryStage (47), Statistics(X) + : +- ReusedExchange (46) + +- NativeSort (62) + +- InputAdapter (61) + +- AQEShuffleRead (60) + +- ShuffleQueryStage (59), Statistics(X) + +- NativeShuffleExchange (58) + +- NativeProject (57) + +- NativeFilter (56) + +- InputAdapter (55) + +- NativeParquetScan (54) ++- == Initial Plan == + Sort (135) + +- Exchange (134) + +- Project (133) + +- SortMergeJoin Inner (132) + :- Project (103) + : +- SortMergeJoin Inner (102) + : :- Sort (96) + : : +- HashAggregate (95) + : : +- Exchange (94) + : : +- HashAggregate (93) + : : +- Project (92) + : : +- SortMergeJoin Inner (91) + : : :- Sort (86) + : : : +- Exchange (85) + : : : +- Union (84) + : : : :- Project (80) + : : : : +- Filter (79) + : : : : +- Scan parquet (78) + : : : +- Project (83) + : : : +- Filter (82) + : : : +- Scan parquet (81) + : : +- Sort (90) + : : +- Exchange (89) + : : +- Filter (88) + : : +- Scan parquet (87) + : +- Sort (101) + : +- Exchange (100) + : +- Project (99) + : +- Filter (98) + : +- Scan parquet (97) + +- Sort (131) + +- Exchange (130) + +- Project (129) + +- SortMergeJoin Inner (128) + :- Sort (122) + : +- HashAggregate (121) + : +- Exchange (120) + : +- HashAggregate (119) + : +- Project (118) + : +- SortMergeJoin Inner (117) + : :- Sort (112) + : : +- Exchange (111) + : : +- Union (110) + : : :- Project (106) + : : : +- Filter (105) + : : : +- Scan parquet (104) + : : +- Project (109) + : : +- Filter (108) + : : +- Scan parquet (107) + : +- Sort (116) + : +- Exchange (115) + : +- Filter (114) + : +- Scan parquet (113) + +- Sort (127) + +- Exchange (126) + +- Project (125) + +- Filter (124) + +- Scan parquet (123) + + +(78) Scan parquet +Output [2]: [ws_sold_date_sk#1, ws_ext_sales_price#2] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [2]: [ws_sold_date_sk#1, ws_ext_sales_price#2] +Arguments: [#1, #2] + +(3) NativeFilter +Input [2]: [#1#1, #2#2] +Condition : isnotnull(ws_sold_date_sk#1) + +(4) NativeProject +Output [2]: [ws_sold_date_sk#1 AS sold_date_sk#3, ws_ext_sales_price#2 AS sales_price#4] +Input [2]: [#1#1, #2#2] + +(81) Scan parquet +Output [2]: [cs_sold_date_sk#5, cs_ext_sales_price#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(6) InputAdapter +Input [2]: [cs_sold_date_sk#5, cs_ext_sales_price#6] +Arguments: [#5, #6] + +(7) NativeFilter +Input [2]: [#5#5, #6#6] +Condition : isnotnull(cs_sold_date_sk#5) + +(8) NativeProject +Output [2]: [cs_sold_date_sk#5 AS sold_date_sk#7, cs_ext_sales_price#6 AS sales_price#8] +Input [2]: [#5#5, #6#6] + +(9) NativeUnion +Arguments: [sold_date_sk#3, sales_price#4] + +(10) InputAdapter +Input [2]: [sold_date_sk#3, sales_price#4] +Arguments: [#3, #4] + +(11) NativeShuffleExchange +Input [2]: [#3#3, #4#4] +Arguments: hashpartitioning(sold_date_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(12) ShuffleQueryStage +Output [2]: [#3#3, #4#4] +Arguments: X + +(13) AQEShuffleRead +Input [2]: [#3#3, #4#4] +Arguments: coalesced + +(14) InputAdapter +Input [2]: [#3#3, #4#4] + +(15) NativeSort +Input [2]: [#3#3, #4#4] +Arguments: [sold_date_sk#3 ASC NULLS FIRST], false + +(87) Scan parquet +Output [3]: [d_date_sk#9, d_week_seq#10, d_day_name#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date_sk), IsNotNull(d_week_seq)] +ReadSchema: struct + +(17) InputAdapter +Input [3]: [d_date_sk#9, d_week_seq#10, d_day_name#11] +Arguments: [#9, #10, #11] + +(18) NativeFilter +Input [3]: [#9#9, #10#10, #11#11] +Condition : (isnotnull(d_date_sk#9) AND isnotnull(d_week_seq#10)) + +(19) NativeShuffleExchange +Input [3]: [#9#9, #10#10, #11#11] +Arguments: hashpartitioning(d_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(20) ShuffleQueryStage +Output [3]: [#9#9, #10#10, #11#11] +Arguments: X + +(21) AQEShuffleRead +Input [3]: [#9#9, #10#10, #11#11] +Arguments: coalesced + +(22) InputAdapter +Input [3]: [#9#9, #10#10, #11#11] + +(23) NativeSort +Input [3]: [#9#9, #10#10, #11#11] +Arguments: [d_date_sk#9 ASC NULLS FIRST], false + +(24) NativeSortMergeJoin +Left keys [1]: [sold_date_sk#3] +Right keys [1]: [d_date_sk#9] +Join type: Inner +Join condition: None + +(25) NativeProject +Output [3]: [sales_price#4, d_week_seq#10, d_day_name#11] +Input [5]: [#3#3, #4#4, #9#9, #10#10, #11#11] + +(26) NativeProject +Output [8]: [d_week_seq#10 AS d_week_seq#10, UnscaledValue(CASE WHEN (d_day_name#11 = Sunday) THEN sales_price#4 END) AS _c1#12, UnscaledValue(CASE WHEN (d_day_name#11 = Monday) THEN sales_price#4 END) AS _c2#13, UnscaledValue(CASE WHEN (d_day_name#11 = Tuesday) THEN sales_price#4 END) AS _c3#14, UnscaledValue(CASE WHEN (d_day_name#11 = Wednesday) THEN sales_price#4 END) AS _c4#15, UnscaledValue(CASE WHEN (d_day_name#11 = Thursday) THEN sales_price#4 END) AS _c5#16, UnscaledValue(CASE WHEN (d_day_name#11 = Friday) THEN sales_price#4 END) AS _c6#17, UnscaledValue(CASE WHEN (d_day_name#11 = Saturday) THEN sales_price#4 END) AS _c7#18] +Input [3]: [sales_price#4, d_week_seq#10, d_day_name#11] + +(27) NativeHashAggregate +Input [8]: [d_week_seq#10, _c1#12, _c2#13, _c3#14, _c4#15, _c5#16, _c6#17, _c7#18] +Keys [1]: [d_week_seq#10] +Functions [7]: [partial_sum(_c1#12), partial_sum(_c2#13), partial_sum(_c3#14), partial_sum(_c4#15), partial_sum(_c5#16), partial_sum(_c6#17), partial_sum(_c7#18)] +Aggregate Attributes [7]: [sum#19, sum#20, sum#21, sum#22, sum#23, sum#24, sum#25] +Results [2]: [d_week_seq#10, #26#26] + +(28) NativeShuffleExchange +Input [2]: [d_week_seq#10, #26#26] +Arguments: hashpartitioning(d_week_seq#10, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(29) ShuffleQueryStage +Output [2]: [d_week_seq#10, #26#26] +Arguments: X + +(30) AQEShuffleRead +Input [2]: [d_week_seq#10, #26#26] +Arguments: coalesced + +(31) InputAdapter +Input [2]: [d_week_seq#10, #26#26] + +(32) NativeHashAggregate +Input [2]: [d_week_seq#10, #26#26] +Keys [1]: [d_week_seq#10] +Functions [7]: [sum(UnscaledValue(CASE WHEN (d_day_name#11 = Sunday) THEN sales_price#4 END)), sum(UnscaledValue(CASE WHEN (d_day_name#11 = Monday) THEN sales_price#4 END)), sum(UnscaledValue(CASE WHEN (d_day_name#11 = Tuesday) THEN sales_price#4 END)), sum(UnscaledValue(CASE WHEN (d_day_name#11 = Wednesday) THEN sales_price#4 END)), sum(UnscaledValue(CASE WHEN (d_day_name#11 = Thursday) THEN sales_price#4 END)), sum(UnscaledValue(CASE WHEN (d_day_name#11 = Friday) THEN sales_price#4 END)), sum(UnscaledValue(CASE WHEN (d_day_name#11 = Saturday) THEN sales_price#4 END))] +Aggregate Attributes [7]: [sum(UnscaledValue(CASE WHEN (d_day_name#11 = Sunday) THEN sales_price#4 END))#27, sum(UnscaledValue(CASE WHEN (d_day_name#11 = Monday) THEN sales_price#4 END))#28, sum(UnscaledValue(CASE WHEN (d_day_name#11 = Tuesday) THEN sales_price#4 END))#29, sum(UnscaledValue(CASE WHEN (d_day_name#11 = Wednesday) THEN sales_price#4 END))#30, sum(UnscaledValue(CASE WHEN (d_day_name#11 = Thursday) THEN sales_price#4 END))#31, sum(UnscaledValue(CASE WHEN (d_day_name#11 = Friday) THEN sales_price#4 END))#32, sum(UnscaledValue(CASE WHEN (d_day_name#11 = Saturday) THEN sales_price#4 END))#33] +Results [8]: [d_week_seq#10, sum(UnscaledValue(CASE WHEN (d_day_name#11 = Sunday) THEN sales_price#4 END))#27, sum(UnscaledValue(CASE WHEN (d_day_name#11 = Monday) THEN sales_price#4 END))#28, sum(UnscaledValue(CASE WHEN (d_day_name#11 = Tuesday) THEN sales_price#4 END))#29, sum(UnscaledValue(CASE WHEN (d_day_name#11 = Wednesday) THEN sales_price#4 END))#30, sum(UnscaledValue(CASE WHEN (d_day_name#11 = Thursday) THEN sales_price#4 END))#31, sum(UnscaledValue(CASE WHEN (d_day_name#11 = Friday) THEN sales_price#4 END))#32, sum(UnscaledValue(CASE WHEN (d_day_name#11 = Saturday) THEN sales_price#4 END))#33] + +(33) NativeProject +Output [8]: [d_week_seq#10, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#11 = Sunday) THEN sales_price#4 END))#27,17,2) AS sun_sales#34, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#11 = Monday) THEN sales_price#4 END))#28,17,2) AS mon_sales#35, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#11 = Tuesday) THEN sales_price#4 END))#29,17,2) AS tue_sales#36, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#11 = Wednesday) THEN sales_price#4 END))#30,17,2) AS wed_sales#37, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#11 = Thursday) THEN sales_price#4 END))#31,17,2) AS thu_sales#38, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#11 = Friday) THEN sales_price#4 END))#32,17,2) AS fri_sales#39, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#11 = Saturday) THEN sales_price#4 END))#33,17,2) AS sat_sales#40] +Input [8]: [d_week_seq#10, sum(UnscaledValue(CASE WHEN (d_day_name#11 = Sunday) THEN sales_price#4 END))#27, sum(UnscaledValue(CASE WHEN (d_day_name#11 = Monday) THEN sales_price#4 END))#28, sum(UnscaledValue(CASE WHEN (d_day_name#11 = Tuesday) THEN sales_price#4 END))#29, sum(UnscaledValue(CASE WHEN (d_day_name#11 = Wednesday) THEN sales_price#4 END))#30, sum(UnscaledValue(CASE WHEN (d_day_name#11 = Thursday) THEN sales_price#4 END))#31, sum(UnscaledValue(CASE WHEN (d_day_name#11 = Friday) THEN sales_price#4 END))#32, sum(UnscaledValue(CASE WHEN (d_day_name#11 = Saturday) THEN sales_price#4 END))#33] + +(34) NativeSort +Input [8]: [d_week_seq#10, sun_sales#34, mon_sales#35, tue_sales#36, wed_sales#37, thu_sales#38, fri_sales#39, sat_sales#40] +Arguments: [d_week_seq#10 ASC NULLS FIRST], false + +(97) Scan parquet +Output [2]: [d_week_seq#41, d_year#42] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), IsNotNull(d_week_seq)] +ReadSchema: struct + +(36) InputAdapter +Input [2]: [d_week_seq#41, d_year#42] +Arguments: [#41, #42] + +(37) NativeFilter +Input [2]: [#41#41, #42#42] +Condition : ((isnotnull(d_year#42) AND (d_year#42 = 2001)) AND isnotnull(d_week_seq#41)) + +(38) NativeProject +Output [1]: [d_week_seq#41] +Input [2]: [#41#41, #42#42] + +(39) NativeShuffleExchange +Input [1]: [d_week_seq#41] +Arguments: hashpartitioning(d_week_seq#41, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(40) ShuffleQueryStage +Output [1]: [d_week_seq#41] +Arguments: X + +(41) AQEShuffleRead +Input [1]: [d_week_seq#41] +Arguments: coalesced + +(42) InputAdapter +Input [1]: [d_week_seq#41] + +(43) NativeSort +Input [1]: [d_week_seq#41] +Arguments: [d_week_seq#41 ASC NULLS FIRST], false + +(44) NativeSortMergeJoin +Left keys [1]: [d_week_seq#10] +Right keys [1]: [d_week_seq#41] +Join type: Inner +Join condition: None + +(45) NativeProject +Output [8]: [d_week_seq#10 AS d_week_seq1#43, sun_sales#34 AS sun_sales1#44, mon_sales#35 AS mon_sales1#45, tue_sales#36 AS tue_sales1#46, wed_sales#37 AS wed_sales1#47, thu_sales#38 AS thu_sales1#48, fri_sales#39 AS fri_sales1#49, sat_sales#40 AS sat_sales1#50] +Input [9]: [d_week_seq#10, sun_sales#34, mon_sales#35, tue_sales#36, wed_sales#37, thu_sales#38, fri_sales#39, sat_sales#40, d_week_seq#41] + +(46) ReusedExchange [Reuses operator id: 28] +Output [8]: [d_week_seq#51, sum#52, sum#53, sum#54, sum#55, sum#56, sum#57, sum#58] + +(47) ShuffleQueryStage +Output [8]: [d_week_seq#51, sum#52, sum#53, sum#54, sum#55, sum#56, sum#57, sum#58] +Arguments: X + +(48) AQEShuffleRead +Input [8]: [d_week_seq#51, sum#52, sum#53, sum#54, sum#55, sum#56, sum#57, sum#58] +Arguments: coalesced + +(49) InputAdapter +Input [8]: [d_week_seq#51, sum#52, sum#53, sum#54, sum#55, sum#56, sum#57, sum#58] +Arguments: [#51, #59, #60, #61, #62, #63, #64, #65] + +(50) InputAdapter +Input [8]: [#51#51, #59#52, #60#53, #61#54, #62#55, #63#56, #64#57, #65#58] + +(51) NativeHashAggregate +Input [8]: [#51#51, #59#52, #60#53, #61#54, #62#55, #63#56, #64#57, #65#58] +Keys [1]: [d_week_seq#51] +Functions [7]: [sum(UnscaledValue(CASE WHEN (d_day_name#66 = Sunday) THEN sales_price#4 END)), sum(UnscaledValue(CASE WHEN (d_day_name#66 = Monday) THEN sales_price#4 END)), sum(UnscaledValue(CASE WHEN (d_day_name#66 = Tuesday) THEN sales_price#4 END)), sum(UnscaledValue(CASE WHEN (d_day_name#66 = Wednesday) THEN sales_price#4 END)), sum(UnscaledValue(CASE WHEN (d_day_name#66 = Thursday) THEN sales_price#4 END)), sum(UnscaledValue(CASE WHEN (d_day_name#66 = Friday) THEN sales_price#4 END)), sum(UnscaledValue(CASE WHEN (d_day_name#66 = Saturday) THEN sales_price#4 END))] +Aggregate Attributes [7]: [sum(UnscaledValue(CASE WHEN (d_day_name#66 = Sunday) THEN sales_price#4 END))#27, sum(UnscaledValue(CASE WHEN (d_day_name#66 = Monday) THEN sales_price#4 END))#28, sum(UnscaledValue(CASE WHEN (d_day_name#66 = Tuesday) THEN sales_price#4 END))#29, sum(UnscaledValue(CASE WHEN (d_day_name#66 = Wednesday) THEN sales_price#4 END))#30, sum(UnscaledValue(CASE WHEN (d_day_name#66 = Thursday) THEN sales_price#4 END))#31, sum(UnscaledValue(CASE WHEN (d_day_name#66 = Friday) THEN sales_price#4 END))#32, sum(UnscaledValue(CASE WHEN (d_day_name#66 = Saturday) THEN sales_price#4 END))#33] +Results [8]: [d_week_seq#51, sum(UnscaledValue(CASE WHEN (d_day_name#66 = Sunday) THEN sales_price#4 END))#27, sum(UnscaledValue(CASE WHEN (d_day_name#66 = Monday) THEN sales_price#4 END))#28, sum(UnscaledValue(CASE WHEN (d_day_name#66 = Tuesday) THEN sales_price#4 END))#29, sum(UnscaledValue(CASE WHEN (d_day_name#66 = Wednesday) THEN sales_price#4 END))#30, sum(UnscaledValue(CASE WHEN (d_day_name#66 = Thursday) THEN sales_price#4 END))#31, sum(UnscaledValue(CASE WHEN (d_day_name#66 = Friday) THEN sales_price#4 END))#32, sum(UnscaledValue(CASE WHEN (d_day_name#66 = Saturday) THEN sales_price#4 END))#33] + +(52) NativeProject +Output [8]: [d_week_seq#51, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#66 = Sunday) THEN sales_price#4 END))#27,17,2) AS sun_sales#67, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#66 = Monday) THEN sales_price#4 END))#28,17,2) AS mon_sales#68, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#66 = Tuesday) THEN sales_price#4 END))#29,17,2) AS tue_sales#69, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#66 = Wednesday) THEN sales_price#4 END))#30,17,2) AS wed_sales#70, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#66 = Thursday) THEN sales_price#4 END))#31,17,2) AS thu_sales#71, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#66 = Friday) THEN sales_price#4 END))#32,17,2) AS fri_sales#72, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#66 = Saturday) THEN sales_price#4 END))#33,17,2) AS sat_sales#73] +Input [8]: [d_week_seq#51, sum(UnscaledValue(CASE WHEN (d_day_name#66 = Sunday) THEN sales_price#4 END))#27, sum(UnscaledValue(CASE WHEN (d_day_name#66 = Monday) THEN sales_price#4 END))#28, sum(UnscaledValue(CASE WHEN (d_day_name#66 = Tuesday) THEN sales_price#4 END))#29, sum(UnscaledValue(CASE WHEN (d_day_name#66 = Wednesday) THEN sales_price#4 END))#30, sum(UnscaledValue(CASE WHEN (d_day_name#66 = Thursday) THEN sales_price#4 END))#31, sum(UnscaledValue(CASE WHEN (d_day_name#66 = Friday) THEN sales_price#4 END))#32, sum(UnscaledValue(CASE WHEN (d_day_name#66 = Saturday) THEN sales_price#4 END))#33] + +(53) NativeSort +Input [8]: [d_week_seq#51, sun_sales#67, mon_sales#68, tue_sales#69, wed_sales#70, thu_sales#71, fri_sales#72, sat_sales#73] +Arguments: [d_week_seq#51 ASC NULLS FIRST], false + +(123) Scan parquet +Output [2]: [d_week_seq#74, d_year#75] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2002), IsNotNull(d_week_seq)] +ReadSchema: struct + +(55) InputAdapter +Input [2]: [d_week_seq#74, d_year#75] +Arguments: [#74, #75] + +(56) NativeFilter +Input [2]: [#74#74, #75#75] +Condition : ((isnotnull(d_year#75) AND (d_year#75 = 2002)) AND isnotnull(d_week_seq#74)) + +(57) NativeProject +Output [1]: [d_week_seq#74] +Input [2]: [#74#74, #75#75] + +(58) NativeShuffleExchange +Input [1]: [d_week_seq#74] +Arguments: hashpartitioning(d_week_seq#74, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(59) ShuffleQueryStage +Output [1]: [d_week_seq#74] +Arguments: X + +(60) AQEShuffleRead +Input [1]: [d_week_seq#74] +Arguments: coalesced + +(61) InputAdapter +Input [1]: [d_week_seq#74] + +(62) NativeSort +Input [1]: [d_week_seq#74] +Arguments: [d_week_seq#74 ASC NULLS FIRST], false + +(63) NativeSortMergeJoin +Left keys [1]: [d_week_seq#51] +Right keys [1]: [d_week_seq#74] +Join type: Inner +Join condition: None + +(64) NativeProject +Output [8]: [d_week_seq#51 AS d_week_seq2#76, sun_sales#67 AS sun_sales2#77, mon_sales#68 AS mon_sales2#78, tue_sales#69 AS tue_sales2#79, wed_sales#70 AS wed_sales2#80, thu_sales#71 AS thu_sales2#81, fri_sales#72 AS fri_sales2#82, sat_sales#73 AS sat_sales2#83] +Input [9]: [d_week_seq#51, sun_sales#67, mon_sales#68, tue_sales#69, wed_sales#70, thu_sales#71, fri_sales#72, sat_sales#73, d_week_seq#74] + +(65) NativeShuffleExchange +Input [8]: [d_week_seq2#76, sun_sales2#77, mon_sales2#78, tue_sales2#79, wed_sales2#80, thu_sales2#81, fri_sales2#82, sat_sales2#83] +Arguments: hashpartitioning((d_week_seq2#76 - 53), 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(66) ShuffleQueryStage +Output [8]: [d_week_seq2#76, sun_sales2#77, mon_sales2#78, tue_sales2#79, wed_sales2#80, thu_sales2#81, fri_sales2#82, sat_sales2#83] +Arguments: X + +(67) AQEShuffleRead +Input [8]: [d_week_seq2#76, sun_sales2#77, mon_sales2#78, tue_sales2#79, wed_sales2#80, thu_sales2#81, fri_sales2#82, sat_sales2#83] +Arguments: coalesced + +(68) InputAdapter +Input [8]: [d_week_seq2#76, sun_sales2#77, mon_sales2#78, tue_sales2#79, wed_sales2#80, thu_sales2#81, fri_sales2#82, sat_sales2#83] + +(69) NativeSort +Input [8]: [d_week_seq2#76, sun_sales2#77, mon_sales2#78, tue_sales2#79, wed_sales2#80, thu_sales2#81, fri_sales2#82, sat_sales2#83] +Arguments: [(d_week_seq2#76 - 53) ASC NULLS FIRST], false + +(70) NativeSortMergeJoin +Left keys [1]: [d_week_seq1#43] +Right keys [1]: [(d_week_seq2#76 - 53)] +Join type: Inner +Join condition: None + +(71) Project [codegen id : 1] +Output [8]: [d_week_seq1#43, round((sun_sales1#44 / sun_sales2#77), 2) AS round((sun_sales1 / sun_sales2), 2)#84, round((mon_sales1#45 / mon_sales2#78), 2) AS round((mon_sales1 / mon_sales2), 2)#85, round((tue_sales1#46 / tue_sales2#79), 2) AS round((tue_sales1 / tue_sales2), 2)#86, round((wed_sales1#47 / wed_sales2#80), 2) AS round((wed_sales1 / wed_sales2), 2)#87, round((thu_sales1#48 / thu_sales2#81), 2) AS round((thu_sales1 / thu_sales2), 2)#88, round((fri_sales1#49 / fri_sales2#82), 2) AS round((fri_sales1 / fri_sales2), 2)#89, round((sat_sales1#50 / sat_sales2#83), 2) AS round((sat_sales1 / sat_sales2), 2)#90] +Input [16]: [d_week_seq1#43, sun_sales1#44, mon_sales1#45, tue_sales1#46, wed_sales1#47, thu_sales1#48, fri_sales1#49, sat_sales1#50, d_week_seq2#76, sun_sales2#77, mon_sales2#78, tue_sales2#79, wed_sales2#80, thu_sales2#81, fri_sales2#82, sat_sales2#83] + +(72) ConvertToNative +Input [8]: [d_week_seq1#43, round((sun_sales1 / sun_sales2), 2)#84, round((mon_sales1 / mon_sales2), 2)#85, round((tue_sales1 / tue_sales2), 2)#86, round((wed_sales1 / wed_sales2), 2)#87, round((thu_sales1 / thu_sales2), 2)#88, round((fri_sales1 / fri_sales2), 2)#89, round((sat_sales1 / sat_sales2), 2)#90] + +(73) NativeShuffleExchange +Input [8]: [d_week_seq1#43, round((sun_sales1 / sun_sales2), 2)#84, round((mon_sales1 / mon_sales2), 2)#85, round((tue_sales1 / tue_sales2), 2)#86, round((wed_sales1 / wed_sales2), 2)#87, round((thu_sales1 / thu_sales2), 2)#88, round((fri_sales1 / fri_sales2), 2)#89, round((sat_sales1 / sat_sales2), 2)#90] +Arguments: rangepartitioning(d_week_seq1#43 ASC NULLS FIRST, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(74) ShuffleQueryStage +Output [8]: [d_week_seq1#43, round((sun_sales1 / sun_sales2), 2)#84, round((mon_sales1 / mon_sales2), 2)#85, round((tue_sales1 / tue_sales2), 2)#86, round((wed_sales1 / wed_sales2), 2)#87, round((thu_sales1 / thu_sales2), 2)#88, round((fri_sales1 / fri_sales2), 2)#89, round((sat_sales1 / sat_sales2), 2)#90] +Arguments: X + +(75) AQEShuffleRead +Input [8]: [d_week_seq1#43, round((sun_sales1 / sun_sales2), 2)#84, round((mon_sales1 / mon_sales2), 2)#85, round((tue_sales1 / tue_sales2), 2)#86, round((wed_sales1 / wed_sales2), 2)#87, round((thu_sales1 / thu_sales2), 2)#88, round((fri_sales1 / fri_sales2), 2)#89, round((sat_sales1 / sat_sales2), 2)#90] +Arguments: coalesced + +(76) InputAdapter +Input [8]: [d_week_seq1#43, round((sun_sales1 / sun_sales2), 2)#84, round((mon_sales1 / mon_sales2), 2)#85, round((tue_sales1 / tue_sales2), 2)#86, round((wed_sales1 / wed_sales2), 2)#87, round((thu_sales1 / thu_sales2), 2)#88, round((fri_sales1 / fri_sales2), 2)#89, round((sat_sales1 / sat_sales2), 2)#90] + +(77) NativeSort +Input [8]: [d_week_seq1#43, round((sun_sales1 / sun_sales2), 2)#84, round((mon_sales1 / mon_sales2), 2)#85, round((tue_sales1 / tue_sales2), 2)#86, round((wed_sales1 / wed_sales2), 2)#87, round((thu_sales1 / thu_sales2), 2)#88, round((fri_sales1 / fri_sales2), 2)#89, round((sat_sales1 / sat_sales2), 2)#90] +Arguments: [d_week_seq1#43 ASC NULLS FIRST], true + +(78) Scan parquet +Output [2]: [ws_sold_date_sk#1, ws_ext_sales_price#2] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(79) Filter +Input [2]: [ws_sold_date_sk#1, ws_ext_sales_price#2] +Condition : isnotnull(ws_sold_date_sk#1) + +(80) Project +Output [2]: [ws_sold_date_sk#1 AS sold_date_sk#3, ws_ext_sales_price#2 AS sales_price#4] +Input [2]: [ws_sold_date_sk#1, ws_ext_sales_price#2] + +(81) Scan parquet +Output [2]: [cs_sold_date_sk#5, cs_ext_sales_price#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(82) Filter +Input [2]: [cs_sold_date_sk#5, cs_ext_sales_price#6] +Condition : isnotnull(cs_sold_date_sk#5) + +(83) Project +Output [2]: [cs_sold_date_sk#5 AS sold_date_sk#7, cs_ext_sales_price#6 AS sales_price#8] +Input [2]: [cs_sold_date_sk#5, cs_ext_sales_price#6] + +(84) Union + +(85) Exchange +Input [2]: [sold_date_sk#3, sales_price#4] +Arguments: hashpartitioning(sold_date_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(86) Sort +Input [2]: [sold_date_sk#3, sales_price#4] +Arguments: [sold_date_sk#3 ASC NULLS FIRST], false, 0 + +(87) Scan parquet +Output [3]: [d_date_sk#9, d_week_seq#10, d_day_name#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date_sk), IsNotNull(d_week_seq)] +ReadSchema: struct + +(88) Filter +Input [3]: [d_date_sk#9, d_week_seq#10, d_day_name#11] +Condition : (isnotnull(d_date_sk#9) AND isnotnull(d_week_seq#10)) + +(89) Exchange +Input [3]: [d_date_sk#9, d_week_seq#10, d_day_name#11] +Arguments: hashpartitioning(d_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(90) Sort +Input [3]: [d_date_sk#9, d_week_seq#10, d_day_name#11] +Arguments: [d_date_sk#9 ASC NULLS FIRST], false, 0 + +(91) SortMergeJoin +Left keys [1]: [sold_date_sk#3] +Right keys [1]: [d_date_sk#9] +Join type: Inner +Join condition: None + +(92) Project +Output [3]: [sales_price#4, d_week_seq#10, d_day_name#11] +Input [5]: [sold_date_sk#3, sales_price#4, d_date_sk#9, d_week_seq#10, d_day_name#11] + +(93) HashAggregate +Input [3]: [sales_price#4, d_week_seq#10, d_day_name#11] +Keys [1]: [d_week_seq#10] +Functions [7]: [partial_sum(UnscaledValue(CASE WHEN (d_day_name#11 = Sunday) THEN sales_price#4 END)), partial_sum(UnscaledValue(CASE WHEN (d_day_name#11 = Monday) THEN sales_price#4 END)), partial_sum(UnscaledValue(CASE WHEN (d_day_name#11 = Tuesday) THEN sales_price#4 END)), partial_sum(UnscaledValue(CASE WHEN (d_day_name#11 = Wednesday) THEN sales_price#4 END)), partial_sum(UnscaledValue(CASE WHEN (d_day_name#11 = Thursday) THEN sales_price#4 END)), partial_sum(UnscaledValue(CASE WHEN (d_day_name#11 = Friday) THEN sales_price#4 END)), partial_sum(UnscaledValue(CASE WHEN (d_day_name#11 = Saturday) THEN sales_price#4 END))] +Aggregate Attributes [7]: [sum#19, sum#20, sum#21, sum#22, sum#23, sum#24, sum#25] +Results [8]: [d_week_seq#10, sum#91, sum#92, sum#93, sum#94, sum#95, sum#96, sum#97] + +(94) Exchange +Input [8]: [d_week_seq#10, sum#91, sum#92, sum#93, sum#94, sum#95, sum#96, sum#97] +Arguments: hashpartitioning(d_week_seq#10, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(95) HashAggregate +Input [8]: [d_week_seq#10, sum#91, sum#92, sum#93, sum#94, sum#95, sum#96, sum#97] +Keys [1]: [d_week_seq#10] +Functions [7]: [sum(UnscaledValue(CASE WHEN (d_day_name#11 = Sunday) THEN sales_price#4 END)), sum(UnscaledValue(CASE WHEN (d_day_name#11 = Monday) THEN sales_price#4 END)), sum(UnscaledValue(CASE WHEN (d_day_name#11 = Tuesday) THEN sales_price#4 END)), sum(UnscaledValue(CASE WHEN (d_day_name#11 = Wednesday) THEN sales_price#4 END)), sum(UnscaledValue(CASE WHEN (d_day_name#11 = Thursday) THEN sales_price#4 END)), sum(UnscaledValue(CASE WHEN (d_day_name#11 = Friday) THEN sales_price#4 END)), sum(UnscaledValue(CASE WHEN (d_day_name#11 = Saturday) THEN sales_price#4 END))] +Aggregate Attributes [7]: [sum(UnscaledValue(CASE WHEN (d_day_name#11 = Sunday) THEN sales_price#4 END))#27, sum(UnscaledValue(CASE WHEN (d_day_name#11 = Monday) THEN sales_price#4 END))#28, sum(UnscaledValue(CASE WHEN (d_day_name#11 = Tuesday) THEN sales_price#4 END))#29, sum(UnscaledValue(CASE WHEN (d_day_name#11 = Wednesday) THEN sales_price#4 END))#30, sum(UnscaledValue(CASE WHEN (d_day_name#11 = Thursday) THEN sales_price#4 END))#31, sum(UnscaledValue(CASE WHEN (d_day_name#11 = Friday) THEN sales_price#4 END))#32, sum(UnscaledValue(CASE WHEN (d_day_name#11 = Saturday) THEN sales_price#4 END))#33] +Results [8]: [d_week_seq#10, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#11 = Sunday) THEN sales_price#4 END))#27,17,2) AS sun_sales#34, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#11 = Monday) THEN sales_price#4 END))#28,17,2) AS mon_sales#35, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#11 = Tuesday) THEN sales_price#4 END))#29,17,2) AS tue_sales#36, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#11 = Wednesday) THEN sales_price#4 END))#30,17,2) AS wed_sales#37, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#11 = Thursday) THEN sales_price#4 END))#31,17,2) AS thu_sales#38, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#11 = Friday) THEN sales_price#4 END))#32,17,2) AS fri_sales#39, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#11 = Saturday) THEN sales_price#4 END))#33,17,2) AS sat_sales#40] + +(96) Sort +Input [8]: [d_week_seq#10, sun_sales#34, mon_sales#35, tue_sales#36, wed_sales#37, thu_sales#38, fri_sales#39, sat_sales#40] +Arguments: [d_week_seq#10 ASC NULLS FIRST], false, 0 + +(97) Scan parquet +Output [2]: [d_week_seq#41, d_year#42] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), IsNotNull(d_week_seq)] +ReadSchema: struct + +(98) Filter +Input [2]: [d_week_seq#41, d_year#42] +Condition : ((isnotnull(d_year#42) AND (d_year#42 = 2001)) AND isnotnull(d_week_seq#41)) + +(99) Project +Output [1]: [d_week_seq#41] +Input [2]: [d_week_seq#41, d_year#42] + +(100) Exchange +Input [1]: [d_week_seq#41] +Arguments: hashpartitioning(d_week_seq#41, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(101) Sort +Input [1]: [d_week_seq#41] +Arguments: [d_week_seq#41 ASC NULLS FIRST], false, 0 + +(102) SortMergeJoin +Left keys [1]: [d_week_seq#10] +Right keys [1]: [d_week_seq#41] +Join type: Inner +Join condition: None + +(103) Project +Output [8]: [d_week_seq#10 AS d_week_seq1#43, sun_sales#34 AS sun_sales1#44, mon_sales#35 AS mon_sales1#45, tue_sales#36 AS tue_sales1#46, wed_sales#37 AS wed_sales1#47, thu_sales#38 AS thu_sales1#48, fri_sales#39 AS fri_sales1#49, sat_sales#40 AS sat_sales1#50] +Input [9]: [d_week_seq#10, sun_sales#34, mon_sales#35, tue_sales#36, wed_sales#37, thu_sales#38, fri_sales#39, sat_sales#40, d_week_seq#41] + +(104) Scan parquet +Output [2]: [ws_sold_date_sk#98, ws_ext_sales_price#99] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(105) Filter +Input [2]: [ws_sold_date_sk#98, ws_ext_sales_price#99] +Condition : isnotnull(ws_sold_date_sk#98) + +(106) Project +Output [2]: [ws_sold_date_sk#98 AS sold_date_sk#3, ws_ext_sales_price#99 AS sales_price#4] +Input [2]: [ws_sold_date_sk#98, ws_ext_sales_price#99] + +(107) Scan parquet +Output [2]: [cs_sold_date_sk#100, cs_ext_sales_price#101] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(108) Filter +Input [2]: [cs_sold_date_sk#100, cs_ext_sales_price#101] +Condition : isnotnull(cs_sold_date_sk#100) + +(109) Project +Output [2]: [cs_sold_date_sk#100 AS sold_date_sk#7, cs_ext_sales_price#101 AS sales_price#8] +Input [2]: [cs_sold_date_sk#100, cs_ext_sales_price#101] + +(110) Union + +(111) Exchange +Input [2]: [sold_date_sk#3, sales_price#4] +Arguments: hashpartitioning(sold_date_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(112) Sort +Input [2]: [sold_date_sk#3, sales_price#4] +Arguments: [sold_date_sk#3 ASC NULLS FIRST], false, 0 + +(113) Scan parquet +Output [3]: [d_date_sk#102, d_week_seq#51, d_day_name#66] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date_sk), IsNotNull(d_week_seq)] +ReadSchema: struct + +(114) Filter +Input [3]: [d_date_sk#102, d_week_seq#51, d_day_name#66] +Condition : (isnotnull(d_date_sk#102) AND isnotnull(d_week_seq#51)) + +(115) Exchange +Input [3]: [d_date_sk#102, d_week_seq#51, d_day_name#66] +Arguments: hashpartitioning(d_date_sk#102, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(116) Sort +Input [3]: [d_date_sk#102, d_week_seq#51, d_day_name#66] +Arguments: [d_date_sk#102 ASC NULLS FIRST], false, 0 + +(117) SortMergeJoin +Left keys [1]: [sold_date_sk#3] +Right keys [1]: [d_date_sk#102] +Join type: Inner +Join condition: None + +(118) Project +Output [3]: [sales_price#4, d_week_seq#51, d_day_name#66] +Input [5]: [sold_date_sk#3, sales_price#4, d_date_sk#102, d_week_seq#51, d_day_name#66] + +(119) HashAggregate +Input [3]: [sales_price#4, d_week_seq#51, d_day_name#66] +Keys [1]: [d_week_seq#51] +Functions [7]: [partial_sum(UnscaledValue(CASE WHEN (d_day_name#66 = Sunday) THEN sales_price#4 END)), partial_sum(UnscaledValue(CASE WHEN (d_day_name#66 = Monday) THEN sales_price#4 END)), partial_sum(UnscaledValue(CASE WHEN (d_day_name#66 = Tuesday) THEN sales_price#4 END)), partial_sum(UnscaledValue(CASE WHEN (d_day_name#66 = Wednesday) THEN sales_price#4 END)), partial_sum(UnscaledValue(CASE WHEN (d_day_name#66 = Thursday) THEN sales_price#4 END)), partial_sum(UnscaledValue(CASE WHEN (d_day_name#66 = Friday) THEN sales_price#4 END)), partial_sum(UnscaledValue(CASE WHEN (d_day_name#66 = Saturday) THEN sales_price#4 END))] +Aggregate Attributes [7]: [sum#103, sum#104, sum#105, sum#106, sum#107, sum#108, sum#109] +Results [8]: [d_week_seq#51, sum#52, sum#53, sum#54, sum#55, sum#56, sum#57, sum#58] + +(120) Exchange +Input [8]: [d_week_seq#51, sum#52, sum#53, sum#54, sum#55, sum#56, sum#57, sum#58] +Arguments: hashpartitioning(d_week_seq#51, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(121) HashAggregate +Input [8]: [d_week_seq#51, sum#52, sum#53, sum#54, sum#55, sum#56, sum#57, sum#58] +Keys [1]: [d_week_seq#51] +Functions [7]: [sum(UnscaledValue(CASE WHEN (d_day_name#66 = Sunday) THEN sales_price#4 END)), sum(UnscaledValue(CASE WHEN (d_day_name#66 = Monday) THEN sales_price#4 END)), sum(UnscaledValue(CASE WHEN (d_day_name#66 = Tuesday) THEN sales_price#4 END)), sum(UnscaledValue(CASE WHEN (d_day_name#66 = Wednesday) THEN sales_price#4 END)), sum(UnscaledValue(CASE WHEN (d_day_name#66 = Thursday) THEN sales_price#4 END)), sum(UnscaledValue(CASE WHEN (d_day_name#66 = Friday) THEN sales_price#4 END)), sum(UnscaledValue(CASE WHEN (d_day_name#66 = Saturday) THEN sales_price#4 END))] +Aggregate Attributes [7]: [sum(UnscaledValue(CASE WHEN (d_day_name#66 = Sunday) THEN sales_price#4 END))#27, sum(UnscaledValue(CASE WHEN (d_day_name#66 = Monday) THEN sales_price#4 END))#28, sum(UnscaledValue(CASE WHEN (d_day_name#66 = Tuesday) THEN sales_price#4 END))#29, sum(UnscaledValue(CASE WHEN (d_day_name#66 = Wednesday) THEN sales_price#4 END))#30, sum(UnscaledValue(CASE WHEN (d_day_name#66 = Thursday) THEN sales_price#4 END))#31, sum(UnscaledValue(CASE WHEN (d_day_name#66 = Friday) THEN sales_price#4 END))#32, sum(UnscaledValue(CASE WHEN (d_day_name#66 = Saturday) THEN sales_price#4 END))#33] +Results [8]: [d_week_seq#51, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#66 = Sunday) THEN sales_price#4 END))#27,17,2) AS sun_sales#67, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#66 = Monday) THEN sales_price#4 END))#28,17,2) AS mon_sales#68, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#66 = Tuesday) THEN sales_price#4 END))#29,17,2) AS tue_sales#69, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#66 = Wednesday) THEN sales_price#4 END))#30,17,2) AS wed_sales#70, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#66 = Thursday) THEN sales_price#4 END))#31,17,2) AS thu_sales#71, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#66 = Friday) THEN sales_price#4 END))#32,17,2) AS fri_sales#72, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#66 = Saturday) THEN sales_price#4 END))#33,17,2) AS sat_sales#73] + +(122) Sort +Input [8]: [d_week_seq#51, sun_sales#67, mon_sales#68, tue_sales#69, wed_sales#70, thu_sales#71, fri_sales#72, sat_sales#73] +Arguments: [d_week_seq#51 ASC NULLS FIRST], false, 0 + +(123) Scan parquet +Output [2]: [d_week_seq#74, d_year#75] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2002), IsNotNull(d_week_seq)] +ReadSchema: struct + +(124) Filter +Input [2]: [d_week_seq#74, d_year#75] +Condition : ((isnotnull(d_year#75) AND (d_year#75 = 2002)) AND isnotnull(d_week_seq#74)) + +(125) Project +Output [1]: [d_week_seq#74] +Input [2]: [d_week_seq#74, d_year#75] + +(126) Exchange +Input [1]: [d_week_seq#74] +Arguments: hashpartitioning(d_week_seq#74, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(127) Sort +Input [1]: [d_week_seq#74] +Arguments: [d_week_seq#74 ASC NULLS FIRST], false, 0 + +(128) SortMergeJoin +Left keys [1]: [d_week_seq#51] +Right keys [1]: [d_week_seq#74] +Join type: Inner +Join condition: None + +(129) Project +Output [8]: [d_week_seq#51 AS d_week_seq2#76, sun_sales#67 AS sun_sales2#77, mon_sales#68 AS mon_sales2#78, tue_sales#69 AS tue_sales2#79, wed_sales#70 AS wed_sales2#80, thu_sales#71 AS thu_sales2#81, fri_sales#72 AS fri_sales2#82, sat_sales#73 AS sat_sales2#83] +Input [9]: [d_week_seq#51, sun_sales#67, mon_sales#68, tue_sales#69, wed_sales#70, thu_sales#71, fri_sales#72, sat_sales#73, d_week_seq#74] + +(130) Exchange +Input [8]: [d_week_seq2#76, sun_sales2#77, mon_sales2#78, tue_sales2#79, wed_sales2#80, thu_sales2#81, fri_sales2#82, sat_sales2#83] +Arguments: hashpartitioning((d_week_seq2#76 - 53), 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(131) Sort +Input [8]: [d_week_seq2#76, sun_sales2#77, mon_sales2#78, tue_sales2#79, wed_sales2#80, thu_sales2#81, fri_sales2#82, sat_sales2#83] +Arguments: [(d_week_seq2#76 - 53) ASC NULLS FIRST], false, 0 + +(132) SortMergeJoin +Left keys [1]: [d_week_seq1#43] +Right keys [1]: [(d_week_seq2#76 - 53)] +Join type: Inner +Join condition: None + +(133) Project +Output [8]: [d_week_seq1#43, round((sun_sales1#44 / sun_sales2#77), 2) AS round((sun_sales1 / sun_sales2), 2)#84, round((mon_sales1#45 / mon_sales2#78), 2) AS round((mon_sales1 / mon_sales2), 2)#85, round((tue_sales1#46 / tue_sales2#79), 2) AS round((tue_sales1 / tue_sales2), 2)#86, round((wed_sales1#47 / wed_sales2#80), 2) AS round((wed_sales1 / wed_sales2), 2)#87, round((thu_sales1#48 / thu_sales2#81), 2) AS round((thu_sales1 / thu_sales2), 2)#88, round((fri_sales1#49 / fri_sales2#82), 2) AS round((fri_sales1 / fri_sales2), 2)#89, round((sat_sales1#50 / sat_sales2#83), 2) AS round((sat_sales1 / sat_sales2), 2)#90] +Input [16]: [d_week_seq1#43, sun_sales1#44, mon_sales1#45, tue_sales1#46, wed_sales1#47, thu_sales1#48, fri_sales1#49, sat_sales1#50, d_week_seq2#76, sun_sales2#77, mon_sales2#78, tue_sales2#79, wed_sales2#80, thu_sales2#81, fri_sales2#82, sat_sales2#83] + +(134) Exchange +Input [8]: [d_week_seq1#43, round((sun_sales1 / sun_sales2), 2)#84, round((mon_sales1 / mon_sales2), 2)#85, round((tue_sales1 / tue_sales2), 2)#86, round((wed_sales1 / wed_sales2), 2)#87, round((thu_sales1 / thu_sales2), 2)#88, round((fri_sales1 / fri_sales2), 2)#89, round((sat_sales1 / sat_sales2), 2)#90] +Arguments: rangepartitioning(d_week_seq1#43 ASC NULLS FIRST, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(135) Sort +Input [8]: [d_week_seq1#43, round((sun_sales1 / sun_sales2), 2)#84, round((mon_sales1 / mon_sales2), 2)#85, round((tue_sales1 / tue_sales2), 2)#86, round((wed_sales1 / wed_sales2), 2)#87, round((thu_sales1 / thu_sales2), 2)#88, round((fri_sales1 / fri_sales2), 2)#89, round((sat_sales1 / sat_sales2), 2)#90] +Arguments: [d_week_seq1#43 ASC NULLS FIRST], true, 0 + +(136) AdaptiveSparkPlan +Output [8]: [d_week_seq1#43, round((sun_sales1 / sun_sales2), 2)#84, round((mon_sales1 / mon_sales2), 2)#85, round((tue_sales1 / tue_sales2), 2)#86, round((wed_sales1 / wed_sales2), 2)#87, round((thu_sales1 / thu_sales2), 2)#88, round((fri_sales1 / fri_sales2), 2)#89, round((sat_sales1 / sat_sales2), 2)#90] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q20.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q20.txt new file mode 100644 index 000000000..2d1e4f16e --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q20.txt @@ -0,0 +1,427 @@ +== Physical Plan == +AdaptiveSparkPlan (78) ++- == Final Plan == + TakeOrderedAndProject (50) + +- * Project (49) + +- Window (48) + +- NativeSort (47) + +- InputAdapter (46) + +- AQEShuffleRead (45) + +- ShuffleQueryStage (44), Statistics(X) + +- NativeShuffleExchange (43) + +- NativeProject (42) + +- NativeHashAggregate (41) + +- InputAdapter (40) + +- AQEShuffleRead (39) + +- ShuffleQueryStage (38), Statistics(X) + +- NativeShuffleExchange (37) + +- NativeHashAggregate (36) + +- NativeProject (35) + +- NativeProject (34) + +- NativeSortMergeJoin Inner (33) + :- NativeSort (23) + : +- InputAdapter (22) + : +- AQEShuffleRead (21) + : +- ShuffleQueryStage (20), Statistics(X) + : +- NativeShuffleExchange (19) + : +- NativeProject (18) + : +- NativeSortMergeJoin Inner (17) + : :- NativeSort (8) + : : +- InputAdapter (7) + : : +- AQEShuffleRead (6) + : : +- ShuffleQueryStage (5), Statistics(X) + : : +- NativeShuffleExchange (4) + : : +- NativeFilter (3) + : : +- InputAdapter (2) + : : +- NativeParquetScan (1) + : +- NativeSort (16) + : +- InputAdapter (15) + : +- AQEShuffleRead (14) + : +- ShuffleQueryStage (13), Statistics(X) + : +- NativeShuffleExchange (12) + : +- NativeFilter (11) + : +- InputAdapter (10) + : +- NativeParquetScan (9) + +- NativeSort (32) + +- InputAdapter (31) + +- AQEShuffleRead (30) + +- ShuffleQueryStage (29), Statistics(X) + +- NativeShuffleExchange (28) + +- NativeProject (27) + +- NativeFilter (26) + +- InputAdapter (25) + +- NativeParquetScan (24) ++- == Initial Plan == + TakeOrderedAndProject (77) + +- Project (76) + +- Window (75) + +- Sort (74) + +- Exchange (73) + +- HashAggregate (72) + +- Exchange (71) + +- HashAggregate (70) + +- Project (69) + +- SortMergeJoin Inner (68) + :- Sort (62) + : +- Exchange (61) + : +- Project (60) + : +- SortMergeJoin Inner (59) + : :- Sort (54) + : : +- Exchange (53) + : : +- Filter (52) + : : +- Scan parquet (51) + : +- Sort (58) + : +- Exchange (57) + : +- Filter (56) + : +- Scan parquet (55) + +- Sort (67) + +- Exchange (66) + +- Project (65) + +- Filter (64) + +- Scan parquet (63) + + +(51) Scan parquet +Output [3]: [cs_sold_date_sk#1, cs_item_sk#2, cs_ext_sales_price#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [cs_sold_date_sk#1, cs_item_sk#2, cs_ext_sales_price#3] +Arguments: [#1, #2, #3] + +(3) NativeFilter +Input [3]: [#1#1, #2#2, #3#3] +Condition : (isnotnull(cs_item_sk#2) AND isnotnull(cs_sold_date_sk#1)) + +(4) NativeShuffleExchange +Input [3]: [#1#1, #2#2, #3#3] +Arguments: hashpartitioning(cs_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [3]: [#1#1, #2#2, #3#3] +Arguments: X + +(6) AQEShuffleRead +Input [3]: [#1#1, #2#2, #3#3] +Arguments: coalesced + +(7) InputAdapter +Input [3]: [#1#1, #2#2, #3#3] + +(8) NativeSort +Input [3]: [#1#1, #2#2, #3#3] +Arguments: [cs_item_sk#2 ASC NULLS FIRST], false + +(55) Scan parquet +Output [6]: [i_item_sk#4, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(i_category, [Books,Home,Sports]), IsNotNull(i_item_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [6]: [i_item_sk#4, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Arguments: [#4, #5, #6, #7, #8, #9] + +(11) NativeFilter +Input [6]: [#4#4, #5#5, #6#6, #7#7, #8#8, #9#9] +Condition : (i_category#9 IN (Sports,Books,Home) AND isnotnull(i_item_sk#4)) + +(12) NativeShuffleExchange +Input [6]: [#4#4, #5#5, #6#6, #7#7, #8#8, #9#9] +Arguments: hashpartitioning(i_item_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [6]: [#4#4, #5#5, #6#6, #7#7, #8#8, #9#9] +Arguments: X + +(14) AQEShuffleRead +Input [6]: [#4#4, #5#5, #6#6, #7#7, #8#8, #9#9] +Arguments: coalesced + +(15) InputAdapter +Input [6]: [#4#4, #5#5, #6#6, #7#7, #8#8, #9#9] + +(16) NativeSort +Input [6]: [#4#4, #5#5, #6#6, #7#7, #8#8, #9#9] +Arguments: [i_item_sk#4 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [1]: [cs_item_sk#2] +Right keys [1]: [i_item_sk#4] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [7]: [cs_sold_date_sk#1, cs_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Input [9]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9] + +(19) NativeShuffleExchange +Input [7]: [cs_sold_date_sk#1, cs_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Arguments: hashpartitioning(cs_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [7]: [cs_sold_date_sk#1, cs_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Arguments: X + +(21) AQEShuffleRead +Input [7]: [cs_sold_date_sk#1, cs_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Arguments: coalesced + +(22) InputAdapter +Input [7]: [cs_sold_date_sk#1, cs_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] + +(23) NativeSort +Input [7]: [cs_sold_date_sk#1, cs_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Arguments: [cs_sold_date_sk#1 ASC NULLS FIRST], false + +(63) Scan parquet +Output [2]: [d_date_sk#10, d_date#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,1999-02-22), LessThanOrEqual(d_date,1999-03-24), IsNotNull(d_date_sk)] +ReadSchema: struct + +(25) InputAdapter +Input [2]: [d_date_sk#10, d_date#11] +Arguments: [#10, #11] + +(26) NativeFilter +Input [2]: [#10#10, #11#11] +Condition : (((isnotnull(d_date#11) AND (d_date#11 >= 1999-02-22)) AND (d_date#11 <= 1999-03-24)) AND isnotnull(d_date_sk#10)) + +(27) NativeProject +Output [1]: [d_date_sk#10] +Input [2]: [#10#10, #11#11] + +(28) NativeShuffleExchange +Input [1]: [d_date_sk#10] +Arguments: hashpartitioning(d_date_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(29) ShuffleQueryStage +Output [1]: [d_date_sk#10] +Arguments: X + +(30) AQEShuffleRead +Input [1]: [d_date_sk#10] +Arguments: coalesced + +(31) InputAdapter +Input [1]: [d_date_sk#10] + +(32) NativeSort +Input [1]: [d_date_sk#10] +Arguments: [d_date_sk#10 ASC NULLS FIRST], false + +(33) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#1] +Right keys [1]: [d_date_sk#10] +Join type: Inner +Join condition: None + +(34) NativeProject +Output [6]: [cs_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Input [8]: [cs_sold_date_sk#1, cs_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9, d_date_sk#10] + +(35) NativeProject +Output [6]: [i_item_id#5 AS i_item_id#5, i_item_desc#6 AS i_item_desc#6, i_category#9 AS i_category#9, i_class#8 AS i_class#8, i_current_price#7 AS i_current_price#7, UnscaledValue(cs_ext_sales_price#3) AS _c5#12] +Input [6]: [cs_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] + +(36) NativeHashAggregate +Input [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, _c5#12] +Keys [5]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7] +Functions [1]: [partial_sum(_c5#12)] +Aggregate Attributes [1]: [sum#13] +Results [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, #14#14] + +(37) NativeShuffleExchange +Input [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, #14#14] +Arguments: hashpartitioning(i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(38) ShuffleQueryStage +Output [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, #14#14] +Arguments: X + +(39) AQEShuffleRead +Input [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, #14#14] +Arguments: coalesced + +(40) InputAdapter +Input [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, #14#14] + +(41) NativeHashAggregate +Input [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, #14#14] +Keys [5]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7] +Functions [1]: [sum(UnscaledValue(cs_ext_sales_price#3))] +Aggregate Attributes [1]: [sum(UnscaledValue(cs_ext_sales_price#3))#15] +Results [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, sum(UnscaledValue(cs_ext_sales_price#3))#15] + +(42) NativeProject +Output [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, MakeDecimal(sum(UnscaledValue(cs_ext_sales_price#3))#15,17,2) AS itemrevenue#16, MakeDecimal(sum(UnscaledValue(cs_ext_sales_price#3))#15,17,2) AS _w0#17, i_item_id#5] +Input [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, sum(UnscaledValue(cs_ext_sales_price#3))#15] + +(43) NativeShuffleExchange +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5] +Arguments: hashpartitioning(i_class#8, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) ShuffleQueryStage +Output [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5] +Arguments: X + +(45) AQEShuffleRead +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5] +Arguments: coalesced + +(46) InputAdapter +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5] + +(47) NativeSort +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5] +Arguments: [i_class#8 ASC NULLS FIRST], false + +(48) Window +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5] +Arguments: [sum(_w0#17) windowspecdefinition(i_class#8, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#18], [i_class#8] + +(49) Project [codegen id : 1] +Output [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, ((_w0#17 * 100) / _we0#18) AS revenueratio#19, i_item_id#5] +Input [8]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5, _we0#18] + +(50) TakeOrderedAndProject +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, revenueratio#19, i_item_id#5] +Arguments: X, [i_category#9 ASC NULLS FIRST, i_class#8 ASC NULLS FIRST, i_item_id#5 ASC NULLS FIRST, i_item_desc#6 ASC NULLS FIRST, revenueratio#19 ASC NULLS FIRST], [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, revenueratio#19] + +(51) Scan parquet +Output [3]: [cs_sold_date_sk#1, cs_item_sk#2, cs_ext_sales_price#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(52) Filter +Input [3]: [cs_sold_date_sk#1, cs_item_sk#2, cs_ext_sales_price#3] +Condition : (isnotnull(cs_item_sk#2) AND isnotnull(cs_sold_date_sk#1)) + +(53) Exchange +Input [3]: [cs_sold_date_sk#1, cs_item_sk#2, cs_ext_sales_price#3] +Arguments: hashpartitioning(cs_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(54) Sort +Input [3]: [cs_sold_date_sk#1, cs_item_sk#2, cs_ext_sales_price#3] +Arguments: [cs_item_sk#2 ASC NULLS FIRST], false, 0 + +(55) Scan parquet +Output [6]: [i_item_sk#4, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(i_category, [Books,Home,Sports]), IsNotNull(i_item_sk)] +ReadSchema: struct + +(56) Filter +Input [6]: [i_item_sk#4, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Condition : (i_category#9 IN (Sports,Books,Home) AND isnotnull(i_item_sk#4)) + +(57) Exchange +Input [6]: [i_item_sk#4, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Arguments: hashpartitioning(i_item_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(58) Sort +Input [6]: [i_item_sk#4, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Arguments: [i_item_sk#4 ASC NULLS FIRST], false, 0 + +(59) SortMergeJoin +Left keys [1]: [cs_item_sk#2] +Right keys [1]: [i_item_sk#4] +Join type: Inner +Join condition: None + +(60) Project +Output [7]: [cs_sold_date_sk#1, cs_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Input [9]: [cs_sold_date_sk#1, cs_item_sk#2, cs_ext_sales_price#3, i_item_sk#4, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] + +(61) Exchange +Input [7]: [cs_sold_date_sk#1, cs_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Arguments: hashpartitioning(cs_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(62) Sort +Input [7]: [cs_sold_date_sk#1, cs_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Arguments: [cs_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(63) Scan parquet +Output [2]: [d_date_sk#10, d_date#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,1999-02-22), LessThanOrEqual(d_date,1999-03-24), IsNotNull(d_date_sk)] +ReadSchema: struct + +(64) Filter +Input [2]: [d_date_sk#10, d_date#11] +Condition : (((isnotnull(d_date#11) AND (d_date#11 >= 1999-02-22)) AND (d_date#11 <= 1999-03-24)) AND isnotnull(d_date_sk#10)) + +(65) Project +Output [1]: [d_date_sk#10] +Input [2]: [d_date_sk#10, d_date#11] + +(66) Exchange +Input [1]: [d_date_sk#10] +Arguments: hashpartitioning(d_date_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(67) Sort +Input [1]: [d_date_sk#10] +Arguments: [d_date_sk#10 ASC NULLS FIRST], false, 0 + +(68) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#1] +Right keys [1]: [d_date_sk#10] +Join type: Inner +Join condition: None + +(69) Project +Output [6]: [cs_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Input [8]: [cs_sold_date_sk#1, cs_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9, d_date_sk#10] + +(70) HashAggregate +Input [6]: [cs_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Keys [5]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7] +Functions [1]: [partial_sum(UnscaledValue(cs_ext_sales_price#3))] +Aggregate Attributes [1]: [sum#13] +Results [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, sum#20] + +(71) Exchange +Input [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, sum#20] +Arguments: hashpartitioning(i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(72) HashAggregate +Input [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, sum#20] +Keys [5]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7] +Functions [1]: [sum(UnscaledValue(cs_ext_sales_price#3))] +Aggregate Attributes [1]: [sum(UnscaledValue(cs_ext_sales_price#3))#15] +Results [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, MakeDecimal(sum(UnscaledValue(cs_ext_sales_price#3))#15,17,2) AS itemrevenue#16, MakeDecimal(sum(UnscaledValue(cs_ext_sales_price#3))#15,17,2) AS _w0#17, i_item_id#5] + +(73) Exchange +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5] +Arguments: hashpartitioning(i_class#8, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(74) Sort +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5] +Arguments: [i_class#8 ASC NULLS FIRST], false, 0 + +(75) Window +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5] +Arguments: [sum(_w0#17) windowspecdefinition(i_class#8, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#18], [i_class#8] + +(76) Project +Output [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, ((_w0#17 * 100) / _we0#18) AS revenueratio#19, i_item_id#5] +Input [8]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5, _we0#18] + +(77) TakeOrderedAndProject +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, revenueratio#19, i_item_id#5] +Arguments: X, [i_category#9 ASC NULLS FIRST, i_class#8 ASC NULLS FIRST, i_item_id#5 ASC NULLS FIRST, i_item_desc#6 ASC NULLS FIRST, revenueratio#19 ASC NULLS FIRST], [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, revenueratio#19] + +(78) AdaptiveSparkPlan +Output [6]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, revenueratio#19] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q21.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q21.txt new file mode 100644 index 000000000..57c06912c --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q21.txt @@ -0,0 +1,506 @@ +== Physical Plan == +AdaptiveSparkPlan (92) ++- == Final Plan == + NativeTakeOrdered (59) + +- NativeFilter (58) + +- NativeProject (57) + +- NativeHashAggregate (56) + +- InputAdapter (55) + +- AQEShuffleRead (54) + +- ShuffleQueryStage (53), Statistics(X) + +- NativeShuffleExchange (52) + +- NativeHashAggregate (51) + +- NativeProject (50) + +- NativeProject (49) + +- NativeSortMergeJoin Inner (48) + :- NativeSort (39) + : +- InputAdapter (38) + : +- AQEShuffleRead (37) + : +- ShuffleQueryStage (36), Statistics(X) + : +- NativeShuffleExchange (35) + : +- NativeProject (34) + : +- NativeSortMergeJoin Inner (33) + : :- NativeSort (23) + : : +- InputAdapter (22) + : : +- AQEShuffleRead (21) + : : +- ShuffleQueryStage (20), Statistics(X) + : : +- NativeShuffleExchange (19) + : : +- NativeProject (18) + : : +- NativeSortMergeJoin Inner (17) + : : :- NativeSort (8) + : : : +- InputAdapter (7) + : : : +- AQEShuffleRead (6) + : : : +- ShuffleQueryStage (5), Statistics(X) + : : : +- NativeShuffleExchange (4) + : : : +- NativeFilter (3) + : : : +- InputAdapter (2) + : : : +- NativeParquetScan (1) + : : +- NativeSort (16) + : : +- InputAdapter (15) + : : +- AQEShuffleRead (14) + : : +- ShuffleQueryStage (13), Statistics(X) + : : +- NativeShuffleExchange (12) + : : +- NativeFilter (11) + : : +- InputAdapter (10) + : : +- NativeParquetScan (9) + : +- NativeSort (32) + : +- InputAdapter (31) + : +- AQEShuffleRead (30) + : +- ShuffleQueryStage (29), Statistics(X) + : +- NativeShuffleExchange (28) + : +- NativeProject (27) + : +- NativeFilter (26) + : +- InputAdapter (25) + : +- NativeParquetScan (24) + +- NativeSort (47) + +- InputAdapter (46) + +- AQEShuffleRead (45) + +- ShuffleQueryStage (44), Statistics(X) + +- NativeShuffleExchange (43) + +- NativeFilter (42) + +- InputAdapter (41) + +- NativeParquetScan (40) ++- == Initial Plan == + TakeOrderedAndProject (91) + +- Filter (90) + +- HashAggregate (89) + +- Exchange (88) + +- HashAggregate (87) + +- Project (86) + +- SortMergeJoin Inner (85) + :- Sort (80) + : +- Exchange (79) + : +- Project (78) + : +- SortMergeJoin Inner (77) + : :- Sort (71) + : : +- Exchange (70) + : : +- Project (69) + : : +- SortMergeJoin Inner (68) + : : :- Sort (63) + : : : +- Exchange (62) + : : : +- Filter (61) + : : : +- Scan parquet (60) + : : +- Sort (67) + : : +- Exchange (66) + : : +- Filter (65) + : : +- Scan parquet (64) + : +- Sort (76) + : +- Exchange (75) + : +- Project (74) + : +- Filter (73) + : +- Scan parquet (72) + +- Sort (84) + +- Exchange (83) + +- Filter (82) + +- Scan parquet (81) + + +(60) Scan parquet +Output [4]: [inv_date_sk#1, inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(inv_warehouse_sk), IsNotNull(inv_item_sk), IsNotNull(inv_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [4]: [inv_date_sk#1, inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Arguments: [#1, #2, #3, #4] + +(3) NativeFilter +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Condition : ((isnotnull(inv_warehouse_sk#3) AND isnotnull(inv_item_sk#2)) AND isnotnull(inv_date_sk#1)) + +(4) NativeShuffleExchange +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: hashpartitioning(inv_warehouse_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: X + +(6) AQEShuffleRead +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: coalesced + +(7) InputAdapter +Input [4]: [#1#1, #2#2, #3#3, #4#4] + +(8) NativeSort +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: [inv_warehouse_sk#3 ASC NULLS FIRST], false + +(64) Scan parquet +Output [2]: [w_warehouse_sk#5, w_warehouse_name#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(w_warehouse_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [w_warehouse_sk#5, w_warehouse_name#6] +Arguments: [#5, #6] + +(11) NativeFilter +Input [2]: [#5#5, #6#6] +Condition : isnotnull(w_warehouse_sk#5) + +(12) NativeShuffleExchange +Input [2]: [#5#5, #6#6] +Arguments: hashpartitioning(w_warehouse_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [2]: [#5#5, #6#6] +Arguments: X + +(14) AQEShuffleRead +Input [2]: [#5#5, #6#6] +Arguments: coalesced + +(15) InputAdapter +Input [2]: [#5#5, #6#6] + +(16) NativeSort +Input [2]: [#5#5, #6#6] +Arguments: [w_warehouse_sk#5 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [1]: [inv_warehouse_sk#3] +Right keys [1]: [w_warehouse_sk#5] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [4]: [inv_date_sk#1, inv_item_sk#2, inv_quantity_on_hand#4, w_warehouse_name#6] +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] + +(19) NativeShuffleExchange +Input [4]: [inv_date_sk#1, inv_item_sk#2, inv_quantity_on_hand#4, w_warehouse_name#6] +Arguments: hashpartitioning(inv_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [4]: [inv_date_sk#1, inv_item_sk#2, inv_quantity_on_hand#4, w_warehouse_name#6] +Arguments: X + +(21) AQEShuffleRead +Input [4]: [inv_date_sk#1, inv_item_sk#2, inv_quantity_on_hand#4, w_warehouse_name#6] +Arguments: coalesced + +(22) InputAdapter +Input [4]: [inv_date_sk#1, inv_item_sk#2, inv_quantity_on_hand#4, w_warehouse_name#6] + +(23) NativeSort +Input [4]: [inv_date_sk#1, inv_item_sk#2, inv_quantity_on_hand#4, w_warehouse_name#6] +Arguments: [inv_item_sk#2 ASC NULLS FIRST], false + +(72) Scan parquet +Output [3]: [i_item_sk#7, i_item_id#8, i_current_price#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_current_price), GreaterThanOrEqual(i_current_price,0.99), LessThanOrEqual(i_current_price,1.49), IsNotNull(i_item_sk)] +ReadSchema: struct + +(25) InputAdapter +Input [3]: [i_item_sk#7, i_item_id#8, i_current_price#9] +Arguments: [#7, #8, #9] + +(26) NativeFilter +Input [3]: [#7#7, #8#8, #9#9] +Condition : (((isnotnull(i_current_price#9) AND (i_current_price#9 >= 0.99)) AND (i_current_price#9 <= 1.49)) AND isnotnull(i_item_sk#7)) + +(27) NativeProject +Output [2]: [i_item_sk#7, i_item_id#8] +Input [3]: [#7#7, #8#8, #9#9] + +(28) NativeShuffleExchange +Input [2]: [i_item_sk#7, i_item_id#8] +Arguments: hashpartitioning(i_item_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(29) ShuffleQueryStage +Output [2]: [i_item_sk#7, i_item_id#8] +Arguments: X + +(30) AQEShuffleRead +Input [2]: [i_item_sk#7, i_item_id#8] +Arguments: coalesced + +(31) InputAdapter +Input [2]: [i_item_sk#7, i_item_id#8] + +(32) NativeSort +Input [2]: [i_item_sk#7, i_item_id#8] +Arguments: [i_item_sk#7 ASC NULLS FIRST], false + +(33) NativeSortMergeJoin +Left keys [1]: [inv_item_sk#2] +Right keys [1]: [i_item_sk#7] +Join type: Inner +Join condition: None + +(34) NativeProject +Output [4]: [inv_date_sk#1, inv_quantity_on_hand#4, w_warehouse_name#6, i_item_id#8] +Input [6]: [inv_date_sk#1, inv_item_sk#2, inv_quantity_on_hand#4, w_warehouse_name#6, i_item_sk#7, i_item_id#8] + +(35) NativeShuffleExchange +Input [4]: [inv_date_sk#1, inv_quantity_on_hand#4, w_warehouse_name#6, i_item_id#8] +Arguments: hashpartitioning(inv_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(36) ShuffleQueryStage +Output [4]: [inv_date_sk#1, inv_quantity_on_hand#4, w_warehouse_name#6, i_item_id#8] +Arguments: X + +(37) AQEShuffleRead +Input [4]: [inv_date_sk#1, inv_quantity_on_hand#4, w_warehouse_name#6, i_item_id#8] +Arguments: coalesced + +(38) InputAdapter +Input [4]: [inv_date_sk#1, inv_quantity_on_hand#4, w_warehouse_name#6, i_item_id#8] + +(39) NativeSort +Input [4]: [inv_date_sk#1, inv_quantity_on_hand#4, w_warehouse_name#6, i_item_id#8] +Arguments: [inv_date_sk#1 ASC NULLS FIRST], false + +(81) Scan parquet +Output [2]: [d_date_sk#10, d_date#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,2000-02-10), LessThanOrEqual(d_date,2000-04-10), IsNotNull(d_date_sk)] +ReadSchema: struct + +(41) InputAdapter +Input [2]: [d_date_sk#10, d_date#11] +Arguments: [#10, #11] + +(42) NativeFilter +Input [2]: [#10#10, #11#11] +Condition : (((isnotnull(d_date#11) AND (d_date#11 >= 2000-02-10)) AND (d_date#11 <= 2000-04-10)) AND isnotnull(d_date_sk#10)) + +(43) NativeShuffleExchange +Input [2]: [#10#10, #11#11] +Arguments: hashpartitioning(d_date_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) ShuffleQueryStage +Output [2]: [#10#10, #11#11] +Arguments: X + +(45) AQEShuffleRead +Input [2]: [#10#10, #11#11] +Arguments: coalesced + +(46) InputAdapter +Input [2]: [#10#10, #11#11] + +(47) NativeSort +Input [2]: [#10#10, #11#11] +Arguments: [d_date_sk#10 ASC NULLS FIRST], false + +(48) NativeSortMergeJoin +Left keys [1]: [inv_date_sk#1] +Right keys [1]: [d_date_sk#10] +Join type: Inner +Join condition: None + +(49) NativeProject +Output [4]: [inv_quantity_on_hand#4, w_warehouse_name#6, i_item_id#8, d_date#11] +Input [6]: [inv_date_sk#1, inv_quantity_on_hand#4, w_warehouse_name#6, i_item_id#8, #10#10, #11#11] + +(50) NativeProject +Output [4]: [w_warehouse_name#6 AS w_warehouse_name#6, i_item_id#8 AS i_item_id#8, CASE WHEN (d_date#11 < 2000-03-11) THEN inv_quantity_on_hand#4 ELSE 0 END AS _c2#12, CASE WHEN (d_date#11 >= 2000-03-11) THEN inv_quantity_on_hand#4 ELSE 0 END AS _c3#13] +Input [4]: [inv_quantity_on_hand#4, w_warehouse_name#6, i_item_id#8, d_date#11] + +(51) NativeHashAggregate +Input [4]: [w_warehouse_name#6, i_item_id#8, _c2#12, _c3#13] +Keys [2]: [w_warehouse_name#6, i_item_id#8] +Functions [2]: [partial_sum(_c2#12), partial_sum(_c3#13)] +Aggregate Attributes [2]: [sum#14, sum#15] +Results [3]: [w_warehouse_name#6, i_item_id#8, #16#16] + +(52) NativeShuffleExchange +Input [3]: [w_warehouse_name#6, i_item_id#8, #16#16] +Arguments: hashpartitioning(w_warehouse_name#6, i_item_id#8, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(53) ShuffleQueryStage +Output [3]: [w_warehouse_name#6, i_item_id#8, #16#16] +Arguments: X + +(54) AQEShuffleRead +Input [3]: [w_warehouse_name#6, i_item_id#8, #16#16] +Arguments: coalesced + +(55) InputAdapter +Input [3]: [w_warehouse_name#6, i_item_id#8, #16#16] + +(56) NativeHashAggregate +Input [3]: [w_warehouse_name#6, i_item_id#8, #16#16] +Keys [2]: [w_warehouse_name#6, i_item_id#8] +Functions [2]: [sum(CASE WHEN (d_date#11 < 2000-03-11) THEN inv_quantity_on_hand#4 ELSE 0 END), sum(CASE WHEN (d_date#11 >= 2000-03-11) THEN inv_quantity_on_hand#4 ELSE 0 END)] +Aggregate Attributes [2]: [sum(CASE WHEN (d_date#11 < 2000-03-11) THEN inv_quantity_on_hand#4 ELSE 0 END)#17, sum(CASE WHEN (d_date#11 >= 2000-03-11) THEN inv_quantity_on_hand#4 ELSE 0 END)#18] +Results [4]: [w_warehouse_name#6, i_item_id#8, sum(CASE WHEN (d_date#11 < 2000-03-11) THEN inv_quantity_on_hand#4 ELSE 0 END)#17, sum(CASE WHEN (d_date#11 >= 2000-03-11) THEN inv_quantity_on_hand#4 ELSE 0 END)#18] + +(57) NativeProject +Output [4]: [w_warehouse_name#6, i_item_id#8, sum(CASE WHEN (d_date#11 < 2000-03-11) THEN inv_quantity_on_hand#4 ELSE 0 END)#17 AS inv_before#19, sum(CASE WHEN (d_date#11 >= 2000-03-11) THEN inv_quantity_on_hand#4 ELSE 0 END)#18 AS inv_after#20] +Input [4]: [w_warehouse_name#6, i_item_id#8, sum(CASE WHEN (d_date#11 < 2000-03-11) THEN inv_quantity_on_hand#4 ELSE 0 END)#17, sum(CASE WHEN (d_date#11 >= 2000-03-11) THEN inv_quantity_on_hand#4 ELSE 0 END)#18] + +(58) NativeFilter +Input [4]: [w_warehouse_name#6, i_item_id#8, inv_before#19, inv_after#20] +Condition : (CASE WHEN (inv_before#19 > 0) THEN ((cast(inv_after#20 as double) / cast(inv_before#19 as double)) >= 0.666667) END AND CASE WHEN (inv_before#19 > 0) THEN ((cast(inv_after#20 as double) / cast(inv_before#19 as double)) <= 1.5) END) + +(59) NativeTakeOrdered +Input [4]: [w_warehouse_name#6, i_item_id#8, inv_before#19, inv_after#20] +Arguments: X, [w_warehouse_name#6 ASC NULLS FIRST, i_item_id#8 ASC NULLS FIRST] + +(60) Scan parquet +Output [4]: [inv_date_sk#1, inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(inv_warehouse_sk), IsNotNull(inv_item_sk), IsNotNull(inv_date_sk)] +ReadSchema: struct + +(61) Filter +Input [4]: [inv_date_sk#1, inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Condition : ((isnotnull(inv_warehouse_sk#3) AND isnotnull(inv_item_sk#2)) AND isnotnull(inv_date_sk#1)) + +(62) Exchange +Input [4]: [inv_date_sk#1, inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Arguments: hashpartitioning(inv_warehouse_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(63) Sort +Input [4]: [inv_date_sk#1, inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Arguments: [inv_warehouse_sk#3 ASC NULLS FIRST], false, 0 + +(64) Scan parquet +Output [2]: [w_warehouse_sk#5, w_warehouse_name#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(w_warehouse_sk)] +ReadSchema: struct + +(65) Filter +Input [2]: [w_warehouse_sk#5, w_warehouse_name#6] +Condition : isnotnull(w_warehouse_sk#5) + +(66) Exchange +Input [2]: [w_warehouse_sk#5, w_warehouse_name#6] +Arguments: hashpartitioning(w_warehouse_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(67) Sort +Input [2]: [w_warehouse_sk#5, w_warehouse_name#6] +Arguments: [w_warehouse_sk#5 ASC NULLS FIRST], false, 0 + +(68) SortMergeJoin +Left keys [1]: [inv_warehouse_sk#3] +Right keys [1]: [w_warehouse_sk#5] +Join type: Inner +Join condition: None + +(69) Project +Output [4]: [inv_date_sk#1, inv_item_sk#2, inv_quantity_on_hand#4, w_warehouse_name#6] +Input [6]: [inv_date_sk#1, inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4, w_warehouse_sk#5, w_warehouse_name#6] + +(70) Exchange +Input [4]: [inv_date_sk#1, inv_item_sk#2, inv_quantity_on_hand#4, w_warehouse_name#6] +Arguments: hashpartitioning(inv_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(71) Sort +Input [4]: [inv_date_sk#1, inv_item_sk#2, inv_quantity_on_hand#4, w_warehouse_name#6] +Arguments: [inv_item_sk#2 ASC NULLS FIRST], false, 0 + +(72) Scan parquet +Output [3]: [i_item_sk#7, i_item_id#8, i_current_price#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_current_price), GreaterThanOrEqual(i_current_price,0.99), LessThanOrEqual(i_current_price,1.49), IsNotNull(i_item_sk)] +ReadSchema: struct + +(73) Filter +Input [3]: [i_item_sk#7, i_item_id#8, i_current_price#9] +Condition : (((isnotnull(i_current_price#9) AND (i_current_price#9 >= 0.99)) AND (i_current_price#9 <= 1.49)) AND isnotnull(i_item_sk#7)) + +(74) Project +Output [2]: [i_item_sk#7, i_item_id#8] +Input [3]: [i_item_sk#7, i_item_id#8, i_current_price#9] + +(75) Exchange +Input [2]: [i_item_sk#7, i_item_id#8] +Arguments: hashpartitioning(i_item_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(76) Sort +Input [2]: [i_item_sk#7, i_item_id#8] +Arguments: [i_item_sk#7 ASC NULLS FIRST], false, 0 + +(77) SortMergeJoin +Left keys [1]: [inv_item_sk#2] +Right keys [1]: [i_item_sk#7] +Join type: Inner +Join condition: None + +(78) Project +Output [4]: [inv_date_sk#1, inv_quantity_on_hand#4, w_warehouse_name#6, i_item_id#8] +Input [6]: [inv_date_sk#1, inv_item_sk#2, inv_quantity_on_hand#4, w_warehouse_name#6, i_item_sk#7, i_item_id#8] + +(79) Exchange +Input [4]: [inv_date_sk#1, inv_quantity_on_hand#4, w_warehouse_name#6, i_item_id#8] +Arguments: hashpartitioning(inv_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(80) Sort +Input [4]: [inv_date_sk#1, inv_quantity_on_hand#4, w_warehouse_name#6, i_item_id#8] +Arguments: [inv_date_sk#1 ASC NULLS FIRST], false, 0 + +(81) Scan parquet +Output [2]: [d_date_sk#10, d_date#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,2000-02-10), LessThanOrEqual(d_date,2000-04-10), IsNotNull(d_date_sk)] +ReadSchema: struct + +(82) Filter +Input [2]: [d_date_sk#10, d_date#11] +Condition : (((isnotnull(d_date#11) AND (d_date#11 >= 2000-02-10)) AND (d_date#11 <= 2000-04-10)) AND isnotnull(d_date_sk#10)) + +(83) Exchange +Input [2]: [d_date_sk#10, d_date#11] +Arguments: hashpartitioning(d_date_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(84) Sort +Input [2]: [d_date_sk#10, d_date#11] +Arguments: [d_date_sk#10 ASC NULLS FIRST], false, 0 + +(85) SortMergeJoin +Left keys [1]: [inv_date_sk#1] +Right keys [1]: [d_date_sk#10] +Join type: Inner +Join condition: None + +(86) Project +Output [4]: [inv_quantity_on_hand#4, w_warehouse_name#6, i_item_id#8, d_date#11] +Input [6]: [inv_date_sk#1, inv_quantity_on_hand#4, w_warehouse_name#6, i_item_id#8, d_date_sk#10, d_date#11] + +(87) HashAggregate +Input [4]: [inv_quantity_on_hand#4, w_warehouse_name#6, i_item_id#8, d_date#11] +Keys [2]: [w_warehouse_name#6, i_item_id#8] +Functions [2]: [partial_sum(CASE WHEN (d_date#11 < 2000-03-11) THEN inv_quantity_on_hand#4 ELSE 0 END), partial_sum(CASE WHEN (d_date#11 >= 2000-03-11) THEN inv_quantity_on_hand#4 ELSE 0 END)] +Aggregate Attributes [2]: [sum#14, sum#15] +Results [4]: [w_warehouse_name#6, i_item_id#8, sum#21, sum#22] + +(88) Exchange +Input [4]: [w_warehouse_name#6, i_item_id#8, sum#21, sum#22] +Arguments: hashpartitioning(w_warehouse_name#6, i_item_id#8, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(89) HashAggregate +Input [4]: [w_warehouse_name#6, i_item_id#8, sum#21, sum#22] +Keys [2]: [w_warehouse_name#6, i_item_id#8] +Functions [2]: [sum(CASE WHEN (d_date#11 < 2000-03-11) THEN inv_quantity_on_hand#4 ELSE 0 END), sum(CASE WHEN (d_date#11 >= 2000-03-11) THEN inv_quantity_on_hand#4 ELSE 0 END)] +Aggregate Attributes [2]: [sum(CASE WHEN (d_date#11 < 2000-03-11) THEN inv_quantity_on_hand#4 ELSE 0 END)#17, sum(CASE WHEN (d_date#11 >= 2000-03-11) THEN inv_quantity_on_hand#4 ELSE 0 END)#18] +Results [4]: [w_warehouse_name#6, i_item_id#8, sum(CASE WHEN (d_date#11 < 2000-03-11) THEN inv_quantity_on_hand#4 ELSE 0 END)#17 AS inv_before#19, sum(CASE WHEN (d_date#11 >= 2000-03-11) THEN inv_quantity_on_hand#4 ELSE 0 END)#18 AS inv_after#20] + +(90) Filter +Input [4]: [w_warehouse_name#6, i_item_id#8, inv_before#19, inv_after#20] +Condition : (CASE WHEN (inv_before#19 > 0) THEN ((cast(inv_after#20 as double) / cast(inv_before#19 as double)) >= 0.666667) END AND CASE WHEN (inv_before#19 > 0) THEN ((cast(inv_after#20 as double) / cast(inv_before#19 as double)) <= 1.5) END) + +(91) TakeOrderedAndProject +Input [4]: [w_warehouse_name#6, i_item_id#8, inv_before#19, inv_after#20] +Arguments: X, [w_warehouse_name#6 ASC NULLS FIRST, i_item_id#8 ASC NULLS FIRST], [w_warehouse_name#6, i_item_id#8, inv_before#19, inv_after#20] + +(92) AdaptiveSparkPlan +Output [4]: [w_warehouse_name#6, i_item_id#8, inv_before#19, inv_after#20] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q22.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q22.txt new file mode 100644 index 000000000..a1fe16373 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q22.txt @@ -0,0 +1,501 @@ +== Physical Plan == +AdaptiveSparkPlan (91) ++- == Final Plan == + NativeTakeOrdered (58) + +- NativeProject (57) + +- NativeHashAggregate (56) + +- InputAdapter (55) + +- AQEShuffleRead (54) + +- ShuffleQueryStage (53), Statistics(X) + +- NativeShuffleExchange (52) + +- NativeHashAggregate (51) + +- NativeExpand (50) + +- NativeProject (49) + +- NativeSortMergeJoin Inner (48) + :- NativeSort (39) + : +- InputAdapter (38) + : +- AQEShuffleRead (37) + : +- ShuffleQueryStage (36), Statistics(X) + : +- NativeShuffleExchange (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 (47) + +- InputAdapter (46) + +- AQEShuffleRead (45) + +- ShuffleQueryStage (44), Statistics(X) + +- NativeShuffleExchange (43) + +- NativeFilter (42) + +- InputAdapter (41) + +- NativeParquetScan (40) ++- == Initial Plan == + TakeOrderedAndProject (90) + +- HashAggregate (89) + +- Exchange (88) + +- HashAggregate (87) + +- Expand (86) + +- Project (85) + +- SortMergeJoin Inner (84) + :- Sort (79) + : +- Exchange (78) + : +- Project (77) + : +- SortMergeJoin Inner (76) + : :- Sort (71) + : : +- Exchange (70) + : : +- Project (69) + : : +- SortMergeJoin Inner (68) + : : :- Sort (62) + : : : +- Exchange (61) + : : : +- Filter (60) + : : : +- Scan parquet (59) + : : +- Sort (67) + : : +- Exchange (66) + : : +- Project (65) + : : +- Filter (64) + : : +- Scan parquet (63) + : +- Sort (75) + : +- Exchange (74) + : +- Filter (73) + : +- Scan parquet (72) + +- Sort (83) + +- Exchange (82) + +- Filter (81) + +- Scan parquet (80) + + +(59) Scan parquet +Output [4]: [inv_date_sk#1, inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(inv_date_sk), IsNotNull(inv_item_sk), IsNotNull(inv_warehouse_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [4]: [inv_date_sk#1, inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Arguments: [#1, #2, #3, #4] + +(3) NativeFilter +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Condition : ((isnotnull(inv_date_sk#1) AND isnotnull(inv_item_sk#2)) AND isnotnull(inv_warehouse_sk#3)) + +(4) NativeShuffleExchange +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: hashpartitioning(inv_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: X + +(6) AQEShuffleRead +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: coalesced + +(7) InputAdapter +Input [4]: [#1#1, #2#2, #3#3, #4#4] + +(8) NativeSort +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: [inv_date_sk#1 ASC NULLS FIRST], false + +(63) Scan parquet +Output [2]: [d_date_sk#5, d_month_seq#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [d_date_sk#5, d_month_seq#6] +Arguments: [#5, #6] + +(11) NativeFilter +Input [2]: [#5#5, #6#6] +Condition : (((isnotnull(d_month_seq#6) AND (d_month_seq#6 >= 1200)) AND (d_month_seq#6 <= 1211)) AND isnotnull(d_date_sk#5)) + +(12) NativeProject +Output [1]: [d_date_sk#5] +Input [2]: [#5#5, #6#6] + +(13) NativeShuffleExchange +Input [1]: [d_date_sk#5] +Arguments: hashpartitioning(d_date_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [1]: [d_date_sk#5] +Arguments: X + +(15) AQEShuffleRead +Input [1]: [d_date_sk#5] +Arguments: coalesced + +(16) InputAdapter +Input [1]: [d_date_sk#5] + +(17) NativeSort +Input [1]: [d_date_sk#5] +Arguments: [d_date_sk#5 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [inv_date_sk#1] +Right keys [1]: [d_date_sk#5] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [3]: [inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Input [5]: [#1#1, #2#2, #3#3, #4#4, d_date_sk#5] + +(20) NativeShuffleExchange +Input [3]: [inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Arguments: hashpartitioning(inv_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [3]: [inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Arguments: X + +(22) AQEShuffleRead +Input [3]: [inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Arguments: coalesced + +(23) InputAdapter +Input [3]: [inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] + +(24) NativeSort +Input [3]: [inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Arguments: [inv_item_sk#2 ASC NULLS FIRST], false + +(72) Scan parquet +Output [5]: [i_item_sk#7, i_brand#8, i_class#9, i_category#10, i_product_name#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [5]: [i_item_sk#7, i_brand#8, i_class#9, i_category#10, i_product_name#11] +Arguments: [#7, #8, #9, #10, #11] + +(27) NativeFilter +Input [5]: [#7#7, #8#8, #9#9, #10#10, #11#11] +Condition : isnotnull(i_item_sk#7) + +(28) NativeShuffleExchange +Input [5]: [#7#7, #8#8, #9#9, #10#10, #11#11] +Arguments: hashpartitioning(i_item_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(29) ShuffleQueryStage +Output [5]: [#7#7, #8#8, #9#9, #10#10, #11#11] +Arguments: X + +(30) AQEShuffleRead +Input [5]: [#7#7, #8#8, #9#9, #10#10, #11#11] +Arguments: coalesced + +(31) InputAdapter +Input [5]: [#7#7, #8#8, #9#9, #10#10, #11#11] + +(32) NativeSort +Input [5]: [#7#7, #8#8, #9#9, #10#10, #11#11] +Arguments: [i_item_sk#7 ASC NULLS FIRST], false + +(33) NativeSortMergeJoin +Left keys [1]: [inv_item_sk#2] +Right keys [1]: [i_item_sk#7] +Join type: Inner +Join condition: None + +(34) NativeProject +Output [6]: [inv_warehouse_sk#3, inv_quantity_on_hand#4, i_brand#8, i_class#9, i_category#10, i_product_name#11] +Input [8]: [inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4, #7#7, #8#8, #9#9, #10#10, #11#11] + +(35) NativeShuffleExchange +Input [6]: [inv_warehouse_sk#3, inv_quantity_on_hand#4, i_brand#8, i_class#9, i_category#10, i_product_name#11] +Arguments: hashpartitioning(inv_warehouse_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(36) ShuffleQueryStage +Output [6]: [inv_warehouse_sk#3, inv_quantity_on_hand#4, i_brand#8, i_class#9, i_category#10, i_product_name#11] +Arguments: X + +(37) AQEShuffleRead +Input [6]: [inv_warehouse_sk#3, inv_quantity_on_hand#4, i_brand#8, i_class#9, i_category#10, i_product_name#11] +Arguments: coalesced + +(38) InputAdapter +Input [6]: [inv_warehouse_sk#3, inv_quantity_on_hand#4, i_brand#8, i_class#9, i_category#10, i_product_name#11] + +(39) NativeSort +Input [6]: [inv_warehouse_sk#3, inv_quantity_on_hand#4, i_brand#8, i_class#9, i_category#10, i_product_name#11] +Arguments: [inv_warehouse_sk#3 ASC NULLS FIRST], false + +(80) Scan parquet +Output [1]: [w_warehouse_sk#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(w_warehouse_sk)] +ReadSchema: struct + +(41) InputAdapter +Input [1]: [w_warehouse_sk#12] +Arguments: [#12] + +(42) NativeFilter +Input [1]: [#12#12] +Condition : isnotnull(w_warehouse_sk#12) + +(43) NativeShuffleExchange +Input [1]: [#12#12] +Arguments: hashpartitioning(w_warehouse_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) ShuffleQueryStage +Output [1]: [#12#12] +Arguments: X + +(45) AQEShuffleRead +Input [1]: [#12#12] +Arguments: coalesced + +(46) InputAdapter +Input [1]: [#12#12] + +(47) NativeSort +Input [1]: [#12#12] +Arguments: [w_warehouse_sk#12 ASC NULLS FIRST], false + +(48) NativeSortMergeJoin +Left keys [1]: [inv_warehouse_sk#3] +Right keys [1]: [w_warehouse_sk#12] +Join type: Inner +Join condition: None + +(49) NativeProject +Output [5]: [inv_quantity_on_hand#4, i_product_name#11, i_brand#8, i_class#9, i_category#10] +Input [7]: [inv_warehouse_sk#3, inv_quantity_on_hand#4, i_brand#8, i_class#9, i_category#10, i_product_name#11, #12#12] + +(50) NativeExpand +Input [5]: [inv_quantity_on_hand#4, i_product_name#11, i_brand#8, i_class#9, i_category#10] +Arguments: [[inv_quantity_on_hand#4, i_product_name#11, i_brand#8, i_class#9, i_category#10, 0], [inv_quantity_on_hand#4, i_product_name#11, i_brand#8, i_class#9, null, 1], [inv_quantity_on_hand#4, i_product_name#11, i_brand#8, null, null, 3], [inv_quantity_on_hand#4, i_product_name#11, null, null, null, 7], [inv_quantity_on_hand#4, null, null, null, null, 15]], [inv_quantity_on_hand#4, i_product_name#13, i_brand#14, i_class#15, i_category#16, spark_grouping_id#17] + +(51) NativeHashAggregate +Input [6]: [inv_quantity_on_hand#4, i_product_name#13, i_brand#14, i_class#15, i_category#16, spark_grouping_id#17] +Keys [5]: [i_product_name#13, i_brand#14, i_class#15, i_category#16, spark_grouping_id#17] +Functions [1]: [partial_avg(inv_quantity_on_hand#4)] +Aggregate Attributes [2]: [sum#18, count#19] +Results [6]: [i_product_name#13, i_brand#14, i_class#15, i_category#16, spark_grouping_id#17, #20#20] + +(52) NativeShuffleExchange +Input [6]: [i_product_name#13, i_brand#14, i_class#15, i_category#16, spark_grouping_id#17, #20#20] +Arguments: hashpartitioning(i_product_name#13, i_brand#14, i_class#15, i_category#16, spark_grouping_id#17, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(53) ShuffleQueryStage +Output [6]: [i_product_name#13, i_brand#14, i_class#15, i_category#16, spark_grouping_id#17, #20#20] +Arguments: X + +(54) AQEShuffleRead +Input [6]: [i_product_name#13, i_brand#14, i_class#15, i_category#16, spark_grouping_id#17, #20#20] +Arguments: coalesced + +(55) InputAdapter +Input [6]: [i_product_name#13, i_brand#14, i_class#15, i_category#16, spark_grouping_id#17, #20#20] + +(56) NativeHashAggregate +Input [6]: [i_product_name#13, i_brand#14, i_class#15, i_category#16, spark_grouping_id#17, #20#20] +Keys [5]: [i_product_name#13, i_brand#14, i_class#15, i_category#16, spark_grouping_id#17] +Functions [1]: [avg(inv_quantity_on_hand#4)] +Aggregate Attributes [1]: [avg(inv_quantity_on_hand#4)#21] +Results [6]: [i_product_name#13, i_brand#14, i_class#15, i_category#16, spark_grouping_id#17, avg(inv_quantity_on_hand#4)#21] + +(57) NativeProject +Output [5]: [i_product_name#13, i_brand#14, i_class#15, i_category#16, avg(inv_quantity_on_hand#4)#21 AS qoh#22] +Input [6]: [i_product_name#13, i_brand#14, i_class#15, i_category#16, spark_grouping_id#17, avg(inv_quantity_on_hand#4)#21] + +(58) NativeTakeOrdered +Input [5]: [i_product_name#13, i_brand#14, i_class#15, i_category#16, qoh#22] +Arguments: X, [qoh#22 ASC NULLS FIRST, i_product_name#13 ASC NULLS FIRST, i_brand#14 ASC NULLS FIRST, i_class#15 ASC NULLS FIRST, i_category#16 ASC NULLS FIRST] + +(59) Scan parquet +Output [4]: [inv_date_sk#1, inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(inv_date_sk), IsNotNull(inv_item_sk), IsNotNull(inv_warehouse_sk)] +ReadSchema: struct + +(60) Filter +Input [4]: [inv_date_sk#1, inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Condition : ((isnotnull(inv_date_sk#1) AND isnotnull(inv_item_sk#2)) AND isnotnull(inv_warehouse_sk#3)) + +(61) Exchange +Input [4]: [inv_date_sk#1, inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Arguments: hashpartitioning(inv_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(62) Sort +Input [4]: [inv_date_sk#1, inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Arguments: [inv_date_sk#1 ASC NULLS FIRST], false, 0 + +(63) Scan parquet +Output [2]: [d_date_sk#5, d_month_seq#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)] +ReadSchema: struct + +(64) Filter +Input [2]: [d_date_sk#5, d_month_seq#6] +Condition : (((isnotnull(d_month_seq#6) AND (d_month_seq#6 >= 1200)) AND (d_month_seq#6 <= 1211)) AND isnotnull(d_date_sk#5)) + +(65) Project +Output [1]: [d_date_sk#5] +Input [2]: [d_date_sk#5, d_month_seq#6] + +(66) Exchange +Input [1]: [d_date_sk#5] +Arguments: hashpartitioning(d_date_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(67) Sort +Input [1]: [d_date_sk#5] +Arguments: [d_date_sk#5 ASC NULLS FIRST], false, 0 + +(68) SortMergeJoin +Left keys [1]: [inv_date_sk#1] +Right keys [1]: [d_date_sk#5] +Join type: Inner +Join condition: None + +(69) Project +Output [3]: [inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Input [5]: [inv_date_sk#1, inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4, d_date_sk#5] + +(70) Exchange +Input [3]: [inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Arguments: hashpartitioning(inv_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(71) Sort +Input [3]: [inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Arguments: [inv_item_sk#2 ASC NULLS FIRST], false, 0 + +(72) Scan parquet +Output [5]: [i_item_sk#7, i_brand#8, i_class#9, i_category#10, i_product_name#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(73) Filter +Input [5]: [i_item_sk#7, i_brand#8, i_class#9, i_category#10, i_product_name#11] +Condition : isnotnull(i_item_sk#7) + +(74) Exchange +Input [5]: [i_item_sk#7, i_brand#8, i_class#9, i_category#10, i_product_name#11] +Arguments: hashpartitioning(i_item_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(75) Sort +Input [5]: [i_item_sk#7, i_brand#8, i_class#9, i_category#10, i_product_name#11] +Arguments: [i_item_sk#7 ASC NULLS FIRST], false, 0 + +(76) SortMergeJoin +Left keys [1]: [inv_item_sk#2] +Right keys [1]: [i_item_sk#7] +Join type: Inner +Join condition: None + +(77) Project +Output [6]: [inv_warehouse_sk#3, inv_quantity_on_hand#4, i_brand#8, i_class#9, i_category#10, i_product_name#11] +Input [8]: [inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4, i_item_sk#7, i_brand#8, i_class#9, i_category#10, i_product_name#11] + +(78) Exchange +Input [6]: [inv_warehouse_sk#3, inv_quantity_on_hand#4, i_brand#8, i_class#9, i_category#10, i_product_name#11] +Arguments: hashpartitioning(inv_warehouse_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(79) Sort +Input [6]: [inv_warehouse_sk#3, inv_quantity_on_hand#4, i_brand#8, i_class#9, i_category#10, i_product_name#11] +Arguments: [inv_warehouse_sk#3 ASC NULLS FIRST], false, 0 + +(80) Scan parquet +Output [1]: [w_warehouse_sk#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(w_warehouse_sk)] +ReadSchema: struct + +(81) Filter +Input [1]: [w_warehouse_sk#12] +Condition : isnotnull(w_warehouse_sk#12) + +(82) Exchange +Input [1]: [w_warehouse_sk#12] +Arguments: hashpartitioning(w_warehouse_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(83) Sort +Input [1]: [w_warehouse_sk#12] +Arguments: [w_warehouse_sk#12 ASC NULLS FIRST], false, 0 + +(84) SortMergeJoin +Left keys [1]: [inv_warehouse_sk#3] +Right keys [1]: [w_warehouse_sk#12] +Join type: Inner +Join condition: None + +(85) Project +Output [5]: [inv_quantity_on_hand#4, i_product_name#11, i_brand#8, i_class#9, i_category#10] +Input [7]: [inv_warehouse_sk#3, inv_quantity_on_hand#4, i_brand#8, i_class#9, i_category#10, i_product_name#11, w_warehouse_sk#12] + +(86) Expand +Input [5]: [inv_quantity_on_hand#4, i_product_name#11, i_brand#8, i_class#9, i_category#10] +Arguments: [[inv_quantity_on_hand#4, i_product_name#11, i_brand#8, i_class#9, i_category#10, 0], [inv_quantity_on_hand#4, i_product_name#11, i_brand#8, i_class#9, null, 1], [inv_quantity_on_hand#4, i_product_name#11, i_brand#8, null, null, 3], [inv_quantity_on_hand#4, i_product_name#11, null, null, null, 7], [inv_quantity_on_hand#4, null, null, null, null, 15]], [inv_quantity_on_hand#4, i_product_name#13, i_brand#14, i_class#15, i_category#16, spark_grouping_id#17] + +(87) HashAggregate +Input [6]: [inv_quantity_on_hand#4, i_product_name#13, i_brand#14, i_class#15, i_category#16, spark_grouping_id#17] +Keys [5]: [i_product_name#13, i_brand#14, i_class#15, i_category#16, spark_grouping_id#17] +Functions [1]: [partial_avg(inv_quantity_on_hand#4)] +Aggregate Attributes [2]: [sum#18, count#19] +Results [7]: [i_product_name#13, i_brand#14, i_class#15, i_category#16, spark_grouping_id#17, sum#23, count#24] + +(88) Exchange +Input [7]: [i_product_name#13, i_brand#14, i_class#15, i_category#16, spark_grouping_id#17, sum#23, count#24] +Arguments: hashpartitioning(i_product_name#13, i_brand#14, i_class#15, i_category#16, spark_grouping_id#17, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(89) HashAggregate +Input [7]: [i_product_name#13, i_brand#14, i_class#15, i_category#16, spark_grouping_id#17, sum#23, count#24] +Keys [5]: [i_product_name#13, i_brand#14, i_class#15, i_category#16, spark_grouping_id#17] +Functions [1]: [avg(inv_quantity_on_hand#4)] +Aggregate Attributes [1]: [avg(inv_quantity_on_hand#4)#21] +Results [5]: [i_product_name#13, i_brand#14, i_class#15, i_category#16, avg(inv_quantity_on_hand#4)#21 AS qoh#22] + +(90) TakeOrderedAndProject +Input [5]: [i_product_name#13, i_brand#14, i_class#15, i_category#16, qoh#22] +Arguments: X, [qoh#22 ASC NULLS FIRST, i_product_name#13 ASC NULLS FIRST, i_brand#14 ASC NULLS FIRST, i_class#15 ASC NULLS FIRST, i_category#16 ASC NULLS FIRST], [i_product_name#13, i_brand#14, i_class#15, i_category#16, qoh#22] + +(91) AdaptiveSparkPlan +Output [5]: [i_product_name#13, i_brand#14, i_class#15, i_category#16, qoh#22] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q23a.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q23a.txt new file mode 100644 index 000000000..1e595d829 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q23a.txt @@ -0,0 +1,2042 @@ +== Physical Plan == +AdaptiveSparkPlan (297) ++- == Final Plan == + NativeProject (176) + +- NativeHashAggregate (175) + +- ShuffleQueryStage (174), Statistics(X) + +- NativeShuffleExchange (173) + +- NativeHashAggregate (172) + +- InputAdapter (171) + +- NativeUnion (170) + :- NativeProject (98) + : +- NativeSortMergeJoin Inner (97) + : :- NativeSort (87) + : : +- InputAdapter (86) + : : +- AQEShuffleRead (85) + : : +- ShuffleQueryStage (84), Statistics(X) + : : +- NativeShuffleExchange (83) + : : +- NativeProject (82) + : : +- NativeSortMergeJoin LeftSemi (81) + : : :- NativeSort (55) + : : : +- InputAdapter (54) + : : : +- AQEShuffleRead (53) + : : : +- ShuffleQueryStage (52), Statistics(X) + : : : +- NativeShuffleExchange (51) + : : : +- NativeProject (50) + : : : +- NativeSortMergeJoin LeftSemi (49) + : : : :- NativeSort (8) + : : : : +- InputAdapter (7) + : : : : +- AQEShuffleRead (6) + : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : +- NativeShuffleExchange (4) + : : : : +- NativeFilter (3) + : : : : +- InputAdapter (2) + : : : : +- NativeParquetScan (1) + : : : +- NativeSort (48) + : : : +- NativeProject (47) + : : : +- NativeFilter (46) + : : : +- NativeProject (45) + : : : +- NativeHashAggregate (44) + : : : +- NativeHashAggregate (43) + : : : +- NativeProject (42) + : : : +- NativeSortMergeJoin Inner (41) + : : : :- NativeSort (32) + : : : : +- InputAdapter (31) + : : : : +- AQEShuffleRead (30) + : : : : +- ShuffleQueryStage (29), Statistics(X) + : : : : +- NativeShuffleExchange (28) + : : : : +- NativeProject (27) + : : : : +- NativeSortMergeJoin Inner (26) + : : : : :- NativeSort (16) + : : : : : +- InputAdapter (15) + : : : : : +- AQEShuffleRead (14) + : : : : : +- ShuffleQueryStage (13), Statistics(X) + : : : : : +- NativeShuffleExchange (12) + : : : : : +- NativeFilter (11) + : : : : : +- InputAdapter (10) + : : : : : +- NativeParquetScan (9) + : : : : +- NativeSort (25) + : : : : +- InputAdapter (24) + : : : : +- AQEShuffleRead (23) + : : : : +- ShuffleQueryStage (22), Statistics(X) + : : : : +- NativeShuffleExchange (21) + : : : : +- NativeProject (20) + : : : : +- NativeFilter (19) + : : : : +- InputAdapter (18) + : : : : +- NativeParquetScan (17) + : : : +- NativeSort (40) + : : : +- InputAdapter (39) + : : : +- AQEShuffleRead (38) + : : : +- ShuffleQueryStage (37), Statistics(X) + : : : +- NativeShuffleExchange (36) + : : : +- NativeFilter (35) + : : : +- InputAdapter (34) + : : : +- NativeParquetScan (33) + : : +- NativeSort (80) + : : +- NativeProject (79) + : : +- NativeFilter (78) + : : +- NativeProject (77) + : : +- NativeHashAggregate (76) + : : +- NativeHashAggregate (75) + : : +- NativeProject (74) + : : +- NativeProject (73) + : : +- NativeSortMergeJoin Inner (72) + : : :- NativeSort (63) + : : : +- InputAdapter (62) + : : : +- AQEShuffleRead (61) + : : : +- ShuffleQueryStage (60), Statistics(X) + : : : +- NativeShuffleExchange (59) + : : : +- NativeFilter (58) + : : : +- InputAdapter (57) + : : : +- NativeParquetScan (56) + : : +- NativeSort (71) + : : +- InputAdapter (70) + : : +- AQEShuffleRead (69) + : : +- ShuffleQueryStage (68), Statistics(X) + : : +- NativeShuffleExchange (67) + : : +- NativeFilter (66) + : : +- InputAdapter (65) + : : +- NativeParquetScan (64) + : +- NativeSort (96) + : +- InputAdapter (95) + : +- AQEShuffleRead (94) + : +- ShuffleQueryStage (93), Statistics(X) + : +- NativeShuffleExchange (92) + : +- NativeProject (91) + : +- NativeFilter (90) + : +- InputAdapter (89) + : +- NativeParquetScan (88) + +- NativeProject (169) + +- NativeSortMergeJoin Inner (168) + :- NativeSort (161) + : +- InputAdapter (160) + : +- AQEShuffleRead (159) + : +- ShuffleQueryStage (158), Statistics(X) + : +- NativeShuffleExchange (157) + : +- NativeProject (156) + : +- NativeSortMergeJoin LeftSemi (155) + : :- NativeSort (133) + : : +- InputAdapter (132) + : : +- AQEShuffleRead (131) + : : +- ShuffleQueryStage (130), Statistics(X) + : : +- NativeShuffleExchange (129) + : : +- NativeProject (128) + : : +- NativeSortMergeJoin LeftSemi (127) + : : :- NativeSort (106) + : : : +- InputAdapter (105) + : : : +- AQEShuffleRead (104) + : : : +- ShuffleQueryStage (103), Statistics(X) + : : : +- NativeShuffleExchange (102) + : : : +- NativeFilter (101) + : : : +- InputAdapter (100) + : : : +- NativeParquetScan (99) + : : +- NativeSort (126) + : : +- NativeProject (125) + : : +- NativeFilter (124) + : : +- NativeProject (123) + : : +- NativeHashAggregate (122) + : : +- NativeHashAggregate (121) + : : +- NativeProject (120) + : : +- NativeSortMergeJoin Inner (119) + : : :- NativeSort (112) + : : : +- InputAdapter (111) + : : : +- InputAdapter (110) + : : : +- AQEShuffleRead (109) + : : : +- ShuffleQueryStage (108), Statistics(X) + : : : +- ReusedExchange (107) + : : +- NativeSort (118) + : : +- InputAdapter (117) + : : +- InputAdapter (116) + : : +- AQEShuffleRead (115) + : : +- ShuffleQueryStage (114), Statistics(X) + : : +- ReusedExchange (113) + : +- NativeSort (154) + : +- NativeProject (153) + : +- NativeFilter (152) + : +- NativeProject (151) + : +- NativeHashAggregate (150) + : +- NativeHashAggregate (149) + : +- NativeProject (148) + : +- NativeProject (147) + : +- NativeSortMergeJoin Inner (146) + : :- NativeSort (139) + : : +- InputAdapter (138) + : : +- InputAdapter (137) + : : +- AQEShuffleRead (136) + : : +- ShuffleQueryStage (135), Statistics(X) + : : +- ReusedExchange (134) + : +- NativeSort (145) + : +- InputAdapter (144) + : +- InputAdapter (143) + : +- AQEShuffleRead (142) + : +- ShuffleQueryStage (141), Statistics(X) + : +- ReusedExchange (140) + +- NativeSort (167) + +- InputAdapter (166) + +- InputAdapter (165) + +- AQEShuffleRead (164) + +- ShuffleQueryStage (163), Statistics(X) + +- ReusedExchange (162) ++- == Initial Plan == + HashAggregate (296) + +- Exchange (295) + +- HashAggregate (294) + +- Union (293) + :- Project (234) + : +- SortMergeJoin Inner (233) + : :- Sort (227) + : : +- Exchange (226) + : : +- Project (225) + : : +- SortMergeJoin LeftSemi (224) + : : :- Sort (208) + : : : +- Exchange (207) + : : : +- Project (206) + : : : +- SortMergeJoin LeftSemi (205) + : : : :- Sort (180) + : : : : +- Exchange (179) + : : : : +- Filter (178) + : : : : +- Scan parquet (177) + : : : +- Sort (204) + : : : +- Project (203) + : : : +- Filter (202) + : : : +- HashAggregate (201) + : : : +- HashAggregate (200) + : : : +- Project (199) + : : : +- SortMergeJoin Inner (198) + : : : :- Sort (193) + : : : : +- Exchange (192) + : : : : +- Project (191) + : : : : +- SortMergeJoin Inner (190) + : : : : :- Sort (184) + : : : : : +- Exchange (183) + : : : : : +- Filter (182) + : : : : : +- Scan parquet (181) + : : : : +- Sort (189) + : : : : +- Exchange (188) + : : : : +- Project (187) + : : : : +- Filter (186) + : : : : +- Scan parquet (185) + : : : +- Sort (197) + : : : +- Exchange (196) + : : : +- Filter (195) + : : : +- Scan parquet (194) + : : +- Sort (223) + : : +- Project (222) + : : +- Filter (221) + : : +- HashAggregate (220) + : : +- HashAggregate (219) + : : +- Project (218) + : : +- SortMergeJoin Inner (217) + : : :- Sort (212) + : : : +- Exchange (211) + : : : +- Filter (210) + : : : +- Scan parquet (209) + : : +- Sort (216) + : : +- Exchange (215) + : : +- Filter (214) + : : +- Scan parquet (213) + : +- Sort (232) + : +- Exchange (231) + : +- Project (230) + : +- Filter (229) + : +- Scan parquet (228) + +- Project (292) + +- SortMergeJoin Inner (291) + :- Sort (285) + : +- Exchange (284) + : +- Project (283) + : +- SortMergeJoin LeftSemi (282) + : :- Sort (266) + : : +- Exchange (265) + : : +- Project (264) + : : +- SortMergeJoin LeftSemi (263) + : : :- Sort (238) + : : : +- Exchange (237) + : : : +- Filter (236) + : : : +- Scan parquet (235) + : : +- Sort (262) + : : +- Project (261) + : : +- Filter (260) + : : +- HashAggregate (259) + : : +- HashAggregate (258) + : : +- Project (257) + : : +- SortMergeJoin Inner (256) + : : :- Sort (251) + : : : +- Exchange (250) + : : : +- Project (249) + : : : +- SortMergeJoin Inner (248) + : : : :- Sort (242) + : : : : +- Exchange (241) + : : : : +- Filter (240) + : : : : +- Scan parquet (239) + : : : +- Sort (247) + : : : +- Exchange (246) + : : : +- Project (245) + : : : +- Filter (244) + : : : +- Scan parquet (243) + : : +- Sort (255) + : : +- Exchange (254) + : : +- Filter (253) + : : +- Scan parquet (252) + : +- Sort (281) + : +- Project (280) + : +- Filter (279) + : +- HashAggregate (278) + : +- HashAggregate (277) + : +- Project (276) + : +- SortMergeJoin Inner (275) + : :- Sort (270) + : : +- Exchange (269) + : : +- Filter (268) + : : +- Scan parquet (267) + : +- Sort (274) + : +- Exchange (273) + : +- Filter (272) + : +- Scan parquet (271) + +- Sort (290) + +- Exchange (289) + +- Project (288) + +- Filter (287) + +- Scan parquet (286) + + +(177) Scan parquet +Output [5]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_item_sk#3, cs_quantity#4, cs_list_price#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [5]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_item_sk#3, cs_quantity#4, cs_list_price#5] +Arguments: [#1, #2, #3, #4, #5] + +(3) NativeFilter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Condition : isnotnull(cs_sold_date_sk#1) + +(4) NativeShuffleExchange +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: hashpartitioning(cs_item_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: X + +(6) AQEShuffleRead +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: coalesced + +(7) InputAdapter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] + +(8) NativeSort +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: [cs_item_sk#3 ASC NULLS FIRST], false + +(181) Scan parquet +Output [2]: [ss_sold_date_sk#6, ss_item_sk#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [ss_sold_date_sk#6, ss_item_sk#7] +Arguments: [#6, #7] + +(11) NativeFilter +Input [2]: [#6#6, #7#7] +Condition : (isnotnull(ss_sold_date_sk#6) AND isnotnull(ss_item_sk#7)) + +(12) NativeShuffleExchange +Input [2]: [#6#6, #7#7] +Arguments: hashpartitioning(ss_sold_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [2]: [#6#6, #7#7] +Arguments: X + +(14) AQEShuffleRead +Input [2]: [#6#6, #7#7] +Arguments: coalesced + +(15) InputAdapter +Input [2]: [#6#6, #7#7] + +(16) NativeSort +Input [2]: [#6#6, #7#7] +Arguments: [ss_sold_date_sk#6 ASC NULLS FIRST], false + +(185) Scan parquet +Output [3]: [d_date_sk#8, d_date#9, d_year#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(d_year, [2000,2001,2002,2003]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(18) InputAdapter +Input [3]: [d_date_sk#8, d_date#9, d_year#10] +Arguments: [#8, #9, #10] + +(19) NativeFilter +Input [3]: [#8#8, #9#9, #10#10] +Condition : (d_year#10 IN (2000,2001,2002,2003) AND isnotnull(d_date_sk#8)) + +(20) NativeProject +Output [2]: [d_date_sk#8, d_date#9] +Input [3]: [#8#8, #9#9, #10#10] + +(21) NativeShuffleExchange +Input [2]: [d_date_sk#8, d_date#9] +Arguments: hashpartitioning(d_date_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(22) ShuffleQueryStage +Output [2]: [d_date_sk#8, d_date#9] +Arguments: X + +(23) AQEShuffleRead +Input [2]: [d_date_sk#8, d_date#9] +Arguments: coalesced + +(24) InputAdapter +Input [2]: [d_date_sk#8, d_date#9] + +(25) NativeSort +Input [2]: [d_date_sk#8, d_date#9] +Arguments: [d_date_sk#8 ASC NULLS FIRST], false + +(26) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#6] +Right keys [1]: [d_date_sk#8] +Join type: Inner +Join condition: None + +(27) NativeProject +Output [2]: [ss_item_sk#7, d_date#9] +Input [4]: [#6#6, #7#7, d_date_sk#8, d_date#9] + +(28) NativeShuffleExchange +Input [2]: [ss_item_sk#7, d_date#9] +Arguments: hashpartitioning(ss_item_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(29) ShuffleQueryStage +Output [2]: [ss_item_sk#7, d_date#9] +Arguments: X + +(30) AQEShuffleRead +Input [2]: [ss_item_sk#7, d_date#9] +Arguments: coalesced + +(31) InputAdapter +Input [2]: [ss_item_sk#7, d_date#9] + +(32) NativeSort +Input [2]: [ss_item_sk#7, d_date#9] +Arguments: [ss_item_sk#7 ASC NULLS FIRST], false + +(194) Scan parquet +Output [2]: [i_item_sk#11, i_item_desc#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(34) InputAdapter +Input [2]: [i_item_sk#11, i_item_desc#12] +Arguments: [#11, #12] + +(35) NativeFilter +Input [2]: [#11#11, #12#12] +Condition : isnotnull(i_item_sk#11) + +(36) NativeShuffleExchange +Input [2]: [#11#11, #12#12] +Arguments: hashpartitioning(i_item_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [2]: [#11#11, #12#12] +Arguments: X + +(38) AQEShuffleRead +Input [2]: [#11#11, #12#12] +Arguments: coalesced + +(39) InputAdapter +Input [2]: [#11#11, #12#12] + +(40) NativeSort +Input [2]: [#11#11, #12#12] +Arguments: [i_item_sk#11 ASC NULLS FIRST], false + +(41) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#7] +Right keys [1]: [i_item_sk#11] +Join type: Inner +Join condition: None + +(42) NativeProject +Output [3]: [d_date#9, i_item_sk#11, substr(i_item_desc#12, 1, 30) AS _groupingexpression#13] +Input [4]: [ss_item_sk#7, d_date#9, #11#11, #12#12] + +(43) NativeHashAggregate +Input [3]: [d_date#9, i_item_sk#11, _groupingexpression#13] +Keys [3]: [_groupingexpression#13, i_item_sk#11, d_date#9] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#14] +Results [4]: [_groupingexpression#13, i_item_sk#11, d_date#9, #15#15] + +(44) NativeHashAggregate +Input [4]: [_groupingexpression#13, i_item_sk#11, d_date#9, #15#15] +Keys [3]: [_groupingexpression#13, i_item_sk#11, d_date#9] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#16] +Results [4]: [_groupingexpression#13, i_item_sk#11, d_date#9, count(1)#16] + +(45) NativeProject +Output [2]: [i_item_sk#11 AS item_sk#17, count(1)#16 AS cnt#18] +Input [4]: [_groupingexpression#13, i_item_sk#11, d_date#9, count(1)#16] + +(46) NativeFilter +Input [2]: [item_sk#17, cnt#18] +Condition : (cnt#18 > 4) + +(47) NativeProject +Output [1]: [item_sk#17] +Input [2]: [item_sk#17, cnt#18] + +(48) NativeSort +Input [1]: [item_sk#17] +Arguments: [item_sk#17 ASC NULLS FIRST], false + +(49) NativeSortMergeJoin +Left keys [1]: [cs_item_sk#3] +Right keys [1]: [item_sk#17] +Join type: LeftSemi +Join condition: None + +(50) NativeProject +Output [4]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_quantity#4, cs_list_price#5] +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] + +(51) NativeShuffleExchange +Input [4]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_quantity#4, cs_list_price#5] +Arguments: hashpartitioning(cs_bill_customer_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(52) ShuffleQueryStage +Output [4]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_quantity#4, cs_list_price#5] +Arguments: X + +(53) AQEShuffleRead +Input [4]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_quantity#4, cs_list_price#5] +Arguments: coalesced + +(54) InputAdapter +Input [4]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_quantity#4, cs_list_price#5] + +(55) NativeSort +Input [4]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_quantity#4, cs_list_price#5] +Arguments: [cs_bill_customer_sk#2 ASC NULLS FIRST], false + +(209) Scan parquet +Output [3]: [ss_customer_sk#19, ss_quantity#20, ss_sales_price#21] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk)] +ReadSchema: struct + +(57) InputAdapter +Input [3]: [ss_customer_sk#19, ss_quantity#20, ss_sales_price#21] +Arguments: [#19, #20, #21] + +(58) NativeFilter +Input [3]: [#19#19, #20#20, #21#21] +Condition : isnotnull(ss_customer_sk#19) + +(59) NativeShuffleExchange +Input [3]: [#19#19, #20#20, #21#21] +Arguments: hashpartitioning(ss_customer_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(60) ShuffleQueryStage +Output [3]: [#19#19, #20#20, #21#21] +Arguments: X + +(61) AQEShuffleRead +Input [3]: [#19#19, #20#20, #21#21] +Arguments: coalesced + +(62) InputAdapter +Input [3]: [#19#19, #20#20, #21#21] + +(63) NativeSort +Input [3]: [#19#19, #20#20, #21#21] +Arguments: [ss_customer_sk#19 ASC NULLS FIRST], false + +(213) Scan parquet +Output [1]: [c_customer_sk#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk)] +ReadSchema: struct + +(65) InputAdapter +Input [1]: [c_customer_sk#22] +Arguments: [#22] + +(66) NativeFilter +Input [1]: [#22#22] +Condition : isnotnull(c_customer_sk#22) + +(67) NativeShuffleExchange +Input [1]: [#22#22] +Arguments: hashpartitioning(c_customer_sk#22, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(68) ShuffleQueryStage +Output [1]: [#22#22] +Arguments: X + +(69) AQEShuffleRead +Input [1]: [#22#22] +Arguments: coalesced + +(70) InputAdapter +Input [1]: [#22#22] + +(71) NativeSort +Input [1]: [#22#22] +Arguments: [c_customer_sk#22 ASC NULLS FIRST], false + +(72) NativeSortMergeJoin +Left keys [1]: [ss_customer_sk#19] +Right keys [1]: [c_customer_sk#22] +Join type: Inner +Join condition: None + +(73) NativeProject +Output [3]: [ss_quantity#20, ss_sales_price#21, c_customer_sk#22] +Input [4]: [#19#19, #20#20, #21#21, #22#22] + +(74) NativeProject +Output [2]: [c_customer_sk#22 AS c_customer_sk#22, (cast(ss_quantity#20 as decimal(10,0)) * ss_sales_price#21) AS _c1#23] +Input [3]: [ss_quantity#20, ss_sales_price#21, c_customer_sk#22] + +(75) NativeHashAggregate +Input [2]: [c_customer_sk#22, _c1#23] +Keys [1]: [c_customer_sk#22] +Functions [1]: [partial_sum(_c1#23)] +Aggregate Attributes [2]: [sum#24, isEmpty#25] +Results [2]: [c_customer_sk#22, #15#15] + +(76) NativeHashAggregate +Input [2]: [c_customer_sk#22, #15#15] +Keys [1]: [c_customer_sk#22] +Functions [1]: [sum((cast(ss_quantity#20 as decimal(10,0)) * ss_sales_price#21))] +Aggregate Attributes [1]: [sum((cast(ss_quantity#20 as decimal(10,0)) * ss_sales_price#21))#26] +Results [2]: [c_customer_sk#22, sum((cast(ss_quantity#20 as decimal(10,0)) * ss_sales_price#21))#26] + +(77) NativeProject +Output [2]: [c_customer_sk#22, sum((cast(ss_quantity#20 as decimal(10,0)) * ss_sales_price#21))#26 AS ssales#27] +Input [2]: [c_customer_sk#22, sum((cast(ss_quantity#20 as decimal(10,0)) * ss_sales_price#21))#26] + +(78) NativeFilter +Input [2]: [c_customer_sk#22, ssales#27] +Condition : (isnotnull(ssales#27) AND (cast(ssales#27 as decimal(38,8)) > (0.500000 * Subquery subquery#28, [id=#29]))) + +(79) NativeProject +Output [1]: [c_customer_sk#22] +Input [2]: [c_customer_sk#22, ssales#27] + +(80) NativeSort +Input [1]: [c_customer_sk#22] +Arguments: [c_customer_sk#22 ASC NULLS FIRST], false + +(81) NativeSortMergeJoin +Left keys [1]: [cs_bill_customer_sk#2] +Right keys [1]: [c_customer_sk#22] +Join type: LeftSemi +Join condition: None + +(82) NativeProject +Output [3]: [cs_sold_date_sk#1, cs_quantity#4, cs_list_price#5] +Input [4]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_quantity#4, cs_list_price#5] + +(83) NativeShuffleExchange +Input [3]: [cs_sold_date_sk#1, cs_quantity#4, cs_list_price#5] +Arguments: hashpartitioning(cs_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(84) ShuffleQueryStage +Output [3]: [cs_sold_date_sk#1, cs_quantity#4, cs_list_price#5] +Arguments: X + +(85) AQEShuffleRead +Input [3]: [cs_sold_date_sk#1, cs_quantity#4, cs_list_price#5] +Arguments: coalesced + +(86) InputAdapter +Input [3]: [cs_sold_date_sk#1, cs_quantity#4, cs_list_price#5] + +(87) NativeSort +Input [3]: [cs_sold_date_sk#1, cs_quantity#4, cs_list_price#5] +Arguments: [cs_sold_date_sk#1 ASC NULLS FIRST], false + +(228) Scan parquet +Output [3]: [d_date_sk#30, d_year#31, d_moy#32] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2000), EqualTo(d_moy,2), IsNotNull(d_date_sk)] +ReadSchema: struct + +(89) InputAdapter +Input [3]: [d_date_sk#30, d_year#31, d_moy#32] +Arguments: [#30, #31, #32] + +(90) NativeFilter +Input [3]: [#30#30, #31#31, #32#32] +Condition : ((((isnotnull(d_year#31) AND isnotnull(d_moy#32)) AND (d_year#31 = 2000)) AND (d_moy#32 = 2)) AND isnotnull(d_date_sk#30)) + +(91) NativeProject +Output [1]: [d_date_sk#30] +Input [3]: [#30#30, #31#31, #32#32] + +(92) NativeShuffleExchange +Input [1]: [d_date_sk#30] +Arguments: hashpartitioning(d_date_sk#30, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(93) ShuffleQueryStage +Output [1]: [d_date_sk#30] +Arguments: X + +(94) AQEShuffleRead +Input [1]: [d_date_sk#30] +Arguments: coalesced + +(95) InputAdapter +Input [1]: [d_date_sk#30] + +(96) NativeSort +Input [1]: [d_date_sk#30] +Arguments: [d_date_sk#30 ASC NULLS FIRST], false + +(97) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#1] +Right keys [1]: [d_date_sk#30] +Join type: Inner +Join condition: None + +(98) NativeProject +Output [1]: [(cast(cs_quantity#4 as decimal(10,0)) * cs_list_price#5) AS sales#33] +Input [4]: [cs_sold_date_sk#1, cs_quantity#4, cs_list_price#5, d_date_sk#30] + +(235) Scan parquet +Output [5]: [ws_sold_date_sk#34, ws_item_sk#35, ws_bill_customer_sk#36, ws_quantity#37, ws_list_price#38] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(100) InputAdapter +Input [5]: [ws_sold_date_sk#34, ws_item_sk#35, ws_bill_customer_sk#36, ws_quantity#37, ws_list_price#38] +Arguments: [#34, #35, #36, #37, #38] + +(101) NativeFilter +Input [5]: [#34#34, #35#35, #36#36, #37#37, #38#38] +Condition : isnotnull(ws_sold_date_sk#34) + +(102) NativeShuffleExchange +Input [5]: [#34#34, #35#35, #36#36, #37#37, #38#38] +Arguments: hashpartitioning(ws_item_sk#35, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(103) ShuffleQueryStage +Output [5]: [#34#34, #35#35, #36#36, #37#37, #38#38] +Arguments: X + +(104) AQEShuffleRead +Input [5]: [#34#34, #35#35, #36#36, #37#37, #38#38] +Arguments: coalesced + +(105) InputAdapter +Input [5]: [#34#34, #35#35, #36#36, #37#37, #38#38] + +(106) NativeSort +Input [5]: [#34#34, #35#35, #36#36, #37#37, #38#38] +Arguments: [ws_item_sk#35 ASC NULLS FIRST], false + +(107) ReusedExchange [Reuses operator id: 28] +Output [2]: [ss_item_sk#39, d_date#40] + +(108) ShuffleQueryStage +Output [2]: [ss_item_sk#39, d_date#40] +Arguments: X + +(109) AQEShuffleRead +Input [2]: [ss_item_sk#39, d_date#40] +Arguments: coalesced + +(110) InputAdapter +Input [2]: [ss_item_sk#39, d_date#40] +Arguments: [#39, #40] + +(111) InputAdapter +Input [2]: [#39#39, #40#40] + +(112) NativeSort +Input [2]: [#39#39, #40#40] +Arguments: [ss_item_sk#39 ASC NULLS FIRST], false + +(113) ReusedExchange [Reuses operator id: 36] +Output [2]: [i_item_sk#41, i_item_desc#42] + +(114) ShuffleQueryStage +Output [2]: [i_item_sk#41, i_item_desc#42] +Arguments: X + +(115) AQEShuffleRead +Input [2]: [i_item_sk#41, i_item_desc#42] +Arguments: coalesced + +(116) InputAdapter +Input [2]: [i_item_sk#41, i_item_desc#42] +Arguments: [#41, #42] + +(117) InputAdapter +Input [2]: [#41#41, #42#42] + +(118) NativeSort +Input [2]: [#41#41, #42#42] +Arguments: [i_item_sk#41 ASC NULLS FIRST], false + +(119) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#39] +Right keys [1]: [i_item_sk#41] +Join type: Inner +Join condition: None + +(120) NativeProject +Output [3]: [d_date#40, i_item_sk#41, substr(i_item_desc#42, 1, 30) AS _groupingexpression#13] +Input [4]: [#39#39, #40#40, #41#41, #42#42] + +(121) NativeHashAggregate +Input [3]: [d_date#40, i_item_sk#41, _groupingexpression#13] +Keys [3]: [_groupingexpression#13, i_item_sk#41, d_date#40] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#14] +Results [4]: [_groupingexpression#13, i_item_sk#41, d_date#40, #15#15] + +(122) NativeHashAggregate +Input [4]: [_groupingexpression#13, i_item_sk#41, d_date#40, #15#15] +Keys [3]: [_groupingexpression#13, i_item_sk#41, d_date#40] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#16] +Results [4]: [_groupingexpression#13, i_item_sk#41, d_date#40, count(1)#16] + +(123) NativeProject +Output [2]: [i_item_sk#41 AS item_sk#43, count(1)#16 AS cnt#44] +Input [4]: [_groupingexpression#13, i_item_sk#41, d_date#40, count(1)#16] + +(124) NativeFilter +Input [2]: [item_sk#43, cnt#44] +Condition : (cnt#44 > 4) + +(125) NativeProject +Output [1]: [item_sk#43] +Input [2]: [item_sk#43, cnt#44] + +(126) NativeSort +Input [1]: [item_sk#43] +Arguments: [item_sk#43 ASC NULLS FIRST], false + +(127) NativeSortMergeJoin +Left keys [1]: [ws_item_sk#35] +Right keys [1]: [item_sk#43] +Join type: LeftSemi +Join condition: None + +(128) NativeProject +Output [4]: [ws_sold_date_sk#34, ws_bill_customer_sk#36, ws_quantity#37, ws_list_price#38] +Input [5]: [#34#34, #35#35, #36#36, #37#37, #38#38] + +(129) NativeShuffleExchange +Input [4]: [ws_sold_date_sk#34, ws_bill_customer_sk#36, ws_quantity#37, ws_list_price#38] +Arguments: hashpartitioning(ws_bill_customer_sk#36, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(130) ShuffleQueryStage +Output [4]: [ws_sold_date_sk#34, ws_bill_customer_sk#36, ws_quantity#37, ws_list_price#38] +Arguments: X + +(131) AQEShuffleRead +Input [4]: [ws_sold_date_sk#34, ws_bill_customer_sk#36, ws_quantity#37, ws_list_price#38] +Arguments: coalesced + +(132) InputAdapter +Input [4]: [ws_sold_date_sk#34, ws_bill_customer_sk#36, ws_quantity#37, ws_list_price#38] + +(133) NativeSort +Input [4]: [ws_sold_date_sk#34, ws_bill_customer_sk#36, ws_quantity#37, ws_list_price#38] +Arguments: [ws_bill_customer_sk#36 ASC NULLS FIRST], false + +(134) ReusedExchange [Reuses operator id: 59] +Output [3]: [ss_customer_sk#45, ss_quantity#46, ss_sales_price#47] + +(135) ShuffleQueryStage +Output [3]: [ss_customer_sk#45, ss_quantity#46, ss_sales_price#47] +Arguments: X + +(136) AQEShuffleRead +Input [3]: [ss_customer_sk#45, ss_quantity#46, ss_sales_price#47] +Arguments: coalesced + +(137) InputAdapter +Input [3]: [ss_customer_sk#45, ss_quantity#46, ss_sales_price#47] +Arguments: [#45, #46, #47] + +(138) InputAdapter +Input [3]: [#45#45, #46#46, #47#47] + +(139) NativeSort +Input [3]: [#45#45, #46#46, #47#47] +Arguments: [ss_customer_sk#45 ASC NULLS FIRST], false + +(140) ReusedExchange [Reuses operator id: 67] +Output [1]: [c_customer_sk#48] + +(141) ShuffleQueryStage +Output [1]: [c_customer_sk#48] +Arguments: X + +(142) AQEShuffleRead +Input [1]: [c_customer_sk#48] +Arguments: coalesced + +(143) InputAdapter +Input [1]: [c_customer_sk#48] +Arguments: [#48] + +(144) InputAdapter +Input [1]: [#48#48] + +(145) NativeSort +Input [1]: [#48#48] +Arguments: [c_customer_sk#48 ASC NULLS FIRST], false + +(146) NativeSortMergeJoin +Left keys [1]: [ss_customer_sk#45] +Right keys [1]: [c_customer_sk#48] +Join type: Inner +Join condition: None + +(147) NativeProject +Output [3]: [ss_quantity#46, ss_sales_price#47, c_customer_sk#48] +Input [4]: [#45#45, #46#46, #47#47, #48#48] + +(148) NativeProject +Output [2]: [c_customer_sk#48 AS c_customer_sk#48, (cast(ss_quantity#46 as decimal(10,0)) * ss_sales_price#47) AS _c1#49] +Input [3]: [ss_quantity#46, ss_sales_price#47, c_customer_sk#48] + +(149) NativeHashAggregate +Input [2]: [c_customer_sk#48, _c1#49] +Keys [1]: [c_customer_sk#48] +Functions [1]: [partial_sum(_c1#49)] +Aggregate Attributes [2]: [sum#50, isEmpty#51] +Results [2]: [c_customer_sk#48, #15#15] + +(150) NativeHashAggregate +Input [2]: [c_customer_sk#48, #15#15] +Keys [1]: [c_customer_sk#48] +Functions [1]: [sum((cast(ss_quantity#46 as decimal(10,0)) * ss_sales_price#47))] +Aggregate Attributes [1]: [sum((cast(ss_quantity#46 as decimal(10,0)) * ss_sales_price#47))#26] +Results [2]: [c_customer_sk#48, sum((cast(ss_quantity#46 as decimal(10,0)) * ss_sales_price#47))#26] + +(151) NativeProject +Output [2]: [c_customer_sk#48, sum((cast(ss_quantity#46 as decimal(10,0)) * ss_sales_price#47))#26 AS ssales#52] +Input [2]: [c_customer_sk#48, sum((cast(ss_quantity#46 as decimal(10,0)) * ss_sales_price#47))#26] + +(152) NativeFilter +Input [2]: [c_customer_sk#48, ssales#52] +Condition : (isnotnull(ssales#52) AND (cast(ssales#52 as decimal(38,8)) > (0.500000 * ReusedSubquery Subquery subquery#28, [id=#29]))) + +(153) NativeProject +Output [1]: [c_customer_sk#48] +Input [2]: [c_customer_sk#48, ssales#52] + +(154) NativeSort +Input [1]: [c_customer_sk#48] +Arguments: [c_customer_sk#48 ASC NULLS FIRST], false + +(155) NativeSortMergeJoin +Left keys [1]: [ws_bill_customer_sk#36] +Right keys [1]: [c_customer_sk#48] +Join type: LeftSemi +Join condition: None + +(156) NativeProject +Output [3]: [ws_sold_date_sk#34, ws_quantity#37, ws_list_price#38] +Input [4]: [ws_sold_date_sk#34, ws_bill_customer_sk#36, ws_quantity#37, ws_list_price#38] + +(157) NativeShuffleExchange +Input [3]: [ws_sold_date_sk#34, ws_quantity#37, ws_list_price#38] +Arguments: hashpartitioning(ws_sold_date_sk#34, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(158) ShuffleQueryStage +Output [3]: [ws_sold_date_sk#34, ws_quantity#37, ws_list_price#38] +Arguments: X + +(159) AQEShuffleRead +Input [3]: [ws_sold_date_sk#34, ws_quantity#37, ws_list_price#38] +Arguments: coalesced + +(160) InputAdapter +Input [3]: [ws_sold_date_sk#34, ws_quantity#37, ws_list_price#38] + +(161) NativeSort +Input [3]: [ws_sold_date_sk#34, ws_quantity#37, ws_list_price#38] +Arguments: [ws_sold_date_sk#34 ASC NULLS FIRST], false + +(162) ReusedExchange [Reuses operator id: 92] +Output [1]: [d_date_sk#53] + +(163) ShuffleQueryStage +Output [1]: [d_date_sk#53] +Arguments: X + +(164) AQEShuffleRead +Input [1]: [d_date_sk#53] +Arguments: coalesced + +(165) InputAdapter +Input [1]: [d_date_sk#53] +Arguments: [#53] + +(166) InputAdapter +Input [1]: [#53#53] + +(167) NativeSort +Input [1]: [#53#53] +Arguments: [d_date_sk#53 ASC NULLS FIRST], false + +(168) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#34] +Right keys [1]: [d_date_sk#53] +Join type: Inner +Join condition: None + +(169) NativeProject +Output [1]: [(cast(ws_quantity#37 as decimal(10,0)) * ws_list_price#38) AS sales#54] +Input [4]: [ws_sold_date_sk#34, ws_quantity#37, ws_list_price#38, #53#53] + +(170) NativeUnion +Arguments: [sales#33] + +(171) InputAdapter +Input [1]: [sales#33] +Arguments: [#33] + +(172) NativeHashAggregate +Input [1]: [#33#33] +Keys: [] +Functions [1]: [partial_sum(sales#33)] +Aggregate Attributes [2]: [sum#55, isEmpty#56] +Results [1]: [#15#15] + +(173) NativeShuffleExchange +Input [1]: [#15#15] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=14] + +(174) ShuffleQueryStage +Output [1]: [#15#15] +Arguments: X + +(175) NativeHashAggregate +Input [1]: [#15#15] +Keys: [] +Functions [1]: [sum(sales#33)] +Aggregate Attributes [1]: [sum(sales#33)#57] +Results [1]: [sum(sales#33)#57] + +(176) NativeProject +Output [1]: [sum(sales#33)#57 AS sum(sales)#58] +Input [1]: [sum(sales#33)#57] + +(177) Scan parquet +Output [5]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_item_sk#3, cs_quantity#4, cs_list_price#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(178) Filter +Input [5]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_item_sk#3, cs_quantity#4, cs_list_price#5] +Condition : isnotnull(cs_sold_date_sk#1) + +(179) Exchange +Input [5]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_item_sk#3, cs_quantity#4, cs_list_price#5] +Arguments: hashpartitioning(cs_item_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(180) Sort +Input [5]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_item_sk#3, cs_quantity#4, cs_list_price#5] +Arguments: [cs_item_sk#3 ASC NULLS FIRST], false, 0 + +(181) Scan parquet +Output [2]: [ss_sold_date_sk#6, ss_item_sk#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(182) Filter +Input [2]: [ss_sold_date_sk#6, ss_item_sk#7] +Condition : (isnotnull(ss_sold_date_sk#6) AND isnotnull(ss_item_sk#7)) + +(183) Exchange +Input [2]: [ss_sold_date_sk#6, ss_item_sk#7] +Arguments: hashpartitioning(ss_sold_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(184) Sort +Input [2]: [ss_sold_date_sk#6, ss_item_sk#7] +Arguments: [ss_sold_date_sk#6 ASC NULLS FIRST], false, 0 + +(185) Scan parquet +Output [3]: [d_date_sk#8, d_date#9, d_year#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(d_year, [2000,2001,2002,2003]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(186) Filter +Input [3]: [d_date_sk#8, d_date#9, d_year#10] +Condition : (d_year#10 IN (2000,2001,2002,2003) AND isnotnull(d_date_sk#8)) + +(187) Project +Output [2]: [d_date_sk#8, d_date#9] +Input [3]: [d_date_sk#8, d_date#9, d_year#10] + +(188) Exchange +Input [2]: [d_date_sk#8, d_date#9] +Arguments: hashpartitioning(d_date_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(189) Sort +Input [2]: [d_date_sk#8, d_date#9] +Arguments: [d_date_sk#8 ASC NULLS FIRST], false, 0 + +(190) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#6] +Right keys [1]: [d_date_sk#8] +Join type: Inner +Join condition: None + +(191) Project +Output [2]: [ss_item_sk#7, d_date#9] +Input [4]: [ss_sold_date_sk#6, ss_item_sk#7, d_date_sk#8, d_date#9] + +(192) Exchange +Input [2]: [ss_item_sk#7, d_date#9] +Arguments: hashpartitioning(ss_item_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(193) Sort +Input [2]: [ss_item_sk#7, d_date#9] +Arguments: [ss_item_sk#7 ASC NULLS FIRST], false, 0 + +(194) Scan parquet +Output [2]: [i_item_sk#11, i_item_desc#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(195) Filter +Input [2]: [i_item_sk#11, i_item_desc#12] +Condition : isnotnull(i_item_sk#11) + +(196) Exchange +Input [2]: [i_item_sk#11, i_item_desc#12] +Arguments: hashpartitioning(i_item_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(197) Sort +Input [2]: [i_item_sk#11, i_item_desc#12] +Arguments: [i_item_sk#11 ASC NULLS FIRST], false, 0 + +(198) SortMergeJoin +Left keys [1]: [ss_item_sk#7] +Right keys [1]: [i_item_sk#11] +Join type: Inner +Join condition: None + +(199) Project +Output [3]: [d_date#9, i_item_sk#11, substr(i_item_desc#12, 1, 30) AS _groupingexpression#13] +Input [4]: [ss_item_sk#7, d_date#9, i_item_sk#11, i_item_desc#12] + +(200) HashAggregate +Input [3]: [d_date#9, i_item_sk#11, _groupingexpression#13] +Keys [3]: [_groupingexpression#13, i_item_sk#11, d_date#9] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#14] +Results [4]: [_groupingexpression#13, i_item_sk#11, d_date#9, count#59] + +(201) HashAggregate +Input [4]: [_groupingexpression#13, i_item_sk#11, d_date#9, count#59] +Keys [3]: [_groupingexpression#13, i_item_sk#11, d_date#9] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#16] +Results [2]: [i_item_sk#11 AS item_sk#17, count(1)#16 AS cnt#18] + +(202) Filter +Input [2]: [item_sk#17, cnt#18] +Condition : (cnt#18 > 4) + +(203) Project +Output [1]: [item_sk#17] +Input [2]: [item_sk#17, cnt#18] + +(204) Sort +Input [1]: [item_sk#17] +Arguments: [item_sk#17 ASC NULLS FIRST], false, 0 + +(205) SortMergeJoin +Left keys [1]: [cs_item_sk#3] +Right keys [1]: [item_sk#17] +Join type: LeftSemi +Join condition: None + +(206) Project +Output [4]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_quantity#4, cs_list_price#5] +Input [5]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_item_sk#3, cs_quantity#4, cs_list_price#5] + +(207) Exchange +Input [4]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_quantity#4, cs_list_price#5] +Arguments: hashpartitioning(cs_bill_customer_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(208) Sort +Input [4]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_quantity#4, cs_list_price#5] +Arguments: [cs_bill_customer_sk#2 ASC NULLS FIRST], false, 0 + +(209) Scan parquet +Output [3]: [ss_customer_sk#19, ss_quantity#20, ss_sales_price#21] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk)] +ReadSchema: struct + +(210) Filter +Input [3]: [ss_customer_sk#19, ss_quantity#20, ss_sales_price#21] +Condition : isnotnull(ss_customer_sk#19) + +(211) Exchange +Input [3]: [ss_customer_sk#19, ss_quantity#20, ss_sales_price#21] +Arguments: hashpartitioning(ss_customer_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(212) Sort +Input [3]: [ss_customer_sk#19, ss_quantity#20, ss_sales_price#21] +Arguments: [ss_customer_sk#19 ASC NULLS FIRST], false, 0 + +(213) Scan parquet +Output [1]: [c_customer_sk#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk)] +ReadSchema: struct + +(214) Filter +Input [1]: [c_customer_sk#22] +Condition : isnotnull(c_customer_sk#22) + +(215) Exchange +Input [1]: [c_customer_sk#22] +Arguments: hashpartitioning(c_customer_sk#22, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(216) Sort +Input [1]: [c_customer_sk#22] +Arguments: [c_customer_sk#22 ASC NULLS FIRST], false, 0 + +(217) SortMergeJoin +Left keys [1]: [ss_customer_sk#19] +Right keys [1]: [c_customer_sk#22] +Join type: Inner +Join condition: None + +(218) Project +Output [3]: [ss_quantity#20, ss_sales_price#21, c_customer_sk#22] +Input [4]: [ss_customer_sk#19, ss_quantity#20, ss_sales_price#21, c_customer_sk#22] + +(219) HashAggregate +Input [3]: [ss_quantity#20, ss_sales_price#21, c_customer_sk#22] +Keys [1]: [c_customer_sk#22] +Functions [1]: [partial_sum((cast(ss_quantity#20 as decimal(10,0)) * ss_sales_price#21))] +Aggregate Attributes [2]: [sum#24, isEmpty#25] +Results [3]: [c_customer_sk#22, sum#60, isEmpty#61] + +(220) HashAggregate +Input [3]: [c_customer_sk#22, sum#60, isEmpty#61] +Keys [1]: [c_customer_sk#22] +Functions [1]: [sum((cast(ss_quantity#20 as decimal(10,0)) * ss_sales_price#21))] +Aggregate Attributes [1]: [sum((cast(ss_quantity#20 as decimal(10,0)) * ss_sales_price#21))#26] +Results [2]: [c_customer_sk#22, sum((cast(ss_quantity#20 as decimal(10,0)) * ss_sales_price#21))#26 AS ssales#27] + +(221) Filter +Input [2]: [c_customer_sk#22, ssales#27] +Condition : (isnotnull(ssales#27) AND (cast(ssales#27 as decimal(38,8)) > (0.500000 * Subquery subquery#28, [id=#29]))) + +(222) Project +Output [1]: [c_customer_sk#22] +Input [2]: [c_customer_sk#22, ssales#27] + +(223) Sort +Input [1]: [c_customer_sk#22] +Arguments: [c_customer_sk#22 ASC NULLS FIRST], false, 0 + +(224) SortMergeJoin +Left keys [1]: [cs_bill_customer_sk#2] +Right keys [1]: [c_customer_sk#22] +Join type: LeftSemi +Join condition: None + +(225) Project +Output [3]: [cs_sold_date_sk#1, cs_quantity#4, cs_list_price#5] +Input [4]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_quantity#4, cs_list_price#5] + +(226) Exchange +Input [3]: [cs_sold_date_sk#1, cs_quantity#4, cs_list_price#5] +Arguments: hashpartitioning(cs_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(227) Sort +Input [3]: [cs_sold_date_sk#1, cs_quantity#4, cs_list_price#5] +Arguments: [cs_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(228) Scan parquet +Output [3]: [d_date_sk#30, d_year#31, d_moy#32] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2000), EqualTo(d_moy,2), IsNotNull(d_date_sk)] +ReadSchema: struct + +(229) Filter +Input [3]: [d_date_sk#30, d_year#31, d_moy#32] +Condition : ((((isnotnull(d_year#31) AND isnotnull(d_moy#32)) AND (d_year#31 = 2000)) AND (d_moy#32 = 2)) AND isnotnull(d_date_sk#30)) + +(230) Project +Output [1]: [d_date_sk#30] +Input [3]: [d_date_sk#30, d_year#31, d_moy#32] + +(231) Exchange +Input [1]: [d_date_sk#30] +Arguments: hashpartitioning(d_date_sk#30, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(232) Sort +Input [1]: [d_date_sk#30] +Arguments: [d_date_sk#30 ASC NULLS FIRST], false, 0 + +(233) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#1] +Right keys [1]: [d_date_sk#30] +Join type: Inner +Join condition: None + +(234) Project +Output [1]: [(cast(cs_quantity#4 as decimal(10,0)) * cs_list_price#5) AS sales#33] +Input [4]: [cs_sold_date_sk#1, cs_quantity#4, cs_list_price#5, d_date_sk#30] + +(235) Scan parquet +Output [5]: [ws_sold_date_sk#34, ws_item_sk#35, ws_bill_customer_sk#36, ws_quantity#37, ws_list_price#38] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(236) Filter +Input [5]: [ws_sold_date_sk#34, ws_item_sk#35, ws_bill_customer_sk#36, ws_quantity#37, ws_list_price#38] +Condition : isnotnull(ws_sold_date_sk#34) + +(237) Exchange +Input [5]: [ws_sold_date_sk#34, ws_item_sk#35, ws_bill_customer_sk#36, ws_quantity#37, ws_list_price#38] +Arguments: hashpartitioning(ws_item_sk#35, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(238) Sort +Input [5]: [ws_sold_date_sk#34, ws_item_sk#35, ws_bill_customer_sk#36, ws_quantity#37, ws_list_price#38] +Arguments: [ws_item_sk#35 ASC NULLS FIRST], false, 0 + +(239) Scan parquet +Output [2]: [ss_sold_date_sk#62, ss_item_sk#39] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(240) Filter +Input [2]: [ss_sold_date_sk#62, ss_item_sk#39] +Condition : (isnotnull(ss_sold_date_sk#62) AND isnotnull(ss_item_sk#39)) + +(241) Exchange +Input [2]: [ss_sold_date_sk#62, ss_item_sk#39] +Arguments: hashpartitioning(ss_sold_date_sk#62, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(242) Sort +Input [2]: [ss_sold_date_sk#62, ss_item_sk#39] +Arguments: [ss_sold_date_sk#62 ASC NULLS FIRST], false, 0 + +(243) Scan parquet +Output [3]: [d_date_sk#63, d_date#40, d_year#64] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(d_year, [2000,2001,2002,2003]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(244) Filter +Input [3]: [d_date_sk#63, d_date#40, d_year#64] +Condition : (d_year#64 IN (2000,2001,2002,2003) AND isnotnull(d_date_sk#63)) + +(245) Project +Output [2]: [d_date_sk#63, d_date#40] +Input [3]: [d_date_sk#63, d_date#40, d_year#64] + +(246) Exchange +Input [2]: [d_date_sk#63, d_date#40] +Arguments: hashpartitioning(d_date_sk#63, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(247) Sort +Input [2]: [d_date_sk#63, d_date#40] +Arguments: [d_date_sk#63 ASC NULLS FIRST], false, 0 + +(248) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#62] +Right keys [1]: [d_date_sk#63] +Join type: Inner +Join condition: None + +(249) Project +Output [2]: [ss_item_sk#39, d_date#40] +Input [4]: [ss_sold_date_sk#62, ss_item_sk#39, d_date_sk#63, d_date#40] + +(250) Exchange +Input [2]: [ss_item_sk#39, d_date#40] +Arguments: hashpartitioning(ss_item_sk#39, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(251) Sort +Input [2]: [ss_item_sk#39, d_date#40] +Arguments: [ss_item_sk#39 ASC NULLS FIRST], false, 0 + +(252) Scan parquet +Output [2]: [i_item_sk#41, i_item_desc#42] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(253) Filter +Input [2]: [i_item_sk#41, i_item_desc#42] +Condition : isnotnull(i_item_sk#41) + +(254) Exchange +Input [2]: [i_item_sk#41, i_item_desc#42] +Arguments: hashpartitioning(i_item_sk#41, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(255) Sort +Input [2]: [i_item_sk#41, i_item_desc#42] +Arguments: [i_item_sk#41 ASC NULLS FIRST], false, 0 + +(256) SortMergeJoin +Left keys [1]: [ss_item_sk#39] +Right keys [1]: [i_item_sk#41] +Join type: Inner +Join condition: None + +(257) Project +Output [3]: [d_date#40, i_item_sk#41, substr(i_item_desc#42, 1, 30) AS _groupingexpression#13] +Input [4]: [ss_item_sk#39, d_date#40, i_item_sk#41, i_item_desc#42] + +(258) HashAggregate +Input [3]: [d_date#40, i_item_sk#41, _groupingexpression#13] +Keys [3]: [_groupingexpression#13, i_item_sk#41, d_date#40] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#14] +Results [4]: [_groupingexpression#13, i_item_sk#41, d_date#40, count#59] + +(259) HashAggregate +Input [4]: [_groupingexpression#13, i_item_sk#41, d_date#40, count#59] +Keys [3]: [_groupingexpression#13, i_item_sk#41, d_date#40] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#16] +Results [2]: [i_item_sk#41 AS item_sk#43, count(1)#16 AS cnt#44] + +(260) Filter +Input [2]: [item_sk#43, cnt#44] +Condition : (cnt#44 > 4) + +(261) Project +Output [1]: [item_sk#43] +Input [2]: [item_sk#43, cnt#44] + +(262) Sort +Input [1]: [item_sk#43] +Arguments: [item_sk#43 ASC NULLS FIRST], false, 0 + +(263) SortMergeJoin +Left keys [1]: [ws_item_sk#35] +Right keys [1]: [item_sk#43] +Join type: LeftSemi +Join condition: None + +(264) Project +Output [4]: [ws_sold_date_sk#34, ws_bill_customer_sk#36, ws_quantity#37, ws_list_price#38] +Input [5]: [ws_sold_date_sk#34, ws_item_sk#35, ws_bill_customer_sk#36, ws_quantity#37, ws_list_price#38] + +(265) Exchange +Input [4]: [ws_sold_date_sk#34, ws_bill_customer_sk#36, ws_quantity#37, ws_list_price#38] +Arguments: hashpartitioning(ws_bill_customer_sk#36, 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(266) Sort +Input [4]: [ws_sold_date_sk#34, ws_bill_customer_sk#36, ws_quantity#37, ws_list_price#38] +Arguments: [ws_bill_customer_sk#36 ASC NULLS FIRST], false, 0 + +(267) Scan parquet +Output [3]: [ss_customer_sk#45, ss_quantity#46, ss_sales_price#47] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk)] +ReadSchema: struct + +(268) Filter +Input [3]: [ss_customer_sk#45, ss_quantity#46, ss_sales_price#47] +Condition : isnotnull(ss_customer_sk#45) + +(269) Exchange +Input [3]: [ss_customer_sk#45, ss_quantity#46, ss_sales_price#47] +Arguments: hashpartitioning(ss_customer_sk#45, 100), ENSURE_REQUIREMENTS, [plan_id=31] + +(270) Sort +Input [3]: [ss_customer_sk#45, ss_quantity#46, ss_sales_price#47] +Arguments: [ss_customer_sk#45 ASC NULLS FIRST], false, 0 + +(271) Scan parquet +Output [1]: [c_customer_sk#48] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk)] +ReadSchema: struct + +(272) Filter +Input [1]: [c_customer_sk#48] +Condition : isnotnull(c_customer_sk#48) + +(273) Exchange +Input [1]: [c_customer_sk#48] +Arguments: hashpartitioning(c_customer_sk#48, 100), ENSURE_REQUIREMENTS, [plan_id=32] + +(274) Sort +Input [1]: [c_customer_sk#48] +Arguments: [c_customer_sk#48 ASC NULLS FIRST], false, 0 + +(275) SortMergeJoin +Left keys [1]: [ss_customer_sk#45] +Right keys [1]: [c_customer_sk#48] +Join type: Inner +Join condition: None + +(276) Project +Output [3]: [ss_quantity#46, ss_sales_price#47, c_customer_sk#48] +Input [4]: [ss_customer_sk#45, ss_quantity#46, ss_sales_price#47, c_customer_sk#48] + +(277) HashAggregate +Input [3]: [ss_quantity#46, ss_sales_price#47, c_customer_sk#48] +Keys [1]: [c_customer_sk#48] +Functions [1]: [partial_sum((cast(ss_quantity#46 as decimal(10,0)) * ss_sales_price#47))] +Aggregate Attributes [2]: [sum#50, isEmpty#51] +Results [3]: [c_customer_sk#48, sum#65, isEmpty#66] + +(278) HashAggregate +Input [3]: [c_customer_sk#48, sum#65, isEmpty#66] +Keys [1]: [c_customer_sk#48] +Functions [1]: [sum((cast(ss_quantity#46 as decimal(10,0)) * ss_sales_price#47))] +Aggregate Attributes [1]: [sum((cast(ss_quantity#46 as decimal(10,0)) * ss_sales_price#47))#26] +Results [2]: [c_customer_sk#48, sum((cast(ss_quantity#46 as decimal(10,0)) * ss_sales_price#47))#26 AS ssales#52] + +(279) Filter +Input [2]: [c_customer_sk#48, ssales#52] +Condition : (isnotnull(ssales#52) AND (cast(ssales#52 as decimal(38,8)) > (0.500000 * Subquery subquery#28, [id=#67]))) + +(280) Project +Output [1]: [c_customer_sk#48] +Input [2]: [c_customer_sk#48, ssales#52] + +(281) Sort +Input [1]: [c_customer_sk#48] +Arguments: [c_customer_sk#48 ASC NULLS FIRST], false, 0 + +(282) SortMergeJoin +Left keys [1]: [ws_bill_customer_sk#36] +Right keys [1]: [c_customer_sk#48] +Join type: LeftSemi +Join condition: None + +(283) Project +Output [3]: [ws_sold_date_sk#34, ws_quantity#37, ws_list_price#38] +Input [4]: [ws_sold_date_sk#34, ws_bill_customer_sk#36, ws_quantity#37, ws_list_price#38] + +(284) Exchange +Input [3]: [ws_sold_date_sk#34, ws_quantity#37, ws_list_price#38] +Arguments: hashpartitioning(ws_sold_date_sk#34, 100), ENSURE_REQUIREMENTS, [plan_id=33] + +(285) Sort +Input [3]: [ws_sold_date_sk#34, ws_quantity#37, ws_list_price#38] +Arguments: [ws_sold_date_sk#34 ASC NULLS FIRST], false, 0 + +(286) Scan parquet +Output [3]: [d_date_sk#53, d_year#68, d_moy#69] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2000), EqualTo(d_moy,2), IsNotNull(d_date_sk)] +ReadSchema: struct + +(287) Filter +Input [3]: [d_date_sk#53, d_year#68, d_moy#69] +Condition : ((((isnotnull(d_year#68) AND isnotnull(d_moy#69)) AND (d_year#68 = 2000)) AND (d_moy#69 = 2)) AND isnotnull(d_date_sk#53)) + +(288) Project +Output [1]: [d_date_sk#53] +Input [3]: [d_date_sk#53, d_year#68, d_moy#69] + +(289) Exchange +Input [1]: [d_date_sk#53] +Arguments: hashpartitioning(d_date_sk#53, 100), ENSURE_REQUIREMENTS, [plan_id=34] + +(290) Sort +Input [1]: [d_date_sk#53] +Arguments: [d_date_sk#53 ASC NULLS FIRST], false, 0 + +(291) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#34] +Right keys [1]: [d_date_sk#53] +Join type: Inner +Join condition: None + +(292) Project +Output [1]: [(cast(ws_quantity#37 as decimal(10,0)) * ws_list_price#38) AS sales#54] +Input [4]: [ws_sold_date_sk#34, ws_quantity#37, ws_list_price#38, d_date_sk#53] + +(293) Union + +(294) HashAggregate +Input [1]: [sales#33] +Keys: [] +Functions [1]: [partial_sum(sales#33)] +Aggregate Attributes [2]: [sum#55, isEmpty#56] +Results [2]: [sum#70, isEmpty#71] + +(295) Exchange +Input [2]: [sum#70, isEmpty#71] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=35] + +(296) HashAggregate +Input [2]: [sum#70, isEmpty#71] +Keys: [] +Functions [1]: [sum(sales#33)] +Aggregate Attributes [1]: [sum(sales#33)#57] +Results [1]: [sum(sales#33)#57 AS sum(sales)#58] + +(297) AdaptiveSparkPlan +Output [1]: [sum(sales)#58] +Arguments: isFinalPlan=true + +===== Subqueries ===== + +Subquery:1 Hosting operator id = 78 Hosting Expression = Subquery subquery#28, [id=#29] +AdaptiveSparkPlan (368) ++- == Final Plan == + NativeProject (342) + +- NativeHashAggregate (341) + +- ShuffleQueryStage (340), Statistics(X) + +- NativeShuffleExchange (339) + +- NativeHashAggregate (338) + +- NativeProject (337) + +- NativeHashAggregate (336) + +- InputAdapter (335) + +- AQEShuffleRead (334) + +- ShuffleQueryStage (333), Statistics(X) + +- NativeShuffleExchange (332) + +- NativeHashAggregate (331) + +- NativeProject (330) + +- NativeProject (329) + +- NativeSortMergeJoin Inner (328) + :- NativeSort (318) + : +- InputAdapter (317) + : +- AQEShuffleRead (316) + : +- ShuffleQueryStage (315), Statistics(X) + : +- NativeShuffleExchange (314) + : +- NativeProject (313) + : +- NativeSortMergeJoin Inner (312) + : :- NativeSort (305) + : : +- InputAdapter (304) + : : +- AQEShuffleRead (303) + : : +- ShuffleQueryStage (302), Statistics(X) + : : +- NativeShuffleExchange (301) + : : +- NativeFilter (300) + : : +- InputAdapter (299) + : : +- NativeParquetScan (298) + : +- NativeSort (311) + : +- InputAdapter (310) + : +- InputAdapter (309) + : +- AQEShuffleRead (308) + : +- ShuffleQueryStage (307), Statistics(X) + : +- ReusedExchange (306) + +- NativeSort (327) + +- InputAdapter (326) + +- AQEShuffleRead (325) + +- ShuffleQueryStage (324), Statistics(X) + +- NativeShuffleExchange (323) + +- NativeProject (322) + +- NativeFilter (321) + +- InputAdapter (320) + +- NativeParquetScan (319) ++- == Initial Plan == + HashAggregate (367) + +- Exchange (366) + +- HashAggregate (365) + +- HashAggregate (364) + +- Exchange (363) + +- HashAggregate (362) + +- Project (361) + +- SortMergeJoin Inner (360) + :- Sort (354) + : +- Exchange (353) + : +- Project (352) + : +- SortMergeJoin Inner (351) + : :- Sort (346) + : : +- Exchange (345) + : : +- Filter (344) + : : +- Scan parquet (343) + : +- Sort (350) + : +- Exchange (349) + : +- Filter (348) + : +- Scan parquet (347) + +- Sort (359) + +- Exchange (358) + +- Project (357) + +- Filter (356) + +- Scan parquet (355) + + +(343) Scan parquet +Output [4]: [ss_sold_date_sk#72, ss_customer_sk#73, ss_quantity#74, ss_sales_price#75] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(299) InputAdapter +Input [4]: [ss_sold_date_sk#72, ss_customer_sk#73, ss_quantity#74, ss_sales_price#75] +Arguments: [#72, #73, #74, #75] + +(300) NativeFilter +Input [4]: [#72#72, #73#73, #74#74, #75#75] +Condition : (isnotnull(ss_customer_sk#73) AND isnotnull(ss_sold_date_sk#72)) + +(301) NativeShuffleExchange +Input [4]: [#72#72, #73#73, #74#74, #75#75] +Arguments: hashpartitioning(ss_customer_sk#73, 100), ENSURE_REQUIREMENTS, [plan_id=36] + +(302) ShuffleQueryStage +Output [4]: [#72#72, #73#73, #74#74, #75#75] +Arguments: X + +(303) AQEShuffleRead +Input [4]: [#72#72, #73#73, #74#74, #75#75] +Arguments: coalesced + +(304) InputAdapter +Input [4]: [#72#72, #73#73, #74#74, #75#75] + +(305) NativeSort +Input [4]: [#72#72, #73#73, #74#74, #75#75] +Arguments: [ss_customer_sk#73 ASC NULLS FIRST], false + +(306) ReusedExchange [Reuses operator id: 67] +Output [1]: [c_customer_sk#76] + +(307) ShuffleQueryStage +Output [1]: [c_customer_sk#76] +Arguments: X + +(308) AQEShuffleRead +Input [1]: [c_customer_sk#76] +Arguments: coalesced + +(309) InputAdapter +Input [1]: [c_customer_sk#76] +Arguments: [#76] + +(310) InputAdapter +Input [1]: [#76#76] + +(311) NativeSort +Input [1]: [#76#76] +Arguments: [c_customer_sk#76 ASC NULLS FIRST], false + +(312) NativeSortMergeJoin +Left keys [1]: [ss_customer_sk#73] +Right keys [1]: [c_customer_sk#76] +Join type: Inner +Join condition: None + +(313) NativeProject +Output [4]: [ss_sold_date_sk#72, ss_quantity#74, ss_sales_price#75, c_customer_sk#76] +Input [5]: [#72#72, #73#73, #74#74, #75#75, #76#76] + +(314) NativeShuffleExchange +Input [4]: [ss_sold_date_sk#72, ss_quantity#74, ss_sales_price#75, c_customer_sk#76] +Arguments: hashpartitioning(ss_sold_date_sk#72, 100), ENSURE_REQUIREMENTS, [plan_id=37] + +(315) ShuffleQueryStage +Output [4]: [ss_sold_date_sk#72, ss_quantity#74, ss_sales_price#75, c_customer_sk#76] +Arguments: X + +(316) AQEShuffleRead +Input [4]: [ss_sold_date_sk#72, ss_quantity#74, ss_sales_price#75, c_customer_sk#76] +Arguments: coalesced + +(317) InputAdapter +Input [4]: [ss_sold_date_sk#72, ss_quantity#74, ss_sales_price#75, c_customer_sk#76] + +(318) NativeSort +Input [4]: [ss_sold_date_sk#72, ss_quantity#74, ss_sales_price#75, c_customer_sk#76] +Arguments: [ss_sold_date_sk#72 ASC NULLS FIRST], false + +(355) Scan parquet +Output [2]: [d_date_sk#77, d_year#78] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(d_year, [2000,2001,2002,2003]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(320) InputAdapter +Input [2]: [d_date_sk#77, d_year#78] +Arguments: [#77, #78] + +(321) NativeFilter +Input [2]: [#77#77, #78#78] +Condition : (d_year#78 IN (2000,2001,2002,2003) AND isnotnull(d_date_sk#77)) + +(322) NativeProject +Output [1]: [d_date_sk#77] +Input [2]: [#77#77, #78#78] + +(323) NativeShuffleExchange +Input [1]: [d_date_sk#77] +Arguments: hashpartitioning(d_date_sk#77, 100), ENSURE_REQUIREMENTS, [plan_id=38] + +(324) ShuffleQueryStage +Output [1]: [d_date_sk#77] +Arguments: X + +(325) AQEShuffleRead +Input [1]: [d_date_sk#77] +Arguments: coalesced + +(326) InputAdapter +Input [1]: [d_date_sk#77] + +(327) NativeSort +Input [1]: [d_date_sk#77] +Arguments: [d_date_sk#77 ASC NULLS FIRST], false + +(328) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#72] +Right keys [1]: [d_date_sk#77] +Join type: Inner +Join condition: None + +(329) NativeProject +Output [3]: [ss_quantity#74, ss_sales_price#75, c_customer_sk#76] +Input [5]: [ss_sold_date_sk#72, ss_quantity#74, ss_sales_price#75, c_customer_sk#76, d_date_sk#77] + +(330) NativeProject +Output [2]: [c_customer_sk#76 AS c_customer_sk#76, (cast(ss_quantity#74 as decimal(10,0)) * ss_sales_price#75) AS _c1#79] +Input [3]: [ss_quantity#74, ss_sales_price#75, c_customer_sk#76] + +(331) NativeHashAggregate +Input [2]: [c_customer_sk#76, _c1#79] +Keys [1]: [c_customer_sk#76] +Functions [1]: [partial_sum(_c1#79)] +Aggregate Attributes [2]: [sum#80, isEmpty#81] +Results [2]: [c_customer_sk#76, #15#15] + +(332) NativeShuffleExchange +Input [2]: [c_customer_sk#76, #15#15] +Arguments: hashpartitioning(c_customer_sk#76, 100), ENSURE_REQUIREMENTS, [plan_id=39] + +(333) ShuffleQueryStage +Output [2]: [c_customer_sk#76, #15#15] +Arguments: X + +(334) AQEShuffleRead +Input [2]: [c_customer_sk#76, #15#15] +Arguments: coalesced + +(335) InputAdapter +Input [2]: [c_customer_sk#76, #15#15] + +(336) NativeHashAggregate +Input [2]: [c_customer_sk#76, #15#15] +Keys [1]: [c_customer_sk#76] +Functions [1]: [sum((cast(ss_quantity#74 as decimal(10,0)) * ss_sales_price#75))] +Aggregate Attributes [1]: [sum((cast(ss_quantity#74 as decimal(10,0)) * ss_sales_price#75))#82] +Results [2]: [c_customer_sk#76, sum((cast(ss_quantity#74 as decimal(10,0)) * ss_sales_price#75))#82] + +(337) NativeProject +Output [1]: [sum((cast(ss_quantity#74 as decimal(10,0)) * ss_sales_price#75))#82 AS csales#83] +Input [2]: [c_customer_sk#76, sum((cast(ss_quantity#74 as decimal(10,0)) * ss_sales_price#75))#82] + +(338) NativeHashAggregate +Input [1]: [csales#83] +Keys: [] +Functions [1]: [partial_max(csales#83)] +Aggregate Attributes [1]: [max#84] +Results [1]: [#15#15] + +(339) NativeShuffleExchange +Input [1]: [#15#15] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=40] + +(340) ShuffleQueryStage +Output [1]: [#15#15] +Arguments: X + +(341) NativeHashAggregate +Input [1]: [#15#15] +Keys: [] +Functions [1]: [max(csales#83)] +Aggregate Attributes [1]: [max(csales#83)#85] +Results [1]: [max(csales#83)#85] + +(342) NativeProject +Output [1]: [max(csales#83)#85 AS tpcds_cmax#86] +Input [1]: [max(csales#83)#85] + +(343) Scan parquet +Output [4]: [ss_sold_date_sk#72, ss_customer_sk#73, ss_quantity#74, ss_sales_price#75] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(344) Filter +Input [4]: [ss_sold_date_sk#72, ss_customer_sk#73, ss_quantity#74, ss_sales_price#75] +Condition : (isnotnull(ss_customer_sk#73) AND isnotnull(ss_sold_date_sk#72)) + +(345) Exchange +Input [4]: [ss_sold_date_sk#72, ss_customer_sk#73, ss_quantity#74, ss_sales_price#75] +Arguments: hashpartitioning(ss_customer_sk#73, 100), ENSURE_REQUIREMENTS, [plan_id=41] + +(346) Sort +Input [4]: [ss_sold_date_sk#72, ss_customer_sk#73, ss_quantity#74, ss_sales_price#75] +Arguments: [ss_customer_sk#73 ASC NULLS FIRST], false, 0 + +(347) Scan parquet +Output [1]: [c_customer_sk#76] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk)] +ReadSchema: struct + +(348) Filter +Input [1]: [c_customer_sk#76] +Condition : isnotnull(c_customer_sk#76) + +(349) Exchange +Input [1]: [c_customer_sk#76] +Arguments: hashpartitioning(c_customer_sk#76, 100), ENSURE_REQUIREMENTS, [plan_id=42] + +(350) Sort +Input [1]: [c_customer_sk#76] +Arguments: [c_customer_sk#76 ASC NULLS FIRST], false, 0 + +(351) SortMergeJoin +Left keys [1]: [ss_customer_sk#73] +Right keys [1]: [c_customer_sk#76] +Join type: Inner +Join condition: None + +(352) Project +Output [4]: [ss_sold_date_sk#72, ss_quantity#74, ss_sales_price#75, c_customer_sk#76] +Input [5]: [ss_sold_date_sk#72, ss_customer_sk#73, ss_quantity#74, ss_sales_price#75, c_customer_sk#76] + +(353) Exchange +Input [4]: [ss_sold_date_sk#72, ss_quantity#74, ss_sales_price#75, c_customer_sk#76] +Arguments: hashpartitioning(ss_sold_date_sk#72, 100), ENSURE_REQUIREMENTS, [plan_id=43] + +(354) Sort +Input [4]: [ss_sold_date_sk#72, ss_quantity#74, ss_sales_price#75, c_customer_sk#76] +Arguments: [ss_sold_date_sk#72 ASC NULLS FIRST], false, 0 + +(355) Scan parquet +Output [2]: [d_date_sk#77, d_year#78] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(d_year, [2000,2001,2002,2003]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(356) Filter +Input [2]: [d_date_sk#77, d_year#78] +Condition : (d_year#78 IN (2000,2001,2002,2003) AND isnotnull(d_date_sk#77)) + +(357) Project +Output [1]: [d_date_sk#77] +Input [2]: [d_date_sk#77, d_year#78] + +(358) Exchange +Input [1]: [d_date_sk#77] +Arguments: hashpartitioning(d_date_sk#77, 100), ENSURE_REQUIREMENTS, [plan_id=44] + +(359) Sort +Input [1]: [d_date_sk#77] +Arguments: [d_date_sk#77 ASC NULLS FIRST], false, 0 + +(360) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#72] +Right keys [1]: [d_date_sk#77] +Join type: Inner +Join condition: None + +(361) Project +Output [3]: [ss_quantity#74, ss_sales_price#75, c_customer_sk#76] +Input [5]: [ss_sold_date_sk#72, ss_quantity#74, ss_sales_price#75, c_customer_sk#76, d_date_sk#77] + +(362) HashAggregate +Input [3]: [ss_quantity#74, ss_sales_price#75, c_customer_sk#76] +Keys [1]: [c_customer_sk#76] +Functions [1]: [partial_sum((cast(ss_quantity#74 as decimal(10,0)) * ss_sales_price#75))] +Aggregate Attributes [2]: [sum#80, isEmpty#81] +Results [3]: [c_customer_sk#76, sum#87, isEmpty#88] + +(363) Exchange +Input [3]: [c_customer_sk#76, sum#87, isEmpty#88] +Arguments: hashpartitioning(c_customer_sk#76, 100), ENSURE_REQUIREMENTS, [plan_id=45] + +(364) HashAggregate +Input [3]: [c_customer_sk#76, sum#87, isEmpty#88] +Keys [1]: [c_customer_sk#76] +Functions [1]: [sum((cast(ss_quantity#74 as decimal(10,0)) * ss_sales_price#75))] +Aggregate Attributes [1]: [sum((cast(ss_quantity#74 as decimal(10,0)) * ss_sales_price#75))#82] +Results [1]: [sum((cast(ss_quantity#74 as decimal(10,0)) * ss_sales_price#75))#82 AS csales#83] + +(365) HashAggregate +Input [1]: [csales#83] +Keys: [] +Functions [1]: [partial_max(csales#83)] +Aggregate Attributes [1]: [max#84] +Results [1]: [max#89] + +(366) Exchange +Input [1]: [max#89] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=46] + +(367) HashAggregate +Input [1]: [max#89] +Keys: [] +Functions [1]: [max(csales#83)] +Aggregate Attributes [1]: [max(csales#83)#85] +Results [1]: [max(csales#83)#85 AS tpcds_cmax#86] + +(368) AdaptiveSparkPlan +Output [1]: [tpcds_cmax#86] +Arguments: isFinalPlan=true + +Subquery:2 Hosting operator id = 152 Hosting Expression = ReusedSubquery Subquery subquery#28, [id=#29] + + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q23b.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q23b.txt new file mode 100644 index 000000000..96fd3cf2b --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q23b.txt @@ -0,0 +1,2704 @@ +== Physical Plan == +AdaptiveSparkPlan (415) ++- == Final Plan == + NativeTakeOrdered (248) + +- InputAdapter (247) + +- NativeUnion (246) + :- NativeProject (137) + : +- NativeHashAggregate (136) + : +- InputAdapter (135) + : +- AQEShuffleRead (134) + : +- ShuffleQueryStage (133), Statistics(X) + : +- NativeShuffleExchange (132) + : +- NativeHashAggregate (131) + : +- NativeProject (130) + : +- NativeProject (129) + : +- NativeSortMergeJoin Inner (128) + : :- NativeSort (118) + : : +- InputAdapter (117) + : : +- AQEShuffleRead (116) + : : +- ShuffleQueryStage (115), Statistics(X) + : : +- NativeShuffleExchange (114) + : : +- NativeProject (113) + : : +- NativeSortMergeJoin Inner (112) + : : :- NativeSortMergeJoin LeftSemi (81) + : : : :- NativeSort (55) + : : : : +- InputAdapter (54) + : : : : +- AQEShuffleRead (53) + : : : : +- ShuffleQueryStage (52), Statistics(X) + : : : : +- NativeShuffleExchange (51) + : : : : +- NativeProject (50) + : : : : +- NativeSortMergeJoin LeftSemi (49) + : : : : :- NativeSort (8) + : : : : : +- InputAdapter (7) + : : : : : +- AQEShuffleRead (6) + : : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : : +- NativeShuffleExchange (4) + : : : : : +- NativeFilter (3) + : : : : : +- InputAdapter (2) + : : : : : +- NativeParquetScan (1) + : : : : +- NativeSort (48) + : : : : +- NativeProject (47) + : : : : +- NativeFilter (46) + : : : : +- NativeProject (45) + : : : : +- NativeHashAggregate (44) + : : : : +- NativeHashAggregate (43) + : : : : +- NativeProject (42) + : : : : +- NativeSortMergeJoin Inner (41) + : : : : :- NativeSort (32) + : : : : : +- InputAdapter (31) + : : : : : +- AQEShuffleRead (30) + : : : : : +- ShuffleQueryStage (29), Statistics(X) + : : : : : +- NativeShuffleExchange (28) + : : : : : +- NativeProject (27) + : : : : : +- NativeSortMergeJoin Inner (26) + : : : : : :- NativeSort (16) + : : : : : : +- InputAdapter (15) + : : : : : : +- AQEShuffleRead (14) + : : : : : : +- ShuffleQueryStage (13), Statistics(X) + : : : : : : +- NativeShuffleExchange (12) + : : : : : : +- NativeFilter (11) + : : : : : : +- InputAdapter (10) + : : : : : : +- NativeParquetScan (9) + : : : : : +- NativeSort (25) + : : : : : +- InputAdapter (24) + : : : : : +- AQEShuffleRead (23) + : : : : : +- ShuffleQueryStage (22), Statistics(X) + : : : : : +- NativeShuffleExchange (21) + : : : : : +- NativeProject (20) + : : : : : +- NativeFilter (19) + : : : : : +- InputAdapter (18) + : : : : : +- NativeParquetScan (17) + : : : : +- NativeSort (40) + : : : : +- InputAdapter (39) + : : : : +- AQEShuffleRead (38) + : : : : +- ShuffleQueryStage (37), Statistics(X) + : : : : +- NativeShuffleExchange (36) + : : : : +- NativeFilter (35) + : : : : +- InputAdapter (34) + : : : : +- NativeParquetScan (33) + : : : +- NativeSort (80) + : : : +- NativeProject (79) + : : : +- NativeFilter (78) + : : : +- NativeProject (77) + : : : +- NativeHashAggregate (76) + : : : +- NativeHashAggregate (75) + : : : +- NativeProject (74) + : : : +- NativeProject (73) + : : : +- NativeSortMergeJoin Inner (72) + : : : :- NativeSort (63) + : : : : +- InputAdapter (62) + : : : : +- AQEShuffleRead (61) + : : : : +- ShuffleQueryStage (60), Statistics(X) + : : : : +- NativeShuffleExchange (59) + : : : : +- NativeFilter (58) + : : : : +- InputAdapter (57) + : : : : +- NativeParquetScan (56) + : : : +- NativeSort (71) + : : : +- InputAdapter (70) + : : : +- AQEShuffleRead (69) + : : : +- ShuffleQueryStage (68), Statistics(X) + : : : +- NativeShuffleExchange (67) + : : : +- NativeFilter (66) + : : : +- InputAdapter (65) + : : : +- NativeParquetScan (64) + : : +- NativeSortMergeJoin LeftSemi (111) + : : :- NativeSort (89) + : : : +- InputAdapter (88) + : : : +- AQEShuffleRead (87) + : : : +- ShuffleQueryStage (86), Statistics(X) + : : : +- NativeShuffleExchange (85) + : : : +- NativeFilter (84) + : : : +- InputAdapter (83) + : : : +- NativeParquetScan (82) + : : +- NativeSort (110) + : : +- NativeProject (109) + : : +- NativeFilter (108) + : : +- NativeProject (107) + : : +- NativeHashAggregate (106) + : : +- NativeHashAggregate (105) + : : +- NativeProject (104) + : : +- NativeProject (103) + : : +- NativeSortMergeJoin Inner (102) + : : :- NativeSort (95) + : : : +- InputAdapter (94) + : : : +- InputAdapter (93) + : : : +- AQEShuffleRead (92) + : : : +- ShuffleQueryStage (91), Statistics(X) + : : : +- ReusedExchange (90) + : : +- NativeSort (101) + : : +- InputAdapter (100) + : : +- InputAdapter (99) + : : +- AQEShuffleRead (98) + : : +- ShuffleQueryStage (97), Statistics(X) + : : +- ReusedExchange (96) + : +- NativeSort (127) + : +- InputAdapter (126) + : +- AQEShuffleRead (125) + : +- ShuffleQueryStage (124), Statistics(X) + : +- NativeShuffleExchange (123) + : +- NativeProject (122) + : +- NativeFilter (121) + : +- InputAdapter (120) + : +- NativeParquetScan (119) + +- NativeProject (245) + +- NativeHashAggregate (244) + +- InputAdapter (243) + +- AQEShuffleRead (242) + +- ShuffleQueryStage (241), Statistics(X) + +- NativeShuffleExchange (240) + +- NativeHashAggregate (239) + +- NativeProject (238) + +- NativeProject (237) + +- NativeSortMergeJoin Inner (236) + :- NativeSort (229) + : +- InputAdapter (228) + : +- AQEShuffleRead (227) + : +- ShuffleQueryStage (226), Statistics(X) + : +- NativeShuffleExchange (225) + : +- NativeProject (224) + : +- NativeSortMergeJoin Inner (223) + : :- NativeSortMergeJoin LeftSemi (194) + : : :- NativeSort (172) + : : : +- InputAdapter (171) + : : : +- AQEShuffleRead (170) + : : : +- ShuffleQueryStage (169), Statistics(X) + : : : +- NativeShuffleExchange (168) + : : : +- NativeProject (167) + : : : +- NativeSortMergeJoin LeftSemi (166) + : : : :- NativeSort (145) + : : : : +- InputAdapter (144) + : : : : +- AQEShuffleRead (143) + : : : : +- ShuffleQueryStage (142), Statistics(X) + : : : : +- NativeShuffleExchange (141) + : : : : +- NativeFilter (140) + : : : : +- InputAdapter (139) + : : : : +- NativeParquetScan (138) + : : : +- NativeSort (165) + : : : +- NativeProject (164) + : : : +- NativeFilter (163) + : : : +- NativeProject (162) + : : : +- NativeHashAggregate (161) + : : : +- NativeHashAggregate (160) + : : : +- NativeProject (159) + : : : +- NativeSortMergeJoin Inner (158) + : : : :- NativeSort (151) + : : : : +- InputAdapter (150) + : : : : +- InputAdapter (149) + : : : : +- AQEShuffleRead (148) + : : : : +- ShuffleQueryStage (147), Statistics(X) + : : : : +- ReusedExchange (146) + : : : +- NativeSort (157) + : : : +- InputAdapter (156) + : : : +- InputAdapter (155) + : : : +- AQEShuffleRead (154) + : : : +- ShuffleQueryStage (153), Statistics(X) + : : : +- ReusedExchange (152) + : : +- NativeSort (193) + : : +- NativeProject (192) + : : +- NativeFilter (191) + : : +- NativeProject (190) + : : +- NativeHashAggregate (189) + : : +- NativeHashAggregate (188) + : : +- NativeProject (187) + : : +- NativeProject (186) + : : +- NativeSortMergeJoin Inner (185) + : : :- NativeSort (178) + : : : +- InputAdapter (177) + : : : +- InputAdapter (176) + : : : +- AQEShuffleRead (175) + : : : +- ShuffleQueryStage (174), Statistics(X) + : : : +- ReusedExchange (173) + : : +- NativeSort (184) + : : +- InputAdapter (183) + : : +- InputAdapter (182) + : : +- AQEShuffleRead (181) + : : +- ShuffleQueryStage (180), Statistics(X) + : : +- ReusedExchange (179) + : +- NativeSortMergeJoin LeftSemi (222) + : :- NativeSort (200) + : : +- InputAdapter (199) + : : +- InputAdapter (198) + : : +- AQEShuffleRead (197) + : : +- ShuffleQueryStage (196), Statistics(X) + : : +- ReusedExchange (195) + : +- NativeSort (221) + : +- NativeProject (220) + : +- NativeFilter (219) + : +- NativeProject (218) + : +- NativeHashAggregate (217) + : +- NativeHashAggregate (216) + : +- NativeProject (215) + : +- NativeProject (214) + : +- NativeSortMergeJoin Inner (213) + : :- NativeSort (206) + : : +- InputAdapter (205) + : : +- InputAdapter (204) + : : +- AQEShuffleRead (203) + : : +- ShuffleQueryStage (202), Statistics(X) + : : +- ReusedExchange (201) + : +- NativeSort (212) + : +- InputAdapter (211) + : +- InputAdapter (210) + : +- AQEShuffleRead (209) + : +- ShuffleQueryStage (208), Statistics(X) + : +- ReusedExchange (207) + +- NativeSort (235) + +- InputAdapter (234) + +- InputAdapter (233) + +- AQEShuffleRead (232) + +- ShuffleQueryStage (231), Statistics(X) + +- ReusedExchange (230) ++- == Initial Plan == + TakeOrderedAndProject (414) + +- Union (413) + :- HashAggregate (330) + : +- Exchange (329) + : +- HashAggregate (328) + : +- Project (327) + : +- SortMergeJoin Inner (326) + : :- Sort (320) + : : +- Exchange (319) + : : +- Project (318) + : : +- SortMergeJoin Inner (317) + : : :- SortMergeJoin LeftSemi (296) + : : : :- Sort (280) + : : : : +- Exchange (279) + : : : : +- Project (278) + : : : : +- SortMergeJoin LeftSemi (277) + : : : : :- Sort (252) + : : : : : +- Exchange (251) + : : : : : +- Filter (250) + : : : : : +- Scan parquet (249) + : : : : +- Sort (276) + : : : : +- Project (275) + : : : : +- Filter (274) + : : : : +- HashAggregate (273) + : : : : +- HashAggregate (272) + : : : : +- Project (271) + : : : : +- SortMergeJoin Inner (270) + : : : : :- Sort (265) + : : : : : +- Exchange (264) + : : : : : +- Project (263) + : : : : : +- SortMergeJoin Inner (262) + : : : : : :- Sort (256) + : : : : : : +- Exchange (255) + : : : : : : +- Filter (254) + : : : : : : +- Scan parquet (253) + : : : : : +- Sort (261) + : : : : : +- Exchange (260) + : : : : : +- Project (259) + : : : : : +- Filter (258) + : : : : : +- Scan parquet (257) + : : : : +- Sort (269) + : : : : +- Exchange (268) + : : : : +- Filter (267) + : : : : +- Scan parquet (266) + : : : +- Sort (295) + : : : +- Project (294) + : : : +- Filter (293) + : : : +- HashAggregate (292) + : : : +- HashAggregate (291) + : : : +- Project (290) + : : : +- SortMergeJoin Inner (289) + : : : :- Sort (284) + : : : : +- Exchange (283) + : : : : +- Filter (282) + : : : : +- Scan parquet (281) + : : : +- Sort (288) + : : : +- Exchange (287) + : : : +- Filter (286) + : : : +- Scan parquet (285) + : : +- SortMergeJoin LeftSemi (316) + : : :- Sort (300) + : : : +- Exchange (299) + : : : +- Filter (298) + : : : +- Scan parquet (297) + : : +- Sort (315) + : : +- Project (314) + : : +- Filter (313) + : : +- HashAggregate (312) + : : +- HashAggregate (311) + : : +- Project (310) + : : +- SortMergeJoin Inner (309) + : : :- Sort (304) + : : : +- Exchange (303) + : : : +- Filter (302) + : : : +- Scan parquet (301) + : : +- Sort (308) + : : +- Exchange (307) + : : +- Filter (306) + : : +- Scan parquet (305) + : +- Sort (325) + : +- Exchange (324) + : +- Project (323) + : +- Filter (322) + : +- Scan parquet (321) + +- HashAggregate (412) + +- Exchange (411) + +- HashAggregate (410) + +- Project (409) + +- SortMergeJoin Inner (408) + :- Sort (402) + : +- Exchange (401) + : +- Project (400) + : +- SortMergeJoin Inner (399) + : :- SortMergeJoin LeftSemi (378) + : : :- Sort (362) + : : : +- Exchange (361) + : : : +- Project (360) + : : : +- SortMergeJoin LeftSemi (359) + : : : :- Sort (334) + : : : : +- Exchange (333) + : : : : +- Filter (332) + : : : : +- Scan parquet (331) + : : : +- Sort (358) + : : : +- Project (357) + : : : +- Filter (356) + : : : +- HashAggregate (355) + : : : +- HashAggregate (354) + : : : +- Project (353) + : : : +- SortMergeJoin Inner (352) + : : : :- Sort (347) + : : : : +- Exchange (346) + : : : : +- Project (345) + : : : : +- SortMergeJoin Inner (344) + : : : : :- Sort (338) + : : : : : +- Exchange (337) + : : : : : +- Filter (336) + : : : : : +- Scan parquet (335) + : : : : +- Sort (343) + : : : : +- Exchange (342) + : : : : +- Project (341) + : : : : +- Filter (340) + : : : : +- Scan parquet (339) + : : : +- Sort (351) + : : : +- Exchange (350) + : : : +- Filter (349) + : : : +- Scan parquet (348) + : : +- Sort (377) + : : +- Project (376) + : : +- Filter (375) + : : +- HashAggregate (374) + : : +- HashAggregate (373) + : : +- Project (372) + : : +- SortMergeJoin Inner (371) + : : :- Sort (366) + : : : +- Exchange (365) + : : : +- Filter (364) + : : : +- Scan parquet (363) + : : +- Sort (370) + : : +- Exchange (369) + : : +- Filter (368) + : : +- Scan parquet (367) + : +- SortMergeJoin LeftSemi (398) + : :- Sort (382) + : : +- Exchange (381) + : : +- Filter (380) + : : +- Scan parquet (379) + : +- Sort (397) + : +- Project (396) + : +- Filter (395) + : +- HashAggregate (394) + : +- HashAggregate (393) + : +- Project (392) + : +- SortMergeJoin Inner (391) + : :- Sort (386) + : : +- Exchange (385) + : : +- Filter (384) + : : +- Scan parquet (383) + : +- Sort (390) + : +- Exchange (389) + : +- Filter (388) + : +- Scan parquet (387) + +- Sort (407) + +- Exchange (406) + +- Project (405) + +- Filter (404) + +- Scan parquet (403) + + +(249) Scan parquet +Output [5]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_item_sk#3, cs_quantity#4, cs_list_price#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_bill_customer_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [5]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_item_sk#3, cs_quantity#4, cs_list_price#5] +Arguments: [#1, #2, #3, #4, #5] + +(3) NativeFilter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Condition : (isnotnull(cs_bill_customer_sk#2) AND isnotnull(cs_sold_date_sk#1)) + +(4) NativeShuffleExchange +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: hashpartitioning(cs_item_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: X + +(6) AQEShuffleRead +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: coalesced + +(7) InputAdapter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] + +(8) NativeSort +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: [cs_item_sk#3 ASC NULLS FIRST], false + +(253) Scan parquet +Output [2]: [ss_sold_date_sk#6, ss_item_sk#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [ss_sold_date_sk#6, ss_item_sk#7] +Arguments: [#6, #7] + +(11) NativeFilter +Input [2]: [#6#6, #7#7] +Condition : (isnotnull(ss_sold_date_sk#6) AND isnotnull(ss_item_sk#7)) + +(12) NativeShuffleExchange +Input [2]: [#6#6, #7#7] +Arguments: hashpartitioning(ss_sold_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [2]: [#6#6, #7#7] +Arguments: X + +(14) AQEShuffleRead +Input [2]: [#6#6, #7#7] +Arguments: coalesced + +(15) InputAdapter +Input [2]: [#6#6, #7#7] + +(16) NativeSort +Input [2]: [#6#6, #7#7] +Arguments: [ss_sold_date_sk#6 ASC NULLS FIRST], false + +(257) Scan parquet +Output [3]: [d_date_sk#8, d_date#9, d_year#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(d_year, [2000,2001,2002,2003]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(18) InputAdapter +Input [3]: [d_date_sk#8, d_date#9, d_year#10] +Arguments: [#8, #9, #10] + +(19) NativeFilter +Input [3]: [#8#8, #9#9, #10#10] +Condition : (d_year#10 IN (2000,2001,2002,2003) AND isnotnull(d_date_sk#8)) + +(20) NativeProject +Output [2]: [d_date_sk#8, d_date#9] +Input [3]: [#8#8, #9#9, #10#10] + +(21) NativeShuffleExchange +Input [2]: [d_date_sk#8, d_date#9] +Arguments: hashpartitioning(d_date_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(22) ShuffleQueryStage +Output [2]: [d_date_sk#8, d_date#9] +Arguments: X + +(23) AQEShuffleRead +Input [2]: [d_date_sk#8, d_date#9] +Arguments: coalesced + +(24) InputAdapter +Input [2]: [d_date_sk#8, d_date#9] + +(25) NativeSort +Input [2]: [d_date_sk#8, d_date#9] +Arguments: [d_date_sk#8 ASC NULLS FIRST], false + +(26) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#6] +Right keys [1]: [d_date_sk#8] +Join type: Inner +Join condition: None + +(27) NativeProject +Output [2]: [ss_item_sk#7, d_date#9] +Input [4]: [#6#6, #7#7, d_date_sk#8, d_date#9] + +(28) NativeShuffleExchange +Input [2]: [ss_item_sk#7, d_date#9] +Arguments: hashpartitioning(ss_item_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(29) ShuffleQueryStage +Output [2]: [ss_item_sk#7, d_date#9] +Arguments: X + +(30) AQEShuffleRead +Input [2]: [ss_item_sk#7, d_date#9] +Arguments: coalesced + +(31) InputAdapter +Input [2]: [ss_item_sk#7, d_date#9] + +(32) NativeSort +Input [2]: [ss_item_sk#7, d_date#9] +Arguments: [ss_item_sk#7 ASC NULLS FIRST], false + +(266) Scan parquet +Output [2]: [i_item_sk#11, i_item_desc#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(34) InputAdapter +Input [2]: [i_item_sk#11, i_item_desc#12] +Arguments: [#11, #12] + +(35) NativeFilter +Input [2]: [#11#11, #12#12] +Condition : isnotnull(i_item_sk#11) + +(36) NativeShuffleExchange +Input [2]: [#11#11, #12#12] +Arguments: hashpartitioning(i_item_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [2]: [#11#11, #12#12] +Arguments: X + +(38) AQEShuffleRead +Input [2]: [#11#11, #12#12] +Arguments: coalesced + +(39) InputAdapter +Input [2]: [#11#11, #12#12] + +(40) NativeSort +Input [2]: [#11#11, #12#12] +Arguments: [i_item_sk#11 ASC NULLS FIRST], false + +(41) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#7] +Right keys [1]: [i_item_sk#11] +Join type: Inner +Join condition: None + +(42) NativeProject +Output [3]: [d_date#9, i_item_sk#11, substr(i_item_desc#12, 1, 30) AS _groupingexpression#13] +Input [4]: [ss_item_sk#7, d_date#9, #11#11, #12#12] + +(43) NativeHashAggregate +Input [3]: [d_date#9, i_item_sk#11, _groupingexpression#13] +Keys [3]: [_groupingexpression#13, i_item_sk#11, d_date#9] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#14] +Results [4]: [_groupingexpression#13, i_item_sk#11, d_date#9, #15#15] + +(44) NativeHashAggregate +Input [4]: [_groupingexpression#13, i_item_sk#11, d_date#9, #15#15] +Keys [3]: [_groupingexpression#13, i_item_sk#11, d_date#9] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#16] +Results [4]: [_groupingexpression#13, i_item_sk#11, d_date#9, count(1)#16] + +(45) NativeProject +Output [2]: [i_item_sk#11 AS item_sk#17, count(1)#16 AS cnt#18] +Input [4]: [_groupingexpression#13, i_item_sk#11, d_date#9, count(1)#16] + +(46) NativeFilter +Input [2]: [item_sk#17, cnt#18] +Condition : (cnt#18 > 4) + +(47) NativeProject +Output [1]: [item_sk#17] +Input [2]: [item_sk#17, cnt#18] + +(48) NativeSort +Input [1]: [item_sk#17] +Arguments: [item_sk#17 ASC NULLS FIRST], false + +(49) NativeSortMergeJoin +Left keys [1]: [cs_item_sk#3] +Right keys [1]: [item_sk#17] +Join type: LeftSemi +Join condition: None + +(50) NativeProject +Output [4]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_quantity#4, cs_list_price#5] +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] + +(51) NativeShuffleExchange +Input [4]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_quantity#4, cs_list_price#5] +Arguments: hashpartitioning(cs_bill_customer_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(52) ShuffleQueryStage +Output [4]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_quantity#4, cs_list_price#5] +Arguments: X + +(53) AQEShuffleRead +Input [4]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_quantity#4, cs_list_price#5] +Arguments: coalesced + +(54) InputAdapter +Input [4]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_quantity#4, cs_list_price#5] + +(55) NativeSort +Input [4]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_quantity#4, cs_list_price#5] +Arguments: [cs_bill_customer_sk#2 ASC NULLS FIRST], false + +(281) Scan parquet +Output [3]: [ss_customer_sk#19, ss_quantity#20, ss_sales_price#21] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk)] +ReadSchema: struct + +(57) InputAdapter +Input [3]: [ss_customer_sk#19, ss_quantity#20, ss_sales_price#21] +Arguments: [#19, #20, #21] + +(58) NativeFilter +Input [3]: [#19#19, #20#20, #21#21] +Condition : isnotnull(ss_customer_sk#19) + +(59) NativeShuffleExchange +Input [3]: [#19#19, #20#20, #21#21] +Arguments: hashpartitioning(ss_customer_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(60) ShuffleQueryStage +Output [3]: [#19#19, #20#20, #21#21] +Arguments: X + +(61) AQEShuffleRead +Input [3]: [#19#19, #20#20, #21#21] +Arguments: coalesced + +(62) InputAdapter +Input [3]: [#19#19, #20#20, #21#21] + +(63) NativeSort +Input [3]: [#19#19, #20#20, #21#21] +Arguments: [ss_customer_sk#19 ASC NULLS FIRST], false + +(285) Scan parquet +Output [1]: [c_customer_sk#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk)] +ReadSchema: struct + +(65) InputAdapter +Input [1]: [c_customer_sk#22] +Arguments: [#22] + +(66) NativeFilter +Input [1]: [#22#22] +Condition : isnotnull(c_customer_sk#22) + +(67) NativeShuffleExchange +Input [1]: [#22#22] +Arguments: hashpartitioning(c_customer_sk#22, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(68) ShuffleQueryStage +Output [1]: [#22#22] +Arguments: X + +(69) AQEShuffleRead +Input [1]: [#22#22] +Arguments: coalesced + +(70) InputAdapter +Input [1]: [#22#22] + +(71) NativeSort +Input [1]: [#22#22] +Arguments: [c_customer_sk#22 ASC NULLS FIRST], false + +(72) NativeSortMergeJoin +Left keys [1]: [ss_customer_sk#19] +Right keys [1]: [c_customer_sk#22] +Join type: Inner +Join condition: None + +(73) NativeProject +Output [3]: [ss_quantity#20, ss_sales_price#21, c_customer_sk#22] +Input [4]: [#19#19, #20#20, #21#21, #22#22] + +(74) NativeProject +Output [2]: [c_customer_sk#22 AS c_customer_sk#22, (cast(ss_quantity#20 as decimal(10,0)) * ss_sales_price#21) AS _c1#23] +Input [3]: [ss_quantity#20, ss_sales_price#21, c_customer_sk#22] + +(75) NativeHashAggregate +Input [2]: [c_customer_sk#22, _c1#23] +Keys [1]: [c_customer_sk#22] +Functions [1]: [partial_sum(_c1#23)] +Aggregate Attributes [2]: [sum#24, isEmpty#25] +Results [2]: [c_customer_sk#22, #15#15] + +(76) NativeHashAggregate +Input [2]: [c_customer_sk#22, #15#15] +Keys [1]: [c_customer_sk#22] +Functions [1]: [sum((cast(ss_quantity#20 as decimal(10,0)) * ss_sales_price#21))] +Aggregate Attributes [1]: [sum((cast(ss_quantity#20 as decimal(10,0)) * ss_sales_price#21))#26] +Results [2]: [c_customer_sk#22, sum((cast(ss_quantity#20 as decimal(10,0)) * ss_sales_price#21))#26] + +(77) NativeProject +Output [2]: [c_customer_sk#22, sum((cast(ss_quantity#20 as decimal(10,0)) * ss_sales_price#21))#26 AS ssales#27] +Input [2]: [c_customer_sk#22, sum((cast(ss_quantity#20 as decimal(10,0)) * ss_sales_price#21))#26] + +(78) NativeFilter +Input [2]: [c_customer_sk#22, ssales#27] +Condition : (isnotnull(ssales#27) AND (cast(ssales#27 as decimal(38,8)) > (0.500000 * Subquery subquery#28, [id=#29]))) + +(79) NativeProject +Output [1]: [c_customer_sk#22] +Input [2]: [c_customer_sk#22, ssales#27] + +(80) NativeSort +Input [1]: [c_customer_sk#22] +Arguments: [c_customer_sk#22 ASC NULLS FIRST], false + +(81) NativeSortMergeJoin +Left keys [1]: [cs_bill_customer_sk#2] +Right keys [1]: [c_customer_sk#22] +Join type: LeftSemi +Join condition: None + +(297) Scan parquet +Output [3]: [c_customer_sk#30, c_first_name#31, c_last_name#32] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk)] +ReadSchema: struct + +(83) InputAdapter +Input [3]: [c_customer_sk#30, c_first_name#31, c_last_name#32] +Arguments: [#30, #31, #32] + +(84) NativeFilter +Input [3]: [#30#30, #31#31, #32#32] +Condition : isnotnull(c_customer_sk#30) + +(85) NativeShuffleExchange +Input [3]: [#30#30, #31#31, #32#32] +Arguments: hashpartitioning(c_customer_sk#30, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(86) ShuffleQueryStage +Output [3]: [#30#30, #31#31, #32#32] +Arguments: X + +(87) AQEShuffleRead +Input [3]: [#30#30, #31#31, #32#32] +Arguments: coalesced + +(88) InputAdapter +Input [3]: [#30#30, #31#31, #32#32] + +(89) NativeSort +Input [3]: [#30#30, #31#31, #32#32] +Arguments: [c_customer_sk#30 ASC NULLS FIRST], false + +(90) ReusedExchange [Reuses operator id: 59] +Output [3]: [ss_customer_sk#19, ss_quantity#20, ss_sales_price#21] + +(91) ShuffleQueryStage +Output [3]: [ss_customer_sk#19, ss_quantity#20, ss_sales_price#21] +Arguments: X + +(92) AQEShuffleRead +Input [3]: [ss_customer_sk#19, ss_quantity#20, ss_sales_price#21] +Arguments: coalesced + +(93) InputAdapter +Input [3]: [ss_customer_sk#19, ss_quantity#20, ss_sales_price#21] +Arguments: [#19, #20, #21] + +(94) InputAdapter +Input [3]: [#19#19, #20#20, #21#21] + +(95) NativeSort +Input [3]: [#19#19, #20#20, #21#21] +Arguments: [ss_customer_sk#19 ASC NULLS FIRST], false + +(96) ReusedExchange [Reuses operator id: 67] +Output [1]: [c_customer_sk#22] + +(97) ShuffleQueryStage +Output [1]: [c_customer_sk#22] +Arguments: X + +(98) AQEShuffleRead +Input [1]: [c_customer_sk#22] +Arguments: coalesced + +(99) InputAdapter +Input [1]: [c_customer_sk#22] +Arguments: [#22] + +(100) InputAdapter +Input [1]: [#22#22] + +(101) NativeSort +Input [1]: [#22#22] +Arguments: [c_customer_sk#22 ASC NULLS FIRST], false + +(102) NativeSortMergeJoin +Left keys [1]: [ss_customer_sk#19] +Right keys [1]: [c_customer_sk#22] +Join type: Inner +Join condition: None + +(103) NativeProject +Output [3]: [ss_quantity#20, ss_sales_price#21, c_customer_sk#22] +Input [4]: [#19#19, #20#20, #21#21, #22#22] + +(104) NativeProject +Output [2]: [c_customer_sk#22 AS c_customer_sk#22, (cast(ss_quantity#20 as decimal(10,0)) * ss_sales_price#21) AS _c1#33] +Input [3]: [ss_quantity#20, ss_sales_price#21, c_customer_sk#22] + +(105) NativeHashAggregate +Input [2]: [c_customer_sk#22, _c1#33] +Keys [1]: [c_customer_sk#22] +Functions [1]: [partial_sum(_c1#33)] +Aggregate Attributes [2]: [sum#24, isEmpty#25] +Results [2]: [c_customer_sk#22, #15#15] + +(106) NativeHashAggregate +Input [2]: [c_customer_sk#22, #15#15] +Keys [1]: [c_customer_sk#22] +Functions [1]: [sum((cast(ss_quantity#20 as decimal(10,0)) * ss_sales_price#21))] +Aggregate Attributes [1]: [sum((cast(ss_quantity#20 as decimal(10,0)) * ss_sales_price#21))#26] +Results [2]: [c_customer_sk#22, sum((cast(ss_quantity#20 as decimal(10,0)) * ss_sales_price#21))#26] + +(107) NativeProject +Output [2]: [c_customer_sk#22, sum((cast(ss_quantity#20 as decimal(10,0)) * ss_sales_price#21))#26 AS ssales#27] +Input [2]: [c_customer_sk#22, sum((cast(ss_quantity#20 as decimal(10,0)) * ss_sales_price#21))#26] + +(108) NativeFilter +Input [2]: [c_customer_sk#22, ssales#27] +Condition : (isnotnull(ssales#27) AND (cast(ssales#27 as decimal(38,8)) > (0.500000 * ReusedSubquery Subquery subquery#28, [id=#29]))) + +(109) NativeProject +Output [1]: [c_customer_sk#22] +Input [2]: [c_customer_sk#22, ssales#27] + +(110) NativeSort +Input [1]: [c_customer_sk#22] +Arguments: [c_customer_sk#22 ASC NULLS FIRST], false + +(111) NativeSortMergeJoin +Left keys [1]: [c_customer_sk#30] +Right keys [1]: [c_customer_sk#22] +Join type: LeftSemi +Join condition: None + +(112) NativeSortMergeJoin +Left keys [1]: [cs_bill_customer_sk#2] +Right keys [1]: [c_customer_sk#30] +Join type: Inner +Join condition: None + +(113) NativeProject +Output [5]: [cs_sold_date_sk#1, cs_quantity#4, cs_list_price#5, c_first_name#31, c_last_name#32] +Input [7]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_quantity#4, cs_list_price#5, #30#30, #31#31, #32#32] + +(114) NativeShuffleExchange +Input [5]: [cs_sold_date_sk#1, cs_quantity#4, cs_list_price#5, c_first_name#31, c_last_name#32] +Arguments: hashpartitioning(cs_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(115) ShuffleQueryStage +Output [5]: [cs_sold_date_sk#1, cs_quantity#4, cs_list_price#5, c_first_name#31, c_last_name#32] +Arguments: X + +(116) AQEShuffleRead +Input [5]: [cs_sold_date_sk#1, cs_quantity#4, cs_list_price#5, c_first_name#31, c_last_name#32] +Arguments: coalesced + +(117) InputAdapter +Input [5]: [cs_sold_date_sk#1, cs_quantity#4, cs_list_price#5, c_first_name#31, c_last_name#32] + +(118) NativeSort +Input [5]: [cs_sold_date_sk#1, cs_quantity#4, cs_list_price#5, c_first_name#31, c_last_name#32] +Arguments: [cs_sold_date_sk#1 ASC NULLS FIRST], false + +(321) Scan parquet +Output [3]: [d_date_sk#34, d_year#35, d_moy#36] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2000), EqualTo(d_moy,2), IsNotNull(d_date_sk)] +ReadSchema: struct + +(120) InputAdapter +Input [3]: [d_date_sk#34, d_year#35, d_moy#36] +Arguments: [#34, #35, #36] + +(121) NativeFilter +Input [3]: [#34#34, #35#35, #36#36] +Condition : ((((isnotnull(d_year#35) AND isnotnull(d_moy#36)) AND (d_year#35 = 2000)) AND (d_moy#36 = 2)) AND isnotnull(d_date_sk#34)) + +(122) NativeProject +Output [1]: [d_date_sk#34] +Input [3]: [#34#34, #35#35, #36#36] + +(123) NativeShuffleExchange +Input [1]: [d_date_sk#34] +Arguments: hashpartitioning(d_date_sk#34, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(124) ShuffleQueryStage +Output [1]: [d_date_sk#34] +Arguments: X + +(125) AQEShuffleRead +Input [1]: [d_date_sk#34] +Arguments: coalesced + +(126) InputAdapter +Input [1]: [d_date_sk#34] + +(127) NativeSort +Input [1]: [d_date_sk#34] +Arguments: [d_date_sk#34 ASC NULLS FIRST], false + +(128) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#1] +Right keys [1]: [d_date_sk#34] +Join type: Inner +Join condition: None + +(129) NativeProject +Output [4]: [cs_quantity#4, cs_list_price#5, c_first_name#31, c_last_name#32] +Input [6]: [cs_sold_date_sk#1, cs_quantity#4, cs_list_price#5, c_first_name#31, c_last_name#32, d_date_sk#34] + +(130) NativeProject +Output [3]: [c_last_name#32 AS c_last_name#32, c_first_name#31 AS c_first_name#31, (cast(cs_quantity#4 as decimal(10,0)) * cs_list_price#5) AS _c2#37] +Input [4]: [cs_quantity#4, cs_list_price#5, c_first_name#31, c_last_name#32] + +(131) NativeHashAggregate +Input [3]: [c_last_name#32, c_first_name#31, _c2#37] +Keys [2]: [c_last_name#32, c_first_name#31] +Functions [1]: [partial_sum(_c2#37)] +Aggregate Attributes [2]: [sum#38, isEmpty#39] +Results [3]: [c_last_name#32, c_first_name#31, #15#15] + +(132) NativeShuffleExchange +Input [3]: [c_last_name#32, c_first_name#31, #15#15] +Arguments: hashpartitioning(c_last_name#32, c_first_name#31, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(133) ShuffleQueryStage +Output [3]: [c_last_name#32, c_first_name#31, #15#15] +Arguments: X + +(134) AQEShuffleRead +Input [3]: [c_last_name#32, c_first_name#31, #15#15] +Arguments: coalesced + +(135) InputAdapter +Input [3]: [c_last_name#32, c_first_name#31, #15#15] + +(136) NativeHashAggregate +Input [3]: [c_last_name#32, c_first_name#31, #15#15] +Keys [2]: [c_last_name#32, c_first_name#31] +Functions [1]: [sum((cast(cs_quantity#4 as decimal(10,0)) * cs_list_price#5))] +Aggregate Attributes [1]: [sum((cast(cs_quantity#4 as decimal(10,0)) * cs_list_price#5))#40] +Results [3]: [c_last_name#32, c_first_name#31, sum((cast(cs_quantity#4 as decimal(10,0)) * cs_list_price#5))#40] + +(137) NativeProject +Output [3]: [c_last_name#32, c_first_name#31, sum((cast(cs_quantity#4 as decimal(10,0)) * cs_list_price#5))#40 AS sales#41] +Input [3]: [c_last_name#32, c_first_name#31, sum((cast(cs_quantity#4 as decimal(10,0)) * cs_list_price#5))#40] + +(331) Scan parquet +Output [5]: [ws_sold_date_sk#42, ws_item_sk#43, ws_bill_customer_sk#44, ws_quantity#45, ws_list_price#46] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_bill_customer_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(139) InputAdapter +Input [5]: [ws_sold_date_sk#42, ws_item_sk#43, ws_bill_customer_sk#44, ws_quantity#45, ws_list_price#46] +Arguments: [#42, #43, #44, #45, #46] + +(140) NativeFilter +Input [5]: [#42#42, #43#43, #44#44, #45#45, #46#46] +Condition : (isnotnull(ws_bill_customer_sk#44) AND isnotnull(ws_sold_date_sk#42)) + +(141) NativeShuffleExchange +Input [5]: [#42#42, #43#43, #44#44, #45#45, #46#46] +Arguments: hashpartitioning(ws_item_sk#43, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(142) ShuffleQueryStage +Output [5]: [#42#42, #43#43, #44#44, #45#45, #46#46] +Arguments: X + +(143) AQEShuffleRead +Input [5]: [#42#42, #43#43, #44#44, #45#45, #46#46] +Arguments: coalesced + +(144) InputAdapter +Input [5]: [#42#42, #43#43, #44#44, #45#45, #46#46] + +(145) NativeSort +Input [5]: [#42#42, #43#43, #44#44, #45#45, #46#46] +Arguments: [ws_item_sk#43 ASC NULLS FIRST], false + +(146) ReusedExchange [Reuses operator id: 28] +Output [2]: [ss_item_sk#47, d_date#48] + +(147) ShuffleQueryStage +Output [2]: [ss_item_sk#47, d_date#48] +Arguments: X + +(148) AQEShuffleRead +Input [2]: [ss_item_sk#47, d_date#48] +Arguments: coalesced + +(149) InputAdapter +Input [2]: [ss_item_sk#47, d_date#48] +Arguments: [#47, #48] + +(150) InputAdapter +Input [2]: [#47#47, #48#48] + +(151) NativeSort +Input [2]: [#47#47, #48#48] +Arguments: [ss_item_sk#47 ASC NULLS FIRST], false + +(152) ReusedExchange [Reuses operator id: 36] +Output [2]: [i_item_sk#49, i_item_desc#50] + +(153) ShuffleQueryStage +Output [2]: [i_item_sk#49, i_item_desc#50] +Arguments: X + +(154) AQEShuffleRead +Input [2]: [i_item_sk#49, i_item_desc#50] +Arguments: coalesced + +(155) InputAdapter +Input [2]: [i_item_sk#49, i_item_desc#50] +Arguments: [#49, #50] + +(156) InputAdapter +Input [2]: [#49#49, #50#50] + +(157) NativeSort +Input [2]: [#49#49, #50#50] +Arguments: [i_item_sk#49 ASC NULLS FIRST], false + +(158) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#47] +Right keys [1]: [i_item_sk#49] +Join type: Inner +Join condition: None + +(159) NativeProject +Output [3]: [d_date#48, i_item_sk#49, substr(i_item_desc#50, 1, 30) AS _groupingexpression#13] +Input [4]: [#47#47, #48#48, #49#49, #50#50] + +(160) NativeHashAggregate +Input [3]: [d_date#48, i_item_sk#49, _groupingexpression#13] +Keys [3]: [_groupingexpression#13, i_item_sk#49, d_date#48] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#14] +Results [4]: [_groupingexpression#13, i_item_sk#49, d_date#48, #15#15] + +(161) NativeHashAggregate +Input [4]: [_groupingexpression#13, i_item_sk#49, d_date#48, #15#15] +Keys [3]: [_groupingexpression#13, i_item_sk#49, d_date#48] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#16] +Results [4]: [_groupingexpression#13, i_item_sk#49, d_date#48, count(1)#16] + +(162) NativeProject +Output [2]: [i_item_sk#49 AS item_sk#51, count(1)#16 AS cnt#52] +Input [4]: [_groupingexpression#13, i_item_sk#49, d_date#48, count(1)#16] + +(163) NativeFilter +Input [2]: [item_sk#51, cnt#52] +Condition : (cnt#52 > 4) + +(164) NativeProject +Output [1]: [item_sk#51] +Input [2]: [item_sk#51, cnt#52] + +(165) NativeSort +Input [1]: [item_sk#51] +Arguments: [item_sk#51 ASC NULLS FIRST], false + +(166) NativeSortMergeJoin +Left keys [1]: [ws_item_sk#43] +Right keys [1]: [item_sk#51] +Join type: LeftSemi +Join condition: None + +(167) NativeProject +Output [4]: [ws_sold_date_sk#42, ws_bill_customer_sk#44, ws_quantity#45, ws_list_price#46] +Input [5]: [#42#42, #43#43, #44#44, #45#45, #46#46] + +(168) NativeShuffleExchange +Input [4]: [ws_sold_date_sk#42, ws_bill_customer_sk#44, ws_quantity#45, ws_list_price#46] +Arguments: hashpartitioning(ws_bill_customer_sk#44, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(169) ShuffleQueryStage +Output [4]: [ws_sold_date_sk#42, ws_bill_customer_sk#44, ws_quantity#45, ws_list_price#46] +Arguments: X + +(170) AQEShuffleRead +Input [4]: [ws_sold_date_sk#42, ws_bill_customer_sk#44, ws_quantity#45, ws_list_price#46] +Arguments: coalesced + +(171) InputAdapter +Input [4]: [ws_sold_date_sk#42, ws_bill_customer_sk#44, ws_quantity#45, ws_list_price#46] + +(172) NativeSort +Input [4]: [ws_sold_date_sk#42, ws_bill_customer_sk#44, ws_quantity#45, ws_list_price#46] +Arguments: [ws_bill_customer_sk#44 ASC NULLS FIRST], false + +(173) ReusedExchange [Reuses operator id: 59] +Output [3]: [ss_customer_sk#53, ss_quantity#54, ss_sales_price#55] + +(174) ShuffleQueryStage +Output [3]: [ss_customer_sk#53, ss_quantity#54, ss_sales_price#55] +Arguments: X + +(175) AQEShuffleRead +Input [3]: [ss_customer_sk#53, ss_quantity#54, ss_sales_price#55] +Arguments: coalesced + +(176) InputAdapter +Input [3]: [ss_customer_sk#53, ss_quantity#54, ss_sales_price#55] +Arguments: [#53, #54, #55] + +(177) InputAdapter +Input [3]: [#53#53, #54#54, #55#55] + +(178) NativeSort +Input [3]: [#53#53, #54#54, #55#55] +Arguments: [ss_customer_sk#53 ASC NULLS FIRST], false + +(179) ReusedExchange [Reuses operator id: 67] +Output [1]: [c_customer_sk#56] + +(180) ShuffleQueryStage +Output [1]: [c_customer_sk#56] +Arguments: X + +(181) AQEShuffleRead +Input [1]: [c_customer_sk#56] +Arguments: coalesced + +(182) InputAdapter +Input [1]: [c_customer_sk#56] +Arguments: [#56] + +(183) InputAdapter +Input [1]: [#56#56] + +(184) NativeSort +Input [1]: [#56#56] +Arguments: [c_customer_sk#56 ASC NULLS FIRST], false + +(185) NativeSortMergeJoin +Left keys [1]: [ss_customer_sk#53] +Right keys [1]: [c_customer_sk#56] +Join type: Inner +Join condition: None + +(186) NativeProject +Output [3]: [ss_quantity#54, ss_sales_price#55, c_customer_sk#56] +Input [4]: [#53#53, #54#54, #55#55, #56#56] + +(187) NativeProject +Output [2]: [c_customer_sk#56 AS c_customer_sk#56, (cast(ss_quantity#54 as decimal(10,0)) * ss_sales_price#55) AS _c1#57] +Input [3]: [ss_quantity#54, ss_sales_price#55, c_customer_sk#56] + +(188) NativeHashAggregate +Input [2]: [c_customer_sk#56, _c1#57] +Keys [1]: [c_customer_sk#56] +Functions [1]: [partial_sum(_c1#57)] +Aggregate Attributes [2]: [sum#58, isEmpty#59] +Results [2]: [c_customer_sk#56, #15#15] + +(189) NativeHashAggregate +Input [2]: [c_customer_sk#56, #15#15] +Keys [1]: [c_customer_sk#56] +Functions [1]: [sum((cast(ss_quantity#54 as decimal(10,0)) * ss_sales_price#55))] +Aggregate Attributes [1]: [sum((cast(ss_quantity#54 as decimal(10,0)) * ss_sales_price#55))#26] +Results [2]: [c_customer_sk#56, sum((cast(ss_quantity#54 as decimal(10,0)) * ss_sales_price#55))#26] + +(190) NativeProject +Output [2]: [c_customer_sk#56, sum((cast(ss_quantity#54 as decimal(10,0)) * ss_sales_price#55))#26 AS ssales#60] +Input [2]: [c_customer_sk#56, sum((cast(ss_quantity#54 as decimal(10,0)) * ss_sales_price#55))#26] + +(191) NativeFilter +Input [2]: [c_customer_sk#56, ssales#60] +Condition : (isnotnull(ssales#60) AND (cast(ssales#60 as decimal(38,8)) > (0.500000 * ReusedSubquery Subquery subquery#28, [id=#29]))) + +(192) NativeProject +Output [1]: [c_customer_sk#56] +Input [2]: [c_customer_sk#56, ssales#60] + +(193) NativeSort +Input [1]: [c_customer_sk#56] +Arguments: [c_customer_sk#56 ASC NULLS FIRST], false + +(194) NativeSortMergeJoin +Left keys [1]: [ws_bill_customer_sk#44] +Right keys [1]: [c_customer_sk#56] +Join type: LeftSemi +Join condition: None + +(195) ReusedExchange [Reuses operator id: 85] +Output [3]: [c_customer_sk#61, c_first_name#62, c_last_name#63] + +(196) ShuffleQueryStage +Output [3]: [c_customer_sk#61, c_first_name#62, c_last_name#63] +Arguments: X + +(197) AQEShuffleRead +Input [3]: [c_customer_sk#61, c_first_name#62, c_last_name#63] +Arguments: coalesced + +(198) InputAdapter +Input [3]: [c_customer_sk#61, c_first_name#62, c_last_name#63] +Arguments: [#61, #62, #63] + +(199) InputAdapter +Input [3]: [#61#61, #62#62, #63#63] + +(200) NativeSort +Input [3]: [#61#61, #62#62, #63#63] +Arguments: [c_customer_sk#61 ASC NULLS FIRST], false + +(201) ReusedExchange [Reuses operator id: 59] +Output [3]: [ss_customer_sk#53, ss_quantity#54, ss_sales_price#55] + +(202) ShuffleQueryStage +Output [3]: [ss_customer_sk#53, ss_quantity#54, ss_sales_price#55] +Arguments: X + +(203) AQEShuffleRead +Input [3]: [ss_customer_sk#53, ss_quantity#54, ss_sales_price#55] +Arguments: coalesced + +(204) InputAdapter +Input [3]: [ss_customer_sk#53, ss_quantity#54, ss_sales_price#55] +Arguments: [#53, #54, #55] + +(205) InputAdapter +Input [3]: [#53#53, #54#54, #55#55] + +(206) NativeSort +Input [3]: [#53#53, #54#54, #55#55] +Arguments: [ss_customer_sk#53 ASC NULLS FIRST], false + +(207) ReusedExchange [Reuses operator id: 67] +Output [1]: [c_customer_sk#56] + +(208) ShuffleQueryStage +Output [1]: [c_customer_sk#56] +Arguments: X + +(209) AQEShuffleRead +Input [1]: [c_customer_sk#56] +Arguments: coalesced + +(210) InputAdapter +Input [1]: [c_customer_sk#56] +Arguments: [#56] + +(211) InputAdapter +Input [1]: [#56#56] + +(212) NativeSort +Input [1]: [#56#56] +Arguments: [c_customer_sk#56 ASC NULLS FIRST], false + +(213) NativeSortMergeJoin +Left keys [1]: [ss_customer_sk#53] +Right keys [1]: [c_customer_sk#56] +Join type: Inner +Join condition: None + +(214) NativeProject +Output [3]: [ss_quantity#54, ss_sales_price#55, c_customer_sk#56] +Input [4]: [#53#53, #54#54, #55#55, #56#56] + +(215) NativeProject +Output [2]: [c_customer_sk#56 AS c_customer_sk#56, (cast(ss_quantity#54 as decimal(10,0)) * ss_sales_price#55) AS _c1#64] +Input [3]: [ss_quantity#54, ss_sales_price#55, c_customer_sk#56] + +(216) NativeHashAggregate +Input [2]: [c_customer_sk#56, _c1#64] +Keys [1]: [c_customer_sk#56] +Functions [1]: [partial_sum(_c1#64)] +Aggregate Attributes [2]: [sum#58, isEmpty#59] +Results [2]: [c_customer_sk#56, #15#15] + +(217) NativeHashAggregate +Input [2]: [c_customer_sk#56, #15#15] +Keys [1]: [c_customer_sk#56] +Functions [1]: [sum((cast(ss_quantity#54 as decimal(10,0)) * ss_sales_price#55))] +Aggregate Attributes [1]: [sum((cast(ss_quantity#54 as decimal(10,0)) * ss_sales_price#55))#26] +Results [2]: [c_customer_sk#56, sum((cast(ss_quantity#54 as decimal(10,0)) * ss_sales_price#55))#26] + +(218) NativeProject +Output [2]: [c_customer_sk#56, sum((cast(ss_quantity#54 as decimal(10,0)) * ss_sales_price#55))#26 AS ssales#60] +Input [2]: [c_customer_sk#56, sum((cast(ss_quantity#54 as decimal(10,0)) * ss_sales_price#55))#26] + +(219) NativeFilter +Input [2]: [c_customer_sk#56, ssales#60] +Condition : (isnotnull(ssales#60) AND (cast(ssales#60 as decimal(38,8)) > (0.500000 * ReusedSubquery Subquery subquery#28, [id=#29]))) + +(220) NativeProject +Output [1]: [c_customer_sk#56] +Input [2]: [c_customer_sk#56, ssales#60] + +(221) NativeSort +Input [1]: [c_customer_sk#56] +Arguments: [c_customer_sk#56 ASC NULLS FIRST], false + +(222) NativeSortMergeJoin +Left keys [1]: [c_customer_sk#61] +Right keys [1]: [c_customer_sk#56] +Join type: LeftSemi +Join condition: None + +(223) NativeSortMergeJoin +Left keys [1]: [ws_bill_customer_sk#44] +Right keys [1]: [c_customer_sk#61] +Join type: Inner +Join condition: None + +(224) NativeProject +Output [5]: [ws_sold_date_sk#42, ws_quantity#45, ws_list_price#46, c_first_name#62, c_last_name#63] +Input [7]: [ws_sold_date_sk#42, ws_bill_customer_sk#44, ws_quantity#45, ws_list_price#46, #61#61, #62#62, #63#63] + +(225) NativeShuffleExchange +Input [5]: [ws_sold_date_sk#42, ws_quantity#45, ws_list_price#46, c_first_name#62, c_last_name#63] +Arguments: hashpartitioning(ws_sold_date_sk#42, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(226) ShuffleQueryStage +Output [5]: [ws_sold_date_sk#42, ws_quantity#45, ws_list_price#46, c_first_name#62, c_last_name#63] +Arguments: X + +(227) AQEShuffleRead +Input [5]: [ws_sold_date_sk#42, ws_quantity#45, ws_list_price#46, c_first_name#62, c_last_name#63] +Arguments: coalesced + +(228) InputAdapter +Input [5]: [ws_sold_date_sk#42, ws_quantity#45, ws_list_price#46, c_first_name#62, c_last_name#63] + +(229) NativeSort +Input [5]: [ws_sold_date_sk#42, ws_quantity#45, ws_list_price#46, c_first_name#62, c_last_name#63] +Arguments: [ws_sold_date_sk#42 ASC NULLS FIRST], false + +(230) ReusedExchange [Reuses operator id: 123] +Output [1]: [d_date_sk#65] + +(231) ShuffleQueryStage +Output [1]: [d_date_sk#65] +Arguments: X + +(232) AQEShuffleRead +Input [1]: [d_date_sk#65] +Arguments: coalesced + +(233) InputAdapter +Input [1]: [d_date_sk#65] +Arguments: [#65] + +(234) InputAdapter +Input [1]: [#65#65] + +(235) NativeSort +Input [1]: [#65#65] +Arguments: [d_date_sk#65 ASC NULLS FIRST], false + +(236) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#42] +Right keys [1]: [d_date_sk#65] +Join type: Inner +Join condition: None + +(237) NativeProject +Output [4]: [ws_quantity#45, ws_list_price#46, c_first_name#62, c_last_name#63] +Input [6]: [ws_sold_date_sk#42, ws_quantity#45, ws_list_price#46, c_first_name#62, c_last_name#63, #65#65] + +(238) NativeProject +Output [3]: [c_last_name#63 AS c_last_name#63, c_first_name#62 AS c_first_name#62, (cast(ws_quantity#45 as decimal(10,0)) * ws_list_price#46) AS _c2#66] +Input [4]: [ws_quantity#45, ws_list_price#46, c_first_name#62, c_last_name#63] + +(239) NativeHashAggregate +Input [3]: [c_last_name#63, c_first_name#62, _c2#66] +Keys [2]: [c_last_name#63, c_first_name#62] +Functions [1]: [partial_sum(_c2#66)] +Aggregate Attributes [2]: [sum#67, isEmpty#68] +Results [3]: [c_last_name#63, c_first_name#62, #15#15] + +(240) NativeShuffleExchange +Input [3]: [c_last_name#63, c_first_name#62, #15#15] +Arguments: hashpartitioning(c_last_name#63, c_first_name#62, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(241) ShuffleQueryStage +Output [3]: [c_last_name#63, c_first_name#62, #15#15] +Arguments: X + +(242) AQEShuffleRead +Input [3]: [c_last_name#63, c_first_name#62, #15#15] +Arguments: coalesced + +(243) InputAdapter +Input [3]: [c_last_name#63, c_first_name#62, #15#15] + +(244) NativeHashAggregate +Input [3]: [c_last_name#63, c_first_name#62, #15#15] +Keys [2]: [c_last_name#63, c_first_name#62] +Functions [1]: [sum((cast(ws_quantity#45 as decimal(10,0)) * ws_list_price#46))] +Aggregate Attributes [1]: [sum((cast(ws_quantity#45 as decimal(10,0)) * ws_list_price#46))#69] +Results [3]: [c_last_name#63, c_first_name#62, sum((cast(ws_quantity#45 as decimal(10,0)) * ws_list_price#46))#69] + +(245) NativeProject +Output [3]: [c_last_name#63, c_first_name#62, sum((cast(ws_quantity#45 as decimal(10,0)) * ws_list_price#46))#69 AS sales#70] +Input [3]: [c_last_name#63, c_first_name#62, sum((cast(ws_quantity#45 as decimal(10,0)) * ws_list_price#46))#69] + +(246) NativeUnion +Arguments: [c_last_name#32, c_first_name#31, sales#41] + +(247) InputAdapter +Input [3]: [c_last_name#32, c_first_name#31, sales#41] +Arguments: [#32, #31, #41] + +(248) NativeTakeOrdered +Input [3]: [#32#32, #31#31, #41#41] +Arguments: X, [c_last_name#32 ASC NULLS FIRST, c_first_name#31 ASC NULLS FIRST, sales#41 ASC NULLS FIRST] + +(249) Scan parquet +Output [5]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_item_sk#3, cs_quantity#4, cs_list_price#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_bill_customer_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(250) Filter +Input [5]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_item_sk#3, cs_quantity#4, cs_list_price#5] +Condition : (isnotnull(cs_bill_customer_sk#2) AND isnotnull(cs_sold_date_sk#1)) + +(251) Exchange +Input [5]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_item_sk#3, cs_quantity#4, cs_list_price#5] +Arguments: hashpartitioning(cs_item_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(252) Sort +Input [5]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_item_sk#3, cs_quantity#4, cs_list_price#5] +Arguments: [cs_item_sk#3 ASC NULLS FIRST], false, 0 + +(253) Scan parquet +Output [2]: [ss_sold_date_sk#6, ss_item_sk#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(254) Filter +Input [2]: [ss_sold_date_sk#6, ss_item_sk#7] +Condition : (isnotnull(ss_sold_date_sk#6) AND isnotnull(ss_item_sk#7)) + +(255) Exchange +Input [2]: [ss_sold_date_sk#6, ss_item_sk#7] +Arguments: hashpartitioning(ss_sold_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(256) Sort +Input [2]: [ss_sold_date_sk#6, ss_item_sk#7] +Arguments: [ss_sold_date_sk#6 ASC NULLS FIRST], false, 0 + +(257) Scan parquet +Output [3]: [d_date_sk#8, d_date#9, d_year#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(d_year, [2000,2001,2002,2003]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(258) Filter +Input [3]: [d_date_sk#8, d_date#9, d_year#10] +Condition : (d_year#10 IN (2000,2001,2002,2003) AND isnotnull(d_date_sk#8)) + +(259) Project +Output [2]: [d_date_sk#8, d_date#9] +Input [3]: [d_date_sk#8, d_date#9, d_year#10] + +(260) Exchange +Input [2]: [d_date_sk#8, d_date#9] +Arguments: hashpartitioning(d_date_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(261) Sort +Input [2]: [d_date_sk#8, d_date#9] +Arguments: [d_date_sk#8 ASC NULLS FIRST], false, 0 + +(262) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#6] +Right keys [1]: [d_date_sk#8] +Join type: Inner +Join condition: None + +(263) Project +Output [2]: [ss_item_sk#7, d_date#9] +Input [4]: [ss_sold_date_sk#6, ss_item_sk#7, d_date_sk#8, d_date#9] + +(264) Exchange +Input [2]: [ss_item_sk#7, d_date#9] +Arguments: hashpartitioning(ss_item_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(265) Sort +Input [2]: [ss_item_sk#7, d_date#9] +Arguments: [ss_item_sk#7 ASC NULLS FIRST], false, 0 + +(266) Scan parquet +Output [2]: [i_item_sk#11, i_item_desc#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(267) Filter +Input [2]: [i_item_sk#11, i_item_desc#12] +Condition : isnotnull(i_item_sk#11) + +(268) Exchange +Input [2]: [i_item_sk#11, i_item_desc#12] +Arguments: hashpartitioning(i_item_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(269) Sort +Input [2]: [i_item_sk#11, i_item_desc#12] +Arguments: [i_item_sk#11 ASC NULLS FIRST], false, 0 + +(270) SortMergeJoin +Left keys [1]: [ss_item_sk#7] +Right keys [1]: [i_item_sk#11] +Join type: Inner +Join condition: None + +(271) Project +Output [3]: [d_date#9, i_item_sk#11, substr(i_item_desc#12, 1, 30) AS _groupingexpression#13] +Input [4]: [ss_item_sk#7, d_date#9, i_item_sk#11, i_item_desc#12] + +(272) HashAggregate +Input [3]: [d_date#9, i_item_sk#11, _groupingexpression#13] +Keys [3]: [_groupingexpression#13, i_item_sk#11, d_date#9] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#14] +Results [4]: [_groupingexpression#13, i_item_sk#11, d_date#9, count#71] + +(273) HashAggregate +Input [4]: [_groupingexpression#13, i_item_sk#11, d_date#9, count#71] +Keys [3]: [_groupingexpression#13, i_item_sk#11, d_date#9] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#16] +Results [2]: [i_item_sk#11 AS item_sk#17, count(1)#16 AS cnt#18] + +(274) Filter +Input [2]: [item_sk#17, cnt#18] +Condition : (cnt#18 > 4) + +(275) Project +Output [1]: [item_sk#17] +Input [2]: [item_sk#17, cnt#18] + +(276) Sort +Input [1]: [item_sk#17] +Arguments: [item_sk#17 ASC NULLS FIRST], false, 0 + +(277) SortMergeJoin +Left keys [1]: [cs_item_sk#3] +Right keys [1]: [item_sk#17] +Join type: LeftSemi +Join condition: None + +(278) Project +Output [4]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_quantity#4, cs_list_price#5] +Input [5]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_item_sk#3, cs_quantity#4, cs_list_price#5] + +(279) Exchange +Input [4]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_quantity#4, cs_list_price#5] +Arguments: hashpartitioning(cs_bill_customer_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(280) Sort +Input [4]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_quantity#4, cs_list_price#5] +Arguments: [cs_bill_customer_sk#2 ASC NULLS FIRST], false, 0 + +(281) Scan parquet +Output [3]: [ss_customer_sk#19, ss_quantity#20, ss_sales_price#21] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk)] +ReadSchema: struct + +(282) Filter +Input [3]: [ss_customer_sk#19, ss_quantity#20, ss_sales_price#21] +Condition : isnotnull(ss_customer_sk#19) + +(283) Exchange +Input [3]: [ss_customer_sk#19, ss_quantity#20, ss_sales_price#21] +Arguments: hashpartitioning(ss_customer_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(284) Sort +Input [3]: [ss_customer_sk#19, ss_quantity#20, ss_sales_price#21] +Arguments: [ss_customer_sk#19 ASC NULLS FIRST], false, 0 + +(285) Scan parquet +Output [1]: [c_customer_sk#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk)] +ReadSchema: struct + +(286) Filter +Input [1]: [c_customer_sk#22] +Condition : isnotnull(c_customer_sk#22) + +(287) Exchange +Input [1]: [c_customer_sk#22] +Arguments: hashpartitioning(c_customer_sk#22, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(288) Sort +Input [1]: [c_customer_sk#22] +Arguments: [c_customer_sk#22 ASC NULLS FIRST], false, 0 + +(289) SortMergeJoin +Left keys [1]: [ss_customer_sk#19] +Right keys [1]: [c_customer_sk#22] +Join type: Inner +Join condition: None + +(290) Project +Output [3]: [ss_quantity#20, ss_sales_price#21, c_customer_sk#22] +Input [4]: [ss_customer_sk#19, ss_quantity#20, ss_sales_price#21, c_customer_sk#22] + +(291) HashAggregate +Input [3]: [ss_quantity#20, ss_sales_price#21, c_customer_sk#22] +Keys [1]: [c_customer_sk#22] +Functions [1]: [partial_sum((cast(ss_quantity#20 as decimal(10,0)) * ss_sales_price#21))] +Aggregate Attributes [2]: [sum#24, isEmpty#25] +Results [3]: [c_customer_sk#22, sum#72, isEmpty#73] + +(292) HashAggregate +Input [3]: [c_customer_sk#22, sum#72, isEmpty#73] +Keys [1]: [c_customer_sk#22] +Functions [1]: [sum((cast(ss_quantity#20 as decimal(10,0)) * ss_sales_price#21))] +Aggregate Attributes [1]: [sum((cast(ss_quantity#20 as decimal(10,0)) * ss_sales_price#21))#26] +Results [2]: [c_customer_sk#22, sum((cast(ss_quantity#20 as decimal(10,0)) * ss_sales_price#21))#26 AS ssales#27] + +(293) Filter +Input [2]: [c_customer_sk#22, ssales#27] +Condition : (isnotnull(ssales#27) AND (cast(ssales#27 as decimal(38,8)) > (0.500000 * Subquery subquery#28, [id=#29]))) + +(294) Project +Output [1]: [c_customer_sk#22] +Input [2]: [c_customer_sk#22, ssales#27] + +(295) Sort +Input [1]: [c_customer_sk#22] +Arguments: [c_customer_sk#22 ASC NULLS FIRST], false, 0 + +(296) SortMergeJoin +Left keys [1]: [cs_bill_customer_sk#2] +Right keys [1]: [c_customer_sk#22] +Join type: LeftSemi +Join condition: None + +(297) Scan parquet +Output [3]: [c_customer_sk#30, c_first_name#31, c_last_name#32] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk)] +ReadSchema: struct + +(298) Filter +Input [3]: [c_customer_sk#30, c_first_name#31, c_last_name#32] +Condition : isnotnull(c_customer_sk#30) + +(299) Exchange +Input [3]: [c_customer_sk#30, c_first_name#31, c_last_name#32] +Arguments: hashpartitioning(c_customer_sk#30, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(300) Sort +Input [3]: [c_customer_sk#30, c_first_name#31, c_last_name#32] +Arguments: [c_customer_sk#30 ASC NULLS FIRST], false, 0 + +(301) Scan parquet +Output [3]: [ss_customer_sk#19, ss_quantity#20, ss_sales_price#21] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk)] +ReadSchema: struct + +(302) Filter +Input [3]: [ss_customer_sk#19, ss_quantity#20, ss_sales_price#21] +Condition : isnotnull(ss_customer_sk#19) + +(303) Exchange +Input [3]: [ss_customer_sk#19, ss_quantity#20, ss_sales_price#21] +Arguments: hashpartitioning(ss_customer_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(304) Sort +Input [3]: [ss_customer_sk#19, ss_quantity#20, ss_sales_price#21] +Arguments: [ss_customer_sk#19 ASC NULLS FIRST], false, 0 + +(305) Scan parquet +Output [1]: [c_customer_sk#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk)] +ReadSchema: struct + +(306) Filter +Input [1]: [c_customer_sk#22] +Condition : isnotnull(c_customer_sk#22) + +(307) Exchange +Input [1]: [c_customer_sk#22] +Arguments: hashpartitioning(c_customer_sk#22, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(308) Sort +Input [1]: [c_customer_sk#22] +Arguments: [c_customer_sk#22 ASC NULLS FIRST], false, 0 + +(309) SortMergeJoin +Left keys [1]: [ss_customer_sk#19] +Right keys [1]: [c_customer_sk#22] +Join type: Inner +Join condition: None + +(310) Project +Output [3]: [ss_quantity#20, ss_sales_price#21, c_customer_sk#22] +Input [4]: [ss_customer_sk#19, ss_quantity#20, ss_sales_price#21, c_customer_sk#22] + +(311) HashAggregate +Input [3]: [ss_quantity#20, ss_sales_price#21, c_customer_sk#22] +Keys [1]: [c_customer_sk#22] +Functions [1]: [partial_sum((cast(ss_quantity#20 as decimal(10,0)) * ss_sales_price#21))] +Aggregate Attributes [2]: [sum#24, isEmpty#25] +Results [3]: [c_customer_sk#22, sum#72, isEmpty#73] + +(312) HashAggregate +Input [3]: [c_customer_sk#22, sum#72, isEmpty#73] +Keys [1]: [c_customer_sk#22] +Functions [1]: [sum((cast(ss_quantity#20 as decimal(10,0)) * ss_sales_price#21))] +Aggregate Attributes [1]: [sum((cast(ss_quantity#20 as decimal(10,0)) * ss_sales_price#21))#26] +Results [2]: [c_customer_sk#22, sum((cast(ss_quantity#20 as decimal(10,0)) * ss_sales_price#21))#26 AS ssales#27] + +(313) Filter +Input [2]: [c_customer_sk#22, ssales#27] +Condition : (isnotnull(ssales#27) AND (cast(ssales#27 as decimal(38,8)) > (0.500000 * Subquery subquery#28, [id=#74]))) + +(314) Project +Output [1]: [c_customer_sk#22] +Input [2]: [c_customer_sk#22, ssales#27] + +(315) Sort +Input [1]: [c_customer_sk#22] +Arguments: [c_customer_sk#22 ASC NULLS FIRST], false, 0 + +(316) SortMergeJoin +Left keys [1]: [c_customer_sk#30] +Right keys [1]: [c_customer_sk#22] +Join type: LeftSemi +Join condition: None + +(317) SortMergeJoin +Left keys [1]: [cs_bill_customer_sk#2] +Right keys [1]: [c_customer_sk#30] +Join type: Inner +Join condition: None + +(318) Project +Output [5]: [cs_sold_date_sk#1, cs_quantity#4, cs_list_price#5, c_first_name#31, c_last_name#32] +Input [7]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_quantity#4, cs_list_price#5, c_customer_sk#30, c_first_name#31, c_last_name#32] + +(319) Exchange +Input [5]: [cs_sold_date_sk#1, cs_quantity#4, cs_list_price#5, c_first_name#31, c_last_name#32] +Arguments: hashpartitioning(cs_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(320) Sort +Input [5]: [cs_sold_date_sk#1, cs_quantity#4, cs_list_price#5, c_first_name#31, c_last_name#32] +Arguments: [cs_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(321) Scan parquet +Output [3]: [d_date_sk#34, d_year#35, d_moy#36] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2000), EqualTo(d_moy,2), IsNotNull(d_date_sk)] +ReadSchema: struct + +(322) Filter +Input [3]: [d_date_sk#34, d_year#35, d_moy#36] +Condition : ((((isnotnull(d_year#35) AND isnotnull(d_moy#36)) AND (d_year#35 = 2000)) AND (d_moy#36 = 2)) AND isnotnull(d_date_sk#34)) + +(323) Project +Output [1]: [d_date_sk#34] +Input [3]: [d_date_sk#34, d_year#35, d_moy#36] + +(324) Exchange +Input [1]: [d_date_sk#34] +Arguments: hashpartitioning(d_date_sk#34, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(325) Sort +Input [1]: [d_date_sk#34] +Arguments: [d_date_sk#34 ASC NULLS FIRST], false, 0 + +(326) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#1] +Right keys [1]: [d_date_sk#34] +Join type: Inner +Join condition: None + +(327) Project +Output [4]: [cs_quantity#4, cs_list_price#5, c_first_name#31, c_last_name#32] +Input [6]: [cs_sold_date_sk#1, cs_quantity#4, cs_list_price#5, c_first_name#31, c_last_name#32, d_date_sk#34] + +(328) HashAggregate +Input [4]: [cs_quantity#4, cs_list_price#5, c_first_name#31, c_last_name#32] +Keys [2]: [c_last_name#32, c_first_name#31] +Functions [1]: [partial_sum((cast(cs_quantity#4 as decimal(10,0)) * cs_list_price#5))] +Aggregate Attributes [2]: [sum#38, isEmpty#39] +Results [4]: [c_last_name#32, c_first_name#31, sum#75, isEmpty#76] + +(329) Exchange +Input [4]: [c_last_name#32, c_first_name#31, sum#75, isEmpty#76] +Arguments: hashpartitioning(c_last_name#32, c_first_name#31, 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(330) HashAggregate +Input [4]: [c_last_name#32, c_first_name#31, sum#75, isEmpty#76] +Keys [2]: [c_last_name#32, c_first_name#31] +Functions [1]: [sum((cast(cs_quantity#4 as decimal(10,0)) * cs_list_price#5))] +Aggregate Attributes [1]: [sum((cast(cs_quantity#4 as decimal(10,0)) * cs_list_price#5))#40] +Results [3]: [c_last_name#32, c_first_name#31, sum((cast(cs_quantity#4 as decimal(10,0)) * cs_list_price#5))#40 AS sales#41] + +(331) Scan parquet +Output [5]: [ws_sold_date_sk#42, ws_item_sk#43, ws_bill_customer_sk#44, ws_quantity#45, ws_list_price#46] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_bill_customer_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(332) Filter +Input [5]: [ws_sold_date_sk#42, ws_item_sk#43, ws_bill_customer_sk#44, ws_quantity#45, ws_list_price#46] +Condition : (isnotnull(ws_bill_customer_sk#44) AND isnotnull(ws_sold_date_sk#42)) + +(333) Exchange +Input [5]: [ws_sold_date_sk#42, ws_item_sk#43, ws_bill_customer_sk#44, ws_quantity#45, ws_list_price#46] +Arguments: hashpartitioning(ws_item_sk#43, 100), ENSURE_REQUIREMENTS, [plan_id=31] + +(334) Sort +Input [5]: [ws_sold_date_sk#42, ws_item_sk#43, ws_bill_customer_sk#44, ws_quantity#45, ws_list_price#46] +Arguments: [ws_item_sk#43 ASC NULLS FIRST], false, 0 + +(335) Scan parquet +Output [2]: [ss_sold_date_sk#77, ss_item_sk#47] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(336) Filter +Input [2]: [ss_sold_date_sk#77, ss_item_sk#47] +Condition : (isnotnull(ss_sold_date_sk#77) AND isnotnull(ss_item_sk#47)) + +(337) Exchange +Input [2]: [ss_sold_date_sk#77, ss_item_sk#47] +Arguments: hashpartitioning(ss_sold_date_sk#77, 100), ENSURE_REQUIREMENTS, [plan_id=32] + +(338) Sort +Input [2]: [ss_sold_date_sk#77, ss_item_sk#47] +Arguments: [ss_sold_date_sk#77 ASC NULLS FIRST], false, 0 + +(339) Scan parquet +Output [3]: [d_date_sk#78, d_date#48, d_year#79] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(d_year, [2000,2001,2002,2003]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(340) Filter +Input [3]: [d_date_sk#78, d_date#48, d_year#79] +Condition : (d_year#79 IN (2000,2001,2002,2003) AND isnotnull(d_date_sk#78)) + +(341) Project +Output [2]: [d_date_sk#78, d_date#48] +Input [3]: [d_date_sk#78, d_date#48, d_year#79] + +(342) Exchange +Input [2]: [d_date_sk#78, d_date#48] +Arguments: hashpartitioning(d_date_sk#78, 100), ENSURE_REQUIREMENTS, [plan_id=33] + +(343) Sort +Input [2]: [d_date_sk#78, d_date#48] +Arguments: [d_date_sk#78 ASC NULLS FIRST], false, 0 + +(344) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#77] +Right keys [1]: [d_date_sk#78] +Join type: Inner +Join condition: None + +(345) Project +Output [2]: [ss_item_sk#47, d_date#48] +Input [4]: [ss_sold_date_sk#77, ss_item_sk#47, d_date_sk#78, d_date#48] + +(346) Exchange +Input [2]: [ss_item_sk#47, d_date#48] +Arguments: hashpartitioning(ss_item_sk#47, 100), ENSURE_REQUIREMENTS, [plan_id=34] + +(347) Sort +Input [2]: [ss_item_sk#47, d_date#48] +Arguments: [ss_item_sk#47 ASC NULLS FIRST], false, 0 + +(348) Scan parquet +Output [2]: [i_item_sk#49, i_item_desc#50] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(349) Filter +Input [2]: [i_item_sk#49, i_item_desc#50] +Condition : isnotnull(i_item_sk#49) + +(350) Exchange +Input [2]: [i_item_sk#49, i_item_desc#50] +Arguments: hashpartitioning(i_item_sk#49, 100), ENSURE_REQUIREMENTS, [plan_id=35] + +(351) Sort +Input [2]: [i_item_sk#49, i_item_desc#50] +Arguments: [i_item_sk#49 ASC NULLS FIRST], false, 0 + +(352) SortMergeJoin +Left keys [1]: [ss_item_sk#47] +Right keys [1]: [i_item_sk#49] +Join type: Inner +Join condition: None + +(353) Project +Output [3]: [d_date#48, i_item_sk#49, substr(i_item_desc#50, 1, 30) AS _groupingexpression#13] +Input [4]: [ss_item_sk#47, d_date#48, i_item_sk#49, i_item_desc#50] + +(354) HashAggregate +Input [3]: [d_date#48, i_item_sk#49, _groupingexpression#13] +Keys [3]: [_groupingexpression#13, i_item_sk#49, d_date#48] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#14] +Results [4]: [_groupingexpression#13, i_item_sk#49, d_date#48, count#71] + +(355) HashAggregate +Input [4]: [_groupingexpression#13, i_item_sk#49, d_date#48, count#71] +Keys [3]: [_groupingexpression#13, i_item_sk#49, d_date#48] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#16] +Results [2]: [i_item_sk#49 AS item_sk#51, count(1)#16 AS cnt#52] + +(356) Filter +Input [2]: [item_sk#51, cnt#52] +Condition : (cnt#52 > 4) + +(357) Project +Output [1]: [item_sk#51] +Input [2]: [item_sk#51, cnt#52] + +(358) Sort +Input [1]: [item_sk#51] +Arguments: [item_sk#51 ASC NULLS FIRST], false, 0 + +(359) SortMergeJoin +Left keys [1]: [ws_item_sk#43] +Right keys [1]: [item_sk#51] +Join type: LeftSemi +Join condition: None + +(360) Project +Output [4]: [ws_sold_date_sk#42, ws_bill_customer_sk#44, ws_quantity#45, ws_list_price#46] +Input [5]: [ws_sold_date_sk#42, ws_item_sk#43, ws_bill_customer_sk#44, ws_quantity#45, ws_list_price#46] + +(361) Exchange +Input [4]: [ws_sold_date_sk#42, ws_bill_customer_sk#44, ws_quantity#45, ws_list_price#46] +Arguments: hashpartitioning(ws_bill_customer_sk#44, 100), ENSURE_REQUIREMENTS, [plan_id=36] + +(362) Sort +Input [4]: [ws_sold_date_sk#42, ws_bill_customer_sk#44, ws_quantity#45, ws_list_price#46] +Arguments: [ws_bill_customer_sk#44 ASC NULLS FIRST], false, 0 + +(363) Scan parquet +Output [3]: [ss_customer_sk#53, ss_quantity#54, ss_sales_price#55] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk)] +ReadSchema: struct + +(364) Filter +Input [3]: [ss_customer_sk#53, ss_quantity#54, ss_sales_price#55] +Condition : isnotnull(ss_customer_sk#53) + +(365) Exchange +Input [3]: [ss_customer_sk#53, ss_quantity#54, ss_sales_price#55] +Arguments: hashpartitioning(ss_customer_sk#53, 100), ENSURE_REQUIREMENTS, [plan_id=37] + +(366) Sort +Input [3]: [ss_customer_sk#53, ss_quantity#54, ss_sales_price#55] +Arguments: [ss_customer_sk#53 ASC NULLS FIRST], false, 0 + +(367) Scan parquet +Output [1]: [c_customer_sk#56] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk)] +ReadSchema: struct + +(368) Filter +Input [1]: [c_customer_sk#56] +Condition : isnotnull(c_customer_sk#56) + +(369) Exchange +Input [1]: [c_customer_sk#56] +Arguments: hashpartitioning(c_customer_sk#56, 100), ENSURE_REQUIREMENTS, [plan_id=38] + +(370) Sort +Input [1]: [c_customer_sk#56] +Arguments: [c_customer_sk#56 ASC NULLS FIRST], false, 0 + +(371) SortMergeJoin +Left keys [1]: [ss_customer_sk#53] +Right keys [1]: [c_customer_sk#56] +Join type: Inner +Join condition: None + +(372) Project +Output [3]: [ss_quantity#54, ss_sales_price#55, c_customer_sk#56] +Input [4]: [ss_customer_sk#53, ss_quantity#54, ss_sales_price#55, c_customer_sk#56] + +(373) HashAggregate +Input [3]: [ss_quantity#54, ss_sales_price#55, c_customer_sk#56] +Keys [1]: [c_customer_sk#56] +Functions [1]: [partial_sum((cast(ss_quantity#54 as decimal(10,0)) * ss_sales_price#55))] +Aggregate Attributes [2]: [sum#58, isEmpty#59] +Results [3]: [c_customer_sk#56, sum#80, isEmpty#81] + +(374) HashAggregate +Input [3]: [c_customer_sk#56, sum#80, isEmpty#81] +Keys [1]: [c_customer_sk#56] +Functions [1]: [sum((cast(ss_quantity#54 as decimal(10,0)) * ss_sales_price#55))] +Aggregate Attributes [1]: [sum((cast(ss_quantity#54 as decimal(10,0)) * ss_sales_price#55))#26] +Results [2]: [c_customer_sk#56, sum((cast(ss_quantity#54 as decimal(10,0)) * ss_sales_price#55))#26 AS ssales#60] + +(375) Filter +Input [2]: [c_customer_sk#56, ssales#60] +Condition : (isnotnull(ssales#60) AND (cast(ssales#60 as decimal(38,8)) > (0.500000 * Subquery subquery#28, [id=#82]))) + +(376) Project +Output [1]: [c_customer_sk#56] +Input [2]: [c_customer_sk#56, ssales#60] + +(377) Sort +Input [1]: [c_customer_sk#56] +Arguments: [c_customer_sk#56 ASC NULLS FIRST], false, 0 + +(378) SortMergeJoin +Left keys [1]: [ws_bill_customer_sk#44] +Right keys [1]: [c_customer_sk#56] +Join type: LeftSemi +Join condition: None + +(379) Scan parquet +Output [3]: [c_customer_sk#61, c_first_name#62, c_last_name#63] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk)] +ReadSchema: struct + +(380) Filter +Input [3]: [c_customer_sk#61, c_first_name#62, c_last_name#63] +Condition : isnotnull(c_customer_sk#61) + +(381) Exchange +Input [3]: [c_customer_sk#61, c_first_name#62, c_last_name#63] +Arguments: hashpartitioning(c_customer_sk#61, 100), ENSURE_REQUIREMENTS, [plan_id=39] + +(382) Sort +Input [3]: [c_customer_sk#61, c_first_name#62, c_last_name#63] +Arguments: [c_customer_sk#61 ASC NULLS FIRST], false, 0 + +(383) Scan parquet +Output [3]: [ss_customer_sk#53, ss_quantity#54, ss_sales_price#55] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk)] +ReadSchema: struct + +(384) Filter +Input [3]: [ss_customer_sk#53, ss_quantity#54, ss_sales_price#55] +Condition : isnotnull(ss_customer_sk#53) + +(385) Exchange +Input [3]: [ss_customer_sk#53, ss_quantity#54, ss_sales_price#55] +Arguments: hashpartitioning(ss_customer_sk#53, 100), ENSURE_REQUIREMENTS, [plan_id=40] + +(386) Sort +Input [3]: [ss_customer_sk#53, ss_quantity#54, ss_sales_price#55] +Arguments: [ss_customer_sk#53 ASC NULLS FIRST], false, 0 + +(387) Scan parquet +Output [1]: [c_customer_sk#56] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk)] +ReadSchema: struct + +(388) Filter +Input [1]: [c_customer_sk#56] +Condition : isnotnull(c_customer_sk#56) + +(389) Exchange +Input [1]: [c_customer_sk#56] +Arguments: hashpartitioning(c_customer_sk#56, 100), ENSURE_REQUIREMENTS, [plan_id=41] + +(390) Sort +Input [1]: [c_customer_sk#56] +Arguments: [c_customer_sk#56 ASC NULLS FIRST], false, 0 + +(391) SortMergeJoin +Left keys [1]: [ss_customer_sk#53] +Right keys [1]: [c_customer_sk#56] +Join type: Inner +Join condition: None + +(392) Project +Output [3]: [ss_quantity#54, ss_sales_price#55, c_customer_sk#56] +Input [4]: [ss_customer_sk#53, ss_quantity#54, ss_sales_price#55, c_customer_sk#56] + +(393) HashAggregate +Input [3]: [ss_quantity#54, ss_sales_price#55, c_customer_sk#56] +Keys [1]: [c_customer_sk#56] +Functions [1]: [partial_sum((cast(ss_quantity#54 as decimal(10,0)) * ss_sales_price#55))] +Aggregate Attributes [2]: [sum#58, isEmpty#59] +Results [3]: [c_customer_sk#56, sum#80, isEmpty#81] + +(394) HashAggregate +Input [3]: [c_customer_sk#56, sum#80, isEmpty#81] +Keys [1]: [c_customer_sk#56] +Functions [1]: [sum((cast(ss_quantity#54 as decimal(10,0)) * ss_sales_price#55))] +Aggregate Attributes [1]: [sum((cast(ss_quantity#54 as decimal(10,0)) * ss_sales_price#55))#26] +Results [2]: [c_customer_sk#56, sum((cast(ss_quantity#54 as decimal(10,0)) * ss_sales_price#55))#26 AS ssales#60] + +(395) Filter +Input [2]: [c_customer_sk#56, ssales#60] +Condition : (isnotnull(ssales#60) AND (cast(ssales#60 as decimal(38,8)) > (0.500000 * Subquery subquery#28, [id=#83]))) + +(396) Project +Output [1]: [c_customer_sk#56] +Input [2]: [c_customer_sk#56, ssales#60] + +(397) Sort +Input [1]: [c_customer_sk#56] +Arguments: [c_customer_sk#56 ASC NULLS FIRST], false, 0 + +(398) SortMergeJoin +Left keys [1]: [c_customer_sk#61] +Right keys [1]: [c_customer_sk#56] +Join type: LeftSemi +Join condition: None + +(399) SortMergeJoin +Left keys [1]: [ws_bill_customer_sk#44] +Right keys [1]: [c_customer_sk#61] +Join type: Inner +Join condition: None + +(400) Project +Output [5]: [ws_sold_date_sk#42, ws_quantity#45, ws_list_price#46, c_first_name#62, c_last_name#63] +Input [7]: [ws_sold_date_sk#42, ws_bill_customer_sk#44, ws_quantity#45, ws_list_price#46, c_customer_sk#61, c_first_name#62, c_last_name#63] + +(401) Exchange +Input [5]: [ws_sold_date_sk#42, ws_quantity#45, ws_list_price#46, c_first_name#62, c_last_name#63] +Arguments: hashpartitioning(ws_sold_date_sk#42, 100), ENSURE_REQUIREMENTS, [plan_id=42] + +(402) Sort +Input [5]: [ws_sold_date_sk#42, ws_quantity#45, ws_list_price#46, c_first_name#62, c_last_name#63] +Arguments: [ws_sold_date_sk#42 ASC NULLS FIRST], false, 0 + +(403) Scan parquet +Output [3]: [d_date_sk#65, d_year#84, d_moy#85] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2000), EqualTo(d_moy,2), IsNotNull(d_date_sk)] +ReadSchema: struct + +(404) Filter +Input [3]: [d_date_sk#65, d_year#84, d_moy#85] +Condition : ((((isnotnull(d_year#84) AND isnotnull(d_moy#85)) AND (d_year#84 = 2000)) AND (d_moy#85 = 2)) AND isnotnull(d_date_sk#65)) + +(405) Project +Output [1]: [d_date_sk#65] +Input [3]: [d_date_sk#65, d_year#84, d_moy#85] + +(406) Exchange +Input [1]: [d_date_sk#65] +Arguments: hashpartitioning(d_date_sk#65, 100), ENSURE_REQUIREMENTS, [plan_id=43] + +(407) Sort +Input [1]: [d_date_sk#65] +Arguments: [d_date_sk#65 ASC NULLS FIRST], false, 0 + +(408) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#42] +Right keys [1]: [d_date_sk#65] +Join type: Inner +Join condition: None + +(409) Project +Output [4]: [ws_quantity#45, ws_list_price#46, c_first_name#62, c_last_name#63] +Input [6]: [ws_sold_date_sk#42, ws_quantity#45, ws_list_price#46, c_first_name#62, c_last_name#63, d_date_sk#65] + +(410) HashAggregate +Input [4]: [ws_quantity#45, ws_list_price#46, c_first_name#62, c_last_name#63] +Keys [2]: [c_last_name#63, c_first_name#62] +Functions [1]: [partial_sum((cast(ws_quantity#45 as decimal(10,0)) * ws_list_price#46))] +Aggregate Attributes [2]: [sum#67, isEmpty#68] +Results [4]: [c_last_name#63, c_first_name#62, sum#86, isEmpty#87] + +(411) Exchange +Input [4]: [c_last_name#63, c_first_name#62, sum#86, isEmpty#87] +Arguments: hashpartitioning(c_last_name#63, c_first_name#62, 100), ENSURE_REQUIREMENTS, [plan_id=44] + +(412) HashAggregate +Input [4]: [c_last_name#63, c_first_name#62, sum#86, isEmpty#87] +Keys [2]: [c_last_name#63, c_first_name#62] +Functions [1]: [sum((cast(ws_quantity#45 as decimal(10,0)) * ws_list_price#46))] +Aggregate Attributes [1]: [sum((cast(ws_quantity#45 as decimal(10,0)) * ws_list_price#46))#69] +Results [3]: [c_last_name#63, c_first_name#62, sum((cast(ws_quantity#45 as decimal(10,0)) * ws_list_price#46))#69 AS sales#70] + +(413) Union + +(414) TakeOrderedAndProject +Input [3]: [c_last_name#32, c_first_name#31, sales#41] +Arguments: X, [c_last_name#32 ASC NULLS FIRST, c_first_name#31 ASC NULLS FIRST, sales#41 ASC NULLS FIRST], [c_last_name#32, c_first_name#31, sales#41] + +(415) AdaptiveSparkPlan +Output [3]: [c_last_name#32, c_first_name#31, sales#41] +Arguments: isFinalPlan=true + +===== Subqueries ===== + +Subquery:1 Hosting operator id = 78 Hosting Expression = Subquery subquery#28, [id=#29] +AdaptiveSparkPlan (486) ++- == Final Plan == + NativeProject (460) + +- NativeHashAggregate (459) + +- ShuffleQueryStage (458), Statistics(X) + +- NativeShuffleExchange (457) + +- NativeHashAggregate (456) + +- NativeProject (455) + +- NativeHashAggregate (454) + +- InputAdapter (453) + +- AQEShuffleRead (452) + +- ShuffleQueryStage (451), Statistics(X) + +- NativeShuffleExchange (450) + +- NativeHashAggregate (449) + +- NativeProject (448) + +- NativeProject (447) + +- NativeSortMergeJoin Inner (446) + :- NativeSort (436) + : +- InputAdapter (435) + : +- AQEShuffleRead (434) + : +- ShuffleQueryStage (433), Statistics(X) + : +- NativeShuffleExchange (432) + : +- NativeProject (431) + : +- NativeSortMergeJoin Inner (430) + : :- NativeSort (423) + : : +- InputAdapter (422) + : : +- AQEShuffleRead (421) + : : +- ShuffleQueryStage (420), Statistics(X) + : : +- NativeShuffleExchange (419) + : : +- NativeFilter (418) + : : +- InputAdapter (417) + : : +- NativeParquetScan (416) + : +- NativeSort (429) + : +- InputAdapter (428) + : +- InputAdapter (427) + : +- AQEShuffleRead (426) + : +- ShuffleQueryStage (425), Statistics(X) + : +- ReusedExchange (424) + +- NativeSort (445) + +- InputAdapter (444) + +- AQEShuffleRead (443) + +- ShuffleQueryStage (442), Statistics(X) + +- NativeShuffleExchange (441) + +- NativeProject (440) + +- NativeFilter (439) + +- InputAdapter (438) + +- NativeParquetScan (437) ++- == Initial Plan == + HashAggregate (485) + +- Exchange (484) + +- HashAggregate (483) + +- HashAggregate (482) + +- Exchange (481) + +- HashAggregate (480) + +- Project (479) + +- SortMergeJoin Inner (478) + :- Sort (472) + : +- Exchange (471) + : +- Project (470) + : +- SortMergeJoin Inner (469) + : :- Sort (464) + : : +- Exchange (463) + : : +- Filter (462) + : : +- Scan parquet (461) + : +- Sort (468) + : +- Exchange (467) + : +- Filter (466) + : +- Scan parquet (465) + +- Sort (477) + +- Exchange (476) + +- Project (475) + +- Filter (474) + +- Scan parquet (473) + + +(461) Scan parquet +Output [4]: [ss_sold_date_sk#88, ss_customer_sk#89, ss_quantity#90, ss_sales_price#91] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(417) InputAdapter +Input [4]: [ss_sold_date_sk#88, ss_customer_sk#89, ss_quantity#90, ss_sales_price#91] +Arguments: [#88, #89, #90, #91] + +(418) NativeFilter +Input [4]: [#88#88, #89#89, #90#90, #91#91] +Condition : (isnotnull(ss_customer_sk#89) AND isnotnull(ss_sold_date_sk#88)) + +(419) NativeShuffleExchange +Input [4]: [#88#88, #89#89, #90#90, #91#91] +Arguments: hashpartitioning(ss_customer_sk#89, 100), ENSURE_REQUIREMENTS, [plan_id=45] + +(420) ShuffleQueryStage +Output [4]: [#88#88, #89#89, #90#90, #91#91] +Arguments: X + +(421) AQEShuffleRead +Input [4]: [#88#88, #89#89, #90#90, #91#91] +Arguments: coalesced + +(422) InputAdapter +Input [4]: [#88#88, #89#89, #90#90, #91#91] + +(423) NativeSort +Input [4]: [#88#88, #89#89, #90#90, #91#91] +Arguments: [ss_customer_sk#89 ASC NULLS FIRST], false + +(424) ReusedExchange [Reuses operator id: 67] +Output [1]: [c_customer_sk#92] + +(425) ShuffleQueryStage +Output [1]: [c_customer_sk#92] +Arguments: X + +(426) AQEShuffleRead +Input [1]: [c_customer_sk#92] +Arguments: coalesced + +(427) InputAdapter +Input [1]: [c_customer_sk#92] +Arguments: [#92] + +(428) InputAdapter +Input [1]: [#92#92] + +(429) NativeSort +Input [1]: [#92#92] +Arguments: [c_customer_sk#92 ASC NULLS FIRST], false + +(430) NativeSortMergeJoin +Left keys [1]: [ss_customer_sk#89] +Right keys [1]: [c_customer_sk#92] +Join type: Inner +Join condition: None + +(431) NativeProject +Output [4]: [ss_sold_date_sk#88, ss_quantity#90, ss_sales_price#91, c_customer_sk#92] +Input [5]: [#88#88, #89#89, #90#90, #91#91, #92#92] + +(432) NativeShuffleExchange +Input [4]: [ss_sold_date_sk#88, ss_quantity#90, ss_sales_price#91, c_customer_sk#92] +Arguments: hashpartitioning(ss_sold_date_sk#88, 100), ENSURE_REQUIREMENTS, [plan_id=46] + +(433) ShuffleQueryStage +Output [4]: [ss_sold_date_sk#88, ss_quantity#90, ss_sales_price#91, c_customer_sk#92] +Arguments: X + +(434) AQEShuffleRead +Input [4]: [ss_sold_date_sk#88, ss_quantity#90, ss_sales_price#91, c_customer_sk#92] +Arguments: coalesced + +(435) InputAdapter +Input [4]: [ss_sold_date_sk#88, ss_quantity#90, ss_sales_price#91, c_customer_sk#92] + +(436) NativeSort +Input [4]: [ss_sold_date_sk#88, ss_quantity#90, ss_sales_price#91, c_customer_sk#92] +Arguments: [ss_sold_date_sk#88 ASC NULLS FIRST], false + +(473) Scan parquet +Output [2]: [d_date_sk#93, d_year#94] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(d_year, [2000,2001,2002,2003]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(438) InputAdapter +Input [2]: [d_date_sk#93, d_year#94] +Arguments: [#93, #94] + +(439) NativeFilter +Input [2]: [#93#93, #94#94] +Condition : (d_year#94 IN (2000,2001,2002,2003) AND isnotnull(d_date_sk#93)) + +(440) NativeProject +Output [1]: [d_date_sk#93] +Input [2]: [#93#93, #94#94] + +(441) NativeShuffleExchange +Input [1]: [d_date_sk#93] +Arguments: hashpartitioning(d_date_sk#93, 100), ENSURE_REQUIREMENTS, [plan_id=47] + +(442) ShuffleQueryStage +Output [1]: [d_date_sk#93] +Arguments: X + +(443) AQEShuffleRead +Input [1]: [d_date_sk#93] +Arguments: coalesced + +(444) InputAdapter +Input [1]: [d_date_sk#93] + +(445) NativeSort +Input [1]: [d_date_sk#93] +Arguments: [d_date_sk#93 ASC NULLS FIRST], false + +(446) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#88] +Right keys [1]: [d_date_sk#93] +Join type: Inner +Join condition: None + +(447) NativeProject +Output [3]: [ss_quantity#90, ss_sales_price#91, c_customer_sk#92] +Input [5]: [ss_sold_date_sk#88, ss_quantity#90, ss_sales_price#91, c_customer_sk#92, d_date_sk#93] + +(448) NativeProject +Output [2]: [c_customer_sk#92 AS c_customer_sk#92, (cast(ss_quantity#90 as decimal(10,0)) * ss_sales_price#91) AS _c1#95] +Input [3]: [ss_quantity#90, ss_sales_price#91, c_customer_sk#92] + +(449) NativeHashAggregate +Input [2]: [c_customer_sk#92, _c1#95] +Keys [1]: [c_customer_sk#92] +Functions [1]: [partial_sum(_c1#95)] +Aggregate Attributes [2]: [sum#96, isEmpty#97] +Results [2]: [c_customer_sk#92, #15#15] + +(450) NativeShuffleExchange +Input [2]: [c_customer_sk#92, #15#15] +Arguments: hashpartitioning(c_customer_sk#92, 100), ENSURE_REQUIREMENTS, [plan_id=48] + +(451) ShuffleQueryStage +Output [2]: [c_customer_sk#92, #15#15] +Arguments: X + +(452) AQEShuffleRead +Input [2]: [c_customer_sk#92, #15#15] +Arguments: coalesced + +(453) InputAdapter +Input [2]: [c_customer_sk#92, #15#15] + +(454) NativeHashAggregate +Input [2]: [c_customer_sk#92, #15#15] +Keys [1]: [c_customer_sk#92] +Functions [1]: [sum((cast(ss_quantity#90 as decimal(10,0)) * ss_sales_price#91))] +Aggregate Attributes [1]: [sum((cast(ss_quantity#90 as decimal(10,0)) * ss_sales_price#91))#98] +Results [2]: [c_customer_sk#92, sum((cast(ss_quantity#90 as decimal(10,0)) * ss_sales_price#91))#98] + +(455) NativeProject +Output [1]: [sum((cast(ss_quantity#90 as decimal(10,0)) * ss_sales_price#91))#98 AS csales#99] +Input [2]: [c_customer_sk#92, sum((cast(ss_quantity#90 as decimal(10,0)) * ss_sales_price#91))#98] + +(456) NativeHashAggregate +Input [1]: [csales#99] +Keys: [] +Functions [1]: [partial_max(csales#99)] +Aggregate Attributes [1]: [max#100] +Results [1]: [#15#15] + +(457) NativeShuffleExchange +Input [1]: [#15#15] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=49] + +(458) ShuffleQueryStage +Output [1]: [#15#15] +Arguments: X + +(459) NativeHashAggregate +Input [1]: [#15#15] +Keys: [] +Functions [1]: [max(csales#99)] +Aggregate Attributes [1]: [max(csales#99)#101] +Results [1]: [max(csales#99)#101] + +(460) NativeProject +Output [1]: [max(csales#99)#101 AS tpcds_cmax#102] +Input [1]: [max(csales#99)#101] + +(461) Scan parquet +Output [4]: [ss_sold_date_sk#88, ss_customer_sk#89, ss_quantity#90, ss_sales_price#91] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(462) Filter +Input [4]: [ss_sold_date_sk#88, ss_customer_sk#89, ss_quantity#90, ss_sales_price#91] +Condition : (isnotnull(ss_customer_sk#89) AND isnotnull(ss_sold_date_sk#88)) + +(463) Exchange +Input [4]: [ss_sold_date_sk#88, ss_customer_sk#89, ss_quantity#90, ss_sales_price#91] +Arguments: hashpartitioning(ss_customer_sk#89, 100), ENSURE_REQUIREMENTS, [plan_id=50] + +(464) Sort +Input [4]: [ss_sold_date_sk#88, ss_customer_sk#89, ss_quantity#90, ss_sales_price#91] +Arguments: [ss_customer_sk#89 ASC NULLS FIRST], false, 0 + +(465) Scan parquet +Output [1]: [c_customer_sk#92] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk)] +ReadSchema: struct + +(466) Filter +Input [1]: [c_customer_sk#92] +Condition : isnotnull(c_customer_sk#92) + +(467) Exchange +Input [1]: [c_customer_sk#92] +Arguments: hashpartitioning(c_customer_sk#92, 100), ENSURE_REQUIREMENTS, [plan_id=51] + +(468) Sort +Input [1]: [c_customer_sk#92] +Arguments: [c_customer_sk#92 ASC NULLS FIRST], false, 0 + +(469) SortMergeJoin +Left keys [1]: [ss_customer_sk#89] +Right keys [1]: [c_customer_sk#92] +Join type: Inner +Join condition: None + +(470) Project +Output [4]: [ss_sold_date_sk#88, ss_quantity#90, ss_sales_price#91, c_customer_sk#92] +Input [5]: [ss_sold_date_sk#88, ss_customer_sk#89, ss_quantity#90, ss_sales_price#91, c_customer_sk#92] + +(471) Exchange +Input [4]: [ss_sold_date_sk#88, ss_quantity#90, ss_sales_price#91, c_customer_sk#92] +Arguments: hashpartitioning(ss_sold_date_sk#88, 100), ENSURE_REQUIREMENTS, [plan_id=52] + +(472) Sort +Input [4]: [ss_sold_date_sk#88, ss_quantity#90, ss_sales_price#91, c_customer_sk#92] +Arguments: [ss_sold_date_sk#88 ASC NULLS FIRST], false, 0 + +(473) Scan parquet +Output [2]: [d_date_sk#93, d_year#94] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(d_year, [2000,2001,2002,2003]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(474) Filter +Input [2]: [d_date_sk#93, d_year#94] +Condition : (d_year#94 IN (2000,2001,2002,2003) AND isnotnull(d_date_sk#93)) + +(475) Project +Output [1]: [d_date_sk#93] +Input [2]: [d_date_sk#93, d_year#94] + +(476) Exchange +Input [1]: [d_date_sk#93] +Arguments: hashpartitioning(d_date_sk#93, 100), ENSURE_REQUIREMENTS, [plan_id=53] + +(477) Sort +Input [1]: [d_date_sk#93] +Arguments: [d_date_sk#93 ASC NULLS FIRST], false, 0 + +(478) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#88] +Right keys [1]: [d_date_sk#93] +Join type: Inner +Join condition: None + +(479) Project +Output [3]: [ss_quantity#90, ss_sales_price#91, c_customer_sk#92] +Input [5]: [ss_sold_date_sk#88, ss_quantity#90, ss_sales_price#91, c_customer_sk#92, d_date_sk#93] + +(480) HashAggregate +Input [3]: [ss_quantity#90, ss_sales_price#91, c_customer_sk#92] +Keys [1]: [c_customer_sk#92] +Functions [1]: [partial_sum((cast(ss_quantity#90 as decimal(10,0)) * ss_sales_price#91))] +Aggregate Attributes [2]: [sum#96, isEmpty#97] +Results [3]: [c_customer_sk#92, sum#103, isEmpty#104] + +(481) Exchange +Input [3]: [c_customer_sk#92, sum#103, isEmpty#104] +Arguments: hashpartitioning(c_customer_sk#92, 100), ENSURE_REQUIREMENTS, [plan_id=54] + +(482) HashAggregate +Input [3]: [c_customer_sk#92, sum#103, isEmpty#104] +Keys [1]: [c_customer_sk#92] +Functions [1]: [sum((cast(ss_quantity#90 as decimal(10,0)) * ss_sales_price#91))] +Aggregate Attributes [1]: [sum((cast(ss_quantity#90 as decimal(10,0)) * ss_sales_price#91))#98] +Results [1]: [sum((cast(ss_quantity#90 as decimal(10,0)) * ss_sales_price#91))#98 AS csales#99] + +(483) HashAggregate +Input [1]: [csales#99] +Keys: [] +Functions [1]: [partial_max(csales#99)] +Aggregate Attributes [1]: [max#100] +Results [1]: [max#105] + +(484) Exchange +Input [1]: [max#105] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=55] + +(485) HashAggregate +Input [1]: [max#105] +Keys: [] +Functions [1]: [max(csales#99)] +Aggregate Attributes [1]: [max(csales#99)#101] +Results [1]: [max(csales#99)#101 AS tpcds_cmax#102] + +(486) AdaptiveSparkPlan +Output [1]: [tpcds_cmax#102] +Arguments: isFinalPlan=true + +Subquery:2 Hosting operator id = 108 Hosting Expression = ReusedSubquery Subquery subquery#28, [id=#29] + +Subquery:3 Hosting operator id = 191 Hosting Expression = ReusedSubquery Subquery subquery#28, [id=#29] + +Subquery:4 Hosting operator id = 219 Hosting Expression = ReusedSubquery Subquery subquery#28, [id=#29] + + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q24a.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q24a.txt new file mode 100644 index 000000000..b0fdbe803 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q24a.txt @@ -0,0 +1,1421 @@ +== Physical Plan == +AdaptiveSparkPlan (153) ++- == Final Plan == + NativeSort (100) + +- InputAdapter (99) + +- AQEShuffleRead (98) + +- ShuffleQueryStage (97), Statistics(X) + +- NativeShuffleExchange (96) + +- NativeFilter (95) + +- NativeProject (94) + +- NativeHashAggregate (93) + +- InputAdapter (92) + +- AQEShuffleRead (91) + +- ShuffleQueryStage (90), Statistics(X) + +- NativeShuffleExchange (89) + +- NativeHashAggregate (88) + +- NativeProject (87) + +- NativeHashAggregate (86) + +- InputAdapter (85) + +- AQEShuffleRead (84) + +- ShuffleQueryStage (83), Statistics(X) + +- NativeShuffleExchange (82) + +- NativeHashAggregate (81) + +- NativeProject (80) + +- NativeProject (79) + +- NativeSortMergeJoin Inner (78) + :- NativeSort (69) + : +- InputAdapter (68) + : +- AQEShuffleRead (67) + : +- ShuffleQueryStage (66), Statistics(X) + : +- NativeShuffleExchange (65) + : +- NativeProject (64) + : +- NativeSortMergeJoin Inner (63) + : :- NativeSort (54) + : : +- InputAdapter (53) + : : +- AQEShuffleRead (52) + : : +- ShuffleQueryStage (51), Statistics(X) + : : +- NativeShuffleExchange (50) + : : +- NativeProject (49) + : : +- NativeSortMergeJoin Inner (48) + : : :- NativeSort (39) + : : : +- InputAdapter (38) + : : : +- AQEShuffleRead (37) + : : : +- ShuffleQueryStage (36), Statistics(X) + : : : +- NativeShuffleExchange (35) + : : : +- NativeProject (34) + : : : +- NativeSortMergeJoin Inner (33) + : : : :- NativeSort (23) + : : : : +- InputAdapter (22) + : : : : +- AQEShuffleRead (21) + : : : : +- ShuffleQueryStage (20), Statistics(X) + : : : : +- NativeShuffleExchange (19) + : : : : +- NativeProject (18) + : : : : +- NativeSortMergeJoin Inner (17) + : : : : :- NativeSort (8) + : : : : : +- InputAdapter (7) + : : : : : +- AQEShuffleRead (6) + : : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : : +- NativeShuffleExchange (4) + : : : : : +- NativeFilter (3) + : : : : : +- InputAdapter (2) + : : : : : +- NativeParquetScan (1) + : : : : +- NativeSort (16) + : : : : +- InputAdapter (15) + : : : : +- AQEShuffleRead (14) + : : : : +- ShuffleQueryStage (13), Statistics(X) + : : : : +- NativeShuffleExchange (12) + : : : : +- NativeFilter (11) + : : : : +- InputAdapter (10) + : : : : +- NativeParquetScan (9) + : : : +- NativeSort (32) + : : : +- InputAdapter (31) + : : : +- AQEShuffleRead (30) + : : : +- ShuffleQueryStage (29), Statistics(X) + : : : +- NativeShuffleExchange (28) + : : : +- NativeProject (27) + : : : +- NativeFilter (26) + : : : +- InputAdapter (25) + : : : +- NativeParquetScan (24) + : : +- NativeSort (47) + : : +- InputAdapter (46) + : : +- AQEShuffleRead (45) + : : +- ShuffleQueryStage (44), Statistics(X) + : : +- NativeShuffleExchange (43) + : : +- NativeFilter (42) + : : +- InputAdapter (41) + : : +- NativeParquetScan (40) + : +- NativeSort (62) + : +- InputAdapter (61) + : +- AQEShuffleRead (60) + : +- ShuffleQueryStage (59), Statistics(X) + : +- NativeShuffleExchange (58) + : +- NativeFilter (57) + : +- InputAdapter (56) + : +- NativeParquetScan (55) + +- NativeSort (77) + +- InputAdapter (76) + +- AQEShuffleRead (75) + +- ShuffleQueryStage (74), Statistics(X) + +- NativeShuffleExchange (73) + +- NativeFilter (72) + +- InputAdapter (71) + +- NativeParquetScan (70) ++- == Initial Plan == + Sort (152) + +- Exchange (151) + +- Filter (150) + +- HashAggregate (149) + +- Exchange (148) + +- HashAggregate (147) + +- HashAggregate (146) + +- Exchange (145) + +- HashAggregate (144) + +- Project (143) + +- SortMergeJoin Inner (142) + :- Sort (137) + : +- Exchange (136) + : +- Project (135) + : +- SortMergeJoin Inner (134) + : :- Sort (129) + : : +- Exchange (128) + : : +- Project (127) + : : +- SortMergeJoin Inner (126) + : : :- Sort (121) + : : : +- Exchange (120) + : : : +- Project (119) + : : : +- SortMergeJoin Inner (118) + : : : :- Sort (112) + : : : : +- Exchange (111) + : : : : +- Project (110) + : : : : +- SortMergeJoin Inner (109) + : : : : :- Sort (104) + : : : : : +- Exchange (103) + : : : : : +- Filter (102) + : : : : : +- Scan parquet (101) + : : : : +- Sort (108) + : : : : +- Exchange (107) + : : : : +- Filter (106) + : : : : +- Scan parquet (105) + : : : +- Sort (117) + : : : +- Exchange (116) + : : : +- Project (115) + : : : +- Filter (114) + : : : +- Scan parquet (113) + : : +- Sort (125) + : : +- Exchange (124) + : : +- Filter (123) + : : +- Scan parquet (122) + : +- Sort (133) + : +- Exchange (132) + : +- Filter (131) + : +- Scan parquet (130) + +- Sort (141) + +- Exchange (140) + +- Filter (139) + +- Scan parquet (138) + + +(101) Scan parquet +Output [5]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_ticket_number), IsNotNull(ss_item_sk), IsNotNull(ss_store_sk), IsNotNull(ss_customer_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [5]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5] +Arguments: [#1, #2, #3, #4, #5] + +(3) NativeFilter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Condition : (((isnotnull(ss_ticket_number#4) AND isnotnull(ss_item_sk#1)) AND isnotnull(ss_store_sk#3)) AND isnotnull(ss_customer_sk#2)) + +(4) NativeShuffleExchange +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: hashpartitioning(ss_ticket_number#4, ss_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: X + +(6) AQEShuffleRead +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: coalesced + +(7) InputAdapter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] + +(8) NativeSort +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: [ss_ticket_number#4 ASC NULLS FIRST, ss_item_sk#1 ASC NULLS FIRST], false + +(105) Scan parquet +Output [2]: [sr_item_sk#6, sr_ticket_number#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_ticket_number), IsNotNull(sr_item_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [sr_item_sk#6, sr_ticket_number#7] +Arguments: [#6, #7] + +(11) NativeFilter +Input [2]: [#6#6, #7#7] +Condition : (isnotnull(sr_ticket_number#7) AND isnotnull(sr_item_sk#6)) + +(12) NativeShuffleExchange +Input [2]: [#6#6, #7#7] +Arguments: hashpartitioning(sr_ticket_number#7, sr_item_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [2]: [#6#6, #7#7] +Arguments: X + +(14) AQEShuffleRead +Input [2]: [#6#6, #7#7] +Arguments: coalesced + +(15) InputAdapter +Input [2]: [#6#6, #7#7] + +(16) NativeSort +Input [2]: [#6#6, #7#7] +Arguments: [sr_ticket_number#7 ASC NULLS FIRST, sr_item_sk#6 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [2]: [ss_ticket_number#4, ss_item_sk#1] +Right keys [2]: [sr_ticket_number#7, sr_item_sk#6] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [4]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5] +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] + +(19) NativeShuffleExchange +Input [4]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5] +Arguments: hashpartitioning(ss_store_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [4]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5] +Arguments: X + +(21) AQEShuffleRead +Input [4]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5] +Arguments: coalesced + +(22) InputAdapter +Input [4]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5] + +(23) NativeSort +Input [4]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5] +Arguments: [ss_store_sk#3 ASC NULLS FIRST], false + +(113) Scan parquet +Output [5]: [s_store_sk#8, s_store_name#9, s_market_id#10, s_state#11, s_zip#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_market_id), EqualTo(s_market_id,8), IsNotNull(s_store_sk), IsNotNull(s_zip)] +ReadSchema: struct + +(25) InputAdapter +Input [5]: [s_store_sk#8, s_store_name#9, s_market_id#10, s_state#11, s_zip#12] +Arguments: [#8, #9, #10, #11, #12] + +(26) NativeFilter +Input [5]: [#8#8, #9#9, #10#10, #11#11, #12#12] +Condition : (((isnotnull(s_market_id#10) AND (s_market_id#10 = 8)) AND isnotnull(s_store_sk#8)) AND isnotnull(s_zip#12)) + +(27) NativeProject +Output [4]: [s_store_sk#8, s_store_name#9, s_state#11, s_zip#12] +Input [5]: [#8#8, #9#9, #10#10, #11#11, #12#12] + +(28) NativeShuffleExchange +Input [4]: [s_store_sk#8, s_store_name#9, s_state#11, s_zip#12] +Arguments: hashpartitioning(s_store_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(29) ShuffleQueryStage +Output [4]: [s_store_sk#8, s_store_name#9, s_state#11, s_zip#12] +Arguments: X + +(30) AQEShuffleRead +Input [4]: [s_store_sk#8, s_store_name#9, s_state#11, s_zip#12] +Arguments: coalesced + +(31) InputAdapter +Input [4]: [s_store_sk#8, s_store_name#9, s_state#11, s_zip#12] + +(32) NativeSort +Input [4]: [s_store_sk#8, s_store_name#9, s_state#11, s_zip#12] +Arguments: [s_store_sk#8 ASC NULLS FIRST], false + +(33) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#3] +Right keys [1]: [s_store_sk#8] +Join type: Inner +Join condition: None + +(34) NativeProject +Output [6]: [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12] +Input [8]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5, s_store_sk#8, s_store_name#9, s_state#11, s_zip#12] + +(35) NativeShuffleExchange +Input [6]: [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12] +Arguments: hashpartitioning(ss_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(36) ShuffleQueryStage +Output [6]: [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12] +Arguments: X + +(37) AQEShuffleRead +Input [6]: [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12] +Arguments: coalesced + +(38) InputAdapter +Input [6]: [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12] + +(39) NativeSort +Input [6]: [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12] +Arguments: [ss_item_sk#1 ASC NULLS FIRST], false + +(122) Scan parquet +Output [6]: [i_item_sk#13, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_color), EqualTo(i_color,pale), IsNotNull(i_item_sk)] +ReadSchema: struct + +(41) InputAdapter +Input [6]: [i_item_sk#13, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] +Arguments: [#13, #14, #15, #16, #17, #18] + +(42) NativeFilter +Input [6]: [#13#13, #14#14, #15#15, #16#16, #17#17, #18#18] +Condition : ((isnotnull(i_color#16) AND (i_color#16 = pale)) AND isnotnull(i_item_sk#13)) + +(43) NativeShuffleExchange +Input [6]: [#13#13, #14#14, #15#15, #16#16, #17#17, #18#18] +Arguments: hashpartitioning(i_item_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) ShuffleQueryStage +Output [6]: [#13#13, #14#14, #15#15, #16#16, #17#17, #18#18] +Arguments: X + +(45) AQEShuffleRead +Input [6]: [#13#13, #14#14, #15#15, #16#16, #17#17, #18#18] +Arguments: coalesced + +(46) InputAdapter +Input [6]: [#13#13, #14#14, #15#15, #16#16, #17#17, #18#18] + +(47) NativeSort +Input [6]: [#13#13, #14#14, #15#15, #16#16, #17#17, #18#18] +Arguments: [i_item_sk#13 ASC NULLS FIRST], false + +(48) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#1] +Right keys [1]: [i_item_sk#13] +Join type: Inner +Join condition: None + +(49) NativeProject +Output [10]: [ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] +Input [12]: [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, #13#13, #14#14, #15#15, #16#16, #17#17, #18#18] + +(50) NativeShuffleExchange +Input [10]: [ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] +Arguments: hashpartitioning(ss_customer_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(51) ShuffleQueryStage +Output [10]: [ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] +Arguments: X + +(52) AQEShuffleRead +Input [10]: [ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] +Arguments: coalesced + +(53) InputAdapter +Input [10]: [ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] + +(54) NativeSort +Input [10]: [ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] +Arguments: [ss_customer_sk#2 ASC NULLS FIRST], false + +(130) Scan parquet +Output [4]: [c_customer_sk#19, c_first_name#20, c_last_name#21, c_birth_country#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_birth_country)] +ReadSchema: struct + +(56) InputAdapter +Input [4]: [c_customer_sk#19, c_first_name#20, c_last_name#21, c_birth_country#22] +Arguments: [#19, #20, #21, #22] + +(57) NativeFilter +Input [4]: [#19#19, #20#20, #21#21, #22#22] +Condition : (isnotnull(c_customer_sk#19) AND isnotnull(c_birth_country#22)) + +(58) NativeShuffleExchange +Input [4]: [#19#19, #20#20, #21#21, #22#22] +Arguments: hashpartitioning(c_customer_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(59) ShuffleQueryStage +Output [4]: [#19#19, #20#20, #21#21, #22#22] +Arguments: X + +(60) AQEShuffleRead +Input [4]: [#19#19, #20#20, #21#21, #22#22] +Arguments: coalesced + +(61) InputAdapter +Input [4]: [#19#19, #20#20, #21#21, #22#22] + +(62) NativeSort +Input [4]: [#19#19, #20#20, #21#21, #22#22] +Arguments: [c_customer_sk#19 ASC NULLS FIRST], false + +(63) NativeSortMergeJoin +Left keys [1]: [ss_customer_sk#2] +Right keys [1]: [c_customer_sk#19] +Join type: Inner +Join condition: None + +(64) NativeProject +Output [12]: [ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_first_name#20, c_last_name#21, c_birth_country#22] +Input [14]: [ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, #19#19, #20#20, #21#21, #22#22] + +(65) NativeShuffleExchange +Input [12]: [ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_first_name#20, c_last_name#21, c_birth_country#22] +Arguments: hashpartitioning(c_birth_country#22, s_zip#12, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(66) ShuffleQueryStage +Output [12]: [ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_first_name#20, c_last_name#21, c_birth_country#22] +Arguments: X + +(67) AQEShuffleRead +Input [12]: [ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_first_name#20, c_last_name#21, c_birth_country#22] +Arguments: coalesced + +(68) InputAdapter +Input [12]: [ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_first_name#20, c_last_name#21, c_birth_country#22] + +(69) NativeSort +Input [12]: [ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_first_name#20, c_last_name#21, c_birth_country#22] +Arguments: [c_birth_country#22 ASC NULLS FIRST, s_zip#12 ASC NULLS FIRST], false + +(138) Scan parquet +Output [3]: [ca_state#23, ca_zip#24, ca_country#25] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_country), IsNotNull(ca_zip)] +ReadSchema: struct + +(71) InputAdapter +Input [3]: [ca_state#23, ca_zip#24, ca_country#25] +Arguments: [#23, #24, #25] + +(72) NativeFilter +Input [3]: [#23#23, #24#24, #25#25] +Condition : (isnotnull(ca_country#25) AND isnotnull(ca_zip#24)) + +(73) NativeShuffleExchange +Input [3]: [#23#23, #24#24, #25#25] +Arguments: hashpartitioning(upper(ca_country#25), ca_zip#24, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(74) ShuffleQueryStage +Output [3]: [#23#23, #24#24, #25#25] +Arguments: X + +(75) AQEShuffleRead +Input [3]: [#23#23, #24#24, #25#25] +Arguments: coalesced + +(76) InputAdapter +Input [3]: [#23#23, #24#24, #25#25] + +(77) NativeSort +Input [3]: [#23#23, #24#24, #25#25] +Arguments: [upper(ca_country#25) ASC NULLS FIRST, ca_zip#24 ASC NULLS FIRST], false + +(78) NativeSortMergeJoin +Left keys [2]: [c_birth_country#22, s_zip#12] +Right keys [2]: [upper(ca_country#25), ca_zip#24] +Join type: Inner +Join condition: None + +(79) NativeProject +Output [11]: [ss_net_paid#5, s_store_name#9, s_state#11, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_first_name#20, c_last_name#21, ca_state#23] +Input [15]: [ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_first_name#20, c_last_name#21, c_birth_country#22, #23#23, #24#24, #25#25] + +(80) NativeProject +Output [11]: [c_last_name#21 AS c_last_name#21, c_first_name#20 AS c_first_name#20, s_store_name#9 AS s_store_name#9, ca_state#23 AS ca_state#23, s_state#11 AS s_state#11, i_color#16 AS i_color#16, i_current_price#14 AS i_current_price#14, i_manager_id#18 AS i_manager_id#18, i_units#17 AS i_units#17, i_size#15 AS i_size#15, UnscaledValue(ss_net_paid#5) AS _c10#26] +Input [11]: [ss_net_paid#5, s_store_name#9, s_state#11, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_first_name#20, c_last_name#21, ca_state#23] + +(81) NativeHashAggregate +Input [11]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15, _c10#26] +Keys [10]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15] +Functions [1]: [partial_sum(_c10#26)] +Aggregate Attributes [1]: [sum#27] +Results [11]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15, #28#28] + +(82) NativeShuffleExchange +Input [11]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15, #28#28] +Arguments: hashpartitioning(c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(83) ShuffleQueryStage +Output [11]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15, #28#28] +Arguments: X + +(84) AQEShuffleRead +Input [11]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15, #28#28] +Arguments: coalesced + +(85) InputAdapter +Input [11]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15, #28#28] + +(86) NativeHashAggregate +Input [11]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15, #28#28] +Keys [10]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15] +Functions [1]: [sum(UnscaledValue(ss_net_paid#5))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_net_paid#5))#29] +Results [11]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15, sum(UnscaledValue(ss_net_paid#5))#29] + +(87) NativeProject +Output [4]: [c_last_name#21, c_first_name#20, s_store_name#9, MakeDecimal(sum(UnscaledValue(ss_net_paid#5))#29,17,2) AS netpaid#30] +Input [11]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15, sum(UnscaledValue(ss_net_paid#5))#29] + +(88) NativeHashAggregate +Input [4]: [c_last_name#21, c_first_name#20, s_store_name#9, netpaid#30] +Keys [3]: [c_last_name#21, c_first_name#20, s_store_name#9] +Functions [1]: [partial_sum(netpaid#30)] +Aggregate Attributes [2]: [sum#31, isEmpty#32] +Results [4]: [c_last_name#21, c_first_name#20, s_store_name#9, #28#28] + +(89) NativeShuffleExchange +Input [4]: [c_last_name#21, c_first_name#20, s_store_name#9, #28#28] +Arguments: hashpartitioning(c_last_name#21, c_first_name#20, s_store_name#9, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(90) ShuffleQueryStage +Output [4]: [c_last_name#21, c_first_name#20, s_store_name#9, #28#28] +Arguments: X + +(91) AQEShuffleRead +Input [4]: [c_last_name#21, c_first_name#20, s_store_name#9, #28#28] +Arguments: coalesced + +(92) InputAdapter +Input [4]: [c_last_name#21, c_first_name#20, s_store_name#9, #28#28] + +(93) NativeHashAggregate +Input [4]: [c_last_name#21, c_first_name#20, s_store_name#9, #28#28] +Keys [3]: [c_last_name#21, c_first_name#20, s_store_name#9] +Functions [1]: [sum(netpaid#30)] +Aggregate Attributes [1]: [sum(netpaid#30)#33] +Results [4]: [c_last_name#21, c_first_name#20, s_store_name#9, sum(netpaid#30)#33] + +(94) NativeProject +Output [4]: [c_last_name#21, c_first_name#20, s_store_name#9, sum(netpaid#30)#33 AS paid#34] +Input [4]: [c_last_name#21, c_first_name#20, s_store_name#9, sum(netpaid#30)#33] + +(95) NativeFilter +Input [4]: [c_last_name#21, c_first_name#20, s_store_name#9, paid#34] +Condition : (isnotnull(paid#34) AND (cast(paid#34 as decimal(33,8)) > cast(Subquery subquery#35, [id=#36] as decimal(33,8)))) + +(96) NativeShuffleExchange +Input [4]: [c_last_name#21, c_first_name#20, s_store_name#9, paid#34] +Arguments: rangepartitioning(c_last_name#21 ASC NULLS FIRST, c_first_name#20 ASC NULLS FIRST, s_store_name#9 ASC NULLS FIRST, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(97) ShuffleQueryStage +Output [4]: [c_last_name#21, c_first_name#20, s_store_name#9, paid#34] +Arguments: X + +(98) AQEShuffleRead +Input [4]: [c_last_name#21, c_first_name#20, s_store_name#9, paid#34] +Arguments: coalesced + +(99) InputAdapter +Input [4]: [c_last_name#21, c_first_name#20, s_store_name#9, paid#34] + +(100) NativeSort +Input [4]: [c_last_name#21, c_first_name#20, s_store_name#9, paid#34] +Arguments: [c_last_name#21 ASC NULLS FIRST, c_first_name#20 ASC NULLS FIRST, s_store_name#9 ASC NULLS FIRST], true + +(101) Scan parquet +Output [5]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_ticket_number), IsNotNull(ss_item_sk), IsNotNull(ss_store_sk), IsNotNull(ss_customer_sk)] +ReadSchema: struct + +(102) Filter +Input [5]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5] +Condition : (((isnotnull(ss_ticket_number#4) AND isnotnull(ss_item_sk#1)) AND isnotnull(ss_store_sk#3)) AND isnotnull(ss_customer_sk#2)) + +(103) Exchange +Input [5]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5] +Arguments: hashpartitioning(ss_ticket_number#4, ss_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(104) Sort +Input [5]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5] +Arguments: [ss_ticket_number#4 ASC NULLS FIRST, ss_item_sk#1 ASC NULLS FIRST], false, 0 + +(105) Scan parquet +Output [2]: [sr_item_sk#6, sr_ticket_number#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_ticket_number), IsNotNull(sr_item_sk)] +ReadSchema: struct + +(106) Filter +Input [2]: [sr_item_sk#6, sr_ticket_number#7] +Condition : (isnotnull(sr_ticket_number#7) AND isnotnull(sr_item_sk#6)) + +(107) Exchange +Input [2]: [sr_item_sk#6, sr_ticket_number#7] +Arguments: hashpartitioning(sr_ticket_number#7, sr_item_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(108) Sort +Input [2]: [sr_item_sk#6, sr_ticket_number#7] +Arguments: [sr_ticket_number#7 ASC NULLS FIRST, sr_item_sk#6 ASC NULLS FIRST], false, 0 + +(109) SortMergeJoin +Left keys [2]: [ss_ticket_number#4, ss_item_sk#1] +Right keys [2]: [sr_ticket_number#7, sr_item_sk#6] +Join type: Inner +Join condition: None + +(110) Project +Output [4]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5] +Input [7]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5, sr_item_sk#6, sr_ticket_number#7] + +(111) Exchange +Input [4]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5] +Arguments: hashpartitioning(ss_store_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(112) Sort +Input [4]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5] +Arguments: [ss_store_sk#3 ASC NULLS FIRST], false, 0 + +(113) Scan parquet +Output [5]: [s_store_sk#8, s_store_name#9, s_market_id#10, s_state#11, s_zip#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_market_id), EqualTo(s_market_id,8), IsNotNull(s_store_sk), IsNotNull(s_zip)] +ReadSchema: struct + +(114) Filter +Input [5]: [s_store_sk#8, s_store_name#9, s_market_id#10, s_state#11, s_zip#12] +Condition : (((isnotnull(s_market_id#10) AND (s_market_id#10 = 8)) AND isnotnull(s_store_sk#8)) AND isnotnull(s_zip#12)) + +(115) Project +Output [4]: [s_store_sk#8, s_store_name#9, s_state#11, s_zip#12] +Input [5]: [s_store_sk#8, s_store_name#9, s_market_id#10, s_state#11, s_zip#12] + +(116) Exchange +Input [4]: [s_store_sk#8, s_store_name#9, s_state#11, s_zip#12] +Arguments: hashpartitioning(s_store_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(117) Sort +Input [4]: [s_store_sk#8, s_store_name#9, s_state#11, s_zip#12] +Arguments: [s_store_sk#8 ASC NULLS FIRST], false, 0 + +(118) SortMergeJoin +Left keys [1]: [ss_store_sk#3] +Right keys [1]: [s_store_sk#8] +Join type: Inner +Join condition: None + +(119) Project +Output [6]: [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12] +Input [8]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5, s_store_sk#8, s_store_name#9, s_state#11, s_zip#12] + +(120) Exchange +Input [6]: [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12] +Arguments: hashpartitioning(ss_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(121) Sort +Input [6]: [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12] +Arguments: [ss_item_sk#1 ASC NULLS FIRST], false, 0 + +(122) Scan parquet +Output [6]: [i_item_sk#13, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_color), EqualTo(i_color,pale), IsNotNull(i_item_sk)] +ReadSchema: struct + +(123) Filter +Input [6]: [i_item_sk#13, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] +Condition : ((isnotnull(i_color#16) AND (i_color#16 = pale)) AND isnotnull(i_item_sk#13)) + +(124) Exchange +Input [6]: [i_item_sk#13, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] +Arguments: hashpartitioning(i_item_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(125) Sort +Input [6]: [i_item_sk#13, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] +Arguments: [i_item_sk#13 ASC NULLS FIRST], false, 0 + +(126) SortMergeJoin +Left keys [1]: [ss_item_sk#1] +Right keys [1]: [i_item_sk#13] +Join type: Inner +Join condition: None + +(127) Project +Output [10]: [ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] +Input [12]: [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_item_sk#13, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] + +(128) Exchange +Input [10]: [ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] +Arguments: hashpartitioning(ss_customer_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(129) Sort +Input [10]: [ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] +Arguments: [ss_customer_sk#2 ASC NULLS FIRST], false, 0 + +(130) Scan parquet +Output [4]: [c_customer_sk#19, c_first_name#20, c_last_name#21, c_birth_country#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_birth_country)] +ReadSchema: struct + +(131) Filter +Input [4]: [c_customer_sk#19, c_first_name#20, c_last_name#21, c_birth_country#22] +Condition : (isnotnull(c_customer_sk#19) AND isnotnull(c_birth_country#22)) + +(132) Exchange +Input [4]: [c_customer_sk#19, c_first_name#20, c_last_name#21, c_birth_country#22] +Arguments: hashpartitioning(c_customer_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(133) Sort +Input [4]: [c_customer_sk#19, c_first_name#20, c_last_name#21, c_birth_country#22] +Arguments: [c_customer_sk#19 ASC NULLS FIRST], false, 0 + +(134) SortMergeJoin +Left keys [1]: [ss_customer_sk#2] +Right keys [1]: [c_customer_sk#19] +Join type: Inner +Join condition: None + +(135) Project +Output [12]: [ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_first_name#20, c_last_name#21, c_birth_country#22] +Input [14]: [ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_customer_sk#19, c_first_name#20, c_last_name#21, c_birth_country#22] + +(136) Exchange +Input [12]: [ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_first_name#20, c_last_name#21, c_birth_country#22] +Arguments: hashpartitioning(c_birth_country#22, s_zip#12, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(137) Sort +Input [12]: [ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_first_name#20, c_last_name#21, c_birth_country#22] +Arguments: [c_birth_country#22 ASC NULLS FIRST, s_zip#12 ASC NULLS FIRST], false, 0 + +(138) Scan parquet +Output [3]: [ca_state#23, ca_zip#24, ca_country#25] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_country), IsNotNull(ca_zip)] +ReadSchema: struct + +(139) Filter +Input [3]: [ca_state#23, ca_zip#24, ca_country#25] +Condition : (isnotnull(ca_country#25) AND isnotnull(ca_zip#24)) + +(140) Exchange +Input [3]: [ca_state#23, ca_zip#24, ca_country#25] +Arguments: hashpartitioning(upper(ca_country#25), ca_zip#24, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(141) Sort +Input [3]: [ca_state#23, ca_zip#24, ca_country#25] +Arguments: [upper(ca_country#25) ASC NULLS FIRST, ca_zip#24 ASC NULLS FIRST], false, 0 + +(142) SortMergeJoin +Left keys [2]: [c_birth_country#22, s_zip#12] +Right keys [2]: [upper(ca_country#25), ca_zip#24] +Join type: Inner +Join condition: None + +(143) Project +Output [11]: [ss_net_paid#5, s_store_name#9, s_state#11, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_first_name#20, c_last_name#21, ca_state#23] +Input [15]: [ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_first_name#20, c_last_name#21, c_birth_country#22, ca_state#23, ca_zip#24, ca_country#25] + +(144) HashAggregate +Input [11]: [ss_net_paid#5, s_store_name#9, s_state#11, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_first_name#20, c_last_name#21, ca_state#23] +Keys [10]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15] +Functions [1]: [partial_sum(UnscaledValue(ss_net_paid#5))] +Aggregate Attributes [1]: [sum#27] +Results [11]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15, sum#37] + +(145) Exchange +Input [11]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15, sum#37] +Arguments: hashpartitioning(c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(146) HashAggregate +Input [11]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15, sum#37] +Keys [10]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15] +Functions [1]: [sum(UnscaledValue(ss_net_paid#5))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_net_paid#5))#29] +Results [4]: [c_last_name#21, c_first_name#20, s_store_name#9, MakeDecimal(sum(UnscaledValue(ss_net_paid#5))#29,17,2) AS netpaid#30] + +(147) HashAggregate +Input [4]: [c_last_name#21, c_first_name#20, s_store_name#9, netpaid#30] +Keys [3]: [c_last_name#21, c_first_name#20, s_store_name#9] +Functions [1]: [partial_sum(netpaid#30)] +Aggregate Attributes [2]: [sum#31, isEmpty#32] +Results [5]: [c_last_name#21, c_first_name#20, s_store_name#9, sum#38, isEmpty#39] + +(148) Exchange +Input [5]: [c_last_name#21, c_first_name#20, s_store_name#9, sum#38, isEmpty#39] +Arguments: hashpartitioning(c_last_name#21, c_first_name#20, s_store_name#9, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(149) HashAggregate +Input [5]: [c_last_name#21, c_first_name#20, s_store_name#9, sum#38, isEmpty#39] +Keys [3]: [c_last_name#21, c_first_name#20, s_store_name#9] +Functions [1]: [sum(netpaid#30)] +Aggregate Attributes [1]: [sum(netpaid#30)#33] +Results [4]: [c_last_name#21, c_first_name#20, s_store_name#9, sum(netpaid#30)#33 AS paid#34] + +(150) Filter +Input [4]: [c_last_name#21, c_first_name#20, s_store_name#9, paid#34] +Condition : (isnotnull(paid#34) AND (cast(paid#34 as decimal(33,8)) > cast(Subquery subquery#35, [id=#36] as decimal(33,8)))) + +(151) Exchange +Input [4]: [c_last_name#21, c_first_name#20, s_store_name#9, paid#34] +Arguments: rangepartitioning(c_last_name#21 ASC NULLS FIRST, c_first_name#20 ASC NULLS FIRST, s_store_name#9 ASC NULLS FIRST, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(152) Sort +Input [4]: [c_last_name#21, c_first_name#20, s_store_name#9, paid#34] +Arguments: [c_last_name#21 ASC NULLS FIRST, c_first_name#20 ASC NULLS FIRST, s_store_name#9 ASC NULLS FIRST], true, 0 + +(153) AdaptiveSparkPlan +Output [4]: [c_last_name#21, c_first_name#20, s_store_name#9, paid#34] +Arguments: isFinalPlan=true + +===== Subqueries ===== + +Subquery:1 Hosting operator id = 95 Hosting Expression = Subquery subquery#35, [id=#36] +AdaptiveSparkPlan (258) ++- == Final Plan == + NativeProject (208) + +- NativeHashAggregate (207) + +- ShuffleQueryStage (206), Statistics(X) + +- NativeShuffleExchange (205) + +- NativeHashAggregate (204) + +- NativeProject (203) + +- NativeHashAggregate (202) + +- InputAdapter (201) + +- AQEShuffleRead (200) + +- ShuffleQueryStage (199), Statistics(X) + +- NativeShuffleExchange (198) + +- NativeHashAggregate (197) + +- NativeProject (196) + +- NativeProject (195) + +- NativeSortMergeJoin Inner (194) + :- NativeSort (187) + : +- InputAdapter (186) + : +- AQEShuffleRead (185) + : +- ShuffleQueryStage (184), Statistics(X) + : +- NativeShuffleExchange (183) + : +- NativeProject (182) + : +- NativeSortMergeJoin Inner (181) + : :- NativeSort (174) + : : +- InputAdapter (173) + : : +- AQEShuffleRead (172) + : : +- ShuffleQueryStage (171), Statistics(X) + : : +- NativeShuffleExchange (170) + : : +- NativeProject (169) + : : +- NativeSortMergeJoin Inner (168) + : : :- NativeSort (159) + : : : +- InputAdapter (158) + : : : +- InputAdapter (157) + : : : +- AQEShuffleRead (156) + : : : +- ShuffleQueryStage (155), Statistics(X) + : : : +- ReusedExchange (154) + : : +- NativeSort (167) + : : +- InputAdapter (166) + : : +- AQEShuffleRead (165) + : : +- ShuffleQueryStage (164), Statistics(X) + : : +- NativeShuffleExchange (163) + : : +- NativeFilter (162) + : : +- InputAdapter (161) + : : +- NativeParquetScan (160) + : +- NativeSort (180) + : +- InputAdapter (179) + : +- InputAdapter (178) + : +- AQEShuffleRead (177) + : +- ShuffleQueryStage (176), Statistics(X) + : +- ReusedExchange (175) + +- NativeSort (193) + +- InputAdapter (192) + +- InputAdapter (191) + +- AQEShuffleRead (190) + +- ShuffleQueryStage (189), Statistics(X) + +- ReusedExchange (188) ++- == Initial Plan == + HashAggregate (257) + +- Exchange (256) + +- HashAggregate (255) + +- HashAggregate (254) + +- Exchange (253) + +- HashAggregate (252) + +- Project (251) + +- SortMergeJoin Inner (250) + :- Sort (245) + : +- Exchange (244) + : +- Project (243) + : +- SortMergeJoin Inner (242) + : :- Sort (237) + : : +- Exchange (236) + : : +- Project (235) + : : +- SortMergeJoin Inner (234) + : : :- Sort (229) + : : : +- Exchange (228) + : : : +- Project (227) + : : : +- SortMergeJoin Inner (226) + : : : :- Sort (220) + : : : : +- Exchange (219) + : : : : +- Project (218) + : : : : +- SortMergeJoin Inner (217) + : : : : :- Sort (212) + : : : : : +- Exchange (211) + : : : : : +- Filter (210) + : : : : : +- Scan parquet (209) + : : : : +- Sort (216) + : : : : +- Exchange (215) + : : : : +- Filter (214) + : : : : +- Scan parquet (213) + : : : +- Sort (225) + : : : +- Exchange (224) + : : : +- Project (223) + : : : +- Filter (222) + : : : +- Scan parquet (221) + : : +- Sort (233) + : : +- Exchange (232) + : : +- Filter (231) + : : +- Scan parquet (230) + : +- Sort (241) + : +- Exchange (240) + : +- Filter (239) + : +- Scan parquet (238) + +- Sort (249) + +- Exchange (248) + +- Filter (247) + +- Scan parquet (246) + + +(154) ReusedExchange [Reuses operator id: 35] +Output [6]: [ss_item_sk#40, ss_customer_sk#41, ss_net_paid#42, s_store_name#43, s_state#44, s_zip#45] + +(155) ShuffleQueryStage +Output [6]: [ss_item_sk#40, ss_customer_sk#41, ss_net_paid#42, s_store_name#43, s_state#44, s_zip#45] +Arguments: X + +(156) AQEShuffleRead +Input [6]: [ss_item_sk#40, ss_customer_sk#41, ss_net_paid#42, s_store_name#43, s_state#44, s_zip#45] +Arguments: coalesced + +(157) InputAdapter +Input [6]: [ss_item_sk#40, ss_customer_sk#41, ss_net_paid#42, s_store_name#43, s_state#44, s_zip#45] +Arguments: [#40, #41, #42, #43, #44, #45] + +(158) InputAdapter +Input [6]: [#40#40, #41#41, #42#42, #43#43, #44#44, #45#45] + +(159) NativeSort +Input [6]: [#40#40, #41#41, #42#42, #43#43, #44#44, #45#45] +Arguments: [ss_item_sk#40 ASC NULLS FIRST], false + +(230) Scan parquet +Output [6]: [i_item_sk#46, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(161) InputAdapter +Input [6]: [i_item_sk#46, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51] +Arguments: [#46, #47, #48, #49, #50, #51] + +(162) NativeFilter +Input [6]: [#46#46, #47#47, #48#48, #49#49, #50#50, #51#51] +Condition : isnotnull(i_item_sk#46) + +(163) NativeShuffleExchange +Input [6]: [#46#46, #47#47, #48#48, #49#49, #50#50, #51#51] +Arguments: hashpartitioning(i_item_sk#46, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(164) ShuffleQueryStage +Output [6]: [#46#46, #47#47, #48#48, #49#49, #50#50, #51#51] +Arguments: X + +(165) AQEShuffleRead +Input [6]: [#46#46, #47#47, #48#48, #49#49, #50#50, #51#51] +Arguments: coalesced + +(166) InputAdapter +Input [6]: [#46#46, #47#47, #48#48, #49#49, #50#50, #51#51] + +(167) NativeSort +Input [6]: [#46#46, #47#47, #48#48, #49#49, #50#50, #51#51] +Arguments: [i_item_sk#46 ASC NULLS FIRST], false + +(168) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#40] +Right keys [1]: [i_item_sk#46] +Join type: Inner +Join condition: None + +(169) NativeProject +Output [10]: [ss_customer_sk#41, ss_net_paid#42, s_store_name#43, s_state#44, s_zip#45, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51] +Input [12]: [#40#40, #41#41, #42#42, #43#43, #44#44, #45#45, #46#46, #47#47, #48#48, #49#49, #50#50, #51#51] + +(170) NativeShuffleExchange +Input [10]: [ss_customer_sk#41, ss_net_paid#42, s_store_name#43, s_state#44, s_zip#45, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51] +Arguments: hashpartitioning(ss_customer_sk#41, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(171) ShuffleQueryStage +Output [10]: [ss_customer_sk#41, ss_net_paid#42, s_store_name#43, s_state#44, s_zip#45, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51] +Arguments: X + +(172) AQEShuffleRead +Input [10]: [ss_customer_sk#41, ss_net_paid#42, s_store_name#43, s_state#44, s_zip#45, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51] +Arguments: coalesced + +(173) InputAdapter +Input [10]: [ss_customer_sk#41, ss_net_paid#42, s_store_name#43, s_state#44, s_zip#45, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51] + +(174) NativeSort +Input [10]: [ss_customer_sk#41, ss_net_paid#42, s_store_name#43, s_state#44, s_zip#45, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51] +Arguments: [ss_customer_sk#41 ASC NULLS FIRST], false + +(175) ReusedExchange [Reuses operator id: 58] +Output [4]: [c_customer_sk#52, c_first_name#53, c_last_name#54, c_birth_country#55] + +(176) ShuffleQueryStage +Output [4]: [c_customer_sk#52, c_first_name#53, c_last_name#54, c_birth_country#55] +Arguments: X + +(177) AQEShuffleRead +Input [4]: [c_customer_sk#52, c_first_name#53, c_last_name#54, c_birth_country#55] +Arguments: coalesced + +(178) InputAdapter +Input [4]: [c_customer_sk#52, c_first_name#53, c_last_name#54, c_birth_country#55] +Arguments: [#52, #53, #54, #55] + +(179) InputAdapter +Input [4]: [#52#52, #53#53, #54#54, #55#55] + +(180) NativeSort +Input [4]: [#52#52, #53#53, #54#54, #55#55] +Arguments: [c_customer_sk#52 ASC NULLS FIRST], false + +(181) NativeSortMergeJoin +Left keys [1]: [ss_customer_sk#41] +Right keys [1]: [c_customer_sk#52] +Join type: Inner +Join condition: None + +(182) NativeProject +Output [12]: [ss_net_paid#42, s_store_name#43, s_state#44, s_zip#45, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51, c_first_name#53, c_last_name#54, c_birth_country#55] +Input [14]: [ss_customer_sk#41, ss_net_paid#42, s_store_name#43, s_state#44, s_zip#45, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51, #52#52, #53#53, #54#54, #55#55] + +(183) NativeShuffleExchange +Input [12]: [ss_net_paid#42, s_store_name#43, s_state#44, s_zip#45, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51, c_first_name#53, c_last_name#54, c_birth_country#55] +Arguments: hashpartitioning(c_birth_country#55, s_zip#45, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(184) ShuffleQueryStage +Output [12]: [ss_net_paid#42, s_store_name#43, s_state#44, s_zip#45, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51, c_first_name#53, c_last_name#54, c_birth_country#55] +Arguments: X + +(185) AQEShuffleRead +Input [12]: [ss_net_paid#42, s_store_name#43, s_state#44, s_zip#45, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51, c_first_name#53, c_last_name#54, c_birth_country#55] +Arguments: coalesced + +(186) InputAdapter +Input [12]: [ss_net_paid#42, s_store_name#43, s_state#44, s_zip#45, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51, c_first_name#53, c_last_name#54, c_birth_country#55] + +(187) NativeSort +Input [12]: [ss_net_paid#42, s_store_name#43, s_state#44, s_zip#45, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51, c_first_name#53, c_last_name#54, c_birth_country#55] +Arguments: [c_birth_country#55 ASC NULLS FIRST, s_zip#45 ASC NULLS FIRST], false + +(188) ReusedExchange [Reuses operator id: 73] +Output [3]: [ca_state#56, ca_zip#57, ca_country#58] + +(189) ShuffleQueryStage +Output [3]: [ca_state#56, ca_zip#57, ca_country#58] +Arguments: X + +(190) AQEShuffleRead +Input [3]: [ca_state#56, ca_zip#57, ca_country#58] +Arguments: coalesced + +(191) InputAdapter +Input [3]: [ca_state#56, ca_zip#57, ca_country#58] +Arguments: [#56, #57, #58] + +(192) InputAdapter +Input [3]: [#56#56, #57#57, #58#58] + +(193) NativeSort +Input [3]: [#56#56, #57#57, #58#58] +Arguments: [upper(ca_country#58) ASC NULLS FIRST, ca_zip#57 ASC NULLS FIRST], false + +(194) NativeSortMergeJoin +Left keys [2]: [c_birth_country#55, s_zip#45] +Right keys [2]: [upper(ca_country#58), ca_zip#57] +Join type: Inner +Join condition: None + +(195) NativeProject +Output [11]: [ss_net_paid#42, s_store_name#43, s_state#44, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51, c_first_name#53, c_last_name#54, ca_state#56] +Input [15]: [ss_net_paid#42, s_store_name#43, s_state#44, s_zip#45, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51, c_first_name#53, c_last_name#54, c_birth_country#55, #56#56, #57#57, #58#58] + +(196) NativeProject +Output [11]: [c_last_name#54 AS c_last_name#54, c_first_name#53 AS c_first_name#53, s_store_name#43 AS s_store_name#43, ca_state#56 AS ca_state#56, s_state#44 AS s_state#44, i_color#49 AS i_color#49, i_current_price#47 AS i_current_price#47, i_manager_id#51 AS i_manager_id#51, i_units#50 AS i_units#50, i_size#48 AS i_size#48, UnscaledValue(ss_net_paid#42) AS _c10#59] +Input [11]: [ss_net_paid#42, s_store_name#43, s_state#44, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51, c_first_name#53, c_last_name#54, ca_state#56] + +(197) NativeHashAggregate +Input [11]: [c_last_name#54, c_first_name#53, s_store_name#43, ca_state#56, s_state#44, i_color#49, i_current_price#47, i_manager_id#51, i_units#50, i_size#48, _c10#59] +Keys [10]: [c_last_name#54, c_first_name#53, s_store_name#43, ca_state#56, s_state#44, i_color#49, i_current_price#47, i_manager_id#51, i_units#50, i_size#48] +Functions [1]: [partial_sum(_c10#59)] +Aggregate Attributes [1]: [sum#60] +Results [11]: [c_last_name#54, c_first_name#53, s_store_name#43, ca_state#56, s_state#44, i_color#49, i_current_price#47, i_manager_id#51, i_units#50, i_size#48, #28#28] + +(198) NativeShuffleExchange +Input [11]: [c_last_name#54, c_first_name#53, s_store_name#43, ca_state#56, s_state#44, i_color#49, i_current_price#47, i_manager_id#51, i_units#50, i_size#48, #28#28] +Arguments: hashpartitioning(c_last_name#54, c_first_name#53, s_store_name#43, ca_state#56, s_state#44, i_color#49, i_current_price#47, i_manager_id#51, i_units#50, i_size#48, 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(199) ShuffleQueryStage +Output [11]: [c_last_name#54, c_first_name#53, s_store_name#43, ca_state#56, s_state#44, i_color#49, i_current_price#47, i_manager_id#51, i_units#50, i_size#48, #28#28] +Arguments: X + +(200) AQEShuffleRead +Input [11]: [c_last_name#54, c_first_name#53, s_store_name#43, ca_state#56, s_state#44, i_color#49, i_current_price#47, i_manager_id#51, i_units#50, i_size#48, #28#28] +Arguments: coalesced + +(201) InputAdapter +Input [11]: [c_last_name#54, c_first_name#53, s_store_name#43, ca_state#56, s_state#44, i_color#49, i_current_price#47, i_manager_id#51, i_units#50, i_size#48, #28#28] + +(202) NativeHashAggregate +Input [11]: [c_last_name#54, c_first_name#53, s_store_name#43, ca_state#56, s_state#44, i_color#49, i_current_price#47, i_manager_id#51, i_units#50, i_size#48, #28#28] +Keys [10]: [c_last_name#54, c_first_name#53, s_store_name#43, ca_state#56, s_state#44, i_color#49, i_current_price#47, i_manager_id#51, i_units#50, i_size#48] +Functions [1]: [sum(UnscaledValue(ss_net_paid#42))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_net_paid#42))#29] +Results [11]: [c_last_name#54, c_first_name#53, s_store_name#43, ca_state#56, s_state#44, i_color#49, i_current_price#47, i_manager_id#51, i_units#50, i_size#48, sum(UnscaledValue(ss_net_paid#42))#29] + +(203) NativeProject +Output [1]: [MakeDecimal(sum(UnscaledValue(ss_net_paid#42))#29,17,2) AS netpaid#61] +Input [11]: [c_last_name#54, c_first_name#53, s_store_name#43, ca_state#56, s_state#44, i_color#49, i_current_price#47, i_manager_id#51, i_units#50, i_size#48, sum(UnscaledValue(ss_net_paid#42))#29] + +(204) NativeHashAggregate +Input [1]: [netpaid#61] +Keys: [] +Functions [1]: [partial_avg(netpaid#61)] +Aggregate Attributes [2]: [sum#62, count#63] +Results [1]: [#28#28] + +(205) NativeShuffleExchange +Input [1]: [#28#28] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=31] + +(206) ShuffleQueryStage +Output [1]: [#28#28] +Arguments: X + +(207) NativeHashAggregate +Input [1]: [#28#28] +Keys: [] +Functions [1]: [avg(netpaid#61)] +Aggregate Attributes [1]: [avg(netpaid#61)#64] +Results [1]: [avg(netpaid#61)#64] + +(208) NativeProject +Output [1]: [(0.05 * avg(netpaid#61)#64) AS (0.05 * avg(netpaid))#65] +Input [1]: [avg(netpaid#61)#64] + +(209) Scan parquet +Output [5]: [ss_item_sk#40, ss_customer_sk#41, ss_store_sk#66, ss_ticket_number#67, ss_net_paid#42] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_ticket_number), IsNotNull(ss_item_sk), IsNotNull(ss_store_sk), IsNotNull(ss_customer_sk)] +ReadSchema: struct + +(210) Filter +Input [5]: [ss_item_sk#40, ss_customer_sk#41, ss_store_sk#66, ss_ticket_number#67, ss_net_paid#42] +Condition : (((isnotnull(ss_ticket_number#67) AND isnotnull(ss_item_sk#40)) AND isnotnull(ss_store_sk#66)) AND isnotnull(ss_customer_sk#41)) + +(211) Exchange +Input [5]: [ss_item_sk#40, ss_customer_sk#41, ss_store_sk#66, ss_ticket_number#67, ss_net_paid#42] +Arguments: hashpartitioning(ss_ticket_number#67, ss_item_sk#40, 100), ENSURE_REQUIREMENTS, [plan_id=32] + +(212) Sort +Input [5]: [ss_item_sk#40, ss_customer_sk#41, ss_store_sk#66, ss_ticket_number#67, ss_net_paid#42] +Arguments: [ss_ticket_number#67 ASC NULLS FIRST, ss_item_sk#40 ASC NULLS FIRST], false, 0 + +(213) Scan parquet +Output [2]: [sr_item_sk#68, sr_ticket_number#69] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_ticket_number), IsNotNull(sr_item_sk)] +ReadSchema: struct + +(214) Filter +Input [2]: [sr_item_sk#68, sr_ticket_number#69] +Condition : (isnotnull(sr_ticket_number#69) AND isnotnull(sr_item_sk#68)) + +(215) Exchange +Input [2]: [sr_item_sk#68, sr_ticket_number#69] +Arguments: hashpartitioning(sr_ticket_number#69, sr_item_sk#68, 100), ENSURE_REQUIREMENTS, [plan_id=33] + +(216) Sort +Input [2]: [sr_item_sk#68, sr_ticket_number#69] +Arguments: [sr_ticket_number#69 ASC NULLS FIRST, sr_item_sk#68 ASC NULLS FIRST], false, 0 + +(217) SortMergeJoin +Left keys [2]: [ss_ticket_number#67, ss_item_sk#40] +Right keys [2]: [sr_ticket_number#69, sr_item_sk#68] +Join type: Inner +Join condition: None + +(218) Project +Output [4]: [ss_item_sk#40, ss_customer_sk#41, ss_store_sk#66, ss_net_paid#42] +Input [7]: [ss_item_sk#40, ss_customer_sk#41, ss_store_sk#66, ss_ticket_number#67, ss_net_paid#42, sr_item_sk#68, sr_ticket_number#69] + +(219) Exchange +Input [4]: [ss_item_sk#40, ss_customer_sk#41, ss_store_sk#66, ss_net_paid#42] +Arguments: hashpartitioning(ss_store_sk#66, 100), ENSURE_REQUIREMENTS, [plan_id=34] + +(220) Sort +Input [4]: [ss_item_sk#40, ss_customer_sk#41, ss_store_sk#66, ss_net_paid#42] +Arguments: [ss_store_sk#66 ASC NULLS FIRST], false, 0 + +(221) Scan parquet +Output [5]: [s_store_sk#70, s_store_name#43, s_market_id#71, s_state#44, s_zip#45] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_market_id), EqualTo(s_market_id,8), IsNotNull(s_store_sk), IsNotNull(s_zip)] +ReadSchema: struct + +(222) Filter +Input [5]: [s_store_sk#70, s_store_name#43, s_market_id#71, s_state#44, s_zip#45] +Condition : (((isnotnull(s_market_id#71) AND (s_market_id#71 = 8)) AND isnotnull(s_store_sk#70)) AND isnotnull(s_zip#45)) + +(223) Project +Output [4]: [s_store_sk#70, s_store_name#43, s_state#44, s_zip#45] +Input [5]: [s_store_sk#70, s_store_name#43, s_market_id#71, s_state#44, s_zip#45] + +(224) Exchange +Input [4]: [s_store_sk#70, s_store_name#43, s_state#44, s_zip#45] +Arguments: hashpartitioning(s_store_sk#70, 100), ENSURE_REQUIREMENTS, [plan_id=35] + +(225) Sort +Input [4]: [s_store_sk#70, s_store_name#43, s_state#44, s_zip#45] +Arguments: [s_store_sk#70 ASC NULLS FIRST], false, 0 + +(226) SortMergeJoin +Left keys [1]: [ss_store_sk#66] +Right keys [1]: [s_store_sk#70] +Join type: Inner +Join condition: None + +(227) Project +Output [6]: [ss_item_sk#40, ss_customer_sk#41, ss_net_paid#42, s_store_name#43, s_state#44, s_zip#45] +Input [8]: [ss_item_sk#40, ss_customer_sk#41, ss_store_sk#66, ss_net_paid#42, s_store_sk#70, s_store_name#43, s_state#44, s_zip#45] + +(228) Exchange +Input [6]: [ss_item_sk#40, ss_customer_sk#41, ss_net_paid#42, s_store_name#43, s_state#44, s_zip#45] +Arguments: hashpartitioning(ss_item_sk#40, 100), ENSURE_REQUIREMENTS, [plan_id=36] + +(229) Sort +Input [6]: [ss_item_sk#40, ss_customer_sk#41, ss_net_paid#42, s_store_name#43, s_state#44, s_zip#45] +Arguments: [ss_item_sk#40 ASC NULLS FIRST], false, 0 + +(230) Scan parquet +Output [6]: [i_item_sk#46, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(231) Filter +Input [6]: [i_item_sk#46, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51] +Condition : isnotnull(i_item_sk#46) + +(232) Exchange +Input [6]: [i_item_sk#46, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51] +Arguments: hashpartitioning(i_item_sk#46, 100), ENSURE_REQUIREMENTS, [plan_id=37] + +(233) Sort +Input [6]: [i_item_sk#46, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51] +Arguments: [i_item_sk#46 ASC NULLS FIRST], false, 0 + +(234) SortMergeJoin +Left keys [1]: [ss_item_sk#40] +Right keys [1]: [i_item_sk#46] +Join type: Inner +Join condition: None + +(235) Project +Output [10]: [ss_customer_sk#41, ss_net_paid#42, s_store_name#43, s_state#44, s_zip#45, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51] +Input [12]: [ss_item_sk#40, ss_customer_sk#41, ss_net_paid#42, s_store_name#43, s_state#44, s_zip#45, i_item_sk#46, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51] + +(236) Exchange +Input [10]: [ss_customer_sk#41, ss_net_paid#42, s_store_name#43, s_state#44, s_zip#45, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51] +Arguments: hashpartitioning(ss_customer_sk#41, 100), ENSURE_REQUIREMENTS, [plan_id=38] + +(237) Sort +Input [10]: [ss_customer_sk#41, ss_net_paid#42, s_store_name#43, s_state#44, s_zip#45, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51] +Arguments: [ss_customer_sk#41 ASC NULLS FIRST], false, 0 + +(238) Scan parquet +Output [4]: [c_customer_sk#52, c_first_name#53, c_last_name#54, c_birth_country#55] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_birth_country)] +ReadSchema: struct + +(239) Filter +Input [4]: [c_customer_sk#52, c_first_name#53, c_last_name#54, c_birth_country#55] +Condition : (isnotnull(c_customer_sk#52) AND isnotnull(c_birth_country#55)) + +(240) Exchange +Input [4]: [c_customer_sk#52, c_first_name#53, c_last_name#54, c_birth_country#55] +Arguments: hashpartitioning(c_customer_sk#52, 100), ENSURE_REQUIREMENTS, [plan_id=39] + +(241) Sort +Input [4]: [c_customer_sk#52, c_first_name#53, c_last_name#54, c_birth_country#55] +Arguments: [c_customer_sk#52 ASC NULLS FIRST], false, 0 + +(242) SortMergeJoin +Left keys [1]: [ss_customer_sk#41] +Right keys [1]: [c_customer_sk#52] +Join type: Inner +Join condition: None + +(243) Project +Output [12]: [ss_net_paid#42, s_store_name#43, s_state#44, s_zip#45, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51, c_first_name#53, c_last_name#54, c_birth_country#55] +Input [14]: [ss_customer_sk#41, ss_net_paid#42, s_store_name#43, s_state#44, s_zip#45, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51, c_customer_sk#52, c_first_name#53, c_last_name#54, c_birth_country#55] + +(244) Exchange +Input [12]: [ss_net_paid#42, s_store_name#43, s_state#44, s_zip#45, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51, c_first_name#53, c_last_name#54, c_birth_country#55] +Arguments: hashpartitioning(c_birth_country#55, s_zip#45, 100), ENSURE_REQUIREMENTS, [plan_id=40] + +(245) Sort +Input [12]: [ss_net_paid#42, s_store_name#43, s_state#44, s_zip#45, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51, c_first_name#53, c_last_name#54, c_birth_country#55] +Arguments: [c_birth_country#55 ASC NULLS FIRST, s_zip#45 ASC NULLS FIRST], false, 0 + +(246) Scan parquet +Output [3]: [ca_state#56, ca_zip#57, ca_country#58] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_country), IsNotNull(ca_zip)] +ReadSchema: struct + +(247) Filter +Input [3]: [ca_state#56, ca_zip#57, ca_country#58] +Condition : (isnotnull(ca_country#58) AND isnotnull(ca_zip#57)) + +(248) Exchange +Input [3]: [ca_state#56, ca_zip#57, ca_country#58] +Arguments: hashpartitioning(upper(ca_country#58), ca_zip#57, 100), ENSURE_REQUIREMENTS, [plan_id=41] + +(249) Sort +Input [3]: [ca_state#56, ca_zip#57, ca_country#58] +Arguments: [upper(ca_country#58) ASC NULLS FIRST, ca_zip#57 ASC NULLS FIRST], false, 0 + +(250) SortMergeJoin +Left keys [2]: [c_birth_country#55, s_zip#45] +Right keys [2]: [upper(ca_country#58), ca_zip#57] +Join type: Inner +Join condition: None + +(251) Project +Output [11]: [ss_net_paid#42, s_store_name#43, s_state#44, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51, c_first_name#53, c_last_name#54, ca_state#56] +Input [15]: [ss_net_paid#42, s_store_name#43, s_state#44, s_zip#45, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51, c_first_name#53, c_last_name#54, c_birth_country#55, ca_state#56, ca_zip#57, ca_country#58] + +(252) HashAggregate +Input [11]: [ss_net_paid#42, s_store_name#43, s_state#44, i_current_price#47, i_size#48, i_color#49, i_units#50, i_manager_id#51, c_first_name#53, c_last_name#54, ca_state#56] +Keys [10]: [c_last_name#54, c_first_name#53, s_store_name#43, ca_state#56, s_state#44, i_color#49, i_current_price#47, i_manager_id#51, i_units#50, i_size#48] +Functions [1]: [partial_sum(UnscaledValue(ss_net_paid#42))] +Aggregate Attributes [1]: [sum#60] +Results [11]: [c_last_name#54, c_first_name#53, s_store_name#43, ca_state#56, s_state#44, i_color#49, i_current_price#47, i_manager_id#51, i_units#50, i_size#48, sum#72] + +(253) Exchange +Input [11]: [c_last_name#54, c_first_name#53, s_store_name#43, ca_state#56, s_state#44, i_color#49, i_current_price#47, i_manager_id#51, i_units#50, i_size#48, sum#72] +Arguments: hashpartitioning(c_last_name#54, c_first_name#53, s_store_name#43, ca_state#56, s_state#44, i_color#49, i_current_price#47, i_manager_id#51, i_units#50, i_size#48, 100), ENSURE_REQUIREMENTS, [plan_id=42] + +(254) HashAggregate +Input [11]: [c_last_name#54, c_first_name#53, s_store_name#43, ca_state#56, s_state#44, i_color#49, i_current_price#47, i_manager_id#51, i_units#50, i_size#48, sum#72] +Keys [10]: [c_last_name#54, c_first_name#53, s_store_name#43, ca_state#56, s_state#44, i_color#49, i_current_price#47, i_manager_id#51, i_units#50, i_size#48] +Functions [1]: [sum(UnscaledValue(ss_net_paid#42))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_net_paid#42))#29] +Results [1]: [MakeDecimal(sum(UnscaledValue(ss_net_paid#42))#29,17,2) AS netpaid#61] + +(255) HashAggregate +Input [1]: [netpaid#61] +Keys: [] +Functions [1]: [partial_avg(netpaid#61)] +Aggregate Attributes [2]: [sum#62, count#63] +Results [2]: [sum#73, count#74] + +(256) Exchange +Input [2]: [sum#73, count#74] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=43] + +(257) HashAggregate +Input [2]: [sum#73, count#74] +Keys: [] +Functions [1]: [avg(netpaid#61)] +Aggregate Attributes [1]: [avg(netpaid#61)#64] +Results [1]: [(0.05 * avg(netpaid#61)#64) AS (0.05 * avg(netpaid))#65] + +(258) AdaptiveSparkPlan +Output [1]: [(0.05 * avg(netpaid))#65] +Arguments: isFinalPlan=true + + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q24b.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q24b.txt new file mode 100644 index 000000000..e5253a6c6 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q24b.txt @@ -0,0 +1,1397 @@ +== Physical Plan == +AdaptiveSparkPlan (148) ++- == Final Plan == + NativeFilter (95) + +- NativeProject (94) + +- NativeHashAggregate (93) + +- InputAdapter (92) + +- AQEShuffleRead (91) + +- ShuffleQueryStage (90), Statistics(X) + +- NativeShuffleExchange (89) + +- NativeHashAggregate (88) + +- NativeProject (87) + +- NativeHashAggregate (86) + +- InputAdapter (85) + +- AQEShuffleRead (84) + +- ShuffleQueryStage (83), Statistics(X) + +- NativeShuffleExchange (82) + +- NativeHashAggregate (81) + +- NativeProject (80) + +- NativeProject (79) + +- NativeSortMergeJoin Inner (78) + :- NativeSort (69) + : +- InputAdapter (68) + : +- AQEShuffleRead (67) + : +- ShuffleQueryStage (66), Statistics(X) + : +- NativeShuffleExchange (65) + : +- NativeProject (64) + : +- NativeSortMergeJoin Inner (63) + : :- NativeSort (54) + : : +- InputAdapter (53) + : : +- AQEShuffleRead (52) + : : +- ShuffleQueryStage (51), Statistics(X) + : : +- NativeShuffleExchange (50) + : : +- NativeProject (49) + : : +- NativeSortMergeJoin Inner (48) + : : :- NativeSort (39) + : : : +- InputAdapter (38) + : : : +- AQEShuffleRead (37) + : : : +- ShuffleQueryStage (36), Statistics(X) + : : : +- NativeShuffleExchange (35) + : : : +- NativeProject (34) + : : : +- NativeSortMergeJoin Inner (33) + : : : :- NativeSort (23) + : : : : +- InputAdapter (22) + : : : : +- AQEShuffleRead (21) + : : : : +- ShuffleQueryStage (20), Statistics(X) + : : : : +- NativeShuffleExchange (19) + : : : : +- NativeProject (18) + : : : : +- NativeSortMergeJoin Inner (17) + : : : : :- NativeSort (8) + : : : : : +- InputAdapter (7) + : : : : : +- AQEShuffleRead (6) + : : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : : +- NativeShuffleExchange (4) + : : : : : +- NativeFilter (3) + : : : : : +- InputAdapter (2) + : : : : : +- NativeParquetScan (1) + : : : : +- NativeSort (16) + : : : : +- InputAdapter (15) + : : : : +- AQEShuffleRead (14) + : : : : +- ShuffleQueryStage (13), Statistics(X) + : : : : +- NativeShuffleExchange (12) + : : : : +- NativeFilter (11) + : : : : +- InputAdapter (10) + : : : : +- NativeParquetScan (9) + : : : +- NativeSort (32) + : : : +- InputAdapter (31) + : : : +- AQEShuffleRead (30) + : : : +- ShuffleQueryStage (29), Statistics(X) + : : : +- NativeShuffleExchange (28) + : : : +- NativeProject (27) + : : : +- NativeFilter (26) + : : : +- InputAdapter (25) + : : : +- NativeParquetScan (24) + : : +- NativeSort (47) + : : +- InputAdapter (46) + : : +- AQEShuffleRead (45) + : : +- ShuffleQueryStage (44), Statistics(X) + : : +- NativeShuffleExchange (43) + : : +- NativeFilter (42) + : : +- InputAdapter (41) + : : +- NativeParquetScan (40) + : +- NativeSort (62) + : +- InputAdapter (61) + : +- AQEShuffleRead (60) + : +- ShuffleQueryStage (59), Statistics(X) + : +- NativeShuffleExchange (58) + : +- NativeFilter (57) + : +- InputAdapter (56) + : +- NativeParquetScan (55) + +- NativeSort (77) + +- InputAdapter (76) + +- AQEShuffleRead (75) + +- ShuffleQueryStage (74), Statistics(X) + +- NativeShuffleExchange (73) + +- NativeFilter (72) + +- InputAdapter (71) + +- NativeParquetScan (70) ++- == Initial Plan == + Sort (147) + +- Exchange (146) + +- Filter (145) + +- HashAggregate (144) + +- Exchange (143) + +- HashAggregate (142) + +- HashAggregate (141) + +- Exchange (140) + +- HashAggregate (139) + +- Project (138) + +- SortMergeJoin Inner (137) + :- Sort (132) + : +- Exchange (131) + : +- Project (130) + : +- SortMergeJoin Inner (129) + : :- Sort (124) + : : +- Exchange (123) + : : +- Project (122) + : : +- SortMergeJoin Inner (121) + : : :- Sort (116) + : : : +- Exchange (115) + : : : +- Project (114) + : : : +- SortMergeJoin Inner (113) + : : : :- Sort (107) + : : : : +- Exchange (106) + : : : : +- Project (105) + : : : : +- SortMergeJoin Inner (104) + : : : : :- Sort (99) + : : : : : +- Exchange (98) + : : : : : +- Filter (97) + : : : : : +- Scan parquet (96) + : : : : +- Sort (103) + : : : : +- Exchange (102) + : : : : +- Filter (101) + : : : : +- Scan parquet (100) + : : : +- Sort (112) + : : : +- Exchange (111) + : : : +- Project (110) + : : : +- Filter (109) + : : : +- Scan parquet (108) + : : +- Sort (120) + : : +- Exchange (119) + : : +- Filter (118) + : : +- Scan parquet (117) + : +- Sort (128) + : +- Exchange (127) + : +- Filter (126) + : +- Scan parquet (125) + +- Sort (136) + +- Exchange (135) + +- Filter (134) + +- Scan parquet (133) + + +(96) Scan parquet +Output [5]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_ticket_number), IsNotNull(ss_item_sk), IsNotNull(ss_store_sk), IsNotNull(ss_customer_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [5]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5] +Arguments: [#1, #2, #3, #4, #5] + +(3) NativeFilter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Condition : (((isnotnull(ss_ticket_number#4) AND isnotnull(ss_item_sk#1)) AND isnotnull(ss_store_sk#3)) AND isnotnull(ss_customer_sk#2)) + +(4) NativeShuffleExchange +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: hashpartitioning(ss_ticket_number#4, ss_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: X + +(6) AQEShuffleRead +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: coalesced + +(7) InputAdapter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] + +(8) NativeSort +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: [ss_ticket_number#4 ASC NULLS FIRST, ss_item_sk#1 ASC NULLS FIRST], false + +(100) Scan parquet +Output [2]: [sr_item_sk#6, sr_ticket_number#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_ticket_number), IsNotNull(sr_item_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [sr_item_sk#6, sr_ticket_number#7] +Arguments: [#6, #7] + +(11) NativeFilter +Input [2]: [#6#6, #7#7] +Condition : (isnotnull(sr_ticket_number#7) AND isnotnull(sr_item_sk#6)) + +(12) NativeShuffleExchange +Input [2]: [#6#6, #7#7] +Arguments: hashpartitioning(sr_ticket_number#7, sr_item_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [2]: [#6#6, #7#7] +Arguments: X + +(14) AQEShuffleRead +Input [2]: [#6#6, #7#7] +Arguments: coalesced + +(15) InputAdapter +Input [2]: [#6#6, #7#7] + +(16) NativeSort +Input [2]: [#6#6, #7#7] +Arguments: [sr_ticket_number#7 ASC NULLS FIRST, sr_item_sk#6 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [2]: [ss_ticket_number#4, ss_item_sk#1] +Right keys [2]: [sr_ticket_number#7, sr_item_sk#6] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [4]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5] +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] + +(19) NativeShuffleExchange +Input [4]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5] +Arguments: hashpartitioning(ss_store_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [4]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5] +Arguments: X + +(21) AQEShuffleRead +Input [4]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5] +Arguments: coalesced + +(22) InputAdapter +Input [4]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5] + +(23) NativeSort +Input [4]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5] +Arguments: [ss_store_sk#3 ASC NULLS FIRST], false + +(108) Scan parquet +Output [5]: [s_store_sk#8, s_store_name#9, s_market_id#10, s_state#11, s_zip#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_market_id), EqualTo(s_market_id,8), IsNotNull(s_store_sk), IsNotNull(s_zip)] +ReadSchema: struct + +(25) InputAdapter +Input [5]: [s_store_sk#8, s_store_name#9, s_market_id#10, s_state#11, s_zip#12] +Arguments: [#8, #9, #10, #11, #12] + +(26) NativeFilter +Input [5]: [#8#8, #9#9, #10#10, #11#11, #12#12] +Condition : (((isnotnull(s_market_id#10) AND (s_market_id#10 = 8)) AND isnotnull(s_store_sk#8)) AND isnotnull(s_zip#12)) + +(27) NativeProject +Output [4]: [s_store_sk#8, s_store_name#9, s_state#11, s_zip#12] +Input [5]: [#8#8, #9#9, #10#10, #11#11, #12#12] + +(28) NativeShuffleExchange +Input [4]: [s_store_sk#8, s_store_name#9, s_state#11, s_zip#12] +Arguments: hashpartitioning(s_store_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(29) ShuffleQueryStage +Output [4]: [s_store_sk#8, s_store_name#9, s_state#11, s_zip#12] +Arguments: X + +(30) AQEShuffleRead +Input [4]: [s_store_sk#8, s_store_name#9, s_state#11, s_zip#12] +Arguments: coalesced + +(31) InputAdapter +Input [4]: [s_store_sk#8, s_store_name#9, s_state#11, s_zip#12] + +(32) NativeSort +Input [4]: [s_store_sk#8, s_store_name#9, s_state#11, s_zip#12] +Arguments: [s_store_sk#8 ASC NULLS FIRST], false + +(33) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#3] +Right keys [1]: [s_store_sk#8] +Join type: Inner +Join condition: None + +(34) NativeProject +Output [6]: [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12] +Input [8]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5, s_store_sk#8, s_store_name#9, s_state#11, s_zip#12] + +(35) NativeShuffleExchange +Input [6]: [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12] +Arguments: hashpartitioning(ss_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(36) ShuffleQueryStage +Output [6]: [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12] +Arguments: X + +(37) AQEShuffleRead +Input [6]: [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12] +Arguments: coalesced + +(38) InputAdapter +Input [6]: [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12] + +(39) NativeSort +Input [6]: [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12] +Arguments: [ss_item_sk#1 ASC NULLS FIRST], false + +(117) Scan parquet +Output [6]: [i_item_sk#13, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_color), EqualTo(i_color,chiffon), IsNotNull(i_item_sk)] +ReadSchema: struct + +(41) InputAdapter +Input [6]: [i_item_sk#13, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] +Arguments: [#13, #14, #15, #16, #17, #18] + +(42) NativeFilter +Input [6]: [#13#13, #14#14, #15#15, #16#16, #17#17, #18#18] +Condition : ((isnotnull(i_color#16) AND (i_color#16 = chiffon)) AND isnotnull(i_item_sk#13)) + +(43) NativeShuffleExchange +Input [6]: [#13#13, #14#14, #15#15, #16#16, #17#17, #18#18] +Arguments: hashpartitioning(i_item_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) ShuffleQueryStage +Output [6]: [#13#13, #14#14, #15#15, #16#16, #17#17, #18#18] +Arguments: X + +(45) AQEShuffleRead +Input [6]: [#13#13, #14#14, #15#15, #16#16, #17#17, #18#18] +Arguments: coalesced + +(46) InputAdapter +Input [6]: [#13#13, #14#14, #15#15, #16#16, #17#17, #18#18] + +(47) NativeSort +Input [6]: [#13#13, #14#14, #15#15, #16#16, #17#17, #18#18] +Arguments: [i_item_sk#13 ASC NULLS FIRST], false + +(48) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#1] +Right keys [1]: [i_item_sk#13] +Join type: Inner +Join condition: None + +(49) NativeProject +Output [10]: [ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] +Input [12]: [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, #13#13, #14#14, #15#15, #16#16, #17#17, #18#18] + +(50) NativeShuffleExchange +Input [10]: [ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] +Arguments: hashpartitioning(ss_customer_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(51) ShuffleQueryStage +Output [10]: [ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] +Arguments: X + +(52) AQEShuffleRead +Input [10]: [ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] +Arguments: coalesced + +(53) InputAdapter +Input [10]: [ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] + +(54) NativeSort +Input [10]: [ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] +Arguments: [ss_customer_sk#2 ASC NULLS FIRST], false + +(125) Scan parquet +Output [4]: [c_customer_sk#19, c_first_name#20, c_last_name#21, c_birth_country#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_birth_country)] +ReadSchema: struct + +(56) InputAdapter +Input [4]: [c_customer_sk#19, c_first_name#20, c_last_name#21, c_birth_country#22] +Arguments: [#19, #20, #21, #22] + +(57) NativeFilter +Input [4]: [#19#19, #20#20, #21#21, #22#22] +Condition : (isnotnull(c_customer_sk#19) AND isnotnull(c_birth_country#22)) + +(58) NativeShuffleExchange +Input [4]: [#19#19, #20#20, #21#21, #22#22] +Arguments: hashpartitioning(c_customer_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(59) ShuffleQueryStage +Output [4]: [#19#19, #20#20, #21#21, #22#22] +Arguments: X + +(60) AQEShuffleRead +Input [4]: [#19#19, #20#20, #21#21, #22#22] +Arguments: coalesced + +(61) InputAdapter +Input [4]: [#19#19, #20#20, #21#21, #22#22] + +(62) NativeSort +Input [4]: [#19#19, #20#20, #21#21, #22#22] +Arguments: [c_customer_sk#19 ASC NULLS FIRST], false + +(63) NativeSortMergeJoin +Left keys [1]: [ss_customer_sk#2] +Right keys [1]: [c_customer_sk#19] +Join type: Inner +Join condition: None + +(64) NativeProject +Output [12]: [ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_first_name#20, c_last_name#21, c_birth_country#22] +Input [14]: [ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, #19#19, #20#20, #21#21, #22#22] + +(65) NativeShuffleExchange +Input [12]: [ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_first_name#20, c_last_name#21, c_birth_country#22] +Arguments: hashpartitioning(c_birth_country#22, s_zip#12, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(66) ShuffleQueryStage +Output [12]: [ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_first_name#20, c_last_name#21, c_birth_country#22] +Arguments: X + +(67) AQEShuffleRead +Input [12]: [ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_first_name#20, c_last_name#21, c_birth_country#22] +Arguments: coalesced + +(68) InputAdapter +Input [12]: [ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_first_name#20, c_last_name#21, c_birth_country#22] + +(69) NativeSort +Input [12]: [ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_first_name#20, c_last_name#21, c_birth_country#22] +Arguments: [c_birth_country#22 ASC NULLS FIRST, s_zip#12 ASC NULLS FIRST], false + +(133) Scan parquet +Output [3]: [ca_state#23, ca_zip#24, ca_country#25] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_country), IsNotNull(ca_zip)] +ReadSchema: struct + +(71) InputAdapter +Input [3]: [ca_state#23, ca_zip#24, ca_country#25] +Arguments: [#23, #24, #25] + +(72) NativeFilter +Input [3]: [#23#23, #24#24, #25#25] +Condition : (isnotnull(ca_country#25) AND isnotnull(ca_zip#24)) + +(73) NativeShuffleExchange +Input [3]: [#23#23, #24#24, #25#25] +Arguments: hashpartitioning(upper(ca_country#25), ca_zip#24, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(74) ShuffleQueryStage +Output [3]: [#23#23, #24#24, #25#25] +Arguments: X + +(75) AQEShuffleRead +Input [3]: [#23#23, #24#24, #25#25] +Arguments: coalesced + +(76) InputAdapter +Input [3]: [#23#23, #24#24, #25#25] + +(77) NativeSort +Input [3]: [#23#23, #24#24, #25#25] +Arguments: [upper(ca_country#25) ASC NULLS FIRST, ca_zip#24 ASC NULLS FIRST], false + +(78) NativeSortMergeJoin +Left keys [2]: [c_birth_country#22, s_zip#12] +Right keys [2]: [upper(ca_country#25), ca_zip#24] +Join type: Inner +Join condition: None + +(79) NativeProject +Output [11]: [ss_net_paid#5, s_store_name#9, s_state#11, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_first_name#20, c_last_name#21, ca_state#23] +Input [15]: [ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_first_name#20, c_last_name#21, c_birth_country#22, #23#23, #24#24, #25#25] + +(80) NativeProject +Output [11]: [c_last_name#21 AS c_last_name#21, c_first_name#20 AS c_first_name#20, s_store_name#9 AS s_store_name#9, ca_state#23 AS ca_state#23, s_state#11 AS s_state#11, i_color#16 AS i_color#16, i_current_price#14 AS i_current_price#14, i_manager_id#18 AS i_manager_id#18, i_units#17 AS i_units#17, i_size#15 AS i_size#15, UnscaledValue(ss_net_paid#5) AS _c10#26] +Input [11]: [ss_net_paid#5, s_store_name#9, s_state#11, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_first_name#20, c_last_name#21, ca_state#23] + +(81) NativeHashAggregate +Input [11]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15, _c10#26] +Keys [10]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15] +Functions [1]: [partial_sum(_c10#26)] +Aggregate Attributes [1]: [sum#27] +Results [11]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15, #28#28] + +(82) NativeShuffleExchange +Input [11]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15, #28#28] +Arguments: hashpartitioning(c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(83) ShuffleQueryStage +Output [11]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15, #28#28] +Arguments: X + +(84) AQEShuffleRead +Input [11]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15, #28#28] +Arguments: coalesced + +(85) InputAdapter +Input [11]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15, #28#28] + +(86) NativeHashAggregate +Input [11]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15, #28#28] +Keys [10]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15] +Functions [1]: [sum(UnscaledValue(ss_net_paid#5))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_net_paid#5))#29] +Results [11]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15, sum(UnscaledValue(ss_net_paid#5))#29] + +(87) NativeProject +Output [4]: [c_last_name#21, c_first_name#20, s_store_name#9, MakeDecimal(sum(UnscaledValue(ss_net_paid#5))#29,17,2) AS netpaid#30] +Input [11]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15, sum(UnscaledValue(ss_net_paid#5))#29] + +(88) NativeHashAggregate +Input [4]: [c_last_name#21, c_first_name#20, s_store_name#9, netpaid#30] +Keys [3]: [c_last_name#21, c_first_name#20, s_store_name#9] +Functions [1]: [partial_sum(netpaid#30)] +Aggregate Attributes [2]: [sum#31, isEmpty#32] +Results [4]: [c_last_name#21, c_first_name#20, s_store_name#9, #28#28] + +(89) NativeShuffleExchange +Input [4]: [c_last_name#21, c_first_name#20, s_store_name#9, #28#28] +Arguments: hashpartitioning(c_last_name#21, c_first_name#20, s_store_name#9, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(90) ShuffleQueryStage +Output [4]: [c_last_name#21, c_first_name#20, s_store_name#9, #28#28] +Arguments: X + +(91) AQEShuffleRead +Input [4]: [c_last_name#21, c_first_name#20, s_store_name#9, #28#28] +Arguments: coalesced + +(92) InputAdapter +Input [4]: [c_last_name#21, c_first_name#20, s_store_name#9, #28#28] + +(93) NativeHashAggregate +Input [4]: [c_last_name#21, c_first_name#20, s_store_name#9, #28#28] +Keys [3]: [c_last_name#21, c_first_name#20, s_store_name#9] +Functions [1]: [sum(netpaid#30)] +Aggregate Attributes [1]: [sum(netpaid#30)#33] +Results [4]: [c_last_name#21, c_first_name#20, s_store_name#9, sum(netpaid#30)#33] + +(94) NativeProject +Output [4]: [c_last_name#21, c_first_name#20, s_store_name#9, sum(netpaid#30)#33 AS paid#34] +Input [4]: [c_last_name#21, c_first_name#20, s_store_name#9, sum(netpaid#30)#33] + +(95) NativeFilter +Input [4]: [c_last_name#21, c_first_name#20, s_store_name#9, paid#34] +Condition : (isnotnull(paid#34) AND (cast(paid#34 as decimal(33,8)) > cast(Subquery subquery#35, [id=#36] as decimal(33,8)))) + +(96) Scan parquet +Output [5]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_ticket_number), IsNotNull(ss_item_sk), IsNotNull(ss_store_sk), IsNotNull(ss_customer_sk)] +ReadSchema: struct + +(97) Filter +Input [5]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5] +Condition : (((isnotnull(ss_ticket_number#4) AND isnotnull(ss_item_sk#1)) AND isnotnull(ss_store_sk#3)) AND isnotnull(ss_customer_sk#2)) + +(98) Exchange +Input [5]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5] +Arguments: hashpartitioning(ss_ticket_number#4, ss_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(99) Sort +Input [5]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5] +Arguments: [ss_ticket_number#4 ASC NULLS FIRST, ss_item_sk#1 ASC NULLS FIRST], false, 0 + +(100) Scan parquet +Output [2]: [sr_item_sk#6, sr_ticket_number#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_ticket_number), IsNotNull(sr_item_sk)] +ReadSchema: struct + +(101) Filter +Input [2]: [sr_item_sk#6, sr_ticket_number#7] +Condition : (isnotnull(sr_ticket_number#7) AND isnotnull(sr_item_sk#6)) + +(102) Exchange +Input [2]: [sr_item_sk#6, sr_ticket_number#7] +Arguments: hashpartitioning(sr_ticket_number#7, sr_item_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(103) Sort +Input [2]: [sr_item_sk#6, sr_ticket_number#7] +Arguments: [sr_ticket_number#7 ASC NULLS FIRST, sr_item_sk#6 ASC NULLS FIRST], false, 0 + +(104) SortMergeJoin +Left keys [2]: [ss_ticket_number#4, ss_item_sk#1] +Right keys [2]: [sr_ticket_number#7, sr_item_sk#6] +Join type: Inner +Join condition: None + +(105) Project +Output [4]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5] +Input [7]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5, sr_item_sk#6, sr_ticket_number#7] + +(106) Exchange +Input [4]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5] +Arguments: hashpartitioning(ss_store_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(107) Sort +Input [4]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5] +Arguments: [ss_store_sk#3 ASC NULLS FIRST], false, 0 + +(108) Scan parquet +Output [5]: [s_store_sk#8, s_store_name#9, s_market_id#10, s_state#11, s_zip#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_market_id), EqualTo(s_market_id,8), IsNotNull(s_store_sk), IsNotNull(s_zip)] +ReadSchema: struct + +(109) Filter +Input [5]: [s_store_sk#8, s_store_name#9, s_market_id#10, s_state#11, s_zip#12] +Condition : (((isnotnull(s_market_id#10) AND (s_market_id#10 = 8)) AND isnotnull(s_store_sk#8)) AND isnotnull(s_zip#12)) + +(110) Project +Output [4]: [s_store_sk#8, s_store_name#9, s_state#11, s_zip#12] +Input [5]: [s_store_sk#8, s_store_name#9, s_market_id#10, s_state#11, s_zip#12] + +(111) Exchange +Input [4]: [s_store_sk#8, s_store_name#9, s_state#11, s_zip#12] +Arguments: hashpartitioning(s_store_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(112) Sort +Input [4]: [s_store_sk#8, s_store_name#9, s_state#11, s_zip#12] +Arguments: [s_store_sk#8 ASC NULLS FIRST], false, 0 + +(113) SortMergeJoin +Left keys [1]: [ss_store_sk#3] +Right keys [1]: [s_store_sk#8] +Join type: Inner +Join condition: None + +(114) Project +Output [6]: [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12] +Input [8]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5, s_store_sk#8, s_store_name#9, s_state#11, s_zip#12] + +(115) Exchange +Input [6]: [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12] +Arguments: hashpartitioning(ss_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(116) Sort +Input [6]: [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12] +Arguments: [ss_item_sk#1 ASC NULLS FIRST], false, 0 + +(117) Scan parquet +Output [6]: [i_item_sk#13, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_color), EqualTo(i_color,chiffon), IsNotNull(i_item_sk)] +ReadSchema: struct + +(118) Filter +Input [6]: [i_item_sk#13, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] +Condition : ((isnotnull(i_color#16) AND (i_color#16 = chiffon)) AND isnotnull(i_item_sk#13)) + +(119) Exchange +Input [6]: [i_item_sk#13, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] +Arguments: hashpartitioning(i_item_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(120) Sort +Input [6]: [i_item_sk#13, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] +Arguments: [i_item_sk#13 ASC NULLS FIRST], false, 0 + +(121) SortMergeJoin +Left keys [1]: [ss_item_sk#1] +Right keys [1]: [i_item_sk#13] +Join type: Inner +Join condition: None + +(122) Project +Output [10]: [ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] +Input [12]: [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_item_sk#13, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] + +(123) Exchange +Input [10]: [ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] +Arguments: hashpartitioning(ss_customer_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(124) Sort +Input [10]: [ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18] +Arguments: [ss_customer_sk#2 ASC NULLS FIRST], false, 0 + +(125) Scan parquet +Output [4]: [c_customer_sk#19, c_first_name#20, c_last_name#21, c_birth_country#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_birth_country)] +ReadSchema: struct + +(126) Filter +Input [4]: [c_customer_sk#19, c_first_name#20, c_last_name#21, c_birth_country#22] +Condition : (isnotnull(c_customer_sk#19) AND isnotnull(c_birth_country#22)) + +(127) Exchange +Input [4]: [c_customer_sk#19, c_first_name#20, c_last_name#21, c_birth_country#22] +Arguments: hashpartitioning(c_customer_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(128) Sort +Input [4]: [c_customer_sk#19, c_first_name#20, c_last_name#21, c_birth_country#22] +Arguments: [c_customer_sk#19 ASC NULLS FIRST], false, 0 + +(129) SortMergeJoin +Left keys [1]: [ss_customer_sk#2] +Right keys [1]: [c_customer_sk#19] +Join type: Inner +Join condition: None + +(130) Project +Output [12]: [ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_first_name#20, c_last_name#21, c_birth_country#22] +Input [14]: [ss_customer_sk#2, ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_customer_sk#19, c_first_name#20, c_last_name#21, c_birth_country#22] + +(131) Exchange +Input [12]: [ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_first_name#20, c_last_name#21, c_birth_country#22] +Arguments: hashpartitioning(c_birth_country#22, s_zip#12, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(132) Sort +Input [12]: [ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_first_name#20, c_last_name#21, c_birth_country#22] +Arguments: [c_birth_country#22 ASC NULLS FIRST, s_zip#12 ASC NULLS FIRST], false, 0 + +(133) Scan parquet +Output [3]: [ca_state#23, ca_zip#24, ca_country#25] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_country), IsNotNull(ca_zip)] +ReadSchema: struct + +(134) Filter +Input [3]: [ca_state#23, ca_zip#24, ca_country#25] +Condition : (isnotnull(ca_country#25) AND isnotnull(ca_zip#24)) + +(135) Exchange +Input [3]: [ca_state#23, ca_zip#24, ca_country#25] +Arguments: hashpartitioning(upper(ca_country#25), ca_zip#24, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(136) Sort +Input [3]: [ca_state#23, ca_zip#24, ca_country#25] +Arguments: [upper(ca_country#25) ASC NULLS FIRST, ca_zip#24 ASC NULLS FIRST], false, 0 + +(137) SortMergeJoin +Left keys [2]: [c_birth_country#22, s_zip#12] +Right keys [2]: [upper(ca_country#25), ca_zip#24] +Join type: Inner +Join condition: None + +(138) Project +Output [11]: [ss_net_paid#5, s_store_name#9, s_state#11, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_first_name#20, c_last_name#21, ca_state#23] +Input [15]: [ss_net_paid#5, s_store_name#9, s_state#11, s_zip#12, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_first_name#20, c_last_name#21, c_birth_country#22, ca_state#23, ca_zip#24, ca_country#25] + +(139) HashAggregate +Input [11]: [ss_net_paid#5, s_store_name#9, s_state#11, i_current_price#14, i_size#15, i_color#16, i_units#17, i_manager_id#18, c_first_name#20, c_last_name#21, ca_state#23] +Keys [10]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15] +Functions [1]: [partial_sum(UnscaledValue(ss_net_paid#5))] +Aggregate Attributes [1]: [sum#27] +Results [11]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15, sum#37] + +(140) Exchange +Input [11]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15, sum#37] +Arguments: hashpartitioning(c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(141) HashAggregate +Input [11]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15, sum#37] +Keys [10]: [c_last_name#21, c_first_name#20, s_store_name#9, ca_state#23, s_state#11, i_color#16, i_current_price#14, i_manager_id#18, i_units#17, i_size#15] +Functions [1]: [sum(UnscaledValue(ss_net_paid#5))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_net_paid#5))#29] +Results [4]: [c_last_name#21, c_first_name#20, s_store_name#9, MakeDecimal(sum(UnscaledValue(ss_net_paid#5))#29,17,2) AS netpaid#30] + +(142) HashAggregate +Input [4]: [c_last_name#21, c_first_name#20, s_store_name#9, netpaid#30] +Keys [3]: [c_last_name#21, c_first_name#20, s_store_name#9] +Functions [1]: [partial_sum(netpaid#30)] +Aggregate Attributes [2]: [sum#31, isEmpty#32] +Results [5]: [c_last_name#21, c_first_name#20, s_store_name#9, sum#38, isEmpty#39] + +(143) Exchange +Input [5]: [c_last_name#21, c_first_name#20, s_store_name#9, sum#38, isEmpty#39] +Arguments: hashpartitioning(c_last_name#21, c_first_name#20, s_store_name#9, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(144) HashAggregate +Input [5]: [c_last_name#21, c_first_name#20, s_store_name#9, sum#38, isEmpty#39] +Keys [3]: [c_last_name#21, c_first_name#20, s_store_name#9] +Functions [1]: [sum(netpaid#30)] +Aggregate Attributes [1]: [sum(netpaid#30)#33] +Results [4]: [c_last_name#21, c_first_name#20, s_store_name#9, sum(netpaid#30)#33 AS paid#34] + +(145) Filter +Input [4]: [c_last_name#21, c_first_name#20, s_store_name#9, paid#34] +Condition : (isnotnull(paid#34) AND (cast(paid#34 as decimal(33,8)) > cast(Subquery subquery#35, [id=#40] as decimal(33,8)))) + +(146) Exchange +Input [4]: [c_last_name#21, c_first_name#20, s_store_name#9, paid#34] +Arguments: rangepartitioning(c_last_name#21 ASC NULLS FIRST, c_first_name#20 ASC NULLS FIRST, s_store_name#9 ASC NULLS FIRST, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(147) Sort +Input [4]: [c_last_name#21, c_first_name#20, s_store_name#9, paid#34] +Arguments: [c_last_name#21 ASC NULLS FIRST, c_first_name#20 ASC NULLS FIRST, s_store_name#9 ASC NULLS FIRST], true, 0 + +(148) AdaptiveSparkPlan +Output [4]: [c_last_name#21, c_first_name#20, s_store_name#9, paid#34] +Arguments: isFinalPlan=true + +===== Subqueries ===== + +Subquery:1 Hosting operator id = 95 Hosting Expression = Subquery subquery#35, [id=#36] +AdaptiveSparkPlan (253) ++- == Final Plan == + NativeProject (203) + +- NativeHashAggregate (202) + +- ShuffleQueryStage (201), Statistics(X) + +- NativeShuffleExchange (200) + +- NativeHashAggregate (199) + +- NativeProject (198) + +- NativeHashAggregate (197) + +- InputAdapter (196) + +- AQEShuffleRead (195) + +- ShuffleQueryStage (194), Statistics(X) + +- NativeShuffleExchange (193) + +- NativeHashAggregate (192) + +- NativeProject (191) + +- NativeProject (190) + +- NativeSortMergeJoin Inner (189) + :- NativeSort (182) + : +- InputAdapter (181) + : +- AQEShuffleRead (180) + : +- ShuffleQueryStage (179), Statistics(X) + : +- NativeShuffleExchange (178) + : +- NativeProject (177) + : +- NativeSortMergeJoin Inner (176) + : :- NativeSort (169) + : : +- InputAdapter (168) + : : +- AQEShuffleRead (167) + : : +- ShuffleQueryStage (166), Statistics(X) + : : +- NativeShuffleExchange (165) + : : +- NativeProject (164) + : : +- NativeSortMergeJoin Inner (163) + : : :- NativeSort (154) + : : : +- InputAdapter (153) + : : : +- InputAdapter (152) + : : : +- AQEShuffleRead (151) + : : : +- ShuffleQueryStage (150), Statistics(X) + : : : +- ReusedExchange (149) + : : +- NativeSort (162) + : : +- InputAdapter (161) + : : +- AQEShuffleRead (160) + : : +- ShuffleQueryStage (159), Statistics(X) + : : +- NativeShuffleExchange (158) + : : +- NativeFilter (157) + : : +- InputAdapter (156) + : : +- NativeParquetScan (155) + : +- NativeSort (175) + : +- InputAdapter (174) + : +- InputAdapter (173) + : +- AQEShuffleRead (172) + : +- ShuffleQueryStage (171), Statistics(X) + : +- ReusedExchange (170) + +- NativeSort (188) + +- InputAdapter (187) + +- InputAdapter (186) + +- AQEShuffleRead (185) + +- ShuffleQueryStage (184), Statistics(X) + +- ReusedExchange (183) ++- == Initial Plan == + HashAggregate (252) + +- Exchange (251) + +- HashAggregate (250) + +- HashAggregate (249) + +- Exchange (248) + +- HashAggregate (247) + +- Project (246) + +- SortMergeJoin Inner (245) + :- Sort (240) + : +- Exchange (239) + : +- Project (238) + : +- SortMergeJoin Inner (237) + : :- Sort (232) + : : +- Exchange (231) + : : +- Project (230) + : : +- SortMergeJoin Inner (229) + : : :- Sort (224) + : : : +- Exchange (223) + : : : +- Project (222) + : : : +- SortMergeJoin Inner (221) + : : : :- Sort (215) + : : : : +- Exchange (214) + : : : : +- Project (213) + : : : : +- SortMergeJoin Inner (212) + : : : : :- Sort (207) + : : : : : +- Exchange (206) + : : : : : +- Filter (205) + : : : : : +- Scan parquet (204) + : : : : +- Sort (211) + : : : : +- Exchange (210) + : : : : +- Filter (209) + : : : : +- Scan parquet (208) + : : : +- Sort (220) + : : : +- Exchange (219) + : : : +- Project (218) + : : : +- Filter (217) + : : : +- Scan parquet (216) + : : +- Sort (228) + : : +- Exchange (227) + : : +- Filter (226) + : : +- Scan parquet (225) + : +- Sort (236) + : +- Exchange (235) + : +- Filter (234) + : +- Scan parquet (233) + +- Sort (244) + +- Exchange (243) + +- Filter (242) + +- Scan parquet (241) + + +(149) ReusedExchange [Reuses operator id: 35] +Output [6]: [ss_item_sk#41, ss_customer_sk#42, ss_net_paid#43, s_store_name#44, s_state#45, s_zip#46] + +(150) ShuffleQueryStage +Output [6]: [ss_item_sk#41, ss_customer_sk#42, ss_net_paid#43, s_store_name#44, s_state#45, s_zip#46] +Arguments: X + +(151) AQEShuffleRead +Input [6]: [ss_item_sk#41, ss_customer_sk#42, ss_net_paid#43, s_store_name#44, s_state#45, s_zip#46] +Arguments: coalesced + +(152) InputAdapter +Input [6]: [ss_item_sk#41, ss_customer_sk#42, ss_net_paid#43, s_store_name#44, s_state#45, s_zip#46] +Arguments: [#41, #42, #43, #44, #45, #46] + +(153) InputAdapter +Input [6]: [#41#41, #42#42, #43#43, #44#44, #45#45, #46#46] + +(154) NativeSort +Input [6]: [#41#41, #42#42, #43#43, #44#44, #45#45, #46#46] +Arguments: [ss_item_sk#41 ASC NULLS FIRST], false + +(225) Scan parquet +Output [6]: [i_item_sk#47, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(156) InputAdapter +Input [6]: [i_item_sk#47, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52] +Arguments: [#47, #48, #49, #50, #51, #52] + +(157) NativeFilter +Input [6]: [#47#47, #48#48, #49#49, #50#50, #51#51, #52#52] +Condition : isnotnull(i_item_sk#47) + +(158) NativeShuffleExchange +Input [6]: [#47#47, #48#48, #49#49, #50#50, #51#51, #52#52] +Arguments: hashpartitioning(i_item_sk#47, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(159) ShuffleQueryStage +Output [6]: [#47#47, #48#48, #49#49, #50#50, #51#51, #52#52] +Arguments: X + +(160) AQEShuffleRead +Input [6]: [#47#47, #48#48, #49#49, #50#50, #51#51, #52#52] +Arguments: coalesced + +(161) InputAdapter +Input [6]: [#47#47, #48#48, #49#49, #50#50, #51#51, #52#52] + +(162) NativeSort +Input [6]: [#47#47, #48#48, #49#49, #50#50, #51#51, #52#52] +Arguments: [i_item_sk#47 ASC NULLS FIRST], false + +(163) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#41] +Right keys [1]: [i_item_sk#47] +Join type: Inner +Join condition: None + +(164) NativeProject +Output [10]: [ss_customer_sk#42, ss_net_paid#43, s_store_name#44, s_state#45, s_zip#46, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52] +Input [12]: [#41#41, #42#42, #43#43, #44#44, #45#45, #46#46, #47#47, #48#48, #49#49, #50#50, #51#51, #52#52] + +(165) NativeShuffleExchange +Input [10]: [ss_customer_sk#42, ss_net_paid#43, s_store_name#44, s_state#45, s_zip#46, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52] +Arguments: hashpartitioning(ss_customer_sk#42, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(166) ShuffleQueryStage +Output [10]: [ss_customer_sk#42, ss_net_paid#43, s_store_name#44, s_state#45, s_zip#46, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52] +Arguments: X + +(167) AQEShuffleRead +Input [10]: [ss_customer_sk#42, ss_net_paid#43, s_store_name#44, s_state#45, s_zip#46, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52] +Arguments: coalesced + +(168) InputAdapter +Input [10]: [ss_customer_sk#42, ss_net_paid#43, s_store_name#44, s_state#45, s_zip#46, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52] + +(169) NativeSort +Input [10]: [ss_customer_sk#42, ss_net_paid#43, s_store_name#44, s_state#45, s_zip#46, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52] +Arguments: [ss_customer_sk#42 ASC NULLS FIRST], false + +(170) ReusedExchange [Reuses operator id: 58] +Output [4]: [c_customer_sk#53, c_first_name#54, c_last_name#55, c_birth_country#56] + +(171) ShuffleQueryStage +Output [4]: [c_customer_sk#53, c_first_name#54, c_last_name#55, c_birth_country#56] +Arguments: X + +(172) AQEShuffleRead +Input [4]: [c_customer_sk#53, c_first_name#54, c_last_name#55, c_birth_country#56] +Arguments: coalesced + +(173) InputAdapter +Input [4]: [c_customer_sk#53, c_first_name#54, c_last_name#55, c_birth_country#56] +Arguments: [#53, #54, #55, #56] + +(174) InputAdapter +Input [4]: [#53#53, #54#54, #55#55, #56#56] + +(175) NativeSort +Input [4]: [#53#53, #54#54, #55#55, #56#56] +Arguments: [c_customer_sk#53 ASC NULLS FIRST], false + +(176) NativeSortMergeJoin +Left keys [1]: [ss_customer_sk#42] +Right keys [1]: [c_customer_sk#53] +Join type: Inner +Join condition: None + +(177) NativeProject +Output [12]: [ss_net_paid#43, s_store_name#44, s_state#45, s_zip#46, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52, c_first_name#54, c_last_name#55, c_birth_country#56] +Input [14]: [ss_customer_sk#42, ss_net_paid#43, s_store_name#44, s_state#45, s_zip#46, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52, #53#53, #54#54, #55#55, #56#56] + +(178) NativeShuffleExchange +Input [12]: [ss_net_paid#43, s_store_name#44, s_state#45, s_zip#46, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52, c_first_name#54, c_last_name#55, c_birth_country#56] +Arguments: hashpartitioning(c_birth_country#56, s_zip#46, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(179) ShuffleQueryStage +Output [12]: [ss_net_paid#43, s_store_name#44, s_state#45, s_zip#46, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52, c_first_name#54, c_last_name#55, c_birth_country#56] +Arguments: X + +(180) AQEShuffleRead +Input [12]: [ss_net_paid#43, s_store_name#44, s_state#45, s_zip#46, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52, c_first_name#54, c_last_name#55, c_birth_country#56] +Arguments: coalesced + +(181) InputAdapter +Input [12]: [ss_net_paid#43, s_store_name#44, s_state#45, s_zip#46, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52, c_first_name#54, c_last_name#55, c_birth_country#56] + +(182) NativeSort +Input [12]: [ss_net_paid#43, s_store_name#44, s_state#45, s_zip#46, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52, c_first_name#54, c_last_name#55, c_birth_country#56] +Arguments: [c_birth_country#56 ASC NULLS FIRST, s_zip#46 ASC NULLS FIRST], false + +(183) ReusedExchange [Reuses operator id: 73] +Output [3]: [ca_state#57, ca_zip#58, ca_country#59] + +(184) ShuffleQueryStage +Output [3]: [ca_state#57, ca_zip#58, ca_country#59] +Arguments: X + +(185) AQEShuffleRead +Input [3]: [ca_state#57, ca_zip#58, ca_country#59] +Arguments: coalesced + +(186) InputAdapter +Input [3]: [ca_state#57, ca_zip#58, ca_country#59] +Arguments: [#57, #58, #59] + +(187) InputAdapter +Input [3]: [#57#57, #58#58, #59#59] + +(188) NativeSort +Input [3]: [#57#57, #58#58, #59#59] +Arguments: [upper(ca_country#59) ASC NULLS FIRST, ca_zip#58 ASC NULLS FIRST], false + +(189) NativeSortMergeJoin +Left keys [2]: [c_birth_country#56, s_zip#46] +Right keys [2]: [upper(ca_country#59), ca_zip#58] +Join type: Inner +Join condition: None + +(190) NativeProject +Output [11]: [ss_net_paid#43, s_store_name#44, s_state#45, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52, c_first_name#54, c_last_name#55, ca_state#57] +Input [15]: [ss_net_paid#43, s_store_name#44, s_state#45, s_zip#46, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52, c_first_name#54, c_last_name#55, c_birth_country#56, #57#57, #58#58, #59#59] + +(191) NativeProject +Output [11]: [c_last_name#55 AS c_last_name#55, c_first_name#54 AS c_first_name#54, s_store_name#44 AS s_store_name#44, ca_state#57 AS ca_state#57, s_state#45 AS s_state#45, i_color#50 AS i_color#50, i_current_price#48 AS i_current_price#48, i_manager_id#52 AS i_manager_id#52, i_units#51 AS i_units#51, i_size#49 AS i_size#49, UnscaledValue(ss_net_paid#43) AS _c10#60] +Input [11]: [ss_net_paid#43, s_store_name#44, s_state#45, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52, c_first_name#54, c_last_name#55, ca_state#57] + +(192) NativeHashAggregate +Input [11]: [c_last_name#55, c_first_name#54, s_store_name#44, ca_state#57, s_state#45, i_color#50, i_current_price#48, i_manager_id#52, i_units#51, i_size#49, _c10#60] +Keys [10]: [c_last_name#55, c_first_name#54, s_store_name#44, ca_state#57, s_state#45, i_color#50, i_current_price#48, i_manager_id#52, i_units#51, i_size#49] +Functions [1]: [partial_sum(_c10#60)] +Aggregate Attributes [1]: [sum#61] +Results [11]: [c_last_name#55, c_first_name#54, s_store_name#44, ca_state#57, s_state#45, i_color#50, i_current_price#48, i_manager_id#52, i_units#51, i_size#49, #28#28] + +(193) NativeShuffleExchange +Input [11]: [c_last_name#55, c_first_name#54, s_store_name#44, ca_state#57, s_state#45, i_color#50, i_current_price#48, i_manager_id#52, i_units#51, i_size#49, #28#28] +Arguments: hashpartitioning(c_last_name#55, c_first_name#54, s_store_name#44, ca_state#57, s_state#45, i_color#50, i_current_price#48, i_manager_id#52, i_units#51, i_size#49, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(194) ShuffleQueryStage +Output [11]: [c_last_name#55, c_first_name#54, s_store_name#44, ca_state#57, s_state#45, i_color#50, i_current_price#48, i_manager_id#52, i_units#51, i_size#49, #28#28] +Arguments: X + +(195) AQEShuffleRead +Input [11]: [c_last_name#55, c_first_name#54, s_store_name#44, ca_state#57, s_state#45, i_color#50, i_current_price#48, i_manager_id#52, i_units#51, i_size#49, #28#28] +Arguments: coalesced + +(196) InputAdapter +Input [11]: [c_last_name#55, c_first_name#54, s_store_name#44, ca_state#57, s_state#45, i_color#50, i_current_price#48, i_manager_id#52, i_units#51, i_size#49, #28#28] + +(197) NativeHashAggregate +Input [11]: [c_last_name#55, c_first_name#54, s_store_name#44, ca_state#57, s_state#45, i_color#50, i_current_price#48, i_manager_id#52, i_units#51, i_size#49, #28#28] +Keys [10]: [c_last_name#55, c_first_name#54, s_store_name#44, ca_state#57, s_state#45, i_color#50, i_current_price#48, i_manager_id#52, i_units#51, i_size#49] +Functions [1]: [sum(UnscaledValue(ss_net_paid#43))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_net_paid#43))#29] +Results [11]: [c_last_name#55, c_first_name#54, s_store_name#44, ca_state#57, s_state#45, i_color#50, i_current_price#48, i_manager_id#52, i_units#51, i_size#49, sum(UnscaledValue(ss_net_paid#43))#29] + +(198) NativeProject +Output [1]: [MakeDecimal(sum(UnscaledValue(ss_net_paid#43))#29,17,2) AS netpaid#62] +Input [11]: [c_last_name#55, c_first_name#54, s_store_name#44, ca_state#57, s_state#45, i_color#50, i_current_price#48, i_manager_id#52, i_units#51, i_size#49, sum(UnscaledValue(ss_net_paid#43))#29] + +(199) NativeHashAggregate +Input [1]: [netpaid#62] +Keys: [] +Functions [1]: [partial_avg(netpaid#62)] +Aggregate Attributes [2]: [sum#63, count#64] +Results [1]: [#28#28] + +(200) NativeShuffleExchange +Input [1]: [#28#28] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=30] + +(201) ShuffleQueryStage +Output [1]: [#28#28] +Arguments: X + +(202) NativeHashAggregate +Input [1]: [#28#28] +Keys: [] +Functions [1]: [avg(netpaid#62)] +Aggregate Attributes [1]: [avg(netpaid#62)#65] +Results [1]: [avg(netpaid#62)#65] + +(203) NativeProject +Output [1]: [(0.05 * avg(netpaid#62)#65) AS (0.05 * avg(netpaid))#66] +Input [1]: [avg(netpaid#62)#65] + +(204) Scan parquet +Output [5]: [ss_item_sk#41, ss_customer_sk#42, ss_store_sk#67, ss_ticket_number#68, ss_net_paid#43] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_ticket_number), IsNotNull(ss_item_sk), IsNotNull(ss_store_sk), IsNotNull(ss_customer_sk)] +ReadSchema: struct + +(205) Filter +Input [5]: [ss_item_sk#41, ss_customer_sk#42, ss_store_sk#67, ss_ticket_number#68, ss_net_paid#43] +Condition : (((isnotnull(ss_ticket_number#68) AND isnotnull(ss_item_sk#41)) AND isnotnull(ss_store_sk#67)) AND isnotnull(ss_customer_sk#42)) + +(206) Exchange +Input [5]: [ss_item_sk#41, ss_customer_sk#42, ss_store_sk#67, ss_ticket_number#68, ss_net_paid#43] +Arguments: hashpartitioning(ss_ticket_number#68, ss_item_sk#41, 100), ENSURE_REQUIREMENTS, [plan_id=31] + +(207) Sort +Input [5]: [ss_item_sk#41, ss_customer_sk#42, ss_store_sk#67, ss_ticket_number#68, ss_net_paid#43] +Arguments: [ss_ticket_number#68 ASC NULLS FIRST, ss_item_sk#41 ASC NULLS FIRST], false, 0 + +(208) Scan parquet +Output [2]: [sr_item_sk#69, sr_ticket_number#70] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_ticket_number), IsNotNull(sr_item_sk)] +ReadSchema: struct + +(209) Filter +Input [2]: [sr_item_sk#69, sr_ticket_number#70] +Condition : (isnotnull(sr_ticket_number#70) AND isnotnull(sr_item_sk#69)) + +(210) Exchange +Input [2]: [sr_item_sk#69, sr_ticket_number#70] +Arguments: hashpartitioning(sr_ticket_number#70, sr_item_sk#69, 100), ENSURE_REQUIREMENTS, [plan_id=32] + +(211) Sort +Input [2]: [sr_item_sk#69, sr_ticket_number#70] +Arguments: [sr_ticket_number#70 ASC NULLS FIRST, sr_item_sk#69 ASC NULLS FIRST], false, 0 + +(212) SortMergeJoin +Left keys [2]: [ss_ticket_number#68, ss_item_sk#41] +Right keys [2]: [sr_ticket_number#70, sr_item_sk#69] +Join type: Inner +Join condition: None + +(213) Project +Output [4]: [ss_item_sk#41, ss_customer_sk#42, ss_store_sk#67, ss_net_paid#43] +Input [7]: [ss_item_sk#41, ss_customer_sk#42, ss_store_sk#67, ss_ticket_number#68, ss_net_paid#43, sr_item_sk#69, sr_ticket_number#70] + +(214) Exchange +Input [4]: [ss_item_sk#41, ss_customer_sk#42, ss_store_sk#67, ss_net_paid#43] +Arguments: hashpartitioning(ss_store_sk#67, 100), ENSURE_REQUIREMENTS, [plan_id=33] + +(215) Sort +Input [4]: [ss_item_sk#41, ss_customer_sk#42, ss_store_sk#67, ss_net_paid#43] +Arguments: [ss_store_sk#67 ASC NULLS FIRST], false, 0 + +(216) Scan parquet +Output [5]: [s_store_sk#71, s_store_name#44, s_market_id#72, s_state#45, s_zip#46] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_market_id), EqualTo(s_market_id,8), IsNotNull(s_store_sk), IsNotNull(s_zip)] +ReadSchema: struct + +(217) Filter +Input [5]: [s_store_sk#71, s_store_name#44, s_market_id#72, s_state#45, s_zip#46] +Condition : (((isnotnull(s_market_id#72) AND (s_market_id#72 = 8)) AND isnotnull(s_store_sk#71)) AND isnotnull(s_zip#46)) + +(218) Project +Output [4]: [s_store_sk#71, s_store_name#44, s_state#45, s_zip#46] +Input [5]: [s_store_sk#71, s_store_name#44, s_market_id#72, s_state#45, s_zip#46] + +(219) Exchange +Input [4]: [s_store_sk#71, s_store_name#44, s_state#45, s_zip#46] +Arguments: hashpartitioning(s_store_sk#71, 100), ENSURE_REQUIREMENTS, [plan_id=34] + +(220) Sort +Input [4]: [s_store_sk#71, s_store_name#44, s_state#45, s_zip#46] +Arguments: [s_store_sk#71 ASC NULLS FIRST], false, 0 + +(221) SortMergeJoin +Left keys [1]: [ss_store_sk#67] +Right keys [1]: [s_store_sk#71] +Join type: Inner +Join condition: None + +(222) Project +Output [6]: [ss_item_sk#41, ss_customer_sk#42, ss_net_paid#43, s_store_name#44, s_state#45, s_zip#46] +Input [8]: [ss_item_sk#41, ss_customer_sk#42, ss_store_sk#67, ss_net_paid#43, s_store_sk#71, s_store_name#44, s_state#45, s_zip#46] + +(223) Exchange +Input [6]: [ss_item_sk#41, ss_customer_sk#42, ss_net_paid#43, s_store_name#44, s_state#45, s_zip#46] +Arguments: hashpartitioning(ss_item_sk#41, 100), ENSURE_REQUIREMENTS, [plan_id=35] + +(224) Sort +Input [6]: [ss_item_sk#41, ss_customer_sk#42, ss_net_paid#43, s_store_name#44, s_state#45, s_zip#46] +Arguments: [ss_item_sk#41 ASC NULLS FIRST], false, 0 + +(225) Scan parquet +Output [6]: [i_item_sk#47, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(226) Filter +Input [6]: [i_item_sk#47, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52] +Condition : isnotnull(i_item_sk#47) + +(227) Exchange +Input [6]: [i_item_sk#47, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52] +Arguments: hashpartitioning(i_item_sk#47, 100), ENSURE_REQUIREMENTS, [plan_id=36] + +(228) Sort +Input [6]: [i_item_sk#47, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52] +Arguments: [i_item_sk#47 ASC NULLS FIRST], false, 0 + +(229) SortMergeJoin +Left keys [1]: [ss_item_sk#41] +Right keys [1]: [i_item_sk#47] +Join type: Inner +Join condition: None + +(230) Project +Output [10]: [ss_customer_sk#42, ss_net_paid#43, s_store_name#44, s_state#45, s_zip#46, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52] +Input [12]: [ss_item_sk#41, ss_customer_sk#42, ss_net_paid#43, s_store_name#44, s_state#45, s_zip#46, i_item_sk#47, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52] + +(231) Exchange +Input [10]: [ss_customer_sk#42, ss_net_paid#43, s_store_name#44, s_state#45, s_zip#46, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52] +Arguments: hashpartitioning(ss_customer_sk#42, 100), ENSURE_REQUIREMENTS, [plan_id=37] + +(232) Sort +Input [10]: [ss_customer_sk#42, ss_net_paid#43, s_store_name#44, s_state#45, s_zip#46, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52] +Arguments: [ss_customer_sk#42 ASC NULLS FIRST], false, 0 + +(233) Scan parquet +Output [4]: [c_customer_sk#53, c_first_name#54, c_last_name#55, c_birth_country#56] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_birth_country)] +ReadSchema: struct + +(234) Filter +Input [4]: [c_customer_sk#53, c_first_name#54, c_last_name#55, c_birth_country#56] +Condition : (isnotnull(c_customer_sk#53) AND isnotnull(c_birth_country#56)) + +(235) Exchange +Input [4]: [c_customer_sk#53, c_first_name#54, c_last_name#55, c_birth_country#56] +Arguments: hashpartitioning(c_customer_sk#53, 100), ENSURE_REQUIREMENTS, [plan_id=38] + +(236) Sort +Input [4]: [c_customer_sk#53, c_first_name#54, c_last_name#55, c_birth_country#56] +Arguments: [c_customer_sk#53 ASC NULLS FIRST], false, 0 + +(237) SortMergeJoin +Left keys [1]: [ss_customer_sk#42] +Right keys [1]: [c_customer_sk#53] +Join type: Inner +Join condition: None + +(238) Project +Output [12]: [ss_net_paid#43, s_store_name#44, s_state#45, s_zip#46, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52, c_first_name#54, c_last_name#55, c_birth_country#56] +Input [14]: [ss_customer_sk#42, ss_net_paid#43, s_store_name#44, s_state#45, s_zip#46, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52, c_customer_sk#53, c_first_name#54, c_last_name#55, c_birth_country#56] + +(239) Exchange +Input [12]: [ss_net_paid#43, s_store_name#44, s_state#45, s_zip#46, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52, c_first_name#54, c_last_name#55, c_birth_country#56] +Arguments: hashpartitioning(c_birth_country#56, s_zip#46, 100), ENSURE_REQUIREMENTS, [plan_id=39] + +(240) Sort +Input [12]: [ss_net_paid#43, s_store_name#44, s_state#45, s_zip#46, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52, c_first_name#54, c_last_name#55, c_birth_country#56] +Arguments: [c_birth_country#56 ASC NULLS FIRST, s_zip#46 ASC NULLS FIRST], false, 0 + +(241) Scan parquet +Output [3]: [ca_state#57, ca_zip#58, ca_country#59] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_country), IsNotNull(ca_zip)] +ReadSchema: struct + +(242) Filter +Input [3]: [ca_state#57, ca_zip#58, ca_country#59] +Condition : (isnotnull(ca_country#59) AND isnotnull(ca_zip#58)) + +(243) Exchange +Input [3]: [ca_state#57, ca_zip#58, ca_country#59] +Arguments: hashpartitioning(upper(ca_country#59), ca_zip#58, 100), ENSURE_REQUIREMENTS, [plan_id=40] + +(244) Sort +Input [3]: [ca_state#57, ca_zip#58, ca_country#59] +Arguments: [upper(ca_country#59) ASC NULLS FIRST, ca_zip#58 ASC NULLS FIRST], false, 0 + +(245) SortMergeJoin +Left keys [2]: [c_birth_country#56, s_zip#46] +Right keys [2]: [upper(ca_country#59), ca_zip#58] +Join type: Inner +Join condition: None + +(246) Project +Output [11]: [ss_net_paid#43, s_store_name#44, s_state#45, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52, c_first_name#54, c_last_name#55, ca_state#57] +Input [15]: [ss_net_paid#43, s_store_name#44, s_state#45, s_zip#46, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52, c_first_name#54, c_last_name#55, c_birth_country#56, ca_state#57, ca_zip#58, ca_country#59] + +(247) HashAggregate +Input [11]: [ss_net_paid#43, s_store_name#44, s_state#45, i_current_price#48, i_size#49, i_color#50, i_units#51, i_manager_id#52, c_first_name#54, c_last_name#55, ca_state#57] +Keys [10]: [c_last_name#55, c_first_name#54, s_store_name#44, ca_state#57, s_state#45, i_color#50, i_current_price#48, i_manager_id#52, i_units#51, i_size#49] +Functions [1]: [partial_sum(UnscaledValue(ss_net_paid#43))] +Aggregate Attributes [1]: [sum#61] +Results [11]: [c_last_name#55, c_first_name#54, s_store_name#44, ca_state#57, s_state#45, i_color#50, i_current_price#48, i_manager_id#52, i_units#51, i_size#49, sum#73] + +(248) Exchange +Input [11]: [c_last_name#55, c_first_name#54, s_store_name#44, ca_state#57, s_state#45, i_color#50, i_current_price#48, i_manager_id#52, i_units#51, i_size#49, sum#73] +Arguments: hashpartitioning(c_last_name#55, c_first_name#54, s_store_name#44, ca_state#57, s_state#45, i_color#50, i_current_price#48, i_manager_id#52, i_units#51, i_size#49, 100), ENSURE_REQUIREMENTS, [plan_id=41] + +(249) HashAggregate +Input [11]: [c_last_name#55, c_first_name#54, s_store_name#44, ca_state#57, s_state#45, i_color#50, i_current_price#48, i_manager_id#52, i_units#51, i_size#49, sum#73] +Keys [10]: [c_last_name#55, c_first_name#54, s_store_name#44, ca_state#57, s_state#45, i_color#50, i_current_price#48, i_manager_id#52, i_units#51, i_size#49] +Functions [1]: [sum(UnscaledValue(ss_net_paid#43))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_net_paid#43))#29] +Results [1]: [MakeDecimal(sum(UnscaledValue(ss_net_paid#43))#29,17,2) AS netpaid#62] + +(250) HashAggregate +Input [1]: [netpaid#62] +Keys: [] +Functions [1]: [partial_avg(netpaid#62)] +Aggregate Attributes [2]: [sum#63, count#64] +Results [2]: [sum#74, count#75] + +(251) Exchange +Input [2]: [sum#74, count#75] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=42] + +(252) HashAggregate +Input [2]: [sum#74, count#75] +Keys: [] +Functions [1]: [avg(netpaid#62)] +Aggregate Attributes [1]: [avg(netpaid#62)#65] +Results [1]: [(0.05 * avg(netpaid#62)#65) AS (0.05 * avg(netpaid))#66] + +(253) AdaptiveSparkPlan +Output [1]: [(0.05 * avg(netpaid))#66] +Arguments: isFinalPlan=true + + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q25.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q25.txt new file mode 100644 index 000000000..196c8646b --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q25.txt @@ -0,0 +1,984 @@ +== Physical Plan == +AdaptiveSparkPlan (182) ++- == Final Plan == + NativeProject (116) + +- NativeHashAggregate (115) + +- InputAdapter (114) + +- AQEShuffleRead (113) + +- ShuffleQueryStage (112), Statistics(X) + +- NativeShuffleExchange (111) + +- NativeHashAggregate (110) + +- NativeProject (109) + +- NativeProject (108) + +- NativeSortMergeJoin Inner (107) + :- NativeSort (98) + : +- InputAdapter (97) + : +- AQEShuffleRead (96) + : +- ShuffleQueryStage (95), Statistics(X) + : +- NativeShuffleExchange (94) + : +- NativeProject (93) + : +- NativeSortMergeJoin Inner (92) + : :- NativeSort (83) + : : +- InputAdapter (82) + : : +- AQEShuffleRead (81) + : : +- ShuffleQueryStage (80), Statistics(X) + : : +- NativeShuffleExchange (79) + : : +- NativeProject (78) + : : +- NativeSortMergeJoin Inner (77) + : : :- NativeSort (70) + : : : +- InputAdapter (69) + : : : +- AQEShuffleRead (68) + : : : +- ShuffleQueryStage (67), Statistics(X) + : : : +- NativeShuffleExchange (66) + : : : +- NativeProject (65) + : : : +- NativeSortMergeJoin Inner (64) + : : : :- NativeSort (54) + : : : : +- InputAdapter (53) + : : : : +- AQEShuffleRead (52) + : : : : +- ShuffleQueryStage (51), Statistics(X) + : : : : +- NativeShuffleExchange (50) + : : : : +- NativeProject (49) + : : : : +- NativeSortMergeJoin Inner (48) + : : : : :- NativeSort (38) + : : : : : +- InputAdapter (37) + : : : : : +- AQEShuffleRead (36) + : : : : : +- ShuffleQueryStage (35), Statistics(X) + : : : : : +- NativeShuffleExchange (34) + : : : : : +- NativeProject (33) + : : : : : +- NativeSortMergeJoin Inner (32) + : : : : : :- NativeSort (23) + : : : : : : +- InputAdapter (22) + : : : : : : +- AQEShuffleRead (21) + : : : : : : +- ShuffleQueryStage (20), Statistics(X) + : : : : : : +- NativeShuffleExchange (19) + : : : : : : +- NativeProject (18) + : : : : : : +- NativeSortMergeJoin Inner (17) + : : : : : : :- NativeSort (8) + : : : : : : : +- InputAdapter (7) + : : : : : : : +- AQEShuffleRead (6) + : : : : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : : : : +- NativeShuffleExchange (4) + : : : : : : : +- NativeFilter (3) + : : : : : : : +- InputAdapter (2) + : : : : : : : +- NativeParquetScan (1) + : : : : : : +- NativeSort (16) + : : : : : : +- InputAdapter (15) + : : : : : : +- AQEShuffleRead (14) + : : : : : : +- ShuffleQueryStage (13), Statistics(X) + : : : : : : +- NativeShuffleExchange (12) + : : : : : : +- NativeFilter (11) + : : : : : : +- InputAdapter (10) + : : : : : : +- NativeParquetScan (9) + : : : : : +- NativeSort (31) + : : : : : +- InputAdapter (30) + : : : : : +- AQEShuffleRead (29) + : : : : : +- ShuffleQueryStage (28), Statistics(X) + : : : : : +- NativeShuffleExchange (27) + : : : : : +- NativeFilter (26) + : : : : : +- InputAdapter (25) + : : : : : +- NativeParquetScan (24) + : : : : +- NativeSort (47) + : : : : +- InputAdapter (46) + : : : : +- AQEShuffleRead (45) + : : : : +- ShuffleQueryStage (44), Statistics(X) + : : : : +- NativeShuffleExchange (43) + : : : : +- NativeProject (42) + : : : : +- NativeFilter (41) + : : : : +- InputAdapter (40) + : : : : +- NativeParquetScan (39) + : : : +- NativeSort (63) + : : : +- InputAdapter (62) + : : : +- AQEShuffleRead (61) + : : : +- ShuffleQueryStage (60), Statistics(X) + : : : +- NativeShuffleExchange (59) + : : : +- NativeProject (58) + : : : +- NativeFilter (57) + : : : +- InputAdapter (56) + : : : +- NativeParquetScan (55) + : : +- NativeSort (76) + : : +- InputAdapter (75) + : : +- InputAdapter (74) + : : +- AQEShuffleRead (73) + : : +- ShuffleQueryStage (72), Statistics(X) + : : +- ReusedExchange (71) + : +- NativeSort (91) + : +- InputAdapter (90) + : +- AQEShuffleRead (89) + : +- ShuffleQueryStage (88), Statistics(X) + : +- NativeShuffleExchange (87) + : +- NativeFilter (86) + : +- InputAdapter (85) + : +- NativeParquetScan (84) + +- NativeSort (106) + +- InputAdapter (105) + +- AQEShuffleRead (104) + +- ShuffleQueryStage (103), Statistics(X) + +- NativeShuffleExchange (102) + +- NativeFilter (101) + +- InputAdapter (100) + +- NativeParquetScan (99) ++- == Initial Plan == + TakeOrderedAndProject (181) + +- HashAggregate (180) + +- Exchange (179) + +- HashAggregate (178) + +- Project (177) + +- SortMergeJoin Inner (176) + :- Sort (171) + : +- Exchange (170) + : +- Project (169) + : +- SortMergeJoin Inner (168) + : :- Sort (163) + : : +- Exchange (162) + : : +- Project (161) + : : +- SortMergeJoin Inner (160) + : : :- Sort (154) + : : : +- Exchange (153) + : : : +- Project (152) + : : : +- SortMergeJoin Inner (151) + : : : :- Sort (145) + : : : : +- Exchange (144) + : : : : +- Project (143) + : : : : +- SortMergeJoin Inner (142) + : : : : :- Sort (136) + : : : : : +- Exchange (135) + : : : : : +- Project (134) + : : : : : +- SortMergeJoin Inner (133) + : : : : : :- Sort (128) + : : : : : : +- Exchange (127) + : : : : : : +- Project (126) + : : : : : : +- SortMergeJoin Inner (125) + : : : : : : :- Sort (120) + : : : : : : : +- Exchange (119) + : : : : : : : +- Filter (118) + : : : : : : : +- Scan parquet (117) + : : : : : : +- Sort (124) + : : : : : : +- Exchange (123) + : : : : : : +- Filter (122) + : : : : : : +- Scan parquet (121) + : : : : : +- Sort (132) + : : : : : +- Exchange (131) + : : : : : +- Filter (130) + : : : : : +- Scan parquet (129) + : : : : +- Sort (141) + : : : : +- Exchange (140) + : : : : +- Project (139) + : : : : +- Filter (138) + : : : : +- Scan parquet (137) + : : : +- Sort (150) + : : : +- Exchange (149) + : : : +- Project (148) + : : : +- Filter (147) + : : : +- Scan parquet (146) + : : +- Sort (159) + : : +- Exchange (158) + : : +- Project (157) + : : +- Filter (156) + : : +- Scan parquet (155) + : +- Sort (167) + : +- Exchange (166) + : +- Filter (165) + : +- Scan parquet (164) + +- Sort (175) + +- Exchange (174) + +- Filter (173) + +- Scan parquet (172) + + +(117) Scan parquet +Output [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_ticket_number#5, ss_net_profit#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk), IsNotNull(ss_item_sk), IsNotNull(ss_ticket_number), IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_ticket_number#5, ss_net_profit#6] +Arguments: [#1, #2, #3, #4, #5, #6] + +(3) NativeFilter +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Condition : ((((isnotnull(ss_customer_sk#3) AND isnotnull(ss_item_sk#2)) AND isnotnull(ss_ticket_number#5)) AND isnotnull(ss_sold_date_sk#1)) AND isnotnull(ss_store_sk#4)) + +(4) NativeShuffleExchange +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Arguments: hashpartitioning(ss_customer_sk#3, ss_item_sk#2, ss_ticket_number#5, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Arguments: X + +(6) AQEShuffleRead +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Arguments: coalesced + +(7) InputAdapter +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] + +(8) NativeSort +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Arguments: [ss_customer_sk#3 ASC NULLS FIRST, ss_item_sk#2 ASC NULLS FIRST, ss_ticket_number#5 ASC NULLS FIRST], false + +(121) Scan parquet +Output [5]: [sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_ticket_number#10, sr_net_loss#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_customer_sk), IsNotNull(sr_item_sk), IsNotNull(sr_ticket_number), IsNotNull(sr_returned_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [5]: [sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_ticket_number#10, sr_net_loss#11] +Arguments: [#7, #8, #9, #10, #11] + +(11) NativeFilter +Input [5]: [#7#7, #8#8, #9#9, #10#10, #11#11] +Condition : (((isnotnull(sr_customer_sk#9) AND isnotnull(sr_item_sk#8)) AND isnotnull(sr_ticket_number#10)) AND isnotnull(sr_returned_date_sk#7)) + +(12) NativeShuffleExchange +Input [5]: [#7#7, #8#8, #9#9, #10#10, #11#11] +Arguments: hashpartitioning(sr_customer_sk#9, sr_item_sk#8, sr_ticket_number#10, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [5]: [#7#7, #8#8, #9#9, #10#10, #11#11] +Arguments: X + +(14) AQEShuffleRead +Input [5]: [#7#7, #8#8, #9#9, #10#10, #11#11] +Arguments: coalesced + +(15) InputAdapter +Input [5]: [#7#7, #8#8, #9#9, #10#10, #11#11] + +(16) NativeSort +Input [5]: [#7#7, #8#8, #9#9, #10#10, #11#11] +Arguments: [sr_customer_sk#9 ASC NULLS FIRST, sr_item_sk#8 ASC NULLS FIRST, sr_ticket_number#10 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [3]: [ss_customer_sk#3, ss_item_sk#2, ss_ticket_number#5] +Right keys [3]: [sr_customer_sk#9, sr_item_sk#8, sr_ticket_number#10] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_net_loss#11] +Input [11]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9, #10#10, #11#11] + +(19) NativeShuffleExchange +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_net_loss#11] +Arguments: hashpartitioning(sr_customer_sk#9, sr_item_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_net_loss#11] +Arguments: X + +(21) AQEShuffleRead +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_net_loss#11] +Arguments: coalesced + +(22) InputAdapter +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_net_loss#11] + +(23) NativeSort +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_net_loss#11] +Arguments: [sr_customer_sk#9 ASC NULLS FIRST, sr_item_sk#8 ASC NULLS FIRST], false + +(129) Scan parquet +Output [4]: [cs_sold_date_sk#12, cs_bill_customer_sk#13, cs_item_sk#14, cs_net_profit#15] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_bill_customer_sk), IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(25) InputAdapter +Input [4]: [cs_sold_date_sk#12, cs_bill_customer_sk#13, cs_item_sk#14, cs_net_profit#15] +Arguments: [#12, #13, #14, #15] + +(26) NativeFilter +Input [4]: [#12#12, #13#13, #14#14, #15#15] +Condition : ((isnotnull(cs_bill_customer_sk#13) AND isnotnull(cs_item_sk#14)) AND isnotnull(cs_sold_date_sk#12)) + +(27) NativeShuffleExchange +Input [4]: [#12#12, #13#13, #14#14, #15#15] +Arguments: hashpartitioning(cs_bill_customer_sk#13, cs_item_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(28) ShuffleQueryStage +Output [4]: [#12#12, #13#13, #14#14, #15#15] +Arguments: X + +(29) AQEShuffleRead +Input [4]: [#12#12, #13#13, #14#14, #15#15] +Arguments: coalesced + +(30) InputAdapter +Input [4]: [#12#12, #13#13, #14#14, #15#15] + +(31) NativeSort +Input [4]: [#12#12, #13#13, #14#14, #15#15] +Arguments: [cs_bill_customer_sk#13 ASC NULLS FIRST, cs_item_sk#14 ASC NULLS FIRST], false + +(32) NativeSortMergeJoin +Left keys [2]: [sr_customer_sk#9, sr_item_sk#8] +Right keys [2]: [cs_bill_customer_sk#13, cs_item_sk#14] +Join type: Inner +Join condition: None + +(33) NativeProject +Output [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15] +Input [12]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_net_loss#11, #12#12, #13#13, #14#14, #15#15] + +(34) NativeShuffleExchange +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(35) ShuffleQueryStage +Output [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15] +Arguments: X + +(36) AQEShuffleRead +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15] +Arguments: coalesced + +(37) InputAdapter +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15] + +(38) NativeSort +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(137) Scan parquet +Output [3]: [d_date_sk#16, d_year#17, d_moy#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_moy), IsNotNull(d_year), EqualTo(d_moy,4), EqualTo(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(40) InputAdapter +Input [3]: [d_date_sk#16, d_year#17, d_moy#18] +Arguments: [#16, #17, #18] + +(41) NativeFilter +Input [3]: [#16#16, #17#17, #18#18] +Condition : ((((isnotnull(d_moy#18) AND isnotnull(d_year#17)) AND (d_moy#18 = 4)) AND (d_year#17 = 2001)) AND isnotnull(d_date_sk#16)) + +(42) NativeProject +Output [1]: [d_date_sk#16] +Input [3]: [#16#16, #17#17, #18#18] + +(43) NativeShuffleExchange +Input [1]: [d_date_sk#16] +Arguments: hashpartitioning(d_date_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) ShuffleQueryStage +Output [1]: [d_date_sk#16] +Arguments: X + +(45) AQEShuffleRead +Input [1]: [d_date_sk#16] +Arguments: coalesced + +(46) InputAdapter +Input [1]: [d_date_sk#16] + +(47) NativeSort +Input [1]: [d_date_sk#16] +Arguments: [d_date_sk#16 ASC NULLS FIRST], false + +(48) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#16] +Join type: Inner +Join condition: None + +(49) NativeProject +Output [7]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15] +Input [9]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15, d_date_sk#16] + +(50) NativeShuffleExchange +Input [7]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15] +Arguments: hashpartitioning(sr_returned_date_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(51) ShuffleQueryStage +Output [7]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15] +Arguments: X + +(52) AQEShuffleRead +Input [7]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15] +Arguments: coalesced + +(53) InputAdapter +Input [7]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15] + +(54) NativeSort +Input [7]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15] +Arguments: [sr_returned_date_sk#7 ASC NULLS FIRST], false + +(146) Scan parquet +Output [3]: [d_date_sk#19, d_year#20, d_moy#21] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_moy), IsNotNull(d_year), GreaterThanOrEqual(d_moy,4), LessThanOrEqual(d_moy,10), EqualTo(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(56) InputAdapter +Input [3]: [d_date_sk#19, d_year#20, d_moy#21] +Arguments: [#19, #20, #21] + +(57) NativeFilter +Input [3]: [#19#19, #20#20, #21#21] +Condition : (((((isnotnull(d_moy#21) AND isnotnull(d_year#20)) AND (d_moy#21 >= 4)) AND (d_moy#21 <= 10)) AND (d_year#20 = 2001)) AND isnotnull(d_date_sk#19)) + +(58) NativeProject +Output [1]: [d_date_sk#19] +Input [3]: [#19#19, #20#20, #21#21] + +(59) NativeShuffleExchange +Input [1]: [d_date_sk#19] +Arguments: hashpartitioning(d_date_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(60) ShuffleQueryStage +Output [1]: [d_date_sk#19] +Arguments: X + +(61) AQEShuffleRead +Input [1]: [d_date_sk#19] +Arguments: coalesced + +(62) InputAdapter +Input [1]: [d_date_sk#19] + +(63) NativeSort +Input [1]: [d_date_sk#19] +Arguments: [d_date_sk#19 ASC NULLS FIRST], false + +(64) NativeSortMergeJoin +Left keys [1]: [sr_returned_date_sk#7] +Right keys [1]: [d_date_sk#19] +Join type: Inner +Join condition: None + +(65) NativeProject +Output [6]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15] +Input [8]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15, d_date_sk#19] + +(66) NativeShuffleExchange +Input [6]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15] +Arguments: hashpartitioning(cs_sold_date_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(67) ShuffleQueryStage +Output [6]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15] +Arguments: X + +(68) AQEShuffleRead +Input [6]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15] +Arguments: coalesced + +(69) InputAdapter +Input [6]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15] + +(70) NativeSort +Input [6]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15] +Arguments: [cs_sold_date_sk#12 ASC NULLS FIRST], false + +(71) ReusedExchange [Reuses operator id: 59] +Output [1]: [d_date_sk#22] + +(72) ShuffleQueryStage +Output [1]: [d_date_sk#22] +Arguments: X + +(73) AQEShuffleRead +Input [1]: [d_date_sk#22] +Arguments: coalesced + +(74) InputAdapter +Input [1]: [d_date_sk#22] +Arguments: [#22] + +(75) InputAdapter +Input [1]: [#22#22] + +(76) NativeSort +Input [1]: [#22#22] +Arguments: [d_date_sk#22 ASC NULLS FIRST], false + +(77) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#12] +Right keys [1]: [d_date_sk#22] +Join type: Inner +Join condition: None + +(78) NativeProject +Output [5]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_net_loss#11, cs_net_profit#15] +Input [7]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15, #22#22] + +(79) NativeShuffleExchange +Input [5]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_net_loss#11, cs_net_profit#15] +Arguments: hashpartitioning(ss_store_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(80) ShuffleQueryStage +Output [5]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_net_loss#11, cs_net_profit#15] +Arguments: X + +(81) AQEShuffleRead +Input [5]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_net_loss#11, cs_net_profit#15] +Arguments: coalesced + +(82) InputAdapter +Input [5]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_net_loss#11, cs_net_profit#15] + +(83) NativeSort +Input [5]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_net_loss#11, cs_net_profit#15] +Arguments: [ss_store_sk#4 ASC NULLS FIRST], false + +(164) Scan parquet +Output [3]: [s_store_sk#23, s_store_id#24, s_store_name#25] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(85) InputAdapter +Input [3]: [s_store_sk#23, s_store_id#24, s_store_name#25] +Arguments: [#23, #24, #25] + +(86) NativeFilter +Input [3]: [#23#23, #24#24, #25#25] +Condition : isnotnull(s_store_sk#23) + +(87) NativeShuffleExchange +Input [3]: [#23#23, #24#24, #25#25] +Arguments: hashpartitioning(s_store_sk#23, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(88) ShuffleQueryStage +Output [3]: [#23#23, #24#24, #25#25] +Arguments: X + +(89) AQEShuffleRead +Input [3]: [#23#23, #24#24, #25#25] +Arguments: coalesced + +(90) InputAdapter +Input [3]: [#23#23, #24#24, #25#25] + +(91) NativeSort +Input [3]: [#23#23, #24#24, #25#25] +Arguments: [s_store_sk#23 ASC NULLS FIRST], false + +(92) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#4] +Right keys [1]: [s_store_sk#23] +Join type: Inner +Join condition: None + +(93) NativeProject +Output [6]: [ss_item_sk#2, ss_net_profit#6, sr_net_loss#11, cs_net_profit#15, s_store_id#24, s_store_name#25] +Input [8]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_net_loss#11, cs_net_profit#15, #23#23, #24#24, #25#25] + +(94) NativeShuffleExchange +Input [6]: [ss_item_sk#2, ss_net_profit#6, sr_net_loss#11, cs_net_profit#15, s_store_id#24, s_store_name#25] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(95) ShuffleQueryStage +Output [6]: [ss_item_sk#2, ss_net_profit#6, sr_net_loss#11, cs_net_profit#15, s_store_id#24, s_store_name#25] +Arguments: X + +(96) AQEShuffleRead +Input [6]: [ss_item_sk#2, ss_net_profit#6, sr_net_loss#11, cs_net_profit#15, s_store_id#24, s_store_name#25] +Arguments: coalesced + +(97) InputAdapter +Input [6]: [ss_item_sk#2, ss_net_profit#6, sr_net_loss#11, cs_net_profit#15, s_store_id#24, s_store_name#25] + +(98) NativeSort +Input [6]: [ss_item_sk#2, ss_net_profit#6, sr_net_loss#11, cs_net_profit#15, s_store_id#24, s_store_name#25] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false + +(172) Scan parquet +Output [3]: [i_item_sk#26, i_item_id#27, i_item_desc#28] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(100) InputAdapter +Input [3]: [i_item_sk#26, i_item_id#27, i_item_desc#28] +Arguments: [#26, #27, #28] + +(101) NativeFilter +Input [3]: [#26#26, #27#27, #28#28] +Condition : isnotnull(i_item_sk#26) + +(102) NativeShuffleExchange +Input [3]: [#26#26, #27#27, #28#28] +Arguments: hashpartitioning(i_item_sk#26, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(103) ShuffleQueryStage +Output [3]: [#26#26, #27#27, #28#28] +Arguments: X + +(104) AQEShuffleRead +Input [3]: [#26#26, #27#27, #28#28] +Arguments: coalesced + +(105) InputAdapter +Input [3]: [#26#26, #27#27, #28#28] + +(106) NativeSort +Input [3]: [#26#26, #27#27, #28#28] +Arguments: [i_item_sk#26 ASC NULLS FIRST], false + +(107) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#26] +Join type: Inner +Join condition: None + +(108) NativeProject +Output [7]: [ss_net_profit#6, sr_net_loss#11, cs_net_profit#15, s_store_id#24, s_store_name#25, i_item_id#27, i_item_desc#28] +Input [9]: [ss_item_sk#2, ss_net_profit#6, sr_net_loss#11, cs_net_profit#15, s_store_id#24, s_store_name#25, #26#26, #27#27, #28#28] + +(109) NativeProject +Output [7]: [i_item_id#27 AS i_item_id#27, i_item_desc#28 AS i_item_desc#28, s_store_id#24 AS s_store_id#24, s_store_name#25 AS s_store_name#25, UnscaledValue(ss_net_profit#6) AS _c4#29, UnscaledValue(sr_net_loss#11) AS _c5#30, UnscaledValue(cs_net_profit#15) AS _c6#31] +Input [7]: [ss_net_profit#6, sr_net_loss#11, cs_net_profit#15, s_store_id#24, s_store_name#25, i_item_id#27, i_item_desc#28] + +(110) NativeHashAggregate +Input [7]: [i_item_id#27, i_item_desc#28, s_store_id#24, s_store_name#25, _c4#29, _c5#30, _c6#31] +Keys [4]: [i_item_id#27, i_item_desc#28, s_store_id#24, s_store_name#25] +Functions [3]: [partial_sum(_c4#29), partial_sum(_c5#30), partial_sum(_c6#31)] +Aggregate Attributes [3]: [sum#32, sum#33, sum#34] +Results [5]: [i_item_id#27, i_item_desc#28, s_store_id#24, s_store_name#25, #35#35] + +(111) NativeShuffleExchange +Input [5]: [i_item_id#27, i_item_desc#28, s_store_id#24, s_store_name#25, #35#35] +Arguments: hashpartitioning(i_item_id#27, i_item_desc#28, s_store_id#24, s_store_name#25, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(112) ShuffleQueryStage +Output [5]: [i_item_id#27, i_item_desc#28, s_store_id#24, s_store_name#25, #35#35] +Arguments: X + +(113) AQEShuffleRead +Input [5]: [i_item_id#27, i_item_desc#28, s_store_id#24, s_store_name#25, #35#35] +Arguments: coalesced + +(114) InputAdapter +Input [5]: [i_item_id#27, i_item_desc#28, s_store_id#24, s_store_name#25, #35#35] + +(115) NativeHashAggregate +Input [5]: [i_item_id#27, i_item_desc#28, s_store_id#24, s_store_name#25, #35#35] +Keys [4]: [i_item_id#27, i_item_desc#28, s_store_id#24, s_store_name#25] +Functions [3]: [sum(UnscaledValue(ss_net_profit#6)), sum(UnscaledValue(sr_net_loss#11)), sum(UnscaledValue(cs_net_profit#15))] +Aggregate Attributes [3]: [sum(UnscaledValue(ss_net_profit#6))#36, sum(UnscaledValue(sr_net_loss#11))#37, sum(UnscaledValue(cs_net_profit#15))#38] +Results [7]: [i_item_id#27, i_item_desc#28, s_store_id#24, s_store_name#25, sum(UnscaledValue(ss_net_profit#6))#36, sum(UnscaledValue(sr_net_loss#11))#37, sum(UnscaledValue(cs_net_profit#15))#38] + +(116) NativeProject +Output [7]: [i_item_id#27, i_item_desc#28, s_store_id#24, s_store_name#25, MakeDecimal(sum(UnscaledValue(ss_net_profit#6))#36,17,2) AS store_sales_profit#39, MakeDecimal(sum(UnscaledValue(sr_net_loss#11))#37,17,2) AS store_returns_loss#40, MakeDecimal(sum(UnscaledValue(cs_net_profit#15))#38,17,2) AS catalog_sales_profit#41] +Input [7]: [i_item_id#27, i_item_desc#28, s_store_id#24, s_store_name#25, sum(UnscaledValue(ss_net_profit#6))#36, sum(UnscaledValue(sr_net_loss#11))#37, sum(UnscaledValue(cs_net_profit#15))#38] + +(117) Scan parquet +Output [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_ticket_number#5, ss_net_profit#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk), IsNotNull(ss_item_sk), IsNotNull(ss_ticket_number), IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(118) Filter +Input [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_ticket_number#5, ss_net_profit#6] +Condition : ((((isnotnull(ss_customer_sk#3) AND isnotnull(ss_item_sk#2)) AND isnotnull(ss_ticket_number#5)) AND isnotnull(ss_sold_date_sk#1)) AND isnotnull(ss_store_sk#4)) + +(119) Exchange +Input [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_ticket_number#5, ss_net_profit#6] +Arguments: hashpartitioning(ss_customer_sk#3, ss_item_sk#2, ss_ticket_number#5, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(120) Sort +Input [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_ticket_number#5, ss_net_profit#6] +Arguments: [ss_customer_sk#3 ASC NULLS FIRST, ss_item_sk#2 ASC NULLS FIRST, ss_ticket_number#5 ASC NULLS FIRST], false, 0 + +(121) Scan parquet +Output [5]: [sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_ticket_number#10, sr_net_loss#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_customer_sk), IsNotNull(sr_item_sk), IsNotNull(sr_ticket_number), IsNotNull(sr_returned_date_sk)] +ReadSchema: struct + +(122) Filter +Input [5]: [sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_ticket_number#10, sr_net_loss#11] +Condition : (((isnotnull(sr_customer_sk#9) AND isnotnull(sr_item_sk#8)) AND isnotnull(sr_ticket_number#10)) AND isnotnull(sr_returned_date_sk#7)) + +(123) Exchange +Input [5]: [sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_ticket_number#10, sr_net_loss#11] +Arguments: hashpartitioning(sr_customer_sk#9, sr_item_sk#8, sr_ticket_number#10, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(124) Sort +Input [5]: [sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_ticket_number#10, sr_net_loss#11] +Arguments: [sr_customer_sk#9 ASC NULLS FIRST, sr_item_sk#8 ASC NULLS FIRST, sr_ticket_number#10 ASC NULLS FIRST], false, 0 + +(125) SortMergeJoin +Left keys [3]: [ss_customer_sk#3, ss_item_sk#2, ss_ticket_number#5] +Right keys [3]: [sr_customer_sk#9, sr_item_sk#8, sr_ticket_number#10] +Join type: Inner +Join condition: None + +(126) Project +Output [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_net_loss#11] +Input [11]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_ticket_number#5, ss_net_profit#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_ticket_number#10, sr_net_loss#11] + +(127) Exchange +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_net_loss#11] +Arguments: hashpartitioning(sr_customer_sk#9, sr_item_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(128) Sort +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_net_loss#11] +Arguments: [sr_customer_sk#9 ASC NULLS FIRST, sr_item_sk#8 ASC NULLS FIRST], false, 0 + +(129) Scan parquet +Output [4]: [cs_sold_date_sk#12, cs_bill_customer_sk#13, cs_item_sk#14, cs_net_profit#15] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_bill_customer_sk), IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(130) Filter +Input [4]: [cs_sold_date_sk#12, cs_bill_customer_sk#13, cs_item_sk#14, cs_net_profit#15] +Condition : ((isnotnull(cs_bill_customer_sk#13) AND isnotnull(cs_item_sk#14)) AND isnotnull(cs_sold_date_sk#12)) + +(131) Exchange +Input [4]: [cs_sold_date_sk#12, cs_bill_customer_sk#13, cs_item_sk#14, cs_net_profit#15] +Arguments: hashpartitioning(cs_bill_customer_sk#13, cs_item_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(132) Sort +Input [4]: [cs_sold_date_sk#12, cs_bill_customer_sk#13, cs_item_sk#14, cs_net_profit#15] +Arguments: [cs_bill_customer_sk#13 ASC NULLS FIRST, cs_item_sk#14 ASC NULLS FIRST], false, 0 + +(133) SortMergeJoin +Left keys [2]: [sr_customer_sk#9, sr_item_sk#8] +Right keys [2]: [cs_bill_customer_sk#13, cs_item_sk#14] +Join type: Inner +Join condition: None + +(134) Project +Output [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15] +Input [12]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_net_loss#11, cs_sold_date_sk#12, cs_bill_customer_sk#13, cs_item_sk#14, cs_net_profit#15] + +(135) Exchange +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(136) Sort +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(137) Scan parquet +Output [3]: [d_date_sk#16, d_year#17, d_moy#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_moy), IsNotNull(d_year), EqualTo(d_moy,4), EqualTo(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(138) Filter +Input [3]: [d_date_sk#16, d_year#17, d_moy#18] +Condition : ((((isnotnull(d_moy#18) AND isnotnull(d_year#17)) AND (d_moy#18 = 4)) AND (d_year#17 = 2001)) AND isnotnull(d_date_sk#16)) + +(139) Project +Output [1]: [d_date_sk#16] +Input [3]: [d_date_sk#16, d_year#17, d_moy#18] + +(140) Exchange +Input [1]: [d_date_sk#16] +Arguments: hashpartitioning(d_date_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(141) Sort +Input [1]: [d_date_sk#16] +Arguments: [d_date_sk#16 ASC NULLS FIRST], false, 0 + +(142) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#16] +Join type: Inner +Join condition: None + +(143) Project +Output [7]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15] +Input [9]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15, d_date_sk#16] + +(144) Exchange +Input [7]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15] +Arguments: hashpartitioning(sr_returned_date_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(145) Sort +Input [7]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15] +Arguments: [sr_returned_date_sk#7 ASC NULLS FIRST], false, 0 + +(146) Scan parquet +Output [3]: [d_date_sk#19, d_year#20, d_moy#21] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_moy), IsNotNull(d_year), GreaterThanOrEqual(d_moy,4), LessThanOrEqual(d_moy,10), EqualTo(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(147) Filter +Input [3]: [d_date_sk#19, d_year#20, d_moy#21] +Condition : (((((isnotnull(d_moy#21) AND isnotnull(d_year#20)) AND (d_moy#21 >= 4)) AND (d_moy#21 <= 10)) AND (d_year#20 = 2001)) AND isnotnull(d_date_sk#19)) + +(148) Project +Output [1]: [d_date_sk#19] +Input [3]: [d_date_sk#19, d_year#20, d_moy#21] + +(149) Exchange +Input [1]: [d_date_sk#19] +Arguments: hashpartitioning(d_date_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(150) Sort +Input [1]: [d_date_sk#19] +Arguments: [d_date_sk#19 ASC NULLS FIRST], false, 0 + +(151) SortMergeJoin +Left keys [1]: [sr_returned_date_sk#7] +Right keys [1]: [d_date_sk#19] +Join type: Inner +Join condition: None + +(152) Project +Output [6]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15] +Input [8]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_returned_date_sk#7, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15, d_date_sk#19] + +(153) Exchange +Input [6]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15] +Arguments: hashpartitioning(cs_sold_date_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(154) Sort +Input [6]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15] +Arguments: [cs_sold_date_sk#12 ASC NULLS FIRST], false, 0 + +(155) Scan parquet +Output [3]: [d_date_sk#22, d_year#42, d_moy#43] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_moy), IsNotNull(d_year), GreaterThanOrEqual(d_moy,4), LessThanOrEqual(d_moy,10), EqualTo(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(156) Filter +Input [3]: [d_date_sk#22, d_year#42, d_moy#43] +Condition : (((((isnotnull(d_moy#43) AND isnotnull(d_year#42)) AND (d_moy#43 >= 4)) AND (d_moy#43 <= 10)) AND (d_year#42 = 2001)) AND isnotnull(d_date_sk#22)) + +(157) Project +Output [1]: [d_date_sk#22] +Input [3]: [d_date_sk#22, d_year#42, d_moy#43] + +(158) Exchange +Input [1]: [d_date_sk#22] +Arguments: hashpartitioning(d_date_sk#22, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(159) Sort +Input [1]: [d_date_sk#22] +Arguments: [d_date_sk#22 ASC NULLS FIRST], false, 0 + +(160) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#12] +Right keys [1]: [d_date_sk#22] +Join type: Inner +Join condition: None + +(161) Project +Output [5]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_net_loss#11, cs_net_profit#15] +Input [7]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_net_loss#11, cs_sold_date_sk#12, cs_net_profit#15, d_date_sk#22] + +(162) Exchange +Input [5]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_net_loss#11, cs_net_profit#15] +Arguments: hashpartitioning(ss_store_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(163) Sort +Input [5]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_net_loss#11, cs_net_profit#15] +Arguments: [ss_store_sk#4 ASC NULLS FIRST], false, 0 + +(164) Scan parquet +Output [3]: [s_store_sk#23, s_store_id#24, s_store_name#25] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(165) Filter +Input [3]: [s_store_sk#23, s_store_id#24, s_store_name#25] +Condition : isnotnull(s_store_sk#23) + +(166) Exchange +Input [3]: [s_store_sk#23, s_store_id#24, s_store_name#25] +Arguments: hashpartitioning(s_store_sk#23, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(167) Sort +Input [3]: [s_store_sk#23, s_store_id#24, s_store_name#25] +Arguments: [s_store_sk#23 ASC NULLS FIRST], false, 0 + +(168) SortMergeJoin +Left keys [1]: [ss_store_sk#4] +Right keys [1]: [s_store_sk#23] +Join type: Inner +Join condition: None + +(169) Project +Output [6]: [ss_item_sk#2, ss_net_profit#6, sr_net_loss#11, cs_net_profit#15, s_store_id#24, s_store_name#25] +Input [8]: [ss_item_sk#2, ss_store_sk#4, ss_net_profit#6, sr_net_loss#11, cs_net_profit#15, s_store_sk#23, s_store_id#24, s_store_name#25] + +(170) Exchange +Input [6]: [ss_item_sk#2, ss_net_profit#6, sr_net_loss#11, cs_net_profit#15, s_store_id#24, s_store_name#25] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(171) Sort +Input [6]: [ss_item_sk#2, ss_net_profit#6, sr_net_loss#11, cs_net_profit#15, s_store_id#24, s_store_name#25] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false, 0 + +(172) Scan parquet +Output [3]: [i_item_sk#26, i_item_id#27, i_item_desc#28] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(173) Filter +Input [3]: [i_item_sk#26, i_item_id#27, i_item_desc#28] +Condition : isnotnull(i_item_sk#26) + +(174) Exchange +Input [3]: [i_item_sk#26, i_item_id#27, i_item_desc#28] +Arguments: hashpartitioning(i_item_sk#26, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(175) Sort +Input [3]: [i_item_sk#26, i_item_id#27, i_item_desc#28] +Arguments: [i_item_sk#26 ASC NULLS FIRST], false, 0 + +(176) SortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#26] +Join type: Inner +Join condition: None + +(177) Project +Output [7]: [ss_net_profit#6, sr_net_loss#11, cs_net_profit#15, s_store_id#24, s_store_name#25, i_item_id#27, i_item_desc#28] +Input [9]: [ss_item_sk#2, ss_net_profit#6, sr_net_loss#11, cs_net_profit#15, s_store_id#24, s_store_name#25, i_item_sk#26, i_item_id#27, i_item_desc#28] + +(178) HashAggregate +Input [7]: [ss_net_profit#6, sr_net_loss#11, cs_net_profit#15, s_store_id#24, s_store_name#25, i_item_id#27, i_item_desc#28] +Keys [4]: [i_item_id#27, i_item_desc#28, s_store_id#24, s_store_name#25] +Functions [3]: [partial_sum(UnscaledValue(ss_net_profit#6)), partial_sum(UnscaledValue(sr_net_loss#11)), partial_sum(UnscaledValue(cs_net_profit#15))] +Aggregate Attributes [3]: [sum#32, sum#33, sum#34] +Results [7]: [i_item_id#27, i_item_desc#28, s_store_id#24, s_store_name#25, sum#44, sum#45, sum#46] + +(179) Exchange +Input [7]: [i_item_id#27, i_item_desc#28, s_store_id#24, s_store_name#25, sum#44, sum#45, sum#46] +Arguments: hashpartitioning(i_item_id#27, i_item_desc#28, s_store_id#24, s_store_name#25, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(180) HashAggregate +Input [7]: [i_item_id#27, i_item_desc#28, s_store_id#24, s_store_name#25, sum#44, sum#45, sum#46] +Keys [4]: [i_item_id#27, i_item_desc#28, s_store_id#24, s_store_name#25] +Functions [3]: [sum(UnscaledValue(ss_net_profit#6)), sum(UnscaledValue(sr_net_loss#11)), sum(UnscaledValue(cs_net_profit#15))] +Aggregate Attributes [3]: [sum(UnscaledValue(ss_net_profit#6))#36, sum(UnscaledValue(sr_net_loss#11))#37, sum(UnscaledValue(cs_net_profit#15))#38] +Results [7]: [i_item_id#27, i_item_desc#28, s_store_id#24, s_store_name#25, MakeDecimal(sum(UnscaledValue(ss_net_profit#6))#36,17,2) AS store_sales_profit#39, MakeDecimal(sum(UnscaledValue(sr_net_loss#11))#37,17,2) AS store_returns_loss#40, MakeDecimal(sum(UnscaledValue(cs_net_profit#15))#38,17,2) AS catalog_sales_profit#41] + +(181) TakeOrderedAndProject +Input [7]: [i_item_id#27, i_item_desc#28, s_store_id#24, s_store_name#25, store_sales_profit#39, store_returns_loss#40, catalog_sales_profit#41] +Arguments: X, [i_item_id#27 ASC NULLS FIRST, i_item_desc#28 ASC NULLS FIRST, s_store_id#24 ASC NULLS FIRST, s_store_name#25 ASC NULLS FIRST], [i_item_id#27, i_item_desc#28, s_store_id#24, s_store_name#25, store_sales_profit#39, store_returns_loss#40, catalog_sales_profit#41] + +(182) AdaptiveSparkPlan +Output [7]: [i_item_id#27, i_item_desc#28, s_store_id#24, s_store_name#25, store_sales_profit#39, store_returns_loss#40, catalog_sales_profit#41] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q26.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q26.txt new file mode 100644 index 000000000..408954e3b --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q26.txt @@ -0,0 +1,639 @@ +== Physical Plan == +AdaptiveSparkPlan (117) ++- == Final Plan == + NativeTakeOrdered (75) + +- NativeProject (74) + +- NativeHashAggregate (73) + +- InputAdapter (72) + +- AQEShuffleRead (71) + +- ShuffleQueryStage (70), Statistics(X) + +- NativeShuffleExchange (69) + +- NativeHashAggregate (68) + +- NativeProject (67) + +- NativeProject (66) + +- NativeSortMergeJoin Inner (65) + :- NativeSort (55) + : +- InputAdapter (54) + : +- AQEShuffleRead (53) + : +- ShuffleQueryStage (52), Statistics(X) + : +- NativeShuffleExchange (51) + : +- NativeProject (50) + : +- NativeSortMergeJoin Inner (49) + : :- NativeSort (40) + : : +- InputAdapter (39) + : : +- AQEShuffleRead (38) + : : +- ShuffleQueryStage (37), Statistics(X) + : : +- NativeShuffleExchange (36) + : : +- NativeProject (35) + : : +- NativeSortMergeJoin Inner (34) + : : :- 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 (33) + : : +- InputAdapter (32) + : : +- AQEShuffleRead (31) + : : +- ShuffleQueryStage (30), Statistics(X) + : : +- NativeShuffleExchange (29) + : : +- NativeProject (28) + : : +- NativeFilter (27) + : : +- InputAdapter (26) + : : +- NativeParquetScan (25) + : +- NativeSort (48) + : +- InputAdapter (47) + : +- AQEShuffleRead (46) + : +- ShuffleQueryStage (45), Statistics(X) + : +- NativeShuffleExchange (44) + : +- NativeFilter (43) + : +- InputAdapter (42) + : +- NativeParquetScan (41) + +- NativeSort (64) + +- InputAdapter (63) + +- AQEShuffleRead (62) + +- ShuffleQueryStage (61), Statistics(X) + +- NativeShuffleExchange (60) + +- NativeProject (59) + +- NativeFilter (58) + +- InputAdapter (57) + +- NativeParquetScan (56) ++- == Initial Plan == + TakeOrderedAndProject (116) + +- HashAggregate (115) + +- Exchange (114) + +- HashAggregate (113) + +- Project (112) + +- SortMergeJoin Inner (111) + :- Sort (105) + : +- Exchange (104) + : +- Project (103) + : +- SortMergeJoin Inner (102) + : :- Sort (97) + : : +- Exchange (96) + : : +- Project (95) + : : +- SortMergeJoin Inner (94) + : : :- Sort (88) + : : : +- Exchange (87) + : : : +- Project (86) + : : : +- SortMergeJoin Inner (85) + : : : :- Sort (79) + : : : : +- Exchange (78) + : : : : +- Filter (77) + : : : : +- Scan parquet (76) + : : : +- Sort (84) + : : : +- Exchange (83) + : : : +- Project (82) + : : : +- Filter (81) + : : : +- Scan parquet (80) + : : +- Sort (93) + : : +- Exchange (92) + : : +- Project (91) + : : +- Filter (90) + : : +- Scan parquet (89) + : +- Sort (101) + : +- Exchange (100) + : +- Filter (99) + : +- Scan parquet (98) + +- Sort (110) + +- Exchange (109) + +- Project (108) + +- Filter (107) + +- Scan parquet (106) + + +(76) Scan parquet +Output [8]: [cs_sold_date_sk#1, cs_bill_cdemo_sk#2, cs_item_sk#3, cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_bill_cdemo_sk), IsNotNull(cs_sold_date_sk), IsNotNull(cs_item_sk), IsNotNull(cs_promo_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [8]: [cs_sold_date_sk#1, cs_bill_cdemo_sk#2, cs_item_sk#3, cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8] +Arguments: [#1, #2, #3, #4, #5, #6, #7, #8] + +(3) NativeFilter +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Condition : (((isnotnull(cs_bill_cdemo_sk#2) AND isnotnull(cs_sold_date_sk#1)) AND isnotnull(cs_item_sk#3)) AND isnotnull(cs_promo_sk#4)) + +(4) NativeShuffleExchange +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: hashpartitioning(cs_bill_cdemo_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: X + +(6) AQEShuffleRead +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: coalesced + +(7) InputAdapter +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] + +(8) NativeSort +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: [cs_bill_cdemo_sk#2 ASC NULLS FIRST], false + +(80) Scan parquet +Output [4]: [cd_demo_sk#9, cd_gender#10, cd_marital_status#11, cd_education_status#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_gender), IsNotNull(cd_marital_status), IsNotNull(cd_education_status), EqualTo(cd_gender,M), EqualTo(cd_marital_status,S), EqualTo(cd_education_status,College), IsNotNull(cd_demo_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [4]: [cd_demo_sk#9, cd_gender#10, cd_marital_status#11, cd_education_status#12] +Arguments: [#9, #10, #11, #12] + +(11) NativeFilter +Input [4]: [#9#9, #10#10, #11#11, #12#12] +Condition : ((((((isnotnull(cd_gender#10) AND isnotnull(cd_marital_status#11)) AND isnotnull(cd_education_status#12)) AND (cd_gender#10 = M)) AND (cd_marital_status#11 = S)) AND (cd_education_status#12 = College)) AND isnotnull(cd_demo_sk#9)) + +(12) NativeProject +Output [1]: [cd_demo_sk#9] +Input [4]: [#9#9, #10#10, #11#11, #12#12] + +(13) NativeShuffleExchange +Input [1]: [cd_demo_sk#9] +Arguments: hashpartitioning(cd_demo_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [1]: [cd_demo_sk#9] +Arguments: X + +(15) AQEShuffleRead +Input [1]: [cd_demo_sk#9] +Arguments: coalesced + +(16) InputAdapter +Input [1]: [cd_demo_sk#9] + +(17) NativeSort +Input [1]: [cd_demo_sk#9] +Arguments: [cd_demo_sk#9 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [cs_bill_cdemo_sk#2] +Right keys [1]: [cd_demo_sk#9] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [7]: [cs_sold_date_sk#1, cs_item_sk#3, cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8] +Input [9]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, cd_demo_sk#9] + +(20) NativeShuffleExchange +Input [7]: [cs_sold_date_sk#1, cs_item_sk#3, cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8] +Arguments: hashpartitioning(cs_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [7]: [cs_sold_date_sk#1, cs_item_sk#3, cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8] +Arguments: X + +(22) AQEShuffleRead +Input [7]: [cs_sold_date_sk#1, cs_item_sk#3, cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8] +Arguments: coalesced + +(23) InputAdapter +Input [7]: [cs_sold_date_sk#1, cs_item_sk#3, cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8] + +(24) NativeSort +Input [7]: [cs_sold_date_sk#1, cs_item_sk#3, cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8] +Arguments: [cs_sold_date_sk#1 ASC NULLS FIRST], false + +(89) Scan parquet +Output [2]: [d_date_sk#13, d_year#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [2]: [d_date_sk#13, d_year#14] +Arguments: [#13, #14] + +(27) NativeFilter +Input [2]: [#13#13, #14#14] +Condition : ((isnotnull(d_year#14) AND (d_year#14 = 2000)) AND isnotnull(d_date_sk#13)) + +(28) NativeProject +Output [1]: [d_date_sk#13] +Input [2]: [#13#13, #14#14] + +(29) NativeShuffleExchange +Input [1]: [d_date_sk#13] +Arguments: hashpartitioning(d_date_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(30) ShuffleQueryStage +Output [1]: [d_date_sk#13] +Arguments: X + +(31) AQEShuffleRead +Input [1]: [d_date_sk#13] +Arguments: coalesced + +(32) InputAdapter +Input [1]: [d_date_sk#13] + +(33) NativeSort +Input [1]: [d_date_sk#13] +Arguments: [d_date_sk#13 ASC NULLS FIRST], false + +(34) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#1] +Right keys [1]: [d_date_sk#13] +Join type: Inner +Join condition: None + +(35) NativeProject +Output [6]: [cs_item_sk#3, cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8] +Input [8]: [cs_sold_date_sk#1, cs_item_sk#3, cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, d_date_sk#13] + +(36) NativeShuffleExchange +Input [6]: [cs_item_sk#3, cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8] +Arguments: hashpartitioning(cs_item_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [6]: [cs_item_sk#3, cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8] +Arguments: X + +(38) AQEShuffleRead +Input [6]: [cs_item_sk#3, cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8] +Arguments: coalesced + +(39) InputAdapter +Input [6]: [cs_item_sk#3, cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8] + +(40) NativeSort +Input [6]: [cs_item_sk#3, cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8] +Arguments: [cs_item_sk#3 ASC NULLS FIRST], false + +(98) Scan parquet +Output [2]: [i_item_sk#15, i_item_id#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(42) InputAdapter +Input [2]: [i_item_sk#15, i_item_id#16] +Arguments: [#15, #16] + +(43) NativeFilter +Input [2]: [#15#15, #16#16] +Condition : isnotnull(i_item_sk#15) + +(44) NativeShuffleExchange +Input [2]: [#15#15, #16#16] +Arguments: hashpartitioning(i_item_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(45) ShuffleQueryStage +Output [2]: [#15#15, #16#16] +Arguments: X + +(46) AQEShuffleRead +Input [2]: [#15#15, #16#16] +Arguments: coalesced + +(47) InputAdapter +Input [2]: [#15#15, #16#16] + +(48) NativeSort +Input [2]: [#15#15, #16#16] +Arguments: [i_item_sk#15 ASC NULLS FIRST], false + +(49) NativeSortMergeJoin +Left keys [1]: [cs_item_sk#3] +Right keys [1]: [i_item_sk#15] +Join type: Inner +Join condition: None + +(50) NativeProject +Output [6]: [cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, i_item_id#16] +Input [8]: [cs_item_sk#3, cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, #15#15, #16#16] + +(51) NativeShuffleExchange +Input [6]: [cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, i_item_id#16] +Arguments: hashpartitioning(cs_promo_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(52) ShuffleQueryStage +Output [6]: [cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, i_item_id#16] +Arguments: X + +(53) AQEShuffleRead +Input [6]: [cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, i_item_id#16] +Arguments: coalesced + +(54) InputAdapter +Input [6]: [cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, i_item_id#16] + +(55) NativeSort +Input [6]: [cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, i_item_id#16] +Arguments: [cs_promo_sk#4 ASC NULLS FIRST], false + +(106) Scan parquet +Output [3]: [p_promo_sk#17, p_channel_email#18, p_channel_event#19] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(EqualTo(p_channel_email,N),EqualTo(p_channel_event,N)), IsNotNull(p_promo_sk)] +ReadSchema: struct + +(57) InputAdapter +Input [3]: [p_promo_sk#17, p_channel_email#18, p_channel_event#19] +Arguments: [#17, #18, #19] + +(58) NativeFilter +Input [3]: [#17#17, #18#18, #19#19] +Condition : (((p_channel_email#18 = N) OR (p_channel_event#19 = N)) AND isnotnull(p_promo_sk#17)) + +(59) NativeProject +Output [1]: [p_promo_sk#17] +Input [3]: [#17#17, #18#18, #19#19] + +(60) NativeShuffleExchange +Input [1]: [p_promo_sk#17] +Arguments: hashpartitioning(p_promo_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(61) ShuffleQueryStage +Output [1]: [p_promo_sk#17] +Arguments: X + +(62) AQEShuffleRead +Input [1]: [p_promo_sk#17] +Arguments: coalesced + +(63) InputAdapter +Input [1]: [p_promo_sk#17] + +(64) NativeSort +Input [1]: [p_promo_sk#17] +Arguments: [p_promo_sk#17 ASC NULLS FIRST], false + +(65) NativeSortMergeJoin +Left keys [1]: [cs_promo_sk#4] +Right keys [1]: [p_promo_sk#17] +Join type: Inner +Join condition: None + +(66) NativeProject +Output [5]: [cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, i_item_id#16] +Input [7]: [cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, i_item_id#16, p_promo_sk#17] + +(67) NativeProject +Output [5]: [i_item_id#16 AS i_item_id#16, cs_quantity#5 AS _c1#20, UnscaledValue(cs_list_price#6) AS _c2#21, UnscaledValue(cs_coupon_amt#8) AS _c3#22, UnscaledValue(cs_sales_price#7) AS _c4#23] +Input [5]: [cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, i_item_id#16] + +(68) NativeHashAggregate +Input [5]: [i_item_id#16, _c1#20, _c2#21, _c3#22, _c4#23] +Keys [1]: [i_item_id#16] +Functions [4]: [partial_avg(_c1#20), partial_avg(_c2#21), partial_avg(_c3#22), partial_avg(_c4#23)] +Aggregate Attributes [8]: [sum#24, count#25, sum#26, count#27, sum#28, count#29, sum#30, count#31] +Results [2]: [i_item_id#16, #32#32] + +(69) NativeShuffleExchange +Input [2]: [i_item_id#16, #32#32] +Arguments: hashpartitioning(i_item_id#16, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(70) ShuffleQueryStage +Output [2]: [i_item_id#16, #32#32] +Arguments: X + +(71) AQEShuffleRead +Input [2]: [i_item_id#16, #32#32] +Arguments: coalesced + +(72) InputAdapter +Input [2]: [i_item_id#16, #32#32] + +(73) NativeHashAggregate +Input [2]: [i_item_id#16, #32#32] +Keys [1]: [i_item_id#16] +Functions [4]: [avg(cs_quantity#5), avg(UnscaledValue(cs_list_price#6)), avg(UnscaledValue(cs_coupon_amt#8)), avg(UnscaledValue(cs_sales_price#7))] +Aggregate Attributes [4]: [avg(cs_quantity#5)#33, avg(UnscaledValue(cs_list_price#6))#34, avg(UnscaledValue(cs_coupon_amt#8))#35, avg(UnscaledValue(cs_sales_price#7))#36] +Results [5]: [i_item_id#16, avg(cs_quantity#5)#33, avg(UnscaledValue(cs_list_price#6))#34, avg(UnscaledValue(cs_coupon_amt#8))#35, avg(UnscaledValue(cs_sales_price#7))#36] + +(74) NativeProject +Output [5]: [i_item_id#16, avg(cs_quantity#5)#33 AS agg1#37, cast((avg(UnscaledValue(cs_list_price#6))#34 / 100.0) as decimal(11,6)) AS agg2#38, cast((avg(UnscaledValue(cs_coupon_amt#8))#35 / 100.0) as decimal(11,6)) AS agg3#39, cast((avg(UnscaledValue(cs_sales_price#7))#36 / 100.0) as decimal(11,6)) AS agg4#40] +Input [5]: [i_item_id#16, avg(cs_quantity#5)#33, avg(UnscaledValue(cs_list_price#6))#34, avg(UnscaledValue(cs_coupon_amt#8))#35, avg(UnscaledValue(cs_sales_price#7))#36] + +(75) NativeTakeOrdered +Input [5]: [i_item_id#16, agg1#37, agg2#38, agg3#39, agg4#40] +Arguments: X, [i_item_id#16 ASC NULLS FIRST] + +(76) Scan parquet +Output [8]: [cs_sold_date_sk#1, cs_bill_cdemo_sk#2, cs_item_sk#3, cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_bill_cdemo_sk), IsNotNull(cs_sold_date_sk), IsNotNull(cs_item_sk), IsNotNull(cs_promo_sk)] +ReadSchema: struct + +(77) Filter +Input [8]: [cs_sold_date_sk#1, cs_bill_cdemo_sk#2, cs_item_sk#3, cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8] +Condition : (((isnotnull(cs_bill_cdemo_sk#2) AND isnotnull(cs_sold_date_sk#1)) AND isnotnull(cs_item_sk#3)) AND isnotnull(cs_promo_sk#4)) + +(78) Exchange +Input [8]: [cs_sold_date_sk#1, cs_bill_cdemo_sk#2, cs_item_sk#3, cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8] +Arguments: hashpartitioning(cs_bill_cdemo_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(79) Sort +Input [8]: [cs_sold_date_sk#1, cs_bill_cdemo_sk#2, cs_item_sk#3, cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8] +Arguments: [cs_bill_cdemo_sk#2 ASC NULLS FIRST], false, 0 + +(80) Scan parquet +Output [4]: [cd_demo_sk#9, cd_gender#10, cd_marital_status#11, cd_education_status#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_gender), IsNotNull(cd_marital_status), IsNotNull(cd_education_status), EqualTo(cd_gender,M), EqualTo(cd_marital_status,S), EqualTo(cd_education_status,College), IsNotNull(cd_demo_sk)] +ReadSchema: struct + +(81) Filter +Input [4]: [cd_demo_sk#9, cd_gender#10, cd_marital_status#11, cd_education_status#12] +Condition : ((((((isnotnull(cd_gender#10) AND isnotnull(cd_marital_status#11)) AND isnotnull(cd_education_status#12)) AND (cd_gender#10 = M)) AND (cd_marital_status#11 = S)) AND (cd_education_status#12 = College)) AND isnotnull(cd_demo_sk#9)) + +(82) Project +Output [1]: [cd_demo_sk#9] +Input [4]: [cd_demo_sk#9, cd_gender#10, cd_marital_status#11, cd_education_status#12] + +(83) Exchange +Input [1]: [cd_demo_sk#9] +Arguments: hashpartitioning(cd_demo_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(84) Sort +Input [1]: [cd_demo_sk#9] +Arguments: [cd_demo_sk#9 ASC NULLS FIRST], false, 0 + +(85) SortMergeJoin +Left keys [1]: [cs_bill_cdemo_sk#2] +Right keys [1]: [cd_demo_sk#9] +Join type: Inner +Join condition: None + +(86) Project +Output [7]: [cs_sold_date_sk#1, cs_item_sk#3, cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8] +Input [9]: [cs_sold_date_sk#1, cs_bill_cdemo_sk#2, cs_item_sk#3, cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, cd_demo_sk#9] + +(87) Exchange +Input [7]: [cs_sold_date_sk#1, cs_item_sk#3, cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8] +Arguments: hashpartitioning(cs_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(88) Sort +Input [7]: [cs_sold_date_sk#1, cs_item_sk#3, cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8] +Arguments: [cs_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(89) Scan parquet +Output [2]: [d_date_sk#13, d_year#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(90) Filter +Input [2]: [d_date_sk#13, d_year#14] +Condition : ((isnotnull(d_year#14) AND (d_year#14 = 2000)) AND isnotnull(d_date_sk#13)) + +(91) Project +Output [1]: [d_date_sk#13] +Input [2]: [d_date_sk#13, d_year#14] + +(92) Exchange +Input [1]: [d_date_sk#13] +Arguments: hashpartitioning(d_date_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(93) Sort +Input [1]: [d_date_sk#13] +Arguments: [d_date_sk#13 ASC NULLS FIRST], false, 0 + +(94) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#1] +Right keys [1]: [d_date_sk#13] +Join type: Inner +Join condition: None + +(95) Project +Output [6]: [cs_item_sk#3, cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8] +Input [8]: [cs_sold_date_sk#1, cs_item_sk#3, cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, d_date_sk#13] + +(96) Exchange +Input [6]: [cs_item_sk#3, cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8] +Arguments: hashpartitioning(cs_item_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(97) Sort +Input [6]: [cs_item_sk#3, cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8] +Arguments: [cs_item_sk#3 ASC NULLS FIRST], false, 0 + +(98) Scan parquet +Output [2]: [i_item_sk#15, i_item_id#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(99) Filter +Input [2]: [i_item_sk#15, i_item_id#16] +Condition : isnotnull(i_item_sk#15) + +(100) Exchange +Input [2]: [i_item_sk#15, i_item_id#16] +Arguments: hashpartitioning(i_item_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(101) Sort +Input [2]: [i_item_sk#15, i_item_id#16] +Arguments: [i_item_sk#15 ASC NULLS FIRST], false, 0 + +(102) SortMergeJoin +Left keys [1]: [cs_item_sk#3] +Right keys [1]: [i_item_sk#15] +Join type: Inner +Join condition: None + +(103) Project +Output [6]: [cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, i_item_id#16] +Input [8]: [cs_item_sk#3, cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, i_item_sk#15, i_item_id#16] + +(104) Exchange +Input [6]: [cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, i_item_id#16] +Arguments: hashpartitioning(cs_promo_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(105) Sort +Input [6]: [cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, i_item_id#16] +Arguments: [cs_promo_sk#4 ASC NULLS FIRST], false, 0 + +(106) Scan parquet +Output [3]: [p_promo_sk#17, p_channel_email#18, p_channel_event#19] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(EqualTo(p_channel_email,N),EqualTo(p_channel_event,N)), IsNotNull(p_promo_sk)] +ReadSchema: struct + +(107) Filter +Input [3]: [p_promo_sk#17, p_channel_email#18, p_channel_event#19] +Condition : (((p_channel_email#18 = N) OR (p_channel_event#19 = N)) AND isnotnull(p_promo_sk#17)) + +(108) Project +Output [1]: [p_promo_sk#17] +Input [3]: [p_promo_sk#17, p_channel_email#18, p_channel_event#19] + +(109) Exchange +Input [1]: [p_promo_sk#17] +Arguments: hashpartitioning(p_promo_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(110) Sort +Input [1]: [p_promo_sk#17] +Arguments: [p_promo_sk#17 ASC NULLS FIRST], false, 0 + +(111) SortMergeJoin +Left keys [1]: [cs_promo_sk#4] +Right keys [1]: [p_promo_sk#17] +Join type: Inner +Join condition: None + +(112) Project +Output [5]: [cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, i_item_id#16] +Input [7]: [cs_promo_sk#4, cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, i_item_id#16, p_promo_sk#17] + +(113) HashAggregate +Input [5]: [cs_quantity#5, cs_list_price#6, cs_sales_price#7, cs_coupon_amt#8, i_item_id#16] +Keys [1]: [i_item_id#16] +Functions [4]: [partial_avg(cs_quantity#5), partial_avg(UnscaledValue(cs_list_price#6)), partial_avg(UnscaledValue(cs_coupon_amt#8)), partial_avg(UnscaledValue(cs_sales_price#7))] +Aggregate Attributes [8]: [sum#24, count#25, sum#26, count#27, sum#28, count#29, sum#30, count#31] +Results [9]: [i_item_id#16, sum#41, count#42, sum#43, count#44, sum#45, count#46, sum#47, count#48] + +(114) Exchange +Input [9]: [i_item_id#16, sum#41, count#42, sum#43, count#44, sum#45, count#46, sum#47, count#48] +Arguments: hashpartitioning(i_item_id#16, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(115) HashAggregate +Input [9]: [i_item_id#16, sum#41, count#42, sum#43, count#44, sum#45, count#46, sum#47, count#48] +Keys [1]: [i_item_id#16] +Functions [4]: [avg(cs_quantity#5), avg(UnscaledValue(cs_list_price#6)), avg(UnscaledValue(cs_coupon_amt#8)), avg(UnscaledValue(cs_sales_price#7))] +Aggregate Attributes [4]: [avg(cs_quantity#5)#33, avg(UnscaledValue(cs_list_price#6))#34, avg(UnscaledValue(cs_coupon_amt#8))#35, avg(UnscaledValue(cs_sales_price#7))#36] +Results [5]: [i_item_id#16, avg(cs_quantity#5)#33 AS agg1#37, cast((avg(UnscaledValue(cs_list_price#6))#34 / 100.0) as decimal(11,6)) AS agg2#38, cast((avg(UnscaledValue(cs_coupon_amt#8))#35 / 100.0) as decimal(11,6)) AS agg3#39, cast((avg(UnscaledValue(cs_sales_price#7))#36 / 100.0) as decimal(11,6)) AS agg4#40] + +(116) TakeOrderedAndProject +Input [5]: [i_item_id#16, agg1#37, agg2#38, agg3#39, agg4#40] +Arguments: X, [i_item_id#16 ASC NULLS FIRST], [i_item_id#16, agg1#37, agg2#38, agg3#39, agg4#40] + +(117) AdaptiveSparkPlan +Output [5]: [i_item_id#16, agg1#37, agg2#38, agg3#39, agg4#40] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q27.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q27.txt new file mode 100644 index 000000000..961e4007c --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q27.txt @@ -0,0 +1,639 @@ +== Physical Plan == +AdaptiveSparkPlan (117) ++- == Final Plan == + NativeTakeOrdered (75) + +- NativeProject (74) + +- NativeHashAggregate (73) + +- InputAdapter (72) + +- AQEShuffleRead (71) + +- ShuffleQueryStage (70), Statistics(X) + +- NativeShuffleExchange (69) + +- NativeHashAggregate (68) + +- NativeProject (67) + +- NativeExpand (66) + +- NativeProject (65) + +- NativeSortMergeJoin Inner (64) + :- NativeSort (55) + : +- InputAdapter (54) + : +- AQEShuffleRead (53) + : +- ShuffleQueryStage (52), Statistics(X) + : +- NativeShuffleExchange (51) + : +- NativeProject (50) + : +- NativeSortMergeJoin Inner (49) + : :- NativeSort (40) + : : +- InputAdapter (39) + : : +- AQEShuffleRead (38) + : : +- ShuffleQueryStage (37), Statistics(X) + : : +- NativeShuffleExchange (36) + : : +- NativeProject (35) + : : +- NativeSortMergeJoin Inner (34) + : : :- 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 (33) + : : +- InputAdapter (32) + : : +- AQEShuffleRead (31) + : : +- ShuffleQueryStage (30), Statistics(X) + : : +- NativeShuffleExchange (29) + : : +- NativeProject (28) + : : +- NativeFilter (27) + : : +- InputAdapter (26) + : : +- NativeParquetScan (25) + : +- NativeSort (48) + : +- InputAdapter (47) + : +- AQEShuffleRead (46) + : +- ShuffleQueryStage (45), Statistics(X) + : +- NativeShuffleExchange (44) + : +- NativeFilter (43) + : +- InputAdapter (42) + : +- NativeParquetScan (41) + +- NativeSort (63) + +- InputAdapter (62) + +- AQEShuffleRead (61) + +- ShuffleQueryStage (60), Statistics(X) + +- NativeShuffleExchange (59) + +- NativeFilter (58) + +- InputAdapter (57) + +- NativeParquetScan (56) ++- == Initial Plan == + TakeOrderedAndProject (116) + +- HashAggregate (115) + +- Exchange (114) + +- HashAggregate (113) + +- Expand (112) + +- Project (111) + +- SortMergeJoin Inner (110) + :- Sort (105) + : +- Exchange (104) + : +- Project (103) + : +- SortMergeJoin Inner (102) + : :- Sort (97) + : : +- Exchange (96) + : : +- Project (95) + : : +- SortMergeJoin Inner (94) + : : :- Sort (88) + : : : +- Exchange (87) + : : : +- Project (86) + : : : +- SortMergeJoin Inner (85) + : : : :- Sort (79) + : : : : +- Exchange (78) + : : : : +- Filter (77) + : : : : +- Scan parquet (76) + : : : +- Sort (84) + : : : +- Exchange (83) + : : : +- Project (82) + : : : +- Filter (81) + : : : +- Scan parquet (80) + : : +- Sort (93) + : : +- Exchange (92) + : : +- Project (91) + : : +- Filter (90) + : : +- Scan parquet (89) + : +- Sort (101) + : +- Exchange (100) + : +- Filter (99) + : +- Scan parquet (98) + +- Sort (109) + +- Exchange (108) + +- Filter (107) + +- Scan parquet (106) + + +(76) Scan parquet +Output [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_cdemo_sk#3, ss_store_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_cdemo_sk), IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_cdemo_sk#3, ss_store_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Arguments: [#1, #2, #3, #4, #5, #6, #7, #8] + +(3) NativeFilter +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Condition : (((isnotnull(ss_cdemo_sk#3) AND isnotnull(ss_sold_date_sk#1)) AND isnotnull(ss_store_sk#4)) AND isnotnull(ss_item_sk#2)) + +(4) NativeShuffleExchange +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: hashpartitioning(ss_cdemo_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: X + +(6) AQEShuffleRead +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: coalesced + +(7) InputAdapter +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] + +(8) NativeSort +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: [ss_cdemo_sk#3 ASC NULLS FIRST], false + +(80) Scan parquet +Output [4]: [cd_demo_sk#9, cd_gender#10, cd_marital_status#11, cd_education_status#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_gender), IsNotNull(cd_marital_status), IsNotNull(cd_education_status), EqualTo(cd_gender,M), EqualTo(cd_marital_status,S), EqualTo(cd_education_status,College), IsNotNull(cd_demo_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [4]: [cd_demo_sk#9, cd_gender#10, cd_marital_status#11, cd_education_status#12] +Arguments: [#9, #10, #11, #12] + +(11) NativeFilter +Input [4]: [#9#9, #10#10, #11#11, #12#12] +Condition : ((((((isnotnull(cd_gender#10) AND isnotnull(cd_marital_status#11)) AND isnotnull(cd_education_status#12)) AND (cd_gender#10 = M)) AND (cd_marital_status#11 = S)) AND (cd_education_status#12 = College)) AND isnotnull(cd_demo_sk#9)) + +(12) NativeProject +Output [1]: [cd_demo_sk#9] +Input [4]: [#9#9, #10#10, #11#11, #12#12] + +(13) NativeShuffleExchange +Input [1]: [cd_demo_sk#9] +Arguments: hashpartitioning(cd_demo_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [1]: [cd_demo_sk#9] +Arguments: X + +(15) AQEShuffleRead +Input [1]: [cd_demo_sk#9] +Arguments: coalesced + +(16) InputAdapter +Input [1]: [cd_demo_sk#9] + +(17) NativeSort +Input [1]: [cd_demo_sk#9] +Arguments: [cd_demo_sk#9 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [ss_cdemo_sk#3] +Right keys [1]: [cd_demo_sk#9] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Input [9]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, cd_demo_sk#9] + +(20) NativeShuffleExchange +Input [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Arguments: X + +(22) AQEShuffleRead +Input [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Arguments: coalesced + +(23) InputAdapter +Input [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] + +(24) NativeSort +Input [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(89) Scan parquet +Output [2]: [d_date_sk#13, d_year#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2002), IsNotNull(d_date_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [2]: [d_date_sk#13, d_year#14] +Arguments: [#13, #14] + +(27) NativeFilter +Input [2]: [#13#13, #14#14] +Condition : ((isnotnull(d_year#14) AND (d_year#14 = 2002)) AND isnotnull(d_date_sk#13)) + +(28) NativeProject +Output [1]: [d_date_sk#13] +Input [2]: [#13#13, #14#14] + +(29) NativeShuffleExchange +Input [1]: [d_date_sk#13] +Arguments: hashpartitioning(d_date_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(30) ShuffleQueryStage +Output [1]: [d_date_sk#13] +Arguments: X + +(31) AQEShuffleRead +Input [1]: [d_date_sk#13] +Arguments: coalesced + +(32) InputAdapter +Input [1]: [d_date_sk#13] + +(33) NativeSort +Input [1]: [d_date_sk#13] +Arguments: [d_date_sk#13 ASC NULLS FIRST], false + +(34) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#13] +Join type: Inner +Join condition: None + +(35) NativeProject +Output [6]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, d_date_sk#13] + +(36) NativeShuffleExchange +Input [6]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Arguments: hashpartitioning(ss_store_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [6]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Arguments: X + +(38) AQEShuffleRead +Input [6]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Arguments: coalesced + +(39) InputAdapter +Input [6]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] + +(40) NativeSort +Input [6]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Arguments: [ss_store_sk#4 ASC NULLS FIRST], false + +(98) Scan parquet +Output [2]: [s_store_sk#15, s_state#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_state), EqualTo(s_state,TN), IsNotNull(s_store_sk)] +ReadSchema: struct + +(42) InputAdapter +Input [2]: [s_store_sk#15, s_state#16] +Arguments: [#15, #16] + +(43) NativeFilter +Input [2]: [#15#15, #16#16] +Condition : ((isnotnull(s_state#16) AND (s_state#16 = TN)) AND isnotnull(s_store_sk#15)) + +(44) NativeShuffleExchange +Input [2]: [#15#15, #16#16] +Arguments: hashpartitioning(s_store_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(45) ShuffleQueryStage +Output [2]: [#15#15, #16#16] +Arguments: X + +(46) AQEShuffleRead +Input [2]: [#15#15, #16#16] +Arguments: coalesced + +(47) InputAdapter +Input [2]: [#15#15, #16#16] + +(48) NativeSort +Input [2]: [#15#15, #16#16] +Arguments: [s_store_sk#15 ASC NULLS FIRST], false + +(49) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#4] +Right keys [1]: [s_store_sk#15] +Join type: Inner +Join condition: None + +(50) NativeProject +Output [6]: [ss_item_sk#2, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, s_state#16] +Input [8]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, #15#15, #16#16] + +(51) NativeShuffleExchange +Input [6]: [ss_item_sk#2, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, s_state#16] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(52) ShuffleQueryStage +Output [6]: [ss_item_sk#2, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, s_state#16] +Arguments: X + +(53) AQEShuffleRead +Input [6]: [ss_item_sk#2, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, s_state#16] +Arguments: coalesced + +(54) InputAdapter +Input [6]: [ss_item_sk#2, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, s_state#16] + +(55) NativeSort +Input [6]: [ss_item_sk#2, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, s_state#16] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false + +(106) Scan parquet +Output [2]: [i_item_sk#17, i_item_id#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(57) InputAdapter +Input [2]: [i_item_sk#17, i_item_id#18] +Arguments: [#17, #18] + +(58) NativeFilter +Input [2]: [#17#17, #18#18] +Condition : isnotnull(i_item_sk#17) + +(59) NativeShuffleExchange +Input [2]: [#17#17, #18#18] +Arguments: hashpartitioning(i_item_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(60) ShuffleQueryStage +Output [2]: [#17#17, #18#18] +Arguments: X + +(61) AQEShuffleRead +Input [2]: [#17#17, #18#18] +Arguments: coalesced + +(62) InputAdapter +Input [2]: [#17#17, #18#18] + +(63) NativeSort +Input [2]: [#17#17, #18#18] +Arguments: [i_item_sk#17 ASC NULLS FIRST], false + +(64) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#17] +Join type: Inner +Join condition: None + +(65) NativeProject +Output [6]: [ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, i_item_id#18, s_state#16] +Input [8]: [ss_item_sk#2, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, s_state#16, #17#17, #18#18] + +(66) NativeExpand +Input [6]: [ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, i_item_id#18, s_state#16] +Arguments: [[ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, i_item_id#18, s_state#16, 0], [ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, i_item_id#18, null, 1], [ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, null, null, 3]], [ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, i_item_id#19, s_state#20, spark_grouping_id#21] + +(67) NativeProject +Output [7]: [i_item_id#19 AS i_item_id#19, s_state#20 AS s_state#20, spark_grouping_id#21 AS spark_grouping_id#21, ss_quantity#5 AS _c3#22, UnscaledValue(ss_list_price#6) AS _c4#23, UnscaledValue(ss_coupon_amt#8) AS _c5#24, UnscaledValue(ss_sales_price#7) AS _c6#25] +Input [7]: [ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, i_item_id#19, s_state#20, spark_grouping_id#21] + +(68) NativeHashAggregate +Input [7]: [i_item_id#19, s_state#20, spark_grouping_id#21, _c3#22, _c4#23, _c5#24, _c6#25] +Keys [3]: [i_item_id#19, s_state#20, spark_grouping_id#21] +Functions [4]: [partial_avg(_c3#22), partial_avg(_c4#23), partial_avg(_c5#24), partial_avg(_c6#25)] +Aggregate Attributes [8]: [sum#26, count#27, sum#28, count#29, sum#30, count#31, sum#32, count#33] +Results [4]: [i_item_id#19, s_state#20, spark_grouping_id#21, #34#34] + +(69) NativeShuffleExchange +Input [4]: [i_item_id#19, s_state#20, spark_grouping_id#21, #34#34] +Arguments: hashpartitioning(i_item_id#19, s_state#20, spark_grouping_id#21, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(70) ShuffleQueryStage +Output [4]: [i_item_id#19, s_state#20, spark_grouping_id#21, #34#34] +Arguments: X + +(71) AQEShuffleRead +Input [4]: [i_item_id#19, s_state#20, spark_grouping_id#21, #34#34] +Arguments: coalesced + +(72) InputAdapter +Input [4]: [i_item_id#19, s_state#20, spark_grouping_id#21, #34#34] + +(73) NativeHashAggregate +Input [4]: [i_item_id#19, s_state#20, spark_grouping_id#21, #34#34] +Keys [3]: [i_item_id#19, s_state#20, spark_grouping_id#21] +Functions [4]: [avg(ss_quantity#5), avg(UnscaledValue(ss_list_price#6)), avg(UnscaledValue(ss_coupon_amt#8)), avg(UnscaledValue(ss_sales_price#7))] +Aggregate Attributes [4]: [avg(ss_quantity#5)#35, avg(UnscaledValue(ss_list_price#6))#36, avg(UnscaledValue(ss_coupon_amt#8))#37, avg(UnscaledValue(ss_sales_price#7))#38] +Results [7]: [i_item_id#19, s_state#20, spark_grouping_id#21, avg(ss_quantity#5)#35, avg(UnscaledValue(ss_list_price#6))#36, avg(UnscaledValue(ss_coupon_amt#8))#37, avg(UnscaledValue(ss_sales_price#7))#38] + +(74) NativeProject +Output [7]: [i_item_id#19, s_state#20, cast((shiftright(spark_grouping_id#21, 0) & 1) as tinyint) AS g_state#39, avg(ss_quantity#5)#35 AS agg1#40, cast((avg(UnscaledValue(ss_list_price#6))#36 / 100.0) as decimal(11,6)) AS agg2#41, cast((avg(UnscaledValue(ss_coupon_amt#8))#37 / 100.0) as decimal(11,6)) AS agg3#42, cast((avg(UnscaledValue(ss_sales_price#7))#38 / 100.0) as decimal(11,6)) AS agg4#43] +Input [7]: [i_item_id#19, s_state#20, spark_grouping_id#21, avg(ss_quantity#5)#35, avg(UnscaledValue(ss_list_price#6))#36, avg(UnscaledValue(ss_coupon_amt#8))#37, avg(UnscaledValue(ss_sales_price#7))#38] + +(75) NativeTakeOrdered +Input [7]: [i_item_id#19, s_state#20, g_state#39, agg1#40, agg2#41, agg3#42, agg4#43] +Arguments: X, [i_item_id#19 ASC NULLS FIRST, s_state#20 ASC NULLS FIRST] + +(76) Scan parquet +Output [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_cdemo_sk#3, ss_store_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_cdemo_sk), IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(77) Filter +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_cdemo_sk#3, ss_store_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Condition : (((isnotnull(ss_cdemo_sk#3) AND isnotnull(ss_sold_date_sk#1)) AND isnotnull(ss_store_sk#4)) AND isnotnull(ss_item_sk#2)) + +(78) Exchange +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_cdemo_sk#3, ss_store_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Arguments: hashpartitioning(ss_cdemo_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(79) Sort +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_cdemo_sk#3, ss_store_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Arguments: [ss_cdemo_sk#3 ASC NULLS FIRST], false, 0 + +(80) Scan parquet +Output [4]: [cd_demo_sk#9, cd_gender#10, cd_marital_status#11, cd_education_status#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_gender), IsNotNull(cd_marital_status), IsNotNull(cd_education_status), EqualTo(cd_gender,M), EqualTo(cd_marital_status,S), EqualTo(cd_education_status,College), IsNotNull(cd_demo_sk)] +ReadSchema: struct + +(81) Filter +Input [4]: [cd_demo_sk#9, cd_gender#10, cd_marital_status#11, cd_education_status#12] +Condition : ((((((isnotnull(cd_gender#10) AND isnotnull(cd_marital_status#11)) AND isnotnull(cd_education_status#12)) AND (cd_gender#10 = M)) AND (cd_marital_status#11 = S)) AND (cd_education_status#12 = College)) AND isnotnull(cd_demo_sk#9)) + +(82) Project +Output [1]: [cd_demo_sk#9] +Input [4]: [cd_demo_sk#9, cd_gender#10, cd_marital_status#11, cd_education_status#12] + +(83) Exchange +Input [1]: [cd_demo_sk#9] +Arguments: hashpartitioning(cd_demo_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(84) Sort +Input [1]: [cd_demo_sk#9] +Arguments: [cd_demo_sk#9 ASC NULLS FIRST], false, 0 + +(85) SortMergeJoin +Left keys [1]: [ss_cdemo_sk#3] +Right keys [1]: [cd_demo_sk#9] +Join type: Inner +Join condition: None + +(86) Project +Output [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Input [9]: [ss_sold_date_sk#1, ss_item_sk#2, ss_cdemo_sk#3, ss_store_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, cd_demo_sk#9] + +(87) Exchange +Input [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(88) Sort +Input [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(89) Scan parquet +Output [2]: [d_date_sk#13, d_year#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2002), IsNotNull(d_date_sk)] +ReadSchema: struct + +(90) Filter +Input [2]: [d_date_sk#13, d_year#14] +Condition : ((isnotnull(d_year#14) AND (d_year#14 = 2002)) AND isnotnull(d_date_sk#13)) + +(91) Project +Output [1]: [d_date_sk#13] +Input [2]: [d_date_sk#13, d_year#14] + +(92) Exchange +Input [1]: [d_date_sk#13] +Arguments: hashpartitioning(d_date_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(93) Sort +Input [1]: [d_date_sk#13] +Arguments: [d_date_sk#13 ASC NULLS FIRST], false, 0 + +(94) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#13] +Join type: Inner +Join condition: None + +(95) Project +Output [6]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, d_date_sk#13] + +(96) Exchange +Input [6]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Arguments: hashpartitioning(ss_store_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(97) Sort +Input [6]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Arguments: [ss_store_sk#4 ASC NULLS FIRST], false, 0 + +(98) Scan parquet +Output [2]: [s_store_sk#15, s_state#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_state), EqualTo(s_state,TN), IsNotNull(s_store_sk)] +ReadSchema: struct + +(99) Filter +Input [2]: [s_store_sk#15, s_state#16] +Condition : ((isnotnull(s_state#16) AND (s_state#16 = TN)) AND isnotnull(s_store_sk#15)) + +(100) Exchange +Input [2]: [s_store_sk#15, s_state#16] +Arguments: hashpartitioning(s_store_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(101) Sort +Input [2]: [s_store_sk#15, s_state#16] +Arguments: [s_store_sk#15 ASC NULLS FIRST], false, 0 + +(102) SortMergeJoin +Left keys [1]: [ss_store_sk#4] +Right keys [1]: [s_store_sk#15] +Join type: Inner +Join condition: None + +(103) Project +Output [6]: [ss_item_sk#2, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, s_state#16] +Input [8]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, s_store_sk#15, s_state#16] + +(104) Exchange +Input [6]: [ss_item_sk#2, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, s_state#16] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(105) Sort +Input [6]: [ss_item_sk#2, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, s_state#16] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false, 0 + +(106) Scan parquet +Output [2]: [i_item_sk#17, i_item_id#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(107) Filter +Input [2]: [i_item_sk#17, i_item_id#18] +Condition : isnotnull(i_item_sk#17) + +(108) Exchange +Input [2]: [i_item_sk#17, i_item_id#18] +Arguments: hashpartitioning(i_item_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(109) Sort +Input [2]: [i_item_sk#17, i_item_id#18] +Arguments: [i_item_sk#17 ASC NULLS FIRST], false, 0 + +(110) SortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#17] +Join type: Inner +Join condition: None + +(111) Project +Output [6]: [ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, i_item_id#18, s_state#16] +Input [8]: [ss_item_sk#2, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, s_state#16, i_item_sk#17, i_item_id#18] + +(112) Expand +Input [6]: [ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, i_item_id#18, s_state#16] +Arguments: [[ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, i_item_id#18, s_state#16, 0], [ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, i_item_id#18, null, 1], [ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, null, null, 3]], [ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, i_item_id#19, s_state#20, spark_grouping_id#21] + +(113) HashAggregate +Input [7]: [ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, i_item_id#19, s_state#20, spark_grouping_id#21] +Keys [3]: [i_item_id#19, s_state#20, spark_grouping_id#21] +Functions [4]: [partial_avg(ss_quantity#5), partial_avg(UnscaledValue(ss_list_price#6)), partial_avg(UnscaledValue(ss_coupon_amt#8)), partial_avg(UnscaledValue(ss_sales_price#7))] +Aggregate Attributes [8]: [sum#26, count#27, sum#28, count#29, sum#30, count#31, sum#32, count#33] +Results [11]: [i_item_id#19, s_state#20, spark_grouping_id#21, sum#44, count#45, sum#46, count#47, sum#48, count#49, sum#50, count#51] + +(114) Exchange +Input [11]: [i_item_id#19, s_state#20, spark_grouping_id#21, sum#44, count#45, sum#46, count#47, sum#48, count#49, sum#50, count#51] +Arguments: hashpartitioning(i_item_id#19, s_state#20, spark_grouping_id#21, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(115) HashAggregate +Input [11]: [i_item_id#19, s_state#20, spark_grouping_id#21, sum#44, count#45, sum#46, count#47, sum#48, count#49, sum#50, count#51] +Keys [3]: [i_item_id#19, s_state#20, spark_grouping_id#21] +Functions [4]: [avg(ss_quantity#5), avg(UnscaledValue(ss_list_price#6)), avg(UnscaledValue(ss_coupon_amt#8)), avg(UnscaledValue(ss_sales_price#7))] +Aggregate Attributes [4]: [avg(ss_quantity#5)#35, avg(UnscaledValue(ss_list_price#6))#36, avg(UnscaledValue(ss_coupon_amt#8))#37, avg(UnscaledValue(ss_sales_price#7))#38] +Results [7]: [i_item_id#19, s_state#20, cast((shiftright(spark_grouping_id#21, 0) & 1) as tinyint) AS g_state#39, avg(ss_quantity#5)#35 AS agg1#40, cast((avg(UnscaledValue(ss_list_price#6))#36 / 100.0) as decimal(11,6)) AS agg2#41, cast((avg(UnscaledValue(ss_coupon_amt#8))#37 / 100.0) as decimal(11,6)) AS agg3#42, cast((avg(UnscaledValue(ss_sales_price#7))#38 / 100.0) as decimal(11,6)) AS agg4#43] + +(116) TakeOrderedAndProject +Input [7]: [i_item_id#19, s_state#20, g_state#39, agg1#40, agg2#41, agg3#42, agg4#43] +Arguments: X, [i_item_id#19 ASC NULLS FIRST, s_state#20 ASC NULLS FIRST], [i_item_id#19, s_state#20, g_state#39, agg1#40, agg2#41, agg3#42, agg4#43] + +(117) AdaptiveSparkPlan +Output [7]: [i_item_id#19, s_state#20, g_state#39, agg1#40, agg2#41, agg3#42, agg4#43] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q28.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q28.txt new file mode 100644 index 000000000..6b8b7124f --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q28.txt @@ -0,0 +1,984 @@ +== Physical Plan == +AdaptiveSparkPlan (161) ++- == Final Plan == + CartesianProduct Inner (101) + :- CartesianProduct Inner (84) + : :- CartesianProduct Inner (67) + : : :- CartesianProduct Inner (50) + : : : :- CartesianProduct Inner (33) + : : : : :- NativeProject (16) + : : : : : +- NativeHashAggregate (15) + : : : : : +- ShuffleQueryStage (14), Statistics(X) + : : : : : +- NativeShuffleExchange (13) + : : : : : +- NativeHashAggregate (12) + : : : : : +- NativeHashAggregate (11) + : : : : : +- InputAdapter (10) + : : : : : +- AQEShuffleRead (9) + : : : : : +- ShuffleQueryStage (8), Statistics(X) + : : : : : +- NativeShuffleExchange (7) + : : : : : +- NativeHashAggregate (6) + : : : : : +- NativeProject (5) + : : : : : +- NativeProject (4) + : : : : : +- NativeFilter (3) + : : : : : +- InputAdapter (2) + : : : : : +- NativeParquetScan (1) + : : : : +- NativeProject (32) + : : : : +- NativeHashAggregate (31) + : : : : +- ShuffleQueryStage (30), Statistics(X) + : : : : +- NativeShuffleExchange (29) + : : : : +- NativeHashAggregate (28) + : : : : +- NativeHashAggregate (27) + : : : : +- InputAdapter (26) + : : : : +- AQEShuffleRead (25) + : : : : +- ShuffleQueryStage (24), Statistics(X) + : : : : +- NativeShuffleExchange (23) + : : : : +- NativeHashAggregate (22) + : : : : +- NativeProject (21) + : : : : +- NativeProject (20) + : : : : +- NativeFilter (19) + : : : : +- InputAdapter (18) + : : : : +- NativeParquetScan (17) + : : : +- NativeProject (49) + : : : +- NativeHashAggregate (48) + : : : +- ShuffleQueryStage (47), Statistics(X) + : : : +- NativeShuffleExchange (46) + : : : +- NativeHashAggregate (45) + : : : +- NativeHashAggregate (44) + : : : +- InputAdapter (43) + : : : +- AQEShuffleRead (42) + : : : +- ShuffleQueryStage (41), Statistics(X) + : : : +- NativeShuffleExchange (40) + : : : +- NativeHashAggregate (39) + : : : +- NativeProject (38) + : : : +- NativeProject (37) + : : : +- NativeFilter (36) + : : : +- InputAdapter (35) + : : : +- NativeParquetScan (34) + : : +- NativeProject (66) + : : +- NativeHashAggregate (65) + : : +- ShuffleQueryStage (64), Statistics(X) + : : +- NativeShuffleExchange (63) + : : +- NativeHashAggregate (62) + : : +- NativeHashAggregate (61) + : : +- InputAdapter (60) + : : +- AQEShuffleRead (59) + : : +- ShuffleQueryStage (58), Statistics(X) + : : +- NativeShuffleExchange (57) + : : +- NativeHashAggregate (56) + : : +- NativeProject (55) + : : +- NativeProject (54) + : : +- NativeFilter (53) + : : +- InputAdapter (52) + : : +- NativeParquetScan (51) + : +- NativeProject (83) + : +- NativeHashAggregate (82) + : +- ShuffleQueryStage (81), Statistics(X) + : +- NativeShuffleExchange (80) + : +- NativeHashAggregate (79) + : +- NativeHashAggregate (78) + : +- InputAdapter (77) + : +- AQEShuffleRead (76) + : +- ShuffleQueryStage (75), Statistics(X) + : +- NativeShuffleExchange (74) + : +- NativeHashAggregate (73) + : +- NativeProject (72) + : +- NativeProject (71) + : +- NativeFilter (70) + : +- InputAdapter (69) + : +- NativeParquetScan (68) + +- NativeProject (100) + +- NativeHashAggregate (99) + +- ShuffleQueryStage (98), Statistics(X) + +- NativeShuffleExchange (97) + +- NativeHashAggregate (96) + +- NativeHashAggregate (95) + +- InputAdapter (94) + +- AQEShuffleRead (93) + +- ShuffleQueryStage (92), Statistics(X) + +- NativeShuffleExchange (91) + +- NativeHashAggregate (90) + +- NativeProject (89) + +- NativeProject (88) + +- NativeFilter (87) + +- InputAdapter (86) + +- NativeParquetScan (85) ++- == Initial Plan == + CartesianProduct Inner (160) + :- CartesianProduct Inner (150) + : :- CartesianProduct Inner (140) + : : :- CartesianProduct Inner (130) + : : : :- CartesianProduct Inner (120) + : : : : :- HashAggregate (110) + : : : : : +- Exchange (109) + : : : : : +- HashAggregate (108) + : : : : : +- HashAggregate (107) + : : : : : +- Exchange (106) + : : : : : +- HashAggregate (105) + : : : : : +- Project (104) + : : : : : +- Filter (103) + : : : : : +- Scan parquet (102) + : : : : +- HashAggregate (119) + : : : : +- Exchange (118) + : : : : +- HashAggregate (117) + : : : : +- HashAggregate (116) + : : : : +- Exchange (115) + : : : : +- HashAggregate (114) + : : : : +- Project (113) + : : : : +- Filter (112) + : : : : +- Scan parquet (111) + : : : +- HashAggregate (129) + : : : +- Exchange (128) + : : : +- HashAggregate (127) + : : : +- HashAggregate (126) + : : : +- Exchange (125) + : : : +- HashAggregate (124) + : : : +- Project (123) + : : : +- Filter (122) + : : : +- Scan parquet (121) + : : +- HashAggregate (139) + : : +- Exchange (138) + : : +- HashAggregate (137) + : : +- HashAggregate (136) + : : +- Exchange (135) + : : +- HashAggregate (134) + : : +- Project (133) + : : +- Filter (132) + : : +- Scan parquet (131) + : +- HashAggregate (149) + : +- Exchange (148) + : +- HashAggregate (147) + : +- HashAggregate (146) + : +- Exchange (145) + : +- HashAggregate (144) + : +- Project (143) + : +- Filter (142) + : +- Scan parquet (141) + +- HashAggregate (159) + +- Exchange (158) + +- HashAggregate (157) + +- HashAggregate (156) + +- Exchange (155) + +- HashAggregate (154) + +- Project (153) + +- Filter (152) + +- Scan parquet (151) + + +(102) Scan parquet +Output [4]: [ss_quantity#1, ss_wholesale_cost#2, ss_list_price#3, ss_coupon_amt#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_quantity), GreaterThanOrEqual(ss_quantity,0), LessThanOrEqual(ss_quantity,5), Or(Or(And(GreaterThanOrEqual(ss_list_price,8.00),LessThanOrEqual(ss_list_price,18.00)),And(GreaterThanOrEqual(ss_coupon_amt,459.00),LessThanOrEqual(ss_coupon_amt,1459.00))),And(GreaterThanOrEqual(ss_wholesale_cost,57.00),LessThanOrEqual(ss_wholesale_cost,77.00)))] +ReadSchema: struct + +(2) InputAdapter +Input [4]: [ss_quantity#1, ss_wholesale_cost#2, ss_list_price#3, ss_coupon_amt#4] +Arguments: [#1, #2, #3, #4] + +(3) NativeFilter +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Condition : (((isnotnull(ss_quantity#1) AND (ss_quantity#1 >= 0)) AND (ss_quantity#1 <= 5)) AND ((((ss_list_price#3 >= 8.00) AND (ss_list_price#3 <= 18.00)) OR ((ss_coupon_amt#4 >= 459.00) AND (ss_coupon_amt#4 <= 1459.00))) OR ((ss_wholesale_cost#2 >= 57.00) AND (ss_wholesale_cost#2 <= 77.00)))) + +(4) NativeProject +Output [1]: [ss_list_price#3] +Input [4]: [#1#1, #2#2, #3#3, #4#4] + +(5) NativeProject +Output [2]: [ss_list_price#3 AS ss_list_price#3, UnscaledValue(ss_list_price#3) AS _c1#5] +Input [1]: [ss_list_price#3] + +(6) NativeHashAggregate +Input [2]: [ss_list_price#3, _c1#5] +Keys [1]: [ss_list_price#3] +Functions [2]: [partial_avg(_c1#5), partial_count(ss_list_price#3)] +Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#3))#6, count(ss_list_price#3)#7] +Results [2]: [ss_list_price#3, #8#8] + +(7) NativeShuffleExchange +Input [2]: [ss_list_price#3, #8#8] +Arguments: hashpartitioning(ss_list_price#3, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(8) ShuffleQueryStage +Output [2]: [ss_list_price#3, #8#8] +Arguments: X + +(9) AQEShuffleRead +Input [2]: [ss_list_price#3, #8#8] +Arguments: coalesced + +(10) InputAdapter +Input [2]: [ss_list_price#3, #8#8] + +(11) NativeHashAggregate +Input [2]: [ss_list_price#3, #8#8] +Keys [1]: [ss_list_price#3] +Functions [2]: [merge_avg(UnscaledValue(ss_list_price#3)), merge_count(ss_list_price#3)] +Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#3))#6, count(ss_list_price#3)#7] +Results [2]: [ss_list_price#3, #8#8] + +(12) NativeHashAggregate +Input [2]: [ss_list_price#3, #8#8] +Keys: [] +Functions [3]: [merge_avg(UnscaledValue(ss_list_price#3)), merge_count(ss_list_price#3), partial_count(distinct ss_list_price#3)] +Aggregate Attributes [3]: [avg(UnscaledValue(ss_list_price#3))#6, count(ss_list_price#3)#7, count(ss_list_price#3)#9] +Results [1]: [#8#8] + +(13) NativeShuffleExchange +Input [1]: [#8#8] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [1]: [#8#8] +Arguments: X + +(15) NativeHashAggregate +Input [1]: [#8#8] +Keys: [] +Functions [3]: [avg(UnscaledValue(ss_list_price#3)), count(ss_list_price#3), count(distinct ss_list_price#3)] +Aggregate Attributes [3]: [avg(UnscaledValue(ss_list_price#3))#6, count(ss_list_price#3)#7, count(ss_list_price#3)#9] +Results [3]: [avg(UnscaledValue(ss_list_price#3))#6, count(ss_list_price#3)#7, count(ss_list_price#3)#9] + +(16) NativeProject +Output [3]: [cast((avg(UnscaledValue(ss_list_price#3))#6 / 100.0) as decimal(11,6)) AS B1_LP#10, count(ss_list_price#3)#7 AS B1_CNT#11, count(ss_list_price#3)#9 AS B1_CNTD#12] +Input [3]: [avg(UnscaledValue(ss_list_price#3))#6, count(ss_list_price#3)#7, count(ss_list_price#3)#9] + +(111) Scan parquet +Output [4]: [ss_quantity#13, ss_wholesale_cost#14, ss_list_price#15, ss_coupon_amt#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_quantity), GreaterThanOrEqual(ss_quantity,6), LessThanOrEqual(ss_quantity,10), Or(Or(And(GreaterThanOrEqual(ss_list_price,90.00),LessThanOrEqual(ss_list_price,100.00)),And(GreaterThanOrEqual(ss_coupon_amt,2323.00),LessThanOrEqual(ss_coupon_amt,3323.00))),And(GreaterThanOrEqual(ss_wholesale_cost,31.00),LessThanOrEqual(ss_wholesale_cost,51.00)))] +ReadSchema: struct + +(18) InputAdapter +Input [4]: [ss_quantity#13, ss_wholesale_cost#14, ss_list_price#15, ss_coupon_amt#16] +Arguments: [#13, #14, #15, #16] + +(19) NativeFilter +Input [4]: [#13#13, #14#14, #15#15, #16#16] +Condition : (((isnotnull(ss_quantity#13) AND (ss_quantity#13 >= 6)) AND (ss_quantity#13 <= 10)) AND ((((ss_list_price#15 >= 90.00) AND (ss_list_price#15 <= 100.00)) OR ((ss_coupon_amt#16 >= 2323.00) AND (ss_coupon_amt#16 <= 3323.00))) OR ((ss_wholesale_cost#14 >= 31.00) AND (ss_wholesale_cost#14 <= 51.00)))) + +(20) NativeProject +Output [1]: [ss_list_price#15] +Input [4]: [#13#13, #14#14, #15#15, #16#16] + +(21) NativeProject +Output [2]: [ss_list_price#15 AS ss_list_price#15, UnscaledValue(ss_list_price#15) AS _c1#17] +Input [1]: [ss_list_price#15] + +(22) NativeHashAggregate +Input [2]: [ss_list_price#15, _c1#17] +Keys [1]: [ss_list_price#15] +Functions [2]: [partial_avg(_c1#17), partial_count(ss_list_price#15)] +Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#15))#18, count(ss_list_price#15)#19] +Results [2]: [ss_list_price#15, #8#8] + +(23) NativeShuffleExchange +Input [2]: [ss_list_price#15, #8#8] +Arguments: hashpartitioning(ss_list_price#15, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(24) ShuffleQueryStage +Output [2]: [ss_list_price#15, #8#8] +Arguments: X + +(25) AQEShuffleRead +Input [2]: [ss_list_price#15, #8#8] +Arguments: coalesced + +(26) InputAdapter +Input [2]: [ss_list_price#15, #8#8] + +(27) NativeHashAggregate +Input [2]: [ss_list_price#15, #8#8] +Keys [1]: [ss_list_price#15] +Functions [2]: [merge_avg(UnscaledValue(ss_list_price#15)), merge_count(ss_list_price#15)] +Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#15))#18, count(ss_list_price#15)#19] +Results [2]: [ss_list_price#15, #8#8] + +(28) NativeHashAggregate +Input [2]: [ss_list_price#15, #8#8] +Keys: [] +Functions [3]: [merge_avg(UnscaledValue(ss_list_price#15)), merge_count(ss_list_price#15), partial_count(distinct ss_list_price#15)] +Aggregate Attributes [3]: [avg(UnscaledValue(ss_list_price#15))#18, count(ss_list_price#15)#19, count(ss_list_price#15)#20] +Results [1]: [#8#8] + +(29) NativeShuffleExchange +Input [1]: [#8#8] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=4] + +(30) ShuffleQueryStage +Output [1]: [#8#8] +Arguments: X + +(31) NativeHashAggregate +Input [1]: [#8#8] +Keys: [] +Functions [3]: [avg(UnscaledValue(ss_list_price#15)), count(ss_list_price#15), count(distinct ss_list_price#15)] +Aggregate Attributes [3]: [avg(UnscaledValue(ss_list_price#15))#18, count(ss_list_price#15)#19, count(ss_list_price#15)#20] +Results [3]: [avg(UnscaledValue(ss_list_price#15))#18, count(ss_list_price#15)#19, count(ss_list_price#15)#20] + +(32) NativeProject +Output [3]: [cast((avg(UnscaledValue(ss_list_price#15))#18 / 100.0) as decimal(11,6)) AS B2_LP#21, count(ss_list_price#15)#19 AS B2_CNT#22, count(ss_list_price#15)#20 AS B2_CNTD#23] +Input [3]: [avg(UnscaledValue(ss_list_price#15))#18, count(ss_list_price#15)#19, count(ss_list_price#15)#20] + +(33) CartesianProduct +Join type: Inner +Join condition: None + +(121) Scan parquet +Output [4]: [ss_quantity#24, ss_wholesale_cost#25, ss_list_price#26, ss_coupon_amt#27] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_quantity), GreaterThanOrEqual(ss_quantity,11), LessThanOrEqual(ss_quantity,15), Or(Or(And(GreaterThanOrEqual(ss_list_price,142.00),LessThanOrEqual(ss_list_price,152.00)),And(GreaterThanOrEqual(ss_coupon_amt,12214.00),LessThanOrEqual(ss_coupon_amt,13214.00))),And(GreaterThanOrEqual(ss_wholesale_cost,79.00),LessThanOrEqual(ss_wholesale_cost,99.00)))] +ReadSchema: struct + +(35) InputAdapter +Input [4]: [ss_quantity#24, ss_wholesale_cost#25, ss_list_price#26, ss_coupon_amt#27] +Arguments: [#24, #25, #26, #27] + +(36) NativeFilter +Input [4]: [#24#24, #25#25, #26#26, #27#27] +Condition : (((isnotnull(ss_quantity#24) AND (ss_quantity#24 >= 11)) AND (ss_quantity#24 <= 15)) AND ((((ss_list_price#26 >= 142.00) AND (ss_list_price#26 <= 152.00)) OR ((ss_coupon_amt#27 >= 12214.00) AND (ss_coupon_amt#27 <= 13214.00))) OR ((ss_wholesale_cost#25 >= 79.00) AND (ss_wholesale_cost#25 <= 99.00)))) + +(37) NativeProject +Output [1]: [ss_list_price#26] +Input [4]: [#24#24, #25#25, #26#26, #27#27] + +(38) NativeProject +Output [2]: [ss_list_price#26 AS ss_list_price#26, UnscaledValue(ss_list_price#26) AS _c1#28] +Input [1]: [ss_list_price#26] + +(39) NativeHashAggregate +Input [2]: [ss_list_price#26, _c1#28] +Keys [1]: [ss_list_price#26] +Functions [2]: [partial_avg(_c1#28), partial_count(ss_list_price#26)] +Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#26))#29, count(ss_list_price#26)#30] +Results [2]: [ss_list_price#26, #8#8] + +(40) NativeShuffleExchange +Input [2]: [ss_list_price#26, #8#8] +Arguments: hashpartitioning(ss_list_price#26, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(41) ShuffleQueryStage +Output [2]: [ss_list_price#26, #8#8] +Arguments: X + +(42) AQEShuffleRead +Input [2]: [ss_list_price#26, #8#8] +Arguments: coalesced + +(43) InputAdapter +Input [2]: [ss_list_price#26, #8#8] + +(44) NativeHashAggregate +Input [2]: [ss_list_price#26, #8#8] +Keys [1]: [ss_list_price#26] +Functions [2]: [merge_avg(UnscaledValue(ss_list_price#26)), merge_count(ss_list_price#26)] +Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#26))#29, count(ss_list_price#26)#30] +Results [2]: [ss_list_price#26, #8#8] + +(45) NativeHashAggregate +Input [2]: [ss_list_price#26, #8#8] +Keys: [] +Functions [3]: [merge_avg(UnscaledValue(ss_list_price#26)), merge_count(ss_list_price#26), partial_count(distinct ss_list_price#26)] +Aggregate Attributes [3]: [avg(UnscaledValue(ss_list_price#26))#29, count(ss_list_price#26)#30, count(ss_list_price#26)#31] +Results [1]: [#8#8] + +(46) NativeShuffleExchange +Input [1]: [#8#8] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=6] + +(47) ShuffleQueryStage +Output [1]: [#8#8] +Arguments: X + +(48) NativeHashAggregate +Input [1]: [#8#8] +Keys: [] +Functions [3]: [avg(UnscaledValue(ss_list_price#26)), count(ss_list_price#26), count(distinct ss_list_price#26)] +Aggregate Attributes [3]: [avg(UnscaledValue(ss_list_price#26))#29, count(ss_list_price#26)#30, count(ss_list_price#26)#31] +Results [3]: [avg(UnscaledValue(ss_list_price#26))#29, count(ss_list_price#26)#30, count(ss_list_price#26)#31] + +(49) NativeProject +Output [3]: [cast((avg(UnscaledValue(ss_list_price#26))#29 / 100.0) as decimal(11,6)) AS B3_LP#32, count(ss_list_price#26)#30 AS B3_CNT#33, count(ss_list_price#26)#31 AS B3_CNTD#34] +Input [3]: [avg(UnscaledValue(ss_list_price#26))#29, count(ss_list_price#26)#30, count(ss_list_price#26)#31] + +(50) CartesianProduct +Join type: Inner +Join condition: None + +(131) Scan parquet +Output [4]: [ss_quantity#35, ss_wholesale_cost#36, ss_list_price#37, ss_coupon_amt#38] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_quantity), GreaterThanOrEqual(ss_quantity,16), LessThanOrEqual(ss_quantity,20), Or(Or(And(GreaterThanOrEqual(ss_list_price,135.00),LessThanOrEqual(ss_list_price,145.00)),And(GreaterThanOrEqual(ss_coupon_amt,6071.00),LessThanOrEqual(ss_coupon_amt,7071.00))),And(GreaterThanOrEqual(ss_wholesale_cost,38.00),LessThanOrEqual(ss_wholesale_cost,58.00)))] +ReadSchema: struct + +(52) InputAdapter +Input [4]: [ss_quantity#35, ss_wholesale_cost#36, ss_list_price#37, ss_coupon_amt#38] +Arguments: [#35, #36, #37, #38] + +(53) NativeFilter +Input [4]: [#35#35, #36#36, #37#37, #38#38] +Condition : (((isnotnull(ss_quantity#35) AND (ss_quantity#35 >= 16)) AND (ss_quantity#35 <= 20)) AND ((((ss_list_price#37 >= 135.00) AND (ss_list_price#37 <= 145.00)) OR ((ss_coupon_amt#38 >= 6071.00) AND (ss_coupon_amt#38 <= 7071.00))) OR ((ss_wholesale_cost#36 >= 38.00) AND (ss_wholesale_cost#36 <= 58.00)))) + +(54) NativeProject +Output [1]: [ss_list_price#37] +Input [4]: [#35#35, #36#36, #37#37, #38#38] + +(55) NativeProject +Output [2]: [ss_list_price#37 AS ss_list_price#37, UnscaledValue(ss_list_price#37) AS _c1#39] +Input [1]: [ss_list_price#37] + +(56) NativeHashAggregate +Input [2]: [ss_list_price#37, _c1#39] +Keys [1]: [ss_list_price#37] +Functions [2]: [partial_avg(_c1#39), partial_count(ss_list_price#37)] +Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#37))#40, count(ss_list_price#37)#41] +Results [2]: [ss_list_price#37, #8#8] + +(57) NativeShuffleExchange +Input [2]: [ss_list_price#37, #8#8] +Arguments: hashpartitioning(ss_list_price#37, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(58) ShuffleQueryStage +Output [2]: [ss_list_price#37, #8#8] +Arguments: X + +(59) AQEShuffleRead +Input [2]: [ss_list_price#37, #8#8] +Arguments: coalesced + +(60) InputAdapter +Input [2]: [ss_list_price#37, #8#8] + +(61) NativeHashAggregate +Input [2]: [ss_list_price#37, #8#8] +Keys [1]: [ss_list_price#37] +Functions [2]: [merge_avg(UnscaledValue(ss_list_price#37)), merge_count(ss_list_price#37)] +Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#37))#40, count(ss_list_price#37)#41] +Results [2]: [ss_list_price#37, #8#8] + +(62) NativeHashAggregate +Input [2]: [ss_list_price#37, #8#8] +Keys: [] +Functions [3]: [merge_avg(UnscaledValue(ss_list_price#37)), merge_count(ss_list_price#37), partial_count(distinct ss_list_price#37)] +Aggregate Attributes [3]: [avg(UnscaledValue(ss_list_price#37))#40, count(ss_list_price#37)#41, count(ss_list_price#37)#42] +Results [1]: [#8#8] + +(63) NativeShuffleExchange +Input [1]: [#8#8] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=8] + +(64) ShuffleQueryStage +Output [1]: [#8#8] +Arguments: X + +(65) NativeHashAggregate +Input [1]: [#8#8] +Keys: [] +Functions [3]: [avg(UnscaledValue(ss_list_price#37)), count(ss_list_price#37), count(distinct ss_list_price#37)] +Aggregate Attributes [3]: [avg(UnscaledValue(ss_list_price#37))#40, count(ss_list_price#37)#41, count(ss_list_price#37)#42] +Results [3]: [avg(UnscaledValue(ss_list_price#37))#40, count(ss_list_price#37)#41, count(ss_list_price#37)#42] + +(66) NativeProject +Output [3]: [cast((avg(UnscaledValue(ss_list_price#37))#40 / 100.0) as decimal(11,6)) AS B4_LP#43, count(ss_list_price#37)#41 AS B4_CNT#44, count(ss_list_price#37)#42 AS B4_CNTD#45] +Input [3]: [avg(UnscaledValue(ss_list_price#37))#40, count(ss_list_price#37)#41, count(ss_list_price#37)#42] + +(67) CartesianProduct +Join type: Inner +Join condition: None + +(141) Scan parquet +Output [4]: [ss_quantity#46, ss_wholesale_cost#47, ss_list_price#48, ss_coupon_amt#49] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_quantity), GreaterThanOrEqual(ss_quantity,21), LessThanOrEqual(ss_quantity,25), Or(Or(And(GreaterThanOrEqual(ss_list_price,122.00),LessThanOrEqual(ss_list_price,132.00)),And(GreaterThanOrEqual(ss_coupon_amt,836.00),LessThanOrEqual(ss_coupon_amt,1836.00))),And(GreaterThanOrEqual(ss_wholesale_cost,17.00),LessThanOrEqual(ss_wholesale_cost,37.00)))] +ReadSchema: struct + +(69) InputAdapter +Input [4]: [ss_quantity#46, ss_wholesale_cost#47, ss_list_price#48, ss_coupon_amt#49] +Arguments: [#46, #47, #48, #49] + +(70) NativeFilter +Input [4]: [#46#46, #47#47, #48#48, #49#49] +Condition : (((isnotnull(ss_quantity#46) AND (ss_quantity#46 >= 21)) AND (ss_quantity#46 <= 25)) AND ((((ss_list_price#48 >= 122.00) AND (ss_list_price#48 <= 132.00)) OR ((ss_coupon_amt#49 >= 836.00) AND (ss_coupon_amt#49 <= 1836.00))) OR ((ss_wholesale_cost#47 >= 17.00) AND (ss_wholesale_cost#47 <= 37.00)))) + +(71) NativeProject +Output [1]: [ss_list_price#48] +Input [4]: [#46#46, #47#47, #48#48, #49#49] + +(72) NativeProject +Output [2]: [ss_list_price#48 AS ss_list_price#48, UnscaledValue(ss_list_price#48) AS _c1#50] +Input [1]: [ss_list_price#48] + +(73) NativeHashAggregate +Input [2]: [ss_list_price#48, _c1#50] +Keys [1]: [ss_list_price#48] +Functions [2]: [partial_avg(_c1#50), partial_count(ss_list_price#48)] +Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#48))#51, count(ss_list_price#48)#52] +Results [2]: [ss_list_price#48, #8#8] + +(74) NativeShuffleExchange +Input [2]: [ss_list_price#48, #8#8] +Arguments: hashpartitioning(ss_list_price#48, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(75) ShuffleQueryStage +Output [2]: [ss_list_price#48, #8#8] +Arguments: X + +(76) AQEShuffleRead +Input [2]: [ss_list_price#48, #8#8] +Arguments: coalesced + +(77) InputAdapter +Input [2]: [ss_list_price#48, #8#8] + +(78) NativeHashAggregate +Input [2]: [ss_list_price#48, #8#8] +Keys [1]: [ss_list_price#48] +Functions [2]: [merge_avg(UnscaledValue(ss_list_price#48)), merge_count(ss_list_price#48)] +Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#48))#51, count(ss_list_price#48)#52] +Results [2]: [ss_list_price#48, #8#8] + +(79) NativeHashAggregate +Input [2]: [ss_list_price#48, #8#8] +Keys: [] +Functions [3]: [merge_avg(UnscaledValue(ss_list_price#48)), merge_count(ss_list_price#48), partial_count(distinct ss_list_price#48)] +Aggregate Attributes [3]: [avg(UnscaledValue(ss_list_price#48))#51, count(ss_list_price#48)#52, count(ss_list_price#48)#53] +Results [1]: [#8#8] + +(80) NativeShuffleExchange +Input [1]: [#8#8] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=10] + +(81) ShuffleQueryStage +Output [1]: [#8#8] +Arguments: X + +(82) NativeHashAggregate +Input [1]: [#8#8] +Keys: [] +Functions [3]: [avg(UnscaledValue(ss_list_price#48)), count(ss_list_price#48), count(distinct ss_list_price#48)] +Aggregate Attributes [3]: [avg(UnscaledValue(ss_list_price#48))#51, count(ss_list_price#48)#52, count(ss_list_price#48)#53] +Results [3]: [avg(UnscaledValue(ss_list_price#48))#51, count(ss_list_price#48)#52, count(ss_list_price#48)#53] + +(83) NativeProject +Output [3]: [cast((avg(UnscaledValue(ss_list_price#48))#51 / 100.0) as decimal(11,6)) AS B5_LP#54, count(ss_list_price#48)#52 AS B5_CNT#55, count(ss_list_price#48)#53 AS B5_CNTD#56] +Input [3]: [avg(UnscaledValue(ss_list_price#48))#51, count(ss_list_price#48)#52, count(ss_list_price#48)#53] + +(84) CartesianProduct +Join type: Inner +Join condition: None + +(151) Scan parquet +Output [4]: [ss_quantity#57, ss_wholesale_cost#58, ss_list_price#59, ss_coupon_amt#60] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_quantity), GreaterThanOrEqual(ss_quantity,26), LessThanOrEqual(ss_quantity,30), Or(Or(And(GreaterThanOrEqual(ss_list_price,154.00),LessThanOrEqual(ss_list_price,164.00)),And(GreaterThanOrEqual(ss_coupon_amt,7326.00),LessThanOrEqual(ss_coupon_amt,8326.00))),And(GreaterThanOrEqual(ss_wholesale_cost,7.00),LessThanOrEqual(ss_wholesale_cost,27.00)))] +ReadSchema: struct + +(86) InputAdapter +Input [4]: [ss_quantity#57, ss_wholesale_cost#58, ss_list_price#59, ss_coupon_amt#60] +Arguments: [#57, #58, #59, #60] + +(87) NativeFilter +Input [4]: [#57#57, #58#58, #59#59, #60#60] +Condition : (((isnotnull(ss_quantity#57) AND (ss_quantity#57 >= 26)) AND (ss_quantity#57 <= 30)) AND ((((ss_list_price#59 >= 154.00) AND (ss_list_price#59 <= 164.00)) OR ((ss_coupon_amt#60 >= 7326.00) AND (ss_coupon_amt#60 <= 8326.00))) OR ((ss_wholesale_cost#58 >= 7.00) AND (ss_wholesale_cost#58 <= 27.00)))) + +(88) NativeProject +Output [1]: [ss_list_price#59] +Input [4]: [#57#57, #58#58, #59#59, #60#60] + +(89) NativeProject +Output [2]: [ss_list_price#59 AS ss_list_price#59, UnscaledValue(ss_list_price#59) AS _c1#61] +Input [1]: [ss_list_price#59] + +(90) NativeHashAggregate +Input [2]: [ss_list_price#59, _c1#61] +Keys [1]: [ss_list_price#59] +Functions [2]: [partial_avg(_c1#61), partial_count(ss_list_price#59)] +Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#59))#62, count(ss_list_price#59)#63] +Results [2]: [ss_list_price#59, #8#8] + +(91) NativeShuffleExchange +Input [2]: [ss_list_price#59, #8#8] +Arguments: hashpartitioning(ss_list_price#59, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(92) ShuffleQueryStage +Output [2]: [ss_list_price#59, #8#8] +Arguments: X + +(93) AQEShuffleRead +Input [2]: [ss_list_price#59, #8#8] +Arguments: coalesced + +(94) InputAdapter +Input [2]: [ss_list_price#59, #8#8] + +(95) NativeHashAggregate +Input [2]: [ss_list_price#59, #8#8] +Keys [1]: [ss_list_price#59] +Functions [2]: [merge_avg(UnscaledValue(ss_list_price#59)), merge_count(ss_list_price#59)] +Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#59))#62, count(ss_list_price#59)#63] +Results [2]: [ss_list_price#59, #8#8] + +(96) NativeHashAggregate +Input [2]: [ss_list_price#59, #8#8] +Keys: [] +Functions [3]: [merge_avg(UnscaledValue(ss_list_price#59)), merge_count(ss_list_price#59), partial_count(distinct ss_list_price#59)] +Aggregate Attributes [3]: [avg(UnscaledValue(ss_list_price#59))#62, count(ss_list_price#59)#63, count(ss_list_price#59)#64] +Results [1]: [#8#8] + +(97) NativeShuffleExchange +Input [1]: [#8#8] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=12] + +(98) ShuffleQueryStage +Output [1]: [#8#8] +Arguments: X + +(99) NativeHashAggregate +Input [1]: [#8#8] +Keys: [] +Functions [3]: [avg(UnscaledValue(ss_list_price#59)), count(ss_list_price#59), count(distinct ss_list_price#59)] +Aggregate Attributes [3]: [avg(UnscaledValue(ss_list_price#59))#62, count(ss_list_price#59)#63, count(ss_list_price#59)#64] +Results [3]: [avg(UnscaledValue(ss_list_price#59))#62, count(ss_list_price#59)#63, count(ss_list_price#59)#64] + +(100) NativeProject +Output [3]: [cast((avg(UnscaledValue(ss_list_price#59))#62 / 100.0) as decimal(11,6)) AS B6_LP#65, count(ss_list_price#59)#63 AS B6_CNT#66, count(ss_list_price#59)#64 AS B6_CNTD#67] +Input [3]: [avg(UnscaledValue(ss_list_price#59))#62, count(ss_list_price#59)#63, count(ss_list_price#59)#64] + +(101) CartesianProduct +Join type: Inner +Join condition: None + +(102) Scan parquet +Output [4]: [ss_quantity#1, ss_wholesale_cost#2, ss_list_price#3, ss_coupon_amt#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_quantity), GreaterThanOrEqual(ss_quantity,0), LessThanOrEqual(ss_quantity,5), Or(Or(And(GreaterThanOrEqual(ss_list_price,8.00),LessThanOrEqual(ss_list_price,18.00)),And(GreaterThanOrEqual(ss_coupon_amt,459.00),LessThanOrEqual(ss_coupon_amt,1459.00))),And(GreaterThanOrEqual(ss_wholesale_cost,57.00),LessThanOrEqual(ss_wholesale_cost,77.00)))] +ReadSchema: struct + +(103) Filter +Input [4]: [ss_quantity#1, ss_wholesale_cost#2, ss_list_price#3, ss_coupon_amt#4] +Condition : (((isnotnull(ss_quantity#1) AND (ss_quantity#1 >= 0)) AND (ss_quantity#1 <= 5)) AND ((((ss_list_price#3 >= 8.00) AND (ss_list_price#3 <= 18.00)) OR ((ss_coupon_amt#4 >= 459.00) AND (ss_coupon_amt#4 <= 1459.00))) OR ((ss_wholesale_cost#2 >= 57.00) AND (ss_wholesale_cost#2 <= 77.00)))) + +(104) Project +Output [1]: [ss_list_price#3] +Input [4]: [ss_quantity#1, ss_wholesale_cost#2, ss_list_price#3, ss_coupon_amt#4] + +(105) HashAggregate +Input [1]: [ss_list_price#3] +Keys [1]: [ss_list_price#3] +Functions [2]: [partial_avg(UnscaledValue(ss_list_price#3)), partial_count(ss_list_price#3)] +Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#3))#6, count(ss_list_price#3)#7] +Results [4]: [ss_list_price#3, sum#68, count#69, count#70] + +(106) Exchange +Input [4]: [ss_list_price#3, sum#68, count#69, count#70] +Arguments: hashpartitioning(ss_list_price#3, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(107) HashAggregate +Input [4]: [ss_list_price#3, sum#68, count#69, count#70] +Keys [1]: [ss_list_price#3] +Functions [2]: [merge_avg(UnscaledValue(ss_list_price#3)), merge_count(ss_list_price#3)] +Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#3))#6, count(ss_list_price#3)#7] +Results [4]: [ss_list_price#3, sum#68, count#69, count#70] + +(108) HashAggregate +Input [4]: [ss_list_price#3, sum#68, count#69, count#70] +Keys: [] +Functions [3]: [merge_avg(UnscaledValue(ss_list_price#3)), merge_count(ss_list_price#3), partial_count(distinct ss_list_price#3)] +Aggregate Attributes [3]: [avg(UnscaledValue(ss_list_price#3))#6, count(ss_list_price#3)#7, count(ss_list_price#3)#9] +Results [4]: [sum#68, count#69, count#70, count#71] + +(109) Exchange +Input [4]: [sum#68, count#69, count#70, count#71] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=14] + +(110) HashAggregate +Input [4]: [sum#68, count#69, count#70, count#71] +Keys: [] +Functions [3]: [avg(UnscaledValue(ss_list_price#3)), count(ss_list_price#3), count(distinct ss_list_price#3)] +Aggregate Attributes [3]: [avg(UnscaledValue(ss_list_price#3))#6, count(ss_list_price#3)#7, count(ss_list_price#3)#9] +Results [3]: [cast((avg(UnscaledValue(ss_list_price#3))#6 / 100.0) as decimal(11,6)) AS B1_LP#10, count(ss_list_price#3)#7 AS B1_CNT#11, count(ss_list_price#3)#9 AS B1_CNTD#12] + +(111) Scan parquet +Output [4]: [ss_quantity#13, ss_wholesale_cost#14, ss_list_price#15, ss_coupon_amt#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_quantity), GreaterThanOrEqual(ss_quantity,6), LessThanOrEqual(ss_quantity,10), Or(Or(And(GreaterThanOrEqual(ss_list_price,90.00),LessThanOrEqual(ss_list_price,100.00)),And(GreaterThanOrEqual(ss_coupon_amt,2323.00),LessThanOrEqual(ss_coupon_amt,3323.00))),And(GreaterThanOrEqual(ss_wholesale_cost,31.00),LessThanOrEqual(ss_wholesale_cost,51.00)))] +ReadSchema: struct + +(112) Filter +Input [4]: [ss_quantity#13, ss_wholesale_cost#14, ss_list_price#15, ss_coupon_amt#16] +Condition : (((isnotnull(ss_quantity#13) AND (ss_quantity#13 >= 6)) AND (ss_quantity#13 <= 10)) AND ((((ss_list_price#15 >= 90.00) AND (ss_list_price#15 <= 100.00)) OR ((ss_coupon_amt#16 >= 2323.00) AND (ss_coupon_amt#16 <= 3323.00))) OR ((ss_wholesale_cost#14 >= 31.00) AND (ss_wholesale_cost#14 <= 51.00)))) + +(113) Project +Output [1]: [ss_list_price#15] +Input [4]: [ss_quantity#13, ss_wholesale_cost#14, ss_list_price#15, ss_coupon_amt#16] + +(114) HashAggregate +Input [1]: [ss_list_price#15] +Keys [1]: [ss_list_price#15] +Functions [2]: [partial_avg(UnscaledValue(ss_list_price#15)), partial_count(ss_list_price#15)] +Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#15))#18, count(ss_list_price#15)#19] +Results [4]: [ss_list_price#15, sum#72, count#73, count#74] + +(115) Exchange +Input [4]: [ss_list_price#15, sum#72, count#73, count#74] +Arguments: hashpartitioning(ss_list_price#15, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(116) HashAggregate +Input [4]: [ss_list_price#15, sum#72, count#73, count#74] +Keys [1]: [ss_list_price#15] +Functions [2]: [merge_avg(UnscaledValue(ss_list_price#15)), merge_count(ss_list_price#15)] +Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#15))#18, count(ss_list_price#15)#19] +Results [4]: [ss_list_price#15, sum#72, count#73, count#74] + +(117) HashAggregate +Input [4]: [ss_list_price#15, sum#72, count#73, count#74] +Keys: [] +Functions [3]: [merge_avg(UnscaledValue(ss_list_price#15)), merge_count(ss_list_price#15), partial_count(distinct ss_list_price#15)] +Aggregate Attributes [3]: [avg(UnscaledValue(ss_list_price#15))#18, count(ss_list_price#15)#19, count(ss_list_price#15)#20] +Results [4]: [sum#72, count#73, count#74, count#75] + +(118) Exchange +Input [4]: [sum#72, count#73, count#74, count#75] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=16] + +(119) HashAggregate +Input [4]: [sum#72, count#73, count#74, count#75] +Keys: [] +Functions [3]: [avg(UnscaledValue(ss_list_price#15)), count(ss_list_price#15), count(distinct ss_list_price#15)] +Aggregate Attributes [3]: [avg(UnscaledValue(ss_list_price#15))#18, count(ss_list_price#15)#19, count(ss_list_price#15)#20] +Results [3]: [cast((avg(UnscaledValue(ss_list_price#15))#18 / 100.0) as decimal(11,6)) AS B2_LP#21, count(ss_list_price#15)#19 AS B2_CNT#22, count(ss_list_price#15)#20 AS B2_CNTD#23] + +(120) CartesianProduct +Join type: Inner +Join condition: None + +(121) Scan parquet +Output [4]: [ss_quantity#24, ss_wholesale_cost#25, ss_list_price#26, ss_coupon_amt#27] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_quantity), GreaterThanOrEqual(ss_quantity,11), LessThanOrEqual(ss_quantity,15), Or(Or(And(GreaterThanOrEqual(ss_list_price,142.00),LessThanOrEqual(ss_list_price,152.00)),And(GreaterThanOrEqual(ss_coupon_amt,12214.00),LessThanOrEqual(ss_coupon_amt,13214.00))),And(GreaterThanOrEqual(ss_wholesale_cost,79.00),LessThanOrEqual(ss_wholesale_cost,99.00)))] +ReadSchema: struct + +(122) Filter +Input [4]: [ss_quantity#24, ss_wholesale_cost#25, ss_list_price#26, ss_coupon_amt#27] +Condition : (((isnotnull(ss_quantity#24) AND (ss_quantity#24 >= 11)) AND (ss_quantity#24 <= 15)) AND ((((ss_list_price#26 >= 142.00) AND (ss_list_price#26 <= 152.00)) OR ((ss_coupon_amt#27 >= 12214.00) AND (ss_coupon_amt#27 <= 13214.00))) OR ((ss_wholesale_cost#25 >= 79.00) AND (ss_wholesale_cost#25 <= 99.00)))) + +(123) Project +Output [1]: [ss_list_price#26] +Input [4]: [ss_quantity#24, ss_wholesale_cost#25, ss_list_price#26, ss_coupon_amt#27] + +(124) HashAggregate +Input [1]: [ss_list_price#26] +Keys [1]: [ss_list_price#26] +Functions [2]: [partial_avg(UnscaledValue(ss_list_price#26)), partial_count(ss_list_price#26)] +Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#26))#29, count(ss_list_price#26)#30] +Results [4]: [ss_list_price#26, sum#76, count#77, count#78] + +(125) Exchange +Input [4]: [ss_list_price#26, sum#76, count#77, count#78] +Arguments: hashpartitioning(ss_list_price#26, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(126) HashAggregate +Input [4]: [ss_list_price#26, sum#76, count#77, count#78] +Keys [1]: [ss_list_price#26] +Functions [2]: [merge_avg(UnscaledValue(ss_list_price#26)), merge_count(ss_list_price#26)] +Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#26))#29, count(ss_list_price#26)#30] +Results [4]: [ss_list_price#26, sum#76, count#77, count#78] + +(127) HashAggregate +Input [4]: [ss_list_price#26, sum#76, count#77, count#78] +Keys: [] +Functions [3]: [merge_avg(UnscaledValue(ss_list_price#26)), merge_count(ss_list_price#26), partial_count(distinct ss_list_price#26)] +Aggregate Attributes [3]: [avg(UnscaledValue(ss_list_price#26))#29, count(ss_list_price#26)#30, count(ss_list_price#26)#31] +Results [4]: [sum#76, count#77, count#78, count#79] + +(128) Exchange +Input [4]: [sum#76, count#77, count#78, count#79] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=18] + +(129) HashAggregate +Input [4]: [sum#76, count#77, count#78, count#79] +Keys: [] +Functions [3]: [avg(UnscaledValue(ss_list_price#26)), count(ss_list_price#26), count(distinct ss_list_price#26)] +Aggregate Attributes [3]: [avg(UnscaledValue(ss_list_price#26))#29, count(ss_list_price#26)#30, count(ss_list_price#26)#31] +Results [3]: [cast((avg(UnscaledValue(ss_list_price#26))#29 / 100.0) as decimal(11,6)) AS B3_LP#32, count(ss_list_price#26)#30 AS B3_CNT#33, count(ss_list_price#26)#31 AS B3_CNTD#34] + +(130) CartesianProduct +Join type: Inner +Join condition: None + +(131) Scan parquet +Output [4]: [ss_quantity#35, ss_wholesale_cost#36, ss_list_price#37, ss_coupon_amt#38] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_quantity), GreaterThanOrEqual(ss_quantity,16), LessThanOrEqual(ss_quantity,20), Or(Or(And(GreaterThanOrEqual(ss_list_price,135.00),LessThanOrEqual(ss_list_price,145.00)),And(GreaterThanOrEqual(ss_coupon_amt,6071.00),LessThanOrEqual(ss_coupon_amt,7071.00))),And(GreaterThanOrEqual(ss_wholesale_cost,38.00),LessThanOrEqual(ss_wholesale_cost,58.00)))] +ReadSchema: struct + +(132) Filter +Input [4]: [ss_quantity#35, ss_wholesale_cost#36, ss_list_price#37, ss_coupon_amt#38] +Condition : (((isnotnull(ss_quantity#35) AND (ss_quantity#35 >= 16)) AND (ss_quantity#35 <= 20)) AND ((((ss_list_price#37 >= 135.00) AND (ss_list_price#37 <= 145.00)) OR ((ss_coupon_amt#38 >= 6071.00) AND (ss_coupon_amt#38 <= 7071.00))) OR ((ss_wholesale_cost#36 >= 38.00) AND (ss_wholesale_cost#36 <= 58.00)))) + +(133) Project +Output [1]: [ss_list_price#37] +Input [4]: [ss_quantity#35, ss_wholesale_cost#36, ss_list_price#37, ss_coupon_amt#38] + +(134) HashAggregate +Input [1]: [ss_list_price#37] +Keys [1]: [ss_list_price#37] +Functions [2]: [partial_avg(UnscaledValue(ss_list_price#37)), partial_count(ss_list_price#37)] +Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#37))#40, count(ss_list_price#37)#41] +Results [4]: [ss_list_price#37, sum#80, count#81, count#82] + +(135) Exchange +Input [4]: [ss_list_price#37, sum#80, count#81, count#82] +Arguments: hashpartitioning(ss_list_price#37, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(136) HashAggregate +Input [4]: [ss_list_price#37, sum#80, count#81, count#82] +Keys [1]: [ss_list_price#37] +Functions [2]: [merge_avg(UnscaledValue(ss_list_price#37)), merge_count(ss_list_price#37)] +Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#37))#40, count(ss_list_price#37)#41] +Results [4]: [ss_list_price#37, sum#80, count#81, count#82] + +(137) HashAggregate +Input [4]: [ss_list_price#37, sum#80, count#81, count#82] +Keys: [] +Functions [3]: [merge_avg(UnscaledValue(ss_list_price#37)), merge_count(ss_list_price#37), partial_count(distinct ss_list_price#37)] +Aggregate Attributes [3]: [avg(UnscaledValue(ss_list_price#37))#40, count(ss_list_price#37)#41, count(ss_list_price#37)#42] +Results [4]: [sum#80, count#81, count#82, count#83] + +(138) Exchange +Input [4]: [sum#80, count#81, count#82, count#83] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=20] + +(139) HashAggregate +Input [4]: [sum#80, count#81, count#82, count#83] +Keys: [] +Functions [3]: [avg(UnscaledValue(ss_list_price#37)), count(ss_list_price#37), count(distinct ss_list_price#37)] +Aggregate Attributes [3]: [avg(UnscaledValue(ss_list_price#37))#40, count(ss_list_price#37)#41, count(ss_list_price#37)#42] +Results [3]: [cast((avg(UnscaledValue(ss_list_price#37))#40 / 100.0) as decimal(11,6)) AS B4_LP#43, count(ss_list_price#37)#41 AS B4_CNT#44, count(ss_list_price#37)#42 AS B4_CNTD#45] + +(140) CartesianProduct +Join type: Inner +Join condition: None + +(141) Scan parquet +Output [4]: [ss_quantity#46, ss_wholesale_cost#47, ss_list_price#48, ss_coupon_amt#49] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_quantity), GreaterThanOrEqual(ss_quantity,21), LessThanOrEqual(ss_quantity,25), Or(Or(And(GreaterThanOrEqual(ss_list_price,122.00),LessThanOrEqual(ss_list_price,132.00)),And(GreaterThanOrEqual(ss_coupon_amt,836.00),LessThanOrEqual(ss_coupon_amt,1836.00))),And(GreaterThanOrEqual(ss_wholesale_cost,17.00),LessThanOrEqual(ss_wholesale_cost,37.00)))] +ReadSchema: struct + +(142) Filter +Input [4]: [ss_quantity#46, ss_wholesale_cost#47, ss_list_price#48, ss_coupon_amt#49] +Condition : (((isnotnull(ss_quantity#46) AND (ss_quantity#46 >= 21)) AND (ss_quantity#46 <= 25)) AND ((((ss_list_price#48 >= 122.00) AND (ss_list_price#48 <= 132.00)) OR ((ss_coupon_amt#49 >= 836.00) AND (ss_coupon_amt#49 <= 1836.00))) OR ((ss_wholesale_cost#47 >= 17.00) AND (ss_wholesale_cost#47 <= 37.00)))) + +(143) Project +Output [1]: [ss_list_price#48] +Input [4]: [ss_quantity#46, ss_wholesale_cost#47, ss_list_price#48, ss_coupon_amt#49] + +(144) HashAggregate +Input [1]: [ss_list_price#48] +Keys [1]: [ss_list_price#48] +Functions [2]: [partial_avg(UnscaledValue(ss_list_price#48)), partial_count(ss_list_price#48)] +Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#48))#51, count(ss_list_price#48)#52] +Results [4]: [ss_list_price#48, sum#84, count#85, count#86] + +(145) Exchange +Input [4]: [ss_list_price#48, sum#84, count#85, count#86] +Arguments: hashpartitioning(ss_list_price#48, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(146) HashAggregate +Input [4]: [ss_list_price#48, sum#84, count#85, count#86] +Keys [1]: [ss_list_price#48] +Functions [2]: [merge_avg(UnscaledValue(ss_list_price#48)), merge_count(ss_list_price#48)] +Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#48))#51, count(ss_list_price#48)#52] +Results [4]: [ss_list_price#48, sum#84, count#85, count#86] + +(147) HashAggregate +Input [4]: [ss_list_price#48, sum#84, count#85, count#86] +Keys: [] +Functions [3]: [merge_avg(UnscaledValue(ss_list_price#48)), merge_count(ss_list_price#48), partial_count(distinct ss_list_price#48)] +Aggregate Attributes [3]: [avg(UnscaledValue(ss_list_price#48))#51, count(ss_list_price#48)#52, count(ss_list_price#48)#53] +Results [4]: [sum#84, count#85, count#86, count#87] + +(148) Exchange +Input [4]: [sum#84, count#85, count#86, count#87] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=22] + +(149) HashAggregate +Input [4]: [sum#84, count#85, count#86, count#87] +Keys: [] +Functions [3]: [avg(UnscaledValue(ss_list_price#48)), count(ss_list_price#48), count(distinct ss_list_price#48)] +Aggregate Attributes [3]: [avg(UnscaledValue(ss_list_price#48))#51, count(ss_list_price#48)#52, count(ss_list_price#48)#53] +Results [3]: [cast((avg(UnscaledValue(ss_list_price#48))#51 / 100.0) as decimal(11,6)) AS B5_LP#54, count(ss_list_price#48)#52 AS B5_CNT#55, count(ss_list_price#48)#53 AS B5_CNTD#56] + +(150) CartesianProduct +Join type: Inner +Join condition: None + +(151) Scan parquet +Output [4]: [ss_quantity#57, ss_wholesale_cost#58, ss_list_price#59, ss_coupon_amt#60] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_quantity), GreaterThanOrEqual(ss_quantity,26), LessThanOrEqual(ss_quantity,30), Or(Or(And(GreaterThanOrEqual(ss_list_price,154.00),LessThanOrEqual(ss_list_price,164.00)),And(GreaterThanOrEqual(ss_coupon_amt,7326.00),LessThanOrEqual(ss_coupon_amt,8326.00))),And(GreaterThanOrEqual(ss_wholesale_cost,7.00),LessThanOrEqual(ss_wholesale_cost,27.00)))] +ReadSchema: struct + +(152) Filter +Input [4]: [ss_quantity#57, ss_wholesale_cost#58, ss_list_price#59, ss_coupon_amt#60] +Condition : (((isnotnull(ss_quantity#57) AND (ss_quantity#57 >= 26)) AND (ss_quantity#57 <= 30)) AND ((((ss_list_price#59 >= 154.00) AND (ss_list_price#59 <= 164.00)) OR ((ss_coupon_amt#60 >= 7326.00) AND (ss_coupon_amt#60 <= 8326.00))) OR ((ss_wholesale_cost#58 >= 7.00) AND (ss_wholesale_cost#58 <= 27.00)))) + +(153) Project +Output [1]: [ss_list_price#59] +Input [4]: [ss_quantity#57, ss_wholesale_cost#58, ss_list_price#59, ss_coupon_amt#60] + +(154) HashAggregate +Input [1]: [ss_list_price#59] +Keys [1]: [ss_list_price#59] +Functions [2]: [partial_avg(UnscaledValue(ss_list_price#59)), partial_count(ss_list_price#59)] +Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#59))#62, count(ss_list_price#59)#63] +Results [4]: [ss_list_price#59, sum#88, count#89, count#90] + +(155) Exchange +Input [4]: [ss_list_price#59, sum#88, count#89, count#90] +Arguments: hashpartitioning(ss_list_price#59, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(156) HashAggregate +Input [4]: [ss_list_price#59, sum#88, count#89, count#90] +Keys [1]: [ss_list_price#59] +Functions [2]: [merge_avg(UnscaledValue(ss_list_price#59)), merge_count(ss_list_price#59)] +Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#59))#62, count(ss_list_price#59)#63] +Results [4]: [ss_list_price#59, sum#88, count#89, count#90] + +(157) HashAggregate +Input [4]: [ss_list_price#59, sum#88, count#89, count#90] +Keys: [] +Functions [3]: [merge_avg(UnscaledValue(ss_list_price#59)), merge_count(ss_list_price#59), partial_count(distinct ss_list_price#59)] +Aggregate Attributes [3]: [avg(UnscaledValue(ss_list_price#59))#62, count(ss_list_price#59)#63, count(ss_list_price#59)#64] +Results [4]: [sum#88, count#89, count#90, count#91] + +(158) Exchange +Input [4]: [sum#88, count#89, count#90, count#91] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=24] + +(159) HashAggregate +Input [4]: [sum#88, count#89, count#90, count#91] +Keys: [] +Functions [3]: [avg(UnscaledValue(ss_list_price#59)), count(ss_list_price#59), count(distinct ss_list_price#59)] +Aggregate Attributes [3]: [avg(UnscaledValue(ss_list_price#59))#62, count(ss_list_price#59)#63, count(ss_list_price#59)#64] +Results [3]: [cast((avg(UnscaledValue(ss_list_price#59))#62 / 100.0) as decimal(11,6)) AS B6_LP#65, count(ss_list_price#59)#63 AS B6_CNT#66, count(ss_list_price#59)#64 AS B6_CNTD#67] + +(160) CartesianProduct +Join type: Inner +Join condition: None + +(161) AdaptiveSparkPlan +Output [18]: [B1_LP#10, B1_CNT#11, B1_CNTD#12, B2_LP#21, B2_CNT#22, B2_CNTD#23, B3_LP#32, B3_CNT#33, B3_CNTD#34, B4_LP#43, B4_CNT#44, B4_CNTD#45, B5_LP#54, B5_CNT#55, B5_CNTD#56, B6_LP#65, B6_CNT#66, B6_CNTD#67] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q29.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q29.txt new file mode 100644 index 000000000..3029e7a5f --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q29.txt @@ -0,0 +1,998 @@ +== Physical Plan == +AdaptiveSparkPlan (184) ++- == Final Plan == + NativeProject (118) + +- NativeHashAggregate (117) + +- InputAdapter (116) + +- AQEShuffleRead (115) + +- ShuffleQueryStage (114), Statistics(X) + +- NativeShuffleExchange (113) + +- NativeHashAggregate (112) + +- NativeProject (111) + +- NativeSortMergeJoin Inner (110) + :- NativeSort (101) + : +- InputAdapter (100) + : +- AQEShuffleRead (99) + : +- ShuffleQueryStage (98), Statistics(X) + : +- NativeShuffleExchange (97) + : +- NativeProject (96) + : +- NativeSortMergeJoin Inner (95) + : :- NativeSort (86) + : : +- InputAdapter (85) + : : +- AQEShuffleRead (84) + : : +- ShuffleQueryStage (83), Statistics(X) + : : +- NativeShuffleExchange (82) + : : +- NativeProject (81) + : : +- NativeSortMergeJoin Inner (80) + : : :- NativeSort (70) + : : : +- InputAdapter (69) + : : : +- AQEShuffleRead (68) + : : : +- ShuffleQueryStage (67), Statistics(X) + : : : +- NativeShuffleExchange (66) + : : : +- NativeProject (65) + : : : +- NativeSortMergeJoin Inner (64) + : : : :- NativeSort (54) + : : : : +- InputAdapter (53) + : : : : +- AQEShuffleRead (52) + : : : : +- ShuffleQueryStage (51), Statistics(X) + : : : : +- NativeShuffleExchange (50) + : : : : +- NativeProject (49) + : : : : +- NativeSortMergeJoin Inner (48) + : : : : :- NativeSort (38) + : : : : : +- InputAdapter (37) + : : : : : +- AQEShuffleRead (36) + : : : : : +- ShuffleQueryStage (35), Statistics(X) + : : : : : +- NativeShuffleExchange (34) + : : : : : +- NativeProject (33) + : : : : : +- NativeSortMergeJoin Inner (32) + : : : : : :- NativeSort (23) + : : : : : : +- InputAdapter (22) + : : : : : : +- AQEShuffleRead (21) + : : : : : : +- ShuffleQueryStage (20), Statistics(X) + : : : : : : +- NativeShuffleExchange (19) + : : : : : : +- NativeProject (18) + : : : : : : +- NativeSortMergeJoin Inner (17) + : : : : : : :- NativeSort (8) + : : : : : : : +- InputAdapter (7) + : : : : : : : +- AQEShuffleRead (6) + : : : : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : : : : +- NativeShuffleExchange (4) + : : : : : : : +- NativeFilter (3) + : : : : : : : +- InputAdapter (2) + : : : : : : : +- NativeParquetScan (1) + : : : : : : +- NativeSort (16) + : : : : : : +- InputAdapter (15) + : : : : : : +- AQEShuffleRead (14) + : : : : : : +- ShuffleQueryStage (13), Statistics(X) + : : : : : : +- NativeShuffleExchange (12) + : : : : : : +- NativeFilter (11) + : : : : : : +- InputAdapter (10) + : : : : : : +- NativeParquetScan (9) + : : : : : +- NativeSort (31) + : : : : : +- InputAdapter (30) + : : : : : +- AQEShuffleRead (29) + : : : : : +- ShuffleQueryStage (28), Statistics(X) + : : : : : +- NativeShuffleExchange (27) + : : : : : +- NativeFilter (26) + : : : : : +- InputAdapter (25) + : : : : : +- NativeParquetScan (24) + : : : : +- NativeSort (47) + : : : : +- InputAdapter (46) + : : : : +- AQEShuffleRead (45) + : : : : +- ShuffleQueryStage (44), Statistics(X) + : : : : +- NativeShuffleExchange (43) + : : : : +- NativeProject (42) + : : : : +- NativeFilter (41) + : : : : +- InputAdapter (40) + : : : : +- NativeParquetScan (39) + : : : +- NativeSort (63) + : : : +- InputAdapter (62) + : : : +- AQEShuffleRead (61) + : : : +- ShuffleQueryStage (60), Statistics(X) + : : : +- NativeShuffleExchange (59) + : : : +- NativeProject (58) + : : : +- NativeFilter (57) + : : : +- InputAdapter (56) + : : : +- NativeParquetScan (55) + : : +- NativeSort (79) + : : +- InputAdapter (78) + : : +- AQEShuffleRead (77) + : : +- ShuffleQueryStage (76), Statistics(X) + : : +- NativeShuffleExchange (75) + : : +- NativeProject (74) + : : +- NativeFilter (73) + : : +- InputAdapter (72) + : : +- NativeParquetScan (71) + : +- NativeSort (94) + : +- InputAdapter (93) + : +- AQEShuffleRead (92) + : +- ShuffleQueryStage (91), Statistics(X) + : +- NativeShuffleExchange (90) + : +- NativeFilter (89) + : +- InputAdapter (88) + : +- NativeParquetScan (87) + +- NativeSort (109) + +- InputAdapter (108) + +- AQEShuffleRead (107) + +- ShuffleQueryStage (106), Statistics(X) + +- NativeShuffleExchange (105) + +- NativeFilter (104) + +- InputAdapter (103) + +- NativeParquetScan (102) ++- == Initial Plan == + TakeOrderedAndProject (183) + +- HashAggregate (182) + +- Exchange (181) + +- HashAggregate (180) + +- Project (179) + +- SortMergeJoin Inner (178) + :- Sort (173) + : +- Exchange (172) + : +- Project (171) + : +- SortMergeJoin Inner (170) + : :- Sort (165) + : : +- Exchange (164) + : : +- Project (163) + : : +- SortMergeJoin Inner (162) + : : :- Sort (156) + : : : +- Exchange (155) + : : : +- Project (154) + : : : +- SortMergeJoin Inner (153) + : : : :- Sort (147) + : : : : +- Exchange (146) + : : : : +- Project (145) + : : : : +- SortMergeJoin Inner (144) + : : : : :- Sort (138) + : : : : : +- Exchange (137) + : : : : : +- Project (136) + : : : : : +- SortMergeJoin Inner (135) + : : : : : :- Sort (130) + : : : : : : +- Exchange (129) + : : : : : : +- Project (128) + : : : : : : +- SortMergeJoin Inner (127) + : : : : : : :- Sort (122) + : : : : : : : +- Exchange (121) + : : : : : : : +- Filter (120) + : : : : : : : +- Scan parquet (119) + : : : : : : +- Sort (126) + : : : : : : +- Exchange (125) + : : : : : : +- Filter (124) + : : : : : : +- Scan parquet (123) + : : : : : +- Sort (134) + : : : : : +- Exchange (133) + : : : : : +- Filter (132) + : : : : : +- Scan parquet (131) + : : : : +- Sort (143) + : : : : +- Exchange (142) + : : : : +- Project (141) + : : : : +- Filter (140) + : : : : +- Scan parquet (139) + : : : +- Sort (152) + : : : +- Exchange (151) + : : : +- Project (150) + : : : +- Filter (149) + : : : +- Scan parquet (148) + : : +- Sort (161) + : : +- Exchange (160) + : : +- Project (159) + : : +- Filter (158) + : : +- Scan parquet (157) + : +- Sort (169) + : +- Exchange (168) + : +- Filter (167) + : +- Scan parquet (166) + +- Sort (177) + +- Exchange (176) + +- Filter (175) + +- Scan parquet (174) + + +(119) Scan parquet +Output [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_ticket_number#5, ss_quantity#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk), IsNotNull(ss_item_sk), IsNotNull(ss_ticket_number), IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_ticket_number#5, ss_quantity#6] +Arguments: [#1, #2, #3, #4, #5, #6] + +(3) NativeFilter +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Condition : ((((isnotnull(ss_customer_sk#3) AND isnotnull(ss_item_sk#2)) AND isnotnull(ss_ticket_number#5)) AND isnotnull(ss_sold_date_sk#1)) AND isnotnull(ss_store_sk#4)) + +(4) NativeShuffleExchange +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Arguments: hashpartitioning(ss_customer_sk#3, ss_item_sk#2, ss_ticket_number#5, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Arguments: X + +(6) AQEShuffleRead +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Arguments: coalesced + +(7) InputAdapter +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] + +(8) NativeSort +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Arguments: [ss_customer_sk#3 ASC NULLS FIRST, ss_item_sk#2 ASC NULLS FIRST, ss_ticket_number#5 ASC NULLS FIRST], false + +(123) Scan parquet +Output [5]: [sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_ticket_number#10, sr_return_quantity#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_customer_sk), IsNotNull(sr_item_sk), IsNotNull(sr_ticket_number), IsNotNull(sr_returned_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [5]: [sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_ticket_number#10, sr_return_quantity#11] +Arguments: [#7, #8, #9, #10, #11] + +(11) NativeFilter +Input [5]: [#7#7, #8#8, #9#9, #10#10, #11#11] +Condition : (((isnotnull(sr_customer_sk#9) AND isnotnull(sr_item_sk#8)) AND isnotnull(sr_ticket_number#10)) AND isnotnull(sr_returned_date_sk#7)) + +(12) NativeShuffleExchange +Input [5]: [#7#7, #8#8, #9#9, #10#10, #11#11] +Arguments: hashpartitioning(sr_customer_sk#9, sr_item_sk#8, sr_ticket_number#10, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [5]: [#7#7, #8#8, #9#9, #10#10, #11#11] +Arguments: X + +(14) AQEShuffleRead +Input [5]: [#7#7, #8#8, #9#9, #10#10, #11#11] +Arguments: coalesced + +(15) InputAdapter +Input [5]: [#7#7, #8#8, #9#9, #10#10, #11#11] + +(16) NativeSort +Input [5]: [#7#7, #8#8, #9#9, #10#10, #11#11] +Arguments: [sr_customer_sk#9 ASC NULLS FIRST, sr_item_sk#8 ASC NULLS FIRST, sr_ticket_number#10 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [3]: [ss_customer_sk#3, ss_item_sk#2, ss_ticket_number#5] +Right keys [3]: [sr_customer_sk#9, sr_item_sk#8, sr_ticket_number#10] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_return_quantity#11] +Input [11]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9, #10#10, #11#11] + +(19) NativeShuffleExchange +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_return_quantity#11] +Arguments: hashpartitioning(sr_customer_sk#9, sr_item_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_return_quantity#11] +Arguments: X + +(21) AQEShuffleRead +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_return_quantity#11] +Arguments: coalesced + +(22) InputAdapter +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_return_quantity#11] + +(23) NativeSort +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_return_quantity#11] +Arguments: [sr_customer_sk#9 ASC NULLS FIRST, sr_item_sk#8 ASC NULLS FIRST], false + +(131) Scan parquet +Output [4]: [cs_sold_date_sk#12, cs_bill_customer_sk#13, cs_item_sk#14, cs_quantity#15] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_bill_customer_sk), IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(25) InputAdapter +Input [4]: [cs_sold_date_sk#12, cs_bill_customer_sk#13, cs_item_sk#14, cs_quantity#15] +Arguments: [#12, #13, #14, #15] + +(26) NativeFilter +Input [4]: [#12#12, #13#13, #14#14, #15#15] +Condition : ((isnotnull(cs_bill_customer_sk#13) AND isnotnull(cs_item_sk#14)) AND isnotnull(cs_sold_date_sk#12)) + +(27) NativeShuffleExchange +Input [4]: [#12#12, #13#13, #14#14, #15#15] +Arguments: hashpartitioning(cs_bill_customer_sk#13, cs_item_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(28) ShuffleQueryStage +Output [4]: [#12#12, #13#13, #14#14, #15#15] +Arguments: X + +(29) AQEShuffleRead +Input [4]: [#12#12, #13#13, #14#14, #15#15] +Arguments: coalesced + +(30) InputAdapter +Input [4]: [#12#12, #13#13, #14#14, #15#15] + +(31) NativeSort +Input [4]: [#12#12, #13#13, #14#14, #15#15] +Arguments: [cs_bill_customer_sk#13 ASC NULLS FIRST, cs_item_sk#14 ASC NULLS FIRST], false + +(32) NativeSortMergeJoin +Left keys [2]: [sr_customer_sk#9, sr_item_sk#8] +Right keys [2]: [cs_bill_customer_sk#13, cs_item_sk#14] +Join type: Inner +Join condition: None + +(33) NativeProject +Output [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Input [12]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_return_quantity#11, #12#12, #13#13, #14#14, #15#15] + +(34) NativeShuffleExchange +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(35) ShuffleQueryStage +Output [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: X + +(36) AQEShuffleRead +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: coalesced + +(37) InputAdapter +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] + +(38) NativeSort +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(139) Scan parquet +Output [3]: [d_date_sk#16, d_year#17, d_moy#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_moy), IsNotNull(d_year), EqualTo(d_moy,9), EqualTo(d_year,1999), IsNotNull(d_date_sk)] +ReadSchema: struct + +(40) InputAdapter +Input [3]: [d_date_sk#16, d_year#17, d_moy#18] +Arguments: [#16, #17, #18] + +(41) NativeFilter +Input [3]: [#16#16, #17#17, #18#18] +Condition : ((((isnotnull(d_moy#18) AND isnotnull(d_year#17)) AND (d_moy#18 = 9)) AND (d_year#17 = 1999)) AND isnotnull(d_date_sk#16)) + +(42) NativeProject +Output [1]: [d_date_sk#16] +Input [3]: [#16#16, #17#17, #18#18] + +(43) NativeShuffleExchange +Input [1]: [d_date_sk#16] +Arguments: hashpartitioning(d_date_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) ShuffleQueryStage +Output [1]: [d_date_sk#16] +Arguments: X + +(45) AQEShuffleRead +Input [1]: [d_date_sk#16] +Arguments: coalesced + +(46) InputAdapter +Input [1]: [d_date_sk#16] + +(47) NativeSort +Input [1]: [d_date_sk#16] +Arguments: [d_date_sk#16 ASC NULLS FIRST], false + +(48) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#16] +Join type: Inner +Join condition: None + +(49) NativeProject +Output [7]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Input [9]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15, d_date_sk#16] + +(50) NativeShuffleExchange +Input [7]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: hashpartitioning(sr_returned_date_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(51) ShuffleQueryStage +Output [7]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: X + +(52) AQEShuffleRead +Input [7]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: coalesced + +(53) InputAdapter +Input [7]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] + +(54) NativeSort +Input [7]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: [sr_returned_date_sk#7 ASC NULLS FIRST], false + +(148) Scan parquet +Output [3]: [d_date_sk#19, d_year#20, d_moy#21] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_moy), IsNotNull(d_year), GreaterThanOrEqual(d_moy,9), LessThanOrEqual(d_moy,12), EqualTo(d_year,1999), IsNotNull(d_date_sk)] +ReadSchema: struct + +(56) InputAdapter +Input [3]: [d_date_sk#19, d_year#20, d_moy#21] +Arguments: [#19, #20, #21] + +(57) NativeFilter +Input [3]: [#19#19, #20#20, #21#21] +Condition : (((((isnotnull(d_moy#21) AND isnotnull(d_year#20)) AND (d_moy#21 >= 9)) AND (d_moy#21 <= 12)) AND (d_year#20 = 1999)) AND isnotnull(d_date_sk#19)) + +(58) NativeProject +Output [1]: [d_date_sk#19] +Input [3]: [#19#19, #20#20, #21#21] + +(59) NativeShuffleExchange +Input [1]: [d_date_sk#19] +Arguments: hashpartitioning(d_date_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(60) ShuffleQueryStage +Output [1]: [d_date_sk#19] +Arguments: X + +(61) AQEShuffleRead +Input [1]: [d_date_sk#19] +Arguments: coalesced + +(62) InputAdapter +Input [1]: [d_date_sk#19] + +(63) NativeSort +Input [1]: [d_date_sk#19] +Arguments: [d_date_sk#19 ASC NULLS FIRST], false + +(64) NativeSortMergeJoin +Left keys [1]: [sr_returned_date_sk#7] +Right keys [1]: [d_date_sk#19] +Join type: Inner +Join condition: None + +(65) NativeProject +Output [6]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Input [8]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15, d_date_sk#19] + +(66) NativeShuffleExchange +Input [6]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: hashpartitioning(cs_sold_date_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(67) ShuffleQueryStage +Output [6]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: X + +(68) AQEShuffleRead +Input [6]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: coalesced + +(69) InputAdapter +Input [6]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] + +(70) NativeSort +Input [6]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: [cs_sold_date_sk#12 ASC NULLS FIRST], false + +(157) Scan parquet +Output [2]: [d_date_sk#22, d_year#23] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(d_year, [1999,2000,2001]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(72) InputAdapter +Input [2]: [d_date_sk#22, d_year#23] +Arguments: [#22, #23] + +(73) NativeFilter +Input [2]: [#22#22, #23#23] +Condition : (d_year#23 IN (1999,2000,2001) AND isnotnull(d_date_sk#22)) + +(74) NativeProject +Output [1]: [d_date_sk#22] +Input [2]: [#22#22, #23#23] + +(75) NativeShuffleExchange +Input [1]: [d_date_sk#22] +Arguments: hashpartitioning(d_date_sk#22, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(76) ShuffleQueryStage +Output [1]: [d_date_sk#22] +Arguments: X + +(77) AQEShuffleRead +Input [1]: [d_date_sk#22] +Arguments: coalesced + +(78) InputAdapter +Input [1]: [d_date_sk#22] + +(79) NativeSort +Input [1]: [d_date_sk#22] +Arguments: [d_date_sk#22 ASC NULLS FIRST], false + +(80) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#12] +Right keys [1]: [d_date_sk#22] +Join type: Inner +Join condition: None + +(81) NativeProject +Output [5]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_quantity#15] +Input [7]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15, d_date_sk#22] + +(82) NativeShuffleExchange +Input [5]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_quantity#15] +Arguments: hashpartitioning(ss_store_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(83) ShuffleQueryStage +Output [5]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_quantity#15] +Arguments: X + +(84) AQEShuffleRead +Input [5]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_quantity#15] +Arguments: coalesced + +(85) InputAdapter +Input [5]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_quantity#15] + +(86) NativeSort +Input [5]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_quantity#15] +Arguments: [ss_store_sk#4 ASC NULLS FIRST], false + +(166) Scan parquet +Output [3]: [s_store_sk#24, s_store_id#25, s_store_name#26] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(88) InputAdapter +Input [3]: [s_store_sk#24, s_store_id#25, s_store_name#26] +Arguments: [#24, #25, #26] + +(89) NativeFilter +Input [3]: [#24#24, #25#25, #26#26] +Condition : isnotnull(s_store_sk#24) + +(90) NativeShuffleExchange +Input [3]: [#24#24, #25#25, #26#26] +Arguments: hashpartitioning(s_store_sk#24, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(91) ShuffleQueryStage +Output [3]: [#24#24, #25#25, #26#26] +Arguments: X + +(92) AQEShuffleRead +Input [3]: [#24#24, #25#25, #26#26] +Arguments: coalesced + +(93) InputAdapter +Input [3]: [#24#24, #25#25, #26#26] + +(94) NativeSort +Input [3]: [#24#24, #25#25, #26#26] +Arguments: [s_store_sk#24 ASC NULLS FIRST], false + +(95) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#4] +Right keys [1]: [s_store_sk#24] +Join type: Inner +Join condition: None + +(96) NativeProject +Output [6]: [ss_item_sk#2, ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_store_id#25, s_store_name#26] +Input [8]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_quantity#15, #24#24, #25#25, #26#26] + +(97) NativeShuffleExchange +Input [6]: [ss_item_sk#2, ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_store_id#25, s_store_name#26] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(98) ShuffleQueryStage +Output [6]: [ss_item_sk#2, ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_store_id#25, s_store_name#26] +Arguments: X + +(99) AQEShuffleRead +Input [6]: [ss_item_sk#2, ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_store_id#25, s_store_name#26] +Arguments: coalesced + +(100) InputAdapter +Input [6]: [ss_item_sk#2, ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_store_id#25, s_store_name#26] + +(101) NativeSort +Input [6]: [ss_item_sk#2, ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_store_id#25, s_store_name#26] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false + +(174) Scan parquet +Output [3]: [i_item_sk#27, i_item_id#28, i_item_desc#29] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(103) InputAdapter +Input [3]: [i_item_sk#27, i_item_id#28, i_item_desc#29] +Arguments: [#27, #28, #29] + +(104) NativeFilter +Input [3]: [#27#27, #28#28, #29#29] +Condition : isnotnull(i_item_sk#27) + +(105) NativeShuffleExchange +Input [3]: [#27#27, #28#28, #29#29] +Arguments: hashpartitioning(i_item_sk#27, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(106) ShuffleQueryStage +Output [3]: [#27#27, #28#28, #29#29] +Arguments: X + +(107) AQEShuffleRead +Input [3]: [#27#27, #28#28, #29#29] +Arguments: coalesced + +(108) InputAdapter +Input [3]: [#27#27, #28#28, #29#29] + +(109) NativeSort +Input [3]: [#27#27, #28#28, #29#29] +Arguments: [i_item_sk#27 ASC NULLS FIRST], false + +(110) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#27] +Join type: Inner +Join condition: None + +(111) NativeProject +Output [7]: [ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_store_id#25, s_store_name#26, i_item_id#28, i_item_desc#29] +Input [9]: [ss_item_sk#2, ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_store_id#25, s_store_name#26, #27#27, #28#28, #29#29] + +(112) NativeHashAggregate +Input [7]: [ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_store_id#25, s_store_name#26, i_item_id#28, i_item_desc#29] +Keys [4]: [i_item_id#28, i_item_desc#29, s_store_id#25, s_store_name#26] +Functions [3]: [partial_sum(ss_quantity#6), partial_sum(sr_return_quantity#11), partial_sum(cs_quantity#15)] +Aggregate Attributes [3]: [sum#30, sum#31, sum#32] +Results [5]: [i_item_id#28, i_item_desc#29, s_store_id#25, s_store_name#26, #33#33] + +(113) NativeShuffleExchange +Input [5]: [i_item_id#28, i_item_desc#29, s_store_id#25, s_store_name#26, #33#33] +Arguments: hashpartitioning(i_item_id#28, i_item_desc#29, s_store_id#25, s_store_name#26, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(114) ShuffleQueryStage +Output [5]: [i_item_id#28, i_item_desc#29, s_store_id#25, s_store_name#26, #33#33] +Arguments: X + +(115) AQEShuffleRead +Input [5]: [i_item_id#28, i_item_desc#29, s_store_id#25, s_store_name#26, #33#33] +Arguments: coalesced + +(116) InputAdapter +Input [5]: [i_item_id#28, i_item_desc#29, s_store_id#25, s_store_name#26, #33#33] + +(117) NativeHashAggregate +Input [5]: [i_item_id#28, i_item_desc#29, s_store_id#25, s_store_name#26, #33#33] +Keys [4]: [i_item_id#28, i_item_desc#29, s_store_id#25, s_store_name#26] +Functions [3]: [sum(ss_quantity#6), sum(sr_return_quantity#11), sum(cs_quantity#15)] +Aggregate Attributes [3]: [sum(ss_quantity#6)#34, sum(sr_return_quantity#11)#35, sum(cs_quantity#15)#36] +Results [7]: [i_item_id#28, i_item_desc#29, s_store_id#25, s_store_name#26, sum(ss_quantity#6)#34, sum(sr_return_quantity#11)#35, sum(cs_quantity#15)#36] + +(118) NativeProject +Output [7]: [i_item_id#28, i_item_desc#29, s_store_id#25, s_store_name#26, sum(ss_quantity#6)#34 AS store_sales_quantity#37, sum(sr_return_quantity#11)#35 AS store_returns_quantity#38, sum(cs_quantity#15)#36 AS catalog_sales_quantity#39] +Input [7]: [i_item_id#28, i_item_desc#29, s_store_id#25, s_store_name#26, sum(ss_quantity#6)#34, sum(sr_return_quantity#11)#35, sum(cs_quantity#15)#36] + +(119) Scan parquet +Output [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_ticket_number#5, ss_quantity#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk), IsNotNull(ss_item_sk), IsNotNull(ss_ticket_number), IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(120) Filter +Input [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_ticket_number#5, ss_quantity#6] +Condition : ((((isnotnull(ss_customer_sk#3) AND isnotnull(ss_item_sk#2)) AND isnotnull(ss_ticket_number#5)) AND isnotnull(ss_sold_date_sk#1)) AND isnotnull(ss_store_sk#4)) + +(121) Exchange +Input [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_ticket_number#5, ss_quantity#6] +Arguments: hashpartitioning(ss_customer_sk#3, ss_item_sk#2, ss_ticket_number#5, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(122) Sort +Input [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_ticket_number#5, ss_quantity#6] +Arguments: [ss_customer_sk#3 ASC NULLS FIRST, ss_item_sk#2 ASC NULLS FIRST, ss_ticket_number#5 ASC NULLS FIRST], false, 0 + +(123) Scan parquet +Output [5]: [sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_ticket_number#10, sr_return_quantity#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_customer_sk), IsNotNull(sr_item_sk), IsNotNull(sr_ticket_number), IsNotNull(sr_returned_date_sk)] +ReadSchema: struct + +(124) Filter +Input [5]: [sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_ticket_number#10, sr_return_quantity#11] +Condition : (((isnotnull(sr_customer_sk#9) AND isnotnull(sr_item_sk#8)) AND isnotnull(sr_ticket_number#10)) AND isnotnull(sr_returned_date_sk#7)) + +(125) Exchange +Input [5]: [sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_ticket_number#10, sr_return_quantity#11] +Arguments: hashpartitioning(sr_customer_sk#9, sr_item_sk#8, sr_ticket_number#10, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(126) Sort +Input [5]: [sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_ticket_number#10, sr_return_quantity#11] +Arguments: [sr_customer_sk#9 ASC NULLS FIRST, sr_item_sk#8 ASC NULLS FIRST, sr_ticket_number#10 ASC NULLS FIRST], false, 0 + +(127) SortMergeJoin +Left keys [3]: [ss_customer_sk#3, ss_item_sk#2, ss_ticket_number#5] +Right keys [3]: [sr_customer_sk#9, sr_item_sk#8, sr_ticket_number#10] +Join type: Inner +Join condition: None + +(128) Project +Output [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_return_quantity#11] +Input [11]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_ticket_number#5, ss_quantity#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_ticket_number#10, sr_return_quantity#11] + +(129) Exchange +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_return_quantity#11] +Arguments: hashpartitioning(sr_customer_sk#9, sr_item_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(130) Sort +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_return_quantity#11] +Arguments: [sr_customer_sk#9 ASC NULLS FIRST, sr_item_sk#8 ASC NULLS FIRST], false, 0 + +(131) Scan parquet +Output [4]: [cs_sold_date_sk#12, cs_bill_customer_sk#13, cs_item_sk#14, cs_quantity#15] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_bill_customer_sk), IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(132) Filter +Input [4]: [cs_sold_date_sk#12, cs_bill_customer_sk#13, cs_item_sk#14, cs_quantity#15] +Condition : ((isnotnull(cs_bill_customer_sk#13) AND isnotnull(cs_item_sk#14)) AND isnotnull(cs_sold_date_sk#12)) + +(133) Exchange +Input [4]: [cs_sold_date_sk#12, cs_bill_customer_sk#13, cs_item_sk#14, cs_quantity#15] +Arguments: hashpartitioning(cs_bill_customer_sk#13, cs_item_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(134) Sort +Input [4]: [cs_sold_date_sk#12, cs_bill_customer_sk#13, cs_item_sk#14, cs_quantity#15] +Arguments: [cs_bill_customer_sk#13 ASC NULLS FIRST, cs_item_sk#14 ASC NULLS FIRST], false, 0 + +(135) SortMergeJoin +Left keys [2]: [sr_customer_sk#9, sr_item_sk#8] +Right keys [2]: [cs_bill_customer_sk#13, cs_item_sk#14] +Join type: Inner +Join condition: None + +(136) Project +Output [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Input [12]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_item_sk#8, sr_customer_sk#9, sr_return_quantity#11, cs_sold_date_sk#12, cs_bill_customer_sk#13, cs_item_sk#14, cs_quantity#15] + +(137) Exchange +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(138) Sort +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(139) Scan parquet +Output [3]: [d_date_sk#16, d_year#17, d_moy#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_moy), IsNotNull(d_year), EqualTo(d_moy,9), EqualTo(d_year,1999), IsNotNull(d_date_sk)] +ReadSchema: struct + +(140) Filter +Input [3]: [d_date_sk#16, d_year#17, d_moy#18] +Condition : ((((isnotnull(d_moy#18) AND isnotnull(d_year#17)) AND (d_moy#18 = 9)) AND (d_year#17 = 1999)) AND isnotnull(d_date_sk#16)) + +(141) Project +Output [1]: [d_date_sk#16] +Input [3]: [d_date_sk#16, d_year#17, d_moy#18] + +(142) Exchange +Input [1]: [d_date_sk#16] +Arguments: hashpartitioning(d_date_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(143) Sort +Input [1]: [d_date_sk#16] +Arguments: [d_date_sk#16 ASC NULLS FIRST], false, 0 + +(144) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#16] +Join type: Inner +Join condition: None + +(145) Project +Output [7]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Input [9]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15, d_date_sk#16] + +(146) Exchange +Input [7]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: hashpartitioning(sr_returned_date_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(147) Sort +Input [7]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: [sr_returned_date_sk#7 ASC NULLS FIRST], false, 0 + +(148) Scan parquet +Output [3]: [d_date_sk#19, d_year#20, d_moy#21] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_moy), IsNotNull(d_year), GreaterThanOrEqual(d_moy,9), LessThanOrEqual(d_moy,12), EqualTo(d_year,1999), IsNotNull(d_date_sk)] +ReadSchema: struct + +(149) Filter +Input [3]: [d_date_sk#19, d_year#20, d_moy#21] +Condition : (((((isnotnull(d_moy#21) AND isnotnull(d_year#20)) AND (d_moy#21 >= 9)) AND (d_moy#21 <= 12)) AND (d_year#20 = 1999)) AND isnotnull(d_date_sk#19)) + +(150) Project +Output [1]: [d_date_sk#19] +Input [3]: [d_date_sk#19, d_year#20, d_moy#21] + +(151) Exchange +Input [1]: [d_date_sk#19] +Arguments: hashpartitioning(d_date_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(152) Sort +Input [1]: [d_date_sk#19] +Arguments: [d_date_sk#19 ASC NULLS FIRST], false, 0 + +(153) SortMergeJoin +Left keys [1]: [sr_returned_date_sk#7] +Right keys [1]: [d_date_sk#19] +Join type: Inner +Join condition: None + +(154) Project +Output [6]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Input [8]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_returned_date_sk#7, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15, d_date_sk#19] + +(155) Exchange +Input [6]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: hashpartitioning(cs_sold_date_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(156) Sort +Input [6]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15] +Arguments: [cs_sold_date_sk#12 ASC NULLS FIRST], false, 0 + +(157) Scan parquet +Output [2]: [d_date_sk#22, d_year#23] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(d_year, [1999,2000,2001]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(158) Filter +Input [2]: [d_date_sk#22, d_year#23] +Condition : (d_year#23 IN (1999,2000,2001) AND isnotnull(d_date_sk#22)) + +(159) Project +Output [1]: [d_date_sk#22] +Input [2]: [d_date_sk#22, d_year#23] + +(160) Exchange +Input [1]: [d_date_sk#22] +Arguments: hashpartitioning(d_date_sk#22, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(161) Sort +Input [1]: [d_date_sk#22] +Arguments: [d_date_sk#22 ASC NULLS FIRST], false, 0 + +(162) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#12] +Right keys [1]: [d_date_sk#22] +Join type: Inner +Join condition: None + +(163) Project +Output [5]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_quantity#15] +Input [7]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_sold_date_sk#12, cs_quantity#15, d_date_sk#22] + +(164) Exchange +Input [5]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_quantity#15] +Arguments: hashpartitioning(ss_store_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(165) Sort +Input [5]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_quantity#15] +Arguments: [ss_store_sk#4 ASC NULLS FIRST], false, 0 + +(166) Scan parquet +Output [3]: [s_store_sk#24, s_store_id#25, s_store_name#26] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(167) Filter +Input [3]: [s_store_sk#24, s_store_id#25, s_store_name#26] +Condition : isnotnull(s_store_sk#24) + +(168) Exchange +Input [3]: [s_store_sk#24, s_store_id#25, s_store_name#26] +Arguments: hashpartitioning(s_store_sk#24, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(169) Sort +Input [3]: [s_store_sk#24, s_store_id#25, s_store_name#26] +Arguments: [s_store_sk#24 ASC NULLS FIRST], false, 0 + +(170) SortMergeJoin +Left keys [1]: [ss_store_sk#4] +Right keys [1]: [s_store_sk#24] +Join type: Inner +Join condition: None + +(171) Project +Output [6]: [ss_item_sk#2, ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_store_id#25, s_store_name#26] +Input [8]: [ss_item_sk#2, ss_store_sk#4, ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_store_sk#24, s_store_id#25, s_store_name#26] + +(172) Exchange +Input [6]: [ss_item_sk#2, ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_store_id#25, s_store_name#26] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(173) Sort +Input [6]: [ss_item_sk#2, ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_store_id#25, s_store_name#26] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false, 0 + +(174) Scan parquet +Output [3]: [i_item_sk#27, i_item_id#28, i_item_desc#29] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(175) Filter +Input [3]: [i_item_sk#27, i_item_id#28, i_item_desc#29] +Condition : isnotnull(i_item_sk#27) + +(176) Exchange +Input [3]: [i_item_sk#27, i_item_id#28, i_item_desc#29] +Arguments: hashpartitioning(i_item_sk#27, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(177) Sort +Input [3]: [i_item_sk#27, i_item_id#28, i_item_desc#29] +Arguments: [i_item_sk#27 ASC NULLS FIRST], false, 0 + +(178) SortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#27] +Join type: Inner +Join condition: None + +(179) Project +Output [7]: [ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_store_id#25, s_store_name#26, i_item_id#28, i_item_desc#29] +Input [9]: [ss_item_sk#2, ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_store_id#25, s_store_name#26, i_item_sk#27, i_item_id#28, i_item_desc#29] + +(180) HashAggregate +Input [7]: [ss_quantity#6, sr_return_quantity#11, cs_quantity#15, s_store_id#25, s_store_name#26, i_item_id#28, i_item_desc#29] +Keys [4]: [i_item_id#28, i_item_desc#29, s_store_id#25, s_store_name#26] +Functions [3]: [partial_sum(ss_quantity#6), partial_sum(sr_return_quantity#11), partial_sum(cs_quantity#15)] +Aggregate Attributes [3]: [sum#30, sum#31, sum#32] +Results [7]: [i_item_id#28, i_item_desc#29, s_store_id#25, s_store_name#26, sum#40, sum#41, sum#42] + +(181) Exchange +Input [7]: [i_item_id#28, i_item_desc#29, s_store_id#25, s_store_name#26, sum#40, sum#41, sum#42] +Arguments: hashpartitioning(i_item_id#28, i_item_desc#29, s_store_id#25, s_store_name#26, 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(182) HashAggregate +Input [7]: [i_item_id#28, i_item_desc#29, s_store_id#25, s_store_name#26, sum#40, sum#41, sum#42] +Keys [4]: [i_item_id#28, i_item_desc#29, s_store_id#25, s_store_name#26] +Functions [3]: [sum(ss_quantity#6), sum(sr_return_quantity#11), sum(cs_quantity#15)] +Aggregate Attributes [3]: [sum(ss_quantity#6)#34, sum(sr_return_quantity#11)#35, sum(cs_quantity#15)#36] +Results [7]: [i_item_id#28, i_item_desc#29, s_store_id#25, s_store_name#26, sum(ss_quantity#6)#34 AS store_sales_quantity#37, sum(sr_return_quantity#11)#35 AS store_returns_quantity#38, sum(cs_quantity#15)#36 AS catalog_sales_quantity#39] + +(183) TakeOrderedAndProject +Input [7]: [i_item_id#28, i_item_desc#29, s_store_id#25, s_store_name#26, store_sales_quantity#37, store_returns_quantity#38, catalog_sales_quantity#39] +Arguments: X, [i_item_id#28 ASC NULLS FIRST, i_item_desc#29 ASC NULLS FIRST, s_store_id#25 ASC NULLS FIRST, s_store_name#26 ASC NULLS FIRST], [i_item_id#28, i_item_desc#29, s_store_id#25, s_store_name#26, store_sales_quantity#37, store_returns_quantity#38, catalog_sales_quantity#39] + +(184) AdaptiveSparkPlan +Output [7]: [i_item_id#28, i_item_desc#29, s_store_id#25, s_store_name#26, store_sales_quantity#37, store_returns_quantity#38, catalog_sales_quantity#39] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q3.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q3.txt new file mode 100644 index 000000000..1e1c2ada6 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q3.txt @@ -0,0 +1,383 @@ +== Physical Plan == +AdaptiveSparkPlan (69) ++- == Final Plan == + NativeTakeOrdered (44) + +- NativeProject (43) + +- NativeHashAggregate (42) + +- InputAdapter (41) + +- AQEShuffleRead (40) + +- ShuffleQueryStage (39), Statistics(X) + +- NativeShuffleExchange (38) + +- NativeHashAggregate (37) + +- NativeProject (36) + +- NativeProject (35) + +- NativeSortMergeJoin Inner (34) + :- NativeSort (24) + : +- InputAdapter (23) + : +- AQEShuffleRead (22) + : +- ShuffleQueryStage (21), Statistics(X) + : +- NativeShuffleExchange (20) + : +- NativeProject (19) + : +- NativeSortMergeJoin Inner (18) + : :- NativeSort (9) + : : +- InputAdapter (8) + : : +- AQEShuffleRead (7) + : : +- ShuffleQueryStage (6), Statistics(X) + : : +- NativeShuffleExchange (5) + : : +- NativeProject (4) + : : +- NativeFilter (3) + : : +- InputAdapter (2) + : : +- NativeParquetScan (1) + : +- NativeSort (17) + : +- InputAdapter (16) + : +- AQEShuffleRead (15) + : +- ShuffleQueryStage (14), Statistics(X) + : +- NativeShuffleExchange (13) + : +- NativeFilter (12) + : +- InputAdapter (11) + : +- NativeParquetScan (10) + +- NativeSort (33) + +- InputAdapter (32) + +- AQEShuffleRead (31) + +- ShuffleQueryStage (30), Statistics(X) + +- NativeShuffleExchange (29) + +- NativeProject (28) + +- NativeFilter (27) + +- InputAdapter (26) + +- NativeParquetScan (25) ++- == Initial Plan == + TakeOrderedAndProject (68) + +- HashAggregate (67) + +- Exchange (66) + +- HashAggregate (65) + +- Project (64) + +- SortMergeJoin Inner (63) + :- Sort (57) + : +- Exchange (56) + : +- Project (55) + : +- SortMergeJoin Inner (54) + : :- Sort (49) + : : +- Exchange (48) + : : +- Project (47) + : : +- Filter (46) + : : +- Scan parquet (45) + : +- Sort (53) + : +- Exchange (52) + : +- Filter (51) + : +- Scan parquet (50) + +- Sort (62) + +- Exchange (61) + +- Project (60) + +- Filter (59) + +- Scan parquet (58) + + +(45) Scan parquet +Output [3]: [d_date_sk#1, d_year#2, d_moy#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_moy), EqualTo(d_moy,11), IsNotNull(d_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [d_date_sk#1, d_year#2, d_moy#3] +Arguments: [#1, #2, #3] + +(3) NativeFilter +Input [3]: [#1#1, #2#2, #3#3] +Condition : ((isnotnull(d_moy#3) AND (d_moy#3 = 11)) AND isnotnull(d_date_sk#1)) + +(4) NativeProject +Output [2]: [d_date_sk#1, d_year#2] +Input [3]: [#1#1, #2#2, #3#3] + +(5) NativeShuffleExchange +Input [2]: [d_date_sk#1, d_year#2] +Arguments: hashpartitioning(d_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(6) ShuffleQueryStage +Output [2]: [d_date_sk#1, d_year#2] +Arguments: X + +(7) AQEShuffleRead +Input [2]: [d_date_sk#1, d_year#2] +Arguments: coalesced + +(8) InputAdapter +Input [2]: [d_date_sk#1, d_year#2] + +(9) NativeSort +Input [2]: [d_date_sk#1, d_year#2] +Arguments: [d_date_sk#1 ASC NULLS FIRST], false + +(50) Scan parquet +Output [3]: [ss_sold_date_sk#4, ss_item_sk#5, ss_ext_sales_price#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(11) InputAdapter +Input [3]: [ss_sold_date_sk#4, ss_item_sk#5, ss_ext_sales_price#6] +Arguments: [#4, #5, #6] + +(12) NativeFilter +Input [3]: [#4#4, #5#5, #6#6] +Condition : (isnotnull(ss_sold_date_sk#4) AND isnotnull(ss_item_sk#5)) + +(13) NativeShuffleExchange +Input [3]: [#4#4, #5#5, #6#6] +Arguments: hashpartitioning(ss_sold_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [3]: [#4#4, #5#5, #6#6] +Arguments: X + +(15) AQEShuffleRead +Input [3]: [#4#4, #5#5, #6#6] +Arguments: coalesced + +(16) InputAdapter +Input [3]: [#4#4, #5#5, #6#6] + +(17) NativeSort +Input [3]: [#4#4, #5#5, #6#6] +Arguments: [ss_sold_date_sk#4 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [d_date_sk#1] +Right keys [1]: [ss_sold_date_sk#4] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [3]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6] +Input [5]: [d_date_sk#1, d_year#2, #4#4, #5#5, #6#6] + +(20) NativeShuffleExchange +Input [3]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6] +Arguments: hashpartitioning(ss_item_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [3]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6] +Arguments: X + +(22) AQEShuffleRead +Input [3]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6] +Arguments: coalesced + +(23) InputAdapter +Input [3]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6] + +(24) NativeSort +Input [3]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6] +Arguments: [ss_item_sk#5 ASC NULLS FIRST], false + +(58) Scan parquet +Output [4]: [i_item_sk#7, i_brand_id#8, i_brand#9, i_manufact_id#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_manufact_id), EqualTo(i_manufact_id,128), IsNotNull(i_item_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [4]: [i_item_sk#7, i_brand_id#8, i_brand#9, i_manufact_id#10] +Arguments: [#7, #8, #9, #10] + +(27) NativeFilter +Input [4]: [#7#7, #8#8, #9#9, #10#10] +Condition : ((isnotnull(i_manufact_id#10) AND (i_manufact_id#10 = 128)) AND isnotnull(i_item_sk#7)) + +(28) NativeProject +Output [3]: [i_item_sk#7, i_brand_id#8, i_brand#9] +Input [4]: [#7#7, #8#8, #9#9, #10#10] + +(29) NativeShuffleExchange +Input [3]: [i_item_sk#7, i_brand_id#8, i_brand#9] +Arguments: hashpartitioning(i_item_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(30) ShuffleQueryStage +Output [3]: [i_item_sk#7, i_brand_id#8, i_brand#9] +Arguments: X + +(31) AQEShuffleRead +Input [3]: [i_item_sk#7, i_brand_id#8, i_brand#9] +Arguments: coalesced + +(32) InputAdapter +Input [3]: [i_item_sk#7, i_brand_id#8, i_brand#9] + +(33) NativeSort +Input [3]: [i_item_sk#7, i_brand_id#8, i_brand#9] +Arguments: [i_item_sk#7 ASC NULLS FIRST], false + +(34) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#5] +Right keys [1]: [i_item_sk#7] +Join type: Inner +Join condition: None + +(35) NativeProject +Output [4]: [d_year#2, ss_ext_sales_price#6, i_brand_id#8, i_brand#9] +Input [6]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6, i_item_sk#7, i_brand_id#8, i_brand#9] + +(36) NativeProject +Output [4]: [d_year#2 AS d_year#2, i_brand#9 AS i_brand#9, i_brand_id#8 AS i_brand_id#8, UnscaledValue(ss_ext_sales_price#6) AS _c3#11] +Input [4]: [d_year#2, ss_ext_sales_price#6, i_brand_id#8, i_brand#9] + +(37) NativeHashAggregate +Input [4]: [d_year#2, i_brand#9, i_brand_id#8, _c3#11] +Keys [3]: [d_year#2, i_brand#9, i_brand_id#8] +Functions [1]: [partial_sum(_c3#11)] +Aggregate Attributes [1]: [sum#12] +Results [4]: [d_year#2, i_brand#9, i_brand_id#8, #13#13] + +(38) NativeShuffleExchange +Input [4]: [d_year#2, i_brand#9, i_brand_id#8, #13#13] +Arguments: hashpartitioning(d_year#2, i_brand#9, i_brand_id#8, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(39) ShuffleQueryStage +Output [4]: [d_year#2, i_brand#9, i_brand_id#8, #13#13] +Arguments: X + +(40) AQEShuffleRead +Input [4]: [d_year#2, i_brand#9, i_brand_id#8, #13#13] +Arguments: coalesced + +(41) InputAdapter +Input [4]: [d_year#2, i_brand#9, i_brand_id#8, #13#13] + +(42) NativeHashAggregate +Input [4]: [d_year#2, i_brand#9, i_brand_id#8, #13#13] +Keys [3]: [d_year#2, i_brand#9, i_brand_id#8] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#6))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#6))#14] +Results [4]: [d_year#2, i_brand#9, i_brand_id#8, sum(UnscaledValue(ss_ext_sales_price#6))#14] + +(43) NativeProject +Output [4]: [d_year#2, i_brand_id#8 AS brand_id#15, i_brand#9 AS brand#16, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#6))#14,17,2) AS sum_agg#17] +Input [4]: [d_year#2, i_brand#9, i_brand_id#8, sum(UnscaledValue(ss_ext_sales_price#6))#14] + +(44) NativeTakeOrdered +Input [4]: [d_year#2, brand_id#15, brand#16, sum_agg#17] +Arguments: X, [d_year#2 ASC NULLS FIRST, sum_agg#17 DESC NULLS LAST, brand_id#15 ASC NULLS FIRST] + +(45) Scan parquet +Output [3]: [d_date_sk#1, d_year#2, d_moy#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_moy), EqualTo(d_moy,11), IsNotNull(d_date_sk)] +ReadSchema: struct + +(46) Filter +Input [3]: [d_date_sk#1, d_year#2, d_moy#3] +Condition : ((isnotnull(d_moy#3) AND (d_moy#3 = 11)) AND isnotnull(d_date_sk#1)) + +(47) Project +Output [2]: [d_date_sk#1, d_year#2] +Input [3]: [d_date_sk#1, d_year#2, d_moy#3] + +(48) Exchange +Input [2]: [d_date_sk#1, d_year#2] +Arguments: hashpartitioning(d_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(49) Sort +Input [2]: [d_date_sk#1, d_year#2] +Arguments: [d_date_sk#1 ASC NULLS FIRST], false, 0 + +(50) Scan parquet +Output [3]: [ss_sold_date_sk#4, ss_item_sk#5, ss_ext_sales_price#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(51) Filter +Input [3]: [ss_sold_date_sk#4, ss_item_sk#5, ss_ext_sales_price#6] +Condition : (isnotnull(ss_sold_date_sk#4) AND isnotnull(ss_item_sk#5)) + +(52) Exchange +Input [3]: [ss_sold_date_sk#4, ss_item_sk#5, ss_ext_sales_price#6] +Arguments: hashpartitioning(ss_sold_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(53) Sort +Input [3]: [ss_sold_date_sk#4, ss_item_sk#5, ss_ext_sales_price#6] +Arguments: [ss_sold_date_sk#4 ASC NULLS FIRST], false, 0 + +(54) SortMergeJoin +Left keys [1]: [d_date_sk#1] +Right keys [1]: [ss_sold_date_sk#4] +Join type: Inner +Join condition: None + +(55) Project +Output [3]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6] +Input [5]: [d_date_sk#1, d_year#2, ss_sold_date_sk#4, ss_item_sk#5, ss_ext_sales_price#6] + +(56) Exchange +Input [3]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6] +Arguments: hashpartitioning(ss_item_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(57) Sort +Input [3]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6] +Arguments: [ss_item_sk#5 ASC NULLS FIRST], false, 0 + +(58) Scan parquet +Output [4]: [i_item_sk#7, i_brand_id#8, i_brand#9, i_manufact_id#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_manufact_id), EqualTo(i_manufact_id,128), IsNotNull(i_item_sk)] +ReadSchema: struct + +(59) Filter +Input [4]: [i_item_sk#7, i_brand_id#8, i_brand#9, i_manufact_id#10] +Condition : ((isnotnull(i_manufact_id#10) AND (i_manufact_id#10 = 128)) AND isnotnull(i_item_sk#7)) + +(60) Project +Output [3]: [i_item_sk#7, i_brand_id#8, i_brand#9] +Input [4]: [i_item_sk#7, i_brand_id#8, i_brand#9, i_manufact_id#10] + +(61) Exchange +Input [3]: [i_item_sk#7, i_brand_id#8, i_brand#9] +Arguments: hashpartitioning(i_item_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(62) Sort +Input [3]: [i_item_sk#7, i_brand_id#8, i_brand#9] +Arguments: [i_item_sk#7 ASC NULLS FIRST], false, 0 + +(63) SortMergeJoin +Left keys [1]: [ss_item_sk#5] +Right keys [1]: [i_item_sk#7] +Join type: Inner +Join condition: None + +(64) Project +Output [4]: [d_year#2, ss_ext_sales_price#6, i_brand_id#8, i_brand#9] +Input [6]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6, i_item_sk#7, i_brand_id#8, i_brand#9] + +(65) HashAggregate +Input [4]: [d_year#2, ss_ext_sales_price#6, i_brand_id#8, i_brand#9] +Keys [3]: [d_year#2, i_brand#9, i_brand_id#8] +Functions [1]: [partial_sum(UnscaledValue(ss_ext_sales_price#6))] +Aggregate Attributes [1]: [sum#12] +Results [4]: [d_year#2, i_brand#9, i_brand_id#8, sum#18] + +(66) Exchange +Input [4]: [d_year#2, i_brand#9, i_brand_id#8, sum#18] +Arguments: hashpartitioning(d_year#2, i_brand#9, i_brand_id#8, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(67) HashAggregate +Input [4]: [d_year#2, i_brand#9, i_brand_id#8, sum#18] +Keys [3]: [d_year#2, i_brand#9, i_brand_id#8] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#6))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#6))#14] +Results [4]: [d_year#2, i_brand_id#8 AS brand_id#15, i_brand#9 AS brand#16, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#6))#14,17,2) AS sum_agg#17] + +(68) TakeOrderedAndProject +Input [4]: [d_year#2, brand_id#15, brand#16, sum_agg#17] +Arguments: X, [d_year#2 ASC NULLS FIRST, sum_agg#17 DESC NULLS LAST, brand_id#15 ASC NULLS FIRST], [d_year#2, brand_id#15, brand#16, sum_agg#17] + +(69) AdaptiveSparkPlan +Output [4]: [d_year#2, brand_id#15, brand#16, sum_agg#17] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q30.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q30.txt new file mode 100644 index 000000000..b5171f3e7 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q30.txt @@ -0,0 +1,1102 @@ +== Physical Plan == +AdaptiveSparkPlan (202) ++- == Final Plan == + NativeTakeOrdered (129) + +- NativeProject (128) + +- NativeSortMergeJoin Inner (127) + :- NativeSort (117) + : +- InputAdapter (116) + : +- AQEShuffleRead (115) + : +- ShuffleQueryStage (114), Statistics(X) + : +- NativeShuffleExchange (113) + : +- NativeProject (112) + : +- NativeSortMergeJoin Inner (111) + : :- NativeSort (102) + : : +- InputAdapter (101) + : : +- AQEShuffleRead (100) + : : +- ShuffleQueryStage (99), Statistics(X) + : : +- NativeShuffleExchange (98) + : : +- ConvertToNative (97) + : : +- * Project (96) + : : +- * SortMergeJoin Inner (95) + : : :- NativeSort (48) + : : : +- InputAdapter (47) + : : : +- AQEShuffleRead (46) + : : : +- ShuffleQueryStage (45), Statistics(X) + : : : +- NativeShuffleExchange (44) + : : : +- NativeFilter (43) + : : : +- NativeProject (42) + : : : +- NativeHashAggregate (41) + : : : +- InputAdapter (40) + : : : +- AQEShuffleRead (39) + : : : +- ShuffleQueryStage (38), Statistics(X) + : : : +- NativeShuffleExchange (37) + : : : +- NativeHashAggregate (36) + : : : +- NativeProject (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 (94) + : : +- NativeFilter (93) + : : +- NativeProject (92) + : : +- NativeHashAggregate (91) + : : +- InputAdapter (90) + : : +- AQEShuffleRead (89) + : : +- ShuffleQueryStage (88), Statistics(X) + : : +- NativeShuffleExchange (87) + : : +- NativeHashAggregate (86) + : : +- NativeProject (85) + : : +- NativeHashAggregate (84) + : : +- InputAdapter (83) + : : +- AQEShuffleRead (82) + : : +- ShuffleQueryStage (81), Statistics(X) + : : +- NativeShuffleExchange (80) + : : +- NativeHashAggregate (79) + : : +- NativeProject (78) + : : +- NativeProject (77) + : : +- NativeSortMergeJoin Inner (76) + : : :- NativeSort (69) + : : : +- InputAdapter (68) + : : : +- AQEShuffleRead (67) + : : : +- ShuffleQueryStage (66), Statistics(X) + : : : +- NativeShuffleExchange (65) + : : : +- NativeProject (64) + : : : +- NativeSortMergeJoin Inner (63) + : : : :- NativeSort (56) + : : : : +- InputAdapter (55) + : : : : +- AQEShuffleRead (54) + : : : : +- ShuffleQueryStage (53), Statistics(X) + : : : : +- NativeShuffleExchange (52) + : : : : +- NativeFilter (51) + : : : : +- InputAdapter (50) + : : : : +- NativeParquetScan (49) + : : : +- NativeSort (62) + : : : +- InputAdapter (61) + : : : +- InputAdapter (60) + : : : +- AQEShuffleRead (59) + : : : +- ShuffleQueryStage (58), Statistics(X) + : : : +- ReusedExchange (57) + : : +- NativeSort (75) + : : +- InputAdapter (74) + : : +- InputAdapter (73) + : : +- AQEShuffleRead (72) + : : +- ShuffleQueryStage (71), Statistics(X) + : : +- ReusedExchange (70) + : +- NativeSort (110) + : +- InputAdapter (109) + : +- AQEShuffleRead (108) + : +- ShuffleQueryStage (107), Statistics(X) + : +- NativeShuffleExchange (106) + : +- NativeFilter (105) + : +- InputAdapter (104) + : +- NativeParquetScan (103) + +- NativeSort (126) + +- InputAdapter (125) + +- AQEShuffleRead (124) + +- ShuffleQueryStage (123), Statistics(X) + +- NativeShuffleExchange (122) + +- NativeProject (121) + +- NativeFilter (120) + +- InputAdapter (119) + +- NativeParquetScan (118) ++- == Initial Plan == + TakeOrderedAndProject (201) + +- Project (200) + +- SortMergeJoin Inner (199) + :- Sort (193) + : +- Exchange (192) + : +- Project (191) + : +- SortMergeJoin Inner (190) + : :- Sort (185) + : : +- Exchange (184) + : : +- Project (183) + : : +- SortMergeJoin Inner (182) + : : :- Sort (154) + : : : +- Exchange (153) + : : : +- Filter (152) + : : : +- HashAggregate (151) + : : : +- Exchange (150) + : : : +- HashAggregate (149) + : : : +- Project (148) + : : : +- SortMergeJoin Inner (147) + : : : :- Sort (142) + : : : : +- Exchange (141) + : : : : +- Project (140) + : : : : +- SortMergeJoin Inner (139) + : : : : :- Sort (133) + : : : : : +- Exchange (132) + : : : : : +- Filter (131) + : : : : : +- Scan parquet (130) + : : : : +- Sort (138) + : : : : +- Exchange (137) + : : : : +- Project (136) + : : : : +- Filter (135) + : : : : +- Scan parquet (134) + : : : +- Sort (146) + : : : +- Exchange (145) + : : : +- Filter (144) + : : : +- Scan parquet (143) + : : +- Sort (181) + : : +- Filter (180) + : : +- HashAggregate (179) + : : +- Exchange (178) + : : +- HashAggregate (177) + : : +- HashAggregate (176) + : : +- Exchange (175) + : : +- HashAggregate (174) + : : +- Project (173) + : : +- SortMergeJoin Inner (172) + : : :- Sort (167) + : : : +- Exchange (166) + : : : +- Project (165) + : : : +- SortMergeJoin Inner (164) + : : : :- Sort (158) + : : : : +- Exchange (157) + : : : : +- Filter (156) + : : : : +- Scan parquet (155) + : : : +- Sort (163) + : : : +- Exchange (162) + : : : +- Project (161) + : : : +- Filter (160) + : : : +- Scan parquet (159) + : : +- Sort (171) + : : +- Exchange (170) + : : +- Filter (169) + : : +- Scan parquet (168) + : +- Sort (189) + : +- Exchange (188) + : +- Filter (187) + : +- Scan parquet (186) + +- Sort (198) + +- Exchange (197) + +- Project (196) + +- Filter (195) + +- Scan parquet (194) + + +(130) Scan parquet +Output [4]: [wr_returned_date_sk#1, wr_returning_customer_sk#2, wr_returning_addr_sk#3, wr_return_amt#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wr_returned_date_sk), IsNotNull(wr_returning_addr_sk), IsNotNull(wr_returning_customer_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [4]: [wr_returned_date_sk#1, wr_returning_customer_sk#2, wr_returning_addr_sk#3, wr_return_amt#4] +Arguments: [#1, #2, #3, #4] + +(3) NativeFilter +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Condition : ((isnotnull(wr_returned_date_sk#1) AND isnotnull(wr_returning_addr_sk#3)) AND isnotnull(wr_returning_customer_sk#2)) + +(4) NativeShuffleExchange +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: hashpartitioning(wr_returned_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: X + +(6) AQEShuffleRead +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: coalesced + +(7) InputAdapter +Input [4]: [#1#1, #2#2, #3#3, #4#4] + +(8) NativeSort +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: [wr_returned_date_sk#1 ASC NULLS FIRST], false + +(134) Scan parquet +Output [2]: [d_date_sk#5, d_year#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2002), IsNotNull(d_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [d_date_sk#5, d_year#6] +Arguments: [#5, #6] + +(11) NativeFilter +Input [2]: [#5#5, #6#6] +Condition : ((isnotnull(d_year#6) AND (d_year#6 = 2002)) AND isnotnull(d_date_sk#5)) + +(12) NativeProject +Output [1]: [d_date_sk#5] +Input [2]: [#5#5, #6#6] + +(13) NativeShuffleExchange +Input [1]: [d_date_sk#5] +Arguments: hashpartitioning(d_date_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [1]: [d_date_sk#5] +Arguments: X + +(15) AQEShuffleRead +Input [1]: [d_date_sk#5] +Arguments: coalesced + +(16) InputAdapter +Input [1]: [d_date_sk#5] + +(17) NativeSort +Input [1]: [d_date_sk#5] +Arguments: [d_date_sk#5 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [wr_returned_date_sk#1] +Right keys [1]: [d_date_sk#5] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [3]: [wr_returning_customer_sk#2, wr_returning_addr_sk#3, wr_return_amt#4] +Input [5]: [#1#1, #2#2, #3#3, #4#4, d_date_sk#5] + +(20) NativeShuffleExchange +Input [3]: [wr_returning_customer_sk#2, wr_returning_addr_sk#3, wr_return_amt#4] +Arguments: hashpartitioning(wr_returning_addr_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [3]: [wr_returning_customer_sk#2, wr_returning_addr_sk#3, wr_return_amt#4] +Arguments: X + +(22) AQEShuffleRead +Input [3]: [wr_returning_customer_sk#2, wr_returning_addr_sk#3, wr_return_amt#4] +Arguments: coalesced + +(23) InputAdapter +Input [3]: [wr_returning_customer_sk#2, wr_returning_addr_sk#3, wr_return_amt#4] + +(24) NativeSort +Input [3]: [wr_returning_customer_sk#2, wr_returning_addr_sk#3, wr_return_amt#4] +Arguments: [wr_returning_addr_sk#3 ASC NULLS FIRST], false + +(143) Scan parquet +Output [2]: [ca_address_sk#7, ca_state#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_state)] +ReadSchema: struct + +(26) InputAdapter +Input [2]: [ca_address_sk#7, ca_state#8] +Arguments: [#7, #8] + +(27) NativeFilter +Input [2]: [#7#7, #8#8] +Condition : (isnotnull(ca_address_sk#7) AND isnotnull(ca_state#8)) + +(28) NativeShuffleExchange +Input [2]: [#7#7, #8#8] +Arguments: hashpartitioning(ca_address_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(29) ShuffleQueryStage +Output [2]: [#7#7, #8#8] +Arguments: X + +(30) AQEShuffleRead +Input [2]: [#7#7, #8#8] +Arguments: coalesced + +(31) InputAdapter +Input [2]: [#7#7, #8#8] + +(32) NativeSort +Input [2]: [#7#7, #8#8] +Arguments: [ca_address_sk#7 ASC NULLS FIRST], false + +(33) NativeSortMergeJoin +Left keys [1]: [wr_returning_addr_sk#3] +Right keys [1]: [ca_address_sk#7] +Join type: Inner +Join condition: None + +(34) NativeProject +Output [3]: [wr_returning_customer_sk#2, wr_return_amt#4, ca_state#8] +Input [5]: [wr_returning_customer_sk#2, wr_returning_addr_sk#3, wr_return_amt#4, #7#7, #8#8] + +(35) NativeProject +Output [3]: [wr_returning_customer_sk#2 AS wr_returning_customer_sk#2, ca_state#8 AS ca_state#8, UnscaledValue(wr_return_amt#4) AS _c2#9] +Input [3]: [wr_returning_customer_sk#2, wr_return_amt#4, ca_state#8] + +(36) NativeHashAggregate +Input [3]: [wr_returning_customer_sk#2, ca_state#8, _c2#9] +Keys [2]: [wr_returning_customer_sk#2, ca_state#8] +Functions [1]: [partial_sum(_c2#9)] +Aggregate Attributes [1]: [sum#10] +Results [3]: [wr_returning_customer_sk#2, ca_state#8, #11#11] + +(37) NativeShuffleExchange +Input [3]: [wr_returning_customer_sk#2, ca_state#8, #11#11] +Arguments: hashpartitioning(wr_returning_customer_sk#2, ca_state#8, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(38) ShuffleQueryStage +Output [3]: [wr_returning_customer_sk#2, ca_state#8, #11#11] +Arguments: X + +(39) AQEShuffleRead +Input [3]: [wr_returning_customer_sk#2, ca_state#8, #11#11] +Arguments: coalesced + +(40) InputAdapter +Input [3]: [wr_returning_customer_sk#2, ca_state#8, #11#11] + +(41) NativeHashAggregate +Input [3]: [wr_returning_customer_sk#2, ca_state#8, #11#11] +Keys [2]: [wr_returning_customer_sk#2, ca_state#8] +Functions [1]: [sum(UnscaledValue(wr_return_amt#4))] +Aggregate Attributes [1]: [sum(UnscaledValue(wr_return_amt#4))#12] +Results [3]: [wr_returning_customer_sk#2, ca_state#8, sum(UnscaledValue(wr_return_amt#4))#12] + +(42) NativeProject +Output [3]: [wr_returning_customer_sk#2 AS ctr_customer_sk#13, ca_state#8 AS ctr_state#14, MakeDecimal(sum(UnscaledValue(wr_return_amt#4))#12,17,2) AS ctr_total_return#15] +Input [3]: [wr_returning_customer_sk#2, ca_state#8, sum(UnscaledValue(wr_return_amt#4))#12] + +(43) NativeFilter +Input [3]: [ctr_customer_sk#13, ctr_state#14, ctr_total_return#15] +Condition : isnotnull(ctr_total_return#15) + +(44) NativeShuffleExchange +Input [3]: [ctr_customer_sk#13, ctr_state#14, ctr_total_return#15] +Arguments: hashpartitioning(ctr_state#14, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(45) ShuffleQueryStage +Output [3]: [ctr_customer_sk#13, ctr_state#14, ctr_total_return#15] +Arguments: X + +(46) AQEShuffleRead +Input [3]: [ctr_customer_sk#13, ctr_state#14, ctr_total_return#15] +Arguments: coalesced + +(47) InputAdapter +Input [3]: [ctr_customer_sk#13, ctr_state#14, ctr_total_return#15] + +(48) NativeSort +Input [3]: [ctr_customer_sk#13, ctr_state#14, ctr_total_return#15] +Arguments: [ctr_state#14 ASC NULLS FIRST], false + +(155) Scan parquet +Output [4]: [wr_returned_date_sk#16, wr_returning_customer_sk#17, wr_returning_addr_sk#18, wr_return_amt#19] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wr_returned_date_sk), IsNotNull(wr_returning_addr_sk)] +ReadSchema: struct + +(50) InputAdapter +Input [4]: [wr_returned_date_sk#16, wr_returning_customer_sk#17, wr_returning_addr_sk#18, wr_return_amt#19] +Arguments: [#16, #17, #18, #19] + +(51) NativeFilter +Input [4]: [#16#16, #17#17, #18#18, #19#19] +Condition : (isnotnull(wr_returned_date_sk#16) AND isnotnull(wr_returning_addr_sk#18)) + +(52) NativeShuffleExchange +Input [4]: [#16#16, #17#17, #18#18, #19#19] +Arguments: hashpartitioning(wr_returned_date_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(53) ShuffleQueryStage +Output [4]: [#16#16, #17#17, #18#18, #19#19] +Arguments: X + +(54) AQEShuffleRead +Input [4]: [#16#16, #17#17, #18#18, #19#19] +Arguments: coalesced + +(55) InputAdapter +Input [4]: [#16#16, #17#17, #18#18, #19#19] + +(56) NativeSort +Input [4]: [#16#16, #17#17, #18#18, #19#19] +Arguments: [wr_returned_date_sk#16 ASC NULLS FIRST], false + +(57) ReusedExchange [Reuses operator id: 13] +Output [1]: [d_date_sk#20] + +(58) ShuffleQueryStage +Output [1]: [d_date_sk#20] +Arguments: X + +(59) AQEShuffleRead +Input [1]: [d_date_sk#20] +Arguments: coalesced + +(60) InputAdapter +Input [1]: [d_date_sk#20] +Arguments: [#20] + +(61) InputAdapter +Input [1]: [#20#20] + +(62) NativeSort +Input [1]: [#20#20] +Arguments: [d_date_sk#20 ASC NULLS FIRST], false + +(63) NativeSortMergeJoin +Left keys [1]: [wr_returned_date_sk#16] +Right keys [1]: [d_date_sk#20] +Join type: Inner +Join condition: None + +(64) NativeProject +Output [3]: [wr_returning_customer_sk#17, wr_returning_addr_sk#18, wr_return_amt#19] +Input [5]: [#16#16, #17#17, #18#18, #19#19, #20#20] + +(65) NativeShuffleExchange +Input [3]: [wr_returning_customer_sk#17, wr_returning_addr_sk#18, wr_return_amt#19] +Arguments: hashpartitioning(wr_returning_addr_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(66) ShuffleQueryStage +Output [3]: [wr_returning_customer_sk#17, wr_returning_addr_sk#18, wr_return_amt#19] +Arguments: X + +(67) AQEShuffleRead +Input [3]: [wr_returning_customer_sk#17, wr_returning_addr_sk#18, wr_return_amt#19] +Arguments: coalesced + +(68) InputAdapter +Input [3]: [wr_returning_customer_sk#17, wr_returning_addr_sk#18, wr_return_amt#19] + +(69) NativeSort +Input [3]: [wr_returning_customer_sk#17, wr_returning_addr_sk#18, wr_return_amt#19] +Arguments: [wr_returning_addr_sk#18 ASC NULLS FIRST], false + +(70) ReusedExchange [Reuses operator id: 28] +Output [2]: [ca_address_sk#21, ca_state#22] + +(71) ShuffleQueryStage +Output [2]: [ca_address_sk#21, ca_state#22] +Arguments: X + +(72) AQEShuffleRead +Input [2]: [ca_address_sk#21, ca_state#22] +Arguments: coalesced + +(73) InputAdapter +Input [2]: [ca_address_sk#21, ca_state#22] +Arguments: [#21, #22] + +(74) InputAdapter +Input [2]: [#21#21, #22#22] + +(75) NativeSort +Input [2]: [#21#21, #22#22] +Arguments: [ca_address_sk#21 ASC NULLS FIRST], false + +(76) NativeSortMergeJoin +Left keys [1]: [wr_returning_addr_sk#18] +Right keys [1]: [ca_address_sk#21] +Join type: Inner +Join condition: None + +(77) NativeProject +Output [3]: [wr_returning_customer_sk#17, wr_return_amt#19, ca_state#22] +Input [5]: [wr_returning_customer_sk#17, wr_returning_addr_sk#18, wr_return_amt#19, #21#21, #22#22] + +(78) NativeProject +Output [3]: [wr_returning_customer_sk#17 AS wr_returning_customer_sk#17, ca_state#22 AS ca_state#22, UnscaledValue(wr_return_amt#19) AS _c2#23] +Input [3]: [wr_returning_customer_sk#17, wr_return_amt#19, ca_state#22] + +(79) NativeHashAggregate +Input [3]: [wr_returning_customer_sk#17, ca_state#22, _c2#23] +Keys [2]: [wr_returning_customer_sk#17, ca_state#22] +Functions [1]: [partial_sum(_c2#23)] +Aggregate Attributes [1]: [sum#24] +Results [3]: [wr_returning_customer_sk#17, ca_state#22, #11#11] + +(80) NativeShuffleExchange +Input [3]: [wr_returning_customer_sk#17, ca_state#22, #11#11] +Arguments: hashpartitioning(wr_returning_customer_sk#17, ca_state#22, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(81) ShuffleQueryStage +Output [3]: [wr_returning_customer_sk#17, ca_state#22, #11#11] +Arguments: X + +(82) AQEShuffleRead +Input [3]: [wr_returning_customer_sk#17, ca_state#22, #11#11] +Arguments: coalesced + +(83) InputAdapter +Input [3]: [wr_returning_customer_sk#17, ca_state#22, #11#11] + +(84) NativeHashAggregate +Input [3]: [wr_returning_customer_sk#17, ca_state#22, #11#11] +Keys [2]: [wr_returning_customer_sk#17, ca_state#22] +Functions [1]: [sum(UnscaledValue(wr_return_amt#19))] +Aggregate Attributes [1]: [sum(UnscaledValue(wr_return_amt#19))#12] +Results [3]: [wr_returning_customer_sk#17, ca_state#22, sum(UnscaledValue(wr_return_amt#19))#12] + +(85) NativeProject +Output [2]: [ca_state#22 AS ctr_state#25, MakeDecimal(sum(UnscaledValue(wr_return_amt#19))#12,17,2) AS ctr_total_return#26] +Input [3]: [wr_returning_customer_sk#17, ca_state#22, sum(UnscaledValue(wr_return_amt#19))#12] + +(86) NativeHashAggregate +Input [2]: [ctr_state#25, ctr_total_return#26] +Keys [1]: [ctr_state#25] +Functions [1]: [partial_avg(ctr_total_return#26)] +Aggregate Attributes [2]: [sum#27, count#28] +Results [2]: [ctr_state#25, #11#11] + +(87) NativeShuffleExchange +Input [2]: [ctr_state#25, #11#11] +Arguments: hashpartitioning(ctr_state#25, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(88) ShuffleQueryStage +Output [2]: [ctr_state#25, #11#11] +Arguments: X + +(89) AQEShuffleRead +Input [2]: [ctr_state#25, #11#11] +Arguments: coalesced + +(90) InputAdapter +Input [2]: [ctr_state#25, #11#11] + +(91) NativeHashAggregate +Input [2]: [ctr_state#25, #11#11] +Keys [1]: [ctr_state#25] +Functions [1]: [avg(ctr_total_return#26)] +Aggregate Attributes [1]: [avg(ctr_total_return#26)#29] +Results [2]: [ctr_state#25, avg(ctr_total_return#26)#29] + +(92) NativeProject +Output [2]: [(avg(ctr_total_return#26)#29 * 1.2) AS (avg(ctr_total_return) * 1.2)#30, ctr_state#25] +Input [2]: [ctr_state#25, avg(ctr_total_return#26)#29] + +(93) NativeFilter +Input [2]: [(avg(ctr_total_return) * 1.2)#30, ctr_state#25] +Condition : isnotnull((avg(ctr_total_return) * 1.2)#30) + +(94) NativeSort +Input [2]: [(avg(ctr_total_return) * 1.2)#30, ctr_state#25] +Arguments: [ctr_state#25 ASC NULLS FIRST], false + +(95) SortMergeJoin [codegen id : 1] +Left keys [1]: [ctr_state#14] +Right keys [1]: [ctr_state#25] +Join type: Inner +Join condition: (cast(ctr_total_return#15 as decimal(24,7)) > (avg(ctr_total_return) * 1.2)#30) + +(96) Project [codegen id : 1] +Output [2]: [ctr_customer_sk#13, ctr_total_return#15] +Input [5]: [ctr_customer_sk#13, ctr_state#14, ctr_total_return#15, (avg(ctr_total_return) * 1.2)#30, ctr_state#25] + +(97) ConvertToNative +Input [2]: [ctr_customer_sk#13, ctr_total_return#15] + +(98) NativeShuffleExchange +Input [2]: [ctr_customer_sk#13, ctr_total_return#15] +Arguments: hashpartitioning(ctr_customer_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(99) ShuffleQueryStage +Output [2]: [ctr_customer_sk#13, ctr_total_return#15] +Arguments: X + +(100) AQEShuffleRead +Input [2]: [ctr_customer_sk#13, ctr_total_return#15] +Arguments: coalesced + +(101) InputAdapter +Input [2]: [ctr_customer_sk#13, ctr_total_return#15] + +(102) NativeSort +Input [2]: [ctr_customer_sk#13, ctr_total_return#15] +Arguments: [ctr_customer_sk#13 ASC NULLS FIRST], false + +(186) Scan parquet +Output [14]: [c_customer_sk#31, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36, c_preferred_cust_flag#37, c_birth_day#38, c_birth_month#39, c_birth_year#40, c_birth_country#41, c_login#42, c_email_address#43, c_last_review_date_sk#44] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_current_addr_sk)] +ReadSchema: struct + +(104) InputAdapter +Input [14]: [c_customer_sk#31, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36, c_preferred_cust_flag#37, c_birth_day#38, c_birth_month#39, c_birth_year#40, c_birth_country#41, c_login#42, c_email_address#43, c_last_review_date_sk#44] +Arguments: [#31, #32, #33, #34, #35, #36, #37, #38, #39, #40, #41, #42, #43, #44] + +(105) NativeFilter +Input [14]: [#31#31, #32#32, #33#33, #34#34, #35#35, #36#36, #37#37, #38#38, #39#39, #40#40, #41#41, #42#42, #43#43, #44#44] +Condition : (isnotnull(c_customer_sk#31) AND isnotnull(c_current_addr_sk#33)) + +(106) NativeShuffleExchange +Input [14]: [#31#31, #32#32, #33#33, #34#34, #35#35, #36#36, #37#37, #38#38, #39#39, #40#40, #41#41, #42#42, #43#43, #44#44] +Arguments: hashpartitioning(c_customer_sk#31, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(107) ShuffleQueryStage +Output [14]: [#31#31, #32#32, #33#33, #34#34, #35#35, #36#36, #37#37, #38#38, #39#39, #40#40, #41#41, #42#42, #43#43, #44#44] +Arguments: X + +(108) AQEShuffleRead +Input [14]: [#31#31, #32#32, #33#33, #34#34, #35#35, #36#36, #37#37, #38#38, #39#39, #40#40, #41#41, #42#42, #43#43, #44#44] +Arguments: coalesced + +(109) InputAdapter +Input [14]: [#31#31, #32#32, #33#33, #34#34, #35#35, #36#36, #37#37, #38#38, #39#39, #40#40, #41#41, #42#42, #43#43, #44#44] + +(110) NativeSort +Input [14]: [#31#31, #32#32, #33#33, #34#34, #35#35, #36#36, #37#37, #38#38, #39#39, #40#40, #41#41, #42#42, #43#43, #44#44] +Arguments: [c_customer_sk#31 ASC NULLS FIRST], false + +(111) NativeSortMergeJoin +Left keys [1]: [ctr_customer_sk#13] +Right keys [1]: [c_customer_sk#31] +Join type: Inner +Join condition: None + +(112) NativeProject +Output [14]: [ctr_total_return#15, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36, c_preferred_cust_flag#37, c_birth_day#38, c_birth_month#39, c_birth_year#40, c_birth_country#41, c_login#42, c_email_address#43, c_last_review_date_sk#44] +Input [16]: [ctr_customer_sk#13, ctr_total_return#15, #31#31, #32#32, #33#33, #34#34, #35#35, #36#36, #37#37, #38#38, #39#39, #40#40, #41#41, #42#42, #43#43, #44#44] + +(113) NativeShuffleExchange +Input [14]: [ctr_total_return#15, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36, c_preferred_cust_flag#37, c_birth_day#38, c_birth_month#39, c_birth_year#40, c_birth_country#41, c_login#42, c_email_address#43, c_last_review_date_sk#44] +Arguments: hashpartitioning(c_current_addr_sk#33, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(114) ShuffleQueryStage +Output [14]: [ctr_total_return#15, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36, c_preferred_cust_flag#37, c_birth_day#38, c_birth_month#39, c_birth_year#40, c_birth_country#41, c_login#42, c_email_address#43, c_last_review_date_sk#44] +Arguments: X + +(115) AQEShuffleRead +Input [14]: [ctr_total_return#15, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36, c_preferred_cust_flag#37, c_birth_day#38, c_birth_month#39, c_birth_year#40, c_birth_country#41, c_login#42, c_email_address#43, c_last_review_date_sk#44] +Arguments: coalesced + +(116) InputAdapter +Input [14]: [ctr_total_return#15, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36, c_preferred_cust_flag#37, c_birth_day#38, c_birth_month#39, c_birth_year#40, c_birth_country#41, c_login#42, c_email_address#43, c_last_review_date_sk#44] + +(117) NativeSort +Input [14]: [ctr_total_return#15, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36, c_preferred_cust_flag#37, c_birth_day#38, c_birth_month#39, c_birth_year#40, c_birth_country#41, c_login#42, c_email_address#43, c_last_review_date_sk#44] +Arguments: [c_current_addr_sk#33 ASC NULLS FIRST], false + +(194) Scan parquet +Output [2]: [ca_address_sk#45, ca_state#46] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_state), EqualTo(ca_state,GA), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(119) InputAdapter +Input [2]: [ca_address_sk#45, ca_state#46] +Arguments: [#45, #46] + +(120) NativeFilter +Input [2]: [#45#45, #46#46] +Condition : ((isnotnull(ca_state#46) AND (ca_state#46 = GA)) AND isnotnull(ca_address_sk#45)) + +(121) NativeProject +Output [1]: [ca_address_sk#45] +Input [2]: [#45#45, #46#46] + +(122) NativeShuffleExchange +Input [1]: [ca_address_sk#45] +Arguments: hashpartitioning(ca_address_sk#45, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(123) ShuffleQueryStage +Output [1]: [ca_address_sk#45] +Arguments: X + +(124) AQEShuffleRead +Input [1]: [ca_address_sk#45] +Arguments: coalesced + +(125) InputAdapter +Input [1]: [ca_address_sk#45] + +(126) NativeSort +Input [1]: [ca_address_sk#45] +Arguments: [ca_address_sk#45 ASC NULLS FIRST], false + +(127) NativeSortMergeJoin +Left keys [1]: [c_current_addr_sk#33] +Right keys [1]: [ca_address_sk#45] +Join type: Inner +Join condition: None + +(128) NativeProject +Output [13]: [c_customer_id#32, c_salutation#34, c_first_name#35, c_last_name#36, c_preferred_cust_flag#37, c_birth_day#38, c_birth_month#39, c_birth_year#40, c_birth_country#41, c_login#42, c_email_address#43, c_last_review_date_sk#44, ctr_total_return#15] +Input [15]: [ctr_total_return#15, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36, c_preferred_cust_flag#37, c_birth_day#38, c_birth_month#39, c_birth_year#40, c_birth_country#41, c_login#42, c_email_address#43, c_last_review_date_sk#44, ca_address_sk#45] + +(129) NativeTakeOrdered +Input [13]: [c_customer_id#32, c_salutation#34, c_first_name#35, c_last_name#36, c_preferred_cust_flag#37, c_birth_day#38, c_birth_month#39, c_birth_year#40, c_birth_country#41, c_login#42, c_email_address#43, c_last_review_date_sk#44, ctr_total_return#15] +Arguments: X, [c_customer_id#32 ASC NULLS FIRST, c_salutation#34 ASC NULLS FIRST, c_first_name#35 ASC NULLS FIRST, c_last_name#36 ASC NULLS FIRST, c_preferred_cust_flag#37 ASC NULLS FIRST, c_birth_day#38 ASC NULLS FIRST, c_birth_month#39 ASC NULLS FIRST, c_birth_year#40 ASC NULLS FIRST, c_birth_country#41 ASC NULLS FIRST, c_login#42 ASC NULLS FIRST, c_email_address#43 ASC NULLS FIRST, c_last_review_date_sk#44 ASC NULLS FIRST, ctr_total_return#15 ASC NULLS FIRST] + +(130) Scan parquet +Output [4]: [wr_returned_date_sk#1, wr_returning_customer_sk#2, wr_returning_addr_sk#3, wr_return_amt#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wr_returned_date_sk), IsNotNull(wr_returning_addr_sk), IsNotNull(wr_returning_customer_sk)] +ReadSchema: struct + +(131) Filter +Input [4]: [wr_returned_date_sk#1, wr_returning_customer_sk#2, wr_returning_addr_sk#3, wr_return_amt#4] +Condition : ((isnotnull(wr_returned_date_sk#1) AND isnotnull(wr_returning_addr_sk#3)) AND isnotnull(wr_returning_customer_sk#2)) + +(132) Exchange +Input [4]: [wr_returned_date_sk#1, wr_returning_customer_sk#2, wr_returning_addr_sk#3, wr_return_amt#4] +Arguments: hashpartitioning(wr_returned_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(133) Sort +Input [4]: [wr_returned_date_sk#1, wr_returning_customer_sk#2, wr_returning_addr_sk#3, wr_return_amt#4] +Arguments: [wr_returned_date_sk#1 ASC NULLS FIRST], false, 0 + +(134) Scan parquet +Output [2]: [d_date_sk#5, d_year#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2002), IsNotNull(d_date_sk)] +ReadSchema: struct + +(135) Filter +Input [2]: [d_date_sk#5, d_year#6] +Condition : ((isnotnull(d_year#6) AND (d_year#6 = 2002)) AND isnotnull(d_date_sk#5)) + +(136) Project +Output [1]: [d_date_sk#5] +Input [2]: [d_date_sk#5, d_year#6] + +(137) Exchange +Input [1]: [d_date_sk#5] +Arguments: hashpartitioning(d_date_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(138) Sort +Input [1]: [d_date_sk#5] +Arguments: [d_date_sk#5 ASC NULLS FIRST], false, 0 + +(139) SortMergeJoin +Left keys [1]: [wr_returned_date_sk#1] +Right keys [1]: [d_date_sk#5] +Join type: Inner +Join condition: None + +(140) Project +Output [3]: [wr_returning_customer_sk#2, wr_returning_addr_sk#3, wr_return_amt#4] +Input [5]: [wr_returned_date_sk#1, wr_returning_customer_sk#2, wr_returning_addr_sk#3, wr_return_amt#4, d_date_sk#5] + +(141) Exchange +Input [3]: [wr_returning_customer_sk#2, wr_returning_addr_sk#3, wr_return_amt#4] +Arguments: hashpartitioning(wr_returning_addr_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(142) Sort +Input [3]: [wr_returning_customer_sk#2, wr_returning_addr_sk#3, wr_return_amt#4] +Arguments: [wr_returning_addr_sk#3 ASC NULLS FIRST], false, 0 + +(143) Scan parquet +Output [2]: [ca_address_sk#7, ca_state#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_state)] +ReadSchema: struct + +(144) Filter +Input [2]: [ca_address_sk#7, ca_state#8] +Condition : (isnotnull(ca_address_sk#7) AND isnotnull(ca_state#8)) + +(145) Exchange +Input [2]: [ca_address_sk#7, ca_state#8] +Arguments: hashpartitioning(ca_address_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(146) Sort +Input [2]: [ca_address_sk#7, ca_state#8] +Arguments: [ca_address_sk#7 ASC NULLS FIRST], false, 0 + +(147) SortMergeJoin +Left keys [1]: [wr_returning_addr_sk#3] +Right keys [1]: [ca_address_sk#7] +Join type: Inner +Join condition: None + +(148) Project +Output [3]: [wr_returning_customer_sk#2, wr_return_amt#4, ca_state#8] +Input [5]: [wr_returning_customer_sk#2, wr_returning_addr_sk#3, wr_return_amt#4, ca_address_sk#7, ca_state#8] + +(149) HashAggregate +Input [3]: [wr_returning_customer_sk#2, wr_return_amt#4, ca_state#8] +Keys [2]: [wr_returning_customer_sk#2, ca_state#8] +Functions [1]: [partial_sum(UnscaledValue(wr_return_amt#4))] +Aggregate Attributes [1]: [sum#10] +Results [3]: [wr_returning_customer_sk#2, ca_state#8, sum#47] + +(150) Exchange +Input [3]: [wr_returning_customer_sk#2, ca_state#8, sum#47] +Arguments: hashpartitioning(wr_returning_customer_sk#2, ca_state#8, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(151) HashAggregate +Input [3]: [wr_returning_customer_sk#2, ca_state#8, sum#47] +Keys [2]: [wr_returning_customer_sk#2, ca_state#8] +Functions [1]: [sum(UnscaledValue(wr_return_amt#4))] +Aggregate Attributes [1]: [sum(UnscaledValue(wr_return_amt#4))#12] +Results [3]: [wr_returning_customer_sk#2 AS ctr_customer_sk#13, ca_state#8 AS ctr_state#14, MakeDecimal(sum(UnscaledValue(wr_return_amt#4))#12,17,2) AS ctr_total_return#15] + +(152) Filter +Input [3]: [ctr_customer_sk#13, ctr_state#14, ctr_total_return#15] +Condition : isnotnull(ctr_total_return#15) + +(153) Exchange +Input [3]: [ctr_customer_sk#13, ctr_state#14, ctr_total_return#15] +Arguments: hashpartitioning(ctr_state#14, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(154) Sort +Input [3]: [ctr_customer_sk#13, ctr_state#14, ctr_total_return#15] +Arguments: [ctr_state#14 ASC NULLS FIRST], false, 0 + +(155) Scan parquet +Output [4]: [wr_returned_date_sk#16, wr_returning_customer_sk#17, wr_returning_addr_sk#18, wr_return_amt#19] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wr_returned_date_sk), IsNotNull(wr_returning_addr_sk)] +ReadSchema: struct + +(156) Filter +Input [4]: [wr_returned_date_sk#16, wr_returning_customer_sk#17, wr_returning_addr_sk#18, wr_return_amt#19] +Condition : (isnotnull(wr_returned_date_sk#16) AND isnotnull(wr_returning_addr_sk#18)) + +(157) Exchange +Input [4]: [wr_returned_date_sk#16, wr_returning_customer_sk#17, wr_returning_addr_sk#18, wr_return_amt#19] +Arguments: hashpartitioning(wr_returned_date_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(158) Sort +Input [4]: [wr_returned_date_sk#16, wr_returning_customer_sk#17, wr_returning_addr_sk#18, wr_return_amt#19] +Arguments: [wr_returned_date_sk#16 ASC NULLS FIRST], false, 0 + +(159) Scan parquet +Output [2]: [d_date_sk#20, d_year#48] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2002), IsNotNull(d_date_sk)] +ReadSchema: struct + +(160) Filter +Input [2]: [d_date_sk#20, d_year#48] +Condition : ((isnotnull(d_year#48) AND (d_year#48 = 2002)) AND isnotnull(d_date_sk#20)) + +(161) Project +Output [1]: [d_date_sk#20] +Input [2]: [d_date_sk#20, d_year#48] + +(162) Exchange +Input [1]: [d_date_sk#20] +Arguments: hashpartitioning(d_date_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(163) Sort +Input [1]: [d_date_sk#20] +Arguments: [d_date_sk#20 ASC NULLS FIRST], false, 0 + +(164) SortMergeJoin +Left keys [1]: [wr_returned_date_sk#16] +Right keys [1]: [d_date_sk#20] +Join type: Inner +Join condition: None + +(165) Project +Output [3]: [wr_returning_customer_sk#17, wr_returning_addr_sk#18, wr_return_amt#19] +Input [5]: [wr_returned_date_sk#16, wr_returning_customer_sk#17, wr_returning_addr_sk#18, wr_return_amt#19, d_date_sk#20] + +(166) Exchange +Input [3]: [wr_returning_customer_sk#17, wr_returning_addr_sk#18, wr_return_amt#19] +Arguments: hashpartitioning(wr_returning_addr_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(167) Sort +Input [3]: [wr_returning_customer_sk#17, wr_returning_addr_sk#18, wr_return_amt#19] +Arguments: [wr_returning_addr_sk#18 ASC NULLS FIRST], false, 0 + +(168) Scan parquet +Output [2]: [ca_address_sk#21, ca_state#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_state)] +ReadSchema: struct + +(169) Filter +Input [2]: [ca_address_sk#21, ca_state#22] +Condition : (isnotnull(ca_address_sk#21) AND isnotnull(ca_state#22)) + +(170) Exchange +Input [2]: [ca_address_sk#21, ca_state#22] +Arguments: hashpartitioning(ca_address_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(171) Sort +Input [2]: [ca_address_sk#21, ca_state#22] +Arguments: [ca_address_sk#21 ASC NULLS FIRST], false, 0 + +(172) SortMergeJoin +Left keys [1]: [wr_returning_addr_sk#18] +Right keys [1]: [ca_address_sk#21] +Join type: Inner +Join condition: None + +(173) Project +Output [3]: [wr_returning_customer_sk#17, wr_return_amt#19, ca_state#22] +Input [5]: [wr_returning_customer_sk#17, wr_returning_addr_sk#18, wr_return_amt#19, ca_address_sk#21, ca_state#22] + +(174) HashAggregate +Input [3]: [wr_returning_customer_sk#17, wr_return_amt#19, ca_state#22] +Keys [2]: [wr_returning_customer_sk#17, ca_state#22] +Functions [1]: [partial_sum(UnscaledValue(wr_return_amt#19))] +Aggregate Attributes [1]: [sum#24] +Results [3]: [wr_returning_customer_sk#17, ca_state#22, sum#49] + +(175) Exchange +Input [3]: [wr_returning_customer_sk#17, ca_state#22, sum#49] +Arguments: hashpartitioning(wr_returning_customer_sk#17, ca_state#22, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(176) HashAggregate +Input [3]: [wr_returning_customer_sk#17, ca_state#22, sum#49] +Keys [2]: [wr_returning_customer_sk#17, ca_state#22] +Functions [1]: [sum(UnscaledValue(wr_return_amt#19))] +Aggregate Attributes [1]: [sum(UnscaledValue(wr_return_amt#19))#12] +Results [2]: [ca_state#22 AS ctr_state#25, MakeDecimal(sum(UnscaledValue(wr_return_amt#19))#12,17,2) AS ctr_total_return#26] + +(177) HashAggregate +Input [2]: [ctr_state#25, ctr_total_return#26] +Keys [1]: [ctr_state#25] +Functions [1]: [partial_avg(ctr_total_return#26)] +Aggregate Attributes [2]: [sum#27, count#28] +Results [3]: [ctr_state#25, sum#50, count#51] + +(178) Exchange +Input [3]: [ctr_state#25, sum#50, count#51] +Arguments: hashpartitioning(ctr_state#25, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(179) HashAggregate +Input [3]: [ctr_state#25, sum#50, count#51] +Keys [1]: [ctr_state#25] +Functions [1]: [avg(ctr_total_return#26)] +Aggregate Attributes [1]: [avg(ctr_total_return#26)#29] +Results [2]: [(avg(ctr_total_return#26)#29 * 1.2) AS (avg(ctr_total_return) * 1.2)#30, ctr_state#25] + +(180) Filter +Input [2]: [(avg(ctr_total_return) * 1.2)#30, ctr_state#25] +Condition : isnotnull((avg(ctr_total_return) * 1.2)#30) + +(181) Sort +Input [2]: [(avg(ctr_total_return) * 1.2)#30, ctr_state#25] +Arguments: [ctr_state#25 ASC NULLS FIRST], false, 0 + +(182) SortMergeJoin +Left keys [1]: [ctr_state#14] +Right keys [1]: [ctr_state#25] +Join type: Inner +Join condition: (cast(ctr_total_return#15 as decimal(24,7)) > (avg(ctr_total_return) * 1.2)#30) + +(183) Project +Output [2]: [ctr_customer_sk#13, ctr_total_return#15] +Input [5]: [ctr_customer_sk#13, ctr_state#14, ctr_total_return#15, (avg(ctr_total_return) * 1.2)#30, ctr_state#25] + +(184) Exchange +Input [2]: [ctr_customer_sk#13, ctr_total_return#15] +Arguments: hashpartitioning(ctr_customer_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(185) Sort +Input [2]: [ctr_customer_sk#13, ctr_total_return#15] +Arguments: [ctr_customer_sk#13 ASC NULLS FIRST], false, 0 + +(186) Scan parquet +Output [14]: [c_customer_sk#31, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36, c_preferred_cust_flag#37, c_birth_day#38, c_birth_month#39, c_birth_year#40, c_birth_country#41, c_login#42, c_email_address#43, c_last_review_date_sk#44] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_current_addr_sk)] +ReadSchema: struct + +(187) Filter +Input [14]: [c_customer_sk#31, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36, c_preferred_cust_flag#37, c_birth_day#38, c_birth_month#39, c_birth_year#40, c_birth_country#41, c_login#42, c_email_address#43, c_last_review_date_sk#44] +Condition : (isnotnull(c_customer_sk#31) AND isnotnull(c_current_addr_sk#33)) + +(188) Exchange +Input [14]: [c_customer_sk#31, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36, c_preferred_cust_flag#37, c_birth_day#38, c_birth_month#39, c_birth_year#40, c_birth_country#41, c_login#42, c_email_address#43, c_last_review_date_sk#44] +Arguments: hashpartitioning(c_customer_sk#31, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(189) Sort +Input [14]: [c_customer_sk#31, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36, c_preferred_cust_flag#37, c_birth_day#38, c_birth_month#39, c_birth_year#40, c_birth_country#41, c_login#42, c_email_address#43, c_last_review_date_sk#44] +Arguments: [c_customer_sk#31 ASC NULLS FIRST], false, 0 + +(190) SortMergeJoin +Left keys [1]: [ctr_customer_sk#13] +Right keys [1]: [c_customer_sk#31] +Join type: Inner +Join condition: None + +(191) Project +Output [14]: [ctr_total_return#15, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36, c_preferred_cust_flag#37, c_birth_day#38, c_birth_month#39, c_birth_year#40, c_birth_country#41, c_login#42, c_email_address#43, c_last_review_date_sk#44] +Input [16]: [ctr_customer_sk#13, ctr_total_return#15, c_customer_sk#31, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36, c_preferred_cust_flag#37, c_birth_day#38, c_birth_month#39, c_birth_year#40, c_birth_country#41, c_login#42, c_email_address#43, c_last_review_date_sk#44] + +(192) Exchange +Input [14]: [ctr_total_return#15, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36, c_preferred_cust_flag#37, c_birth_day#38, c_birth_month#39, c_birth_year#40, c_birth_country#41, c_login#42, c_email_address#43, c_last_review_date_sk#44] +Arguments: hashpartitioning(c_current_addr_sk#33, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(193) Sort +Input [14]: [ctr_total_return#15, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36, c_preferred_cust_flag#37, c_birth_day#38, c_birth_month#39, c_birth_year#40, c_birth_country#41, c_login#42, c_email_address#43, c_last_review_date_sk#44] +Arguments: [c_current_addr_sk#33 ASC NULLS FIRST], false, 0 + +(194) Scan parquet +Output [2]: [ca_address_sk#45, ca_state#46] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_state), EqualTo(ca_state,GA), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(195) Filter +Input [2]: [ca_address_sk#45, ca_state#46] +Condition : ((isnotnull(ca_state#46) AND (ca_state#46 = GA)) AND isnotnull(ca_address_sk#45)) + +(196) Project +Output [1]: [ca_address_sk#45] +Input [2]: [ca_address_sk#45, ca_state#46] + +(197) Exchange +Input [1]: [ca_address_sk#45] +Arguments: hashpartitioning(ca_address_sk#45, 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(198) Sort +Input [1]: [ca_address_sk#45] +Arguments: [ca_address_sk#45 ASC NULLS FIRST], false, 0 + +(199) SortMergeJoin +Left keys [1]: [c_current_addr_sk#33] +Right keys [1]: [ca_address_sk#45] +Join type: Inner +Join condition: None + +(200) Project +Output [13]: [c_customer_id#32, c_salutation#34, c_first_name#35, c_last_name#36, c_preferred_cust_flag#37, c_birth_day#38, c_birth_month#39, c_birth_year#40, c_birth_country#41, c_login#42, c_email_address#43, c_last_review_date_sk#44, ctr_total_return#15] +Input [15]: [ctr_total_return#15, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36, c_preferred_cust_flag#37, c_birth_day#38, c_birth_month#39, c_birth_year#40, c_birth_country#41, c_login#42, c_email_address#43, c_last_review_date_sk#44, ca_address_sk#45] + +(201) TakeOrderedAndProject +Input [13]: [c_customer_id#32, c_salutation#34, c_first_name#35, c_last_name#36, c_preferred_cust_flag#37, c_birth_day#38, c_birth_month#39, c_birth_year#40, c_birth_country#41, c_login#42, c_email_address#43, c_last_review_date_sk#44, ctr_total_return#15] +Arguments: X, [c_customer_id#32 ASC NULLS FIRST, c_salutation#34 ASC NULLS FIRST, c_first_name#35 ASC NULLS FIRST, c_last_name#36 ASC NULLS FIRST, c_preferred_cust_flag#37 ASC NULLS FIRST, c_birth_day#38 ASC NULLS FIRST, c_birth_month#39 ASC NULLS FIRST, c_birth_year#40 ASC NULLS FIRST, c_birth_country#41 ASC NULLS FIRST, c_login#42 ASC NULLS FIRST, c_email_address#43 ASC NULLS FIRST, c_last_review_date_sk#44 ASC NULLS FIRST, ctr_total_return#15 ASC NULLS FIRST], [c_customer_id#32, c_salutation#34, c_first_name#35, c_last_name#36, c_preferred_cust_flag#37, c_birth_day#38, c_birth_month#39, c_birth_year#40, c_birth_country#41, c_login#42, c_email_address#43, c_last_review_date_sk#44, ctr_total_return#15] + +(202) AdaptiveSparkPlan +Output [13]: [c_customer_id#32, c_salutation#34, c_first_name#35, c_last_name#36, c_preferred_cust_flag#37, c_birth_day#38, c_birth_month#39, c_birth_year#40, c_birth_country#41, c_login#42, c_email_address#43, c_last_review_date_sk#44, ctr_total_return#15] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q31.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q31.txt new file mode 100644 index 000000000..d11981afe --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q31.txt @@ -0,0 +1,2242 @@ +== Physical Plan == +AdaptiveSparkPlan (415) ++- == Final Plan == + NativeSort (266) + +- InputAdapter (265) + +- AQEShuffleRead (264) + +- ShuffleQueryStage (263), Statistics(X) + +- NativeShuffleExchange (262) + +- ConvertToNative (261) + +- * Project (260) + +- * SortMergeJoin Inner (259) + :- * Project (218) + : +- * SortMergeJoin Inner (217) + : :- NativeSortMergeJoin Inner (176) + : : :- NativeProject (133) + : : : +- NativeSortMergeJoin Inner (132) + : : : :- NativeSortMergeJoin Inner (89) + : : : : :- 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) + : : : : : +- NativeProject (33) + : : : : : +- NativeSortMergeJoin Inner (32) + : : : : : :- NativeSort (23) + : : : : : : +- InputAdapter (22) + : : : : : : +- AQEShuffleRead (21) + : : : : : : +- ShuffleQueryStage (20), Statistics(X) + : : : : : : +- NativeShuffleExchange (19) + : : : : : : +- NativeProject (18) + : : : : : : +- NativeSortMergeJoin Inner (17) + : : : : : : :- NativeSort (8) + : : : : : : : +- InputAdapter (7) + : : : : : : : +- AQEShuffleRead (6) + : : : : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : : : : +- NativeShuffleExchange (4) + : : : : : : : +- NativeFilter (3) + : : : : : : : +- InputAdapter (2) + : : : : : : : +- NativeParquetScan (1) + : : : : : : +- NativeSort (16) + : : : : : : +- InputAdapter (15) + : : : : : : +- AQEShuffleRead (14) + : : : : : : +- ShuffleQueryStage (13), Statistics(X) + : : : : : : +- NativeShuffleExchange (12) + : : : : : : +- NativeFilter (11) + : : : : : : +- InputAdapter (10) + : : : : : : +- NativeParquetScan (9) + : : : : : +- NativeSort (31) + : : : : : +- InputAdapter (30) + : : : : : +- AQEShuffleRead (29) + : : : : : +- ShuffleQueryStage (28), Statistics(X) + : : : : : +- NativeShuffleExchange (27) + : : : : : +- NativeFilter (26) + : : : : : +- InputAdapter (25) + : : : : : +- NativeParquetScan (24) + : : : : +- NativeSort (88) + : : : : +- InputAdapter (87) + : : : : +- AQEShuffleRead (86) + : : : : +- ShuffleQueryStage (85), Statistics(X) + : : : : +- NativeShuffleExchange (84) + : : : : +- NativeProject (83) + : : : : +- NativeHashAggregate (82) + : : : : +- InputAdapter (81) + : : : : +- AQEShuffleRead (80) + : : : : +- ShuffleQueryStage (79), Statistics(X) + : : : : +- NativeShuffleExchange (78) + : : : : +- NativeHashAggregate (77) + : : : : +- NativeProject (76) + : : : : +- NativeProject (75) + : : : : +- NativeSortMergeJoin Inner (74) + : : : : :- NativeSort (67) + : : : : : +- InputAdapter (66) + : : : : : +- AQEShuffleRead (65) + : : : : : +- ShuffleQueryStage (64), Statistics(X) + : : : : : +- NativeShuffleExchange (63) + : : : : : +- NativeProject (62) + : : : : : +- NativeSortMergeJoin Inner (61) + : : : : : :- NativeSort (52) + : : : : : : +- InputAdapter (51) + : : : : : : +- InputAdapter (50) + : : : : : : +- AQEShuffleRead (49) + : : : : : : +- ShuffleQueryStage (48), Statistics(X) + : : : : : : +- ReusedExchange (47) + : : : : : +- NativeSort (60) + : : : : : +- InputAdapter (59) + : : : : : +- AQEShuffleRead (58) + : : : : : +- ShuffleQueryStage (57), Statistics(X) + : : : : : +- NativeShuffleExchange (56) + : : : : : +- NativeFilter (55) + : : : : : +- InputAdapter (54) + : : : : : +- NativeParquetScan (53) + : : : : +- NativeSort (73) + : : : : +- InputAdapter (72) + : : : : +- InputAdapter (71) + : : : : +- AQEShuffleRead (70) + : : : : +- ShuffleQueryStage (69), Statistics(X) + : : : : +- ReusedExchange (68) + : : : +- NativeSort (131) + : : : +- InputAdapter (130) + : : : +- AQEShuffleRead (129) + : : : +- ShuffleQueryStage (128), Statistics(X) + : : : +- NativeShuffleExchange (127) + : : : +- NativeProject (126) + : : : +- NativeHashAggregate (125) + : : : +- InputAdapter (124) + : : : +- AQEShuffleRead (123) + : : : +- ShuffleQueryStage (122), Statistics(X) + : : : +- NativeShuffleExchange (121) + : : : +- NativeHashAggregate (120) + : : : +- NativeProject (119) + : : : +- NativeProject (118) + : : : +- NativeSortMergeJoin Inner (117) + : : : :- NativeSort (110) + : : : : +- InputAdapter (109) + : : : : +- AQEShuffleRead (108) + : : : : +- ShuffleQueryStage (107), Statistics(X) + : : : : +- NativeShuffleExchange (106) + : : : : +- NativeProject (105) + : : : : +- NativeSortMergeJoin Inner (104) + : : : : :- NativeSort (95) + : : : : : +- InputAdapter (94) + : : : : : +- InputAdapter (93) + : : : : : +- AQEShuffleRead (92) + : : : : : +- ShuffleQueryStage (91), Statistics(X) + : : : : : +- ReusedExchange (90) + : : : : +- NativeSort (103) + : : : : +- InputAdapter (102) + : : : : +- AQEShuffleRead (101) + : : : : +- ShuffleQueryStage (100), Statistics(X) + : : : : +- NativeShuffleExchange (99) + : : : : +- NativeFilter (98) + : : : : +- InputAdapter (97) + : : : : +- NativeParquetScan (96) + : : : +- NativeSort (116) + : : : +- InputAdapter (115) + : : : +- InputAdapter (114) + : : : +- AQEShuffleRead (113) + : : : +- ShuffleQueryStage (112), Statistics(X) + : : : +- ReusedExchange (111) + : : +- NativeSort (175) + : : +- InputAdapter (174) + : : +- AQEShuffleRead (173) + : : +- ShuffleQueryStage (172), Statistics(X) + : : +- NativeShuffleExchange (171) + : : +- NativeProject (170) + : : +- NativeHashAggregate (169) + : : +- InputAdapter (168) + : : +- AQEShuffleRead (167) + : : +- ShuffleQueryStage (166), Statistics(X) + : : +- NativeShuffleExchange (165) + : : +- NativeHashAggregate (164) + : : +- NativeProject (163) + : : +- NativeProject (162) + : : +- NativeSortMergeJoin Inner (161) + : : :- NativeSort (154) + : : : +- InputAdapter (153) + : : : +- AQEShuffleRead (152) + : : : +- ShuffleQueryStage (151), Statistics(X) + : : : +- NativeShuffleExchange (150) + : : : +- NativeProject (149) + : : : +- NativeSortMergeJoin Inner (148) + : : : :- NativeSort (141) + : : : : +- InputAdapter (140) + : : : : +- AQEShuffleRead (139) + : : : : +- ShuffleQueryStage (138), Statistics(X) + : : : : +- NativeShuffleExchange (137) + : : : : +- NativeFilter (136) + : : : : +- InputAdapter (135) + : : : : +- NativeParquetScan (134) + : : : +- NativeSort (147) + : : : +- InputAdapter (146) + : : : +- InputAdapter (145) + : : : +- AQEShuffleRead (144) + : : : +- ShuffleQueryStage (143), Statistics(X) + : : : +- ReusedExchange (142) + : : +- NativeSort (160) + : : +- InputAdapter (159) + : : +- InputAdapter (158) + : : +- AQEShuffleRead (157) + : : +- ShuffleQueryStage (156), Statistics(X) + : : +- ReusedExchange (155) + : +- NativeSort (216) + : +- InputAdapter (215) + : +- AQEShuffleRead (214) + : +- ShuffleQueryStage (213), Statistics(X) + : +- NativeShuffleExchange (212) + : +- NativeProject (211) + : +- NativeHashAggregate (210) + : +- InputAdapter (209) + : +- AQEShuffleRead (208) + : +- ShuffleQueryStage (207), Statistics(X) + : +- NativeShuffleExchange (206) + : +- NativeHashAggregate (205) + : +- NativeProject (204) + : +- NativeProject (203) + : +- NativeSortMergeJoin Inner (202) + : :- NativeSort (195) + : : +- InputAdapter (194) + : : +- AQEShuffleRead (193) + : : +- ShuffleQueryStage (192), Statistics(X) + : : +- NativeShuffleExchange (191) + : : +- NativeProject (190) + : : +- NativeSortMergeJoin Inner (189) + : : :- NativeSort (182) + : : : +- InputAdapter (181) + : : : +- InputAdapter (180) + : : : +- AQEShuffleRead (179) + : : : +- ShuffleQueryStage (178), Statistics(X) + : : : +- ReusedExchange (177) + : : +- NativeSort (188) + : : +- InputAdapter (187) + : : +- InputAdapter (186) + : : +- AQEShuffleRead (185) + : : +- ShuffleQueryStage (184), Statistics(X) + : : +- ReusedExchange (183) + : +- NativeSort (201) + : +- InputAdapter (200) + : +- InputAdapter (199) + : +- AQEShuffleRead (198) + : +- ShuffleQueryStage (197), Statistics(X) + : +- ReusedExchange (196) + +- NativeSort (258) + +- InputAdapter (257) + +- AQEShuffleRead (256) + +- ShuffleQueryStage (255), Statistics(X) + +- NativeShuffleExchange (254) + +- NativeProject (253) + +- NativeHashAggregate (252) + +- InputAdapter (251) + +- AQEShuffleRead (250) + +- ShuffleQueryStage (249), Statistics(X) + +- NativeShuffleExchange (248) + +- NativeHashAggregate (247) + +- NativeProject (246) + +- NativeProject (245) + +- NativeSortMergeJoin Inner (244) + :- NativeSort (237) + : +- InputAdapter (236) + : +- AQEShuffleRead (235) + : +- ShuffleQueryStage (234), Statistics(X) + : +- NativeShuffleExchange (233) + : +- NativeProject (232) + : +- NativeSortMergeJoin Inner (231) + : :- NativeSort (224) + : : +- InputAdapter (223) + : : +- InputAdapter (222) + : : +- AQEShuffleRead (221) + : : +- ShuffleQueryStage (220), Statistics(X) + : : +- ReusedExchange (219) + : +- NativeSort (230) + : +- InputAdapter (229) + : +- InputAdapter (228) + : +- AQEShuffleRead (227) + : +- ShuffleQueryStage (226), Statistics(X) + : +- ReusedExchange (225) + +- NativeSort (243) + +- InputAdapter (242) + +- InputAdapter (241) + +- AQEShuffleRead (240) + +- ShuffleQueryStage (239), Statistics(X) + +- ReusedExchange (238) ++- == Initial Plan == + Sort (414) + +- Exchange (413) + +- Project (412) + +- SortMergeJoin Inner (411) + :- Project (387) + : +- SortMergeJoin Inner (386) + : :- SortMergeJoin Inner (362) + : : :- Project (338) + : : : +- SortMergeJoin Inner (337) + : : : :- SortMergeJoin Inner (313) + : : : : :- Sort (289) + : : : : : +- Exchange (288) + : : : : : +- HashAggregate (287) + : : : : : +- Exchange (286) + : : : : : +- HashAggregate (285) + : : : : : +- Project (284) + : : : : : +- SortMergeJoin Inner (283) + : : : : : :- Sort (278) + : : : : : : +- Exchange (277) + : : : : : : +- Project (276) + : : : : : : +- SortMergeJoin Inner (275) + : : : : : : :- Sort (270) + : : : : : : : +- Exchange (269) + : : : : : : : +- Filter (268) + : : : : : : : +- Scan parquet (267) + : : : : : : +- Sort (274) + : : : : : : +- Exchange (273) + : : : : : : +- Filter (272) + : : : : : : +- Scan parquet (271) + : : : : : +- Sort (282) + : : : : : +- Exchange (281) + : : : : : +- Filter (280) + : : : : : +- Scan parquet (279) + : : : : +- Sort (312) + : : : : +- Exchange (311) + : : : : +- HashAggregate (310) + : : : : +- Exchange (309) + : : : : +- HashAggregate (308) + : : : : +- Project (307) + : : : : +- SortMergeJoin Inner (306) + : : : : :- Sort (301) + : : : : : +- Exchange (300) + : : : : : +- Project (299) + : : : : : +- SortMergeJoin Inner (298) + : : : : : :- Sort (293) + : : : : : : +- Exchange (292) + : : : : : : +- Filter (291) + : : : : : : +- Scan parquet (290) + : : : : : +- Sort (297) + : : : : : +- Exchange (296) + : : : : : +- Filter (295) + : : : : : +- Scan parquet (294) + : : : : +- Sort (305) + : : : : +- Exchange (304) + : : : : +- Filter (303) + : : : : +- Scan parquet (302) + : : : +- Sort (336) + : : : +- Exchange (335) + : : : +- HashAggregate (334) + : : : +- Exchange (333) + : : : +- HashAggregate (332) + : : : +- Project (331) + : : : +- SortMergeJoin Inner (330) + : : : :- Sort (325) + : : : : +- Exchange (324) + : : : : +- Project (323) + : : : : +- SortMergeJoin Inner (322) + : : : : :- Sort (317) + : : : : : +- Exchange (316) + : : : : : +- Filter (315) + : : : : : +- Scan parquet (314) + : : : : +- Sort (321) + : : : : +- Exchange (320) + : : : : +- Filter (319) + : : : : +- Scan parquet (318) + : : : +- Sort (329) + : : : +- Exchange (328) + : : : +- Filter (327) + : : : +- Scan parquet (326) + : : +- Sort (361) + : : +- Exchange (360) + : : +- HashAggregate (359) + : : +- Exchange (358) + : : +- HashAggregate (357) + : : +- Project (356) + : : +- SortMergeJoin Inner (355) + : : :- Sort (350) + : : : +- Exchange (349) + : : : +- Project (348) + : : : +- SortMergeJoin Inner (347) + : : : :- Sort (342) + : : : : +- Exchange (341) + : : : : +- Filter (340) + : : : : +- Scan parquet (339) + : : : +- Sort (346) + : : : +- Exchange (345) + : : : +- Filter (344) + : : : +- Scan parquet (343) + : : +- Sort (354) + : : +- Exchange (353) + : : +- Filter (352) + : : +- Scan parquet (351) + : +- Sort (385) + : +- Exchange (384) + : +- HashAggregate (383) + : +- Exchange (382) + : +- HashAggregate (381) + : +- Project (380) + : +- SortMergeJoin Inner (379) + : :- Sort (374) + : : +- Exchange (373) + : : +- Project (372) + : : +- SortMergeJoin Inner (371) + : : :- Sort (366) + : : : +- Exchange (365) + : : : +- Filter (364) + : : : +- Scan parquet (363) + : : +- Sort (370) + : : +- Exchange (369) + : : +- Filter (368) + : : +- Scan parquet (367) + : +- Sort (378) + : +- Exchange (377) + : +- Filter (376) + : +- Scan parquet (375) + +- Sort (410) + +- Exchange (409) + +- HashAggregate (408) + +- Exchange (407) + +- HashAggregate (406) + +- Project (405) + +- SortMergeJoin Inner (404) + :- Sort (399) + : +- Exchange (398) + : +- Project (397) + : +- SortMergeJoin Inner (396) + : :- Sort (391) + : : +- Exchange (390) + : : +- Filter (389) + : : +- Scan parquet (388) + : +- Sort (395) + : +- Exchange (394) + : +- Filter (393) + : +- Scan parquet (392) + +- Sort (403) + +- Exchange (402) + +- Filter (401) + +- Scan parquet (400) + + +(267) Scan parquet +Output [3]: [ss_sold_date_sk#1, ss_addr_sk#2, ss_ext_sales_price#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_addr_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [ss_sold_date_sk#1, ss_addr_sk#2, ss_ext_sales_price#3] +Arguments: [#1, #2, #3] + +(3) NativeFilter +Input [3]: [#1#1, #2#2, #3#3] +Condition : (isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_addr_sk#2)) + +(4) NativeShuffleExchange +Input [3]: [#1#1, #2#2, #3#3] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [3]: [#1#1, #2#2, #3#3] +Arguments: X + +(6) AQEShuffleRead +Input [3]: [#1#1, #2#2, #3#3] +Arguments: coalesced + +(7) InputAdapter +Input [3]: [#1#1, #2#2, #3#3] + +(8) NativeSort +Input [3]: [#1#1, #2#2, #3#3] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(271) Scan parquet +Output [3]: [d_date_sk#4, d_year#5, d_qoy#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_qoy), IsNotNull(d_year), EqualTo(d_qoy,1), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [3]: [d_date_sk#4, d_year#5, d_qoy#6] +Arguments: [#4, #5, #6] + +(11) NativeFilter +Input [3]: [#4#4, #5#5, #6#6] +Condition : ((((isnotnull(d_qoy#6) AND isnotnull(d_year#5)) AND (d_qoy#6 = 1)) AND (d_year#5 = 2000)) AND isnotnull(d_date_sk#4)) + +(12) NativeShuffleExchange +Input [3]: [#4#4, #5#5, #6#6] +Arguments: hashpartitioning(d_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [3]: [#4#4, #5#5, #6#6] +Arguments: X + +(14) AQEShuffleRead +Input [3]: [#4#4, #5#5, #6#6] +Arguments: coalesced + +(15) InputAdapter +Input [3]: [#4#4, #5#5, #6#6] + +(16) NativeSort +Input [3]: [#4#4, #5#5, #6#6] +Arguments: [d_date_sk#4 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#4] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [4]: [ss_addr_sk#2, ss_ext_sales_price#3, d_year#5, d_qoy#6] +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] + +(19) NativeShuffleExchange +Input [4]: [ss_addr_sk#2, ss_ext_sales_price#3, d_year#5, d_qoy#6] +Arguments: hashpartitioning(ss_addr_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [4]: [ss_addr_sk#2, ss_ext_sales_price#3, d_year#5, d_qoy#6] +Arguments: X + +(21) AQEShuffleRead +Input [4]: [ss_addr_sk#2, ss_ext_sales_price#3, d_year#5, d_qoy#6] +Arguments: coalesced + +(22) InputAdapter +Input [4]: [ss_addr_sk#2, ss_ext_sales_price#3, d_year#5, d_qoy#6] + +(23) NativeSort +Input [4]: [ss_addr_sk#2, ss_ext_sales_price#3, d_year#5, d_qoy#6] +Arguments: [ss_addr_sk#2 ASC NULLS FIRST], false + +(279) Scan parquet +Output [2]: [ca_address_sk#7, ca_county#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_county)] +ReadSchema: struct + +(25) InputAdapter +Input [2]: [ca_address_sk#7, ca_county#8] +Arguments: [#7, #8] + +(26) NativeFilter +Input [2]: [#7#7, #8#8] +Condition : (isnotnull(ca_address_sk#7) AND isnotnull(ca_county#8)) + +(27) NativeShuffleExchange +Input [2]: [#7#7, #8#8] +Arguments: hashpartitioning(ca_address_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(28) ShuffleQueryStage +Output [2]: [#7#7, #8#8] +Arguments: X + +(29) AQEShuffleRead +Input [2]: [#7#7, #8#8] +Arguments: coalesced + +(30) InputAdapter +Input [2]: [#7#7, #8#8] + +(31) NativeSort +Input [2]: [#7#7, #8#8] +Arguments: [ca_address_sk#7 ASC NULLS FIRST], false + +(32) NativeSortMergeJoin +Left keys [1]: [ss_addr_sk#2] +Right keys [1]: [ca_address_sk#7] +Join type: Inner +Join condition: None + +(33) NativeProject +Output [4]: [ss_ext_sales_price#3, d_year#5, d_qoy#6, ca_county#8] +Input [6]: [ss_addr_sk#2, ss_ext_sales_price#3, d_year#5, d_qoy#6, #7#7, #8#8] + +(34) NativeProject +Output [4]: [ca_county#8 AS ca_county#8, d_qoy#6 AS d_qoy#6, d_year#5 AS d_year#5, UnscaledValue(ss_ext_sales_price#3) AS _c3#9] +Input [4]: [ss_ext_sales_price#3, d_year#5, d_qoy#6, ca_county#8] + +(35) NativeHashAggregate +Input [4]: [ca_county#8, d_qoy#6, d_year#5, _c3#9] +Keys [3]: [ca_county#8, d_qoy#6, d_year#5] +Functions [1]: [partial_sum(_c3#9)] +Aggregate Attributes [1]: [sum#10] +Results [4]: [ca_county#8, d_qoy#6, d_year#5, #11#11] + +(36) NativeShuffleExchange +Input [4]: [ca_county#8, d_qoy#6, d_year#5, #11#11] +Arguments: hashpartitioning(ca_county#8, d_qoy#6, d_year#5, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [4]: [ca_county#8, d_qoy#6, d_year#5, #11#11] +Arguments: X + +(38) AQEShuffleRead +Input [4]: [ca_county#8, d_qoy#6, d_year#5, #11#11] +Arguments: coalesced + +(39) InputAdapter +Input [4]: [ca_county#8, d_qoy#6, d_year#5, #11#11] + +(40) NativeHashAggregate +Input [4]: [ca_county#8, d_qoy#6, d_year#5, #11#11] +Keys [3]: [ca_county#8, d_qoy#6, d_year#5] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#3))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#3))#12] +Results [4]: [ca_county#8, d_qoy#6, d_year#5, sum(UnscaledValue(ss_ext_sales_price#3))#12] + +(41) NativeProject +Output [3]: [ca_county#8, d_year#5, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#3))#12,17,2) AS store_sales#13] +Input [4]: [ca_county#8, d_qoy#6, d_year#5, sum(UnscaledValue(ss_ext_sales_price#3))#12] + +(42) NativeShuffleExchange +Input [3]: [ca_county#8, d_year#5, store_sales#13] +Arguments: hashpartitioning(ca_county#8, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(43) ShuffleQueryStage +Output [3]: [ca_county#8, d_year#5, store_sales#13] +Arguments: X + +(44) AQEShuffleRead +Input [3]: [ca_county#8, d_year#5, store_sales#13] +Arguments: coalesced + +(45) InputAdapter +Input [3]: [ca_county#8, d_year#5, store_sales#13] + +(46) NativeSort +Input [3]: [ca_county#8, d_year#5, store_sales#13] +Arguments: [ca_county#8 ASC NULLS FIRST], false + +(47) ReusedExchange [Reuses operator id: 4] +Output [3]: [ss_sold_date_sk#14, ss_addr_sk#15, ss_ext_sales_price#16] + +(48) ShuffleQueryStage +Output [3]: [ss_sold_date_sk#14, ss_addr_sk#15, ss_ext_sales_price#16] +Arguments: X + +(49) AQEShuffleRead +Input [3]: [ss_sold_date_sk#14, ss_addr_sk#15, ss_ext_sales_price#16] +Arguments: coalesced + +(50) InputAdapter +Input [3]: [ss_sold_date_sk#14, ss_addr_sk#15, ss_ext_sales_price#16] +Arguments: [#14, #15, #16] + +(51) InputAdapter +Input [3]: [#14#14, #15#15, #16#16] + +(52) NativeSort +Input [3]: [#14#14, #15#15, #16#16] +Arguments: [ss_sold_date_sk#14 ASC NULLS FIRST], false + +(294) Scan parquet +Output [3]: [d_date_sk#17, d_year#18, d_qoy#19] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_qoy), IsNotNull(d_year), EqualTo(d_qoy,2), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(54) InputAdapter +Input [3]: [d_date_sk#17, d_year#18, d_qoy#19] +Arguments: [#17, #18, #19] + +(55) NativeFilter +Input [3]: [#17#17, #18#18, #19#19] +Condition : ((((isnotnull(d_qoy#19) AND isnotnull(d_year#18)) AND (d_qoy#19 = 2)) AND (d_year#18 = 2000)) AND isnotnull(d_date_sk#17)) + +(56) NativeShuffleExchange +Input [3]: [#17#17, #18#18, #19#19] +Arguments: hashpartitioning(d_date_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(57) ShuffleQueryStage +Output [3]: [#17#17, #18#18, #19#19] +Arguments: X + +(58) AQEShuffleRead +Input [3]: [#17#17, #18#18, #19#19] +Arguments: coalesced + +(59) InputAdapter +Input [3]: [#17#17, #18#18, #19#19] + +(60) NativeSort +Input [3]: [#17#17, #18#18, #19#19] +Arguments: [d_date_sk#17 ASC NULLS FIRST], false + +(61) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#14] +Right keys [1]: [d_date_sk#17] +Join type: Inner +Join condition: None + +(62) NativeProject +Output [4]: [ss_addr_sk#15, ss_ext_sales_price#16, d_year#18, d_qoy#19] +Input [6]: [#14#14, #15#15, #16#16, #17#17, #18#18, #19#19] + +(63) NativeShuffleExchange +Input [4]: [ss_addr_sk#15, ss_ext_sales_price#16, d_year#18, d_qoy#19] +Arguments: hashpartitioning(ss_addr_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(64) ShuffleQueryStage +Output [4]: [ss_addr_sk#15, ss_ext_sales_price#16, d_year#18, d_qoy#19] +Arguments: X + +(65) AQEShuffleRead +Input [4]: [ss_addr_sk#15, ss_ext_sales_price#16, d_year#18, d_qoy#19] +Arguments: coalesced + +(66) InputAdapter +Input [4]: [ss_addr_sk#15, ss_ext_sales_price#16, d_year#18, d_qoy#19] + +(67) NativeSort +Input [4]: [ss_addr_sk#15, ss_ext_sales_price#16, d_year#18, d_qoy#19] +Arguments: [ss_addr_sk#15 ASC NULLS FIRST], false + +(68) ReusedExchange [Reuses operator id: 27] +Output [2]: [ca_address_sk#20, ca_county#21] + +(69) ShuffleQueryStage +Output [2]: [ca_address_sk#20, ca_county#21] +Arguments: X + +(70) AQEShuffleRead +Input [2]: [ca_address_sk#20, ca_county#21] +Arguments: coalesced + +(71) InputAdapter +Input [2]: [ca_address_sk#20, ca_county#21] +Arguments: [#20, #21] + +(72) InputAdapter +Input [2]: [#20#20, #21#21] + +(73) NativeSort +Input [2]: [#20#20, #21#21] +Arguments: [ca_address_sk#20 ASC NULLS FIRST], false + +(74) NativeSortMergeJoin +Left keys [1]: [ss_addr_sk#15] +Right keys [1]: [ca_address_sk#20] +Join type: Inner +Join condition: None + +(75) NativeProject +Output [4]: [ss_ext_sales_price#16, d_year#18, d_qoy#19, ca_county#21] +Input [6]: [ss_addr_sk#15, ss_ext_sales_price#16, d_year#18, d_qoy#19, #20#20, #21#21] + +(76) NativeProject +Output [4]: [ca_county#21 AS ca_county#21, d_qoy#19 AS d_qoy#19, d_year#18 AS d_year#18, UnscaledValue(ss_ext_sales_price#16) AS _c3#22] +Input [4]: [ss_ext_sales_price#16, d_year#18, d_qoy#19, ca_county#21] + +(77) NativeHashAggregate +Input [4]: [ca_county#21, d_qoy#19, d_year#18, _c3#22] +Keys [3]: [ca_county#21, d_qoy#19, d_year#18] +Functions [1]: [partial_sum(_c3#22)] +Aggregate Attributes [1]: [sum#23] +Results [4]: [ca_county#21, d_qoy#19, d_year#18, #11#11] + +(78) NativeShuffleExchange +Input [4]: [ca_county#21, d_qoy#19, d_year#18, #11#11] +Arguments: hashpartitioning(ca_county#21, d_qoy#19, d_year#18, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(79) ShuffleQueryStage +Output [4]: [ca_county#21, d_qoy#19, d_year#18, #11#11] +Arguments: X + +(80) AQEShuffleRead +Input [4]: [ca_county#21, d_qoy#19, d_year#18, #11#11] +Arguments: coalesced + +(81) InputAdapter +Input [4]: [ca_county#21, d_qoy#19, d_year#18, #11#11] + +(82) NativeHashAggregate +Input [4]: [ca_county#21, d_qoy#19, d_year#18, #11#11] +Keys [3]: [ca_county#21, d_qoy#19, d_year#18] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#16))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#16))#12] +Results [4]: [ca_county#21, d_qoy#19, d_year#18, sum(UnscaledValue(ss_ext_sales_price#16))#12] + +(83) NativeProject +Output [2]: [ca_county#21, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#16))#12,17,2) AS store_sales#24] +Input [4]: [ca_county#21, d_qoy#19, d_year#18, sum(UnscaledValue(ss_ext_sales_price#16))#12] + +(84) NativeShuffleExchange +Input [2]: [ca_county#21, store_sales#24] +Arguments: hashpartitioning(ca_county#21, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(85) ShuffleQueryStage +Output [2]: [ca_county#21, store_sales#24] +Arguments: X + +(86) AQEShuffleRead +Input [2]: [ca_county#21, store_sales#24] +Arguments: coalesced + +(87) InputAdapter +Input [2]: [ca_county#21, store_sales#24] + +(88) NativeSort +Input [2]: [ca_county#21, store_sales#24] +Arguments: [ca_county#21 ASC NULLS FIRST], false + +(89) NativeSortMergeJoin +Left keys [1]: [ca_county#8] +Right keys [1]: [ca_county#21] +Join type: Inner +Join condition: None + +(90) ReusedExchange [Reuses operator id: 4] +Output [3]: [ss_sold_date_sk#25, ss_addr_sk#26, ss_ext_sales_price#27] + +(91) ShuffleQueryStage +Output [3]: [ss_sold_date_sk#25, ss_addr_sk#26, ss_ext_sales_price#27] +Arguments: X + +(92) AQEShuffleRead +Input [3]: [ss_sold_date_sk#25, ss_addr_sk#26, ss_ext_sales_price#27] +Arguments: coalesced + +(93) InputAdapter +Input [3]: [ss_sold_date_sk#25, ss_addr_sk#26, ss_ext_sales_price#27] +Arguments: [#25, #26, #27] + +(94) InputAdapter +Input [3]: [#25#25, #26#26, #27#27] + +(95) NativeSort +Input [3]: [#25#25, #26#26, #27#27] +Arguments: [ss_sold_date_sk#25 ASC NULLS FIRST], false + +(318) Scan parquet +Output [3]: [d_date_sk#28, d_year#29, d_qoy#30] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_qoy), IsNotNull(d_year), EqualTo(d_qoy,3), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(97) InputAdapter +Input [3]: [d_date_sk#28, d_year#29, d_qoy#30] +Arguments: [#28, #29, #30] + +(98) NativeFilter +Input [3]: [#28#28, #29#29, #30#30] +Condition : ((((isnotnull(d_qoy#30) AND isnotnull(d_year#29)) AND (d_qoy#30 = 3)) AND (d_year#29 = 2000)) AND isnotnull(d_date_sk#28)) + +(99) NativeShuffleExchange +Input [3]: [#28#28, #29#29, #30#30] +Arguments: hashpartitioning(d_date_sk#28, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(100) ShuffleQueryStage +Output [3]: [#28#28, #29#29, #30#30] +Arguments: X + +(101) AQEShuffleRead +Input [3]: [#28#28, #29#29, #30#30] +Arguments: coalesced + +(102) InputAdapter +Input [3]: [#28#28, #29#29, #30#30] + +(103) NativeSort +Input [3]: [#28#28, #29#29, #30#30] +Arguments: [d_date_sk#28 ASC NULLS FIRST], false + +(104) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#25] +Right keys [1]: [d_date_sk#28] +Join type: Inner +Join condition: None + +(105) NativeProject +Output [4]: [ss_addr_sk#26, ss_ext_sales_price#27, d_year#29, d_qoy#30] +Input [6]: [#25#25, #26#26, #27#27, #28#28, #29#29, #30#30] + +(106) NativeShuffleExchange +Input [4]: [ss_addr_sk#26, ss_ext_sales_price#27, d_year#29, d_qoy#30] +Arguments: hashpartitioning(ss_addr_sk#26, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(107) ShuffleQueryStage +Output [4]: [ss_addr_sk#26, ss_ext_sales_price#27, d_year#29, d_qoy#30] +Arguments: X + +(108) AQEShuffleRead +Input [4]: [ss_addr_sk#26, ss_ext_sales_price#27, d_year#29, d_qoy#30] +Arguments: coalesced + +(109) InputAdapter +Input [4]: [ss_addr_sk#26, ss_ext_sales_price#27, d_year#29, d_qoy#30] + +(110) NativeSort +Input [4]: [ss_addr_sk#26, ss_ext_sales_price#27, d_year#29, d_qoy#30] +Arguments: [ss_addr_sk#26 ASC NULLS FIRST], false + +(111) ReusedExchange [Reuses operator id: 27] +Output [2]: [ca_address_sk#31, ca_county#32] + +(112) ShuffleQueryStage +Output [2]: [ca_address_sk#31, ca_county#32] +Arguments: X + +(113) AQEShuffleRead +Input [2]: [ca_address_sk#31, ca_county#32] +Arguments: coalesced + +(114) InputAdapter +Input [2]: [ca_address_sk#31, ca_county#32] +Arguments: [#31, #32] + +(115) InputAdapter +Input [2]: [#31#31, #32#32] + +(116) NativeSort +Input [2]: [#31#31, #32#32] +Arguments: [ca_address_sk#31 ASC NULLS FIRST], false + +(117) NativeSortMergeJoin +Left keys [1]: [ss_addr_sk#26] +Right keys [1]: [ca_address_sk#31] +Join type: Inner +Join condition: None + +(118) NativeProject +Output [4]: [ss_ext_sales_price#27, d_year#29, d_qoy#30, ca_county#32] +Input [6]: [ss_addr_sk#26, ss_ext_sales_price#27, d_year#29, d_qoy#30, #31#31, #32#32] + +(119) NativeProject +Output [4]: [ca_county#32 AS ca_county#32, d_qoy#30 AS d_qoy#30, d_year#29 AS d_year#29, UnscaledValue(ss_ext_sales_price#27) AS _c3#33] +Input [4]: [ss_ext_sales_price#27, d_year#29, d_qoy#30, ca_county#32] + +(120) NativeHashAggregate +Input [4]: [ca_county#32, d_qoy#30, d_year#29, _c3#33] +Keys [3]: [ca_county#32, d_qoy#30, d_year#29] +Functions [1]: [partial_sum(_c3#33)] +Aggregate Attributes [1]: [sum#34] +Results [4]: [ca_county#32, d_qoy#30, d_year#29, #11#11] + +(121) NativeShuffleExchange +Input [4]: [ca_county#32, d_qoy#30, d_year#29, #11#11] +Arguments: hashpartitioning(ca_county#32, d_qoy#30, d_year#29, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(122) ShuffleQueryStage +Output [4]: [ca_county#32, d_qoy#30, d_year#29, #11#11] +Arguments: X + +(123) AQEShuffleRead +Input [4]: [ca_county#32, d_qoy#30, d_year#29, #11#11] +Arguments: coalesced + +(124) InputAdapter +Input [4]: [ca_county#32, d_qoy#30, d_year#29, #11#11] + +(125) NativeHashAggregate +Input [4]: [ca_county#32, d_qoy#30, d_year#29, #11#11] +Keys [3]: [ca_county#32, d_qoy#30, d_year#29] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#27))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#27))#12] +Results [4]: [ca_county#32, d_qoy#30, d_year#29, sum(UnscaledValue(ss_ext_sales_price#27))#12] + +(126) NativeProject +Output [2]: [ca_county#32, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#27))#12,17,2) AS store_sales#35] +Input [4]: [ca_county#32, d_qoy#30, d_year#29, sum(UnscaledValue(ss_ext_sales_price#27))#12] + +(127) NativeShuffleExchange +Input [2]: [ca_county#32, store_sales#35] +Arguments: hashpartitioning(ca_county#32, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(128) ShuffleQueryStage +Output [2]: [ca_county#32, store_sales#35] +Arguments: X + +(129) AQEShuffleRead +Input [2]: [ca_county#32, store_sales#35] +Arguments: coalesced + +(130) InputAdapter +Input [2]: [ca_county#32, store_sales#35] + +(131) NativeSort +Input [2]: [ca_county#32, store_sales#35] +Arguments: [ca_county#32 ASC NULLS FIRST], false + +(132) NativeSortMergeJoin +Left keys [1]: [ca_county#21] +Right keys [1]: [ca_county#32] +Join type: Inner +Join condition: None + +(133) NativeProject +Output [5]: [ca_county#8, d_year#5, store_sales#13, store_sales#24, store_sales#35] +Input [7]: [ca_county#8, d_year#5, store_sales#13, ca_county#21, store_sales#24, ca_county#32, store_sales#35] + +(339) Scan parquet +Output [3]: [ws_sold_date_sk#36, ws_bill_addr_sk#37, ws_ext_sales_price#38] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_bill_addr_sk)] +ReadSchema: struct + +(135) InputAdapter +Input [3]: [ws_sold_date_sk#36, ws_bill_addr_sk#37, ws_ext_sales_price#38] +Arguments: [#36, #37, #38] + +(136) NativeFilter +Input [3]: [#36#36, #37#37, #38#38] +Condition : (isnotnull(ws_sold_date_sk#36) AND isnotnull(ws_bill_addr_sk#37)) + +(137) NativeShuffleExchange +Input [3]: [#36#36, #37#37, #38#38] +Arguments: hashpartitioning(ws_sold_date_sk#36, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(138) ShuffleQueryStage +Output [3]: [#36#36, #37#37, #38#38] +Arguments: X + +(139) AQEShuffleRead +Input [3]: [#36#36, #37#37, #38#38] +Arguments: coalesced + +(140) InputAdapter +Input [3]: [#36#36, #37#37, #38#38] + +(141) NativeSort +Input [3]: [#36#36, #37#37, #38#38] +Arguments: [ws_sold_date_sk#36 ASC NULLS FIRST], false + +(142) ReusedExchange [Reuses operator id: 12] +Output [3]: [d_date_sk#39, d_year#40, d_qoy#41] + +(143) ShuffleQueryStage +Output [3]: [d_date_sk#39, d_year#40, d_qoy#41] +Arguments: X + +(144) AQEShuffleRead +Input [3]: [d_date_sk#39, d_year#40, d_qoy#41] +Arguments: coalesced + +(145) InputAdapter +Input [3]: [d_date_sk#39, d_year#40, d_qoy#41] +Arguments: [#39, #40, #41] + +(146) InputAdapter +Input [3]: [#39#39, #40#40, #41#41] + +(147) NativeSort +Input [3]: [#39#39, #40#40, #41#41] +Arguments: [d_date_sk#39 ASC NULLS FIRST], false + +(148) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#36] +Right keys [1]: [d_date_sk#39] +Join type: Inner +Join condition: None + +(149) NativeProject +Output [4]: [ws_bill_addr_sk#37, ws_ext_sales_price#38, d_year#40, d_qoy#41] +Input [6]: [#36#36, #37#37, #38#38, #39#39, #40#40, #41#41] + +(150) NativeShuffleExchange +Input [4]: [ws_bill_addr_sk#37, ws_ext_sales_price#38, d_year#40, d_qoy#41] +Arguments: hashpartitioning(ws_bill_addr_sk#37, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(151) ShuffleQueryStage +Output [4]: [ws_bill_addr_sk#37, ws_ext_sales_price#38, d_year#40, d_qoy#41] +Arguments: X + +(152) AQEShuffleRead +Input [4]: [ws_bill_addr_sk#37, ws_ext_sales_price#38, d_year#40, d_qoy#41] +Arguments: coalesced + +(153) InputAdapter +Input [4]: [ws_bill_addr_sk#37, ws_ext_sales_price#38, d_year#40, d_qoy#41] + +(154) NativeSort +Input [4]: [ws_bill_addr_sk#37, ws_ext_sales_price#38, d_year#40, d_qoy#41] +Arguments: [ws_bill_addr_sk#37 ASC NULLS FIRST], false + +(155) ReusedExchange [Reuses operator id: 27] +Output [2]: [ca_address_sk#42, ca_county#43] + +(156) ShuffleQueryStage +Output [2]: [ca_address_sk#42, ca_county#43] +Arguments: X + +(157) AQEShuffleRead +Input [2]: [ca_address_sk#42, ca_county#43] +Arguments: coalesced + +(158) InputAdapter +Input [2]: [ca_address_sk#42, ca_county#43] +Arguments: [#42, #43] + +(159) InputAdapter +Input [2]: [#42#42, #43#43] + +(160) NativeSort +Input [2]: [#42#42, #43#43] +Arguments: [ca_address_sk#42 ASC NULLS FIRST], false + +(161) NativeSortMergeJoin +Left keys [1]: [ws_bill_addr_sk#37] +Right keys [1]: [ca_address_sk#42] +Join type: Inner +Join condition: None + +(162) NativeProject +Output [4]: [ws_ext_sales_price#38, d_year#40, d_qoy#41, ca_county#43] +Input [6]: [ws_bill_addr_sk#37, ws_ext_sales_price#38, d_year#40, d_qoy#41, #42#42, #43#43] + +(163) NativeProject +Output [4]: [ca_county#43 AS ca_county#43, d_qoy#41 AS d_qoy#41, d_year#40 AS d_year#40, UnscaledValue(ws_ext_sales_price#38) AS _c3#44] +Input [4]: [ws_ext_sales_price#38, d_year#40, d_qoy#41, ca_county#43] + +(164) NativeHashAggregate +Input [4]: [ca_county#43, d_qoy#41, d_year#40, _c3#44] +Keys [3]: [ca_county#43, d_qoy#41, d_year#40] +Functions [1]: [partial_sum(_c3#44)] +Aggregate Attributes [1]: [sum#45] +Results [4]: [ca_county#43, d_qoy#41, d_year#40, #11#11] + +(165) NativeShuffleExchange +Input [4]: [ca_county#43, d_qoy#41, d_year#40, #11#11] +Arguments: hashpartitioning(ca_county#43, d_qoy#41, d_year#40, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(166) ShuffleQueryStage +Output [4]: [ca_county#43, d_qoy#41, d_year#40, #11#11] +Arguments: X + +(167) AQEShuffleRead +Input [4]: [ca_county#43, d_qoy#41, d_year#40, #11#11] +Arguments: coalesced + +(168) InputAdapter +Input [4]: [ca_county#43, d_qoy#41, d_year#40, #11#11] + +(169) NativeHashAggregate +Input [4]: [ca_county#43, d_qoy#41, d_year#40, #11#11] +Keys [3]: [ca_county#43, d_qoy#41, d_year#40] +Functions [1]: [sum(UnscaledValue(ws_ext_sales_price#38))] +Aggregate Attributes [1]: [sum(UnscaledValue(ws_ext_sales_price#38))#46] +Results [4]: [ca_county#43, d_qoy#41, d_year#40, sum(UnscaledValue(ws_ext_sales_price#38))#46] + +(170) NativeProject +Output [2]: [ca_county#43, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#38))#46,17,2) AS web_sales#47] +Input [4]: [ca_county#43, d_qoy#41, d_year#40, sum(UnscaledValue(ws_ext_sales_price#38))#46] + +(171) NativeShuffleExchange +Input [2]: [ca_county#43, web_sales#47] +Arguments: hashpartitioning(ca_county#43, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(172) ShuffleQueryStage +Output [2]: [ca_county#43, web_sales#47] +Arguments: X + +(173) AQEShuffleRead +Input [2]: [ca_county#43, web_sales#47] +Arguments: coalesced + +(174) InputAdapter +Input [2]: [ca_county#43, web_sales#47] + +(175) NativeSort +Input [2]: [ca_county#43, web_sales#47] +Arguments: [ca_county#43 ASC NULLS FIRST], false + +(176) NativeSortMergeJoin +Left keys [1]: [ca_county#8] +Right keys [1]: [ca_county#43] +Join type: Inner +Join condition: None + +(177) ReusedExchange [Reuses operator id: 137] +Output [3]: [ws_sold_date_sk#48, ws_bill_addr_sk#49, ws_ext_sales_price#50] + +(178) ShuffleQueryStage +Output [3]: [ws_sold_date_sk#48, ws_bill_addr_sk#49, ws_ext_sales_price#50] +Arguments: X + +(179) AQEShuffleRead +Input [3]: [ws_sold_date_sk#48, ws_bill_addr_sk#49, ws_ext_sales_price#50] +Arguments: coalesced + +(180) InputAdapter +Input [3]: [ws_sold_date_sk#48, ws_bill_addr_sk#49, ws_ext_sales_price#50] +Arguments: [#48, #49, #50] + +(181) InputAdapter +Input [3]: [#48#48, #49#49, #50#50] + +(182) NativeSort +Input [3]: [#48#48, #49#49, #50#50] +Arguments: [ws_sold_date_sk#48 ASC NULLS FIRST], false + +(183) ReusedExchange [Reuses operator id: 56] +Output [3]: [d_date_sk#51, d_year#52, d_qoy#53] + +(184) ShuffleQueryStage +Output [3]: [d_date_sk#51, d_year#52, d_qoy#53] +Arguments: X + +(185) AQEShuffleRead +Input [3]: [d_date_sk#51, d_year#52, d_qoy#53] +Arguments: coalesced + +(186) InputAdapter +Input [3]: [d_date_sk#51, d_year#52, d_qoy#53] +Arguments: [#51, #52, #53] + +(187) InputAdapter +Input [3]: [#51#51, #52#52, #53#53] + +(188) NativeSort +Input [3]: [#51#51, #52#52, #53#53] +Arguments: [d_date_sk#51 ASC NULLS FIRST], false + +(189) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#48] +Right keys [1]: [d_date_sk#51] +Join type: Inner +Join condition: None + +(190) NativeProject +Output [4]: [ws_bill_addr_sk#49, ws_ext_sales_price#50, d_year#52, d_qoy#53] +Input [6]: [#48#48, #49#49, #50#50, #51#51, #52#52, #53#53] + +(191) NativeShuffleExchange +Input [4]: [ws_bill_addr_sk#49, ws_ext_sales_price#50, d_year#52, d_qoy#53] +Arguments: hashpartitioning(ws_bill_addr_sk#49, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(192) ShuffleQueryStage +Output [4]: [ws_bill_addr_sk#49, ws_ext_sales_price#50, d_year#52, d_qoy#53] +Arguments: X + +(193) AQEShuffleRead +Input [4]: [ws_bill_addr_sk#49, ws_ext_sales_price#50, d_year#52, d_qoy#53] +Arguments: coalesced + +(194) InputAdapter +Input [4]: [ws_bill_addr_sk#49, ws_ext_sales_price#50, d_year#52, d_qoy#53] + +(195) NativeSort +Input [4]: [ws_bill_addr_sk#49, ws_ext_sales_price#50, d_year#52, d_qoy#53] +Arguments: [ws_bill_addr_sk#49 ASC NULLS FIRST], false + +(196) ReusedExchange [Reuses operator id: 27] +Output [2]: [ca_address_sk#54, ca_county#55] + +(197) ShuffleQueryStage +Output [2]: [ca_address_sk#54, ca_county#55] +Arguments: X + +(198) AQEShuffleRead +Input [2]: [ca_address_sk#54, ca_county#55] +Arguments: coalesced + +(199) InputAdapter +Input [2]: [ca_address_sk#54, ca_county#55] +Arguments: [#54, #55] + +(200) InputAdapter +Input [2]: [#54#54, #55#55] + +(201) NativeSort +Input [2]: [#54#54, #55#55] +Arguments: [ca_address_sk#54 ASC NULLS FIRST], false + +(202) NativeSortMergeJoin +Left keys [1]: [ws_bill_addr_sk#49] +Right keys [1]: [ca_address_sk#54] +Join type: Inner +Join condition: None + +(203) NativeProject +Output [4]: [ws_ext_sales_price#50, d_year#52, d_qoy#53, ca_county#55] +Input [6]: [ws_bill_addr_sk#49, ws_ext_sales_price#50, d_year#52, d_qoy#53, #54#54, #55#55] + +(204) NativeProject +Output [4]: [ca_county#55 AS ca_county#55, d_qoy#53 AS d_qoy#53, d_year#52 AS d_year#52, UnscaledValue(ws_ext_sales_price#50) AS _c3#56] +Input [4]: [ws_ext_sales_price#50, d_year#52, d_qoy#53, ca_county#55] + +(205) NativeHashAggregate +Input [4]: [ca_county#55, d_qoy#53, d_year#52, _c3#56] +Keys [3]: [ca_county#55, d_qoy#53, d_year#52] +Functions [1]: [partial_sum(_c3#56)] +Aggregate Attributes [1]: [sum#57] +Results [4]: [ca_county#55, d_qoy#53, d_year#52, #11#11] + +(206) NativeShuffleExchange +Input [4]: [ca_county#55, d_qoy#53, d_year#52, #11#11] +Arguments: hashpartitioning(ca_county#55, d_qoy#53, d_year#52, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(207) ShuffleQueryStage +Output [4]: [ca_county#55, d_qoy#53, d_year#52, #11#11] +Arguments: X + +(208) AQEShuffleRead +Input [4]: [ca_county#55, d_qoy#53, d_year#52, #11#11] +Arguments: coalesced + +(209) InputAdapter +Input [4]: [ca_county#55, d_qoy#53, d_year#52, #11#11] + +(210) NativeHashAggregate +Input [4]: [ca_county#55, d_qoy#53, d_year#52, #11#11] +Keys [3]: [ca_county#55, d_qoy#53, d_year#52] +Functions [1]: [sum(UnscaledValue(ws_ext_sales_price#50))] +Aggregate Attributes [1]: [sum(UnscaledValue(ws_ext_sales_price#50))#46] +Results [4]: [ca_county#55, d_qoy#53, d_year#52, sum(UnscaledValue(ws_ext_sales_price#50))#46] + +(211) NativeProject +Output [2]: [ca_county#55, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#50))#46,17,2) AS web_sales#58] +Input [4]: [ca_county#55, d_qoy#53, d_year#52, sum(UnscaledValue(ws_ext_sales_price#50))#46] + +(212) NativeShuffleExchange +Input [2]: [ca_county#55, web_sales#58] +Arguments: hashpartitioning(ca_county#55, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(213) ShuffleQueryStage +Output [2]: [ca_county#55, web_sales#58] +Arguments: X + +(214) AQEShuffleRead +Input [2]: [ca_county#55, web_sales#58] +Arguments: coalesced + +(215) InputAdapter +Input [2]: [ca_county#55, web_sales#58] + +(216) NativeSort +Input [2]: [ca_county#55, web_sales#58] +Arguments: [ca_county#55 ASC NULLS FIRST], false + +(217) SortMergeJoin [codegen id : 1] +Left keys [1]: [ca_county#43] +Right keys [1]: [ca_county#55] +Join type: Inner +Join condition: (CASE WHEN (web_sales#47 > 0.00) THEN (web_sales#58 / web_sales#47) END > CASE WHEN (store_sales#13 > 0.00) THEN (store_sales#24 / store_sales#13) END) + +(218) Project [codegen id : 1] +Output [8]: [ca_county#8, d_year#5, store_sales#13, store_sales#24, store_sales#35, ca_county#43, web_sales#47, web_sales#58] +Input [9]: [ca_county#8, d_year#5, store_sales#13, store_sales#24, store_sales#35, ca_county#43, web_sales#47, ca_county#55, web_sales#58] + +(219) ReusedExchange [Reuses operator id: 137] +Output [3]: [ws_sold_date_sk#59, ws_bill_addr_sk#60, ws_ext_sales_price#61] + +(220) ShuffleQueryStage +Output [3]: [ws_sold_date_sk#59, ws_bill_addr_sk#60, ws_ext_sales_price#61] +Arguments: X + +(221) AQEShuffleRead +Input [3]: [ws_sold_date_sk#59, ws_bill_addr_sk#60, ws_ext_sales_price#61] +Arguments: coalesced + +(222) InputAdapter +Input [3]: [ws_sold_date_sk#59, ws_bill_addr_sk#60, ws_ext_sales_price#61] +Arguments: [#59, #60, #61] + +(223) InputAdapter +Input [3]: [#59#59, #60#60, #61#61] + +(224) NativeSort +Input [3]: [#59#59, #60#60, #61#61] +Arguments: [ws_sold_date_sk#59 ASC NULLS FIRST], false + +(225) ReusedExchange [Reuses operator id: 99] +Output [3]: [d_date_sk#62, d_year#63, d_qoy#64] + +(226) ShuffleQueryStage +Output [3]: [d_date_sk#62, d_year#63, d_qoy#64] +Arguments: X + +(227) AQEShuffleRead +Input [3]: [d_date_sk#62, d_year#63, d_qoy#64] +Arguments: coalesced + +(228) InputAdapter +Input [3]: [d_date_sk#62, d_year#63, d_qoy#64] +Arguments: [#62, #63, #64] + +(229) InputAdapter +Input [3]: [#62#62, #63#63, #64#64] + +(230) NativeSort +Input [3]: [#62#62, #63#63, #64#64] +Arguments: [d_date_sk#62 ASC NULLS FIRST], false + +(231) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#59] +Right keys [1]: [d_date_sk#62] +Join type: Inner +Join condition: None + +(232) NativeProject +Output [4]: [ws_bill_addr_sk#60, ws_ext_sales_price#61, d_year#63, d_qoy#64] +Input [6]: [#59#59, #60#60, #61#61, #62#62, #63#63, #64#64] + +(233) NativeShuffleExchange +Input [4]: [ws_bill_addr_sk#60, ws_ext_sales_price#61, d_year#63, d_qoy#64] +Arguments: hashpartitioning(ws_bill_addr_sk#60, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(234) ShuffleQueryStage +Output [4]: [ws_bill_addr_sk#60, ws_ext_sales_price#61, d_year#63, d_qoy#64] +Arguments: X + +(235) AQEShuffleRead +Input [4]: [ws_bill_addr_sk#60, ws_ext_sales_price#61, d_year#63, d_qoy#64] +Arguments: coalesced + +(236) InputAdapter +Input [4]: [ws_bill_addr_sk#60, ws_ext_sales_price#61, d_year#63, d_qoy#64] + +(237) NativeSort +Input [4]: [ws_bill_addr_sk#60, ws_ext_sales_price#61, d_year#63, d_qoy#64] +Arguments: [ws_bill_addr_sk#60 ASC NULLS FIRST], false + +(238) ReusedExchange [Reuses operator id: 27] +Output [2]: [ca_address_sk#65, ca_county#66] + +(239) ShuffleQueryStage +Output [2]: [ca_address_sk#65, ca_county#66] +Arguments: X + +(240) AQEShuffleRead +Input [2]: [ca_address_sk#65, ca_county#66] +Arguments: coalesced + +(241) InputAdapter +Input [2]: [ca_address_sk#65, ca_county#66] +Arguments: [#65, #66] + +(242) InputAdapter +Input [2]: [#65#65, #66#66] + +(243) NativeSort +Input [2]: [#65#65, #66#66] +Arguments: [ca_address_sk#65 ASC NULLS FIRST], false + +(244) NativeSortMergeJoin +Left keys [1]: [ws_bill_addr_sk#60] +Right keys [1]: [ca_address_sk#65] +Join type: Inner +Join condition: None + +(245) NativeProject +Output [4]: [ws_ext_sales_price#61, d_year#63, d_qoy#64, ca_county#66] +Input [6]: [ws_bill_addr_sk#60, ws_ext_sales_price#61, d_year#63, d_qoy#64, #65#65, #66#66] + +(246) NativeProject +Output [4]: [ca_county#66 AS ca_county#66, d_qoy#64 AS d_qoy#64, d_year#63 AS d_year#63, UnscaledValue(ws_ext_sales_price#61) AS _c3#67] +Input [4]: [ws_ext_sales_price#61, d_year#63, d_qoy#64, ca_county#66] + +(247) NativeHashAggregate +Input [4]: [ca_county#66, d_qoy#64, d_year#63, _c3#67] +Keys [3]: [ca_county#66, d_qoy#64, d_year#63] +Functions [1]: [partial_sum(_c3#67)] +Aggregate Attributes [1]: [sum#68] +Results [4]: [ca_county#66, d_qoy#64, d_year#63, #11#11] + +(248) NativeShuffleExchange +Input [4]: [ca_county#66, d_qoy#64, d_year#63, #11#11] +Arguments: hashpartitioning(ca_county#66, d_qoy#64, d_year#63, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(249) ShuffleQueryStage +Output [4]: [ca_county#66, d_qoy#64, d_year#63, #11#11] +Arguments: X + +(250) AQEShuffleRead +Input [4]: [ca_county#66, d_qoy#64, d_year#63, #11#11] +Arguments: coalesced + +(251) InputAdapter +Input [4]: [ca_county#66, d_qoy#64, d_year#63, #11#11] + +(252) NativeHashAggregate +Input [4]: [ca_county#66, d_qoy#64, d_year#63, #11#11] +Keys [3]: [ca_county#66, d_qoy#64, d_year#63] +Functions [1]: [sum(UnscaledValue(ws_ext_sales_price#61))] +Aggregate Attributes [1]: [sum(UnscaledValue(ws_ext_sales_price#61))#46] +Results [4]: [ca_county#66, d_qoy#64, d_year#63, sum(UnscaledValue(ws_ext_sales_price#61))#46] + +(253) NativeProject +Output [2]: [ca_county#66, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#61))#46,17,2) AS web_sales#69] +Input [4]: [ca_county#66, d_qoy#64, d_year#63, sum(UnscaledValue(ws_ext_sales_price#61))#46] + +(254) NativeShuffleExchange +Input [2]: [ca_county#66, web_sales#69] +Arguments: hashpartitioning(ca_county#66, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(255) ShuffleQueryStage +Output [2]: [ca_county#66, web_sales#69] +Arguments: X + +(256) AQEShuffleRead +Input [2]: [ca_county#66, web_sales#69] +Arguments: coalesced + +(257) InputAdapter +Input [2]: [ca_county#66, web_sales#69] + +(258) NativeSort +Input [2]: [ca_county#66, web_sales#69] +Arguments: [ca_county#66 ASC NULLS FIRST], false + +(259) SortMergeJoin [codegen id : 2] +Left keys [1]: [ca_county#43] +Right keys [1]: [ca_county#66] +Join type: Inner +Join condition: (CASE WHEN (web_sales#58 > 0.00) THEN (web_sales#69 / web_sales#58) END > CASE WHEN (store_sales#24 > 0.00) THEN (store_sales#35 / store_sales#24) END) + +(260) Project [codegen id : 2] +Output [6]: [ca_county#8, d_year#5, (web_sales#58 / web_sales#47) AS web_q1_q2_increase#70, (store_sales#24 / store_sales#13) AS store_q1_q2_increase#71, (web_sales#69 / web_sales#58) AS web_q2_q3_increase#72, (store_sales#35 / store_sales#24) AS store_q2_q3_increase#73] +Input [10]: [ca_county#8, d_year#5, store_sales#13, store_sales#24, store_sales#35, ca_county#43, web_sales#47, web_sales#58, ca_county#66, web_sales#69] + +(261) ConvertToNative +Input [6]: [ca_county#8, d_year#5, web_q1_q2_increase#70, store_q1_q2_increase#71, web_q2_q3_increase#72, store_q2_q3_increase#73] + +(262) NativeShuffleExchange +Input [6]: [ca_county#8, d_year#5, web_q1_q2_increase#70, store_q1_q2_increase#71, web_q2_q3_increase#72, store_q2_q3_increase#73] +Arguments: rangepartitioning(ca_county#8 ASC NULLS FIRST, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(263) ShuffleQueryStage +Output [6]: [ca_county#8, d_year#5, web_q1_q2_increase#70, store_q1_q2_increase#71, web_q2_q3_increase#72, store_q2_q3_increase#73] +Arguments: X + +(264) AQEShuffleRead +Input [6]: [ca_county#8, d_year#5, web_q1_q2_increase#70, store_q1_q2_increase#71, web_q2_q3_increase#72, store_q2_q3_increase#73] +Arguments: coalesced + +(265) InputAdapter +Input [6]: [ca_county#8, d_year#5, web_q1_q2_increase#70, store_q1_q2_increase#71, web_q2_q3_increase#72, store_q2_q3_increase#73] + +(266) NativeSort +Input [6]: [ca_county#8, d_year#5, web_q1_q2_increase#70, store_q1_q2_increase#71, web_q2_q3_increase#72, store_q2_q3_increase#73] +Arguments: [ca_county#8 ASC NULLS FIRST], true + +(267) Scan parquet +Output [3]: [ss_sold_date_sk#1, ss_addr_sk#2, ss_ext_sales_price#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_addr_sk)] +ReadSchema: struct + +(268) Filter +Input [3]: [ss_sold_date_sk#1, ss_addr_sk#2, ss_ext_sales_price#3] +Condition : (isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_addr_sk#2)) + +(269) Exchange +Input [3]: [ss_sold_date_sk#1, ss_addr_sk#2, ss_ext_sales_price#3] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(270) Sort +Input [3]: [ss_sold_date_sk#1, ss_addr_sk#2, ss_ext_sales_price#3] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(271) Scan parquet +Output [3]: [d_date_sk#4, d_year#5, d_qoy#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_qoy), IsNotNull(d_year), EqualTo(d_qoy,1), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(272) Filter +Input [3]: [d_date_sk#4, d_year#5, d_qoy#6] +Condition : ((((isnotnull(d_qoy#6) AND isnotnull(d_year#5)) AND (d_qoy#6 = 1)) AND (d_year#5 = 2000)) AND isnotnull(d_date_sk#4)) + +(273) Exchange +Input [3]: [d_date_sk#4, d_year#5, d_qoy#6] +Arguments: hashpartitioning(d_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(274) Sort +Input [3]: [d_date_sk#4, d_year#5, d_qoy#6] +Arguments: [d_date_sk#4 ASC NULLS FIRST], false, 0 + +(275) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#4] +Join type: Inner +Join condition: None + +(276) Project +Output [4]: [ss_addr_sk#2, ss_ext_sales_price#3, d_year#5, d_qoy#6] +Input [6]: [ss_sold_date_sk#1, ss_addr_sk#2, ss_ext_sales_price#3, d_date_sk#4, d_year#5, d_qoy#6] + +(277) Exchange +Input [4]: [ss_addr_sk#2, ss_ext_sales_price#3, d_year#5, d_qoy#6] +Arguments: hashpartitioning(ss_addr_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(278) Sort +Input [4]: [ss_addr_sk#2, ss_ext_sales_price#3, d_year#5, d_qoy#6] +Arguments: [ss_addr_sk#2 ASC NULLS FIRST], false, 0 + +(279) Scan parquet +Output [2]: [ca_address_sk#7, ca_county#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_county)] +ReadSchema: struct + +(280) Filter +Input [2]: [ca_address_sk#7, ca_county#8] +Condition : (isnotnull(ca_address_sk#7) AND isnotnull(ca_county#8)) + +(281) Exchange +Input [2]: [ca_address_sk#7, ca_county#8] +Arguments: hashpartitioning(ca_address_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(282) Sort +Input [2]: [ca_address_sk#7, ca_county#8] +Arguments: [ca_address_sk#7 ASC NULLS FIRST], false, 0 + +(283) SortMergeJoin +Left keys [1]: [ss_addr_sk#2] +Right keys [1]: [ca_address_sk#7] +Join type: Inner +Join condition: None + +(284) Project +Output [4]: [ss_ext_sales_price#3, d_year#5, d_qoy#6, ca_county#8] +Input [6]: [ss_addr_sk#2, ss_ext_sales_price#3, d_year#5, d_qoy#6, ca_address_sk#7, ca_county#8] + +(285) HashAggregate +Input [4]: [ss_ext_sales_price#3, d_year#5, d_qoy#6, ca_county#8] +Keys [3]: [ca_county#8, d_qoy#6, d_year#5] +Functions [1]: [partial_sum(UnscaledValue(ss_ext_sales_price#3))] +Aggregate Attributes [1]: [sum#10] +Results [4]: [ca_county#8, d_qoy#6, d_year#5, sum#74] + +(286) Exchange +Input [4]: [ca_county#8, d_qoy#6, d_year#5, sum#74] +Arguments: hashpartitioning(ca_county#8, d_qoy#6, d_year#5, 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(287) HashAggregate +Input [4]: [ca_county#8, d_qoy#6, d_year#5, sum#74] +Keys [3]: [ca_county#8, d_qoy#6, d_year#5] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#3))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#3))#12] +Results [3]: [ca_county#8, d_year#5, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#3))#12,17,2) AS store_sales#13] + +(288) Exchange +Input [3]: [ca_county#8, d_year#5, store_sales#13] +Arguments: hashpartitioning(ca_county#8, 100), ENSURE_REQUIREMENTS, [plan_id=31] + +(289) Sort +Input [3]: [ca_county#8, d_year#5, store_sales#13] +Arguments: [ca_county#8 ASC NULLS FIRST], false, 0 + +(290) Scan parquet +Output [3]: [ss_sold_date_sk#14, ss_addr_sk#15, ss_ext_sales_price#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_addr_sk)] +ReadSchema: struct + +(291) Filter +Input [3]: [ss_sold_date_sk#14, ss_addr_sk#15, ss_ext_sales_price#16] +Condition : (isnotnull(ss_sold_date_sk#14) AND isnotnull(ss_addr_sk#15)) + +(292) Exchange +Input [3]: [ss_sold_date_sk#14, ss_addr_sk#15, ss_ext_sales_price#16] +Arguments: hashpartitioning(ss_sold_date_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=32] + +(293) Sort +Input [3]: [ss_sold_date_sk#14, ss_addr_sk#15, ss_ext_sales_price#16] +Arguments: [ss_sold_date_sk#14 ASC NULLS FIRST], false, 0 + +(294) Scan parquet +Output [3]: [d_date_sk#17, d_year#18, d_qoy#19] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_qoy), IsNotNull(d_year), EqualTo(d_qoy,2), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(295) Filter +Input [3]: [d_date_sk#17, d_year#18, d_qoy#19] +Condition : ((((isnotnull(d_qoy#19) AND isnotnull(d_year#18)) AND (d_qoy#19 = 2)) AND (d_year#18 = 2000)) AND isnotnull(d_date_sk#17)) + +(296) Exchange +Input [3]: [d_date_sk#17, d_year#18, d_qoy#19] +Arguments: hashpartitioning(d_date_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=33] + +(297) Sort +Input [3]: [d_date_sk#17, d_year#18, d_qoy#19] +Arguments: [d_date_sk#17 ASC NULLS FIRST], false, 0 + +(298) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#14] +Right keys [1]: [d_date_sk#17] +Join type: Inner +Join condition: None + +(299) Project +Output [4]: [ss_addr_sk#15, ss_ext_sales_price#16, d_year#18, d_qoy#19] +Input [6]: [ss_sold_date_sk#14, ss_addr_sk#15, ss_ext_sales_price#16, d_date_sk#17, d_year#18, d_qoy#19] + +(300) Exchange +Input [4]: [ss_addr_sk#15, ss_ext_sales_price#16, d_year#18, d_qoy#19] +Arguments: hashpartitioning(ss_addr_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=34] + +(301) Sort +Input [4]: [ss_addr_sk#15, ss_ext_sales_price#16, d_year#18, d_qoy#19] +Arguments: [ss_addr_sk#15 ASC NULLS FIRST], false, 0 + +(302) Scan parquet +Output [2]: [ca_address_sk#20, ca_county#21] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_county)] +ReadSchema: struct + +(303) Filter +Input [2]: [ca_address_sk#20, ca_county#21] +Condition : (isnotnull(ca_address_sk#20) AND isnotnull(ca_county#21)) + +(304) Exchange +Input [2]: [ca_address_sk#20, ca_county#21] +Arguments: hashpartitioning(ca_address_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=35] + +(305) Sort +Input [2]: [ca_address_sk#20, ca_county#21] +Arguments: [ca_address_sk#20 ASC NULLS FIRST], false, 0 + +(306) SortMergeJoin +Left keys [1]: [ss_addr_sk#15] +Right keys [1]: [ca_address_sk#20] +Join type: Inner +Join condition: None + +(307) Project +Output [4]: [ss_ext_sales_price#16, d_year#18, d_qoy#19, ca_county#21] +Input [6]: [ss_addr_sk#15, ss_ext_sales_price#16, d_year#18, d_qoy#19, ca_address_sk#20, ca_county#21] + +(308) HashAggregate +Input [4]: [ss_ext_sales_price#16, d_year#18, d_qoy#19, ca_county#21] +Keys [3]: [ca_county#21, d_qoy#19, d_year#18] +Functions [1]: [partial_sum(UnscaledValue(ss_ext_sales_price#16))] +Aggregate Attributes [1]: [sum#23] +Results [4]: [ca_county#21, d_qoy#19, d_year#18, sum#75] + +(309) Exchange +Input [4]: [ca_county#21, d_qoy#19, d_year#18, sum#75] +Arguments: hashpartitioning(ca_county#21, d_qoy#19, d_year#18, 100), ENSURE_REQUIREMENTS, [plan_id=36] + +(310) HashAggregate +Input [4]: [ca_county#21, d_qoy#19, d_year#18, sum#75] +Keys [3]: [ca_county#21, d_qoy#19, d_year#18] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#16))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#16))#12] +Results [2]: [ca_county#21, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#16))#12,17,2) AS store_sales#24] + +(311) Exchange +Input [2]: [ca_county#21, store_sales#24] +Arguments: hashpartitioning(ca_county#21, 100), ENSURE_REQUIREMENTS, [plan_id=37] + +(312) Sort +Input [2]: [ca_county#21, store_sales#24] +Arguments: [ca_county#21 ASC NULLS FIRST], false, 0 + +(313) SortMergeJoin +Left keys [1]: [ca_county#8] +Right keys [1]: [ca_county#21] +Join type: Inner +Join condition: None + +(314) Scan parquet +Output [3]: [ss_sold_date_sk#25, ss_addr_sk#26, ss_ext_sales_price#27] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_addr_sk)] +ReadSchema: struct + +(315) Filter +Input [3]: [ss_sold_date_sk#25, ss_addr_sk#26, ss_ext_sales_price#27] +Condition : (isnotnull(ss_sold_date_sk#25) AND isnotnull(ss_addr_sk#26)) + +(316) Exchange +Input [3]: [ss_sold_date_sk#25, ss_addr_sk#26, ss_ext_sales_price#27] +Arguments: hashpartitioning(ss_sold_date_sk#25, 100), ENSURE_REQUIREMENTS, [plan_id=38] + +(317) Sort +Input [3]: [ss_sold_date_sk#25, ss_addr_sk#26, ss_ext_sales_price#27] +Arguments: [ss_sold_date_sk#25 ASC NULLS FIRST], false, 0 + +(318) Scan parquet +Output [3]: [d_date_sk#28, d_year#29, d_qoy#30] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_qoy), IsNotNull(d_year), EqualTo(d_qoy,3), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(319) Filter +Input [3]: [d_date_sk#28, d_year#29, d_qoy#30] +Condition : ((((isnotnull(d_qoy#30) AND isnotnull(d_year#29)) AND (d_qoy#30 = 3)) AND (d_year#29 = 2000)) AND isnotnull(d_date_sk#28)) + +(320) Exchange +Input [3]: [d_date_sk#28, d_year#29, d_qoy#30] +Arguments: hashpartitioning(d_date_sk#28, 100), ENSURE_REQUIREMENTS, [plan_id=39] + +(321) Sort +Input [3]: [d_date_sk#28, d_year#29, d_qoy#30] +Arguments: [d_date_sk#28 ASC NULLS FIRST], false, 0 + +(322) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#25] +Right keys [1]: [d_date_sk#28] +Join type: Inner +Join condition: None + +(323) Project +Output [4]: [ss_addr_sk#26, ss_ext_sales_price#27, d_year#29, d_qoy#30] +Input [6]: [ss_sold_date_sk#25, ss_addr_sk#26, ss_ext_sales_price#27, d_date_sk#28, d_year#29, d_qoy#30] + +(324) Exchange +Input [4]: [ss_addr_sk#26, ss_ext_sales_price#27, d_year#29, d_qoy#30] +Arguments: hashpartitioning(ss_addr_sk#26, 100), ENSURE_REQUIREMENTS, [plan_id=40] + +(325) Sort +Input [4]: [ss_addr_sk#26, ss_ext_sales_price#27, d_year#29, d_qoy#30] +Arguments: [ss_addr_sk#26 ASC NULLS FIRST], false, 0 + +(326) Scan parquet +Output [2]: [ca_address_sk#31, ca_county#32] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_county)] +ReadSchema: struct + +(327) Filter +Input [2]: [ca_address_sk#31, ca_county#32] +Condition : (isnotnull(ca_address_sk#31) AND isnotnull(ca_county#32)) + +(328) Exchange +Input [2]: [ca_address_sk#31, ca_county#32] +Arguments: hashpartitioning(ca_address_sk#31, 100), ENSURE_REQUIREMENTS, [plan_id=41] + +(329) Sort +Input [2]: [ca_address_sk#31, ca_county#32] +Arguments: [ca_address_sk#31 ASC NULLS FIRST], false, 0 + +(330) SortMergeJoin +Left keys [1]: [ss_addr_sk#26] +Right keys [1]: [ca_address_sk#31] +Join type: Inner +Join condition: None + +(331) Project +Output [4]: [ss_ext_sales_price#27, d_year#29, d_qoy#30, ca_county#32] +Input [6]: [ss_addr_sk#26, ss_ext_sales_price#27, d_year#29, d_qoy#30, ca_address_sk#31, ca_county#32] + +(332) HashAggregate +Input [4]: [ss_ext_sales_price#27, d_year#29, d_qoy#30, ca_county#32] +Keys [3]: [ca_county#32, d_qoy#30, d_year#29] +Functions [1]: [partial_sum(UnscaledValue(ss_ext_sales_price#27))] +Aggregate Attributes [1]: [sum#34] +Results [4]: [ca_county#32, d_qoy#30, d_year#29, sum#76] + +(333) Exchange +Input [4]: [ca_county#32, d_qoy#30, d_year#29, sum#76] +Arguments: hashpartitioning(ca_county#32, d_qoy#30, d_year#29, 100), ENSURE_REQUIREMENTS, [plan_id=42] + +(334) HashAggregate +Input [4]: [ca_county#32, d_qoy#30, d_year#29, sum#76] +Keys [3]: [ca_county#32, d_qoy#30, d_year#29] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#27))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#27))#12] +Results [2]: [ca_county#32, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#27))#12,17,2) AS store_sales#35] + +(335) Exchange +Input [2]: [ca_county#32, store_sales#35] +Arguments: hashpartitioning(ca_county#32, 100), ENSURE_REQUIREMENTS, [plan_id=43] + +(336) Sort +Input [2]: [ca_county#32, store_sales#35] +Arguments: [ca_county#32 ASC NULLS FIRST], false, 0 + +(337) SortMergeJoin +Left keys [1]: [ca_county#21] +Right keys [1]: [ca_county#32] +Join type: Inner +Join condition: None + +(338) Project +Output [5]: [ca_county#8, d_year#5, store_sales#13, store_sales#24, store_sales#35] +Input [7]: [ca_county#8, d_year#5, store_sales#13, ca_county#21, store_sales#24, ca_county#32, store_sales#35] + +(339) Scan parquet +Output [3]: [ws_sold_date_sk#36, ws_bill_addr_sk#37, ws_ext_sales_price#38] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_bill_addr_sk)] +ReadSchema: struct + +(340) Filter +Input [3]: [ws_sold_date_sk#36, ws_bill_addr_sk#37, ws_ext_sales_price#38] +Condition : (isnotnull(ws_sold_date_sk#36) AND isnotnull(ws_bill_addr_sk#37)) + +(341) Exchange +Input [3]: [ws_sold_date_sk#36, ws_bill_addr_sk#37, ws_ext_sales_price#38] +Arguments: hashpartitioning(ws_sold_date_sk#36, 100), ENSURE_REQUIREMENTS, [plan_id=44] + +(342) Sort +Input [3]: [ws_sold_date_sk#36, ws_bill_addr_sk#37, ws_ext_sales_price#38] +Arguments: [ws_sold_date_sk#36 ASC NULLS FIRST], false, 0 + +(343) Scan parquet +Output [3]: [d_date_sk#39, d_year#40, d_qoy#41] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_qoy), IsNotNull(d_year), EqualTo(d_qoy,1), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(344) Filter +Input [3]: [d_date_sk#39, d_year#40, d_qoy#41] +Condition : ((((isnotnull(d_qoy#41) AND isnotnull(d_year#40)) AND (d_qoy#41 = 1)) AND (d_year#40 = 2000)) AND isnotnull(d_date_sk#39)) + +(345) Exchange +Input [3]: [d_date_sk#39, d_year#40, d_qoy#41] +Arguments: hashpartitioning(d_date_sk#39, 100), ENSURE_REQUIREMENTS, [plan_id=45] + +(346) Sort +Input [3]: [d_date_sk#39, d_year#40, d_qoy#41] +Arguments: [d_date_sk#39 ASC NULLS FIRST], false, 0 + +(347) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#36] +Right keys [1]: [d_date_sk#39] +Join type: Inner +Join condition: None + +(348) Project +Output [4]: [ws_bill_addr_sk#37, ws_ext_sales_price#38, d_year#40, d_qoy#41] +Input [6]: [ws_sold_date_sk#36, ws_bill_addr_sk#37, ws_ext_sales_price#38, d_date_sk#39, d_year#40, d_qoy#41] + +(349) Exchange +Input [4]: [ws_bill_addr_sk#37, ws_ext_sales_price#38, d_year#40, d_qoy#41] +Arguments: hashpartitioning(ws_bill_addr_sk#37, 100), ENSURE_REQUIREMENTS, [plan_id=46] + +(350) Sort +Input [4]: [ws_bill_addr_sk#37, ws_ext_sales_price#38, d_year#40, d_qoy#41] +Arguments: [ws_bill_addr_sk#37 ASC NULLS FIRST], false, 0 + +(351) Scan parquet +Output [2]: [ca_address_sk#42, ca_county#43] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_county)] +ReadSchema: struct + +(352) Filter +Input [2]: [ca_address_sk#42, ca_county#43] +Condition : (isnotnull(ca_address_sk#42) AND isnotnull(ca_county#43)) + +(353) Exchange +Input [2]: [ca_address_sk#42, ca_county#43] +Arguments: hashpartitioning(ca_address_sk#42, 100), ENSURE_REQUIREMENTS, [plan_id=47] + +(354) Sort +Input [2]: [ca_address_sk#42, ca_county#43] +Arguments: [ca_address_sk#42 ASC NULLS FIRST], false, 0 + +(355) SortMergeJoin +Left keys [1]: [ws_bill_addr_sk#37] +Right keys [1]: [ca_address_sk#42] +Join type: Inner +Join condition: None + +(356) Project +Output [4]: [ws_ext_sales_price#38, d_year#40, d_qoy#41, ca_county#43] +Input [6]: [ws_bill_addr_sk#37, ws_ext_sales_price#38, d_year#40, d_qoy#41, ca_address_sk#42, ca_county#43] + +(357) HashAggregate +Input [4]: [ws_ext_sales_price#38, d_year#40, d_qoy#41, ca_county#43] +Keys [3]: [ca_county#43, d_qoy#41, d_year#40] +Functions [1]: [partial_sum(UnscaledValue(ws_ext_sales_price#38))] +Aggregate Attributes [1]: [sum#45] +Results [4]: [ca_county#43, d_qoy#41, d_year#40, sum#77] + +(358) Exchange +Input [4]: [ca_county#43, d_qoy#41, d_year#40, sum#77] +Arguments: hashpartitioning(ca_county#43, d_qoy#41, d_year#40, 100), ENSURE_REQUIREMENTS, [plan_id=48] + +(359) HashAggregate +Input [4]: [ca_county#43, d_qoy#41, d_year#40, sum#77] +Keys [3]: [ca_county#43, d_qoy#41, d_year#40] +Functions [1]: [sum(UnscaledValue(ws_ext_sales_price#38))] +Aggregate Attributes [1]: [sum(UnscaledValue(ws_ext_sales_price#38))#46] +Results [2]: [ca_county#43, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#38))#46,17,2) AS web_sales#47] + +(360) Exchange +Input [2]: [ca_county#43, web_sales#47] +Arguments: hashpartitioning(ca_county#43, 100), ENSURE_REQUIREMENTS, [plan_id=49] + +(361) Sort +Input [2]: [ca_county#43, web_sales#47] +Arguments: [ca_county#43 ASC NULLS FIRST], false, 0 + +(362) SortMergeJoin +Left keys [1]: [ca_county#8] +Right keys [1]: [ca_county#43] +Join type: Inner +Join condition: None + +(363) Scan parquet +Output [3]: [ws_sold_date_sk#48, ws_bill_addr_sk#49, ws_ext_sales_price#50] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_bill_addr_sk)] +ReadSchema: struct + +(364) Filter +Input [3]: [ws_sold_date_sk#48, ws_bill_addr_sk#49, ws_ext_sales_price#50] +Condition : (isnotnull(ws_sold_date_sk#48) AND isnotnull(ws_bill_addr_sk#49)) + +(365) Exchange +Input [3]: [ws_sold_date_sk#48, ws_bill_addr_sk#49, ws_ext_sales_price#50] +Arguments: hashpartitioning(ws_sold_date_sk#48, 100), ENSURE_REQUIREMENTS, [plan_id=50] + +(366) Sort +Input [3]: [ws_sold_date_sk#48, ws_bill_addr_sk#49, ws_ext_sales_price#50] +Arguments: [ws_sold_date_sk#48 ASC NULLS FIRST], false, 0 + +(367) Scan parquet +Output [3]: [d_date_sk#51, d_year#52, d_qoy#53] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_qoy), IsNotNull(d_year), EqualTo(d_qoy,2), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(368) Filter +Input [3]: [d_date_sk#51, d_year#52, d_qoy#53] +Condition : ((((isnotnull(d_qoy#53) AND isnotnull(d_year#52)) AND (d_qoy#53 = 2)) AND (d_year#52 = 2000)) AND isnotnull(d_date_sk#51)) + +(369) Exchange +Input [3]: [d_date_sk#51, d_year#52, d_qoy#53] +Arguments: hashpartitioning(d_date_sk#51, 100), ENSURE_REQUIREMENTS, [plan_id=51] + +(370) Sort +Input [3]: [d_date_sk#51, d_year#52, d_qoy#53] +Arguments: [d_date_sk#51 ASC NULLS FIRST], false, 0 + +(371) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#48] +Right keys [1]: [d_date_sk#51] +Join type: Inner +Join condition: None + +(372) Project +Output [4]: [ws_bill_addr_sk#49, ws_ext_sales_price#50, d_year#52, d_qoy#53] +Input [6]: [ws_sold_date_sk#48, ws_bill_addr_sk#49, ws_ext_sales_price#50, d_date_sk#51, d_year#52, d_qoy#53] + +(373) Exchange +Input [4]: [ws_bill_addr_sk#49, ws_ext_sales_price#50, d_year#52, d_qoy#53] +Arguments: hashpartitioning(ws_bill_addr_sk#49, 100), ENSURE_REQUIREMENTS, [plan_id=52] + +(374) Sort +Input [4]: [ws_bill_addr_sk#49, ws_ext_sales_price#50, d_year#52, d_qoy#53] +Arguments: [ws_bill_addr_sk#49 ASC NULLS FIRST], false, 0 + +(375) Scan parquet +Output [2]: [ca_address_sk#54, ca_county#55] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_county)] +ReadSchema: struct + +(376) Filter +Input [2]: [ca_address_sk#54, ca_county#55] +Condition : (isnotnull(ca_address_sk#54) AND isnotnull(ca_county#55)) + +(377) Exchange +Input [2]: [ca_address_sk#54, ca_county#55] +Arguments: hashpartitioning(ca_address_sk#54, 100), ENSURE_REQUIREMENTS, [plan_id=53] + +(378) Sort +Input [2]: [ca_address_sk#54, ca_county#55] +Arguments: [ca_address_sk#54 ASC NULLS FIRST], false, 0 + +(379) SortMergeJoin +Left keys [1]: [ws_bill_addr_sk#49] +Right keys [1]: [ca_address_sk#54] +Join type: Inner +Join condition: None + +(380) Project +Output [4]: [ws_ext_sales_price#50, d_year#52, d_qoy#53, ca_county#55] +Input [6]: [ws_bill_addr_sk#49, ws_ext_sales_price#50, d_year#52, d_qoy#53, ca_address_sk#54, ca_county#55] + +(381) HashAggregate +Input [4]: [ws_ext_sales_price#50, d_year#52, d_qoy#53, ca_county#55] +Keys [3]: [ca_county#55, d_qoy#53, d_year#52] +Functions [1]: [partial_sum(UnscaledValue(ws_ext_sales_price#50))] +Aggregate Attributes [1]: [sum#57] +Results [4]: [ca_county#55, d_qoy#53, d_year#52, sum#78] + +(382) Exchange +Input [4]: [ca_county#55, d_qoy#53, d_year#52, sum#78] +Arguments: hashpartitioning(ca_county#55, d_qoy#53, d_year#52, 100), ENSURE_REQUIREMENTS, [plan_id=54] + +(383) HashAggregate +Input [4]: [ca_county#55, d_qoy#53, d_year#52, sum#78] +Keys [3]: [ca_county#55, d_qoy#53, d_year#52] +Functions [1]: [sum(UnscaledValue(ws_ext_sales_price#50))] +Aggregate Attributes [1]: [sum(UnscaledValue(ws_ext_sales_price#50))#46] +Results [2]: [ca_county#55, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#50))#46,17,2) AS web_sales#58] + +(384) Exchange +Input [2]: [ca_county#55, web_sales#58] +Arguments: hashpartitioning(ca_county#55, 100), ENSURE_REQUIREMENTS, [plan_id=55] + +(385) Sort +Input [2]: [ca_county#55, web_sales#58] +Arguments: [ca_county#55 ASC NULLS FIRST], false, 0 + +(386) SortMergeJoin +Left keys [1]: [ca_county#43] +Right keys [1]: [ca_county#55] +Join type: Inner +Join condition: (CASE WHEN (web_sales#47 > 0.00) THEN (web_sales#58 / web_sales#47) END > CASE WHEN (store_sales#13 > 0.00) THEN (store_sales#24 / store_sales#13) END) + +(387) Project +Output [8]: [ca_county#8, d_year#5, store_sales#13, store_sales#24, store_sales#35, ca_county#43, web_sales#47, web_sales#58] +Input [9]: [ca_county#8, d_year#5, store_sales#13, store_sales#24, store_sales#35, ca_county#43, web_sales#47, ca_county#55, web_sales#58] + +(388) Scan parquet +Output [3]: [ws_sold_date_sk#59, ws_bill_addr_sk#60, ws_ext_sales_price#61] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_bill_addr_sk)] +ReadSchema: struct + +(389) Filter +Input [3]: [ws_sold_date_sk#59, ws_bill_addr_sk#60, ws_ext_sales_price#61] +Condition : (isnotnull(ws_sold_date_sk#59) AND isnotnull(ws_bill_addr_sk#60)) + +(390) Exchange +Input [3]: [ws_sold_date_sk#59, ws_bill_addr_sk#60, ws_ext_sales_price#61] +Arguments: hashpartitioning(ws_sold_date_sk#59, 100), ENSURE_REQUIREMENTS, [plan_id=56] + +(391) Sort +Input [3]: [ws_sold_date_sk#59, ws_bill_addr_sk#60, ws_ext_sales_price#61] +Arguments: [ws_sold_date_sk#59 ASC NULLS FIRST], false, 0 + +(392) Scan parquet +Output [3]: [d_date_sk#62, d_year#63, d_qoy#64] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_qoy), IsNotNull(d_year), EqualTo(d_qoy,3), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(393) Filter +Input [3]: [d_date_sk#62, d_year#63, d_qoy#64] +Condition : ((((isnotnull(d_qoy#64) AND isnotnull(d_year#63)) AND (d_qoy#64 = 3)) AND (d_year#63 = 2000)) AND isnotnull(d_date_sk#62)) + +(394) Exchange +Input [3]: [d_date_sk#62, d_year#63, d_qoy#64] +Arguments: hashpartitioning(d_date_sk#62, 100), ENSURE_REQUIREMENTS, [plan_id=57] + +(395) Sort +Input [3]: [d_date_sk#62, d_year#63, d_qoy#64] +Arguments: [d_date_sk#62 ASC NULLS FIRST], false, 0 + +(396) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#59] +Right keys [1]: [d_date_sk#62] +Join type: Inner +Join condition: None + +(397) Project +Output [4]: [ws_bill_addr_sk#60, ws_ext_sales_price#61, d_year#63, d_qoy#64] +Input [6]: [ws_sold_date_sk#59, ws_bill_addr_sk#60, ws_ext_sales_price#61, d_date_sk#62, d_year#63, d_qoy#64] + +(398) Exchange +Input [4]: [ws_bill_addr_sk#60, ws_ext_sales_price#61, d_year#63, d_qoy#64] +Arguments: hashpartitioning(ws_bill_addr_sk#60, 100), ENSURE_REQUIREMENTS, [plan_id=58] + +(399) Sort +Input [4]: [ws_bill_addr_sk#60, ws_ext_sales_price#61, d_year#63, d_qoy#64] +Arguments: [ws_bill_addr_sk#60 ASC NULLS FIRST], false, 0 + +(400) Scan parquet +Output [2]: [ca_address_sk#65, ca_county#66] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_county)] +ReadSchema: struct + +(401) Filter +Input [2]: [ca_address_sk#65, ca_county#66] +Condition : (isnotnull(ca_address_sk#65) AND isnotnull(ca_county#66)) + +(402) Exchange +Input [2]: [ca_address_sk#65, ca_county#66] +Arguments: hashpartitioning(ca_address_sk#65, 100), ENSURE_REQUIREMENTS, [plan_id=59] + +(403) Sort +Input [2]: [ca_address_sk#65, ca_county#66] +Arguments: [ca_address_sk#65 ASC NULLS FIRST], false, 0 + +(404) SortMergeJoin +Left keys [1]: [ws_bill_addr_sk#60] +Right keys [1]: [ca_address_sk#65] +Join type: Inner +Join condition: None + +(405) Project +Output [4]: [ws_ext_sales_price#61, d_year#63, d_qoy#64, ca_county#66] +Input [6]: [ws_bill_addr_sk#60, ws_ext_sales_price#61, d_year#63, d_qoy#64, ca_address_sk#65, ca_county#66] + +(406) HashAggregate +Input [4]: [ws_ext_sales_price#61, d_year#63, d_qoy#64, ca_county#66] +Keys [3]: [ca_county#66, d_qoy#64, d_year#63] +Functions [1]: [partial_sum(UnscaledValue(ws_ext_sales_price#61))] +Aggregate Attributes [1]: [sum#68] +Results [4]: [ca_county#66, d_qoy#64, d_year#63, sum#79] + +(407) Exchange +Input [4]: [ca_county#66, d_qoy#64, d_year#63, sum#79] +Arguments: hashpartitioning(ca_county#66, d_qoy#64, d_year#63, 100), ENSURE_REQUIREMENTS, [plan_id=60] + +(408) HashAggregate +Input [4]: [ca_county#66, d_qoy#64, d_year#63, sum#79] +Keys [3]: [ca_county#66, d_qoy#64, d_year#63] +Functions [1]: [sum(UnscaledValue(ws_ext_sales_price#61))] +Aggregate Attributes [1]: [sum(UnscaledValue(ws_ext_sales_price#61))#46] +Results [2]: [ca_county#66, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#61))#46,17,2) AS web_sales#69] + +(409) Exchange +Input [2]: [ca_county#66, web_sales#69] +Arguments: hashpartitioning(ca_county#66, 100), ENSURE_REQUIREMENTS, [plan_id=61] + +(410) Sort +Input [2]: [ca_county#66, web_sales#69] +Arguments: [ca_county#66 ASC NULLS FIRST], false, 0 + +(411) SortMergeJoin +Left keys [1]: [ca_county#43] +Right keys [1]: [ca_county#66] +Join type: Inner +Join condition: (CASE WHEN (web_sales#58 > 0.00) THEN (web_sales#69 / web_sales#58) END > CASE WHEN (store_sales#24 > 0.00) THEN (store_sales#35 / store_sales#24) END) + +(412) Project +Output [6]: [ca_county#8, d_year#5, (web_sales#58 / web_sales#47) AS web_q1_q2_increase#70, (store_sales#24 / store_sales#13) AS store_q1_q2_increase#71, (web_sales#69 / web_sales#58) AS web_q2_q3_increase#72, (store_sales#35 / store_sales#24) AS store_q2_q3_increase#73] +Input [10]: [ca_county#8, d_year#5, store_sales#13, store_sales#24, store_sales#35, ca_county#43, web_sales#47, web_sales#58, ca_county#66, web_sales#69] + +(413) Exchange +Input [6]: [ca_county#8, d_year#5, web_q1_q2_increase#70, store_q1_q2_increase#71, web_q2_q3_increase#72, store_q2_q3_increase#73] +Arguments: rangepartitioning(ca_county#8 ASC NULLS FIRST, 100), ENSURE_REQUIREMENTS, [plan_id=62] + +(414) Sort +Input [6]: [ca_county#8, d_year#5, web_q1_q2_increase#70, store_q1_q2_increase#71, web_q2_q3_increase#72, store_q2_q3_increase#73] +Arguments: [ca_county#8 ASC NULLS FIRST], true, 0 + +(415) AdaptiveSparkPlan +Output [6]: [ca_county#8, d_year#5, web_q1_q2_increase#70, store_q1_q2_increase#71, web_q2_q3_increase#72, store_q2_q3_increase#73] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q32.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q32.txt new file mode 100644 index 000000000..e4d065e04 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q32.txt @@ -0,0 +1,623 @@ +== Physical Plan == +AdaptiveSparkPlan (112) ++- == Final Plan == + NativeProject (70) + +- NativeHashAggregate (69) + +- ShuffleQueryStage (68), Statistics(X) + +- NativeShuffleExchange (67) + +- NativeHashAggregate (66) + +- NativeProject (65) + +- NativeProject (64) + +- NativeSortMergeJoin Inner (63) + :- NativeSort (56) + : +- InputAdapter (55) + : +- AQEShuffleRead (54) + : +- ShuffleQueryStage (53), Statistics(X) + : +- NativeShuffleExchange (52) + : +- ConvertToNative (51) + : +- * Project (50) + : +- * SortMergeJoin Inner (49) + : :- 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 (48) + : +- NativeFilter (47) + : +- NativeProject (46) + : +- NativeHashAggregate (45) + : +- InputAdapter (44) + : +- AQEShuffleRead (43) + : +- ShuffleQueryStage (42), Statistics(X) + : +- NativeShuffleExchange (41) + : +- NativeHashAggregate (40) + : +- NativeProject (39) + : +- NativeProject (38) + : +- NativeSortMergeJoin Inner (37) + : :- NativeSort (27) + : : +- InputAdapter (26) + : : +- AQEShuffleRead (25) + : : +- ShuffleQueryStage (24), Statistics(X) + : : +- NativeShuffleExchange (23) + : : +- NativeFilter (22) + : : +- InputAdapter (21) + : : +- NativeParquetScan (20) + : +- NativeSort (36) + : +- InputAdapter (35) + : +- AQEShuffleRead (34) + : +- ShuffleQueryStage (33), Statistics(X) + : +- NativeShuffleExchange (32) + : +- NativeProject (31) + : +- NativeFilter (30) + : +- InputAdapter (29) + : +- NativeParquetScan (28) + +- NativeSort (62) + +- InputAdapter (61) + +- InputAdapter (60) + +- AQEShuffleRead (59) + +- ShuffleQueryStage (58), Statistics(X) + +- ReusedExchange (57) ++- == Initial Plan == + HashAggregate (111) + +- Exchange (110) + +- HashAggregate (109) + +- Project (108) + +- SortMergeJoin Inner (107) + :- Sort (101) + : +- Exchange (100) + : +- Project (99) + : +- SortMergeJoin Inner (98) + : :- Project (81) + : : +- SortMergeJoin Inner (80) + : : :- Sort (74) + : : : +- Exchange (73) + : : : +- Filter (72) + : : : +- Scan parquet (71) + : : +- Sort (79) + : : +- Exchange (78) + : : +- Project (77) + : : +- Filter (76) + : : +- Scan parquet (75) + : +- Sort (97) + : +- Filter (96) + : +- HashAggregate (95) + : +- Exchange (94) + : +- HashAggregate (93) + : +- Project (92) + : +- SortMergeJoin Inner (91) + : :- Sort (85) + : : +- Exchange (84) + : : +- Filter (83) + : : +- Scan parquet (82) + : +- Sort (90) + : +- Exchange (89) + : +- Project (88) + : +- Filter (87) + : +- Scan parquet (86) + +- Sort (106) + +- Exchange (105) + +- Project (104) + +- Filter (103) + +- Scan parquet (102) + + +(71) Scan parquet +Output [3]: [cs_sold_date_sk#1, cs_item_sk#2, cs_ext_discount_amt#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_ext_discount_amt), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [cs_sold_date_sk#1, cs_item_sk#2, cs_ext_discount_amt#3] +Arguments: [#1, #2, #3] + +(3) NativeFilter +Input [3]: [#1#1, #2#2, #3#3] +Condition : ((isnotnull(cs_item_sk#2) AND isnotnull(cs_ext_discount_amt#3)) AND isnotnull(cs_sold_date_sk#1)) + +(4) NativeShuffleExchange +Input [3]: [#1#1, #2#2, #3#3] +Arguments: hashpartitioning(cs_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [3]: [#1#1, #2#2, #3#3] +Arguments: X + +(6) AQEShuffleRead +Input [3]: [#1#1, #2#2, #3#3] +Arguments: coalesced + +(7) InputAdapter +Input [3]: [#1#1, #2#2, #3#3] + +(8) NativeSort +Input [3]: [#1#1, #2#2, #3#3] +Arguments: [cs_item_sk#2 ASC NULLS FIRST], false + +(75) Scan parquet +Output [2]: [i_item_sk#4, i_manufact_id#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_manufact_id), EqualTo(i_manufact_id,269), IsNotNull(i_item_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [i_item_sk#4, i_manufact_id#5] +Arguments: [#4, #5] + +(11) NativeFilter +Input [2]: [#4#4, #5#5] +Condition : ((isnotnull(i_manufact_id#5) AND (i_manufact_id#5 = 269)) AND isnotnull(i_item_sk#4)) + +(12) NativeProject +Output [1]: [i_item_sk#4] +Input [2]: [#4#4, #5#5] + +(13) NativeShuffleExchange +Input [1]: [i_item_sk#4] +Arguments: hashpartitioning(i_item_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [1]: [i_item_sk#4] +Arguments: X + +(15) AQEShuffleRead +Input [1]: [i_item_sk#4] +Arguments: coalesced + +(16) InputAdapter +Input [1]: [i_item_sk#4] + +(17) NativeSort +Input [1]: [i_item_sk#4] +Arguments: [i_item_sk#4 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [cs_item_sk#2] +Right keys [1]: [i_item_sk#4] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [3]: [cs_sold_date_sk#1, cs_ext_discount_amt#3, i_item_sk#4] +Input [4]: [#1#1, #2#2, #3#3, i_item_sk#4] + +(82) Scan parquet +Output [3]: [cs_sold_date_sk#6, cs_item_sk#7, cs_ext_discount_amt#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk), IsNotNull(cs_item_sk)] +ReadSchema: struct + +(21) InputAdapter +Input [3]: [cs_sold_date_sk#6, cs_item_sk#7, cs_ext_discount_amt#8] +Arguments: [#6, #7, #8] + +(22) NativeFilter +Input [3]: [#6#6, #7#7, #8#8] +Condition : (isnotnull(cs_sold_date_sk#6) AND isnotnull(cs_item_sk#7)) + +(23) NativeShuffleExchange +Input [3]: [#6#6, #7#7, #8#8] +Arguments: hashpartitioning(cs_sold_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(24) ShuffleQueryStage +Output [3]: [#6#6, #7#7, #8#8] +Arguments: X + +(25) AQEShuffleRead +Input [3]: [#6#6, #7#7, #8#8] +Arguments: coalesced + +(26) InputAdapter +Input [3]: [#6#6, #7#7, #8#8] + +(27) NativeSort +Input [3]: [#6#6, #7#7, #8#8] +Arguments: [cs_sold_date_sk#6 ASC NULLS FIRST], false + +(86) Scan parquet +Output [2]: [d_date_sk#9, d_date#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,1998-03-18), LessThanOrEqual(d_date,1998-06-16), IsNotNull(d_date_sk)] +ReadSchema: struct + +(29) InputAdapter +Input [2]: [d_date_sk#9, d_date#10] +Arguments: [#9, #10] + +(30) NativeFilter +Input [2]: [#9#9, #10#10] +Condition : (((isnotnull(d_date#10) AND (d_date#10 >= 1998-03-18)) AND (d_date#10 <= 1998-06-16)) AND isnotnull(d_date_sk#9)) + +(31) NativeProject +Output [1]: [d_date_sk#9] +Input [2]: [#9#9, #10#10] + +(32) NativeShuffleExchange +Input [1]: [d_date_sk#9] +Arguments: hashpartitioning(d_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(33) ShuffleQueryStage +Output [1]: [d_date_sk#9] +Arguments: X + +(34) AQEShuffleRead +Input [1]: [d_date_sk#9] +Arguments: coalesced + +(35) InputAdapter +Input [1]: [d_date_sk#9] + +(36) NativeSort +Input [1]: [d_date_sk#9] +Arguments: [d_date_sk#9 ASC NULLS FIRST], false + +(37) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#6] +Right keys [1]: [d_date_sk#9] +Join type: Inner +Join condition: None + +(38) NativeProject +Output [2]: [cs_item_sk#7, cs_ext_discount_amt#8] +Input [4]: [#6#6, #7#7, #8#8, d_date_sk#9] + +(39) NativeProject +Output [2]: [cs_item_sk#7 AS cs_item_sk#7, UnscaledValue(cs_ext_discount_amt#8) AS _c1#11] +Input [2]: [cs_item_sk#7, cs_ext_discount_amt#8] + +(40) NativeHashAggregate +Input [2]: [cs_item_sk#7, _c1#11] +Keys [1]: [cs_item_sk#7] +Functions [1]: [partial_avg(_c1#11)] +Aggregate Attributes [2]: [sum#12, count#13] +Results [2]: [cs_item_sk#7, #14#14] + +(41) NativeShuffleExchange +Input [2]: [cs_item_sk#7, #14#14] +Arguments: hashpartitioning(cs_item_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(42) ShuffleQueryStage +Output [2]: [cs_item_sk#7, #14#14] +Arguments: X + +(43) AQEShuffleRead +Input [2]: [cs_item_sk#7, #14#14] +Arguments: coalesced + +(44) InputAdapter +Input [2]: [cs_item_sk#7, #14#14] + +(45) NativeHashAggregate +Input [2]: [cs_item_sk#7, #14#14] +Keys [1]: [cs_item_sk#7] +Functions [1]: [avg(UnscaledValue(cs_ext_discount_amt#8))] +Aggregate Attributes [1]: [avg(UnscaledValue(cs_ext_discount_amt#8))#15] +Results [2]: [cs_item_sk#7, avg(UnscaledValue(cs_ext_discount_amt#8))#15] + +(46) NativeProject +Output [2]: [(1.3 * cast((avg(UnscaledValue(cs_ext_discount_amt#8))#15 / 100.0) as decimal(11,6))) AS (1.3 * avg(cs_ext_discount_amt))#16, cs_item_sk#7] +Input [2]: [cs_item_sk#7, avg(UnscaledValue(cs_ext_discount_amt#8))#15] + +(47) NativeFilter +Input [2]: [(1.3 * avg(cs_ext_discount_amt))#16, cs_item_sk#7] +Condition : isnotnull((1.3 * avg(cs_ext_discount_amt))#16) + +(48) NativeSort +Input [2]: [(1.3 * avg(cs_ext_discount_amt))#16, cs_item_sk#7] +Arguments: [cs_item_sk#7 ASC NULLS FIRST], false + +(49) SortMergeJoin [codegen id : 1] +Left keys [1]: [i_item_sk#4] +Right keys [1]: [cs_item_sk#7] +Join type: Inner +Join condition: (cast(cs_ext_discount_amt#3 as decimal(14,7)) > (1.3 * avg(cs_ext_discount_amt))#16) + +(50) Project [codegen id : 1] +Output [2]: [cs_sold_date_sk#1, cs_ext_discount_amt#3] +Input [5]: [cs_sold_date_sk#1, cs_ext_discount_amt#3, i_item_sk#4, (1.3 * avg(cs_ext_discount_amt))#16, cs_item_sk#7] + +(51) ConvertToNative +Input [2]: [cs_sold_date_sk#1, cs_ext_discount_amt#3] + +(52) NativeShuffleExchange +Input [2]: [cs_sold_date_sk#1, cs_ext_discount_amt#3] +Arguments: hashpartitioning(cs_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(53) ShuffleQueryStage +Output [2]: [cs_sold_date_sk#1, cs_ext_discount_amt#3] +Arguments: X + +(54) AQEShuffleRead +Input [2]: [cs_sold_date_sk#1, cs_ext_discount_amt#3] +Arguments: coalesced + +(55) InputAdapter +Input [2]: [cs_sold_date_sk#1, cs_ext_discount_amt#3] + +(56) NativeSort +Input [2]: [cs_sold_date_sk#1, cs_ext_discount_amt#3] +Arguments: [cs_sold_date_sk#1 ASC NULLS FIRST], false + +(57) ReusedExchange [Reuses operator id: 32] +Output [1]: [d_date_sk#17] + +(58) ShuffleQueryStage +Output [1]: [d_date_sk#17] +Arguments: X + +(59) AQEShuffleRead +Input [1]: [d_date_sk#17] +Arguments: coalesced + +(60) InputAdapter +Input [1]: [d_date_sk#17] +Arguments: [#17] + +(61) InputAdapter +Input [1]: [#17#17] + +(62) NativeSort +Input [1]: [#17#17] +Arguments: [d_date_sk#17 ASC NULLS FIRST], false + +(63) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#1] +Right keys [1]: [d_date_sk#17] +Join type: Inner +Join condition: None + +(64) NativeProject +Output [1]: [cs_ext_discount_amt#3] +Input [3]: [cs_sold_date_sk#1, cs_ext_discount_amt#3, #17#17] + +(65) NativeProject +Output [1]: [UnscaledValue(cs_ext_discount_amt#3) AS _c0#18] +Input [1]: [cs_ext_discount_amt#3] + +(66) NativeHashAggregate +Input [1]: [_c0#18] +Keys: [] +Functions [1]: [partial_sum(_c0#18)] +Aggregate Attributes [1]: [sum#19] +Results [1]: [#14#14] + +(67) NativeShuffleExchange +Input [1]: [#14#14] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=7] + +(68) ShuffleQueryStage +Output [1]: [#14#14] +Arguments: X + +(69) NativeHashAggregate +Input [1]: [#14#14] +Keys: [] +Functions [1]: [sum(UnscaledValue(cs_ext_discount_amt#3))] +Aggregate Attributes [1]: [sum(UnscaledValue(cs_ext_discount_amt#3))#20] +Results [1]: [sum(UnscaledValue(cs_ext_discount_amt#3))#20] + +(70) NativeProject +Output [1]: [MakeDecimal(sum(UnscaledValue(cs_ext_discount_amt#3))#20,17,2) AS excess discount amount#21] +Input [1]: [sum(UnscaledValue(cs_ext_discount_amt#3))#20] + +(71) Scan parquet +Output [3]: [cs_sold_date_sk#1, cs_item_sk#2, cs_ext_discount_amt#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_ext_discount_amt), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(72) Filter +Input [3]: [cs_sold_date_sk#1, cs_item_sk#2, cs_ext_discount_amt#3] +Condition : ((isnotnull(cs_item_sk#2) AND isnotnull(cs_ext_discount_amt#3)) AND isnotnull(cs_sold_date_sk#1)) + +(73) Exchange +Input [3]: [cs_sold_date_sk#1, cs_item_sk#2, cs_ext_discount_amt#3] +Arguments: hashpartitioning(cs_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(74) Sort +Input [3]: [cs_sold_date_sk#1, cs_item_sk#2, cs_ext_discount_amt#3] +Arguments: [cs_item_sk#2 ASC NULLS FIRST], false, 0 + +(75) Scan parquet +Output [2]: [i_item_sk#4, i_manufact_id#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_manufact_id), EqualTo(i_manufact_id,269), IsNotNull(i_item_sk)] +ReadSchema: struct + +(76) Filter +Input [2]: [i_item_sk#4, i_manufact_id#5] +Condition : ((isnotnull(i_manufact_id#5) AND (i_manufact_id#5 = 269)) AND isnotnull(i_item_sk#4)) + +(77) Project +Output [1]: [i_item_sk#4] +Input [2]: [i_item_sk#4, i_manufact_id#5] + +(78) Exchange +Input [1]: [i_item_sk#4] +Arguments: hashpartitioning(i_item_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(79) Sort +Input [1]: [i_item_sk#4] +Arguments: [i_item_sk#4 ASC NULLS FIRST], false, 0 + +(80) SortMergeJoin +Left keys [1]: [cs_item_sk#2] +Right keys [1]: [i_item_sk#4] +Join type: Inner +Join condition: None + +(81) Project +Output [3]: [cs_sold_date_sk#1, cs_ext_discount_amt#3, i_item_sk#4] +Input [4]: [cs_sold_date_sk#1, cs_item_sk#2, cs_ext_discount_amt#3, i_item_sk#4] + +(82) Scan parquet +Output [3]: [cs_sold_date_sk#6, cs_item_sk#7, cs_ext_discount_amt#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk), IsNotNull(cs_item_sk)] +ReadSchema: struct + +(83) Filter +Input [3]: [cs_sold_date_sk#6, cs_item_sk#7, cs_ext_discount_amt#8] +Condition : (isnotnull(cs_sold_date_sk#6) AND isnotnull(cs_item_sk#7)) + +(84) Exchange +Input [3]: [cs_sold_date_sk#6, cs_item_sk#7, cs_ext_discount_amt#8] +Arguments: hashpartitioning(cs_sold_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(85) Sort +Input [3]: [cs_sold_date_sk#6, cs_item_sk#7, cs_ext_discount_amt#8] +Arguments: [cs_sold_date_sk#6 ASC NULLS FIRST], false, 0 + +(86) Scan parquet +Output [2]: [d_date_sk#9, d_date#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,1998-03-18), LessThanOrEqual(d_date,1998-06-16), IsNotNull(d_date_sk)] +ReadSchema: struct + +(87) Filter +Input [2]: [d_date_sk#9, d_date#10] +Condition : (((isnotnull(d_date#10) AND (d_date#10 >= 1998-03-18)) AND (d_date#10 <= 1998-06-16)) AND isnotnull(d_date_sk#9)) + +(88) Project +Output [1]: [d_date_sk#9] +Input [2]: [d_date_sk#9, d_date#10] + +(89) Exchange +Input [1]: [d_date_sk#9] +Arguments: hashpartitioning(d_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(90) Sort +Input [1]: [d_date_sk#9] +Arguments: [d_date_sk#9 ASC NULLS FIRST], false, 0 + +(91) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#6] +Right keys [1]: [d_date_sk#9] +Join type: Inner +Join condition: None + +(92) Project +Output [2]: [cs_item_sk#7, cs_ext_discount_amt#8] +Input [4]: [cs_sold_date_sk#6, cs_item_sk#7, cs_ext_discount_amt#8, d_date_sk#9] + +(93) HashAggregate +Input [2]: [cs_item_sk#7, cs_ext_discount_amt#8] +Keys [1]: [cs_item_sk#7] +Functions [1]: [partial_avg(UnscaledValue(cs_ext_discount_amt#8))] +Aggregate Attributes [2]: [sum#12, count#13] +Results [3]: [cs_item_sk#7, sum#22, count#23] + +(94) Exchange +Input [3]: [cs_item_sk#7, sum#22, count#23] +Arguments: hashpartitioning(cs_item_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(95) HashAggregate +Input [3]: [cs_item_sk#7, sum#22, count#23] +Keys [1]: [cs_item_sk#7] +Functions [1]: [avg(UnscaledValue(cs_ext_discount_amt#8))] +Aggregate Attributes [1]: [avg(UnscaledValue(cs_ext_discount_amt#8))#15] +Results [2]: [(1.3 * cast((avg(UnscaledValue(cs_ext_discount_amt#8))#15 / 100.0) as decimal(11,6))) AS (1.3 * avg(cs_ext_discount_amt))#16, cs_item_sk#7] + +(96) Filter +Input [2]: [(1.3 * avg(cs_ext_discount_amt))#16, cs_item_sk#7] +Condition : isnotnull((1.3 * avg(cs_ext_discount_amt))#16) + +(97) Sort +Input [2]: [(1.3 * avg(cs_ext_discount_amt))#16, cs_item_sk#7] +Arguments: [cs_item_sk#7 ASC NULLS FIRST], false, 0 + +(98) SortMergeJoin +Left keys [1]: [i_item_sk#4] +Right keys [1]: [cs_item_sk#7] +Join type: Inner +Join condition: (cast(cs_ext_discount_amt#3 as decimal(14,7)) > (1.3 * avg(cs_ext_discount_amt))#16) + +(99) Project +Output [2]: [cs_sold_date_sk#1, cs_ext_discount_amt#3] +Input [5]: [cs_sold_date_sk#1, cs_ext_discount_amt#3, i_item_sk#4, (1.3 * avg(cs_ext_discount_amt))#16, cs_item_sk#7] + +(100) Exchange +Input [2]: [cs_sold_date_sk#1, cs_ext_discount_amt#3] +Arguments: hashpartitioning(cs_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(101) Sort +Input [2]: [cs_sold_date_sk#1, cs_ext_discount_amt#3] +Arguments: [cs_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(102) Scan parquet +Output [2]: [d_date_sk#17, d_date#24] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,1998-03-18), LessThanOrEqual(d_date,1998-06-16), IsNotNull(d_date_sk)] +ReadSchema: struct + +(103) Filter +Input [2]: [d_date_sk#17, d_date#24] +Condition : (((isnotnull(d_date#24) AND (d_date#24 >= 1998-03-18)) AND (d_date#24 <= 1998-06-16)) AND isnotnull(d_date_sk#17)) + +(104) Project +Output [1]: [d_date_sk#17] +Input [2]: [d_date_sk#17, d_date#24] + +(105) Exchange +Input [1]: [d_date_sk#17] +Arguments: hashpartitioning(d_date_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(106) Sort +Input [1]: [d_date_sk#17] +Arguments: [d_date_sk#17 ASC NULLS FIRST], false, 0 + +(107) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#1] +Right keys [1]: [d_date_sk#17] +Join type: Inner +Join condition: None + +(108) Project +Output [1]: [cs_ext_discount_amt#3] +Input [3]: [cs_sold_date_sk#1, cs_ext_discount_amt#3, d_date_sk#17] + +(109) HashAggregate +Input [1]: [cs_ext_discount_amt#3] +Keys: [] +Functions [1]: [partial_sum(UnscaledValue(cs_ext_discount_amt#3))] +Aggregate Attributes [1]: [sum#19] +Results [1]: [sum#25] + +(110) Exchange +Input [1]: [sum#25] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=15] + +(111) HashAggregate +Input [1]: [sum#25] +Keys: [] +Functions [1]: [sum(UnscaledValue(cs_ext_discount_amt#3))] +Aggregate Attributes [1]: [sum(UnscaledValue(cs_ext_discount_amt#3))#20] +Results [1]: [MakeDecimal(sum(UnscaledValue(cs_ext_discount_amt#3))#20,17,2) AS excess discount amount#21] + +(112) AdaptiveSparkPlan +Output [1]: [excess discount amount#21] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q33.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q33.txt new file mode 100644 index 000000000..073ff268e --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q33.txt @@ -0,0 +1,1660 @@ +== Physical Plan == +AdaptiveSparkPlan (306) ++- == Final Plan == + NativeTakeOrdered (183) + +- NativeProject (182) + +- NativeHashAggregate (181) + +- InputAdapter (180) + +- AQEShuffleRead (179) + +- ShuffleQueryStage (178), Statistics(X) + +- NativeShuffleExchange (177) + +- NativeHashAggregate (176) + +- InputAdapter (175) + +- NativeUnion (174) + :- NativeProject (73) + : +- NativeHashAggregate (72) + : +- InputAdapter (71) + : +- AQEShuffleRead (70) + : +- ShuffleQueryStage (69), Statistics(X) + : +- NativeShuffleExchange (68) + : +- NativeHashAggregate (67) + : +- NativeProject (66) + : +- NativeProject (65) + : +- NativeSortMergeJoin Inner (64) + : :- NativeSort (40) + : : +- InputAdapter (39) + : : +- AQEShuffleRead (38) + : : +- ShuffleQueryStage (37), Statistics(X) + : : +- NativeShuffleExchange (36) + : : +- NativeProject (35) + : : +- NativeSortMergeJoin Inner (34) + : : :- 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 (33) + : : +- InputAdapter (32) + : : +- AQEShuffleRead (31) + : : +- ShuffleQueryStage (30), Statistics(X) + : : +- NativeShuffleExchange (29) + : : +- NativeProject (28) + : : +- NativeFilter (27) + : : +- InputAdapter (26) + : : +- NativeParquetScan (25) + : +- NativeSort (63) + : +- InputAdapter (62) + : +- AQEShuffleRead (61) + : +- ShuffleQueryStage (60), Statistics(X) + : +- NativeShuffleExchange (59) + : +- NativeSortMergeJoin LeftSemi (58) + : :- NativeSort (48) + : : +- InputAdapter (47) + : : +- AQEShuffleRead (46) + : : +- ShuffleQueryStage (45), Statistics(X) + : : +- NativeShuffleExchange (44) + : : +- NativeFilter (43) + : : +- InputAdapter (42) + : : +- NativeParquetScan (41) + : +- NativeSort (57) + : +- InputAdapter (56) + : +- AQEShuffleRead (55) + : +- ShuffleQueryStage (54), Statistics(X) + : +- NativeShuffleExchange (53) + : +- NativeProject (52) + : +- NativeFilter (51) + : +- InputAdapter (50) + : +- NativeParquetScan (49) + :- NativeProject (123) + : +- NativeHashAggregate (122) + : +- InputAdapter (121) + : +- AQEShuffleRead (120) + : +- ShuffleQueryStage (119), Statistics(X) + : +- NativeShuffleExchange (118) + : +- NativeHashAggregate (117) + : +- NativeProject (116) + : +- NativeProject (115) + : +- NativeSortMergeJoin Inner (114) + : :- NativeSort (107) + : : +- InputAdapter (106) + : : +- AQEShuffleRead (105) + : : +- ShuffleQueryStage (104), Statistics(X) + : : +- NativeShuffleExchange (103) + : : +- NativeProject (102) + : : +- NativeSortMergeJoin Inner (101) + : : :- NativeSort (94) + : : : +- InputAdapter (93) + : : : +- AQEShuffleRead (92) + : : : +- ShuffleQueryStage (91), Statistics(X) + : : : +- NativeShuffleExchange (90) + : : : +- NativeProject (89) + : : : +- NativeSortMergeJoin Inner (88) + : : : :- NativeSort (81) + : : : : +- InputAdapter (80) + : : : : +- AQEShuffleRead (79) + : : : : +- ShuffleQueryStage (78), Statistics(X) + : : : : +- NativeShuffleExchange (77) + : : : : +- NativeFilter (76) + : : : : +- InputAdapter (75) + : : : : +- NativeParquetScan (74) + : : : +- NativeSort (87) + : : : +- InputAdapter (86) + : : : +- InputAdapter (85) + : : : +- AQEShuffleRead (84) + : : : +- ShuffleQueryStage (83), Statistics(X) + : : : +- ReusedExchange (82) + : : +- NativeSort (100) + : : +- InputAdapter (99) + : : +- InputAdapter (98) + : : +- AQEShuffleRead (97) + : : +- ShuffleQueryStage (96), Statistics(X) + : : +- ReusedExchange (95) + : +- NativeSort (113) + : +- InputAdapter (112) + : +- InputAdapter (111) + : +- AQEShuffleRead (110) + : +- ShuffleQueryStage (109), Statistics(X) + : +- ReusedExchange (108) + +- NativeProject (173) + +- NativeHashAggregate (172) + +- InputAdapter (171) + +- AQEShuffleRead (170) + +- ShuffleQueryStage (169), Statistics(X) + +- NativeShuffleExchange (168) + +- NativeHashAggregate (167) + +- NativeProject (166) + +- NativeProject (165) + +- NativeSortMergeJoin Inner (164) + :- NativeSort (157) + : +- InputAdapter (156) + : +- AQEShuffleRead (155) + : +- ShuffleQueryStage (154), Statistics(X) + : +- NativeShuffleExchange (153) + : +- NativeProject (152) + : +- NativeSortMergeJoin Inner (151) + : :- NativeSort (144) + : : +- InputAdapter (143) + : : +- AQEShuffleRead (142) + : : +- ShuffleQueryStage (141), Statistics(X) + : : +- NativeShuffleExchange (140) + : : +- NativeProject (139) + : : +- NativeSortMergeJoin Inner (138) + : : :- NativeSort (131) + : : : +- InputAdapter (130) + : : : +- AQEShuffleRead (129) + : : : +- ShuffleQueryStage (128), Statistics(X) + : : : +- NativeShuffleExchange (127) + : : : +- NativeFilter (126) + : : : +- InputAdapter (125) + : : : +- NativeParquetScan (124) + : : +- NativeSort (137) + : : +- InputAdapter (136) + : : +- InputAdapter (135) + : : +- AQEShuffleRead (134) + : : +- ShuffleQueryStage (133), Statistics(X) + : : +- ReusedExchange (132) + : +- NativeSort (150) + : +- InputAdapter (149) + : +- InputAdapter (148) + : +- AQEShuffleRead (147) + : +- ShuffleQueryStage (146), Statistics(X) + : +- ReusedExchange (145) + +- NativeSort (163) + +- InputAdapter (162) + +- InputAdapter (161) + +- AQEShuffleRead (160) + +- ShuffleQueryStage (159), Statistics(X) + +- ReusedExchange (158) ++- == Initial Plan == + TakeOrderedAndProject (305) + +- HashAggregate (304) + +- Exchange (303) + +- HashAggregate (302) + +- Union (301) + :- HashAggregate (222) + : +- Exchange (221) + : +- HashAggregate (220) + : +- Project (219) + : +- SortMergeJoin Inner (218) + : :- Sort (205) + : : +- Exchange (204) + : : +- Project (203) + : : +- SortMergeJoin Inner (202) + : : :- Sort (196) + : : : +- Exchange (195) + : : : +- Project (194) + : : : +- SortMergeJoin Inner (193) + : : : :- Sort (187) + : : : : +- Exchange (186) + : : : : +- Filter (185) + : : : : +- Scan parquet (184) + : : : +- Sort (192) + : : : +- Exchange (191) + : : : +- Project (190) + : : : +- Filter (189) + : : : +- Scan parquet (188) + : : +- Sort (201) + : : +- Exchange (200) + : : +- Project (199) + : : +- Filter (198) + : : +- Scan parquet (197) + : +- Sort (217) + : +- Exchange (216) + : +- SortMergeJoin LeftSemi (215) + : :- Sort (209) + : : +- Exchange (208) + : : +- Filter (207) + : : +- Scan parquet (206) + : +- Sort (214) + : +- Exchange (213) + : +- Project (212) + : +- Filter (211) + : +- Scan parquet (210) + :- HashAggregate (261) + : +- Exchange (260) + : +- HashAggregate (259) + : +- Project (258) + : +- SortMergeJoin Inner (257) + : :- Sort (244) + : : +- Exchange (243) + : : +- Project (242) + : : +- SortMergeJoin Inner (241) + : : :- Sort (235) + : : : +- Exchange (234) + : : : +- Project (233) + : : : +- SortMergeJoin Inner (232) + : : : :- Sort (226) + : : : : +- Exchange (225) + : : : : +- Filter (224) + : : : : +- Scan parquet (223) + : : : +- Sort (231) + : : : +- Exchange (230) + : : : +- Project (229) + : : : +- Filter (228) + : : : +- Scan parquet (227) + : : +- Sort (240) + : : +- Exchange (239) + : : +- Project (238) + : : +- Filter (237) + : : +- Scan parquet (236) + : +- Sort (256) + : +- Exchange (255) + : +- SortMergeJoin LeftSemi (254) + : :- Sort (248) + : : +- Exchange (247) + : : +- Filter (246) + : : +- Scan parquet (245) + : +- Sort (253) + : +- Exchange (252) + : +- Project (251) + : +- Filter (250) + : +- Scan parquet (249) + +- HashAggregate (300) + +- Exchange (299) + +- HashAggregate (298) + +- Project (297) + +- SortMergeJoin Inner (296) + :- Sort (283) + : +- Exchange (282) + : +- Project (281) + : +- SortMergeJoin Inner (280) + : :- Sort (274) + : : +- Exchange (273) + : : +- Project (272) + : : +- SortMergeJoin Inner (271) + : : :- Sort (265) + : : : +- Exchange (264) + : : : +- Filter (263) + : : : +- Scan parquet (262) + : : +- Sort (270) + : : +- Exchange (269) + : : +- Project (268) + : : +- Filter (267) + : : +- Scan parquet (266) + : +- Sort (279) + : +- Exchange (278) + : +- Project (277) + : +- Filter (276) + : +- Scan parquet (275) + +- Sort (295) + +- Exchange (294) + +- SortMergeJoin LeftSemi (293) + :- Sort (287) + : +- Exchange (286) + : +- Filter (285) + : +- Scan parquet (284) + +- Sort (292) + +- Exchange (291) + +- Project (290) + +- Filter (289) + +- Scan parquet (288) + + +(184) Scan parquet +Output [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_addr_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Arguments: [#1, #2, #3, #4] + +(3) NativeFilter +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Condition : ((isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_addr_sk#3)) AND isnotnull(ss_item_sk#2)) + +(4) NativeShuffleExchange +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: X + +(6) AQEShuffleRead +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: coalesced + +(7) InputAdapter +Input [4]: [#1#1, #2#2, #3#3, #4#4] + +(8) NativeSort +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(188) Scan parquet +Output [3]: [d_date_sk#5, d_year#6, d_moy#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,1998), EqualTo(d_moy,5), IsNotNull(d_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [3]: [d_date_sk#5, d_year#6, d_moy#7] +Arguments: [#5, #6, #7] + +(11) NativeFilter +Input [3]: [#5#5, #6#6, #7#7] +Condition : ((((isnotnull(d_year#6) AND isnotnull(d_moy#7)) AND (d_year#6 = 1998)) AND (d_moy#7 = 5)) AND isnotnull(d_date_sk#5)) + +(12) NativeProject +Output [1]: [d_date_sk#5] +Input [3]: [#5#5, #6#6, #7#7] + +(13) NativeShuffleExchange +Input [1]: [d_date_sk#5] +Arguments: hashpartitioning(d_date_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [1]: [d_date_sk#5] +Arguments: X + +(15) AQEShuffleRead +Input [1]: [d_date_sk#5] +Arguments: coalesced + +(16) InputAdapter +Input [1]: [d_date_sk#5] + +(17) NativeSort +Input [1]: [d_date_sk#5] +Arguments: [d_date_sk#5 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#5] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [3]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Input [5]: [#1#1, #2#2, #3#3, #4#4, d_date_sk#5] + +(20) NativeShuffleExchange +Input [3]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Arguments: hashpartitioning(ss_addr_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [3]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Arguments: X + +(22) AQEShuffleRead +Input [3]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Arguments: coalesced + +(23) InputAdapter +Input [3]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] + +(24) NativeSort +Input [3]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Arguments: [ss_addr_sk#3 ASC NULLS FIRST], false + +(197) Scan parquet +Output [2]: [ca_address_sk#8, ca_gmt_offset#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_gmt_offset), EqualTo(ca_gmt_offset,-5.00), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [2]: [ca_address_sk#8, ca_gmt_offset#9] +Arguments: [#8, #9] + +(27) NativeFilter +Input [2]: [#8#8, #9#9] +Condition : ((isnotnull(ca_gmt_offset#9) AND (ca_gmt_offset#9 = -5.00)) AND isnotnull(ca_address_sk#8)) + +(28) NativeProject +Output [1]: [ca_address_sk#8] +Input [2]: [#8#8, #9#9] + +(29) NativeShuffleExchange +Input [1]: [ca_address_sk#8] +Arguments: hashpartitioning(ca_address_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(30) ShuffleQueryStage +Output [1]: [ca_address_sk#8] +Arguments: X + +(31) AQEShuffleRead +Input [1]: [ca_address_sk#8] +Arguments: coalesced + +(32) InputAdapter +Input [1]: [ca_address_sk#8] + +(33) NativeSort +Input [1]: [ca_address_sk#8] +Arguments: [ca_address_sk#8 ASC NULLS FIRST], false + +(34) NativeSortMergeJoin +Left keys [1]: [ss_addr_sk#3] +Right keys [1]: [ca_address_sk#8] +Join type: Inner +Join condition: None + +(35) NativeProject +Output [2]: [ss_item_sk#2, ss_ext_sales_price#4] +Input [4]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4, ca_address_sk#8] + +(36) NativeShuffleExchange +Input [2]: [ss_item_sk#2, ss_ext_sales_price#4] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [2]: [ss_item_sk#2, ss_ext_sales_price#4] +Arguments: X + +(38) AQEShuffleRead +Input [2]: [ss_item_sk#2, ss_ext_sales_price#4] +Arguments: coalesced + +(39) InputAdapter +Input [2]: [ss_item_sk#2, ss_ext_sales_price#4] + +(40) NativeSort +Input [2]: [ss_item_sk#2, ss_ext_sales_price#4] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false + +(206) Scan parquet +Output [2]: [i_item_sk#10, i_manufact_id#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(42) InputAdapter +Input [2]: [i_item_sk#10, i_manufact_id#11] +Arguments: [#10, #11] + +(43) NativeFilter +Input [2]: [#10#10, #11#11] +Condition : isnotnull(i_item_sk#10) + +(44) NativeShuffleExchange +Input [2]: [#10#10, #11#11] +Arguments: hashpartitioning(i_manufact_id#11, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(45) ShuffleQueryStage +Output [2]: [#10#10, #11#11] +Arguments: X + +(46) AQEShuffleRead +Input [2]: [#10#10, #11#11] +Arguments: coalesced + +(47) InputAdapter +Input [2]: [#10#10, #11#11] + +(48) NativeSort +Input [2]: [#10#10, #11#11] +Arguments: [i_manufact_id#11 ASC NULLS FIRST], false + +(210) Scan parquet +Output [2]: [i_category#12, i_manufact_id#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_category), EqualTo(i_category,Electronics)] +ReadSchema: struct + +(50) InputAdapter +Input [2]: [i_category#12, i_manufact_id#13] +Arguments: [#12, #13] + +(51) NativeFilter +Input [2]: [#12#12, #13#13] +Condition : (isnotnull(i_category#12) AND (i_category#12 = Electronics)) + +(52) NativeProject +Output [1]: [i_manufact_id#13] +Input [2]: [#12#12, #13#13] + +(53) NativeShuffleExchange +Input [1]: [i_manufact_id#13] +Arguments: hashpartitioning(i_manufact_id#13, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(54) ShuffleQueryStage +Output [1]: [i_manufact_id#13] +Arguments: X + +(55) AQEShuffleRead +Input [1]: [i_manufact_id#13] +Arguments: coalesced + +(56) InputAdapter +Input [1]: [i_manufact_id#13] + +(57) NativeSort +Input [1]: [i_manufact_id#13] +Arguments: [i_manufact_id#13 ASC NULLS FIRST], false + +(58) NativeSortMergeJoin +Left keys [1]: [i_manufact_id#11] +Right keys [1]: [i_manufact_id#13] +Join type: LeftSemi +Join condition: None + +(59) NativeShuffleExchange +Input [2]: [#10#10, #11#11] +Arguments: hashpartitioning(i_item_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(60) ShuffleQueryStage +Output [2]: [#10#10, #11#11] +Arguments: X + +(61) AQEShuffleRead +Input [2]: [#10#10, #11#11] +Arguments: coalesced + +(62) InputAdapter +Input [2]: [#10#10, #11#11] + +(63) NativeSort +Input [2]: [#10#10, #11#11] +Arguments: [i_item_sk#10 ASC NULLS FIRST], false + +(64) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#10] +Join type: Inner +Join condition: None + +(65) NativeProject +Output [2]: [ss_ext_sales_price#4, i_manufact_id#11] +Input [4]: [ss_item_sk#2, ss_ext_sales_price#4, #10#10, #11#11] + +(66) NativeProject +Output [2]: [i_manufact_id#11 AS i_manufact_id#11, UnscaledValue(ss_ext_sales_price#4) AS _c1#14] +Input [2]: [ss_ext_sales_price#4, i_manufact_id#11] + +(67) NativeHashAggregate +Input [2]: [i_manufact_id#11, _c1#14] +Keys [1]: [i_manufact_id#11] +Functions [1]: [partial_sum(_c1#14)] +Aggregate Attributes [1]: [sum#15] +Results [2]: [i_manufact_id#11, #16#16] + +(68) NativeShuffleExchange +Input [2]: [i_manufact_id#11, #16#16] +Arguments: hashpartitioning(i_manufact_id#11, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(69) ShuffleQueryStage +Output [2]: [i_manufact_id#11, #16#16] +Arguments: X + +(70) AQEShuffleRead +Input [2]: [i_manufact_id#11, #16#16] +Arguments: coalesced + +(71) InputAdapter +Input [2]: [i_manufact_id#11, #16#16] + +(72) NativeHashAggregate +Input [2]: [i_manufact_id#11, #16#16] +Keys [1]: [i_manufact_id#11] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#4))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#4))#17] +Results [2]: [i_manufact_id#11, sum(UnscaledValue(ss_ext_sales_price#4))#17] + +(73) NativeProject +Output [2]: [i_manufact_id#11, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#4))#17,17,2) AS total_sales#18] +Input [2]: [i_manufact_id#11, sum(UnscaledValue(ss_ext_sales_price#4))#17] + +(223) Scan parquet +Output [4]: [cs_sold_date_sk#19, cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk), IsNotNull(cs_bill_addr_sk), IsNotNull(cs_item_sk)] +ReadSchema: struct + +(75) InputAdapter +Input [4]: [cs_sold_date_sk#19, cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Arguments: [#19, #20, #21, #22] + +(76) NativeFilter +Input [4]: [#19#19, #20#20, #21#21, #22#22] +Condition : ((isnotnull(cs_sold_date_sk#19) AND isnotnull(cs_bill_addr_sk#20)) AND isnotnull(cs_item_sk#21)) + +(77) NativeShuffleExchange +Input [4]: [#19#19, #20#20, #21#21, #22#22] +Arguments: hashpartitioning(cs_sold_date_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(78) ShuffleQueryStage +Output [4]: [#19#19, #20#20, #21#21, #22#22] +Arguments: X + +(79) AQEShuffleRead +Input [4]: [#19#19, #20#20, #21#21, #22#22] +Arguments: coalesced + +(80) InputAdapter +Input [4]: [#19#19, #20#20, #21#21, #22#22] + +(81) NativeSort +Input [4]: [#19#19, #20#20, #21#21, #22#22] +Arguments: [cs_sold_date_sk#19 ASC NULLS FIRST], false + +(82) ReusedExchange [Reuses operator id: 13] +Output [1]: [d_date_sk#23] + +(83) ShuffleQueryStage +Output [1]: [d_date_sk#23] +Arguments: X + +(84) AQEShuffleRead +Input [1]: [d_date_sk#23] +Arguments: coalesced + +(85) InputAdapter +Input [1]: [d_date_sk#23] +Arguments: [#23] + +(86) InputAdapter +Input [1]: [#23#23] + +(87) NativeSort +Input [1]: [#23#23] +Arguments: [d_date_sk#23 ASC NULLS FIRST], false + +(88) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#19] +Right keys [1]: [d_date_sk#23] +Join type: Inner +Join condition: None + +(89) NativeProject +Output [3]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Input [5]: [#19#19, #20#20, #21#21, #22#22, #23#23] + +(90) NativeShuffleExchange +Input [3]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Arguments: hashpartitioning(cs_bill_addr_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(91) ShuffleQueryStage +Output [3]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Arguments: X + +(92) AQEShuffleRead +Input [3]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Arguments: coalesced + +(93) InputAdapter +Input [3]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] + +(94) NativeSort +Input [3]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Arguments: [cs_bill_addr_sk#20 ASC NULLS FIRST], false + +(95) ReusedExchange [Reuses operator id: 29] +Output [1]: [ca_address_sk#24] + +(96) ShuffleQueryStage +Output [1]: [ca_address_sk#24] +Arguments: X + +(97) AQEShuffleRead +Input [1]: [ca_address_sk#24] +Arguments: coalesced + +(98) InputAdapter +Input [1]: [ca_address_sk#24] +Arguments: [#24] + +(99) InputAdapter +Input [1]: [#24#24] + +(100) NativeSort +Input [1]: [#24#24] +Arguments: [ca_address_sk#24 ASC NULLS FIRST], false + +(101) NativeSortMergeJoin +Left keys [1]: [cs_bill_addr_sk#20] +Right keys [1]: [ca_address_sk#24] +Join type: Inner +Join condition: None + +(102) NativeProject +Output [2]: [cs_item_sk#21, cs_ext_sales_price#22] +Input [4]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22, #24#24] + +(103) NativeShuffleExchange +Input [2]: [cs_item_sk#21, cs_ext_sales_price#22] +Arguments: hashpartitioning(cs_item_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(104) ShuffleQueryStage +Output [2]: [cs_item_sk#21, cs_ext_sales_price#22] +Arguments: X + +(105) AQEShuffleRead +Input [2]: [cs_item_sk#21, cs_ext_sales_price#22] +Arguments: coalesced + +(106) InputAdapter +Input [2]: [cs_item_sk#21, cs_ext_sales_price#22] + +(107) NativeSort +Input [2]: [cs_item_sk#21, cs_ext_sales_price#22] +Arguments: [cs_item_sk#21 ASC NULLS FIRST], false + +(108) ReusedExchange [Reuses operator id: 59] +Output [2]: [i_item_sk#25, i_manufact_id#26] + +(109) ShuffleQueryStage +Output [2]: [i_item_sk#25, i_manufact_id#26] +Arguments: X + +(110) AQEShuffleRead +Input [2]: [i_item_sk#25, i_manufact_id#26] +Arguments: coalesced + +(111) InputAdapter +Input [2]: [i_item_sk#25, i_manufact_id#26] +Arguments: [#25, #26] + +(112) InputAdapter +Input [2]: [#25#25, #26#26] + +(113) NativeSort +Input [2]: [#25#25, #26#26] +Arguments: [i_item_sk#25 ASC NULLS FIRST], false + +(114) NativeSortMergeJoin +Left keys [1]: [cs_item_sk#21] +Right keys [1]: [i_item_sk#25] +Join type: Inner +Join condition: None + +(115) NativeProject +Output [2]: [cs_ext_sales_price#22, i_manufact_id#26] +Input [4]: [cs_item_sk#21, cs_ext_sales_price#22, #25#25, #26#26] + +(116) NativeProject +Output [2]: [i_manufact_id#26 AS i_manufact_id#26, UnscaledValue(cs_ext_sales_price#22) AS _c1#27] +Input [2]: [cs_ext_sales_price#22, i_manufact_id#26] + +(117) NativeHashAggregate +Input [2]: [i_manufact_id#26, _c1#27] +Keys [1]: [i_manufact_id#26] +Functions [1]: [partial_sum(_c1#27)] +Aggregate Attributes [1]: [sum#28] +Results [2]: [i_manufact_id#26, #16#16] + +(118) NativeShuffleExchange +Input [2]: [i_manufact_id#26, #16#16] +Arguments: hashpartitioning(i_manufact_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(119) ShuffleQueryStage +Output [2]: [i_manufact_id#26, #16#16] +Arguments: X + +(120) AQEShuffleRead +Input [2]: [i_manufact_id#26, #16#16] +Arguments: coalesced + +(121) InputAdapter +Input [2]: [i_manufact_id#26, #16#16] + +(122) NativeHashAggregate +Input [2]: [i_manufact_id#26, #16#16] +Keys [1]: [i_manufact_id#26] +Functions [1]: [sum(UnscaledValue(cs_ext_sales_price#22))] +Aggregate Attributes [1]: [sum(UnscaledValue(cs_ext_sales_price#22))#29] +Results [2]: [i_manufact_id#26, sum(UnscaledValue(cs_ext_sales_price#22))#29] + +(123) NativeProject +Output [2]: [i_manufact_id#26, MakeDecimal(sum(UnscaledValue(cs_ext_sales_price#22))#29,17,2) AS total_sales#30] +Input [2]: [i_manufact_id#26, sum(UnscaledValue(cs_ext_sales_price#22))#29] + +(262) Scan parquet +Output [4]: [ws_sold_date_sk#31, ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_bill_addr_sk), IsNotNull(ws_item_sk)] +ReadSchema: struct + +(125) InputAdapter +Input [4]: [ws_sold_date_sk#31, ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Arguments: [#31, #32, #33, #34] + +(126) NativeFilter +Input [4]: [#31#31, #32#32, #33#33, #34#34] +Condition : ((isnotnull(ws_sold_date_sk#31) AND isnotnull(ws_bill_addr_sk#33)) AND isnotnull(ws_item_sk#32)) + +(127) NativeShuffleExchange +Input [4]: [#31#31, #32#32, #33#33, #34#34] +Arguments: hashpartitioning(ws_sold_date_sk#31, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(128) ShuffleQueryStage +Output [4]: [#31#31, #32#32, #33#33, #34#34] +Arguments: X + +(129) AQEShuffleRead +Input [4]: [#31#31, #32#32, #33#33, #34#34] +Arguments: coalesced + +(130) InputAdapter +Input [4]: [#31#31, #32#32, #33#33, #34#34] + +(131) NativeSort +Input [4]: [#31#31, #32#32, #33#33, #34#34] +Arguments: [ws_sold_date_sk#31 ASC NULLS FIRST], false + +(132) ReusedExchange [Reuses operator id: 13] +Output [1]: [d_date_sk#35] + +(133) ShuffleQueryStage +Output [1]: [d_date_sk#35] +Arguments: X + +(134) AQEShuffleRead +Input [1]: [d_date_sk#35] +Arguments: coalesced + +(135) InputAdapter +Input [1]: [d_date_sk#35] +Arguments: [#35] + +(136) InputAdapter +Input [1]: [#35#35] + +(137) NativeSort +Input [1]: [#35#35] +Arguments: [d_date_sk#35 ASC NULLS FIRST], false + +(138) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#31] +Right keys [1]: [d_date_sk#35] +Join type: Inner +Join condition: None + +(139) NativeProject +Output [3]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Input [5]: [#31#31, #32#32, #33#33, #34#34, #35#35] + +(140) NativeShuffleExchange +Input [3]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Arguments: hashpartitioning(ws_bill_addr_sk#33, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(141) ShuffleQueryStage +Output [3]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Arguments: X + +(142) AQEShuffleRead +Input [3]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Arguments: coalesced + +(143) InputAdapter +Input [3]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] + +(144) NativeSort +Input [3]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Arguments: [ws_bill_addr_sk#33 ASC NULLS FIRST], false + +(145) ReusedExchange [Reuses operator id: 29] +Output [1]: [ca_address_sk#36] + +(146) ShuffleQueryStage +Output [1]: [ca_address_sk#36] +Arguments: X + +(147) AQEShuffleRead +Input [1]: [ca_address_sk#36] +Arguments: coalesced + +(148) InputAdapter +Input [1]: [ca_address_sk#36] +Arguments: [#36] + +(149) InputAdapter +Input [1]: [#36#36] + +(150) NativeSort +Input [1]: [#36#36] +Arguments: [ca_address_sk#36 ASC NULLS FIRST], false + +(151) NativeSortMergeJoin +Left keys [1]: [ws_bill_addr_sk#33] +Right keys [1]: [ca_address_sk#36] +Join type: Inner +Join condition: None + +(152) NativeProject +Output [2]: [ws_item_sk#32, ws_ext_sales_price#34] +Input [4]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34, #36#36] + +(153) NativeShuffleExchange +Input [2]: [ws_item_sk#32, ws_ext_sales_price#34] +Arguments: hashpartitioning(ws_item_sk#32, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(154) ShuffleQueryStage +Output [2]: [ws_item_sk#32, ws_ext_sales_price#34] +Arguments: X + +(155) AQEShuffleRead +Input [2]: [ws_item_sk#32, ws_ext_sales_price#34] +Arguments: coalesced + +(156) InputAdapter +Input [2]: [ws_item_sk#32, ws_ext_sales_price#34] + +(157) NativeSort +Input [2]: [ws_item_sk#32, ws_ext_sales_price#34] +Arguments: [ws_item_sk#32 ASC NULLS FIRST], false + +(158) ReusedExchange [Reuses operator id: 59] +Output [2]: [i_item_sk#37, i_manufact_id#38] + +(159) ShuffleQueryStage +Output [2]: [i_item_sk#37, i_manufact_id#38] +Arguments: X + +(160) AQEShuffleRead +Input [2]: [i_item_sk#37, i_manufact_id#38] +Arguments: coalesced + +(161) InputAdapter +Input [2]: [i_item_sk#37, i_manufact_id#38] +Arguments: [#37, #38] + +(162) InputAdapter +Input [2]: [#37#37, #38#38] + +(163) NativeSort +Input [2]: [#37#37, #38#38] +Arguments: [i_item_sk#37 ASC NULLS FIRST], false + +(164) NativeSortMergeJoin +Left keys [1]: [ws_item_sk#32] +Right keys [1]: [i_item_sk#37] +Join type: Inner +Join condition: None + +(165) NativeProject +Output [2]: [ws_ext_sales_price#34, i_manufact_id#38] +Input [4]: [ws_item_sk#32, ws_ext_sales_price#34, #37#37, #38#38] + +(166) NativeProject +Output [2]: [i_manufact_id#38 AS i_manufact_id#38, UnscaledValue(ws_ext_sales_price#34) AS _c1#39] +Input [2]: [ws_ext_sales_price#34, i_manufact_id#38] + +(167) NativeHashAggregate +Input [2]: [i_manufact_id#38, _c1#39] +Keys [1]: [i_manufact_id#38] +Functions [1]: [partial_sum(_c1#39)] +Aggregate Attributes [1]: [sum#40] +Results [2]: [i_manufact_id#38, #16#16] + +(168) NativeShuffleExchange +Input [2]: [i_manufact_id#38, #16#16] +Arguments: hashpartitioning(i_manufact_id#38, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(169) ShuffleQueryStage +Output [2]: [i_manufact_id#38, #16#16] +Arguments: X + +(170) AQEShuffleRead +Input [2]: [i_manufact_id#38, #16#16] +Arguments: coalesced + +(171) InputAdapter +Input [2]: [i_manufact_id#38, #16#16] + +(172) NativeHashAggregate +Input [2]: [i_manufact_id#38, #16#16] +Keys [1]: [i_manufact_id#38] +Functions [1]: [sum(UnscaledValue(ws_ext_sales_price#34))] +Aggregate Attributes [1]: [sum(UnscaledValue(ws_ext_sales_price#34))#41] +Results [2]: [i_manufact_id#38, sum(UnscaledValue(ws_ext_sales_price#34))#41] + +(173) NativeProject +Output [2]: [i_manufact_id#38, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#34))#41,17,2) AS total_sales#42] +Input [2]: [i_manufact_id#38, sum(UnscaledValue(ws_ext_sales_price#34))#41] + +(174) NativeUnion +Arguments: [i_manufact_id#11, total_sales#18] + +(175) InputAdapter +Input [2]: [i_manufact_id#11, total_sales#18] +Arguments: [#11, #18] + +(176) NativeHashAggregate +Input [2]: [#11#11, #18#18] +Keys [1]: [i_manufact_id#11] +Functions [1]: [partial_sum(total_sales#18)] +Aggregate Attributes [2]: [sum#43, isEmpty#44] +Results [2]: [i_manufact_id#11, #16#16] + +(177) NativeShuffleExchange +Input [2]: [i_manufact_id#11, #16#16] +Arguments: hashpartitioning(i_manufact_id#11, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(178) ShuffleQueryStage +Output [2]: [i_manufact_id#11, #16#16] +Arguments: X + +(179) AQEShuffleRead +Input [2]: [i_manufact_id#11, #16#16] +Arguments: coalesced + +(180) InputAdapter +Input [2]: [i_manufact_id#11, #16#16] + +(181) NativeHashAggregate +Input [2]: [i_manufact_id#11, #16#16] +Keys [1]: [i_manufact_id#11] +Functions [1]: [sum(total_sales#18)] +Aggregate Attributes [1]: [sum(total_sales#18)#45] +Results [2]: [i_manufact_id#11, sum(total_sales#18)#45] + +(182) NativeProject +Output [2]: [i_manufact_id#11, sum(total_sales#18)#45 AS total_sales#46] +Input [2]: [i_manufact_id#11, sum(total_sales#18)#45] + +(183) NativeTakeOrdered +Input [2]: [i_manufact_id#11, total_sales#46] +Arguments: X, [total_sales#46 ASC NULLS FIRST] + +(184) Scan parquet +Output [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_addr_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(185) Filter +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Condition : ((isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_addr_sk#3)) AND isnotnull(ss_item_sk#2)) + +(186) Exchange +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(187) Sort +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(188) Scan parquet +Output [3]: [d_date_sk#5, d_year#6, d_moy#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,1998), EqualTo(d_moy,5), IsNotNull(d_date_sk)] +ReadSchema: struct + +(189) Filter +Input [3]: [d_date_sk#5, d_year#6, d_moy#7] +Condition : ((((isnotnull(d_year#6) AND isnotnull(d_moy#7)) AND (d_year#6 = 1998)) AND (d_moy#7 = 5)) AND isnotnull(d_date_sk#5)) + +(190) Project +Output [1]: [d_date_sk#5] +Input [3]: [d_date_sk#5, d_year#6, d_moy#7] + +(191) Exchange +Input [1]: [d_date_sk#5] +Arguments: hashpartitioning(d_date_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(192) Sort +Input [1]: [d_date_sk#5] +Arguments: [d_date_sk#5 ASC NULLS FIRST], false, 0 + +(193) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#5] +Join type: Inner +Join condition: None + +(194) Project +Output [3]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Input [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4, d_date_sk#5] + +(195) Exchange +Input [3]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Arguments: hashpartitioning(ss_addr_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(196) Sort +Input [3]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Arguments: [ss_addr_sk#3 ASC NULLS FIRST], false, 0 + +(197) Scan parquet +Output [2]: [ca_address_sk#8, ca_gmt_offset#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_gmt_offset), EqualTo(ca_gmt_offset,-5.00), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(198) Filter +Input [2]: [ca_address_sk#8, ca_gmt_offset#9] +Condition : ((isnotnull(ca_gmt_offset#9) AND (ca_gmt_offset#9 = -5.00)) AND isnotnull(ca_address_sk#8)) + +(199) Project +Output [1]: [ca_address_sk#8] +Input [2]: [ca_address_sk#8, ca_gmt_offset#9] + +(200) Exchange +Input [1]: [ca_address_sk#8] +Arguments: hashpartitioning(ca_address_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(201) Sort +Input [1]: [ca_address_sk#8] +Arguments: [ca_address_sk#8 ASC NULLS FIRST], false, 0 + +(202) SortMergeJoin +Left keys [1]: [ss_addr_sk#3] +Right keys [1]: [ca_address_sk#8] +Join type: Inner +Join condition: None + +(203) Project +Output [2]: [ss_item_sk#2, ss_ext_sales_price#4] +Input [4]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4, ca_address_sk#8] + +(204) Exchange +Input [2]: [ss_item_sk#2, ss_ext_sales_price#4] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(205) Sort +Input [2]: [ss_item_sk#2, ss_ext_sales_price#4] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false, 0 + +(206) Scan parquet +Output [2]: [i_item_sk#10, i_manufact_id#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(207) Filter +Input [2]: [i_item_sk#10, i_manufact_id#11] +Condition : isnotnull(i_item_sk#10) + +(208) Exchange +Input [2]: [i_item_sk#10, i_manufact_id#11] +Arguments: hashpartitioning(i_manufact_id#11, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(209) Sort +Input [2]: [i_item_sk#10, i_manufact_id#11] +Arguments: [i_manufact_id#11 ASC NULLS FIRST], false, 0 + +(210) Scan parquet +Output [2]: [i_category#12, i_manufact_id#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_category), EqualTo(i_category,Electronics)] +ReadSchema: struct + +(211) Filter +Input [2]: [i_category#12, i_manufact_id#13] +Condition : (isnotnull(i_category#12) AND (i_category#12 = Electronics)) + +(212) Project +Output [1]: [i_manufact_id#13] +Input [2]: [i_category#12, i_manufact_id#13] + +(213) Exchange +Input [1]: [i_manufact_id#13] +Arguments: hashpartitioning(i_manufact_id#13, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(214) Sort +Input [1]: [i_manufact_id#13] +Arguments: [i_manufact_id#13 ASC NULLS FIRST], false, 0 + +(215) SortMergeJoin +Left keys [1]: [i_manufact_id#11] +Right keys [1]: [i_manufact_id#13] +Join type: LeftSemi +Join condition: None + +(216) Exchange +Input [2]: [i_item_sk#10, i_manufact_id#11] +Arguments: hashpartitioning(i_item_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(217) Sort +Input [2]: [i_item_sk#10, i_manufact_id#11] +Arguments: [i_item_sk#10 ASC NULLS FIRST], false, 0 + +(218) SortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#10] +Join type: Inner +Join condition: None + +(219) Project +Output [2]: [ss_ext_sales_price#4, i_manufact_id#11] +Input [4]: [ss_item_sk#2, ss_ext_sales_price#4, i_item_sk#10, i_manufact_id#11] + +(220) HashAggregate +Input [2]: [ss_ext_sales_price#4, i_manufact_id#11] +Keys [1]: [i_manufact_id#11] +Functions [1]: [partial_sum(UnscaledValue(ss_ext_sales_price#4))] +Aggregate Attributes [1]: [sum#15] +Results [2]: [i_manufact_id#11, sum#47] + +(221) Exchange +Input [2]: [i_manufact_id#11, sum#47] +Arguments: hashpartitioning(i_manufact_id#11, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(222) HashAggregate +Input [2]: [i_manufact_id#11, sum#47] +Keys [1]: [i_manufact_id#11] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#4))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#4))#17] +Results [2]: [i_manufact_id#11, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#4))#17,17,2) AS total_sales#18] + +(223) Scan parquet +Output [4]: [cs_sold_date_sk#19, cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk), IsNotNull(cs_bill_addr_sk), IsNotNull(cs_item_sk)] +ReadSchema: struct + +(224) Filter +Input [4]: [cs_sold_date_sk#19, cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Condition : ((isnotnull(cs_sold_date_sk#19) AND isnotnull(cs_bill_addr_sk#20)) AND isnotnull(cs_item_sk#21)) + +(225) Exchange +Input [4]: [cs_sold_date_sk#19, cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Arguments: hashpartitioning(cs_sold_date_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(226) Sort +Input [4]: [cs_sold_date_sk#19, cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Arguments: [cs_sold_date_sk#19 ASC NULLS FIRST], false, 0 + +(227) Scan parquet +Output [3]: [d_date_sk#23, d_year#48, d_moy#49] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,1998), EqualTo(d_moy,5), IsNotNull(d_date_sk)] +ReadSchema: struct + +(228) Filter +Input [3]: [d_date_sk#23, d_year#48, d_moy#49] +Condition : ((((isnotnull(d_year#48) AND isnotnull(d_moy#49)) AND (d_year#48 = 1998)) AND (d_moy#49 = 5)) AND isnotnull(d_date_sk#23)) + +(229) Project +Output [1]: [d_date_sk#23] +Input [3]: [d_date_sk#23, d_year#48, d_moy#49] + +(230) Exchange +Input [1]: [d_date_sk#23] +Arguments: hashpartitioning(d_date_sk#23, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(231) Sort +Input [1]: [d_date_sk#23] +Arguments: [d_date_sk#23 ASC NULLS FIRST], false, 0 + +(232) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#19] +Right keys [1]: [d_date_sk#23] +Join type: Inner +Join condition: None + +(233) Project +Output [3]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Input [5]: [cs_sold_date_sk#19, cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22, d_date_sk#23] + +(234) Exchange +Input [3]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Arguments: hashpartitioning(cs_bill_addr_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(235) Sort +Input [3]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Arguments: [cs_bill_addr_sk#20 ASC NULLS FIRST], false, 0 + +(236) Scan parquet +Output [2]: [ca_address_sk#24, ca_gmt_offset#50] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_gmt_offset), EqualTo(ca_gmt_offset,-5.00), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(237) Filter +Input [2]: [ca_address_sk#24, ca_gmt_offset#50] +Condition : ((isnotnull(ca_gmt_offset#50) AND (ca_gmt_offset#50 = -5.00)) AND isnotnull(ca_address_sk#24)) + +(238) Project +Output [1]: [ca_address_sk#24] +Input [2]: [ca_address_sk#24, ca_gmt_offset#50] + +(239) Exchange +Input [1]: [ca_address_sk#24] +Arguments: hashpartitioning(ca_address_sk#24, 100), ENSURE_REQUIREMENTS, [plan_id=31] + +(240) Sort +Input [1]: [ca_address_sk#24] +Arguments: [ca_address_sk#24 ASC NULLS FIRST], false, 0 + +(241) SortMergeJoin +Left keys [1]: [cs_bill_addr_sk#20] +Right keys [1]: [ca_address_sk#24] +Join type: Inner +Join condition: None + +(242) Project +Output [2]: [cs_item_sk#21, cs_ext_sales_price#22] +Input [4]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22, ca_address_sk#24] + +(243) Exchange +Input [2]: [cs_item_sk#21, cs_ext_sales_price#22] +Arguments: hashpartitioning(cs_item_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=32] + +(244) Sort +Input [2]: [cs_item_sk#21, cs_ext_sales_price#22] +Arguments: [cs_item_sk#21 ASC NULLS FIRST], false, 0 + +(245) Scan parquet +Output [2]: [i_item_sk#25, i_manufact_id#26] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(246) Filter +Input [2]: [i_item_sk#25, i_manufact_id#26] +Condition : isnotnull(i_item_sk#25) + +(247) Exchange +Input [2]: [i_item_sk#25, i_manufact_id#26] +Arguments: hashpartitioning(i_manufact_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=33] + +(248) Sort +Input [2]: [i_item_sk#25, i_manufact_id#26] +Arguments: [i_manufact_id#26 ASC NULLS FIRST], false, 0 + +(249) Scan parquet +Output [2]: [i_category#51, i_manufact_id#52] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_category), EqualTo(i_category,Electronics)] +ReadSchema: struct + +(250) Filter +Input [2]: [i_category#51, i_manufact_id#52] +Condition : (isnotnull(i_category#51) AND (i_category#51 = Electronics)) + +(251) Project +Output [1]: [i_manufact_id#52] +Input [2]: [i_category#51, i_manufact_id#52] + +(252) Exchange +Input [1]: [i_manufact_id#52] +Arguments: hashpartitioning(i_manufact_id#52, 100), ENSURE_REQUIREMENTS, [plan_id=34] + +(253) Sort +Input [1]: [i_manufact_id#52] +Arguments: [i_manufact_id#52 ASC NULLS FIRST], false, 0 + +(254) SortMergeJoin +Left keys [1]: [i_manufact_id#26] +Right keys [1]: [i_manufact_id#52] +Join type: LeftSemi +Join condition: None + +(255) Exchange +Input [2]: [i_item_sk#25, i_manufact_id#26] +Arguments: hashpartitioning(i_item_sk#25, 100), ENSURE_REQUIREMENTS, [plan_id=35] + +(256) Sort +Input [2]: [i_item_sk#25, i_manufact_id#26] +Arguments: [i_item_sk#25 ASC NULLS FIRST], false, 0 + +(257) SortMergeJoin +Left keys [1]: [cs_item_sk#21] +Right keys [1]: [i_item_sk#25] +Join type: Inner +Join condition: None + +(258) Project +Output [2]: [cs_ext_sales_price#22, i_manufact_id#26] +Input [4]: [cs_item_sk#21, cs_ext_sales_price#22, i_item_sk#25, i_manufact_id#26] + +(259) HashAggregate +Input [2]: [cs_ext_sales_price#22, i_manufact_id#26] +Keys [1]: [i_manufact_id#26] +Functions [1]: [partial_sum(UnscaledValue(cs_ext_sales_price#22))] +Aggregate Attributes [1]: [sum#28] +Results [2]: [i_manufact_id#26, sum#53] + +(260) Exchange +Input [2]: [i_manufact_id#26, sum#53] +Arguments: hashpartitioning(i_manufact_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=36] + +(261) HashAggregate +Input [2]: [i_manufact_id#26, sum#53] +Keys [1]: [i_manufact_id#26] +Functions [1]: [sum(UnscaledValue(cs_ext_sales_price#22))] +Aggregate Attributes [1]: [sum(UnscaledValue(cs_ext_sales_price#22))#29] +Results [2]: [i_manufact_id#26, MakeDecimal(sum(UnscaledValue(cs_ext_sales_price#22))#29,17,2) AS total_sales#30] + +(262) Scan parquet +Output [4]: [ws_sold_date_sk#31, ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_bill_addr_sk), IsNotNull(ws_item_sk)] +ReadSchema: struct + +(263) Filter +Input [4]: [ws_sold_date_sk#31, ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Condition : ((isnotnull(ws_sold_date_sk#31) AND isnotnull(ws_bill_addr_sk#33)) AND isnotnull(ws_item_sk#32)) + +(264) Exchange +Input [4]: [ws_sold_date_sk#31, ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Arguments: hashpartitioning(ws_sold_date_sk#31, 100), ENSURE_REQUIREMENTS, [plan_id=37] + +(265) Sort +Input [4]: [ws_sold_date_sk#31, ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Arguments: [ws_sold_date_sk#31 ASC NULLS FIRST], false, 0 + +(266) Scan parquet +Output [3]: [d_date_sk#35, d_year#54, d_moy#55] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,1998), EqualTo(d_moy,5), IsNotNull(d_date_sk)] +ReadSchema: struct + +(267) Filter +Input [3]: [d_date_sk#35, d_year#54, d_moy#55] +Condition : ((((isnotnull(d_year#54) AND isnotnull(d_moy#55)) AND (d_year#54 = 1998)) AND (d_moy#55 = 5)) AND isnotnull(d_date_sk#35)) + +(268) Project +Output [1]: [d_date_sk#35] +Input [3]: [d_date_sk#35, d_year#54, d_moy#55] + +(269) Exchange +Input [1]: [d_date_sk#35] +Arguments: hashpartitioning(d_date_sk#35, 100), ENSURE_REQUIREMENTS, [plan_id=38] + +(270) Sort +Input [1]: [d_date_sk#35] +Arguments: [d_date_sk#35 ASC NULLS FIRST], false, 0 + +(271) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#31] +Right keys [1]: [d_date_sk#35] +Join type: Inner +Join condition: None + +(272) Project +Output [3]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Input [5]: [ws_sold_date_sk#31, ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34, d_date_sk#35] + +(273) Exchange +Input [3]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Arguments: hashpartitioning(ws_bill_addr_sk#33, 100), ENSURE_REQUIREMENTS, [plan_id=39] + +(274) Sort +Input [3]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Arguments: [ws_bill_addr_sk#33 ASC NULLS FIRST], false, 0 + +(275) Scan parquet +Output [2]: [ca_address_sk#36, ca_gmt_offset#56] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_gmt_offset), EqualTo(ca_gmt_offset,-5.00), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(276) Filter +Input [2]: [ca_address_sk#36, ca_gmt_offset#56] +Condition : ((isnotnull(ca_gmt_offset#56) AND (ca_gmt_offset#56 = -5.00)) AND isnotnull(ca_address_sk#36)) + +(277) Project +Output [1]: [ca_address_sk#36] +Input [2]: [ca_address_sk#36, ca_gmt_offset#56] + +(278) Exchange +Input [1]: [ca_address_sk#36] +Arguments: hashpartitioning(ca_address_sk#36, 100), ENSURE_REQUIREMENTS, [plan_id=40] + +(279) Sort +Input [1]: [ca_address_sk#36] +Arguments: [ca_address_sk#36 ASC NULLS FIRST], false, 0 + +(280) SortMergeJoin +Left keys [1]: [ws_bill_addr_sk#33] +Right keys [1]: [ca_address_sk#36] +Join type: Inner +Join condition: None + +(281) Project +Output [2]: [ws_item_sk#32, ws_ext_sales_price#34] +Input [4]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34, ca_address_sk#36] + +(282) Exchange +Input [2]: [ws_item_sk#32, ws_ext_sales_price#34] +Arguments: hashpartitioning(ws_item_sk#32, 100), ENSURE_REQUIREMENTS, [plan_id=41] + +(283) Sort +Input [2]: [ws_item_sk#32, ws_ext_sales_price#34] +Arguments: [ws_item_sk#32 ASC NULLS FIRST], false, 0 + +(284) Scan parquet +Output [2]: [i_item_sk#37, i_manufact_id#38] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(285) Filter +Input [2]: [i_item_sk#37, i_manufact_id#38] +Condition : isnotnull(i_item_sk#37) + +(286) Exchange +Input [2]: [i_item_sk#37, i_manufact_id#38] +Arguments: hashpartitioning(i_manufact_id#38, 100), ENSURE_REQUIREMENTS, [plan_id=42] + +(287) Sort +Input [2]: [i_item_sk#37, i_manufact_id#38] +Arguments: [i_manufact_id#38 ASC NULLS FIRST], false, 0 + +(288) Scan parquet +Output [2]: [i_category#57, i_manufact_id#58] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_category), EqualTo(i_category,Electronics)] +ReadSchema: struct + +(289) Filter +Input [2]: [i_category#57, i_manufact_id#58] +Condition : (isnotnull(i_category#57) AND (i_category#57 = Electronics)) + +(290) Project +Output [1]: [i_manufact_id#58] +Input [2]: [i_category#57, i_manufact_id#58] + +(291) Exchange +Input [1]: [i_manufact_id#58] +Arguments: hashpartitioning(i_manufact_id#58, 100), ENSURE_REQUIREMENTS, [plan_id=43] + +(292) Sort +Input [1]: [i_manufact_id#58] +Arguments: [i_manufact_id#58 ASC NULLS FIRST], false, 0 + +(293) SortMergeJoin +Left keys [1]: [i_manufact_id#38] +Right keys [1]: [i_manufact_id#58] +Join type: LeftSemi +Join condition: None + +(294) Exchange +Input [2]: [i_item_sk#37, i_manufact_id#38] +Arguments: hashpartitioning(i_item_sk#37, 100), ENSURE_REQUIREMENTS, [plan_id=44] + +(295) Sort +Input [2]: [i_item_sk#37, i_manufact_id#38] +Arguments: [i_item_sk#37 ASC NULLS FIRST], false, 0 + +(296) SortMergeJoin +Left keys [1]: [ws_item_sk#32] +Right keys [1]: [i_item_sk#37] +Join type: Inner +Join condition: None + +(297) Project +Output [2]: [ws_ext_sales_price#34, i_manufact_id#38] +Input [4]: [ws_item_sk#32, ws_ext_sales_price#34, i_item_sk#37, i_manufact_id#38] + +(298) HashAggregate +Input [2]: [ws_ext_sales_price#34, i_manufact_id#38] +Keys [1]: [i_manufact_id#38] +Functions [1]: [partial_sum(UnscaledValue(ws_ext_sales_price#34))] +Aggregate Attributes [1]: [sum#40] +Results [2]: [i_manufact_id#38, sum#59] + +(299) Exchange +Input [2]: [i_manufact_id#38, sum#59] +Arguments: hashpartitioning(i_manufact_id#38, 100), ENSURE_REQUIREMENTS, [plan_id=45] + +(300) HashAggregate +Input [2]: [i_manufact_id#38, sum#59] +Keys [1]: [i_manufact_id#38] +Functions [1]: [sum(UnscaledValue(ws_ext_sales_price#34))] +Aggregate Attributes [1]: [sum(UnscaledValue(ws_ext_sales_price#34))#41] +Results [2]: [i_manufact_id#38, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#34))#41,17,2) AS total_sales#42] + +(301) Union + +(302) HashAggregate +Input [2]: [i_manufact_id#11, total_sales#18] +Keys [1]: [i_manufact_id#11] +Functions [1]: [partial_sum(total_sales#18)] +Aggregate Attributes [2]: [sum#43, isEmpty#44] +Results [3]: [i_manufact_id#11, sum#60, isEmpty#61] + +(303) Exchange +Input [3]: [i_manufact_id#11, sum#60, isEmpty#61] +Arguments: hashpartitioning(i_manufact_id#11, 100), ENSURE_REQUIREMENTS, [plan_id=46] + +(304) HashAggregate +Input [3]: [i_manufact_id#11, sum#60, isEmpty#61] +Keys [1]: [i_manufact_id#11] +Functions [1]: [sum(total_sales#18)] +Aggregate Attributes [1]: [sum(total_sales#18)#45] +Results [2]: [i_manufact_id#11, sum(total_sales#18)#45 AS total_sales#46] + +(305) TakeOrderedAndProject +Input [2]: [i_manufact_id#11, total_sales#46] +Arguments: X, [total_sales#46 ASC NULLS FIRST], [i_manufact_id#11, total_sales#46] + +(306) AdaptiveSparkPlan +Output [2]: [i_manufact_id#11, total_sales#46] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q34.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q34.txt new file mode 100644 index 000000000..865bc2c79 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q34.txt @@ -0,0 +1,668 @@ +== Physical Plan == +AdaptiveSparkPlan (123) ++- == Final Plan == + NativeSort (79) + +- InputAdapter (78) + +- AQEShuffleRead (77) + +- ShuffleQueryStage (76), Statistics(X) + +- NativeShuffleExchange (75) + +- NativeProject (74) + +- NativeSortMergeJoin Inner (73) + :- NativeSort (64) + : +- InputAdapter (63) + : +- AQEShuffleRead (62) + : +- ShuffleQueryStage (61), Statistics(X) + : +- NativeShuffleExchange (60) + : +- NativeFilter (59) + : +- NativeProject (58) + : +- NativeHashAggregate (57) + : +- InputAdapter (56) + : +- AQEShuffleRead (55) + : +- ShuffleQueryStage (54), Statistics(X) + : +- NativeShuffleExchange (53) + : +- NativeHashAggregate (52) + : +- NativeProject (51) + : +- NativeSortMergeJoin Inner (50) + : :- NativeSort (40) + : : +- InputAdapter (39) + : : +- AQEShuffleRead (38) + : : +- ShuffleQueryStage (37), Statistics(X) + : : +- NativeShuffleExchange (36) + : : +- NativeProject (35) + : : +- NativeSortMergeJoin Inner (34) + : : :- 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 (33) + : : +- InputAdapter (32) + : : +- AQEShuffleRead (31) + : : +- ShuffleQueryStage (30), Statistics(X) + : : +- NativeShuffleExchange (29) + : : +- NativeProject (28) + : : +- NativeFilter (27) + : : +- InputAdapter (26) + : : +- NativeParquetScan (25) + : +- NativeSort (49) + : +- InputAdapter (48) + : +- AQEShuffleRead (47) + : +- ShuffleQueryStage (46), Statistics(X) + : +- NativeShuffleExchange (45) + : +- NativeProject (44) + : +- NativeFilter (43) + : +- InputAdapter (42) + : +- NativeParquetScan (41) + +- NativeSort (72) + +- InputAdapter (71) + +- AQEShuffleRead (70) + +- ShuffleQueryStage (69), Statistics(X) + +- NativeShuffleExchange (68) + +- NativeFilter (67) + +- InputAdapter (66) + +- NativeParquetScan (65) ++- == Initial Plan == + Sort (122) + +- Exchange (121) + +- Project (120) + +- SortMergeJoin Inner (119) + :- Sort (114) + : +- Exchange (113) + : +- Filter (112) + : +- HashAggregate (111) + : +- Exchange (110) + : +- HashAggregate (109) + : +- Project (108) + : +- SortMergeJoin Inner (107) + : :- Sort (101) + : : +- Exchange (100) + : : +- Project (99) + : : +- SortMergeJoin Inner (98) + : : :- Sort (92) + : : : +- Exchange (91) + : : : +- Project (90) + : : : +- SortMergeJoin Inner (89) + : : : :- Sort (83) + : : : : +- Exchange (82) + : : : : +- Filter (81) + : : : : +- Scan parquet (80) + : : : +- Sort (88) + : : : +- Exchange (87) + : : : +- Project (86) + : : : +- Filter (85) + : : : +- Scan parquet (84) + : : +- Sort (97) + : : +- Exchange (96) + : : +- Project (95) + : : +- Filter (94) + : : +- Scan parquet (93) + : +- Sort (106) + : +- Exchange (105) + : +- Project (104) + : +- Filter (103) + : +- Scan parquet (102) + +- Sort (118) + +- Exchange (117) + +- Filter (116) + +- Scan parquet (115) + + +(80) Scan parquet +Output [5]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk), IsNotNull(ss_hdemo_sk), IsNotNull(ss_customer_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [5]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5] +Arguments: [#1, #2, #3, #4, #5] + +(3) NativeFilter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Condition : (((isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_store_sk#4)) AND isnotnull(ss_hdemo_sk#3)) AND isnotnull(ss_customer_sk#2)) + +(4) NativeShuffleExchange +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: X + +(6) AQEShuffleRead +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: coalesced + +(7) InputAdapter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] + +(8) NativeSort +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(84) Scan parquet +Output [3]: [d_date_sk#6, d_year#7, d_dom#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(And(GreaterThanOrEqual(d_dom,1),LessThanOrEqual(d_dom,3)),And(GreaterThanOrEqual(d_dom,25),LessThanOrEqual(d_dom,28))), In(d_year, [1999,2000,2001]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [3]: [d_date_sk#6, d_year#7, d_dom#8] +Arguments: [#6, #7, #8] + +(11) NativeFilter +Input [3]: [#6#6, #7#7, #8#8] +Condition : (((((d_dom#8 >= 1) AND (d_dom#8 <= 3)) OR ((d_dom#8 >= 25) AND (d_dom#8 <= 28))) AND d_year#7 IN (1999,2000,2001)) AND isnotnull(d_date_sk#6)) + +(12) NativeProject +Output [1]: [d_date_sk#6] +Input [3]: [#6#6, #7#7, #8#8] + +(13) NativeShuffleExchange +Input [1]: [d_date_sk#6] +Arguments: hashpartitioning(d_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [1]: [d_date_sk#6] +Arguments: X + +(15) AQEShuffleRead +Input [1]: [d_date_sk#6] +Arguments: coalesced + +(16) InputAdapter +Input [1]: [d_date_sk#6] + +(17) NativeSort +Input [1]: [d_date_sk#6] +Arguments: [d_date_sk#6 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#6] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [4]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5] +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, d_date_sk#6] + +(20) NativeShuffleExchange +Input [4]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5] +Arguments: hashpartitioning(ss_store_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [4]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5] +Arguments: X + +(22) AQEShuffleRead +Input [4]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5] +Arguments: coalesced + +(23) InputAdapter +Input [4]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5] + +(24) NativeSort +Input [4]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5] +Arguments: [ss_store_sk#4 ASC NULLS FIRST], false + +(93) Scan parquet +Output [2]: [s_store_sk#9, s_county#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_county), EqualTo(s_county,Williamson County), IsNotNull(s_store_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [2]: [s_store_sk#9, s_county#10] +Arguments: [#9, #10] + +(27) NativeFilter +Input [2]: [#9#9, #10#10] +Condition : ((isnotnull(s_county#10) AND (s_county#10 = Williamson County)) AND isnotnull(s_store_sk#9)) + +(28) NativeProject +Output [1]: [s_store_sk#9] +Input [2]: [#9#9, #10#10] + +(29) NativeShuffleExchange +Input [1]: [s_store_sk#9] +Arguments: hashpartitioning(s_store_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(30) ShuffleQueryStage +Output [1]: [s_store_sk#9] +Arguments: X + +(31) AQEShuffleRead +Input [1]: [s_store_sk#9] +Arguments: coalesced + +(32) InputAdapter +Input [1]: [s_store_sk#9] + +(33) NativeSort +Input [1]: [s_store_sk#9] +Arguments: [s_store_sk#9 ASC NULLS FIRST], false + +(34) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#4] +Right keys [1]: [s_store_sk#9] +Join type: Inner +Join condition: None + +(35) NativeProject +Output [3]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_ticket_number#5] +Input [5]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5, s_store_sk#9] + +(36) NativeShuffleExchange +Input [3]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_ticket_number#5] +Arguments: hashpartitioning(ss_hdemo_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [3]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_ticket_number#5] +Arguments: X + +(38) AQEShuffleRead +Input [3]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_ticket_number#5] +Arguments: coalesced + +(39) InputAdapter +Input [3]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_ticket_number#5] + +(40) NativeSort +Input [3]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_ticket_number#5] +Arguments: [ss_hdemo_sk#3 ASC NULLS FIRST], false + +(102) Scan parquet +Output [4]: [hd_demo_sk#11, hd_buy_potential#12, hd_dep_count#13, hd_vehicle_count#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(hd_vehicle_count), Or(EqualTo(hd_buy_potential,>10000),EqualTo(hd_buy_potential,unknown)), GreaterThan(hd_vehicle_count,0), IsNotNull(hd_demo_sk)] +ReadSchema: struct + +(42) InputAdapter +Input [4]: [hd_demo_sk#11, hd_buy_potential#12, hd_dep_count#13, hd_vehicle_count#14] +Arguments: [#11, #12, #13, #14] + +(43) NativeFilter +Input [4]: [#11#11, #12#12, #13#13, #14#14] +Condition : ((((isnotnull(hd_vehicle_count#14) AND ((hd_buy_potential#12 = >10000) OR (hd_buy_potential#12 = unknown))) AND (hd_vehicle_count#14 > 0)) AND CASE WHEN (hd_vehicle_count#14 > 0) THEN ((cast(hd_dep_count#13 as double) / cast(hd_vehicle_count#14 as double)) > 1.2) END) AND isnotnull(hd_demo_sk#11)) + +(44) NativeProject +Output [1]: [hd_demo_sk#11] +Input [4]: [#11#11, #12#12, #13#13, #14#14] + +(45) NativeShuffleExchange +Input [1]: [hd_demo_sk#11] +Arguments: hashpartitioning(hd_demo_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(46) ShuffleQueryStage +Output [1]: [hd_demo_sk#11] +Arguments: X + +(47) AQEShuffleRead +Input [1]: [hd_demo_sk#11] +Arguments: coalesced + +(48) InputAdapter +Input [1]: [hd_demo_sk#11] + +(49) NativeSort +Input [1]: [hd_demo_sk#11] +Arguments: [hd_demo_sk#11 ASC NULLS FIRST], false + +(50) NativeSortMergeJoin +Left keys [1]: [ss_hdemo_sk#3] +Right keys [1]: [hd_demo_sk#11] +Join type: Inner +Join condition: None + +(51) NativeProject +Output [2]: [ss_customer_sk#2, ss_ticket_number#5] +Input [4]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_ticket_number#5, hd_demo_sk#11] + +(52) NativeHashAggregate +Input [2]: [ss_customer_sk#2, ss_ticket_number#5] +Keys [2]: [ss_ticket_number#5, ss_customer_sk#2] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#15] +Results [3]: [ss_ticket_number#5, ss_customer_sk#2, #16#16] + +(53) NativeShuffleExchange +Input [3]: [ss_ticket_number#5, ss_customer_sk#2, #16#16] +Arguments: hashpartitioning(ss_ticket_number#5, ss_customer_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(54) ShuffleQueryStage +Output [3]: [ss_ticket_number#5, ss_customer_sk#2, #16#16] +Arguments: X + +(55) AQEShuffleRead +Input [3]: [ss_ticket_number#5, ss_customer_sk#2, #16#16] +Arguments: coalesced + +(56) InputAdapter +Input [3]: [ss_ticket_number#5, ss_customer_sk#2, #16#16] + +(57) NativeHashAggregate +Input [3]: [ss_ticket_number#5, ss_customer_sk#2, #16#16] +Keys [2]: [ss_ticket_number#5, ss_customer_sk#2] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#17] +Results [3]: [ss_ticket_number#5, ss_customer_sk#2, count(1)#17] + +(58) NativeProject +Output [3]: [ss_ticket_number#5, ss_customer_sk#2, count(1)#17 AS cnt#18] +Input [3]: [ss_ticket_number#5, ss_customer_sk#2, count(1)#17] + +(59) NativeFilter +Input [3]: [ss_ticket_number#5, ss_customer_sk#2, cnt#18] +Condition : ((cnt#18 >= 15) AND (cnt#18 <= 20)) + +(60) NativeShuffleExchange +Input [3]: [ss_ticket_number#5, ss_customer_sk#2, cnt#18] +Arguments: hashpartitioning(ss_customer_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(61) ShuffleQueryStage +Output [3]: [ss_ticket_number#5, ss_customer_sk#2, cnt#18] +Arguments: X + +(62) AQEShuffleRead +Input [3]: [ss_ticket_number#5, ss_customer_sk#2, cnt#18] +Arguments: coalesced + +(63) InputAdapter +Input [3]: [ss_ticket_number#5, ss_customer_sk#2, cnt#18] + +(64) NativeSort +Input [3]: [ss_ticket_number#5, ss_customer_sk#2, cnt#18] +Arguments: [ss_customer_sk#2 ASC NULLS FIRST], false + +(115) Scan parquet +Output [5]: [c_customer_sk#19, c_salutation#20, c_first_name#21, c_last_name#22, c_preferred_cust_flag#23] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk)] +ReadSchema: struct + +(66) InputAdapter +Input [5]: [c_customer_sk#19, c_salutation#20, c_first_name#21, c_last_name#22, c_preferred_cust_flag#23] +Arguments: [#19, #20, #21, #22, #23] + +(67) NativeFilter +Input [5]: [#19#19, #20#20, #21#21, #22#22, #23#23] +Condition : isnotnull(c_customer_sk#19) + +(68) NativeShuffleExchange +Input [5]: [#19#19, #20#20, #21#21, #22#22, #23#23] +Arguments: hashpartitioning(c_customer_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(69) ShuffleQueryStage +Output [5]: [#19#19, #20#20, #21#21, #22#22, #23#23] +Arguments: X + +(70) AQEShuffleRead +Input [5]: [#19#19, #20#20, #21#21, #22#22, #23#23] +Arguments: coalesced + +(71) InputAdapter +Input [5]: [#19#19, #20#20, #21#21, #22#22, #23#23] + +(72) NativeSort +Input [5]: [#19#19, #20#20, #21#21, #22#22, #23#23] +Arguments: [c_customer_sk#19 ASC NULLS FIRST], false + +(73) NativeSortMergeJoin +Left keys [1]: [ss_customer_sk#2] +Right keys [1]: [c_customer_sk#19] +Join type: Inner +Join condition: None + +(74) NativeProject +Output [6]: [c_last_name#22, c_first_name#21, c_salutation#20, c_preferred_cust_flag#23, ss_ticket_number#5, cnt#18] +Input [8]: [ss_ticket_number#5, ss_customer_sk#2, cnt#18, #19#19, #20#20, #21#21, #22#22, #23#23] + +(75) NativeShuffleExchange +Input [6]: [c_last_name#22, c_first_name#21, c_salutation#20, c_preferred_cust_flag#23, ss_ticket_number#5, cnt#18] +Arguments: rangepartitioning(c_last_name#22 ASC NULLS FIRST, c_first_name#21 ASC NULLS FIRST, c_salutation#20 ASC NULLS FIRST, c_preferred_cust_flag#23 ASC NULLS FIRST, ss_ticket_number#5 DESC NULLS LAST, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(76) ShuffleQueryStage +Output [6]: [c_last_name#22, c_first_name#21, c_salutation#20, c_preferred_cust_flag#23, ss_ticket_number#5, cnt#18] +Arguments: X + +(77) AQEShuffleRead +Input [6]: [c_last_name#22, c_first_name#21, c_salutation#20, c_preferred_cust_flag#23, ss_ticket_number#5, cnt#18] +Arguments: coalesced + +(78) InputAdapter +Input [6]: [c_last_name#22, c_first_name#21, c_salutation#20, c_preferred_cust_flag#23, ss_ticket_number#5, cnt#18] + +(79) NativeSort +Input [6]: [c_last_name#22, c_first_name#21, c_salutation#20, c_preferred_cust_flag#23, ss_ticket_number#5, cnt#18] +Arguments: [c_last_name#22 ASC NULLS FIRST, c_first_name#21 ASC NULLS FIRST, c_salutation#20 ASC NULLS FIRST, c_preferred_cust_flag#23 ASC NULLS FIRST, ss_ticket_number#5 DESC NULLS LAST], true + +(80) Scan parquet +Output [5]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk), IsNotNull(ss_hdemo_sk), IsNotNull(ss_customer_sk)] +ReadSchema: struct + +(81) Filter +Input [5]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5] +Condition : (((isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_store_sk#4)) AND isnotnull(ss_hdemo_sk#3)) AND isnotnull(ss_customer_sk#2)) + +(82) Exchange +Input [5]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(83) Sort +Input [5]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(84) Scan parquet +Output [3]: [d_date_sk#6, d_year#7, d_dom#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(And(GreaterThanOrEqual(d_dom,1),LessThanOrEqual(d_dom,3)),And(GreaterThanOrEqual(d_dom,25),LessThanOrEqual(d_dom,28))), In(d_year, [1999,2000,2001]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(85) Filter +Input [3]: [d_date_sk#6, d_year#7, d_dom#8] +Condition : (((((d_dom#8 >= 1) AND (d_dom#8 <= 3)) OR ((d_dom#8 >= 25) AND (d_dom#8 <= 28))) AND d_year#7 IN (1999,2000,2001)) AND isnotnull(d_date_sk#6)) + +(86) Project +Output [1]: [d_date_sk#6] +Input [3]: [d_date_sk#6, d_year#7, d_dom#8] + +(87) Exchange +Input [1]: [d_date_sk#6] +Arguments: hashpartitioning(d_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(88) Sort +Input [1]: [d_date_sk#6] +Arguments: [d_date_sk#6 ASC NULLS FIRST], false, 0 + +(89) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#6] +Join type: Inner +Join condition: None + +(90) Project +Output [4]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5] +Input [6]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5, d_date_sk#6] + +(91) Exchange +Input [4]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5] +Arguments: hashpartitioning(ss_store_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(92) Sort +Input [4]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5] +Arguments: [ss_store_sk#4 ASC NULLS FIRST], false, 0 + +(93) Scan parquet +Output [2]: [s_store_sk#9, s_county#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_county), EqualTo(s_county,Williamson County), IsNotNull(s_store_sk)] +ReadSchema: struct + +(94) Filter +Input [2]: [s_store_sk#9, s_county#10] +Condition : ((isnotnull(s_county#10) AND (s_county#10 = Williamson County)) AND isnotnull(s_store_sk#9)) + +(95) Project +Output [1]: [s_store_sk#9] +Input [2]: [s_store_sk#9, s_county#10] + +(96) Exchange +Input [1]: [s_store_sk#9] +Arguments: hashpartitioning(s_store_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(97) Sort +Input [1]: [s_store_sk#9] +Arguments: [s_store_sk#9 ASC NULLS FIRST], false, 0 + +(98) SortMergeJoin +Left keys [1]: [ss_store_sk#4] +Right keys [1]: [s_store_sk#9] +Join type: Inner +Join condition: None + +(99) Project +Output [3]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_ticket_number#5] +Input [5]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5, s_store_sk#9] + +(100) Exchange +Input [3]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_ticket_number#5] +Arguments: hashpartitioning(ss_hdemo_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(101) Sort +Input [3]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_ticket_number#5] +Arguments: [ss_hdemo_sk#3 ASC NULLS FIRST], false, 0 + +(102) Scan parquet +Output [4]: [hd_demo_sk#11, hd_buy_potential#12, hd_dep_count#13, hd_vehicle_count#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(hd_vehicle_count), Or(EqualTo(hd_buy_potential,>10000),EqualTo(hd_buy_potential,unknown)), GreaterThan(hd_vehicle_count,0), IsNotNull(hd_demo_sk)] +ReadSchema: struct + +(103) Filter +Input [4]: [hd_demo_sk#11, hd_buy_potential#12, hd_dep_count#13, hd_vehicle_count#14] +Condition : ((((isnotnull(hd_vehicle_count#14) AND ((hd_buy_potential#12 = >10000) OR (hd_buy_potential#12 = unknown))) AND (hd_vehicle_count#14 > 0)) AND CASE WHEN (hd_vehicle_count#14 > 0) THEN ((cast(hd_dep_count#13 as double) / cast(hd_vehicle_count#14 as double)) > 1.2) END) AND isnotnull(hd_demo_sk#11)) + +(104) Project +Output [1]: [hd_demo_sk#11] +Input [4]: [hd_demo_sk#11, hd_buy_potential#12, hd_dep_count#13, hd_vehicle_count#14] + +(105) Exchange +Input [1]: [hd_demo_sk#11] +Arguments: hashpartitioning(hd_demo_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(106) Sort +Input [1]: [hd_demo_sk#11] +Arguments: [hd_demo_sk#11 ASC NULLS FIRST], false, 0 + +(107) SortMergeJoin +Left keys [1]: [ss_hdemo_sk#3] +Right keys [1]: [hd_demo_sk#11] +Join type: Inner +Join condition: None + +(108) Project +Output [2]: [ss_customer_sk#2, ss_ticket_number#5] +Input [4]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_ticket_number#5, hd_demo_sk#11] + +(109) HashAggregate +Input [2]: [ss_customer_sk#2, ss_ticket_number#5] +Keys [2]: [ss_ticket_number#5, ss_customer_sk#2] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#15] +Results [3]: [ss_ticket_number#5, ss_customer_sk#2, count#24] + +(110) Exchange +Input [3]: [ss_ticket_number#5, ss_customer_sk#2, count#24] +Arguments: hashpartitioning(ss_ticket_number#5, ss_customer_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(111) HashAggregate +Input [3]: [ss_ticket_number#5, ss_customer_sk#2, count#24] +Keys [2]: [ss_ticket_number#5, ss_customer_sk#2] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#17] +Results [3]: [ss_ticket_number#5, ss_customer_sk#2, count(1)#17 AS cnt#18] + +(112) Filter +Input [3]: [ss_ticket_number#5, ss_customer_sk#2, cnt#18] +Condition : ((cnt#18 >= 15) AND (cnt#18 <= 20)) + +(113) Exchange +Input [3]: [ss_ticket_number#5, ss_customer_sk#2, cnt#18] +Arguments: hashpartitioning(ss_customer_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(114) Sort +Input [3]: [ss_ticket_number#5, ss_customer_sk#2, cnt#18] +Arguments: [ss_customer_sk#2 ASC NULLS FIRST], false, 0 + +(115) Scan parquet +Output [5]: [c_customer_sk#19, c_salutation#20, c_first_name#21, c_last_name#22, c_preferred_cust_flag#23] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk)] +ReadSchema: struct + +(116) Filter +Input [5]: [c_customer_sk#19, c_salutation#20, c_first_name#21, c_last_name#22, c_preferred_cust_flag#23] +Condition : isnotnull(c_customer_sk#19) + +(117) Exchange +Input [5]: [c_customer_sk#19, c_salutation#20, c_first_name#21, c_last_name#22, c_preferred_cust_flag#23] +Arguments: hashpartitioning(c_customer_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(118) Sort +Input [5]: [c_customer_sk#19, c_salutation#20, c_first_name#21, c_last_name#22, c_preferred_cust_flag#23] +Arguments: [c_customer_sk#19 ASC NULLS FIRST], false, 0 + +(119) SortMergeJoin +Left keys [1]: [ss_customer_sk#2] +Right keys [1]: [c_customer_sk#19] +Join type: Inner +Join condition: None + +(120) Project +Output [6]: [c_last_name#22, c_first_name#21, c_salutation#20, c_preferred_cust_flag#23, ss_ticket_number#5, cnt#18] +Input [8]: [ss_ticket_number#5, ss_customer_sk#2, cnt#18, c_customer_sk#19, c_salutation#20, c_first_name#21, c_last_name#22, c_preferred_cust_flag#23] + +(121) Exchange +Input [6]: [c_last_name#22, c_first_name#21, c_salutation#20, c_preferred_cust_flag#23, ss_ticket_number#5, cnt#18] +Arguments: rangepartitioning(c_last_name#22 ASC NULLS FIRST, c_first_name#21 ASC NULLS FIRST, c_salutation#20 ASC NULLS FIRST, c_preferred_cust_flag#23 ASC NULLS FIRST, ss_ticket_number#5 DESC NULLS LAST, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(122) Sort +Input [6]: [c_last_name#22, c_first_name#21, c_salutation#20, c_preferred_cust_flag#23, ss_ticket_number#5, cnt#18] +Arguments: [c_last_name#22 ASC NULLS FIRST, c_first_name#21 ASC NULLS FIRST, c_salutation#20 ASC NULLS FIRST, c_preferred_cust_flag#23 ASC NULLS FIRST, ss_ticket_number#5 DESC NULLS LAST], true, 0 + +(123) AdaptiveSparkPlan +Output [6]: [c_last_name#22, c_first_name#21, c_salutation#20, c_preferred_cust_flag#23, ss_ticket_number#5, cnt#18] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q35.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q35.txt new file mode 100644 index 000000000..cbe65d257 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q35.txt @@ -0,0 +1,1015 @@ +== Physical Plan == +AdaptiveSparkPlan (187) ++- == Final Plan == + NativeProject (118) + +- NativeTakeOrdered (117) + +- NativeProject (116) + +- NativeHashAggregate (115) + +- InputAdapter (114) + +- AQEShuffleRead (113) + +- ShuffleQueryStage (112), Statistics(X) + +- NativeShuffleExchange (111) + +- NativeHashAggregate (110) + +- NativeProject (109) + +- NativeSortMergeJoin Inner (108) + :- NativeSort (99) + : +- InputAdapter (98) + : +- AQEShuffleRead (97) + : +- ShuffleQueryStage (96), Statistics(X) + : +- NativeShuffleExchange (95) + : +- NativeProject (94) + : +- NativeSortMergeJoin Inner (93) + : :- NativeSort (84) + : : +- InputAdapter (83) + : : +- AQEShuffleRead (82) + : : +- ShuffleQueryStage (81), Statistics(X) + : : +- NativeShuffleExchange (80) + : : +- NativeProject (79) + : : +- NativeFilter (78) + : : +- NativeSortMergeJoin ExistenceJoin(exists#1) (77) + : : :- NativeSortMergeJoin ExistenceJoin(exists#2) (55) + : : : :- NativeSortMergeJoin LeftSemi (33) + : : : : :- NativeSort (8) + : : : : : +- InputAdapter (7) + : : : : : +- AQEShuffleRead (6) + : : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : : +- NativeShuffleExchange (4) + : : : : : +- NativeFilter (3) + : : : : : +- InputAdapter (2) + : : : : : +- NativeParquetScan (1) + : : : : +- NativeSort (32) + : : : : +- InputAdapter (31) + : : : : +- AQEShuffleRead (30) + : : : : +- ShuffleQueryStage (29), Statistics(X) + : : : : +- NativeShuffleExchange (28) + : : : : +- NativeProject (27) + : : : : +- NativeSortMergeJoin Inner (26) + : : : : :- NativeSort (16) + : : : : : +- InputAdapter (15) + : : : : : +- AQEShuffleRead (14) + : : : : : +- ShuffleQueryStage (13), Statistics(X) + : : : : : +- NativeShuffleExchange (12) + : : : : : +- NativeFilter (11) + : : : : : +- InputAdapter (10) + : : : : : +- NativeParquetScan (9) + : : : : +- NativeSort (25) + : : : : +- InputAdapter (24) + : : : : +- AQEShuffleRead (23) + : : : : +- ShuffleQueryStage (22), Statistics(X) + : : : : +- NativeShuffleExchange (21) + : : : : +- NativeProject (20) + : : : : +- NativeFilter (19) + : : : : +- InputAdapter (18) + : : : : +- NativeParquetScan (17) + : : : +- NativeSort (54) + : : : +- InputAdapter (53) + : : : +- AQEShuffleRead (52) + : : : +- ShuffleQueryStage (51), Statistics(X) + : : : +- NativeShuffleExchange (50) + : : : +- NativeProject (49) + : : : +- NativeSortMergeJoin Inner (48) + : : : :- NativeSort (41) + : : : : +- InputAdapter (40) + : : : : +- AQEShuffleRead (39) + : : : : +- ShuffleQueryStage (38), Statistics(X) + : : : : +- NativeShuffleExchange (37) + : : : : +- NativeFilter (36) + : : : : +- InputAdapter (35) + : : : : +- NativeParquetScan (34) + : : : +- NativeSort (47) + : : : +- InputAdapter (46) + : : : +- InputAdapter (45) + : : : +- AQEShuffleRead (44) + : : : +- ShuffleQueryStage (43), Statistics(X) + : : : +- ReusedExchange (42) + : : +- NativeSort (76) + : : +- InputAdapter (75) + : : +- AQEShuffleRead (74) + : : +- ShuffleQueryStage (73), Statistics(X) + : : +- NativeShuffleExchange (72) + : : +- NativeProject (71) + : : +- NativeSortMergeJoin Inner (70) + : : :- NativeSort (63) + : : : +- InputAdapter (62) + : : : +- AQEShuffleRead (61) + : : : +- ShuffleQueryStage (60), Statistics(X) + : : : +- NativeShuffleExchange (59) + : : : +- NativeFilter (58) + : : : +- InputAdapter (57) + : : : +- NativeParquetScan (56) + : : +- NativeSort (69) + : : +- InputAdapter (68) + : : +- InputAdapter (67) + : : +- AQEShuffleRead (66) + : : +- ShuffleQueryStage (65), Statistics(X) + : : +- ReusedExchange (64) + : +- NativeSort (92) + : +- InputAdapter (91) + : +- AQEShuffleRead (90) + : +- ShuffleQueryStage (89), Statistics(X) + : +- NativeShuffleExchange (88) + : +- NativeFilter (87) + : +- InputAdapter (86) + : +- NativeParquetScan (85) + +- NativeSort (107) + +- InputAdapter (106) + +- AQEShuffleRead (105) + +- ShuffleQueryStage (104), Statistics(X) + +- NativeShuffleExchange (103) + +- NativeFilter (102) + +- InputAdapter (101) + +- NativeParquetScan (100) ++- == Initial Plan == + TakeOrderedAndProject (186) + +- HashAggregate (185) + +- Exchange (184) + +- HashAggregate (183) + +- Project (182) + +- SortMergeJoin Inner (181) + :- Sort (176) + : +- Exchange (175) + : +- Project (174) + : +- SortMergeJoin Inner (173) + : :- Sort (168) + : : +- Exchange (167) + : : +- Project (166) + : : +- Filter (165) + : : +- SortMergeJoin ExistenceJoin(exists#1) (164) + : : :- SortMergeJoin ExistenceJoin(exists#2) (150) + : : : :- SortMergeJoin LeftSemi (136) + : : : : :- Sort (122) + : : : : : +- Exchange (121) + : : : : : +- Filter (120) + : : : : : +- Scan parquet (119) + : : : : +- Sort (135) + : : : : +- Exchange (134) + : : : : +- Project (133) + : : : : +- SortMergeJoin Inner (132) + : : : : :- Sort (126) + : : : : : +- Exchange (125) + : : : : : +- Filter (124) + : : : : : +- Scan parquet (123) + : : : : +- Sort (131) + : : : : +- Exchange (130) + : : : : +- Project (129) + : : : : +- Filter (128) + : : : : +- Scan parquet (127) + : : : +- 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 (163) + : : +- Exchange (162) + : : +- Project (161) + : : +- SortMergeJoin Inner (160) + : : :- Sort (154) + : : : +- Exchange (153) + : : : +- Filter (152) + : : : +- Scan parquet (151) + : : +- Sort (159) + : : +- Exchange (158) + : : +- Project (157) + : : +- Filter (156) + : : +- Scan parquet (155) + : +- Sort (172) + : +- Exchange (171) + : +- Filter (170) + : +- Scan parquet (169) + +- Sort (180) + +- Exchange (179) + +- Filter (178) + +- Scan parquet (177) + + +(119) Scan parquet +Output [3]: [c_customer_sk#3, c_current_cdemo_sk#4, c_current_addr_sk#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_current_addr_sk), IsNotNull(c_current_cdemo_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [c_customer_sk#3, c_current_cdemo_sk#4, c_current_addr_sk#5] +Arguments: [#3, #4, #5] + +(3) NativeFilter +Input [3]: [#3#3, #4#4, #5#5] +Condition : (isnotnull(c_current_addr_sk#5) AND isnotnull(c_current_cdemo_sk#4)) + +(4) NativeShuffleExchange +Input [3]: [#3#3, #4#4, #5#5] +Arguments: hashpartitioning(c_customer_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [3]: [#3#3, #4#4, #5#5] +Arguments: X + +(6) AQEShuffleRead +Input [3]: [#3#3, #4#4, #5#5] +Arguments: coalesced + +(7) InputAdapter +Input [3]: [#3#3, #4#4, #5#5] + +(8) NativeSort +Input [3]: [#3#3, #4#4, #5#5] +Arguments: [c_customer_sk#3 ASC NULLS FIRST], false + +(123) Scan parquet +Output [2]: [ss_sold_date_sk#6, ss_customer_sk#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [ss_sold_date_sk#6, ss_customer_sk#7] +Arguments: [#6, #7] + +(11) NativeFilter +Input [2]: [#6#6, #7#7] +Condition : isnotnull(ss_sold_date_sk#6) + +(12) NativeShuffleExchange +Input [2]: [#6#6, #7#7] +Arguments: hashpartitioning(ss_sold_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [2]: [#6#6, #7#7] +Arguments: X + +(14) AQEShuffleRead +Input [2]: [#6#6, #7#7] +Arguments: coalesced + +(15) InputAdapter +Input [2]: [#6#6, #7#7] + +(16) NativeSort +Input [2]: [#6#6, #7#7] +Arguments: [ss_sold_date_sk#6 ASC NULLS FIRST], false + +(127) Scan parquet +Output [3]: [d_date_sk#8, d_year#9, d_qoy#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_qoy), EqualTo(d_year,2002), LessThan(d_qoy,4), IsNotNull(d_date_sk)] +ReadSchema: struct + +(18) InputAdapter +Input [3]: [d_date_sk#8, d_year#9, d_qoy#10] +Arguments: [#8, #9, #10] + +(19) NativeFilter +Input [3]: [#8#8, #9#9, #10#10] +Condition : ((((isnotnull(d_year#9) AND isnotnull(d_qoy#10)) AND (d_year#9 = 2002)) AND (d_qoy#10 < 4)) AND isnotnull(d_date_sk#8)) + +(20) NativeProject +Output [1]: [d_date_sk#8] +Input [3]: [#8#8, #9#9, #10#10] + +(21) NativeShuffleExchange +Input [1]: [d_date_sk#8] +Arguments: hashpartitioning(d_date_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(22) ShuffleQueryStage +Output [1]: [d_date_sk#8] +Arguments: X + +(23) AQEShuffleRead +Input [1]: [d_date_sk#8] +Arguments: coalesced + +(24) InputAdapter +Input [1]: [d_date_sk#8] + +(25) NativeSort +Input [1]: [d_date_sk#8] +Arguments: [d_date_sk#8 ASC NULLS FIRST], false + +(26) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#6] +Right keys [1]: [d_date_sk#8] +Join type: Inner +Join condition: None + +(27) NativeProject +Output [1]: [ss_customer_sk#7] +Input [3]: [#6#6, #7#7, d_date_sk#8] + +(28) NativeShuffleExchange +Input [1]: [ss_customer_sk#7] +Arguments: hashpartitioning(ss_customer_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(29) ShuffleQueryStage +Output [1]: [ss_customer_sk#7] +Arguments: X + +(30) AQEShuffleRead +Input [1]: [ss_customer_sk#7] +Arguments: coalesced + +(31) InputAdapter +Input [1]: [ss_customer_sk#7] + +(32) NativeSort +Input [1]: [ss_customer_sk#7] +Arguments: [ss_customer_sk#7 ASC NULLS FIRST], false + +(33) NativeSortMergeJoin +Left keys [1]: [c_customer_sk#3] +Right keys [1]: [ss_customer_sk#7] +Join type: LeftSemi +Join condition: None + +(137) Scan parquet +Output [2]: [ws_sold_date_sk#11, ws_bill_customer_sk#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(35) InputAdapter +Input [2]: [ws_sold_date_sk#11, ws_bill_customer_sk#12] +Arguments: [#11, #12] + +(36) NativeFilter +Input [2]: [#11#11, #12#12] +Condition : isnotnull(ws_sold_date_sk#11) + +(37) NativeShuffleExchange +Input [2]: [#11#11, #12#12] +Arguments: hashpartitioning(ws_sold_date_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(38) ShuffleQueryStage +Output [2]: [#11#11, #12#12] +Arguments: X + +(39) AQEShuffleRead +Input [2]: [#11#11, #12#12] +Arguments: coalesced + +(40) InputAdapter +Input [2]: [#11#11, #12#12] + +(41) NativeSort +Input [2]: [#11#11, #12#12] +Arguments: [ws_sold_date_sk#11 ASC NULLS FIRST], false + +(42) ReusedExchange [Reuses operator id: 21] +Output [1]: [d_date_sk#13] + +(43) ShuffleQueryStage +Output [1]: [d_date_sk#13] +Arguments: X + +(44) AQEShuffleRead +Input [1]: [d_date_sk#13] +Arguments: coalesced + +(45) InputAdapter +Input [1]: [d_date_sk#13] +Arguments: [#13] + +(46) InputAdapter +Input [1]: [#13#13] + +(47) NativeSort +Input [1]: [#13#13] +Arguments: [d_date_sk#13 ASC NULLS FIRST], false + +(48) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#11] +Right keys [1]: [d_date_sk#13] +Join type: Inner +Join condition: None + +(49) NativeProject +Output [1]: [ws_bill_customer_sk#12] +Input [3]: [#11#11, #12#12, #13#13] + +(50) NativeShuffleExchange +Input [1]: [ws_bill_customer_sk#12] +Arguments: hashpartitioning(ws_bill_customer_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(51) ShuffleQueryStage +Output [1]: [ws_bill_customer_sk#12] +Arguments: X + +(52) AQEShuffleRead +Input [1]: [ws_bill_customer_sk#12] +Arguments: coalesced + +(53) InputAdapter +Input [1]: [ws_bill_customer_sk#12] + +(54) NativeSort +Input [1]: [ws_bill_customer_sk#12] +Arguments: [ws_bill_customer_sk#12 ASC NULLS FIRST], false + +(55) NativeSortMergeJoin +Left keys [1]: [c_customer_sk#3] +Right keys [1]: [ws_bill_customer_sk#12] +Join type: ExistenceJoin(exists#2) +Join condition: None + +(151) Scan parquet +Output [2]: [cs_sold_date_sk#14, cs_ship_customer_sk#15] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(57) InputAdapter +Input [2]: [cs_sold_date_sk#14, cs_ship_customer_sk#15] +Arguments: [#14, #15] + +(58) NativeFilter +Input [2]: [#14#14, #15#15] +Condition : isnotnull(cs_sold_date_sk#14) + +(59) NativeShuffleExchange +Input [2]: [#14#14, #15#15] +Arguments: hashpartitioning(cs_sold_date_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(60) ShuffleQueryStage +Output [2]: [#14#14, #15#15] +Arguments: X + +(61) AQEShuffleRead +Input [2]: [#14#14, #15#15] +Arguments: coalesced + +(62) InputAdapter +Input [2]: [#14#14, #15#15] + +(63) NativeSort +Input [2]: [#14#14, #15#15] +Arguments: [cs_sold_date_sk#14 ASC NULLS FIRST], false + +(64) ReusedExchange [Reuses operator id: 21] +Output [1]: [d_date_sk#16] + +(65) ShuffleQueryStage +Output [1]: [d_date_sk#16] +Arguments: X + +(66) AQEShuffleRead +Input [1]: [d_date_sk#16] +Arguments: coalesced + +(67) InputAdapter +Input [1]: [d_date_sk#16] +Arguments: [#16] + +(68) InputAdapter +Input [1]: [#16#16] + +(69) NativeSort +Input [1]: [#16#16] +Arguments: [d_date_sk#16 ASC NULLS FIRST], false + +(70) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#14] +Right keys [1]: [d_date_sk#16] +Join type: Inner +Join condition: None + +(71) NativeProject +Output [1]: [cs_ship_customer_sk#15] +Input [3]: [#14#14, #15#15, #16#16] + +(72) NativeShuffleExchange +Input [1]: [cs_ship_customer_sk#15] +Arguments: hashpartitioning(cs_ship_customer_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(73) ShuffleQueryStage +Output [1]: [cs_ship_customer_sk#15] +Arguments: X + +(74) AQEShuffleRead +Input [1]: [cs_ship_customer_sk#15] +Arguments: coalesced + +(75) InputAdapter +Input [1]: [cs_ship_customer_sk#15] + +(76) NativeSort +Input [1]: [cs_ship_customer_sk#15] +Arguments: [cs_ship_customer_sk#15 ASC NULLS FIRST], false + +(77) NativeSortMergeJoin +Left keys [1]: [c_customer_sk#3] +Right keys [1]: [cs_ship_customer_sk#15] +Join type: ExistenceJoin(exists#1) +Join condition: None + +(78) NativeFilter +Input [5]: [#3#3, #4#4, #5#5, exists#2, exists#1] +Condition : (exists#2 OR exists#1) + +(79) NativeProject +Output [2]: [c_current_cdemo_sk#4, c_current_addr_sk#5] +Input [5]: [#3#3, #4#4, #5#5, exists#2, exists#1] + +(80) NativeShuffleExchange +Input [2]: [c_current_cdemo_sk#4, c_current_addr_sk#5] +Arguments: hashpartitioning(c_current_addr_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(81) ShuffleQueryStage +Output [2]: [c_current_cdemo_sk#4, c_current_addr_sk#5] +Arguments: X + +(82) AQEShuffleRead +Input [2]: [c_current_cdemo_sk#4, c_current_addr_sk#5] +Arguments: coalesced + +(83) InputAdapter +Input [2]: [c_current_cdemo_sk#4, c_current_addr_sk#5] + +(84) NativeSort +Input [2]: [c_current_cdemo_sk#4, c_current_addr_sk#5] +Arguments: [c_current_addr_sk#5 ASC NULLS FIRST], false + +(169) Scan parquet +Output [2]: [ca_address_sk#17, ca_state#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk)] +ReadSchema: struct + +(86) InputAdapter +Input [2]: [ca_address_sk#17, ca_state#18] +Arguments: [#17, #18] + +(87) NativeFilter +Input [2]: [#17#17, #18#18] +Condition : isnotnull(ca_address_sk#17) + +(88) NativeShuffleExchange +Input [2]: [#17#17, #18#18] +Arguments: hashpartitioning(ca_address_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(89) ShuffleQueryStage +Output [2]: [#17#17, #18#18] +Arguments: X + +(90) AQEShuffleRead +Input [2]: [#17#17, #18#18] +Arguments: coalesced + +(91) InputAdapter +Input [2]: [#17#17, #18#18] + +(92) NativeSort +Input [2]: [#17#17, #18#18] +Arguments: [ca_address_sk#17 ASC NULLS FIRST], false + +(93) NativeSortMergeJoin +Left keys [1]: [c_current_addr_sk#5] +Right keys [1]: [ca_address_sk#17] +Join type: Inner +Join condition: None + +(94) NativeProject +Output [2]: [c_current_cdemo_sk#4, ca_state#18] +Input [4]: [c_current_cdemo_sk#4, c_current_addr_sk#5, #17#17, #18#18] + +(95) NativeShuffleExchange +Input [2]: [c_current_cdemo_sk#4, ca_state#18] +Arguments: hashpartitioning(c_current_cdemo_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(96) ShuffleQueryStage +Output [2]: [c_current_cdemo_sk#4, ca_state#18] +Arguments: X + +(97) AQEShuffleRead +Input [2]: [c_current_cdemo_sk#4, ca_state#18] +Arguments: coalesced + +(98) InputAdapter +Input [2]: [c_current_cdemo_sk#4, ca_state#18] + +(99) NativeSort +Input [2]: [c_current_cdemo_sk#4, ca_state#18] +Arguments: [c_current_cdemo_sk#4 ASC NULLS FIRST], false + +(177) Scan parquet +Output [6]: [cd_demo_sk#19, cd_gender#20, cd_marital_status#21, cd_dep_count#22, cd_dep_employed_count#23, cd_dep_college_count#24] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_demo_sk)] +ReadSchema: struct + +(101) InputAdapter +Input [6]: [cd_demo_sk#19, cd_gender#20, cd_marital_status#21, cd_dep_count#22, cd_dep_employed_count#23, cd_dep_college_count#24] +Arguments: [#19, #20, #21, #22, #23, #24] + +(102) NativeFilter +Input [6]: [#19#19, #20#20, #21#21, #22#22, #23#23, #24#24] +Condition : isnotnull(cd_demo_sk#19) + +(103) NativeShuffleExchange +Input [6]: [#19#19, #20#20, #21#21, #22#22, #23#23, #24#24] +Arguments: hashpartitioning(cd_demo_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(104) ShuffleQueryStage +Output [6]: [#19#19, #20#20, #21#21, #22#22, #23#23, #24#24] +Arguments: X + +(105) AQEShuffleRead +Input [6]: [#19#19, #20#20, #21#21, #22#22, #23#23, #24#24] +Arguments: coalesced + +(106) InputAdapter +Input [6]: [#19#19, #20#20, #21#21, #22#22, #23#23, #24#24] + +(107) NativeSort +Input [6]: [#19#19, #20#20, #21#21, #22#22, #23#23, #24#24] +Arguments: [cd_demo_sk#19 ASC NULLS FIRST], false + +(108) NativeSortMergeJoin +Left keys [1]: [c_current_cdemo_sk#4] +Right keys [1]: [cd_demo_sk#19] +Join type: Inner +Join condition: None + +(109) NativeProject +Output [6]: [ca_state#18, cd_gender#20, cd_marital_status#21, cd_dep_count#22, cd_dep_employed_count#23, cd_dep_college_count#24] +Input [8]: [c_current_cdemo_sk#4, ca_state#18, #19#19, #20#20, #21#21, #22#22, #23#23, #24#24] + +(110) NativeHashAggregate +Input [6]: [ca_state#18, cd_gender#20, cd_marital_status#21, cd_dep_count#22, cd_dep_employed_count#23, cd_dep_college_count#24] +Keys [6]: [ca_state#18, cd_gender#20, cd_marital_status#21, cd_dep_count#22, cd_dep_employed_count#23, cd_dep_college_count#24] +Functions [10]: [partial_count(1), partial_min(cd_dep_count#22), partial_max(cd_dep_count#22), partial_avg(cd_dep_count#22), partial_min(cd_dep_employed_count#23), partial_max(cd_dep_employed_count#23), partial_avg(cd_dep_employed_count#23), partial_min(cd_dep_college_count#24), partial_max(cd_dep_college_count#24), partial_avg(cd_dep_college_count#24)] +Aggregate Attributes [13]: [count#25, min#26, max#27, sum#28, count#29, min#30, max#31, sum#32, count#33, min#34, max#35, sum#36, count#37] +Results [7]: [ca_state#18, cd_gender#20, cd_marital_status#21, cd_dep_count#22, cd_dep_employed_count#23, cd_dep_college_count#24, #38#38] + +(111) NativeShuffleExchange +Input [7]: [ca_state#18, cd_gender#20, cd_marital_status#21, cd_dep_count#22, cd_dep_employed_count#23, cd_dep_college_count#24, #38#38] +Arguments: hashpartitioning(ca_state#18, cd_gender#20, cd_marital_status#21, cd_dep_count#22, cd_dep_employed_count#23, cd_dep_college_count#24, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(112) ShuffleQueryStage +Output [7]: [ca_state#18, cd_gender#20, cd_marital_status#21, cd_dep_count#22, cd_dep_employed_count#23, cd_dep_college_count#24, #38#38] +Arguments: X + +(113) AQEShuffleRead +Input [7]: [ca_state#18, cd_gender#20, cd_marital_status#21, cd_dep_count#22, cd_dep_employed_count#23, cd_dep_college_count#24, #38#38] +Arguments: coalesced + +(114) InputAdapter +Input [7]: [ca_state#18, cd_gender#20, cd_marital_status#21, cd_dep_count#22, cd_dep_employed_count#23, cd_dep_college_count#24, #38#38] + +(115) NativeHashAggregate +Input [7]: [ca_state#18, cd_gender#20, cd_marital_status#21, cd_dep_count#22, cd_dep_employed_count#23, cd_dep_college_count#24, #38#38] +Keys [6]: [ca_state#18, cd_gender#20, cd_marital_status#21, cd_dep_count#22, cd_dep_employed_count#23, cd_dep_college_count#24] +Functions [10]: [count(1), min(cd_dep_count#22), max(cd_dep_count#22), avg(cd_dep_count#22), min(cd_dep_employed_count#23), max(cd_dep_employed_count#23), avg(cd_dep_employed_count#23), min(cd_dep_college_count#24), max(cd_dep_college_count#24), avg(cd_dep_college_count#24)] +Aggregate Attributes [10]: [count(1)#39, min(cd_dep_count#22)#40, max(cd_dep_count#22)#41, avg(cd_dep_count#22)#42, min(cd_dep_employed_count#23)#43, max(cd_dep_employed_count#23)#44, avg(cd_dep_employed_count#23)#45, min(cd_dep_college_count#24)#46, max(cd_dep_college_count#24)#47, avg(cd_dep_college_count#24)#48] +Results [16]: [ca_state#18, cd_gender#20, cd_marital_status#21, cd_dep_count#22, cd_dep_employed_count#23, cd_dep_college_count#24, count(1)#39, min(cd_dep_count#22)#40, max(cd_dep_count#22)#41, avg(cd_dep_count#22)#42, min(cd_dep_employed_count#23)#43, max(cd_dep_employed_count#23)#44, avg(cd_dep_employed_count#23)#45, min(cd_dep_college_count#24)#46, max(cd_dep_college_count#24)#47, avg(cd_dep_college_count#24)#48] + +(116) NativeProject +Output [18]: [ca_state#18, cd_gender#20, cd_marital_status#21, count(1)#39 AS cnt1#49, min(cd_dep_count#22)#40 AS min(cd_dep_count)#50, max(cd_dep_count#22)#41 AS max(cd_dep_count)#51, avg(cd_dep_count#22)#42 AS avg(cd_dep_count)#52, cd_dep_employed_count#23, count(1)#39 AS cnt2#53, min(cd_dep_employed_count#23)#43 AS min(cd_dep_employed_count)#54, max(cd_dep_employed_count#23)#44 AS max(cd_dep_employed_count)#55, avg(cd_dep_employed_count#23)#45 AS avg(cd_dep_employed_count)#56, cd_dep_college_count#24, count(1)#39 AS cnt3#57, min(cd_dep_college_count#24)#46 AS min(cd_dep_college_count)#58, max(cd_dep_college_count#24)#47 AS max(cd_dep_college_count)#59, avg(cd_dep_college_count#24)#48 AS avg(cd_dep_college_count)#60, cd_dep_count#22] +Input [16]: [ca_state#18, cd_gender#20, cd_marital_status#21, cd_dep_count#22, cd_dep_employed_count#23, cd_dep_college_count#24, count(1)#39, min(cd_dep_count#22)#40, max(cd_dep_count#22)#41, avg(cd_dep_count#22)#42, min(cd_dep_employed_count#23)#43, max(cd_dep_employed_count#23)#44, avg(cd_dep_employed_count#23)#45, min(cd_dep_college_count#24)#46, max(cd_dep_college_count#24)#47, avg(cd_dep_college_count#24)#48] + +(117) NativeTakeOrdered +Input [18]: [ca_state#18, cd_gender#20, cd_marital_status#21, cnt1#49, min(cd_dep_count)#50, max(cd_dep_count)#51, avg(cd_dep_count)#52, cd_dep_employed_count#23, cnt2#53, min(cd_dep_employed_count)#54, max(cd_dep_employed_count)#55, avg(cd_dep_employed_count)#56, cd_dep_college_count#24, cnt3#57, min(cd_dep_college_count)#58, max(cd_dep_college_count)#59, avg(cd_dep_college_count)#60, cd_dep_count#22] +Arguments: X, [ca_state#18 ASC NULLS FIRST, cd_gender#20 ASC NULLS FIRST, cd_marital_status#21 ASC NULLS FIRST, cd_dep_count#22 ASC NULLS FIRST, cd_dep_employed_count#23 ASC NULLS FIRST, cd_dep_college_count#24 ASC NULLS FIRST] + +(118) NativeProject +Output [17]: [ca_state#18, cd_gender#20, cd_marital_status#21, cnt1#49, min(cd_dep_count)#50, max(cd_dep_count)#51, avg(cd_dep_count)#52, cd_dep_employed_count#23, cnt2#53, min(cd_dep_employed_count)#54, max(cd_dep_employed_count)#55, avg(cd_dep_employed_count)#56, cd_dep_college_count#24, cnt3#57, min(cd_dep_college_count)#58, max(cd_dep_college_count)#59, avg(cd_dep_college_count)#60] +Input [18]: [ca_state#18, cd_gender#20, cd_marital_status#21, cnt1#49, min(cd_dep_count)#50, max(cd_dep_count)#51, avg(cd_dep_count)#52, cd_dep_employed_count#23, cnt2#53, min(cd_dep_employed_count)#54, max(cd_dep_employed_count)#55, avg(cd_dep_employed_count)#56, cd_dep_college_count#24, cnt3#57, min(cd_dep_college_count)#58, max(cd_dep_college_count)#59, avg(cd_dep_college_count)#60, cd_dep_count#22] + +(119) Scan parquet +Output [3]: [c_customer_sk#3, c_current_cdemo_sk#4, c_current_addr_sk#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_current_addr_sk), IsNotNull(c_current_cdemo_sk)] +ReadSchema: struct + +(120) Filter +Input [3]: [c_customer_sk#3, c_current_cdemo_sk#4, c_current_addr_sk#5] +Condition : (isnotnull(c_current_addr_sk#5) AND isnotnull(c_current_cdemo_sk#4)) + +(121) Exchange +Input [3]: [c_customer_sk#3, c_current_cdemo_sk#4, c_current_addr_sk#5] +Arguments: hashpartitioning(c_customer_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(122) Sort +Input [3]: [c_customer_sk#3, c_current_cdemo_sk#4, c_current_addr_sk#5] +Arguments: [c_customer_sk#3 ASC NULLS FIRST], false, 0 + +(123) Scan parquet +Output [2]: [ss_sold_date_sk#6, ss_customer_sk#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(124) Filter +Input [2]: [ss_sold_date_sk#6, ss_customer_sk#7] +Condition : isnotnull(ss_sold_date_sk#6) + +(125) Exchange +Input [2]: [ss_sold_date_sk#6, ss_customer_sk#7] +Arguments: hashpartitioning(ss_sold_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(126) Sort +Input [2]: [ss_sold_date_sk#6, ss_customer_sk#7] +Arguments: [ss_sold_date_sk#6 ASC NULLS FIRST], false, 0 + +(127) Scan parquet +Output [3]: [d_date_sk#8, d_year#9, d_qoy#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_qoy), EqualTo(d_year,2002), LessThan(d_qoy,4), IsNotNull(d_date_sk)] +ReadSchema: struct + +(128) Filter +Input [3]: [d_date_sk#8, d_year#9, d_qoy#10] +Condition : ((((isnotnull(d_year#9) AND isnotnull(d_qoy#10)) AND (d_year#9 = 2002)) AND (d_qoy#10 < 4)) AND isnotnull(d_date_sk#8)) + +(129) Project +Output [1]: [d_date_sk#8] +Input [3]: [d_date_sk#8, d_year#9, d_qoy#10] + +(130) Exchange +Input [1]: [d_date_sk#8] +Arguments: hashpartitioning(d_date_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(131) Sort +Input [1]: [d_date_sk#8] +Arguments: [d_date_sk#8 ASC NULLS FIRST], false, 0 + +(132) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#6] +Right keys [1]: [d_date_sk#8] +Join type: Inner +Join condition: None + +(133) Project +Output [1]: [ss_customer_sk#7] +Input [3]: [ss_sold_date_sk#6, ss_customer_sk#7, d_date_sk#8] + +(134) Exchange +Input [1]: [ss_customer_sk#7] +Arguments: hashpartitioning(ss_customer_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(135) Sort +Input [1]: [ss_customer_sk#7] +Arguments: [ss_customer_sk#7 ASC NULLS FIRST], false, 0 + +(136) SortMergeJoin +Left keys [1]: [c_customer_sk#3] +Right keys [1]: [ss_customer_sk#7] +Join type: LeftSemi +Join condition: None + +(137) Scan parquet +Output [2]: [ws_sold_date_sk#11, ws_bill_customer_sk#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(138) Filter +Input [2]: [ws_sold_date_sk#11, ws_bill_customer_sk#12] +Condition : isnotnull(ws_sold_date_sk#11) + +(139) Exchange +Input [2]: [ws_sold_date_sk#11, ws_bill_customer_sk#12] +Arguments: hashpartitioning(ws_sold_date_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(140) Sort +Input [2]: [ws_sold_date_sk#11, ws_bill_customer_sk#12] +Arguments: [ws_sold_date_sk#11 ASC NULLS FIRST], false, 0 + +(141) Scan parquet +Output [3]: [d_date_sk#13, d_year#61, d_qoy#62] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_qoy), EqualTo(d_year,2002), LessThan(d_qoy,4), IsNotNull(d_date_sk)] +ReadSchema: struct + +(142) Filter +Input [3]: [d_date_sk#13, d_year#61, d_qoy#62] +Condition : ((((isnotnull(d_year#61) AND isnotnull(d_qoy#62)) AND (d_year#61 = 2002)) AND (d_qoy#62 < 4)) AND isnotnull(d_date_sk#13)) + +(143) Project +Output [1]: [d_date_sk#13] +Input [3]: [d_date_sk#13, d_year#61, d_qoy#62] + +(144) Exchange +Input [1]: [d_date_sk#13] +Arguments: hashpartitioning(d_date_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(145) Sort +Input [1]: [d_date_sk#13] +Arguments: [d_date_sk#13 ASC NULLS FIRST], false, 0 + +(146) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#11] +Right keys [1]: [d_date_sk#13] +Join type: Inner +Join condition: None + +(147) Project +Output [1]: [ws_bill_customer_sk#12] +Input [3]: [ws_sold_date_sk#11, ws_bill_customer_sk#12, d_date_sk#13] + +(148) Exchange +Input [1]: [ws_bill_customer_sk#12] +Arguments: hashpartitioning(ws_bill_customer_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(149) Sort +Input [1]: [ws_bill_customer_sk#12] +Arguments: [ws_bill_customer_sk#12 ASC NULLS FIRST], false, 0 + +(150) SortMergeJoin +Left keys [1]: [c_customer_sk#3] +Right keys [1]: [ws_bill_customer_sk#12] +Join type: ExistenceJoin(exists#2) +Join condition: None + +(151) Scan parquet +Output [2]: [cs_sold_date_sk#14, cs_ship_customer_sk#15] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(152) Filter +Input [2]: [cs_sold_date_sk#14, cs_ship_customer_sk#15] +Condition : isnotnull(cs_sold_date_sk#14) + +(153) Exchange +Input [2]: [cs_sold_date_sk#14, cs_ship_customer_sk#15] +Arguments: hashpartitioning(cs_sold_date_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(154) Sort +Input [2]: [cs_sold_date_sk#14, cs_ship_customer_sk#15] +Arguments: [cs_sold_date_sk#14 ASC NULLS FIRST], false, 0 + +(155) Scan parquet +Output [3]: [d_date_sk#16, d_year#63, d_qoy#64] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_qoy), EqualTo(d_year,2002), LessThan(d_qoy,4), IsNotNull(d_date_sk)] +ReadSchema: struct + +(156) Filter +Input [3]: [d_date_sk#16, d_year#63, d_qoy#64] +Condition : ((((isnotnull(d_year#63) AND isnotnull(d_qoy#64)) AND (d_year#63 = 2002)) AND (d_qoy#64 < 4)) AND isnotnull(d_date_sk#16)) + +(157) Project +Output [1]: [d_date_sk#16] +Input [3]: [d_date_sk#16, d_year#63, d_qoy#64] + +(158) Exchange +Input [1]: [d_date_sk#16] +Arguments: hashpartitioning(d_date_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(159) Sort +Input [1]: [d_date_sk#16] +Arguments: [d_date_sk#16 ASC NULLS FIRST], false, 0 + +(160) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#14] +Right keys [1]: [d_date_sk#16] +Join type: Inner +Join condition: None + +(161) Project +Output [1]: [cs_ship_customer_sk#15] +Input [3]: [cs_sold_date_sk#14, cs_ship_customer_sk#15, d_date_sk#16] + +(162) Exchange +Input [1]: [cs_ship_customer_sk#15] +Arguments: hashpartitioning(cs_ship_customer_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(163) Sort +Input [1]: [cs_ship_customer_sk#15] +Arguments: [cs_ship_customer_sk#15 ASC NULLS FIRST], false, 0 + +(164) SortMergeJoin +Left keys [1]: [c_customer_sk#3] +Right keys [1]: [cs_ship_customer_sk#15] +Join type: ExistenceJoin(exists#1) +Join condition: None + +(165) Filter +Input [5]: [c_customer_sk#3, c_current_cdemo_sk#4, c_current_addr_sk#5, exists#2, exists#1] +Condition : (exists#2 OR exists#1) + +(166) Project +Output [2]: [c_current_cdemo_sk#4, c_current_addr_sk#5] +Input [5]: [c_customer_sk#3, c_current_cdemo_sk#4, c_current_addr_sk#5, exists#2, exists#1] + +(167) Exchange +Input [2]: [c_current_cdemo_sk#4, c_current_addr_sk#5] +Arguments: hashpartitioning(c_current_addr_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(168) Sort +Input [2]: [c_current_cdemo_sk#4, c_current_addr_sk#5] +Arguments: [c_current_addr_sk#5 ASC NULLS FIRST], false, 0 + +(169) Scan parquet +Output [2]: [ca_address_sk#17, ca_state#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk)] +ReadSchema: struct + +(170) Filter +Input [2]: [ca_address_sk#17, ca_state#18] +Condition : isnotnull(ca_address_sk#17) + +(171) Exchange +Input [2]: [ca_address_sk#17, ca_state#18] +Arguments: hashpartitioning(ca_address_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(172) Sort +Input [2]: [ca_address_sk#17, ca_state#18] +Arguments: [ca_address_sk#17 ASC NULLS FIRST], false, 0 + +(173) SortMergeJoin +Left keys [1]: [c_current_addr_sk#5] +Right keys [1]: [ca_address_sk#17] +Join type: Inner +Join condition: None + +(174) Project +Output [2]: [c_current_cdemo_sk#4, ca_state#18] +Input [4]: [c_current_cdemo_sk#4, c_current_addr_sk#5, ca_address_sk#17, ca_state#18] + +(175) Exchange +Input [2]: [c_current_cdemo_sk#4, ca_state#18] +Arguments: hashpartitioning(c_current_cdemo_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(176) Sort +Input [2]: [c_current_cdemo_sk#4, ca_state#18] +Arguments: [c_current_cdemo_sk#4 ASC NULLS FIRST], false, 0 + +(177) Scan parquet +Output [6]: [cd_demo_sk#19, cd_gender#20, cd_marital_status#21, cd_dep_count#22, cd_dep_employed_count#23, cd_dep_college_count#24] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_demo_sk)] +ReadSchema: struct + +(178) Filter +Input [6]: [cd_demo_sk#19, cd_gender#20, cd_marital_status#21, cd_dep_count#22, cd_dep_employed_count#23, cd_dep_college_count#24] +Condition : isnotnull(cd_demo_sk#19) + +(179) Exchange +Input [6]: [cd_demo_sk#19, cd_gender#20, cd_marital_status#21, cd_dep_count#22, cd_dep_employed_count#23, cd_dep_college_count#24] +Arguments: hashpartitioning(cd_demo_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(180) Sort +Input [6]: [cd_demo_sk#19, cd_gender#20, cd_marital_status#21, cd_dep_count#22, cd_dep_employed_count#23, cd_dep_college_count#24] +Arguments: [cd_demo_sk#19 ASC NULLS FIRST], false, 0 + +(181) SortMergeJoin +Left keys [1]: [c_current_cdemo_sk#4] +Right keys [1]: [cd_demo_sk#19] +Join type: Inner +Join condition: None + +(182) Project +Output [6]: [ca_state#18, cd_gender#20, cd_marital_status#21, cd_dep_count#22, cd_dep_employed_count#23, cd_dep_college_count#24] +Input [8]: [c_current_cdemo_sk#4, ca_state#18, cd_demo_sk#19, cd_gender#20, cd_marital_status#21, cd_dep_count#22, cd_dep_employed_count#23, cd_dep_college_count#24] + +(183) HashAggregate +Input [6]: [ca_state#18, cd_gender#20, cd_marital_status#21, cd_dep_count#22, cd_dep_employed_count#23, cd_dep_college_count#24] +Keys [6]: [ca_state#18, cd_gender#20, cd_marital_status#21, cd_dep_count#22, cd_dep_employed_count#23, cd_dep_college_count#24] +Functions [10]: [partial_count(1), partial_min(cd_dep_count#22), partial_max(cd_dep_count#22), partial_avg(cd_dep_count#22), partial_min(cd_dep_employed_count#23), partial_max(cd_dep_employed_count#23), partial_avg(cd_dep_employed_count#23), partial_min(cd_dep_college_count#24), partial_max(cd_dep_college_count#24), partial_avg(cd_dep_college_count#24)] +Aggregate Attributes [13]: [count#25, min#26, max#27, sum#28, count#29, min#30, max#31, sum#32, count#33, min#34, max#35, sum#36, count#37] +Results [19]: [ca_state#18, cd_gender#20, cd_marital_status#21, cd_dep_count#22, cd_dep_employed_count#23, cd_dep_college_count#24, count#65, min#66, max#67, sum#68, count#69, min#70, max#71, sum#72, count#73, min#74, max#75, sum#76, count#77] + +(184) Exchange +Input [19]: [ca_state#18, cd_gender#20, cd_marital_status#21, cd_dep_count#22, cd_dep_employed_count#23, cd_dep_college_count#24, count#65, min#66, max#67, sum#68, count#69, min#70, max#71, sum#72, count#73, min#74, max#75, sum#76, count#77] +Arguments: hashpartitioning(ca_state#18, cd_gender#20, cd_marital_status#21, cd_dep_count#22, cd_dep_employed_count#23, cd_dep_college_count#24, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(185) HashAggregate +Input [19]: [ca_state#18, cd_gender#20, cd_marital_status#21, cd_dep_count#22, cd_dep_employed_count#23, cd_dep_college_count#24, count#65, min#66, max#67, sum#68, count#69, min#70, max#71, sum#72, count#73, min#74, max#75, sum#76, count#77] +Keys [6]: [ca_state#18, cd_gender#20, cd_marital_status#21, cd_dep_count#22, cd_dep_employed_count#23, cd_dep_college_count#24] +Functions [10]: [count(1), min(cd_dep_count#22), max(cd_dep_count#22), avg(cd_dep_count#22), min(cd_dep_employed_count#23), max(cd_dep_employed_count#23), avg(cd_dep_employed_count#23), min(cd_dep_college_count#24), max(cd_dep_college_count#24), avg(cd_dep_college_count#24)] +Aggregate Attributes [10]: [count(1)#39, min(cd_dep_count#22)#40, max(cd_dep_count#22)#41, avg(cd_dep_count#22)#42, min(cd_dep_employed_count#23)#43, max(cd_dep_employed_count#23)#44, avg(cd_dep_employed_count#23)#45, min(cd_dep_college_count#24)#46, max(cd_dep_college_count#24)#47, avg(cd_dep_college_count#24)#48] +Results [18]: [ca_state#18, cd_gender#20, cd_marital_status#21, count(1)#39 AS cnt1#49, min(cd_dep_count#22)#40 AS min(cd_dep_count)#50, max(cd_dep_count#22)#41 AS max(cd_dep_count)#51, avg(cd_dep_count#22)#42 AS avg(cd_dep_count)#52, cd_dep_employed_count#23, count(1)#39 AS cnt2#53, min(cd_dep_employed_count#23)#43 AS min(cd_dep_employed_count)#54, max(cd_dep_employed_count#23)#44 AS max(cd_dep_employed_count)#55, avg(cd_dep_employed_count#23)#45 AS avg(cd_dep_employed_count)#56, cd_dep_college_count#24, count(1)#39 AS cnt3#57, min(cd_dep_college_count#24)#46 AS min(cd_dep_college_count)#58, max(cd_dep_college_count#24)#47 AS max(cd_dep_college_count)#59, avg(cd_dep_college_count#24)#48 AS avg(cd_dep_college_count)#60, cd_dep_count#22] + +(186) TakeOrderedAndProject +Input [18]: [ca_state#18, cd_gender#20, cd_marital_status#21, cnt1#49, min(cd_dep_count)#50, max(cd_dep_count)#51, avg(cd_dep_count)#52, cd_dep_employed_count#23, cnt2#53, min(cd_dep_employed_count)#54, max(cd_dep_employed_count)#55, avg(cd_dep_employed_count)#56, cd_dep_college_count#24, cnt3#57, min(cd_dep_college_count)#58, max(cd_dep_college_count)#59, avg(cd_dep_college_count)#60, cd_dep_count#22] +Arguments: X, [ca_state#18 ASC NULLS FIRST, cd_gender#20 ASC NULLS FIRST, cd_marital_status#21 ASC NULLS FIRST, cd_dep_count#22 ASC NULLS FIRST, cd_dep_employed_count#23 ASC NULLS FIRST, cd_dep_college_count#24 ASC NULLS FIRST], [ca_state#18, cd_gender#20, cd_marital_status#21, cnt1#49, min(cd_dep_count)#50, max(cd_dep_count)#51, avg(cd_dep_count)#52, cd_dep_employed_count#23, cnt2#53, min(cd_dep_employed_count)#54, max(cd_dep_employed_count)#55, avg(cd_dep_employed_count)#56, cd_dep_college_count#24, cnt3#57, min(cd_dep_college_count)#58, max(cd_dep_college_count)#59, avg(cd_dep_college_count)#60] + +(187) AdaptiveSparkPlan +Output [17]: [ca_state#18, cd_gender#20, cd_marital_status#21, cnt1#49, min(cd_dep_count)#50, max(cd_dep_count)#51, avg(cd_dep_count)#52, cd_dep_employed_count#23, cnt2#53, min(cd_dep_employed_count)#54, max(cd_dep_employed_count)#55, avg(cd_dep_employed_count)#56, cd_dep_college_count#24, cnt3#57, min(cd_dep_college_count)#58, max(cd_dep_college_count)#59, avg(cd_dep_college_count)#60] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q36.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q36.txt new file mode 100644 index 000000000..232e103b6 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q36.txt @@ -0,0 +1,570 @@ +== Physical Plan == +AdaptiveSparkPlan (105) ++- == Final Plan == + NativeTakeOrdered (67) + +- NativeProject (66) + +- NativeWindow (65) + +- NativeSort (64) + +- InputAdapter (63) + +- AQEShuffleRead (62) + +- ShuffleQueryStage (61), Statistics(X) + +- NativeShuffleExchange (60) + +- NativeProject (59) + +- NativeHashAggregate (58) + +- InputAdapter (57) + +- AQEShuffleRead (56) + +- ShuffleQueryStage (55), Statistics(X) + +- NativeShuffleExchange (54) + +- NativeHashAggregate (53) + +- NativeProject (52) + +- NativeExpand (51) + +- NativeProject (50) + +- NativeSortMergeJoin Inner (49) + :- NativeSort (39) + : +- InputAdapter (38) + : +- AQEShuffleRead (37) + : +- ShuffleQueryStage (36), Statistics(X) + : +- NativeShuffleExchange (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 (48) + +- InputAdapter (47) + +- AQEShuffleRead (46) + +- ShuffleQueryStage (45), Statistics(X) + +- NativeShuffleExchange (44) + +- NativeProject (43) + +- NativeFilter (42) + +- InputAdapter (41) + +- NativeParquetScan (40) ++- == Initial Plan == + TakeOrderedAndProject (104) + +- Project (103) + +- Window (102) + +- Sort (101) + +- Exchange (100) + +- HashAggregate (99) + +- Exchange (98) + +- HashAggregate (97) + +- Expand (96) + +- Project (95) + +- SortMergeJoin Inner (94) + :- Sort (88) + : +- Exchange (87) + : +- Project (86) + : +- SortMergeJoin Inner (85) + : :- Sort (80) + : : +- Exchange (79) + : : +- Project (78) + : : +- SortMergeJoin Inner (77) + : : :- Sort (71) + : : : +- Exchange (70) + : : : +- Filter (69) + : : : +- Scan parquet (68) + : : +- Sort (76) + : : +- Exchange (75) + : : +- Project (74) + : : +- Filter (73) + : : +- Scan parquet (72) + : +- Sort (84) + : +- Exchange (83) + : +- Filter (82) + : +- Scan parquet (81) + +- Sort (93) + +- Exchange (92) + +- Project (91) + +- Filter (90) + +- Scan parquet (89) + + +(68) Scan parquet +Output [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_ext_sales_price#4, ss_net_profit#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_item_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_ext_sales_price#4, ss_net_profit#5] +Arguments: [#1, #2, #3, #4, #5] + +(3) NativeFilter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Condition : ((isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_item_sk#2)) AND isnotnull(ss_store_sk#3)) + +(4) NativeShuffleExchange +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: X + +(6) AQEShuffleRead +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: coalesced + +(7) InputAdapter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] + +(8) NativeSort +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(72) Scan parquet +Output [2]: [d_date_sk#6, d_year#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [d_date_sk#6, d_year#7] +Arguments: [#6, #7] + +(11) NativeFilter +Input [2]: [#6#6, #7#7] +Condition : ((isnotnull(d_year#7) AND (d_year#7 = 2001)) AND isnotnull(d_date_sk#6)) + +(12) NativeProject +Output [1]: [d_date_sk#6] +Input [2]: [#6#6, #7#7] + +(13) NativeShuffleExchange +Input [1]: [d_date_sk#6] +Arguments: hashpartitioning(d_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [1]: [d_date_sk#6] +Arguments: X + +(15) AQEShuffleRead +Input [1]: [d_date_sk#6] +Arguments: coalesced + +(16) InputAdapter +Input [1]: [d_date_sk#6] + +(17) NativeSort +Input [1]: [d_date_sk#6] +Arguments: [d_date_sk#6 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#6] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [4]: [ss_item_sk#2, ss_store_sk#3, ss_ext_sales_price#4, ss_net_profit#5] +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, d_date_sk#6] + +(20) NativeShuffleExchange +Input [4]: [ss_item_sk#2, ss_store_sk#3, ss_ext_sales_price#4, ss_net_profit#5] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [4]: [ss_item_sk#2, ss_store_sk#3, ss_ext_sales_price#4, ss_net_profit#5] +Arguments: X + +(22) AQEShuffleRead +Input [4]: [ss_item_sk#2, ss_store_sk#3, ss_ext_sales_price#4, ss_net_profit#5] +Arguments: coalesced + +(23) InputAdapter +Input [4]: [ss_item_sk#2, ss_store_sk#3, ss_ext_sales_price#4, ss_net_profit#5] + +(24) NativeSort +Input [4]: [ss_item_sk#2, ss_store_sk#3, ss_ext_sales_price#4, ss_net_profit#5] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false + +(81) Scan parquet +Output [3]: [i_item_sk#8, i_class#9, i_category#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [3]: [i_item_sk#8, i_class#9, i_category#10] +Arguments: [#8, #9, #10] + +(27) NativeFilter +Input [3]: [#8#8, #9#9, #10#10] +Condition : isnotnull(i_item_sk#8) + +(28) NativeShuffleExchange +Input [3]: [#8#8, #9#9, #10#10] +Arguments: hashpartitioning(i_item_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(29) ShuffleQueryStage +Output [3]: [#8#8, #9#9, #10#10] +Arguments: X + +(30) AQEShuffleRead +Input [3]: [#8#8, #9#9, #10#10] +Arguments: coalesced + +(31) InputAdapter +Input [3]: [#8#8, #9#9, #10#10] + +(32) NativeSort +Input [3]: [#8#8, #9#9, #10#10] +Arguments: [i_item_sk#8 ASC NULLS FIRST], false + +(33) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#8] +Join type: Inner +Join condition: None + +(34) NativeProject +Output [5]: [ss_store_sk#3, ss_ext_sales_price#4, ss_net_profit#5, i_class#9, i_category#10] +Input [7]: [ss_item_sk#2, ss_store_sk#3, ss_ext_sales_price#4, ss_net_profit#5, #8#8, #9#9, #10#10] + +(35) NativeShuffleExchange +Input [5]: [ss_store_sk#3, ss_ext_sales_price#4, ss_net_profit#5, i_class#9, i_category#10] +Arguments: hashpartitioning(ss_store_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(36) ShuffleQueryStage +Output [5]: [ss_store_sk#3, ss_ext_sales_price#4, ss_net_profit#5, i_class#9, i_category#10] +Arguments: X + +(37) AQEShuffleRead +Input [5]: [ss_store_sk#3, ss_ext_sales_price#4, ss_net_profit#5, i_class#9, i_category#10] +Arguments: coalesced + +(38) InputAdapter +Input [5]: [ss_store_sk#3, ss_ext_sales_price#4, ss_net_profit#5, i_class#9, i_category#10] + +(39) NativeSort +Input [5]: [ss_store_sk#3, ss_ext_sales_price#4, ss_net_profit#5, i_class#9, i_category#10] +Arguments: [ss_store_sk#3 ASC NULLS FIRST], false + +(89) Scan parquet +Output [2]: [s_store_sk#11, s_state#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_state), EqualTo(s_state,TN), IsNotNull(s_store_sk)] +ReadSchema: struct + +(41) InputAdapter +Input [2]: [s_store_sk#11, s_state#12] +Arguments: [#11, #12] + +(42) NativeFilter +Input [2]: [#11#11, #12#12] +Condition : ((isnotnull(s_state#12) AND (s_state#12 = TN)) AND isnotnull(s_store_sk#11)) + +(43) NativeProject +Output [1]: [s_store_sk#11] +Input [2]: [#11#11, #12#12] + +(44) NativeShuffleExchange +Input [1]: [s_store_sk#11] +Arguments: hashpartitioning(s_store_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(45) ShuffleQueryStage +Output [1]: [s_store_sk#11] +Arguments: X + +(46) AQEShuffleRead +Input [1]: [s_store_sk#11] +Arguments: coalesced + +(47) InputAdapter +Input [1]: [s_store_sk#11] + +(48) NativeSort +Input [1]: [s_store_sk#11] +Arguments: [s_store_sk#11 ASC NULLS FIRST], false + +(49) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#3] +Right keys [1]: [s_store_sk#11] +Join type: Inner +Join condition: None + +(50) NativeProject +Output [4]: [ss_ext_sales_price#4, ss_net_profit#5, i_category#10, i_class#9] +Input [6]: [ss_store_sk#3, ss_ext_sales_price#4, ss_net_profit#5, i_class#9, i_category#10, s_store_sk#11] + +(51) NativeExpand +Input [4]: [ss_ext_sales_price#4, ss_net_profit#5, i_category#10, i_class#9] +Arguments: [[ss_ext_sales_price#4, ss_net_profit#5, i_category#10, i_class#9, 0], [ss_ext_sales_price#4, ss_net_profit#5, i_category#10, null, 1], [ss_ext_sales_price#4, ss_net_profit#5, null, null, 3]], [ss_ext_sales_price#4, ss_net_profit#5, i_category#13, i_class#14, spark_grouping_id#15] + +(52) NativeProject +Output [5]: [i_category#13 AS i_category#13, i_class#14 AS i_class#14, spark_grouping_id#15 AS spark_grouping_id#15, UnscaledValue(ss_net_profit#5) AS _c3#16, UnscaledValue(ss_ext_sales_price#4) AS _c4#17] +Input [5]: [ss_ext_sales_price#4, ss_net_profit#5, i_category#13, i_class#14, spark_grouping_id#15] + +(53) NativeHashAggregate +Input [5]: [i_category#13, i_class#14, spark_grouping_id#15, _c3#16, _c4#17] +Keys [3]: [i_category#13, i_class#14, spark_grouping_id#15] +Functions [2]: [partial_sum(_c3#16), partial_sum(_c4#17)] +Aggregate Attributes [2]: [sum#18, sum#19] +Results [4]: [i_category#13, i_class#14, spark_grouping_id#15, #20#20] + +(54) NativeShuffleExchange +Input [4]: [i_category#13, i_class#14, spark_grouping_id#15, #20#20] +Arguments: hashpartitioning(i_category#13, i_class#14, spark_grouping_id#15, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(55) ShuffleQueryStage +Output [4]: [i_category#13, i_class#14, spark_grouping_id#15, #20#20] +Arguments: X + +(56) AQEShuffleRead +Input [4]: [i_category#13, i_class#14, spark_grouping_id#15, #20#20] +Arguments: coalesced + +(57) InputAdapter +Input [4]: [i_category#13, i_class#14, spark_grouping_id#15, #20#20] + +(58) NativeHashAggregate +Input [4]: [i_category#13, i_class#14, spark_grouping_id#15, #20#20] +Keys [3]: [i_category#13, i_class#14, spark_grouping_id#15] +Functions [2]: [sum(UnscaledValue(ss_net_profit#5)), sum(UnscaledValue(ss_ext_sales_price#4))] +Aggregate Attributes [2]: [sum(UnscaledValue(ss_net_profit#5))#21, sum(UnscaledValue(ss_ext_sales_price#4))#22] +Results [5]: [i_category#13, i_class#14, spark_grouping_id#15, sum(UnscaledValue(ss_net_profit#5))#21, sum(UnscaledValue(ss_ext_sales_price#4))#22] + +(59) NativeProject +Output [7]: [(MakeDecimal(sum(UnscaledValue(ss_net_profit#5))#21,17,2) / MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#4))#22,17,2)) AS gross_margin#23, i_category#13, i_class#14, (cast((shiftright(spark_grouping_id#15, 1) & 1) as tinyint) + cast((shiftright(spark_grouping_id#15, 0) & 1) as tinyint)) AS lochierarchy#24, (MakeDecimal(sum(UnscaledValue(ss_net_profit#5))#21,17,2) / MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#4))#22,17,2)) AS _w0#25, (cast((shiftright(spark_grouping_id#15, 1) & 1) as tinyint) + cast((shiftright(spark_grouping_id#15, 0) & 1) as tinyint)) AS _w1#26, CASE WHEN (cast((shiftright(spark_grouping_id#15, 0) & 1) as tinyint) = 0) THEN i_category#13 END AS _w2#27] +Input [5]: [i_category#13, i_class#14, spark_grouping_id#15, sum(UnscaledValue(ss_net_profit#5))#21, sum(UnscaledValue(ss_ext_sales_price#4))#22] + +(60) NativeShuffleExchange +Input [7]: [gross_margin#23, i_category#13, i_class#14, lochierarchy#24, _w0#25, _w1#26, _w2#27] +Arguments: hashpartitioning(_w1#26, _w2#27, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(61) ShuffleQueryStage +Output [7]: [gross_margin#23, i_category#13, i_class#14, lochierarchy#24, _w0#25, _w1#26, _w2#27] +Arguments: X + +(62) AQEShuffleRead +Input [7]: [gross_margin#23, i_category#13, i_class#14, lochierarchy#24, _w0#25, _w1#26, _w2#27] +Arguments: coalesced + +(63) InputAdapter +Input [7]: [gross_margin#23, i_category#13, i_class#14, lochierarchy#24, _w0#25, _w1#26, _w2#27] + +(64) NativeSort +Input [7]: [gross_margin#23, i_category#13, i_class#14, lochierarchy#24, _w0#25, _w1#26, _w2#27] +Arguments: [_w1#26 ASC NULLS FIRST, _w2#27 ASC NULLS FIRST, _w0#25 ASC NULLS FIRST], false + +(65) NativeWindow +Input [7]: [gross_margin#23, i_category#13, i_class#14, lochierarchy#24, _w0#25, _w1#26, _w2#27] +Arguments: [rank(_w0#25) windowspecdefinition(_w1#26, _w2#27, _w0#25 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rank_within_parent#28], [_w1#26, _w2#27], [_w0#25 ASC NULLS FIRST] + +(66) NativeProject +Output [5]: [gross_margin#23, i_category#13, i_class#14, lochierarchy#24, rank_within_parent#28] +Input [8]: [gross_margin#23, i_category#13, i_class#14, lochierarchy#24, _w0#25, _w1#26, _w2#27, rank_within_parent#28] + +(67) NativeTakeOrdered +Input [5]: [gross_margin#23, i_category#13, i_class#14, lochierarchy#24, rank_within_parent#28] +Arguments: X, [lochierarchy#24 DESC NULLS LAST, CASE WHEN (lochierarchy#24 = 0) THEN i_category#13 END ASC NULLS FIRST, rank_within_parent#28 ASC NULLS FIRST] + +(68) Scan parquet +Output [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_ext_sales_price#4, ss_net_profit#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_item_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(69) Filter +Input [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_ext_sales_price#4, ss_net_profit#5] +Condition : ((isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_item_sk#2)) AND isnotnull(ss_store_sk#3)) + +(70) Exchange +Input [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_ext_sales_price#4, ss_net_profit#5] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(71) Sort +Input [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_ext_sales_price#4, ss_net_profit#5] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(72) Scan parquet +Output [2]: [d_date_sk#6, d_year#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(73) Filter +Input [2]: [d_date_sk#6, d_year#7] +Condition : ((isnotnull(d_year#7) AND (d_year#7 = 2001)) AND isnotnull(d_date_sk#6)) + +(74) Project +Output [1]: [d_date_sk#6] +Input [2]: [d_date_sk#6, d_year#7] + +(75) Exchange +Input [1]: [d_date_sk#6] +Arguments: hashpartitioning(d_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(76) Sort +Input [1]: [d_date_sk#6] +Arguments: [d_date_sk#6 ASC NULLS FIRST], false, 0 + +(77) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#6] +Join type: Inner +Join condition: None + +(78) Project +Output [4]: [ss_item_sk#2, ss_store_sk#3, ss_ext_sales_price#4, ss_net_profit#5] +Input [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_ext_sales_price#4, ss_net_profit#5, d_date_sk#6] + +(79) Exchange +Input [4]: [ss_item_sk#2, ss_store_sk#3, ss_ext_sales_price#4, ss_net_profit#5] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(80) Sort +Input [4]: [ss_item_sk#2, ss_store_sk#3, ss_ext_sales_price#4, ss_net_profit#5] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false, 0 + +(81) Scan parquet +Output [3]: [i_item_sk#8, i_class#9, i_category#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(82) Filter +Input [3]: [i_item_sk#8, i_class#9, i_category#10] +Condition : isnotnull(i_item_sk#8) + +(83) Exchange +Input [3]: [i_item_sk#8, i_class#9, i_category#10] +Arguments: hashpartitioning(i_item_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(84) Sort +Input [3]: [i_item_sk#8, i_class#9, i_category#10] +Arguments: [i_item_sk#8 ASC NULLS FIRST], false, 0 + +(85) SortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#8] +Join type: Inner +Join condition: None + +(86) Project +Output [5]: [ss_store_sk#3, ss_ext_sales_price#4, ss_net_profit#5, i_class#9, i_category#10] +Input [7]: [ss_item_sk#2, ss_store_sk#3, ss_ext_sales_price#4, ss_net_profit#5, i_item_sk#8, i_class#9, i_category#10] + +(87) Exchange +Input [5]: [ss_store_sk#3, ss_ext_sales_price#4, ss_net_profit#5, i_class#9, i_category#10] +Arguments: hashpartitioning(ss_store_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(88) Sort +Input [5]: [ss_store_sk#3, ss_ext_sales_price#4, ss_net_profit#5, i_class#9, i_category#10] +Arguments: [ss_store_sk#3 ASC NULLS FIRST], false, 0 + +(89) Scan parquet +Output [2]: [s_store_sk#11, s_state#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_state), EqualTo(s_state,TN), IsNotNull(s_store_sk)] +ReadSchema: struct + +(90) Filter +Input [2]: [s_store_sk#11, s_state#12] +Condition : ((isnotnull(s_state#12) AND (s_state#12 = TN)) AND isnotnull(s_store_sk#11)) + +(91) Project +Output [1]: [s_store_sk#11] +Input [2]: [s_store_sk#11, s_state#12] + +(92) Exchange +Input [1]: [s_store_sk#11] +Arguments: hashpartitioning(s_store_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(93) Sort +Input [1]: [s_store_sk#11] +Arguments: [s_store_sk#11 ASC NULLS FIRST], false, 0 + +(94) SortMergeJoin +Left keys [1]: [ss_store_sk#3] +Right keys [1]: [s_store_sk#11] +Join type: Inner +Join condition: None + +(95) Project +Output [4]: [ss_ext_sales_price#4, ss_net_profit#5, i_category#10, i_class#9] +Input [6]: [ss_store_sk#3, ss_ext_sales_price#4, ss_net_profit#5, i_class#9, i_category#10, s_store_sk#11] + +(96) Expand +Input [4]: [ss_ext_sales_price#4, ss_net_profit#5, i_category#10, i_class#9] +Arguments: [[ss_ext_sales_price#4, ss_net_profit#5, i_category#10, i_class#9, 0], [ss_ext_sales_price#4, ss_net_profit#5, i_category#10, null, 1], [ss_ext_sales_price#4, ss_net_profit#5, null, null, 3]], [ss_ext_sales_price#4, ss_net_profit#5, i_category#13, i_class#14, spark_grouping_id#15] + +(97) HashAggregate +Input [5]: [ss_ext_sales_price#4, ss_net_profit#5, i_category#13, i_class#14, spark_grouping_id#15] +Keys [3]: [i_category#13, i_class#14, spark_grouping_id#15] +Functions [2]: [partial_sum(UnscaledValue(ss_net_profit#5)), partial_sum(UnscaledValue(ss_ext_sales_price#4))] +Aggregate Attributes [2]: [sum#18, sum#19] +Results [5]: [i_category#13, i_class#14, spark_grouping_id#15, sum#29, sum#30] + +(98) Exchange +Input [5]: [i_category#13, i_class#14, spark_grouping_id#15, sum#29, sum#30] +Arguments: hashpartitioning(i_category#13, i_class#14, spark_grouping_id#15, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(99) HashAggregate +Input [5]: [i_category#13, i_class#14, spark_grouping_id#15, sum#29, sum#30] +Keys [3]: [i_category#13, i_class#14, spark_grouping_id#15] +Functions [2]: [sum(UnscaledValue(ss_net_profit#5)), sum(UnscaledValue(ss_ext_sales_price#4))] +Aggregate Attributes [2]: [sum(UnscaledValue(ss_net_profit#5))#21, sum(UnscaledValue(ss_ext_sales_price#4))#22] +Results [7]: [(MakeDecimal(sum(UnscaledValue(ss_net_profit#5))#21,17,2) / MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#4))#22,17,2)) AS gross_margin#23, i_category#13, i_class#14, (cast((shiftright(spark_grouping_id#15, 1) & 1) as tinyint) + cast((shiftright(spark_grouping_id#15, 0) & 1) as tinyint)) AS lochierarchy#24, (MakeDecimal(sum(UnscaledValue(ss_net_profit#5))#21,17,2) / MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#4))#22,17,2)) AS _w0#25, (cast((shiftright(spark_grouping_id#15, 1) & 1) as tinyint) + cast((shiftright(spark_grouping_id#15, 0) & 1) as tinyint)) AS _w1#26, CASE WHEN (cast((shiftright(spark_grouping_id#15, 0) & 1) as tinyint) = 0) THEN i_category#13 END AS _w2#27] + +(100) Exchange +Input [7]: [gross_margin#23, i_category#13, i_class#14, lochierarchy#24, _w0#25, _w1#26, _w2#27] +Arguments: hashpartitioning(_w1#26, _w2#27, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(101) Sort +Input [7]: [gross_margin#23, i_category#13, i_class#14, lochierarchy#24, _w0#25, _w1#26, _w2#27] +Arguments: [_w1#26 ASC NULLS FIRST, _w2#27 ASC NULLS FIRST, _w0#25 ASC NULLS FIRST], false, 0 + +(102) Window +Input [7]: [gross_margin#23, i_category#13, i_class#14, lochierarchy#24, _w0#25, _w1#26, _w2#27] +Arguments: [rank(_w0#25) windowspecdefinition(_w1#26, _w2#27, _w0#25 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rank_within_parent#28], [_w1#26, _w2#27], [_w0#25 ASC NULLS FIRST] + +(103) Project +Output [5]: [gross_margin#23, i_category#13, i_class#14, lochierarchy#24, rank_within_parent#28] +Input [8]: [gross_margin#23, i_category#13, i_class#14, lochierarchy#24, _w0#25, _w1#26, _w2#27, rank_within_parent#28] + +(104) TakeOrderedAndProject +Input [5]: [gross_margin#23, i_category#13, i_class#14, lochierarchy#24, rank_within_parent#28] +Arguments: X, [lochierarchy#24 DESC NULLS LAST, CASE WHEN (lochierarchy#24 = 0) THEN i_category#13 END ASC NULLS FIRST, rank_within_parent#28 ASC NULLS FIRST], [gross_margin#23, i_category#13, i_class#14, lochierarchy#24, rank_within_parent#28] + +(105) AdaptiveSparkPlan +Output [5]: [gross_margin#23, i_category#13, i_class#14, lochierarchy#24, rank_within_parent#28] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q37.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q37.txt new file mode 100644 index 000000000..b1d079b30 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q37.txt @@ -0,0 +1,506 @@ +== Physical Plan == +AdaptiveSparkPlan (92) ++- == Final Plan == + NativeProject (58) + +- NativeHashAggregate (57) + +- InputAdapter (56) + +- AQEShuffleRead (55) + +- ShuffleQueryStage (54), Statistics(X) + +- NativeShuffleExchange (53) + +- NativeHashAggregate (52) + +- NativeProject (51) + +- NativeSortMergeJoin Inner (50) + :- NativeSort (41) + : +- InputAdapter (40) + : +- AQEShuffleRead (39) + : +- ShuffleQueryStage (38), Statistics(X) + : +- NativeShuffleExchange (37) + : +- NativeProject (36) + : +- NativeSortMergeJoin Inner (35) + : :- NativeSort (25) + : : +- InputAdapter (24) + : : +- AQEShuffleRead (23) + : : +- ShuffleQueryStage (22), Statistics(X) + : : +- NativeShuffleExchange (21) + : : +- NativeProject (20) + : : +- NativeSortMergeJoin Inner (19) + : : :- NativeSort (9) + : : : +- InputAdapter (8) + : : : +- AQEShuffleRead (7) + : : : +- ShuffleQueryStage (6), Statistics(X) + : : : +- NativeShuffleExchange (5) + : : : +- NativeProject (4) + : : : +- NativeFilter (3) + : : : +- InputAdapter (2) + : : : +- NativeParquetScan (1) + : : +- NativeSort (18) + : : +- InputAdapter (17) + : : +- AQEShuffleRead (16) + : : +- ShuffleQueryStage (15), Statistics(X) + : : +- NativeShuffleExchange (14) + : : +- NativeProject (13) + : : +- NativeFilter (12) + : : +- InputAdapter (11) + : : +- NativeParquetScan (10) + : +- NativeSort (34) + : +- InputAdapter (33) + : +- AQEShuffleRead (32) + : +- ShuffleQueryStage (31), Statistics(X) + : +- NativeShuffleExchange (30) + : +- NativeProject (29) + : +- NativeFilter (28) + : +- InputAdapter (27) + : +- NativeParquetScan (26) + +- NativeSort (49) + +- InputAdapter (48) + +- AQEShuffleRead (47) + +- ShuffleQueryStage (46), Statistics(X) + +- NativeShuffleExchange (45) + +- NativeFilter (44) + +- InputAdapter (43) + +- NativeParquetScan (42) ++- == Initial Plan == + TakeOrderedAndProject (91) + +- HashAggregate (90) + +- Exchange (89) + +- HashAggregate (88) + +- Project (87) + +- SortMergeJoin Inner (86) + :- Sort (81) + : +- Exchange (80) + : +- Project (79) + : +- SortMergeJoin Inner (78) + : :- Sort (72) + : : +- Exchange (71) + : : +- Project (70) + : : +- SortMergeJoin Inner (69) + : : :- Sort (63) + : : : +- Exchange (62) + : : : +- Project (61) + : : : +- Filter (60) + : : : +- Scan parquet (59) + : : +- Sort (68) + : : +- Exchange (67) + : : +- Project (66) + : : +- Filter (65) + : : +- Scan parquet (64) + : +- Sort (77) + : +- Exchange (76) + : +- Project (75) + : +- Filter (74) + : +- Scan parquet (73) + +- Sort (85) + +- Exchange (84) + +- Filter (83) + +- Scan parquet (82) + + +(59) Scan parquet +Output [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, i_manufact_id#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_current_price), GreaterThanOrEqual(i_current_price,68.00), LessThanOrEqual(i_current_price,98.00), In(i_manufact_id, [677,694,808,940]), IsNotNull(i_item_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, i_manufact_id#5] +Arguments: [#1, #2, #3, #4, #5] + +(3) NativeFilter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Condition : ((((isnotnull(i_current_price#4) AND (i_current_price#4 >= 68.00)) AND (i_current_price#4 <= 98.00)) AND i_manufact_id#5 IN (677,940,694,808)) AND isnotnull(i_item_sk#1)) + +(4) NativeProject +Output [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] + +(5) NativeShuffleExchange +Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: hashpartitioning(i_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(6) ShuffleQueryStage +Output [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: X + +(7) AQEShuffleRead +Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: coalesced + +(8) InputAdapter +Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] + +(9) NativeSort +Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: [i_item_sk#1 ASC NULLS FIRST], false + +(64) Scan parquet +Output [3]: [inv_date_sk#6, inv_item_sk#7, inv_quantity_on_hand#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(inv_quantity_on_hand), GreaterThanOrEqual(inv_quantity_on_hand,100), LessThanOrEqual(inv_quantity_on_hand,500), IsNotNull(inv_item_sk), IsNotNull(inv_date_sk)] +ReadSchema: struct + +(11) InputAdapter +Input [3]: [inv_date_sk#6, inv_item_sk#7, inv_quantity_on_hand#8] +Arguments: [#6, #7, #8] + +(12) NativeFilter +Input [3]: [#6#6, #7#7, #8#8] +Condition : ((((isnotnull(inv_quantity_on_hand#8) AND (inv_quantity_on_hand#8 >= 100)) AND (inv_quantity_on_hand#8 <= 500)) AND isnotnull(inv_item_sk#7)) AND isnotnull(inv_date_sk#6)) + +(13) NativeProject +Output [2]: [inv_date_sk#6, inv_item_sk#7] +Input [3]: [#6#6, #7#7, #8#8] + +(14) NativeShuffleExchange +Input [2]: [inv_date_sk#6, inv_item_sk#7] +Arguments: hashpartitioning(inv_item_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(15) ShuffleQueryStage +Output [2]: [inv_date_sk#6, inv_item_sk#7] +Arguments: X + +(16) AQEShuffleRead +Input [2]: [inv_date_sk#6, inv_item_sk#7] +Arguments: coalesced + +(17) InputAdapter +Input [2]: [inv_date_sk#6, inv_item_sk#7] + +(18) NativeSort +Input [2]: [inv_date_sk#6, inv_item_sk#7] +Arguments: [inv_item_sk#7 ASC NULLS FIRST], false + +(19) NativeSortMergeJoin +Left keys [1]: [i_item_sk#1] +Right keys [1]: [inv_item_sk#7] +Join type: Inner +Join condition: None + +(20) NativeProject +Output [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6] +Input [6]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6, inv_item_sk#7] + +(21) NativeShuffleExchange +Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6] +Arguments: hashpartitioning(inv_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(22) ShuffleQueryStage +Output [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6] +Arguments: X + +(23) AQEShuffleRead +Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6] +Arguments: coalesced + +(24) InputAdapter +Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6] + +(25) NativeSort +Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6] +Arguments: [inv_date_sk#6 ASC NULLS FIRST], false + +(73) Scan parquet +Output [2]: [d_date_sk#9, d_date#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,2000-02-01), LessThanOrEqual(d_date,2000-04-01), IsNotNull(d_date_sk)] +ReadSchema: struct + +(27) InputAdapter +Input [2]: [d_date_sk#9, d_date#10] +Arguments: [#9, #10] + +(28) NativeFilter +Input [2]: [#9#9, #10#10] +Condition : (((isnotnull(d_date#10) AND (d_date#10 >= 2000-02-01)) AND (d_date#10 <= 2000-04-01)) AND isnotnull(d_date_sk#9)) + +(29) NativeProject +Output [1]: [d_date_sk#9] +Input [2]: [#9#9, #10#10] + +(30) NativeShuffleExchange +Input [1]: [d_date_sk#9] +Arguments: hashpartitioning(d_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(31) ShuffleQueryStage +Output [1]: [d_date_sk#9] +Arguments: X + +(32) AQEShuffleRead +Input [1]: [d_date_sk#9] +Arguments: coalesced + +(33) InputAdapter +Input [1]: [d_date_sk#9] + +(34) NativeSort +Input [1]: [d_date_sk#9] +Arguments: [d_date_sk#9 ASC NULLS FIRST], false + +(35) NativeSortMergeJoin +Left keys [1]: [inv_date_sk#6] +Right keys [1]: [d_date_sk#9] +Join type: Inner +Join condition: None + +(36) NativeProject +Output [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Input [6]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6, d_date_sk#9] + +(37) NativeShuffleExchange +Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: hashpartitioning(i_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(38) ShuffleQueryStage +Output [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: X + +(39) AQEShuffleRead +Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: coalesced + +(40) InputAdapter +Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] + +(41) NativeSort +Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: [i_item_sk#1 ASC NULLS FIRST], false + +(82) Scan parquet +Output [1]: [cs_item_sk#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk)] +ReadSchema: struct + +(43) InputAdapter +Input [1]: [cs_item_sk#11] +Arguments: [#11] + +(44) NativeFilter +Input [1]: [#11#11] +Condition : isnotnull(cs_item_sk#11) + +(45) NativeShuffleExchange +Input [1]: [#11#11] +Arguments: hashpartitioning(cs_item_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(46) ShuffleQueryStage +Output [1]: [#11#11] +Arguments: X + +(47) AQEShuffleRead +Input [1]: [#11#11] +Arguments: coalesced + +(48) InputAdapter +Input [1]: [#11#11] + +(49) NativeSort +Input [1]: [#11#11] +Arguments: [cs_item_sk#11 ASC NULLS FIRST], false + +(50) NativeSortMergeJoin +Left keys [1]: [i_item_sk#1] +Right keys [1]: [cs_item_sk#11] +Join type: Inner +Join condition: None + +(51) NativeProject +Output [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] +Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, #11#11] + +(52) NativeHashAggregate +Input [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] +Keys [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] +Functions: [] +Aggregate Attributes: [] +Results [4]: [i_item_id#2, i_item_desc#3, i_current_price#4, #12#12] + +(53) NativeShuffleExchange +Input [4]: [i_item_id#2, i_item_desc#3, i_current_price#4, #12#12] +Arguments: hashpartitioning(i_item_id#2, i_item_desc#3, i_current_price#4, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(54) ShuffleQueryStage +Output [4]: [i_item_id#2, i_item_desc#3, i_current_price#4, #12#12] +Arguments: X + +(55) AQEShuffleRead +Input [4]: [i_item_id#2, i_item_desc#3, i_current_price#4, #12#12] +Arguments: coalesced + +(56) InputAdapter +Input [4]: [i_item_id#2, i_item_desc#3, i_current_price#4, #12#12] + +(57) NativeHashAggregate +Input [4]: [i_item_id#2, i_item_desc#3, i_current_price#4, #12#12] +Keys [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] +Functions: [] +Aggregate Attributes: [] +Results [4]: [i_item_id#2, i_item_desc#3, i_current_price#4, #12#12] + +(58) NativeProject +Output [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] +Input [4]: [i_item_id#2, i_item_desc#3, i_current_price#4, #12#12] + +(59) Scan parquet +Output [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, i_manufact_id#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_current_price), GreaterThanOrEqual(i_current_price,68.00), LessThanOrEqual(i_current_price,98.00), In(i_manufact_id, [677,694,808,940]), IsNotNull(i_item_sk)] +ReadSchema: struct + +(60) Filter +Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, i_manufact_id#5] +Condition : ((((isnotnull(i_current_price#4) AND (i_current_price#4 >= 68.00)) AND (i_current_price#4 <= 98.00)) AND i_manufact_id#5 IN (677,940,694,808)) AND isnotnull(i_item_sk#1)) + +(61) Project +Output [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, i_manufact_id#5] + +(62) Exchange +Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: hashpartitioning(i_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(63) Sort +Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: [i_item_sk#1 ASC NULLS FIRST], false, 0 + +(64) Scan parquet +Output [3]: [inv_date_sk#6, inv_item_sk#7, inv_quantity_on_hand#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(inv_quantity_on_hand), GreaterThanOrEqual(inv_quantity_on_hand,100), LessThanOrEqual(inv_quantity_on_hand,500), IsNotNull(inv_item_sk), IsNotNull(inv_date_sk)] +ReadSchema: struct + +(65) Filter +Input [3]: [inv_date_sk#6, inv_item_sk#7, inv_quantity_on_hand#8] +Condition : ((((isnotnull(inv_quantity_on_hand#8) AND (inv_quantity_on_hand#8 >= 100)) AND (inv_quantity_on_hand#8 <= 500)) AND isnotnull(inv_item_sk#7)) AND isnotnull(inv_date_sk#6)) + +(66) Project +Output [2]: [inv_date_sk#6, inv_item_sk#7] +Input [3]: [inv_date_sk#6, inv_item_sk#7, inv_quantity_on_hand#8] + +(67) Exchange +Input [2]: [inv_date_sk#6, inv_item_sk#7] +Arguments: hashpartitioning(inv_item_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(68) Sort +Input [2]: [inv_date_sk#6, inv_item_sk#7] +Arguments: [inv_item_sk#7 ASC NULLS FIRST], false, 0 + +(69) SortMergeJoin +Left keys [1]: [i_item_sk#1] +Right keys [1]: [inv_item_sk#7] +Join type: Inner +Join condition: None + +(70) Project +Output [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6] +Input [6]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6, inv_item_sk#7] + +(71) Exchange +Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6] +Arguments: hashpartitioning(inv_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(72) Sort +Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6] +Arguments: [inv_date_sk#6 ASC NULLS FIRST], false, 0 + +(73) Scan parquet +Output [2]: [d_date_sk#9, d_date#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,2000-02-01), LessThanOrEqual(d_date,2000-04-01), IsNotNull(d_date_sk)] +ReadSchema: struct + +(74) Filter +Input [2]: [d_date_sk#9, d_date#10] +Condition : (((isnotnull(d_date#10) AND (d_date#10 >= 2000-02-01)) AND (d_date#10 <= 2000-04-01)) AND isnotnull(d_date_sk#9)) + +(75) Project +Output [1]: [d_date_sk#9] +Input [2]: [d_date_sk#9, d_date#10] + +(76) Exchange +Input [1]: [d_date_sk#9] +Arguments: hashpartitioning(d_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(77) Sort +Input [1]: [d_date_sk#9] +Arguments: [d_date_sk#9 ASC NULLS FIRST], false, 0 + +(78) SortMergeJoin +Left keys [1]: [inv_date_sk#6] +Right keys [1]: [d_date_sk#9] +Join type: Inner +Join condition: None + +(79) Project +Output [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Input [6]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6, d_date_sk#9] + +(80) Exchange +Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: hashpartitioning(i_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(81) Sort +Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: [i_item_sk#1 ASC NULLS FIRST], false, 0 + +(82) Scan parquet +Output [1]: [cs_item_sk#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk)] +ReadSchema: struct + +(83) Filter +Input [1]: [cs_item_sk#11] +Condition : isnotnull(cs_item_sk#11) + +(84) Exchange +Input [1]: [cs_item_sk#11] +Arguments: hashpartitioning(cs_item_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(85) Sort +Input [1]: [cs_item_sk#11] +Arguments: [cs_item_sk#11 ASC NULLS FIRST], false, 0 + +(86) SortMergeJoin +Left keys [1]: [i_item_sk#1] +Right keys [1]: [cs_item_sk#11] +Join type: Inner +Join condition: None + +(87) Project +Output [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] +Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, cs_item_sk#11] + +(88) HashAggregate +Input [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] +Keys [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] +Functions: [] +Aggregate Attributes: [] +Results [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] + +(89) Exchange +Input [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: hashpartitioning(i_item_id#2, i_item_desc#3, i_current_price#4, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(90) HashAggregate +Input [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] +Keys [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] +Functions: [] +Aggregate Attributes: [] +Results [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] + +(91) TakeOrderedAndProject +Input [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: X, [i_item_id#2 ASC NULLS FIRST], [i_item_id#2, i_item_desc#3, i_current_price#4] + +(92) AdaptiveSparkPlan +Output [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q38.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q38.txt new file mode 100644 index 000000000..e3c0a6280 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q38.txt @@ -0,0 +1,1180 @@ +== 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:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_customer_sk)] +ReadSchema: struct + +(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:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)] +ReadSchema: struct + +(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:/] +PushedFilters: [IsNotNull(c_customer_sk)] +ReadSchema: struct + +(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 [4]: [c_last_name#8, c_first_name#7, d_date#4, #9#9] + +(36) NativeShuffleExchange +Input [4]: [c_last_name#8, c_first_name#7, d_date#4, #9#9] +Arguments: hashpartitioning(c_last_name#8, c_first_name#7, d_date#4, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [4]: [c_last_name#8, c_first_name#7, d_date#4, #9#9] +Arguments: X + +(38) AQEShuffleRead +Input [4]: [c_last_name#8, c_first_name#7, d_date#4, #9#9] +Arguments: coalesced + +(39) InputAdapter +Input [4]: [c_last_name#8, c_first_name#7, d_date#4, #9#9] + +(40) NativeHashAggregate +Input [4]: [c_last_name#8, c_first_name#7, d_date#4, #9#9] +Keys [3]: [c_last_name#8, c_first_name#7, d_date#4] +Functions: [] +Aggregate Attributes: [] +Results [4]: [c_last_name#8, c_first_name#7, d_date#4, #9#9] + +(41) NativeProject +Output [3]: [c_last_name#8, c_first_name#7, d_date#4] +Input [4]: [c_last_name#8, c_first_name#7, d_date#4, #9#9] + +(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#10, cs_bill_customer_sk#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk), IsNotNull(cs_bill_customer_sk)] +ReadSchema: struct + +(48) InputAdapter +Input [2]: [cs_sold_date_sk#10, cs_bill_customer_sk#11] +Arguments: [#10, #11] + +(49) NativeFilter +Input [2]: [#10#10, #11#11] +Condition : (isnotnull(cs_sold_date_sk#10) AND isnotnull(cs_bill_customer_sk#11)) + +(50) NativeShuffleExchange +Input [2]: [#10#10, #11#11] +Arguments: hashpartitioning(cs_sold_date_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(51) ShuffleQueryStage +Output [2]: [#10#10, #11#11] +Arguments: X + +(52) AQEShuffleRead +Input [2]: [#10#10, #11#11] +Arguments: coalesced + +(53) InputAdapter +Input [2]: [#10#10, #11#11] + +(54) NativeSort +Input [2]: [#10#10, #11#11] +Arguments: [cs_sold_date_sk#10 ASC NULLS FIRST], false + +(55) ReusedExchange [Reuses operator id: 13] +Output [2]: [d_date_sk#12, d_date#13] + +(56) ShuffleQueryStage +Output [2]: [d_date_sk#12, d_date#13] +Arguments: X + +(57) AQEShuffleRead +Input [2]: [d_date_sk#12, d_date#13] +Arguments: coalesced + +(58) InputAdapter +Input [2]: [d_date_sk#12, d_date#13] +Arguments: [#12, #13] + +(59) InputAdapter +Input [2]: [#12#12, #13#13] + +(60) NativeSort +Input [2]: [#12#12, #13#13] +Arguments: [d_date_sk#12 ASC NULLS FIRST], false + +(61) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#10] +Right keys [1]: [d_date_sk#12] +Join type: Inner +Join condition: None + +(62) NativeProject +Output [2]: [cs_bill_customer_sk#11, d_date#13] +Input [4]: [#10#10, #11#11, #12#12, #13#13] + +(63) NativeShuffleExchange +Input [2]: [cs_bill_customer_sk#11, d_date#13] +Arguments: hashpartitioning(cs_bill_customer_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(64) ShuffleQueryStage +Output [2]: [cs_bill_customer_sk#11, d_date#13] +Arguments: X + +(65) AQEShuffleRead +Input [2]: [cs_bill_customer_sk#11, d_date#13] +Arguments: coalesced + +(66) InputAdapter +Input [2]: [cs_bill_customer_sk#11, d_date#13] + +(67) NativeSort +Input [2]: [cs_bill_customer_sk#11, d_date#13] +Arguments: [cs_bill_customer_sk#11 ASC NULLS FIRST], false + +(68) ReusedExchange [Reuses operator id: 28] +Output [3]: [c_customer_sk#14, c_first_name#15, c_last_name#16] + +(69) ShuffleQueryStage +Output [3]: [c_customer_sk#14, c_first_name#15, c_last_name#16] +Arguments: X + +(70) AQEShuffleRead +Input [3]: [c_customer_sk#14, c_first_name#15, c_last_name#16] +Arguments: coalesced + +(71) InputAdapter +Input [3]: [c_customer_sk#14, c_first_name#15, c_last_name#16] +Arguments: [#14, #15, #16] + +(72) InputAdapter +Input [3]: [#14#14, #15#15, #16#16] + +(73) NativeSort +Input [3]: [#14#14, #15#15, #16#16] +Arguments: [c_customer_sk#14 ASC NULLS FIRST], false + +(74) NativeSortMergeJoin +Left keys [1]: [cs_bill_customer_sk#11] +Right keys [1]: [c_customer_sk#14] +Join type: Inner +Join condition: None + +(75) NativeProject +Output [3]: [c_last_name#16, c_first_name#15, d_date#13] +Input [5]: [cs_bill_customer_sk#11, d_date#13, #14#14, #15#15, #16#16] + +(76) NativeHashAggregate +Input [3]: [c_last_name#16, c_first_name#15, d_date#13] +Keys [3]: [c_last_name#16, c_first_name#15, d_date#13] +Functions: [] +Aggregate Attributes: [] +Results [4]: [c_last_name#16, c_first_name#15, d_date#13, #9#9] + +(77) NativeShuffleExchange +Input [4]: [c_last_name#16, c_first_name#15, d_date#13, #9#9] +Arguments: hashpartitioning(c_last_name#16, c_first_name#15, d_date#13, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(78) ShuffleQueryStage +Output [4]: [c_last_name#16, c_first_name#15, d_date#13, #9#9] +Arguments: X + +(79) AQEShuffleRead +Input [4]: [c_last_name#16, c_first_name#15, d_date#13, #9#9] +Arguments: coalesced + +(80) InputAdapter +Input [4]: [c_last_name#16, c_first_name#15, d_date#13, #9#9] + +(81) NativeHashAggregate +Input [4]: [c_last_name#16, c_first_name#15, d_date#13, #9#9] +Keys [3]: [c_last_name#16, c_first_name#15, d_date#13] +Functions: [] +Aggregate Attributes: [] +Results [4]: [c_last_name#16, c_first_name#15, d_date#13, #9#9] + +(82) NativeProject +Output [3]: [c_last_name#16, c_first_name#15, d_date#13] +Input [4]: [c_last_name#16, c_first_name#15, d_date#13, #9#9] + +(83) NativeShuffleExchange +Input [3]: [c_last_name#16, c_first_name#15, d_date#13] +Arguments: hashpartitioning(coalesce(c_last_name#16, ), isnull(c_last_name#16), coalesce(c_first_name#15, ), isnull(c_first_name#15), coalesce(d_date#13, 1970-01-01), isnull(d_date#13), 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(84) ShuffleQueryStage +Output [3]: [c_last_name#16, c_first_name#15, d_date#13] +Arguments: X + +(85) AQEShuffleRead +Input [3]: [c_last_name#16, c_first_name#15, d_date#13] +Arguments: coalesced + +(86) InputAdapter +Input [3]: [c_last_name#16, c_first_name#15, d_date#13] + +(87) NativeSort +Input [3]: [c_last_name#16, c_first_name#15, d_date#13] +Arguments: [coalesce(c_last_name#16, ) ASC NULLS FIRST, isnull(c_last_name#16) ASC NULLS FIRST, coalesce(c_first_name#15, ) ASC NULLS FIRST, isnull(c_first_name#15) ASC NULLS FIRST, coalesce(d_date#13, 1970-01-01) ASC NULLS FIRST, isnull(d_date#13) 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#16, ), isnull(c_last_name#16), coalesce(c_first_name#15, ), isnull(c_first_name#15), coalesce(d_date#13, 1970-01-01), isnull(d_date#13)] +Join type: LeftSemi +Join condition: None + +(186) Scan parquet +Output [2]: [ws_sold_date_sk#17, ws_bill_customer_sk#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_bill_customer_sk)] +ReadSchema: struct + +(90) InputAdapter +Input [2]: [ws_sold_date_sk#17, ws_bill_customer_sk#18] +Arguments: [#17, #18] + +(91) NativeFilter +Input [2]: [#17#17, #18#18] +Condition : (isnotnull(ws_sold_date_sk#17) AND isnotnull(ws_bill_customer_sk#18)) + +(92) NativeShuffleExchange +Input [2]: [#17#17, #18#18] +Arguments: hashpartitioning(ws_sold_date_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(93) ShuffleQueryStage +Output [2]: [#17#17, #18#18] +Arguments: X + +(94) AQEShuffleRead +Input [2]: [#17#17, #18#18] +Arguments: coalesced + +(95) InputAdapter +Input [2]: [#17#17, #18#18] + +(96) NativeSort +Input [2]: [#17#17, #18#18] +Arguments: [ws_sold_date_sk#17 ASC NULLS FIRST], false + +(97) ReusedExchange [Reuses operator id: 13] +Output [2]: [d_date_sk#19, d_date#20] + +(98) ShuffleQueryStage +Output [2]: [d_date_sk#19, d_date#20] +Arguments: X + +(99) AQEShuffleRead +Input [2]: [d_date_sk#19, d_date#20] +Arguments: coalesced + +(100) InputAdapter +Input [2]: [d_date_sk#19, d_date#20] +Arguments: [#19, #20] + +(101) InputAdapter +Input [2]: [#19#19, #20#20] + +(102) NativeSort +Input [2]: [#19#19, #20#20] +Arguments: [d_date_sk#19 ASC NULLS FIRST], false + +(103) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#17] +Right keys [1]: [d_date_sk#19] +Join type: Inner +Join condition: None + +(104) NativeProject +Output [2]: [ws_bill_customer_sk#18, d_date#20] +Input [4]: [#17#17, #18#18, #19#19, #20#20] + +(105) NativeShuffleExchange +Input [2]: [ws_bill_customer_sk#18, d_date#20] +Arguments: hashpartitioning(ws_bill_customer_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(106) ShuffleQueryStage +Output [2]: [ws_bill_customer_sk#18, d_date#20] +Arguments: X + +(107) AQEShuffleRead +Input [2]: [ws_bill_customer_sk#18, d_date#20] +Arguments: coalesced + +(108) InputAdapter +Input [2]: [ws_bill_customer_sk#18, d_date#20] + +(109) NativeSort +Input [2]: [ws_bill_customer_sk#18, d_date#20] +Arguments: [ws_bill_customer_sk#18 ASC NULLS FIRST], false + +(110) ReusedExchange [Reuses operator id: 28] +Output [3]: [c_customer_sk#21, c_first_name#22, c_last_name#23] + +(111) ShuffleQueryStage +Output [3]: [c_customer_sk#21, c_first_name#22, c_last_name#23] +Arguments: X + +(112) AQEShuffleRead +Input [3]: [c_customer_sk#21, c_first_name#22, c_last_name#23] +Arguments: coalesced + +(113) InputAdapter +Input [3]: [c_customer_sk#21, c_first_name#22, c_last_name#23] +Arguments: [#21, #22, #23] + +(114) InputAdapter +Input [3]: [#21#21, #22#22, #23#23] + +(115) NativeSort +Input [3]: [#21#21, #22#22, #23#23] +Arguments: [c_customer_sk#21 ASC NULLS FIRST], false + +(116) NativeSortMergeJoin +Left keys [1]: [ws_bill_customer_sk#18] +Right keys [1]: [c_customer_sk#21] +Join type: Inner +Join condition: None + +(117) NativeProject +Output [3]: [c_last_name#23, c_first_name#22, d_date#20] +Input [5]: [ws_bill_customer_sk#18, d_date#20, #21#21, #22#22, #23#23] + +(118) NativeHashAggregate +Input [3]: [c_last_name#23, c_first_name#22, d_date#20] +Keys [3]: [c_last_name#23, c_first_name#22, d_date#20] +Functions: [] +Aggregate Attributes: [] +Results [4]: [c_last_name#23, c_first_name#22, d_date#20, #9#9] + +(119) NativeShuffleExchange +Input [4]: [c_last_name#23, c_first_name#22, d_date#20, #9#9] +Arguments: hashpartitioning(c_last_name#23, c_first_name#22, d_date#20, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(120) ShuffleQueryStage +Output [4]: [c_last_name#23, c_first_name#22, d_date#20, #9#9] +Arguments: X + +(121) AQEShuffleRead +Input [4]: [c_last_name#23, c_first_name#22, d_date#20, #9#9] +Arguments: coalesced + +(122) InputAdapter +Input [4]: [c_last_name#23, c_first_name#22, d_date#20, #9#9] + +(123) NativeHashAggregate +Input [4]: [c_last_name#23, c_first_name#22, d_date#20, #9#9] +Keys [3]: [c_last_name#23, c_first_name#22, d_date#20] +Functions: [] +Aggregate Attributes: [] +Results [4]: [c_last_name#23, c_first_name#22, d_date#20, #9#9] + +(124) NativeProject +Output [3]: [c_last_name#23, c_first_name#22, d_date#20] +Input [4]: [c_last_name#23, c_first_name#22, d_date#20, #9#9] + +(125) NativeShuffleExchange +Input [3]: [c_last_name#23, c_first_name#22, d_date#20] +Arguments: hashpartitioning(coalesce(c_last_name#23, ), isnull(c_last_name#23), coalesce(c_first_name#22, ), isnull(c_first_name#22), coalesce(d_date#20, 1970-01-01), isnull(d_date#20), 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(126) ShuffleQueryStage +Output [3]: [c_last_name#23, c_first_name#22, d_date#20] +Arguments: X + +(127) AQEShuffleRead +Input [3]: [c_last_name#23, c_first_name#22, d_date#20] +Arguments: coalesced + +(128) InputAdapter +Input [3]: [c_last_name#23, c_first_name#22, d_date#20] + +(129) NativeSort +Input [3]: [c_last_name#23, c_first_name#22, d_date#20] +Arguments: [coalesce(c_last_name#23, ) ASC NULLS FIRST, isnull(c_last_name#23) ASC NULLS FIRST, coalesce(c_first_name#22, ) ASC NULLS FIRST, isnull(c_first_name#22) ASC NULLS FIRST, coalesce(d_date#20, 1970-01-01) ASC NULLS FIRST, isnull(d_date#20) 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#23, ), isnull(c_last_name#23), coalesce(c_first_name#22, ), isnull(c_first_name#22), coalesce(d_date#20, 1970-01-01), isnull(d_date#20)] +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#24] +Results [1]: [#9#9] + +(133) NativeShuffleExchange +Input [1]: [#9#9] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=15] + +(134) ShuffleQueryStage +Output [1]: [#9#9] +Arguments: X + +(135) NativeHashAggregate +Input [1]: [#9#9] +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:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_customer_sk)] +ReadSchema: struct + +(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:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)] +ReadSchema: struct + +(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:/] +PushedFilters: [IsNotNull(c_customer_sk)] +ReadSchema: struct + +(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#10, cs_bill_customer_sk#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk), IsNotNull(cs_bill_customer_sk)] +ReadSchema: struct + +(162) Filter +Input [2]: [cs_sold_date_sk#10, cs_bill_customer_sk#11] +Condition : (isnotnull(cs_sold_date_sk#10) AND isnotnull(cs_bill_customer_sk#11)) + +(163) Exchange +Input [2]: [cs_sold_date_sk#10, cs_bill_customer_sk#11] +Arguments: hashpartitioning(cs_sold_date_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(164) Sort +Input [2]: [cs_sold_date_sk#10, cs_bill_customer_sk#11] +Arguments: [cs_sold_date_sk#10 ASC NULLS FIRST], false, 0 + +(165) Scan parquet +Output [3]: [d_date_sk#12, d_date#13, d_month_seq#27] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)] +ReadSchema: struct + +(166) Filter +Input [3]: [d_date_sk#12, d_date#13, 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#12)) + +(167) Project +Output [2]: [d_date_sk#12, d_date#13] +Input [3]: [d_date_sk#12, d_date#13, d_month_seq#27] + +(168) Exchange +Input [2]: [d_date_sk#12, d_date#13] +Arguments: hashpartitioning(d_date_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(169) Sort +Input [2]: [d_date_sk#12, d_date#13] +Arguments: [d_date_sk#12 ASC NULLS FIRST], false, 0 + +(170) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#10] +Right keys [1]: [d_date_sk#12] +Join type: Inner +Join condition: None + +(171) Project +Output [2]: [cs_bill_customer_sk#11, d_date#13] +Input [4]: [cs_sold_date_sk#10, cs_bill_customer_sk#11, d_date_sk#12, d_date#13] + +(172) Exchange +Input [2]: [cs_bill_customer_sk#11, d_date#13] +Arguments: hashpartitioning(cs_bill_customer_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(173) Sort +Input [2]: [cs_bill_customer_sk#11, d_date#13] +Arguments: [cs_bill_customer_sk#11 ASC NULLS FIRST], false, 0 + +(174) Scan parquet +Output [3]: [c_customer_sk#14, c_first_name#15, c_last_name#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk)] +ReadSchema: struct + +(175) Filter +Input [3]: [c_customer_sk#14, c_first_name#15, c_last_name#16] +Condition : isnotnull(c_customer_sk#14) + +(176) Exchange +Input [3]: [c_customer_sk#14, c_first_name#15, c_last_name#16] +Arguments: hashpartitioning(c_customer_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(177) Sort +Input [3]: [c_customer_sk#14, c_first_name#15, c_last_name#16] +Arguments: [c_customer_sk#14 ASC NULLS FIRST], false, 0 + +(178) SortMergeJoin +Left keys [1]: [cs_bill_customer_sk#11] +Right keys [1]: [c_customer_sk#14] +Join type: Inner +Join condition: None + +(179) Project +Output [3]: [c_last_name#16, c_first_name#15, d_date#13] +Input [5]: [cs_bill_customer_sk#11, d_date#13, c_customer_sk#14, c_first_name#15, c_last_name#16] + +(180) HashAggregate +Input [3]: [c_last_name#16, c_first_name#15, d_date#13] +Keys [3]: [c_last_name#16, c_first_name#15, d_date#13] +Functions: [] +Aggregate Attributes: [] +Results [3]: [c_last_name#16, c_first_name#15, d_date#13] + +(181) Exchange +Input [3]: [c_last_name#16, c_first_name#15, d_date#13] +Arguments: hashpartitioning(c_last_name#16, c_first_name#15, d_date#13, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(182) HashAggregate +Input [3]: [c_last_name#16, c_first_name#15, d_date#13] +Keys [3]: [c_last_name#16, c_first_name#15, d_date#13] +Functions: [] +Aggregate Attributes: [] +Results [3]: [c_last_name#16, c_first_name#15, d_date#13] + +(183) Exchange +Input [3]: [c_last_name#16, c_first_name#15, d_date#13] +Arguments: hashpartitioning(coalesce(c_last_name#16, ), isnull(c_last_name#16), coalesce(c_first_name#15, ), isnull(c_first_name#15), coalesce(d_date#13, 1970-01-01), isnull(d_date#13), 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(184) Sort +Input [3]: [c_last_name#16, c_first_name#15, d_date#13] +Arguments: [coalesce(c_last_name#16, ) ASC NULLS FIRST, isnull(c_last_name#16) ASC NULLS FIRST, coalesce(c_first_name#15, ) ASC NULLS FIRST, isnull(c_first_name#15) ASC NULLS FIRST, coalesce(d_date#13, 1970-01-01) ASC NULLS FIRST, isnull(d_date#13) 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#16, ), isnull(c_last_name#16), coalesce(c_first_name#15, ), isnull(c_first_name#15), coalesce(d_date#13, 1970-01-01), isnull(d_date#13)] +Join type: LeftSemi +Join condition: None + +(186) Scan parquet +Output [2]: [ws_sold_date_sk#17, ws_bill_customer_sk#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_bill_customer_sk)] +ReadSchema: struct + +(187) Filter +Input [2]: [ws_sold_date_sk#17, ws_bill_customer_sk#18] +Condition : (isnotnull(ws_sold_date_sk#17) AND isnotnull(ws_bill_customer_sk#18)) + +(188) Exchange +Input [2]: [ws_sold_date_sk#17, ws_bill_customer_sk#18] +Arguments: hashpartitioning(ws_sold_date_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(189) Sort +Input [2]: [ws_sold_date_sk#17, ws_bill_customer_sk#18] +Arguments: [ws_sold_date_sk#17 ASC NULLS FIRST], false, 0 + +(190) Scan parquet +Output [3]: [d_date_sk#19, d_date#20, d_month_seq#28] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)] +ReadSchema: struct + +(191) Filter +Input [3]: [d_date_sk#19, d_date#20, 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#19)) + +(192) Project +Output [2]: [d_date_sk#19, d_date#20] +Input [3]: [d_date_sk#19, d_date#20, d_month_seq#28] + +(193) Exchange +Input [2]: [d_date_sk#19, d_date#20] +Arguments: hashpartitioning(d_date_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(194) Sort +Input [2]: [d_date_sk#19, d_date#20] +Arguments: [d_date_sk#19 ASC NULLS FIRST], false, 0 + +(195) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#17] +Right keys [1]: [d_date_sk#19] +Join type: Inner +Join condition: None + +(196) Project +Output [2]: [ws_bill_customer_sk#18, d_date#20] +Input [4]: [ws_sold_date_sk#17, ws_bill_customer_sk#18, d_date_sk#19, d_date#20] + +(197) Exchange +Input [2]: [ws_bill_customer_sk#18, d_date#20] +Arguments: hashpartitioning(ws_bill_customer_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(198) Sort +Input [2]: [ws_bill_customer_sk#18, d_date#20] +Arguments: [ws_bill_customer_sk#18 ASC NULLS FIRST], false, 0 + +(199) Scan parquet +Output [3]: [c_customer_sk#21, c_first_name#22, c_last_name#23] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk)] +ReadSchema: struct + +(200) Filter +Input [3]: [c_customer_sk#21, c_first_name#22, c_last_name#23] +Condition : isnotnull(c_customer_sk#21) + +(201) Exchange +Input [3]: [c_customer_sk#21, c_first_name#22, c_last_name#23] +Arguments: hashpartitioning(c_customer_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=31] + +(202) Sort +Input [3]: [c_customer_sk#21, c_first_name#22, c_last_name#23] +Arguments: [c_customer_sk#21 ASC NULLS FIRST], false, 0 + +(203) SortMergeJoin +Left keys [1]: [ws_bill_customer_sk#18] +Right keys [1]: [c_customer_sk#21] +Join type: Inner +Join condition: None + +(204) Project +Output [3]: [c_last_name#23, c_first_name#22, d_date#20] +Input [5]: [ws_bill_customer_sk#18, d_date#20, c_customer_sk#21, c_first_name#22, c_last_name#23] + +(205) HashAggregate +Input [3]: [c_last_name#23, c_first_name#22, d_date#20] +Keys [3]: [c_last_name#23, c_first_name#22, d_date#20] +Functions: [] +Aggregate Attributes: [] +Results [3]: [c_last_name#23, c_first_name#22, d_date#20] + +(206) Exchange +Input [3]: [c_last_name#23, c_first_name#22, d_date#20] +Arguments: hashpartitioning(c_last_name#23, c_first_name#22, d_date#20, 100), ENSURE_REQUIREMENTS, [plan_id=32] + +(207) HashAggregate +Input [3]: [c_last_name#23, c_first_name#22, d_date#20] +Keys [3]: [c_last_name#23, c_first_name#22, d_date#20] +Functions: [] +Aggregate Attributes: [] +Results [3]: [c_last_name#23, c_first_name#22, d_date#20] + +(208) Exchange +Input [3]: [c_last_name#23, c_first_name#22, d_date#20] +Arguments: hashpartitioning(coalesce(c_last_name#23, ), isnull(c_last_name#23), coalesce(c_first_name#22, ), isnull(c_first_name#22), coalesce(d_date#20, 1970-01-01), isnull(d_date#20), 100), ENSURE_REQUIREMENTS, [plan_id=33] + +(209) Sort +Input [3]: [c_last_name#23, c_first_name#22, d_date#20] +Arguments: [coalesce(c_last_name#23, ) ASC NULLS FIRST, isnull(c_last_name#23) ASC NULLS FIRST, coalesce(c_first_name#22, ) ASC NULLS FIRST, isnull(c_first_name#22) ASC NULLS FIRST, coalesce(d_date#20, 1970-01-01) ASC NULLS FIRST, isnull(d_date#20) 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#23, ), isnull(c_last_name#23), coalesce(c_first_name#22, ), isnull(c_first_name#22), coalesce(d_date#20, 1970-01-01), isnull(d_date#20)] +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#24] +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 + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q39a.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q39a.txt new file mode 100644 index 000000000..efd00abed --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q39a.txt @@ -0,0 +1,948 @@ +== Physical Plan == +AdaptiveSparkPlan (174) ++- == Final Plan == + NativeSort (102) + +- InputAdapter (101) + +- AQEShuffleRead (100) + +- ShuffleQueryStage (99), Statistics(X) + +- NativeShuffleExchange (98) + +- NativeSortMergeJoin Inner (97) + :- NativeSort (64) + : +- InputAdapter (63) + : +- AQEShuffleRead (62) + : +- ShuffleQueryStage (61), Statistics(X) + : +- NativeShuffleExchange (60) + : +- NativeProject (59) + : +- NativeFilter (58) + : +- NativeProject (57) + : +- NativeHashAggregate (56) + : +- InputAdapter (55) + : +- AQEShuffleRead (54) + : +- ShuffleQueryStage (53), Statistics(X) + : +- NativeShuffleExchange (52) + : +- NativeHashAggregate (51) + : +- NativeProject (50) + : +- NativeProject (49) + : +- NativeSortMergeJoin Inner (48) + : :- NativeSort (38) + : : +- InputAdapter (37) + : : +- AQEShuffleRead (36) + : : +- ShuffleQueryStage (35), Statistics(X) + : : +- NativeShuffleExchange (34) + : : +- NativeProject (33) + : : +- NativeSortMergeJoin Inner (32) + : : :- NativeSort (23) + : : : +- InputAdapter (22) + : : : +- AQEShuffleRead (21) + : : : +- ShuffleQueryStage (20), Statistics(X) + : : : +- NativeShuffleExchange (19) + : : : +- NativeProject (18) + : : : +- NativeSortMergeJoin Inner (17) + : : : :- NativeSort (8) + : : : : +- InputAdapter (7) + : : : : +- AQEShuffleRead (6) + : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : +- NativeShuffleExchange (4) + : : : : +- NativeFilter (3) + : : : : +- InputAdapter (2) + : : : : +- NativeParquetScan (1) + : : : +- NativeSort (16) + : : : +- InputAdapter (15) + : : : +- AQEShuffleRead (14) + : : : +- ShuffleQueryStage (13), Statistics(X) + : : : +- NativeShuffleExchange (12) + : : : +- NativeFilter (11) + : : : +- InputAdapter (10) + : : : +- NativeParquetScan (9) + : : +- NativeSort (31) + : : +- InputAdapter (30) + : : +- AQEShuffleRead (29) + : : +- ShuffleQueryStage (28), Statistics(X) + : : +- NativeShuffleExchange (27) + : : +- NativeFilter (26) + : : +- InputAdapter (25) + : : +- NativeParquetScan (24) + : +- NativeSort (47) + : +- InputAdapter (46) + : +- AQEShuffleRead (45) + : +- ShuffleQueryStage (44), Statistics(X) + : +- NativeShuffleExchange (43) + : +- NativeProject (42) + : +- NativeFilter (41) + : +- InputAdapter (40) + : +- NativeParquetScan (39) + +- NativeSort (96) + +- InputAdapter (95) + +- AQEShuffleRead (94) + +- ShuffleQueryStage (93), Statistics(X) + +- NativeShuffleExchange (92) + +- NativeProject (91) + +- NativeFilter (90) + +- NativeProject (89) + +- NativeHashAggregate (88) + +- InputAdapter (87) + +- AQEShuffleRead (86) + +- ShuffleQueryStage (85), Statistics(X) + +- NativeShuffleExchange (84) + +- NativeHashAggregate (83) + +- NativeProject (82) + +- NativeProject (81) + +- NativeSortMergeJoin Inner (80) + :- NativeSort (70) + : +- InputAdapter (69) + : +- InputAdapter (68) + : +- AQEShuffleRead (67) + : +- ShuffleQueryStage (66), Statistics(X) + : +- ReusedExchange (65) + +- NativeSort (79) + +- InputAdapter (78) + +- AQEShuffleRead (77) + +- ShuffleQueryStage (76), Statistics(X) + +- NativeShuffleExchange (75) + +- NativeProject (74) + +- NativeFilter (73) + +- InputAdapter (72) + +- NativeParquetScan (71) ++- == Initial Plan == + Sort (173) + +- Exchange (172) + +- SortMergeJoin Inner (171) + :- Sort (136) + : +- Exchange (135) + : +- Project (134) + : +- Filter (133) + : +- HashAggregate (132) + : +- Exchange (131) + : +- HashAggregate (130) + : +- Project (129) + : +- SortMergeJoin Inner (128) + : :- Sort (122) + : : +- Exchange (121) + : : +- Project (120) + : : +- SortMergeJoin Inner (119) + : : :- Sort (114) + : : : +- Exchange (113) + : : : +- Project (112) + : : : +- SortMergeJoin Inner (111) + : : : :- Sort (106) + : : : : +- Exchange (105) + : : : : +- Filter (104) + : : : : +- Scan parquet (103) + : : : +- Sort (110) + : : : +- Exchange (109) + : : : +- Filter (108) + : : : +- Scan parquet (107) + : : +- Sort (118) + : : +- Exchange (117) + : : +- Filter (116) + : : +- Scan parquet (115) + : +- Sort (127) + : +- Exchange (126) + : +- Project (125) + : +- Filter (124) + : +- Scan parquet (123) + +- Sort (170) + +- Exchange (169) + +- Project (168) + +- Filter (167) + +- HashAggregate (166) + +- Exchange (165) + +- HashAggregate (164) + +- Project (163) + +- SortMergeJoin Inner (162) + :- Sort (156) + : +- Exchange (155) + : +- Project (154) + : +- SortMergeJoin Inner (153) + : :- Sort (148) + : : +- Exchange (147) + : : +- Project (146) + : : +- SortMergeJoin Inner (145) + : : :- Sort (140) + : : : +- Exchange (139) + : : : +- Filter (138) + : : : +- Scan parquet (137) + : : +- Sort (144) + : : +- Exchange (143) + : : +- Filter (142) + : : +- Scan parquet (141) + : +- Sort (152) + : +- Exchange (151) + : +- Filter (150) + : +- Scan parquet (149) + +- Sort (161) + +- Exchange (160) + +- Project (159) + +- Filter (158) + +- Scan parquet (157) + + +(103) Scan parquet +Output [4]: [inv_date_sk#1, inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(inv_item_sk), IsNotNull(inv_warehouse_sk), IsNotNull(inv_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [4]: [inv_date_sk#1, inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Arguments: [#1, #2, #3, #4] + +(3) NativeFilter +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Condition : ((isnotnull(inv_item_sk#2) AND isnotnull(inv_warehouse_sk#3)) AND isnotnull(inv_date_sk#1)) + +(4) NativeShuffleExchange +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: hashpartitioning(inv_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: X + +(6) AQEShuffleRead +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: coalesced + +(7) InputAdapter +Input [4]: [#1#1, #2#2, #3#3, #4#4] + +(8) NativeSort +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: [inv_item_sk#2 ASC NULLS FIRST], false + +(107) Scan parquet +Output [1]: [i_item_sk#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [1]: [i_item_sk#5] +Arguments: [#5] + +(11) NativeFilter +Input [1]: [#5#5] +Condition : isnotnull(i_item_sk#5) + +(12) NativeShuffleExchange +Input [1]: [#5#5] +Arguments: hashpartitioning(i_item_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [1]: [#5#5] +Arguments: X + +(14) AQEShuffleRead +Input [1]: [#5#5] +Arguments: coalesced + +(15) InputAdapter +Input [1]: [#5#5] + +(16) NativeSort +Input [1]: [#5#5] +Arguments: [i_item_sk#5 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [1]: [inv_item_sk#2] +Right keys [1]: [i_item_sk#5] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [4]: [inv_date_sk#1, inv_warehouse_sk#3, inv_quantity_on_hand#4, i_item_sk#5] +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] + +(19) NativeShuffleExchange +Input [4]: [inv_date_sk#1, inv_warehouse_sk#3, inv_quantity_on_hand#4, i_item_sk#5] +Arguments: hashpartitioning(inv_warehouse_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [4]: [inv_date_sk#1, inv_warehouse_sk#3, inv_quantity_on_hand#4, i_item_sk#5] +Arguments: X + +(21) AQEShuffleRead +Input [4]: [inv_date_sk#1, inv_warehouse_sk#3, inv_quantity_on_hand#4, i_item_sk#5] +Arguments: coalesced + +(22) InputAdapter +Input [4]: [inv_date_sk#1, inv_warehouse_sk#3, inv_quantity_on_hand#4, i_item_sk#5] + +(23) NativeSort +Input [4]: [inv_date_sk#1, inv_warehouse_sk#3, inv_quantity_on_hand#4, i_item_sk#5] +Arguments: [inv_warehouse_sk#3 ASC NULLS FIRST], false + +(115) Scan parquet +Output [2]: [w_warehouse_sk#6, w_warehouse_name#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(w_warehouse_sk)] +ReadSchema: struct + +(25) InputAdapter +Input [2]: [w_warehouse_sk#6, w_warehouse_name#7] +Arguments: [#6, #7] + +(26) NativeFilter +Input [2]: [#6#6, #7#7] +Condition : isnotnull(w_warehouse_sk#6) + +(27) NativeShuffleExchange +Input [2]: [#6#6, #7#7] +Arguments: hashpartitioning(w_warehouse_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(28) ShuffleQueryStage +Output [2]: [#6#6, #7#7] +Arguments: X + +(29) AQEShuffleRead +Input [2]: [#6#6, #7#7] +Arguments: coalesced + +(30) InputAdapter +Input [2]: [#6#6, #7#7] + +(31) NativeSort +Input [2]: [#6#6, #7#7] +Arguments: [w_warehouse_sk#6 ASC NULLS FIRST], false + +(32) NativeSortMergeJoin +Left keys [1]: [inv_warehouse_sk#3] +Right keys [1]: [w_warehouse_sk#6] +Join type: Inner +Join condition: None + +(33) NativeProject +Output [5]: [inv_date_sk#1, inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7] +Input [6]: [inv_date_sk#1, inv_warehouse_sk#3, inv_quantity_on_hand#4, i_item_sk#5, #6#6, #7#7] + +(34) NativeShuffleExchange +Input [5]: [inv_date_sk#1, inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7] +Arguments: hashpartitioning(inv_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(35) ShuffleQueryStage +Output [5]: [inv_date_sk#1, inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7] +Arguments: X + +(36) AQEShuffleRead +Input [5]: [inv_date_sk#1, inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7] +Arguments: coalesced + +(37) InputAdapter +Input [5]: [inv_date_sk#1, inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7] + +(38) NativeSort +Input [5]: [inv_date_sk#1, inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7] +Arguments: [inv_date_sk#1 ASC NULLS FIRST], false + +(123) Scan parquet +Output [3]: [d_date_sk#8, d_year#9, d_moy#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), EqualTo(d_moy,1), IsNotNull(d_date_sk)] +ReadSchema: struct + +(40) InputAdapter +Input [3]: [d_date_sk#8, d_year#9, d_moy#10] +Arguments: [#8, #9, #10] + +(41) NativeFilter +Input [3]: [#8#8, #9#9, #10#10] +Condition : ((((isnotnull(d_year#9) AND isnotnull(d_moy#10)) AND (d_year#9 = 2001)) AND (d_moy#10 = 1)) AND isnotnull(d_date_sk#8)) + +(42) NativeProject +Output [2]: [d_date_sk#8, d_moy#10] +Input [3]: [#8#8, #9#9, #10#10] + +(43) NativeShuffleExchange +Input [2]: [d_date_sk#8, d_moy#10] +Arguments: hashpartitioning(d_date_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) ShuffleQueryStage +Output [2]: [d_date_sk#8, d_moy#10] +Arguments: X + +(45) AQEShuffleRead +Input [2]: [d_date_sk#8, d_moy#10] +Arguments: coalesced + +(46) InputAdapter +Input [2]: [d_date_sk#8, d_moy#10] + +(47) NativeSort +Input [2]: [d_date_sk#8, d_moy#10] +Arguments: [d_date_sk#8 ASC NULLS FIRST], false + +(48) NativeSortMergeJoin +Left keys [1]: [inv_date_sk#1] +Right keys [1]: [d_date_sk#8] +Join type: Inner +Join condition: None + +(49) NativeProject +Output [5]: [inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7, d_moy#10] +Input [7]: [inv_date_sk#1, inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7, d_date_sk#8, d_moy#10] + +(50) NativeProject +Output [6]: [w_warehouse_name#7 AS w_warehouse_name#7, w_warehouse_sk#6 AS w_warehouse_sk#6, i_item_sk#5 AS i_item_sk#5, d_moy#10 AS d_moy#10, cast(inv_quantity_on_hand#4 as double) AS _c4#11, inv_quantity_on_hand#4 AS _c5#12] +Input [5]: [inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7, d_moy#10] + +(51) NativeHashAggregate +Input [6]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, _c4#11, _c5#12] +Keys [4]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10] +Functions [2]: [partial_stddev_samp(_c4#11), partial_avg(_c5#12)] +Aggregate Attributes [5]: [n#13, avg#14, m2#15, sum#16, count#17] +Results [5]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, #18#18] + +(52) NativeShuffleExchange +Input [5]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, #18#18] +Arguments: hashpartitioning(w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(53) ShuffleQueryStage +Output [5]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, #18#18] +Arguments: X + +(54) AQEShuffleRead +Input [5]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, #18#18] +Arguments: coalesced + +(55) InputAdapter +Input [5]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, #18#18] + +(56) NativeHashAggregate +Input [5]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, #18#18] +Keys [4]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10] +Functions [2]: [stddev_samp(cast(inv_quantity_on_hand#4 as double)), avg(inv_quantity_on_hand#4)] +Aggregate Attributes [2]: [stddev_samp(cast(inv_quantity_on_hand#4 as double))#19, avg(inv_quantity_on_hand#4)#20] +Results [6]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, stddev_samp(cast(inv_quantity_on_hand#4 as double))#19, avg(inv_quantity_on_hand#4)#20] + +(57) NativeProject +Output [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, stddev_samp(cast(inv_quantity_on_hand#4 as double))#19 AS stdev#21, avg(inv_quantity_on_hand#4)#20 AS mean#22] +Input [6]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, stddev_samp(cast(inv_quantity_on_hand#4 as double))#19, avg(inv_quantity_on_hand#4)#20] + +(58) NativeFilter +Input [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, stdev#21, mean#22] +Condition : CASE WHEN (mean#22 = 0.0) THEN false ELSE ((stdev#21 / mean#22) > 1.0) END + +(59) NativeProject +Output [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, CASE WHEN (mean#22 = 0.0) THEN null ELSE (stdev#21 / mean#22) END AS cov#23] +Input [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, stdev#21, mean#22] + +(60) NativeShuffleExchange +Input [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, cov#23] +Arguments: hashpartitioning(i_item_sk#5, w_warehouse_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(61) ShuffleQueryStage +Output [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, cov#23] +Arguments: X + +(62) AQEShuffleRead +Input [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, cov#23] +Arguments: coalesced + +(63) InputAdapter +Input [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, cov#23] + +(64) NativeSort +Input [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, cov#23] +Arguments: [i_item_sk#5 ASC NULLS FIRST, w_warehouse_sk#6 ASC NULLS FIRST], false + +(65) ReusedExchange [Reuses operator id: 34] +Output [5]: [inv_date_sk#24, inv_quantity_on_hand#25, i_item_sk#26, w_warehouse_sk#27, w_warehouse_name#28] + +(66) ShuffleQueryStage +Output [5]: [inv_date_sk#24, inv_quantity_on_hand#25, i_item_sk#26, w_warehouse_sk#27, w_warehouse_name#28] +Arguments: X + +(67) AQEShuffleRead +Input [5]: [inv_date_sk#24, inv_quantity_on_hand#25, i_item_sk#26, w_warehouse_sk#27, w_warehouse_name#28] +Arguments: coalesced + +(68) InputAdapter +Input [5]: [inv_date_sk#24, inv_quantity_on_hand#25, i_item_sk#26, w_warehouse_sk#27, w_warehouse_name#28] +Arguments: [#24, #25, #26, #27, #28] + +(69) InputAdapter +Input [5]: [#24#24, #25#25, #26#26, #27#27, #28#28] + +(70) NativeSort +Input [5]: [#24#24, #25#25, #26#26, #27#27, #28#28] +Arguments: [inv_date_sk#24 ASC NULLS FIRST], false + +(157) Scan parquet +Output [3]: [d_date_sk#29, d_year#30, d_moy#31] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), EqualTo(d_moy,2), IsNotNull(d_date_sk)] +ReadSchema: struct + +(72) InputAdapter +Input [3]: [d_date_sk#29, d_year#30, d_moy#31] +Arguments: [#29, #30, #31] + +(73) NativeFilter +Input [3]: [#29#29, #30#30, #31#31] +Condition : ((((isnotnull(d_year#30) AND isnotnull(d_moy#31)) AND (d_year#30 = 2001)) AND (d_moy#31 = 2)) AND isnotnull(d_date_sk#29)) + +(74) NativeProject +Output [2]: [d_date_sk#29, d_moy#31] +Input [3]: [#29#29, #30#30, #31#31] + +(75) NativeShuffleExchange +Input [2]: [d_date_sk#29, d_moy#31] +Arguments: hashpartitioning(d_date_sk#29, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(76) ShuffleQueryStage +Output [2]: [d_date_sk#29, d_moy#31] +Arguments: X + +(77) AQEShuffleRead +Input [2]: [d_date_sk#29, d_moy#31] +Arguments: coalesced + +(78) InputAdapter +Input [2]: [d_date_sk#29, d_moy#31] + +(79) NativeSort +Input [2]: [d_date_sk#29, d_moy#31] +Arguments: [d_date_sk#29 ASC NULLS FIRST], false + +(80) NativeSortMergeJoin +Left keys [1]: [inv_date_sk#24] +Right keys [1]: [d_date_sk#29] +Join type: Inner +Join condition: None + +(81) NativeProject +Output [5]: [inv_quantity_on_hand#25, i_item_sk#26, w_warehouse_sk#27, w_warehouse_name#28, d_moy#31] +Input [7]: [#24#24, #25#25, #26#26, #27#27, #28#28, d_date_sk#29, d_moy#31] + +(82) NativeProject +Output [6]: [w_warehouse_name#28 AS w_warehouse_name#28, w_warehouse_sk#27 AS w_warehouse_sk#27, i_item_sk#26 AS i_item_sk#26, d_moy#31 AS d_moy#31, cast(inv_quantity_on_hand#25 as double) AS _c4#32, inv_quantity_on_hand#25 AS _c5#33] +Input [5]: [inv_quantity_on_hand#25, i_item_sk#26, w_warehouse_sk#27, w_warehouse_name#28, d_moy#31] + +(83) NativeHashAggregate +Input [6]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31, _c4#32, _c5#33] +Keys [4]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31] +Functions [2]: [partial_stddev_samp(_c4#32), partial_avg(_c5#33)] +Aggregate Attributes [5]: [n#34, avg#35, m2#36, sum#37, count#38] +Results [5]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31, #18#18] + +(84) NativeShuffleExchange +Input [5]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31, #18#18] +Arguments: hashpartitioning(w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(85) ShuffleQueryStage +Output [5]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31, #18#18] +Arguments: X + +(86) AQEShuffleRead +Input [5]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31, #18#18] +Arguments: coalesced + +(87) InputAdapter +Input [5]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31, #18#18] + +(88) NativeHashAggregate +Input [5]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31, #18#18] +Keys [4]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31] +Functions [2]: [stddev_samp(cast(inv_quantity_on_hand#25 as double)), avg(inv_quantity_on_hand#25)] +Aggregate Attributes [2]: [stddev_samp(cast(inv_quantity_on_hand#25 as double))#19, avg(inv_quantity_on_hand#25)#20] +Results [6]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31, stddev_samp(cast(inv_quantity_on_hand#25 as double))#19, avg(inv_quantity_on_hand#25)#20] + +(89) NativeProject +Output [5]: [w_warehouse_sk#27, i_item_sk#26, d_moy#31, stddev_samp(cast(inv_quantity_on_hand#25 as double))#19 AS stdev#21, avg(inv_quantity_on_hand#25)#20 AS mean#22] +Input [6]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31, stddev_samp(cast(inv_quantity_on_hand#25 as double))#19, avg(inv_quantity_on_hand#25)#20] + +(90) NativeFilter +Input [5]: [w_warehouse_sk#27, i_item_sk#26, d_moy#31, stdev#21, mean#22] +Condition : CASE WHEN (mean#22 = 0.0) THEN false ELSE ((stdev#21 / mean#22) > 1.0) END + +(91) NativeProject +Output [5]: [w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#22 AS mean#39, CASE WHEN (mean#22 = 0.0) THEN null ELSE (stdev#21 / mean#22) END AS cov#40] +Input [5]: [w_warehouse_sk#27, i_item_sk#26, d_moy#31, stdev#21, mean#22] + +(92) NativeShuffleExchange +Input [5]: [w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#39, cov#40] +Arguments: hashpartitioning(i_item_sk#26, w_warehouse_sk#27, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(93) ShuffleQueryStage +Output [5]: [w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#39, cov#40] +Arguments: X + +(94) AQEShuffleRead +Input [5]: [w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#39, cov#40] +Arguments: coalesced + +(95) InputAdapter +Input [5]: [w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#39, cov#40] + +(96) NativeSort +Input [5]: [w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#39, cov#40] +Arguments: [i_item_sk#26 ASC NULLS FIRST, w_warehouse_sk#27 ASC NULLS FIRST], false + +(97) NativeSortMergeJoin +Left keys [2]: [i_item_sk#5, w_warehouse_sk#6] +Right keys [2]: [i_item_sk#26, w_warehouse_sk#27] +Join type: Inner +Join condition: None + +(98) NativeShuffleExchange +Input [10]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, cov#23, w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#39, cov#40] +Arguments: rangepartitioning(w_warehouse_sk#6 ASC NULLS FIRST, i_item_sk#5 ASC NULLS FIRST, d_moy#10 ASC NULLS FIRST, mean#22 ASC NULLS FIRST, cov#23 ASC NULLS FIRST, d_moy#31 ASC NULLS FIRST, mean#39 ASC NULLS FIRST, cov#40 ASC NULLS FIRST, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(99) ShuffleQueryStage +Output [10]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, cov#23, w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#39, cov#40] +Arguments: X + +(100) AQEShuffleRead +Input [10]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, cov#23, w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#39, cov#40] +Arguments: coalesced + +(101) InputAdapter +Input [10]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, cov#23, w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#39, cov#40] + +(102) NativeSort +Input [10]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, cov#23, w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#39, cov#40] +Arguments: [w_warehouse_sk#6 ASC NULLS FIRST, i_item_sk#5 ASC NULLS FIRST, d_moy#10 ASC NULLS FIRST, mean#22 ASC NULLS FIRST, cov#23 ASC NULLS FIRST, d_moy#31 ASC NULLS FIRST, mean#39 ASC NULLS FIRST, cov#40 ASC NULLS FIRST], true + +(103) Scan parquet +Output [4]: [inv_date_sk#1, inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(inv_item_sk), IsNotNull(inv_warehouse_sk), IsNotNull(inv_date_sk)] +ReadSchema: struct + +(104) Filter +Input [4]: [inv_date_sk#1, inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Condition : ((isnotnull(inv_item_sk#2) AND isnotnull(inv_warehouse_sk#3)) AND isnotnull(inv_date_sk#1)) + +(105) Exchange +Input [4]: [inv_date_sk#1, inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Arguments: hashpartitioning(inv_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(106) Sort +Input [4]: [inv_date_sk#1, inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Arguments: [inv_item_sk#2 ASC NULLS FIRST], false, 0 + +(107) Scan parquet +Output [1]: [i_item_sk#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(108) Filter +Input [1]: [i_item_sk#5] +Condition : isnotnull(i_item_sk#5) + +(109) Exchange +Input [1]: [i_item_sk#5] +Arguments: hashpartitioning(i_item_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(110) Sort +Input [1]: [i_item_sk#5] +Arguments: [i_item_sk#5 ASC NULLS FIRST], false, 0 + +(111) SortMergeJoin +Left keys [1]: [inv_item_sk#2] +Right keys [1]: [i_item_sk#5] +Join type: Inner +Join condition: None + +(112) Project +Output [4]: [inv_date_sk#1, inv_warehouse_sk#3, inv_quantity_on_hand#4, i_item_sk#5] +Input [5]: [inv_date_sk#1, inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4, i_item_sk#5] + +(113) Exchange +Input [4]: [inv_date_sk#1, inv_warehouse_sk#3, inv_quantity_on_hand#4, i_item_sk#5] +Arguments: hashpartitioning(inv_warehouse_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(114) Sort +Input [4]: [inv_date_sk#1, inv_warehouse_sk#3, inv_quantity_on_hand#4, i_item_sk#5] +Arguments: [inv_warehouse_sk#3 ASC NULLS FIRST], false, 0 + +(115) Scan parquet +Output [2]: [w_warehouse_sk#6, w_warehouse_name#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(w_warehouse_sk)] +ReadSchema: struct + +(116) Filter +Input [2]: [w_warehouse_sk#6, w_warehouse_name#7] +Condition : isnotnull(w_warehouse_sk#6) + +(117) Exchange +Input [2]: [w_warehouse_sk#6, w_warehouse_name#7] +Arguments: hashpartitioning(w_warehouse_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(118) Sort +Input [2]: [w_warehouse_sk#6, w_warehouse_name#7] +Arguments: [w_warehouse_sk#6 ASC NULLS FIRST], false, 0 + +(119) SortMergeJoin +Left keys [1]: [inv_warehouse_sk#3] +Right keys [1]: [w_warehouse_sk#6] +Join type: Inner +Join condition: None + +(120) Project +Output [5]: [inv_date_sk#1, inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7] +Input [6]: [inv_date_sk#1, inv_warehouse_sk#3, inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7] + +(121) Exchange +Input [5]: [inv_date_sk#1, inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7] +Arguments: hashpartitioning(inv_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(122) Sort +Input [5]: [inv_date_sk#1, inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7] +Arguments: [inv_date_sk#1 ASC NULLS FIRST], false, 0 + +(123) Scan parquet +Output [3]: [d_date_sk#8, d_year#9, d_moy#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), EqualTo(d_moy,1), IsNotNull(d_date_sk)] +ReadSchema: struct + +(124) Filter +Input [3]: [d_date_sk#8, d_year#9, d_moy#10] +Condition : ((((isnotnull(d_year#9) AND isnotnull(d_moy#10)) AND (d_year#9 = 2001)) AND (d_moy#10 = 1)) AND isnotnull(d_date_sk#8)) + +(125) Project +Output [2]: [d_date_sk#8, d_moy#10] +Input [3]: [d_date_sk#8, d_year#9, d_moy#10] + +(126) Exchange +Input [2]: [d_date_sk#8, d_moy#10] +Arguments: hashpartitioning(d_date_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(127) Sort +Input [2]: [d_date_sk#8, d_moy#10] +Arguments: [d_date_sk#8 ASC NULLS FIRST], false, 0 + +(128) SortMergeJoin +Left keys [1]: [inv_date_sk#1] +Right keys [1]: [d_date_sk#8] +Join type: Inner +Join condition: None + +(129) Project +Output [5]: [inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7, d_moy#10] +Input [7]: [inv_date_sk#1, inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7, d_date_sk#8, d_moy#10] + +(130) HashAggregate +Input [5]: [inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7, d_moy#10] +Keys [4]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10] +Functions [2]: [partial_stddev_samp(cast(inv_quantity_on_hand#4 as double)), partial_avg(inv_quantity_on_hand#4)] +Aggregate Attributes [5]: [n#13, avg#14, m2#15, sum#16, count#17] +Results [9]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, n#41, avg#42, m2#43, sum#44, count#45] + +(131) Exchange +Input [9]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, n#41, avg#42, m2#43, sum#44, count#45] +Arguments: hashpartitioning(w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(132) HashAggregate +Input [9]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, n#41, avg#42, m2#43, sum#44, count#45] +Keys [4]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10] +Functions [2]: [stddev_samp(cast(inv_quantity_on_hand#4 as double)), avg(inv_quantity_on_hand#4)] +Aggregate Attributes [2]: [stddev_samp(cast(inv_quantity_on_hand#4 as double))#19, avg(inv_quantity_on_hand#4)#20] +Results [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, stddev_samp(cast(inv_quantity_on_hand#4 as double))#19 AS stdev#21, avg(inv_quantity_on_hand#4)#20 AS mean#22] + +(133) Filter +Input [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, stdev#21, mean#22] +Condition : CASE WHEN (mean#22 = 0.0) THEN false ELSE ((stdev#21 / mean#22) > 1.0) END + +(134) Project +Output [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, CASE WHEN (mean#22 = 0.0) THEN null ELSE (stdev#21 / mean#22) END AS cov#23] +Input [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, stdev#21, mean#22] + +(135) Exchange +Input [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, cov#23] +Arguments: hashpartitioning(i_item_sk#5, w_warehouse_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(136) Sort +Input [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, cov#23] +Arguments: [i_item_sk#5 ASC NULLS FIRST, w_warehouse_sk#6 ASC NULLS FIRST], false, 0 + +(137) Scan parquet +Output [4]: [inv_date_sk#24, inv_item_sk#46, inv_warehouse_sk#47, inv_quantity_on_hand#25] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(inv_item_sk), IsNotNull(inv_warehouse_sk), IsNotNull(inv_date_sk)] +ReadSchema: struct + +(138) Filter +Input [4]: [inv_date_sk#24, inv_item_sk#46, inv_warehouse_sk#47, inv_quantity_on_hand#25] +Condition : ((isnotnull(inv_item_sk#46) AND isnotnull(inv_warehouse_sk#47)) AND isnotnull(inv_date_sk#24)) + +(139) Exchange +Input [4]: [inv_date_sk#24, inv_item_sk#46, inv_warehouse_sk#47, inv_quantity_on_hand#25] +Arguments: hashpartitioning(inv_item_sk#46, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(140) Sort +Input [4]: [inv_date_sk#24, inv_item_sk#46, inv_warehouse_sk#47, inv_quantity_on_hand#25] +Arguments: [inv_item_sk#46 ASC NULLS FIRST], false, 0 + +(141) Scan parquet +Output [1]: [i_item_sk#26] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(142) Filter +Input [1]: [i_item_sk#26] +Condition : isnotnull(i_item_sk#26) + +(143) Exchange +Input [1]: [i_item_sk#26] +Arguments: hashpartitioning(i_item_sk#26, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(144) Sort +Input [1]: [i_item_sk#26] +Arguments: [i_item_sk#26 ASC NULLS FIRST], false, 0 + +(145) SortMergeJoin +Left keys [1]: [inv_item_sk#46] +Right keys [1]: [i_item_sk#26] +Join type: Inner +Join condition: None + +(146) Project +Output [4]: [inv_date_sk#24, inv_warehouse_sk#47, inv_quantity_on_hand#25, i_item_sk#26] +Input [5]: [inv_date_sk#24, inv_item_sk#46, inv_warehouse_sk#47, inv_quantity_on_hand#25, i_item_sk#26] + +(147) Exchange +Input [4]: [inv_date_sk#24, inv_warehouse_sk#47, inv_quantity_on_hand#25, i_item_sk#26] +Arguments: hashpartitioning(inv_warehouse_sk#47, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(148) Sort +Input [4]: [inv_date_sk#24, inv_warehouse_sk#47, inv_quantity_on_hand#25, i_item_sk#26] +Arguments: [inv_warehouse_sk#47 ASC NULLS FIRST], false, 0 + +(149) Scan parquet +Output [2]: [w_warehouse_sk#27, w_warehouse_name#28] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(w_warehouse_sk)] +ReadSchema: struct + +(150) Filter +Input [2]: [w_warehouse_sk#27, w_warehouse_name#28] +Condition : isnotnull(w_warehouse_sk#27) + +(151) Exchange +Input [2]: [w_warehouse_sk#27, w_warehouse_name#28] +Arguments: hashpartitioning(w_warehouse_sk#27, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(152) Sort +Input [2]: [w_warehouse_sk#27, w_warehouse_name#28] +Arguments: [w_warehouse_sk#27 ASC NULLS FIRST], false, 0 + +(153) SortMergeJoin +Left keys [1]: [inv_warehouse_sk#47] +Right keys [1]: [w_warehouse_sk#27] +Join type: Inner +Join condition: None + +(154) Project +Output [5]: [inv_date_sk#24, inv_quantity_on_hand#25, i_item_sk#26, w_warehouse_sk#27, w_warehouse_name#28] +Input [6]: [inv_date_sk#24, inv_warehouse_sk#47, inv_quantity_on_hand#25, i_item_sk#26, w_warehouse_sk#27, w_warehouse_name#28] + +(155) Exchange +Input [5]: [inv_date_sk#24, inv_quantity_on_hand#25, i_item_sk#26, w_warehouse_sk#27, w_warehouse_name#28] +Arguments: hashpartitioning(inv_date_sk#24, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(156) Sort +Input [5]: [inv_date_sk#24, inv_quantity_on_hand#25, i_item_sk#26, w_warehouse_sk#27, w_warehouse_name#28] +Arguments: [inv_date_sk#24 ASC NULLS FIRST], false, 0 + +(157) Scan parquet +Output [3]: [d_date_sk#29, d_year#30, d_moy#31] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), EqualTo(d_moy,2), IsNotNull(d_date_sk)] +ReadSchema: struct + +(158) Filter +Input [3]: [d_date_sk#29, d_year#30, d_moy#31] +Condition : ((((isnotnull(d_year#30) AND isnotnull(d_moy#31)) AND (d_year#30 = 2001)) AND (d_moy#31 = 2)) AND isnotnull(d_date_sk#29)) + +(159) Project +Output [2]: [d_date_sk#29, d_moy#31] +Input [3]: [d_date_sk#29, d_year#30, d_moy#31] + +(160) Exchange +Input [2]: [d_date_sk#29, d_moy#31] +Arguments: hashpartitioning(d_date_sk#29, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(161) Sort +Input [2]: [d_date_sk#29, d_moy#31] +Arguments: [d_date_sk#29 ASC NULLS FIRST], false, 0 + +(162) SortMergeJoin +Left keys [1]: [inv_date_sk#24] +Right keys [1]: [d_date_sk#29] +Join type: Inner +Join condition: None + +(163) Project +Output [5]: [inv_quantity_on_hand#25, i_item_sk#26, w_warehouse_sk#27, w_warehouse_name#28, d_moy#31] +Input [7]: [inv_date_sk#24, inv_quantity_on_hand#25, i_item_sk#26, w_warehouse_sk#27, w_warehouse_name#28, d_date_sk#29, d_moy#31] + +(164) HashAggregate +Input [5]: [inv_quantity_on_hand#25, i_item_sk#26, w_warehouse_sk#27, w_warehouse_name#28, d_moy#31] +Keys [4]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31] +Functions [2]: [partial_stddev_samp(cast(inv_quantity_on_hand#25 as double)), partial_avg(inv_quantity_on_hand#25)] +Aggregate Attributes [5]: [n#34, avg#35, m2#36, sum#37, count#38] +Results [9]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31, n#48, avg#49, m2#50, sum#51, count#52] + +(165) Exchange +Input [9]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31, n#48, avg#49, m2#50, sum#51, count#52] +Arguments: hashpartitioning(w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(166) HashAggregate +Input [9]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31, n#48, avg#49, m2#50, sum#51, count#52] +Keys [4]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31] +Functions [2]: [stddev_samp(cast(inv_quantity_on_hand#25 as double)), avg(inv_quantity_on_hand#25)] +Aggregate Attributes [2]: [stddev_samp(cast(inv_quantity_on_hand#25 as double))#19, avg(inv_quantity_on_hand#25)#20] +Results [5]: [w_warehouse_sk#27, i_item_sk#26, d_moy#31, stddev_samp(cast(inv_quantity_on_hand#25 as double))#19 AS stdev#21, avg(inv_quantity_on_hand#25)#20 AS mean#22] + +(167) Filter +Input [5]: [w_warehouse_sk#27, i_item_sk#26, d_moy#31, stdev#21, mean#22] +Condition : CASE WHEN (mean#22 = 0.0) THEN false ELSE ((stdev#21 / mean#22) > 1.0) END + +(168) Project +Output [5]: [w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#22 AS mean#39, CASE WHEN (mean#22 = 0.0) THEN null ELSE (stdev#21 / mean#22) END AS cov#40] +Input [5]: [w_warehouse_sk#27, i_item_sk#26, d_moy#31, stdev#21, mean#22] + +(169) Exchange +Input [5]: [w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#39, cov#40] +Arguments: hashpartitioning(i_item_sk#26, w_warehouse_sk#27, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(170) Sort +Input [5]: [w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#39, cov#40] +Arguments: [i_item_sk#26 ASC NULLS FIRST, w_warehouse_sk#27 ASC NULLS FIRST], false, 0 + +(171) SortMergeJoin +Left keys [2]: [i_item_sk#5, w_warehouse_sk#6] +Right keys [2]: [i_item_sk#26, w_warehouse_sk#27] +Join type: Inner +Join condition: None + +(172) Exchange +Input [10]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, cov#23, w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#39, cov#40] +Arguments: rangepartitioning(w_warehouse_sk#6 ASC NULLS FIRST, i_item_sk#5 ASC NULLS FIRST, d_moy#10 ASC NULLS FIRST, mean#22 ASC NULLS FIRST, cov#23 ASC NULLS FIRST, d_moy#31 ASC NULLS FIRST, mean#39 ASC NULLS FIRST, cov#40 ASC NULLS FIRST, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(173) Sort +Input [10]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, cov#23, w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#39, cov#40] +Arguments: [w_warehouse_sk#6 ASC NULLS FIRST, i_item_sk#5 ASC NULLS FIRST, d_moy#10 ASC NULLS FIRST, mean#22 ASC NULLS FIRST, cov#23 ASC NULLS FIRST, d_moy#31 ASC NULLS FIRST, mean#39 ASC NULLS FIRST, cov#40 ASC NULLS FIRST], true, 0 + +(174) AdaptiveSparkPlan +Output [10]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, cov#23, w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#39, cov#40] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q39b.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q39b.txt new file mode 100644 index 000000000..546be20b8 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q39b.txt @@ -0,0 +1,948 @@ +== Physical Plan == +AdaptiveSparkPlan (174) ++- == Final Plan == + NativeSort (102) + +- InputAdapter (101) + +- AQEShuffleRead (100) + +- ShuffleQueryStage (99), Statistics(X) + +- NativeShuffleExchange (98) + +- NativeSortMergeJoin Inner (97) + :- NativeSort (64) + : +- InputAdapter (63) + : +- AQEShuffleRead (62) + : +- ShuffleQueryStage (61), Statistics(X) + : +- NativeShuffleExchange (60) + : +- NativeProject (59) + : +- NativeFilter (58) + : +- NativeProject (57) + : +- NativeHashAggregate (56) + : +- InputAdapter (55) + : +- AQEShuffleRead (54) + : +- ShuffleQueryStage (53), Statistics(X) + : +- NativeShuffleExchange (52) + : +- NativeHashAggregate (51) + : +- NativeProject (50) + : +- NativeProject (49) + : +- NativeSortMergeJoin Inner (48) + : :- NativeSort (38) + : : +- InputAdapter (37) + : : +- AQEShuffleRead (36) + : : +- ShuffleQueryStage (35), Statistics(X) + : : +- NativeShuffleExchange (34) + : : +- NativeProject (33) + : : +- NativeSortMergeJoin Inner (32) + : : :- NativeSort (23) + : : : +- InputAdapter (22) + : : : +- AQEShuffleRead (21) + : : : +- ShuffleQueryStage (20), Statistics(X) + : : : +- NativeShuffleExchange (19) + : : : +- NativeProject (18) + : : : +- NativeSortMergeJoin Inner (17) + : : : :- NativeSort (8) + : : : : +- InputAdapter (7) + : : : : +- AQEShuffleRead (6) + : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : +- NativeShuffleExchange (4) + : : : : +- NativeFilter (3) + : : : : +- InputAdapter (2) + : : : : +- NativeParquetScan (1) + : : : +- NativeSort (16) + : : : +- InputAdapter (15) + : : : +- AQEShuffleRead (14) + : : : +- ShuffleQueryStage (13), Statistics(X) + : : : +- NativeShuffleExchange (12) + : : : +- NativeFilter (11) + : : : +- InputAdapter (10) + : : : +- NativeParquetScan (9) + : : +- NativeSort (31) + : : +- InputAdapter (30) + : : +- AQEShuffleRead (29) + : : +- ShuffleQueryStage (28), Statistics(X) + : : +- NativeShuffleExchange (27) + : : +- NativeFilter (26) + : : +- InputAdapter (25) + : : +- NativeParquetScan (24) + : +- NativeSort (47) + : +- InputAdapter (46) + : +- AQEShuffleRead (45) + : +- ShuffleQueryStage (44), Statistics(X) + : +- NativeShuffleExchange (43) + : +- NativeProject (42) + : +- NativeFilter (41) + : +- InputAdapter (40) + : +- NativeParquetScan (39) + +- NativeSort (96) + +- InputAdapter (95) + +- AQEShuffleRead (94) + +- ShuffleQueryStage (93), Statistics(X) + +- NativeShuffleExchange (92) + +- NativeProject (91) + +- NativeFilter (90) + +- NativeProject (89) + +- NativeHashAggregate (88) + +- InputAdapter (87) + +- AQEShuffleRead (86) + +- ShuffleQueryStage (85), Statistics(X) + +- NativeShuffleExchange (84) + +- NativeHashAggregate (83) + +- NativeProject (82) + +- NativeProject (81) + +- NativeSortMergeJoin Inner (80) + :- NativeSort (70) + : +- InputAdapter (69) + : +- InputAdapter (68) + : +- AQEShuffleRead (67) + : +- ShuffleQueryStage (66), Statistics(X) + : +- ReusedExchange (65) + +- NativeSort (79) + +- InputAdapter (78) + +- AQEShuffleRead (77) + +- ShuffleQueryStage (76), Statistics(X) + +- NativeShuffleExchange (75) + +- NativeProject (74) + +- NativeFilter (73) + +- InputAdapter (72) + +- NativeParquetScan (71) ++- == Initial Plan == + Sort (173) + +- Exchange (172) + +- SortMergeJoin Inner (171) + :- Sort (136) + : +- Exchange (135) + : +- Project (134) + : +- Filter (133) + : +- HashAggregate (132) + : +- Exchange (131) + : +- HashAggregate (130) + : +- Project (129) + : +- SortMergeJoin Inner (128) + : :- Sort (122) + : : +- Exchange (121) + : : +- Project (120) + : : +- SortMergeJoin Inner (119) + : : :- Sort (114) + : : : +- Exchange (113) + : : : +- Project (112) + : : : +- SortMergeJoin Inner (111) + : : : :- Sort (106) + : : : : +- Exchange (105) + : : : : +- Filter (104) + : : : : +- Scan parquet (103) + : : : +- Sort (110) + : : : +- Exchange (109) + : : : +- Filter (108) + : : : +- Scan parquet (107) + : : +- Sort (118) + : : +- Exchange (117) + : : +- Filter (116) + : : +- Scan parquet (115) + : +- Sort (127) + : +- Exchange (126) + : +- Project (125) + : +- Filter (124) + : +- Scan parquet (123) + +- Sort (170) + +- Exchange (169) + +- Project (168) + +- Filter (167) + +- HashAggregate (166) + +- Exchange (165) + +- HashAggregate (164) + +- Project (163) + +- SortMergeJoin Inner (162) + :- Sort (156) + : +- Exchange (155) + : +- Project (154) + : +- SortMergeJoin Inner (153) + : :- Sort (148) + : : +- Exchange (147) + : : +- Project (146) + : : +- SortMergeJoin Inner (145) + : : :- Sort (140) + : : : +- Exchange (139) + : : : +- Filter (138) + : : : +- Scan parquet (137) + : : +- Sort (144) + : : +- Exchange (143) + : : +- Filter (142) + : : +- Scan parquet (141) + : +- Sort (152) + : +- Exchange (151) + : +- Filter (150) + : +- Scan parquet (149) + +- Sort (161) + +- Exchange (160) + +- Project (159) + +- Filter (158) + +- Scan parquet (157) + + +(103) Scan parquet +Output [4]: [inv_date_sk#1, inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(inv_item_sk), IsNotNull(inv_warehouse_sk), IsNotNull(inv_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [4]: [inv_date_sk#1, inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Arguments: [#1, #2, #3, #4] + +(3) NativeFilter +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Condition : ((isnotnull(inv_item_sk#2) AND isnotnull(inv_warehouse_sk#3)) AND isnotnull(inv_date_sk#1)) + +(4) NativeShuffleExchange +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: hashpartitioning(inv_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: X + +(6) AQEShuffleRead +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: coalesced + +(7) InputAdapter +Input [4]: [#1#1, #2#2, #3#3, #4#4] + +(8) NativeSort +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: [inv_item_sk#2 ASC NULLS FIRST], false + +(107) Scan parquet +Output [1]: [i_item_sk#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [1]: [i_item_sk#5] +Arguments: [#5] + +(11) NativeFilter +Input [1]: [#5#5] +Condition : isnotnull(i_item_sk#5) + +(12) NativeShuffleExchange +Input [1]: [#5#5] +Arguments: hashpartitioning(i_item_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [1]: [#5#5] +Arguments: X + +(14) AQEShuffleRead +Input [1]: [#5#5] +Arguments: coalesced + +(15) InputAdapter +Input [1]: [#5#5] + +(16) NativeSort +Input [1]: [#5#5] +Arguments: [i_item_sk#5 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [1]: [inv_item_sk#2] +Right keys [1]: [i_item_sk#5] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [4]: [inv_date_sk#1, inv_warehouse_sk#3, inv_quantity_on_hand#4, i_item_sk#5] +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] + +(19) NativeShuffleExchange +Input [4]: [inv_date_sk#1, inv_warehouse_sk#3, inv_quantity_on_hand#4, i_item_sk#5] +Arguments: hashpartitioning(inv_warehouse_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [4]: [inv_date_sk#1, inv_warehouse_sk#3, inv_quantity_on_hand#4, i_item_sk#5] +Arguments: X + +(21) AQEShuffleRead +Input [4]: [inv_date_sk#1, inv_warehouse_sk#3, inv_quantity_on_hand#4, i_item_sk#5] +Arguments: coalesced + +(22) InputAdapter +Input [4]: [inv_date_sk#1, inv_warehouse_sk#3, inv_quantity_on_hand#4, i_item_sk#5] + +(23) NativeSort +Input [4]: [inv_date_sk#1, inv_warehouse_sk#3, inv_quantity_on_hand#4, i_item_sk#5] +Arguments: [inv_warehouse_sk#3 ASC NULLS FIRST], false + +(115) Scan parquet +Output [2]: [w_warehouse_sk#6, w_warehouse_name#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(w_warehouse_sk)] +ReadSchema: struct + +(25) InputAdapter +Input [2]: [w_warehouse_sk#6, w_warehouse_name#7] +Arguments: [#6, #7] + +(26) NativeFilter +Input [2]: [#6#6, #7#7] +Condition : isnotnull(w_warehouse_sk#6) + +(27) NativeShuffleExchange +Input [2]: [#6#6, #7#7] +Arguments: hashpartitioning(w_warehouse_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(28) ShuffleQueryStage +Output [2]: [#6#6, #7#7] +Arguments: X + +(29) AQEShuffleRead +Input [2]: [#6#6, #7#7] +Arguments: coalesced + +(30) InputAdapter +Input [2]: [#6#6, #7#7] + +(31) NativeSort +Input [2]: [#6#6, #7#7] +Arguments: [w_warehouse_sk#6 ASC NULLS FIRST], false + +(32) NativeSortMergeJoin +Left keys [1]: [inv_warehouse_sk#3] +Right keys [1]: [w_warehouse_sk#6] +Join type: Inner +Join condition: None + +(33) NativeProject +Output [5]: [inv_date_sk#1, inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7] +Input [6]: [inv_date_sk#1, inv_warehouse_sk#3, inv_quantity_on_hand#4, i_item_sk#5, #6#6, #7#7] + +(34) NativeShuffleExchange +Input [5]: [inv_date_sk#1, inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7] +Arguments: hashpartitioning(inv_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(35) ShuffleQueryStage +Output [5]: [inv_date_sk#1, inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7] +Arguments: X + +(36) AQEShuffleRead +Input [5]: [inv_date_sk#1, inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7] +Arguments: coalesced + +(37) InputAdapter +Input [5]: [inv_date_sk#1, inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7] + +(38) NativeSort +Input [5]: [inv_date_sk#1, inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7] +Arguments: [inv_date_sk#1 ASC NULLS FIRST], false + +(123) Scan parquet +Output [3]: [d_date_sk#8, d_year#9, d_moy#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), EqualTo(d_moy,1), IsNotNull(d_date_sk)] +ReadSchema: struct + +(40) InputAdapter +Input [3]: [d_date_sk#8, d_year#9, d_moy#10] +Arguments: [#8, #9, #10] + +(41) NativeFilter +Input [3]: [#8#8, #9#9, #10#10] +Condition : ((((isnotnull(d_year#9) AND isnotnull(d_moy#10)) AND (d_year#9 = 2001)) AND (d_moy#10 = 1)) AND isnotnull(d_date_sk#8)) + +(42) NativeProject +Output [2]: [d_date_sk#8, d_moy#10] +Input [3]: [#8#8, #9#9, #10#10] + +(43) NativeShuffleExchange +Input [2]: [d_date_sk#8, d_moy#10] +Arguments: hashpartitioning(d_date_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) ShuffleQueryStage +Output [2]: [d_date_sk#8, d_moy#10] +Arguments: X + +(45) AQEShuffleRead +Input [2]: [d_date_sk#8, d_moy#10] +Arguments: coalesced + +(46) InputAdapter +Input [2]: [d_date_sk#8, d_moy#10] + +(47) NativeSort +Input [2]: [d_date_sk#8, d_moy#10] +Arguments: [d_date_sk#8 ASC NULLS FIRST], false + +(48) NativeSortMergeJoin +Left keys [1]: [inv_date_sk#1] +Right keys [1]: [d_date_sk#8] +Join type: Inner +Join condition: None + +(49) NativeProject +Output [5]: [inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7, d_moy#10] +Input [7]: [inv_date_sk#1, inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7, d_date_sk#8, d_moy#10] + +(50) NativeProject +Output [6]: [w_warehouse_name#7 AS w_warehouse_name#7, w_warehouse_sk#6 AS w_warehouse_sk#6, i_item_sk#5 AS i_item_sk#5, d_moy#10 AS d_moy#10, cast(inv_quantity_on_hand#4 as double) AS _c4#11, inv_quantity_on_hand#4 AS _c5#12] +Input [5]: [inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7, d_moy#10] + +(51) NativeHashAggregate +Input [6]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, _c4#11, _c5#12] +Keys [4]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10] +Functions [2]: [partial_stddev_samp(_c4#11), partial_avg(_c5#12)] +Aggregate Attributes [5]: [n#13, avg#14, m2#15, sum#16, count#17] +Results [5]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, #18#18] + +(52) NativeShuffleExchange +Input [5]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, #18#18] +Arguments: hashpartitioning(w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(53) ShuffleQueryStage +Output [5]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, #18#18] +Arguments: X + +(54) AQEShuffleRead +Input [5]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, #18#18] +Arguments: coalesced + +(55) InputAdapter +Input [5]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, #18#18] + +(56) NativeHashAggregate +Input [5]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, #18#18] +Keys [4]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10] +Functions [2]: [stddev_samp(cast(inv_quantity_on_hand#4 as double)), avg(inv_quantity_on_hand#4)] +Aggregate Attributes [2]: [stddev_samp(cast(inv_quantity_on_hand#4 as double))#19, avg(inv_quantity_on_hand#4)#20] +Results [6]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, stddev_samp(cast(inv_quantity_on_hand#4 as double))#19, avg(inv_quantity_on_hand#4)#20] + +(57) NativeProject +Output [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, stddev_samp(cast(inv_quantity_on_hand#4 as double))#19 AS stdev#21, avg(inv_quantity_on_hand#4)#20 AS mean#22] +Input [6]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, stddev_samp(cast(inv_quantity_on_hand#4 as double))#19, avg(inv_quantity_on_hand#4)#20] + +(58) NativeFilter +Input [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, stdev#21, mean#22] +Condition : (CASE WHEN (mean#22 = 0.0) THEN false ELSE ((stdev#21 / mean#22) > 1.0) END AND CASE WHEN (mean#22 = 0.0) THEN false ELSE ((stdev#21 / mean#22) > 1.5) END) + +(59) NativeProject +Output [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, CASE WHEN (mean#22 = 0.0) THEN null ELSE (stdev#21 / mean#22) END AS cov#23] +Input [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, stdev#21, mean#22] + +(60) NativeShuffleExchange +Input [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, cov#23] +Arguments: hashpartitioning(i_item_sk#5, w_warehouse_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(61) ShuffleQueryStage +Output [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, cov#23] +Arguments: X + +(62) AQEShuffleRead +Input [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, cov#23] +Arguments: coalesced + +(63) InputAdapter +Input [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, cov#23] + +(64) NativeSort +Input [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, cov#23] +Arguments: [i_item_sk#5 ASC NULLS FIRST, w_warehouse_sk#6 ASC NULLS FIRST], false + +(65) ReusedExchange [Reuses operator id: 34] +Output [5]: [inv_date_sk#24, inv_quantity_on_hand#25, i_item_sk#26, w_warehouse_sk#27, w_warehouse_name#28] + +(66) ShuffleQueryStage +Output [5]: [inv_date_sk#24, inv_quantity_on_hand#25, i_item_sk#26, w_warehouse_sk#27, w_warehouse_name#28] +Arguments: X + +(67) AQEShuffleRead +Input [5]: [inv_date_sk#24, inv_quantity_on_hand#25, i_item_sk#26, w_warehouse_sk#27, w_warehouse_name#28] +Arguments: coalesced + +(68) InputAdapter +Input [5]: [inv_date_sk#24, inv_quantity_on_hand#25, i_item_sk#26, w_warehouse_sk#27, w_warehouse_name#28] +Arguments: [#24, #25, #26, #27, #28] + +(69) InputAdapter +Input [5]: [#24#24, #25#25, #26#26, #27#27, #28#28] + +(70) NativeSort +Input [5]: [#24#24, #25#25, #26#26, #27#27, #28#28] +Arguments: [inv_date_sk#24 ASC NULLS FIRST], false + +(157) Scan parquet +Output [3]: [d_date_sk#29, d_year#30, d_moy#31] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), EqualTo(d_moy,2), IsNotNull(d_date_sk)] +ReadSchema: struct + +(72) InputAdapter +Input [3]: [d_date_sk#29, d_year#30, d_moy#31] +Arguments: [#29, #30, #31] + +(73) NativeFilter +Input [3]: [#29#29, #30#30, #31#31] +Condition : ((((isnotnull(d_year#30) AND isnotnull(d_moy#31)) AND (d_year#30 = 2001)) AND (d_moy#31 = 2)) AND isnotnull(d_date_sk#29)) + +(74) NativeProject +Output [2]: [d_date_sk#29, d_moy#31] +Input [3]: [#29#29, #30#30, #31#31] + +(75) NativeShuffleExchange +Input [2]: [d_date_sk#29, d_moy#31] +Arguments: hashpartitioning(d_date_sk#29, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(76) ShuffleQueryStage +Output [2]: [d_date_sk#29, d_moy#31] +Arguments: X + +(77) AQEShuffleRead +Input [2]: [d_date_sk#29, d_moy#31] +Arguments: coalesced + +(78) InputAdapter +Input [2]: [d_date_sk#29, d_moy#31] + +(79) NativeSort +Input [2]: [d_date_sk#29, d_moy#31] +Arguments: [d_date_sk#29 ASC NULLS FIRST], false + +(80) NativeSortMergeJoin +Left keys [1]: [inv_date_sk#24] +Right keys [1]: [d_date_sk#29] +Join type: Inner +Join condition: None + +(81) NativeProject +Output [5]: [inv_quantity_on_hand#25, i_item_sk#26, w_warehouse_sk#27, w_warehouse_name#28, d_moy#31] +Input [7]: [#24#24, #25#25, #26#26, #27#27, #28#28, d_date_sk#29, d_moy#31] + +(82) NativeProject +Output [6]: [w_warehouse_name#28 AS w_warehouse_name#28, w_warehouse_sk#27 AS w_warehouse_sk#27, i_item_sk#26 AS i_item_sk#26, d_moy#31 AS d_moy#31, cast(inv_quantity_on_hand#25 as double) AS _c4#32, inv_quantity_on_hand#25 AS _c5#33] +Input [5]: [inv_quantity_on_hand#25, i_item_sk#26, w_warehouse_sk#27, w_warehouse_name#28, d_moy#31] + +(83) NativeHashAggregate +Input [6]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31, _c4#32, _c5#33] +Keys [4]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31] +Functions [2]: [partial_stddev_samp(_c4#32), partial_avg(_c5#33)] +Aggregate Attributes [5]: [n#34, avg#35, m2#36, sum#37, count#38] +Results [5]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31, #18#18] + +(84) NativeShuffleExchange +Input [5]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31, #18#18] +Arguments: hashpartitioning(w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(85) ShuffleQueryStage +Output [5]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31, #18#18] +Arguments: X + +(86) AQEShuffleRead +Input [5]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31, #18#18] +Arguments: coalesced + +(87) InputAdapter +Input [5]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31, #18#18] + +(88) NativeHashAggregate +Input [5]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31, #18#18] +Keys [4]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31] +Functions [2]: [stddev_samp(cast(inv_quantity_on_hand#25 as double)), avg(inv_quantity_on_hand#25)] +Aggregate Attributes [2]: [stddev_samp(cast(inv_quantity_on_hand#25 as double))#19, avg(inv_quantity_on_hand#25)#20] +Results [6]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31, stddev_samp(cast(inv_quantity_on_hand#25 as double))#19, avg(inv_quantity_on_hand#25)#20] + +(89) NativeProject +Output [5]: [w_warehouse_sk#27, i_item_sk#26, d_moy#31, stddev_samp(cast(inv_quantity_on_hand#25 as double))#19 AS stdev#21, avg(inv_quantity_on_hand#25)#20 AS mean#22] +Input [6]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31, stddev_samp(cast(inv_quantity_on_hand#25 as double))#19, avg(inv_quantity_on_hand#25)#20] + +(90) NativeFilter +Input [5]: [w_warehouse_sk#27, i_item_sk#26, d_moy#31, stdev#21, mean#22] +Condition : CASE WHEN (mean#22 = 0.0) THEN false ELSE ((stdev#21 / mean#22) > 1.0) END + +(91) NativeProject +Output [5]: [w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#22 AS mean#39, CASE WHEN (mean#22 = 0.0) THEN null ELSE (stdev#21 / mean#22) END AS cov#40] +Input [5]: [w_warehouse_sk#27, i_item_sk#26, d_moy#31, stdev#21, mean#22] + +(92) NativeShuffleExchange +Input [5]: [w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#39, cov#40] +Arguments: hashpartitioning(i_item_sk#26, w_warehouse_sk#27, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(93) ShuffleQueryStage +Output [5]: [w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#39, cov#40] +Arguments: X + +(94) AQEShuffleRead +Input [5]: [w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#39, cov#40] +Arguments: coalesced + +(95) InputAdapter +Input [5]: [w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#39, cov#40] + +(96) NativeSort +Input [5]: [w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#39, cov#40] +Arguments: [i_item_sk#26 ASC NULLS FIRST, w_warehouse_sk#27 ASC NULLS FIRST], false + +(97) NativeSortMergeJoin +Left keys [2]: [i_item_sk#5, w_warehouse_sk#6] +Right keys [2]: [i_item_sk#26, w_warehouse_sk#27] +Join type: Inner +Join condition: None + +(98) NativeShuffleExchange +Input [10]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, cov#23, w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#39, cov#40] +Arguments: rangepartitioning(w_warehouse_sk#6 ASC NULLS FIRST, i_item_sk#5 ASC NULLS FIRST, d_moy#10 ASC NULLS FIRST, mean#22 ASC NULLS FIRST, cov#23 ASC NULLS FIRST, d_moy#31 ASC NULLS FIRST, mean#39 ASC NULLS FIRST, cov#40 ASC NULLS FIRST, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(99) ShuffleQueryStage +Output [10]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, cov#23, w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#39, cov#40] +Arguments: X + +(100) AQEShuffleRead +Input [10]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, cov#23, w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#39, cov#40] +Arguments: coalesced + +(101) InputAdapter +Input [10]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, cov#23, w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#39, cov#40] + +(102) NativeSort +Input [10]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, cov#23, w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#39, cov#40] +Arguments: [w_warehouse_sk#6 ASC NULLS FIRST, i_item_sk#5 ASC NULLS FIRST, d_moy#10 ASC NULLS FIRST, mean#22 ASC NULLS FIRST, cov#23 ASC NULLS FIRST, d_moy#31 ASC NULLS FIRST, mean#39 ASC NULLS FIRST, cov#40 ASC NULLS FIRST], true + +(103) Scan parquet +Output [4]: [inv_date_sk#1, inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(inv_item_sk), IsNotNull(inv_warehouse_sk), IsNotNull(inv_date_sk)] +ReadSchema: struct + +(104) Filter +Input [4]: [inv_date_sk#1, inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Condition : ((isnotnull(inv_item_sk#2) AND isnotnull(inv_warehouse_sk#3)) AND isnotnull(inv_date_sk#1)) + +(105) Exchange +Input [4]: [inv_date_sk#1, inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Arguments: hashpartitioning(inv_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(106) Sort +Input [4]: [inv_date_sk#1, inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4] +Arguments: [inv_item_sk#2 ASC NULLS FIRST], false, 0 + +(107) Scan parquet +Output [1]: [i_item_sk#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(108) Filter +Input [1]: [i_item_sk#5] +Condition : isnotnull(i_item_sk#5) + +(109) Exchange +Input [1]: [i_item_sk#5] +Arguments: hashpartitioning(i_item_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(110) Sort +Input [1]: [i_item_sk#5] +Arguments: [i_item_sk#5 ASC NULLS FIRST], false, 0 + +(111) SortMergeJoin +Left keys [1]: [inv_item_sk#2] +Right keys [1]: [i_item_sk#5] +Join type: Inner +Join condition: None + +(112) Project +Output [4]: [inv_date_sk#1, inv_warehouse_sk#3, inv_quantity_on_hand#4, i_item_sk#5] +Input [5]: [inv_date_sk#1, inv_item_sk#2, inv_warehouse_sk#3, inv_quantity_on_hand#4, i_item_sk#5] + +(113) Exchange +Input [4]: [inv_date_sk#1, inv_warehouse_sk#3, inv_quantity_on_hand#4, i_item_sk#5] +Arguments: hashpartitioning(inv_warehouse_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(114) Sort +Input [4]: [inv_date_sk#1, inv_warehouse_sk#3, inv_quantity_on_hand#4, i_item_sk#5] +Arguments: [inv_warehouse_sk#3 ASC NULLS FIRST], false, 0 + +(115) Scan parquet +Output [2]: [w_warehouse_sk#6, w_warehouse_name#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(w_warehouse_sk)] +ReadSchema: struct + +(116) Filter +Input [2]: [w_warehouse_sk#6, w_warehouse_name#7] +Condition : isnotnull(w_warehouse_sk#6) + +(117) Exchange +Input [2]: [w_warehouse_sk#6, w_warehouse_name#7] +Arguments: hashpartitioning(w_warehouse_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(118) Sort +Input [2]: [w_warehouse_sk#6, w_warehouse_name#7] +Arguments: [w_warehouse_sk#6 ASC NULLS FIRST], false, 0 + +(119) SortMergeJoin +Left keys [1]: [inv_warehouse_sk#3] +Right keys [1]: [w_warehouse_sk#6] +Join type: Inner +Join condition: None + +(120) Project +Output [5]: [inv_date_sk#1, inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7] +Input [6]: [inv_date_sk#1, inv_warehouse_sk#3, inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7] + +(121) Exchange +Input [5]: [inv_date_sk#1, inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7] +Arguments: hashpartitioning(inv_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(122) Sort +Input [5]: [inv_date_sk#1, inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7] +Arguments: [inv_date_sk#1 ASC NULLS FIRST], false, 0 + +(123) Scan parquet +Output [3]: [d_date_sk#8, d_year#9, d_moy#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), EqualTo(d_moy,1), IsNotNull(d_date_sk)] +ReadSchema: struct + +(124) Filter +Input [3]: [d_date_sk#8, d_year#9, d_moy#10] +Condition : ((((isnotnull(d_year#9) AND isnotnull(d_moy#10)) AND (d_year#9 = 2001)) AND (d_moy#10 = 1)) AND isnotnull(d_date_sk#8)) + +(125) Project +Output [2]: [d_date_sk#8, d_moy#10] +Input [3]: [d_date_sk#8, d_year#9, d_moy#10] + +(126) Exchange +Input [2]: [d_date_sk#8, d_moy#10] +Arguments: hashpartitioning(d_date_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(127) Sort +Input [2]: [d_date_sk#8, d_moy#10] +Arguments: [d_date_sk#8 ASC NULLS FIRST], false, 0 + +(128) SortMergeJoin +Left keys [1]: [inv_date_sk#1] +Right keys [1]: [d_date_sk#8] +Join type: Inner +Join condition: None + +(129) Project +Output [5]: [inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7, d_moy#10] +Input [7]: [inv_date_sk#1, inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7, d_date_sk#8, d_moy#10] + +(130) HashAggregate +Input [5]: [inv_quantity_on_hand#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7, d_moy#10] +Keys [4]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10] +Functions [2]: [partial_stddev_samp(cast(inv_quantity_on_hand#4 as double)), partial_avg(inv_quantity_on_hand#4)] +Aggregate Attributes [5]: [n#13, avg#14, m2#15, sum#16, count#17] +Results [9]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, n#41, avg#42, m2#43, sum#44, count#45] + +(131) Exchange +Input [9]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, n#41, avg#42, m2#43, sum#44, count#45] +Arguments: hashpartitioning(w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(132) HashAggregate +Input [9]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, n#41, avg#42, m2#43, sum#44, count#45] +Keys [4]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10] +Functions [2]: [stddev_samp(cast(inv_quantity_on_hand#4 as double)), avg(inv_quantity_on_hand#4)] +Aggregate Attributes [2]: [stddev_samp(cast(inv_quantity_on_hand#4 as double))#19, avg(inv_quantity_on_hand#4)#20] +Results [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, stddev_samp(cast(inv_quantity_on_hand#4 as double))#19 AS stdev#21, avg(inv_quantity_on_hand#4)#20 AS mean#22] + +(133) Filter +Input [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, stdev#21, mean#22] +Condition : (CASE WHEN (mean#22 = 0.0) THEN false ELSE ((stdev#21 / mean#22) > 1.0) END AND CASE WHEN (mean#22 = 0.0) THEN false ELSE ((stdev#21 / mean#22) > 1.5) END) + +(134) Project +Output [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, CASE WHEN (mean#22 = 0.0) THEN null ELSE (stdev#21 / mean#22) END AS cov#23] +Input [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, stdev#21, mean#22] + +(135) Exchange +Input [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, cov#23] +Arguments: hashpartitioning(i_item_sk#5, w_warehouse_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(136) Sort +Input [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, cov#23] +Arguments: [i_item_sk#5 ASC NULLS FIRST, w_warehouse_sk#6 ASC NULLS FIRST], false, 0 + +(137) Scan parquet +Output [4]: [inv_date_sk#24, inv_item_sk#46, inv_warehouse_sk#47, inv_quantity_on_hand#25] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(inv_item_sk), IsNotNull(inv_warehouse_sk), IsNotNull(inv_date_sk)] +ReadSchema: struct + +(138) Filter +Input [4]: [inv_date_sk#24, inv_item_sk#46, inv_warehouse_sk#47, inv_quantity_on_hand#25] +Condition : ((isnotnull(inv_item_sk#46) AND isnotnull(inv_warehouse_sk#47)) AND isnotnull(inv_date_sk#24)) + +(139) Exchange +Input [4]: [inv_date_sk#24, inv_item_sk#46, inv_warehouse_sk#47, inv_quantity_on_hand#25] +Arguments: hashpartitioning(inv_item_sk#46, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(140) Sort +Input [4]: [inv_date_sk#24, inv_item_sk#46, inv_warehouse_sk#47, inv_quantity_on_hand#25] +Arguments: [inv_item_sk#46 ASC NULLS FIRST], false, 0 + +(141) Scan parquet +Output [1]: [i_item_sk#26] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(142) Filter +Input [1]: [i_item_sk#26] +Condition : isnotnull(i_item_sk#26) + +(143) Exchange +Input [1]: [i_item_sk#26] +Arguments: hashpartitioning(i_item_sk#26, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(144) Sort +Input [1]: [i_item_sk#26] +Arguments: [i_item_sk#26 ASC NULLS FIRST], false, 0 + +(145) SortMergeJoin +Left keys [1]: [inv_item_sk#46] +Right keys [1]: [i_item_sk#26] +Join type: Inner +Join condition: None + +(146) Project +Output [4]: [inv_date_sk#24, inv_warehouse_sk#47, inv_quantity_on_hand#25, i_item_sk#26] +Input [5]: [inv_date_sk#24, inv_item_sk#46, inv_warehouse_sk#47, inv_quantity_on_hand#25, i_item_sk#26] + +(147) Exchange +Input [4]: [inv_date_sk#24, inv_warehouse_sk#47, inv_quantity_on_hand#25, i_item_sk#26] +Arguments: hashpartitioning(inv_warehouse_sk#47, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(148) Sort +Input [4]: [inv_date_sk#24, inv_warehouse_sk#47, inv_quantity_on_hand#25, i_item_sk#26] +Arguments: [inv_warehouse_sk#47 ASC NULLS FIRST], false, 0 + +(149) Scan parquet +Output [2]: [w_warehouse_sk#27, w_warehouse_name#28] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(w_warehouse_sk)] +ReadSchema: struct + +(150) Filter +Input [2]: [w_warehouse_sk#27, w_warehouse_name#28] +Condition : isnotnull(w_warehouse_sk#27) + +(151) Exchange +Input [2]: [w_warehouse_sk#27, w_warehouse_name#28] +Arguments: hashpartitioning(w_warehouse_sk#27, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(152) Sort +Input [2]: [w_warehouse_sk#27, w_warehouse_name#28] +Arguments: [w_warehouse_sk#27 ASC NULLS FIRST], false, 0 + +(153) SortMergeJoin +Left keys [1]: [inv_warehouse_sk#47] +Right keys [1]: [w_warehouse_sk#27] +Join type: Inner +Join condition: None + +(154) Project +Output [5]: [inv_date_sk#24, inv_quantity_on_hand#25, i_item_sk#26, w_warehouse_sk#27, w_warehouse_name#28] +Input [6]: [inv_date_sk#24, inv_warehouse_sk#47, inv_quantity_on_hand#25, i_item_sk#26, w_warehouse_sk#27, w_warehouse_name#28] + +(155) Exchange +Input [5]: [inv_date_sk#24, inv_quantity_on_hand#25, i_item_sk#26, w_warehouse_sk#27, w_warehouse_name#28] +Arguments: hashpartitioning(inv_date_sk#24, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(156) Sort +Input [5]: [inv_date_sk#24, inv_quantity_on_hand#25, i_item_sk#26, w_warehouse_sk#27, w_warehouse_name#28] +Arguments: [inv_date_sk#24 ASC NULLS FIRST], false, 0 + +(157) Scan parquet +Output [3]: [d_date_sk#29, d_year#30, d_moy#31] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), EqualTo(d_moy,2), IsNotNull(d_date_sk)] +ReadSchema: struct + +(158) Filter +Input [3]: [d_date_sk#29, d_year#30, d_moy#31] +Condition : ((((isnotnull(d_year#30) AND isnotnull(d_moy#31)) AND (d_year#30 = 2001)) AND (d_moy#31 = 2)) AND isnotnull(d_date_sk#29)) + +(159) Project +Output [2]: [d_date_sk#29, d_moy#31] +Input [3]: [d_date_sk#29, d_year#30, d_moy#31] + +(160) Exchange +Input [2]: [d_date_sk#29, d_moy#31] +Arguments: hashpartitioning(d_date_sk#29, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(161) Sort +Input [2]: [d_date_sk#29, d_moy#31] +Arguments: [d_date_sk#29 ASC NULLS FIRST], false, 0 + +(162) SortMergeJoin +Left keys [1]: [inv_date_sk#24] +Right keys [1]: [d_date_sk#29] +Join type: Inner +Join condition: None + +(163) Project +Output [5]: [inv_quantity_on_hand#25, i_item_sk#26, w_warehouse_sk#27, w_warehouse_name#28, d_moy#31] +Input [7]: [inv_date_sk#24, inv_quantity_on_hand#25, i_item_sk#26, w_warehouse_sk#27, w_warehouse_name#28, d_date_sk#29, d_moy#31] + +(164) HashAggregate +Input [5]: [inv_quantity_on_hand#25, i_item_sk#26, w_warehouse_sk#27, w_warehouse_name#28, d_moy#31] +Keys [4]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31] +Functions [2]: [partial_stddev_samp(cast(inv_quantity_on_hand#25 as double)), partial_avg(inv_quantity_on_hand#25)] +Aggregate Attributes [5]: [n#34, avg#35, m2#36, sum#37, count#38] +Results [9]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31, n#48, avg#49, m2#50, sum#51, count#52] + +(165) Exchange +Input [9]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31, n#48, avg#49, m2#50, sum#51, count#52] +Arguments: hashpartitioning(w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(166) HashAggregate +Input [9]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31, n#48, avg#49, m2#50, sum#51, count#52] +Keys [4]: [w_warehouse_name#28, w_warehouse_sk#27, i_item_sk#26, d_moy#31] +Functions [2]: [stddev_samp(cast(inv_quantity_on_hand#25 as double)), avg(inv_quantity_on_hand#25)] +Aggregate Attributes [2]: [stddev_samp(cast(inv_quantity_on_hand#25 as double))#19, avg(inv_quantity_on_hand#25)#20] +Results [5]: [w_warehouse_sk#27, i_item_sk#26, d_moy#31, stddev_samp(cast(inv_quantity_on_hand#25 as double))#19 AS stdev#21, avg(inv_quantity_on_hand#25)#20 AS mean#22] + +(167) Filter +Input [5]: [w_warehouse_sk#27, i_item_sk#26, d_moy#31, stdev#21, mean#22] +Condition : CASE WHEN (mean#22 = 0.0) THEN false ELSE ((stdev#21 / mean#22) > 1.0) END + +(168) Project +Output [5]: [w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#22 AS mean#39, CASE WHEN (mean#22 = 0.0) THEN null ELSE (stdev#21 / mean#22) END AS cov#40] +Input [5]: [w_warehouse_sk#27, i_item_sk#26, d_moy#31, stdev#21, mean#22] + +(169) Exchange +Input [5]: [w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#39, cov#40] +Arguments: hashpartitioning(i_item_sk#26, w_warehouse_sk#27, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(170) Sort +Input [5]: [w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#39, cov#40] +Arguments: [i_item_sk#26 ASC NULLS FIRST, w_warehouse_sk#27 ASC NULLS FIRST], false, 0 + +(171) SortMergeJoin +Left keys [2]: [i_item_sk#5, w_warehouse_sk#6] +Right keys [2]: [i_item_sk#26, w_warehouse_sk#27] +Join type: Inner +Join condition: None + +(172) Exchange +Input [10]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, cov#23, w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#39, cov#40] +Arguments: rangepartitioning(w_warehouse_sk#6 ASC NULLS FIRST, i_item_sk#5 ASC NULLS FIRST, d_moy#10 ASC NULLS FIRST, mean#22 ASC NULLS FIRST, cov#23 ASC NULLS FIRST, d_moy#31 ASC NULLS FIRST, mean#39 ASC NULLS FIRST, cov#40 ASC NULLS FIRST, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(173) Sort +Input [10]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, cov#23, w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#39, cov#40] +Arguments: [w_warehouse_sk#6 ASC NULLS FIRST, i_item_sk#5 ASC NULLS FIRST, d_moy#10 ASC NULLS FIRST, mean#22 ASC NULLS FIRST, cov#23 ASC NULLS FIRST, d_moy#31 ASC NULLS FIRST, mean#39 ASC NULLS FIRST, cov#40 ASC NULLS FIRST], true, 0 + +(174) AdaptiveSparkPlan +Output [10]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#22, cov#23, w_warehouse_sk#27, i_item_sk#26, d_moy#31, mean#39, cov#40] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q4.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q4.txt new file mode 100644 index 000000000..2c538c302 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q4.txt @@ -0,0 +1,2066 @@ +== Physical Plan == +AdaptiveSparkPlan (379) ++- == Final Plan == + TakeOrderedAndProject (227) + +- * Project (226) + +- * SortMergeJoin Inner (225) + :- NativeProject (197) + : +- NativeSortMergeJoin Inner (196) + : :- ConvertToNative (152) + : : +- * Project (151) + : : +- * SortMergeJoin Inner (150) + : : :- NativeProject (122) + : : : +- NativeSortMergeJoin Inner (121) + : : : :- NativeSortMergeJoin Inner (77) + : : : : :- NativeSort (47) + : : : : : +- InputAdapter (46) + : : : : : +- AQEShuffleRead (45) + : : : : : +- ShuffleQueryStage (44), Statistics(X) + : : : : : +- NativeShuffleExchange (43) + : : : : : +- NativeFilter (42) + : : : : : +- NativeProject (41) + : : : : : +- NativeHashAggregate (40) + : : : : : +- InputAdapter (39) + : : : : : +- AQEShuffleRead (38) + : : : : : +- ShuffleQueryStage (37), Statistics(X) + : : : : : +- NativeShuffleExchange (36) + : : : : : +- NativeHashAggregate (35) + : : : : : +- NativeProject (34) + : : : : : +- NativeProject (33) + : : : : : +- NativeSortMergeJoin Inner (32) + : : : : : :- NativeSort (23) + : : : : : : +- InputAdapter (22) + : : : : : : +- AQEShuffleRead (21) + : : : : : : +- ShuffleQueryStage (20), Statistics(X) + : : : : : : +- NativeShuffleExchange (19) + : : : : : : +- NativeProject (18) + : : : : : : +- NativeSortMergeJoin Inner (17) + : : : : : : :- NativeSort (8) + : : : : : : : +- InputAdapter (7) + : : : : : : : +- AQEShuffleRead (6) + : : : : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : : : : +- NativeShuffleExchange (4) + : : : : : : : +- NativeFilter (3) + : : : : : : : +- InputAdapter (2) + : : : : : : : +- NativeParquetScan (1) + : : : : : : +- NativeSort (16) + : : : : : : +- InputAdapter (15) + : : : : : : +- AQEShuffleRead (14) + : : : : : : +- ShuffleQueryStage (13), Statistics(X) + : : : : : : +- NativeShuffleExchange (12) + : : : : : : +- NativeFilter (11) + : : : : : : +- InputAdapter (10) + : : : : : : +- NativeParquetScan (9) + : : : : : +- NativeSort (31) + : : : : : +- InputAdapter (30) + : : : : : +- AQEShuffleRead (29) + : : : : : +- ShuffleQueryStage (28), Statistics(X) + : : : : : +- NativeShuffleExchange (27) + : : : : : +- NativeFilter (26) + : : : : : +- InputAdapter (25) + : : : : : +- NativeParquetScan (24) + : : : : +- NativeSort (76) + : : : : +- InputAdapter (75) + : : : : +- AQEShuffleRead (74) + : : : : +- ShuffleQueryStage (73), Statistics(X) + : : : : +- NativeShuffleExchange (72) + : : : : +- NativeProject (71) + : : : : +- NativeHashAggregate (70) + : : : : +- InputAdapter (69) + : : : : +- AQEShuffleRead (68) + : : : : +- ShuffleQueryStage (67), Statistics(X) + : : : : +- NativeShuffleExchange (66) + : : : : +- NativeHashAggregate (65) + : : : : +- NativeProject (64) + : : : : +- NativeProject (63) + : : : : +- NativeSortMergeJoin Inner (62) + : : : : :- NativeSort (53) + : : : : : +- InputAdapter (52) + : : : : : +- InputAdapter (51) + : : : : : +- AQEShuffleRead (50) + : : : : : +- ShuffleQueryStage (49), Statistics(X) + : : : : : +- ReusedExchange (48) + : : : : +- NativeSort (61) + : : : : +- InputAdapter (60) + : : : : +- AQEShuffleRead (59) + : : : : +- ShuffleQueryStage (58), Statistics(X) + : : : : +- NativeShuffleExchange (57) + : : : : +- NativeFilter (56) + : : : : +- InputAdapter (55) + : : : : +- NativeParquetScan (54) + : : : +- NativeSort (120) + : : : +- InputAdapter (119) + : : : +- AQEShuffleRead (118) + : : : +- ShuffleQueryStage (117), Statistics(X) + : : : +- NativeShuffleExchange (116) + : : : +- NativeFilter (115) + : : : +- NativeProject (114) + : : : +- NativeHashAggregate (113) + : : : +- InputAdapter (112) + : : : +- AQEShuffleRead (111) + : : : +- ShuffleQueryStage (110), Statistics(X) + : : : +- NativeShuffleExchange (109) + : : : +- NativeHashAggregate (108) + : : : +- NativeProject (107) + : : : +- NativeProject (106) + : : : +- NativeSortMergeJoin Inner (105) + : : : :- NativeSort (98) + : : : : +- InputAdapter (97) + : : : : +- AQEShuffleRead (96) + : : : : +- ShuffleQueryStage (95), Statistics(X) + : : : : +- NativeShuffleExchange (94) + : : : : +- NativeProject (93) + : : : : +- NativeSortMergeJoin Inner (92) + : : : : :- NativeSort (83) + : : : : : +- InputAdapter (82) + : : : : : +- InputAdapter (81) + : : : : : +- AQEShuffleRead (80) + : : : : : +- ShuffleQueryStage (79), Statistics(X) + : : : : : +- ReusedExchange (78) + : : : : +- NativeSort (91) + : : : : +- InputAdapter (90) + : : : : +- AQEShuffleRead (89) + : : : : +- ShuffleQueryStage (88), Statistics(X) + : : : : +- NativeShuffleExchange (87) + : : : : +- NativeFilter (86) + : : : : +- InputAdapter (85) + : : : : +- NativeParquetScan (84) + : : : +- NativeSort (104) + : : : +- InputAdapter (103) + : : : +- InputAdapter (102) + : : : +- AQEShuffleRead (101) + : : : +- ShuffleQueryStage (100), Statistics(X) + : : : +- ReusedExchange (99) + : : +- NativeSort (149) + : : +- InputAdapter (148) + : : +- AQEShuffleRead (147) + : : +- ShuffleQueryStage (146), Statistics(X) + : : +- NativeShuffleExchange (145) + : : +- NativeProject (144) + : : +- NativeHashAggregate (143) + : : +- InputAdapter (142) + : : +- AQEShuffleRead (141) + : : +- ShuffleQueryStage (140), Statistics(X) + : : +- NativeShuffleExchange (139) + : : +- NativeHashAggregate (138) + : : +- NativeProject (137) + : : +- NativeProject (136) + : : +- NativeSortMergeJoin Inner (135) + : : :- NativeSort (128) + : : : +- InputAdapter (127) + : : : +- InputAdapter (126) + : : : +- AQEShuffleRead (125) + : : : +- ShuffleQueryStage (124), Statistics(X) + : : : +- ReusedExchange (123) + : : +- NativeSort (134) + : : +- InputAdapter (133) + : : +- InputAdapter (132) + : : +- AQEShuffleRead (131) + : : +- ShuffleQueryStage (130), Statistics(X) + : : +- ReusedExchange (129) + : +- NativeSort (195) + : +- InputAdapter (194) + : +- AQEShuffleRead (193) + : +- ShuffleQueryStage (192), Statistics(X) + : +- NativeShuffleExchange (191) + : +- NativeFilter (190) + : +- NativeProject (189) + : +- NativeHashAggregate (188) + : +- InputAdapter (187) + : +- AQEShuffleRead (186) + : +- ShuffleQueryStage (185), Statistics(X) + : +- NativeShuffleExchange (184) + : +- NativeHashAggregate (183) + : +- NativeProject (182) + : +- NativeProject (181) + : +- NativeSortMergeJoin Inner (180) + : :- NativeSort (173) + : : +- InputAdapter (172) + : : +- AQEShuffleRead (171) + : : +- ShuffleQueryStage (170), Statistics(X) + : : +- NativeShuffleExchange (169) + : : +- NativeProject (168) + : : +- NativeSortMergeJoin Inner (167) + : : :- NativeSort (158) + : : : +- InputAdapter (157) + : : : +- InputAdapter (156) + : : : +- AQEShuffleRead (155) + : : : +- ShuffleQueryStage (154), Statistics(X) + : : : +- ReusedExchange (153) + : : +- NativeSort (166) + : : +- InputAdapter (165) + : : +- AQEShuffleRead (164) + : : +- ShuffleQueryStage (163), Statistics(X) + : : +- NativeShuffleExchange (162) + : : +- NativeFilter (161) + : : +- InputAdapter (160) + : : +- NativeParquetScan (159) + : +- NativeSort (179) + : +- InputAdapter (178) + : +- InputAdapter (177) + : +- AQEShuffleRead (176) + : +- ShuffleQueryStage (175), Statistics(X) + : +- ReusedExchange (174) + +- NativeSort (224) + +- InputAdapter (223) + +- AQEShuffleRead (222) + +- ShuffleQueryStage (221), Statistics(X) + +- NativeShuffleExchange (220) + +- NativeProject (219) + +- NativeHashAggregate (218) + +- InputAdapter (217) + +- AQEShuffleRead (216) + +- ShuffleQueryStage (215), Statistics(X) + +- NativeShuffleExchange (214) + +- NativeHashAggregate (213) + +- NativeProject (212) + +- NativeProject (211) + +- NativeSortMergeJoin Inner (210) + :- NativeSort (203) + : +- InputAdapter (202) + : +- InputAdapter (201) + : +- AQEShuffleRead (200) + : +- ShuffleQueryStage (199), Statistics(X) + : +- ReusedExchange (198) + +- NativeSort (209) + +- InputAdapter (208) + +- InputAdapter (207) + +- AQEShuffleRead (206) + +- ShuffleQueryStage (205), Statistics(X) + +- ReusedExchange (204) ++- == Initial Plan == + TakeOrderedAndProject (378) + +- Project (377) + +- SortMergeJoin Inner (376) + :- Project (352) + : +- SortMergeJoin Inner (351) + : :- Project (326) + : : +- SortMergeJoin Inner (325) + : : :- Project (301) + : : : +- SortMergeJoin Inner (300) + : : : :- SortMergeJoin Inner (275) + : : : : :- Sort (251) + : : : : : +- Exchange (250) + : : : : : +- Filter (249) + : : : : : +- HashAggregate (248) + : : : : : +- Exchange (247) + : : : : : +- HashAggregate (246) + : : : : : +- Project (245) + : : : : : +- SortMergeJoin Inner (244) + : : : : : :- Sort (239) + : : : : : : +- Exchange (238) + : : : : : : +- Project (237) + : : : : : : +- SortMergeJoin Inner (236) + : : : : : : :- Sort (231) + : : : : : : : +- Exchange (230) + : : : : : : : +- Filter (229) + : : : : : : : +- Scan parquet (228) + : : : : : : +- Sort (235) + : : : : : : +- Exchange (234) + : : : : : : +- Filter (233) + : : : : : : +- Scan parquet (232) + : : : : : +- Sort (243) + : : : : : +- Exchange (242) + : : : : : +- Filter (241) + : : : : : +- Scan parquet (240) + : : : : +- Sort (274) + : : : : +- Exchange (273) + : : : : +- HashAggregate (272) + : : : : +- Exchange (271) + : : : : +- HashAggregate (270) + : : : : +- Project (269) + : : : : +- SortMergeJoin Inner (268) + : : : : :- Sort (263) + : : : : : +- Exchange (262) + : : : : : +- Project (261) + : : : : : +- SortMergeJoin Inner (260) + : : : : : :- Sort (255) + : : : : : : +- Exchange (254) + : : : : : : +- Filter (253) + : : : : : : +- Scan parquet (252) + : : : : : +- Sort (259) + : : : : : +- Exchange (258) + : : : : : +- Filter (257) + : : : : : +- Scan parquet (256) + : : : : +- Sort (267) + : : : : +- Exchange (266) + : : : : +- Filter (265) + : : : : +- Scan parquet (264) + : : : +- Sort (299) + : : : +- Exchange (298) + : : : +- Filter (297) + : : : +- HashAggregate (296) + : : : +- Exchange (295) + : : : +- HashAggregate (294) + : : : +- Project (293) + : : : +- SortMergeJoin Inner (292) + : : : :- Sort (287) + : : : : +- Exchange (286) + : : : : +- Project (285) + : : : : +- SortMergeJoin Inner (284) + : : : : :- Sort (279) + : : : : : +- Exchange (278) + : : : : : +- Filter (277) + : : : : : +- Scan parquet (276) + : : : : +- Sort (283) + : : : : +- Exchange (282) + : : : : +- Filter (281) + : : : : +- Scan parquet (280) + : : : +- Sort (291) + : : : +- Exchange (290) + : : : +- Filter (289) + : : : +- Scan parquet (288) + : : +- Sort (324) + : : +- Exchange (323) + : : +- HashAggregate (322) + : : +- Exchange (321) + : : +- HashAggregate (320) + : : +- Project (319) + : : +- SortMergeJoin Inner (318) + : : :- Sort (313) + : : : +- Exchange (312) + : : : +- Project (311) + : : : +- SortMergeJoin Inner (310) + : : : :- Sort (305) + : : : : +- Exchange (304) + : : : : +- Filter (303) + : : : : +- Scan parquet (302) + : : : +- Sort (309) + : : : +- Exchange (308) + : : : +- Filter (307) + : : : +- Scan parquet (306) + : : +- Sort (317) + : : +- Exchange (316) + : : +- Filter (315) + : : +- Scan parquet (314) + : +- Sort (350) + : +- Exchange (349) + : +- Filter (348) + : +- HashAggregate (347) + : +- Exchange (346) + : +- HashAggregate (345) + : +- Project (344) + : +- SortMergeJoin Inner (343) + : :- Sort (338) + : : +- Exchange (337) + : : +- Project (336) + : : +- SortMergeJoin Inner (335) + : : :- Sort (330) + : : : +- Exchange (329) + : : : +- Filter (328) + : : : +- Scan parquet (327) + : : +- Sort (334) + : : +- Exchange (333) + : : +- Filter (332) + : : +- Scan parquet (331) + : +- Sort (342) + : +- Exchange (341) + : +- Filter (340) + : +- Scan parquet (339) + +- Sort (375) + +- Exchange (374) + +- HashAggregate (373) + +- Exchange (372) + +- HashAggregate (371) + +- Project (370) + +- SortMergeJoin Inner (369) + :- Sort (364) + : +- Exchange (363) + : +- Project (362) + : +- SortMergeJoin Inner (361) + : :- Sort (356) + : : +- Exchange (355) + : : +- Filter (354) + : : +- Scan parquet (353) + : +- Sort (360) + : +- Exchange (359) + : +- Filter (358) + : +- Scan parquet (357) + +- Sort (368) + +- Exchange (367) + +- Filter (366) + +- Scan parquet (365) + + +(228) Scan parquet +Output [8]: [c_customer_sk#1, c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_customer_id)] +ReadSchema: struct + +(2) InputAdapter +Input [8]: [c_customer_sk#1, c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8] +Arguments: [#1, #2, #3, #4, #5, #6, #7, #8] + +(3) NativeFilter +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Condition : (isnotnull(c_customer_sk#1) AND isnotnull(c_customer_id#2)) + +(4) NativeShuffleExchange +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: hashpartitioning(c_customer_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: X + +(6) AQEShuffleRead +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: coalesced + +(7) InputAdapter +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] + +(8) NativeSort +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: [c_customer_sk#1 ASC NULLS FIRST], false + +(232) Scan parquet +Output [6]: [ss_sold_date_sk#9, ss_customer_sk#10, ss_ext_discount_amt#11, ss_ext_sales_price#12, ss_ext_wholesale_cost#13, ss_ext_list_price#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [6]: [ss_sold_date_sk#9, ss_customer_sk#10, ss_ext_discount_amt#11, ss_ext_sales_price#12, ss_ext_wholesale_cost#13, ss_ext_list_price#14] +Arguments: [#9, #10, #11, #12, #13, #14] + +(11) NativeFilter +Input [6]: [#9#9, #10#10, #11#11, #12#12, #13#13, #14#14] +Condition : (isnotnull(ss_customer_sk#10) AND isnotnull(ss_sold_date_sk#9)) + +(12) NativeShuffleExchange +Input [6]: [#9#9, #10#10, #11#11, #12#12, #13#13, #14#14] +Arguments: hashpartitioning(ss_customer_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [6]: [#9#9, #10#10, #11#11, #12#12, #13#13, #14#14] +Arguments: X + +(14) AQEShuffleRead +Input [6]: [#9#9, #10#10, #11#11, #12#12, #13#13, #14#14] +Arguments: coalesced + +(15) InputAdapter +Input [6]: [#9#9, #10#10, #11#11, #12#12, #13#13, #14#14] + +(16) NativeSort +Input [6]: [#9#9, #10#10, #11#11, #12#12, #13#13, #14#14] +Arguments: [ss_customer_sk#10 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [1]: [c_customer_sk#1] +Right keys [1]: [ss_customer_sk#10] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [12]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_sold_date_sk#9, ss_ext_discount_amt#11, ss_ext_sales_price#12, ss_ext_wholesale_cost#13, ss_ext_list_price#14] +Input [14]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9, #10#10, #11#11, #12#12, #13#13, #14#14] + +(19) NativeShuffleExchange +Input [12]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_sold_date_sk#9, ss_ext_discount_amt#11, ss_ext_sales_price#12, ss_ext_wholesale_cost#13, ss_ext_list_price#14] +Arguments: hashpartitioning(ss_sold_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [12]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_sold_date_sk#9, ss_ext_discount_amt#11, ss_ext_sales_price#12, ss_ext_wholesale_cost#13, ss_ext_list_price#14] +Arguments: X + +(21) AQEShuffleRead +Input [12]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_sold_date_sk#9, ss_ext_discount_amt#11, ss_ext_sales_price#12, ss_ext_wholesale_cost#13, ss_ext_list_price#14] +Arguments: coalesced + +(22) InputAdapter +Input [12]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_sold_date_sk#9, ss_ext_discount_amt#11, ss_ext_sales_price#12, ss_ext_wholesale_cost#13, ss_ext_list_price#14] + +(23) NativeSort +Input [12]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_sold_date_sk#9, ss_ext_discount_amt#11, ss_ext_sales_price#12, ss_ext_wholesale_cost#13, ss_ext_list_price#14] +Arguments: [ss_sold_date_sk#9 ASC NULLS FIRST], false + +(240) Scan parquet +Output [2]: [d_date_sk#15, d_year#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(25) InputAdapter +Input [2]: [d_date_sk#15, d_year#16] +Arguments: [#15, #16] + +(26) NativeFilter +Input [2]: [#15#15, #16#16] +Condition : ((isnotnull(d_year#16) AND (d_year#16 = 2001)) AND isnotnull(d_date_sk#15)) + +(27) NativeShuffleExchange +Input [2]: [#15#15, #16#16] +Arguments: hashpartitioning(d_date_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(28) ShuffleQueryStage +Output [2]: [#15#15, #16#16] +Arguments: X + +(29) AQEShuffleRead +Input [2]: [#15#15, #16#16] +Arguments: coalesced + +(30) InputAdapter +Input [2]: [#15#15, #16#16] + +(31) NativeSort +Input [2]: [#15#15, #16#16] +Arguments: [d_date_sk#15 ASC NULLS FIRST], false + +(32) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#9] +Right keys [1]: [d_date_sk#15] +Join type: Inner +Join condition: None + +(33) NativeProject +Output [12]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_ext_discount_amt#11, ss_ext_sales_price#12, ss_ext_wholesale_cost#13, ss_ext_list_price#14, d_year#16] +Input [14]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_sold_date_sk#9, ss_ext_discount_amt#11, ss_ext_sales_price#12, ss_ext_wholesale_cost#13, ss_ext_list_price#14, #15#15, #16#16] + +(34) NativeProject +Output [9]: [c_customer_id#2 AS c_customer_id#2, c_first_name#3 AS c_first_name#3, c_last_name#4 AS c_last_name#4, c_preferred_cust_flag#5 AS c_preferred_cust_flag#5, c_birth_country#6 AS c_birth_country#6, c_login#7 AS c_login#7, c_email_address#8 AS c_email_address#8, d_year#16 AS d_year#16, ((((ss_ext_list_price#14 - ss_ext_wholesale_cost#13) - ss_ext_discount_amt#11) + ss_ext_sales_price#12) / 2) AS _c8#17] +Input [12]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_ext_discount_amt#11, ss_ext_sales_price#12, ss_ext_wholesale_cost#13, ss_ext_list_price#14, d_year#16] + +(35) NativeHashAggregate +Input [9]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, d_year#16, _c8#17] +Keys [8]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, d_year#16] +Functions [1]: [partial_sum(_c8#17)] +Aggregate Attributes [2]: [sum#18, isEmpty#19] +Results [9]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, d_year#16, #20#20] + +(36) NativeShuffleExchange +Input [9]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, d_year#16, #20#20] +Arguments: hashpartitioning(c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, d_year#16, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [9]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, d_year#16, #20#20] +Arguments: X + +(38) AQEShuffleRead +Input [9]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, d_year#16, #20#20] +Arguments: coalesced + +(39) InputAdapter +Input [9]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, d_year#16, #20#20] + +(40) NativeHashAggregate +Input [9]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, d_year#16, #20#20] +Keys [8]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, d_year#16] +Functions [1]: [sum(((((ss_ext_list_price#14 - ss_ext_wholesale_cost#13) - ss_ext_discount_amt#11) + ss_ext_sales_price#12) / 2))] +Aggregate Attributes [1]: [sum(((((ss_ext_list_price#14 - ss_ext_wholesale_cost#13) - ss_ext_discount_amt#11) + ss_ext_sales_price#12) / 2))#21] +Results [9]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, d_year#16, sum(((((ss_ext_list_price#14 - ss_ext_wholesale_cost#13) - ss_ext_discount_amt#11) + ss_ext_sales_price#12) / 2))#21] + +(41) NativeProject +Output [2]: [c_customer_id#2 AS customer_id#22, sum(((((ss_ext_list_price#14 - ss_ext_wholesale_cost#13) - ss_ext_discount_amt#11) + ss_ext_sales_price#12) / 2))#21 AS year_total#23] +Input [9]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, d_year#16, sum(((((ss_ext_list_price#14 - ss_ext_wholesale_cost#13) - ss_ext_discount_amt#11) + ss_ext_sales_price#12) / 2))#21] + +(42) NativeFilter +Input [2]: [customer_id#22, year_total#23] +Condition : (isnotnull(year_total#23) AND (year_total#23 > 0.000000)) + +(43) NativeShuffleExchange +Input [2]: [customer_id#22, year_total#23] +Arguments: hashpartitioning(customer_id#22, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) ShuffleQueryStage +Output [2]: [customer_id#22, year_total#23] +Arguments: X + +(45) AQEShuffleRead +Input [2]: [customer_id#22, year_total#23] +Arguments: coalesced + +(46) InputAdapter +Input [2]: [customer_id#22, year_total#23] + +(47) NativeSort +Input [2]: [customer_id#22, year_total#23] +Arguments: [customer_id#22 ASC NULLS FIRST], false + +(48) ReusedExchange [Reuses operator id: 19] +Output [12]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, ss_sold_date_sk#31, ss_ext_discount_amt#32, ss_ext_sales_price#33, ss_ext_wholesale_cost#34, ss_ext_list_price#35] + +(49) ShuffleQueryStage +Output [12]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, ss_sold_date_sk#31, ss_ext_discount_amt#32, ss_ext_sales_price#33, ss_ext_wholesale_cost#34, ss_ext_list_price#35] +Arguments: X + +(50) AQEShuffleRead +Input [12]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, ss_sold_date_sk#31, ss_ext_discount_amt#32, ss_ext_sales_price#33, ss_ext_wholesale_cost#34, ss_ext_list_price#35] +Arguments: coalesced + +(51) InputAdapter +Input [12]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, ss_sold_date_sk#31, ss_ext_discount_amt#32, ss_ext_sales_price#33, ss_ext_wholesale_cost#34, ss_ext_list_price#35] +Arguments: [#24, #25, #26, #27, #28, #29, #30, #31, #32, #33, #34, #35] + +(52) InputAdapter +Input [12]: [#24#24, #25#25, #26#26, #27#27, #28#28, #29#29, #30#30, #31#31, #32#32, #33#33, #34#34, #35#35] + +(53) NativeSort +Input [12]: [#24#24, #25#25, #26#26, #27#27, #28#28, #29#29, #30#30, #31#31, #32#32, #33#33, #34#34, #35#35] +Arguments: [ss_sold_date_sk#31 ASC NULLS FIRST], false + +(264) Scan parquet +Output [2]: [d_date_sk#36, d_year#37] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2002), IsNotNull(d_date_sk)] +ReadSchema: struct + +(55) InputAdapter +Input [2]: [d_date_sk#36, d_year#37] +Arguments: [#36, #37] + +(56) NativeFilter +Input [2]: [#36#36, #37#37] +Condition : ((isnotnull(d_year#37) AND (d_year#37 = 2002)) AND isnotnull(d_date_sk#36)) + +(57) NativeShuffleExchange +Input [2]: [#36#36, #37#37] +Arguments: hashpartitioning(d_date_sk#36, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(58) ShuffleQueryStage +Output [2]: [#36#36, #37#37] +Arguments: X + +(59) AQEShuffleRead +Input [2]: [#36#36, #37#37] +Arguments: coalesced + +(60) InputAdapter +Input [2]: [#36#36, #37#37] + +(61) NativeSort +Input [2]: [#36#36, #37#37] +Arguments: [d_date_sk#36 ASC NULLS FIRST], false + +(62) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#31] +Right keys [1]: [d_date_sk#36] +Join type: Inner +Join condition: None + +(63) NativeProject +Output [12]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, ss_ext_discount_amt#32, ss_ext_sales_price#33, ss_ext_wholesale_cost#34, ss_ext_list_price#35, d_year#37] +Input [14]: [#24#24, #25#25, #26#26, #27#27, #28#28, #29#29, #30#30, #31#31, #32#32, #33#33, #34#34, #35#35, #36#36, #37#37] + +(64) NativeProject +Output [9]: [c_customer_id#24 AS c_customer_id#24, c_first_name#25 AS c_first_name#25, c_last_name#26 AS c_last_name#26, c_preferred_cust_flag#27 AS c_preferred_cust_flag#27, c_birth_country#28 AS c_birth_country#28, c_login#29 AS c_login#29, c_email_address#30 AS c_email_address#30, d_year#37 AS d_year#37, ((((ss_ext_list_price#35 - ss_ext_wholesale_cost#34) - ss_ext_discount_amt#32) + ss_ext_sales_price#33) / 2) AS _c8#38] +Input [12]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, ss_ext_discount_amt#32, ss_ext_sales_price#33, ss_ext_wholesale_cost#34, ss_ext_list_price#35, d_year#37] + +(65) NativeHashAggregate +Input [9]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, d_year#37, _c8#38] +Keys [8]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, d_year#37] +Functions [1]: [partial_sum(_c8#38)] +Aggregate Attributes [2]: [sum#39, isEmpty#40] +Results [9]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, d_year#37, #20#20] + +(66) NativeShuffleExchange +Input [9]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, d_year#37, #20#20] +Arguments: hashpartitioning(c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, d_year#37, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(67) ShuffleQueryStage +Output [9]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, d_year#37, #20#20] +Arguments: X + +(68) AQEShuffleRead +Input [9]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, d_year#37, #20#20] +Arguments: coalesced + +(69) InputAdapter +Input [9]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, d_year#37, #20#20] + +(70) NativeHashAggregate +Input [9]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, d_year#37, #20#20] +Keys [8]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, d_year#37] +Functions [1]: [sum(((((ss_ext_list_price#35 - ss_ext_wholesale_cost#34) - ss_ext_discount_amt#32) + ss_ext_sales_price#33) / 2))] +Aggregate Attributes [1]: [sum(((((ss_ext_list_price#35 - ss_ext_wholesale_cost#34) - ss_ext_discount_amt#32) + ss_ext_sales_price#33) / 2))#21] +Results [9]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, d_year#37, sum(((((ss_ext_list_price#35 - ss_ext_wholesale_cost#34) - ss_ext_discount_amt#32) + ss_ext_sales_price#33) / 2))#21] + +(71) NativeProject +Output [8]: [c_customer_id#24 AS customer_id#41, c_first_name#25 AS customer_first_name#42, c_last_name#26 AS customer_last_name#43, c_preferred_cust_flag#27 AS customer_preferred_cust_flag#44, c_birth_country#28 AS customer_birth_country#45, c_login#29 AS customer_login#46, c_email_address#30 AS customer_email_address#47, sum(((((ss_ext_list_price#35 - ss_ext_wholesale_cost#34) - ss_ext_discount_amt#32) + ss_ext_sales_price#33) / 2))#21 AS year_total#48] +Input [9]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, d_year#37, sum(((((ss_ext_list_price#35 - ss_ext_wholesale_cost#34) - ss_ext_discount_amt#32) + ss_ext_sales_price#33) / 2))#21] + +(72) NativeShuffleExchange +Input [8]: [customer_id#41, customer_first_name#42, customer_last_name#43, customer_preferred_cust_flag#44, customer_birth_country#45, customer_login#46, customer_email_address#47, year_total#48] +Arguments: hashpartitioning(customer_id#41, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(73) ShuffleQueryStage +Output [8]: [customer_id#41, customer_first_name#42, customer_last_name#43, customer_preferred_cust_flag#44, customer_birth_country#45, customer_login#46, customer_email_address#47, year_total#48] +Arguments: X + +(74) AQEShuffleRead +Input [8]: [customer_id#41, customer_first_name#42, customer_last_name#43, customer_preferred_cust_flag#44, customer_birth_country#45, customer_login#46, customer_email_address#47, year_total#48] +Arguments: coalesced + +(75) InputAdapter +Input [8]: [customer_id#41, customer_first_name#42, customer_last_name#43, customer_preferred_cust_flag#44, customer_birth_country#45, customer_login#46, customer_email_address#47, year_total#48] + +(76) NativeSort +Input [8]: [customer_id#41, customer_first_name#42, customer_last_name#43, customer_preferred_cust_flag#44, customer_birth_country#45, customer_login#46, customer_email_address#47, year_total#48] +Arguments: [customer_id#41 ASC NULLS FIRST], false + +(77) NativeSortMergeJoin +Left keys [1]: [customer_id#22] +Right keys [1]: [customer_id#41] +Join type: Inner +Join condition: None + +(78) ReusedExchange [Reuses operator id: 4] +Output [8]: [c_customer_sk#49, c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56] + +(79) ShuffleQueryStage +Output [8]: [c_customer_sk#49, c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56] +Arguments: X + +(80) AQEShuffleRead +Input [8]: [c_customer_sk#49, c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56] +Arguments: coalesced + +(81) InputAdapter +Input [8]: [c_customer_sk#49, c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56] +Arguments: [#49, #50, #51, #52, #53, #54, #55, #56] + +(82) InputAdapter +Input [8]: [#49#49, #50#50, #51#51, #52#52, #53#53, #54#54, #55#55, #56#56] + +(83) NativeSort +Input [8]: [#49#49, #50#50, #51#51, #52#52, #53#53, #54#54, #55#55, #56#56] +Arguments: [c_customer_sk#49 ASC NULLS FIRST], false + +(280) Scan parquet +Output [6]: [cs_sold_date_sk#57, cs_bill_customer_sk#58, cs_ext_discount_amt#59, cs_ext_sales_price#60, cs_ext_wholesale_cost#61, cs_ext_list_price#62] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_bill_customer_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(85) InputAdapter +Input [6]: [cs_sold_date_sk#57, cs_bill_customer_sk#58, cs_ext_discount_amt#59, cs_ext_sales_price#60, cs_ext_wholesale_cost#61, cs_ext_list_price#62] +Arguments: [#57, #58, #59, #60, #61, #62] + +(86) NativeFilter +Input [6]: [#57#57, #58#58, #59#59, #60#60, #61#61, #62#62] +Condition : (isnotnull(cs_bill_customer_sk#58) AND isnotnull(cs_sold_date_sk#57)) + +(87) NativeShuffleExchange +Input [6]: [#57#57, #58#58, #59#59, #60#60, #61#61, #62#62] +Arguments: hashpartitioning(cs_bill_customer_sk#58, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(88) ShuffleQueryStage +Output [6]: [#57#57, #58#58, #59#59, #60#60, #61#61, #62#62] +Arguments: X + +(89) AQEShuffleRead +Input [6]: [#57#57, #58#58, #59#59, #60#60, #61#61, #62#62] +Arguments: coalesced + +(90) InputAdapter +Input [6]: [#57#57, #58#58, #59#59, #60#60, #61#61, #62#62] + +(91) NativeSort +Input [6]: [#57#57, #58#58, #59#59, #60#60, #61#61, #62#62] +Arguments: [cs_bill_customer_sk#58 ASC NULLS FIRST], false + +(92) NativeSortMergeJoin +Left keys [1]: [c_customer_sk#49] +Right keys [1]: [cs_bill_customer_sk#58] +Join type: Inner +Join condition: None + +(93) NativeProject +Output [12]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, cs_sold_date_sk#57, cs_ext_discount_amt#59, cs_ext_sales_price#60, cs_ext_wholesale_cost#61, cs_ext_list_price#62] +Input [14]: [#49#49, #50#50, #51#51, #52#52, #53#53, #54#54, #55#55, #56#56, #57#57, #58#58, #59#59, #60#60, #61#61, #62#62] + +(94) NativeShuffleExchange +Input [12]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, cs_sold_date_sk#57, cs_ext_discount_amt#59, cs_ext_sales_price#60, cs_ext_wholesale_cost#61, cs_ext_list_price#62] +Arguments: hashpartitioning(cs_sold_date_sk#57, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(95) ShuffleQueryStage +Output [12]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, cs_sold_date_sk#57, cs_ext_discount_amt#59, cs_ext_sales_price#60, cs_ext_wholesale_cost#61, cs_ext_list_price#62] +Arguments: X + +(96) AQEShuffleRead +Input [12]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, cs_sold_date_sk#57, cs_ext_discount_amt#59, cs_ext_sales_price#60, cs_ext_wholesale_cost#61, cs_ext_list_price#62] +Arguments: coalesced + +(97) InputAdapter +Input [12]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, cs_sold_date_sk#57, cs_ext_discount_amt#59, cs_ext_sales_price#60, cs_ext_wholesale_cost#61, cs_ext_list_price#62] + +(98) NativeSort +Input [12]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, cs_sold_date_sk#57, cs_ext_discount_amt#59, cs_ext_sales_price#60, cs_ext_wholesale_cost#61, cs_ext_list_price#62] +Arguments: [cs_sold_date_sk#57 ASC NULLS FIRST], false + +(99) ReusedExchange [Reuses operator id: 27] +Output [2]: [d_date_sk#63, d_year#64] + +(100) ShuffleQueryStage +Output [2]: [d_date_sk#63, d_year#64] +Arguments: X + +(101) AQEShuffleRead +Input [2]: [d_date_sk#63, d_year#64] +Arguments: coalesced + +(102) InputAdapter +Input [2]: [d_date_sk#63, d_year#64] +Arguments: [#63, #64] + +(103) InputAdapter +Input [2]: [#63#63, #64#64] + +(104) NativeSort +Input [2]: [#63#63, #64#64] +Arguments: [d_date_sk#63 ASC NULLS FIRST], false + +(105) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#57] +Right keys [1]: [d_date_sk#63] +Join type: Inner +Join condition: None + +(106) NativeProject +Output [12]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, cs_ext_discount_amt#59, cs_ext_sales_price#60, cs_ext_wholesale_cost#61, cs_ext_list_price#62, d_year#64] +Input [14]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, cs_sold_date_sk#57, cs_ext_discount_amt#59, cs_ext_sales_price#60, cs_ext_wholesale_cost#61, cs_ext_list_price#62, #63#63, #64#64] + +(107) NativeProject +Output [9]: [c_customer_id#50 AS c_customer_id#50, c_first_name#51 AS c_first_name#51, c_last_name#52 AS c_last_name#52, c_preferred_cust_flag#53 AS c_preferred_cust_flag#53, c_birth_country#54 AS c_birth_country#54, c_login#55 AS c_login#55, c_email_address#56 AS c_email_address#56, d_year#64 AS d_year#64, ((((cs_ext_list_price#62 - cs_ext_wholesale_cost#61) - cs_ext_discount_amt#59) + cs_ext_sales_price#60) / 2) AS _c8#65] +Input [12]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, cs_ext_discount_amt#59, cs_ext_sales_price#60, cs_ext_wholesale_cost#61, cs_ext_list_price#62, d_year#64] + +(108) NativeHashAggregate +Input [9]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, d_year#64, _c8#65] +Keys [8]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, d_year#64] +Functions [1]: [partial_sum(_c8#65)] +Aggregate Attributes [2]: [sum#66, isEmpty#67] +Results [9]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, d_year#64, #20#20] + +(109) NativeShuffleExchange +Input [9]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, d_year#64, #20#20] +Arguments: hashpartitioning(c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, d_year#64, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(110) ShuffleQueryStage +Output [9]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, d_year#64, #20#20] +Arguments: X + +(111) AQEShuffleRead +Input [9]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, d_year#64, #20#20] +Arguments: coalesced + +(112) InputAdapter +Input [9]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, d_year#64, #20#20] + +(113) NativeHashAggregate +Input [9]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, d_year#64, #20#20] +Keys [8]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, d_year#64] +Functions [1]: [sum(((((cs_ext_list_price#62 - cs_ext_wholesale_cost#61) - cs_ext_discount_amt#59) + cs_ext_sales_price#60) / 2))] +Aggregate Attributes [1]: [sum(((((cs_ext_list_price#62 - cs_ext_wholesale_cost#61) - cs_ext_discount_amt#59) + cs_ext_sales_price#60) / 2))#68] +Results [9]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, d_year#64, sum(((((cs_ext_list_price#62 - cs_ext_wholesale_cost#61) - cs_ext_discount_amt#59) + cs_ext_sales_price#60) / 2))#68] + +(114) NativeProject +Output [2]: [c_customer_id#50 AS customer_id#69, sum(((((cs_ext_list_price#62 - cs_ext_wholesale_cost#61) - cs_ext_discount_amt#59) + cs_ext_sales_price#60) / 2))#68 AS year_total#70] +Input [9]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, d_year#64, sum(((((cs_ext_list_price#62 - cs_ext_wholesale_cost#61) - cs_ext_discount_amt#59) + cs_ext_sales_price#60) / 2))#68] + +(115) NativeFilter +Input [2]: [customer_id#69, year_total#70] +Condition : (isnotnull(year_total#70) AND (year_total#70 > 0.000000)) + +(116) NativeShuffleExchange +Input [2]: [customer_id#69, year_total#70] +Arguments: hashpartitioning(customer_id#69, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(117) ShuffleQueryStage +Output [2]: [customer_id#69, year_total#70] +Arguments: X + +(118) AQEShuffleRead +Input [2]: [customer_id#69, year_total#70] +Arguments: coalesced + +(119) InputAdapter +Input [2]: [customer_id#69, year_total#70] + +(120) NativeSort +Input [2]: [customer_id#69, year_total#70] +Arguments: [customer_id#69 ASC NULLS FIRST], false + +(121) NativeSortMergeJoin +Left keys [1]: [customer_id#22] +Right keys [1]: [customer_id#69] +Join type: Inner +Join condition: None + +(122) NativeProject +Output [11]: [customer_id#22, year_total#23, customer_id#41, customer_first_name#42, customer_last_name#43, customer_preferred_cust_flag#44, customer_birth_country#45, customer_login#46, customer_email_address#47, year_total#48, year_total#70] +Input [12]: [customer_id#22, year_total#23, customer_id#41, customer_first_name#42, customer_last_name#43, customer_preferred_cust_flag#44, customer_birth_country#45, customer_login#46, customer_email_address#47, year_total#48, customer_id#69, year_total#70] + +(123) ReusedExchange [Reuses operator id: 94] +Output [12]: [c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, cs_sold_date_sk#78, cs_ext_discount_amt#79, cs_ext_sales_price#80, cs_ext_wholesale_cost#81, cs_ext_list_price#82] + +(124) ShuffleQueryStage +Output [12]: [c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, cs_sold_date_sk#78, cs_ext_discount_amt#79, cs_ext_sales_price#80, cs_ext_wholesale_cost#81, cs_ext_list_price#82] +Arguments: X + +(125) AQEShuffleRead +Input [12]: [c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, cs_sold_date_sk#78, cs_ext_discount_amt#79, cs_ext_sales_price#80, cs_ext_wholesale_cost#81, cs_ext_list_price#82] +Arguments: coalesced + +(126) InputAdapter +Input [12]: [c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, cs_sold_date_sk#78, cs_ext_discount_amt#79, cs_ext_sales_price#80, cs_ext_wholesale_cost#81, cs_ext_list_price#82] +Arguments: [#71, #72, #73, #74, #75, #76, #77, #78, #79, #80, #81, #82] + +(127) InputAdapter +Input [12]: [#71#71, #72#72, #73#73, #74#74, #75#75, #76#76, #77#77, #78#78, #79#79, #80#80, #81#81, #82#82] + +(128) NativeSort +Input [12]: [#71#71, #72#72, #73#73, #74#74, #75#75, #76#76, #77#77, #78#78, #79#79, #80#80, #81#81, #82#82] +Arguments: [cs_sold_date_sk#78 ASC NULLS FIRST], false + +(129) ReusedExchange [Reuses operator id: 57] +Output [2]: [d_date_sk#83, d_year#84] + +(130) ShuffleQueryStage +Output [2]: [d_date_sk#83, d_year#84] +Arguments: X + +(131) AQEShuffleRead +Input [2]: [d_date_sk#83, d_year#84] +Arguments: coalesced + +(132) InputAdapter +Input [2]: [d_date_sk#83, d_year#84] +Arguments: [#83, #84] + +(133) InputAdapter +Input [2]: [#83#83, #84#84] + +(134) NativeSort +Input [2]: [#83#83, #84#84] +Arguments: [d_date_sk#83 ASC NULLS FIRST], false + +(135) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#78] +Right keys [1]: [d_date_sk#83] +Join type: Inner +Join condition: None + +(136) NativeProject +Output [12]: [c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, cs_ext_discount_amt#79, cs_ext_sales_price#80, cs_ext_wholesale_cost#81, cs_ext_list_price#82, d_year#84] +Input [14]: [#71#71, #72#72, #73#73, #74#74, #75#75, #76#76, #77#77, #78#78, #79#79, #80#80, #81#81, #82#82, #83#83, #84#84] + +(137) NativeProject +Output [9]: [c_customer_id#71 AS c_customer_id#71, c_first_name#72 AS c_first_name#72, c_last_name#73 AS c_last_name#73, c_preferred_cust_flag#74 AS c_preferred_cust_flag#74, c_birth_country#75 AS c_birth_country#75, c_login#76 AS c_login#76, c_email_address#77 AS c_email_address#77, d_year#84 AS d_year#84, ((((cs_ext_list_price#82 - cs_ext_wholesale_cost#81) - cs_ext_discount_amt#79) + cs_ext_sales_price#80) / 2) AS _c8#85] +Input [12]: [c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, cs_ext_discount_amt#79, cs_ext_sales_price#80, cs_ext_wholesale_cost#81, cs_ext_list_price#82, d_year#84] + +(138) NativeHashAggregate +Input [9]: [c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, d_year#84, _c8#85] +Keys [8]: [c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, d_year#84] +Functions [1]: [partial_sum(_c8#85)] +Aggregate Attributes [2]: [sum#86, isEmpty#87] +Results [9]: [c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, d_year#84, #20#20] + +(139) NativeShuffleExchange +Input [9]: [c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, d_year#84, #20#20] +Arguments: hashpartitioning(c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, d_year#84, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(140) ShuffleQueryStage +Output [9]: [c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, d_year#84, #20#20] +Arguments: X + +(141) AQEShuffleRead +Input [9]: [c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, d_year#84, #20#20] +Arguments: coalesced + +(142) InputAdapter +Input [9]: [c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, d_year#84, #20#20] + +(143) NativeHashAggregate +Input [9]: [c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, d_year#84, #20#20] +Keys [8]: [c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, d_year#84] +Functions [1]: [sum(((((cs_ext_list_price#82 - cs_ext_wholesale_cost#81) - cs_ext_discount_amt#79) + cs_ext_sales_price#80) / 2))] +Aggregate Attributes [1]: [sum(((((cs_ext_list_price#82 - cs_ext_wholesale_cost#81) - cs_ext_discount_amt#79) + cs_ext_sales_price#80) / 2))#68] +Results [9]: [c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, d_year#84, sum(((((cs_ext_list_price#82 - cs_ext_wholesale_cost#81) - cs_ext_discount_amt#79) + cs_ext_sales_price#80) / 2))#68] + +(144) NativeProject +Output [2]: [c_customer_id#71 AS customer_id#88, sum(((((cs_ext_list_price#82 - cs_ext_wholesale_cost#81) - cs_ext_discount_amt#79) + cs_ext_sales_price#80) / 2))#68 AS year_total#89] +Input [9]: [c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, d_year#84, sum(((((cs_ext_list_price#82 - cs_ext_wholesale_cost#81) - cs_ext_discount_amt#79) + cs_ext_sales_price#80) / 2))#68] + +(145) NativeShuffleExchange +Input [2]: [customer_id#88, year_total#89] +Arguments: hashpartitioning(customer_id#88, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(146) ShuffleQueryStage +Output [2]: [customer_id#88, year_total#89] +Arguments: X + +(147) AQEShuffleRead +Input [2]: [customer_id#88, year_total#89] +Arguments: coalesced + +(148) InputAdapter +Input [2]: [customer_id#88, year_total#89] + +(149) NativeSort +Input [2]: [customer_id#88, year_total#89] +Arguments: [customer_id#88 ASC NULLS FIRST], false + +(150) SortMergeJoin [codegen id : 1] +Left keys [1]: [customer_id#22] +Right keys [1]: [customer_id#88] +Join type: Inner +Join condition: (CASE WHEN (year_total#70 > 0.000000) THEN (year_total#89 / year_total#70) END > CASE WHEN (year_total#23 > 0.000000) THEN (year_total#48 / year_total#23) END) + +(151) Project [codegen id : 1] +Output [10]: [customer_id#22, customer_id#41, customer_first_name#42, customer_last_name#43, customer_preferred_cust_flag#44, customer_birth_country#45, customer_login#46, customer_email_address#47, year_total#70, year_total#89] +Input [13]: [customer_id#22, year_total#23, customer_id#41, customer_first_name#42, customer_last_name#43, customer_preferred_cust_flag#44, customer_birth_country#45, customer_login#46, customer_email_address#47, year_total#48, year_total#70, customer_id#88, year_total#89] + +(152) ConvertToNative +Input [10]: [customer_id#22, customer_id#41, customer_first_name#42, customer_last_name#43, customer_preferred_cust_flag#44, customer_birth_country#45, customer_login#46, customer_email_address#47, year_total#70, year_total#89] + +(153) ReusedExchange [Reuses operator id: 4] +Output [8]: [c_customer_sk#90, c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97] + +(154) ShuffleQueryStage +Output [8]: [c_customer_sk#90, c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97] +Arguments: X + +(155) AQEShuffleRead +Input [8]: [c_customer_sk#90, c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97] +Arguments: coalesced + +(156) InputAdapter +Input [8]: [c_customer_sk#90, c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97] +Arguments: [#90, #91, #92, #93, #94, #95, #96, #97] + +(157) InputAdapter +Input [8]: [#90#90, #91#91, #92#92, #93#93, #94#94, #95#95, #96#96, #97#97] + +(158) NativeSort +Input [8]: [#90#90, #91#91, #92#92, #93#93, #94#94, #95#95, #96#96, #97#97] +Arguments: [c_customer_sk#90 ASC NULLS FIRST], false + +(331) Scan parquet +Output [6]: [ws_sold_date_sk#98, ws_bill_customer_sk#99, ws_ext_discount_amt#100, ws_ext_sales_price#101, ws_ext_wholesale_cost#102, ws_ext_list_price#103] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_bill_customer_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(160) InputAdapter +Input [6]: [ws_sold_date_sk#98, ws_bill_customer_sk#99, ws_ext_discount_amt#100, ws_ext_sales_price#101, ws_ext_wholesale_cost#102, ws_ext_list_price#103] +Arguments: [#98, #99, #100, #101, #102, #103] + +(161) NativeFilter +Input [6]: [#98#98, #99#99, #100#100, #101#101, #102#102, #103#103] +Condition : (isnotnull(ws_bill_customer_sk#99) AND isnotnull(ws_sold_date_sk#98)) + +(162) NativeShuffleExchange +Input [6]: [#98#98, #99#99, #100#100, #101#101, #102#102, #103#103] +Arguments: hashpartitioning(ws_bill_customer_sk#99, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(163) ShuffleQueryStage +Output [6]: [#98#98, #99#99, #100#100, #101#101, #102#102, #103#103] +Arguments: X + +(164) AQEShuffleRead +Input [6]: [#98#98, #99#99, #100#100, #101#101, #102#102, #103#103] +Arguments: coalesced + +(165) InputAdapter +Input [6]: [#98#98, #99#99, #100#100, #101#101, #102#102, #103#103] + +(166) NativeSort +Input [6]: [#98#98, #99#99, #100#100, #101#101, #102#102, #103#103] +Arguments: [ws_bill_customer_sk#99 ASC NULLS FIRST], false + +(167) NativeSortMergeJoin +Left keys [1]: [c_customer_sk#90] +Right keys [1]: [ws_bill_customer_sk#99] +Join type: Inner +Join condition: None + +(168) NativeProject +Output [12]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, ws_sold_date_sk#98, ws_ext_discount_amt#100, ws_ext_sales_price#101, ws_ext_wholesale_cost#102, ws_ext_list_price#103] +Input [14]: [#90#90, #91#91, #92#92, #93#93, #94#94, #95#95, #96#96, #97#97, #98#98, #99#99, #100#100, #101#101, #102#102, #103#103] + +(169) NativeShuffleExchange +Input [12]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, ws_sold_date_sk#98, ws_ext_discount_amt#100, ws_ext_sales_price#101, ws_ext_wholesale_cost#102, ws_ext_list_price#103] +Arguments: hashpartitioning(ws_sold_date_sk#98, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(170) ShuffleQueryStage +Output [12]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, ws_sold_date_sk#98, ws_ext_discount_amt#100, ws_ext_sales_price#101, ws_ext_wholesale_cost#102, ws_ext_list_price#103] +Arguments: X + +(171) AQEShuffleRead +Input [12]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, ws_sold_date_sk#98, ws_ext_discount_amt#100, ws_ext_sales_price#101, ws_ext_wholesale_cost#102, ws_ext_list_price#103] +Arguments: coalesced + +(172) InputAdapter +Input [12]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, ws_sold_date_sk#98, ws_ext_discount_amt#100, ws_ext_sales_price#101, ws_ext_wholesale_cost#102, ws_ext_list_price#103] + +(173) NativeSort +Input [12]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, ws_sold_date_sk#98, ws_ext_discount_amt#100, ws_ext_sales_price#101, ws_ext_wholesale_cost#102, ws_ext_list_price#103] +Arguments: [ws_sold_date_sk#98 ASC NULLS FIRST], false + +(174) ReusedExchange [Reuses operator id: 27] +Output [2]: [d_date_sk#104, d_year#105] + +(175) ShuffleQueryStage +Output [2]: [d_date_sk#104, d_year#105] +Arguments: X + +(176) AQEShuffleRead +Input [2]: [d_date_sk#104, d_year#105] +Arguments: coalesced + +(177) InputAdapter +Input [2]: [d_date_sk#104, d_year#105] +Arguments: [#104, #105] + +(178) InputAdapter +Input [2]: [#104#104, #105#105] + +(179) NativeSort +Input [2]: [#104#104, #105#105] +Arguments: [d_date_sk#104 ASC NULLS FIRST], false + +(180) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#98] +Right keys [1]: [d_date_sk#104] +Join type: Inner +Join condition: None + +(181) NativeProject +Output [12]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, ws_ext_discount_amt#100, ws_ext_sales_price#101, ws_ext_wholesale_cost#102, ws_ext_list_price#103, d_year#105] +Input [14]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, ws_sold_date_sk#98, ws_ext_discount_amt#100, ws_ext_sales_price#101, ws_ext_wholesale_cost#102, ws_ext_list_price#103, #104#104, #105#105] + +(182) NativeProject +Output [9]: [c_customer_id#91 AS c_customer_id#91, c_first_name#92 AS c_first_name#92, c_last_name#93 AS c_last_name#93, c_preferred_cust_flag#94 AS c_preferred_cust_flag#94, c_birth_country#95 AS c_birth_country#95, c_login#96 AS c_login#96, c_email_address#97 AS c_email_address#97, d_year#105 AS d_year#105, ((((ws_ext_list_price#103 - ws_ext_wholesale_cost#102) - ws_ext_discount_amt#100) + ws_ext_sales_price#101) / 2) AS _c8#106] +Input [12]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, ws_ext_discount_amt#100, ws_ext_sales_price#101, ws_ext_wholesale_cost#102, ws_ext_list_price#103, d_year#105] + +(183) NativeHashAggregate +Input [9]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, d_year#105, _c8#106] +Keys [8]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, d_year#105] +Functions [1]: [partial_sum(_c8#106)] +Aggregate Attributes [2]: [sum#107, isEmpty#108] +Results [9]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, d_year#105, #20#20] + +(184) NativeShuffleExchange +Input [9]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, d_year#105, #20#20] +Arguments: hashpartitioning(c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, d_year#105, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(185) ShuffleQueryStage +Output [9]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, d_year#105, #20#20] +Arguments: X + +(186) AQEShuffleRead +Input [9]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, d_year#105, #20#20] +Arguments: coalesced + +(187) InputAdapter +Input [9]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, d_year#105, #20#20] + +(188) NativeHashAggregate +Input [9]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, d_year#105, #20#20] +Keys [8]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, d_year#105] +Functions [1]: [sum(((((ws_ext_list_price#103 - ws_ext_wholesale_cost#102) - ws_ext_discount_amt#100) + ws_ext_sales_price#101) / 2))] +Aggregate Attributes [1]: [sum(((((ws_ext_list_price#103 - ws_ext_wholesale_cost#102) - ws_ext_discount_amt#100) + ws_ext_sales_price#101) / 2))#109] +Results [9]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, d_year#105, sum(((((ws_ext_list_price#103 - ws_ext_wholesale_cost#102) - ws_ext_discount_amt#100) + ws_ext_sales_price#101) / 2))#109] + +(189) NativeProject +Output [2]: [c_customer_id#91 AS customer_id#110, sum(((((ws_ext_list_price#103 - ws_ext_wholesale_cost#102) - ws_ext_discount_amt#100) + ws_ext_sales_price#101) / 2))#109 AS year_total#111] +Input [9]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, d_year#105, sum(((((ws_ext_list_price#103 - ws_ext_wholesale_cost#102) - ws_ext_discount_amt#100) + ws_ext_sales_price#101) / 2))#109] + +(190) NativeFilter +Input [2]: [customer_id#110, year_total#111] +Condition : (isnotnull(year_total#111) AND (year_total#111 > 0.000000)) + +(191) NativeShuffleExchange +Input [2]: [customer_id#110, year_total#111] +Arguments: hashpartitioning(customer_id#110, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(192) ShuffleQueryStage +Output [2]: [customer_id#110, year_total#111] +Arguments: X + +(193) AQEShuffleRead +Input [2]: [customer_id#110, year_total#111] +Arguments: coalesced + +(194) InputAdapter +Input [2]: [customer_id#110, year_total#111] + +(195) NativeSort +Input [2]: [customer_id#110, year_total#111] +Arguments: [customer_id#110 ASC NULLS FIRST], false + +(196) NativeSortMergeJoin +Left keys [1]: [customer_id#22] +Right keys [1]: [customer_id#110] +Join type: Inner +Join condition: None + +(197) NativeProject +Output [11]: [customer_id#22, customer_id#41, customer_first_name#42, customer_last_name#43, customer_preferred_cust_flag#44, customer_birth_country#45, customer_login#46, customer_email_address#47, year_total#70, year_total#89, year_total#111] +Input [12]: [customer_id#22, customer_id#41, customer_first_name#42, customer_last_name#43, customer_preferred_cust_flag#44, customer_birth_country#45, customer_login#46, customer_email_address#47, year_total#70, year_total#89, customer_id#110, year_total#111] + +(198) ReusedExchange [Reuses operator id: 169] +Output [12]: [c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, ws_sold_date_sk#119, ws_ext_discount_amt#120, ws_ext_sales_price#121, ws_ext_wholesale_cost#122, ws_ext_list_price#123] + +(199) ShuffleQueryStage +Output [12]: [c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, ws_sold_date_sk#119, ws_ext_discount_amt#120, ws_ext_sales_price#121, ws_ext_wholesale_cost#122, ws_ext_list_price#123] +Arguments: X + +(200) AQEShuffleRead +Input [12]: [c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, ws_sold_date_sk#119, ws_ext_discount_amt#120, ws_ext_sales_price#121, ws_ext_wholesale_cost#122, ws_ext_list_price#123] +Arguments: coalesced + +(201) InputAdapter +Input [12]: [c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, ws_sold_date_sk#119, ws_ext_discount_amt#120, ws_ext_sales_price#121, ws_ext_wholesale_cost#122, ws_ext_list_price#123] +Arguments: [#112, #113, #114, #115, #116, #117, #118, #119, #120, #121, #122, #123] + +(202) InputAdapter +Input [12]: [#112#112, #113#113, #114#114, #115#115, #116#116, #117#117, #118#118, #119#119, #120#120, #121#121, #122#122, #123#123] + +(203) NativeSort +Input [12]: [#112#112, #113#113, #114#114, #115#115, #116#116, #117#117, #118#118, #119#119, #120#120, #121#121, #122#122, #123#123] +Arguments: [ws_sold_date_sk#119 ASC NULLS FIRST], false + +(204) ReusedExchange [Reuses operator id: 57] +Output [2]: [d_date_sk#124, d_year#125] + +(205) ShuffleQueryStage +Output [2]: [d_date_sk#124, d_year#125] +Arguments: X + +(206) AQEShuffleRead +Input [2]: [d_date_sk#124, d_year#125] +Arguments: coalesced + +(207) InputAdapter +Input [2]: [d_date_sk#124, d_year#125] +Arguments: [#124, #125] + +(208) InputAdapter +Input [2]: [#124#124, #125#125] + +(209) NativeSort +Input [2]: [#124#124, #125#125] +Arguments: [d_date_sk#124 ASC NULLS FIRST], false + +(210) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#119] +Right keys [1]: [d_date_sk#124] +Join type: Inner +Join condition: None + +(211) NativeProject +Output [12]: [c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, ws_ext_discount_amt#120, ws_ext_sales_price#121, ws_ext_wholesale_cost#122, ws_ext_list_price#123, d_year#125] +Input [14]: [#112#112, #113#113, #114#114, #115#115, #116#116, #117#117, #118#118, #119#119, #120#120, #121#121, #122#122, #123#123, #124#124, #125#125] + +(212) NativeProject +Output [9]: [c_customer_id#112 AS c_customer_id#112, c_first_name#113 AS c_first_name#113, c_last_name#114 AS c_last_name#114, c_preferred_cust_flag#115 AS c_preferred_cust_flag#115, c_birth_country#116 AS c_birth_country#116, c_login#117 AS c_login#117, c_email_address#118 AS c_email_address#118, d_year#125 AS d_year#125, ((((ws_ext_list_price#123 - ws_ext_wholesale_cost#122) - ws_ext_discount_amt#120) + ws_ext_sales_price#121) / 2) AS _c8#126] +Input [12]: [c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, ws_ext_discount_amt#120, ws_ext_sales_price#121, ws_ext_wholesale_cost#122, ws_ext_list_price#123, d_year#125] + +(213) NativeHashAggregate +Input [9]: [c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, d_year#125, _c8#126] +Keys [8]: [c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, d_year#125] +Functions [1]: [partial_sum(_c8#126)] +Aggregate Attributes [2]: [sum#127, isEmpty#128] +Results [9]: [c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, d_year#125, #20#20] + +(214) NativeShuffleExchange +Input [9]: [c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, d_year#125, #20#20] +Arguments: hashpartitioning(c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, d_year#125, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(215) ShuffleQueryStage +Output [9]: [c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, d_year#125, #20#20] +Arguments: X + +(216) AQEShuffleRead +Input [9]: [c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, d_year#125, #20#20] +Arguments: coalesced + +(217) InputAdapter +Input [9]: [c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, d_year#125, #20#20] + +(218) NativeHashAggregate +Input [9]: [c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, d_year#125, #20#20] +Keys [8]: [c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, d_year#125] +Functions [1]: [sum(((((ws_ext_list_price#123 - ws_ext_wholesale_cost#122) - ws_ext_discount_amt#120) + ws_ext_sales_price#121) / 2))] +Aggregate Attributes [1]: [sum(((((ws_ext_list_price#123 - ws_ext_wholesale_cost#122) - ws_ext_discount_amt#120) + ws_ext_sales_price#121) / 2))#109] +Results [9]: [c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, d_year#125, sum(((((ws_ext_list_price#123 - ws_ext_wholesale_cost#122) - ws_ext_discount_amt#120) + ws_ext_sales_price#121) / 2))#109] + +(219) NativeProject +Output [2]: [c_customer_id#112 AS customer_id#129, sum(((((ws_ext_list_price#123 - ws_ext_wholesale_cost#122) - ws_ext_discount_amt#120) + ws_ext_sales_price#121) / 2))#109 AS year_total#130] +Input [9]: [c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, d_year#125, sum(((((ws_ext_list_price#123 - ws_ext_wholesale_cost#122) - ws_ext_discount_amt#120) + ws_ext_sales_price#121) / 2))#109] + +(220) NativeShuffleExchange +Input [2]: [customer_id#129, year_total#130] +Arguments: hashpartitioning(customer_id#129, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(221) ShuffleQueryStage +Output [2]: [customer_id#129, year_total#130] +Arguments: X + +(222) AQEShuffleRead +Input [2]: [customer_id#129, year_total#130] +Arguments: coalesced + +(223) InputAdapter +Input [2]: [customer_id#129, year_total#130] + +(224) NativeSort +Input [2]: [customer_id#129, year_total#130] +Arguments: [customer_id#129 ASC NULLS FIRST], false + +(225) SortMergeJoin [codegen id : 2] +Left keys [1]: [customer_id#22] +Right keys [1]: [customer_id#129] +Join type: Inner +Join condition: (CASE WHEN (year_total#70 > 0.000000) THEN (year_total#89 / year_total#70) END > CASE WHEN (year_total#111 > 0.000000) THEN (year_total#130 / year_total#111) END) + +(226) Project [codegen id : 2] +Output [7]: [customer_id#41, customer_first_name#42, customer_last_name#43, customer_preferred_cust_flag#44, customer_birth_country#45, customer_login#46, customer_email_address#47] +Input [13]: [customer_id#22, customer_id#41, customer_first_name#42, customer_last_name#43, customer_preferred_cust_flag#44, customer_birth_country#45, customer_login#46, customer_email_address#47, year_total#70, year_total#89, year_total#111, customer_id#129, year_total#130] + +(227) TakeOrderedAndProject +Input [7]: [customer_id#41, customer_first_name#42, customer_last_name#43, customer_preferred_cust_flag#44, customer_birth_country#45, customer_login#46, customer_email_address#47] +Arguments: X, [customer_id#41 ASC NULLS FIRST, customer_first_name#42 ASC NULLS FIRST, customer_last_name#43 ASC NULLS FIRST, customer_preferred_cust_flag#44 ASC NULLS FIRST, customer_birth_country#45 ASC NULLS FIRST, customer_login#46 ASC NULLS FIRST, customer_email_address#47 ASC NULLS FIRST], [customer_id#41, customer_first_name#42, customer_last_name#43, customer_preferred_cust_flag#44, customer_birth_country#45, customer_login#46, customer_email_address#47] + +(228) Scan parquet +Output [8]: [c_customer_sk#1, c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_customer_id)] +ReadSchema: struct + +(229) Filter +Input [8]: [c_customer_sk#1, c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8] +Condition : (isnotnull(c_customer_sk#1) AND isnotnull(c_customer_id#2)) + +(230) Exchange +Input [8]: [c_customer_sk#1, c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8] +Arguments: hashpartitioning(c_customer_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(231) Sort +Input [8]: [c_customer_sk#1, c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8] +Arguments: [c_customer_sk#1 ASC NULLS FIRST], false, 0 + +(232) Scan parquet +Output [6]: [ss_sold_date_sk#9, ss_customer_sk#10, ss_ext_discount_amt#11, ss_ext_sales_price#12, ss_ext_wholesale_cost#13, ss_ext_list_price#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(233) Filter +Input [6]: [ss_sold_date_sk#9, ss_customer_sk#10, ss_ext_discount_amt#11, ss_ext_sales_price#12, ss_ext_wholesale_cost#13, ss_ext_list_price#14] +Condition : (isnotnull(ss_customer_sk#10) AND isnotnull(ss_sold_date_sk#9)) + +(234) Exchange +Input [6]: [ss_sold_date_sk#9, ss_customer_sk#10, ss_ext_discount_amt#11, ss_ext_sales_price#12, ss_ext_wholesale_cost#13, ss_ext_list_price#14] +Arguments: hashpartitioning(ss_customer_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(235) Sort +Input [6]: [ss_sold_date_sk#9, ss_customer_sk#10, ss_ext_discount_amt#11, ss_ext_sales_price#12, ss_ext_wholesale_cost#13, ss_ext_list_price#14] +Arguments: [ss_customer_sk#10 ASC NULLS FIRST], false, 0 + +(236) SortMergeJoin +Left keys [1]: [c_customer_sk#1] +Right keys [1]: [ss_customer_sk#10] +Join type: Inner +Join condition: None + +(237) Project +Output [12]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_sold_date_sk#9, ss_ext_discount_amt#11, ss_ext_sales_price#12, ss_ext_wholesale_cost#13, ss_ext_list_price#14] +Input [14]: [c_customer_sk#1, c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_sold_date_sk#9, ss_customer_sk#10, ss_ext_discount_amt#11, ss_ext_sales_price#12, ss_ext_wholesale_cost#13, ss_ext_list_price#14] + +(238) Exchange +Input [12]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_sold_date_sk#9, ss_ext_discount_amt#11, ss_ext_sales_price#12, ss_ext_wholesale_cost#13, ss_ext_list_price#14] +Arguments: hashpartitioning(ss_sold_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(239) Sort +Input [12]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_sold_date_sk#9, ss_ext_discount_amt#11, ss_ext_sales_price#12, ss_ext_wholesale_cost#13, ss_ext_list_price#14] +Arguments: [ss_sold_date_sk#9 ASC NULLS FIRST], false, 0 + +(240) Scan parquet +Output [2]: [d_date_sk#15, d_year#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(241) Filter +Input [2]: [d_date_sk#15, d_year#16] +Condition : ((isnotnull(d_year#16) AND (d_year#16 = 2001)) AND isnotnull(d_date_sk#15)) + +(242) Exchange +Input [2]: [d_date_sk#15, d_year#16] +Arguments: hashpartitioning(d_date_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(243) Sort +Input [2]: [d_date_sk#15, d_year#16] +Arguments: [d_date_sk#15 ASC NULLS FIRST], false, 0 + +(244) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#9] +Right keys [1]: [d_date_sk#15] +Join type: Inner +Join condition: None + +(245) Project +Output [12]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_ext_discount_amt#11, ss_ext_sales_price#12, ss_ext_wholesale_cost#13, ss_ext_list_price#14, d_year#16] +Input [14]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_sold_date_sk#9, ss_ext_discount_amt#11, ss_ext_sales_price#12, ss_ext_wholesale_cost#13, ss_ext_list_price#14, d_date_sk#15, d_year#16] + +(246) HashAggregate +Input [12]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_ext_discount_amt#11, ss_ext_sales_price#12, ss_ext_wholesale_cost#13, ss_ext_list_price#14, d_year#16] +Keys [8]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, d_year#16] +Functions [1]: [partial_sum(((((ss_ext_list_price#14 - ss_ext_wholesale_cost#13) - ss_ext_discount_amt#11) + ss_ext_sales_price#12) / 2))] +Aggregate Attributes [2]: [sum#18, isEmpty#19] +Results [10]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, d_year#16, sum#131, isEmpty#132] + +(247) Exchange +Input [10]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, d_year#16, sum#131, isEmpty#132] +Arguments: hashpartitioning(c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, d_year#16, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(248) HashAggregate +Input [10]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, d_year#16, sum#131, isEmpty#132] +Keys [8]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, d_year#16] +Functions [1]: [sum(((((ss_ext_list_price#14 - ss_ext_wholesale_cost#13) - ss_ext_discount_amt#11) + ss_ext_sales_price#12) / 2))] +Aggregate Attributes [1]: [sum(((((ss_ext_list_price#14 - ss_ext_wholesale_cost#13) - ss_ext_discount_amt#11) + ss_ext_sales_price#12) / 2))#21] +Results [2]: [c_customer_id#2 AS customer_id#22, sum(((((ss_ext_list_price#14 - ss_ext_wholesale_cost#13) - ss_ext_discount_amt#11) + ss_ext_sales_price#12) / 2))#21 AS year_total#23] + +(249) Filter +Input [2]: [customer_id#22, year_total#23] +Condition : (isnotnull(year_total#23) AND (year_total#23 > 0.000000)) + +(250) Exchange +Input [2]: [customer_id#22, year_total#23] +Arguments: hashpartitioning(customer_id#22, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(251) Sort +Input [2]: [customer_id#22, year_total#23] +Arguments: [customer_id#22 ASC NULLS FIRST], false, 0 + +(252) Scan parquet +Output [8]: [c_customer_sk#133, c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_customer_id)] +ReadSchema: struct + +(253) Filter +Input [8]: [c_customer_sk#133, c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30] +Condition : (isnotnull(c_customer_sk#133) AND isnotnull(c_customer_id#24)) + +(254) Exchange +Input [8]: [c_customer_sk#133, c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30] +Arguments: hashpartitioning(c_customer_sk#133, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(255) Sort +Input [8]: [c_customer_sk#133, c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30] +Arguments: [c_customer_sk#133 ASC NULLS FIRST], false, 0 + +(256) Scan parquet +Output [6]: [ss_sold_date_sk#31, ss_customer_sk#134, ss_ext_discount_amt#32, ss_ext_sales_price#33, ss_ext_wholesale_cost#34, ss_ext_list_price#35] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(257) Filter +Input [6]: [ss_sold_date_sk#31, ss_customer_sk#134, ss_ext_discount_amt#32, ss_ext_sales_price#33, ss_ext_wholesale_cost#34, ss_ext_list_price#35] +Condition : (isnotnull(ss_customer_sk#134) AND isnotnull(ss_sold_date_sk#31)) + +(258) Exchange +Input [6]: [ss_sold_date_sk#31, ss_customer_sk#134, ss_ext_discount_amt#32, ss_ext_sales_price#33, ss_ext_wholesale_cost#34, ss_ext_list_price#35] +Arguments: hashpartitioning(ss_customer_sk#134, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(259) Sort +Input [6]: [ss_sold_date_sk#31, ss_customer_sk#134, ss_ext_discount_amt#32, ss_ext_sales_price#33, ss_ext_wholesale_cost#34, ss_ext_list_price#35] +Arguments: [ss_customer_sk#134 ASC NULLS FIRST], false, 0 + +(260) SortMergeJoin +Left keys [1]: [c_customer_sk#133] +Right keys [1]: [ss_customer_sk#134] +Join type: Inner +Join condition: None + +(261) Project +Output [12]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, ss_sold_date_sk#31, ss_ext_discount_amt#32, ss_ext_sales_price#33, ss_ext_wholesale_cost#34, ss_ext_list_price#35] +Input [14]: [c_customer_sk#133, c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, ss_sold_date_sk#31, ss_customer_sk#134, ss_ext_discount_amt#32, ss_ext_sales_price#33, ss_ext_wholesale_cost#34, ss_ext_list_price#35] + +(262) Exchange +Input [12]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, ss_sold_date_sk#31, ss_ext_discount_amt#32, ss_ext_sales_price#33, ss_ext_wholesale_cost#34, ss_ext_list_price#35] +Arguments: hashpartitioning(ss_sold_date_sk#31, 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(263) Sort +Input [12]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, ss_sold_date_sk#31, ss_ext_discount_amt#32, ss_ext_sales_price#33, ss_ext_wholesale_cost#34, ss_ext_list_price#35] +Arguments: [ss_sold_date_sk#31 ASC NULLS FIRST], false, 0 + +(264) Scan parquet +Output [2]: [d_date_sk#36, d_year#37] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2002), IsNotNull(d_date_sk)] +ReadSchema: struct + +(265) Filter +Input [2]: [d_date_sk#36, d_year#37] +Condition : ((isnotnull(d_year#37) AND (d_year#37 = 2002)) AND isnotnull(d_date_sk#36)) + +(266) Exchange +Input [2]: [d_date_sk#36, d_year#37] +Arguments: hashpartitioning(d_date_sk#36, 100), ENSURE_REQUIREMENTS, [plan_id=31] + +(267) Sort +Input [2]: [d_date_sk#36, d_year#37] +Arguments: [d_date_sk#36 ASC NULLS FIRST], false, 0 + +(268) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#31] +Right keys [1]: [d_date_sk#36] +Join type: Inner +Join condition: None + +(269) Project +Output [12]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, ss_ext_discount_amt#32, ss_ext_sales_price#33, ss_ext_wholesale_cost#34, ss_ext_list_price#35, d_year#37] +Input [14]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, ss_sold_date_sk#31, ss_ext_discount_amt#32, ss_ext_sales_price#33, ss_ext_wholesale_cost#34, ss_ext_list_price#35, d_date_sk#36, d_year#37] + +(270) HashAggregate +Input [12]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, ss_ext_discount_amt#32, ss_ext_sales_price#33, ss_ext_wholesale_cost#34, ss_ext_list_price#35, d_year#37] +Keys [8]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, d_year#37] +Functions [1]: [partial_sum(((((ss_ext_list_price#35 - ss_ext_wholesale_cost#34) - ss_ext_discount_amt#32) + ss_ext_sales_price#33) / 2))] +Aggregate Attributes [2]: [sum#39, isEmpty#40] +Results [10]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, d_year#37, sum#135, isEmpty#136] + +(271) Exchange +Input [10]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, d_year#37, sum#135, isEmpty#136] +Arguments: hashpartitioning(c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, d_year#37, 100), ENSURE_REQUIREMENTS, [plan_id=32] + +(272) HashAggregate +Input [10]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, d_year#37, sum#135, isEmpty#136] +Keys [8]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, d_year#37] +Functions [1]: [sum(((((ss_ext_list_price#35 - ss_ext_wholesale_cost#34) - ss_ext_discount_amt#32) + ss_ext_sales_price#33) / 2))] +Aggregate Attributes [1]: [sum(((((ss_ext_list_price#35 - ss_ext_wholesale_cost#34) - ss_ext_discount_amt#32) + ss_ext_sales_price#33) / 2))#21] +Results [8]: [c_customer_id#24 AS customer_id#41, c_first_name#25 AS customer_first_name#42, c_last_name#26 AS customer_last_name#43, c_preferred_cust_flag#27 AS customer_preferred_cust_flag#44, c_birth_country#28 AS customer_birth_country#45, c_login#29 AS customer_login#46, c_email_address#30 AS customer_email_address#47, sum(((((ss_ext_list_price#35 - ss_ext_wholesale_cost#34) - ss_ext_discount_amt#32) + ss_ext_sales_price#33) / 2))#21 AS year_total#48] + +(273) Exchange +Input [8]: [customer_id#41, customer_first_name#42, customer_last_name#43, customer_preferred_cust_flag#44, customer_birth_country#45, customer_login#46, customer_email_address#47, year_total#48] +Arguments: hashpartitioning(customer_id#41, 100), ENSURE_REQUIREMENTS, [plan_id=33] + +(274) Sort +Input [8]: [customer_id#41, customer_first_name#42, customer_last_name#43, customer_preferred_cust_flag#44, customer_birth_country#45, customer_login#46, customer_email_address#47, year_total#48] +Arguments: [customer_id#41 ASC NULLS FIRST], false, 0 + +(275) SortMergeJoin +Left keys [1]: [customer_id#22] +Right keys [1]: [customer_id#41] +Join type: Inner +Join condition: None + +(276) Scan parquet +Output [8]: [c_customer_sk#49, c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_customer_id)] +ReadSchema: struct + +(277) Filter +Input [8]: [c_customer_sk#49, c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56] +Condition : (isnotnull(c_customer_sk#49) AND isnotnull(c_customer_id#50)) + +(278) Exchange +Input [8]: [c_customer_sk#49, c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56] +Arguments: hashpartitioning(c_customer_sk#49, 100), ENSURE_REQUIREMENTS, [plan_id=34] + +(279) Sort +Input [8]: [c_customer_sk#49, c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56] +Arguments: [c_customer_sk#49 ASC NULLS FIRST], false, 0 + +(280) Scan parquet +Output [6]: [cs_sold_date_sk#57, cs_bill_customer_sk#58, cs_ext_discount_amt#59, cs_ext_sales_price#60, cs_ext_wholesale_cost#61, cs_ext_list_price#62] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_bill_customer_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(281) Filter +Input [6]: [cs_sold_date_sk#57, cs_bill_customer_sk#58, cs_ext_discount_amt#59, cs_ext_sales_price#60, cs_ext_wholesale_cost#61, cs_ext_list_price#62] +Condition : (isnotnull(cs_bill_customer_sk#58) AND isnotnull(cs_sold_date_sk#57)) + +(282) Exchange +Input [6]: [cs_sold_date_sk#57, cs_bill_customer_sk#58, cs_ext_discount_amt#59, cs_ext_sales_price#60, cs_ext_wholesale_cost#61, cs_ext_list_price#62] +Arguments: hashpartitioning(cs_bill_customer_sk#58, 100), ENSURE_REQUIREMENTS, [plan_id=35] + +(283) Sort +Input [6]: [cs_sold_date_sk#57, cs_bill_customer_sk#58, cs_ext_discount_amt#59, cs_ext_sales_price#60, cs_ext_wholesale_cost#61, cs_ext_list_price#62] +Arguments: [cs_bill_customer_sk#58 ASC NULLS FIRST], false, 0 + +(284) SortMergeJoin +Left keys [1]: [c_customer_sk#49] +Right keys [1]: [cs_bill_customer_sk#58] +Join type: Inner +Join condition: None + +(285) Project +Output [12]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, cs_sold_date_sk#57, cs_ext_discount_amt#59, cs_ext_sales_price#60, cs_ext_wholesale_cost#61, cs_ext_list_price#62] +Input [14]: [c_customer_sk#49, c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, cs_sold_date_sk#57, cs_bill_customer_sk#58, cs_ext_discount_amt#59, cs_ext_sales_price#60, cs_ext_wholesale_cost#61, cs_ext_list_price#62] + +(286) Exchange +Input [12]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, cs_sold_date_sk#57, cs_ext_discount_amt#59, cs_ext_sales_price#60, cs_ext_wholesale_cost#61, cs_ext_list_price#62] +Arguments: hashpartitioning(cs_sold_date_sk#57, 100), ENSURE_REQUIREMENTS, [plan_id=36] + +(287) Sort +Input [12]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, cs_sold_date_sk#57, cs_ext_discount_amt#59, cs_ext_sales_price#60, cs_ext_wholesale_cost#61, cs_ext_list_price#62] +Arguments: [cs_sold_date_sk#57 ASC NULLS FIRST], false, 0 + +(288) Scan parquet +Output [2]: [d_date_sk#63, d_year#64] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(289) Filter +Input [2]: [d_date_sk#63, d_year#64] +Condition : ((isnotnull(d_year#64) AND (d_year#64 = 2001)) AND isnotnull(d_date_sk#63)) + +(290) Exchange +Input [2]: [d_date_sk#63, d_year#64] +Arguments: hashpartitioning(d_date_sk#63, 100), ENSURE_REQUIREMENTS, [plan_id=37] + +(291) Sort +Input [2]: [d_date_sk#63, d_year#64] +Arguments: [d_date_sk#63 ASC NULLS FIRST], false, 0 + +(292) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#57] +Right keys [1]: [d_date_sk#63] +Join type: Inner +Join condition: None + +(293) Project +Output [12]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, cs_ext_discount_amt#59, cs_ext_sales_price#60, cs_ext_wholesale_cost#61, cs_ext_list_price#62, d_year#64] +Input [14]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, cs_sold_date_sk#57, cs_ext_discount_amt#59, cs_ext_sales_price#60, cs_ext_wholesale_cost#61, cs_ext_list_price#62, d_date_sk#63, d_year#64] + +(294) HashAggregate +Input [12]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, cs_ext_discount_amt#59, cs_ext_sales_price#60, cs_ext_wholesale_cost#61, cs_ext_list_price#62, d_year#64] +Keys [8]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, d_year#64] +Functions [1]: [partial_sum(((((cs_ext_list_price#62 - cs_ext_wholesale_cost#61) - cs_ext_discount_amt#59) + cs_ext_sales_price#60) / 2))] +Aggregate Attributes [2]: [sum#66, isEmpty#67] +Results [10]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, d_year#64, sum#137, isEmpty#138] + +(295) Exchange +Input [10]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, d_year#64, sum#137, isEmpty#138] +Arguments: hashpartitioning(c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, d_year#64, 100), ENSURE_REQUIREMENTS, [plan_id=38] + +(296) HashAggregate +Input [10]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, d_year#64, sum#137, isEmpty#138] +Keys [8]: [c_customer_id#50, c_first_name#51, c_last_name#52, c_preferred_cust_flag#53, c_birth_country#54, c_login#55, c_email_address#56, d_year#64] +Functions [1]: [sum(((((cs_ext_list_price#62 - cs_ext_wholesale_cost#61) - cs_ext_discount_amt#59) + cs_ext_sales_price#60) / 2))] +Aggregate Attributes [1]: [sum(((((cs_ext_list_price#62 - cs_ext_wholesale_cost#61) - cs_ext_discount_amt#59) + cs_ext_sales_price#60) / 2))#68] +Results [2]: [c_customer_id#50 AS customer_id#69, sum(((((cs_ext_list_price#62 - cs_ext_wholesale_cost#61) - cs_ext_discount_amt#59) + cs_ext_sales_price#60) / 2))#68 AS year_total#70] + +(297) Filter +Input [2]: [customer_id#69, year_total#70] +Condition : (isnotnull(year_total#70) AND (year_total#70 > 0.000000)) + +(298) Exchange +Input [2]: [customer_id#69, year_total#70] +Arguments: hashpartitioning(customer_id#69, 100), ENSURE_REQUIREMENTS, [plan_id=39] + +(299) Sort +Input [2]: [customer_id#69, year_total#70] +Arguments: [customer_id#69 ASC NULLS FIRST], false, 0 + +(300) SortMergeJoin +Left keys [1]: [customer_id#22] +Right keys [1]: [customer_id#69] +Join type: Inner +Join condition: None + +(301) Project +Output [11]: [customer_id#22, year_total#23, customer_id#41, customer_first_name#42, customer_last_name#43, customer_preferred_cust_flag#44, customer_birth_country#45, customer_login#46, customer_email_address#47, year_total#48, year_total#70] +Input [12]: [customer_id#22, year_total#23, customer_id#41, customer_first_name#42, customer_last_name#43, customer_preferred_cust_flag#44, customer_birth_country#45, customer_login#46, customer_email_address#47, year_total#48, customer_id#69, year_total#70] + +(302) Scan parquet +Output [8]: [c_customer_sk#139, c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_customer_id)] +ReadSchema: struct + +(303) Filter +Input [8]: [c_customer_sk#139, c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77] +Condition : (isnotnull(c_customer_sk#139) AND isnotnull(c_customer_id#71)) + +(304) Exchange +Input [8]: [c_customer_sk#139, c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77] +Arguments: hashpartitioning(c_customer_sk#139, 100), ENSURE_REQUIREMENTS, [plan_id=40] + +(305) Sort +Input [8]: [c_customer_sk#139, c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77] +Arguments: [c_customer_sk#139 ASC NULLS FIRST], false, 0 + +(306) Scan parquet +Output [6]: [cs_sold_date_sk#78, cs_bill_customer_sk#140, cs_ext_discount_amt#79, cs_ext_sales_price#80, cs_ext_wholesale_cost#81, cs_ext_list_price#82] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_bill_customer_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(307) Filter +Input [6]: [cs_sold_date_sk#78, cs_bill_customer_sk#140, cs_ext_discount_amt#79, cs_ext_sales_price#80, cs_ext_wholesale_cost#81, cs_ext_list_price#82] +Condition : (isnotnull(cs_bill_customer_sk#140) AND isnotnull(cs_sold_date_sk#78)) + +(308) Exchange +Input [6]: [cs_sold_date_sk#78, cs_bill_customer_sk#140, cs_ext_discount_amt#79, cs_ext_sales_price#80, cs_ext_wholesale_cost#81, cs_ext_list_price#82] +Arguments: hashpartitioning(cs_bill_customer_sk#140, 100), ENSURE_REQUIREMENTS, [plan_id=41] + +(309) Sort +Input [6]: [cs_sold_date_sk#78, cs_bill_customer_sk#140, cs_ext_discount_amt#79, cs_ext_sales_price#80, cs_ext_wholesale_cost#81, cs_ext_list_price#82] +Arguments: [cs_bill_customer_sk#140 ASC NULLS FIRST], false, 0 + +(310) SortMergeJoin +Left keys [1]: [c_customer_sk#139] +Right keys [1]: [cs_bill_customer_sk#140] +Join type: Inner +Join condition: None + +(311) Project +Output [12]: [c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, cs_sold_date_sk#78, cs_ext_discount_amt#79, cs_ext_sales_price#80, cs_ext_wholesale_cost#81, cs_ext_list_price#82] +Input [14]: [c_customer_sk#139, c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, cs_sold_date_sk#78, cs_bill_customer_sk#140, cs_ext_discount_amt#79, cs_ext_sales_price#80, cs_ext_wholesale_cost#81, cs_ext_list_price#82] + +(312) Exchange +Input [12]: [c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, cs_sold_date_sk#78, cs_ext_discount_amt#79, cs_ext_sales_price#80, cs_ext_wholesale_cost#81, cs_ext_list_price#82] +Arguments: hashpartitioning(cs_sold_date_sk#78, 100), ENSURE_REQUIREMENTS, [plan_id=42] + +(313) Sort +Input [12]: [c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, cs_sold_date_sk#78, cs_ext_discount_amt#79, cs_ext_sales_price#80, cs_ext_wholesale_cost#81, cs_ext_list_price#82] +Arguments: [cs_sold_date_sk#78 ASC NULLS FIRST], false, 0 + +(314) Scan parquet +Output [2]: [d_date_sk#83, d_year#84] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2002), IsNotNull(d_date_sk)] +ReadSchema: struct + +(315) Filter +Input [2]: [d_date_sk#83, d_year#84] +Condition : ((isnotnull(d_year#84) AND (d_year#84 = 2002)) AND isnotnull(d_date_sk#83)) + +(316) Exchange +Input [2]: [d_date_sk#83, d_year#84] +Arguments: hashpartitioning(d_date_sk#83, 100), ENSURE_REQUIREMENTS, [plan_id=43] + +(317) Sort +Input [2]: [d_date_sk#83, d_year#84] +Arguments: [d_date_sk#83 ASC NULLS FIRST], false, 0 + +(318) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#78] +Right keys [1]: [d_date_sk#83] +Join type: Inner +Join condition: None + +(319) Project +Output [12]: [c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, cs_ext_discount_amt#79, cs_ext_sales_price#80, cs_ext_wholesale_cost#81, cs_ext_list_price#82, d_year#84] +Input [14]: [c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, cs_sold_date_sk#78, cs_ext_discount_amt#79, cs_ext_sales_price#80, cs_ext_wholesale_cost#81, cs_ext_list_price#82, d_date_sk#83, d_year#84] + +(320) HashAggregate +Input [12]: [c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, cs_ext_discount_amt#79, cs_ext_sales_price#80, cs_ext_wholesale_cost#81, cs_ext_list_price#82, d_year#84] +Keys [8]: [c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, d_year#84] +Functions [1]: [partial_sum(((((cs_ext_list_price#82 - cs_ext_wholesale_cost#81) - cs_ext_discount_amt#79) + cs_ext_sales_price#80) / 2))] +Aggregate Attributes [2]: [sum#86, isEmpty#87] +Results [10]: [c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, d_year#84, sum#141, isEmpty#142] + +(321) Exchange +Input [10]: [c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, d_year#84, sum#141, isEmpty#142] +Arguments: hashpartitioning(c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, d_year#84, 100), ENSURE_REQUIREMENTS, [plan_id=44] + +(322) HashAggregate +Input [10]: [c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, d_year#84, sum#141, isEmpty#142] +Keys [8]: [c_customer_id#71, c_first_name#72, c_last_name#73, c_preferred_cust_flag#74, c_birth_country#75, c_login#76, c_email_address#77, d_year#84] +Functions [1]: [sum(((((cs_ext_list_price#82 - cs_ext_wholesale_cost#81) - cs_ext_discount_amt#79) + cs_ext_sales_price#80) / 2))] +Aggregate Attributes [1]: [sum(((((cs_ext_list_price#82 - cs_ext_wholesale_cost#81) - cs_ext_discount_amt#79) + cs_ext_sales_price#80) / 2))#68] +Results [2]: [c_customer_id#71 AS customer_id#88, sum(((((cs_ext_list_price#82 - cs_ext_wholesale_cost#81) - cs_ext_discount_amt#79) + cs_ext_sales_price#80) / 2))#68 AS year_total#89] + +(323) Exchange +Input [2]: [customer_id#88, year_total#89] +Arguments: hashpartitioning(customer_id#88, 100), ENSURE_REQUIREMENTS, [plan_id=45] + +(324) Sort +Input [2]: [customer_id#88, year_total#89] +Arguments: [customer_id#88 ASC NULLS FIRST], false, 0 + +(325) SortMergeJoin +Left keys [1]: [customer_id#22] +Right keys [1]: [customer_id#88] +Join type: Inner +Join condition: (CASE WHEN (year_total#70 > 0.000000) THEN (year_total#89 / year_total#70) END > CASE WHEN (year_total#23 > 0.000000) THEN (year_total#48 / year_total#23) END) + +(326) Project +Output [10]: [customer_id#22, customer_id#41, customer_first_name#42, customer_last_name#43, customer_preferred_cust_flag#44, customer_birth_country#45, customer_login#46, customer_email_address#47, year_total#70, year_total#89] +Input [13]: [customer_id#22, year_total#23, customer_id#41, customer_first_name#42, customer_last_name#43, customer_preferred_cust_flag#44, customer_birth_country#45, customer_login#46, customer_email_address#47, year_total#48, year_total#70, customer_id#88, year_total#89] + +(327) Scan parquet +Output [8]: [c_customer_sk#90, c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_customer_id)] +ReadSchema: struct + +(328) Filter +Input [8]: [c_customer_sk#90, c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97] +Condition : (isnotnull(c_customer_sk#90) AND isnotnull(c_customer_id#91)) + +(329) Exchange +Input [8]: [c_customer_sk#90, c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97] +Arguments: hashpartitioning(c_customer_sk#90, 100), ENSURE_REQUIREMENTS, [plan_id=46] + +(330) Sort +Input [8]: [c_customer_sk#90, c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97] +Arguments: [c_customer_sk#90 ASC NULLS FIRST], false, 0 + +(331) Scan parquet +Output [6]: [ws_sold_date_sk#98, ws_bill_customer_sk#99, ws_ext_discount_amt#100, ws_ext_sales_price#101, ws_ext_wholesale_cost#102, ws_ext_list_price#103] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_bill_customer_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(332) Filter +Input [6]: [ws_sold_date_sk#98, ws_bill_customer_sk#99, ws_ext_discount_amt#100, ws_ext_sales_price#101, ws_ext_wholesale_cost#102, ws_ext_list_price#103] +Condition : (isnotnull(ws_bill_customer_sk#99) AND isnotnull(ws_sold_date_sk#98)) + +(333) Exchange +Input [6]: [ws_sold_date_sk#98, ws_bill_customer_sk#99, ws_ext_discount_amt#100, ws_ext_sales_price#101, ws_ext_wholesale_cost#102, ws_ext_list_price#103] +Arguments: hashpartitioning(ws_bill_customer_sk#99, 100), ENSURE_REQUIREMENTS, [plan_id=47] + +(334) Sort +Input [6]: [ws_sold_date_sk#98, ws_bill_customer_sk#99, ws_ext_discount_amt#100, ws_ext_sales_price#101, ws_ext_wholesale_cost#102, ws_ext_list_price#103] +Arguments: [ws_bill_customer_sk#99 ASC NULLS FIRST], false, 0 + +(335) SortMergeJoin +Left keys [1]: [c_customer_sk#90] +Right keys [1]: [ws_bill_customer_sk#99] +Join type: Inner +Join condition: None + +(336) Project +Output [12]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, ws_sold_date_sk#98, ws_ext_discount_amt#100, ws_ext_sales_price#101, ws_ext_wholesale_cost#102, ws_ext_list_price#103] +Input [14]: [c_customer_sk#90, c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, ws_sold_date_sk#98, ws_bill_customer_sk#99, ws_ext_discount_amt#100, ws_ext_sales_price#101, ws_ext_wholesale_cost#102, ws_ext_list_price#103] + +(337) Exchange +Input [12]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, ws_sold_date_sk#98, ws_ext_discount_amt#100, ws_ext_sales_price#101, ws_ext_wholesale_cost#102, ws_ext_list_price#103] +Arguments: hashpartitioning(ws_sold_date_sk#98, 100), ENSURE_REQUIREMENTS, [plan_id=48] + +(338) Sort +Input [12]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, ws_sold_date_sk#98, ws_ext_discount_amt#100, ws_ext_sales_price#101, ws_ext_wholesale_cost#102, ws_ext_list_price#103] +Arguments: [ws_sold_date_sk#98 ASC NULLS FIRST], false, 0 + +(339) Scan parquet +Output [2]: [d_date_sk#104, d_year#105] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(340) Filter +Input [2]: [d_date_sk#104, d_year#105] +Condition : ((isnotnull(d_year#105) AND (d_year#105 = 2001)) AND isnotnull(d_date_sk#104)) + +(341) Exchange +Input [2]: [d_date_sk#104, d_year#105] +Arguments: hashpartitioning(d_date_sk#104, 100), ENSURE_REQUIREMENTS, [plan_id=49] + +(342) Sort +Input [2]: [d_date_sk#104, d_year#105] +Arguments: [d_date_sk#104 ASC NULLS FIRST], false, 0 + +(343) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#98] +Right keys [1]: [d_date_sk#104] +Join type: Inner +Join condition: None + +(344) Project +Output [12]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, ws_ext_discount_amt#100, ws_ext_sales_price#101, ws_ext_wholesale_cost#102, ws_ext_list_price#103, d_year#105] +Input [14]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, ws_sold_date_sk#98, ws_ext_discount_amt#100, ws_ext_sales_price#101, ws_ext_wholesale_cost#102, ws_ext_list_price#103, d_date_sk#104, d_year#105] + +(345) HashAggregate +Input [12]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, ws_ext_discount_amt#100, ws_ext_sales_price#101, ws_ext_wholesale_cost#102, ws_ext_list_price#103, d_year#105] +Keys [8]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, d_year#105] +Functions [1]: [partial_sum(((((ws_ext_list_price#103 - ws_ext_wholesale_cost#102) - ws_ext_discount_amt#100) + ws_ext_sales_price#101) / 2))] +Aggregate Attributes [2]: [sum#107, isEmpty#108] +Results [10]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, d_year#105, sum#143, isEmpty#144] + +(346) Exchange +Input [10]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, d_year#105, sum#143, isEmpty#144] +Arguments: hashpartitioning(c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, d_year#105, 100), ENSURE_REQUIREMENTS, [plan_id=50] + +(347) HashAggregate +Input [10]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, d_year#105, sum#143, isEmpty#144] +Keys [8]: [c_customer_id#91, c_first_name#92, c_last_name#93, c_preferred_cust_flag#94, c_birth_country#95, c_login#96, c_email_address#97, d_year#105] +Functions [1]: [sum(((((ws_ext_list_price#103 - ws_ext_wholesale_cost#102) - ws_ext_discount_amt#100) + ws_ext_sales_price#101) / 2))] +Aggregate Attributes [1]: [sum(((((ws_ext_list_price#103 - ws_ext_wholesale_cost#102) - ws_ext_discount_amt#100) + ws_ext_sales_price#101) / 2))#109] +Results [2]: [c_customer_id#91 AS customer_id#110, sum(((((ws_ext_list_price#103 - ws_ext_wholesale_cost#102) - ws_ext_discount_amt#100) + ws_ext_sales_price#101) / 2))#109 AS year_total#111] + +(348) Filter +Input [2]: [customer_id#110, year_total#111] +Condition : (isnotnull(year_total#111) AND (year_total#111 > 0.000000)) + +(349) Exchange +Input [2]: [customer_id#110, year_total#111] +Arguments: hashpartitioning(customer_id#110, 100), ENSURE_REQUIREMENTS, [plan_id=51] + +(350) Sort +Input [2]: [customer_id#110, year_total#111] +Arguments: [customer_id#110 ASC NULLS FIRST], false, 0 + +(351) SortMergeJoin +Left keys [1]: [customer_id#22] +Right keys [1]: [customer_id#110] +Join type: Inner +Join condition: None + +(352) Project +Output [11]: [customer_id#22, customer_id#41, customer_first_name#42, customer_last_name#43, customer_preferred_cust_flag#44, customer_birth_country#45, customer_login#46, customer_email_address#47, year_total#70, year_total#89, year_total#111] +Input [12]: [customer_id#22, customer_id#41, customer_first_name#42, customer_last_name#43, customer_preferred_cust_flag#44, customer_birth_country#45, customer_login#46, customer_email_address#47, year_total#70, year_total#89, customer_id#110, year_total#111] + +(353) Scan parquet +Output [8]: [c_customer_sk#145, c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_customer_id)] +ReadSchema: struct + +(354) Filter +Input [8]: [c_customer_sk#145, c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118] +Condition : (isnotnull(c_customer_sk#145) AND isnotnull(c_customer_id#112)) + +(355) Exchange +Input [8]: [c_customer_sk#145, c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118] +Arguments: hashpartitioning(c_customer_sk#145, 100), ENSURE_REQUIREMENTS, [plan_id=52] + +(356) Sort +Input [8]: [c_customer_sk#145, c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118] +Arguments: [c_customer_sk#145 ASC NULLS FIRST], false, 0 + +(357) Scan parquet +Output [6]: [ws_sold_date_sk#119, ws_bill_customer_sk#146, ws_ext_discount_amt#120, ws_ext_sales_price#121, ws_ext_wholesale_cost#122, ws_ext_list_price#123] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_bill_customer_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(358) Filter +Input [6]: [ws_sold_date_sk#119, ws_bill_customer_sk#146, ws_ext_discount_amt#120, ws_ext_sales_price#121, ws_ext_wholesale_cost#122, ws_ext_list_price#123] +Condition : (isnotnull(ws_bill_customer_sk#146) AND isnotnull(ws_sold_date_sk#119)) + +(359) Exchange +Input [6]: [ws_sold_date_sk#119, ws_bill_customer_sk#146, ws_ext_discount_amt#120, ws_ext_sales_price#121, ws_ext_wholesale_cost#122, ws_ext_list_price#123] +Arguments: hashpartitioning(ws_bill_customer_sk#146, 100), ENSURE_REQUIREMENTS, [plan_id=53] + +(360) Sort +Input [6]: [ws_sold_date_sk#119, ws_bill_customer_sk#146, ws_ext_discount_amt#120, ws_ext_sales_price#121, ws_ext_wholesale_cost#122, ws_ext_list_price#123] +Arguments: [ws_bill_customer_sk#146 ASC NULLS FIRST], false, 0 + +(361) SortMergeJoin +Left keys [1]: [c_customer_sk#145] +Right keys [1]: [ws_bill_customer_sk#146] +Join type: Inner +Join condition: None + +(362) Project +Output [12]: [c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, ws_sold_date_sk#119, ws_ext_discount_amt#120, ws_ext_sales_price#121, ws_ext_wholesale_cost#122, ws_ext_list_price#123] +Input [14]: [c_customer_sk#145, c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, ws_sold_date_sk#119, ws_bill_customer_sk#146, ws_ext_discount_amt#120, ws_ext_sales_price#121, ws_ext_wholesale_cost#122, ws_ext_list_price#123] + +(363) Exchange +Input [12]: [c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, ws_sold_date_sk#119, ws_ext_discount_amt#120, ws_ext_sales_price#121, ws_ext_wholesale_cost#122, ws_ext_list_price#123] +Arguments: hashpartitioning(ws_sold_date_sk#119, 100), ENSURE_REQUIREMENTS, [plan_id=54] + +(364) Sort +Input [12]: [c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, ws_sold_date_sk#119, ws_ext_discount_amt#120, ws_ext_sales_price#121, ws_ext_wholesale_cost#122, ws_ext_list_price#123] +Arguments: [ws_sold_date_sk#119 ASC NULLS FIRST], false, 0 + +(365) Scan parquet +Output [2]: [d_date_sk#124, d_year#125] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2002), IsNotNull(d_date_sk)] +ReadSchema: struct + +(366) Filter +Input [2]: [d_date_sk#124, d_year#125] +Condition : ((isnotnull(d_year#125) AND (d_year#125 = 2002)) AND isnotnull(d_date_sk#124)) + +(367) Exchange +Input [2]: [d_date_sk#124, d_year#125] +Arguments: hashpartitioning(d_date_sk#124, 100), ENSURE_REQUIREMENTS, [plan_id=55] + +(368) Sort +Input [2]: [d_date_sk#124, d_year#125] +Arguments: [d_date_sk#124 ASC NULLS FIRST], false, 0 + +(369) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#119] +Right keys [1]: [d_date_sk#124] +Join type: Inner +Join condition: None + +(370) Project +Output [12]: [c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, ws_ext_discount_amt#120, ws_ext_sales_price#121, ws_ext_wholesale_cost#122, ws_ext_list_price#123, d_year#125] +Input [14]: [c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, ws_sold_date_sk#119, ws_ext_discount_amt#120, ws_ext_sales_price#121, ws_ext_wholesale_cost#122, ws_ext_list_price#123, d_date_sk#124, d_year#125] + +(371) HashAggregate +Input [12]: [c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, ws_ext_discount_amt#120, ws_ext_sales_price#121, ws_ext_wholesale_cost#122, ws_ext_list_price#123, d_year#125] +Keys [8]: [c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, d_year#125] +Functions [1]: [partial_sum(((((ws_ext_list_price#123 - ws_ext_wholesale_cost#122) - ws_ext_discount_amt#120) + ws_ext_sales_price#121) / 2))] +Aggregate Attributes [2]: [sum#127, isEmpty#128] +Results [10]: [c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, d_year#125, sum#147, isEmpty#148] + +(372) Exchange +Input [10]: [c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, d_year#125, sum#147, isEmpty#148] +Arguments: hashpartitioning(c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, d_year#125, 100), ENSURE_REQUIREMENTS, [plan_id=56] + +(373) HashAggregate +Input [10]: [c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, d_year#125, sum#147, isEmpty#148] +Keys [8]: [c_customer_id#112, c_first_name#113, c_last_name#114, c_preferred_cust_flag#115, c_birth_country#116, c_login#117, c_email_address#118, d_year#125] +Functions [1]: [sum(((((ws_ext_list_price#123 - ws_ext_wholesale_cost#122) - ws_ext_discount_amt#120) + ws_ext_sales_price#121) / 2))] +Aggregate Attributes [1]: [sum(((((ws_ext_list_price#123 - ws_ext_wholesale_cost#122) - ws_ext_discount_amt#120) + ws_ext_sales_price#121) / 2))#109] +Results [2]: [c_customer_id#112 AS customer_id#129, sum(((((ws_ext_list_price#123 - ws_ext_wholesale_cost#122) - ws_ext_discount_amt#120) + ws_ext_sales_price#121) / 2))#109 AS year_total#130] + +(374) Exchange +Input [2]: [customer_id#129, year_total#130] +Arguments: hashpartitioning(customer_id#129, 100), ENSURE_REQUIREMENTS, [plan_id=57] + +(375) Sort +Input [2]: [customer_id#129, year_total#130] +Arguments: [customer_id#129 ASC NULLS FIRST], false, 0 + +(376) SortMergeJoin +Left keys [1]: [customer_id#22] +Right keys [1]: [customer_id#129] +Join type: Inner +Join condition: (CASE WHEN (year_total#70 > 0.000000) THEN (year_total#89 / year_total#70) END > CASE WHEN (year_total#111 > 0.000000) THEN (year_total#130 / year_total#111) END) + +(377) Project +Output [7]: [customer_id#41, customer_first_name#42, customer_last_name#43, customer_preferred_cust_flag#44, customer_birth_country#45, customer_login#46, customer_email_address#47] +Input [13]: [customer_id#22, customer_id#41, customer_first_name#42, customer_last_name#43, customer_preferred_cust_flag#44, customer_birth_country#45, customer_login#46, customer_email_address#47, year_total#70, year_total#89, year_total#111, customer_id#129, year_total#130] + +(378) TakeOrderedAndProject +Input [7]: [customer_id#41, customer_first_name#42, customer_last_name#43, customer_preferred_cust_flag#44, customer_birth_country#45, customer_login#46, customer_email_address#47] +Arguments: X, [customer_id#41 ASC NULLS FIRST, customer_first_name#42 ASC NULLS FIRST, customer_last_name#43 ASC NULLS FIRST, customer_preferred_cust_flag#44 ASC NULLS FIRST, customer_birth_country#45 ASC NULLS FIRST, customer_login#46 ASC NULLS FIRST, customer_email_address#47 ASC NULLS FIRST], [customer_id#41, customer_first_name#42, customer_last_name#43, customer_preferred_cust_flag#44, customer_birth_country#45, customer_login#46, customer_email_address#47] + +(379) AdaptiveSparkPlan +Output [7]: [customer_id#41, customer_first_name#42, customer_last_name#43, customer_preferred_cust_flag#44, customer_birth_country#45, customer_login#46, customer_email_address#47] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q40.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q40.txt new file mode 100644 index 000000000..6341ff7a5 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q40.txt @@ -0,0 +1,619 @@ +== Physical Plan == +AdaptiveSparkPlan (113) ++- == Final Plan == + NativeTakeOrdered (73) + +- NativeProject (72) + +- NativeHashAggregate (71) + +- InputAdapter (70) + +- AQEShuffleRead (69) + +- ShuffleQueryStage (68), Statistics(X) + +- NativeShuffleExchange (67) + +- NativeHashAggregate (66) + +- NativeProject (65) + +- NativeProject (64) + +- NativeSortMergeJoin Inner (63) + :- NativeSort (54) + : +- InputAdapter (53) + : +- AQEShuffleRead (52) + : +- ShuffleQueryStage (51), Statistics(X) + : +- NativeShuffleExchange (50) + : +- NativeProject (49) + : +- NativeSortMergeJoin Inner (48) + : :- NativeSort (38) + : : +- InputAdapter (37) + : : +- AQEShuffleRead (36) + : : +- ShuffleQueryStage (35), Statistics(X) + : : +- NativeShuffleExchange (34) + : : +- NativeProject (33) + : : +- NativeSortMergeJoin Inner (32) + : : :- NativeSort (23) + : : : +- InputAdapter (22) + : : : +- AQEShuffleRead (21) + : : : +- ShuffleQueryStage (20), Statistics(X) + : : : +- NativeShuffleExchange (19) + : : : +- NativeProject (18) + : : : +- NativeSortMergeJoin LeftOuter (17) + : : : :- NativeSort (8) + : : : : +- InputAdapter (7) + : : : : +- AQEShuffleRead (6) + : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : +- NativeShuffleExchange (4) + : : : : +- NativeFilter (3) + : : : : +- InputAdapter (2) + : : : : +- NativeParquetScan (1) + : : : +- NativeSort (16) + : : : +- InputAdapter (15) + : : : +- AQEShuffleRead (14) + : : : +- ShuffleQueryStage (13), Statistics(X) + : : : +- NativeShuffleExchange (12) + : : : +- NativeFilter (11) + : : : +- InputAdapter (10) + : : : +- NativeParquetScan (9) + : : +- NativeSort (31) + : : +- InputAdapter (30) + : : +- AQEShuffleRead (29) + : : +- ShuffleQueryStage (28), Statistics(X) + : : +- NativeShuffleExchange (27) + : : +- NativeFilter (26) + : : +- InputAdapter (25) + : : +- NativeParquetScan (24) + : +- NativeSort (47) + : +- InputAdapter (46) + : +- AQEShuffleRead (45) + : +- ShuffleQueryStage (44), Statistics(X) + : +- NativeShuffleExchange (43) + : +- NativeProject (42) + : +- NativeFilter (41) + : +- InputAdapter (40) + : +- NativeParquetScan (39) + +- NativeSort (62) + +- InputAdapter (61) + +- AQEShuffleRead (60) + +- ShuffleQueryStage (59), Statistics(X) + +- NativeShuffleExchange (58) + +- NativeFilter (57) + +- InputAdapter (56) + +- NativeParquetScan (55) ++- == Initial Plan == + TakeOrderedAndProject (112) + +- HashAggregate (111) + +- Exchange (110) + +- HashAggregate (109) + +- Project (108) + +- SortMergeJoin Inner (107) + :- Sort (102) + : +- Exchange (101) + : +- Project (100) + : +- SortMergeJoin Inner (99) + : :- Sort (93) + : : +- Exchange (92) + : : +- Project (91) + : : +- SortMergeJoin Inner (90) + : : :- Sort (85) + : : : +- Exchange (84) + : : : +- Project (83) + : : : +- SortMergeJoin LeftOuter (82) + : : : :- Sort (77) + : : : : +- Exchange (76) + : : : : +- Filter (75) + : : : : +- Scan parquet (74) + : : : +- Sort (81) + : : : +- Exchange (80) + : : : +- Filter (79) + : : : +- Scan parquet (78) + : : +- Sort (89) + : : +- Exchange (88) + : : +- Filter (87) + : : +- Scan parquet (86) + : +- Sort (98) + : +- Exchange (97) + : +- Project (96) + : +- Filter (95) + : +- Scan parquet (94) + +- Sort (106) + +- Exchange (105) + +- Filter (104) + +- Scan parquet (103) + + +(74) Scan parquet +Output [5]: [cs_sold_date_sk#1, cs_warehouse_sk#2, cs_item_sk#3, cs_order_number#4, cs_sales_price#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_warehouse_sk), IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [5]: [cs_sold_date_sk#1, cs_warehouse_sk#2, cs_item_sk#3, cs_order_number#4, cs_sales_price#5] +Arguments: [#1, #2, #3, #4, #5] + +(3) NativeFilter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Condition : ((isnotnull(cs_warehouse_sk#2) AND isnotnull(cs_item_sk#3)) AND isnotnull(cs_sold_date_sk#1)) + +(4) NativeShuffleExchange +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: hashpartitioning(cs_order_number#4, cs_item_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: X + +(6) AQEShuffleRead +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: coalesced + +(7) InputAdapter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] + +(8) NativeSort +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: [cs_order_number#4 ASC NULLS FIRST, cs_item_sk#3 ASC NULLS FIRST], false + +(78) Scan parquet +Output [3]: [cr_item_sk#6, cr_order_number#7, cr_refunded_cash#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cr_order_number), IsNotNull(cr_item_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [3]: [cr_item_sk#6, cr_order_number#7, cr_refunded_cash#8] +Arguments: [#6, #7, #8] + +(11) NativeFilter +Input [3]: [#6#6, #7#7, #8#8] +Condition : (isnotnull(cr_order_number#7) AND isnotnull(cr_item_sk#6)) + +(12) NativeShuffleExchange +Input [3]: [#6#6, #7#7, #8#8] +Arguments: hashpartitioning(cr_order_number#7, cr_item_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [3]: [#6#6, #7#7, #8#8] +Arguments: X + +(14) AQEShuffleRead +Input [3]: [#6#6, #7#7, #8#8] +Arguments: coalesced + +(15) InputAdapter +Input [3]: [#6#6, #7#7, #8#8] + +(16) NativeSort +Input [3]: [#6#6, #7#7, #8#8] +Arguments: [cr_order_number#7 ASC NULLS FIRST, cr_item_sk#6 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [2]: [cs_order_number#4, cs_item_sk#3] +Right keys [2]: [cr_order_number#7, cr_item_sk#6] +Join type: LeftOuter +Join condition: None + +(18) NativeProject +Output [5]: [cs_sold_date_sk#1, cs_warehouse_sk#2, cs_item_sk#3, cs_sales_price#5, cr_refunded_cash#8] +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] + +(19) NativeShuffleExchange +Input [5]: [cs_sold_date_sk#1, cs_warehouse_sk#2, cs_item_sk#3, cs_sales_price#5, cr_refunded_cash#8] +Arguments: hashpartitioning(cs_warehouse_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [5]: [cs_sold_date_sk#1, cs_warehouse_sk#2, cs_item_sk#3, cs_sales_price#5, cr_refunded_cash#8] +Arguments: X + +(21) AQEShuffleRead +Input [5]: [cs_sold_date_sk#1, cs_warehouse_sk#2, cs_item_sk#3, cs_sales_price#5, cr_refunded_cash#8] +Arguments: coalesced + +(22) InputAdapter +Input [5]: [cs_sold_date_sk#1, cs_warehouse_sk#2, cs_item_sk#3, cs_sales_price#5, cr_refunded_cash#8] + +(23) NativeSort +Input [5]: [cs_sold_date_sk#1, cs_warehouse_sk#2, cs_item_sk#3, cs_sales_price#5, cr_refunded_cash#8] +Arguments: [cs_warehouse_sk#2 ASC NULLS FIRST], false + +(86) Scan parquet +Output [2]: [w_warehouse_sk#9, w_state#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(w_warehouse_sk)] +ReadSchema: struct + +(25) InputAdapter +Input [2]: [w_warehouse_sk#9, w_state#10] +Arguments: [#9, #10] + +(26) NativeFilter +Input [2]: [#9#9, #10#10] +Condition : isnotnull(w_warehouse_sk#9) + +(27) NativeShuffleExchange +Input [2]: [#9#9, #10#10] +Arguments: hashpartitioning(w_warehouse_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(28) ShuffleQueryStage +Output [2]: [#9#9, #10#10] +Arguments: X + +(29) AQEShuffleRead +Input [2]: [#9#9, #10#10] +Arguments: coalesced + +(30) InputAdapter +Input [2]: [#9#9, #10#10] + +(31) NativeSort +Input [2]: [#9#9, #10#10] +Arguments: [w_warehouse_sk#9 ASC NULLS FIRST], false + +(32) NativeSortMergeJoin +Left keys [1]: [cs_warehouse_sk#2] +Right keys [1]: [w_warehouse_sk#9] +Join type: Inner +Join condition: None + +(33) NativeProject +Output [5]: [cs_sold_date_sk#1, cs_item_sk#3, cs_sales_price#5, cr_refunded_cash#8, w_state#10] +Input [7]: [cs_sold_date_sk#1, cs_warehouse_sk#2, cs_item_sk#3, cs_sales_price#5, cr_refunded_cash#8, #9#9, #10#10] + +(34) NativeShuffleExchange +Input [5]: [cs_sold_date_sk#1, cs_item_sk#3, cs_sales_price#5, cr_refunded_cash#8, w_state#10] +Arguments: hashpartitioning(cs_item_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(35) ShuffleQueryStage +Output [5]: [cs_sold_date_sk#1, cs_item_sk#3, cs_sales_price#5, cr_refunded_cash#8, w_state#10] +Arguments: X + +(36) AQEShuffleRead +Input [5]: [cs_sold_date_sk#1, cs_item_sk#3, cs_sales_price#5, cr_refunded_cash#8, w_state#10] +Arguments: coalesced + +(37) InputAdapter +Input [5]: [cs_sold_date_sk#1, cs_item_sk#3, cs_sales_price#5, cr_refunded_cash#8, w_state#10] + +(38) NativeSort +Input [5]: [cs_sold_date_sk#1, cs_item_sk#3, cs_sales_price#5, cr_refunded_cash#8, w_state#10] +Arguments: [cs_item_sk#3 ASC NULLS FIRST], false + +(94) Scan parquet +Output [3]: [i_item_sk#11, i_item_id#12, i_current_price#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_current_price), GreaterThanOrEqual(i_current_price,0.99), LessThanOrEqual(i_current_price,1.49), IsNotNull(i_item_sk)] +ReadSchema: struct + +(40) InputAdapter +Input [3]: [i_item_sk#11, i_item_id#12, i_current_price#13] +Arguments: [#11, #12, #13] + +(41) NativeFilter +Input [3]: [#11#11, #12#12, #13#13] +Condition : (((isnotnull(i_current_price#13) AND (i_current_price#13 >= 0.99)) AND (i_current_price#13 <= 1.49)) AND isnotnull(i_item_sk#11)) + +(42) NativeProject +Output [2]: [i_item_sk#11, i_item_id#12] +Input [3]: [#11#11, #12#12, #13#13] + +(43) NativeShuffleExchange +Input [2]: [i_item_sk#11, i_item_id#12] +Arguments: hashpartitioning(i_item_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) ShuffleQueryStage +Output [2]: [i_item_sk#11, i_item_id#12] +Arguments: X + +(45) AQEShuffleRead +Input [2]: [i_item_sk#11, i_item_id#12] +Arguments: coalesced + +(46) InputAdapter +Input [2]: [i_item_sk#11, i_item_id#12] + +(47) NativeSort +Input [2]: [i_item_sk#11, i_item_id#12] +Arguments: [i_item_sk#11 ASC NULLS FIRST], false + +(48) NativeSortMergeJoin +Left keys [1]: [cs_item_sk#3] +Right keys [1]: [i_item_sk#11] +Join type: Inner +Join condition: None + +(49) NativeProject +Output [5]: [cs_sold_date_sk#1, cs_sales_price#5, cr_refunded_cash#8, w_state#10, i_item_id#12] +Input [7]: [cs_sold_date_sk#1, cs_item_sk#3, cs_sales_price#5, cr_refunded_cash#8, w_state#10, i_item_sk#11, i_item_id#12] + +(50) NativeShuffleExchange +Input [5]: [cs_sold_date_sk#1, cs_sales_price#5, cr_refunded_cash#8, w_state#10, i_item_id#12] +Arguments: hashpartitioning(cs_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(51) ShuffleQueryStage +Output [5]: [cs_sold_date_sk#1, cs_sales_price#5, cr_refunded_cash#8, w_state#10, i_item_id#12] +Arguments: X + +(52) AQEShuffleRead +Input [5]: [cs_sold_date_sk#1, cs_sales_price#5, cr_refunded_cash#8, w_state#10, i_item_id#12] +Arguments: coalesced + +(53) InputAdapter +Input [5]: [cs_sold_date_sk#1, cs_sales_price#5, cr_refunded_cash#8, w_state#10, i_item_id#12] + +(54) NativeSort +Input [5]: [cs_sold_date_sk#1, cs_sales_price#5, cr_refunded_cash#8, w_state#10, i_item_id#12] +Arguments: [cs_sold_date_sk#1 ASC NULLS FIRST], false + +(103) Scan parquet +Output [2]: [d_date_sk#14, d_date#15] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,2000-02-10), LessThanOrEqual(d_date,2000-04-10), IsNotNull(d_date_sk)] +ReadSchema: struct + +(56) InputAdapter +Input [2]: [d_date_sk#14, d_date#15] +Arguments: [#14, #15] + +(57) NativeFilter +Input [2]: [#14#14, #15#15] +Condition : (((isnotnull(d_date#15) AND (d_date#15 >= 2000-02-10)) AND (d_date#15 <= 2000-04-10)) AND isnotnull(d_date_sk#14)) + +(58) NativeShuffleExchange +Input [2]: [#14#14, #15#15] +Arguments: hashpartitioning(d_date_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(59) ShuffleQueryStage +Output [2]: [#14#14, #15#15] +Arguments: X + +(60) AQEShuffleRead +Input [2]: [#14#14, #15#15] +Arguments: coalesced + +(61) InputAdapter +Input [2]: [#14#14, #15#15] + +(62) NativeSort +Input [2]: [#14#14, #15#15] +Arguments: [d_date_sk#14 ASC NULLS FIRST], false + +(63) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#1] +Right keys [1]: [d_date_sk#14] +Join type: Inner +Join condition: None + +(64) NativeProject +Output [5]: [cs_sales_price#5, cr_refunded_cash#8, w_state#10, i_item_id#12, d_date#15] +Input [7]: [cs_sold_date_sk#1, cs_sales_price#5, cr_refunded_cash#8, w_state#10, i_item_id#12, #14#14, #15#15] + +(65) NativeProject +Output [4]: [w_state#10 AS w_state#10, i_item_id#12 AS i_item_id#12, CASE WHEN (d_date#15 < 2000-03-11) THEN (cs_sales_price#5 - coalesce(cast(cr_refunded_cash#8 as decimal(12,2)), 0.00)) ELSE 0.00 END AS _c2#16, CASE WHEN (d_date#15 >= 2000-03-11) THEN (cs_sales_price#5 - coalesce(cast(cr_refunded_cash#8 as decimal(12,2)), 0.00)) ELSE 0.00 END AS _c3#17] +Input [5]: [cs_sales_price#5, cr_refunded_cash#8, w_state#10, i_item_id#12, d_date#15] + +(66) NativeHashAggregate +Input [4]: [w_state#10, i_item_id#12, _c2#16, _c3#17] +Keys [2]: [w_state#10, i_item_id#12] +Functions [2]: [partial_sum(_c2#16), partial_sum(_c3#17)] +Aggregate Attributes [4]: [sum#18, isEmpty#19, sum#20, isEmpty#21] +Results [3]: [w_state#10, i_item_id#12, #22#22] + +(67) NativeShuffleExchange +Input [3]: [w_state#10, i_item_id#12, #22#22] +Arguments: hashpartitioning(w_state#10, i_item_id#12, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(68) ShuffleQueryStage +Output [3]: [w_state#10, i_item_id#12, #22#22] +Arguments: X + +(69) AQEShuffleRead +Input [3]: [w_state#10, i_item_id#12, #22#22] +Arguments: coalesced + +(70) InputAdapter +Input [3]: [w_state#10, i_item_id#12, #22#22] + +(71) NativeHashAggregate +Input [3]: [w_state#10, i_item_id#12, #22#22] +Keys [2]: [w_state#10, i_item_id#12] +Functions [2]: [sum(CASE WHEN (d_date#15 < 2000-03-11) THEN (cs_sales_price#5 - coalesce(cast(cr_refunded_cash#8 as decimal(12,2)), 0.00)) ELSE 0.00 END), sum(CASE WHEN (d_date#15 >= 2000-03-11) THEN (cs_sales_price#5 - coalesce(cast(cr_refunded_cash#8 as decimal(12,2)), 0.00)) ELSE 0.00 END)] +Aggregate Attributes [2]: [sum(CASE WHEN (d_date#15 < 2000-03-11) THEN (cs_sales_price#5 - coalesce(cast(cr_refunded_cash#8 as decimal(12,2)), 0.00)) ELSE 0.00 END)#23, sum(CASE WHEN (d_date#15 >= 2000-03-11) THEN (cs_sales_price#5 - coalesce(cast(cr_refunded_cash#8 as decimal(12,2)), 0.00)) ELSE 0.00 END)#24] +Results [4]: [w_state#10, i_item_id#12, sum(CASE WHEN (d_date#15 < 2000-03-11) THEN (cs_sales_price#5 - coalesce(cast(cr_refunded_cash#8 as decimal(12,2)), 0.00)) ELSE 0.00 END)#23, sum(CASE WHEN (d_date#15 >= 2000-03-11) THEN (cs_sales_price#5 - coalesce(cast(cr_refunded_cash#8 as decimal(12,2)), 0.00)) ELSE 0.00 END)#24] + +(72) NativeProject +Output [4]: [w_state#10, i_item_id#12, sum(CASE WHEN (d_date#15 < 2000-03-11) THEN (cs_sales_price#5 - coalesce(cast(cr_refunded_cash#8 as decimal(12,2)), 0.00)) ELSE 0.00 END)#23 AS sales_before#25, sum(CASE WHEN (d_date#15 >= 2000-03-11) THEN (cs_sales_price#5 - coalesce(cast(cr_refunded_cash#8 as decimal(12,2)), 0.00)) ELSE 0.00 END)#24 AS sales_after#26] +Input [4]: [w_state#10, i_item_id#12, sum(CASE WHEN (d_date#15 < 2000-03-11) THEN (cs_sales_price#5 - coalesce(cast(cr_refunded_cash#8 as decimal(12,2)), 0.00)) ELSE 0.00 END)#23, sum(CASE WHEN (d_date#15 >= 2000-03-11) THEN (cs_sales_price#5 - coalesce(cast(cr_refunded_cash#8 as decimal(12,2)), 0.00)) ELSE 0.00 END)#24] + +(73) NativeTakeOrdered +Input [4]: [w_state#10, i_item_id#12, sales_before#25, sales_after#26] +Arguments: X, [w_state#10 ASC NULLS FIRST, i_item_id#12 ASC NULLS FIRST] + +(74) Scan parquet +Output [5]: [cs_sold_date_sk#1, cs_warehouse_sk#2, cs_item_sk#3, cs_order_number#4, cs_sales_price#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_warehouse_sk), IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(75) Filter +Input [5]: [cs_sold_date_sk#1, cs_warehouse_sk#2, cs_item_sk#3, cs_order_number#4, cs_sales_price#5] +Condition : ((isnotnull(cs_warehouse_sk#2) AND isnotnull(cs_item_sk#3)) AND isnotnull(cs_sold_date_sk#1)) + +(76) Exchange +Input [5]: [cs_sold_date_sk#1, cs_warehouse_sk#2, cs_item_sk#3, cs_order_number#4, cs_sales_price#5] +Arguments: hashpartitioning(cs_order_number#4, cs_item_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(77) Sort +Input [5]: [cs_sold_date_sk#1, cs_warehouse_sk#2, cs_item_sk#3, cs_order_number#4, cs_sales_price#5] +Arguments: [cs_order_number#4 ASC NULLS FIRST, cs_item_sk#3 ASC NULLS FIRST], false, 0 + +(78) Scan parquet +Output [3]: [cr_item_sk#6, cr_order_number#7, cr_refunded_cash#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cr_order_number), IsNotNull(cr_item_sk)] +ReadSchema: struct + +(79) Filter +Input [3]: [cr_item_sk#6, cr_order_number#7, cr_refunded_cash#8] +Condition : (isnotnull(cr_order_number#7) AND isnotnull(cr_item_sk#6)) + +(80) Exchange +Input [3]: [cr_item_sk#6, cr_order_number#7, cr_refunded_cash#8] +Arguments: hashpartitioning(cr_order_number#7, cr_item_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(81) Sort +Input [3]: [cr_item_sk#6, cr_order_number#7, cr_refunded_cash#8] +Arguments: [cr_order_number#7 ASC NULLS FIRST, cr_item_sk#6 ASC NULLS FIRST], false, 0 + +(82) SortMergeJoin +Left keys [2]: [cs_order_number#4, cs_item_sk#3] +Right keys [2]: [cr_order_number#7, cr_item_sk#6] +Join type: LeftOuter +Join condition: None + +(83) Project +Output [5]: [cs_sold_date_sk#1, cs_warehouse_sk#2, cs_item_sk#3, cs_sales_price#5, cr_refunded_cash#8] +Input [8]: [cs_sold_date_sk#1, cs_warehouse_sk#2, cs_item_sk#3, cs_order_number#4, cs_sales_price#5, cr_item_sk#6, cr_order_number#7, cr_refunded_cash#8] + +(84) Exchange +Input [5]: [cs_sold_date_sk#1, cs_warehouse_sk#2, cs_item_sk#3, cs_sales_price#5, cr_refunded_cash#8] +Arguments: hashpartitioning(cs_warehouse_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(85) Sort +Input [5]: [cs_sold_date_sk#1, cs_warehouse_sk#2, cs_item_sk#3, cs_sales_price#5, cr_refunded_cash#8] +Arguments: [cs_warehouse_sk#2 ASC NULLS FIRST], false, 0 + +(86) Scan parquet +Output [2]: [w_warehouse_sk#9, w_state#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(w_warehouse_sk)] +ReadSchema: struct + +(87) Filter +Input [2]: [w_warehouse_sk#9, w_state#10] +Condition : isnotnull(w_warehouse_sk#9) + +(88) Exchange +Input [2]: [w_warehouse_sk#9, w_state#10] +Arguments: hashpartitioning(w_warehouse_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(89) Sort +Input [2]: [w_warehouse_sk#9, w_state#10] +Arguments: [w_warehouse_sk#9 ASC NULLS FIRST], false, 0 + +(90) SortMergeJoin +Left keys [1]: [cs_warehouse_sk#2] +Right keys [1]: [w_warehouse_sk#9] +Join type: Inner +Join condition: None + +(91) Project +Output [5]: [cs_sold_date_sk#1, cs_item_sk#3, cs_sales_price#5, cr_refunded_cash#8, w_state#10] +Input [7]: [cs_sold_date_sk#1, cs_warehouse_sk#2, cs_item_sk#3, cs_sales_price#5, cr_refunded_cash#8, w_warehouse_sk#9, w_state#10] + +(92) Exchange +Input [5]: [cs_sold_date_sk#1, cs_item_sk#3, cs_sales_price#5, cr_refunded_cash#8, w_state#10] +Arguments: hashpartitioning(cs_item_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(93) Sort +Input [5]: [cs_sold_date_sk#1, cs_item_sk#3, cs_sales_price#5, cr_refunded_cash#8, w_state#10] +Arguments: [cs_item_sk#3 ASC NULLS FIRST], false, 0 + +(94) Scan parquet +Output [3]: [i_item_sk#11, i_item_id#12, i_current_price#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_current_price), GreaterThanOrEqual(i_current_price,0.99), LessThanOrEqual(i_current_price,1.49), IsNotNull(i_item_sk)] +ReadSchema: struct + +(95) Filter +Input [3]: [i_item_sk#11, i_item_id#12, i_current_price#13] +Condition : (((isnotnull(i_current_price#13) AND (i_current_price#13 >= 0.99)) AND (i_current_price#13 <= 1.49)) AND isnotnull(i_item_sk#11)) + +(96) Project +Output [2]: [i_item_sk#11, i_item_id#12] +Input [3]: [i_item_sk#11, i_item_id#12, i_current_price#13] + +(97) Exchange +Input [2]: [i_item_sk#11, i_item_id#12] +Arguments: hashpartitioning(i_item_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(98) Sort +Input [2]: [i_item_sk#11, i_item_id#12] +Arguments: [i_item_sk#11 ASC NULLS FIRST], false, 0 + +(99) SortMergeJoin +Left keys [1]: [cs_item_sk#3] +Right keys [1]: [i_item_sk#11] +Join type: Inner +Join condition: None + +(100) Project +Output [5]: [cs_sold_date_sk#1, cs_sales_price#5, cr_refunded_cash#8, w_state#10, i_item_id#12] +Input [7]: [cs_sold_date_sk#1, cs_item_sk#3, cs_sales_price#5, cr_refunded_cash#8, w_state#10, i_item_sk#11, i_item_id#12] + +(101) Exchange +Input [5]: [cs_sold_date_sk#1, cs_sales_price#5, cr_refunded_cash#8, w_state#10, i_item_id#12] +Arguments: hashpartitioning(cs_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(102) Sort +Input [5]: [cs_sold_date_sk#1, cs_sales_price#5, cr_refunded_cash#8, w_state#10, i_item_id#12] +Arguments: [cs_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(103) Scan parquet +Output [2]: [d_date_sk#14, d_date#15] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,2000-02-10), LessThanOrEqual(d_date,2000-04-10), IsNotNull(d_date_sk)] +ReadSchema: struct + +(104) Filter +Input [2]: [d_date_sk#14, d_date#15] +Condition : (((isnotnull(d_date#15) AND (d_date#15 >= 2000-02-10)) AND (d_date#15 <= 2000-04-10)) AND isnotnull(d_date_sk#14)) + +(105) Exchange +Input [2]: [d_date_sk#14, d_date#15] +Arguments: hashpartitioning(d_date_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(106) Sort +Input [2]: [d_date_sk#14, d_date#15] +Arguments: [d_date_sk#14 ASC NULLS FIRST], false, 0 + +(107) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#1] +Right keys [1]: [d_date_sk#14] +Join type: Inner +Join condition: None + +(108) Project +Output [5]: [cs_sales_price#5, cr_refunded_cash#8, w_state#10, i_item_id#12, d_date#15] +Input [7]: [cs_sold_date_sk#1, cs_sales_price#5, cr_refunded_cash#8, w_state#10, i_item_id#12, d_date_sk#14, d_date#15] + +(109) HashAggregate +Input [5]: [cs_sales_price#5, cr_refunded_cash#8, w_state#10, i_item_id#12, d_date#15] +Keys [2]: [w_state#10, i_item_id#12] +Functions [2]: [partial_sum(CASE WHEN (d_date#15 < 2000-03-11) THEN (cs_sales_price#5 - coalesce(cast(cr_refunded_cash#8 as decimal(12,2)), 0.00)) ELSE 0.00 END), partial_sum(CASE WHEN (d_date#15 >= 2000-03-11) THEN (cs_sales_price#5 - coalesce(cast(cr_refunded_cash#8 as decimal(12,2)), 0.00)) ELSE 0.00 END)] +Aggregate Attributes [4]: [sum#18, isEmpty#19, sum#20, isEmpty#21] +Results [6]: [w_state#10, i_item_id#12, sum#27, isEmpty#28, sum#29, isEmpty#30] + +(110) Exchange +Input [6]: [w_state#10, i_item_id#12, sum#27, isEmpty#28, sum#29, isEmpty#30] +Arguments: hashpartitioning(w_state#10, i_item_id#12, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(111) HashAggregate +Input [6]: [w_state#10, i_item_id#12, sum#27, isEmpty#28, sum#29, isEmpty#30] +Keys [2]: [w_state#10, i_item_id#12] +Functions [2]: [sum(CASE WHEN (d_date#15 < 2000-03-11) THEN (cs_sales_price#5 - coalesce(cast(cr_refunded_cash#8 as decimal(12,2)), 0.00)) ELSE 0.00 END), sum(CASE WHEN (d_date#15 >= 2000-03-11) THEN (cs_sales_price#5 - coalesce(cast(cr_refunded_cash#8 as decimal(12,2)), 0.00)) ELSE 0.00 END)] +Aggregate Attributes [2]: [sum(CASE WHEN (d_date#15 < 2000-03-11) THEN (cs_sales_price#5 - coalesce(cast(cr_refunded_cash#8 as decimal(12,2)), 0.00)) ELSE 0.00 END)#23, sum(CASE WHEN (d_date#15 >= 2000-03-11) THEN (cs_sales_price#5 - coalesce(cast(cr_refunded_cash#8 as decimal(12,2)), 0.00)) ELSE 0.00 END)#24] +Results [4]: [w_state#10, i_item_id#12, sum(CASE WHEN (d_date#15 < 2000-03-11) THEN (cs_sales_price#5 - coalesce(cast(cr_refunded_cash#8 as decimal(12,2)), 0.00)) ELSE 0.00 END)#23 AS sales_before#25, sum(CASE WHEN (d_date#15 >= 2000-03-11) THEN (cs_sales_price#5 - coalesce(cast(cr_refunded_cash#8 as decimal(12,2)), 0.00)) ELSE 0.00 END)#24 AS sales_after#26] + +(112) TakeOrderedAndProject +Input [4]: [w_state#10, i_item_id#12, sales_before#25, sales_after#26] +Arguments: X, [w_state#10 ASC NULLS FIRST, i_item_id#12 ASC NULLS FIRST], [w_state#10, i_item_id#12, sales_before#25, sales_after#26] + +(113) AdaptiveSparkPlan +Output [4]: [w_state#10, i_item_id#12, sales_before#25, sales_after#26] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q41.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q41.txt new file mode 100644 index 000000000..0bf4f72b3 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q41.txt @@ -0,0 +1,312 @@ +== Physical Plan == +AdaptiveSparkPlan (54) ++- == Final Plan == + NativeTakeOrdered (33) + +- NativeProject (32) + +- NativeHashAggregate (31) + +- InputAdapter (30) + +- AQEShuffleRead (29) + +- ShuffleQueryStage (28), Statistics(X) + +- NativeShuffleExchange (27) + +- NativeHashAggregate (26) + +- NativeProject (25) + +- NativeSortMergeJoin Inner (24) + :- NativeSort (9) + : +- InputAdapter (8) + : +- AQEShuffleRead (7) + : +- ShuffleQueryStage (6), Statistics(X) + : +- NativeShuffleExchange (5) + : +- NativeProject (4) + : +- NativeFilter (3) + : +- InputAdapter (2) + : +- NativeParquetScan (1) + +- NativeSort (23) + +- NativeProject (22) + +- NativeFilter (21) + +- NativeProject (20) + +- NativeHashAggregate (19) + +- InputAdapter (18) + +- AQEShuffleRead (17) + +- ShuffleQueryStage (16), Statistics(X) + +- NativeShuffleExchange (15) + +- NativeHashAggregate (14) + +- NativeProject (13) + +- NativeFilter (12) + +- InputAdapter (11) + +- NativeParquetScan (10) ++- == Initial Plan == + TakeOrderedAndProject (53) + +- HashAggregate (52) + +- Exchange (51) + +- HashAggregate (50) + +- Project (49) + +- SortMergeJoin Inner (48) + :- Sort (38) + : +- Exchange (37) + : +- Project (36) + : +- Filter (35) + : +- Scan parquet (34) + +- Sort (47) + +- Project (46) + +- Filter (45) + +- HashAggregate (44) + +- Exchange (43) + +- HashAggregate (42) + +- Project (41) + +- Filter (40) + +- Scan parquet (39) + + +(34) Scan parquet +Output [3]: [i_manufact_id#1, i_manufact#2, i_product_name#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_manufact_id), GreaterThanOrEqual(i_manufact_id,738), LessThanOrEqual(i_manufact_id,778), IsNotNull(i_manufact)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [i_manufact_id#1, i_manufact#2, i_product_name#3] +Arguments: [#1, #2, #3] + +(3) NativeFilter +Input [3]: [#1#1, #2#2, #3#3] +Condition : (((isnotnull(i_manufact_id#1) AND (i_manufact_id#1 >= 738)) AND (i_manufact_id#1 <= 778)) AND isnotnull(i_manufact#2)) + +(4) NativeProject +Output [2]: [i_manufact#2, i_product_name#3] +Input [3]: [#1#1, #2#2, #3#3] + +(5) NativeShuffleExchange +Input [2]: [i_manufact#2, i_product_name#3] +Arguments: hashpartitioning(i_manufact#2, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(6) ShuffleQueryStage +Output [2]: [i_manufact#2, i_product_name#3] +Arguments: X + +(7) AQEShuffleRead +Input [2]: [i_manufact#2, i_product_name#3] +Arguments: coalesced + +(8) InputAdapter +Input [2]: [i_manufact#2, i_product_name#3] + +(9) NativeSort +Input [2]: [i_manufact#2, i_product_name#3] +Arguments: [i_manufact#2 ASC NULLS FIRST], false + +(39) Scan parquet +Output [5]: [i_category#4, i_manufact#5, i_size#6, i_color#7, i_units#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(Or(And(EqualTo(i_category,Women),Or(And(And(Or(EqualTo(i_color,powder),EqualTo(i_color,khaki)),Or(EqualTo(i_units,Ounce),EqualTo(i_units,Oz))),Or(EqualTo(i_size,medium),EqualTo(i_size,extra large))),And(And(Or(EqualTo(i_color,brown),EqualTo(i_color,honeydew)),Or(EqualTo(i_units,Bunch),EqualTo(i_units,Ton))),Or(EqualTo(i_size,N/A),EqualTo(i_size,small))))),And(EqualTo(i_category,Men),Or(And(And(Or(EqualTo(i_color,floral),EqualTo(i_color,deep)),Or(EqualTo(i_units,N/A),EqualTo(i_units,Dozen))),Or(EqualTo(i_size,petite),EqualTo(i_size,large))),And(And(Or(EqualTo(i_color,light),EqualTo(i_color,cornflower)),Or(EqualTo(i_units,Box),EqualTo(i_units,Pound))),Or(EqualTo(i_size,medium),EqualTo(i_size,extra large)))))),Or(And(EqualTo(i_category,Women),Or(And(And(Or(EqualTo(i_color,midnight),EqualTo(i_color,snow)),Or(EqualTo(i_units,Pallet),EqualTo(i_units,Gross))),Or(EqualTo(i_size,medium),EqualTo(i_size,extra large))),And(And(Or(EqualTo(i_color,cyan),EqualTo(i_color,papaya)),Or(EqualTo(i_units,Cup),EqualTo(i_units,Dram))),Or(EqualTo(i_size,N/A),EqualTo(i_size,small))))),And(EqualTo(i_category,Men),Or(And(And(Or(EqualTo(i_color,orange),EqualTo(i_color,frosted)),Or(EqualTo(i_units,Each),EqualTo(i_units,Tbl))),Or(EqualTo(i_size,petite),EqualTo(i_size,large))),And(And(Or(EqualTo(i_color,forest),EqualTo(i_color,ghost)),Or(EqualTo(i_units,Lb),EqualTo(i_units,Bundle))),Or(EqualTo(i_size,medium),EqualTo(i_size,extra large))))))), IsNotNull(i_manufact)] +ReadSchema: struct + +(11) InputAdapter +Input [5]: [i_category#4, i_manufact#5, i_size#6, i_color#7, i_units#8] +Arguments: [#4, #5, #6, #7, #8] + +(12) NativeFilter +Input [5]: [#4#4, #5#5, #6#6, #7#7, #8#8] +Condition : (((((i_category#4 = Women) AND (((((i_color#7 = powder) OR (i_color#7 = khaki)) AND ((i_units#8 = Ounce) OR (i_units#8 = Oz))) AND ((i_size#6 = medium) OR (i_size#6 = extra large))) OR ((((i_color#7 = brown) OR (i_color#7 = honeydew)) AND ((i_units#8 = Bunch) OR (i_units#8 = Ton))) AND ((i_size#6 = N/A) OR (i_size#6 = small))))) OR ((i_category#4 = Men) AND (((((i_color#7 = floral) OR (i_color#7 = deep)) AND ((i_units#8 = N/A) OR (i_units#8 = Dozen))) AND ((i_size#6 = petite) OR (i_size#6 = large))) OR ((((i_color#7 = light) OR (i_color#7 = cornflower)) AND ((i_units#8 = Box) OR (i_units#8 = Pound))) AND ((i_size#6 = medium) OR (i_size#6 = extra large)))))) OR (((i_category#4 = Women) AND (((((i_color#7 = midnight) OR (i_color#7 = snow)) AND ((i_units#8 = Pallet) OR (i_units#8 = Gross))) AND ((i_size#6 = medium) OR (i_size#6 = extra large))) OR ((((i_color#7 = cyan) OR (i_color#7 = papaya)) AND ((i_units#8 = Cup) OR (i_units#8 = Dram))) AND ((i_size#6 = N/A) OR (i_size#6 = small))))) OR ((i_category#4 = Men) AND (((((i_color#7 = orange) OR (i_color#7 = frosted)) AND ((i_units#8 = Each) OR (i_units#8 = Tbl))) AND ((i_size#6 = petite) OR (i_size#6 = large))) OR ((((i_color#7 = forest) OR (i_color#7 = ghost)) AND ((i_units#8 = Lb) OR (i_units#8 = Bundle))) AND ((i_size#6 = medium) OR (i_size#6 = extra large))))))) AND isnotnull(i_manufact#5)) + +(13) NativeProject +Output [1]: [i_manufact#5] +Input [5]: [#4#4, #5#5, #6#6, #7#7, #8#8] + +(14) NativeHashAggregate +Input [1]: [i_manufact#5] +Keys [1]: [i_manufact#5] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#9] +Results [2]: [i_manufact#5, #10#10] + +(15) NativeShuffleExchange +Input [2]: [i_manufact#5, #10#10] +Arguments: hashpartitioning(i_manufact#5, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(16) ShuffleQueryStage +Output [2]: [i_manufact#5, #10#10] +Arguments: X + +(17) AQEShuffleRead +Input [2]: [i_manufact#5, #10#10] +Arguments: coalesced + +(18) InputAdapter +Input [2]: [i_manufact#5, #10#10] + +(19) NativeHashAggregate +Input [2]: [i_manufact#5, #10#10] +Keys [1]: [i_manufact#5] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#11] +Results [2]: [i_manufact#5, count(1)#11] + +(20) NativeProject +Output [2]: [count(1)#11 AS item_cnt#12, i_manufact#5] +Input [2]: [i_manufact#5, count(1)#11] + +(21) NativeFilter +Input [2]: [item_cnt#12, i_manufact#5] +Condition : (item_cnt#12 > 0) + +(22) NativeProject +Output [1]: [i_manufact#5] +Input [2]: [item_cnt#12, i_manufact#5] + +(23) NativeSort +Input [1]: [i_manufact#5] +Arguments: [i_manufact#5 ASC NULLS FIRST], false + +(24) NativeSortMergeJoin +Left keys [1]: [i_manufact#2] +Right keys [1]: [i_manufact#5] +Join type: Inner +Join condition: None + +(25) NativeProject +Output [1]: [i_product_name#3] +Input [3]: [i_manufact#2, i_product_name#3, i_manufact#5] + +(26) NativeHashAggregate +Input [1]: [i_product_name#3] +Keys [1]: [i_product_name#3] +Functions: [] +Aggregate Attributes: [] +Results [2]: [i_product_name#3, #10#10] + +(27) NativeShuffleExchange +Input [2]: [i_product_name#3, #10#10] +Arguments: hashpartitioning(i_product_name#3, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(28) ShuffleQueryStage +Output [2]: [i_product_name#3, #10#10] +Arguments: X + +(29) AQEShuffleRead +Input [2]: [i_product_name#3, #10#10] +Arguments: coalesced + +(30) InputAdapter +Input [2]: [i_product_name#3, #10#10] + +(31) NativeHashAggregate +Input [2]: [i_product_name#3, #10#10] +Keys [1]: [i_product_name#3] +Functions: [] +Aggregate Attributes: [] +Results [2]: [i_product_name#3, #10#10] + +(32) NativeProject +Output [1]: [i_product_name#3] +Input [2]: [i_product_name#3, #10#10] + +(33) NativeTakeOrdered +Input [1]: [i_product_name#3] +Arguments: X, [i_product_name#3 ASC NULLS FIRST] + +(34) Scan parquet +Output [3]: [i_manufact_id#1, i_manufact#2, i_product_name#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_manufact_id), GreaterThanOrEqual(i_manufact_id,738), LessThanOrEqual(i_manufact_id,778), IsNotNull(i_manufact)] +ReadSchema: struct + +(35) Filter +Input [3]: [i_manufact_id#1, i_manufact#2, i_product_name#3] +Condition : (((isnotnull(i_manufact_id#1) AND (i_manufact_id#1 >= 738)) AND (i_manufact_id#1 <= 778)) AND isnotnull(i_manufact#2)) + +(36) Project +Output [2]: [i_manufact#2, i_product_name#3] +Input [3]: [i_manufact_id#1, i_manufact#2, i_product_name#3] + +(37) Exchange +Input [2]: [i_manufact#2, i_product_name#3] +Arguments: hashpartitioning(i_manufact#2, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(38) Sort +Input [2]: [i_manufact#2, i_product_name#3] +Arguments: [i_manufact#2 ASC NULLS FIRST], false, 0 + +(39) Scan parquet +Output [5]: [i_category#4, i_manufact#5, i_size#6, i_color#7, i_units#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(Or(And(EqualTo(i_category,Women),Or(And(And(Or(EqualTo(i_color,powder),EqualTo(i_color,khaki)),Or(EqualTo(i_units,Ounce),EqualTo(i_units,Oz))),Or(EqualTo(i_size,medium),EqualTo(i_size,extra large))),And(And(Or(EqualTo(i_color,brown),EqualTo(i_color,honeydew)),Or(EqualTo(i_units,Bunch),EqualTo(i_units,Ton))),Or(EqualTo(i_size,N/A),EqualTo(i_size,small))))),And(EqualTo(i_category,Men),Or(And(And(Or(EqualTo(i_color,floral),EqualTo(i_color,deep)),Or(EqualTo(i_units,N/A),EqualTo(i_units,Dozen))),Or(EqualTo(i_size,petite),EqualTo(i_size,large))),And(And(Or(EqualTo(i_color,light),EqualTo(i_color,cornflower)),Or(EqualTo(i_units,Box),EqualTo(i_units,Pound))),Or(EqualTo(i_size,medium),EqualTo(i_size,extra large)))))),Or(And(EqualTo(i_category,Women),Or(And(And(Or(EqualTo(i_color,midnight),EqualTo(i_color,snow)),Or(EqualTo(i_units,Pallet),EqualTo(i_units,Gross))),Or(EqualTo(i_size,medium),EqualTo(i_size,extra large))),And(And(Or(EqualTo(i_color,cyan),EqualTo(i_color,papaya)),Or(EqualTo(i_units,Cup),EqualTo(i_units,Dram))),Or(EqualTo(i_size,N/A),EqualTo(i_size,small))))),And(EqualTo(i_category,Men),Or(And(And(Or(EqualTo(i_color,orange),EqualTo(i_color,frosted)),Or(EqualTo(i_units,Each),EqualTo(i_units,Tbl))),Or(EqualTo(i_size,petite),EqualTo(i_size,large))),And(And(Or(EqualTo(i_color,forest),EqualTo(i_color,ghost)),Or(EqualTo(i_units,Lb),EqualTo(i_units,Bundle))),Or(EqualTo(i_size,medium),EqualTo(i_size,extra large))))))), IsNotNull(i_manufact)] +ReadSchema: struct + +(40) Filter +Input [5]: [i_category#4, i_manufact#5, i_size#6, i_color#7, i_units#8] +Condition : (((((i_category#4 = Women) AND (((((i_color#7 = powder) OR (i_color#7 = khaki)) AND ((i_units#8 = Ounce) OR (i_units#8 = Oz))) AND ((i_size#6 = medium) OR (i_size#6 = extra large))) OR ((((i_color#7 = brown) OR (i_color#7 = honeydew)) AND ((i_units#8 = Bunch) OR (i_units#8 = Ton))) AND ((i_size#6 = N/A) OR (i_size#6 = small))))) OR ((i_category#4 = Men) AND (((((i_color#7 = floral) OR (i_color#7 = deep)) AND ((i_units#8 = N/A) OR (i_units#8 = Dozen))) AND ((i_size#6 = petite) OR (i_size#6 = large))) OR ((((i_color#7 = light) OR (i_color#7 = cornflower)) AND ((i_units#8 = Box) OR (i_units#8 = Pound))) AND ((i_size#6 = medium) OR (i_size#6 = extra large)))))) OR (((i_category#4 = Women) AND (((((i_color#7 = midnight) OR (i_color#7 = snow)) AND ((i_units#8 = Pallet) OR (i_units#8 = Gross))) AND ((i_size#6 = medium) OR (i_size#6 = extra large))) OR ((((i_color#7 = cyan) OR (i_color#7 = papaya)) AND ((i_units#8 = Cup) OR (i_units#8 = Dram))) AND ((i_size#6 = N/A) OR (i_size#6 = small))))) OR ((i_category#4 = Men) AND (((((i_color#7 = orange) OR (i_color#7 = frosted)) AND ((i_units#8 = Each) OR (i_units#8 = Tbl))) AND ((i_size#6 = petite) OR (i_size#6 = large))) OR ((((i_color#7 = forest) OR (i_color#7 = ghost)) AND ((i_units#8 = Lb) OR (i_units#8 = Bundle))) AND ((i_size#6 = medium) OR (i_size#6 = extra large))))))) AND isnotnull(i_manufact#5)) + +(41) Project +Output [1]: [i_manufact#5] +Input [5]: [i_category#4, i_manufact#5, i_size#6, i_color#7, i_units#8] + +(42) HashAggregate +Input [1]: [i_manufact#5] +Keys [1]: [i_manufact#5] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#9] +Results [2]: [i_manufact#5, count#13] + +(43) Exchange +Input [2]: [i_manufact#5, count#13] +Arguments: hashpartitioning(i_manufact#5, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(44) HashAggregate +Input [2]: [i_manufact#5, count#13] +Keys [1]: [i_manufact#5] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#11] +Results [2]: [count(1)#11 AS item_cnt#12, i_manufact#5] + +(45) Filter +Input [2]: [item_cnt#12, i_manufact#5] +Condition : (item_cnt#12 > 0) + +(46) Project +Output [1]: [i_manufact#5] +Input [2]: [item_cnt#12, i_manufact#5] + +(47) Sort +Input [1]: [i_manufact#5] +Arguments: [i_manufact#5 ASC NULLS FIRST], false, 0 + +(48) SortMergeJoin +Left keys [1]: [i_manufact#2] +Right keys [1]: [i_manufact#5] +Join type: Inner +Join condition: None + +(49) Project +Output [1]: [i_product_name#3] +Input [3]: [i_manufact#2, i_product_name#3, i_manufact#5] + +(50) HashAggregate +Input [1]: [i_product_name#3] +Keys [1]: [i_product_name#3] +Functions: [] +Aggregate Attributes: [] +Results [1]: [i_product_name#3] + +(51) Exchange +Input [1]: [i_product_name#3] +Arguments: hashpartitioning(i_product_name#3, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(52) HashAggregate +Input [1]: [i_product_name#3] +Keys [1]: [i_product_name#3] +Functions: [] +Aggregate Attributes: [] +Results [1]: [i_product_name#3] + +(53) TakeOrderedAndProject +Input [1]: [i_product_name#3] +Arguments: X, [i_product_name#3 ASC NULLS FIRST], [i_product_name#3] + +(54) AdaptiveSparkPlan +Output [1]: [i_product_name#3] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q42.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q42.txt new file mode 100644 index 000000000..77a61dce2 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q42.txt @@ -0,0 +1,383 @@ +== Physical Plan == +AdaptiveSparkPlan (69) ++- == Final Plan == + NativeTakeOrdered (44) + +- NativeProject (43) + +- NativeHashAggregate (42) + +- InputAdapter (41) + +- AQEShuffleRead (40) + +- ShuffleQueryStage (39), Statistics(X) + +- NativeShuffleExchange (38) + +- NativeHashAggregate (37) + +- NativeProject (36) + +- NativeProject (35) + +- NativeSortMergeJoin Inner (34) + :- NativeSort (24) + : +- InputAdapter (23) + : +- AQEShuffleRead (22) + : +- ShuffleQueryStage (21), Statistics(X) + : +- NativeShuffleExchange (20) + : +- NativeProject (19) + : +- NativeSortMergeJoin Inner (18) + : :- NativeSort (9) + : : +- InputAdapter (8) + : : +- AQEShuffleRead (7) + : : +- ShuffleQueryStage (6), Statistics(X) + : : +- NativeShuffleExchange (5) + : : +- NativeProject (4) + : : +- NativeFilter (3) + : : +- InputAdapter (2) + : : +- NativeParquetScan (1) + : +- NativeSort (17) + : +- InputAdapter (16) + : +- AQEShuffleRead (15) + : +- ShuffleQueryStage (14), Statistics(X) + : +- NativeShuffleExchange (13) + : +- NativeFilter (12) + : +- InputAdapter (11) + : +- NativeParquetScan (10) + +- NativeSort (33) + +- InputAdapter (32) + +- AQEShuffleRead (31) + +- ShuffleQueryStage (30), Statistics(X) + +- NativeShuffleExchange (29) + +- NativeProject (28) + +- NativeFilter (27) + +- InputAdapter (26) + +- NativeParquetScan (25) ++- == Initial Plan == + TakeOrderedAndProject (68) + +- HashAggregate (67) + +- Exchange (66) + +- HashAggregate (65) + +- Project (64) + +- SortMergeJoin Inner (63) + :- Sort (57) + : +- Exchange (56) + : +- Project (55) + : +- SortMergeJoin Inner (54) + : :- Sort (49) + : : +- Exchange (48) + : : +- Project (47) + : : +- Filter (46) + : : +- Scan parquet (45) + : +- Sort (53) + : +- Exchange (52) + : +- Filter (51) + : +- Scan parquet (50) + +- Sort (62) + +- Exchange (61) + +- Project (60) + +- Filter (59) + +- Scan parquet (58) + + +(45) Scan parquet +Output [3]: [d_date_sk#1, d_year#2, d_moy#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_moy), IsNotNull(d_year), EqualTo(d_moy,11), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [d_date_sk#1, d_year#2, d_moy#3] +Arguments: [#1, #2, #3] + +(3) NativeFilter +Input [3]: [#1#1, #2#2, #3#3] +Condition : ((((isnotnull(d_moy#3) AND isnotnull(d_year#2)) AND (d_moy#3 = 11)) AND (d_year#2 = 2000)) AND isnotnull(d_date_sk#1)) + +(4) NativeProject +Output [2]: [d_date_sk#1, d_year#2] +Input [3]: [#1#1, #2#2, #3#3] + +(5) NativeShuffleExchange +Input [2]: [d_date_sk#1, d_year#2] +Arguments: hashpartitioning(d_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(6) ShuffleQueryStage +Output [2]: [d_date_sk#1, d_year#2] +Arguments: X + +(7) AQEShuffleRead +Input [2]: [d_date_sk#1, d_year#2] +Arguments: coalesced + +(8) InputAdapter +Input [2]: [d_date_sk#1, d_year#2] + +(9) NativeSort +Input [2]: [d_date_sk#1, d_year#2] +Arguments: [d_date_sk#1 ASC NULLS FIRST], false + +(50) Scan parquet +Output [3]: [ss_sold_date_sk#4, ss_item_sk#5, ss_ext_sales_price#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(11) InputAdapter +Input [3]: [ss_sold_date_sk#4, ss_item_sk#5, ss_ext_sales_price#6] +Arguments: [#4, #5, #6] + +(12) NativeFilter +Input [3]: [#4#4, #5#5, #6#6] +Condition : (isnotnull(ss_sold_date_sk#4) AND isnotnull(ss_item_sk#5)) + +(13) NativeShuffleExchange +Input [3]: [#4#4, #5#5, #6#6] +Arguments: hashpartitioning(ss_sold_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [3]: [#4#4, #5#5, #6#6] +Arguments: X + +(15) AQEShuffleRead +Input [3]: [#4#4, #5#5, #6#6] +Arguments: coalesced + +(16) InputAdapter +Input [3]: [#4#4, #5#5, #6#6] + +(17) NativeSort +Input [3]: [#4#4, #5#5, #6#6] +Arguments: [ss_sold_date_sk#4 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [d_date_sk#1] +Right keys [1]: [ss_sold_date_sk#4] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [3]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6] +Input [5]: [d_date_sk#1, d_year#2, #4#4, #5#5, #6#6] + +(20) NativeShuffleExchange +Input [3]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6] +Arguments: hashpartitioning(ss_item_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [3]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6] +Arguments: X + +(22) AQEShuffleRead +Input [3]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6] +Arguments: coalesced + +(23) InputAdapter +Input [3]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6] + +(24) NativeSort +Input [3]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6] +Arguments: [ss_item_sk#5 ASC NULLS FIRST], false + +(58) Scan parquet +Output [4]: [i_item_sk#7, i_category_id#8, i_category#9, i_manager_id#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_manager_id), EqualTo(i_manager_id,1), IsNotNull(i_item_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [4]: [i_item_sk#7, i_category_id#8, i_category#9, i_manager_id#10] +Arguments: [#7, #8, #9, #10] + +(27) NativeFilter +Input [4]: [#7#7, #8#8, #9#9, #10#10] +Condition : ((isnotnull(i_manager_id#10) AND (i_manager_id#10 = 1)) AND isnotnull(i_item_sk#7)) + +(28) NativeProject +Output [3]: [i_item_sk#7, i_category_id#8, i_category#9] +Input [4]: [#7#7, #8#8, #9#9, #10#10] + +(29) NativeShuffleExchange +Input [3]: [i_item_sk#7, i_category_id#8, i_category#9] +Arguments: hashpartitioning(i_item_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(30) ShuffleQueryStage +Output [3]: [i_item_sk#7, i_category_id#8, i_category#9] +Arguments: X + +(31) AQEShuffleRead +Input [3]: [i_item_sk#7, i_category_id#8, i_category#9] +Arguments: coalesced + +(32) InputAdapter +Input [3]: [i_item_sk#7, i_category_id#8, i_category#9] + +(33) NativeSort +Input [3]: [i_item_sk#7, i_category_id#8, i_category#9] +Arguments: [i_item_sk#7 ASC NULLS FIRST], false + +(34) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#5] +Right keys [1]: [i_item_sk#7] +Join type: Inner +Join condition: None + +(35) NativeProject +Output [4]: [d_year#2, ss_ext_sales_price#6, i_category_id#8, i_category#9] +Input [6]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6, i_item_sk#7, i_category_id#8, i_category#9] + +(36) NativeProject +Output [4]: [d_year#2 AS d_year#2, i_category_id#8 AS i_category_id#8, i_category#9 AS i_category#9, UnscaledValue(ss_ext_sales_price#6) AS _c3#11] +Input [4]: [d_year#2, ss_ext_sales_price#6, i_category_id#8, i_category#9] + +(37) NativeHashAggregate +Input [4]: [d_year#2, i_category_id#8, i_category#9, _c3#11] +Keys [3]: [d_year#2, i_category_id#8, i_category#9] +Functions [1]: [partial_sum(_c3#11)] +Aggregate Attributes [1]: [sum#12] +Results [4]: [d_year#2, i_category_id#8, i_category#9, #13#13] + +(38) NativeShuffleExchange +Input [4]: [d_year#2, i_category_id#8, i_category#9, #13#13] +Arguments: hashpartitioning(d_year#2, i_category_id#8, i_category#9, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(39) ShuffleQueryStage +Output [4]: [d_year#2, i_category_id#8, i_category#9, #13#13] +Arguments: X + +(40) AQEShuffleRead +Input [4]: [d_year#2, i_category_id#8, i_category#9, #13#13] +Arguments: coalesced + +(41) InputAdapter +Input [4]: [d_year#2, i_category_id#8, i_category#9, #13#13] + +(42) NativeHashAggregate +Input [4]: [d_year#2, i_category_id#8, i_category#9, #13#13] +Keys [3]: [d_year#2, i_category_id#8, i_category#9] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#6))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#6))#14] +Results [4]: [d_year#2, i_category_id#8, i_category#9, sum(UnscaledValue(ss_ext_sales_price#6))#14] + +(43) NativeProject +Output [4]: [d_year#2, i_category_id#8, i_category#9, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#6))#14,17,2) AS sum(ss_ext_sales_price)#15] +Input [4]: [d_year#2, i_category_id#8, i_category#9, sum(UnscaledValue(ss_ext_sales_price#6))#14] + +(44) NativeTakeOrdered +Input [4]: [d_year#2, i_category_id#8, i_category#9, sum(ss_ext_sales_price)#15] +Arguments: X, [sum(ss_ext_sales_price)#15 DESC NULLS LAST, d_year#2 ASC NULLS FIRST, i_category_id#8 ASC NULLS FIRST, i_category#9 ASC NULLS FIRST] + +(45) Scan parquet +Output [3]: [d_date_sk#1, d_year#2, d_moy#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_moy), IsNotNull(d_year), EqualTo(d_moy,11), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(46) Filter +Input [3]: [d_date_sk#1, d_year#2, d_moy#3] +Condition : ((((isnotnull(d_moy#3) AND isnotnull(d_year#2)) AND (d_moy#3 = 11)) AND (d_year#2 = 2000)) AND isnotnull(d_date_sk#1)) + +(47) Project +Output [2]: [d_date_sk#1, d_year#2] +Input [3]: [d_date_sk#1, d_year#2, d_moy#3] + +(48) Exchange +Input [2]: [d_date_sk#1, d_year#2] +Arguments: hashpartitioning(d_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(49) Sort +Input [2]: [d_date_sk#1, d_year#2] +Arguments: [d_date_sk#1 ASC NULLS FIRST], false, 0 + +(50) Scan parquet +Output [3]: [ss_sold_date_sk#4, ss_item_sk#5, ss_ext_sales_price#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(51) Filter +Input [3]: [ss_sold_date_sk#4, ss_item_sk#5, ss_ext_sales_price#6] +Condition : (isnotnull(ss_sold_date_sk#4) AND isnotnull(ss_item_sk#5)) + +(52) Exchange +Input [3]: [ss_sold_date_sk#4, ss_item_sk#5, ss_ext_sales_price#6] +Arguments: hashpartitioning(ss_sold_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(53) Sort +Input [3]: [ss_sold_date_sk#4, ss_item_sk#5, ss_ext_sales_price#6] +Arguments: [ss_sold_date_sk#4 ASC NULLS FIRST], false, 0 + +(54) SortMergeJoin +Left keys [1]: [d_date_sk#1] +Right keys [1]: [ss_sold_date_sk#4] +Join type: Inner +Join condition: None + +(55) Project +Output [3]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6] +Input [5]: [d_date_sk#1, d_year#2, ss_sold_date_sk#4, ss_item_sk#5, ss_ext_sales_price#6] + +(56) Exchange +Input [3]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6] +Arguments: hashpartitioning(ss_item_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(57) Sort +Input [3]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6] +Arguments: [ss_item_sk#5 ASC NULLS FIRST], false, 0 + +(58) Scan parquet +Output [4]: [i_item_sk#7, i_category_id#8, i_category#9, i_manager_id#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_manager_id), EqualTo(i_manager_id,1), IsNotNull(i_item_sk)] +ReadSchema: struct + +(59) Filter +Input [4]: [i_item_sk#7, i_category_id#8, i_category#9, i_manager_id#10] +Condition : ((isnotnull(i_manager_id#10) AND (i_manager_id#10 = 1)) AND isnotnull(i_item_sk#7)) + +(60) Project +Output [3]: [i_item_sk#7, i_category_id#8, i_category#9] +Input [4]: [i_item_sk#7, i_category_id#8, i_category#9, i_manager_id#10] + +(61) Exchange +Input [3]: [i_item_sk#7, i_category_id#8, i_category#9] +Arguments: hashpartitioning(i_item_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(62) Sort +Input [3]: [i_item_sk#7, i_category_id#8, i_category#9] +Arguments: [i_item_sk#7 ASC NULLS FIRST], false, 0 + +(63) SortMergeJoin +Left keys [1]: [ss_item_sk#5] +Right keys [1]: [i_item_sk#7] +Join type: Inner +Join condition: None + +(64) Project +Output [4]: [d_year#2, ss_ext_sales_price#6, i_category_id#8, i_category#9] +Input [6]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6, i_item_sk#7, i_category_id#8, i_category#9] + +(65) HashAggregate +Input [4]: [d_year#2, ss_ext_sales_price#6, i_category_id#8, i_category#9] +Keys [3]: [d_year#2, i_category_id#8, i_category#9] +Functions [1]: [partial_sum(UnscaledValue(ss_ext_sales_price#6))] +Aggregate Attributes [1]: [sum#12] +Results [4]: [d_year#2, i_category_id#8, i_category#9, sum#16] + +(66) Exchange +Input [4]: [d_year#2, i_category_id#8, i_category#9, sum#16] +Arguments: hashpartitioning(d_year#2, i_category_id#8, i_category#9, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(67) HashAggregate +Input [4]: [d_year#2, i_category_id#8, i_category#9, sum#16] +Keys [3]: [d_year#2, i_category_id#8, i_category#9] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#6))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#6))#14] +Results [4]: [d_year#2, i_category_id#8, i_category#9, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#6))#14,17,2) AS sum(ss_ext_sales_price)#15] + +(68) TakeOrderedAndProject +Input [4]: [d_year#2, i_category_id#8, i_category#9, sum(ss_ext_sales_price)#15] +Arguments: X, [sum(ss_ext_sales_price)#15 DESC NULLS LAST, d_year#2 ASC NULLS FIRST, i_category_id#8 ASC NULLS FIRST, i_category#9 ASC NULLS FIRST], [d_year#2, i_category_id#8, i_category#9, sum(ss_ext_sales_price)#15] + +(69) AdaptiveSparkPlan +Output [4]: [d_year#2, i_category_id#8, i_category#9, sum(ss_ext_sales_price)#15] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q43.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q43.txt new file mode 100644 index 000000000..3be92c046 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q43.txt @@ -0,0 +1,383 @@ +== Physical Plan == +AdaptiveSparkPlan (69) ++- == Final Plan == + NativeTakeOrdered (44) + +- NativeProject (43) + +- NativeHashAggregate (42) + +- InputAdapter (41) + +- AQEShuffleRead (40) + +- ShuffleQueryStage (39), Statistics(X) + +- NativeShuffleExchange (38) + +- NativeHashAggregate (37) + +- NativeProject (36) + +- NativeProject (35) + +- NativeSortMergeJoin Inner (34) + :- NativeSort (24) + : +- InputAdapter (23) + : +- AQEShuffleRead (22) + : +- ShuffleQueryStage (21), Statistics(X) + : +- NativeShuffleExchange (20) + : +- NativeProject (19) + : +- NativeSortMergeJoin Inner (18) + : :- NativeSort (9) + : : +- InputAdapter (8) + : : +- AQEShuffleRead (7) + : : +- ShuffleQueryStage (6), Statistics(X) + : : +- NativeShuffleExchange (5) + : : +- NativeProject (4) + : : +- NativeFilter (3) + : : +- InputAdapter (2) + : : +- NativeParquetScan (1) + : +- NativeSort (17) + : +- InputAdapter (16) + : +- AQEShuffleRead (15) + : +- ShuffleQueryStage (14), Statistics(X) + : +- NativeShuffleExchange (13) + : +- NativeFilter (12) + : +- InputAdapter (11) + : +- NativeParquetScan (10) + +- NativeSort (33) + +- InputAdapter (32) + +- AQEShuffleRead (31) + +- ShuffleQueryStage (30), Statistics(X) + +- NativeShuffleExchange (29) + +- NativeProject (28) + +- NativeFilter (27) + +- InputAdapter (26) + +- NativeParquetScan (25) ++- == Initial Plan == + TakeOrderedAndProject (68) + +- HashAggregate (67) + +- Exchange (66) + +- HashAggregate (65) + +- Project (64) + +- SortMergeJoin Inner (63) + :- Sort (57) + : +- Exchange (56) + : +- Project (55) + : +- SortMergeJoin Inner (54) + : :- Sort (49) + : : +- Exchange (48) + : : +- Project (47) + : : +- Filter (46) + : : +- Scan parquet (45) + : +- Sort (53) + : +- Exchange (52) + : +- Filter (51) + : +- Scan parquet (50) + +- Sort (62) + +- Exchange (61) + +- Project (60) + +- Filter (59) + +- Scan parquet (58) + + +(45) Scan parquet +Output [3]: [d_date_sk#1, d_year#2, d_day_name#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [d_date_sk#1, d_year#2, d_day_name#3] +Arguments: [#1, #2, #3] + +(3) NativeFilter +Input [3]: [#1#1, #2#2, #3#3] +Condition : ((isnotnull(d_year#2) AND (d_year#2 = 2000)) AND isnotnull(d_date_sk#1)) + +(4) NativeProject +Output [2]: [d_date_sk#1, d_day_name#3] +Input [3]: [#1#1, #2#2, #3#3] + +(5) NativeShuffleExchange +Input [2]: [d_date_sk#1, d_day_name#3] +Arguments: hashpartitioning(d_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(6) ShuffleQueryStage +Output [2]: [d_date_sk#1, d_day_name#3] +Arguments: X + +(7) AQEShuffleRead +Input [2]: [d_date_sk#1, d_day_name#3] +Arguments: coalesced + +(8) InputAdapter +Input [2]: [d_date_sk#1, d_day_name#3] + +(9) NativeSort +Input [2]: [d_date_sk#1, d_day_name#3] +Arguments: [d_date_sk#1 ASC NULLS FIRST], false + +(50) Scan parquet +Output [3]: [ss_sold_date_sk#4, ss_store_sk#5, ss_sales_price#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(11) InputAdapter +Input [3]: [ss_sold_date_sk#4, ss_store_sk#5, ss_sales_price#6] +Arguments: [#4, #5, #6] + +(12) NativeFilter +Input [3]: [#4#4, #5#5, #6#6] +Condition : (isnotnull(ss_sold_date_sk#4) AND isnotnull(ss_store_sk#5)) + +(13) NativeShuffleExchange +Input [3]: [#4#4, #5#5, #6#6] +Arguments: hashpartitioning(ss_sold_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [3]: [#4#4, #5#5, #6#6] +Arguments: X + +(15) AQEShuffleRead +Input [3]: [#4#4, #5#5, #6#6] +Arguments: coalesced + +(16) InputAdapter +Input [3]: [#4#4, #5#5, #6#6] + +(17) NativeSort +Input [3]: [#4#4, #5#5, #6#6] +Arguments: [ss_sold_date_sk#4 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [d_date_sk#1] +Right keys [1]: [ss_sold_date_sk#4] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [3]: [d_day_name#3, ss_store_sk#5, ss_sales_price#6] +Input [5]: [d_date_sk#1, d_day_name#3, #4#4, #5#5, #6#6] + +(20) NativeShuffleExchange +Input [3]: [d_day_name#3, ss_store_sk#5, ss_sales_price#6] +Arguments: hashpartitioning(ss_store_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [3]: [d_day_name#3, ss_store_sk#5, ss_sales_price#6] +Arguments: X + +(22) AQEShuffleRead +Input [3]: [d_day_name#3, ss_store_sk#5, ss_sales_price#6] +Arguments: coalesced + +(23) InputAdapter +Input [3]: [d_day_name#3, ss_store_sk#5, ss_sales_price#6] + +(24) NativeSort +Input [3]: [d_day_name#3, ss_store_sk#5, ss_sales_price#6] +Arguments: [ss_store_sk#5 ASC NULLS FIRST], false + +(58) Scan parquet +Output [4]: [s_store_sk#7, s_store_id#8, s_store_name#9, s_gmt_offset#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_gmt_offset), EqualTo(s_gmt_offset,-5.00), IsNotNull(s_store_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [4]: [s_store_sk#7, s_store_id#8, s_store_name#9, s_gmt_offset#10] +Arguments: [#7, #8, #9, #10] + +(27) NativeFilter +Input [4]: [#7#7, #8#8, #9#9, #10#10] +Condition : ((isnotnull(s_gmt_offset#10) AND (s_gmt_offset#10 = -5.00)) AND isnotnull(s_store_sk#7)) + +(28) NativeProject +Output [3]: [s_store_sk#7, s_store_id#8, s_store_name#9] +Input [4]: [#7#7, #8#8, #9#9, #10#10] + +(29) NativeShuffleExchange +Input [3]: [s_store_sk#7, s_store_id#8, s_store_name#9] +Arguments: hashpartitioning(s_store_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(30) ShuffleQueryStage +Output [3]: [s_store_sk#7, s_store_id#8, s_store_name#9] +Arguments: X + +(31) AQEShuffleRead +Input [3]: [s_store_sk#7, s_store_id#8, s_store_name#9] +Arguments: coalesced + +(32) InputAdapter +Input [3]: [s_store_sk#7, s_store_id#8, s_store_name#9] + +(33) NativeSort +Input [3]: [s_store_sk#7, s_store_id#8, s_store_name#9] +Arguments: [s_store_sk#7 ASC NULLS FIRST], false + +(34) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#5] +Right keys [1]: [s_store_sk#7] +Join type: Inner +Join condition: None + +(35) NativeProject +Output [4]: [d_day_name#3, ss_sales_price#6, s_store_id#8, s_store_name#9] +Input [6]: [d_day_name#3, ss_store_sk#5, ss_sales_price#6, s_store_sk#7, s_store_id#8, s_store_name#9] + +(36) NativeProject +Output [9]: [s_store_name#9 AS s_store_name#9, s_store_id#8 AS s_store_id#8, UnscaledValue(CASE WHEN (d_day_name#3 = Sunday) THEN ss_sales_price#6 END) AS _c2#11, UnscaledValue(CASE WHEN (d_day_name#3 = Monday) THEN ss_sales_price#6 END) AS _c3#12, UnscaledValue(CASE WHEN (d_day_name#3 = Tuesday) THEN ss_sales_price#6 END) AS _c4#13, UnscaledValue(CASE WHEN (d_day_name#3 = Wednesday) THEN ss_sales_price#6 END) AS _c5#14, UnscaledValue(CASE WHEN (d_day_name#3 = Thursday) THEN ss_sales_price#6 END) AS _c6#15, UnscaledValue(CASE WHEN (d_day_name#3 = Friday) THEN ss_sales_price#6 END) AS _c7#16, UnscaledValue(CASE WHEN (d_day_name#3 = Saturday) THEN ss_sales_price#6 END) AS _c8#17] +Input [4]: [d_day_name#3, ss_sales_price#6, s_store_id#8, s_store_name#9] + +(37) NativeHashAggregate +Input [9]: [s_store_name#9, s_store_id#8, _c2#11, _c3#12, _c4#13, _c5#14, _c6#15, _c7#16, _c8#17] +Keys [2]: [s_store_name#9, s_store_id#8] +Functions [7]: [partial_sum(_c2#11), partial_sum(_c3#12), partial_sum(_c4#13), partial_sum(_c5#14), partial_sum(_c6#15), partial_sum(_c7#16), partial_sum(_c8#17)] +Aggregate Attributes [7]: [sum#18, sum#19, sum#20, sum#21, sum#22, sum#23, sum#24] +Results [3]: [s_store_name#9, s_store_id#8, #25#25] + +(38) NativeShuffleExchange +Input [3]: [s_store_name#9, s_store_id#8, #25#25] +Arguments: hashpartitioning(s_store_name#9, s_store_id#8, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(39) ShuffleQueryStage +Output [3]: [s_store_name#9, s_store_id#8, #25#25] +Arguments: X + +(40) AQEShuffleRead +Input [3]: [s_store_name#9, s_store_id#8, #25#25] +Arguments: coalesced + +(41) InputAdapter +Input [3]: [s_store_name#9, s_store_id#8, #25#25] + +(42) NativeHashAggregate +Input [3]: [s_store_name#9, s_store_id#8, #25#25] +Keys [2]: [s_store_name#9, s_store_id#8] +Functions [7]: [sum(UnscaledValue(CASE WHEN (d_day_name#3 = Sunday) THEN ss_sales_price#6 END)), sum(UnscaledValue(CASE WHEN (d_day_name#3 = Monday) THEN ss_sales_price#6 END)), sum(UnscaledValue(CASE WHEN (d_day_name#3 = Tuesday) THEN ss_sales_price#6 END)), sum(UnscaledValue(CASE WHEN (d_day_name#3 = Wednesday) THEN ss_sales_price#6 END)), sum(UnscaledValue(CASE WHEN (d_day_name#3 = Thursday) THEN ss_sales_price#6 END)), sum(UnscaledValue(CASE WHEN (d_day_name#3 = Friday) THEN ss_sales_price#6 END)), sum(UnscaledValue(CASE WHEN (d_day_name#3 = Saturday) THEN ss_sales_price#6 END))] +Aggregate Attributes [7]: [sum(UnscaledValue(CASE WHEN (d_day_name#3 = Sunday) THEN ss_sales_price#6 END))#26, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Monday) THEN ss_sales_price#6 END))#27, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Tuesday) THEN ss_sales_price#6 END))#28, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Wednesday) THEN ss_sales_price#6 END))#29, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Thursday) THEN ss_sales_price#6 END))#30, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Friday) THEN ss_sales_price#6 END))#31, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Saturday) THEN ss_sales_price#6 END))#32] +Results [9]: [s_store_name#9, s_store_id#8, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Sunday) THEN ss_sales_price#6 END))#26, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Monday) THEN ss_sales_price#6 END))#27, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Tuesday) THEN ss_sales_price#6 END))#28, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Wednesday) THEN ss_sales_price#6 END))#29, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Thursday) THEN ss_sales_price#6 END))#30, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Friday) THEN ss_sales_price#6 END))#31, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Saturday) THEN ss_sales_price#6 END))#32] + +(43) NativeProject +Output [9]: [s_store_name#9, s_store_id#8, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#3 = Sunday) THEN ss_sales_price#6 END))#26,17,2) AS sun_sales#33, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#3 = Monday) THEN ss_sales_price#6 END))#27,17,2) AS mon_sales#34, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#3 = Tuesday) THEN ss_sales_price#6 END))#28,17,2) AS tue_sales#35, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#3 = Wednesday) THEN ss_sales_price#6 END))#29,17,2) AS wed_sales#36, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#3 = Thursday) THEN ss_sales_price#6 END))#30,17,2) AS thu_sales#37, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#3 = Friday) THEN ss_sales_price#6 END))#31,17,2) AS fri_sales#38, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#3 = Saturday) THEN ss_sales_price#6 END))#32,17,2) AS sat_sales#39] +Input [9]: [s_store_name#9, s_store_id#8, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Sunday) THEN ss_sales_price#6 END))#26, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Monday) THEN ss_sales_price#6 END))#27, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Tuesday) THEN ss_sales_price#6 END))#28, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Wednesday) THEN ss_sales_price#6 END))#29, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Thursday) THEN ss_sales_price#6 END))#30, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Friday) THEN ss_sales_price#6 END))#31, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Saturday) THEN ss_sales_price#6 END))#32] + +(44) NativeTakeOrdered +Input [9]: [s_store_name#9, s_store_id#8, sun_sales#33, mon_sales#34, tue_sales#35, wed_sales#36, thu_sales#37, fri_sales#38, sat_sales#39] +Arguments: X, [s_store_name#9 ASC NULLS FIRST, s_store_id#8 ASC NULLS FIRST, sun_sales#33 ASC NULLS FIRST, mon_sales#34 ASC NULLS FIRST, tue_sales#35 ASC NULLS FIRST, wed_sales#36 ASC NULLS FIRST, thu_sales#37 ASC NULLS FIRST, fri_sales#38 ASC NULLS FIRST, sat_sales#39 ASC NULLS FIRST] + +(45) Scan parquet +Output [3]: [d_date_sk#1, d_year#2, d_day_name#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(46) Filter +Input [3]: [d_date_sk#1, d_year#2, d_day_name#3] +Condition : ((isnotnull(d_year#2) AND (d_year#2 = 2000)) AND isnotnull(d_date_sk#1)) + +(47) Project +Output [2]: [d_date_sk#1, d_day_name#3] +Input [3]: [d_date_sk#1, d_year#2, d_day_name#3] + +(48) Exchange +Input [2]: [d_date_sk#1, d_day_name#3] +Arguments: hashpartitioning(d_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(49) Sort +Input [2]: [d_date_sk#1, d_day_name#3] +Arguments: [d_date_sk#1 ASC NULLS FIRST], false, 0 + +(50) Scan parquet +Output [3]: [ss_sold_date_sk#4, ss_store_sk#5, ss_sales_price#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(51) Filter +Input [3]: [ss_sold_date_sk#4, ss_store_sk#5, ss_sales_price#6] +Condition : (isnotnull(ss_sold_date_sk#4) AND isnotnull(ss_store_sk#5)) + +(52) Exchange +Input [3]: [ss_sold_date_sk#4, ss_store_sk#5, ss_sales_price#6] +Arguments: hashpartitioning(ss_sold_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(53) Sort +Input [3]: [ss_sold_date_sk#4, ss_store_sk#5, ss_sales_price#6] +Arguments: [ss_sold_date_sk#4 ASC NULLS FIRST], false, 0 + +(54) SortMergeJoin +Left keys [1]: [d_date_sk#1] +Right keys [1]: [ss_sold_date_sk#4] +Join type: Inner +Join condition: None + +(55) Project +Output [3]: [d_day_name#3, ss_store_sk#5, ss_sales_price#6] +Input [5]: [d_date_sk#1, d_day_name#3, ss_sold_date_sk#4, ss_store_sk#5, ss_sales_price#6] + +(56) Exchange +Input [3]: [d_day_name#3, ss_store_sk#5, ss_sales_price#6] +Arguments: hashpartitioning(ss_store_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(57) Sort +Input [3]: [d_day_name#3, ss_store_sk#5, ss_sales_price#6] +Arguments: [ss_store_sk#5 ASC NULLS FIRST], false, 0 + +(58) Scan parquet +Output [4]: [s_store_sk#7, s_store_id#8, s_store_name#9, s_gmt_offset#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_gmt_offset), EqualTo(s_gmt_offset,-5.00), IsNotNull(s_store_sk)] +ReadSchema: struct + +(59) Filter +Input [4]: [s_store_sk#7, s_store_id#8, s_store_name#9, s_gmt_offset#10] +Condition : ((isnotnull(s_gmt_offset#10) AND (s_gmt_offset#10 = -5.00)) AND isnotnull(s_store_sk#7)) + +(60) Project +Output [3]: [s_store_sk#7, s_store_id#8, s_store_name#9] +Input [4]: [s_store_sk#7, s_store_id#8, s_store_name#9, s_gmt_offset#10] + +(61) Exchange +Input [3]: [s_store_sk#7, s_store_id#8, s_store_name#9] +Arguments: hashpartitioning(s_store_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(62) Sort +Input [3]: [s_store_sk#7, s_store_id#8, s_store_name#9] +Arguments: [s_store_sk#7 ASC NULLS FIRST], false, 0 + +(63) SortMergeJoin +Left keys [1]: [ss_store_sk#5] +Right keys [1]: [s_store_sk#7] +Join type: Inner +Join condition: None + +(64) Project +Output [4]: [d_day_name#3, ss_sales_price#6, s_store_id#8, s_store_name#9] +Input [6]: [d_day_name#3, ss_store_sk#5, ss_sales_price#6, s_store_sk#7, s_store_id#8, s_store_name#9] + +(65) HashAggregate +Input [4]: [d_day_name#3, ss_sales_price#6, s_store_id#8, s_store_name#9] +Keys [2]: [s_store_name#9, s_store_id#8] +Functions [7]: [partial_sum(UnscaledValue(CASE WHEN (d_day_name#3 = Sunday) THEN ss_sales_price#6 END)), partial_sum(UnscaledValue(CASE WHEN (d_day_name#3 = Monday) THEN ss_sales_price#6 END)), partial_sum(UnscaledValue(CASE WHEN (d_day_name#3 = Tuesday) THEN ss_sales_price#6 END)), partial_sum(UnscaledValue(CASE WHEN (d_day_name#3 = Wednesday) THEN ss_sales_price#6 END)), partial_sum(UnscaledValue(CASE WHEN (d_day_name#3 = Thursday) THEN ss_sales_price#6 END)), partial_sum(UnscaledValue(CASE WHEN (d_day_name#3 = Friday) THEN ss_sales_price#6 END)), partial_sum(UnscaledValue(CASE WHEN (d_day_name#3 = Saturday) THEN ss_sales_price#6 END))] +Aggregate Attributes [7]: [sum#18, sum#19, sum#20, sum#21, sum#22, sum#23, sum#24] +Results [9]: [s_store_name#9, s_store_id#8, sum#40, sum#41, sum#42, sum#43, sum#44, sum#45, sum#46] + +(66) Exchange +Input [9]: [s_store_name#9, s_store_id#8, sum#40, sum#41, sum#42, sum#43, sum#44, sum#45, sum#46] +Arguments: hashpartitioning(s_store_name#9, s_store_id#8, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(67) HashAggregate +Input [9]: [s_store_name#9, s_store_id#8, sum#40, sum#41, sum#42, sum#43, sum#44, sum#45, sum#46] +Keys [2]: [s_store_name#9, s_store_id#8] +Functions [7]: [sum(UnscaledValue(CASE WHEN (d_day_name#3 = Sunday) THEN ss_sales_price#6 END)), sum(UnscaledValue(CASE WHEN (d_day_name#3 = Monday) THEN ss_sales_price#6 END)), sum(UnscaledValue(CASE WHEN (d_day_name#3 = Tuesday) THEN ss_sales_price#6 END)), sum(UnscaledValue(CASE WHEN (d_day_name#3 = Wednesday) THEN ss_sales_price#6 END)), sum(UnscaledValue(CASE WHEN (d_day_name#3 = Thursday) THEN ss_sales_price#6 END)), sum(UnscaledValue(CASE WHEN (d_day_name#3 = Friday) THEN ss_sales_price#6 END)), sum(UnscaledValue(CASE WHEN (d_day_name#3 = Saturday) THEN ss_sales_price#6 END))] +Aggregate Attributes [7]: [sum(UnscaledValue(CASE WHEN (d_day_name#3 = Sunday) THEN ss_sales_price#6 END))#26, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Monday) THEN ss_sales_price#6 END))#27, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Tuesday) THEN ss_sales_price#6 END))#28, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Wednesday) THEN ss_sales_price#6 END))#29, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Thursday) THEN ss_sales_price#6 END))#30, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Friday) THEN ss_sales_price#6 END))#31, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Saturday) THEN ss_sales_price#6 END))#32] +Results [9]: [s_store_name#9, s_store_id#8, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#3 = Sunday) THEN ss_sales_price#6 END))#26,17,2) AS sun_sales#33, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#3 = Monday) THEN ss_sales_price#6 END))#27,17,2) AS mon_sales#34, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#3 = Tuesday) THEN ss_sales_price#6 END))#28,17,2) AS tue_sales#35, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#3 = Wednesday) THEN ss_sales_price#6 END))#29,17,2) AS wed_sales#36, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#3 = Thursday) THEN ss_sales_price#6 END))#30,17,2) AS thu_sales#37, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#3 = Friday) THEN ss_sales_price#6 END))#31,17,2) AS fri_sales#38, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#3 = Saturday) THEN ss_sales_price#6 END))#32,17,2) AS sat_sales#39] + +(68) TakeOrderedAndProject +Input [9]: [s_store_name#9, s_store_id#8, sun_sales#33, mon_sales#34, tue_sales#35, wed_sales#36, thu_sales#37, fri_sales#38, sat_sales#39] +Arguments: X, [s_store_name#9 ASC NULLS FIRST, s_store_id#8 ASC NULLS FIRST, sun_sales#33 ASC NULLS FIRST, mon_sales#34 ASC NULLS FIRST, tue_sales#35 ASC NULLS FIRST, wed_sales#36 ASC NULLS FIRST, thu_sales#37 ASC NULLS FIRST, fri_sales#38 ASC NULLS FIRST, sat_sales#39 ASC NULLS FIRST], [s_store_name#9, s_store_id#8, sun_sales#33, mon_sales#34, tue_sales#35, wed_sales#36, thu_sales#37, fri_sales#38, sat_sales#39] + +(69) AdaptiveSparkPlan +Output [9]: [s_store_name#9, s_store_id#8, sun_sales#33, mon_sales#34, tue_sales#35, wed_sales#36, thu_sales#37, fri_sales#38, sat_sales#39] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q44.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q44.txt new file mode 100644 index 000000000..867954f82 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q44.txt @@ -0,0 +1,790 @@ +== Physical Plan == +AdaptiveSparkPlan (124) ++- == Final Plan == + NativeTakeOrdered (72) + +- NativeProject (71) + +- NativeSortMergeJoin Inner (70) + :- NativeSort (63) + : +- InputAdapter (62) + : +- AQEShuffleRead (61) + : +- ShuffleQueryStage (60), Statistics(X) + : +- NativeShuffleExchange (59) + : +- NativeProject (58) + : +- NativeSortMergeJoin Inner (57) + : :- NativeSort (48) + : : +- InputAdapter (47) + : : +- AQEShuffleRead (46) + : : +- ShuffleQueryStage (45), Statistics(X) + : : +- NativeShuffleExchange (44) + : : +- NativeProject (43) + : : +- NativeSortMergeJoin Inner (42) + : : :- NativeSort (23) + : : : +- NativeProject (22) + : : : +- NativeFilter (21) + : : : +- NativeWindow (20) + : : : +- NativeWindowGroupLimit (19) + : : : +- NativeSort (18) + : : : +- ShuffleQueryStage (17), Statistics(X) + : : : +- NativeShuffleExchange (16) + : : : +- NativeWindowGroupLimit (15) + : : : +- NativeSort (14) + : : : +- NativeFilter (13) + : : : +- NativeProject (12) + : : : +- NativeHashAggregate (11) + : : : +- InputAdapter (10) + : : : +- AQEShuffleRead (9) + : : : +- ShuffleQueryStage (8), Statistics(X) + : : : +- NativeShuffleExchange (7) + : : : +- NativeHashAggregate (6) + : : : +- NativeProject (5) + : : : +- NativeProject (4) + : : : +- NativeFilter (3) + : : : +- InputAdapter (2) + : : : +- NativeParquetScan (1) + : : +- NativeSort (41) + : : +- NativeProject (40) + : : +- NativeFilter (39) + : : +- NativeWindow (38) + : : +- NativeWindowGroupLimit (37) + : : +- NativeSort (36) + : : +- ShuffleQueryStage (35), Statistics(X) + : : +- NativeShuffleExchange (34) + : : +- NativeWindowGroupLimit (33) + : : +- NativeSort (32) + : : +- NativeFilter (31) + : : +- NativeProject (30) + : : +- NativeHashAggregate (29) + : : +- InputAdapter (28) + : : +- InputAdapter (27) + : : +- AQEShuffleRead (26) + : : +- ShuffleQueryStage (25), Statistics(X) + : : +- ReusedExchange (24) + : +- NativeSort (56) + : +- InputAdapter (55) + : +- AQEShuffleRead (54) + : +- ShuffleQueryStage (53), Statistics(X) + : +- NativeShuffleExchange (52) + : +- NativeFilter (51) + : +- InputAdapter (50) + : +- NativeParquetScan (49) + +- NativeSort (69) + +- InputAdapter (68) + +- InputAdapter (67) + +- AQEShuffleRead (66) + +- ShuffleQueryStage (65), Statistics(X) + +- ReusedExchange (64) ++- == Initial Plan == + TakeOrderedAndProject (123) + +- Project (122) + +- SortMergeJoin Inner (121) + :- Sort (116) + : +- Exchange (115) + : +- Project (114) + : +- SortMergeJoin Inner (113) + : :- Sort (108) + : : +- Exchange (107) + : : +- Project (106) + : : +- SortMergeJoin Inner (105) + : : :- Sort (88) + : : : +- Project (87) + : : : +- Filter (86) + : : : +- Window (85) + : : : +- WindowGroupLimit (84) + : : : +- Sort (83) + : : : +- Exchange (82) + : : : +- WindowGroupLimit (81) + : : : +- Sort (80) + : : : +- Filter (79) + : : : +- HashAggregate (78) + : : : +- Exchange (77) + : : : +- HashAggregate (76) + : : : +- Project (75) + : : : +- Filter (74) + : : : +- Scan parquet (73) + : : +- Sort (104) + : : +- Project (103) + : : +- Filter (102) + : : +- Window (101) + : : +- WindowGroupLimit (100) + : : +- Sort (99) + : : +- Exchange (98) + : : +- WindowGroupLimit (97) + : : +- Sort (96) + : : +- Filter (95) + : : +- HashAggregate (94) + : : +- Exchange (93) + : : +- HashAggregate (92) + : : +- Project (91) + : : +- Filter (90) + : : +- Scan parquet (89) + : +- Sort (112) + : +- Exchange (111) + : +- Filter (110) + : +- Scan parquet (109) + +- Sort (120) + +- Exchange (119) + +- Filter (118) + +- Scan parquet (117) + + +(73) Scan parquet +Output [3]: [ss_item_sk#1, ss_store_sk#2, ss_net_profit#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_store_sk), EqualTo(ss_store_sk,4)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [ss_item_sk#1, ss_store_sk#2, ss_net_profit#3] +Arguments: [#1, #2, #3] + +(3) NativeFilter +Input [3]: [#1#1, #2#2, #3#3] +Condition : (isnotnull(ss_store_sk#2) AND (ss_store_sk#2 = 4)) + +(4) NativeProject +Output [2]: [ss_item_sk#1, ss_net_profit#3] +Input [3]: [#1#1, #2#2, #3#3] + +(5) NativeProject +Output [2]: [ss_item_sk#1 AS ss_item_sk#1, UnscaledValue(ss_net_profit#3) AS _c1#4] +Input [2]: [ss_item_sk#1, ss_net_profit#3] + +(6) NativeHashAggregate +Input [2]: [ss_item_sk#1, _c1#4] +Keys [1]: [ss_item_sk#1] +Functions [1]: [partial_avg(_c1#4)] +Aggregate Attributes [2]: [sum#5, count#6] +Results [2]: [ss_item_sk#1, #7#7] + +(7) NativeShuffleExchange +Input [2]: [ss_item_sk#1, #7#7] +Arguments: hashpartitioning(ss_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(8) ShuffleQueryStage +Output [2]: [ss_item_sk#1, #7#7] +Arguments: X + +(9) AQEShuffleRead +Input [2]: [ss_item_sk#1, #7#7] +Arguments: coalesced + +(10) InputAdapter +Input [2]: [ss_item_sk#1, #7#7] + +(11) NativeHashAggregate +Input [2]: [ss_item_sk#1, #7#7] +Keys [1]: [ss_item_sk#1] +Functions [1]: [avg(UnscaledValue(ss_net_profit#3))] +Aggregate Attributes [1]: [avg(UnscaledValue(ss_net_profit#3))#8] +Results [2]: [ss_item_sk#1, avg(UnscaledValue(ss_net_profit#3))#8] + +(12) NativeProject +Output [2]: [ss_item_sk#1 AS item_sk#9, cast((avg(UnscaledValue(ss_net_profit#3))#8 / 100.0) as decimal(11,6)) AS rank_col#10] +Input [2]: [ss_item_sk#1, avg(UnscaledValue(ss_net_profit#3))#8] + +(13) NativeFilter +Input [2]: [item_sk#9, rank_col#10] +Condition : (isnotnull(rank_col#10) AND (cast(rank_col#10 as decimal(13,7)) > (0.9 * Subquery subquery#11, [id=#12]))) + +(14) NativeSort +Input [2]: [item_sk#9, rank_col#10] +Arguments: [rank_col#10 ASC NULLS FIRST], false + +(15) NativeWindowGroupLimit +Input [2]: [item_sk#9, rank_col#10] +Arguments: [rank(rank_col#10) windowspecdefinition(rank_col#10 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS __window_expression__#13], [rank_col#10 ASC NULLS FIRST], 10 + +(16) NativeShuffleExchange +Input [2]: [item_sk#9, rank_col#10] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=2] + +(17) ShuffleQueryStage +Output [2]: [item_sk#9, rank_col#10] +Arguments: X + +(18) NativeSort +Input [2]: [item_sk#9, rank_col#10] +Arguments: [rank_col#10 ASC NULLS FIRST], false + +(19) NativeWindowGroupLimit +Input [2]: [item_sk#9, rank_col#10] +Arguments: [rank(rank_col#10) windowspecdefinition(rank_col#10 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS __window_expression__#14], [rank_col#10 ASC NULLS FIRST], 10 + +(20) NativeWindow +Input [2]: [item_sk#9, rank_col#10] +Arguments: [rank(rank_col#10) windowspecdefinition(rank_col#10 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rnk#15], [rank_col#10 ASC NULLS FIRST] + +(21) NativeFilter +Input [3]: [item_sk#9, rank_col#10, rnk#15] +Condition : ((rnk#15 < 11) AND isnotnull(item_sk#9)) + +(22) NativeProject +Output [2]: [item_sk#9, rnk#15] +Input [3]: [item_sk#9, rank_col#10, rnk#15] + +(23) NativeSort +Input [2]: [item_sk#9, rnk#15] +Arguments: [rnk#15 ASC NULLS FIRST], false + +(24) ReusedExchange [Reuses operator id: 7] +Output [3]: [ss_item_sk#16, sum#17, count#18] + +(25) ShuffleQueryStage +Output [3]: [ss_item_sk#16, sum#17, count#18] +Arguments: X + +(26) AQEShuffleRead +Input [3]: [ss_item_sk#16, sum#17, count#18] +Arguments: coalesced + +(27) InputAdapter +Input [3]: [ss_item_sk#16, sum#17, count#18] +Arguments: [#16, #17, #19] + +(28) InputAdapter +Input [3]: [#16#16, #17#17, #19#18] + +(29) NativeHashAggregate +Input [3]: [#16#16, #17#17, #19#18] +Keys [1]: [ss_item_sk#16] +Functions [1]: [avg(UnscaledValue(ss_net_profit#20))] +Aggregate Attributes [1]: [avg(UnscaledValue(ss_net_profit#20))#21] +Results [2]: [ss_item_sk#16, avg(UnscaledValue(ss_net_profit#20))#21] + +(30) NativeProject +Output [2]: [ss_item_sk#16 AS item_sk#22, cast((avg(UnscaledValue(ss_net_profit#20))#21 / 100.0) as decimal(11,6)) AS rank_col#23] +Input [2]: [ss_item_sk#16, avg(UnscaledValue(ss_net_profit#20))#21] + +(31) NativeFilter +Input [2]: [item_sk#22, rank_col#23] +Condition : (isnotnull(rank_col#23) AND (cast(rank_col#23 as decimal(13,7)) > (0.9 * ReusedSubquery Subquery subquery#11, [id=#12]))) + +(32) NativeSort +Input [2]: [item_sk#22, rank_col#23] +Arguments: [rank_col#23 DESC NULLS LAST], false + +(33) NativeWindowGroupLimit +Input [2]: [item_sk#22, rank_col#23] +Arguments: [rank(rank_col#23) windowspecdefinition(rank_col#23 DESC NULLS LAST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS __window_expression__#24], [rank_col#23 DESC NULLS LAST], 10 + +(34) NativeShuffleExchange +Input [2]: [item_sk#22, rank_col#23] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=3] + +(35) ShuffleQueryStage +Output [2]: [item_sk#22, rank_col#23] +Arguments: X + +(36) NativeSort +Input [2]: [item_sk#22, rank_col#23] +Arguments: [rank_col#23 DESC NULLS LAST], false + +(37) NativeWindowGroupLimit +Input [2]: [item_sk#22, rank_col#23] +Arguments: [rank(rank_col#23) windowspecdefinition(rank_col#23 DESC NULLS LAST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS __window_expression__#25], [rank_col#23 DESC NULLS LAST], 10 + +(38) NativeWindow +Input [2]: [item_sk#22, rank_col#23] +Arguments: [rank(rank_col#23) windowspecdefinition(rank_col#23 DESC NULLS LAST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rnk#26], [rank_col#23 DESC NULLS LAST] + +(39) NativeFilter +Input [3]: [item_sk#22, rank_col#23, rnk#26] +Condition : ((rnk#26 < 11) AND isnotnull(item_sk#22)) + +(40) NativeProject +Output [2]: [item_sk#22, rnk#26] +Input [3]: [item_sk#22, rank_col#23, rnk#26] + +(41) NativeSort +Input [2]: [item_sk#22, rnk#26] +Arguments: [rnk#26 ASC NULLS FIRST], false + +(42) NativeSortMergeJoin +Left keys [1]: [rnk#15] +Right keys [1]: [rnk#26] +Join type: Inner +Join condition: None + +(43) NativeProject +Output [3]: [item_sk#9, rnk#15, item_sk#22] +Input [4]: [item_sk#9, rnk#15, item_sk#22, rnk#26] + +(44) NativeShuffleExchange +Input [3]: [item_sk#9, rnk#15, item_sk#22] +Arguments: hashpartitioning(item_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(45) ShuffleQueryStage +Output [3]: [item_sk#9, rnk#15, item_sk#22] +Arguments: X + +(46) AQEShuffleRead +Input [3]: [item_sk#9, rnk#15, item_sk#22] +Arguments: coalesced + +(47) InputAdapter +Input [3]: [item_sk#9, rnk#15, item_sk#22] + +(48) NativeSort +Input [3]: [item_sk#9, rnk#15, item_sk#22] +Arguments: [item_sk#9 ASC NULLS FIRST], false + +(109) Scan parquet +Output [2]: [i_item_sk#27, i_product_name#28] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(50) InputAdapter +Input [2]: [i_item_sk#27, i_product_name#28] +Arguments: [#27, #28] + +(51) NativeFilter +Input [2]: [#27#27, #28#28] +Condition : isnotnull(i_item_sk#27) + +(52) NativeShuffleExchange +Input [2]: [#27#27, #28#28] +Arguments: hashpartitioning(i_item_sk#27, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(53) ShuffleQueryStage +Output [2]: [#27#27, #28#28] +Arguments: X + +(54) AQEShuffleRead +Input [2]: [#27#27, #28#28] +Arguments: coalesced + +(55) InputAdapter +Input [2]: [#27#27, #28#28] + +(56) NativeSort +Input [2]: [#27#27, #28#28] +Arguments: [i_item_sk#27 ASC NULLS FIRST], false + +(57) NativeSortMergeJoin +Left keys [1]: [item_sk#9] +Right keys [1]: [i_item_sk#27] +Join type: Inner +Join condition: None + +(58) NativeProject +Output [3]: [rnk#15, item_sk#22, i_product_name#28] +Input [5]: [item_sk#9, rnk#15, item_sk#22, #27#27, #28#28] + +(59) NativeShuffleExchange +Input [3]: [rnk#15, item_sk#22, i_product_name#28] +Arguments: hashpartitioning(item_sk#22, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(60) ShuffleQueryStage +Output [3]: [rnk#15, item_sk#22, i_product_name#28] +Arguments: X + +(61) AQEShuffleRead +Input [3]: [rnk#15, item_sk#22, i_product_name#28] +Arguments: coalesced + +(62) InputAdapter +Input [3]: [rnk#15, item_sk#22, i_product_name#28] + +(63) NativeSort +Input [3]: [rnk#15, item_sk#22, i_product_name#28] +Arguments: [item_sk#22 ASC NULLS FIRST], false + +(64) ReusedExchange [Reuses operator id: 52] +Output [2]: [i_item_sk#29, i_product_name#30] + +(65) ShuffleQueryStage +Output [2]: [i_item_sk#29, i_product_name#30] +Arguments: X + +(66) AQEShuffleRead +Input [2]: [i_item_sk#29, i_product_name#30] +Arguments: coalesced + +(67) InputAdapter +Input [2]: [i_item_sk#29, i_product_name#30] +Arguments: [#29, #30] + +(68) InputAdapter +Input [2]: [#29#29, #30#30] + +(69) NativeSort +Input [2]: [#29#29, #30#30] +Arguments: [i_item_sk#29 ASC NULLS FIRST], false + +(70) NativeSortMergeJoin +Left keys [1]: [item_sk#22] +Right keys [1]: [i_item_sk#29] +Join type: Inner +Join condition: None + +(71) NativeProject +Output [3]: [rnk#15, i_product_name#28 AS best_performing#31, i_product_name#30 AS worst_performing#32] +Input [5]: [rnk#15, item_sk#22, i_product_name#28, #29#29, #30#30] + +(72) NativeTakeOrdered +Input [3]: [rnk#15, best_performing#31, worst_performing#32] +Arguments: X, [rnk#15 ASC NULLS FIRST] + +(73) Scan parquet +Output [3]: [ss_item_sk#1, ss_store_sk#2, ss_net_profit#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_store_sk), EqualTo(ss_store_sk,4)] +ReadSchema: struct + +(74) Filter +Input [3]: [ss_item_sk#1, ss_store_sk#2, ss_net_profit#3] +Condition : (isnotnull(ss_store_sk#2) AND (ss_store_sk#2 = 4)) + +(75) Project +Output [2]: [ss_item_sk#1, ss_net_profit#3] +Input [3]: [ss_item_sk#1, ss_store_sk#2, ss_net_profit#3] + +(76) HashAggregate +Input [2]: [ss_item_sk#1, ss_net_profit#3] +Keys [1]: [ss_item_sk#1] +Functions [1]: [partial_avg(UnscaledValue(ss_net_profit#3))] +Aggregate Attributes [2]: [sum#5, count#6] +Results [3]: [ss_item_sk#1, sum#33, count#34] + +(77) Exchange +Input [3]: [ss_item_sk#1, sum#33, count#34] +Arguments: hashpartitioning(ss_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(78) HashAggregate +Input [3]: [ss_item_sk#1, sum#33, count#34] +Keys [1]: [ss_item_sk#1] +Functions [1]: [avg(UnscaledValue(ss_net_profit#3))] +Aggregate Attributes [1]: [avg(UnscaledValue(ss_net_profit#3))#8] +Results [2]: [ss_item_sk#1 AS item_sk#9, cast((avg(UnscaledValue(ss_net_profit#3))#8 / 100.0) as decimal(11,6)) AS rank_col#10] + +(79) Filter +Input [2]: [item_sk#9, rank_col#10] +Condition : (isnotnull(rank_col#10) AND (cast(rank_col#10 as decimal(13,7)) > (0.9 * Subquery subquery#11, [id=#12]))) + +(80) Sort +Input [2]: [item_sk#9, rank_col#10] +Arguments: [rank_col#10 ASC NULLS FIRST], false, 0 + +(81) WindowGroupLimit +Input [2]: [item_sk#9, rank_col#10] +Arguments: [rank_col#10 ASC NULLS FIRST], rank(rank_col#10), 10, Partial + +(82) Exchange +Input [2]: [item_sk#9, rank_col#10] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=8] + +(83) Sort +Input [2]: [item_sk#9, rank_col#10] +Arguments: [rank_col#10 ASC NULLS FIRST], false, 0 + +(84) WindowGroupLimit +Input [2]: [item_sk#9, rank_col#10] +Arguments: [rank_col#10 ASC NULLS FIRST], rank(rank_col#10), 10, Final + +(85) Window +Input [2]: [item_sk#9, rank_col#10] +Arguments: [rank(rank_col#10) windowspecdefinition(rank_col#10 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rnk#15], [rank_col#10 ASC NULLS FIRST] + +(86) Filter +Input [3]: [item_sk#9, rank_col#10, rnk#15] +Condition : ((rnk#15 < 11) AND isnotnull(item_sk#9)) + +(87) Project +Output [2]: [item_sk#9, rnk#15] +Input [3]: [item_sk#9, rank_col#10, rnk#15] + +(88) Sort +Input [2]: [item_sk#9, rnk#15] +Arguments: [rnk#15 ASC NULLS FIRST], false, 0 + +(89) Scan parquet +Output [3]: [ss_item_sk#16, ss_store_sk#35, ss_net_profit#20] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_store_sk), EqualTo(ss_store_sk,4)] +ReadSchema: struct + +(90) Filter +Input [3]: [ss_item_sk#16, ss_store_sk#35, ss_net_profit#20] +Condition : (isnotnull(ss_store_sk#35) AND (ss_store_sk#35 = 4)) + +(91) Project +Output [2]: [ss_item_sk#16, ss_net_profit#20] +Input [3]: [ss_item_sk#16, ss_store_sk#35, ss_net_profit#20] + +(92) HashAggregate +Input [2]: [ss_item_sk#16, ss_net_profit#20] +Keys [1]: [ss_item_sk#16] +Functions [1]: [partial_avg(UnscaledValue(ss_net_profit#20))] +Aggregate Attributes [2]: [sum#36, count#37] +Results [3]: [ss_item_sk#16, sum#17, count#18] + +(93) Exchange +Input [3]: [ss_item_sk#16, sum#17, count#18] +Arguments: hashpartitioning(ss_item_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(94) HashAggregate +Input [3]: [ss_item_sk#16, sum#17, count#18] +Keys [1]: [ss_item_sk#16] +Functions [1]: [avg(UnscaledValue(ss_net_profit#20))] +Aggregate Attributes [1]: [avg(UnscaledValue(ss_net_profit#20))#21] +Results [2]: [ss_item_sk#16 AS item_sk#22, cast((avg(UnscaledValue(ss_net_profit#20))#21 / 100.0) as decimal(11,6)) AS rank_col#23] + +(95) Filter +Input [2]: [item_sk#22, rank_col#23] +Condition : (isnotnull(rank_col#23) AND (cast(rank_col#23 as decimal(13,7)) > (0.9 * Subquery subquery#38, [id=#39]))) + +(96) Sort +Input [2]: [item_sk#22, rank_col#23] +Arguments: [rank_col#23 DESC NULLS LAST], false, 0 + +(97) WindowGroupLimit +Input [2]: [item_sk#22, rank_col#23] +Arguments: [rank_col#23 DESC NULLS LAST], rank(rank_col#23), 10, Partial + +(98) Exchange +Input [2]: [item_sk#22, rank_col#23] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=10] + +(99) Sort +Input [2]: [item_sk#22, rank_col#23] +Arguments: [rank_col#23 DESC NULLS LAST], false, 0 + +(100) WindowGroupLimit +Input [2]: [item_sk#22, rank_col#23] +Arguments: [rank_col#23 DESC NULLS LAST], rank(rank_col#23), 10, Final + +(101) Window +Input [2]: [item_sk#22, rank_col#23] +Arguments: [rank(rank_col#23) windowspecdefinition(rank_col#23 DESC NULLS LAST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rnk#26], [rank_col#23 DESC NULLS LAST] + +(102) Filter +Input [3]: [item_sk#22, rank_col#23, rnk#26] +Condition : ((rnk#26 < 11) AND isnotnull(item_sk#22)) + +(103) Project +Output [2]: [item_sk#22, rnk#26] +Input [3]: [item_sk#22, rank_col#23, rnk#26] + +(104) Sort +Input [2]: [item_sk#22, rnk#26] +Arguments: [rnk#26 ASC NULLS FIRST], false, 0 + +(105) SortMergeJoin +Left keys [1]: [rnk#15] +Right keys [1]: [rnk#26] +Join type: Inner +Join condition: None + +(106) Project +Output [3]: [item_sk#9, rnk#15, item_sk#22] +Input [4]: [item_sk#9, rnk#15, item_sk#22, rnk#26] + +(107) Exchange +Input [3]: [item_sk#9, rnk#15, item_sk#22] +Arguments: hashpartitioning(item_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(108) Sort +Input [3]: [item_sk#9, rnk#15, item_sk#22] +Arguments: [item_sk#9 ASC NULLS FIRST], false, 0 + +(109) Scan parquet +Output [2]: [i_item_sk#27, i_product_name#28] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(110) Filter +Input [2]: [i_item_sk#27, i_product_name#28] +Condition : isnotnull(i_item_sk#27) + +(111) Exchange +Input [2]: [i_item_sk#27, i_product_name#28] +Arguments: hashpartitioning(i_item_sk#27, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(112) Sort +Input [2]: [i_item_sk#27, i_product_name#28] +Arguments: [i_item_sk#27 ASC NULLS FIRST], false, 0 + +(113) SortMergeJoin +Left keys [1]: [item_sk#9] +Right keys [1]: [i_item_sk#27] +Join type: Inner +Join condition: None + +(114) Project +Output [3]: [rnk#15, item_sk#22, i_product_name#28] +Input [5]: [item_sk#9, rnk#15, item_sk#22, i_item_sk#27, i_product_name#28] + +(115) Exchange +Input [3]: [rnk#15, item_sk#22, i_product_name#28] +Arguments: hashpartitioning(item_sk#22, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(116) Sort +Input [3]: [rnk#15, item_sk#22, i_product_name#28] +Arguments: [item_sk#22 ASC NULLS FIRST], false, 0 + +(117) Scan parquet +Output [2]: [i_item_sk#29, i_product_name#30] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(118) Filter +Input [2]: [i_item_sk#29, i_product_name#30] +Condition : isnotnull(i_item_sk#29) + +(119) Exchange +Input [2]: [i_item_sk#29, i_product_name#30] +Arguments: hashpartitioning(i_item_sk#29, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(120) Sort +Input [2]: [i_item_sk#29, i_product_name#30] +Arguments: [i_item_sk#29 ASC NULLS FIRST], false, 0 + +(121) SortMergeJoin +Left keys [1]: [item_sk#22] +Right keys [1]: [i_item_sk#29] +Join type: Inner +Join condition: None + +(122) Project +Output [3]: [rnk#15, i_product_name#28 AS best_performing#31, i_product_name#30 AS worst_performing#32] +Input [5]: [rnk#15, item_sk#22, i_product_name#28, i_item_sk#29, i_product_name#30] + +(123) TakeOrderedAndProject +Input [3]: [rnk#15, best_performing#31, worst_performing#32] +Arguments: X, [rnk#15 ASC NULLS FIRST], [rnk#15, best_performing#31, worst_performing#32] + +(124) AdaptiveSparkPlan +Output [3]: [rnk#15, best_performing#31, worst_performing#32] +Arguments: isFinalPlan=true + +===== Subqueries ===== + +Subquery:1 Hosting operator id = 13 Hosting Expression = Subquery subquery#11, [id=#12] +AdaptiveSparkPlan (143) ++- == Final Plan == + NativeProject (136) + +- NativeHashAggregate (135) + +- InputAdapter (134) + +- AQEShuffleRead (133) + +- ShuffleQueryStage (132), Statistics(X) + +- NativeShuffleExchange (131) + +- NativeHashAggregate (130) + +- NativeProject (129) + +- NativeProject (128) + +- NativeFilter (127) + +- InputAdapter (126) + +- NativeParquetScan (125) ++- == Initial Plan == + HashAggregate (142) + +- Exchange (141) + +- HashAggregate (140) + +- Project (139) + +- Filter (138) + +- Scan parquet (137) + + +(137) Scan parquet +Output [3]: [ss_addr_sk#40, ss_store_sk#41, ss_net_profit#42] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_store_sk), EqualTo(ss_store_sk,4), IsNull(ss_addr_sk)] +ReadSchema: struct + +(126) InputAdapter +Input [3]: [ss_addr_sk#40, ss_store_sk#41, ss_net_profit#42] +Arguments: [#40, #41, #42] + +(127) NativeFilter +Input [3]: [#40#40, #41#41, #42#42] +Condition : ((isnotnull(ss_store_sk#41) AND (ss_store_sk#41 = 4)) AND isnull(ss_addr_sk#40)) + +(128) NativeProject +Output [2]: [ss_store_sk#41, ss_net_profit#42] +Input [3]: [#40#40, #41#41, #42#42] + +(129) NativeProject +Output [2]: [ss_store_sk#41 AS ss_store_sk#41, UnscaledValue(ss_net_profit#42) AS _c1#43] +Input [2]: [ss_store_sk#41, ss_net_profit#42] + +(130) NativeHashAggregate +Input [2]: [ss_store_sk#41, _c1#43] +Keys [1]: [ss_store_sk#41] +Functions [1]: [partial_avg(_c1#43)] +Aggregate Attributes [2]: [sum#44, count#45] +Results [2]: [ss_store_sk#41, #7#7] + +(131) NativeShuffleExchange +Input [2]: [ss_store_sk#41, #7#7] +Arguments: hashpartitioning(ss_store_sk#41, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(132) ShuffleQueryStage +Output [2]: [ss_store_sk#41, #7#7] +Arguments: X + +(133) AQEShuffleRead +Input [2]: [ss_store_sk#41, #7#7] +Arguments: coalesced + +(134) InputAdapter +Input [2]: [ss_store_sk#41, #7#7] + +(135) NativeHashAggregate +Input [2]: [ss_store_sk#41, #7#7] +Keys [1]: [ss_store_sk#41] +Functions [1]: [avg(UnscaledValue(ss_net_profit#42))] +Aggregate Attributes [1]: [avg(UnscaledValue(ss_net_profit#42))#46] +Results [2]: [ss_store_sk#41, avg(UnscaledValue(ss_net_profit#42))#46] + +(136) NativeProject +Output [1]: [cast((avg(UnscaledValue(ss_net_profit#42))#46 / 100.0) as decimal(11,6)) AS rank_col#47] +Input [2]: [ss_store_sk#41, avg(UnscaledValue(ss_net_profit#42))#46] + +(137) Scan parquet +Output [3]: [ss_addr_sk#40, ss_store_sk#41, ss_net_profit#42] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_store_sk), EqualTo(ss_store_sk,4), IsNull(ss_addr_sk)] +ReadSchema: struct + +(138) Filter +Input [3]: [ss_addr_sk#40, ss_store_sk#41, ss_net_profit#42] +Condition : ((isnotnull(ss_store_sk#41) AND (ss_store_sk#41 = 4)) AND isnull(ss_addr_sk#40)) + +(139) Project +Output [2]: [ss_store_sk#41, ss_net_profit#42] +Input [3]: [ss_addr_sk#40, ss_store_sk#41, ss_net_profit#42] + +(140) HashAggregate +Input [2]: [ss_store_sk#41, ss_net_profit#42] +Keys [1]: [ss_store_sk#41] +Functions [1]: [partial_avg(UnscaledValue(ss_net_profit#42))] +Aggregate Attributes [2]: [sum#44, count#45] +Results [3]: [ss_store_sk#41, sum#48, count#49] + +(141) Exchange +Input [3]: [ss_store_sk#41, sum#48, count#49] +Arguments: hashpartitioning(ss_store_sk#41, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(142) HashAggregate +Input [3]: [ss_store_sk#41, sum#48, count#49] +Keys [1]: [ss_store_sk#41] +Functions [1]: [avg(UnscaledValue(ss_net_profit#42))] +Aggregate Attributes [1]: [avg(UnscaledValue(ss_net_profit#42))#46] +Results [1]: [cast((avg(UnscaledValue(ss_net_profit#42))#46 / 100.0) as decimal(11,6)) AS rank_col#47] + +(143) AdaptiveSparkPlan +Output [1]: [rank_col#47] +Arguments: isFinalPlan=true + +Subquery:2 Hosting operator id = 31 Hosting Expression = ReusedSubquery Subquery subquery#11, [id=#12] + + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q45.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q45.txt new file mode 100644 index 000000000..01ad69726 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q45.txt @@ -0,0 +1,762 @@ +== Physical Plan == +AdaptiveSparkPlan (140) ++- == Final Plan == + NativeTakeOrdered (90) + +- NativeProject (89) + +- NativeHashAggregate (88) + +- InputAdapter (87) + +- AQEShuffleRead (86) + +- ShuffleQueryStage (85), Statistics(X) + +- NativeShuffleExchange (84) + +- NativeHashAggregate (83) + +- NativeProject (82) + +- NativeProject (81) + +- NativeFilter (80) + +- NativeSortMergeJoin ExistenceJoin(exists#1) (79) + :- NativeSort (69) + : +- InputAdapter (68) + : +- AQEShuffleRead (67) + : +- ShuffleQueryStage (66), Statistics(X) + : +- NativeShuffleExchange (65) + : +- NativeProject (64) + : +- NativeSortMergeJoin Inner (63) + : :- NativeSort (54) + : : +- InputAdapter (53) + : : +- AQEShuffleRead (52) + : : +- ShuffleQueryStage (51), Statistics(X) + : : +- NativeShuffleExchange (50) + : : +- NativeProject (49) + : : +- NativeSortMergeJoin Inner (48) + : : :- NativeSort (38) + : : : +- InputAdapter (37) + : : : +- AQEShuffleRead (36) + : : : +- ShuffleQueryStage (35), Statistics(X) + : : : +- NativeShuffleExchange (34) + : : : +- NativeProject (33) + : : : +- NativeSortMergeJoin Inner (32) + : : : :- NativeSort (23) + : : : : +- InputAdapter (22) + : : : : +- AQEShuffleRead (21) + : : : : +- ShuffleQueryStage (20), Statistics(X) + : : : : +- NativeShuffleExchange (19) + : : : : +- NativeProject (18) + : : : : +- NativeSortMergeJoin Inner (17) + : : : : :- NativeSort (8) + : : : : : +- InputAdapter (7) + : : : : : +- AQEShuffleRead (6) + : : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : : +- NativeShuffleExchange (4) + : : : : : +- NativeFilter (3) + : : : : : +- InputAdapter (2) + : : : : : +- NativeParquetScan (1) + : : : : +- NativeSort (16) + : : : : +- InputAdapter (15) + : : : : +- AQEShuffleRead (14) + : : : : +- ShuffleQueryStage (13), Statistics(X) + : : : : +- NativeShuffleExchange (12) + : : : : +- NativeFilter (11) + : : : : +- InputAdapter (10) + : : : : +- NativeParquetScan (9) + : : : +- NativeSort (31) + : : : +- InputAdapter (30) + : : : +- AQEShuffleRead (29) + : : : +- ShuffleQueryStage (28), Statistics(X) + : : : +- NativeShuffleExchange (27) + : : : +- NativeFilter (26) + : : : +- InputAdapter (25) + : : : +- NativeParquetScan (24) + : : +- NativeSort (47) + : : +- InputAdapter (46) + : : +- AQEShuffleRead (45) + : : +- ShuffleQueryStage (44), Statistics(X) + : : +- NativeShuffleExchange (43) + : : +- NativeProject (42) + : : +- NativeFilter (41) + : : +- InputAdapter (40) + : : +- NativeParquetScan (39) + : +- NativeSort (62) + : +- InputAdapter (61) + : +- AQEShuffleRead (60) + : +- ShuffleQueryStage (59), Statistics(X) + : +- NativeShuffleExchange (58) + : +- NativeFilter (57) + : +- InputAdapter (56) + : +- NativeParquetScan (55) + +- NativeSort (78) + +- InputAdapter (77) + +- AQEShuffleRead (76) + +- ShuffleQueryStage (75), Statistics(X) + +- NativeShuffleExchange (74) + +- NativeProject (73) + +- NativeFilter (72) + +- InputAdapter (71) + +- NativeParquetScan (70) ++- == Initial Plan == + TakeOrderedAndProject (139) + +- HashAggregate (138) + +- Exchange (137) + +- HashAggregate (136) + +- Project (135) + +- Filter (134) + +- SortMergeJoin ExistenceJoin(exists#1) (133) + :- Sort (127) + : +- Exchange (126) + : +- Project (125) + : +- SortMergeJoin Inner (124) + : :- Sort (119) + : : +- Exchange (118) + : : +- Project (117) + : : +- SortMergeJoin Inner (116) + : : :- Sort (110) + : : : +- Exchange (109) + : : : +- Project (108) + : : : +- SortMergeJoin Inner (107) + : : : :- Sort (102) + : : : : +- Exchange (101) + : : : : +- Project (100) + : : : : +- SortMergeJoin Inner (99) + : : : : :- Sort (94) + : : : : : +- Exchange (93) + : : : : : +- Filter (92) + : : : : : +- Scan parquet (91) + : : : : +- Sort (98) + : : : : +- Exchange (97) + : : : : +- Filter (96) + : : : : +- Scan parquet (95) + : : : +- Sort (106) + : : : +- Exchange (105) + : : : +- Filter (104) + : : : +- Scan parquet (103) + : : +- Sort (115) + : : +- Exchange (114) + : : +- Project (113) + : : +- Filter (112) + : : +- Scan parquet (111) + : +- Sort (123) + : +- Exchange (122) + : +- Filter (121) + : +- Scan parquet (120) + +- Sort (132) + +- Exchange (131) + +- Project (130) + +- Filter (129) + +- Scan parquet (128) + + +(91) Scan parquet +Output [4]: [ws_sold_date_sk#2, ws_item_sk#3, ws_bill_customer_sk#4, ws_sales_price#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_bill_customer_sk), IsNotNull(ws_sold_date_sk), IsNotNull(ws_item_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [4]: [ws_sold_date_sk#2, ws_item_sk#3, ws_bill_customer_sk#4, ws_sales_price#5] +Arguments: [#2, #3, #4, #5] + +(3) NativeFilter +Input [4]: [#2#2, #3#3, #4#4, #5#5] +Condition : ((isnotnull(ws_bill_customer_sk#4) AND isnotnull(ws_sold_date_sk#2)) AND isnotnull(ws_item_sk#3)) + +(4) NativeShuffleExchange +Input [4]: [#2#2, #3#3, #4#4, #5#5] +Arguments: hashpartitioning(ws_bill_customer_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [4]: [#2#2, #3#3, #4#4, #5#5] +Arguments: X + +(6) AQEShuffleRead +Input [4]: [#2#2, #3#3, #4#4, #5#5] +Arguments: coalesced + +(7) InputAdapter +Input [4]: [#2#2, #3#3, #4#4, #5#5] + +(8) NativeSort +Input [4]: [#2#2, #3#3, #4#4, #5#5] +Arguments: [ws_bill_customer_sk#4 ASC NULLS FIRST], false + +(95) Scan parquet +Output [2]: [c_customer_sk#6, c_current_addr_sk#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_current_addr_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [c_customer_sk#6, c_current_addr_sk#7] +Arguments: [#6, #7] + +(11) NativeFilter +Input [2]: [#6#6, #7#7] +Condition : (isnotnull(c_customer_sk#6) AND isnotnull(c_current_addr_sk#7)) + +(12) NativeShuffleExchange +Input [2]: [#6#6, #7#7] +Arguments: hashpartitioning(c_customer_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [2]: [#6#6, #7#7] +Arguments: X + +(14) AQEShuffleRead +Input [2]: [#6#6, #7#7] +Arguments: coalesced + +(15) InputAdapter +Input [2]: [#6#6, #7#7] + +(16) NativeSort +Input [2]: [#6#6, #7#7] +Arguments: [c_customer_sk#6 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [1]: [ws_bill_customer_sk#4] +Right keys [1]: [c_customer_sk#6] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [4]: [ws_sold_date_sk#2, ws_item_sk#3, ws_sales_price#5, c_current_addr_sk#7] +Input [6]: [#2#2, #3#3, #4#4, #5#5, #6#6, #7#7] + +(19) NativeShuffleExchange +Input [4]: [ws_sold_date_sk#2, ws_item_sk#3, ws_sales_price#5, c_current_addr_sk#7] +Arguments: hashpartitioning(c_current_addr_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [4]: [ws_sold_date_sk#2, ws_item_sk#3, ws_sales_price#5, c_current_addr_sk#7] +Arguments: X + +(21) AQEShuffleRead +Input [4]: [ws_sold_date_sk#2, ws_item_sk#3, ws_sales_price#5, c_current_addr_sk#7] +Arguments: coalesced + +(22) InputAdapter +Input [4]: [ws_sold_date_sk#2, ws_item_sk#3, ws_sales_price#5, c_current_addr_sk#7] + +(23) NativeSort +Input [4]: [ws_sold_date_sk#2, ws_item_sk#3, ws_sales_price#5, c_current_addr_sk#7] +Arguments: [c_current_addr_sk#7 ASC NULLS FIRST], false + +(103) Scan parquet +Output [3]: [ca_address_sk#8, ca_city#9, ca_zip#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk)] +ReadSchema: struct + +(25) InputAdapter +Input [3]: [ca_address_sk#8, ca_city#9, ca_zip#10] +Arguments: [#8, #9, #10] + +(26) NativeFilter +Input [3]: [#8#8, #9#9, #10#10] +Condition : isnotnull(ca_address_sk#8) + +(27) NativeShuffleExchange +Input [3]: [#8#8, #9#9, #10#10] +Arguments: hashpartitioning(ca_address_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(28) ShuffleQueryStage +Output [3]: [#8#8, #9#9, #10#10] +Arguments: X + +(29) AQEShuffleRead +Input [3]: [#8#8, #9#9, #10#10] +Arguments: coalesced + +(30) InputAdapter +Input [3]: [#8#8, #9#9, #10#10] + +(31) NativeSort +Input [3]: [#8#8, #9#9, #10#10] +Arguments: [ca_address_sk#8 ASC NULLS FIRST], false + +(32) NativeSortMergeJoin +Left keys [1]: [c_current_addr_sk#7] +Right keys [1]: [ca_address_sk#8] +Join type: Inner +Join condition: None + +(33) NativeProject +Output [5]: [ws_sold_date_sk#2, ws_item_sk#3, ws_sales_price#5, ca_city#9, ca_zip#10] +Input [7]: [ws_sold_date_sk#2, ws_item_sk#3, ws_sales_price#5, c_current_addr_sk#7, #8#8, #9#9, #10#10] + +(34) NativeShuffleExchange +Input [5]: [ws_sold_date_sk#2, ws_item_sk#3, ws_sales_price#5, ca_city#9, ca_zip#10] +Arguments: hashpartitioning(ws_sold_date_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(35) ShuffleQueryStage +Output [5]: [ws_sold_date_sk#2, ws_item_sk#3, ws_sales_price#5, ca_city#9, ca_zip#10] +Arguments: X + +(36) AQEShuffleRead +Input [5]: [ws_sold_date_sk#2, ws_item_sk#3, ws_sales_price#5, ca_city#9, ca_zip#10] +Arguments: coalesced + +(37) InputAdapter +Input [5]: [ws_sold_date_sk#2, ws_item_sk#3, ws_sales_price#5, ca_city#9, ca_zip#10] + +(38) NativeSort +Input [5]: [ws_sold_date_sk#2, ws_item_sk#3, ws_sales_price#5, ca_city#9, ca_zip#10] +Arguments: [ws_sold_date_sk#2 ASC NULLS FIRST], false + +(111) Scan parquet +Output [3]: [d_date_sk#11, d_year#12, d_qoy#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_qoy), IsNotNull(d_year), EqualTo(d_qoy,2), EqualTo(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(40) InputAdapter +Input [3]: [d_date_sk#11, d_year#12, d_qoy#13] +Arguments: [#11, #12, #13] + +(41) NativeFilter +Input [3]: [#11#11, #12#12, #13#13] +Condition : ((((isnotnull(d_qoy#13) AND isnotnull(d_year#12)) AND (d_qoy#13 = 2)) AND (d_year#12 = 2001)) AND isnotnull(d_date_sk#11)) + +(42) NativeProject +Output [1]: [d_date_sk#11] +Input [3]: [#11#11, #12#12, #13#13] + +(43) NativeShuffleExchange +Input [1]: [d_date_sk#11] +Arguments: hashpartitioning(d_date_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) ShuffleQueryStage +Output [1]: [d_date_sk#11] +Arguments: X + +(45) AQEShuffleRead +Input [1]: [d_date_sk#11] +Arguments: coalesced + +(46) InputAdapter +Input [1]: [d_date_sk#11] + +(47) NativeSort +Input [1]: [d_date_sk#11] +Arguments: [d_date_sk#11 ASC NULLS FIRST], false + +(48) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#2] +Right keys [1]: [d_date_sk#11] +Join type: Inner +Join condition: None + +(49) NativeProject +Output [4]: [ws_item_sk#3, ws_sales_price#5, ca_city#9, ca_zip#10] +Input [6]: [ws_sold_date_sk#2, ws_item_sk#3, ws_sales_price#5, ca_city#9, ca_zip#10, d_date_sk#11] + +(50) NativeShuffleExchange +Input [4]: [ws_item_sk#3, ws_sales_price#5, ca_city#9, ca_zip#10] +Arguments: hashpartitioning(ws_item_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(51) ShuffleQueryStage +Output [4]: [ws_item_sk#3, ws_sales_price#5, ca_city#9, ca_zip#10] +Arguments: X + +(52) AQEShuffleRead +Input [4]: [ws_item_sk#3, ws_sales_price#5, ca_city#9, ca_zip#10] +Arguments: coalesced + +(53) InputAdapter +Input [4]: [ws_item_sk#3, ws_sales_price#5, ca_city#9, ca_zip#10] + +(54) NativeSort +Input [4]: [ws_item_sk#3, ws_sales_price#5, ca_city#9, ca_zip#10] +Arguments: [ws_item_sk#3 ASC NULLS FIRST], false + +(120) Scan parquet +Output [2]: [i_item_sk#14, i_item_id#15] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(56) InputAdapter +Input [2]: [i_item_sk#14, i_item_id#15] +Arguments: [#14, #15] + +(57) NativeFilter +Input [2]: [#14#14, #15#15] +Condition : isnotnull(i_item_sk#14) + +(58) NativeShuffleExchange +Input [2]: [#14#14, #15#15] +Arguments: hashpartitioning(i_item_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(59) ShuffleQueryStage +Output [2]: [#14#14, #15#15] +Arguments: X + +(60) AQEShuffleRead +Input [2]: [#14#14, #15#15] +Arguments: coalesced + +(61) InputAdapter +Input [2]: [#14#14, #15#15] + +(62) NativeSort +Input [2]: [#14#14, #15#15] +Arguments: [i_item_sk#14 ASC NULLS FIRST], false + +(63) NativeSortMergeJoin +Left keys [1]: [ws_item_sk#3] +Right keys [1]: [i_item_sk#14] +Join type: Inner +Join condition: None + +(64) NativeProject +Output [4]: [ws_sales_price#5, ca_city#9, ca_zip#10, i_item_id#15] +Input [6]: [ws_item_sk#3, ws_sales_price#5, ca_city#9, ca_zip#10, #14#14, #15#15] + +(65) NativeShuffleExchange +Input [4]: [ws_sales_price#5, ca_city#9, ca_zip#10, i_item_id#15] +Arguments: hashpartitioning(i_item_id#15, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(66) ShuffleQueryStage +Output [4]: [ws_sales_price#5, ca_city#9, ca_zip#10, i_item_id#15] +Arguments: X + +(67) AQEShuffleRead +Input [4]: [ws_sales_price#5, ca_city#9, ca_zip#10, i_item_id#15] +Arguments: coalesced + +(68) InputAdapter +Input [4]: [ws_sales_price#5, ca_city#9, ca_zip#10, i_item_id#15] + +(69) NativeSort +Input [4]: [ws_sales_price#5, ca_city#9, ca_zip#10, i_item_id#15] +Arguments: [i_item_id#15 ASC NULLS FIRST], false + +(128) Scan parquet +Output [2]: [i_item_sk#16, i_item_id#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(i_item_sk, [11,13,17,19,2,23,29,3,5,7])] +ReadSchema: struct + +(71) InputAdapter +Input [2]: [i_item_sk#16, i_item_id#17] +Arguments: [#16, #17] + +(72) NativeFilter +Input [2]: [#16#16, #17#17] +Condition : i_item_sk#16 IN (2,3,5,7,11,13,17,19,23,29) + +(73) NativeProject +Output [1]: [i_item_id#17] +Input [2]: [#16#16, #17#17] + +(74) NativeShuffleExchange +Input [1]: [i_item_id#17] +Arguments: hashpartitioning(i_item_id#17, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(75) ShuffleQueryStage +Output [1]: [i_item_id#17] +Arguments: X + +(76) AQEShuffleRead +Input [1]: [i_item_id#17] +Arguments: coalesced + +(77) InputAdapter +Input [1]: [i_item_id#17] + +(78) NativeSort +Input [1]: [i_item_id#17] +Arguments: [i_item_id#17 ASC NULLS FIRST], false + +(79) NativeSortMergeJoin +Left keys [1]: [i_item_id#15] +Right keys [1]: [i_item_id#17] +Join type: ExistenceJoin(exists#1) +Join condition: None + +(80) NativeFilter +Input [5]: [ws_sales_price#5, ca_city#9, ca_zip#10, i_item_id#15, exists#1] +Condition : (substr(ca_zip#10, 1, 5) IN (85669,86197,88274,83405,86475,85392,85460,80348,81792) OR exists#1) + +(81) NativeProject +Output [3]: [ws_sales_price#5, ca_city#9, ca_zip#10] +Input [5]: [ws_sales_price#5, ca_city#9, ca_zip#10, i_item_id#15, exists#1] + +(82) NativeProject +Output [3]: [ca_zip#10 AS ca_zip#10, ca_city#9 AS ca_city#9, UnscaledValue(ws_sales_price#5) AS _c2#18] +Input [3]: [ws_sales_price#5, ca_city#9, ca_zip#10] + +(83) NativeHashAggregate +Input [3]: [ca_zip#10, ca_city#9, _c2#18] +Keys [2]: [ca_zip#10, ca_city#9] +Functions [1]: [partial_sum(_c2#18)] +Aggregate Attributes [1]: [sum#19] +Results [3]: [ca_zip#10, ca_city#9, #20#20] + +(84) NativeShuffleExchange +Input [3]: [ca_zip#10, ca_city#9, #20#20] +Arguments: hashpartitioning(ca_zip#10, ca_city#9, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(85) ShuffleQueryStage +Output [3]: [ca_zip#10, ca_city#9, #20#20] +Arguments: X + +(86) AQEShuffleRead +Input [3]: [ca_zip#10, ca_city#9, #20#20] +Arguments: coalesced + +(87) InputAdapter +Input [3]: [ca_zip#10, ca_city#9, #20#20] + +(88) NativeHashAggregate +Input [3]: [ca_zip#10, ca_city#9, #20#20] +Keys [2]: [ca_zip#10, ca_city#9] +Functions [1]: [sum(UnscaledValue(ws_sales_price#5))] +Aggregate Attributes [1]: [sum(UnscaledValue(ws_sales_price#5))#21] +Results [3]: [ca_zip#10, ca_city#9, sum(UnscaledValue(ws_sales_price#5))#21] + +(89) NativeProject +Output [3]: [ca_zip#10, ca_city#9, MakeDecimal(sum(UnscaledValue(ws_sales_price#5))#21,17,2) AS sum(ws_sales_price)#22] +Input [3]: [ca_zip#10, ca_city#9, sum(UnscaledValue(ws_sales_price#5))#21] + +(90) NativeTakeOrdered +Input [3]: [ca_zip#10, ca_city#9, sum(ws_sales_price)#22] +Arguments: X, [ca_zip#10 ASC NULLS FIRST, ca_city#9 ASC NULLS FIRST] + +(91) Scan parquet +Output [4]: [ws_sold_date_sk#2, ws_item_sk#3, ws_bill_customer_sk#4, ws_sales_price#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_bill_customer_sk), IsNotNull(ws_sold_date_sk), IsNotNull(ws_item_sk)] +ReadSchema: struct + +(92) Filter +Input [4]: [ws_sold_date_sk#2, ws_item_sk#3, ws_bill_customer_sk#4, ws_sales_price#5] +Condition : ((isnotnull(ws_bill_customer_sk#4) AND isnotnull(ws_sold_date_sk#2)) AND isnotnull(ws_item_sk#3)) + +(93) Exchange +Input [4]: [ws_sold_date_sk#2, ws_item_sk#3, ws_bill_customer_sk#4, ws_sales_price#5] +Arguments: hashpartitioning(ws_bill_customer_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(94) Sort +Input [4]: [ws_sold_date_sk#2, ws_item_sk#3, ws_bill_customer_sk#4, ws_sales_price#5] +Arguments: [ws_bill_customer_sk#4 ASC NULLS FIRST], false, 0 + +(95) Scan parquet +Output [2]: [c_customer_sk#6, c_current_addr_sk#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_current_addr_sk)] +ReadSchema: struct + +(96) Filter +Input [2]: [c_customer_sk#6, c_current_addr_sk#7] +Condition : (isnotnull(c_customer_sk#6) AND isnotnull(c_current_addr_sk#7)) + +(97) Exchange +Input [2]: [c_customer_sk#6, c_current_addr_sk#7] +Arguments: hashpartitioning(c_customer_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(98) Sort +Input [2]: [c_customer_sk#6, c_current_addr_sk#7] +Arguments: [c_customer_sk#6 ASC NULLS FIRST], false, 0 + +(99) SortMergeJoin +Left keys [1]: [ws_bill_customer_sk#4] +Right keys [1]: [c_customer_sk#6] +Join type: Inner +Join condition: None + +(100) Project +Output [4]: [ws_sold_date_sk#2, ws_item_sk#3, ws_sales_price#5, c_current_addr_sk#7] +Input [6]: [ws_sold_date_sk#2, ws_item_sk#3, ws_bill_customer_sk#4, ws_sales_price#5, c_customer_sk#6, c_current_addr_sk#7] + +(101) Exchange +Input [4]: [ws_sold_date_sk#2, ws_item_sk#3, ws_sales_price#5, c_current_addr_sk#7] +Arguments: hashpartitioning(c_current_addr_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(102) Sort +Input [4]: [ws_sold_date_sk#2, ws_item_sk#3, ws_sales_price#5, c_current_addr_sk#7] +Arguments: [c_current_addr_sk#7 ASC NULLS FIRST], false, 0 + +(103) Scan parquet +Output [3]: [ca_address_sk#8, ca_city#9, ca_zip#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk)] +ReadSchema: struct + +(104) Filter +Input [3]: [ca_address_sk#8, ca_city#9, ca_zip#10] +Condition : isnotnull(ca_address_sk#8) + +(105) Exchange +Input [3]: [ca_address_sk#8, ca_city#9, ca_zip#10] +Arguments: hashpartitioning(ca_address_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(106) Sort +Input [3]: [ca_address_sk#8, ca_city#9, ca_zip#10] +Arguments: [ca_address_sk#8 ASC NULLS FIRST], false, 0 + +(107) SortMergeJoin +Left keys [1]: [c_current_addr_sk#7] +Right keys [1]: [ca_address_sk#8] +Join type: Inner +Join condition: None + +(108) Project +Output [5]: [ws_sold_date_sk#2, ws_item_sk#3, ws_sales_price#5, ca_city#9, ca_zip#10] +Input [7]: [ws_sold_date_sk#2, ws_item_sk#3, ws_sales_price#5, c_current_addr_sk#7, ca_address_sk#8, ca_city#9, ca_zip#10] + +(109) Exchange +Input [5]: [ws_sold_date_sk#2, ws_item_sk#3, ws_sales_price#5, ca_city#9, ca_zip#10] +Arguments: hashpartitioning(ws_sold_date_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(110) Sort +Input [5]: [ws_sold_date_sk#2, ws_item_sk#3, ws_sales_price#5, ca_city#9, ca_zip#10] +Arguments: [ws_sold_date_sk#2 ASC NULLS FIRST], false, 0 + +(111) Scan parquet +Output [3]: [d_date_sk#11, d_year#12, d_qoy#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_qoy), IsNotNull(d_year), EqualTo(d_qoy,2), EqualTo(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(112) Filter +Input [3]: [d_date_sk#11, d_year#12, d_qoy#13] +Condition : ((((isnotnull(d_qoy#13) AND isnotnull(d_year#12)) AND (d_qoy#13 = 2)) AND (d_year#12 = 2001)) AND isnotnull(d_date_sk#11)) + +(113) Project +Output [1]: [d_date_sk#11] +Input [3]: [d_date_sk#11, d_year#12, d_qoy#13] + +(114) Exchange +Input [1]: [d_date_sk#11] +Arguments: hashpartitioning(d_date_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(115) Sort +Input [1]: [d_date_sk#11] +Arguments: [d_date_sk#11 ASC NULLS FIRST], false, 0 + +(116) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#2] +Right keys [1]: [d_date_sk#11] +Join type: Inner +Join condition: None + +(117) Project +Output [4]: [ws_item_sk#3, ws_sales_price#5, ca_city#9, ca_zip#10] +Input [6]: [ws_sold_date_sk#2, ws_item_sk#3, ws_sales_price#5, ca_city#9, ca_zip#10, d_date_sk#11] + +(118) Exchange +Input [4]: [ws_item_sk#3, ws_sales_price#5, ca_city#9, ca_zip#10] +Arguments: hashpartitioning(ws_item_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(119) Sort +Input [4]: [ws_item_sk#3, ws_sales_price#5, ca_city#9, ca_zip#10] +Arguments: [ws_item_sk#3 ASC NULLS FIRST], false, 0 + +(120) Scan parquet +Output [2]: [i_item_sk#14, i_item_id#15] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(121) Filter +Input [2]: [i_item_sk#14, i_item_id#15] +Condition : isnotnull(i_item_sk#14) + +(122) Exchange +Input [2]: [i_item_sk#14, i_item_id#15] +Arguments: hashpartitioning(i_item_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(123) Sort +Input [2]: [i_item_sk#14, i_item_id#15] +Arguments: [i_item_sk#14 ASC NULLS FIRST], false, 0 + +(124) SortMergeJoin +Left keys [1]: [ws_item_sk#3] +Right keys [1]: [i_item_sk#14] +Join type: Inner +Join condition: None + +(125) Project +Output [4]: [ws_sales_price#5, ca_city#9, ca_zip#10, i_item_id#15] +Input [6]: [ws_item_sk#3, ws_sales_price#5, ca_city#9, ca_zip#10, i_item_sk#14, i_item_id#15] + +(126) Exchange +Input [4]: [ws_sales_price#5, ca_city#9, ca_zip#10, i_item_id#15] +Arguments: hashpartitioning(i_item_id#15, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(127) Sort +Input [4]: [ws_sales_price#5, ca_city#9, ca_zip#10, i_item_id#15] +Arguments: [i_item_id#15 ASC NULLS FIRST], false, 0 + +(128) Scan parquet +Output [2]: [i_item_sk#16, i_item_id#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(i_item_sk, [11,13,17,19,2,23,29,3,5,7])] +ReadSchema: struct + +(129) Filter +Input [2]: [i_item_sk#16, i_item_id#17] +Condition : i_item_sk#16 IN (2,3,5,7,11,13,17,19,23,29) + +(130) Project +Output [1]: [i_item_id#17] +Input [2]: [i_item_sk#16, i_item_id#17] + +(131) Exchange +Input [1]: [i_item_id#17] +Arguments: hashpartitioning(i_item_id#17, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(132) Sort +Input [1]: [i_item_id#17] +Arguments: [i_item_id#17 ASC NULLS FIRST], false, 0 + +(133) SortMergeJoin +Left keys [1]: [i_item_id#15] +Right keys [1]: [i_item_id#17] +Join type: ExistenceJoin(exists#1) +Join condition: None + +(134) Filter +Input [5]: [ws_sales_price#5, ca_city#9, ca_zip#10, i_item_id#15, exists#1] +Condition : (substr(ca_zip#10, 1, 5) IN (85669,86197,88274,83405,86475,85392,85460,80348,81792) OR exists#1) + +(135) Project +Output [3]: [ws_sales_price#5, ca_city#9, ca_zip#10] +Input [5]: [ws_sales_price#5, ca_city#9, ca_zip#10, i_item_id#15, exists#1] + +(136) HashAggregate +Input [3]: [ws_sales_price#5, ca_city#9, ca_zip#10] +Keys [2]: [ca_zip#10, ca_city#9] +Functions [1]: [partial_sum(UnscaledValue(ws_sales_price#5))] +Aggregate Attributes [1]: [sum#19] +Results [3]: [ca_zip#10, ca_city#9, sum#23] + +(137) Exchange +Input [3]: [ca_zip#10, ca_city#9, sum#23] +Arguments: hashpartitioning(ca_zip#10, ca_city#9, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(138) HashAggregate +Input [3]: [ca_zip#10, ca_city#9, sum#23] +Keys [2]: [ca_zip#10, ca_city#9] +Functions [1]: [sum(UnscaledValue(ws_sales_price#5))] +Aggregate Attributes [1]: [sum(UnscaledValue(ws_sales_price#5))#21] +Results [3]: [ca_zip#10, ca_city#9, MakeDecimal(sum(UnscaledValue(ws_sales_price#5))#21,17,2) AS sum(ws_sales_price)#22] + +(139) TakeOrderedAndProject +Input [3]: [ca_zip#10, ca_city#9, sum(ws_sales_price)#22] +Arguments: X, [ca_zip#10 ASC NULLS FIRST, ca_city#9 ASC NULLS FIRST], [ca_zip#10, ca_city#9, sum(ws_sales_price)#22] + +(140) AdaptiveSparkPlan +Output [3]: [ca_zip#10, ca_city#9, sum(ws_sales_price)#22] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q46.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q46.txt new file mode 100644 index 000000000..f8d465d69 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q46.txt @@ -0,0 +1,847 @@ +== Physical Plan == +AdaptiveSparkPlan (156) ++- == Final Plan == + TakeOrderedAndProject (99) + +- * Project (98) + +- * SortMergeJoin Inner (97) + :- NativeSort (90) + : +- InputAdapter (89) + : +- AQEShuffleRead (88) + : +- ShuffleQueryStage (87), Statistics(X) + : +- NativeShuffleExchange (86) + : +- NativeProject (85) + : +- NativeSortMergeJoin Inner (84) + : :- NativeSort (75) + : : +- InputAdapter (74) + : : +- AQEShuffleRead (73) + : : +- ShuffleQueryStage (72), Statistics(X) + : : +- NativeShuffleExchange (71) + : : +- NativeProject (70) + : : +- NativeHashAggregate (69) + : : +- NativeHashAggregate (68) + : : +- NativeProject (67) + : : +- NativeProject (66) + : : +- NativeSortMergeJoin Inner (65) + : : :- NativeSort (56) + : : : +- InputAdapter (55) + : : : +- AQEShuffleRead (54) + : : : +- ShuffleQueryStage (53), Statistics(X) + : : : +- NativeShuffleExchange (52) + : : : +- NativeProject (51) + : : : +- NativeSortMergeJoin Inner (50) + : : : :- NativeSort (40) + : : : : +- InputAdapter (39) + : : : : +- AQEShuffleRead (38) + : : : : +- ShuffleQueryStage (37), Statistics(X) + : : : : +- NativeShuffleExchange (36) + : : : : +- NativeProject (35) + : : : : +- NativeSortMergeJoin Inner (34) + : : : : :- 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 (33) + : : : : +- InputAdapter (32) + : : : : +- AQEShuffleRead (31) + : : : : +- ShuffleQueryStage (30), Statistics(X) + : : : : +- NativeShuffleExchange (29) + : : : : +- NativeProject (28) + : : : : +- NativeFilter (27) + : : : : +- InputAdapter (26) + : : : : +- NativeParquetScan (25) + : : : +- NativeSort (49) + : : : +- InputAdapter (48) + : : : +- AQEShuffleRead (47) + : : : +- ShuffleQueryStage (46), Statistics(X) + : : : +- NativeShuffleExchange (45) + : : : +- NativeProject (44) + : : : +- NativeFilter (43) + : : : +- InputAdapter (42) + : : : +- NativeParquetScan (41) + : : +- NativeSort (64) + : : +- InputAdapter (63) + : : +- AQEShuffleRead (62) + : : +- ShuffleQueryStage (61), Statistics(X) + : : +- NativeShuffleExchange (60) + : : +- NativeFilter (59) + : : +- InputAdapter (58) + : : +- NativeParquetScan (57) + : +- NativeSort (83) + : +- InputAdapter (82) + : +- AQEShuffleRead (81) + : +- ShuffleQueryStage (80), Statistics(X) + : +- NativeShuffleExchange (79) + : +- NativeFilter (78) + : +- InputAdapter (77) + : +- NativeParquetScan (76) + +- NativeSort (96) + +- InputAdapter (95) + +- InputAdapter (94) + +- AQEShuffleRead (93) + +- ShuffleQueryStage (92), Statistics(X) + +- ReusedExchange (91) ++- == Initial Plan == + TakeOrderedAndProject (155) + +- Project (154) + +- SortMergeJoin Inner (153) + :- Sort (148) + : +- Exchange (147) + : +- Project (146) + : +- SortMergeJoin Inner (145) + : :- Sort (140) + : : +- Exchange (139) + : : +- HashAggregate (138) + : : +- HashAggregate (137) + : : +- Project (136) + : : +- SortMergeJoin Inner (135) + : : :- Sort (130) + : : : +- Exchange (129) + : : : +- Project (128) + : : : +- SortMergeJoin Inner (127) + : : : :- Sort (121) + : : : : +- Exchange (120) + : : : : +- Project (119) + : : : : +- SortMergeJoin Inner (118) + : : : : :- Sort (112) + : : : : : +- Exchange (111) + : : : : : +- Project (110) + : : : : : +- SortMergeJoin Inner (109) + : : : : : :- Sort (103) + : : : : : : +- Exchange (102) + : : : : : : +- Filter (101) + : : : : : : +- Scan parquet (100) + : : : : : +- Sort (108) + : : : : : +- Exchange (107) + : : : : : +- Project (106) + : : : : : +- Filter (105) + : : : : : +- Scan parquet (104) + : : : : +- Sort (117) + : : : : +- Exchange (116) + : : : : +- Project (115) + : : : : +- Filter (114) + : : : : +- Scan parquet (113) + : : : +- Sort (126) + : : : +- Exchange (125) + : : : +- Project (124) + : : : +- Filter (123) + : : : +- Scan parquet (122) + : : +- Sort (134) + : : +- Exchange (133) + : : +- Filter (132) + : : +- Scan parquet (131) + : +- Sort (144) + : +- Exchange (143) + : +- Filter (142) + : +- Scan parquet (141) + +- Sort (152) + +- Exchange (151) + +- Filter (150) + +- Scan parquet (149) + + +(100) Scan parquet +Output [8]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk), IsNotNull(ss_hdemo_sk), IsNotNull(ss_addr_sk), IsNotNull(ss_customer_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [8]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Arguments: [#1, #2, #3, #4, #5, #6, #7, #8] + +(3) NativeFilter +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Condition : ((((isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_store_sk#5)) AND isnotnull(ss_hdemo_sk#3)) AND isnotnull(ss_addr_sk#4)) AND isnotnull(ss_customer_sk#2)) + +(4) NativeShuffleExchange +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: X + +(6) AQEShuffleRead +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: coalesced + +(7) InputAdapter +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] + +(8) NativeSort +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(104) Scan parquet +Output [3]: [d_date_sk#9, d_year#10, d_dow#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(d_dow, [0,6]), In(d_year, [1999,2000,2001]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [3]: [d_date_sk#9, d_year#10, d_dow#11] +Arguments: [#9, #10, #11] + +(11) NativeFilter +Input [3]: [#9#9, #10#10, #11#11] +Condition : ((d_dow#11 IN (6,0) AND d_year#10 IN (1999,2000,2001)) AND isnotnull(d_date_sk#9)) + +(12) NativeProject +Output [1]: [d_date_sk#9] +Input [3]: [#9#9, #10#10, #11#11] + +(13) NativeShuffleExchange +Input [1]: [d_date_sk#9] +Arguments: hashpartitioning(d_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [1]: [d_date_sk#9] +Arguments: X + +(15) AQEShuffleRead +Input [1]: [d_date_sk#9] +Arguments: coalesced + +(16) InputAdapter +Input [1]: [d_date_sk#9] + +(17) NativeSort +Input [1]: [d_date_sk#9] +Arguments: [d_date_sk#9 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#9] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Input [9]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, d_date_sk#9] + +(20) NativeShuffleExchange +Input [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Arguments: hashpartitioning(ss_store_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Arguments: X + +(22) AQEShuffleRead +Input [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Arguments: coalesced + +(23) InputAdapter +Input [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] + +(24) NativeSort +Input [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Arguments: [ss_store_sk#5 ASC NULLS FIRST], false + +(113) Scan parquet +Output [2]: [s_store_sk#12, s_city#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(s_city, [Fairview,Midway]), IsNotNull(s_store_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [2]: [s_store_sk#12, s_city#13] +Arguments: [#12, #13] + +(27) NativeFilter +Input [2]: [#12#12, #13#13] +Condition : (s_city#13 IN (Fairview,Midway) AND isnotnull(s_store_sk#12)) + +(28) NativeProject +Output [1]: [s_store_sk#12] +Input [2]: [#12#12, #13#13] + +(29) NativeShuffleExchange +Input [1]: [s_store_sk#12] +Arguments: hashpartitioning(s_store_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(30) ShuffleQueryStage +Output [1]: [s_store_sk#12] +Arguments: X + +(31) AQEShuffleRead +Input [1]: [s_store_sk#12] +Arguments: coalesced + +(32) InputAdapter +Input [1]: [s_store_sk#12] + +(33) NativeSort +Input [1]: [s_store_sk#12] +Arguments: [s_store_sk#12 ASC NULLS FIRST], false + +(34) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#5] +Right keys [1]: [s_store_sk#12] +Join type: Inner +Join condition: None + +(35) NativeProject +Output [6]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Input [8]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8, s_store_sk#12] + +(36) NativeShuffleExchange +Input [6]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Arguments: hashpartitioning(ss_hdemo_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [6]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Arguments: X + +(38) AQEShuffleRead +Input [6]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Arguments: coalesced + +(39) InputAdapter +Input [6]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] + +(40) NativeSort +Input [6]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Arguments: [ss_hdemo_sk#3 ASC NULLS FIRST], false + +(122) Scan parquet +Output [3]: [hd_demo_sk#14, hd_dep_count#15, hd_vehicle_count#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(EqualTo(hd_dep_count,4),EqualTo(hd_vehicle_count,3)), IsNotNull(hd_demo_sk)] +ReadSchema: struct + +(42) InputAdapter +Input [3]: [hd_demo_sk#14, hd_dep_count#15, hd_vehicle_count#16] +Arguments: [#14, #15, #16] + +(43) NativeFilter +Input [3]: [#14#14, #15#15, #16#16] +Condition : (((hd_dep_count#15 = 4) OR (hd_vehicle_count#16 = 3)) AND isnotnull(hd_demo_sk#14)) + +(44) NativeProject +Output [1]: [hd_demo_sk#14] +Input [3]: [#14#14, #15#15, #16#16] + +(45) NativeShuffleExchange +Input [1]: [hd_demo_sk#14] +Arguments: hashpartitioning(hd_demo_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(46) ShuffleQueryStage +Output [1]: [hd_demo_sk#14] +Arguments: X + +(47) AQEShuffleRead +Input [1]: [hd_demo_sk#14] +Arguments: coalesced + +(48) InputAdapter +Input [1]: [hd_demo_sk#14] + +(49) NativeSort +Input [1]: [hd_demo_sk#14] +Arguments: [hd_demo_sk#14 ASC NULLS FIRST], false + +(50) NativeSortMergeJoin +Left keys [1]: [ss_hdemo_sk#3] +Right keys [1]: [hd_demo_sk#14] +Join type: Inner +Join condition: None + +(51) NativeProject +Output [5]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Input [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8, hd_demo_sk#14] + +(52) NativeShuffleExchange +Input [5]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Arguments: hashpartitioning(ss_addr_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(53) ShuffleQueryStage +Output [5]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Arguments: X + +(54) AQEShuffleRead +Input [5]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Arguments: coalesced + +(55) InputAdapter +Input [5]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] + +(56) NativeSort +Input [5]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Arguments: [ss_addr_sk#4 ASC NULLS FIRST], false + +(131) Scan parquet +Output [2]: [ca_address_sk#17, ca_city#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_city)] +ReadSchema: struct + +(58) InputAdapter +Input [2]: [ca_address_sk#17, ca_city#18] +Arguments: [#17, #18] + +(59) NativeFilter +Input [2]: [#17#17, #18#18] +Condition : (isnotnull(ca_address_sk#17) AND isnotnull(ca_city#18)) + +(60) NativeShuffleExchange +Input [2]: [#17#17, #18#18] +Arguments: hashpartitioning(ca_address_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(61) ShuffleQueryStage +Output [2]: [#17#17, #18#18] +Arguments: X + +(62) AQEShuffleRead +Input [2]: [#17#17, #18#18] +Arguments: coalesced + +(63) InputAdapter +Input [2]: [#17#17, #18#18] + +(64) NativeSort +Input [2]: [#17#17, #18#18] +Arguments: [ca_address_sk#17 ASC NULLS FIRST], false + +(65) NativeSortMergeJoin +Left keys [1]: [ss_addr_sk#4] +Right keys [1]: [ca_address_sk#17] +Join type: Inner +Join condition: None + +(66) NativeProject +Output [6]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8, ca_city#18] +Input [7]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8, #17#17, #18#18] + +(67) NativeProject +Output [6]: [ss_ticket_number#6 AS ss_ticket_number#6, ss_customer_sk#2 AS ss_customer_sk#2, ss_addr_sk#4 AS ss_addr_sk#4, ca_city#18 AS ca_city#18, UnscaledValue(ss_coupon_amt#7) AS _c4#19, UnscaledValue(ss_net_profit#8) AS _c5#20] +Input [6]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8, ca_city#18] + +(68) NativeHashAggregate +Input [6]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, ca_city#18, _c4#19, _c5#20] +Keys [4]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, ca_city#18] +Functions [2]: [partial_sum(_c4#19), partial_sum(_c5#20)] +Aggregate Attributes [2]: [sum#21, sum#22] +Results [5]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, ca_city#18, #23#23] + +(69) NativeHashAggregate +Input [5]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, ca_city#18, #23#23] +Keys [4]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, ca_city#18] +Functions [2]: [sum(UnscaledValue(ss_coupon_amt#7)), sum(UnscaledValue(ss_net_profit#8))] +Aggregate Attributes [2]: [sum(UnscaledValue(ss_coupon_amt#7))#24, sum(UnscaledValue(ss_net_profit#8))#25] +Results [6]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, ca_city#18, sum(UnscaledValue(ss_coupon_amt#7))#24, sum(UnscaledValue(ss_net_profit#8))#25] + +(70) NativeProject +Output [5]: [ss_ticket_number#6, ss_customer_sk#2, ca_city#18 AS bought_city#26, MakeDecimal(sum(UnscaledValue(ss_coupon_amt#7))#24,17,2) AS amt#27, MakeDecimal(sum(UnscaledValue(ss_net_profit#8))#25,17,2) AS profit#28] +Input [6]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, ca_city#18, sum(UnscaledValue(ss_coupon_amt#7))#24, sum(UnscaledValue(ss_net_profit#8))#25] + +(71) NativeShuffleExchange +Input [5]: [ss_ticket_number#6, ss_customer_sk#2, bought_city#26, amt#27, profit#28] +Arguments: hashpartitioning(ss_customer_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(72) ShuffleQueryStage +Output [5]: [ss_ticket_number#6, ss_customer_sk#2, bought_city#26, amt#27, profit#28] +Arguments: X + +(73) AQEShuffleRead +Input [5]: [ss_ticket_number#6, ss_customer_sk#2, bought_city#26, amt#27, profit#28] +Arguments: coalesced + +(74) InputAdapter +Input [5]: [ss_ticket_number#6, ss_customer_sk#2, bought_city#26, amt#27, profit#28] + +(75) NativeSort +Input [5]: [ss_ticket_number#6, ss_customer_sk#2, bought_city#26, amt#27, profit#28] +Arguments: [ss_customer_sk#2 ASC NULLS FIRST], false + +(141) Scan parquet +Output [4]: [c_customer_sk#29, c_current_addr_sk#30, c_first_name#31, c_last_name#32] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_current_addr_sk)] +ReadSchema: struct + +(77) InputAdapter +Input [4]: [c_customer_sk#29, c_current_addr_sk#30, c_first_name#31, c_last_name#32] +Arguments: [#29, #30, #31, #32] + +(78) NativeFilter +Input [4]: [#29#29, #30#30, #31#31, #32#32] +Condition : (isnotnull(c_customer_sk#29) AND isnotnull(c_current_addr_sk#30)) + +(79) NativeShuffleExchange +Input [4]: [#29#29, #30#30, #31#31, #32#32] +Arguments: hashpartitioning(c_customer_sk#29, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(80) ShuffleQueryStage +Output [4]: [#29#29, #30#30, #31#31, #32#32] +Arguments: X + +(81) AQEShuffleRead +Input [4]: [#29#29, #30#30, #31#31, #32#32] +Arguments: coalesced + +(82) InputAdapter +Input [4]: [#29#29, #30#30, #31#31, #32#32] + +(83) NativeSort +Input [4]: [#29#29, #30#30, #31#31, #32#32] +Arguments: [c_customer_sk#29 ASC NULLS FIRST], false + +(84) NativeSortMergeJoin +Left keys [1]: [ss_customer_sk#2] +Right keys [1]: [c_customer_sk#29] +Join type: Inner +Join condition: None + +(85) NativeProject +Output [7]: [ss_ticket_number#6, bought_city#26, amt#27, profit#28, c_current_addr_sk#30, c_first_name#31, c_last_name#32] +Input [9]: [ss_ticket_number#6, ss_customer_sk#2, bought_city#26, amt#27, profit#28, #29#29, #30#30, #31#31, #32#32] + +(86) NativeShuffleExchange +Input [7]: [ss_ticket_number#6, bought_city#26, amt#27, profit#28, c_current_addr_sk#30, c_first_name#31, c_last_name#32] +Arguments: hashpartitioning(c_current_addr_sk#30, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(87) ShuffleQueryStage +Output [7]: [ss_ticket_number#6, bought_city#26, amt#27, profit#28, c_current_addr_sk#30, c_first_name#31, c_last_name#32] +Arguments: X + +(88) AQEShuffleRead +Input [7]: [ss_ticket_number#6, bought_city#26, amt#27, profit#28, c_current_addr_sk#30, c_first_name#31, c_last_name#32] +Arguments: coalesced + +(89) InputAdapter +Input [7]: [ss_ticket_number#6, bought_city#26, amt#27, profit#28, c_current_addr_sk#30, c_first_name#31, c_last_name#32] + +(90) NativeSort +Input [7]: [ss_ticket_number#6, bought_city#26, amt#27, profit#28, c_current_addr_sk#30, c_first_name#31, c_last_name#32] +Arguments: [c_current_addr_sk#30 ASC NULLS FIRST], false + +(91) ReusedExchange [Reuses operator id: 60] +Output [2]: [ca_address_sk#33, ca_city#34] + +(92) ShuffleQueryStage +Output [2]: [ca_address_sk#33, ca_city#34] +Arguments: X + +(93) AQEShuffleRead +Input [2]: [ca_address_sk#33, ca_city#34] +Arguments: coalesced + +(94) InputAdapter +Input [2]: [ca_address_sk#33, ca_city#34] +Arguments: [#33, #34] + +(95) InputAdapter +Input [2]: [#33#33, #34#34] + +(96) NativeSort +Input [2]: [#33#33, #34#34] +Arguments: [ca_address_sk#33 ASC NULLS FIRST], false + +(97) SortMergeJoin [codegen id : 1] +Left keys [1]: [c_current_addr_sk#30] +Right keys [1]: [ca_address_sk#33] +Join type: Inner +Join condition: NOT (ca_city#34 = bought_city#26) + +(98) Project [codegen id : 1] +Output [7]: [c_last_name#32, c_first_name#31, ca_city#34, bought_city#26, ss_ticket_number#6, amt#27, profit#28] +Input [9]: [ss_ticket_number#6, bought_city#26, amt#27, profit#28, c_current_addr_sk#30, c_first_name#31, c_last_name#32, #33#33, #34#34] + +(99) TakeOrderedAndProject +Input [7]: [c_last_name#32, c_first_name#31, ca_city#34, bought_city#26, ss_ticket_number#6, amt#27, profit#28] +Arguments: X, [c_last_name#32 ASC NULLS FIRST, c_first_name#31 ASC NULLS FIRST, ca_city#34 ASC NULLS FIRST, bought_city#26 ASC NULLS FIRST, ss_ticket_number#6 ASC NULLS FIRST], [c_last_name#32, c_first_name#31, ca_city#34, bought_city#26, ss_ticket_number#6, amt#27, profit#28] + +(100) Scan parquet +Output [8]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk), IsNotNull(ss_hdemo_sk), IsNotNull(ss_addr_sk), IsNotNull(ss_customer_sk)] +ReadSchema: struct + +(101) Filter +Input [8]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Condition : ((((isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_store_sk#5)) AND isnotnull(ss_hdemo_sk#3)) AND isnotnull(ss_addr_sk#4)) AND isnotnull(ss_customer_sk#2)) + +(102) Exchange +Input [8]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(103) Sort +Input [8]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(104) Scan parquet +Output [3]: [d_date_sk#9, d_year#10, d_dow#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(d_dow, [0,6]), In(d_year, [1999,2000,2001]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(105) Filter +Input [3]: [d_date_sk#9, d_year#10, d_dow#11] +Condition : ((d_dow#11 IN (6,0) AND d_year#10 IN (1999,2000,2001)) AND isnotnull(d_date_sk#9)) + +(106) Project +Output [1]: [d_date_sk#9] +Input [3]: [d_date_sk#9, d_year#10, d_dow#11] + +(107) Exchange +Input [1]: [d_date_sk#9] +Arguments: hashpartitioning(d_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(108) Sort +Input [1]: [d_date_sk#9] +Arguments: [d_date_sk#9 ASC NULLS FIRST], false, 0 + +(109) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#9] +Join type: Inner +Join condition: None + +(110) Project +Output [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Input [9]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8, d_date_sk#9] + +(111) Exchange +Input [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Arguments: hashpartitioning(ss_store_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(112) Sort +Input [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Arguments: [ss_store_sk#5 ASC NULLS FIRST], false, 0 + +(113) Scan parquet +Output [2]: [s_store_sk#12, s_city#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(s_city, [Fairview,Midway]), IsNotNull(s_store_sk)] +ReadSchema: struct + +(114) Filter +Input [2]: [s_store_sk#12, s_city#13] +Condition : (s_city#13 IN (Fairview,Midway) AND isnotnull(s_store_sk#12)) + +(115) Project +Output [1]: [s_store_sk#12] +Input [2]: [s_store_sk#12, s_city#13] + +(116) Exchange +Input [1]: [s_store_sk#12] +Arguments: hashpartitioning(s_store_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(117) Sort +Input [1]: [s_store_sk#12] +Arguments: [s_store_sk#12 ASC NULLS FIRST], false, 0 + +(118) SortMergeJoin +Left keys [1]: [ss_store_sk#5] +Right keys [1]: [s_store_sk#12] +Join type: Inner +Join condition: None + +(119) Project +Output [6]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Input [8]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8, s_store_sk#12] + +(120) Exchange +Input [6]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Arguments: hashpartitioning(ss_hdemo_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(121) Sort +Input [6]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Arguments: [ss_hdemo_sk#3 ASC NULLS FIRST], false, 0 + +(122) Scan parquet +Output [3]: [hd_demo_sk#14, hd_dep_count#15, hd_vehicle_count#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(EqualTo(hd_dep_count,4),EqualTo(hd_vehicle_count,3)), IsNotNull(hd_demo_sk)] +ReadSchema: struct + +(123) Filter +Input [3]: [hd_demo_sk#14, hd_dep_count#15, hd_vehicle_count#16] +Condition : (((hd_dep_count#15 = 4) OR (hd_vehicle_count#16 = 3)) AND isnotnull(hd_demo_sk#14)) + +(124) Project +Output [1]: [hd_demo_sk#14] +Input [3]: [hd_demo_sk#14, hd_dep_count#15, hd_vehicle_count#16] + +(125) Exchange +Input [1]: [hd_demo_sk#14] +Arguments: hashpartitioning(hd_demo_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(126) Sort +Input [1]: [hd_demo_sk#14] +Arguments: [hd_demo_sk#14 ASC NULLS FIRST], false, 0 + +(127) SortMergeJoin +Left keys [1]: [ss_hdemo_sk#3] +Right keys [1]: [hd_demo_sk#14] +Join type: Inner +Join condition: None + +(128) Project +Output [5]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Input [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8, hd_demo_sk#14] + +(129) Exchange +Input [5]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Arguments: hashpartitioning(ss_addr_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(130) Sort +Input [5]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Arguments: [ss_addr_sk#4 ASC NULLS FIRST], false, 0 + +(131) Scan parquet +Output [2]: [ca_address_sk#17, ca_city#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_city)] +ReadSchema: struct + +(132) Filter +Input [2]: [ca_address_sk#17, ca_city#18] +Condition : (isnotnull(ca_address_sk#17) AND isnotnull(ca_city#18)) + +(133) Exchange +Input [2]: [ca_address_sk#17, ca_city#18] +Arguments: hashpartitioning(ca_address_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(134) Sort +Input [2]: [ca_address_sk#17, ca_city#18] +Arguments: [ca_address_sk#17 ASC NULLS FIRST], false, 0 + +(135) SortMergeJoin +Left keys [1]: [ss_addr_sk#4] +Right keys [1]: [ca_address_sk#17] +Join type: Inner +Join condition: None + +(136) Project +Output [6]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8, ca_city#18] +Input [7]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8, ca_address_sk#17, ca_city#18] + +(137) HashAggregate +Input [6]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8, ca_city#18] +Keys [4]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, ca_city#18] +Functions [2]: [partial_sum(UnscaledValue(ss_coupon_amt#7)), partial_sum(UnscaledValue(ss_net_profit#8))] +Aggregate Attributes [2]: [sum#21, sum#22] +Results [6]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, ca_city#18, sum#35, sum#36] + +(138) HashAggregate +Input [6]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, ca_city#18, sum#35, sum#36] +Keys [4]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, ca_city#18] +Functions [2]: [sum(UnscaledValue(ss_coupon_amt#7)), sum(UnscaledValue(ss_net_profit#8))] +Aggregate Attributes [2]: [sum(UnscaledValue(ss_coupon_amt#7))#24, sum(UnscaledValue(ss_net_profit#8))#25] +Results [5]: [ss_ticket_number#6, ss_customer_sk#2, ca_city#18 AS bought_city#26, MakeDecimal(sum(UnscaledValue(ss_coupon_amt#7))#24,17,2) AS amt#27, MakeDecimal(sum(UnscaledValue(ss_net_profit#8))#25,17,2) AS profit#28] + +(139) Exchange +Input [5]: [ss_ticket_number#6, ss_customer_sk#2, bought_city#26, amt#27, profit#28] +Arguments: hashpartitioning(ss_customer_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(140) Sort +Input [5]: [ss_ticket_number#6, ss_customer_sk#2, bought_city#26, amt#27, profit#28] +Arguments: [ss_customer_sk#2 ASC NULLS FIRST], false, 0 + +(141) Scan parquet +Output [4]: [c_customer_sk#29, c_current_addr_sk#30, c_first_name#31, c_last_name#32] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_current_addr_sk)] +ReadSchema: struct + +(142) Filter +Input [4]: [c_customer_sk#29, c_current_addr_sk#30, c_first_name#31, c_last_name#32] +Condition : (isnotnull(c_customer_sk#29) AND isnotnull(c_current_addr_sk#30)) + +(143) Exchange +Input [4]: [c_customer_sk#29, c_current_addr_sk#30, c_first_name#31, c_last_name#32] +Arguments: hashpartitioning(c_customer_sk#29, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(144) Sort +Input [4]: [c_customer_sk#29, c_current_addr_sk#30, c_first_name#31, c_last_name#32] +Arguments: [c_customer_sk#29 ASC NULLS FIRST], false, 0 + +(145) SortMergeJoin +Left keys [1]: [ss_customer_sk#2] +Right keys [1]: [c_customer_sk#29] +Join type: Inner +Join condition: None + +(146) Project +Output [7]: [ss_ticket_number#6, bought_city#26, amt#27, profit#28, c_current_addr_sk#30, c_first_name#31, c_last_name#32] +Input [9]: [ss_ticket_number#6, ss_customer_sk#2, bought_city#26, amt#27, profit#28, c_customer_sk#29, c_current_addr_sk#30, c_first_name#31, c_last_name#32] + +(147) Exchange +Input [7]: [ss_ticket_number#6, bought_city#26, amt#27, profit#28, c_current_addr_sk#30, c_first_name#31, c_last_name#32] +Arguments: hashpartitioning(c_current_addr_sk#30, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(148) Sort +Input [7]: [ss_ticket_number#6, bought_city#26, amt#27, profit#28, c_current_addr_sk#30, c_first_name#31, c_last_name#32] +Arguments: [c_current_addr_sk#30 ASC NULLS FIRST], false, 0 + +(149) Scan parquet +Output [2]: [ca_address_sk#33, ca_city#34] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_city)] +ReadSchema: struct + +(150) Filter +Input [2]: [ca_address_sk#33, ca_city#34] +Condition : (isnotnull(ca_address_sk#33) AND isnotnull(ca_city#34)) + +(151) Exchange +Input [2]: [ca_address_sk#33, ca_city#34] +Arguments: hashpartitioning(ca_address_sk#33, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(152) Sort +Input [2]: [ca_address_sk#33, ca_city#34] +Arguments: [ca_address_sk#33 ASC NULLS FIRST], false, 0 + +(153) SortMergeJoin +Left keys [1]: [c_current_addr_sk#30] +Right keys [1]: [ca_address_sk#33] +Join type: Inner +Join condition: NOT (ca_city#34 = bought_city#26) + +(154) Project +Output [7]: [c_last_name#32, c_first_name#31, ca_city#34, bought_city#26, ss_ticket_number#6, amt#27, profit#28] +Input [9]: [ss_ticket_number#6, bought_city#26, amt#27, profit#28, c_current_addr_sk#30, c_first_name#31, c_last_name#32, ca_address_sk#33, ca_city#34] + +(155) TakeOrderedAndProject +Input [7]: [c_last_name#32, c_first_name#31, ca_city#34, bought_city#26, ss_ticket_number#6, amt#27, profit#28] +Arguments: X, [c_last_name#32 ASC NULLS FIRST, c_first_name#31 ASC NULLS FIRST, ca_city#34 ASC NULLS FIRST, bought_city#26 ASC NULLS FIRST, ss_ticket_number#6 ASC NULLS FIRST], [c_last_name#32, c_first_name#31, ca_city#34, bought_city#26, ss_ticket_number#6, amt#27, profit#28] + +(156) AdaptiveSparkPlan +Output [7]: [c_last_name#32, c_first_name#31, ca_city#34, bought_city#26, ss_ticket_number#6, amt#27, profit#28] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q47.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q47.txt new file mode 100644 index 000000000..23a5d6644 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q47.txt @@ -0,0 +1,1210 @@ +== Physical Plan == +AdaptiveSparkPlan (223) ++- == Final Plan == + NativeTakeOrdered (109) + +- NativeProject (108) + +- NativeSortMergeJoin Inner (107) + :- NativeProject (93) + : +- NativeSortMergeJoin Inner (92) + : :- NativeSort (72) + : : +- InputAdapter (71) + : : +- AQEShuffleRead (70) + : : +- ShuffleQueryStage (69), Statistics(X) + : : +- NativeShuffleExchange (68) + : : +- ConvertToNative (67) + : : +- * Project (66) + : : +- * Filter (65) + : : +- Window (64) + : : +- NativeFilter (63) + : : +- NativeWindow (62) + : : +- NativeSort (61) + : : +- InputAdapter (60) + : : +- AQEShuffleRead (59) + : : +- ShuffleQueryStage (58), Statistics(X) + : : +- NativeShuffleExchange (57) + : : +- NativeProject (56) + : : +- NativeHashAggregate (55) + : : +- InputAdapter (54) + : : +- AQEShuffleRead (53) + : : +- ShuffleQueryStage (52), Statistics(X) + : : +- NativeShuffleExchange (51) + : : +- NativeHashAggregate (50) + : : +- NativeProject (49) + : : +- NativeProject (48) + : : +- NativeSortMergeJoin Inner (47) + : : :- NativeSort (38) + : : : +- InputAdapter (37) + : : : +- AQEShuffleRead (36) + : : : +- ShuffleQueryStage (35), Statistics(X) + : : : +- NativeShuffleExchange (34) + : : : +- NativeProject (33) + : : : +- NativeSortMergeJoin Inner (32) + : : : :- NativeSort (23) + : : : : +- InputAdapter (22) + : : : : +- AQEShuffleRead (21) + : : : : +- ShuffleQueryStage (20), Statistics(X) + : : : : +- NativeShuffleExchange (19) + : : : : +- NativeProject (18) + : : : : +- NativeSortMergeJoin Inner (17) + : : : : :- NativeSort (8) + : : : : : +- InputAdapter (7) + : : : : : +- AQEShuffleRead (6) + : : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : : +- NativeShuffleExchange (4) + : : : : : +- NativeFilter (3) + : : : : : +- InputAdapter (2) + : : : : : +- NativeParquetScan (1) + : : : : +- NativeSort (16) + : : : : +- InputAdapter (15) + : : : : +- AQEShuffleRead (14) + : : : : +- ShuffleQueryStage (13), Statistics(X) + : : : : +- NativeShuffleExchange (12) + : : : : +- NativeFilter (11) + : : : : +- InputAdapter (10) + : : : : +- NativeParquetScan (9) + : : : +- NativeSort (31) + : : : +- InputAdapter (30) + : : : +- AQEShuffleRead (29) + : : : +- ShuffleQueryStage (28), Statistics(X) + : : : +- NativeShuffleExchange (27) + : : : +- NativeFilter (26) + : : : +- InputAdapter (25) + : : : +- NativeParquetScan (24) + : : +- NativeSort (46) + : : +- InputAdapter (45) + : : +- AQEShuffleRead (44) + : : +- ShuffleQueryStage (43), Statistics(X) + : : +- NativeShuffleExchange (42) + : : +- NativeFilter (41) + : : +- InputAdapter (40) + : : +- NativeParquetScan (39) + : +- NativeSort (91) + : +- InputAdapter (90) + : +- AQEShuffleRead (89) + : +- ShuffleQueryStage (88), Statistics(X) + : +- NativeShuffleExchange (87) + : +- NativeProject (86) + : +- NativeWindow (85) + : +- NativeSort (84) + : +- InputAdapter (83) + : +- AQEShuffleRead (82) + : +- ShuffleQueryStage (81), Statistics(X) + : +- NativeShuffleExchange (80) + : +- NativeProject (79) + : +- NativeHashAggregate (78) + : +- InputAdapter (77) + : +- InputAdapter (76) + : +- AQEShuffleRead (75) + : +- ShuffleQueryStage (74), Statistics(X) + : +- ReusedExchange (73) + +- NativeSort (106) + +- InputAdapter (105) + +- AQEShuffleRead (104) + +- ShuffleQueryStage (103), Statistics(X) + +- NativeShuffleExchange (102) + +- NativeProject (101) + +- NativeWindow (100) + +- NativeSort (99) + +- InputAdapter (98) + +- InputAdapter (97) + +- AQEShuffleRead (96) + +- ShuffleQueryStage (95), Statistics(X) + +- ReusedExchange (94) ++- == Initial Plan == + TakeOrderedAndProject (222) + +- Project (221) + +- SortMergeJoin Inner (220) + :- Project (184) + : +- SortMergeJoin Inner (183) + : :- Sort (147) + : : +- Exchange (146) + : : +- Project (145) + : : +- Filter (144) + : : +- Window (143) + : : +- Filter (142) + : : +- Window (141) + : : +- Sort (140) + : : +- Exchange (139) + : : +- HashAggregate (138) + : : +- Exchange (137) + : : +- HashAggregate (136) + : : +- Project (135) + : : +- SortMergeJoin Inner (134) + : : :- Sort (129) + : : : +- Exchange (128) + : : : +- Project (127) + : : : +- SortMergeJoin Inner (126) + : : : :- Sort (121) + : : : : +- Exchange (120) + : : : : +- Project (119) + : : : : +- SortMergeJoin Inner (118) + : : : : :- Sort (113) + : : : : : +- Exchange (112) + : : : : : +- Filter (111) + : : : : : +- Scan parquet (110) + : : : : +- Sort (117) + : : : : +- Exchange (116) + : : : : +- Filter (115) + : : : : +- Scan parquet (114) + : : : +- Sort (125) + : : : +- Exchange (124) + : : : +- Filter (123) + : : : +- Scan parquet (122) + : : +- Sort (133) + : : +- Exchange (132) + : : +- Filter (131) + : : +- Scan parquet (130) + : +- Sort (182) + : +- Exchange (181) + : +- Project (180) + : +- Window (179) + : +- Sort (178) + : +- Exchange (177) + : +- HashAggregate (176) + : +- Exchange (175) + : +- HashAggregate (174) + : +- Project (173) + : +- SortMergeJoin Inner (172) + : :- Sort (167) + : : +- Exchange (166) + : : +- Project (165) + : : +- SortMergeJoin Inner (164) + : : :- Sort (159) + : : : +- Exchange (158) + : : : +- Project (157) + : : : +- SortMergeJoin Inner (156) + : : : :- Sort (151) + : : : : +- Exchange (150) + : : : : +- Filter (149) + : : : : +- Scan parquet (148) + : : : +- Sort (155) + : : : +- Exchange (154) + : : : +- Filter (153) + : : : +- Scan parquet (152) + : : +- Sort (163) + : : +- Exchange (162) + : : +- Filter (161) + : : +- Scan parquet (160) + : +- Sort (171) + : +- Exchange (170) + : +- Filter (169) + : +- Scan parquet (168) + +- Sort (219) + +- Exchange (218) + +- Project (217) + +- Window (216) + +- Sort (215) + +- Exchange (214) + +- HashAggregate (213) + +- Exchange (212) + +- HashAggregate (211) + +- Project (210) + +- SortMergeJoin Inner (209) + :- Sort (204) + : +- Exchange (203) + : +- Project (202) + : +- SortMergeJoin Inner (201) + : :- Sort (196) + : : +- Exchange (195) + : : +- Project (194) + : : +- SortMergeJoin Inner (193) + : : :- Sort (188) + : : : +- Exchange (187) + : : : +- Filter (186) + : : : +- Scan parquet (185) + : : +- Sort (192) + : : +- Exchange (191) + : : +- Filter (190) + : : +- Scan parquet (189) + : +- Sort (200) + : +- Exchange (199) + : +- Filter (198) + : +- Scan parquet (197) + +- Sort (208) + +- Exchange (207) + +- Filter (206) + +- Scan parquet (205) + + +(110) Scan parquet +Output [3]: [i_item_sk#1, i_brand#2, i_category#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_category), IsNotNull(i_brand)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [i_item_sk#1, i_brand#2, i_category#3] +Arguments: [#1, #2, #3] + +(3) NativeFilter +Input [3]: [#1#1, #2#2, #3#3] +Condition : ((isnotnull(i_item_sk#1) AND isnotnull(i_category#3)) AND isnotnull(i_brand#2)) + +(4) NativeShuffleExchange +Input [3]: [#1#1, #2#2, #3#3] +Arguments: hashpartitioning(i_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [3]: [#1#1, #2#2, #3#3] +Arguments: X + +(6) AQEShuffleRead +Input [3]: [#1#1, #2#2, #3#3] +Arguments: coalesced + +(7) InputAdapter +Input [3]: [#1#1, #2#2, #3#3] + +(8) NativeSort +Input [3]: [#1#1, #2#2, #3#3] +Arguments: [i_item_sk#1 ASC NULLS FIRST], false + +(114) Scan parquet +Output [4]: [ss_sold_date_sk#4, ss_item_sk#5, ss_store_sk#6, ss_sales_price#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [4]: [ss_sold_date_sk#4, ss_item_sk#5, ss_store_sk#6, ss_sales_price#7] +Arguments: [#4, #5, #6, #7] + +(11) NativeFilter +Input [4]: [#4#4, #5#5, #6#6, #7#7] +Condition : ((isnotnull(ss_item_sk#5) AND isnotnull(ss_sold_date_sk#4)) AND isnotnull(ss_store_sk#6)) + +(12) NativeShuffleExchange +Input [4]: [#4#4, #5#5, #6#6, #7#7] +Arguments: hashpartitioning(ss_item_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [4]: [#4#4, #5#5, #6#6, #7#7] +Arguments: X + +(14) AQEShuffleRead +Input [4]: [#4#4, #5#5, #6#6, #7#7] +Arguments: coalesced + +(15) InputAdapter +Input [4]: [#4#4, #5#5, #6#6, #7#7] + +(16) NativeSort +Input [4]: [#4#4, #5#5, #6#6, #7#7] +Arguments: [ss_item_sk#5 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [1]: [i_item_sk#1] +Right keys [1]: [ss_item_sk#5] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [5]: [i_brand#2, i_category#3, ss_sold_date_sk#4, ss_store_sk#6, ss_sales_price#7] +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] + +(19) NativeShuffleExchange +Input [5]: [i_brand#2, i_category#3, ss_sold_date_sk#4, ss_store_sk#6, ss_sales_price#7] +Arguments: hashpartitioning(ss_sold_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [5]: [i_brand#2, i_category#3, ss_sold_date_sk#4, ss_store_sk#6, ss_sales_price#7] +Arguments: X + +(21) AQEShuffleRead +Input [5]: [i_brand#2, i_category#3, ss_sold_date_sk#4, ss_store_sk#6, ss_sales_price#7] +Arguments: coalesced + +(22) InputAdapter +Input [5]: [i_brand#2, i_category#3, ss_sold_date_sk#4, ss_store_sk#6, ss_sales_price#7] + +(23) NativeSort +Input [5]: [i_brand#2, i_category#3, ss_sold_date_sk#4, ss_store_sk#6, ss_sales_price#7] +Arguments: [ss_sold_date_sk#4 ASC NULLS FIRST], false + +(122) Scan parquet +Output [3]: [d_date_sk#8, d_year#9, d_moy#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(Or(EqualTo(d_year,1999),And(EqualTo(d_year,1998),EqualTo(d_moy,12))),And(EqualTo(d_year,2000),EqualTo(d_moy,1))), IsNotNull(d_date_sk)] +ReadSchema: struct + +(25) InputAdapter +Input [3]: [d_date_sk#8, d_year#9, d_moy#10] +Arguments: [#8, #9, #10] + +(26) NativeFilter +Input [3]: [#8#8, #9#9, #10#10] +Condition : ((((d_year#9 = 1999) OR ((d_year#9 = 1998) AND (d_moy#10 = 12))) OR ((d_year#9 = 2000) AND (d_moy#10 = 1))) AND isnotnull(d_date_sk#8)) + +(27) NativeShuffleExchange +Input [3]: [#8#8, #9#9, #10#10] +Arguments: hashpartitioning(d_date_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(28) ShuffleQueryStage +Output [3]: [#8#8, #9#9, #10#10] +Arguments: X + +(29) AQEShuffleRead +Input [3]: [#8#8, #9#9, #10#10] +Arguments: coalesced + +(30) InputAdapter +Input [3]: [#8#8, #9#9, #10#10] + +(31) NativeSort +Input [3]: [#8#8, #9#9, #10#10] +Arguments: [d_date_sk#8 ASC NULLS FIRST], false + +(32) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#4] +Right keys [1]: [d_date_sk#8] +Join type: Inner +Join condition: None + +(33) NativeProject +Output [6]: [i_brand#2, i_category#3, ss_store_sk#6, ss_sales_price#7, d_year#9, d_moy#10] +Input [8]: [i_brand#2, i_category#3, ss_sold_date_sk#4, ss_store_sk#6, ss_sales_price#7, #8#8, #9#9, #10#10] + +(34) NativeShuffleExchange +Input [6]: [i_brand#2, i_category#3, ss_store_sk#6, ss_sales_price#7, d_year#9, d_moy#10] +Arguments: hashpartitioning(ss_store_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(35) ShuffleQueryStage +Output [6]: [i_brand#2, i_category#3, ss_store_sk#6, ss_sales_price#7, d_year#9, d_moy#10] +Arguments: X + +(36) AQEShuffleRead +Input [6]: [i_brand#2, i_category#3, ss_store_sk#6, ss_sales_price#7, d_year#9, d_moy#10] +Arguments: coalesced + +(37) InputAdapter +Input [6]: [i_brand#2, i_category#3, ss_store_sk#6, ss_sales_price#7, d_year#9, d_moy#10] + +(38) NativeSort +Input [6]: [i_brand#2, i_category#3, ss_store_sk#6, ss_sales_price#7, d_year#9, d_moy#10] +Arguments: [ss_store_sk#6 ASC NULLS FIRST], false + +(130) Scan parquet +Output [3]: [s_store_sk#11, s_store_name#12, s_company_name#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk), IsNotNull(s_store_name), IsNotNull(s_company_name)] +ReadSchema: struct + +(40) InputAdapter +Input [3]: [s_store_sk#11, s_store_name#12, s_company_name#13] +Arguments: [#11, #12, #13] + +(41) NativeFilter +Input [3]: [#11#11, #12#12, #13#13] +Condition : ((isnotnull(s_store_sk#11) AND isnotnull(s_store_name#12)) AND isnotnull(s_company_name#13)) + +(42) NativeShuffleExchange +Input [3]: [#11#11, #12#12, #13#13] +Arguments: hashpartitioning(s_store_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(43) ShuffleQueryStage +Output [3]: [#11#11, #12#12, #13#13] +Arguments: X + +(44) AQEShuffleRead +Input [3]: [#11#11, #12#12, #13#13] +Arguments: coalesced + +(45) InputAdapter +Input [3]: [#11#11, #12#12, #13#13] + +(46) NativeSort +Input [3]: [#11#11, #12#12, #13#13] +Arguments: [s_store_sk#11 ASC NULLS FIRST], false + +(47) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#6] +Right keys [1]: [s_store_sk#11] +Join type: Inner +Join condition: None + +(48) NativeProject +Output [7]: [i_brand#2, i_category#3, ss_sales_price#7, d_year#9, d_moy#10, s_store_name#12, s_company_name#13] +Input [9]: [i_brand#2, i_category#3, ss_store_sk#6, ss_sales_price#7, d_year#9, d_moy#10, #11#11, #12#12, #13#13] + +(49) NativeProject +Output [7]: [i_category#3 AS i_category#3, i_brand#2 AS i_brand#2, s_store_name#12 AS s_store_name#12, s_company_name#13 AS s_company_name#13, d_year#9 AS d_year#9, d_moy#10 AS d_moy#10, UnscaledValue(ss_sales_price#7) AS _c6#14] +Input [7]: [i_brand#2, i_category#3, ss_sales_price#7, d_year#9, d_moy#10, s_store_name#12, s_company_name#13] + +(50) NativeHashAggregate +Input [7]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, _c6#14] +Keys [6]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10] +Functions [1]: [partial_sum(_c6#14)] +Aggregate Attributes [1]: [sum#15] +Results [7]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, #16#16] + +(51) NativeShuffleExchange +Input [7]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, #16#16] +Arguments: hashpartitioning(i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(52) ShuffleQueryStage +Output [7]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, #16#16] +Arguments: X + +(53) AQEShuffleRead +Input [7]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, #16#16] +Arguments: coalesced + +(54) InputAdapter +Input [7]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, #16#16] + +(55) NativeHashAggregate +Input [7]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, #16#16] +Keys [6]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10] +Functions [1]: [sum(UnscaledValue(ss_sales_price#7))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_sales_price#7))#17] +Results [7]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum(UnscaledValue(ss_sales_price#7))#17] + +(56) NativeProject +Output [8]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, MakeDecimal(sum(UnscaledValue(ss_sales_price#7))#17,17,2) AS sum_sales#18, MakeDecimal(sum(UnscaledValue(ss_sales_price#7))#17,17,2) AS _w0#19] +Input [7]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum(UnscaledValue(ss_sales_price#7))#17] + +(57) NativeShuffleExchange +Input [8]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, _w0#19] +Arguments: hashpartitioning(i_category#3, i_brand#2, s_store_name#12, s_company_name#13, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(58) ShuffleQueryStage +Output [8]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, _w0#19] +Arguments: X + +(59) AQEShuffleRead +Input [8]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, _w0#19] +Arguments: coalesced + +(60) InputAdapter +Input [8]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, _w0#19] + +(61) NativeSort +Input [8]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, _w0#19] +Arguments: [i_category#3 ASC NULLS FIRST, i_brand#2 ASC NULLS FIRST, s_store_name#12 ASC NULLS FIRST, s_company_name#13 ASC NULLS FIRST, d_year#9 ASC NULLS FIRST, d_moy#10 ASC NULLS FIRST], false + +(62) NativeWindow +Input [8]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, _w0#19] +Arguments: [rank(d_year#9, d_moy#10) windowspecdefinition(i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9 ASC NULLS FIRST, d_moy#10 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rn#20], [i_category#3, i_brand#2, s_store_name#12, s_company_name#13], [d_year#9 ASC NULLS FIRST, d_moy#10 ASC NULLS FIRST] + +(63) NativeFilter +Input [9]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, _w0#19, rn#20] +Condition : (isnotnull(d_year#9) AND (d_year#9 = 1999)) + +(64) Window +Input [9]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, _w0#19, rn#20] +Arguments: [avg(_w0#19) windowspecdefinition(i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS avg_monthly_sales#21], [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9] + +(65) Filter [codegen id : 1] +Input [10]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, _w0#19, rn#20, avg_monthly_sales#21] +Condition : ((isnotnull(avg_monthly_sales#21) AND (avg_monthly_sales#21 > 0.000000)) AND CASE WHEN (avg_monthly_sales#21 > 0.000000) THEN ((abs((sum_sales#18 - avg_monthly_sales#21)) / avg_monthly_sales#21) > 0.1000000000000000) END) + +(66) Project [codegen id : 1] +Output [9]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, avg_monthly_sales#21, rn#20] +Input [10]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, _w0#19, rn#20, avg_monthly_sales#21] + +(67) ConvertToNative +Input [9]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, avg_monthly_sales#21, rn#20] + +(68) NativeShuffleExchange +Input [9]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, avg_monthly_sales#21, rn#20] +Arguments: hashpartitioning(i_category#3, i_brand#2, s_store_name#12, s_company_name#13, rn#20, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(69) ShuffleQueryStage +Output [9]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, avg_monthly_sales#21, rn#20] +Arguments: X + +(70) AQEShuffleRead +Input [9]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, avg_monthly_sales#21, rn#20] +Arguments: coalesced + +(71) InputAdapter +Input [9]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, avg_monthly_sales#21, rn#20] + +(72) NativeSort +Input [9]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, avg_monthly_sales#21, rn#20] +Arguments: [i_category#3 ASC NULLS FIRST, i_brand#2 ASC NULLS FIRST, s_store_name#12 ASC NULLS FIRST, s_company_name#13 ASC NULLS FIRST, rn#20 ASC NULLS FIRST], false + +(73) ReusedExchange [Reuses operator id: 51] +Output [7]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, d_year#26, d_moy#27, sum#28] + +(74) ShuffleQueryStage +Output [7]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, d_year#26, d_moy#27, sum#28] +Arguments: X + +(75) AQEShuffleRead +Input [7]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, d_year#26, d_moy#27, sum#28] +Arguments: coalesced + +(76) InputAdapter +Input [7]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, d_year#26, d_moy#27, sum#28] +Arguments: [#22, #23, #24, #25, #26, #27, #29] + +(77) InputAdapter +Input [7]: [#22#22, #23#23, #24#24, #25#25, #26#26, #27#27, #29#28] + +(78) NativeHashAggregate +Input [7]: [#22#22, #23#23, #24#24, #25#25, #26#26, #27#27, #29#28] +Keys [6]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, d_year#26, d_moy#27] +Functions [1]: [sum(UnscaledValue(ss_sales_price#30))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_sales_price#30))#17] +Results [7]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, d_year#26, d_moy#27, sum(UnscaledValue(ss_sales_price#30))#17] + +(79) NativeProject +Output [7]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, d_year#26, d_moy#27, MakeDecimal(sum(UnscaledValue(ss_sales_price#30))#17,17,2) AS sum_sales#18] +Input [7]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, d_year#26, d_moy#27, sum(UnscaledValue(ss_sales_price#30))#17] + +(80) NativeShuffleExchange +Input [7]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, d_year#26, d_moy#27, sum_sales#18] +Arguments: hashpartitioning(i_category#22, i_brand#23, s_store_name#24, s_company_name#25, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(81) ShuffleQueryStage +Output [7]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, d_year#26, d_moy#27, sum_sales#18] +Arguments: X + +(82) AQEShuffleRead +Input [7]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, d_year#26, d_moy#27, sum_sales#18] +Arguments: coalesced + +(83) InputAdapter +Input [7]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, d_year#26, d_moy#27, sum_sales#18] + +(84) NativeSort +Input [7]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, d_year#26, d_moy#27, sum_sales#18] +Arguments: [i_category#22 ASC NULLS FIRST, i_brand#23 ASC NULLS FIRST, s_store_name#24 ASC NULLS FIRST, s_company_name#25 ASC NULLS FIRST, d_year#26 ASC NULLS FIRST, d_moy#27 ASC NULLS FIRST], false + +(85) NativeWindow +Input [7]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, d_year#26, d_moy#27, sum_sales#18] +Arguments: [rank(d_year#26, d_moy#27) windowspecdefinition(i_category#22, i_brand#23, s_store_name#24, s_company_name#25, d_year#26 ASC NULLS FIRST, d_moy#27 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rn#31], [i_category#22, i_brand#23, s_store_name#24, s_company_name#25], [d_year#26 ASC NULLS FIRST, d_moy#27 ASC NULLS FIRST] + +(86) NativeProject +Output [6]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, sum_sales#18 AS sum_sales#32, rn#31] +Input [8]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, d_year#26, d_moy#27, sum_sales#18, rn#31] + +(87) NativeShuffleExchange +Input [6]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, sum_sales#32, rn#31] +Arguments: hashpartitioning(i_category#22, i_brand#23, s_store_name#24, s_company_name#25, (rn#31 + 1), 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(88) ShuffleQueryStage +Output [6]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, sum_sales#32, rn#31] +Arguments: X + +(89) AQEShuffleRead +Input [6]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, sum_sales#32, rn#31] +Arguments: coalesced + +(90) InputAdapter +Input [6]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, sum_sales#32, rn#31] + +(91) NativeSort +Input [6]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, sum_sales#32, rn#31] +Arguments: [i_category#22 ASC NULLS FIRST, i_brand#23 ASC NULLS FIRST, s_store_name#24 ASC NULLS FIRST, s_company_name#25 ASC NULLS FIRST, (rn#31 + 1) ASC NULLS FIRST], false + +(92) NativeSortMergeJoin +Left keys [5]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, rn#20] +Right keys [5]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, (rn#31 + 1)] +Join type: Inner +Join condition: None + +(93) NativeProject +Output [10]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, avg_monthly_sales#21, rn#20, sum_sales#32] +Input [15]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, avg_monthly_sales#21, rn#20, i_category#22, i_brand#23, s_store_name#24, s_company_name#25, sum_sales#32, rn#31] + +(94) ReusedExchange [Reuses operator id: 80] +Output [7]: [i_category#33, i_brand#34, s_store_name#35, s_company_name#36, d_year#37, d_moy#38, sum_sales#18] + +(95) ShuffleQueryStage +Output [7]: [i_category#33, i_brand#34, s_store_name#35, s_company_name#36, d_year#37, d_moy#38, sum_sales#18] +Arguments: X + +(96) AQEShuffleRead +Input [7]: [i_category#33, i_brand#34, s_store_name#35, s_company_name#36, d_year#37, d_moy#38, sum_sales#18] +Arguments: coalesced + +(97) InputAdapter +Input [7]: [i_category#33, i_brand#34, s_store_name#35, s_company_name#36, d_year#37, d_moy#38, sum_sales#18] +Arguments: [#33, #34, #35, #36, #37, #38, #18] + +(98) InputAdapter +Input [7]: [#33#33, #34#34, #35#35, #36#36, #37#37, #38#38, #18#18] + +(99) NativeSort +Input [7]: [#33#33, #34#34, #35#35, #36#36, #37#37, #38#38, #18#18] +Arguments: [i_category#33 ASC NULLS FIRST, i_brand#34 ASC NULLS FIRST, s_store_name#35 ASC NULLS FIRST, s_company_name#36 ASC NULLS FIRST, d_year#37 ASC NULLS FIRST, d_moy#38 ASC NULLS FIRST], false + +(100) NativeWindow +Input [7]: [#33#33, #34#34, #35#35, #36#36, #37#37, #38#38, #18#18] +Arguments: [rank(d_year#37, d_moy#38) windowspecdefinition(i_category#33, i_brand#34, s_store_name#35, s_company_name#36, d_year#37 ASC NULLS FIRST, d_moy#38 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rn#39], [i_category#33, i_brand#34, s_store_name#35, s_company_name#36], [d_year#37 ASC NULLS FIRST, d_moy#38 ASC NULLS FIRST] + +(101) NativeProject +Output [6]: [i_category#33, i_brand#34, s_store_name#35, s_company_name#36, sum_sales#18 AS sum_sales#40, rn#39] +Input [8]: [#33#33, #34#34, #35#35, #36#36, #37#37, #38#38, #18#18, rn#39] + +(102) NativeShuffleExchange +Input [6]: [i_category#33, i_brand#34, s_store_name#35, s_company_name#36, sum_sales#40, rn#39] +Arguments: hashpartitioning(i_category#33, i_brand#34, s_store_name#35, s_company_name#36, (rn#39 - 1), 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(103) ShuffleQueryStage +Output [6]: [i_category#33, i_brand#34, s_store_name#35, s_company_name#36, sum_sales#40, rn#39] +Arguments: X + +(104) AQEShuffleRead +Input [6]: [i_category#33, i_brand#34, s_store_name#35, s_company_name#36, sum_sales#40, rn#39] +Arguments: coalesced + +(105) InputAdapter +Input [6]: [i_category#33, i_brand#34, s_store_name#35, s_company_name#36, sum_sales#40, rn#39] + +(106) NativeSort +Input [6]: [i_category#33, i_brand#34, s_store_name#35, s_company_name#36, sum_sales#40, rn#39] +Arguments: [i_category#33 ASC NULLS FIRST, i_brand#34 ASC NULLS FIRST, s_store_name#35 ASC NULLS FIRST, s_company_name#36 ASC NULLS FIRST, (rn#39 - 1) ASC NULLS FIRST], false + +(107) NativeSortMergeJoin +Left keys [5]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, rn#20] +Right keys [5]: [i_category#33, i_brand#34, s_store_name#35, s_company_name#36, (rn#39 - 1)] +Join type: Inner +Join condition: None + +(108) NativeProject +Output [10]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, avg_monthly_sales#21, sum_sales#18, sum_sales#32 AS psum#41, sum_sales#40 AS nsum#42] +Input [16]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, avg_monthly_sales#21, rn#20, sum_sales#32, i_category#33, i_brand#34, s_store_name#35, s_company_name#36, sum_sales#40, rn#39] + +(109) NativeTakeOrdered +Input [10]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, avg_monthly_sales#21, sum_sales#18, psum#41, nsum#42] +Arguments: X, [(sum_sales#18 - avg_monthly_sales#21) ASC NULLS FIRST, s_store_name#12 ASC NULLS FIRST] + +(110) Scan parquet +Output [3]: [i_item_sk#1, i_brand#2, i_category#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_category), IsNotNull(i_brand)] +ReadSchema: struct + +(111) Filter +Input [3]: [i_item_sk#1, i_brand#2, i_category#3] +Condition : ((isnotnull(i_item_sk#1) AND isnotnull(i_category#3)) AND isnotnull(i_brand#2)) + +(112) Exchange +Input [3]: [i_item_sk#1, i_brand#2, i_category#3] +Arguments: hashpartitioning(i_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(113) Sort +Input [3]: [i_item_sk#1, i_brand#2, i_category#3] +Arguments: [i_item_sk#1 ASC NULLS FIRST], false, 0 + +(114) Scan parquet +Output [4]: [ss_sold_date_sk#4, ss_item_sk#5, ss_store_sk#6, ss_sales_price#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(115) Filter +Input [4]: [ss_sold_date_sk#4, ss_item_sk#5, ss_store_sk#6, ss_sales_price#7] +Condition : ((isnotnull(ss_item_sk#5) AND isnotnull(ss_sold_date_sk#4)) AND isnotnull(ss_store_sk#6)) + +(116) Exchange +Input [4]: [ss_sold_date_sk#4, ss_item_sk#5, ss_store_sk#6, ss_sales_price#7] +Arguments: hashpartitioning(ss_item_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(117) Sort +Input [4]: [ss_sold_date_sk#4, ss_item_sk#5, ss_store_sk#6, ss_sales_price#7] +Arguments: [ss_item_sk#5 ASC NULLS FIRST], false, 0 + +(118) SortMergeJoin +Left keys [1]: [i_item_sk#1] +Right keys [1]: [ss_item_sk#5] +Join type: Inner +Join condition: None + +(119) Project +Output [5]: [i_brand#2, i_category#3, ss_sold_date_sk#4, ss_store_sk#6, ss_sales_price#7] +Input [7]: [i_item_sk#1, i_brand#2, i_category#3, ss_sold_date_sk#4, ss_item_sk#5, ss_store_sk#6, ss_sales_price#7] + +(120) Exchange +Input [5]: [i_brand#2, i_category#3, ss_sold_date_sk#4, ss_store_sk#6, ss_sales_price#7] +Arguments: hashpartitioning(ss_sold_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(121) Sort +Input [5]: [i_brand#2, i_category#3, ss_sold_date_sk#4, ss_store_sk#6, ss_sales_price#7] +Arguments: [ss_sold_date_sk#4 ASC NULLS FIRST], false, 0 + +(122) Scan parquet +Output [3]: [d_date_sk#8, d_year#9, d_moy#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(Or(EqualTo(d_year,1999),And(EqualTo(d_year,1998),EqualTo(d_moy,12))),And(EqualTo(d_year,2000),EqualTo(d_moy,1))), IsNotNull(d_date_sk)] +ReadSchema: struct + +(123) Filter +Input [3]: [d_date_sk#8, d_year#9, d_moy#10] +Condition : ((((d_year#9 = 1999) OR ((d_year#9 = 1998) AND (d_moy#10 = 12))) OR ((d_year#9 = 2000) AND (d_moy#10 = 1))) AND isnotnull(d_date_sk#8)) + +(124) Exchange +Input [3]: [d_date_sk#8, d_year#9, d_moy#10] +Arguments: hashpartitioning(d_date_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(125) Sort +Input [3]: [d_date_sk#8, d_year#9, d_moy#10] +Arguments: [d_date_sk#8 ASC NULLS FIRST], false, 0 + +(126) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#4] +Right keys [1]: [d_date_sk#8] +Join type: Inner +Join condition: None + +(127) Project +Output [6]: [i_brand#2, i_category#3, ss_store_sk#6, ss_sales_price#7, d_year#9, d_moy#10] +Input [8]: [i_brand#2, i_category#3, ss_sold_date_sk#4, ss_store_sk#6, ss_sales_price#7, d_date_sk#8, d_year#9, d_moy#10] + +(128) Exchange +Input [6]: [i_brand#2, i_category#3, ss_store_sk#6, ss_sales_price#7, d_year#9, d_moy#10] +Arguments: hashpartitioning(ss_store_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(129) Sort +Input [6]: [i_brand#2, i_category#3, ss_store_sk#6, ss_sales_price#7, d_year#9, d_moy#10] +Arguments: [ss_store_sk#6 ASC NULLS FIRST], false, 0 + +(130) Scan parquet +Output [3]: [s_store_sk#11, s_store_name#12, s_company_name#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk), IsNotNull(s_store_name), IsNotNull(s_company_name)] +ReadSchema: struct + +(131) Filter +Input [3]: [s_store_sk#11, s_store_name#12, s_company_name#13] +Condition : ((isnotnull(s_store_sk#11) AND isnotnull(s_store_name#12)) AND isnotnull(s_company_name#13)) + +(132) Exchange +Input [3]: [s_store_sk#11, s_store_name#12, s_company_name#13] +Arguments: hashpartitioning(s_store_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(133) Sort +Input [3]: [s_store_sk#11, s_store_name#12, s_company_name#13] +Arguments: [s_store_sk#11 ASC NULLS FIRST], false, 0 + +(134) SortMergeJoin +Left keys [1]: [ss_store_sk#6] +Right keys [1]: [s_store_sk#11] +Join type: Inner +Join condition: None + +(135) Project +Output [7]: [i_brand#2, i_category#3, ss_sales_price#7, d_year#9, d_moy#10, s_store_name#12, s_company_name#13] +Input [9]: [i_brand#2, i_category#3, ss_store_sk#6, ss_sales_price#7, d_year#9, d_moy#10, s_store_sk#11, s_store_name#12, s_company_name#13] + +(136) HashAggregate +Input [7]: [i_brand#2, i_category#3, ss_sales_price#7, d_year#9, d_moy#10, s_store_name#12, s_company_name#13] +Keys [6]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10] +Functions [1]: [partial_sum(UnscaledValue(ss_sales_price#7))] +Aggregate Attributes [1]: [sum#15] +Results [7]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum#43] + +(137) Exchange +Input [7]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum#43] +Arguments: hashpartitioning(i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(138) HashAggregate +Input [7]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum#43] +Keys [6]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10] +Functions [1]: [sum(UnscaledValue(ss_sales_price#7))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_sales_price#7))#17] +Results [8]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, MakeDecimal(sum(UnscaledValue(ss_sales_price#7))#17,17,2) AS sum_sales#18, MakeDecimal(sum(UnscaledValue(ss_sales_price#7))#17,17,2) AS _w0#19] + +(139) Exchange +Input [8]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, _w0#19] +Arguments: hashpartitioning(i_category#3, i_brand#2, s_store_name#12, s_company_name#13, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(140) Sort +Input [8]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, _w0#19] +Arguments: [i_category#3 ASC NULLS FIRST, i_brand#2 ASC NULLS FIRST, s_store_name#12 ASC NULLS FIRST, s_company_name#13 ASC NULLS FIRST, d_year#9 ASC NULLS FIRST, d_moy#10 ASC NULLS FIRST], false, 0 + +(141) Window +Input [8]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, _w0#19] +Arguments: [rank(d_year#9, d_moy#10) windowspecdefinition(i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9 ASC NULLS FIRST, d_moy#10 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rn#20], [i_category#3, i_brand#2, s_store_name#12, s_company_name#13], [d_year#9 ASC NULLS FIRST, d_moy#10 ASC NULLS FIRST] + +(142) Filter +Input [9]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, _w0#19, rn#20] +Condition : (isnotnull(d_year#9) AND (d_year#9 = 1999)) + +(143) Window +Input [9]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, _w0#19, rn#20] +Arguments: [avg(_w0#19) windowspecdefinition(i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS avg_monthly_sales#21], [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9] + +(144) Filter +Input [10]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, _w0#19, rn#20, avg_monthly_sales#21] +Condition : ((isnotnull(avg_monthly_sales#21) AND (avg_monthly_sales#21 > 0.000000)) AND CASE WHEN (avg_monthly_sales#21 > 0.000000) THEN ((abs((sum_sales#18 - avg_monthly_sales#21)) / avg_monthly_sales#21) > 0.1000000000000000) END) + +(145) Project +Output [9]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, avg_monthly_sales#21, rn#20] +Input [10]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, _w0#19, rn#20, avg_monthly_sales#21] + +(146) Exchange +Input [9]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, avg_monthly_sales#21, rn#20] +Arguments: hashpartitioning(i_category#3, i_brand#2, s_store_name#12, s_company_name#13, rn#20, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(147) Sort +Input [9]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, avg_monthly_sales#21, rn#20] +Arguments: [i_category#3 ASC NULLS FIRST, i_brand#2 ASC NULLS FIRST, s_store_name#12 ASC NULLS FIRST, s_company_name#13 ASC NULLS FIRST, rn#20 ASC NULLS FIRST], false, 0 + +(148) Scan parquet +Output [3]: [i_item_sk#44, i_brand#23, i_category#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_category), IsNotNull(i_brand)] +ReadSchema: struct + +(149) Filter +Input [3]: [i_item_sk#44, i_brand#23, i_category#22] +Condition : ((isnotnull(i_item_sk#44) AND isnotnull(i_category#22)) AND isnotnull(i_brand#23)) + +(150) Exchange +Input [3]: [i_item_sk#44, i_brand#23, i_category#22] +Arguments: hashpartitioning(i_item_sk#44, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(151) Sort +Input [3]: [i_item_sk#44, i_brand#23, i_category#22] +Arguments: [i_item_sk#44 ASC NULLS FIRST], false, 0 + +(152) Scan parquet +Output [4]: [ss_sold_date_sk#45, ss_item_sk#46, ss_store_sk#47, ss_sales_price#30] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(153) Filter +Input [4]: [ss_sold_date_sk#45, ss_item_sk#46, ss_store_sk#47, ss_sales_price#30] +Condition : ((isnotnull(ss_item_sk#46) AND isnotnull(ss_sold_date_sk#45)) AND isnotnull(ss_store_sk#47)) + +(154) Exchange +Input [4]: [ss_sold_date_sk#45, ss_item_sk#46, ss_store_sk#47, ss_sales_price#30] +Arguments: hashpartitioning(ss_item_sk#46, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(155) Sort +Input [4]: [ss_sold_date_sk#45, ss_item_sk#46, ss_store_sk#47, ss_sales_price#30] +Arguments: [ss_item_sk#46 ASC NULLS FIRST], false, 0 + +(156) SortMergeJoin +Left keys [1]: [i_item_sk#44] +Right keys [1]: [ss_item_sk#46] +Join type: Inner +Join condition: None + +(157) Project +Output [5]: [i_brand#23, i_category#22, ss_sold_date_sk#45, ss_store_sk#47, ss_sales_price#30] +Input [7]: [i_item_sk#44, i_brand#23, i_category#22, ss_sold_date_sk#45, ss_item_sk#46, ss_store_sk#47, ss_sales_price#30] + +(158) Exchange +Input [5]: [i_brand#23, i_category#22, ss_sold_date_sk#45, ss_store_sk#47, ss_sales_price#30] +Arguments: hashpartitioning(ss_sold_date_sk#45, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(159) Sort +Input [5]: [i_brand#23, i_category#22, ss_sold_date_sk#45, ss_store_sk#47, ss_sales_price#30] +Arguments: [ss_sold_date_sk#45 ASC NULLS FIRST], false, 0 + +(160) Scan parquet +Output [3]: [d_date_sk#48, d_year#26, d_moy#27] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(Or(EqualTo(d_year,1999),And(EqualTo(d_year,1998),EqualTo(d_moy,12))),And(EqualTo(d_year,2000),EqualTo(d_moy,1))), IsNotNull(d_date_sk)] +ReadSchema: struct + +(161) Filter +Input [3]: [d_date_sk#48, d_year#26, d_moy#27] +Condition : ((((d_year#26 = 1999) OR ((d_year#26 = 1998) AND (d_moy#27 = 12))) OR ((d_year#26 = 2000) AND (d_moy#27 = 1))) AND isnotnull(d_date_sk#48)) + +(162) Exchange +Input [3]: [d_date_sk#48, d_year#26, d_moy#27] +Arguments: hashpartitioning(d_date_sk#48, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(163) Sort +Input [3]: [d_date_sk#48, d_year#26, d_moy#27] +Arguments: [d_date_sk#48 ASC NULLS FIRST], false, 0 + +(164) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#45] +Right keys [1]: [d_date_sk#48] +Join type: Inner +Join condition: None + +(165) Project +Output [6]: [i_brand#23, i_category#22, ss_store_sk#47, ss_sales_price#30, d_year#26, d_moy#27] +Input [8]: [i_brand#23, i_category#22, ss_sold_date_sk#45, ss_store_sk#47, ss_sales_price#30, d_date_sk#48, d_year#26, d_moy#27] + +(166) Exchange +Input [6]: [i_brand#23, i_category#22, ss_store_sk#47, ss_sales_price#30, d_year#26, d_moy#27] +Arguments: hashpartitioning(ss_store_sk#47, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(167) Sort +Input [6]: [i_brand#23, i_category#22, ss_store_sk#47, ss_sales_price#30, d_year#26, d_moy#27] +Arguments: [ss_store_sk#47 ASC NULLS FIRST], false, 0 + +(168) Scan parquet +Output [3]: [s_store_sk#49, s_store_name#24, s_company_name#25] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk), IsNotNull(s_store_name), IsNotNull(s_company_name)] +ReadSchema: struct + +(169) Filter +Input [3]: [s_store_sk#49, s_store_name#24, s_company_name#25] +Condition : ((isnotnull(s_store_sk#49) AND isnotnull(s_store_name#24)) AND isnotnull(s_company_name#25)) + +(170) Exchange +Input [3]: [s_store_sk#49, s_store_name#24, s_company_name#25] +Arguments: hashpartitioning(s_store_sk#49, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(171) Sort +Input [3]: [s_store_sk#49, s_store_name#24, s_company_name#25] +Arguments: [s_store_sk#49 ASC NULLS FIRST], false, 0 + +(172) SortMergeJoin +Left keys [1]: [ss_store_sk#47] +Right keys [1]: [s_store_sk#49] +Join type: Inner +Join condition: None + +(173) Project +Output [7]: [i_brand#23, i_category#22, ss_sales_price#30, d_year#26, d_moy#27, s_store_name#24, s_company_name#25] +Input [9]: [i_brand#23, i_category#22, ss_store_sk#47, ss_sales_price#30, d_year#26, d_moy#27, s_store_sk#49, s_store_name#24, s_company_name#25] + +(174) HashAggregate +Input [7]: [i_brand#23, i_category#22, ss_sales_price#30, d_year#26, d_moy#27, s_store_name#24, s_company_name#25] +Keys [6]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, d_year#26, d_moy#27] +Functions [1]: [partial_sum(UnscaledValue(ss_sales_price#30))] +Aggregate Attributes [1]: [sum#50] +Results [7]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, d_year#26, d_moy#27, sum#28] + +(175) Exchange +Input [7]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, d_year#26, d_moy#27, sum#28] +Arguments: hashpartitioning(i_category#22, i_brand#23, s_store_name#24, s_company_name#25, d_year#26, d_moy#27, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(176) HashAggregate +Input [7]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, d_year#26, d_moy#27, sum#28] +Keys [6]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, d_year#26, d_moy#27] +Functions [1]: [sum(UnscaledValue(ss_sales_price#30))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_sales_price#30))#17] +Results [7]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, d_year#26, d_moy#27, MakeDecimal(sum(UnscaledValue(ss_sales_price#30))#17,17,2) AS sum_sales#18] + +(177) Exchange +Input [7]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, d_year#26, d_moy#27, sum_sales#18] +Arguments: hashpartitioning(i_category#22, i_brand#23, s_store_name#24, s_company_name#25, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(178) Sort +Input [7]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, d_year#26, d_moy#27, sum_sales#18] +Arguments: [i_category#22 ASC NULLS FIRST, i_brand#23 ASC NULLS FIRST, s_store_name#24 ASC NULLS FIRST, s_company_name#25 ASC NULLS FIRST, d_year#26 ASC NULLS FIRST, d_moy#27 ASC NULLS FIRST], false, 0 + +(179) Window +Input [7]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, d_year#26, d_moy#27, sum_sales#18] +Arguments: [rank(d_year#26, d_moy#27) windowspecdefinition(i_category#22, i_brand#23, s_store_name#24, s_company_name#25, d_year#26 ASC NULLS FIRST, d_moy#27 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rn#31], [i_category#22, i_brand#23, s_store_name#24, s_company_name#25], [d_year#26 ASC NULLS FIRST, d_moy#27 ASC NULLS FIRST] + +(180) Project +Output [6]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, sum_sales#18 AS sum_sales#32, rn#31] +Input [8]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, d_year#26, d_moy#27, sum_sales#18, rn#31] + +(181) Exchange +Input [6]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, sum_sales#32, rn#31] +Arguments: hashpartitioning(i_category#22, i_brand#23, s_store_name#24, s_company_name#25, (rn#31 + 1), 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(182) Sort +Input [6]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, sum_sales#32, rn#31] +Arguments: [i_category#22 ASC NULLS FIRST, i_brand#23 ASC NULLS FIRST, s_store_name#24 ASC NULLS FIRST, s_company_name#25 ASC NULLS FIRST, (rn#31 + 1) ASC NULLS FIRST], false, 0 + +(183) SortMergeJoin +Left keys [5]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, rn#20] +Right keys [5]: [i_category#22, i_brand#23, s_store_name#24, s_company_name#25, (rn#31 + 1)] +Join type: Inner +Join condition: None + +(184) Project +Output [10]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, avg_monthly_sales#21, rn#20, sum_sales#32] +Input [15]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, avg_monthly_sales#21, rn#20, i_category#22, i_brand#23, s_store_name#24, s_company_name#25, sum_sales#32, rn#31] + +(185) Scan parquet +Output [3]: [i_item_sk#51, i_brand#34, i_category#33] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_category), IsNotNull(i_brand)] +ReadSchema: struct + +(186) Filter +Input [3]: [i_item_sk#51, i_brand#34, i_category#33] +Condition : ((isnotnull(i_item_sk#51) AND isnotnull(i_category#33)) AND isnotnull(i_brand#34)) + +(187) Exchange +Input [3]: [i_item_sk#51, i_brand#34, i_category#33] +Arguments: hashpartitioning(i_item_sk#51, 100), ENSURE_REQUIREMENTS, [plan_id=31] + +(188) Sort +Input [3]: [i_item_sk#51, i_brand#34, i_category#33] +Arguments: [i_item_sk#51 ASC NULLS FIRST], false, 0 + +(189) Scan parquet +Output [4]: [ss_sold_date_sk#52, ss_item_sk#53, ss_store_sk#54, ss_sales_price#55] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(190) Filter +Input [4]: [ss_sold_date_sk#52, ss_item_sk#53, ss_store_sk#54, ss_sales_price#55] +Condition : ((isnotnull(ss_item_sk#53) AND isnotnull(ss_sold_date_sk#52)) AND isnotnull(ss_store_sk#54)) + +(191) Exchange +Input [4]: [ss_sold_date_sk#52, ss_item_sk#53, ss_store_sk#54, ss_sales_price#55] +Arguments: hashpartitioning(ss_item_sk#53, 100), ENSURE_REQUIREMENTS, [plan_id=32] + +(192) Sort +Input [4]: [ss_sold_date_sk#52, ss_item_sk#53, ss_store_sk#54, ss_sales_price#55] +Arguments: [ss_item_sk#53 ASC NULLS FIRST], false, 0 + +(193) SortMergeJoin +Left keys [1]: [i_item_sk#51] +Right keys [1]: [ss_item_sk#53] +Join type: Inner +Join condition: None + +(194) Project +Output [5]: [i_brand#34, i_category#33, ss_sold_date_sk#52, ss_store_sk#54, ss_sales_price#55] +Input [7]: [i_item_sk#51, i_brand#34, i_category#33, ss_sold_date_sk#52, ss_item_sk#53, ss_store_sk#54, ss_sales_price#55] + +(195) Exchange +Input [5]: [i_brand#34, i_category#33, ss_sold_date_sk#52, ss_store_sk#54, ss_sales_price#55] +Arguments: hashpartitioning(ss_sold_date_sk#52, 100), ENSURE_REQUIREMENTS, [plan_id=33] + +(196) Sort +Input [5]: [i_brand#34, i_category#33, ss_sold_date_sk#52, ss_store_sk#54, ss_sales_price#55] +Arguments: [ss_sold_date_sk#52 ASC NULLS FIRST], false, 0 + +(197) Scan parquet +Output [3]: [d_date_sk#56, d_year#37, d_moy#38] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(Or(EqualTo(d_year,1999),And(EqualTo(d_year,1998),EqualTo(d_moy,12))),And(EqualTo(d_year,2000),EqualTo(d_moy,1))), IsNotNull(d_date_sk)] +ReadSchema: struct + +(198) Filter +Input [3]: [d_date_sk#56, d_year#37, d_moy#38] +Condition : ((((d_year#37 = 1999) OR ((d_year#37 = 1998) AND (d_moy#38 = 12))) OR ((d_year#37 = 2000) AND (d_moy#38 = 1))) AND isnotnull(d_date_sk#56)) + +(199) Exchange +Input [3]: [d_date_sk#56, d_year#37, d_moy#38] +Arguments: hashpartitioning(d_date_sk#56, 100), ENSURE_REQUIREMENTS, [plan_id=34] + +(200) Sort +Input [3]: [d_date_sk#56, d_year#37, d_moy#38] +Arguments: [d_date_sk#56 ASC NULLS FIRST], false, 0 + +(201) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#52] +Right keys [1]: [d_date_sk#56] +Join type: Inner +Join condition: None + +(202) Project +Output [6]: [i_brand#34, i_category#33, ss_store_sk#54, ss_sales_price#55, d_year#37, d_moy#38] +Input [8]: [i_brand#34, i_category#33, ss_sold_date_sk#52, ss_store_sk#54, ss_sales_price#55, d_date_sk#56, d_year#37, d_moy#38] + +(203) Exchange +Input [6]: [i_brand#34, i_category#33, ss_store_sk#54, ss_sales_price#55, d_year#37, d_moy#38] +Arguments: hashpartitioning(ss_store_sk#54, 100), ENSURE_REQUIREMENTS, [plan_id=35] + +(204) Sort +Input [6]: [i_brand#34, i_category#33, ss_store_sk#54, ss_sales_price#55, d_year#37, d_moy#38] +Arguments: [ss_store_sk#54 ASC NULLS FIRST], false, 0 + +(205) Scan parquet +Output [3]: [s_store_sk#57, s_store_name#35, s_company_name#36] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk), IsNotNull(s_store_name), IsNotNull(s_company_name)] +ReadSchema: struct + +(206) Filter +Input [3]: [s_store_sk#57, s_store_name#35, s_company_name#36] +Condition : ((isnotnull(s_store_sk#57) AND isnotnull(s_store_name#35)) AND isnotnull(s_company_name#36)) + +(207) Exchange +Input [3]: [s_store_sk#57, s_store_name#35, s_company_name#36] +Arguments: hashpartitioning(s_store_sk#57, 100), ENSURE_REQUIREMENTS, [plan_id=36] + +(208) Sort +Input [3]: [s_store_sk#57, s_store_name#35, s_company_name#36] +Arguments: [s_store_sk#57 ASC NULLS FIRST], false, 0 + +(209) SortMergeJoin +Left keys [1]: [ss_store_sk#54] +Right keys [1]: [s_store_sk#57] +Join type: Inner +Join condition: None + +(210) Project +Output [7]: [i_brand#34, i_category#33, ss_sales_price#55, d_year#37, d_moy#38, s_store_name#35, s_company_name#36] +Input [9]: [i_brand#34, i_category#33, ss_store_sk#54, ss_sales_price#55, d_year#37, d_moy#38, s_store_sk#57, s_store_name#35, s_company_name#36] + +(211) HashAggregate +Input [7]: [i_brand#34, i_category#33, ss_sales_price#55, d_year#37, d_moy#38, s_store_name#35, s_company_name#36] +Keys [6]: [i_category#33, i_brand#34, s_store_name#35, s_company_name#36, d_year#37, d_moy#38] +Functions [1]: [partial_sum(UnscaledValue(ss_sales_price#55))] +Aggregate Attributes [1]: [sum#58] +Results [7]: [i_category#33, i_brand#34, s_store_name#35, s_company_name#36, d_year#37, d_moy#38, sum#59] + +(212) Exchange +Input [7]: [i_category#33, i_brand#34, s_store_name#35, s_company_name#36, d_year#37, d_moy#38, sum#59] +Arguments: hashpartitioning(i_category#33, i_brand#34, s_store_name#35, s_company_name#36, d_year#37, d_moy#38, 100), ENSURE_REQUIREMENTS, [plan_id=37] + +(213) HashAggregate +Input [7]: [i_category#33, i_brand#34, s_store_name#35, s_company_name#36, d_year#37, d_moy#38, sum#59] +Keys [6]: [i_category#33, i_brand#34, s_store_name#35, s_company_name#36, d_year#37, d_moy#38] +Functions [1]: [sum(UnscaledValue(ss_sales_price#55))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_sales_price#55))#17] +Results [7]: [i_category#33, i_brand#34, s_store_name#35, s_company_name#36, d_year#37, d_moy#38, MakeDecimal(sum(UnscaledValue(ss_sales_price#55))#17,17,2) AS sum_sales#18] + +(214) Exchange +Input [7]: [i_category#33, i_brand#34, s_store_name#35, s_company_name#36, d_year#37, d_moy#38, sum_sales#18] +Arguments: hashpartitioning(i_category#33, i_brand#34, s_store_name#35, s_company_name#36, 100), ENSURE_REQUIREMENTS, [plan_id=38] + +(215) Sort +Input [7]: [i_category#33, i_brand#34, s_store_name#35, s_company_name#36, d_year#37, d_moy#38, sum_sales#18] +Arguments: [i_category#33 ASC NULLS FIRST, i_brand#34 ASC NULLS FIRST, s_store_name#35 ASC NULLS FIRST, s_company_name#36 ASC NULLS FIRST, d_year#37 ASC NULLS FIRST, d_moy#38 ASC NULLS FIRST], false, 0 + +(216) Window +Input [7]: [i_category#33, i_brand#34, s_store_name#35, s_company_name#36, d_year#37, d_moy#38, sum_sales#18] +Arguments: [rank(d_year#37, d_moy#38) windowspecdefinition(i_category#33, i_brand#34, s_store_name#35, s_company_name#36, d_year#37 ASC NULLS FIRST, d_moy#38 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rn#39], [i_category#33, i_brand#34, s_store_name#35, s_company_name#36], [d_year#37 ASC NULLS FIRST, d_moy#38 ASC NULLS FIRST] + +(217) Project +Output [6]: [i_category#33, i_brand#34, s_store_name#35, s_company_name#36, sum_sales#18 AS sum_sales#40, rn#39] +Input [8]: [i_category#33, i_brand#34, s_store_name#35, s_company_name#36, d_year#37, d_moy#38, sum_sales#18, rn#39] + +(218) Exchange +Input [6]: [i_category#33, i_brand#34, s_store_name#35, s_company_name#36, sum_sales#40, rn#39] +Arguments: hashpartitioning(i_category#33, i_brand#34, s_store_name#35, s_company_name#36, (rn#39 - 1), 100), ENSURE_REQUIREMENTS, [plan_id=39] + +(219) Sort +Input [6]: [i_category#33, i_brand#34, s_store_name#35, s_company_name#36, sum_sales#40, rn#39] +Arguments: [i_category#33 ASC NULLS FIRST, i_brand#34 ASC NULLS FIRST, s_store_name#35 ASC NULLS FIRST, s_company_name#36 ASC NULLS FIRST, (rn#39 - 1) ASC NULLS FIRST], false, 0 + +(220) SortMergeJoin +Left keys [5]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, rn#20] +Right keys [5]: [i_category#33, i_brand#34, s_store_name#35, s_company_name#36, (rn#39 - 1)] +Join type: Inner +Join condition: None + +(221) Project +Output [10]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, avg_monthly_sales#21, sum_sales#18, sum_sales#32 AS psum#41, sum_sales#40 AS nsum#42] +Input [16]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, sum_sales#18, avg_monthly_sales#21, rn#20, sum_sales#32, i_category#33, i_brand#34, s_store_name#35, s_company_name#36, sum_sales#40, rn#39] + +(222) TakeOrderedAndProject +Input [10]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, avg_monthly_sales#21, sum_sales#18, psum#41, nsum#42] +Arguments: X, [(sum_sales#18 - avg_monthly_sales#21) ASC NULLS FIRST, s_store_name#12 ASC NULLS FIRST], [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, avg_monthly_sales#21, sum_sales#18, psum#41, nsum#42] + +(223) AdaptiveSparkPlan +Output [10]: [i_category#3, i_brand#2, s_store_name#12, s_company_name#13, d_year#9, d_moy#10, avg_monthly_sales#21, sum_sales#18, psum#41, nsum#42] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q48.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q48.txt new file mode 100644 index 000000000..dcba247fd --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q48.txt @@ -0,0 +1,613 @@ +== Physical Plan == +AdaptiveSparkPlan (112) ++- == Final Plan == + NativeProject (72) + +- NativeHashAggregate (71) + +- ShuffleQueryStage (70), Statistics(X) + +- NativeShuffleExchange (69) + +- NativeHashAggregate (68) + +- NativeProject (67) + +- NativeSortMergeJoin Inner (66) + :- NativeSort (56) + : +- InputAdapter (55) + : +- AQEShuffleRead (54) + : +- ShuffleQueryStage (53), Statistics(X) + : +- NativeShuffleExchange (52) + : +- ConvertToNative (51) + : +- * Project (50) + : +- * SortMergeJoin Inner (49) + : :- NativeSort (39) + : : +- InputAdapter (38) + : : +- AQEShuffleRead (37) + : : +- ShuffleQueryStage (36), Statistics(X) + : : +- NativeShuffleExchange (35) + : : +- ConvertToNative (34) + : : +- * Project (33) + : : +- * SortMergeJoin Inner (32) + : : :- NativeSort (23) + : : : +- InputAdapter (22) + : : : +- AQEShuffleRead (21) + : : : +- ShuffleQueryStage (20), Statistics(X) + : : : +- NativeShuffleExchange (19) + : : : +- NativeProject (18) + : : : +- NativeSortMergeJoin Inner (17) + : : : :- NativeSort (8) + : : : : +- InputAdapter (7) + : : : : +- AQEShuffleRead (6) + : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : +- NativeShuffleExchange (4) + : : : : +- NativeFilter (3) + : : : : +- InputAdapter (2) + : : : : +- NativeParquetScan (1) + : : : +- NativeSort (16) + : : : +- InputAdapter (15) + : : : +- AQEShuffleRead (14) + : : : +- ShuffleQueryStage (13), Statistics(X) + : : : +- NativeShuffleExchange (12) + : : : +- NativeFilter (11) + : : : +- InputAdapter (10) + : : : +- NativeParquetScan (9) + : : +- NativeSort (31) + : : +- InputAdapter (30) + : : +- AQEShuffleRead (29) + : : +- ShuffleQueryStage (28), Statistics(X) + : : +- NativeShuffleExchange (27) + : : +- NativeFilter (26) + : : +- InputAdapter (25) + : : +- NativeParquetScan (24) + : +- NativeSort (48) + : +- InputAdapter (47) + : +- AQEShuffleRead (46) + : +- ShuffleQueryStage (45), Statistics(X) + : +- NativeShuffleExchange (44) + : +- NativeProject (43) + : +- NativeFilter (42) + : +- InputAdapter (41) + : +- NativeParquetScan (40) + +- NativeSort (65) + +- InputAdapter (64) + +- AQEShuffleRead (63) + +- ShuffleQueryStage (62), Statistics(X) + +- NativeShuffleExchange (61) + +- NativeProject (60) + +- NativeFilter (59) + +- InputAdapter (58) + +- NativeParquetScan (57) ++- == Initial Plan == + HashAggregate (111) + +- Exchange (110) + +- HashAggregate (109) + +- Project (108) + +- SortMergeJoin Inner (107) + :- Sort (101) + : +- Exchange (100) + : +- Project (99) + : +- SortMergeJoin Inner (98) + : :- Sort (92) + : : +- Exchange (91) + : : +- Project (90) + : : +- SortMergeJoin Inner (89) + : : :- Sort (84) + : : : +- Exchange (83) + : : : +- Project (82) + : : : +- SortMergeJoin Inner (81) + : : : :- Sort (76) + : : : : +- Exchange (75) + : : : : +- Filter (74) + : : : : +- Scan parquet (73) + : : : +- Sort (80) + : : : +- Exchange (79) + : : : +- Filter (78) + : : : +- Scan parquet (77) + : : +- Sort (88) + : : +- Exchange (87) + : : +- Filter (86) + : : +- Scan parquet (85) + : +- Sort (97) + : +- Exchange (96) + : +- Project (95) + : +- Filter (94) + : +- Scan parquet (93) + +- Sort (106) + +- Exchange (105) + +- Project (104) + +- Filter (103) + +- Scan parquet (102) + + +(73) Scan parquet +Output [7]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_addr_sk#3, ss_store_sk#4, ss_quantity#5, ss_sales_price#6, ss_net_profit#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_store_sk), IsNotNull(ss_cdemo_sk), IsNotNull(ss_addr_sk), IsNotNull(ss_sold_date_sk), Or(Or(And(GreaterThanOrEqual(ss_sales_price,100.00),LessThanOrEqual(ss_sales_price,150.00)),And(GreaterThanOrEqual(ss_sales_price,50.00),LessThanOrEqual(ss_sales_price,100.00))),And(GreaterThanOrEqual(ss_sales_price,150.00),LessThanOrEqual(ss_sales_price,200.00))), Or(Or(And(GreaterThanOrEqual(ss_net_profit,0.00),LessThanOrEqual(ss_net_profit,2000.00)),And(GreaterThanOrEqual(ss_net_profit,150.00),LessThanOrEqual(ss_net_profit,3000.00))),And(GreaterThanOrEqual(ss_net_profit,50.00),LessThanOrEqual(ss_net_profit,25000.00)))] +ReadSchema: struct + +(2) InputAdapter +Input [7]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_addr_sk#3, ss_store_sk#4, ss_quantity#5, ss_sales_price#6, ss_net_profit#7] +Arguments: [#1, #2, #3, #4, #5, #6, #7] + +(3) NativeFilter +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Condition : (((((isnotnull(ss_store_sk#4) AND isnotnull(ss_cdemo_sk#2)) AND isnotnull(ss_addr_sk#3)) AND isnotnull(ss_sold_date_sk#1)) AND ((((ss_sales_price#6 >= 100.00) AND (ss_sales_price#6 <= 150.00)) OR ((ss_sales_price#6 >= 50.00) AND (ss_sales_price#6 <= 100.00))) OR ((ss_sales_price#6 >= 150.00) AND (ss_sales_price#6 <= 200.00)))) AND ((((ss_net_profit#7 >= 0.00) AND (ss_net_profit#7 <= 2000.00)) OR ((ss_net_profit#7 >= 150.00) AND (ss_net_profit#7 <= 3000.00))) OR ((ss_net_profit#7 >= 50.00) AND (ss_net_profit#7 <= 25000.00)))) + +(4) NativeShuffleExchange +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Arguments: hashpartitioning(ss_store_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Arguments: X + +(6) AQEShuffleRead +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Arguments: coalesced + +(7) InputAdapter +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] + +(8) NativeSort +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Arguments: [ss_store_sk#4 ASC NULLS FIRST], false + +(77) Scan parquet +Output [1]: [s_store_sk#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [1]: [s_store_sk#8] +Arguments: [#8] + +(11) NativeFilter +Input [1]: [#8#8] +Condition : isnotnull(s_store_sk#8) + +(12) NativeShuffleExchange +Input [1]: [#8#8] +Arguments: hashpartitioning(s_store_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [1]: [#8#8] +Arguments: X + +(14) AQEShuffleRead +Input [1]: [#8#8] +Arguments: coalesced + +(15) InputAdapter +Input [1]: [#8#8] + +(16) NativeSort +Input [1]: [#8#8] +Arguments: [s_store_sk#8 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#4] +Right keys [1]: [s_store_sk#8] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [6]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_addr_sk#3, ss_quantity#5, ss_sales_price#6, ss_net_profit#7] +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] + +(19) NativeShuffleExchange +Input [6]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_addr_sk#3, ss_quantity#5, ss_sales_price#6, ss_net_profit#7] +Arguments: hashpartitioning(ss_cdemo_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [6]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_addr_sk#3, ss_quantity#5, ss_sales_price#6, ss_net_profit#7] +Arguments: X + +(21) AQEShuffleRead +Input [6]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_addr_sk#3, ss_quantity#5, ss_sales_price#6, ss_net_profit#7] +Arguments: coalesced + +(22) InputAdapter +Input [6]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_addr_sk#3, ss_quantity#5, ss_sales_price#6, ss_net_profit#7] + +(23) NativeSort +Input [6]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_addr_sk#3, ss_quantity#5, ss_sales_price#6, ss_net_profit#7] +Arguments: [ss_cdemo_sk#2 ASC NULLS FIRST], false + +(85) Scan parquet +Output [3]: [cd_demo_sk#9, cd_marital_status#10, cd_education_status#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_demo_sk), Or(Or(And(EqualTo(cd_marital_status,M),EqualTo(cd_education_status,4 yr Degree)),And(EqualTo(cd_marital_status,D),EqualTo(cd_education_status,2 yr Degree))),And(EqualTo(cd_marital_status,S),EqualTo(cd_education_status,College)))] +ReadSchema: struct + +(25) InputAdapter +Input [3]: [cd_demo_sk#9, cd_marital_status#10, cd_education_status#11] +Arguments: [#9, #10, #11] + +(26) NativeFilter +Input [3]: [#9#9, #10#10, #11#11] +Condition : (isnotnull(cd_demo_sk#9) AND ((((cd_marital_status#10 = M) AND (cd_education_status#11 = 4 yr Degree)) OR ((cd_marital_status#10 = D) AND (cd_education_status#11 = 2 yr Degree))) OR ((cd_marital_status#10 = S) AND (cd_education_status#11 = College)))) + +(27) NativeShuffleExchange +Input [3]: [#9#9, #10#10, #11#11] +Arguments: hashpartitioning(cd_demo_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(28) ShuffleQueryStage +Output [3]: [#9#9, #10#10, #11#11] +Arguments: X + +(29) AQEShuffleRead +Input [3]: [#9#9, #10#10, #11#11] +Arguments: coalesced + +(30) InputAdapter +Input [3]: [#9#9, #10#10, #11#11] + +(31) NativeSort +Input [3]: [#9#9, #10#10, #11#11] +Arguments: [cd_demo_sk#9 ASC NULLS FIRST], false + +(32) SortMergeJoin [codegen id : 1] +Left keys [1]: [ss_cdemo_sk#2] +Right keys [1]: [cd_demo_sk#9] +Join type: Inner +Join condition: ((((((cd_marital_status#10 = M) AND (cd_education_status#11 = 4 yr Degree)) AND (ss_sales_price#6 >= 100.00)) AND (ss_sales_price#6 <= 150.00)) OR ((((cd_marital_status#10 = D) AND (cd_education_status#11 = 2 yr Degree)) AND (ss_sales_price#6 >= 50.00)) AND (ss_sales_price#6 <= 100.00))) OR ((((cd_marital_status#10 = S) AND (cd_education_status#11 = College)) AND (ss_sales_price#6 >= 150.00)) AND (ss_sales_price#6 <= 200.00))) + +(33) Project [codegen id : 1] +Output [4]: [ss_sold_date_sk#1, ss_addr_sk#3, ss_quantity#5, ss_net_profit#7] +Input [9]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_addr_sk#3, ss_quantity#5, ss_sales_price#6, ss_net_profit#7, #9#9, #10#10, #11#11] + +(34) ConvertToNative +Input [4]: [ss_sold_date_sk#1, ss_addr_sk#3, ss_quantity#5, ss_net_profit#7] + +(35) NativeShuffleExchange +Input [4]: [ss_sold_date_sk#1, ss_addr_sk#3, ss_quantity#5, ss_net_profit#7] +Arguments: hashpartitioning(ss_addr_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(36) ShuffleQueryStage +Output [4]: [ss_sold_date_sk#1, ss_addr_sk#3, ss_quantity#5, ss_net_profit#7] +Arguments: X + +(37) AQEShuffleRead +Input [4]: [ss_sold_date_sk#1, ss_addr_sk#3, ss_quantity#5, ss_net_profit#7] +Arguments: coalesced + +(38) InputAdapter +Input [4]: [ss_sold_date_sk#1, ss_addr_sk#3, ss_quantity#5, ss_net_profit#7] + +(39) NativeSort +Input [4]: [ss_sold_date_sk#1, ss_addr_sk#3, ss_quantity#5, ss_net_profit#7] +Arguments: [ss_addr_sk#3 ASC NULLS FIRST], false + +(93) Scan parquet +Output [3]: [ca_address_sk#12, ca_state#13, ca_country#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_country), EqualTo(ca_country,United States), IsNotNull(ca_address_sk), Or(Or(In(ca_state, [CO,OH,TX]),In(ca_state, [KY,MN,OR])),In(ca_state, [CA,MS,VA]))] +ReadSchema: struct + +(41) InputAdapter +Input [3]: [ca_address_sk#12, ca_state#13, ca_country#14] +Arguments: [#12, #13, #14] + +(42) NativeFilter +Input [3]: [#12#12, #13#13, #14#14] +Condition : (((isnotnull(ca_country#14) AND (ca_country#14 = United States)) AND isnotnull(ca_address_sk#12)) AND ((ca_state#13 IN (CO,OH,TX) OR ca_state#13 IN (OR,MN,KY)) OR ca_state#13 IN (VA,CA,MS))) + +(43) NativeProject +Output [2]: [ca_address_sk#12, ca_state#13] +Input [3]: [#12#12, #13#13, #14#14] + +(44) NativeShuffleExchange +Input [2]: [ca_address_sk#12, ca_state#13] +Arguments: hashpartitioning(ca_address_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(45) ShuffleQueryStage +Output [2]: [ca_address_sk#12, ca_state#13] +Arguments: X + +(46) AQEShuffleRead +Input [2]: [ca_address_sk#12, ca_state#13] +Arguments: coalesced + +(47) InputAdapter +Input [2]: [ca_address_sk#12, ca_state#13] + +(48) NativeSort +Input [2]: [ca_address_sk#12, ca_state#13] +Arguments: [ca_address_sk#12 ASC NULLS FIRST], false + +(49) SortMergeJoin [codegen id : 2] +Left keys [1]: [ss_addr_sk#3] +Right keys [1]: [ca_address_sk#12] +Join type: Inner +Join condition: ((((ca_state#13 IN (CO,OH,TX) AND (ss_net_profit#7 >= 0.00)) AND (ss_net_profit#7 <= 2000.00)) OR ((ca_state#13 IN (OR,MN,KY) AND (ss_net_profit#7 >= 150.00)) AND (ss_net_profit#7 <= 3000.00))) OR ((ca_state#13 IN (VA,CA,MS) AND (ss_net_profit#7 >= 50.00)) AND (ss_net_profit#7 <= 25000.00))) + +(50) Project [codegen id : 2] +Output [2]: [ss_sold_date_sk#1, ss_quantity#5] +Input [6]: [ss_sold_date_sk#1, ss_addr_sk#3, ss_quantity#5, ss_net_profit#7, ca_address_sk#12, ca_state#13] + +(51) ConvertToNative +Input [2]: [ss_sold_date_sk#1, ss_quantity#5] + +(52) NativeShuffleExchange +Input [2]: [ss_sold_date_sk#1, ss_quantity#5] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(53) ShuffleQueryStage +Output [2]: [ss_sold_date_sk#1, ss_quantity#5] +Arguments: X + +(54) AQEShuffleRead +Input [2]: [ss_sold_date_sk#1, ss_quantity#5] +Arguments: coalesced + +(55) InputAdapter +Input [2]: [ss_sold_date_sk#1, ss_quantity#5] + +(56) NativeSort +Input [2]: [ss_sold_date_sk#1, ss_quantity#5] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(102) Scan parquet +Output [2]: [d_date_sk#15, d_year#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(58) InputAdapter +Input [2]: [d_date_sk#15, d_year#16] +Arguments: [#15, #16] + +(59) NativeFilter +Input [2]: [#15#15, #16#16] +Condition : ((isnotnull(d_year#16) AND (d_year#16 = 2001)) AND isnotnull(d_date_sk#15)) + +(60) NativeProject +Output [1]: [d_date_sk#15] +Input [2]: [#15#15, #16#16] + +(61) NativeShuffleExchange +Input [1]: [d_date_sk#15] +Arguments: hashpartitioning(d_date_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(62) ShuffleQueryStage +Output [1]: [d_date_sk#15] +Arguments: X + +(63) AQEShuffleRead +Input [1]: [d_date_sk#15] +Arguments: coalesced + +(64) InputAdapter +Input [1]: [d_date_sk#15] + +(65) NativeSort +Input [1]: [d_date_sk#15] +Arguments: [d_date_sk#15 ASC NULLS FIRST], false + +(66) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#15] +Join type: Inner +Join condition: None + +(67) NativeProject +Output [1]: [ss_quantity#5] +Input [3]: [ss_sold_date_sk#1, ss_quantity#5, d_date_sk#15] + +(68) NativeHashAggregate +Input [1]: [ss_quantity#5] +Keys: [] +Functions [1]: [partial_sum(ss_quantity#5)] +Aggregate Attributes [1]: [sum#17] +Results [1]: [#18#18] + +(69) NativeShuffleExchange +Input [1]: [#18#18] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=9] + +(70) ShuffleQueryStage +Output [1]: [#18#18] +Arguments: X + +(71) NativeHashAggregate +Input [1]: [#18#18] +Keys: [] +Functions [1]: [sum(ss_quantity#5)] +Aggregate Attributes [1]: [sum(ss_quantity#5)#19] +Results [1]: [sum(ss_quantity#5)#19] + +(72) NativeProject +Output [1]: [sum(ss_quantity#5)#19 AS sum(ss_quantity)#20] +Input [1]: [sum(ss_quantity#5)#19] + +(73) Scan parquet +Output [7]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_addr_sk#3, ss_store_sk#4, ss_quantity#5, ss_sales_price#6, ss_net_profit#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_store_sk), IsNotNull(ss_cdemo_sk), IsNotNull(ss_addr_sk), IsNotNull(ss_sold_date_sk), Or(Or(And(GreaterThanOrEqual(ss_sales_price,100.00),LessThanOrEqual(ss_sales_price,150.00)),And(GreaterThanOrEqual(ss_sales_price,50.00),LessThanOrEqual(ss_sales_price,100.00))),And(GreaterThanOrEqual(ss_sales_price,150.00),LessThanOrEqual(ss_sales_price,200.00))), Or(Or(And(GreaterThanOrEqual(ss_net_profit,0.00),LessThanOrEqual(ss_net_profit,2000.00)),And(GreaterThanOrEqual(ss_net_profit,150.00),LessThanOrEqual(ss_net_profit,3000.00))),And(GreaterThanOrEqual(ss_net_profit,50.00),LessThanOrEqual(ss_net_profit,25000.00)))] +ReadSchema: struct + +(74) Filter +Input [7]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_addr_sk#3, ss_store_sk#4, ss_quantity#5, ss_sales_price#6, ss_net_profit#7] +Condition : (((((isnotnull(ss_store_sk#4) AND isnotnull(ss_cdemo_sk#2)) AND isnotnull(ss_addr_sk#3)) AND isnotnull(ss_sold_date_sk#1)) AND ((((ss_sales_price#6 >= 100.00) AND (ss_sales_price#6 <= 150.00)) OR ((ss_sales_price#6 >= 50.00) AND (ss_sales_price#6 <= 100.00))) OR ((ss_sales_price#6 >= 150.00) AND (ss_sales_price#6 <= 200.00)))) AND ((((ss_net_profit#7 >= 0.00) AND (ss_net_profit#7 <= 2000.00)) OR ((ss_net_profit#7 >= 150.00) AND (ss_net_profit#7 <= 3000.00))) OR ((ss_net_profit#7 >= 50.00) AND (ss_net_profit#7 <= 25000.00)))) + +(75) Exchange +Input [7]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_addr_sk#3, ss_store_sk#4, ss_quantity#5, ss_sales_price#6, ss_net_profit#7] +Arguments: hashpartitioning(ss_store_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(76) Sort +Input [7]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_addr_sk#3, ss_store_sk#4, ss_quantity#5, ss_sales_price#6, ss_net_profit#7] +Arguments: [ss_store_sk#4 ASC NULLS FIRST], false, 0 + +(77) Scan parquet +Output [1]: [s_store_sk#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(78) Filter +Input [1]: [s_store_sk#8] +Condition : isnotnull(s_store_sk#8) + +(79) Exchange +Input [1]: [s_store_sk#8] +Arguments: hashpartitioning(s_store_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(80) Sort +Input [1]: [s_store_sk#8] +Arguments: [s_store_sk#8 ASC NULLS FIRST], false, 0 + +(81) SortMergeJoin +Left keys [1]: [ss_store_sk#4] +Right keys [1]: [s_store_sk#8] +Join type: Inner +Join condition: None + +(82) Project +Output [6]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_addr_sk#3, ss_quantity#5, ss_sales_price#6, ss_net_profit#7] +Input [8]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_addr_sk#3, ss_store_sk#4, ss_quantity#5, ss_sales_price#6, ss_net_profit#7, s_store_sk#8] + +(83) Exchange +Input [6]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_addr_sk#3, ss_quantity#5, ss_sales_price#6, ss_net_profit#7] +Arguments: hashpartitioning(ss_cdemo_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(84) Sort +Input [6]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_addr_sk#3, ss_quantity#5, ss_sales_price#6, ss_net_profit#7] +Arguments: [ss_cdemo_sk#2 ASC NULLS FIRST], false, 0 + +(85) Scan parquet +Output [3]: [cd_demo_sk#9, cd_marital_status#10, cd_education_status#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_demo_sk), Or(Or(And(EqualTo(cd_marital_status,M),EqualTo(cd_education_status,4 yr Degree)),And(EqualTo(cd_marital_status,D),EqualTo(cd_education_status,2 yr Degree))),And(EqualTo(cd_marital_status,S),EqualTo(cd_education_status,College)))] +ReadSchema: struct + +(86) Filter +Input [3]: [cd_demo_sk#9, cd_marital_status#10, cd_education_status#11] +Condition : (isnotnull(cd_demo_sk#9) AND ((((cd_marital_status#10 = M) AND (cd_education_status#11 = 4 yr Degree)) OR ((cd_marital_status#10 = D) AND (cd_education_status#11 = 2 yr Degree))) OR ((cd_marital_status#10 = S) AND (cd_education_status#11 = College)))) + +(87) Exchange +Input [3]: [cd_demo_sk#9, cd_marital_status#10, cd_education_status#11] +Arguments: hashpartitioning(cd_demo_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(88) Sort +Input [3]: [cd_demo_sk#9, cd_marital_status#10, cd_education_status#11] +Arguments: [cd_demo_sk#9 ASC NULLS FIRST], false, 0 + +(89) SortMergeJoin +Left keys [1]: [ss_cdemo_sk#2] +Right keys [1]: [cd_demo_sk#9] +Join type: Inner +Join condition: ((((((cd_marital_status#10 = M) AND (cd_education_status#11 = 4 yr Degree)) AND (ss_sales_price#6 >= 100.00)) AND (ss_sales_price#6 <= 150.00)) OR ((((cd_marital_status#10 = D) AND (cd_education_status#11 = 2 yr Degree)) AND (ss_sales_price#6 >= 50.00)) AND (ss_sales_price#6 <= 100.00))) OR ((((cd_marital_status#10 = S) AND (cd_education_status#11 = College)) AND (ss_sales_price#6 >= 150.00)) AND (ss_sales_price#6 <= 200.00))) + +(90) Project +Output [4]: [ss_sold_date_sk#1, ss_addr_sk#3, ss_quantity#5, ss_net_profit#7] +Input [9]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_addr_sk#3, ss_quantity#5, ss_sales_price#6, ss_net_profit#7, cd_demo_sk#9, cd_marital_status#10, cd_education_status#11] + +(91) Exchange +Input [4]: [ss_sold_date_sk#1, ss_addr_sk#3, ss_quantity#5, ss_net_profit#7] +Arguments: hashpartitioning(ss_addr_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(92) Sort +Input [4]: [ss_sold_date_sk#1, ss_addr_sk#3, ss_quantity#5, ss_net_profit#7] +Arguments: [ss_addr_sk#3 ASC NULLS FIRST], false, 0 + +(93) Scan parquet +Output [3]: [ca_address_sk#12, ca_state#13, ca_country#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_country), EqualTo(ca_country,United States), IsNotNull(ca_address_sk), Or(Or(In(ca_state, [CO,OH,TX]),In(ca_state, [KY,MN,OR])),In(ca_state, [CA,MS,VA]))] +ReadSchema: struct + +(94) Filter +Input [3]: [ca_address_sk#12, ca_state#13, ca_country#14] +Condition : (((isnotnull(ca_country#14) AND (ca_country#14 = United States)) AND isnotnull(ca_address_sk#12)) AND ((ca_state#13 IN (CO,OH,TX) OR ca_state#13 IN (OR,MN,KY)) OR ca_state#13 IN (VA,CA,MS))) + +(95) Project +Output [2]: [ca_address_sk#12, ca_state#13] +Input [3]: [ca_address_sk#12, ca_state#13, ca_country#14] + +(96) Exchange +Input [2]: [ca_address_sk#12, ca_state#13] +Arguments: hashpartitioning(ca_address_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(97) Sort +Input [2]: [ca_address_sk#12, ca_state#13] +Arguments: [ca_address_sk#12 ASC NULLS FIRST], false, 0 + +(98) SortMergeJoin +Left keys [1]: [ss_addr_sk#3] +Right keys [1]: [ca_address_sk#12] +Join type: Inner +Join condition: ((((ca_state#13 IN (CO,OH,TX) AND (ss_net_profit#7 >= 0.00)) AND (ss_net_profit#7 <= 2000.00)) OR ((ca_state#13 IN (OR,MN,KY) AND (ss_net_profit#7 >= 150.00)) AND (ss_net_profit#7 <= 3000.00))) OR ((ca_state#13 IN (VA,CA,MS) AND (ss_net_profit#7 >= 50.00)) AND (ss_net_profit#7 <= 25000.00))) + +(99) Project +Output [2]: [ss_sold_date_sk#1, ss_quantity#5] +Input [6]: [ss_sold_date_sk#1, ss_addr_sk#3, ss_quantity#5, ss_net_profit#7, ca_address_sk#12, ca_state#13] + +(100) Exchange +Input [2]: [ss_sold_date_sk#1, ss_quantity#5] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(101) Sort +Input [2]: [ss_sold_date_sk#1, ss_quantity#5] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(102) Scan parquet +Output [2]: [d_date_sk#15, d_year#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(103) Filter +Input [2]: [d_date_sk#15, d_year#16] +Condition : ((isnotnull(d_year#16) AND (d_year#16 = 2001)) AND isnotnull(d_date_sk#15)) + +(104) Project +Output [1]: [d_date_sk#15] +Input [2]: [d_date_sk#15, d_year#16] + +(105) Exchange +Input [1]: [d_date_sk#15] +Arguments: hashpartitioning(d_date_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(106) Sort +Input [1]: [d_date_sk#15] +Arguments: [d_date_sk#15 ASC NULLS FIRST], false, 0 + +(107) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#15] +Join type: Inner +Join condition: None + +(108) Project +Output [1]: [ss_quantity#5] +Input [3]: [ss_sold_date_sk#1, ss_quantity#5, d_date_sk#15] + +(109) HashAggregate +Input [1]: [ss_quantity#5] +Keys: [] +Functions [1]: [partial_sum(ss_quantity#5)] +Aggregate Attributes [1]: [sum#17] +Results [1]: [sum#21] + +(110) Exchange +Input [1]: [sum#21] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=18] + +(111) HashAggregate +Input [1]: [sum#21] +Keys: [] +Functions [1]: [sum(ss_quantity#5)] +Aggregate Attributes [1]: [sum(ss_quantity#5)#19] +Results [1]: [sum(ss_quantity#5)#19 AS sum(ss_quantity)#20] + +(112) AdaptiveSparkPlan +Output [1]: [sum(ss_quantity)#20] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q49.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q49.txt new file mode 100644 index 000000000..244bd5772 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q49.txt @@ -0,0 +1,1369 @@ +== Physical Plan == +AdaptiveSparkPlan (253) ++- == Final Plan == + NativeTakeOrdered (157) + +- NativeProject (156) + +- NativeHashAggregate (155) + +- InputAdapter (154) + +- AQEShuffleRead (153) + +- ShuffleQueryStage (152), Statistics(X) + +- NativeShuffleExchange (151) + +- NativeHashAggregate (150) + +- InputAdapter (149) + +- NativeUnion (148) + :- NativeProject (51) + : +- NativeFilter (50) + : +- NativeWindow (49) + : +- NativeSort (48) + : +- NativeWindow (47) + : +- NativeSort (46) + : +- ShuffleQueryStage (45), Statistics(X) + : +- NativeShuffleExchange (44) + : +- NativeProject (43) + : +- NativeHashAggregate (42) + : +- InputAdapter (41) + : +- AQEShuffleRead (40) + : +- ShuffleQueryStage (39), Statistics(X) + : +- NativeShuffleExchange (38) + : +- NativeHashAggregate (37) + : +- NativeProject (36) + : +- NativeProject (35) + : +- NativeSortMergeJoin Inner (34) + : :- NativeSort (24) + : : +- InputAdapter (23) + : : +- AQEShuffleRead (22) + : : +- ShuffleQueryStage (21), Statistics(X) + : : +- NativeShuffleExchange (20) + : : +- NativeProject (19) + : : +- NativeSortMergeJoin Inner (18) + : : :- NativeSort (9) + : : : +- InputAdapter (8) + : : : +- AQEShuffleRead (7) + : : : +- ShuffleQueryStage (6), Statistics(X) + : : : +- NativeShuffleExchange (5) + : : : +- NativeProject (4) + : : : +- NativeFilter (3) + : : : +- InputAdapter (2) + : : : +- NativeParquetScan (1) + : : +- NativeSort (17) + : : +- InputAdapter (16) + : : +- AQEShuffleRead (15) + : : +- ShuffleQueryStage (14), Statistics(X) + : : +- NativeShuffleExchange (13) + : : +- NativeFilter (12) + : : +- InputAdapter (11) + : : +- NativeParquetScan (10) + : +- NativeSort (33) + : +- InputAdapter (32) + : +- AQEShuffleRead (31) + : +- ShuffleQueryStage (30), Statistics(X) + : +- NativeShuffleExchange (29) + : +- NativeProject (28) + : +- NativeFilter (27) + : +- InputAdapter (26) + : +- NativeParquetScan (25) + :- NativeProject (99) + : +- NativeFilter (98) + : +- NativeWindow (97) + : +- NativeSort (96) + : +- NativeWindow (95) + : +- NativeSort (94) + : +- ShuffleQueryStage (93), Statistics(X) + : +- NativeShuffleExchange (92) + : +- NativeProject (91) + : +- NativeHashAggregate (90) + : +- InputAdapter (89) + : +- AQEShuffleRead (88) + : +- ShuffleQueryStage (87), Statistics(X) + : +- NativeShuffleExchange (86) + : +- NativeHashAggregate (85) + : +- NativeProject (84) + : +- NativeProject (83) + : +- NativeSortMergeJoin Inner (82) + : :- NativeSort (75) + : : +- InputAdapter (74) + : : +- AQEShuffleRead (73) + : : +- ShuffleQueryStage (72), Statistics(X) + : : +- NativeShuffleExchange (71) + : : +- NativeProject (70) + : : +- NativeSortMergeJoin Inner (69) + : : :- NativeSort (60) + : : : +- InputAdapter (59) + : : : +- AQEShuffleRead (58) + : : : +- ShuffleQueryStage (57), Statistics(X) + : : : +- NativeShuffleExchange (56) + : : : +- NativeProject (55) + : : : +- NativeFilter (54) + : : : +- InputAdapter (53) + : : : +- NativeParquetScan (52) + : : +- NativeSort (68) + : : +- InputAdapter (67) + : : +- AQEShuffleRead (66) + : : +- ShuffleQueryStage (65), Statistics(X) + : : +- NativeShuffleExchange (64) + : : +- NativeFilter (63) + : : +- InputAdapter (62) + : : +- NativeParquetScan (61) + : +- NativeSort (81) + : +- InputAdapter (80) + : +- InputAdapter (79) + : +- AQEShuffleRead (78) + : +- ShuffleQueryStage (77), Statistics(X) + : +- ReusedExchange (76) + +- NativeProject (147) + +- NativeFilter (146) + +- NativeWindow (145) + +- NativeSort (144) + +- NativeWindow (143) + +- NativeSort (142) + +- ShuffleQueryStage (141), Statistics(X) + +- NativeShuffleExchange (140) + +- NativeProject (139) + +- NativeHashAggregate (138) + +- InputAdapter (137) + +- AQEShuffleRead (136) + +- ShuffleQueryStage (135), Statistics(X) + +- NativeShuffleExchange (134) + +- NativeHashAggregate (133) + +- NativeProject (132) + +- NativeProject (131) + +- NativeSortMergeJoin Inner (130) + :- NativeSort (123) + : +- InputAdapter (122) + : +- AQEShuffleRead (121) + : +- ShuffleQueryStage (120), Statistics(X) + : +- NativeShuffleExchange (119) + : +- NativeProject (118) + : +- NativeSortMergeJoin Inner (117) + : :- NativeSort (108) + : : +- InputAdapter (107) + : : +- AQEShuffleRead (106) + : : +- ShuffleQueryStage (105), Statistics(X) + : : +- NativeShuffleExchange (104) + : : +- NativeProject (103) + : : +- NativeFilter (102) + : : +- InputAdapter (101) + : : +- NativeParquetScan (100) + : +- NativeSort (116) + : +- InputAdapter (115) + : +- AQEShuffleRead (114) + : +- ShuffleQueryStage (113), Statistics(X) + : +- NativeShuffleExchange (112) + : +- NativeFilter (111) + : +- InputAdapter (110) + : +- NativeParquetScan (109) + +- NativeSort (129) + +- InputAdapter (128) + +- InputAdapter (127) + +- AQEShuffleRead (126) + +- ShuffleQueryStage (125), Statistics(X) + +- ReusedExchange (124) ++- == Initial Plan == + TakeOrderedAndProject (252) + +- HashAggregate (251) + +- Exchange (250) + +- HashAggregate (249) + +- Union (248) + :- Project (187) + : +- Filter (186) + : +- Window (185) + : +- Sort (184) + : +- Window (183) + : +- Sort (182) + : +- Exchange (181) + : +- HashAggregate (180) + : +- Exchange (179) + : +- HashAggregate (178) + : +- Project (177) + : +- SortMergeJoin Inner (176) + : :- Sort (170) + : : +- Exchange (169) + : : +- Project (168) + : : +- SortMergeJoin Inner (167) + : : :- Sort (162) + : : : +- Exchange (161) + : : : +- Project (160) + : : : +- Filter (159) + : : : +- Scan parquet (158) + : : +- Sort (166) + : : +- Exchange (165) + : : +- Filter (164) + : : +- Scan parquet (163) + : +- Sort (175) + : +- Exchange (174) + : +- Project (173) + : +- Filter (172) + : +- Scan parquet (171) + :- Project (217) + : +- Filter (216) + : +- Window (215) + : +- Sort (214) + : +- Window (213) + : +- Sort (212) + : +- Exchange (211) + : +- HashAggregate (210) + : +- Exchange (209) + : +- HashAggregate (208) + : +- Project (207) + : +- SortMergeJoin Inner (206) + : :- Sort (200) + : : +- Exchange (199) + : : +- Project (198) + : : +- SortMergeJoin Inner (197) + : : :- Sort (192) + : : : +- Exchange (191) + : : : +- Project (190) + : : : +- Filter (189) + : : : +- Scan parquet (188) + : : +- Sort (196) + : : +- Exchange (195) + : : +- Filter (194) + : : +- Scan parquet (193) + : +- Sort (205) + : +- Exchange (204) + : +- Project (203) + : +- Filter (202) + : +- Scan parquet (201) + +- Project (247) + +- Filter (246) + +- Window (245) + +- Sort (244) + +- Window (243) + +- Sort (242) + +- Exchange (241) + +- HashAggregate (240) + +- Exchange (239) + +- HashAggregate (238) + +- Project (237) + +- SortMergeJoin Inner (236) + :- Sort (230) + : +- Exchange (229) + : +- Project (228) + : +- SortMergeJoin Inner (227) + : :- Sort (222) + : : +- Exchange (221) + : : +- Project (220) + : : +- Filter (219) + : : +- Scan parquet (218) + : +- Sort (226) + : +- Exchange (225) + : +- Filter (224) + : +- Scan parquet (223) + +- Sort (235) + +- Exchange (234) + +- Project (233) + +- Filter (232) + +- Scan parquet (231) + + +(158) Scan parquet +Output [6]: [ws_sold_date_sk#1, ws_item_sk#2, ws_order_number#3, ws_quantity#4, ws_net_paid#5, ws_net_profit#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_net_profit), IsNotNull(ws_net_paid), IsNotNull(ws_quantity), GreaterThan(ws_net_profit,1.00), GreaterThan(ws_net_paid,0.00), GreaterThan(ws_quantity,0), IsNotNull(ws_order_number), IsNotNull(ws_item_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [6]: [ws_sold_date_sk#1, ws_item_sk#2, ws_order_number#3, ws_quantity#4, ws_net_paid#5, ws_net_profit#6] +Arguments: [#1, #2, #3, #4, #5, #6] + +(3) NativeFilter +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Condition : ((((((((isnotnull(ws_net_profit#6) AND isnotnull(ws_net_paid#5)) AND isnotnull(ws_quantity#4)) AND (ws_net_profit#6 > 1.00)) AND (ws_net_paid#5 > 0.00)) AND (ws_quantity#4 > 0)) AND isnotnull(ws_order_number#3)) AND isnotnull(ws_item_sk#2)) AND isnotnull(ws_sold_date_sk#1)) + +(4) NativeProject +Output [5]: [ws_sold_date_sk#1, ws_item_sk#2, ws_order_number#3, ws_quantity#4, ws_net_paid#5] +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] + +(5) NativeShuffleExchange +Input [5]: [ws_sold_date_sk#1, ws_item_sk#2, ws_order_number#3, ws_quantity#4, ws_net_paid#5] +Arguments: hashpartitioning(ws_order_number#3, ws_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(6) ShuffleQueryStage +Output [5]: [ws_sold_date_sk#1, ws_item_sk#2, ws_order_number#3, ws_quantity#4, ws_net_paid#5] +Arguments: X + +(7) AQEShuffleRead +Input [5]: [ws_sold_date_sk#1, ws_item_sk#2, ws_order_number#3, ws_quantity#4, ws_net_paid#5] +Arguments: coalesced + +(8) InputAdapter +Input [5]: [ws_sold_date_sk#1, ws_item_sk#2, ws_order_number#3, ws_quantity#4, ws_net_paid#5] + +(9) NativeSort +Input [5]: [ws_sold_date_sk#1, ws_item_sk#2, ws_order_number#3, ws_quantity#4, ws_net_paid#5] +Arguments: [ws_order_number#3 ASC NULLS FIRST, ws_item_sk#2 ASC NULLS FIRST], false + +(163) Scan parquet +Output [4]: [wr_item_sk#7, wr_order_number#8, wr_return_quantity#9, wr_return_amt#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wr_return_amt), GreaterThan(wr_return_amt,10000.00), IsNotNull(wr_order_number), IsNotNull(wr_item_sk)] +ReadSchema: struct + +(11) InputAdapter +Input [4]: [wr_item_sk#7, wr_order_number#8, wr_return_quantity#9, wr_return_amt#10] +Arguments: [#7, #8, #9, #10] + +(12) NativeFilter +Input [4]: [#7#7, #8#8, #9#9, #10#10] +Condition : (((isnotnull(wr_return_amt#10) AND (wr_return_amt#10 > 10000.00)) AND isnotnull(wr_order_number#8)) AND isnotnull(wr_item_sk#7)) + +(13) NativeShuffleExchange +Input [4]: [#7#7, #8#8, #9#9, #10#10] +Arguments: hashpartitioning(wr_order_number#8, wr_item_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [4]: [#7#7, #8#8, #9#9, #10#10] +Arguments: X + +(15) AQEShuffleRead +Input [4]: [#7#7, #8#8, #9#9, #10#10] +Arguments: coalesced + +(16) InputAdapter +Input [4]: [#7#7, #8#8, #9#9, #10#10] + +(17) NativeSort +Input [4]: [#7#7, #8#8, #9#9, #10#10] +Arguments: [wr_order_number#8 ASC NULLS FIRST, wr_item_sk#7 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [2]: [ws_order_number#3, ws_item_sk#2] +Right keys [2]: [wr_order_number#8, wr_item_sk#7] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [6]: [ws_sold_date_sk#1, ws_item_sk#2, ws_quantity#4, ws_net_paid#5, wr_return_quantity#9, wr_return_amt#10] +Input [9]: [ws_sold_date_sk#1, ws_item_sk#2, ws_order_number#3, ws_quantity#4, ws_net_paid#5, #7#7, #8#8, #9#9, #10#10] + +(20) NativeShuffleExchange +Input [6]: [ws_sold_date_sk#1, ws_item_sk#2, ws_quantity#4, ws_net_paid#5, wr_return_quantity#9, wr_return_amt#10] +Arguments: hashpartitioning(ws_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [6]: [ws_sold_date_sk#1, ws_item_sk#2, ws_quantity#4, ws_net_paid#5, wr_return_quantity#9, wr_return_amt#10] +Arguments: X + +(22) AQEShuffleRead +Input [6]: [ws_sold_date_sk#1, ws_item_sk#2, ws_quantity#4, ws_net_paid#5, wr_return_quantity#9, wr_return_amt#10] +Arguments: coalesced + +(23) InputAdapter +Input [6]: [ws_sold_date_sk#1, ws_item_sk#2, ws_quantity#4, ws_net_paid#5, wr_return_quantity#9, wr_return_amt#10] + +(24) NativeSort +Input [6]: [ws_sold_date_sk#1, ws_item_sk#2, ws_quantity#4, ws_net_paid#5, wr_return_quantity#9, wr_return_amt#10] +Arguments: [ws_sold_date_sk#1 ASC NULLS FIRST], false + +(171) Scan parquet +Output [3]: [d_date_sk#11, d_year#12, d_moy#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), EqualTo(d_moy,12), IsNotNull(d_date_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [3]: [d_date_sk#11, d_year#12, d_moy#13] +Arguments: [#11, #12, #13] + +(27) NativeFilter +Input [3]: [#11#11, #12#12, #13#13] +Condition : ((((isnotnull(d_year#12) AND isnotnull(d_moy#13)) AND (d_year#12 = 2001)) AND (d_moy#13 = 12)) AND isnotnull(d_date_sk#11)) + +(28) NativeProject +Output [1]: [d_date_sk#11] +Input [3]: [#11#11, #12#12, #13#13] + +(29) NativeShuffleExchange +Input [1]: [d_date_sk#11] +Arguments: hashpartitioning(d_date_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(30) ShuffleQueryStage +Output [1]: [d_date_sk#11] +Arguments: X + +(31) AQEShuffleRead +Input [1]: [d_date_sk#11] +Arguments: coalesced + +(32) InputAdapter +Input [1]: [d_date_sk#11] + +(33) NativeSort +Input [1]: [d_date_sk#11] +Arguments: [d_date_sk#11 ASC NULLS FIRST], false + +(34) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#1] +Right keys [1]: [d_date_sk#11] +Join type: Inner +Join condition: None + +(35) NativeProject +Output [5]: [ws_item_sk#2, ws_quantity#4, ws_net_paid#5, wr_return_quantity#9, wr_return_amt#10] +Input [7]: [ws_sold_date_sk#1, ws_item_sk#2, ws_quantity#4, ws_net_paid#5, wr_return_quantity#9, wr_return_amt#10, d_date_sk#11] + +(36) NativeProject +Output [5]: [ws_item_sk#2 AS ws_item_sk#2, coalesce(wr_return_quantity#9, 0) AS _c1#14, coalesce(ws_quantity#4, 0) AS _c2#15, coalesce(cast(wr_return_amt#10 as decimal(12,2)), 0.00) AS _c3#16, coalesce(cast(ws_net_paid#5 as decimal(12,2)), 0.00) AS _c4#17] +Input [5]: [ws_item_sk#2, ws_quantity#4, ws_net_paid#5, wr_return_quantity#9, wr_return_amt#10] + +(37) NativeHashAggregate +Input [5]: [ws_item_sk#2, _c1#14, _c2#15, _c3#16, _c4#17] +Keys [1]: [ws_item_sk#2] +Functions [4]: [partial_sum(_c1#14), partial_sum(_c2#15), partial_sum(_c3#16), partial_sum(_c4#17)] +Aggregate Attributes [6]: [sum#18, sum#19, sum#20, isEmpty#21, sum#22, isEmpty#23] +Results [2]: [ws_item_sk#2, #24#24] + +(38) NativeShuffleExchange +Input [2]: [ws_item_sk#2, #24#24] +Arguments: hashpartitioning(ws_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(39) ShuffleQueryStage +Output [2]: [ws_item_sk#2, #24#24] +Arguments: X + +(40) AQEShuffleRead +Input [2]: [ws_item_sk#2, #24#24] +Arguments: coalesced + +(41) InputAdapter +Input [2]: [ws_item_sk#2, #24#24] + +(42) NativeHashAggregate +Input [2]: [ws_item_sk#2, #24#24] +Keys [1]: [ws_item_sk#2] +Functions [4]: [sum(coalesce(wr_return_quantity#9, 0)), sum(coalesce(ws_quantity#4, 0)), sum(coalesce(cast(wr_return_amt#10 as decimal(12,2)), 0.00)), sum(coalesce(cast(ws_net_paid#5 as decimal(12,2)), 0.00))] +Aggregate Attributes [4]: [sum(coalesce(wr_return_quantity#9, 0))#25, sum(coalesce(ws_quantity#4, 0))#26, sum(coalesce(cast(wr_return_amt#10 as decimal(12,2)), 0.00))#27, sum(coalesce(cast(ws_net_paid#5 as decimal(12,2)), 0.00))#28] +Results [5]: [ws_item_sk#2, sum(coalesce(wr_return_quantity#9, 0))#25, sum(coalesce(ws_quantity#4, 0))#26, sum(coalesce(cast(wr_return_amt#10 as decimal(12,2)), 0.00))#27, sum(coalesce(cast(ws_net_paid#5 as decimal(12,2)), 0.00))#28] + +(43) NativeProject +Output [3]: [ws_item_sk#2 AS item#29, (cast(sum(coalesce(wr_return_quantity#9, 0))#25 as decimal(15,4)) / cast(sum(coalesce(ws_quantity#4, 0))#26 as decimal(15,4))) AS return_ratio#30, (cast(sum(coalesce(cast(wr_return_amt#10 as decimal(12,2)), 0.00))#27 as decimal(15,4)) / cast(sum(coalesce(cast(ws_net_paid#5 as decimal(12,2)), 0.00))#28 as decimal(15,4))) AS currency_ratio#31] +Input [5]: [ws_item_sk#2, sum(coalesce(wr_return_quantity#9, 0))#25, sum(coalesce(ws_quantity#4, 0))#26, sum(coalesce(cast(wr_return_amt#10 as decimal(12,2)), 0.00))#27, sum(coalesce(cast(ws_net_paid#5 as decimal(12,2)), 0.00))#28] + +(44) NativeShuffleExchange +Input [3]: [item#29, return_ratio#30, currency_ratio#31] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=6] + +(45) ShuffleQueryStage +Output [3]: [item#29, return_ratio#30, currency_ratio#31] +Arguments: X + +(46) NativeSort +Input [3]: [item#29, return_ratio#30, currency_ratio#31] +Arguments: [return_ratio#30 ASC NULLS FIRST], false + +(47) NativeWindow +Input [3]: [item#29, return_ratio#30, currency_ratio#31] +Arguments: [rank(return_ratio#30) windowspecdefinition(return_ratio#30 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS return_rank#32], [return_ratio#30 ASC NULLS FIRST] + +(48) NativeSort +Input [4]: [item#29, return_ratio#30, currency_ratio#31, return_rank#32] +Arguments: [currency_ratio#31 ASC NULLS FIRST], false + +(49) NativeWindow +Input [4]: [item#29, return_ratio#30, currency_ratio#31, return_rank#32] +Arguments: [rank(currency_ratio#31) windowspecdefinition(currency_ratio#31 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS currency_rank#33], [currency_ratio#31 ASC NULLS FIRST] + +(50) NativeFilter +Input [5]: [item#29, return_ratio#30, currency_ratio#31, return_rank#32, currency_rank#33] +Condition : ((return_rank#32 <= 10) OR (currency_rank#33 <= 10)) + +(51) NativeProject +Output [5]: [web AS channel#34, item#29, return_ratio#30, return_rank#32, currency_rank#33] +Input [5]: [item#29, return_ratio#30, currency_ratio#31, return_rank#32, currency_rank#33] + +(188) Scan parquet +Output [6]: [cs_sold_date_sk#35, cs_item_sk#36, cs_order_number#37, cs_quantity#38, cs_net_paid#39, cs_net_profit#40] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_net_profit), IsNotNull(cs_net_paid), IsNotNull(cs_quantity), GreaterThan(cs_net_profit,1.00), GreaterThan(cs_net_paid,0.00), GreaterThan(cs_quantity,0), IsNotNull(cs_order_number), IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(53) InputAdapter +Input [6]: [cs_sold_date_sk#35, cs_item_sk#36, cs_order_number#37, cs_quantity#38, cs_net_paid#39, cs_net_profit#40] +Arguments: [#35, #36, #37, #38, #39, #40] + +(54) NativeFilter +Input [6]: [#35#35, #36#36, #37#37, #38#38, #39#39, #40#40] +Condition : ((((((((isnotnull(cs_net_profit#40) AND isnotnull(cs_net_paid#39)) AND isnotnull(cs_quantity#38)) AND (cs_net_profit#40 > 1.00)) AND (cs_net_paid#39 > 0.00)) AND (cs_quantity#38 > 0)) AND isnotnull(cs_order_number#37)) AND isnotnull(cs_item_sk#36)) AND isnotnull(cs_sold_date_sk#35)) + +(55) NativeProject +Output [5]: [cs_sold_date_sk#35, cs_item_sk#36, cs_order_number#37, cs_quantity#38, cs_net_paid#39] +Input [6]: [#35#35, #36#36, #37#37, #38#38, #39#39, #40#40] + +(56) NativeShuffleExchange +Input [5]: [cs_sold_date_sk#35, cs_item_sk#36, cs_order_number#37, cs_quantity#38, cs_net_paid#39] +Arguments: hashpartitioning(cs_order_number#37, cs_item_sk#36, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(57) ShuffleQueryStage +Output [5]: [cs_sold_date_sk#35, cs_item_sk#36, cs_order_number#37, cs_quantity#38, cs_net_paid#39] +Arguments: X + +(58) AQEShuffleRead +Input [5]: [cs_sold_date_sk#35, cs_item_sk#36, cs_order_number#37, cs_quantity#38, cs_net_paid#39] +Arguments: coalesced + +(59) InputAdapter +Input [5]: [cs_sold_date_sk#35, cs_item_sk#36, cs_order_number#37, cs_quantity#38, cs_net_paid#39] + +(60) NativeSort +Input [5]: [cs_sold_date_sk#35, cs_item_sk#36, cs_order_number#37, cs_quantity#38, cs_net_paid#39] +Arguments: [cs_order_number#37 ASC NULLS FIRST, cs_item_sk#36 ASC NULLS FIRST], false + +(193) Scan parquet +Output [4]: [cr_item_sk#41, cr_order_number#42, cr_return_quantity#43, cr_return_amount#44] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cr_return_amount), GreaterThan(cr_return_amount,10000.00), IsNotNull(cr_order_number), IsNotNull(cr_item_sk)] +ReadSchema: struct + +(62) InputAdapter +Input [4]: [cr_item_sk#41, cr_order_number#42, cr_return_quantity#43, cr_return_amount#44] +Arguments: [#41, #42, #43, #44] + +(63) NativeFilter +Input [4]: [#41#41, #42#42, #43#43, #44#44] +Condition : (((isnotnull(cr_return_amount#44) AND (cr_return_amount#44 > 10000.00)) AND isnotnull(cr_order_number#42)) AND isnotnull(cr_item_sk#41)) + +(64) NativeShuffleExchange +Input [4]: [#41#41, #42#42, #43#43, #44#44] +Arguments: hashpartitioning(cr_order_number#42, cr_item_sk#41, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(65) ShuffleQueryStage +Output [4]: [#41#41, #42#42, #43#43, #44#44] +Arguments: X + +(66) AQEShuffleRead +Input [4]: [#41#41, #42#42, #43#43, #44#44] +Arguments: coalesced + +(67) InputAdapter +Input [4]: [#41#41, #42#42, #43#43, #44#44] + +(68) NativeSort +Input [4]: [#41#41, #42#42, #43#43, #44#44] +Arguments: [cr_order_number#42 ASC NULLS FIRST, cr_item_sk#41 ASC NULLS FIRST], false + +(69) NativeSortMergeJoin +Left keys [2]: [cs_order_number#37, cs_item_sk#36] +Right keys [2]: [cr_order_number#42, cr_item_sk#41] +Join type: Inner +Join condition: None + +(70) NativeProject +Output [6]: [cs_sold_date_sk#35, cs_item_sk#36, cs_quantity#38, cs_net_paid#39, cr_return_quantity#43, cr_return_amount#44] +Input [9]: [cs_sold_date_sk#35, cs_item_sk#36, cs_order_number#37, cs_quantity#38, cs_net_paid#39, #41#41, #42#42, #43#43, #44#44] + +(71) NativeShuffleExchange +Input [6]: [cs_sold_date_sk#35, cs_item_sk#36, cs_quantity#38, cs_net_paid#39, cr_return_quantity#43, cr_return_amount#44] +Arguments: hashpartitioning(cs_sold_date_sk#35, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(72) ShuffleQueryStage +Output [6]: [cs_sold_date_sk#35, cs_item_sk#36, cs_quantity#38, cs_net_paid#39, cr_return_quantity#43, cr_return_amount#44] +Arguments: X + +(73) AQEShuffleRead +Input [6]: [cs_sold_date_sk#35, cs_item_sk#36, cs_quantity#38, cs_net_paid#39, cr_return_quantity#43, cr_return_amount#44] +Arguments: coalesced + +(74) InputAdapter +Input [6]: [cs_sold_date_sk#35, cs_item_sk#36, cs_quantity#38, cs_net_paid#39, cr_return_quantity#43, cr_return_amount#44] + +(75) NativeSort +Input [6]: [cs_sold_date_sk#35, cs_item_sk#36, cs_quantity#38, cs_net_paid#39, cr_return_quantity#43, cr_return_amount#44] +Arguments: [cs_sold_date_sk#35 ASC NULLS FIRST], false + +(76) ReusedExchange [Reuses operator id: 29] +Output [1]: [d_date_sk#45] + +(77) ShuffleQueryStage +Output [1]: [d_date_sk#45] +Arguments: X + +(78) AQEShuffleRead +Input [1]: [d_date_sk#45] +Arguments: coalesced + +(79) InputAdapter +Input [1]: [d_date_sk#45] +Arguments: [#45] + +(80) InputAdapter +Input [1]: [#45#45] + +(81) NativeSort +Input [1]: [#45#45] +Arguments: [d_date_sk#45 ASC NULLS FIRST], false + +(82) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#35] +Right keys [1]: [d_date_sk#45] +Join type: Inner +Join condition: None + +(83) NativeProject +Output [5]: [cs_item_sk#36, cs_quantity#38, cs_net_paid#39, cr_return_quantity#43, cr_return_amount#44] +Input [7]: [cs_sold_date_sk#35, cs_item_sk#36, cs_quantity#38, cs_net_paid#39, cr_return_quantity#43, cr_return_amount#44, #45#45] + +(84) NativeProject +Output [5]: [cs_item_sk#36 AS cs_item_sk#36, coalesce(cr_return_quantity#43, 0) AS _c1#46, coalesce(cs_quantity#38, 0) AS _c2#47, coalesce(cast(cr_return_amount#44 as decimal(12,2)), 0.00) AS _c3#48, coalesce(cast(cs_net_paid#39 as decimal(12,2)), 0.00) AS _c4#49] +Input [5]: [cs_item_sk#36, cs_quantity#38, cs_net_paid#39, cr_return_quantity#43, cr_return_amount#44] + +(85) NativeHashAggregate +Input [5]: [cs_item_sk#36, _c1#46, _c2#47, _c3#48, _c4#49] +Keys [1]: [cs_item_sk#36] +Functions [4]: [partial_sum(_c1#46), partial_sum(_c2#47), partial_sum(_c3#48), partial_sum(_c4#49)] +Aggregate Attributes [6]: [sum#50, sum#51, sum#52, isEmpty#53, sum#54, isEmpty#55] +Results [2]: [cs_item_sk#36, #24#24] + +(86) NativeShuffleExchange +Input [2]: [cs_item_sk#36, #24#24] +Arguments: hashpartitioning(cs_item_sk#36, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(87) ShuffleQueryStage +Output [2]: [cs_item_sk#36, #24#24] +Arguments: X + +(88) AQEShuffleRead +Input [2]: [cs_item_sk#36, #24#24] +Arguments: coalesced + +(89) InputAdapter +Input [2]: [cs_item_sk#36, #24#24] + +(90) NativeHashAggregate +Input [2]: [cs_item_sk#36, #24#24] +Keys [1]: [cs_item_sk#36] +Functions [4]: [sum(coalesce(cr_return_quantity#43, 0)), sum(coalesce(cs_quantity#38, 0)), sum(coalesce(cast(cr_return_amount#44 as decimal(12,2)), 0.00)), sum(coalesce(cast(cs_net_paid#39 as decimal(12,2)), 0.00))] +Aggregate Attributes [4]: [sum(coalesce(cr_return_quantity#43, 0))#56, sum(coalesce(cs_quantity#38, 0))#57, sum(coalesce(cast(cr_return_amount#44 as decimal(12,2)), 0.00))#58, sum(coalesce(cast(cs_net_paid#39 as decimal(12,2)), 0.00))#59] +Results [5]: [cs_item_sk#36, sum(coalesce(cr_return_quantity#43, 0))#56, sum(coalesce(cs_quantity#38, 0))#57, sum(coalesce(cast(cr_return_amount#44 as decimal(12,2)), 0.00))#58, sum(coalesce(cast(cs_net_paid#39 as decimal(12,2)), 0.00))#59] + +(91) NativeProject +Output [3]: [cs_item_sk#36 AS item#60, (cast(sum(coalesce(cr_return_quantity#43, 0))#56 as decimal(15,4)) / cast(sum(coalesce(cs_quantity#38, 0))#57 as decimal(15,4))) AS return_ratio#61, (cast(sum(coalesce(cast(cr_return_amount#44 as decimal(12,2)), 0.00))#58 as decimal(15,4)) / cast(sum(coalesce(cast(cs_net_paid#39 as decimal(12,2)), 0.00))#59 as decimal(15,4))) AS currency_ratio#62] +Input [5]: [cs_item_sk#36, sum(coalesce(cr_return_quantity#43, 0))#56, sum(coalesce(cs_quantity#38, 0))#57, sum(coalesce(cast(cr_return_amount#44 as decimal(12,2)), 0.00))#58, sum(coalesce(cast(cs_net_paid#39 as decimal(12,2)), 0.00))#59] + +(92) NativeShuffleExchange +Input [3]: [item#60, return_ratio#61, currency_ratio#62] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=11] + +(93) ShuffleQueryStage +Output [3]: [item#60, return_ratio#61, currency_ratio#62] +Arguments: X + +(94) NativeSort +Input [3]: [item#60, return_ratio#61, currency_ratio#62] +Arguments: [return_ratio#61 ASC NULLS FIRST], false + +(95) NativeWindow +Input [3]: [item#60, return_ratio#61, currency_ratio#62] +Arguments: [rank(return_ratio#61) windowspecdefinition(return_ratio#61 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS return_rank#63], [return_ratio#61 ASC NULLS FIRST] + +(96) NativeSort +Input [4]: [item#60, return_ratio#61, currency_ratio#62, return_rank#63] +Arguments: [currency_ratio#62 ASC NULLS FIRST], false + +(97) NativeWindow +Input [4]: [item#60, return_ratio#61, currency_ratio#62, return_rank#63] +Arguments: [rank(currency_ratio#62) windowspecdefinition(currency_ratio#62 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS currency_rank#64], [currency_ratio#62 ASC NULLS FIRST] + +(98) NativeFilter +Input [5]: [item#60, return_ratio#61, currency_ratio#62, return_rank#63, currency_rank#64] +Condition : ((return_rank#63 <= 10) OR (currency_rank#64 <= 10)) + +(99) NativeProject +Output [5]: [catalog AS channel#65, item#60, return_ratio#61, return_rank#63, currency_rank#64] +Input [5]: [item#60, return_ratio#61, currency_ratio#62, return_rank#63, currency_rank#64] + +(218) Scan parquet +Output [6]: [ss_sold_date_sk#66, ss_item_sk#67, ss_ticket_number#68, ss_quantity#69, ss_net_paid#70, ss_net_profit#71] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_net_profit), IsNotNull(ss_net_paid), IsNotNull(ss_quantity), GreaterThan(ss_net_profit,1.00), GreaterThan(ss_net_paid,0.00), GreaterThan(ss_quantity,0), IsNotNull(ss_ticket_number), IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(101) InputAdapter +Input [6]: [ss_sold_date_sk#66, ss_item_sk#67, ss_ticket_number#68, ss_quantity#69, ss_net_paid#70, ss_net_profit#71] +Arguments: [#66, #67, #68, #69, #70, #71] + +(102) NativeFilter +Input [6]: [#66#66, #67#67, #68#68, #69#69, #70#70, #71#71] +Condition : ((((((((isnotnull(ss_net_profit#71) AND isnotnull(ss_net_paid#70)) AND isnotnull(ss_quantity#69)) AND (ss_net_profit#71 > 1.00)) AND (ss_net_paid#70 > 0.00)) AND (ss_quantity#69 > 0)) AND isnotnull(ss_ticket_number#68)) AND isnotnull(ss_item_sk#67)) AND isnotnull(ss_sold_date_sk#66)) + +(103) NativeProject +Output [5]: [ss_sold_date_sk#66, ss_item_sk#67, ss_ticket_number#68, ss_quantity#69, ss_net_paid#70] +Input [6]: [#66#66, #67#67, #68#68, #69#69, #70#70, #71#71] + +(104) NativeShuffleExchange +Input [5]: [ss_sold_date_sk#66, ss_item_sk#67, ss_ticket_number#68, ss_quantity#69, ss_net_paid#70] +Arguments: hashpartitioning(ss_ticket_number#68, ss_item_sk#67, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(105) ShuffleQueryStage +Output [5]: [ss_sold_date_sk#66, ss_item_sk#67, ss_ticket_number#68, ss_quantity#69, ss_net_paid#70] +Arguments: X + +(106) AQEShuffleRead +Input [5]: [ss_sold_date_sk#66, ss_item_sk#67, ss_ticket_number#68, ss_quantity#69, ss_net_paid#70] +Arguments: coalesced + +(107) InputAdapter +Input [5]: [ss_sold_date_sk#66, ss_item_sk#67, ss_ticket_number#68, ss_quantity#69, ss_net_paid#70] + +(108) NativeSort +Input [5]: [ss_sold_date_sk#66, ss_item_sk#67, ss_ticket_number#68, ss_quantity#69, ss_net_paid#70] +Arguments: [ss_ticket_number#68 ASC NULLS FIRST, ss_item_sk#67 ASC NULLS FIRST], false + +(223) Scan parquet +Output [4]: [sr_item_sk#72, sr_ticket_number#73, sr_return_quantity#74, sr_return_amt#75] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_return_amt), GreaterThan(sr_return_amt,10000.00), IsNotNull(sr_ticket_number), IsNotNull(sr_item_sk)] +ReadSchema: struct + +(110) InputAdapter +Input [4]: [sr_item_sk#72, sr_ticket_number#73, sr_return_quantity#74, sr_return_amt#75] +Arguments: [#72, #73, #74, #75] + +(111) NativeFilter +Input [4]: [#72#72, #73#73, #74#74, #75#75] +Condition : (((isnotnull(sr_return_amt#75) AND (sr_return_amt#75 > 10000.00)) AND isnotnull(sr_ticket_number#73)) AND isnotnull(sr_item_sk#72)) + +(112) NativeShuffleExchange +Input [4]: [#72#72, #73#73, #74#74, #75#75] +Arguments: hashpartitioning(sr_ticket_number#73, sr_item_sk#72, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(113) ShuffleQueryStage +Output [4]: [#72#72, #73#73, #74#74, #75#75] +Arguments: X + +(114) AQEShuffleRead +Input [4]: [#72#72, #73#73, #74#74, #75#75] +Arguments: coalesced + +(115) InputAdapter +Input [4]: [#72#72, #73#73, #74#74, #75#75] + +(116) NativeSort +Input [4]: [#72#72, #73#73, #74#74, #75#75] +Arguments: [sr_ticket_number#73 ASC NULLS FIRST, sr_item_sk#72 ASC NULLS FIRST], false + +(117) NativeSortMergeJoin +Left keys [2]: [ss_ticket_number#68, ss_item_sk#67] +Right keys [2]: [sr_ticket_number#73, sr_item_sk#72] +Join type: Inner +Join condition: None + +(118) NativeProject +Output [6]: [ss_sold_date_sk#66, ss_item_sk#67, ss_quantity#69, ss_net_paid#70, sr_return_quantity#74, sr_return_amt#75] +Input [9]: [ss_sold_date_sk#66, ss_item_sk#67, ss_ticket_number#68, ss_quantity#69, ss_net_paid#70, #72#72, #73#73, #74#74, #75#75] + +(119) NativeShuffleExchange +Input [6]: [ss_sold_date_sk#66, ss_item_sk#67, ss_quantity#69, ss_net_paid#70, sr_return_quantity#74, sr_return_amt#75] +Arguments: hashpartitioning(ss_sold_date_sk#66, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(120) ShuffleQueryStage +Output [6]: [ss_sold_date_sk#66, ss_item_sk#67, ss_quantity#69, ss_net_paid#70, sr_return_quantity#74, sr_return_amt#75] +Arguments: X + +(121) AQEShuffleRead +Input [6]: [ss_sold_date_sk#66, ss_item_sk#67, ss_quantity#69, ss_net_paid#70, sr_return_quantity#74, sr_return_amt#75] +Arguments: coalesced + +(122) InputAdapter +Input [6]: [ss_sold_date_sk#66, ss_item_sk#67, ss_quantity#69, ss_net_paid#70, sr_return_quantity#74, sr_return_amt#75] + +(123) NativeSort +Input [6]: [ss_sold_date_sk#66, ss_item_sk#67, ss_quantity#69, ss_net_paid#70, sr_return_quantity#74, sr_return_amt#75] +Arguments: [ss_sold_date_sk#66 ASC NULLS FIRST], false + +(124) ReusedExchange [Reuses operator id: 29] +Output [1]: [d_date_sk#76] + +(125) ShuffleQueryStage +Output [1]: [d_date_sk#76] +Arguments: X + +(126) AQEShuffleRead +Input [1]: [d_date_sk#76] +Arguments: coalesced + +(127) InputAdapter +Input [1]: [d_date_sk#76] +Arguments: [#76] + +(128) InputAdapter +Input [1]: [#76#76] + +(129) NativeSort +Input [1]: [#76#76] +Arguments: [d_date_sk#76 ASC NULLS FIRST], false + +(130) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#66] +Right keys [1]: [d_date_sk#76] +Join type: Inner +Join condition: None + +(131) NativeProject +Output [5]: [ss_item_sk#67, ss_quantity#69, ss_net_paid#70, sr_return_quantity#74, sr_return_amt#75] +Input [7]: [ss_sold_date_sk#66, ss_item_sk#67, ss_quantity#69, ss_net_paid#70, sr_return_quantity#74, sr_return_amt#75, #76#76] + +(132) NativeProject +Output [5]: [ss_item_sk#67 AS ss_item_sk#67, coalesce(sr_return_quantity#74, 0) AS _c1#77, coalesce(ss_quantity#69, 0) AS _c2#78, coalesce(cast(sr_return_amt#75 as decimal(12,2)), 0.00) AS _c3#79, coalesce(cast(ss_net_paid#70 as decimal(12,2)), 0.00) AS _c4#80] +Input [5]: [ss_item_sk#67, ss_quantity#69, ss_net_paid#70, sr_return_quantity#74, sr_return_amt#75] + +(133) NativeHashAggregate +Input [5]: [ss_item_sk#67, _c1#77, _c2#78, _c3#79, _c4#80] +Keys [1]: [ss_item_sk#67] +Functions [4]: [partial_sum(_c1#77), partial_sum(_c2#78), partial_sum(_c3#79), partial_sum(_c4#80)] +Aggregate Attributes [6]: [sum#81, sum#82, sum#83, isEmpty#84, sum#85, isEmpty#86] +Results [2]: [ss_item_sk#67, #24#24] + +(134) NativeShuffleExchange +Input [2]: [ss_item_sk#67, #24#24] +Arguments: hashpartitioning(ss_item_sk#67, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(135) ShuffleQueryStage +Output [2]: [ss_item_sk#67, #24#24] +Arguments: X + +(136) AQEShuffleRead +Input [2]: [ss_item_sk#67, #24#24] +Arguments: coalesced + +(137) InputAdapter +Input [2]: [ss_item_sk#67, #24#24] + +(138) NativeHashAggregate +Input [2]: [ss_item_sk#67, #24#24] +Keys [1]: [ss_item_sk#67] +Functions [4]: [sum(coalesce(sr_return_quantity#74, 0)), sum(coalesce(ss_quantity#69, 0)), sum(coalesce(cast(sr_return_amt#75 as decimal(12,2)), 0.00)), sum(coalesce(cast(ss_net_paid#70 as decimal(12,2)), 0.00))] +Aggregate Attributes [4]: [sum(coalesce(sr_return_quantity#74, 0))#87, sum(coalesce(ss_quantity#69, 0))#88, sum(coalesce(cast(sr_return_amt#75 as decimal(12,2)), 0.00))#89, sum(coalesce(cast(ss_net_paid#70 as decimal(12,2)), 0.00))#90] +Results [5]: [ss_item_sk#67, sum(coalesce(sr_return_quantity#74, 0))#87, sum(coalesce(ss_quantity#69, 0))#88, sum(coalesce(cast(sr_return_amt#75 as decimal(12,2)), 0.00))#89, sum(coalesce(cast(ss_net_paid#70 as decimal(12,2)), 0.00))#90] + +(139) NativeProject +Output [3]: [ss_item_sk#67 AS item#91, (cast(sum(coalesce(sr_return_quantity#74, 0))#87 as decimal(15,4)) / cast(sum(coalesce(ss_quantity#69, 0))#88 as decimal(15,4))) AS return_ratio#92, (cast(sum(coalesce(cast(sr_return_amt#75 as decimal(12,2)), 0.00))#89 as decimal(15,4)) / cast(sum(coalesce(cast(ss_net_paid#70 as decimal(12,2)), 0.00))#90 as decimal(15,4))) AS currency_ratio#93] +Input [5]: [ss_item_sk#67, sum(coalesce(sr_return_quantity#74, 0))#87, sum(coalesce(ss_quantity#69, 0))#88, sum(coalesce(cast(sr_return_amt#75 as decimal(12,2)), 0.00))#89, sum(coalesce(cast(ss_net_paid#70 as decimal(12,2)), 0.00))#90] + +(140) NativeShuffleExchange +Input [3]: [item#91, return_ratio#92, currency_ratio#93] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=16] + +(141) ShuffleQueryStage +Output [3]: [item#91, return_ratio#92, currency_ratio#93] +Arguments: X + +(142) NativeSort +Input [3]: [item#91, return_ratio#92, currency_ratio#93] +Arguments: [return_ratio#92 ASC NULLS FIRST], false + +(143) NativeWindow +Input [3]: [item#91, return_ratio#92, currency_ratio#93] +Arguments: [rank(return_ratio#92) windowspecdefinition(return_ratio#92 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS return_rank#94], [return_ratio#92 ASC NULLS FIRST] + +(144) NativeSort +Input [4]: [item#91, return_ratio#92, currency_ratio#93, return_rank#94] +Arguments: [currency_ratio#93 ASC NULLS FIRST], false + +(145) NativeWindow +Input [4]: [item#91, return_ratio#92, currency_ratio#93, return_rank#94] +Arguments: [rank(currency_ratio#93) windowspecdefinition(currency_ratio#93 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS currency_rank#95], [currency_ratio#93 ASC NULLS FIRST] + +(146) NativeFilter +Input [5]: [item#91, return_ratio#92, currency_ratio#93, return_rank#94, currency_rank#95] +Condition : ((return_rank#94 <= 10) OR (currency_rank#95 <= 10)) + +(147) NativeProject +Output [5]: [store AS channel#96, item#91, return_ratio#92, return_rank#94, currency_rank#95] +Input [5]: [item#91, return_ratio#92, currency_ratio#93, return_rank#94, currency_rank#95] + +(148) NativeUnion +Arguments: [channel#34, item#29, return_ratio#30, return_rank#32, currency_rank#33] + +(149) InputAdapter +Input [5]: [channel#34, item#29, return_ratio#30, return_rank#32, currency_rank#33] +Arguments: [#34, #29, #30, #32, #33] + +(150) NativeHashAggregate +Input [5]: [#34#34, #29#29, #30#30, #32#32, #33#33] +Keys [5]: [channel#34, item#29, return_ratio#30, return_rank#32, currency_rank#33] +Functions: [] +Aggregate Attributes: [] +Results [6]: [channel#34, item#29, return_ratio#30, return_rank#32, currency_rank#33, #24#24] + +(151) NativeShuffleExchange +Input [6]: [channel#34, item#29, return_ratio#30, return_rank#32, currency_rank#33, #24#24] +Arguments: hashpartitioning(channel#34, item#29, return_ratio#30, return_rank#32, currency_rank#33, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(152) ShuffleQueryStage +Output [6]: [channel#34, item#29, return_ratio#30, return_rank#32, currency_rank#33, #24#24] +Arguments: X + +(153) AQEShuffleRead +Input [6]: [channel#34, item#29, return_ratio#30, return_rank#32, currency_rank#33, #24#24] +Arguments: coalesced + +(154) InputAdapter +Input [6]: [channel#34, item#29, return_ratio#30, return_rank#32, currency_rank#33, #24#24] + +(155) NativeHashAggregate +Input [6]: [channel#34, item#29, return_ratio#30, return_rank#32, currency_rank#33, #24#24] +Keys [5]: [channel#34, item#29, return_ratio#30, return_rank#32, currency_rank#33] +Functions: [] +Aggregate Attributes: [] +Results [6]: [channel#34, item#29, return_ratio#30, return_rank#32, currency_rank#33, #24#24] + +(156) NativeProject +Output [5]: [channel#34, item#29, return_ratio#30, return_rank#32, currency_rank#33] +Input [6]: [channel#34, item#29, return_ratio#30, return_rank#32, currency_rank#33, #24#24] + +(157) NativeTakeOrdered +Input [5]: [channel#34, item#29, return_ratio#30, return_rank#32, currency_rank#33] +Arguments: X, [channel#34 ASC NULLS FIRST, return_rank#32 ASC NULLS FIRST, currency_rank#33 ASC NULLS FIRST, item#29 ASC NULLS FIRST] + +(158) Scan parquet +Output [6]: [ws_sold_date_sk#1, ws_item_sk#2, ws_order_number#3, ws_quantity#4, ws_net_paid#5, ws_net_profit#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_net_profit), IsNotNull(ws_net_paid), IsNotNull(ws_quantity), GreaterThan(ws_net_profit,1.00), GreaterThan(ws_net_paid,0.00), GreaterThan(ws_quantity,0), IsNotNull(ws_order_number), IsNotNull(ws_item_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(159) Filter +Input [6]: [ws_sold_date_sk#1, ws_item_sk#2, ws_order_number#3, ws_quantity#4, ws_net_paid#5, ws_net_profit#6] +Condition : ((((((((isnotnull(ws_net_profit#6) AND isnotnull(ws_net_paid#5)) AND isnotnull(ws_quantity#4)) AND (ws_net_profit#6 > 1.00)) AND (ws_net_paid#5 > 0.00)) AND (ws_quantity#4 > 0)) AND isnotnull(ws_order_number#3)) AND isnotnull(ws_item_sk#2)) AND isnotnull(ws_sold_date_sk#1)) + +(160) Project +Output [5]: [ws_sold_date_sk#1, ws_item_sk#2, ws_order_number#3, ws_quantity#4, ws_net_paid#5] +Input [6]: [ws_sold_date_sk#1, ws_item_sk#2, ws_order_number#3, ws_quantity#4, ws_net_paid#5, ws_net_profit#6] + +(161) Exchange +Input [5]: [ws_sold_date_sk#1, ws_item_sk#2, ws_order_number#3, ws_quantity#4, ws_net_paid#5] +Arguments: hashpartitioning(ws_order_number#3, ws_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(162) Sort +Input [5]: [ws_sold_date_sk#1, ws_item_sk#2, ws_order_number#3, ws_quantity#4, ws_net_paid#5] +Arguments: [ws_order_number#3 ASC NULLS FIRST, ws_item_sk#2 ASC NULLS FIRST], false, 0 + +(163) Scan parquet +Output [4]: [wr_item_sk#7, wr_order_number#8, wr_return_quantity#9, wr_return_amt#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wr_return_amt), GreaterThan(wr_return_amt,10000.00), IsNotNull(wr_order_number), IsNotNull(wr_item_sk)] +ReadSchema: struct + +(164) Filter +Input [4]: [wr_item_sk#7, wr_order_number#8, wr_return_quantity#9, wr_return_amt#10] +Condition : (((isnotnull(wr_return_amt#10) AND (wr_return_amt#10 > 10000.00)) AND isnotnull(wr_order_number#8)) AND isnotnull(wr_item_sk#7)) + +(165) Exchange +Input [4]: [wr_item_sk#7, wr_order_number#8, wr_return_quantity#9, wr_return_amt#10] +Arguments: hashpartitioning(wr_order_number#8, wr_item_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(166) Sort +Input [4]: [wr_item_sk#7, wr_order_number#8, wr_return_quantity#9, wr_return_amt#10] +Arguments: [wr_order_number#8 ASC NULLS FIRST, wr_item_sk#7 ASC NULLS FIRST], false, 0 + +(167) SortMergeJoin +Left keys [2]: [ws_order_number#3, ws_item_sk#2] +Right keys [2]: [wr_order_number#8, wr_item_sk#7] +Join type: Inner +Join condition: None + +(168) Project +Output [6]: [ws_sold_date_sk#1, ws_item_sk#2, ws_quantity#4, ws_net_paid#5, wr_return_quantity#9, wr_return_amt#10] +Input [9]: [ws_sold_date_sk#1, ws_item_sk#2, ws_order_number#3, ws_quantity#4, ws_net_paid#5, wr_item_sk#7, wr_order_number#8, wr_return_quantity#9, wr_return_amt#10] + +(169) Exchange +Input [6]: [ws_sold_date_sk#1, ws_item_sk#2, ws_quantity#4, ws_net_paid#5, wr_return_quantity#9, wr_return_amt#10] +Arguments: hashpartitioning(ws_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(170) Sort +Input [6]: [ws_sold_date_sk#1, ws_item_sk#2, ws_quantity#4, ws_net_paid#5, wr_return_quantity#9, wr_return_amt#10] +Arguments: [ws_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(171) Scan parquet +Output [3]: [d_date_sk#11, d_year#12, d_moy#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), EqualTo(d_moy,12), IsNotNull(d_date_sk)] +ReadSchema: struct + +(172) Filter +Input [3]: [d_date_sk#11, d_year#12, d_moy#13] +Condition : ((((isnotnull(d_year#12) AND isnotnull(d_moy#13)) AND (d_year#12 = 2001)) AND (d_moy#13 = 12)) AND isnotnull(d_date_sk#11)) + +(173) Project +Output [1]: [d_date_sk#11] +Input [3]: [d_date_sk#11, d_year#12, d_moy#13] + +(174) Exchange +Input [1]: [d_date_sk#11] +Arguments: hashpartitioning(d_date_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(175) Sort +Input [1]: [d_date_sk#11] +Arguments: [d_date_sk#11 ASC NULLS FIRST], false, 0 + +(176) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#1] +Right keys [1]: [d_date_sk#11] +Join type: Inner +Join condition: None + +(177) Project +Output [5]: [ws_item_sk#2, ws_quantity#4, ws_net_paid#5, wr_return_quantity#9, wr_return_amt#10] +Input [7]: [ws_sold_date_sk#1, ws_item_sk#2, ws_quantity#4, ws_net_paid#5, wr_return_quantity#9, wr_return_amt#10, d_date_sk#11] + +(178) HashAggregate +Input [5]: [ws_item_sk#2, ws_quantity#4, ws_net_paid#5, wr_return_quantity#9, wr_return_amt#10] +Keys [1]: [ws_item_sk#2] +Functions [4]: [partial_sum(coalesce(wr_return_quantity#9, 0)), partial_sum(coalesce(ws_quantity#4, 0)), partial_sum(coalesce(cast(wr_return_amt#10 as decimal(12,2)), 0.00)), partial_sum(coalesce(cast(ws_net_paid#5 as decimal(12,2)), 0.00))] +Aggregate Attributes [6]: [sum#18, sum#19, sum#20, isEmpty#21, sum#22, isEmpty#23] +Results [7]: [ws_item_sk#2, sum#97, sum#98, sum#99, isEmpty#100, sum#101, isEmpty#102] + +(179) Exchange +Input [7]: [ws_item_sk#2, sum#97, sum#98, sum#99, isEmpty#100, sum#101, isEmpty#102] +Arguments: hashpartitioning(ws_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(180) HashAggregate +Input [7]: [ws_item_sk#2, sum#97, sum#98, sum#99, isEmpty#100, sum#101, isEmpty#102] +Keys [1]: [ws_item_sk#2] +Functions [4]: [sum(coalesce(wr_return_quantity#9, 0)), sum(coalesce(ws_quantity#4, 0)), sum(coalesce(cast(wr_return_amt#10 as decimal(12,2)), 0.00)), sum(coalesce(cast(ws_net_paid#5 as decimal(12,2)), 0.00))] +Aggregate Attributes [4]: [sum(coalesce(wr_return_quantity#9, 0))#25, sum(coalesce(ws_quantity#4, 0))#26, sum(coalesce(cast(wr_return_amt#10 as decimal(12,2)), 0.00))#27, sum(coalesce(cast(ws_net_paid#5 as decimal(12,2)), 0.00))#28] +Results [3]: [ws_item_sk#2 AS item#29, (cast(sum(coalesce(wr_return_quantity#9, 0))#25 as decimal(15,4)) / cast(sum(coalesce(ws_quantity#4, 0))#26 as decimal(15,4))) AS return_ratio#30, (cast(sum(coalesce(cast(wr_return_amt#10 as decimal(12,2)), 0.00))#27 as decimal(15,4)) / cast(sum(coalesce(cast(ws_net_paid#5 as decimal(12,2)), 0.00))#28 as decimal(15,4))) AS currency_ratio#31] + +(181) Exchange +Input [3]: [item#29, return_ratio#30, currency_ratio#31] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=23] + +(182) Sort +Input [3]: [item#29, return_ratio#30, currency_ratio#31] +Arguments: [return_ratio#30 ASC NULLS FIRST], false, 0 + +(183) Window +Input [3]: [item#29, return_ratio#30, currency_ratio#31] +Arguments: [rank(return_ratio#30) windowspecdefinition(return_ratio#30 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS return_rank#32], [return_ratio#30 ASC NULLS FIRST] + +(184) Sort +Input [4]: [item#29, return_ratio#30, currency_ratio#31, return_rank#32] +Arguments: [currency_ratio#31 ASC NULLS FIRST], false, 0 + +(185) Window +Input [4]: [item#29, return_ratio#30, currency_ratio#31, return_rank#32] +Arguments: [rank(currency_ratio#31) windowspecdefinition(currency_ratio#31 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS currency_rank#33], [currency_ratio#31 ASC NULLS FIRST] + +(186) Filter +Input [5]: [item#29, return_ratio#30, currency_ratio#31, return_rank#32, currency_rank#33] +Condition : ((return_rank#32 <= 10) OR (currency_rank#33 <= 10)) + +(187) Project +Output [5]: [web AS channel#34, item#29, return_ratio#30, return_rank#32, currency_rank#33] +Input [5]: [item#29, return_ratio#30, currency_ratio#31, return_rank#32, currency_rank#33] + +(188) Scan parquet +Output [6]: [cs_sold_date_sk#35, cs_item_sk#36, cs_order_number#37, cs_quantity#38, cs_net_paid#39, cs_net_profit#40] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_net_profit), IsNotNull(cs_net_paid), IsNotNull(cs_quantity), GreaterThan(cs_net_profit,1.00), GreaterThan(cs_net_paid,0.00), GreaterThan(cs_quantity,0), IsNotNull(cs_order_number), IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(189) Filter +Input [6]: [cs_sold_date_sk#35, cs_item_sk#36, cs_order_number#37, cs_quantity#38, cs_net_paid#39, cs_net_profit#40] +Condition : ((((((((isnotnull(cs_net_profit#40) AND isnotnull(cs_net_paid#39)) AND isnotnull(cs_quantity#38)) AND (cs_net_profit#40 > 1.00)) AND (cs_net_paid#39 > 0.00)) AND (cs_quantity#38 > 0)) AND isnotnull(cs_order_number#37)) AND isnotnull(cs_item_sk#36)) AND isnotnull(cs_sold_date_sk#35)) + +(190) Project +Output [5]: [cs_sold_date_sk#35, cs_item_sk#36, cs_order_number#37, cs_quantity#38, cs_net_paid#39] +Input [6]: [cs_sold_date_sk#35, cs_item_sk#36, cs_order_number#37, cs_quantity#38, cs_net_paid#39, cs_net_profit#40] + +(191) Exchange +Input [5]: [cs_sold_date_sk#35, cs_item_sk#36, cs_order_number#37, cs_quantity#38, cs_net_paid#39] +Arguments: hashpartitioning(cs_order_number#37, cs_item_sk#36, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(192) Sort +Input [5]: [cs_sold_date_sk#35, cs_item_sk#36, cs_order_number#37, cs_quantity#38, cs_net_paid#39] +Arguments: [cs_order_number#37 ASC NULLS FIRST, cs_item_sk#36 ASC NULLS FIRST], false, 0 + +(193) Scan parquet +Output [4]: [cr_item_sk#41, cr_order_number#42, cr_return_quantity#43, cr_return_amount#44] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cr_return_amount), GreaterThan(cr_return_amount,10000.00), IsNotNull(cr_order_number), IsNotNull(cr_item_sk)] +ReadSchema: struct + +(194) Filter +Input [4]: [cr_item_sk#41, cr_order_number#42, cr_return_quantity#43, cr_return_amount#44] +Condition : (((isnotnull(cr_return_amount#44) AND (cr_return_amount#44 > 10000.00)) AND isnotnull(cr_order_number#42)) AND isnotnull(cr_item_sk#41)) + +(195) Exchange +Input [4]: [cr_item_sk#41, cr_order_number#42, cr_return_quantity#43, cr_return_amount#44] +Arguments: hashpartitioning(cr_order_number#42, cr_item_sk#41, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(196) Sort +Input [4]: [cr_item_sk#41, cr_order_number#42, cr_return_quantity#43, cr_return_amount#44] +Arguments: [cr_order_number#42 ASC NULLS FIRST, cr_item_sk#41 ASC NULLS FIRST], false, 0 + +(197) SortMergeJoin +Left keys [2]: [cs_order_number#37, cs_item_sk#36] +Right keys [2]: [cr_order_number#42, cr_item_sk#41] +Join type: Inner +Join condition: None + +(198) Project +Output [6]: [cs_sold_date_sk#35, cs_item_sk#36, cs_quantity#38, cs_net_paid#39, cr_return_quantity#43, cr_return_amount#44] +Input [9]: [cs_sold_date_sk#35, cs_item_sk#36, cs_order_number#37, cs_quantity#38, cs_net_paid#39, cr_item_sk#41, cr_order_number#42, cr_return_quantity#43, cr_return_amount#44] + +(199) Exchange +Input [6]: [cs_sold_date_sk#35, cs_item_sk#36, cs_quantity#38, cs_net_paid#39, cr_return_quantity#43, cr_return_amount#44] +Arguments: hashpartitioning(cs_sold_date_sk#35, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(200) Sort +Input [6]: [cs_sold_date_sk#35, cs_item_sk#36, cs_quantity#38, cs_net_paid#39, cr_return_quantity#43, cr_return_amount#44] +Arguments: [cs_sold_date_sk#35 ASC NULLS FIRST], false, 0 + +(201) Scan parquet +Output [3]: [d_date_sk#45, d_year#103, d_moy#104] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), EqualTo(d_moy,12), IsNotNull(d_date_sk)] +ReadSchema: struct + +(202) Filter +Input [3]: [d_date_sk#45, d_year#103, d_moy#104] +Condition : ((((isnotnull(d_year#103) AND isnotnull(d_moy#104)) AND (d_year#103 = 2001)) AND (d_moy#104 = 12)) AND isnotnull(d_date_sk#45)) + +(203) Project +Output [1]: [d_date_sk#45] +Input [3]: [d_date_sk#45, d_year#103, d_moy#104] + +(204) Exchange +Input [1]: [d_date_sk#45] +Arguments: hashpartitioning(d_date_sk#45, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(205) Sort +Input [1]: [d_date_sk#45] +Arguments: [d_date_sk#45 ASC NULLS FIRST], false, 0 + +(206) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#35] +Right keys [1]: [d_date_sk#45] +Join type: Inner +Join condition: None + +(207) Project +Output [5]: [cs_item_sk#36, cs_quantity#38, cs_net_paid#39, cr_return_quantity#43, cr_return_amount#44] +Input [7]: [cs_sold_date_sk#35, cs_item_sk#36, cs_quantity#38, cs_net_paid#39, cr_return_quantity#43, cr_return_amount#44, d_date_sk#45] + +(208) HashAggregate +Input [5]: [cs_item_sk#36, cs_quantity#38, cs_net_paid#39, cr_return_quantity#43, cr_return_amount#44] +Keys [1]: [cs_item_sk#36] +Functions [4]: [partial_sum(coalesce(cr_return_quantity#43, 0)), partial_sum(coalesce(cs_quantity#38, 0)), partial_sum(coalesce(cast(cr_return_amount#44 as decimal(12,2)), 0.00)), partial_sum(coalesce(cast(cs_net_paid#39 as decimal(12,2)), 0.00))] +Aggregate Attributes [6]: [sum#50, sum#51, sum#52, isEmpty#53, sum#54, isEmpty#55] +Results [7]: [cs_item_sk#36, sum#105, sum#106, sum#107, isEmpty#108, sum#109, isEmpty#110] + +(209) Exchange +Input [7]: [cs_item_sk#36, sum#105, sum#106, sum#107, isEmpty#108, sum#109, isEmpty#110] +Arguments: hashpartitioning(cs_item_sk#36, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(210) HashAggregate +Input [7]: [cs_item_sk#36, sum#105, sum#106, sum#107, isEmpty#108, sum#109, isEmpty#110] +Keys [1]: [cs_item_sk#36] +Functions [4]: [sum(coalesce(cr_return_quantity#43, 0)), sum(coalesce(cs_quantity#38, 0)), sum(coalesce(cast(cr_return_amount#44 as decimal(12,2)), 0.00)), sum(coalesce(cast(cs_net_paid#39 as decimal(12,2)), 0.00))] +Aggregate Attributes [4]: [sum(coalesce(cr_return_quantity#43, 0))#56, sum(coalesce(cs_quantity#38, 0))#57, sum(coalesce(cast(cr_return_amount#44 as decimal(12,2)), 0.00))#58, sum(coalesce(cast(cs_net_paid#39 as decimal(12,2)), 0.00))#59] +Results [3]: [cs_item_sk#36 AS item#60, (cast(sum(coalesce(cr_return_quantity#43, 0))#56 as decimal(15,4)) / cast(sum(coalesce(cs_quantity#38, 0))#57 as decimal(15,4))) AS return_ratio#61, (cast(sum(coalesce(cast(cr_return_amount#44 as decimal(12,2)), 0.00))#58 as decimal(15,4)) / cast(sum(coalesce(cast(cs_net_paid#39 as decimal(12,2)), 0.00))#59 as decimal(15,4))) AS currency_ratio#62] + +(211) Exchange +Input [3]: [item#60, return_ratio#61, currency_ratio#62] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=29] + +(212) Sort +Input [3]: [item#60, return_ratio#61, currency_ratio#62] +Arguments: [return_ratio#61 ASC NULLS FIRST], false, 0 + +(213) Window +Input [3]: [item#60, return_ratio#61, currency_ratio#62] +Arguments: [rank(return_ratio#61) windowspecdefinition(return_ratio#61 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS return_rank#63], [return_ratio#61 ASC NULLS FIRST] + +(214) Sort +Input [4]: [item#60, return_ratio#61, currency_ratio#62, return_rank#63] +Arguments: [currency_ratio#62 ASC NULLS FIRST], false, 0 + +(215) Window +Input [4]: [item#60, return_ratio#61, currency_ratio#62, return_rank#63] +Arguments: [rank(currency_ratio#62) windowspecdefinition(currency_ratio#62 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS currency_rank#64], [currency_ratio#62 ASC NULLS FIRST] + +(216) Filter +Input [5]: [item#60, return_ratio#61, currency_ratio#62, return_rank#63, currency_rank#64] +Condition : ((return_rank#63 <= 10) OR (currency_rank#64 <= 10)) + +(217) Project +Output [5]: [catalog AS channel#65, item#60, return_ratio#61, return_rank#63, currency_rank#64] +Input [5]: [item#60, return_ratio#61, currency_ratio#62, return_rank#63, currency_rank#64] + +(218) Scan parquet +Output [6]: [ss_sold_date_sk#66, ss_item_sk#67, ss_ticket_number#68, ss_quantity#69, ss_net_paid#70, ss_net_profit#71] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_net_profit), IsNotNull(ss_net_paid), IsNotNull(ss_quantity), GreaterThan(ss_net_profit,1.00), GreaterThan(ss_net_paid,0.00), GreaterThan(ss_quantity,0), IsNotNull(ss_ticket_number), IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(219) Filter +Input [6]: [ss_sold_date_sk#66, ss_item_sk#67, ss_ticket_number#68, ss_quantity#69, ss_net_paid#70, ss_net_profit#71] +Condition : ((((((((isnotnull(ss_net_profit#71) AND isnotnull(ss_net_paid#70)) AND isnotnull(ss_quantity#69)) AND (ss_net_profit#71 > 1.00)) AND (ss_net_paid#70 > 0.00)) AND (ss_quantity#69 > 0)) AND isnotnull(ss_ticket_number#68)) AND isnotnull(ss_item_sk#67)) AND isnotnull(ss_sold_date_sk#66)) + +(220) Project +Output [5]: [ss_sold_date_sk#66, ss_item_sk#67, ss_ticket_number#68, ss_quantity#69, ss_net_paid#70] +Input [6]: [ss_sold_date_sk#66, ss_item_sk#67, ss_ticket_number#68, ss_quantity#69, ss_net_paid#70, ss_net_profit#71] + +(221) Exchange +Input [5]: [ss_sold_date_sk#66, ss_item_sk#67, ss_ticket_number#68, ss_quantity#69, ss_net_paid#70] +Arguments: hashpartitioning(ss_ticket_number#68, ss_item_sk#67, 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(222) Sort +Input [5]: [ss_sold_date_sk#66, ss_item_sk#67, ss_ticket_number#68, ss_quantity#69, ss_net_paid#70] +Arguments: [ss_ticket_number#68 ASC NULLS FIRST, ss_item_sk#67 ASC NULLS FIRST], false, 0 + +(223) Scan parquet +Output [4]: [sr_item_sk#72, sr_ticket_number#73, sr_return_quantity#74, sr_return_amt#75] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_return_amt), GreaterThan(sr_return_amt,10000.00), IsNotNull(sr_ticket_number), IsNotNull(sr_item_sk)] +ReadSchema: struct + +(224) Filter +Input [4]: [sr_item_sk#72, sr_ticket_number#73, sr_return_quantity#74, sr_return_amt#75] +Condition : (((isnotnull(sr_return_amt#75) AND (sr_return_amt#75 > 10000.00)) AND isnotnull(sr_ticket_number#73)) AND isnotnull(sr_item_sk#72)) + +(225) Exchange +Input [4]: [sr_item_sk#72, sr_ticket_number#73, sr_return_quantity#74, sr_return_amt#75] +Arguments: hashpartitioning(sr_ticket_number#73, sr_item_sk#72, 100), ENSURE_REQUIREMENTS, [plan_id=31] + +(226) Sort +Input [4]: [sr_item_sk#72, sr_ticket_number#73, sr_return_quantity#74, sr_return_amt#75] +Arguments: [sr_ticket_number#73 ASC NULLS FIRST, sr_item_sk#72 ASC NULLS FIRST], false, 0 + +(227) SortMergeJoin +Left keys [2]: [ss_ticket_number#68, ss_item_sk#67] +Right keys [2]: [sr_ticket_number#73, sr_item_sk#72] +Join type: Inner +Join condition: None + +(228) Project +Output [6]: [ss_sold_date_sk#66, ss_item_sk#67, ss_quantity#69, ss_net_paid#70, sr_return_quantity#74, sr_return_amt#75] +Input [9]: [ss_sold_date_sk#66, ss_item_sk#67, ss_ticket_number#68, ss_quantity#69, ss_net_paid#70, sr_item_sk#72, sr_ticket_number#73, sr_return_quantity#74, sr_return_amt#75] + +(229) Exchange +Input [6]: [ss_sold_date_sk#66, ss_item_sk#67, ss_quantity#69, ss_net_paid#70, sr_return_quantity#74, sr_return_amt#75] +Arguments: hashpartitioning(ss_sold_date_sk#66, 100), ENSURE_REQUIREMENTS, [plan_id=32] + +(230) Sort +Input [6]: [ss_sold_date_sk#66, ss_item_sk#67, ss_quantity#69, ss_net_paid#70, sr_return_quantity#74, sr_return_amt#75] +Arguments: [ss_sold_date_sk#66 ASC NULLS FIRST], false, 0 + +(231) Scan parquet +Output [3]: [d_date_sk#76, d_year#111, d_moy#112] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), EqualTo(d_moy,12), IsNotNull(d_date_sk)] +ReadSchema: struct + +(232) Filter +Input [3]: [d_date_sk#76, d_year#111, d_moy#112] +Condition : ((((isnotnull(d_year#111) AND isnotnull(d_moy#112)) AND (d_year#111 = 2001)) AND (d_moy#112 = 12)) AND isnotnull(d_date_sk#76)) + +(233) Project +Output [1]: [d_date_sk#76] +Input [3]: [d_date_sk#76, d_year#111, d_moy#112] + +(234) Exchange +Input [1]: [d_date_sk#76] +Arguments: hashpartitioning(d_date_sk#76, 100), ENSURE_REQUIREMENTS, [plan_id=33] + +(235) Sort +Input [1]: [d_date_sk#76] +Arguments: [d_date_sk#76 ASC NULLS FIRST], false, 0 + +(236) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#66] +Right keys [1]: [d_date_sk#76] +Join type: Inner +Join condition: None + +(237) Project +Output [5]: [ss_item_sk#67, ss_quantity#69, ss_net_paid#70, sr_return_quantity#74, sr_return_amt#75] +Input [7]: [ss_sold_date_sk#66, ss_item_sk#67, ss_quantity#69, ss_net_paid#70, sr_return_quantity#74, sr_return_amt#75, d_date_sk#76] + +(238) HashAggregate +Input [5]: [ss_item_sk#67, ss_quantity#69, ss_net_paid#70, sr_return_quantity#74, sr_return_amt#75] +Keys [1]: [ss_item_sk#67] +Functions [4]: [partial_sum(coalesce(sr_return_quantity#74, 0)), partial_sum(coalesce(ss_quantity#69, 0)), partial_sum(coalesce(cast(sr_return_amt#75 as decimal(12,2)), 0.00)), partial_sum(coalesce(cast(ss_net_paid#70 as decimal(12,2)), 0.00))] +Aggregate Attributes [6]: [sum#81, sum#82, sum#83, isEmpty#84, sum#85, isEmpty#86] +Results [7]: [ss_item_sk#67, sum#113, sum#114, sum#115, isEmpty#116, sum#117, isEmpty#118] + +(239) Exchange +Input [7]: [ss_item_sk#67, sum#113, sum#114, sum#115, isEmpty#116, sum#117, isEmpty#118] +Arguments: hashpartitioning(ss_item_sk#67, 100), ENSURE_REQUIREMENTS, [plan_id=34] + +(240) HashAggregate +Input [7]: [ss_item_sk#67, sum#113, sum#114, sum#115, isEmpty#116, sum#117, isEmpty#118] +Keys [1]: [ss_item_sk#67] +Functions [4]: [sum(coalesce(sr_return_quantity#74, 0)), sum(coalesce(ss_quantity#69, 0)), sum(coalesce(cast(sr_return_amt#75 as decimal(12,2)), 0.00)), sum(coalesce(cast(ss_net_paid#70 as decimal(12,2)), 0.00))] +Aggregate Attributes [4]: [sum(coalesce(sr_return_quantity#74, 0))#87, sum(coalesce(ss_quantity#69, 0))#88, sum(coalesce(cast(sr_return_amt#75 as decimal(12,2)), 0.00))#89, sum(coalesce(cast(ss_net_paid#70 as decimal(12,2)), 0.00))#90] +Results [3]: [ss_item_sk#67 AS item#91, (cast(sum(coalesce(sr_return_quantity#74, 0))#87 as decimal(15,4)) / cast(sum(coalesce(ss_quantity#69, 0))#88 as decimal(15,4))) AS return_ratio#92, (cast(sum(coalesce(cast(sr_return_amt#75 as decimal(12,2)), 0.00))#89 as decimal(15,4)) / cast(sum(coalesce(cast(ss_net_paid#70 as decimal(12,2)), 0.00))#90 as decimal(15,4))) AS currency_ratio#93] + +(241) Exchange +Input [3]: [item#91, return_ratio#92, currency_ratio#93] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=35] + +(242) Sort +Input [3]: [item#91, return_ratio#92, currency_ratio#93] +Arguments: [return_ratio#92 ASC NULLS FIRST], false, 0 + +(243) Window +Input [3]: [item#91, return_ratio#92, currency_ratio#93] +Arguments: [rank(return_ratio#92) windowspecdefinition(return_ratio#92 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS return_rank#94], [return_ratio#92 ASC NULLS FIRST] + +(244) Sort +Input [4]: [item#91, return_ratio#92, currency_ratio#93, return_rank#94] +Arguments: [currency_ratio#93 ASC NULLS FIRST], false, 0 + +(245) Window +Input [4]: [item#91, return_ratio#92, currency_ratio#93, return_rank#94] +Arguments: [rank(currency_ratio#93) windowspecdefinition(currency_ratio#93 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS currency_rank#95], [currency_ratio#93 ASC NULLS FIRST] + +(246) Filter +Input [5]: [item#91, return_ratio#92, currency_ratio#93, return_rank#94, currency_rank#95] +Condition : ((return_rank#94 <= 10) OR (currency_rank#95 <= 10)) + +(247) Project +Output [5]: [store AS channel#96, item#91, return_ratio#92, return_rank#94, currency_rank#95] +Input [5]: [item#91, return_ratio#92, currency_ratio#93, return_rank#94, currency_rank#95] + +(248) Union + +(249) HashAggregate +Input [5]: [channel#34, item#29, return_ratio#30, return_rank#32, currency_rank#33] +Keys [5]: [channel#34, item#29, return_ratio#30, return_rank#32, currency_rank#33] +Functions: [] +Aggregate Attributes: [] +Results [5]: [channel#34, item#29, return_ratio#30, return_rank#32, currency_rank#33] + +(250) Exchange +Input [5]: [channel#34, item#29, return_ratio#30, return_rank#32, currency_rank#33] +Arguments: hashpartitioning(channel#34, item#29, return_ratio#30, return_rank#32, currency_rank#33, 100), ENSURE_REQUIREMENTS, [plan_id=36] + +(251) HashAggregate +Input [5]: [channel#34, item#29, return_ratio#30, return_rank#32, currency_rank#33] +Keys [5]: [channel#34, item#29, return_ratio#30, return_rank#32, currency_rank#33] +Functions: [] +Aggregate Attributes: [] +Results [5]: [channel#34, item#29, return_ratio#30, return_rank#32, currency_rank#33] + +(252) TakeOrderedAndProject +Input [5]: [channel#34, item#29, return_ratio#30, return_rank#32, currency_rank#33] +Arguments: X, [channel#34 ASC NULLS FIRST, return_rank#32 ASC NULLS FIRST, currency_rank#33 ASC NULLS FIRST, item#29 ASC NULLS FIRST], [channel#34, item#29, return_ratio#30, return_rank#32, currency_rank#33] + +(253) AdaptiveSparkPlan +Output [5]: [channel#34, item#29, return_ratio#30, return_rank#32, currency_rank#33] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q5.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q5.txt new file mode 100644 index 000000000..024708d43 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q5.txt @@ -0,0 +1,1426 @@ +== Physical Plan == +AdaptiveSparkPlan (261) ++- == Final Plan == + NativeTakeOrdered (166) + +- NativeProject (165) + +- NativeHashAggregate (164) + +- InputAdapter (163) + +- AQEShuffleRead (162) + +- ShuffleQueryStage (161), Statistics(X) + +- NativeShuffleExchange (160) + +- NativeHashAggregate (159) + +- NativeExpand (158) + +- InputAdapter (157) + +- NativeUnion (156) + :- NativeProject (49) + : +- NativeHashAggregate (48) + : +- InputAdapter (47) + : +- AQEShuffleRead (46) + : +- ShuffleQueryStage (45), Statistics(X) + : +- NativeShuffleExchange (44) + : +- NativeHashAggregate (43) + : +- NativeProject (42) + : +- NativeProject (41) + : +- NativeSortMergeJoin Inner (40) + : :- NativeSort (31) + : : +- InputAdapter (30) + : : +- AQEShuffleRead (29) + : : +- ShuffleQueryStage (28), Statistics(X) + : : +- NativeShuffleExchange (27) + : : +- NativeProject (26) + : : +- NativeSortMergeJoin Inner (25) + : : :- NativeSort (15) + : : : +- InputAdapter (14) + : : : +- AQEShuffleRead (13) + : : : +- ShuffleQueryStage (12), Statistics(X) + : : : +- NativeShuffleExchange (11) + : : : +- InputAdapter (10) + : : : +- NativeUnion (9) + : : : :- NativeProject (4) + : : : : +- NativeFilter (3) + : : : : +- InputAdapter (2) + : : : : +- NativeParquetScan (1) + : : : +- NativeProject (8) + : : : +- NativeFilter (7) + : : : +- InputAdapter (6) + : : : +- NativeParquetScan (5) + : : +- NativeSort (24) + : : +- InputAdapter (23) + : : +- AQEShuffleRead (22) + : : +- ShuffleQueryStage (21), Statistics(X) + : : +- NativeShuffleExchange (20) + : : +- NativeProject (19) + : : +- NativeFilter (18) + : : +- InputAdapter (17) + : : +- NativeParquetScan (16) + : +- NativeSort (39) + : +- InputAdapter (38) + : +- AQEShuffleRead (37) + : +- ShuffleQueryStage (36), Statistics(X) + : +- NativeShuffleExchange (35) + : +- NativeFilter (34) + : +- InputAdapter (33) + : +- NativeParquetScan (32) + :- NativeProject (95) + : +- NativeHashAggregate (94) + : +- InputAdapter (93) + : +- AQEShuffleRead (92) + : +- ShuffleQueryStage (91), Statistics(X) + : +- NativeShuffleExchange (90) + : +- NativeHashAggregate (89) + : +- NativeProject (88) + : +- NativeProject (87) + : +- NativeSortMergeJoin Inner (86) + : :- NativeSort (77) + : : +- InputAdapter (76) + : : +- AQEShuffleRead (75) + : : +- ShuffleQueryStage (74), Statistics(X) + : : +- NativeShuffleExchange (73) + : : +- NativeProject (72) + : : +- NativeSortMergeJoin Inner (71) + : : :- NativeSort (64) + : : : +- InputAdapter (63) + : : : +- AQEShuffleRead (62) + : : : +- ShuffleQueryStage (61), Statistics(X) + : : : +- NativeShuffleExchange (60) + : : : +- InputAdapter (59) + : : : +- NativeUnion (58) + : : : :- NativeProject (53) + : : : : +- NativeFilter (52) + : : : : +- InputAdapter (51) + : : : : +- NativeParquetScan (50) + : : : +- NativeProject (57) + : : : +- NativeFilter (56) + : : : +- InputAdapter (55) + : : : +- NativeParquetScan (54) + : : +- NativeSort (70) + : : +- InputAdapter (69) + : : +- InputAdapter (68) + : : +- AQEShuffleRead (67) + : : +- ShuffleQueryStage (66), Statistics(X) + : : +- ReusedExchange (65) + : +- NativeSort (85) + : +- InputAdapter (84) + : +- AQEShuffleRead (83) + : +- ShuffleQueryStage (82), Statistics(X) + : +- NativeShuffleExchange (81) + : +- NativeFilter (80) + : +- InputAdapter (79) + : +- NativeParquetScan (78) + +- NativeProject (155) + +- NativeHashAggregate (154) + +- InputAdapter (153) + +- AQEShuffleRead (152) + +- ShuffleQueryStage (151), Statistics(X) + +- NativeShuffleExchange (150) + +- NativeHashAggregate (149) + +- NativeProject (148) + +- NativeProject (147) + +- NativeSortMergeJoin Inner (146) + :- NativeSort (137) + : +- InputAdapter (136) + : +- AQEShuffleRead (135) + : +- ShuffleQueryStage (134), Statistics(X) + : +- NativeShuffleExchange (133) + : +- NativeProject (132) + : +- NativeSortMergeJoin Inner (131) + : :- NativeSort (124) + : : +- InputAdapter (123) + : : +- AQEShuffleRead (122) + : : +- ShuffleQueryStage (121), Statistics(X) + : : +- NativeShuffleExchange (120) + : : +- InputAdapter (119) + : : +- NativeUnion (118) + : : :- NativeProject (99) + : : : +- NativeFilter (98) + : : : +- InputAdapter (97) + : : : +- NativeParquetScan (96) + : : +- NativeProject (117) + : : +- NativeSortMergeJoin Inner (116) + : : :- NativeSort (107) + : : : +- InputAdapter (106) + : : : +- AQEShuffleRead (105) + : : : +- ShuffleQueryStage (104), Statistics(X) + : : : +- NativeShuffleExchange (103) + : : : +- NativeFilter (102) + : : : +- InputAdapter (101) + : : : +- NativeParquetScan (100) + : : +- NativeSort (115) + : : +- InputAdapter (114) + : : +- AQEShuffleRead (113) + : : +- ShuffleQueryStage (112), Statistics(X) + : : +- NativeShuffleExchange (111) + : : +- NativeFilter (110) + : : +- InputAdapter (109) + : : +- NativeParquetScan (108) + : +- NativeSort (130) + : +- InputAdapter (129) + : +- InputAdapter (128) + : +- AQEShuffleRead (127) + : +- ShuffleQueryStage (126), Statistics(X) + : +- ReusedExchange (125) + +- NativeSort (145) + +- InputAdapter (144) + +- AQEShuffleRead (143) + +- ShuffleQueryStage (142), Statistics(X) + +- NativeShuffleExchange (141) + +- NativeFilter (140) + +- InputAdapter (139) + +- NativeParquetScan (138) ++- == Initial Plan == + TakeOrderedAndProject (260) + +- HashAggregate (259) + +- Exchange (258) + +- HashAggregate (257) + +- Expand (256) + +- Union (255) + :- HashAggregate (193) + : +- Exchange (192) + : +- HashAggregate (191) + : +- Project (190) + : +- SortMergeJoin Inner (189) + : :- Sort (184) + : : +- Exchange (183) + : : +- Project (182) + : : +- SortMergeJoin Inner (181) + : : :- Sort (175) + : : : +- Exchange (174) + : : : +- Union (173) + : : : :- Project (169) + : : : : +- Filter (168) + : : : : +- Scan parquet (167) + : : : +- Project (172) + : : : +- Filter (171) + : : : +- Scan parquet (170) + : : +- Sort (180) + : : +- Exchange (179) + : : +- Project (178) + : : +- Filter (177) + : : +- Scan parquet (176) + : +- Sort (188) + : +- Exchange (187) + : +- Filter (186) + : +- Scan parquet (185) + :- HashAggregate (220) + : +- Exchange (219) + : +- HashAggregate (218) + : +- Project (217) + : +- SortMergeJoin Inner (216) + : :- Sort (211) + : : +- Exchange (210) + : : +- Project (209) + : : +- SortMergeJoin Inner (208) + : : :- Sort (202) + : : : +- Exchange (201) + : : : +- Union (200) + : : : :- Project (196) + : : : : +- Filter (195) + : : : : +- Scan parquet (194) + : : : +- Project (199) + : : : +- Filter (198) + : : : +- Scan parquet (197) + : : +- Sort (207) + : : +- Exchange (206) + : : +- Project (205) + : : +- Filter (204) + : : +- Scan parquet (203) + : +- Sort (215) + : +- Exchange (214) + : +- Filter (213) + : +- Scan parquet (212) + +- HashAggregate (254) + +- Exchange (253) + +- HashAggregate (252) + +- Project (251) + +- SortMergeJoin Inner (250) + :- Sort (245) + : +- Exchange (244) + : +- Project (243) + : +- SortMergeJoin Inner (242) + : :- Sort (236) + : : +- Exchange (235) + : : +- Union (234) + : : :- Project (223) + : : : +- Filter (222) + : : : +- Scan parquet (221) + : : +- Project (233) + : : +- SortMergeJoin Inner (232) + : : :- Sort (227) + : : : +- Exchange (226) + : : : +- Filter (225) + : : : +- Scan parquet (224) + : : +- Sort (231) + : : +- Exchange (230) + : : +- Filter (229) + : : +- Scan parquet (228) + : +- Sort (241) + : +- Exchange (240) + : +- Project (239) + : +- Filter (238) + : +- Scan parquet (237) + +- Sort (249) + +- Exchange (248) + +- Filter (247) + +- Scan parquet (246) + + +(167) Scan parquet +Output [4]: [ss_sold_date_sk#1, ss_store_sk#2, ss_ext_sales_price#3, ss_net_profit#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [4]: [ss_sold_date_sk#1, ss_store_sk#2, ss_ext_sales_price#3, ss_net_profit#4] +Arguments: [#1, #2, #3, #4] + +(3) NativeFilter +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Condition : (isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_store_sk#2)) + +(4) NativeProject +Output [6]: [ss_store_sk#2 AS store_sk#5, ss_sold_date_sk#1 AS date_sk#6, ss_ext_sales_price#3 AS sales_price#7, ss_net_profit#4 AS profit#8, 0.00 AS return_amt#9, 0.00 AS net_loss#10] +Input [4]: [#1#1, #2#2, #3#3, #4#4] + +(170) Scan parquet +Output [4]: [sr_returned_date_sk#11, sr_store_sk#12, sr_return_amt#13, sr_net_loss#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_returned_date_sk), IsNotNull(sr_store_sk)] +ReadSchema: struct + +(6) InputAdapter +Input [4]: [sr_returned_date_sk#11, sr_store_sk#12, sr_return_amt#13, sr_net_loss#14] +Arguments: [#11, #12, #13, #14] + +(7) NativeFilter +Input [4]: [#11#11, #12#12, #13#13, #14#14] +Condition : (isnotnull(sr_returned_date_sk#11) AND isnotnull(sr_store_sk#12)) + +(8) NativeProject +Output [6]: [sr_store_sk#12 AS store_sk#15, sr_returned_date_sk#11 AS date_sk#16, 0.00 AS sales_price#17, 0.00 AS profit#18, sr_return_amt#13 AS return_amt#19, sr_net_loss#14 AS net_loss#20] +Input [4]: [#11#11, #12#12, #13#13, #14#14] + +(9) NativeUnion +Arguments: [store_sk#5, date_sk#6, sales_price#7, profit#8, return_amt#9, net_loss#10] + +(10) InputAdapter +Input [6]: [store_sk#5, date_sk#6, sales_price#7, profit#8, return_amt#9, net_loss#10] +Arguments: [#5, #6, #7, #8, #9, #10] + +(11) NativeShuffleExchange +Input [6]: [#5#5, #6#6, #7#7, #8#8, #9#9, #10#10] +Arguments: hashpartitioning(date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(12) ShuffleQueryStage +Output [6]: [#5#5, #6#6, #7#7, #8#8, #9#9, #10#10] +Arguments: X + +(13) AQEShuffleRead +Input [6]: [#5#5, #6#6, #7#7, #8#8, #9#9, #10#10] +Arguments: coalesced + +(14) InputAdapter +Input [6]: [#5#5, #6#6, #7#7, #8#8, #9#9, #10#10] + +(15) NativeSort +Input [6]: [#5#5, #6#6, #7#7, #8#8, #9#9, #10#10] +Arguments: [date_sk#6 ASC NULLS FIRST], false + +(176) Scan parquet +Output [2]: [d_date_sk#21, d_date#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,2000-08-23), LessThanOrEqual(d_date,2000-09-06), IsNotNull(d_date_sk)] +ReadSchema: struct + +(17) InputAdapter +Input [2]: [d_date_sk#21, d_date#22] +Arguments: [#21, #22] + +(18) NativeFilter +Input [2]: [#21#21, #22#22] +Condition : (((isnotnull(d_date#22) AND (d_date#22 >= 2000-08-23)) AND (d_date#22 <= 2000-09-06)) AND isnotnull(d_date_sk#21)) + +(19) NativeProject +Output [1]: [d_date_sk#21] +Input [2]: [#21#21, #22#22] + +(20) NativeShuffleExchange +Input [1]: [d_date_sk#21] +Arguments: hashpartitioning(d_date_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(21) ShuffleQueryStage +Output [1]: [d_date_sk#21] +Arguments: X + +(22) AQEShuffleRead +Input [1]: [d_date_sk#21] +Arguments: coalesced + +(23) InputAdapter +Input [1]: [d_date_sk#21] + +(24) NativeSort +Input [1]: [d_date_sk#21] +Arguments: [d_date_sk#21 ASC NULLS FIRST], false + +(25) NativeSortMergeJoin +Left keys [1]: [date_sk#6] +Right keys [1]: [d_date_sk#21] +Join type: Inner +Join condition: None + +(26) NativeProject +Output [5]: [store_sk#5, sales_price#7, profit#8, return_amt#9, net_loss#10] +Input [7]: [#5#5, #6#6, #7#7, #8#8, #9#9, #10#10, d_date_sk#21] + +(27) NativeShuffleExchange +Input [5]: [store_sk#5, sales_price#7, profit#8, return_amt#9, net_loss#10] +Arguments: hashpartitioning(store_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(28) ShuffleQueryStage +Output [5]: [store_sk#5, sales_price#7, profit#8, return_amt#9, net_loss#10] +Arguments: X + +(29) AQEShuffleRead +Input [5]: [store_sk#5, sales_price#7, profit#8, return_amt#9, net_loss#10] +Arguments: coalesced + +(30) InputAdapter +Input [5]: [store_sk#5, sales_price#7, profit#8, return_amt#9, net_loss#10] + +(31) NativeSort +Input [5]: [store_sk#5, sales_price#7, profit#8, return_amt#9, net_loss#10] +Arguments: [store_sk#5 ASC NULLS FIRST], false + +(185) Scan parquet +Output [2]: [s_store_sk#23, s_store_id#24] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(33) InputAdapter +Input [2]: [s_store_sk#23, s_store_id#24] +Arguments: [#23, #24] + +(34) NativeFilter +Input [2]: [#23#23, #24#24] +Condition : isnotnull(s_store_sk#23) + +(35) NativeShuffleExchange +Input [2]: [#23#23, #24#24] +Arguments: hashpartitioning(s_store_sk#23, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(36) ShuffleQueryStage +Output [2]: [#23#23, #24#24] +Arguments: X + +(37) AQEShuffleRead +Input [2]: [#23#23, #24#24] +Arguments: coalesced + +(38) InputAdapter +Input [2]: [#23#23, #24#24] + +(39) NativeSort +Input [2]: [#23#23, #24#24] +Arguments: [s_store_sk#23 ASC NULLS FIRST], false + +(40) NativeSortMergeJoin +Left keys [1]: [store_sk#5] +Right keys [1]: [s_store_sk#23] +Join type: Inner +Join condition: None + +(41) NativeProject +Output [5]: [sales_price#7, profit#8, return_amt#9, net_loss#10, s_store_id#24] +Input [7]: [store_sk#5, sales_price#7, profit#8, return_amt#9, net_loss#10, #23#23, #24#24] + +(42) NativeProject +Output [5]: [s_store_id#24 AS s_store_id#24, UnscaledValue(sales_price#7) AS _c1#25, UnscaledValue(return_amt#9) AS _c2#26, UnscaledValue(profit#8) AS _c3#27, UnscaledValue(net_loss#10) AS _c4#28] +Input [5]: [sales_price#7, profit#8, return_amt#9, net_loss#10, s_store_id#24] + +(43) NativeHashAggregate +Input [5]: [s_store_id#24, _c1#25, _c2#26, _c3#27, _c4#28] +Keys [1]: [s_store_id#24] +Functions [4]: [partial_sum(_c1#25), partial_sum(_c2#26), partial_sum(_c3#27), partial_sum(_c4#28)] +Aggregate Attributes [4]: [sum#29, sum#30, sum#31, sum#32] +Results [2]: [s_store_id#24, #33#33] + +(44) NativeShuffleExchange +Input [2]: [s_store_id#24, #33#33] +Arguments: hashpartitioning(s_store_id#24, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(45) ShuffleQueryStage +Output [2]: [s_store_id#24, #33#33] +Arguments: X + +(46) AQEShuffleRead +Input [2]: [s_store_id#24, #33#33] +Arguments: coalesced + +(47) InputAdapter +Input [2]: [s_store_id#24, #33#33] + +(48) NativeHashAggregate +Input [2]: [s_store_id#24, #33#33] +Keys [1]: [s_store_id#24] +Functions [4]: [sum(UnscaledValue(sales_price#7)), sum(UnscaledValue(return_amt#9)), sum(UnscaledValue(profit#8)), sum(UnscaledValue(net_loss#10))] +Aggregate Attributes [4]: [sum(UnscaledValue(sales_price#7))#34, sum(UnscaledValue(return_amt#9))#35, sum(UnscaledValue(profit#8))#36, sum(UnscaledValue(net_loss#10))#37] +Results [5]: [s_store_id#24, sum(UnscaledValue(sales_price#7))#34, sum(UnscaledValue(return_amt#9))#35, sum(UnscaledValue(profit#8))#36, sum(UnscaledValue(net_loss#10))#37] + +(49) NativeProject +Output [5]: [MakeDecimal(sum(UnscaledValue(sales_price#7))#34,17,2) AS sales#38, MakeDecimal(sum(UnscaledValue(return_amt#9))#35,17,2) AS returns#39, (MakeDecimal(sum(UnscaledValue(profit#8))#36,17,2) - MakeDecimal(sum(UnscaledValue(net_loss#10))#37,17,2)) AS profit#40, store channel AS channel#41, concat(store, s_store_id#24) AS id#42] +Input [5]: [s_store_id#24, sum(UnscaledValue(sales_price#7))#34, sum(UnscaledValue(return_amt#9))#35, sum(UnscaledValue(profit#8))#36, sum(UnscaledValue(net_loss#10))#37] + +(194) Scan parquet +Output [4]: [cs_sold_date_sk#43, cs_catalog_page_sk#44, cs_ext_sales_price#45, cs_net_profit#46] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk), IsNotNull(cs_catalog_page_sk)] +ReadSchema: struct + +(51) InputAdapter +Input [4]: [cs_sold_date_sk#43, cs_catalog_page_sk#44, cs_ext_sales_price#45, cs_net_profit#46] +Arguments: [#43, #44, #45, #46] + +(52) NativeFilter +Input [4]: [#43#43, #44#44, #45#45, #46#46] +Condition : (isnotnull(cs_sold_date_sk#43) AND isnotnull(cs_catalog_page_sk#44)) + +(53) NativeProject +Output [6]: [cs_catalog_page_sk#44 AS page_sk#47, cs_sold_date_sk#43 AS date_sk#48, cs_ext_sales_price#45 AS sales_price#49, cs_net_profit#46 AS profit#50, 0.00 AS return_amt#51, 0.00 AS net_loss#52] +Input [4]: [#43#43, #44#44, #45#45, #46#46] + +(197) Scan parquet +Output [4]: [cr_returned_date_sk#53, cr_catalog_page_sk#54, cr_return_amount#55, cr_net_loss#56] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cr_returned_date_sk), IsNotNull(cr_catalog_page_sk)] +ReadSchema: struct + +(55) InputAdapter +Input [4]: [cr_returned_date_sk#53, cr_catalog_page_sk#54, cr_return_amount#55, cr_net_loss#56] +Arguments: [#53, #54, #55, #56] + +(56) NativeFilter +Input [4]: [#53#53, #54#54, #55#55, #56#56] +Condition : (isnotnull(cr_returned_date_sk#53) AND isnotnull(cr_catalog_page_sk#54)) + +(57) NativeProject +Output [6]: [cr_catalog_page_sk#54 AS page_sk#57, cr_returned_date_sk#53 AS date_sk#58, 0.00 AS sales_price#59, 0.00 AS profit#60, cr_return_amount#55 AS return_amt#61, cr_net_loss#56 AS net_loss#62] +Input [4]: [#53#53, #54#54, #55#55, #56#56] + +(58) NativeUnion +Arguments: [page_sk#47, date_sk#48, sales_price#49, profit#50, return_amt#51, net_loss#52] + +(59) InputAdapter +Input [6]: [page_sk#47, date_sk#48, sales_price#49, profit#50, return_amt#51, net_loss#52] +Arguments: [#47, #48, #49, #50, #51, #52] + +(60) NativeShuffleExchange +Input [6]: [#47#47, #48#48, #49#49, #50#50, #51#51, #52#52] +Arguments: hashpartitioning(date_sk#48, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(61) ShuffleQueryStage +Output [6]: [#47#47, #48#48, #49#49, #50#50, #51#51, #52#52] +Arguments: X + +(62) AQEShuffleRead +Input [6]: [#47#47, #48#48, #49#49, #50#50, #51#51, #52#52] +Arguments: coalesced + +(63) InputAdapter +Input [6]: [#47#47, #48#48, #49#49, #50#50, #51#51, #52#52] + +(64) NativeSort +Input [6]: [#47#47, #48#48, #49#49, #50#50, #51#51, #52#52] +Arguments: [date_sk#48 ASC NULLS FIRST], false + +(65) ReusedExchange [Reuses operator id: 20] +Output [1]: [d_date_sk#63] + +(66) ShuffleQueryStage +Output [1]: [d_date_sk#63] +Arguments: X + +(67) AQEShuffleRead +Input [1]: [d_date_sk#63] +Arguments: coalesced + +(68) InputAdapter +Input [1]: [d_date_sk#63] +Arguments: [#63] + +(69) InputAdapter +Input [1]: [#63#63] + +(70) NativeSort +Input [1]: [#63#63] +Arguments: [d_date_sk#63 ASC NULLS FIRST], false + +(71) NativeSortMergeJoin +Left keys [1]: [date_sk#48] +Right keys [1]: [d_date_sk#63] +Join type: Inner +Join condition: None + +(72) NativeProject +Output [5]: [page_sk#47, sales_price#49, profit#50, return_amt#51, net_loss#52] +Input [7]: [#47#47, #48#48, #49#49, #50#50, #51#51, #52#52, #63#63] + +(73) NativeShuffleExchange +Input [5]: [page_sk#47, sales_price#49, profit#50, return_amt#51, net_loss#52] +Arguments: hashpartitioning(page_sk#47, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(74) ShuffleQueryStage +Output [5]: [page_sk#47, sales_price#49, profit#50, return_amt#51, net_loss#52] +Arguments: X + +(75) AQEShuffleRead +Input [5]: [page_sk#47, sales_price#49, profit#50, return_amt#51, net_loss#52] +Arguments: coalesced + +(76) InputAdapter +Input [5]: [page_sk#47, sales_price#49, profit#50, return_amt#51, net_loss#52] + +(77) NativeSort +Input [5]: [page_sk#47, sales_price#49, profit#50, return_amt#51, net_loss#52] +Arguments: [page_sk#47 ASC NULLS FIRST], false + +(212) Scan parquet +Output [2]: [cp_catalog_page_sk#64, cp_catalog_page_id#65] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cp_catalog_page_sk)] +ReadSchema: struct + +(79) InputAdapter +Input [2]: [cp_catalog_page_sk#64, cp_catalog_page_id#65] +Arguments: [#64, #65] + +(80) NativeFilter +Input [2]: [#64#64, #65#65] +Condition : isnotnull(cp_catalog_page_sk#64) + +(81) NativeShuffleExchange +Input [2]: [#64#64, #65#65] +Arguments: hashpartitioning(cp_catalog_page_sk#64, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(82) ShuffleQueryStage +Output [2]: [#64#64, #65#65] +Arguments: X + +(83) AQEShuffleRead +Input [2]: [#64#64, #65#65] +Arguments: coalesced + +(84) InputAdapter +Input [2]: [#64#64, #65#65] + +(85) NativeSort +Input [2]: [#64#64, #65#65] +Arguments: [cp_catalog_page_sk#64 ASC NULLS FIRST], false + +(86) NativeSortMergeJoin +Left keys [1]: [page_sk#47] +Right keys [1]: [cp_catalog_page_sk#64] +Join type: Inner +Join condition: None + +(87) NativeProject +Output [5]: [sales_price#49, profit#50, return_amt#51, net_loss#52, cp_catalog_page_id#65] +Input [7]: [page_sk#47, sales_price#49, profit#50, return_amt#51, net_loss#52, #64#64, #65#65] + +(88) NativeProject +Output [5]: [cp_catalog_page_id#65 AS cp_catalog_page_id#65, UnscaledValue(sales_price#49) AS _c1#66, UnscaledValue(return_amt#51) AS _c2#67, UnscaledValue(profit#50) AS _c3#68, UnscaledValue(net_loss#52) AS _c4#69] +Input [5]: [sales_price#49, profit#50, return_amt#51, net_loss#52, cp_catalog_page_id#65] + +(89) NativeHashAggregate +Input [5]: [cp_catalog_page_id#65, _c1#66, _c2#67, _c3#68, _c4#69] +Keys [1]: [cp_catalog_page_id#65] +Functions [4]: [partial_sum(_c1#66), partial_sum(_c2#67), partial_sum(_c3#68), partial_sum(_c4#69)] +Aggregate Attributes [4]: [sum#70, sum#71, sum#72, sum#73] +Results [2]: [cp_catalog_page_id#65, #33#33] + +(90) NativeShuffleExchange +Input [2]: [cp_catalog_page_id#65, #33#33] +Arguments: hashpartitioning(cp_catalog_page_id#65, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(91) ShuffleQueryStage +Output [2]: [cp_catalog_page_id#65, #33#33] +Arguments: X + +(92) AQEShuffleRead +Input [2]: [cp_catalog_page_id#65, #33#33] +Arguments: coalesced + +(93) InputAdapter +Input [2]: [cp_catalog_page_id#65, #33#33] + +(94) NativeHashAggregate +Input [2]: [cp_catalog_page_id#65, #33#33] +Keys [1]: [cp_catalog_page_id#65] +Functions [4]: [sum(UnscaledValue(sales_price#49)), sum(UnscaledValue(return_amt#51)), sum(UnscaledValue(profit#50)), sum(UnscaledValue(net_loss#52))] +Aggregate Attributes [4]: [sum(UnscaledValue(sales_price#49))#74, sum(UnscaledValue(return_amt#51))#75, sum(UnscaledValue(profit#50))#76, sum(UnscaledValue(net_loss#52))#77] +Results [5]: [cp_catalog_page_id#65, sum(UnscaledValue(sales_price#49))#74, sum(UnscaledValue(return_amt#51))#75, sum(UnscaledValue(profit#50))#76, sum(UnscaledValue(net_loss#52))#77] + +(95) NativeProject +Output [5]: [MakeDecimal(sum(UnscaledValue(sales_price#49))#74,17,2) AS sales#78, MakeDecimal(sum(UnscaledValue(return_amt#51))#75,17,2) AS returns#79, (MakeDecimal(sum(UnscaledValue(profit#50))#76,17,2) - MakeDecimal(sum(UnscaledValue(net_loss#52))#77,17,2)) AS profit#80, catalog channel AS channel#81, concat(catalog_page, cp_catalog_page_id#65) AS id#82] +Input [5]: [cp_catalog_page_id#65, sum(UnscaledValue(sales_price#49))#74, sum(UnscaledValue(return_amt#51))#75, sum(UnscaledValue(profit#50))#76, sum(UnscaledValue(net_loss#52))#77] + +(221) Scan parquet +Output [4]: [ws_sold_date_sk#83, ws_web_site_sk#84, ws_ext_sales_price#85, ws_net_profit#86] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_web_site_sk)] +ReadSchema: struct + +(97) InputAdapter +Input [4]: [ws_sold_date_sk#83, ws_web_site_sk#84, ws_ext_sales_price#85, ws_net_profit#86] +Arguments: [#83, #84, #85, #86] + +(98) NativeFilter +Input [4]: [#83#83, #84#84, #85#85, #86#86] +Condition : (isnotnull(ws_sold_date_sk#83) AND isnotnull(ws_web_site_sk#84)) + +(99) NativeProject +Output [6]: [ws_web_site_sk#84 AS wsr_web_site_sk#87, ws_sold_date_sk#83 AS date_sk#88, ws_ext_sales_price#85 AS sales_price#89, ws_net_profit#86 AS profit#90, 0.00 AS return_amt#91, 0.00 AS net_loss#92] +Input [4]: [#83#83, #84#84, #85#85, #86#86] + +(224) Scan parquet +Output [5]: [wr_returned_date_sk#93, wr_item_sk#94, wr_order_number#95, wr_return_amt#96, wr_net_loss#97] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wr_returned_date_sk)] +ReadSchema: struct + +(101) InputAdapter +Input [5]: [wr_returned_date_sk#93, wr_item_sk#94, wr_order_number#95, wr_return_amt#96, wr_net_loss#97] +Arguments: [#93, #94, #95, #96, #97] + +(102) NativeFilter +Input [5]: [#93#93, #94#94, #95#95, #96#96, #97#97] +Condition : isnotnull(wr_returned_date_sk#93) + +(103) NativeShuffleExchange +Input [5]: [#93#93, #94#94, #95#95, #96#96, #97#97] +Arguments: hashpartitioning(wr_item_sk#94, wr_order_number#95, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(104) ShuffleQueryStage +Output [5]: [#93#93, #94#94, #95#95, #96#96, #97#97] +Arguments: X + +(105) AQEShuffleRead +Input [5]: [#93#93, #94#94, #95#95, #96#96, #97#97] +Arguments: coalesced + +(106) InputAdapter +Input [5]: [#93#93, #94#94, #95#95, #96#96, #97#97] + +(107) NativeSort +Input [5]: [#93#93, #94#94, #95#95, #96#96, #97#97] +Arguments: [wr_item_sk#94 ASC NULLS FIRST, wr_order_number#95 ASC NULLS FIRST], false + +(228) Scan parquet +Output [3]: [ws_item_sk#98, ws_web_site_sk#99, ws_order_number#100] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_order_number), IsNotNull(ws_web_site_sk)] +ReadSchema: struct + +(109) InputAdapter +Input [3]: [ws_item_sk#98, ws_web_site_sk#99, ws_order_number#100] +Arguments: [#98, #99, #100] + +(110) NativeFilter +Input [3]: [#98#98, #99#99, #100#100] +Condition : ((isnotnull(ws_item_sk#98) AND isnotnull(ws_order_number#100)) AND isnotnull(ws_web_site_sk#99)) + +(111) NativeShuffleExchange +Input [3]: [#98#98, #99#99, #100#100] +Arguments: hashpartitioning(ws_item_sk#98, ws_order_number#100, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(112) ShuffleQueryStage +Output [3]: [#98#98, #99#99, #100#100] +Arguments: X + +(113) AQEShuffleRead +Input [3]: [#98#98, #99#99, #100#100] +Arguments: coalesced + +(114) InputAdapter +Input [3]: [#98#98, #99#99, #100#100] + +(115) NativeSort +Input [3]: [#98#98, #99#99, #100#100] +Arguments: [ws_item_sk#98 ASC NULLS FIRST, ws_order_number#100 ASC NULLS FIRST], false + +(116) NativeSortMergeJoin +Left keys [2]: [wr_item_sk#94, wr_order_number#95] +Right keys [2]: [ws_item_sk#98, ws_order_number#100] +Join type: Inner +Join condition: None + +(117) NativeProject +Output [6]: [ws_web_site_sk#99 AS wsr_web_site_sk#101, wr_returned_date_sk#93 AS date_sk#102, 0.00 AS sales_price#103, 0.00 AS profit#104, wr_return_amt#96 AS return_amt#105, wr_net_loss#97 AS net_loss#106] +Input [8]: [#93#93, #94#94, #95#95, #96#96, #97#97, #98#98, #99#99, #100#100] + +(118) NativeUnion +Arguments: [wsr_web_site_sk#87, date_sk#88, sales_price#89, profit#90, return_amt#91, net_loss#92] + +(119) InputAdapter +Input [6]: [wsr_web_site_sk#87, date_sk#88, sales_price#89, profit#90, return_amt#91, net_loss#92] +Arguments: [#87, #88, #89, #90, #91, #92] + +(120) NativeShuffleExchange +Input [6]: [#87#87, #88#88, #89#89, #90#90, #91#91, #92#92] +Arguments: hashpartitioning(date_sk#88, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(121) ShuffleQueryStage +Output [6]: [#87#87, #88#88, #89#89, #90#90, #91#91, #92#92] +Arguments: X + +(122) AQEShuffleRead +Input [6]: [#87#87, #88#88, #89#89, #90#90, #91#91, #92#92] +Arguments: coalesced + +(123) InputAdapter +Input [6]: [#87#87, #88#88, #89#89, #90#90, #91#91, #92#92] + +(124) NativeSort +Input [6]: [#87#87, #88#88, #89#89, #90#90, #91#91, #92#92] +Arguments: [date_sk#88 ASC NULLS FIRST], false + +(125) ReusedExchange [Reuses operator id: 20] +Output [1]: [d_date_sk#107] + +(126) ShuffleQueryStage +Output [1]: [d_date_sk#107] +Arguments: X + +(127) AQEShuffleRead +Input [1]: [d_date_sk#107] +Arguments: coalesced + +(128) InputAdapter +Input [1]: [d_date_sk#107] +Arguments: [#107] + +(129) InputAdapter +Input [1]: [#107#107] + +(130) NativeSort +Input [1]: [#107#107] +Arguments: [d_date_sk#107 ASC NULLS FIRST], false + +(131) NativeSortMergeJoin +Left keys [1]: [date_sk#88] +Right keys [1]: [d_date_sk#107] +Join type: Inner +Join condition: None + +(132) NativeProject +Output [5]: [wsr_web_site_sk#87, sales_price#89, profit#90, return_amt#91, net_loss#92] +Input [7]: [#87#87, #88#88, #89#89, #90#90, #91#91, #92#92, #107#107] + +(133) NativeShuffleExchange +Input [5]: [wsr_web_site_sk#87, sales_price#89, profit#90, return_amt#91, net_loss#92] +Arguments: hashpartitioning(wsr_web_site_sk#87, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(134) ShuffleQueryStage +Output [5]: [wsr_web_site_sk#87, sales_price#89, profit#90, return_amt#91, net_loss#92] +Arguments: X + +(135) AQEShuffleRead +Input [5]: [wsr_web_site_sk#87, sales_price#89, profit#90, return_amt#91, net_loss#92] +Arguments: coalesced + +(136) InputAdapter +Input [5]: [wsr_web_site_sk#87, sales_price#89, profit#90, return_amt#91, net_loss#92] + +(137) NativeSort +Input [5]: [wsr_web_site_sk#87, sales_price#89, profit#90, return_amt#91, net_loss#92] +Arguments: [wsr_web_site_sk#87 ASC NULLS FIRST], false + +(246) Scan parquet +Output [2]: [web_site_sk#108, web_site_id#109] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(web_site_sk)] +ReadSchema: struct + +(139) InputAdapter +Input [2]: [web_site_sk#108, web_site_id#109] +Arguments: [#108, #109] + +(140) NativeFilter +Input [2]: [#108#108, #109#109] +Condition : isnotnull(web_site_sk#108) + +(141) NativeShuffleExchange +Input [2]: [#108#108, #109#109] +Arguments: hashpartitioning(web_site_sk#108, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(142) ShuffleQueryStage +Output [2]: [#108#108, #109#109] +Arguments: X + +(143) AQEShuffleRead +Input [2]: [#108#108, #109#109] +Arguments: coalesced + +(144) InputAdapter +Input [2]: [#108#108, #109#109] + +(145) NativeSort +Input [2]: [#108#108, #109#109] +Arguments: [web_site_sk#108 ASC NULLS FIRST], false + +(146) NativeSortMergeJoin +Left keys [1]: [wsr_web_site_sk#87] +Right keys [1]: [web_site_sk#108] +Join type: Inner +Join condition: None + +(147) NativeProject +Output [5]: [sales_price#89, profit#90, return_amt#91, net_loss#92, web_site_id#109] +Input [7]: [wsr_web_site_sk#87, sales_price#89, profit#90, return_amt#91, net_loss#92, #108#108, #109#109] + +(148) NativeProject +Output [5]: [web_site_id#109 AS web_site_id#109, UnscaledValue(sales_price#89) AS _c1#110, UnscaledValue(return_amt#91) AS _c2#111, UnscaledValue(profit#90) AS _c3#112, UnscaledValue(net_loss#92) AS _c4#113] +Input [5]: [sales_price#89, profit#90, return_amt#91, net_loss#92, web_site_id#109] + +(149) NativeHashAggregate +Input [5]: [web_site_id#109, _c1#110, _c2#111, _c3#112, _c4#113] +Keys [1]: [web_site_id#109] +Functions [4]: [partial_sum(_c1#110), partial_sum(_c2#111), partial_sum(_c3#112), partial_sum(_c4#113)] +Aggregate Attributes [4]: [sum#114, sum#115, sum#116, sum#117] +Results [2]: [web_site_id#109, #33#33] + +(150) NativeShuffleExchange +Input [2]: [web_site_id#109, #33#33] +Arguments: hashpartitioning(web_site_id#109, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(151) ShuffleQueryStage +Output [2]: [web_site_id#109, #33#33] +Arguments: X + +(152) AQEShuffleRead +Input [2]: [web_site_id#109, #33#33] +Arguments: coalesced + +(153) InputAdapter +Input [2]: [web_site_id#109, #33#33] + +(154) NativeHashAggregate +Input [2]: [web_site_id#109, #33#33] +Keys [1]: [web_site_id#109] +Functions [4]: [sum(UnscaledValue(sales_price#89)), sum(UnscaledValue(return_amt#91)), sum(UnscaledValue(profit#90)), sum(UnscaledValue(net_loss#92))] +Aggregate Attributes [4]: [sum(UnscaledValue(sales_price#89))#118, sum(UnscaledValue(return_amt#91))#119, sum(UnscaledValue(profit#90))#120, sum(UnscaledValue(net_loss#92))#121] +Results [5]: [web_site_id#109, sum(UnscaledValue(sales_price#89))#118, sum(UnscaledValue(return_amt#91))#119, sum(UnscaledValue(profit#90))#120, sum(UnscaledValue(net_loss#92))#121] + +(155) NativeProject +Output [5]: [MakeDecimal(sum(UnscaledValue(sales_price#89))#118,17,2) AS sales#122, MakeDecimal(sum(UnscaledValue(return_amt#91))#119,17,2) AS returns#123, (MakeDecimal(sum(UnscaledValue(profit#90))#120,17,2) - MakeDecimal(sum(UnscaledValue(net_loss#92))#121,17,2)) AS profit#124, web channel AS channel#125, concat(web_site, web_site_id#109) AS id#126] +Input [5]: [web_site_id#109, sum(UnscaledValue(sales_price#89))#118, sum(UnscaledValue(return_amt#91))#119, sum(UnscaledValue(profit#90))#120, sum(UnscaledValue(net_loss#92))#121] + +(156) NativeUnion +Arguments: [sales#38, returns#39, profit#40, channel#41, id#42] + +(157) InputAdapter +Input [5]: [sales#38, returns#39, profit#40, channel#41, id#42] +Arguments: [#38, #39, #40, #41, #42] + +(158) NativeExpand +Input [5]: [#38#38, #39#39, #40#40, #41#41, #42#42] +Arguments: [[sales#38, returns#39, profit#40, channel#41, id#42, 0], [sales#38, returns#39, profit#40, channel#41, null, 1], [sales#38, returns#39, profit#40, null, null, 3]], [sales#38, returns#39, profit#40, channel#127, id#128, spark_grouping_id#129] + +(159) NativeHashAggregate +Input [6]: [sales#38, returns#39, profit#40, channel#127, id#128, spark_grouping_id#129] +Keys [3]: [channel#127, id#128, spark_grouping_id#129] +Functions [3]: [partial_sum(sales#38), partial_sum(returns#39), partial_sum(profit#40)] +Aggregate Attributes [6]: [sum#130, isEmpty#131, sum#132, isEmpty#133, sum#134, isEmpty#135] +Results [4]: [channel#127, id#128, spark_grouping_id#129, #33#33] + +(160) NativeShuffleExchange +Input [4]: [channel#127, id#128, spark_grouping_id#129, #33#33] +Arguments: hashpartitioning(channel#127, id#128, spark_grouping_id#129, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(161) ShuffleQueryStage +Output [4]: [channel#127, id#128, spark_grouping_id#129, #33#33] +Arguments: X + +(162) AQEShuffleRead +Input [4]: [channel#127, id#128, spark_grouping_id#129, #33#33] +Arguments: coalesced + +(163) InputAdapter +Input [4]: [channel#127, id#128, spark_grouping_id#129, #33#33] + +(164) NativeHashAggregate +Input [4]: [channel#127, id#128, spark_grouping_id#129, #33#33] +Keys [3]: [channel#127, id#128, spark_grouping_id#129] +Functions [3]: [sum(sales#38), sum(returns#39), sum(profit#40)] +Aggregate Attributes [3]: [sum(sales#38)#136, sum(returns#39)#137, sum(profit#40)#138] +Results [6]: [channel#127, id#128, spark_grouping_id#129, sum(sales#38)#136, sum(returns#39)#137, sum(profit#40)#138] + +(165) NativeProject +Output [5]: [channel#127, id#128, sum(sales#38)#136 AS sales#139, sum(returns#39)#137 AS returns#140, sum(profit#40)#138 AS profit#141] +Input [6]: [channel#127, id#128, spark_grouping_id#129, sum(sales#38)#136, sum(returns#39)#137, sum(profit#40)#138] + +(166) NativeTakeOrdered +Input [5]: [channel#127, id#128, sales#139, returns#140, profit#141] +Arguments: X, [channel#127 ASC NULLS FIRST, id#128 ASC NULLS FIRST] + +(167) Scan parquet +Output [4]: [ss_sold_date_sk#1, ss_store_sk#2, ss_ext_sales_price#3, ss_net_profit#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(168) Filter +Input [4]: [ss_sold_date_sk#1, ss_store_sk#2, ss_ext_sales_price#3, ss_net_profit#4] +Condition : (isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_store_sk#2)) + +(169) Project +Output [6]: [ss_store_sk#2 AS store_sk#5, ss_sold_date_sk#1 AS date_sk#6, ss_ext_sales_price#3 AS sales_price#7, ss_net_profit#4 AS profit#8, 0.00 AS return_amt#9, 0.00 AS net_loss#10] +Input [4]: [ss_sold_date_sk#1, ss_store_sk#2, ss_ext_sales_price#3, ss_net_profit#4] + +(170) Scan parquet +Output [4]: [sr_returned_date_sk#11, sr_store_sk#12, sr_return_amt#13, sr_net_loss#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_returned_date_sk), IsNotNull(sr_store_sk)] +ReadSchema: struct + +(171) Filter +Input [4]: [sr_returned_date_sk#11, sr_store_sk#12, sr_return_amt#13, sr_net_loss#14] +Condition : (isnotnull(sr_returned_date_sk#11) AND isnotnull(sr_store_sk#12)) + +(172) Project +Output [6]: [sr_store_sk#12 AS store_sk#15, sr_returned_date_sk#11 AS date_sk#16, 0.00 AS sales_price#17, 0.00 AS profit#18, sr_return_amt#13 AS return_amt#19, sr_net_loss#14 AS net_loss#20] +Input [4]: [sr_returned_date_sk#11, sr_store_sk#12, sr_return_amt#13, sr_net_loss#14] + +(173) Union + +(174) Exchange +Input [6]: [store_sk#5, date_sk#6, sales_price#7, profit#8, return_amt#9, net_loss#10] +Arguments: hashpartitioning(date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(175) Sort +Input [6]: [store_sk#5, date_sk#6, sales_price#7, profit#8, return_amt#9, net_loss#10] +Arguments: [date_sk#6 ASC NULLS FIRST], false, 0 + +(176) Scan parquet +Output [2]: [d_date_sk#21, d_date#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,2000-08-23), LessThanOrEqual(d_date,2000-09-06), IsNotNull(d_date_sk)] +ReadSchema: struct + +(177) Filter +Input [2]: [d_date_sk#21, d_date#22] +Condition : (((isnotnull(d_date#22) AND (d_date#22 >= 2000-08-23)) AND (d_date#22 <= 2000-09-06)) AND isnotnull(d_date_sk#21)) + +(178) Project +Output [1]: [d_date_sk#21] +Input [2]: [d_date_sk#21, d_date#22] + +(179) Exchange +Input [1]: [d_date_sk#21] +Arguments: hashpartitioning(d_date_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(180) Sort +Input [1]: [d_date_sk#21] +Arguments: [d_date_sk#21 ASC NULLS FIRST], false, 0 + +(181) SortMergeJoin +Left keys [1]: [date_sk#6] +Right keys [1]: [d_date_sk#21] +Join type: Inner +Join condition: None + +(182) Project +Output [5]: [store_sk#5, sales_price#7, profit#8, return_amt#9, net_loss#10] +Input [7]: [store_sk#5, date_sk#6, sales_price#7, profit#8, return_amt#9, net_loss#10, d_date_sk#21] + +(183) Exchange +Input [5]: [store_sk#5, sales_price#7, profit#8, return_amt#9, net_loss#10] +Arguments: hashpartitioning(store_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(184) Sort +Input [5]: [store_sk#5, sales_price#7, profit#8, return_amt#9, net_loss#10] +Arguments: [store_sk#5 ASC NULLS FIRST], false, 0 + +(185) Scan parquet +Output [2]: [s_store_sk#23, s_store_id#24] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(186) Filter +Input [2]: [s_store_sk#23, s_store_id#24] +Condition : isnotnull(s_store_sk#23) + +(187) Exchange +Input [2]: [s_store_sk#23, s_store_id#24] +Arguments: hashpartitioning(s_store_sk#23, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(188) Sort +Input [2]: [s_store_sk#23, s_store_id#24] +Arguments: [s_store_sk#23 ASC NULLS FIRST], false, 0 + +(189) SortMergeJoin +Left keys [1]: [store_sk#5] +Right keys [1]: [s_store_sk#23] +Join type: Inner +Join condition: None + +(190) Project +Output [5]: [sales_price#7, profit#8, return_amt#9, net_loss#10, s_store_id#24] +Input [7]: [store_sk#5, sales_price#7, profit#8, return_amt#9, net_loss#10, s_store_sk#23, s_store_id#24] + +(191) HashAggregate +Input [5]: [sales_price#7, profit#8, return_amt#9, net_loss#10, s_store_id#24] +Keys [1]: [s_store_id#24] +Functions [4]: [partial_sum(UnscaledValue(sales_price#7)), partial_sum(UnscaledValue(return_amt#9)), partial_sum(UnscaledValue(profit#8)), partial_sum(UnscaledValue(net_loss#10))] +Aggregate Attributes [4]: [sum#29, sum#30, sum#31, sum#32] +Results [5]: [s_store_id#24, sum#142, sum#143, sum#144, sum#145] + +(192) Exchange +Input [5]: [s_store_id#24, sum#142, sum#143, sum#144, sum#145] +Arguments: hashpartitioning(s_store_id#24, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(193) HashAggregate +Input [5]: [s_store_id#24, sum#142, sum#143, sum#144, sum#145] +Keys [1]: [s_store_id#24] +Functions [4]: [sum(UnscaledValue(sales_price#7)), sum(UnscaledValue(return_amt#9)), sum(UnscaledValue(profit#8)), sum(UnscaledValue(net_loss#10))] +Aggregate Attributes [4]: [sum(UnscaledValue(sales_price#7))#34, sum(UnscaledValue(return_amt#9))#35, sum(UnscaledValue(profit#8))#36, sum(UnscaledValue(net_loss#10))#37] +Results [5]: [MakeDecimal(sum(UnscaledValue(sales_price#7))#34,17,2) AS sales#38, MakeDecimal(sum(UnscaledValue(return_amt#9))#35,17,2) AS returns#39, (MakeDecimal(sum(UnscaledValue(profit#8))#36,17,2) - MakeDecimal(sum(UnscaledValue(net_loss#10))#37,17,2)) AS profit#40, store channel AS channel#41, concat(store, s_store_id#24) AS id#42] + +(194) Scan parquet +Output [4]: [cs_sold_date_sk#43, cs_catalog_page_sk#44, cs_ext_sales_price#45, cs_net_profit#46] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk), IsNotNull(cs_catalog_page_sk)] +ReadSchema: struct + +(195) Filter +Input [4]: [cs_sold_date_sk#43, cs_catalog_page_sk#44, cs_ext_sales_price#45, cs_net_profit#46] +Condition : (isnotnull(cs_sold_date_sk#43) AND isnotnull(cs_catalog_page_sk#44)) + +(196) Project +Output [6]: [cs_catalog_page_sk#44 AS page_sk#47, cs_sold_date_sk#43 AS date_sk#48, cs_ext_sales_price#45 AS sales_price#49, cs_net_profit#46 AS profit#50, 0.00 AS return_amt#51, 0.00 AS net_loss#52] +Input [4]: [cs_sold_date_sk#43, cs_catalog_page_sk#44, cs_ext_sales_price#45, cs_net_profit#46] + +(197) Scan parquet +Output [4]: [cr_returned_date_sk#53, cr_catalog_page_sk#54, cr_return_amount#55, cr_net_loss#56] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cr_returned_date_sk), IsNotNull(cr_catalog_page_sk)] +ReadSchema: struct + +(198) Filter +Input [4]: [cr_returned_date_sk#53, cr_catalog_page_sk#54, cr_return_amount#55, cr_net_loss#56] +Condition : (isnotnull(cr_returned_date_sk#53) AND isnotnull(cr_catalog_page_sk#54)) + +(199) Project +Output [6]: [cr_catalog_page_sk#54 AS page_sk#57, cr_returned_date_sk#53 AS date_sk#58, 0.00 AS sales_price#59, 0.00 AS profit#60, cr_return_amount#55 AS return_amt#61, cr_net_loss#56 AS net_loss#62] +Input [4]: [cr_returned_date_sk#53, cr_catalog_page_sk#54, cr_return_amount#55, cr_net_loss#56] + +(200) Union + +(201) Exchange +Input [6]: [page_sk#47, date_sk#48, sales_price#49, profit#50, return_amt#51, net_loss#52] +Arguments: hashpartitioning(date_sk#48, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(202) Sort +Input [6]: [page_sk#47, date_sk#48, sales_price#49, profit#50, return_amt#51, net_loss#52] +Arguments: [date_sk#48 ASC NULLS FIRST], false, 0 + +(203) Scan parquet +Output [2]: [d_date_sk#63, d_date#146] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,2000-08-23), LessThanOrEqual(d_date,2000-09-06), IsNotNull(d_date_sk)] +ReadSchema: struct + +(204) Filter +Input [2]: [d_date_sk#63, d_date#146] +Condition : (((isnotnull(d_date#146) AND (d_date#146 >= 2000-08-23)) AND (d_date#146 <= 2000-09-06)) AND isnotnull(d_date_sk#63)) + +(205) Project +Output [1]: [d_date_sk#63] +Input [2]: [d_date_sk#63, d_date#146] + +(206) Exchange +Input [1]: [d_date_sk#63] +Arguments: hashpartitioning(d_date_sk#63, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(207) Sort +Input [1]: [d_date_sk#63] +Arguments: [d_date_sk#63 ASC NULLS FIRST], false, 0 + +(208) SortMergeJoin +Left keys [1]: [date_sk#48] +Right keys [1]: [d_date_sk#63] +Join type: Inner +Join condition: None + +(209) Project +Output [5]: [page_sk#47, sales_price#49, profit#50, return_amt#51, net_loss#52] +Input [7]: [page_sk#47, date_sk#48, sales_price#49, profit#50, return_amt#51, net_loss#52, d_date_sk#63] + +(210) Exchange +Input [5]: [page_sk#47, sales_price#49, profit#50, return_amt#51, net_loss#52] +Arguments: hashpartitioning(page_sk#47, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(211) Sort +Input [5]: [page_sk#47, sales_price#49, profit#50, return_amt#51, net_loss#52] +Arguments: [page_sk#47 ASC NULLS FIRST], false, 0 + +(212) Scan parquet +Output [2]: [cp_catalog_page_sk#64, cp_catalog_page_id#65] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cp_catalog_page_sk)] +ReadSchema: struct + +(213) Filter +Input [2]: [cp_catalog_page_sk#64, cp_catalog_page_id#65] +Condition : isnotnull(cp_catalog_page_sk#64) + +(214) Exchange +Input [2]: [cp_catalog_page_sk#64, cp_catalog_page_id#65] +Arguments: hashpartitioning(cp_catalog_page_sk#64, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(215) Sort +Input [2]: [cp_catalog_page_sk#64, cp_catalog_page_id#65] +Arguments: [cp_catalog_page_sk#64 ASC NULLS FIRST], false, 0 + +(216) SortMergeJoin +Left keys [1]: [page_sk#47] +Right keys [1]: [cp_catalog_page_sk#64] +Join type: Inner +Join condition: None + +(217) Project +Output [5]: [sales_price#49, profit#50, return_amt#51, net_loss#52, cp_catalog_page_id#65] +Input [7]: [page_sk#47, sales_price#49, profit#50, return_amt#51, net_loss#52, cp_catalog_page_sk#64, cp_catalog_page_id#65] + +(218) HashAggregate +Input [5]: [sales_price#49, profit#50, return_amt#51, net_loss#52, cp_catalog_page_id#65] +Keys [1]: [cp_catalog_page_id#65] +Functions [4]: [partial_sum(UnscaledValue(sales_price#49)), partial_sum(UnscaledValue(return_amt#51)), partial_sum(UnscaledValue(profit#50)), partial_sum(UnscaledValue(net_loss#52))] +Aggregate Attributes [4]: [sum#70, sum#71, sum#72, sum#73] +Results [5]: [cp_catalog_page_id#65, sum#147, sum#148, sum#149, sum#150] + +(219) Exchange +Input [5]: [cp_catalog_page_id#65, sum#147, sum#148, sum#149, sum#150] +Arguments: hashpartitioning(cp_catalog_page_id#65, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(220) HashAggregate +Input [5]: [cp_catalog_page_id#65, sum#147, sum#148, sum#149, sum#150] +Keys [1]: [cp_catalog_page_id#65] +Functions [4]: [sum(UnscaledValue(sales_price#49)), sum(UnscaledValue(return_amt#51)), sum(UnscaledValue(profit#50)), sum(UnscaledValue(net_loss#52))] +Aggregate Attributes [4]: [sum(UnscaledValue(sales_price#49))#74, sum(UnscaledValue(return_amt#51))#75, sum(UnscaledValue(profit#50))#76, sum(UnscaledValue(net_loss#52))#77] +Results [5]: [MakeDecimal(sum(UnscaledValue(sales_price#49))#74,17,2) AS sales#78, MakeDecimal(sum(UnscaledValue(return_amt#51))#75,17,2) AS returns#79, (MakeDecimal(sum(UnscaledValue(profit#50))#76,17,2) - MakeDecimal(sum(UnscaledValue(net_loss#52))#77,17,2)) AS profit#80, catalog channel AS channel#81, concat(catalog_page, cp_catalog_page_id#65) AS id#82] + +(221) Scan parquet +Output [4]: [ws_sold_date_sk#83, ws_web_site_sk#84, ws_ext_sales_price#85, ws_net_profit#86] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_web_site_sk)] +ReadSchema: struct + +(222) Filter +Input [4]: [ws_sold_date_sk#83, ws_web_site_sk#84, ws_ext_sales_price#85, ws_net_profit#86] +Condition : (isnotnull(ws_sold_date_sk#83) AND isnotnull(ws_web_site_sk#84)) + +(223) Project +Output [6]: [ws_web_site_sk#84 AS wsr_web_site_sk#87, ws_sold_date_sk#83 AS date_sk#88, ws_ext_sales_price#85 AS sales_price#89, ws_net_profit#86 AS profit#90, 0.00 AS return_amt#91, 0.00 AS net_loss#92] +Input [4]: [ws_sold_date_sk#83, ws_web_site_sk#84, ws_ext_sales_price#85, ws_net_profit#86] + +(224) Scan parquet +Output [5]: [wr_returned_date_sk#93, wr_item_sk#94, wr_order_number#95, wr_return_amt#96, wr_net_loss#97] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wr_returned_date_sk)] +ReadSchema: struct + +(225) Filter +Input [5]: [wr_returned_date_sk#93, wr_item_sk#94, wr_order_number#95, wr_return_amt#96, wr_net_loss#97] +Condition : isnotnull(wr_returned_date_sk#93) + +(226) Exchange +Input [5]: [wr_returned_date_sk#93, wr_item_sk#94, wr_order_number#95, wr_return_amt#96, wr_net_loss#97] +Arguments: hashpartitioning(wr_item_sk#94, wr_order_number#95, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(227) Sort +Input [5]: [wr_returned_date_sk#93, wr_item_sk#94, wr_order_number#95, wr_return_amt#96, wr_net_loss#97] +Arguments: [wr_item_sk#94 ASC NULLS FIRST, wr_order_number#95 ASC NULLS FIRST], false, 0 + +(228) Scan parquet +Output [3]: [ws_item_sk#98, ws_web_site_sk#99, ws_order_number#100] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_order_number), IsNotNull(ws_web_site_sk)] +ReadSchema: struct + +(229) Filter +Input [3]: [ws_item_sk#98, ws_web_site_sk#99, ws_order_number#100] +Condition : ((isnotnull(ws_item_sk#98) AND isnotnull(ws_order_number#100)) AND isnotnull(ws_web_site_sk#99)) + +(230) Exchange +Input [3]: [ws_item_sk#98, ws_web_site_sk#99, ws_order_number#100] +Arguments: hashpartitioning(ws_item_sk#98, ws_order_number#100, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(231) Sort +Input [3]: [ws_item_sk#98, ws_web_site_sk#99, ws_order_number#100] +Arguments: [ws_item_sk#98 ASC NULLS FIRST, ws_order_number#100 ASC NULLS FIRST], false, 0 + +(232) SortMergeJoin +Left keys [2]: [wr_item_sk#94, wr_order_number#95] +Right keys [2]: [ws_item_sk#98, ws_order_number#100] +Join type: Inner +Join condition: None + +(233) Project +Output [6]: [ws_web_site_sk#99 AS wsr_web_site_sk#101, wr_returned_date_sk#93 AS date_sk#102, 0.00 AS sales_price#103, 0.00 AS profit#104, wr_return_amt#96 AS return_amt#105, wr_net_loss#97 AS net_loss#106] +Input [8]: [wr_returned_date_sk#93, wr_item_sk#94, wr_order_number#95, wr_return_amt#96, wr_net_loss#97, ws_item_sk#98, ws_web_site_sk#99, ws_order_number#100] + +(234) Union + +(235) Exchange +Input [6]: [wsr_web_site_sk#87, date_sk#88, sales_price#89, profit#90, return_amt#91, net_loss#92] +Arguments: hashpartitioning(date_sk#88, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(236) Sort +Input [6]: [wsr_web_site_sk#87, date_sk#88, sales_price#89, profit#90, return_amt#91, net_loss#92] +Arguments: [date_sk#88 ASC NULLS FIRST], false, 0 + +(237) Scan parquet +Output [2]: [d_date_sk#107, d_date#151] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,2000-08-23), LessThanOrEqual(d_date,2000-09-06), IsNotNull(d_date_sk)] +ReadSchema: struct + +(238) Filter +Input [2]: [d_date_sk#107, d_date#151] +Condition : (((isnotnull(d_date#151) AND (d_date#151 >= 2000-08-23)) AND (d_date#151 <= 2000-09-06)) AND isnotnull(d_date_sk#107)) + +(239) Project +Output [1]: [d_date_sk#107] +Input [2]: [d_date_sk#107, d_date#151] + +(240) Exchange +Input [1]: [d_date_sk#107] +Arguments: hashpartitioning(d_date_sk#107, 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(241) Sort +Input [1]: [d_date_sk#107] +Arguments: [d_date_sk#107 ASC NULLS FIRST], false, 0 + +(242) SortMergeJoin +Left keys [1]: [date_sk#88] +Right keys [1]: [d_date_sk#107] +Join type: Inner +Join condition: None + +(243) Project +Output [5]: [wsr_web_site_sk#87, sales_price#89, profit#90, return_amt#91, net_loss#92] +Input [7]: [wsr_web_site_sk#87, date_sk#88, sales_price#89, profit#90, return_amt#91, net_loss#92, d_date_sk#107] + +(244) Exchange +Input [5]: [wsr_web_site_sk#87, sales_price#89, profit#90, return_amt#91, net_loss#92] +Arguments: hashpartitioning(wsr_web_site_sk#87, 100), ENSURE_REQUIREMENTS, [plan_id=31] + +(245) Sort +Input [5]: [wsr_web_site_sk#87, sales_price#89, profit#90, return_amt#91, net_loss#92] +Arguments: [wsr_web_site_sk#87 ASC NULLS FIRST], false, 0 + +(246) Scan parquet +Output [2]: [web_site_sk#108, web_site_id#109] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(web_site_sk)] +ReadSchema: struct + +(247) Filter +Input [2]: [web_site_sk#108, web_site_id#109] +Condition : isnotnull(web_site_sk#108) + +(248) Exchange +Input [2]: [web_site_sk#108, web_site_id#109] +Arguments: hashpartitioning(web_site_sk#108, 100), ENSURE_REQUIREMENTS, [plan_id=32] + +(249) Sort +Input [2]: [web_site_sk#108, web_site_id#109] +Arguments: [web_site_sk#108 ASC NULLS FIRST], false, 0 + +(250) SortMergeJoin +Left keys [1]: [wsr_web_site_sk#87] +Right keys [1]: [web_site_sk#108] +Join type: Inner +Join condition: None + +(251) Project +Output [5]: [sales_price#89, profit#90, return_amt#91, net_loss#92, web_site_id#109] +Input [7]: [wsr_web_site_sk#87, sales_price#89, profit#90, return_amt#91, net_loss#92, web_site_sk#108, web_site_id#109] + +(252) HashAggregate +Input [5]: [sales_price#89, profit#90, return_amt#91, net_loss#92, web_site_id#109] +Keys [1]: [web_site_id#109] +Functions [4]: [partial_sum(UnscaledValue(sales_price#89)), partial_sum(UnscaledValue(return_amt#91)), partial_sum(UnscaledValue(profit#90)), partial_sum(UnscaledValue(net_loss#92))] +Aggregate Attributes [4]: [sum#114, sum#115, sum#116, sum#117] +Results [5]: [web_site_id#109, sum#152, sum#153, sum#154, sum#155] + +(253) Exchange +Input [5]: [web_site_id#109, sum#152, sum#153, sum#154, sum#155] +Arguments: hashpartitioning(web_site_id#109, 100), ENSURE_REQUIREMENTS, [plan_id=33] + +(254) HashAggregate +Input [5]: [web_site_id#109, sum#152, sum#153, sum#154, sum#155] +Keys [1]: [web_site_id#109] +Functions [4]: [sum(UnscaledValue(sales_price#89)), sum(UnscaledValue(return_amt#91)), sum(UnscaledValue(profit#90)), sum(UnscaledValue(net_loss#92))] +Aggregate Attributes [4]: [sum(UnscaledValue(sales_price#89))#118, sum(UnscaledValue(return_amt#91))#119, sum(UnscaledValue(profit#90))#120, sum(UnscaledValue(net_loss#92))#121] +Results [5]: [MakeDecimal(sum(UnscaledValue(sales_price#89))#118,17,2) AS sales#122, MakeDecimal(sum(UnscaledValue(return_amt#91))#119,17,2) AS returns#123, (MakeDecimal(sum(UnscaledValue(profit#90))#120,17,2) - MakeDecimal(sum(UnscaledValue(net_loss#92))#121,17,2)) AS profit#124, web channel AS channel#125, concat(web_site, web_site_id#109) AS id#126] + +(255) Union + +(256) Expand +Input [5]: [sales#38, returns#39, profit#40, channel#41, id#42] +Arguments: [[sales#38, returns#39, profit#40, channel#41, id#42, 0], [sales#38, returns#39, profit#40, channel#41, null, 1], [sales#38, returns#39, profit#40, null, null, 3]], [sales#38, returns#39, profit#40, channel#127, id#128, spark_grouping_id#129] + +(257) HashAggregate +Input [6]: [sales#38, returns#39, profit#40, channel#127, id#128, spark_grouping_id#129] +Keys [3]: [channel#127, id#128, spark_grouping_id#129] +Functions [3]: [partial_sum(sales#38), partial_sum(returns#39), partial_sum(profit#40)] +Aggregate Attributes [6]: [sum#130, isEmpty#131, sum#132, isEmpty#133, sum#134, isEmpty#135] +Results [9]: [channel#127, id#128, spark_grouping_id#129, sum#156, isEmpty#157, sum#158, isEmpty#159, sum#160, isEmpty#161] + +(258) Exchange +Input [9]: [channel#127, id#128, spark_grouping_id#129, sum#156, isEmpty#157, sum#158, isEmpty#159, sum#160, isEmpty#161] +Arguments: hashpartitioning(channel#127, id#128, spark_grouping_id#129, 100), ENSURE_REQUIREMENTS, [plan_id=34] + +(259) HashAggregate +Input [9]: [channel#127, id#128, spark_grouping_id#129, sum#156, isEmpty#157, sum#158, isEmpty#159, sum#160, isEmpty#161] +Keys [3]: [channel#127, id#128, spark_grouping_id#129] +Functions [3]: [sum(sales#38), sum(returns#39), sum(profit#40)] +Aggregate Attributes [3]: [sum(sales#38)#136, sum(returns#39)#137, sum(profit#40)#138] +Results [5]: [channel#127, id#128, sum(sales#38)#136 AS sales#139, sum(returns#39)#137 AS returns#140, sum(profit#40)#138 AS profit#141] + +(260) TakeOrderedAndProject +Input [5]: [channel#127, id#128, sales#139, returns#140, profit#141] +Arguments: X, [channel#127 ASC NULLS FIRST, id#128 ASC NULLS FIRST], [channel#127, id#128, sales#139, returns#140, profit#141] + +(261) AdaptiveSparkPlan +Output [5]: [channel#127, id#128, sales#139, returns#140, profit#141] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q50.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q50.txt new file mode 100644 index 000000000..b1d712f97 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q50.txt @@ -0,0 +1,619 @@ +== Physical Plan == +AdaptiveSparkPlan (113) ++- == Final Plan == + NativeTakeOrdered (73) + +- NativeProject (72) + +- NativeHashAggregate (71) + +- InputAdapter (70) + +- AQEShuffleRead (69) + +- ShuffleQueryStage (68), Statistics(X) + +- NativeShuffleExchange (67) + +- NativeHashAggregate (66) + +- NativeProject (65) + +- NativeProject (64) + +- NativeSortMergeJoin Inner (63) + :- NativeSort (53) + : +- InputAdapter (52) + : +- AQEShuffleRead (51) + : +- ShuffleQueryStage (50), Statistics(X) + : +- NativeShuffleExchange (49) + : +- NativeProject (48) + : +- NativeSortMergeJoin Inner (47) + : :- NativeSort (38) + : : +- InputAdapter (37) + : : +- AQEShuffleRead (36) + : : +- ShuffleQueryStage (35), Statistics(X) + : : +- NativeShuffleExchange (34) + : : +- NativeProject (33) + : : +- NativeSortMergeJoin Inner (32) + : : :- NativeSort (23) + : : : +- InputAdapter (22) + : : : +- AQEShuffleRead (21) + : : : +- ShuffleQueryStage (20), Statistics(X) + : : : +- NativeShuffleExchange (19) + : : : +- NativeProject (18) + : : : +- NativeSortMergeJoin Inner (17) + : : : :- NativeSort (8) + : : : : +- InputAdapter (7) + : : : : +- AQEShuffleRead (6) + : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : +- NativeShuffleExchange (4) + : : : : +- NativeFilter (3) + : : : : +- InputAdapter (2) + : : : : +- NativeParquetScan (1) + : : : +- NativeSort (16) + : : : +- InputAdapter (15) + : : : +- AQEShuffleRead (14) + : : : +- ShuffleQueryStage (13), Statistics(X) + : : : +- NativeShuffleExchange (12) + : : : +- NativeFilter (11) + : : : +- InputAdapter (10) + : : : +- NativeParquetScan (9) + : : +- NativeSort (31) + : : +- InputAdapter (30) + : : +- AQEShuffleRead (29) + : : +- ShuffleQueryStage (28), Statistics(X) + : : +- NativeShuffleExchange (27) + : : +- NativeFilter (26) + : : +- InputAdapter (25) + : : +- NativeParquetScan (24) + : +- NativeSort (46) + : +- InputAdapter (45) + : +- AQEShuffleRead (44) + : +- ShuffleQueryStage (43), Statistics(X) + : +- NativeShuffleExchange (42) + : +- NativeFilter (41) + : +- InputAdapter (40) + : +- NativeParquetScan (39) + +- NativeSort (62) + +- InputAdapter (61) + +- AQEShuffleRead (60) + +- ShuffleQueryStage (59), Statistics(X) + +- NativeShuffleExchange (58) + +- NativeProject (57) + +- NativeFilter (56) + +- InputAdapter (55) + +- NativeParquetScan (54) ++- == Initial Plan == + TakeOrderedAndProject (112) + +- HashAggregate (111) + +- Exchange (110) + +- HashAggregate (109) + +- Project (108) + +- SortMergeJoin Inner (107) + :- Sort (101) + : +- Exchange (100) + : +- Project (99) + : +- SortMergeJoin Inner (98) + : :- Sort (93) + : : +- Exchange (92) + : : +- Project (91) + : : +- SortMergeJoin Inner (90) + : : :- Sort (85) + : : : +- Exchange (84) + : : : +- Project (83) + : : : +- SortMergeJoin Inner (82) + : : : :- Sort (77) + : : : : +- Exchange (76) + : : : : +- Filter (75) + : : : : +- Scan parquet (74) + : : : +- Sort (81) + : : : +- Exchange (80) + : : : +- Filter (79) + : : : +- Scan parquet (78) + : : +- Sort (89) + : : +- Exchange (88) + : : +- Filter (87) + : : +- Scan parquet (86) + : +- Sort (97) + : +- Exchange (96) + : +- Filter (95) + : +- Scan parquet (94) + +- Sort (106) + +- Exchange (105) + +- Project (104) + +- Filter (103) + +- Scan parquet (102) + + +(74) Scan parquet +Output [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_ticket_number#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_ticket_number), IsNotNull(ss_item_sk), IsNotNull(ss_customer_sk), IsNotNull(ss_store_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_ticket_number#5] +Arguments: [#1, #2, #3, #4, #5] + +(3) NativeFilter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Condition : ((((isnotnull(ss_ticket_number#5) AND isnotnull(ss_item_sk#2)) AND isnotnull(ss_customer_sk#3)) AND isnotnull(ss_store_sk#4)) AND isnotnull(ss_sold_date_sk#1)) + +(4) NativeShuffleExchange +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: hashpartitioning(ss_ticket_number#5, ss_item_sk#2, ss_customer_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: X + +(6) AQEShuffleRead +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: coalesced + +(7) InputAdapter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] + +(8) NativeSort +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: [ss_ticket_number#5 ASC NULLS FIRST, ss_item_sk#2 ASC NULLS FIRST, ss_customer_sk#3 ASC NULLS FIRST], false + +(78) Scan parquet +Output [4]: [sr_returned_date_sk#6, sr_item_sk#7, sr_customer_sk#8, sr_ticket_number#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_ticket_number), IsNotNull(sr_item_sk), IsNotNull(sr_customer_sk), IsNotNull(sr_returned_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [4]: [sr_returned_date_sk#6, sr_item_sk#7, sr_customer_sk#8, sr_ticket_number#9] +Arguments: [#6, #7, #8, #9] + +(11) NativeFilter +Input [4]: [#6#6, #7#7, #8#8, #9#9] +Condition : (((isnotnull(sr_ticket_number#9) AND isnotnull(sr_item_sk#7)) AND isnotnull(sr_customer_sk#8)) AND isnotnull(sr_returned_date_sk#6)) + +(12) NativeShuffleExchange +Input [4]: [#6#6, #7#7, #8#8, #9#9] +Arguments: hashpartitioning(sr_ticket_number#9, sr_item_sk#7, sr_customer_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [4]: [#6#6, #7#7, #8#8, #9#9] +Arguments: X + +(14) AQEShuffleRead +Input [4]: [#6#6, #7#7, #8#8, #9#9] +Arguments: coalesced + +(15) InputAdapter +Input [4]: [#6#6, #7#7, #8#8, #9#9] + +(16) NativeSort +Input [4]: [#6#6, #7#7, #8#8, #9#9] +Arguments: [sr_ticket_number#9 ASC NULLS FIRST, sr_item_sk#7 ASC NULLS FIRST, sr_customer_sk#8 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [3]: [ss_ticket_number#5, ss_item_sk#2, ss_customer_sk#3] +Right keys [3]: [sr_ticket_number#9, sr_item_sk#7, sr_customer_sk#8] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [3]: [ss_sold_date_sk#1, ss_store_sk#4, sr_returned_date_sk#6] +Input [9]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9] + +(19) NativeShuffleExchange +Input [3]: [ss_sold_date_sk#1, ss_store_sk#4, sr_returned_date_sk#6] +Arguments: hashpartitioning(ss_store_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [3]: [ss_sold_date_sk#1, ss_store_sk#4, sr_returned_date_sk#6] +Arguments: X + +(21) AQEShuffleRead +Input [3]: [ss_sold_date_sk#1, ss_store_sk#4, sr_returned_date_sk#6] +Arguments: coalesced + +(22) InputAdapter +Input [3]: [ss_sold_date_sk#1, ss_store_sk#4, sr_returned_date_sk#6] + +(23) NativeSort +Input [3]: [ss_sold_date_sk#1, ss_store_sk#4, sr_returned_date_sk#6] +Arguments: [ss_store_sk#4 ASC NULLS FIRST], false + +(86) Scan parquet +Output [11]: [s_store_sk#10, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(25) InputAdapter +Input [11]: [s_store_sk#10, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] +Arguments: [#10, #11, #12, #13, #14, #15, #16, #17, #18, #19, #20] + +(26) NativeFilter +Input [11]: [#10#10, #11#11, #12#12, #13#13, #14#14, #15#15, #16#16, #17#17, #18#18, #19#19, #20#20] +Condition : isnotnull(s_store_sk#10) + +(27) NativeShuffleExchange +Input [11]: [#10#10, #11#11, #12#12, #13#13, #14#14, #15#15, #16#16, #17#17, #18#18, #19#19, #20#20] +Arguments: hashpartitioning(s_store_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(28) ShuffleQueryStage +Output [11]: [#10#10, #11#11, #12#12, #13#13, #14#14, #15#15, #16#16, #17#17, #18#18, #19#19, #20#20] +Arguments: X + +(29) AQEShuffleRead +Input [11]: [#10#10, #11#11, #12#12, #13#13, #14#14, #15#15, #16#16, #17#17, #18#18, #19#19, #20#20] +Arguments: coalesced + +(30) InputAdapter +Input [11]: [#10#10, #11#11, #12#12, #13#13, #14#14, #15#15, #16#16, #17#17, #18#18, #19#19, #20#20] + +(31) NativeSort +Input [11]: [#10#10, #11#11, #12#12, #13#13, #14#14, #15#15, #16#16, #17#17, #18#18, #19#19, #20#20] +Arguments: [s_store_sk#10 ASC NULLS FIRST], false + +(32) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#4] +Right keys [1]: [s_store_sk#10] +Join type: Inner +Join condition: None + +(33) NativeProject +Output [12]: [ss_sold_date_sk#1, sr_returned_date_sk#6, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] +Input [14]: [ss_sold_date_sk#1, ss_store_sk#4, sr_returned_date_sk#6, #10#10, #11#11, #12#12, #13#13, #14#14, #15#15, #16#16, #17#17, #18#18, #19#19, #20#20] + +(34) NativeShuffleExchange +Input [12]: [ss_sold_date_sk#1, sr_returned_date_sk#6, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(35) ShuffleQueryStage +Output [12]: [ss_sold_date_sk#1, sr_returned_date_sk#6, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] +Arguments: X + +(36) AQEShuffleRead +Input [12]: [ss_sold_date_sk#1, sr_returned_date_sk#6, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] +Arguments: coalesced + +(37) InputAdapter +Input [12]: [ss_sold_date_sk#1, sr_returned_date_sk#6, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] + +(38) NativeSort +Input [12]: [ss_sold_date_sk#1, sr_returned_date_sk#6, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(94) Scan parquet +Output [1]: [d_date_sk#21] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date_sk)] +ReadSchema: struct + +(40) InputAdapter +Input [1]: [d_date_sk#21] +Arguments: [#21] + +(41) NativeFilter +Input [1]: [#21#21] +Condition : isnotnull(d_date_sk#21) + +(42) NativeShuffleExchange +Input [1]: [#21#21] +Arguments: hashpartitioning(d_date_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(43) ShuffleQueryStage +Output [1]: [#21#21] +Arguments: X + +(44) AQEShuffleRead +Input [1]: [#21#21] +Arguments: coalesced + +(45) InputAdapter +Input [1]: [#21#21] + +(46) NativeSort +Input [1]: [#21#21] +Arguments: [d_date_sk#21 ASC NULLS FIRST], false + +(47) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#21] +Join type: Inner +Join condition: None + +(48) NativeProject +Output [12]: [ss_sold_date_sk#1, sr_returned_date_sk#6, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] +Input [13]: [ss_sold_date_sk#1, sr_returned_date_sk#6, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20, #21#21] + +(49) NativeShuffleExchange +Input [12]: [ss_sold_date_sk#1, sr_returned_date_sk#6, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] +Arguments: hashpartitioning(sr_returned_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(50) ShuffleQueryStage +Output [12]: [ss_sold_date_sk#1, sr_returned_date_sk#6, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] +Arguments: X + +(51) AQEShuffleRead +Input [12]: [ss_sold_date_sk#1, sr_returned_date_sk#6, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] +Arguments: coalesced + +(52) InputAdapter +Input [12]: [ss_sold_date_sk#1, sr_returned_date_sk#6, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] + +(53) NativeSort +Input [12]: [ss_sold_date_sk#1, sr_returned_date_sk#6, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] +Arguments: [sr_returned_date_sk#6 ASC NULLS FIRST], false + +(102) Scan parquet +Output [3]: [d_date_sk#22, d_year#23, d_moy#24] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), EqualTo(d_moy,8), IsNotNull(d_date_sk)] +ReadSchema: struct + +(55) InputAdapter +Input [3]: [d_date_sk#22, d_year#23, d_moy#24] +Arguments: [#22, #23, #24] + +(56) NativeFilter +Input [3]: [#22#22, #23#23, #24#24] +Condition : ((((isnotnull(d_year#23) AND isnotnull(d_moy#24)) AND (d_year#23 = 2001)) AND (d_moy#24 = 8)) AND isnotnull(d_date_sk#22)) + +(57) NativeProject +Output [1]: [d_date_sk#22] +Input [3]: [#22#22, #23#23, #24#24] + +(58) NativeShuffleExchange +Input [1]: [d_date_sk#22] +Arguments: hashpartitioning(d_date_sk#22, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(59) ShuffleQueryStage +Output [1]: [d_date_sk#22] +Arguments: X + +(60) AQEShuffleRead +Input [1]: [d_date_sk#22] +Arguments: coalesced + +(61) InputAdapter +Input [1]: [d_date_sk#22] + +(62) NativeSort +Input [1]: [d_date_sk#22] +Arguments: [d_date_sk#22 ASC NULLS FIRST], false + +(63) NativeSortMergeJoin +Left keys [1]: [sr_returned_date_sk#6] +Right keys [1]: [d_date_sk#22] +Join type: Inner +Join condition: None + +(64) NativeProject +Output [12]: [ss_sold_date_sk#1, sr_returned_date_sk#6, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] +Input [13]: [ss_sold_date_sk#1, sr_returned_date_sk#6, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20, d_date_sk#22] + +(65) NativeProject +Output [15]: [s_store_name#11 AS s_store_name#11, s_company_id#12 AS s_company_id#12, s_street_number#13 AS s_street_number#13, s_street_name#14 AS s_street_name#14, s_street_type#15 AS s_street_type#15, s_suite_number#16 AS s_suite_number#16, s_city#17 AS s_city#17, s_county#18 AS s_county#18, s_state#19 AS s_state#19, s_zip#20 AS s_zip#20, CASE WHEN ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 30) THEN 1 ELSE 0 END AS _c10#25, CASE WHEN (((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 30) AND ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 60)) THEN 1 ELSE 0 END AS _c11#26, CASE WHEN (((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 60) AND ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 90)) THEN 1 ELSE 0 END AS _c12#27, CASE WHEN (((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 90) AND ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 120)) THEN 1 ELSE 0 END AS _c13#28, CASE WHEN ((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 120) THEN 1 ELSE 0 END AS _c14#29] +Input [12]: [ss_sold_date_sk#1, sr_returned_date_sk#6, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] + +(66) NativeHashAggregate +Input [15]: [s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20, _c10#25, _c11#26, _c12#27, _c13#28, _c14#29] +Keys [10]: [s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] +Functions [5]: [partial_sum(_c10#25), partial_sum(_c11#26), partial_sum(_c12#27), partial_sum(_c13#28), partial_sum(_c14#29)] +Aggregate Attributes [5]: [sum#30, sum#31, sum#32, sum#33, sum#34] +Results [11]: [s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20, #35#35] + +(67) NativeShuffleExchange +Input [11]: [s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20, #35#35] +Arguments: hashpartitioning(s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(68) ShuffleQueryStage +Output [11]: [s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20, #35#35] +Arguments: X + +(69) AQEShuffleRead +Input [11]: [s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20, #35#35] +Arguments: coalesced + +(70) InputAdapter +Input [11]: [s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20, #35#35] + +(71) NativeHashAggregate +Input [11]: [s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20, #35#35] +Keys [10]: [s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] +Functions [5]: [sum(CASE WHEN ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 30) THEN 1 ELSE 0 END), sum(CASE WHEN (((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 30) AND ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 60)) THEN 1 ELSE 0 END), sum(CASE WHEN (((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 60) AND ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 90)) THEN 1 ELSE 0 END), sum(CASE WHEN (((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 90) AND ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 120)) THEN 1 ELSE 0 END), sum(CASE WHEN ((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 120) THEN 1 ELSE 0 END)] +Aggregate Attributes [5]: [sum(CASE WHEN ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 30) THEN 1 ELSE 0 END)#36, sum(CASE WHEN (((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 30) AND ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 60)) THEN 1 ELSE 0 END)#37, sum(CASE WHEN (((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 60) AND ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 90)) THEN 1 ELSE 0 END)#38, sum(CASE WHEN (((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 90) AND ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 120)) THEN 1 ELSE 0 END)#39, sum(CASE WHEN ((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 120) THEN 1 ELSE 0 END)#40] +Results [15]: [s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20, sum(CASE WHEN ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 30) THEN 1 ELSE 0 END)#36, sum(CASE WHEN (((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 30) AND ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 60)) THEN 1 ELSE 0 END)#37, sum(CASE WHEN (((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 60) AND ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 90)) THEN 1 ELSE 0 END)#38, sum(CASE WHEN (((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 90) AND ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 120)) THEN 1 ELSE 0 END)#39, sum(CASE WHEN ((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 120) THEN 1 ELSE 0 END)#40] + +(72) NativeProject +Output [15]: [s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20, sum(CASE WHEN ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 30) THEN 1 ELSE 0 END)#36 AS 30 days #41, sum(CASE WHEN (((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 30) AND ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 60)) THEN 1 ELSE 0 END)#37 AS 31 - 60 days #42, sum(CASE WHEN (((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 60) AND ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 90)) THEN 1 ELSE 0 END)#38 AS 61 - 90 days #43, sum(CASE WHEN (((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 90) AND ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 120)) THEN 1 ELSE 0 END)#39 AS 91 - 120 days #44, sum(CASE WHEN ((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 120) THEN 1 ELSE 0 END)#40 AS >120 days #45] +Input [15]: [s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20, sum(CASE WHEN ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 30) THEN 1 ELSE 0 END)#36, sum(CASE WHEN (((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 30) AND ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 60)) THEN 1 ELSE 0 END)#37, sum(CASE WHEN (((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 60) AND ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 90)) THEN 1 ELSE 0 END)#38, sum(CASE WHEN (((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 90) AND ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 120)) THEN 1 ELSE 0 END)#39, sum(CASE WHEN ((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 120) THEN 1 ELSE 0 END)#40] + +(73) NativeTakeOrdered +Input [15]: [s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20, 30 days #41, 31 - 60 days #42, 61 - 90 days #43, 91 - 120 days #44, >120 days #45] +Arguments: X, [s_store_name#11 ASC NULLS FIRST, s_company_id#12 ASC NULLS FIRST, s_street_number#13 ASC NULLS FIRST, s_street_name#14 ASC NULLS FIRST, s_street_type#15 ASC NULLS FIRST, s_suite_number#16 ASC NULLS FIRST, s_city#17 ASC NULLS FIRST, s_county#18 ASC NULLS FIRST, s_state#19 ASC NULLS FIRST, s_zip#20 ASC NULLS FIRST] + +(74) Scan parquet +Output [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_ticket_number#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_ticket_number), IsNotNull(ss_item_sk), IsNotNull(ss_customer_sk), IsNotNull(ss_store_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(75) Filter +Input [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_ticket_number#5] +Condition : ((((isnotnull(ss_ticket_number#5) AND isnotnull(ss_item_sk#2)) AND isnotnull(ss_customer_sk#3)) AND isnotnull(ss_store_sk#4)) AND isnotnull(ss_sold_date_sk#1)) + +(76) Exchange +Input [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_ticket_number#5] +Arguments: hashpartitioning(ss_ticket_number#5, ss_item_sk#2, ss_customer_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(77) Sort +Input [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_ticket_number#5] +Arguments: [ss_ticket_number#5 ASC NULLS FIRST, ss_item_sk#2 ASC NULLS FIRST, ss_customer_sk#3 ASC NULLS FIRST], false, 0 + +(78) Scan parquet +Output [4]: [sr_returned_date_sk#6, sr_item_sk#7, sr_customer_sk#8, sr_ticket_number#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_ticket_number), IsNotNull(sr_item_sk), IsNotNull(sr_customer_sk), IsNotNull(sr_returned_date_sk)] +ReadSchema: struct + +(79) Filter +Input [4]: [sr_returned_date_sk#6, sr_item_sk#7, sr_customer_sk#8, sr_ticket_number#9] +Condition : (((isnotnull(sr_ticket_number#9) AND isnotnull(sr_item_sk#7)) AND isnotnull(sr_customer_sk#8)) AND isnotnull(sr_returned_date_sk#6)) + +(80) Exchange +Input [4]: [sr_returned_date_sk#6, sr_item_sk#7, sr_customer_sk#8, sr_ticket_number#9] +Arguments: hashpartitioning(sr_ticket_number#9, sr_item_sk#7, sr_customer_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(81) Sort +Input [4]: [sr_returned_date_sk#6, sr_item_sk#7, sr_customer_sk#8, sr_ticket_number#9] +Arguments: [sr_ticket_number#9 ASC NULLS FIRST, sr_item_sk#7 ASC NULLS FIRST, sr_customer_sk#8 ASC NULLS FIRST], false, 0 + +(82) SortMergeJoin +Left keys [3]: [ss_ticket_number#5, ss_item_sk#2, ss_customer_sk#3] +Right keys [3]: [sr_ticket_number#9, sr_item_sk#7, sr_customer_sk#8] +Join type: Inner +Join condition: None + +(83) Project +Output [3]: [ss_sold_date_sk#1, ss_store_sk#4, sr_returned_date_sk#6] +Input [9]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_ticket_number#5, sr_returned_date_sk#6, sr_item_sk#7, sr_customer_sk#8, sr_ticket_number#9] + +(84) Exchange +Input [3]: [ss_sold_date_sk#1, ss_store_sk#4, sr_returned_date_sk#6] +Arguments: hashpartitioning(ss_store_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(85) Sort +Input [3]: [ss_sold_date_sk#1, ss_store_sk#4, sr_returned_date_sk#6] +Arguments: [ss_store_sk#4 ASC NULLS FIRST], false, 0 + +(86) Scan parquet +Output [11]: [s_store_sk#10, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(87) Filter +Input [11]: [s_store_sk#10, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] +Condition : isnotnull(s_store_sk#10) + +(88) Exchange +Input [11]: [s_store_sk#10, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] +Arguments: hashpartitioning(s_store_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(89) Sort +Input [11]: [s_store_sk#10, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] +Arguments: [s_store_sk#10 ASC NULLS FIRST], false, 0 + +(90) SortMergeJoin +Left keys [1]: [ss_store_sk#4] +Right keys [1]: [s_store_sk#10] +Join type: Inner +Join condition: None + +(91) Project +Output [12]: [ss_sold_date_sk#1, sr_returned_date_sk#6, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] +Input [14]: [ss_sold_date_sk#1, ss_store_sk#4, sr_returned_date_sk#6, s_store_sk#10, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] + +(92) Exchange +Input [12]: [ss_sold_date_sk#1, sr_returned_date_sk#6, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(93) Sort +Input [12]: [ss_sold_date_sk#1, sr_returned_date_sk#6, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(94) Scan parquet +Output [1]: [d_date_sk#21] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date_sk)] +ReadSchema: struct + +(95) Filter +Input [1]: [d_date_sk#21] +Condition : isnotnull(d_date_sk#21) + +(96) Exchange +Input [1]: [d_date_sk#21] +Arguments: hashpartitioning(d_date_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(97) Sort +Input [1]: [d_date_sk#21] +Arguments: [d_date_sk#21 ASC NULLS FIRST], false, 0 + +(98) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#21] +Join type: Inner +Join condition: None + +(99) Project +Output [12]: [ss_sold_date_sk#1, sr_returned_date_sk#6, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] +Input [13]: [ss_sold_date_sk#1, sr_returned_date_sk#6, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20, d_date_sk#21] + +(100) Exchange +Input [12]: [ss_sold_date_sk#1, sr_returned_date_sk#6, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] +Arguments: hashpartitioning(sr_returned_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(101) Sort +Input [12]: [ss_sold_date_sk#1, sr_returned_date_sk#6, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] +Arguments: [sr_returned_date_sk#6 ASC NULLS FIRST], false, 0 + +(102) Scan parquet +Output [3]: [d_date_sk#22, d_year#23, d_moy#24] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), EqualTo(d_moy,8), IsNotNull(d_date_sk)] +ReadSchema: struct + +(103) Filter +Input [3]: [d_date_sk#22, d_year#23, d_moy#24] +Condition : ((((isnotnull(d_year#23) AND isnotnull(d_moy#24)) AND (d_year#23 = 2001)) AND (d_moy#24 = 8)) AND isnotnull(d_date_sk#22)) + +(104) Project +Output [1]: [d_date_sk#22] +Input [3]: [d_date_sk#22, d_year#23, d_moy#24] + +(105) Exchange +Input [1]: [d_date_sk#22] +Arguments: hashpartitioning(d_date_sk#22, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(106) Sort +Input [1]: [d_date_sk#22] +Arguments: [d_date_sk#22 ASC NULLS FIRST], false, 0 + +(107) SortMergeJoin +Left keys [1]: [sr_returned_date_sk#6] +Right keys [1]: [d_date_sk#22] +Join type: Inner +Join condition: None + +(108) Project +Output [12]: [ss_sold_date_sk#1, sr_returned_date_sk#6, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] +Input [13]: [ss_sold_date_sk#1, sr_returned_date_sk#6, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20, d_date_sk#22] + +(109) HashAggregate +Input [12]: [ss_sold_date_sk#1, sr_returned_date_sk#6, s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] +Keys [10]: [s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] +Functions [5]: [partial_sum(CASE WHEN ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 30) THEN 1 ELSE 0 END), partial_sum(CASE WHEN (((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 30) AND ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 60)) THEN 1 ELSE 0 END), partial_sum(CASE WHEN (((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 60) AND ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 90)) THEN 1 ELSE 0 END), partial_sum(CASE WHEN (((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 90) AND ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 120)) THEN 1 ELSE 0 END), partial_sum(CASE WHEN ((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 120) THEN 1 ELSE 0 END)] +Aggregate Attributes [5]: [sum#30, sum#31, sum#32, sum#33, sum#34] +Results [15]: [s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20, sum#46, sum#47, sum#48, sum#49, sum#50] + +(110) Exchange +Input [15]: [s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20, sum#46, sum#47, sum#48, sum#49, sum#50] +Arguments: hashpartitioning(s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(111) HashAggregate +Input [15]: [s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20, sum#46, sum#47, sum#48, sum#49, sum#50] +Keys [10]: [s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20] +Functions [5]: [sum(CASE WHEN ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 30) THEN 1 ELSE 0 END), sum(CASE WHEN (((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 30) AND ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 60)) THEN 1 ELSE 0 END), sum(CASE WHEN (((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 60) AND ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 90)) THEN 1 ELSE 0 END), sum(CASE WHEN (((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 90) AND ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 120)) THEN 1 ELSE 0 END), sum(CASE WHEN ((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 120) THEN 1 ELSE 0 END)] +Aggregate Attributes [5]: [sum(CASE WHEN ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 30) THEN 1 ELSE 0 END)#36, sum(CASE WHEN (((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 30) AND ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 60)) THEN 1 ELSE 0 END)#37, sum(CASE WHEN (((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 60) AND ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 90)) THEN 1 ELSE 0 END)#38, sum(CASE WHEN (((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 90) AND ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 120)) THEN 1 ELSE 0 END)#39, sum(CASE WHEN ((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 120) THEN 1 ELSE 0 END)#40] +Results [15]: [s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20, sum(CASE WHEN ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 30) THEN 1 ELSE 0 END)#36 AS 30 days #41, sum(CASE WHEN (((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 30) AND ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 60)) THEN 1 ELSE 0 END)#37 AS 31 - 60 days #42, sum(CASE WHEN (((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 60) AND ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 90)) THEN 1 ELSE 0 END)#38 AS 61 - 90 days #43, sum(CASE WHEN (((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 90) AND ((sr_returned_date_sk#6 - ss_sold_date_sk#1) <= 120)) THEN 1 ELSE 0 END)#39 AS 91 - 120 days #44, sum(CASE WHEN ((sr_returned_date_sk#6 - ss_sold_date_sk#1) > 120) THEN 1 ELSE 0 END)#40 AS >120 days #45] + +(112) TakeOrderedAndProject +Input [15]: [s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20, 30 days #41, 31 - 60 days #42, 61 - 90 days #43, 91 - 120 days #44, >120 days #45] +Arguments: X, [s_store_name#11 ASC NULLS FIRST, s_company_id#12 ASC NULLS FIRST, s_street_number#13 ASC NULLS FIRST, s_street_name#14 ASC NULLS FIRST, s_street_type#15 ASC NULLS FIRST, s_suite_number#16 ASC NULLS FIRST, s_city#17 ASC NULLS FIRST, s_county#18 ASC NULLS FIRST, s_state#19 ASC NULLS FIRST, s_zip#20 ASC NULLS FIRST], [s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20, 30 days #41, 31 - 60 days #42, 61 - 90 days #43, 91 - 120 days #44, >120 days #45] + +(113) AdaptiveSparkPlan +Output [15]: [s_store_name#11, s_company_id#12, s_street_number#13, s_street_name#14, s_street_type#15, s_suite_number#16, s_city#17, s_county#18, s_state#19, s_zip#20, 30 days #41, 31 - 60 days #42, 61 - 90 days #43, 91 - 120 days #44, >120 days #45] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q51.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q51.txt new file mode 100644 index 000000000..548e344ab --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q51.txt @@ -0,0 +1,723 @@ +== Physical Plan == +AdaptiveSparkPlan (135) ++- == Final Plan == + TakeOrderedAndProject (87) + +- * Filter (86) + +- Window (85) + +- NativeSort (84) + +- InputAdapter (83) + +- AQEShuffleRead (82) + +- ShuffleQueryStage (81), Statistics(X) + +- NativeShuffleExchange (80) + +- NativeProject (79) + +- NativeSortMergeJoin FullOuter (78) + :- NativeSort (40) + : +- InputAdapter (39) + : +- AQEShuffleRead (38) + : +- ShuffleQueryStage (37), Statistics(X) + : +- NativeShuffleExchange (36) + : +- ConvertToNative (35) + : +- * Project (34) + : +- Window (33) + : +- NativeSort (32) + : +- InputAdapter (31) + : +- AQEShuffleRead (30) + : +- ShuffleQueryStage (29), Statistics(X) + : +- NativeShuffleExchange (28) + : +- NativeProject (27) + : +- NativeHashAggregate (26) + : +- InputAdapter (25) + : +- AQEShuffleRead (24) + : +- ShuffleQueryStage (23), Statistics(X) + : +- NativeShuffleExchange (22) + : +- NativeHashAggregate (21) + : +- NativeProject (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 (77) + +- InputAdapter (76) + +- AQEShuffleRead (75) + +- ShuffleQueryStage (74), Statistics(X) + +- NativeShuffleExchange (73) + +- ConvertToNative (72) + +- * Project (71) + +- Window (70) + +- NativeSort (69) + +- InputAdapter (68) + +- AQEShuffleRead (67) + +- ShuffleQueryStage (66), Statistics(X) + +- NativeShuffleExchange (65) + +- NativeProject (64) + +- NativeHashAggregate (63) + +- InputAdapter (62) + +- AQEShuffleRead (61) + +- ShuffleQueryStage (60), Statistics(X) + +- NativeShuffleExchange (59) + +- NativeHashAggregate (58) + +- NativeProject (57) + +- NativeProject (56) + +- NativeSortMergeJoin Inner (55) + :- NativeSort (48) + : +- InputAdapter (47) + : +- AQEShuffleRead (46) + : +- ShuffleQueryStage (45), Statistics(X) + : +- NativeShuffleExchange (44) + : +- NativeFilter (43) + : +- InputAdapter (42) + : +- NativeParquetScan (41) + +- NativeSort (54) + +- InputAdapter (53) + +- InputAdapter (52) + +- AQEShuffleRead (51) + +- ShuffleQueryStage (50), Statistics(X) + +- ReusedExchange (49) ++- == Initial Plan == + TakeOrderedAndProject (134) + +- Filter (133) + +- Window (132) + +- Sort (131) + +- Exchange (130) + +- Project (129) + +- SortMergeJoin FullOuter (128) + :- Sort (107) + : +- Exchange (106) + : +- Project (105) + : +- Window (104) + : +- Sort (103) + : +- Exchange (102) + : +- HashAggregate (101) + : +- Exchange (100) + : +- HashAggregate (99) + : +- Project (98) + : +- SortMergeJoin Inner (97) + : :- Sort (91) + : : +- Exchange (90) + : : +- Filter (89) + : : +- Scan parquet (88) + : +- Sort (96) + : +- Exchange (95) + : +- Project (94) + : +- Filter (93) + : +- Scan parquet (92) + +- Sort (127) + +- Exchange (126) + +- Project (125) + +- Window (124) + +- Sort (123) + +- Exchange (122) + +- HashAggregate (121) + +- Exchange (120) + +- HashAggregate (119) + +- Project (118) + +- SortMergeJoin Inner (117) + :- Sort (111) + : +- Exchange (110) + : +- Filter (109) + : +- Scan parquet (108) + +- Sort (116) + +- Exchange (115) + +- Project (114) + +- Filter (113) + +- Scan parquet (112) + + +(88) Scan parquet +Output [3]: [ws_sold_date_sk#1, ws_item_sk#2, ws_sales_price#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [ws_sold_date_sk#1, ws_item_sk#2, ws_sales_price#3] +Arguments: [#1, #2, #3] + +(3) NativeFilter +Input [3]: [#1#1, #2#2, #3#3] +Condition : (isnotnull(ws_item_sk#2) AND isnotnull(ws_sold_date_sk#1)) + +(4) NativeShuffleExchange +Input [3]: [#1#1, #2#2, #3#3] +Arguments: hashpartitioning(ws_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [3]: [#1#1, #2#2, #3#3] +Arguments: X + +(6) AQEShuffleRead +Input [3]: [#1#1, #2#2, #3#3] +Arguments: coalesced + +(7) InputAdapter +Input [3]: [#1#1, #2#2, #3#3] + +(8) NativeSort +Input [3]: [#1#1, #2#2, #3#3] +Arguments: [ws_sold_date_sk#1 ASC NULLS FIRST], false + +(92) Scan parquet +Output [3]: [d_date_sk#4, d_date#5, d_month_seq#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [3]: [d_date_sk#4, d_date#5, d_month_seq#6] +Arguments: [#4, #5, #6] + +(11) NativeFilter +Input [3]: [#4#4, #5#5, #6#6] +Condition : (((isnotnull(d_month_seq#6) AND (d_month_seq#6 >= 1200)) AND (d_month_seq#6 <= 1211)) AND isnotnull(d_date_sk#4)) + +(12) NativeProject +Output [2]: [d_date_sk#4, d_date#5] +Input [3]: [#4#4, #5#5, #6#6] + +(13) NativeShuffleExchange +Input [2]: [d_date_sk#4, d_date#5] +Arguments: hashpartitioning(d_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [2]: [d_date_sk#4, d_date#5] +Arguments: X + +(15) AQEShuffleRead +Input [2]: [d_date_sk#4, d_date#5] +Arguments: coalesced + +(16) InputAdapter +Input [2]: [d_date_sk#4, d_date#5] + +(17) NativeSort +Input [2]: [d_date_sk#4, d_date#5] +Arguments: [d_date_sk#4 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#1] +Right keys [1]: [d_date_sk#4] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [3]: [ws_item_sk#2, ws_sales_price#3, d_date#5] +Input [5]: [#1#1, #2#2, #3#3, d_date_sk#4, d_date#5] + +(20) NativeProject +Output [3]: [ws_item_sk#2 AS ws_item_sk#2, d_date#5 AS d_date#5, UnscaledValue(ws_sales_price#3) AS _c2#7] +Input [3]: [ws_item_sk#2, ws_sales_price#3, d_date#5] + +(21) NativeHashAggregate +Input [3]: [ws_item_sk#2, d_date#5, _c2#7] +Keys [2]: [ws_item_sk#2, d_date#5] +Functions [1]: [partial_sum(_c2#7)] +Aggregate Attributes [1]: [sum#8] +Results [3]: [ws_item_sk#2, d_date#5, #9#9] + +(22) NativeShuffleExchange +Input [3]: [ws_item_sk#2, d_date#5, #9#9] +Arguments: hashpartitioning(ws_item_sk#2, d_date#5, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(23) ShuffleQueryStage +Output [3]: [ws_item_sk#2, d_date#5, #9#9] +Arguments: X + +(24) AQEShuffleRead +Input [3]: [ws_item_sk#2, d_date#5, #9#9] +Arguments: coalesced + +(25) InputAdapter +Input [3]: [ws_item_sk#2, d_date#5, #9#9] + +(26) NativeHashAggregate +Input [3]: [ws_item_sk#2, d_date#5, #9#9] +Keys [2]: [ws_item_sk#2, d_date#5] +Functions [1]: [sum(UnscaledValue(ws_sales_price#3))] +Aggregate Attributes [1]: [sum(UnscaledValue(ws_sales_price#3))#10] +Results [3]: [ws_item_sk#2, d_date#5, sum(UnscaledValue(ws_sales_price#3))#10] + +(27) NativeProject +Output [4]: [ws_item_sk#2 AS item_sk#11, d_date#5, MakeDecimal(sum(UnscaledValue(ws_sales_price#3))#10,17,2) AS _w0#12, ws_item_sk#2] +Input [3]: [ws_item_sk#2, d_date#5, sum(UnscaledValue(ws_sales_price#3))#10] + +(28) NativeShuffleExchange +Input [4]: [item_sk#11, d_date#5, _w0#12, ws_item_sk#2] +Arguments: hashpartitioning(ws_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(29) ShuffleQueryStage +Output [4]: [item_sk#11, d_date#5, _w0#12, ws_item_sk#2] +Arguments: X + +(30) AQEShuffleRead +Input [4]: [item_sk#11, d_date#5, _w0#12, ws_item_sk#2] +Arguments: coalesced + +(31) InputAdapter +Input [4]: [item_sk#11, d_date#5, _w0#12, ws_item_sk#2] + +(32) NativeSort +Input [4]: [item_sk#11, d_date#5, _w0#12, ws_item_sk#2] +Arguments: [ws_item_sk#2 ASC NULLS FIRST, d_date#5 ASC NULLS FIRST], false + +(33) Window +Input [4]: [item_sk#11, d_date#5, _w0#12, ws_item_sk#2] +Arguments: [sum(_w0#12) windowspecdefinition(ws_item_sk#2, d_date#5 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS cume_sales#13], [ws_item_sk#2], [d_date#5 ASC NULLS FIRST] + +(34) Project [codegen id : 1] +Output [3]: [item_sk#11, d_date#5, cume_sales#13] +Input [5]: [item_sk#11, d_date#5, _w0#12, ws_item_sk#2, cume_sales#13] + +(35) ConvertToNative +Input [3]: [item_sk#11, d_date#5, cume_sales#13] + +(36) NativeShuffleExchange +Input [3]: [item_sk#11, d_date#5, cume_sales#13] +Arguments: hashpartitioning(item_sk#11, d_date#5, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [3]: [item_sk#11, d_date#5, cume_sales#13] +Arguments: X + +(38) AQEShuffleRead +Input [3]: [item_sk#11, d_date#5, cume_sales#13] +Arguments: coalesced + +(39) InputAdapter +Input [3]: [item_sk#11, d_date#5, cume_sales#13] + +(40) NativeSort +Input [3]: [item_sk#11, d_date#5, cume_sales#13] +Arguments: [item_sk#11 ASC NULLS FIRST, d_date#5 ASC NULLS FIRST], false + +(108) Scan parquet +Output [3]: [ss_sold_date_sk#14, ss_item_sk#15, ss_sales_price#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(42) InputAdapter +Input [3]: [ss_sold_date_sk#14, ss_item_sk#15, ss_sales_price#16] +Arguments: [#14, #15, #16] + +(43) NativeFilter +Input [3]: [#14#14, #15#15, #16#16] +Condition : (isnotnull(ss_item_sk#15) AND isnotnull(ss_sold_date_sk#14)) + +(44) NativeShuffleExchange +Input [3]: [#14#14, #15#15, #16#16] +Arguments: hashpartitioning(ss_sold_date_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(45) ShuffleQueryStage +Output [3]: [#14#14, #15#15, #16#16] +Arguments: X + +(46) AQEShuffleRead +Input [3]: [#14#14, #15#15, #16#16] +Arguments: coalesced + +(47) InputAdapter +Input [3]: [#14#14, #15#15, #16#16] + +(48) NativeSort +Input [3]: [#14#14, #15#15, #16#16] +Arguments: [ss_sold_date_sk#14 ASC NULLS FIRST], false + +(49) ReusedExchange [Reuses operator id: 13] +Output [2]: [d_date_sk#17, d_date#18] + +(50) ShuffleQueryStage +Output [2]: [d_date_sk#17, d_date#18] +Arguments: X + +(51) AQEShuffleRead +Input [2]: [d_date_sk#17, d_date#18] +Arguments: coalesced + +(52) InputAdapter +Input [2]: [d_date_sk#17, d_date#18] +Arguments: [#17, #18] + +(53) InputAdapter +Input [2]: [#17#17, #18#18] + +(54) NativeSort +Input [2]: [#17#17, #18#18] +Arguments: [d_date_sk#17 ASC NULLS FIRST], false + +(55) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#14] +Right keys [1]: [d_date_sk#17] +Join type: Inner +Join condition: None + +(56) NativeProject +Output [3]: [ss_item_sk#15, ss_sales_price#16, d_date#18] +Input [5]: [#14#14, #15#15, #16#16, #17#17, #18#18] + +(57) NativeProject +Output [3]: [ss_item_sk#15 AS ss_item_sk#15, d_date#18 AS d_date#18, UnscaledValue(ss_sales_price#16) AS _c2#19] +Input [3]: [ss_item_sk#15, ss_sales_price#16, d_date#18] + +(58) NativeHashAggregate +Input [3]: [ss_item_sk#15, d_date#18, _c2#19] +Keys [2]: [ss_item_sk#15, d_date#18] +Functions [1]: [partial_sum(_c2#19)] +Aggregate Attributes [1]: [sum#20] +Results [3]: [ss_item_sk#15, d_date#18, #9#9] + +(59) NativeShuffleExchange +Input [3]: [ss_item_sk#15, d_date#18, #9#9] +Arguments: hashpartitioning(ss_item_sk#15, d_date#18, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(60) ShuffleQueryStage +Output [3]: [ss_item_sk#15, d_date#18, #9#9] +Arguments: X + +(61) AQEShuffleRead +Input [3]: [ss_item_sk#15, d_date#18, #9#9] +Arguments: coalesced + +(62) InputAdapter +Input [3]: [ss_item_sk#15, d_date#18, #9#9] + +(63) NativeHashAggregate +Input [3]: [ss_item_sk#15, d_date#18, #9#9] +Keys [2]: [ss_item_sk#15, d_date#18] +Functions [1]: [sum(UnscaledValue(ss_sales_price#16))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_sales_price#16))#21] +Results [3]: [ss_item_sk#15, d_date#18, sum(UnscaledValue(ss_sales_price#16))#21] + +(64) NativeProject +Output [4]: [ss_item_sk#15 AS item_sk#22, d_date#18, MakeDecimal(sum(UnscaledValue(ss_sales_price#16))#21,17,2) AS _w0#23, ss_item_sk#15] +Input [3]: [ss_item_sk#15, d_date#18, sum(UnscaledValue(ss_sales_price#16))#21] + +(65) NativeShuffleExchange +Input [4]: [item_sk#22, d_date#18, _w0#23, ss_item_sk#15] +Arguments: hashpartitioning(ss_item_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(66) ShuffleQueryStage +Output [4]: [item_sk#22, d_date#18, _w0#23, ss_item_sk#15] +Arguments: X + +(67) AQEShuffleRead +Input [4]: [item_sk#22, d_date#18, _w0#23, ss_item_sk#15] +Arguments: coalesced + +(68) InputAdapter +Input [4]: [item_sk#22, d_date#18, _w0#23, ss_item_sk#15] + +(69) NativeSort +Input [4]: [item_sk#22, d_date#18, _w0#23, ss_item_sk#15] +Arguments: [ss_item_sk#15 ASC NULLS FIRST, d_date#18 ASC NULLS FIRST], false + +(70) Window +Input [4]: [item_sk#22, d_date#18, _w0#23, ss_item_sk#15] +Arguments: [sum(_w0#23) windowspecdefinition(ss_item_sk#15, d_date#18 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS cume_sales#24], [ss_item_sk#15], [d_date#18 ASC NULLS FIRST] + +(71) Project [codegen id : 2] +Output [3]: [item_sk#22, d_date#18, cume_sales#24] +Input [5]: [item_sk#22, d_date#18, _w0#23, ss_item_sk#15, cume_sales#24] + +(72) ConvertToNative +Input [3]: [item_sk#22, d_date#18, cume_sales#24] + +(73) NativeShuffleExchange +Input [3]: [item_sk#22, d_date#18, cume_sales#24] +Arguments: hashpartitioning(item_sk#22, d_date#18, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(74) ShuffleQueryStage +Output [3]: [item_sk#22, d_date#18, cume_sales#24] +Arguments: X + +(75) AQEShuffleRead +Input [3]: [item_sk#22, d_date#18, cume_sales#24] +Arguments: coalesced + +(76) InputAdapter +Input [3]: [item_sk#22, d_date#18, cume_sales#24] + +(77) NativeSort +Input [3]: [item_sk#22, d_date#18, cume_sales#24] +Arguments: [item_sk#22 ASC NULLS FIRST, d_date#18 ASC NULLS FIRST], false + +(78) NativeSortMergeJoin +Left keys [2]: [item_sk#11, d_date#5] +Right keys [2]: [item_sk#22, d_date#18] +Join type: FullOuter +Join condition: None + +(79) NativeProject +Output [4]: [CASE WHEN isnotnull(item_sk#11) THEN item_sk#11 ELSE item_sk#22 END AS item_sk#25, CASE WHEN isnotnull(d_date#5) THEN d_date#5 ELSE d_date#18 END AS d_date#26, cume_sales#13 AS web_sales#27, cume_sales#24 AS store_sales#28] +Input [6]: [item_sk#11, d_date#5, cume_sales#13, item_sk#22, d_date#18, cume_sales#24] + +(80) NativeShuffleExchange +Input [4]: [item_sk#25, d_date#26, web_sales#27, store_sales#28] +Arguments: hashpartitioning(item_sk#25, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(81) ShuffleQueryStage +Output [4]: [item_sk#25, d_date#26, web_sales#27, store_sales#28] +Arguments: X + +(82) AQEShuffleRead +Input [4]: [item_sk#25, d_date#26, web_sales#27, store_sales#28] +Arguments: coalesced + +(83) InputAdapter +Input [4]: [item_sk#25, d_date#26, web_sales#27, store_sales#28] + +(84) NativeSort +Input [4]: [item_sk#25, d_date#26, web_sales#27, store_sales#28] +Arguments: [item_sk#25 ASC NULLS FIRST, d_date#26 ASC NULLS FIRST], false + +(85) Window +Input [4]: [item_sk#25, d_date#26, web_sales#27, store_sales#28] +Arguments: [max(web_sales#27) windowspecdefinition(item_sk#25, d_date#26 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS web_cumulative#29, max(store_sales#28) windowspecdefinition(item_sk#25, d_date#26 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS store_cumulative#30], [item_sk#25], [d_date#26 ASC NULLS FIRST] + +(86) Filter [codegen id : 3] +Input [6]: [item_sk#25, d_date#26, web_sales#27, store_sales#28, web_cumulative#29, store_cumulative#30] +Condition : ((isnotnull(web_cumulative#29) AND isnotnull(store_cumulative#30)) AND (web_cumulative#29 > store_cumulative#30)) + +(87) TakeOrderedAndProject +Input [6]: [item_sk#25, d_date#26, web_sales#27, store_sales#28, web_cumulative#29, store_cumulative#30] +Arguments: X, [item_sk#25 ASC NULLS FIRST, d_date#26 ASC NULLS FIRST], [item_sk#25, d_date#26, web_sales#27, store_sales#28, web_cumulative#29, store_cumulative#30] + +(88) Scan parquet +Output [3]: [ws_sold_date_sk#1, ws_item_sk#2, ws_sales_price#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(89) Filter +Input [3]: [ws_sold_date_sk#1, ws_item_sk#2, ws_sales_price#3] +Condition : (isnotnull(ws_item_sk#2) AND isnotnull(ws_sold_date_sk#1)) + +(90) Exchange +Input [3]: [ws_sold_date_sk#1, ws_item_sk#2, ws_sales_price#3] +Arguments: hashpartitioning(ws_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(91) Sort +Input [3]: [ws_sold_date_sk#1, ws_item_sk#2, ws_sales_price#3] +Arguments: [ws_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(92) Scan parquet +Output [3]: [d_date_sk#4, d_date#5, d_month_seq#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)] +ReadSchema: struct + +(93) Filter +Input [3]: [d_date_sk#4, d_date#5, d_month_seq#6] +Condition : (((isnotnull(d_month_seq#6) AND (d_month_seq#6 >= 1200)) AND (d_month_seq#6 <= 1211)) AND isnotnull(d_date_sk#4)) + +(94) Project +Output [2]: [d_date_sk#4, d_date#5] +Input [3]: [d_date_sk#4, d_date#5, d_month_seq#6] + +(95) Exchange +Input [2]: [d_date_sk#4, d_date#5] +Arguments: hashpartitioning(d_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(96) Sort +Input [2]: [d_date_sk#4, d_date#5] +Arguments: [d_date_sk#4 ASC NULLS FIRST], false, 0 + +(97) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#1] +Right keys [1]: [d_date_sk#4] +Join type: Inner +Join condition: None + +(98) Project +Output [3]: [ws_item_sk#2, ws_sales_price#3, d_date#5] +Input [5]: [ws_sold_date_sk#1, ws_item_sk#2, ws_sales_price#3, d_date_sk#4, d_date#5] + +(99) HashAggregate +Input [3]: [ws_item_sk#2, ws_sales_price#3, d_date#5] +Keys [2]: [ws_item_sk#2, d_date#5] +Functions [1]: [partial_sum(UnscaledValue(ws_sales_price#3))] +Aggregate Attributes [1]: [sum#8] +Results [3]: [ws_item_sk#2, d_date#5, sum#31] + +(100) Exchange +Input [3]: [ws_item_sk#2, d_date#5, sum#31] +Arguments: hashpartitioning(ws_item_sk#2, d_date#5, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(101) HashAggregate +Input [3]: [ws_item_sk#2, d_date#5, sum#31] +Keys [2]: [ws_item_sk#2, d_date#5] +Functions [1]: [sum(UnscaledValue(ws_sales_price#3))] +Aggregate Attributes [1]: [sum(UnscaledValue(ws_sales_price#3))#10] +Results [4]: [ws_item_sk#2 AS item_sk#11, d_date#5, MakeDecimal(sum(UnscaledValue(ws_sales_price#3))#10,17,2) AS _w0#12, ws_item_sk#2] + +(102) Exchange +Input [4]: [item_sk#11, d_date#5, _w0#12, ws_item_sk#2] +Arguments: hashpartitioning(ws_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(103) Sort +Input [4]: [item_sk#11, d_date#5, _w0#12, ws_item_sk#2] +Arguments: [ws_item_sk#2 ASC NULLS FIRST, d_date#5 ASC NULLS FIRST], false, 0 + +(104) Window +Input [4]: [item_sk#11, d_date#5, _w0#12, ws_item_sk#2] +Arguments: [sum(_w0#12) windowspecdefinition(ws_item_sk#2, d_date#5 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS cume_sales#13], [ws_item_sk#2], [d_date#5 ASC NULLS FIRST] + +(105) Project +Output [3]: [item_sk#11, d_date#5, cume_sales#13] +Input [5]: [item_sk#11, d_date#5, _w0#12, ws_item_sk#2, cume_sales#13] + +(106) Exchange +Input [3]: [item_sk#11, d_date#5, cume_sales#13] +Arguments: hashpartitioning(item_sk#11, d_date#5, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(107) Sort +Input [3]: [item_sk#11, d_date#5, cume_sales#13] +Arguments: [item_sk#11 ASC NULLS FIRST, d_date#5 ASC NULLS FIRST], false, 0 + +(108) Scan parquet +Output [3]: [ss_sold_date_sk#14, ss_item_sk#15, ss_sales_price#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(109) Filter +Input [3]: [ss_sold_date_sk#14, ss_item_sk#15, ss_sales_price#16] +Condition : (isnotnull(ss_item_sk#15) AND isnotnull(ss_sold_date_sk#14)) + +(110) Exchange +Input [3]: [ss_sold_date_sk#14, ss_item_sk#15, ss_sales_price#16] +Arguments: hashpartitioning(ss_sold_date_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(111) Sort +Input [3]: [ss_sold_date_sk#14, ss_item_sk#15, ss_sales_price#16] +Arguments: [ss_sold_date_sk#14 ASC NULLS FIRST], false, 0 + +(112) Scan parquet +Output [3]: [d_date_sk#17, d_date#18, d_month_seq#32] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)] +ReadSchema: struct + +(113) Filter +Input [3]: [d_date_sk#17, d_date#18, d_month_seq#32] +Condition : (((isnotnull(d_month_seq#32) AND (d_month_seq#32 >= 1200)) AND (d_month_seq#32 <= 1211)) AND isnotnull(d_date_sk#17)) + +(114) Project +Output [2]: [d_date_sk#17, d_date#18] +Input [3]: [d_date_sk#17, d_date#18, d_month_seq#32] + +(115) Exchange +Input [2]: [d_date_sk#17, d_date#18] +Arguments: hashpartitioning(d_date_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(116) Sort +Input [2]: [d_date_sk#17, d_date#18] +Arguments: [d_date_sk#17 ASC NULLS FIRST], false, 0 + +(117) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#14] +Right keys [1]: [d_date_sk#17] +Join type: Inner +Join condition: None + +(118) Project +Output [3]: [ss_item_sk#15, ss_sales_price#16, d_date#18] +Input [5]: [ss_sold_date_sk#14, ss_item_sk#15, ss_sales_price#16, d_date_sk#17, d_date#18] + +(119) HashAggregate +Input [3]: [ss_item_sk#15, ss_sales_price#16, d_date#18] +Keys [2]: [ss_item_sk#15, d_date#18] +Functions [1]: [partial_sum(UnscaledValue(ss_sales_price#16))] +Aggregate Attributes [1]: [sum#20] +Results [3]: [ss_item_sk#15, d_date#18, sum#33] + +(120) Exchange +Input [3]: [ss_item_sk#15, d_date#18, sum#33] +Arguments: hashpartitioning(ss_item_sk#15, d_date#18, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(121) HashAggregate +Input [3]: [ss_item_sk#15, d_date#18, sum#33] +Keys [2]: [ss_item_sk#15, d_date#18] +Functions [1]: [sum(UnscaledValue(ss_sales_price#16))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_sales_price#16))#21] +Results [4]: [ss_item_sk#15 AS item_sk#22, d_date#18, MakeDecimal(sum(UnscaledValue(ss_sales_price#16))#21,17,2) AS _w0#23, ss_item_sk#15] + +(122) Exchange +Input [4]: [item_sk#22, d_date#18, _w0#23, ss_item_sk#15] +Arguments: hashpartitioning(ss_item_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(123) Sort +Input [4]: [item_sk#22, d_date#18, _w0#23, ss_item_sk#15] +Arguments: [ss_item_sk#15 ASC NULLS FIRST, d_date#18 ASC NULLS FIRST], false, 0 + +(124) Window +Input [4]: [item_sk#22, d_date#18, _w0#23, ss_item_sk#15] +Arguments: [sum(_w0#23) windowspecdefinition(ss_item_sk#15, d_date#18 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS cume_sales#24], [ss_item_sk#15], [d_date#18 ASC NULLS FIRST] + +(125) Project +Output [3]: [item_sk#22, d_date#18, cume_sales#24] +Input [5]: [item_sk#22, d_date#18, _w0#23, ss_item_sk#15, cume_sales#24] + +(126) Exchange +Input [3]: [item_sk#22, d_date#18, cume_sales#24] +Arguments: hashpartitioning(item_sk#22, d_date#18, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(127) Sort +Input [3]: [item_sk#22, d_date#18, cume_sales#24] +Arguments: [item_sk#22 ASC NULLS FIRST, d_date#18 ASC NULLS FIRST], false, 0 + +(128) SortMergeJoin +Left keys [2]: [item_sk#11, d_date#5] +Right keys [2]: [item_sk#22, d_date#18] +Join type: FullOuter +Join condition: None + +(129) Project +Output [4]: [CASE WHEN isnotnull(item_sk#11) THEN item_sk#11 ELSE item_sk#22 END AS item_sk#25, CASE WHEN isnotnull(d_date#5) THEN d_date#5 ELSE d_date#18 END AS d_date#26, cume_sales#13 AS web_sales#27, cume_sales#24 AS store_sales#28] +Input [6]: [item_sk#11, d_date#5, cume_sales#13, item_sk#22, d_date#18, cume_sales#24] + +(130) Exchange +Input [4]: [item_sk#25, d_date#26, web_sales#27, store_sales#28] +Arguments: hashpartitioning(item_sk#25, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(131) Sort +Input [4]: [item_sk#25, d_date#26, web_sales#27, store_sales#28] +Arguments: [item_sk#25 ASC NULLS FIRST, d_date#26 ASC NULLS FIRST], false, 0 + +(132) Window +Input [4]: [item_sk#25, d_date#26, web_sales#27, store_sales#28] +Arguments: [max(web_sales#27) windowspecdefinition(item_sk#25, d_date#26 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS web_cumulative#29, max(store_sales#28) windowspecdefinition(item_sk#25, d_date#26 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS store_cumulative#30], [item_sk#25], [d_date#26 ASC NULLS FIRST] + +(133) Filter +Input [6]: [item_sk#25, d_date#26, web_sales#27, store_sales#28, web_cumulative#29, store_cumulative#30] +Condition : ((isnotnull(web_cumulative#29) AND isnotnull(store_cumulative#30)) AND (web_cumulative#29 > store_cumulative#30)) + +(134) TakeOrderedAndProject +Input [6]: [item_sk#25, d_date#26, web_sales#27, store_sales#28, web_cumulative#29, store_cumulative#30] +Arguments: X, [item_sk#25 ASC NULLS FIRST, d_date#26 ASC NULLS FIRST], [item_sk#25, d_date#26, web_sales#27, store_sales#28, web_cumulative#29, store_cumulative#30] + +(135) AdaptiveSparkPlan +Output [6]: [item_sk#25, d_date#26, web_sales#27, store_sales#28, web_cumulative#29, store_cumulative#30] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q52.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q52.txt new file mode 100644 index 000000000..1f78f8291 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q52.txt @@ -0,0 +1,383 @@ +== Physical Plan == +AdaptiveSparkPlan (69) ++- == Final Plan == + NativeTakeOrdered (44) + +- NativeProject (43) + +- NativeHashAggregate (42) + +- InputAdapter (41) + +- AQEShuffleRead (40) + +- ShuffleQueryStage (39), Statistics(X) + +- NativeShuffleExchange (38) + +- NativeHashAggregate (37) + +- NativeProject (36) + +- NativeProject (35) + +- NativeSortMergeJoin Inner (34) + :- NativeSort (24) + : +- InputAdapter (23) + : +- AQEShuffleRead (22) + : +- ShuffleQueryStage (21), Statistics(X) + : +- NativeShuffleExchange (20) + : +- NativeProject (19) + : +- NativeSortMergeJoin Inner (18) + : :- NativeSort (9) + : : +- InputAdapter (8) + : : +- AQEShuffleRead (7) + : : +- ShuffleQueryStage (6), Statistics(X) + : : +- NativeShuffleExchange (5) + : : +- NativeProject (4) + : : +- NativeFilter (3) + : : +- InputAdapter (2) + : : +- NativeParquetScan (1) + : +- NativeSort (17) + : +- InputAdapter (16) + : +- AQEShuffleRead (15) + : +- ShuffleQueryStage (14), Statistics(X) + : +- NativeShuffleExchange (13) + : +- NativeFilter (12) + : +- InputAdapter (11) + : +- NativeParquetScan (10) + +- NativeSort (33) + +- InputAdapter (32) + +- AQEShuffleRead (31) + +- ShuffleQueryStage (30), Statistics(X) + +- NativeShuffleExchange (29) + +- NativeProject (28) + +- NativeFilter (27) + +- InputAdapter (26) + +- NativeParquetScan (25) ++- == Initial Plan == + TakeOrderedAndProject (68) + +- HashAggregate (67) + +- Exchange (66) + +- HashAggregate (65) + +- Project (64) + +- SortMergeJoin Inner (63) + :- Sort (57) + : +- Exchange (56) + : +- Project (55) + : +- SortMergeJoin Inner (54) + : :- Sort (49) + : : +- Exchange (48) + : : +- Project (47) + : : +- Filter (46) + : : +- Scan parquet (45) + : +- Sort (53) + : +- Exchange (52) + : +- Filter (51) + : +- Scan parquet (50) + +- Sort (62) + +- Exchange (61) + +- Project (60) + +- Filter (59) + +- Scan parquet (58) + + +(45) Scan parquet +Output [3]: [d_date_sk#1, d_year#2, d_moy#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_moy), IsNotNull(d_year), EqualTo(d_moy,11), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [d_date_sk#1, d_year#2, d_moy#3] +Arguments: [#1, #2, #3] + +(3) NativeFilter +Input [3]: [#1#1, #2#2, #3#3] +Condition : ((((isnotnull(d_moy#3) AND isnotnull(d_year#2)) AND (d_moy#3 = 11)) AND (d_year#2 = 2000)) AND isnotnull(d_date_sk#1)) + +(4) NativeProject +Output [2]: [d_date_sk#1, d_year#2] +Input [3]: [#1#1, #2#2, #3#3] + +(5) NativeShuffleExchange +Input [2]: [d_date_sk#1, d_year#2] +Arguments: hashpartitioning(d_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(6) ShuffleQueryStage +Output [2]: [d_date_sk#1, d_year#2] +Arguments: X + +(7) AQEShuffleRead +Input [2]: [d_date_sk#1, d_year#2] +Arguments: coalesced + +(8) InputAdapter +Input [2]: [d_date_sk#1, d_year#2] + +(9) NativeSort +Input [2]: [d_date_sk#1, d_year#2] +Arguments: [d_date_sk#1 ASC NULLS FIRST], false + +(50) Scan parquet +Output [3]: [ss_sold_date_sk#4, ss_item_sk#5, ss_ext_sales_price#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(11) InputAdapter +Input [3]: [ss_sold_date_sk#4, ss_item_sk#5, ss_ext_sales_price#6] +Arguments: [#4, #5, #6] + +(12) NativeFilter +Input [3]: [#4#4, #5#5, #6#6] +Condition : (isnotnull(ss_sold_date_sk#4) AND isnotnull(ss_item_sk#5)) + +(13) NativeShuffleExchange +Input [3]: [#4#4, #5#5, #6#6] +Arguments: hashpartitioning(ss_sold_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [3]: [#4#4, #5#5, #6#6] +Arguments: X + +(15) AQEShuffleRead +Input [3]: [#4#4, #5#5, #6#6] +Arguments: coalesced + +(16) InputAdapter +Input [3]: [#4#4, #5#5, #6#6] + +(17) NativeSort +Input [3]: [#4#4, #5#5, #6#6] +Arguments: [ss_sold_date_sk#4 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [d_date_sk#1] +Right keys [1]: [ss_sold_date_sk#4] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [3]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6] +Input [5]: [d_date_sk#1, d_year#2, #4#4, #5#5, #6#6] + +(20) NativeShuffleExchange +Input [3]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6] +Arguments: hashpartitioning(ss_item_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [3]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6] +Arguments: X + +(22) AQEShuffleRead +Input [3]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6] +Arguments: coalesced + +(23) InputAdapter +Input [3]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6] + +(24) NativeSort +Input [3]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6] +Arguments: [ss_item_sk#5 ASC NULLS FIRST], false + +(58) Scan parquet +Output [4]: [i_item_sk#7, i_brand_id#8, i_brand#9, i_manager_id#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_manager_id), EqualTo(i_manager_id,1), IsNotNull(i_item_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [4]: [i_item_sk#7, i_brand_id#8, i_brand#9, i_manager_id#10] +Arguments: [#7, #8, #9, #10] + +(27) NativeFilter +Input [4]: [#7#7, #8#8, #9#9, #10#10] +Condition : ((isnotnull(i_manager_id#10) AND (i_manager_id#10 = 1)) AND isnotnull(i_item_sk#7)) + +(28) NativeProject +Output [3]: [i_item_sk#7, i_brand_id#8, i_brand#9] +Input [4]: [#7#7, #8#8, #9#9, #10#10] + +(29) NativeShuffleExchange +Input [3]: [i_item_sk#7, i_brand_id#8, i_brand#9] +Arguments: hashpartitioning(i_item_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(30) ShuffleQueryStage +Output [3]: [i_item_sk#7, i_brand_id#8, i_brand#9] +Arguments: X + +(31) AQEShuffleRead +Input [3]: [i_item_sk#7, i_brand_id#8, i_brand#9] +Arguments: coalesced + +(32) InputAdapter +Input [3]: [i_item_sk#7, i_brand_id#8, i_brand#9] + +(33) NativeSort +Input [3]: [i_item_sk#7, i_brand_id#8, i_brand#9] +Arguments: [i_item_sk#7 ASC NULLS FIRST], false + +(34) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#5] +Right keys [1]: [i_item_sk#7] +Join type: Inner +Join condition: None + +(35) NativeProject +Output [4]: [d_year#2, ss_ext_sales_price#6, i_brand_id#8, i_brand#9] +Input [6]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6, i_item_sk#7, i_brand_id#8, i_brand#9] + +(36) NativeProject +Output [4]: [d_year#2 AS d_year#2, i_brand#9 AS i_brand#9, i_brand_id#8 AS i_brand_id#8, UnscaledValue(ss_ext_sales_price#6) AS _c3#11] +Input [4]: [d_year#2, ss_ext_sales_price#6, i_brand_id#8, i_brand#9] + +(37) NativeHashAggregate +Input [4]: [d_year#2, i_brand#9, i_brand_id#8, _c3#11] +Keys [3]: [d_year#2, i_brand#9, i_brand_id#8] +Functions [1]: [partial_sum(_c3#11)] +Aggregate Attributes [1]: [sum#12] +Results [4]: [d_year#2, i_brand#9, i_brand_id#8, #13#13] + +(38) NativeShuffleExchange +Input [4]: [d_year#2, i_brand#9, i_brand_id#8, #13#13] +Arguments: hashpartitioning(d_year#2, i_brand#9, i_brand_id#8, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(39) ShuffleQueryStage +Output [4]: [d_year#2, i_brand#9, i_brand_id#8, #13#13] +Arguments: X + +(40) AQEShuffleRead +Input [4]: [d_year#2, i_brand#9, i_brand_id#8, #13#13] +Arguments: coalesced + +(41) InputAdapter +Input [4]: [d_year#2, i_brand#9, i_brand_id#8, #13#13] + +(42) NativeHashAggregate +Input [4]: [d_year#2, i_brand#9, i_brand_id#8, #13#13] +Keys [3]: [d_year#2, i_brand#9, i_brand_id#8] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#6))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#6))#14] +Results [4]: [d_year#2, i_brand#9, i_brand_id#8, sum(UnscaledValue(ss_ext_sales_price#6))#14] + +(43) NativeProject +Output [4]: [d_year#2, i_brand_id#8 AS brand_id#15, i_brand#9 AS brand#16, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#6))#14,17,2) AS ext_price#17] +Input [4]: [d_year#2, i_brand#9, i_brand_id#8, sum(UnscaledValue(ss_ext_sales_price#6))#14] + +(44) NativeTakeOrdered +Input [4]: [d_year#2, brand_id#15, brand#16, ext_price#17] +Arguments: X, [d_year#2 ASC NULLS FIRST, ext_price#17 DESC NULLS LAST, brand_id#15 ASC NULLS FIRST] + +(45) Scan parquet +Output [3]: [d_date_sk#1, d_year#2, d_moy#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_moy), IsNotNull(d_year), EqualTo(d_moy,11), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(46) Filter +Input [3]: [d_date_sk#1, d_year#2, d_moy#3] +Condition : ((((isnotnull(d_moy#3) AND isnotnull(d_year#2)) AND (d_moy#3 = 11)) AND (d_year#2 = 2000)) AND isnotnull(d_date_sk#1)) + +(47) Project +Output [2]: [d_date_sk#1, d_year#2] +Input [3]: [d_date_sk#1, d_year#2, d_moy#3] + +(48) Exchange +Input [2]: [d_date_sk#1, d_year#2] +Arguments: hashpartitioning(d_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(49) Sort +Input [2]: [d_date_sk#1, d_year#2] +Arguments: [d_date_sk#1 ASC NULLS FIRST], false, 0 + +(50) Scan parquet +Output [3]: [ss_sold_date_sk#4, ss_item_sk#5, ss_ext_sales_price#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(51) Filter +Input [3]: [ss_sold_date_sk#4, ss_item_sk#5, ss_ext_sales_price#6] +Condition : (isnotnull(ss_sold_date_sk#4) AND isnotnull(ss_item_sk#5)) + +(52) Exchange +Input [3]: [ss_sold_date_sk#4, ss_item_sk#5, ss_ext_sales_price#6] +Arguments: hashpartitioning(ss_sold_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(53) Sort +Input [3]: [ss_sold_date_sk#4, ss_item_sk#5, ss_ext_sales_price#6] +Arguments: [ss_sold_date_sk#4 ASC NULLS FIRST], false, 0 + +(54) SortMergeJoin +Left keys [1]: [d_date_sk#1] +Right keys [1]: [ss_sold_date_sk#4] +Join type: Inner +Join condition: None + +(55) Project +Output [3]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6] +Input [5]: [d_date_sk#1, d_year#2, ss_sold_date_sk#4, ss_item_sk#5, ss_ext_sales_price#6] + +(56) Exchange +Input [3]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6] +Arguments: hashpartitioning(ss_item_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(57) Sort +Input [3]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6] +Arguments: [ss_item_sk#5 ASC NULLS FIRST], false, 0 + +(58) Scan parquet +Output [4]: [i_item_sk#7, i_brand_id#8, i_brand#9, i_manager_id#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_manager_id), EqualTo(i_manager_id,1), IsNotNull(i_item_sk)] +ReadSchema: struct + +(59) Filter +Input [4]: [i_item_sk#7, i_brand_id#8, i_brand#9, i_manager_id#10] +Condition : ((isnotnull(i_manager_id#10) AND (i_manager_id#10 = 1)) AND isnotnull(i_item_sk#7)) + +(60) Project +Output [3]: [i_item_sk#7, i_brand_id#8, i_brand#9] +Input [4]: [i_item_sk#7, i_brand_id#8, i_brand#9, i_manager_id#10] + +(61) Exchange +Input [3]: [i_item_sk#7, i_brand_id#8, i_brand#9] +Arguments: hashpartitioning(i_item_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(62) Sort +Input [3]: [i_item_sk#7, i_brand_id#8, i_brand#9] +Arguments: [i_item_sk#7 ASC NULLS FIRST], false, 0 + +(63) SortMergeJoin +Left keys [1]: [ss_item_sk#5] +Right keys [1]: [i_item_sk#7] +Join type: Inner +Join condition: None + +(64) Project +Output [4]: [d_year#2, ss_ext_sales_price#6, i_brand_id#8, i_brand#9] +Input [6]: [d_year#2, ss_item_sk#5, ss_ext_sales_price#6, i_item_sk#7, i_brand_id#8, i_brand#9] + +(65) HashAggregate +Input [4]: [d_year#2, ss_ext_sales_price#6, i_brand_id#8, i_brand#9] +Keys [3]: [d_year#2, i_brand#9, i_brand_id#8] +Functions [1]: [partial_sum(UnscaledValue(ss_ext_sales_price#6))] +Aggregate Attributes [1]: [sum#12] +Results [4]: [d_year#2, i_brand#9, i_brand_id#8, sum#18] + +(66) Exchange +Input [4]: [d_year#2, i_brand#9, i_brand_id#8, sum#18] +Arguments: hashpartitioning(d_year#2, i_brand#9, i_brand_id#8, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(67) HashAggregate +Input [4]: [d_year#2, i_brand#9, i_brand_id#8, sum#18] +Keys [3]: [d_year#2, i_brand#9, i_brand_id#8] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#6))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#6))#14] +Results [4]: [d_year#2, i_brand_id#8 AS brand_id#15, i_brand#9 AS brand#16, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#6))#14,17,2) AS ext_price#17] + +(68) TakeOrderedAndProject +Input [4]: [d_year#2, brand_id#15, brand#16, ext_price#17] +Arguments: X, [d_year#2 ASC NULLS FIRST, ext_price#17 DESC NULLS LAST, brand_id#15 ASC NULLS FIRST], [d_year#2, brand_id#15, brand#16, ext_price#17] + +(69) AdaptiveSparkPlan +Output [4]: [d_year#2, brand_id#15, brand#16, ext_price#17] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q53.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q53.txt new file mode 100644 index 000000000..110758e1f --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q53.txt @@ -0,0 +1,570 @@ +== Physical Plan == +AdaptiveSparkPlan (105) ++- == Final Plan == + TakeOrderedAndProject (67) + +- * Project (66) + +- * Filter (65) + +- Window (64) + +- NativeSort (63) + +- InputAdapter (62) + +- AQEShuffleRead (61) + +- ShuffleQueryStage (60), Statistics(X) + +- NativeShuffleExchange (59) + +- NativeProject (58) + +- NativeHashAggregate (57) + +- InputAdapter (56) + +- AQEShuffleRead (55) + +- ShuffleQueryStage (54), Statistics(X) + +- NativeShuffleExchange (53) + +- NativeHashAggregate (52) + +- NativeProject (51) + +- NativeProject (50) + +- NativeSortMergeJoin Inner (49) + :- NativeSort (40) + : +- InputAdapter (39) + : +- AQEShuffleRead (38) + : +- ShuffleQueryStage (37), Statistics(X) + : +- NativeShuffleExchange (36) + : +- NativeProject (35) + : +- NativeSortMergeJoin Inner (34) + : :- NativeSort (24) + : : +- InputAdapter (23) + : : +- AQEShuffleRead (22) + : : +- ShuffleQueryStage (21), Statistics(X) + : : +- NativeShuffleExchange (20) + : : +- NativeProject (19) + : : +- NativeSortMergeJoin Inner (18) + : : :- NativeSort (9) + : : : +- InputAdapter (8) + : : : +- AQEShuffleRead (7) + : : : +- ShuffleQueryStage (6), Statistics(X) + : : : +- NativeShuffleExchange (5) + : : : +- NativeProject (4) + : : : +- NativeFilter (3) + : : : +- InputAdapter (2) + : : : +- NativeParquetScan (1) + : : +- NativeSort (17) + : : +- InputAdapter (16) + : : +- AQEShuffleRead (15) + : : +- ShuffleQueryStage (14), Statistics(X) + : : +- NativeShuffleExchange (13) + : : +- NativeFilter (12) + : : +- InputAdapter (11) + : : +- NativeParquetScan (10) + : +- NativeSort (33) + : +- InputAdapter (32) + : +- AQEShuffleRead (31) + : +- ShuffleQueryStage (30), Statistics(X) + : +- NativeShuffleExchange (29) + : +- NativeProject (28) + : +- NativeFilter (27) + : +- InputAdapter (26) + : +- NativeParquetScan (25) + +- NativeSort (48) + +- InputAdapter (47) + +- AQEShuffleRead (46) + +- ShuffleQueryStage (45), Statistics(X) + +- NativeShuffleExchange (44) + +- NativeFilter (43) + +- InputAdapter (42) + +- NativeParquetScan (41) ++- == Initial Plan == + TakeOrderedAndProject (104) + +- Project (103) + +- Filter (102) + +- Window (101) + +- Sort (100) + +- Exchange (99) + +- HashAggregate (98) + +- Exchange (97) + +- HashAggregate (96) + +- Project (95) + +- SortMergeJoin Inner (94) + :- Sort (89) + : +- Exchange (88) + : +- Project (87) + : +- SortMergeJoin Inner (86) + : :- Sort (80) + : : +- Exchange (79) + : : +- Project (78) + : : +- SortMergeJoin Inner (77) + : : :- Sort (72) + : : : +- Exchange (71) + : : : +- Project (70) + : : : +- Filter (69) + : : : +- Scan parquet (68) + : : +- Sort (76) + : : +- Exchange (75) + : : +- Filter (74) + : : +- Scan parquet (73) + : +- Sort (85) + : +- Exchange (84) + : +- Project (83) + : +- Filter (82) + : +- Scan parquet (81) + +- Sort (93) + +- Exchange (92) + +- Filter (91) + +- Scan parquet (90) + + +(68) Scan parquet +Output [5]: [i_item_sk#1, i_brand#2, i_class#3, i_category#4, i_manufact_id#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(And(And(In(i_category, [Books,Children,Electronics]),In(i_class, [personal,portable,reference,self-help])),In(i_brand, [exportiunivamalg #6,scholaramalgamalg #7,scholaramalgamalg #8,scholaramalgamalg #6])),And(And(In(i_category, [Men,Music,Women]),In(i_class, [accessories,classical,fragrances,pants])),In(i_brand, [amalgimporto #9,edu packscholar #9,exportiimporto #9,importoamalg #9]))), IsNotNull(i_item_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [5]: [i_item_sk#1, i_brand#2, i_class#3, i_category#4, i_manufact_id#5] +Arguments: [#1, #2, #3, #4, #5] + +(3) NativeFilter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Condition : ((((i_category#4 IN (Books,Children,Electronics) AND i_class#3 IN (personal,portable,reference,self-help)) AND i_brand#2 IN (scholaramalgamalg #7,scholaramalgamalg #8,exportiunivamalg #6,scholaramalgamalg #6)) OR ((i_category#4 IN (Women,Music,Men) AND i_class#3 IN (accessories,classical,fragrances,pants)) AND i_brand#2 IN (amalgimporto #9,edu packscholar #9,exportiimporto #9,importoamalg #9))) AND isnotnull(i_item_sk#1)) + +(4) NativeProject +Output [2]: [i_item_sk#1, i_manufact_id#5] +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] + +(5) NativeShuffleExchange +Input [2]: [i_item_sk#1, i_manufact_id#5] +Arguments: hashpartitioning(i_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(6) ShuffleQueryStage +Output [2]: [i_item_sk#1, i_manufact_id#5] +Arguments: X + +(7) AQEShuffleRead +Input [2]: [i_item_sk#1, i_manufact_id#5] +Arguments: coalesced + +(8) InputAdapter +Input [2]: [i_item_sk#1, i_manufact_id#5] + +(9) NativeSort +Input [2]: [i_item_sk#1, i_manufact_id#5] +Arguments: [i_item_sk#1 ASC NULLS FIRST], false + +(73) Scan parquet +Output [4]: [ss_sold_date_sk#10, ss_item_sk#11, ss_store_sk#12, ss_sales_price#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(11) InputAdapter +Input [4]: [ss_sold_date_sk#10, ss_item_sk#11, ss_store_sk#12, ss_sales_price#13] +Arguments: [#10, #11, #12, #13] + +(12) NativeFilter +Input [4]: [#10#10, #11#11, #12#12, #13#13] +Condition : ((isnotnull(ss_item_sk#11) AND isnotnull(ss_sold_date_sk#10)) AND isnotnull(ss_store_sk#12)) + +(13) NativeShuffleExchange +Input [4]: [#10#10, #11#11, #12#12, #13#13] +Arguments: hashpartitioning(ss_item_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [4]: [#10#10, #11#11, #12#12, #13#13] +Arguments: X + +(15) AQEShuffleRead +Input [4]: [#10#10, #11#11, #12#12, #13#13] +Arguments: coalesced + +(16) InputAdapter +Input [4]: [#10#10, #11#11, #12#12, #13#13] + +(17) NativeSort +Input [4]: [#10#10, #11#11, #12#12, #13#13] +Arguments: [ss_item_sk#11 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [i_item_sk#1] +Right keys [1]: [ss_item_sk#11] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [4]: [i_manufact_id#5, ss_sold_date_sk#10, ss_store_sk#12, ss_sales_price#13] +Input [6]: [i_item_sk#1, i_manufact_id#5, #10#10, #11#11, #12#12, #13#13] + +(20) NativeShuffleExchange +Input [4]: [i_manufact_id#5, ss_sold_date_sk#10, ss_store_sk#12, ss_sales_price#13] +Arguments: hashpartitioning(ss_sold_date_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [4]: [i_manufact_id#5, ss_sold_date_sk#10, ss_store_sk#12, ss_sales_price#13] +Arguments: X + +(22) AQEShuffleRead +Input [4]: [i_manufact_id#5, ss_sold_date_sk#10, ss_store_sk#12, ss_sales_price#13] +Arguments: coalesced + +(23) InputAdapter +Input [4]: [i_manufact_id#5, ss_sold_date_sk#10, ss_store_sk#12, ss_sales_price#13] + +(24) NativeSort +Input [4]: [i_manufact_id#5, ss_sold_date_sk#10, ss_store_sk#12, ss_sales_price#13] +Arguments: [ss_sold_date_sk#10 ASC NULLS FIRST], false + +(81) Scan parquet +Output [3]: [d_date_sk#14, d_month_seq#15, d_qoy#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(d_month_seq, [1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [3]: [d_date_sk#14, d_month_seq#15, d_qoy#16] +Arguments: [#14, #15, #16] + +(27) NativeFilter +Input [3]: [#14#14, #15#15, #16#16] +Condition : (d_month_seq#15 INSET 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211 AND isnotnull(d_date_sk#14)) + +(28) NativeProject +Output [2]: [d_date_sk#14, d_qoy#16] +Input [3]: [#14#14, #15#15, #16#16] + +(29) NativeShuffleExchange +Input [2]: [d_date_sk#14, d_qoy#16] +Arguments: hashpartitioning(d_date_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(30) ShuffleQueryStage +Output [2]: [d_date_sk#14, d_qoy#16] +Arguments: X + +(31) AQEShuffleRead +Input [2]: [d_date_sk#14, d_qoy#16] +Arguments: coalesced + +(32) InputAdapter +Input [2]: [d_date_sk#14, d_qoy#16] + +(33) NativeSort +Input [2]: [d_date_sk#14, d_qoy#16] +Arguments: [d_date_sk#14 ASC NULLS FIRST], false + +(34) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#10] +Right keys [1]: [d_date_sk#14] +Join type: Inner +Join condition: None + +(35) NativeProject +Output [4]: [i_manufact_id#5, ss_store_sk#12, ss_sales_price#13, d_qoy#16] +Input [6]: [i_manufact_id#5, ss_sold_date_sk#10, ss_store_sk#12, ss_sales_price#13, d_date_sk#14, d_qoy#16] + +(36) NativeShuffleExchange +Input [4]: [i_manufact_id#5, ss_store_sk#12, ss_sales_price#13, d_qoy#16] +Arguments: hashpartitioning(ss_store_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [4]: [i_manufact_id#5, ss_store_sk#12, ss_sales_price#13, d_qoy#16] +Arguments: X + +(38) AQEShuffleRead +Input [4]: [i_manufact_id#5, ss_store_sk#12, ss_sales_price#13, d_qoy#16] +Arguments: coalesced + +(39) InputAdapter +Input [4]: [i_manufact_id#5, ss_store_sk#12, ss_sales_price#13, d_qoy#16] + +(40) NativeSort +Input [4]: [i_manufact_id#5, ss_store_sk#12, ss_sales_price#13, d_qoy#16] +Arguments: [ss_store_sk#12 ASC NULLS FIRST], false + +(90) Scan parquet +Output [1]: [s_store_sk#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(42) InputAdapter +Input [1]: [s_store_sk#17] +Arguments: [#17] + +(43) NativeFilter +Input [1]: [#17#17] +Condition : isnotnull(s_store_sk#17) + +(44) NativeShuffleExchange +Input [1]: [#17#17] +Arguments: hashpartitioning(s_store_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(45) ShuffleQueryStage +Output [1]: [#17#17] +Arguments: X + +(46) AQEShuffleRead +Input [1]: [#17#17] +Arguments: coalesced + +(47) InputAdapter +Input [1]: [#17#17] + +(48) NativeSort +Input [1]: [#17#17] +Arguments: [s_store_sk#17 ASC NULLS FIRST], false + +(49) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#12] +Right keys [1]: [s_store_sk#17] +Join type: Inner +Join condition: None + +(50) NativeProject +Output [3]: [i_manufact_id#5, ss_sales_price#13, d_qoy#16] +Input [5]: [i_manufact_id#5, ss_store_sk#12, ss_sales_price#13, d_qoy#16, #17#17] + +(51) NativeProject +Output [3]: [i_manufact_id#5 AS i_manufact_id#5, d_qoy#16 AS d_qoy#16, UnscaledValue(ss_sales_price#13) AS _c2#18] +Input [3]: [i_manufact_id#5, ss_sales_price#13, d_qoy#16] + +(52) NativeHashAggregate +Input [3]: [i_manufact_id#5, d_qoy#16, _c2#18] +Keys [2]: [i_manufact_id#5, d_qoy#16] +Functions [1]: [partial_sum(_c2#18)] +Aggregate Attributes [1]: [sum#19] +Results [3]: [i_manufact_id#5, d_qoy#16, #20#20] + +(53) NativeShuffleExchange +Input [3]: [i_manufact_id#5, d_qoy#16, #20#20] +Arguments: hashpartitioning(i_manufact_id#5, d_qoy#16, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(54) ShuffleQueryStage +Output [3]: [i_manufact_id#5, d_qoy#16, #20#20] +Arguments: X + +(55) AQEShuffleRead +Input [3]: [i_manufact_id#5, d_qoy#16, #20#20] +Arguments: coalesced + +(56) InputAdapter +Input [3]: [i_manufact_id#5, d_qoy#16, #20#20] + +(57) NativeHashAggregate +Input [3]: [i_manufact_id#5, d_qoy#16, #20#20] +Keys [2]: [i_manufact_id#5, d_qoy#16] +Functions [1]: [sum(UnscaledValue(ss_sales_price#13))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_sales_price#13))#21] +Results [3]: [i_manufact_id#5, d_qoy#16, sum(UnscaledValue(ss_sales_price#13))#21] + +(58) NativeProject +Output [3]: [i_manufact_id#5, MakeDecimal(sum(UnscaledValue(ss_sales_price#13))#21,17,2) AS sum_sales#22, MakeDecimal(sum(UnscaledValue(ss_sales_price#13))#21,17,2) AS _w0#23] +Input [3]: [i_manufact_id#5, d_qoy#16, sum(UnscaledValue(ss_sales_price#13))#21] + +(59) NativeShuffleExchange +Input [3]: [i_manufact_id#5, sum_sales#22, _w0#23] +Arguments: hashpartitioning(i_manufact_id#5, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(60) ShuffleQueryStage +Output [3]: [i_manufact_id#5, sum_sales#22, _w0#23] +Arguments: X + +(61) AQEShuffleRead +Input [3]: [i_manufact_id#5, sum_sales#22, _w0#23] +Arguments: coalesced + +(62) InputAdapter +Input [3]: [i_manufact_id#5, sum_sales#22, _w0#23] + +(63) NativeSort +Input [3]: [i_manufact_id#5, sum_sales#22, _w0#23] +Arguments: [i_manufact_id#5 ASC NULLS FIRST], false + +(64) Window +Input [3]: [i_manufact_id#5, sum_sales#22, _w0#23] +Arguments: [avg(_w0#23) windowspecdefinition(i_manufact_id#5, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS avg_quarterly_sales#24], [i_manufact_id#5] + +(65) Filter [codegen id : 1] +Input [4]: [i_manufact_id#5, sum_sales#22, _w0#23, avg_quarterly_sales#24] +Condition : CASE WHEN (avg_quarterly_sales#24 > 0.000000) THEN ((abs((sum_sales#22 - avg_quarterly_sales#24)) / avg_quarterly_sales#24) > 0.1000000000000000) ELSE false END + +(66) Project [codegen id : 1] +Output [3]: [i_manufact_id#5, sum_sales#22, avg_quarterly_sales#24] +Input [4]: [i_manufact_id#5, sum_sales#22, _w0#23, avg_quarterly_sales#24] + +(67) TakeOrderedAndProject +Input [3]: [i_manufact_id#5, sum_sales#22, avg_quarterly_sales#24] +Arguments: X, [avg_quarterly_sales#24 ASC NULLS FIRST, sum_sales#22 ASC NULLS FIRST, i_manufact_id#5 ASC NULLS FIRST], [i_manufact_id#5, sum_sales#22, avg_quarterly_sales#24] + +(68) Scan parquet +Output [5]: [i_item_sk#1, i_brand#2, i_class#3, i_category#4, i_manufact_id#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(And(And(In(i_category, [Books,Children,Electronics]),In(i_class, [personal,portable,reference,self-help])),In(i_brand, [exportiunivamalg #6,scholaramalgamalg #7,scholaramalgamalg #8,scholaramalgamalg #6])),And(And(In(i_category, [Men,Music,Women]),In(i_class, [accessories,classical,fragrances,pants])),In(i_brand, [amalgimporto #9,edu packscholar #9,exportiimporto #9,importoamalg #9]))), IsNotNull(i_item_sk)] +ReadSchema: struct + +(69) Filter +Input [5]: [i_item_sk#1, i_brand#2, i_class#3, i_category#4, i_manufact_id#5] +Condition : ((((i_category#4 IN (Books,Children,Electronics) AND i_class#3 IN (personal,portable,reference,self-help)) AND i_brand#2 IN (scholaramalgamalg #7,scholaramalgamalg #8,exportiunivamalg #6,scholaramalgamalg #6)) OR ((i_category#4 IN (Women,Music,Men) AND i_class#3 IN (accessories,classical,fragrances,pants)) AND i_brand#2 IN (amalgimporto #9,edu packscholar #9,exportiimporto #9,importoamalg #9))) AND isnotnull(i_item_sk#1)) + +(70) Project +Output [2]: [i_item_sk#1, i_manufact_id#5] +Input [5]: [i_item_sk#1, i_brand#2, i_class#3, i_category#4, i_manufact_id#5] + +(71) Exchange +Input [2]: [i_item_sk#1, i_manufact_id#5] +Arguments: hashpartitioning(i_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(72) Sort +Input [2]: [i_item_sk#1, i_manufact_id#5] +Arguments: [i_item_sk#1 ASC NULLS FIRST], false, 0 + +(73) Scan parquet +Output [4]: [ss_sold_date_sk#10, ss_item_sk#11, ss_store_sk#12, ss_sales_price#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(74) Filter +Input [4]: [ss_sold_date_sk#10, ss_item_sk#11, ss_store_sk#12, ss_sales_price#13] +Condition : ((isnotnull(ss_item_sk#11) AND isnotnull(ss_sold_date_sk#10)) AND isnotnull(ss_store_sk#12)) + +(75) Exchange +Input [4]: [ss_sold_date_sk#10, ss_item_sk#11, ss_store_sk#12, ss_sales_price#13] +Arguments: hashpartitioning(ss_item_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(76) Sort +Input [4]: [ss_sold_date_sk#10, ss_item_sk#11, ss_store_sk#12, ss_sales_price#13] +Arguments: [ss_item_sk#11 ASC NULLS FIRST], false, 0 + +(77) SortMergeJoin +Left keys [1]: [i_item_sk#1] +Right keys [1]: [ss_item_sk#11] +Join type: Inner +Join condition: None + +(78) Project +Output [4]: [i_manufact_id#5, ss_sold_date_sk#10, ss_store_sk#12, ss_sales_price#13] +Input [6]: [i_item_sk#1, i_manufact_id#5, ss_sold_date_sk#10, ss_item_sk#11, ss_store_sk#12, ss_sales_price#13] + +(79) Exchange +Input [4]: [i_manufact_id#5, ss_sold_date_sk#10, ss_store_sk#12, ss_sales_price#13] +Arguments: hashpartitioning(ss_sold_date_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(80) Sort +Input [4]: [i_manufact_id#5, ss_sold_date_sk#10, ss_store_sk#12, ss_sales_price#13] +Arguments: [ss_sold_date_sk#10 ASC NULLS FIRST], false, 0 + +(81) Scan parquet +Output [3]: [d_date_sk#14, d_month_seq#15, d_qoy#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(d_month_seq, [1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(82) Filter +Input [3]: [d_date_sk#14, d_month_seq#15, d_qoy#16] +Condition : (d_month_seq#15 INSET 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211 AND isnotnull(d_date_sk#14)) + +(83) Project +Output [2]: [d_date_sk#14, d_qoy#16] +Input [3]: [d_date_sk#14, d_month_seq#15, d_qoy#16] + +(84) Exchange +Input [2]: [d_date_sk#14, d_qoy#16] +Arguments: hashpartitioning(d_date_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(85) Sort +Input [2]: [d_date_sk#14, d_qoy#16] +Arguments: [d_date_sk#14 ASC NULLS FIRST], false, 0 + +(86) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#10] +Right keys [1]: [d_date_sk#14] +Join type: Inner +Join condition: None + +(87) Project +Output [4]: [i_manufact_id#5, ss_store_sk#12, ss_sales_price#13, d_qoy#16] +Input [6]: [i_manufact_id#5, ss_sold_date_sk#10, ss_store_sk#12, ss_sales_price#13, d_date_sk#14, d_qoy#16] + +(88) Exchange +Input [4]: [i_manufact_id#5, ss_store_sk#12, ss_sales_price#13, d_qoy#16] +Arguments: hashpartitioning(ss_store_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(89) Sort +Input [4]: [i_manufact_id#5, ss_store_sk#12, ss_sales_price#13, d_qoy#16] +Arguments: [ss_store_sk#12 ASC NULLS FIRST], false, 0 + +(90) Scan parquet +Output [1]: [s_store_sk#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(91) Filter +Input [1]: [s_store_sk#17] +Condition : isnotnull(s_store_sk#17) + +(92) Exchange +Input [1]: [s_store_sk#17] +Arguments: hashpartitioning(s_store_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(93) Sort +Input [1]: [s_store_sk#17] +Arguments: [s_store_sk#17 ASC NULLS FIRST], false, 0 + +(94) SortMergeJoin +Left keys [1]: [ss_store_sk#12] +Right keys [1]: [s_store_sk#17] +Join type: Inner +Join condition: None + +(95) Project +Output [3]: [i_manufact_id#5, ss_sales_price#13, d_qoy#16] +Input [5]: [i_manufact_id#5, ss_store_sk#12, ss_sales_price#13, d_qoy#16, s_store_sk#17] + +(96) HashAggregate +Input [3]: [i_manufact_id#5, ss_sales_price#13, d_qoy#16] +Keys [2]: [i_manufact_id#5, d_qoy#16] +Functions [1]: [partial_sum(UnscaledValue(ss_sales_price#13))] +Aggregate Attributes [1]: [sum#19] +Results [3]: [i_manufact_id#5, d_qoy#16, sum#25] + +(97) Exchange +Input [3]: [i_manufact_id#5, d_qoy#16, sum#25] +Arguments: hashpartitioning(i_manufact_id#5, d_qoy#16, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(98) HashAggregate +Input [3]: [i_manufact_id#5, d_qoy#16, sum#25] +Keys [2]: [i_manufact_id#5, d_qoy#16] +Functions [1]: [sum(UnscaledValue(ss_sales_price#13))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_sales_price#13))#21] +Results [3]: [i_manufact_id#5, MakeDecimal(sum(UnscaledValue(ss_sales_price#13))#21,17,2) AS sum_sales#22, MakeDecimal(sum(UnscaledValue(ss_sales_price#13))#21,17,2) AS _w0#23] + +(99) Exchange +Input [3]: [i_manufact_id#5, sum_sales#22, _w0#23] +Arguments: hashpartitioning(i_manufact_id#5, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(100) Sort +Input [3]: [i_manufact_id#5, sum_sales#22, _w0#23] +Arguments: [i_manufact_id#5 ASC NULLS FIRST], false, 0 + +(101) Window +Input [3]: [i_manufact_id#5, sum_sales#22, _w0#23] +Arguments: [avg(_w0#23) windowspecdefinition(i_manufact_id#5, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS avg_quarterly_sales#24], [i_manufact_id#5] + +(102) Filter +Input [4]: [i_manufact_id#5, sum_sales#22, _w0#23, avg_quarterly_sales#24] +Condition : CASE WHEN (avg_quarterly_sales#24 > 0.000000) THEN ((abs((sum_sales#22 - avg_quarterly_sales#24)) / avg_quarterly_sales#24) > 0.1000000000000000) ELSE false END + +(103) Project +Output [3]: [i_manufact_id#5, sum_sales#22, avg_quarterly_sales#24] +Input [4]: [i_manufact_id#5, sum_sales#22, _w0#23, avg_quarterly_sales#24] + +(104) TakeOrderedAndProject +Input [3]: [i_manufact_id#5, sum_sales#22, avg_quarterly_sales#24] +Arguments: X, [avg_quarterly_sales#24 ASC NULLS FIRST, sum_sales#22 ASC NULLS FIRST, i_manufact_id#5 ASC NULLS FIRST], [i_manufact_id#5, sum_sales#22, avg_quarterly_sales#24] + +(105) AdaptiveSparkPlan +Output [3]: [i_manufact_id#5, sum_sales#22, avg_quarterly_sales#24] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q54.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q54.txt new file mode 100644 index 000000000..82b5d3633 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q54.txt @@ -0,0 +1,1367 @@ +== Physical Plan == +AdaptiveSparkPlan (207) ++- == Final Plan == + NativeProject (132) + +- NativeHashAggregate (131) + +- InputAdapter (130) + +- AQEShuffleRead (129) + +- ShuffleQueryStage (128), Statistics(X) + +- NativeShuffleExchange (127) + +- NativeHashAggregate (126) + +- NativeProject (125) + +- NativeHashAggregate (124) + +- InputAdapter (123) + +- AQEShuffleRead (122) + +- ShuffleQueryStage (121), Statistics(X) + +- NativeShuffleExchange (120) + +- NativeHashAggregate (119) + +- NativeProject (118) + +- NativeProject (117) + +- NativeSortMergeJoin Inner (116) + :- NativeSort (106) + : +- InputAdapter (105) + : +- AQEShuffleRead (104) + : +- ShuffleQueryStage (103), Statistics(X) + : +- NativeShuffleExchange (102) + : +- NativeProject (101) + : +- NativeSortMergeJoin Inner (100) + : :- NativeSort (91) + : : +- InputAdapter (90) + : : +- AQEShuffleRead (89) + : : +- ShuffleQueryStage (88), Statistics(X) + : : +- NativeShuffleExchange (87) + : : +- NativeProject (86) + : : +- NativeSortMergeJoin Inner (85) + : : :- NativeSort (76) + : : : +- InputAdapter (75) + : : : +- AQEShuffleRead (74) + : : : +- ShuffleQueryStage (73), Statistics(X) + : : : +- NativeShuffleExchange (72) + : : : +- NativeProject (71) + : : : +- NativeSortMergeJoin Inner (70) + : : : :- NativeSort (61) + : : : : +- NativeProject (60) + : : : : +- NativeHashAggregate (59) + : : : : +- NativeHashAggregate (58) + : : : : +- NativeProject (57) + : : : : +- NativeSortMergeJoin Inner (56) + : : : : :- NativeSort (47) + : : : : : +- InputAdapter (46) + : : : : : +- AQEShuffleRead (45) + : : : : : +- ShuffleQueryStage (44), Statistics(X) + : : : : : +- NativeShuffleExchange (43) + : : : : : +- NativeProject (42) + : : : : : +- NativeSortMergeJoin Inner (41) + : : : : : :- NativeSort (31) + : : : : : : +- InputAdapter (30) + : : : : : : +- AQEShuffleRead (29) + : : : : : : +- ShuffleQueryStage (28), Statistics(X) + : : : : : : +- NativeShuffleExchange (27) + : : : : : : +- NativeProject (26) + : : : : : : +- NativeSortMergeJoin Inner (25) + : : : : : : :- NativeSort (15) + : : : : : : : +- InputAdapter (14) + : : : : : : : +- AQEShuffleRead (13) + : : : : : : : +- ShuffleQueryStage (12), Statistics(X) + : : : : : : : +- NativeShuffleExchange (11) + : : : : : : : +- InputAdapter (10) + : : : : : : : +- NativeUnion (9) + : : : : : : : :- NativeProject (4) + : : : : : : : : +- NativeFilter (3) + : : : : : : : : +- InputAdapter (2) + : : : : : : : : +- NativeParquetScan (1) + : : : : : : : +- NativeProject (8) + : : : : : : : +- NativeFilter (7) + : : : : : : : +- InputAdapter (6) + : : : : : : : +- NativeParquetScan (5) + : : : : : : +- NativeSort (24) + : : : : : : +- InputAdapter (23) + : : : : : : +- AQEShuffleRead (22) + : : : : : : +- ShuffleQueryStage (21), Statistics(X) + : : : : : : +- NativeShuffleExchange (20) + : : : : : : +- NativeProject (19) + : : : : : : +- NativeFilter (18) + : : : : : : +- InputAdapter (17) + : : : : : : +- NativeParquetScan (16) + : : : : : +- NativeSort (40) + : : : : : +- InputAdapter (39) + : : : : : +- AQEShuffleRead (38) + : : : : : +- ShuffleQueryStage (37), Statistics(X) + : : : : : +- NativeShuffleExchange (36) + : : : : : +- NativeProject (35) + : : : : : +- NativeFilter (34) + : : : : : +- InputAdapter (33) + : : : : : +- NativeParquetScan (32) + : : : : +- NativeSort (55) + : : : : +- InputAdapter (54) + : : : : +- AQEShuffleRead (53) + : : : : +- ShuffleQueryStage (52), Statistics(X) + : : : : +- NativeShuffleExchange (51) + : : : : +- NativeFilter (50) + : : : : +- InputAdapter (49) + : : : : +- NativeParquetScan (48) + : : : +- NativeSort (69) + : : : +- InputAdapter (68) + : : : +- AQEShuffleRead (67) + : : : +- ShuffleQueryStage (66), Statistics(X) + : : : +- NativeShuffleExchange (65) + : : : +- NativeFilter (64) + : : : +- InputAdapter (63) + : : : +- NativeParquetScan (62) + : : +- NativeSort (84) + : : +- InputAdapter (83) + : : +- AQEShuffleRead (82) + : : +- ShuffleQueryStage (81), Statistics(X) + : : +- NativeShuffleExchange (80) + : : +- NativeFilter (79) + : : +- InputAdapter (78) + : : +- NativeParquetScan (77) + : +- NativeSort (99) + : +- InputAdapter (98) + : +- AQEShuffleRead (97) + : +- ShuffleQueryStage (96), Statistics(X) + : +- NativeShuffleExchange (95) + : +- NativeFilter (94) + : +- InputAdapter (93) + : +- NativeParquetScan (92) + +- NativeSort (115) + +- InputAdapter (114) + +- AQEShuffleRead (113) + +- ShuffleQueryStage (112), Statistics(X) + +- NativeShuffleExchange (111) + +- NativeProject (110) + +- NativeFilter (109) + +- InputAdapter (108) + +- NativeParquetScan (107) ++- == Initial Plan == + TakeOrderedAndProject (206) + +- HashAggregate (205) + +- Exchange (204) + +- HashAggregate (203) + +- HashAggregate (202) + +- Exchange (201) + +- HashAggregate (200) + +- Project (199) + +- SortMergeJoin Inner (198) + :- Sort (192) + : +- Exchange (191) + : +- Project (190) + : +- SortMergeJoin Inner (189) + : :- Sort (184) + : : +- Exchange (183) + : : +- Project (182) + : : +- SortMergeJoin Inner (181) + : : :- Sort (176) + : : : +- Exchange (175) + : : : +- Project (174) + : : : +- SortMergeJoin Inner (173) + : : : :- Sort (168) + : : : : +- HashAggregate (167) + : : : : +- HashAggregate (166) + : : : : +- Project (165) + : : : : +- SortMergeJoin Inner (164) + : : : : :- Sort (159) + : : : : : +- Exchange (158) + : : : : : +- Project (157) + : : : : : +- SortMergeJoin Inner (156) + : : : : : :- Sort (150) + : : : : : : +- Exchange (149) + : : : : : : +- Project (148) + : : : : : : +- SortMergeJoin Inner (147) + : : : : : : :- Sort (141) + : : : : : : : +- Exchange (140) + : : : : : : : +- Union (139) + : : : : : : : :- Project (135) + : : : : : : : : +- Filter (134) + : : : : : : : : +- Scan parquet (133) + : : : : : : : +- Project (138) + : : : : : : : +- Filter (137) + : : : : : : : +- Scan parquet (136) + : : : : : : +- Sort (146) + : : : : : : +- Exchange (145) + : : : : : : +- Project (144) + : : : : : : +- Filter (143) + : : : : : : +- Scan parquet (142) + : : : : : +- Sort (155) + : : : : : +- Exchange (154) + : : : : : +- Project (153) + : : : : : +- Filter (152) + : : : : : +- Scan parquet (151) + : : : : +- Sort (163) + : : : : +- Exchange (162) + : : : : +- Filter (161) + : : : : +- Scan parquet (160) + : : : +- Sort (172) + : : : +- Exchange (171) + : : : +- Filter (170) + : : : +- Scan parquet (169) + : : +- Sort (180) + : : +- Exchange (179) + : : +- Filter (178) + : : +- Scan parquet (177) + : +- Sort (188) + : +- Exchange (187) + : +- Filter (186) + : +- Scan parquet (185) + +- Sort (197) + +- Exchange (196) + +- Project (195) + +- Filter (194) + +- Scan parquet (193) + + +(133) Scan parquet +Output [3]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_item_sk#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk), IsNotNull(cs_bill_customer_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_item_sk#3] +Arguments: [#1, #2, #3] + +(3) NativeFilter +Input [3]: [#1#1, #2#2, #3#3] +Condition : ((isnotnull(cs_item_sk#3) AND isnotnull(cs_sold_date_sk#1)) AND isnotnull(cs_bill_customer_sk#2)) + +(4) NativeProject +Output [3]: [cs_sold_date_sk#1 AS sold_date_sk#4, cs_bill_customer_sk#2 AS customer_sk#5, cs_item_sk#3 AS item_sk#6] +Input [3]: [#1#1, #2#2, #3#3] + +(136) Scan parquet +Output [3]: [ws_sold_date_sk#7, ws_item_sk#8, ws_bill_customer_sk#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_sold_date_sk), IsNotNull(ws_bill_customer_sk)] +ReadSchema: struct + +(6) InputAdapter +Input [3]: [ws_sold_date_sk#7, ws_item_sk#8, ws_bill_customer_sk#9] +Arguments: [#7, #8, #9] + +(7) NativeFilter +Input [3]: [#7#7, #8#8, #9#9] +Condition : ((isnotnull(ws_item_sk#8) AND isnotnull(ws_sold_date_sk#7)) AND isnotnull(ws_bill_customer_sk#9)) + +(8) NativeProject +Output [3]: [ws_sold_date_sk#7 AS sold_date_sk#10, ws_bill_customer_sk#9 AS customer_sk#11, ws_item_sk#8 AS item_sk#12] +Input [3]: [#7#7, #8#8, #9#9] + +(9) NativeUnion +Arguments: [sold_date_sk#4, customer_sk#5, item_sk#6] + +(10) InputAdapter +Input [3]: [sold_date_sk#4, customer_sk#5, item_sk#6] +Arguments: [#4, #5, #6] + +(11) NativeShuffleExchange +Input [3]: [#4#4, #5#5, #6#6] +Arguments: hashpartitioning(item_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(12) ShuffleQueryStage +Output [3]: [#4#4, #5#5, #6#6] +Arguments: X + +(13) AQEShuffleRead +Input [3]: [#4#4, #5#5, #6#6] +Arguments: coalesced + +(14) InputAdapter +Input [3]: [#4#4, #5#5, #6#6] + +(15) NativeSort +Input [3]: [#4#4, #5#5, #6#6] +Arguments: [item_sk#6 ASC NULLS FIRST], false + +(142) Scan parquet +Output [3]: [i_item_sk#13, i_class#14, i_category#15] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_category), IsNotNull(i_class), EqualTo(i_category,Women), EqualTo(i_class,maternity), IsNotNull(i_item_sk)] +ReadSchema: struct + +(17) InputAdapter +Input [3]: [i_item_sk#13, i_class#14, i_category#15] +Arguments: [#13, #14, #15] + +(18) NativeFilter +Input [3]: [#13#13, #14#14, #15#15] +Condition : ((((isnotnull(i_category#15) AND isnotnull(i_class#14)) AND (i_category#15 = Women)) AND (i_class#14 = maternity)) AND isnotnull(i_item_sk#13)) + +(19) NativeProject +Output [1]: [i_item_sk#13] +Input [3]: [#13#13, #14#14, #15#15] + +(20) NativeShuffleExchange +Input [1]: [i_item_sk#13] +Arguments: hashpartitioning(i_item_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(21) ShuffleQueryStage +Output [1]: [i_item_sk#13] +Arguments: X + +(22) AQEShuffleRead +Input [1]: [i_item_sk#13] +Arguments: coalesced + +(23) InputAdapter +Input [1]: [i_item_sk#13] + +(24) NativeSort +Input [1]: [i_item_sk#13] +Arguments: [i_item_sk#13 ASC NULLS FIRST], false + +(25) NativeSortMergeJoin +Left keys [1]: [item_sk#6] +Right keys [1]: [i_item_sk#13] +Join type: Inner +Join condition: None + +(26) NativeProject +Output [2]: [sold_date_sk#4, customer_sk#5] +Input [4]: [#4#4, #5#5, #6#6, i_item_sk#13] + +(27) NativeShuffleExchange +Input [2]: [sold_date_sk#4, customer_sk#5] +Arguments: hashpartitioning(sold_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(28) ShuffleQueryStage +Output [2]: [sold_date_sk#4, customer_sk#5] +Arguments: X + +(29) AQEShuffleRead +Input [2]: [sold_date_sk#4, customer_sk#5] +Arguments: coalesced + +(30) InputAdapter +Input [2]: [sold_date_sk#4, customer_sk#5] + +(31) NativeSort +Input [2]: [sold_date_sk#4, customer_sk#5] +Arguments: [sold_date_sk#4 ASC NULLS FIRST], false + +(151) Scan parquet +Output [3]: [d_date_sk#16, d_year#17, d_moy#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_moy), IsNotNull(d_year), EqualTo(d_moy,12), EqualTo(d_year,1998), IsNotNull(d_date_sk)] +ReadSchema: struct + +(33) InputAdapter +Input [3]: [d_date_sk#16, d_year#17, d_moy#18] +Arguments: [#16, #17, #18] + +(34) NativeFilter +Input [3]: [#16#16, #17#17, #18#18] +Condition : ((((isnotnull(d_moy#18) AND isnotnull(d_year#17)) AND (d_moy#18 = 12)) AND (d_year#17 = 1998)) AND isnotnull(d_date_sk#16)) + +(35) NativeProject +Output [1]: [d_date_sk#16] +Input [3]: [#16#16, #17#17, #18#18] + +(36) NativeShuffleExchange +Input [1]: [d_date_sk#16] +Arguments: hashpartitioning(d_date_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(37) ShuffleQueryStage +Output [1]: [d_date_sk#16] +Arguments: X + +(38) AQEShuffleRead +Input [1]: [d_date_sk#16] +Arguments: coalesced + +(39) InputAdapter +Input [1]: [d_date_sk#16] + +(40) NativeSort +Input [1]: [d_date_sk#16] +Arguments: [d_date_sk#16 ASC NULLS FIRST], false + +(41) NativeSortMergeJoin +Left keys [1]: [sold_date_sk#4] +Right keys [1]: [d_date_sk#16] +Join type: Inner +Join condition: None + +(42) NativeProject +Output [1]: [customer_sk#5] +Input [3]: [sold_date_sk#4, customer_sk#5, d_date_sk#16] + +(43) NativeShuffleExchange +Input [1]: [customer_sk#5] +Arguments: hashpartitioning(customer_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(44) ShuffleQueryStage +Output [1]: [customer_sk#5] +Arguments: X + +(45) AQEShuffleRead +Input [1]: [customer_sk#5] +Arguments: coalesced + +(46) InputAdapter +Input [1]: [customer_sk#5] + +(47) NativeSort +Input [1]: [customer_sk#5] +Arguments: [customer_sk#5 ASC NULLS FIRST], false + +(160) Scan parquet +Output [2]: [c_customer_sk#19, c_current_addr_sk#20] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_current_addr_sk)] +ReadSchema: struct + +(49) InputAdapter +Input [2]: [c_customer_sk#19, c_current_addr_sk#20] +Arguments: [#19, #20] + +(50) NativeFilter +Input [2]: [#19#19, #20#20] +Condition : (isnotnull(c_customer_sk#19) AND isnotnull(c_current_addr_sk#20)) + +(51) NativeShuffleExchange +Input [2]: [#19#19, #20#20] +Arguments: hashpartitioning(c_customer_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(52) ShuffleQueryStage +Output [2]: [#19#19, #20#20] +Arguments: X + +(53) AQEShuffleRead +Input [2]: [#19#19, #20#20] +Arguments: coalesced + +(54) InputAdapter +Input [2]: [#19#19, #20#20] + +(55) NativeSort +Input [2]: [#19#19, #20#20] +Arguments: [c_customer_sk#19 ASC NULLS FIRST], false + +(56) NativeSortMergeJoin +Left keys [1]: [customer_sk#5] +Right keys [1]: [c_customer_sk#19] +Join type: Inner +Join condition: None + +(57) NativeProject +Output [2]: [c_customer_sk#19, c_current_addr_sk#20] +Input [3]: [customer_sk#5, #19#19, #20#20] + +(58) NativeHashAggregate +Input [2]: [c_customer_sk#19, c_current_addr_sk#20] +Keys [2]: [c_customer_sk#19, c_current_addr_sk#20] +Functions: [] +Aggregate Attributes: [] +Results [3]: [c_customer_sk#19, c_current_addr_sk#20, #21#21] + +(59) NativeHashAggregate +Input [3]: [c_customer_sk#19, c_current_addr_sk#20, #21#21] +Keys [2]: [c_customer_sk#19, c_current_addr_sk#20] +Functions: [] +Aggregate Attributes: [] +Results [3]: [c_customer_sk#19, c_current_addr_sk#20, #21#21] + +(60) NativeProject +Output [2]: [c_customer_sk#19, c_current_addr_sk#20] +Input [3]: [c_customer_sk#19, c_current_addr_sk#20, #21#21] + +(61) NativeSort +Input [2]: [c_customer_sk#19, c_current_addr_sk#20] +Arguments: [c_customer_sk#19 ASC NULLS FIRST], false + +(169) Scan parquet +Output [3]: [ss_sold_date_sk#22, ss_customer_sk#23, ss_ext_sales_price#24] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(63) InputAdapter +Input [3]: [ss_sold_date_sk#22, ss_customer_sk#23, ss_ext_sales_price#24] +Arguments: [#22, #23, #24] + +(64) NativeFilter +Input [3]: [#22#22, #23#23, #24#24] +Condition : (isnotnull(ss_customer_sk#23) AND isnotnull(ss_sold_date_sk#22)) + +(65) NativeShuffleExchange +Input [3]: [#22#22, #23#23, #24#24] +Arguments: hashpartitioning(ss_customer_sk#23, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(66) ShuffleQueryStage +Output [3]: [#22#22, #23#23, #24#24] +Arguments: X + +(67) AQEShuffleRead +Input [3]: [#22#22, #23#23, #24#24] +Arguments: coalesced + +(68) InputAdapter +Input [3]: [#22#22, #23#23, #24#24] + +(69) NativeSort +Input [3]: [#22#22, #23#23, #24#24] +Arguments: [ss_customer_sk#23 ASC NULLS FIRST], false + +(70) NativeSortMergeJoin +Left keys [1]: [c_customer_sk#19] +Right keys [1]: [ss_customer_sk#23] +Join type: Inner +Join condition: None + +(71) NativeProject +Output [4]: [c_customer_sk#19, c_current_addr_sk#20, ss_sold_date_sk#22, ss_ext_sales_price#24] +Input [5]: [c_customer_sk#19, c_current_addr_sk#20, #22#22, #23#23, #24#24] + +(72) NativeShuffleExchange +Input [4]: [c_customer_sk#19, c_current_addr_sk#20, ss_sold_date_sk#22, ss_ext_sales_price#24] +Arguments: hashpartitioning(c_current_addr_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(73) ShuffleQueryStage +Output [4]: [c_customer_sk#19, c_current_addr_sk#20, ss_sold_date_sk#22, ss_ext_sales_price#24] +Arguments: X + +(74) AQEShuffleRead +Input [4]: [c_customer_sk#19, c_current_addr_sk#20, ss_sold_date_sk#22, ss_ext_sales_price#24] +Arguments: coalesced + +(75) InputAdapter +Input [4]: [c_customer_sk#19, c_current_addr_sk#20, ss_sold_date_sk#22, ss_ext_sales_price#24] + +(76) NativeSort +Input [4]: [c_customer_sk#19, c_current_addr_sk#20, ss_sold_date_sk#22, ss_ext_sales_price#24] +Arguments: [c_current_addr_sk#20 ASC NULLS FIRST], false + +(177) Scan parquet +Output [3]: [ca_address_sk#25, ca_county#26, ca_state#27] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_county), IsNotNull(ca_state)] +ReadSchema: struct + +(78) InputAdapter +Input [3]: [ca_address_sk#25, ca_county#26, ca_state#27] +Arguments: [#25, #26, #27] + +(79) NativeFilter +Input [3]: [#25#25, #26#26, #27#27] +Condition : ((isnotnull(ca_address_sk#25) AND isnotnull(ca_county#26)) AND isnotnull(ca_state#27)) + +(80) NativeShuffleExchange +Input [3]: [#25#25, #26#26, #27#27] +Arguments: hashpartitioning(ca_address_sk#25, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(81) ShuffleQueryStage +Output [3]: [#25#25, #26#26, #27#27] +Arguments: X + +(82) AQEShuffleRead +Input [3]: [#25#25, #26#26, #27#27] +Arguments: coalesced + +(83) InputAdapter +Input [3]: [#25#25, #26#26, #27#27] + +(84) NativeSort +Input [3]: [#25#25, #26#26, #27#27] +Arguments: [ca_address_sk#25 ASC NULLS FIRST], false + +(85) NativeSortMergeJoin +Left keys [1]: [c_current_addr_sk#20] +Right keys [1]: [ca_address_sk#25] +Join type: Inner +Join condition: None + +(86) NativeProject +Output [5]: [c_customer_sk#19, ss_sold_date_sk#22, ss_ext_sales_price#24, ca_county#26, ca_state#27] +Input [7]: [c_customer_sk#19, c_current_addr_sk#20, ss_sold_date_sk#22, ss_ext_sales_price#24, #25#25, #26#26, #27#27] + +(87) NativeShuffleExchange +Input [5]: [c_customer_sk#19, ss_sold_date_sk#22, ss_ext_sales_price#24, ca_county#26, ca_state#27] +Arguments: hashpartitioning(ca_county#26, ca_state#27, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(88) ShuffleQueryStage +Output [5]: [c_customer_sk#19, ss_sold_date_sk#22, ss_ext_sales_price#24, ca_county#26, ca_state#27] +Arguments: X + +(89) AQEShuffleRead +Input [5]: [c_customer_sk#19, ss_sold_date_sk#22, ss_ext_sales_price#24, ca_county#26, ca_state#27] +Arguments: coalesced + +(90) InputAdapter +Input [5]: [c_customer_sk#19, ss_sold_date_sk#22, ss_ext_sales_price#24, ca_county#26, ca_state#27] + +(91) NativeSort +Input [5]: [c_customer_sk#19, ss_sold_date_sk#22, ss_ext_sales_price#24, ca_county#26, ca_state#27] +Arguments: [ca_county#26 ASC NULLS FIRST, ca_state#27 ASC NULLS FIRST], false + +(185) Scan parquet +Output [2]: [s_county#28, s_state#29] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_county), IsNotNull(s_state)] +ReadSchema: struct + +(93) InputAdapter +Input [2]: [s_county#28, s_state#29] +Arguments: [#28, #29] + +(94) NativeFilter +Input [2]: [#28#28, #29#29] +Condition : (isnotnull(s_county#28) AND isnotnull(s_state#29)) + +(95) NativeShuffleExchange +Input [2]: [#28#28, #29#29] +Arguments: hashpartitioning(s_county#28, s_state#29, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(96) ShuffleQueryStage +Output [2]: [#28#28, #29#29] +Arguments: X + +(97) AQEShuffleRead +Input [2]: [#28#28, #29#29] +Arguments: coalesced + +(98) InputAdapter +Input [2]: [#28#28, #29#29] + +(99) NativeSort +Input [2]: [#28#28, #29#29] +Arguments: [s_county#28 ASC NULLS FIRST, s_state#29 ASC NULLS FIRST], false + +(100) NativeSortMergeJoin +Left keys [2]: [ca_county#26, ca_state#27] +Right keys [2]: [s_county#28, s_state#29] +Join type: Inner +Join condition: None + +(101) NativeProject +Output [3]: [c_customer_sk#19, ss_sold_date_sk#22, ss_ext_sales_price#24] +Input [7]: [c_customer_sk#19, ss_sold_date_sk#22, ss_ext_sales_price#24, ca_county#26, ca_state#27, #28#28, #29#29] + +(102) NativeShuffleExchange +Input [3]: [c_customer_sk#19, ss_sold_date_sk#22, ss_ext_sales_price#24] +Arguments: hashpartitioning(ss_sold_date_sk#22, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(103) ShuffleQueryStage +Output [3]: [c_customer_sk#19, ss_sold_date_sk#22, ss_ext_sales_price#24] +Arguments: X + +(104) AQEShuffleRead +Input [3]: [c_customer_sk#19, ss_sold_date_sk#22, ss_ext_sales_price#24] +Arguments: coalesced + +(105) InputAdapter +Input [3]: [c_customer_sk#19, ss_sold_date_sk#22, ss_ext_sales_price#24] + +(106) NativeSort +Input [3]: [c_customer_sk#19, ss_sold_date_sk#22, ss_ext_sales_price#24] +Arguments: [ss_sold_date_sk#22 ASC NULLS FIRST], false + +(193) Scan parquet +Output [2]: [d_date_sk#30, d_month_seq#31] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), IsNotNull(d_date_sk)] +ReadSchema: struct + +(108) InputAdapter +Input [2]: [d_date_sk#30, d_month_seq#31] +Arguments: [#30, #31] + +(109) NativeFilter +Input [2]: [#30#30, #31#31] +Condition : (((isnotnull(d_month_seq#31) AND (d_month_seq#31 >= Subquery subquery#32, [id=#33])) AND (d_month_seq#31 <= Subquery subquery#34, [id=#35])) AND isnotnull(d_date_sk#30)) + +(110) NativeProject +Output [1]: [d_date_sk#30] +Input [2]: [#30#30, #31#31] + +(111) NativeShuffleExchange +Input [1]: [d_date_sk#30] +Arguments: hashpartitioning(d_date_sk#30, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(112) ShuffleQueryStage +Output [1]: [d_date_sk#30] +Arguments: X + +(113) AQEShuffleRead +Input [1]: [d_date_sk#30] +Arguments: coalesced + +(114) InputAdapter +Input [1]: [d_date_sk#30] + +(115) NativeSort +Input [1]: [d_date_sk#30] +Arguments: [d_date_sk#30 ASC NULLS FIRST], false + +(116) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#22] +Right keys [1]: [d_date_sk#30] +Join type: Inner +Join condition: None + +(117) NativeProject +Output [2]: [c_customer_sk#19, ss_ext_sales_price#24] +Input [4]: [c_customer_sk#19, ss_sold_date_sk#22, ss_ext_sales_price#24, d_date_sk#30] + +(118) NativeProject +Output [2]: [c_customer_sk#19 AS c_customer_sk#19, UnscaledValue(ss_ext_sales_price#24) AS _c1#36] +Input [2]: [c_customer_sk#19, ss_ext_sales_price#24] + +(119) NativeHashAggregate +Input [2]: [c_customer_sk#19, _c1#36] +Keys [1]: [c_customer_sk#19] +Functions [1]: [partial_sum(_c1#36)] +Aggregate Attributes [1]: [sum#37] +Results [2]: [c_customer_sk#19, #21#21] + +(120) NativeShuffleExchange +Input [2]: [c_customer_sk#19, #21#21] +Arguments: hashpartitioning(c_customer_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(121) ShuffleQueryStage +Output [2]: [c_customer_sk#19, #21#21] +Arguments: X + +(122) AQEShuffleRead +Input [2]: [c_customer_sk#19, #21#21] +Arguments: coalesced + +(123) InputAdapter +Input [2]: [c_customer_sk#19, #21#21] + +(124) NativeHashAggregate +Input [2]: [c_customer_sk#19, #21#21] +Keys [1]: [c_customer_sk#19] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#24))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#24))#38] +Results [2]: [c_customer_sk#19, sum(UnscaledValue(ss_ext_sales_price#24))#38] + +(125) NativeProject +Output [1]: [cast((MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#24))#38,17,2) / 50) as int) AS segment#39] +Input [2]: [c_customer_sk#19, sum(UnscaledValue(ss_ext_sales_price#24))#38] + +(126) NativeHashAggregate +Input [1]: [segment#39] +Keys [1]: [segment#39] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#40] +Results [2]: [segment#39, #21#21] + +(127) NativeShuffleExchange +Input [2]: [segment#39, #21#21] +Arguments: hashpartitioning(segment#39, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(128) ShuffleQueryStage +Output [2]: [segment#39, #21#21] +Arguments: X + +(129) AQEShuffleRead +Input [2]: [segment#39, #21#21] +Arguments: coalesced + +(130) InputAdapter +Input [2]: [segment#39, #21#21] + +(131) NativeHashAggregate +Input [2]: [segment#39, #21#21] +Keys [1]: [segment#39] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#41] +Results [2]: [segment#39, count(1)#41] + +(132) NativeProject +Output [3]: [segment#39, count(1)#41 AS num_customers#42, (segment#39 * 50) AS segment_base#43] +Input [2]: [segment#39, count(1)#41] + +(133) Scan parquet +Output [3]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_item_sk#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk), IsNotNull(cs_bill_customer_sk)] +ReadSchema: struct + +(134) Filter +Input [3]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_item_sk#3] +Condition : ((isnotnull(cs_item_sk#3) AND isnotnull(cs_sold_date_sk#1)) AND isnotnull(cs_bill_customer_sk#2)) + +(135) Project +Output [3]: [cs_sold_date_sk#1 AS sold_date_sk#4, cs_bill_customer_sk#2 AS customer_sk#5, cs_item_sk#3 AS item_sk#6] +Input [3]: [cs_sold_date_sk#1, cs_bill_customer_sk#2, cs_item_sk#3] + +(136) Scan parquet +Output [3]: [ws_sold_date_sk#7, ws_item_sk#8, ws_bill_customer_sk#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_sold_date_sk), IsNotNull(ws_bill_customer_sk)] +ReadSchema: struct + +(137) Filter +Input [3]: [ws_sold_date_sk#7, ws_item_sk#8, ws_bill_customer_sk#9] +Condition : ((isnotnull(ws_item_sk#8) AND isnotnull(ws_sold_date_sk#7)) AND isnotnull(ws_bill_customer_sk#9)) + +(138) Project +Output [3]: [ws_sold_date_sk#7 AS sold_date_sk#10, ws_bill_customer_sk#9 AS customer_sk#11, ws_item_sk#8 AS item_sk#12] +Input [3]: [ws_sold_date_sk#7, ws_item_sk#8, ws_bill_customer_sk#9] + +(139) Union + +(140) Exchange +Input [3]: [sold_date_sk#4, customer_sk#5, item_sk#6] +Arguments: hashpartitioning(item_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(141) Sort +Input [3]: [sold_date_sk#4, customer_sk#5, item_sk#6] +Arguments: [item_sk#6 ASC NULLS FIRST], false, 0 + +(142) Scan parquet +Output [3]: [i_item_sk#13, i_class#14, i_category#15] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_category), IsNotNull(i_class), EqualTo(i_category,Women), EqualTo(i_class,maternity), IsNotNull(i_item_sk)] +ReadSchema: struct + +(143) Filter +Input [3]: [i_item_sk#13, i_class#14, i_category#15] +Condition : ((((isnotnull(i_category#15) AND isnotnull(i_class#14)) AND (i_category#15 = Women)) AND (i_class#14 = maternity)) AND isnotnull(i_item_sk#13)) + +(144) Project +Output [1]: [i_item_sk#13] +Input [3]: [i_item_sk#13, i_class#14, i_category#15] + +(145) Exchange +Input [1]: [i_item_sk#13] +Arguments: hashpartitioning(i_item_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(146) Sort +Input [1]: [i_item_sk#13] +Arguments: [i_item_sk#13 ASC NULLS FIRST], false, 0 + +(147) SortMergeJoin +Left keys [1]: [item_sk#6] +Right keys [1]: [i_item_sk#13] +Join type: Inner +Join condition: None + +(148) Project +Output [2]: [sold_date_sk#4, customer_sk#5] +Input [4]: [sold_date_sk#4, customer_sk#5, item_sk#6, i_item_sk#13] + +(149) Exchange +Input [2]: [sold_date_sk#4, customer_sk#5] +Arguments: hashpartitioning(sold_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(150) Sort +Input [2]: [sold_date_sk#4, customer_sk#5] +Arguments: [sold_date_sk#4 ASC NULLS FIRST], false, 0 + +(151) Scan parquet +Output [3]: [d_date_sk#16, d_year#17, d_moy#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_moy), IsNotNull(d_year), EqualTo(d_moy,12), EqualTo(d_year,1998), IsNotNull(d_date_sk)] +ReadSchema: struct + +(152) Filter +Input [3]: [d_date_sk#16, d_year#17, d_moy#18] +Condition : ((((isnotnull(d_moy#18) AND isnotnull(d_year#17)) AND (d_moy#18 = 12)) AND (d_year#17 = 1998)) AND isnotnull(d_date_sk#16)) + +(153) Project +Output [1]: [d_date_sk#16] +Input [3]: [d_date_sk#16, d_year#17, d_moy#18] + +(154) Exchange +Input [1]: [d_date_sk#16] +Arguments: hashpartitioning(d_date_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(155) Sort +Input [1]: [d_date_sk#16] +Arguments: [d_date_sk#16 ASC NULLS FIRST], false, 0 + +(156) SortMergeJoin +Left keys [1]: [sold_date_sk#4] +Right keys [1]: [d_date_sk#16] +Join type: Inner +Join condition: None + +(157) Project +Output [1]: [customer_sk#5] +Input [3]: [sold_date_sk#4, customer_sk#5, d_date_sk#16] + +(158) Exchange +Input [1]: [customer_sk#5] +Arguments: hashpartitioning(customer_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(159) Sort +Input [1]: [customer_sk#5] +Arguments: [customer_sk#5 ASC NULLS FIRST], false, 0 + +(160) Scan parquet +Output [2]: [c_customer_sk#19, c_current_addr_sk#20] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_current_addr_sk)] +ReadSchema: struct + +(161) Filter +Input [2]: [c_customer_sk#19, c_current_addr_sk#20] +Condition : (isnotnull(c_customer_sk#19) AND isnotnull(c_current_addr_sk#20)) + +(162) Exchange +Input [2]: [c_customer_sk#19, c_current_addr_sk#20] +Arguments: hashpartitioning(c_customer_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(163) Sort +Input [2]: [c_customer_sk#19, c_current_addr_sk#20] +Arguments: [c_customer_sk#19 ASC NULLS FIRST], false, 0 + +(164) SortMergeJoin +Left keys [1]: [customer_sk#5] +Right keys [1]: [c_customer_sk#19] +Join type: Inner +Join condition: None + +(165) Project +Output [2]: [c_customer_sk#19, c_current_addr_sk#20] +Input [3]: [customer_sk#5, c_customer_sk#19, c_current_addr_sk#20] + +(166) HashAggregate +Input [2]: [c_customer_sk#19, c_current_addr_sk#20] +Keys [2]: [c_customer_sk#19, c_current_addr_sk#20] +Functions: [] +Aggregate Attributes: [] +Results [2]: [c_customer_sk#19, c_current_addr_sk#20] + +(167) HashAggregate +Input [2]: [c_customer_sk#19, c_current_addr_sk#20] +Keys [2]: [c_customer_sk#19, c_current_addr_sk#20] +Functions: [] +Aggregate Attributes: [] +Results [2]: [c_customer_sk#19, c_current_addr_sk#20] + +(168) Sort +Input [2]: [c_customer_sk#19, c_current_addr_sk#20] +Arguments: [c_customer_sk#19 ASC NULLS FIRST], false, 0 + +(169) Scan parquet +Output [3]: [ss_sold_date_sk#22, ss_customer_sk#23, ss_ext_sales_price#24] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(170) Filter +Input [3]: [ss_sold_date_sk#22, ss_customer_sk#23, ss_ext_sales_price#24] +Condition : (isnotnull(ss_customer_sk#23) AND isnotnull(ss_sold_date_sk#22)) + +(171) Exchange +Input [3]: [ss_sold_date_sk#22, ss_customer_sk#23, ss_ext_sales_price#24] +Arguments: hashpartitioning(ss_customer_sk#23, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(172) Sort +Input [3]: [ss_sold_date_sk#22, ss_customer_sk#23, ss_ext_sales_price#24] +Arguments: [ss_customer_sk#23 ASC NULLS FIRST], false, 0 + +(173) SortMergeJoin +Left keys [1]: [c_customer_sk#19] +Right keys [1]: [ss_customer_sk#23] +Join type: Inner +Join condition: None + +(174) Project +Output [4]: [c_customer_sk#19, c_current_addr_sk#20, ss_sold_date_sk#22, ss_ext_sales_price#24] +Input [5]: [c_customer_sk#19, c_current_addr_sk#20, ss_sold_date_sk#22, ss_customer_sk#23, ss_ext_sales_price#24] + +(175) Exchange +Input [4]: [c_customer_sk#19, c_current_addr_sk#20, ss_sold_date_sk#22, ss_ext_sales_price#24] +Arguments: hashpartitioning(c_current_addr_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(176) Sort +Input [4]: [c_customer_sk#19, c_current_addr_sk#20, ss_sold_date_sk#22, ss_ext_sales_price#24] +Arguments: [c_current_addr_sk#20 ASC NULLS FIRST], false, 0 + +(177) Scan parquet +Output [3]: [ca_address_sk#25, ca_county#26, ca_state#27] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_county), IsNotNull(ca_state)] +ReadSchema: struct + +(178) Filter +Input [3]: [ca_address_sk#25, ca_county#26, ca_state#27] +Condition : ((isnotnull(ca_address_sk#25) AND isnotnull(ca_county#26)) AND isnotnull(ca_state#27)) + +(179) Exchange +Input [3]: [ca_address_sk#25, ca_county#26, ca_state#27] +Arguments: hashpartitioning(ca_address_sk#25, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(180) Sort +Input [3]: [ca_address_sk#25, ca_county#26, ca_state#27] +Arguments: [ca_address_sk#25 ASC NULLS FIRST], false, 0 + +(181) SortMergeJoin +Left keys [1]: [c_current_addr_sk#20] +Right keys [1]: [ca_address_sk#25] +Join type: Inner +Join condition: None + +(182) Project +Output [5]: [c_customer_sk#19, ss_sold_date_sk#22, ss_ext_sales_price#24, ca_county#26, ca_state#27] +Input [7]: [c_customer_sk#19, c_current_addr_sk#20, ss_sold_date_sk#22, ss_ext_sales_price#24, ca_address_sk#25, ca_county#26, ca_state#27] + +(183) Exchange +Input [5]: [c_customer_sk#19, ss_sold_date_sk#22, ss_ext_sales_price#24, ca_county#26, ca_state#27] +Arguments: hashpartitioning(ca_county#26, ca_state#27, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(184) Sort +Input [5]: [c_customer_sk#19, ss_sold_date_sk#22, ss_ext_sales_price#24, ca_county#26, ca_state#27] +Arguments: [ca_county#26 ASC NULLS FIRST, ca_state#27 ASC NULLS FIRST], false, 0 + +(185) Scan parquet +Output [2]: [s_county#28, s_state#29] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_county), IsNotNull(s_state)] +ReadSchema: struct + +(186) Filter +Input [2]: [s_county#28, s_state#29] +Condition : (isnotnull(s_county#28) AND isnotnull(s_state#29)) + +(187) Exchange +Input [2]: [s_county#28, s_state#29] +Arguments: hashpartitioning(s_county#28, s_state#29, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(188) Sort +Input [2]: [s_county#28, s_state#29] +Arguments: [s_county#28 ASC NULLS FIRST, s_state#29 ASC NULLS FIRST], false, 0 + +(189) SortMergeJoin +Left keys [2]: [ca_county#26, ca_state#27] +Right keys [2]: [s_county#28, s_state#29] +Join type: Inner +Join condition: None + +(190) Project +Output [3]: [c_customer_sk#19, ss_sold_date_sk#22, ss_ext_sales_price#24] +Input [7]: [c_customer_sk#19, ss_sold_date_sk#22, ss_ext_sales_price#24, ca_county#26, ca_state#27, s_county#28, s_state#29] + +(191) Exchange +Input [3]: [c_customer_sk#19, ss_sold_date_sk#22, ss_ext_sales_price#24] +Arguments: hashpartitioning(ss_sold_date_sk#22, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(192) Sort +Input [3]: [c_customer_sk#19, ss_sold_date_sk#22, ss_ext_sales_price#24] +Arguments: [ss_sold_date_sk#22 ASC NULLS FIRST], false, 0 + +(193) Scan parquet +Output [2]: [d_date_sk#30, d_month_seq#31] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), IsNotNull(d_date_sk)] +ReadSchema: struct + +(194) Filter +Input [2]: [d_date_sk#30, d_month_seq#31] +Condition : (((isnotnull(d_month_seq#31) AND (d_month_seq#31 >= Subquery subquery#32, [id=#33])) AND (d_month_seq#31 <= Subquery subquery#34, [id=#35])) AND isnotnull(d_date_sk#30)) + +(195) Project +Output [1]: [d_date_sk#30] +Input [2]: [d_date_sk#30, d_month_seq#31] + +(196) Exchange +Input [1]: [d_date_sk#30] +Arguments: hashpartitioning(d_date_sk#30, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(197) Sort +Input [1]: [d_date_sk#30] +Arguments: [d_date_sk#30 ASC NULLS FIRST], false, 0 + +(198) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#22] +Right keys [1]: [d_date_sk#30] +Join type: Inner +Join condition: None + +(199) Project +Output [2]: [c_customer_sk#19, ss_ext_sales_price#24] +Input [4]: [c_customer_sk#19, ss_sold_date_sk#22, ss_ext_sales_price#24, d_date_sk#30] + +(200) HashAggregate +Input [2]: [c_customer_sk#19, ss_ext_sales_price#24] +Keys [1]: [c_customer_sk#19] +Functions [1]: [partial_sum(UnscaledValue(ss_ext_sales_price#24))] +Aggregate Attributes [1]: [sum#37] +Results [2]: [c_customer_sk#19, sum#44] + +(201) Exchange +Input [2]: [c_customer_sk#19, sum#44] +Arguments: hashpartitioning(c_customer_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(202) HashAggregate +Input [2]: [c_customer_sk#19, sum#44] +Keys [1]: [c_customer_sk#19] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#24))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#24))#38] +Results [1]: [cast((MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#24))#38,17,2) / 50) as int) AS segment#39] + +(203) HashAggregate +Input [1]: [segment#39] +Keys [1]: [segment#39] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#40] +Results [2]: [segment#39, count#45] + +(204) Exchange +Input [2]: [segment#39, count#45] +Arguments: hashpartitioning(segment#39, 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(205) HashAggregate +Input [2]: [segment#39, count#45] +Keys [1]: [segment#39] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#41] +Results [3]: [segment#39, count(1)#41 AS num_customers#42, (segment#39 * 50) AS segment_base#43] + +(206) TakeOrderedAndProject +Input [3]: [segment#39, num_customers#42, segment_base#43] +Arguments: X, [segment#39 ASC NULLS FIRST, num_customers#42 ASC NULLS FIRST], [segment#39, num_customers#42, segment_base#43] + +(207) AdaptiveSparkPlan +Output [3]: [segment#39, num_customers#42, segment_base#43] +Arguments: isFinalPlan=true + +===== Subqueries ===== + +Subquery:1 Hosting operator id = 109 Hosting Expression = Subquery subquery#32, [id=#33] +AdaptiveSparkPlan (225) ++- == Final Plan == + NativeProject (218) + +- NativeHashAggregate (217) + +- InputAdapter (216) + +- AQEShuffleRead (215) + +- ShuffleQueryStage (214), Statistics(X) + +- NativeShuffleExchange (213) + +- NativeHashAggregate (212) + +- NativeProject (211) + +- NativeFilter (210) + +- InputAdapter (209) + +- NativeParquetScan (208) ++- == Initial Plan == + HashAggregate (224) + +- Exchange (223) + +- HashAggregate (222) + +- Project (221) + +- Filter (220) + +- Scan parquet (219) + + +(219) Scan parquet +Output [3]: [d_month_seq#46, d_year#47, d_moy#48] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,1998), EqualTo(d_moy,12)] +ReadSchema: struct + +(209) InputAdapter +Input [3]: [d_month_seq#46, d_year#47, d_moy#48] +Arguments: [#46, #47, #48] + +(210) NativeFilter +Input [3]: [#46#46, #47#47, #48#48] +Condition : (((isnotnull(d_year#47) AND isnotnull(d_moy#48)) AND (d_year#47 = 1998)) AND (d_moy#48 = 12)) + +(211) NativeProject +Output [1]: [(d_month_seq#46 + 1) AS (d_month_seq + 1)#49] +Input [3]: [#46#46, #47#47, #48#48] + +(212) NativeHashAggregate +Input [1]: [(d_month_seq + 1)#49] +Keys [1]: [(d_month_seq + 1)#49] +Functions: [] +Aggregate Attributes: [] +Results [2]: [(d_month_seq + 1)#49, #21#21] + +(213) NativeShuffleExchange +Input [2]: [(d_month_seq + 1)#49, #21#21] +Arguments: hashpartitioning((d_month_seq + 1)#49, 100), ENSURE_REQUIREMENTS, [plan_id=31] + +(214) ShuffleQueryStage +Output [2]: [(d_month_seq + 1)#49, #21#21] +Arguments: X + +(215) AQEShuffleRead +Input [2]: [(d_month_seq + 1)#49, #21#21] +Arguments: coalesced + +(216) InputAdapter +Input [2]: [(d_month_seq + 1)#49, #21#21] + +(217) NativeHashAggregate +Input [2]: [(d_month_seq + 1)#49, #21#21] +Keys [1]: [(d_month_seq + 1)#49] +Functions: [] +Aggregate Attributes: [] +Results [2]: [(d_month_seq + 1)#49, #21#21] + +(218) NativeProject +Output [1]: [(d_month_seq + 1)#49] +Input [2]: [(d_month_seq + 1)#49, #21#21] + +(219) Scan parquet +Output [3]: [d_month_seq#46, d_year#47, d_moy#48] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,1998), EqualTo(d_moy,12)] +ReadSchema: struct + +(220) Filter +Input [3]: [d_month_seq#46, d_year#47, d_moy#48] +Condition : (((isnotnull(d_year#47) AND isnotnull(d_moy#48)) AND (d_year#47 = 1998)) AND (d_moy#48 = 12)) + +(221) Project +Output [1]: [(d_month_seq#46 + 1) AS (d_month_seq + 1)#49] +Input [3]: [d_month_seq#46, d_year#47, d_moy#48] + +(222) HashAggregate +Input [1]: [(d_month_seq + 1)#49] +Keys [1]: [(d_month_seq + 1)#49] +Functions: [] +Aggregate Attributes: [] +Results [1]: [(d_month_seq + 1)#49] + +(223) Exchange +Input [1]: [(d_month_seq + 1)#49] +Arguments: hashpartitioning((d_month_seq + 1)#49, 100), ENSURE_REQUIREMENTS, [plan_id=32] + +(224) HashAggregate +Input [1]: [(d_month_seq + 1)#49] +Keys [1]: [(d_month_seq + 1)#49] +Functions: [] +Aggregate Attributes: [] +Results [1]: [(d_month_seq + 1)#49] + +(225) AdaptiveSparkPlan +Output [1]: [(d_month_seq + 1)#49] +Arguments: isFinalPlan=true + +Subquery:2 Hosting operator id = 109 Hosting Expression = Subquery subquery#34, [id=#35] +AdaptiveSparkPlan (243) ++- == Final Plan == + NativeProject (236) + +- NativeHashAggregate (235) + +- InputAdapter (234) + +- AQEShuffleRead (233) + +- ShuffleQueryStage (232), Statistics(X) + +- NativeShuffleExchange (231) + +- NativeHashAggregate (230) + +- NativeProject (229) + +- NativeFilter (228) + +- InputAdapter (227) + +- NativeParquetScan (226) ++- == Initial Plan == + HashAggregate (242) + +- Exchange (241) + +- HashAggregate (240) + +- Project (239) + +- Filter (238) + +- Scan parquet (237) + + +(237) Scan parquet +Output [3]: [d_month_seq#50, d_year#51, d_moy#52] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,1998), EqualTo(d_moy,12)] +ReadSchema: struct + +(227) InputAdapter +Input [3]: [d_month_seq#50, d_year#51, d_moy#52] +Arguments: [#50, #51, #52] + +(228) NativeFilter +Input [3]: [#50#50, #51#51, #52#52] +Condition : (((isnotnull(d_year#51) AND isnotnull(d_moy#52)) AND (d_year#51 = 1998)) AND (d_moy#52 = 12)) + +(229) NativeProject +Output [1]: [(d_month_seq#50 + 3) AS (d_month_seq + 3)#53] +Input [3]: [#50#50, #51#51, #52#52] + +(230) NativeHashAggregate +Input [1]: [(d_month_seq + 3)#53] +Keys [1]: [(d_month_seq + 3)#53] +Functions: [] +Aggregate Attributes: [] +Results [2]: [(d_month_seq + 3)#53, #21#21] + +(231) NativeShuffleExchange +Input [2]: [(d_month_seq + 3)#53, #21#21] +Arguments: hashpartitioning((d_month_seq + 3)#53, 100), ENSURE_REQUIREMENTS, [plan_id=33] + +(232) ShuffleQueryStage +Output [2]: [(d_month_seq + 3)#53, #21#21] +Arguments: X + +(233) AQEShuffleRead +Input [2]: [(d_month_seq + 3)#53, #21#21] +Arguments: coalesced + +(234) InputAdapter +Input [2]: [(d_month_seq + 3)#53, #21#21] + +(235) NativeHashAggregate +Input [2]: [(d_month_seq + 3)#53, #21#21] +Keys [1]: [(d_month_seq + 3)#53] +Functions: [] +Aggregate Attributes: [] +Results [2]: [(d_month_seq + 3)#53, #21#21] + +(236) NativeProject +Output [1]: [(d_month_seq + 3)#53] +Input [2]: [(d_month_seq + 3)#53, #21#21] + +(237) Scan parquet +Output [3]: [d_month_seq#50, d_year#51, d_moy#52] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,1998), EqualTo(d_moy,12)] +ReadSchema: struct + +(238) Filter +Input [3]: [d_month_seq#50, d_year#51, d_moy#52] +Condition : (((isnotnull(d_year#51) AND isnotnull(d_moy#52)) AND (d_year#51 = 1998)) AND (d_moy#52 = 12)) + +(239) Project +Output [1]: [(d_month_seq#50 + 3) AS (d_month_seq + 3)#53] +Input [3]: [d_month_seq#50, d_year#51, d_moy#52] + +(240) HashAggregate +Input [1]: [(d_month_seq + 3)#53] +Keys [1]: [(d_month_seq + 3)#53] +Functions: [] +Aggregate Attributes: [] +Results [1]: [(d_month_seq + 3)#53] + +(241) Exchange +Input [1]: [(d_month_seq + 3)#53] +Arguments: hashpartitioning((d_month_seq + 3)#53, 100), ENSURE_REQUIREMENTS, [plan_id=34] + +(242) HashAggregate +Input [1]: [(d_month_seq + 3)#53] +Keys [1]: [(d_month_seq + 3)#53] +Functions: [] +Aggregate Attributes: [] +Results [1]: [(d_month_seq + 3)#53] + +(243) AdaptiveSparkPlan +Output [1]: [(d_month_seq + 3)#53] +Arguments: isFinalPlan=true + + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q55.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q55.txt new file mode 100644 index 000000000..986c55b05 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q55.txt @@ -0,0 +1,383 @@ +== Physical Plan == +AdaptiveSparkPlan (69) ++- == Final Plan == + NativeTakeOrdered (44) + +- NativeProject (43) + +- NativeHashAggregate (42) + +- InputAdapter (41) + +- AQEShuffleRead (40) + +- ShuffleQueryStage (39), Statistics(X) + +- NativeShuffleExchange (38) + +- NativeHashAggregate (37) + +- NativeProject (36) + +- NativeProject (35) + +- NativeSortMergeJoin Inner (34) + :- NativeSort (24) + : +- InputAdapter (23) + : +- AQEShuffleRead (22) + : +- ShuffleQueryStage (21), Statistics(X) + : +- NativeShuffleExchange (20) + : +- NativeProject (19) + : +- NativeSortMergeJoin Inner (18) + : :- NativeSort (9) + : : +- InputAdapter (8) + : : +- AQEShuffleRead (7) + : : +- ShuffleQueryStage (6), Statistics(X) + : : +- NativeShuffleExchange (5) + : : +- NativeProject (4) + : : +- NativeFilter (3) + : : +- InputAdapter (2) + : : +- NativeParquetScan (1) + : +- NativeSort (17) + : +- InputAdapter (16) + : +- AQEShuffleRead (15) + : +- ShuffleQueryStage (14), Statistics(X) + : +- NativeShuffleExchange (13) + : +- NativeFilter (12) + : +- InputAdapter (11) + : +- NativeParquetScan (10) + +- NativeSort (33) + +- InputAdapter (32) + +- AQEShuffleRead (31) + +- ShuffleQueryStage (30), Statistics(X) + +- NativeShuffleExchange (29) + +- NativeProject (28) + +- NativeFilter (27) + +- InputAdapter (26) + +- NativeParquetScan (25) ++- == Initial Plan == + TakeOrderedAndProject (68) + +- HashAggregate (67) + +- Exchange (66) + +- HashAggregate (65) + +- Project (64) + +- SortMergeJoin Inner (63) + :- Sort (57) + : +- Exchange (56) + : +- Project (55) + : +- SortMergeJoin Inner (54) + : :- Sort (49) + : : +- Exchange (48) + : : +- Project (47) + : : +- Filter (46) + : : +- Scan parquet (45) + : +- Sort (53) + : +- Exchange (52) + : +- Filter (51) + : +- Scan parquet (50) + +- Sort (62) + +- Exchange (61) + +- Project (60) + +- Filter (59) + +- Scan parquet (58) + + +(45) Scan parquet +Output [3]: [d_date_sk#1, d_year#2, d_moy#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_moy), IsNotNull(d_year), EqualTo(d_moy,11), EqualTo(d_year,1999), IsNotNull(d_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [d_date_sk#1, d_year#2, d_moy#3] +Arguments: [#1, #2, #3] + +(3) NativeFilter +Input [3]: [#1#1, #2#2, #3#3] +Condition : ((((isnotnull(d_moy#3) AND isnotnull(d_year#2)) AND (d_moy#3 = 11)) AND (d_year#2 = 1999)) AND isnotnull(d_date_sk#1)) + +(4) NativeProject +Output [1]: [d_date_sk#1] +Input [3]: [#1#1, #2#2, #3#3] + +(5) NativeShuffleExchange +Input [1]: [d_date_sk#1] +Arguments: hashpartitioning(d_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(6) ShuffleQueryStage +Output [1]: [d_date_sk#1] +Arguments: X + +(7) AQEShuffleRead +Input [1]: [d_date_sk#1] +Arguments: coalesced + +(8) InputAdapter +Input [1]: [d_date_sk#1] + +(9) NativeSort +Input [1]: [d_date_sk#1] +Arguments: [d_date_sk#1 ASC NULLS FIRST], false + +(50) Scan parquet +Output [3]: [ss_sold_date_sk#4, ss_item_sk#5, ss_ext_sales_price#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(11) InputAdapter +Input [3]: [ss_sold_date_sk#4, ss_item_sk#5, ss_ext_sales_price#6] +Arguments: [#4, #5, #6] + +(12) NativeFilter +Input [3]: [#4#4, #5#5, #6#6] +Condition : (isnotnull(ss_sold_date_sk#4) AND isnotnull(ss_item_sk#5)) + +(13) NativeShuffleExchange +Input [3]: [#4#4, #5#5, #6#6] +Arguments: hashpartitioning(ss_sold_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [3]: [#4#4, #5#5, #6#6] +Arguments: X + +(15) AQEShuffleRead +Input [3]: [#4#4, #5#5, #6#6] +Arguments: coalesced + +(16) InputAdapter +Input [3]: [#4#4, #5#5, #6#6] + +(17) NativeSort +Input [3]: [#4#4, #5#5, #6#6] +Arguments: [ss_sold_date_sk#4 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [d_date_sk#1] +Right keys [1]: [ss_sold_date_sk#4] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [2]: [ss_item_sk#5, ss_ext_sales_price#6] +Input [4]: [d_date_sk#1, #4#4, #5#5, #6#6] + +(20) NativeShuffleExchange +Input [2]: [ss_item_sk#5, ss_ext_sales_price#6] +Arguments: hashpartitioning(ss_item_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [2]: [ss_item_sk#5, ss_ext_sales_price#6] +Arguments: X + +(22) AQEShuffleRead +Input [2]: [ss_item_sk#5, ss_ext_sales_price#6] +Arguments: coalesced + +(23) InputAdapter +Input [2]: [ss_item_sk#5, ss_ext_sales_price#6] + +(24) NativeSort +Input [2]: [ss_item_sk#5, ss_ext_sales_price#6] +Arguments: [ss_item_sk#5 ASC NULLS FIRST], false + +(58) Scan parquet +Output [4]: [i_item_sk#7, i_brand_id#8, i_brand#9, i_manager_id#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_manager_id), EqualTo(i_manager_id,28), IsNotNull(i_item_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [4]: [i_item_sk#7, i_brand_id#8, i_brand#9, i_manager_id#10] +Arguments: [#7, #8, #9, #10] + +(27) NativeFilter +Input [4]: [#7#7, #8#8, #9#9, #10#10] +Condition : ((isnotnull(i_manager_id#10) AND (i_manager_id#10 = 28)) AND isnotnull(i_item_sk#7)) + +(28) NativeProject +Output [3]: [i_item_sk#7, i_brand_id#8, i_brand#9] +Input [4]: [#7#7, #8#8, #9#9, #10#10] + +(29) NativeShuffleExchange +Input [3]: [i_item_sk#7, i_brand_id#8, i_brand#9] +Arguments: hashpartitioning(i_item_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(30) ShuffleQueryStage +Output [3]: [i_item_sk#7, i_brand_id#8, i_brand#9] +Arguments: X + +(31) AQEShuffleRead +Input [3]: [i_item_sk#7, i_brand_id#8, i_brand#9] +Arguments: coalesced + +(32) InputAdapter +Input [3]: [i_item_sk#7, i_brand_id#8, i_brand#9] + +(33) NativeSort +Input [3]: [i_item_sk#7, i_brand_id#8, i_brand#9] +Arguments: [i_item_sk#7 ASC NULLS FIRST], false + +(34) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#5] +Right keys [1]: [i_item_sk#7] +Join type: Inner +Join condition: None + +(35) NativeProject +Output [3]: [ss_ext_sales_price#6, i_brand_id#8, i_brand#9] +Input [5]: [ss_item_sk#5, ss_ext_sales_price#6, i_item_sk#7, i_brand_id#8, i_brand#9] + +(36) NativeProject +Output [3]: [i_brand#9 AS i_brand#9, i_brand_id#8 AS i_brand_id#8, UnscaledValue(ss_ext_sales_price#6) AS _c2#11] +Input [3]: [ss_ext_sales_price#6, i_brand_id#8, i_brand#9] + +(37) NativeHashAggregate +Input [3]: [i_brand#9, i_brand_id#8, _c2#11] +Keys [2]: [i_brand#9, i_brand_id#8] +Functions [1]: [partial_sum(_c2#11)] +Aggregate Attributes [1]: [sum#12] +Results [3]: [i_brand#9, i_brand_id#8, #13#13] + +(38) NativeShuffleExchange +Input [3]: [i_brand#9, i_brand_id#8, #13#13] +Arguments: hashpartitioning(i_brand#9, i_brand_id#8, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(39) ShuffleQueryStage +Output [3]: [i_brand#9, i_brand_id#8, #13#13] +Arguments: X + +(40) AQEShuffleRead +Input [3]: [i_brand#9, i_brand_id#8, #13#13] +Arguments: coalesced + +(41) InputAdapter +Input [3]: [i_brand#9, i_brand_id#8, #13#13] + +(42) NativeHashAggregate +Input [3]: [i_brand#9, i_brand_id#8, #13#13] +Keys [2]: [i_brand#9, i_brand_id#8] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#6))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#6))#14] +Results [3]: [i_brand#9, i_brand_id#8, sum(UnscaledValue(ss_ext_sales_price#6))#14] + +(43) NativeProject +Output [3]: [i_brand_id#8 AS brand_id#15, i_brand#9 AS brand#16, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#6))#14,17,2) AS ext_price#17] +Input [3]: [i_brand#9, i_brand_id#8, sum(UnscaledValue(ss_ext_sales_price#6))#14] + +(44) NativeTakeOrdered +Input [3]: [brand_id#15, brand#16, ext_price#17] +Arguments: X, [ext_price#17 DESC NULLS LAST, brand_id#15 ASC NULLS FIRST] + +(45) Scan parquet +Output [3]: [d_date_sk#1, d_year#2, d_moy#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_moy), IsNotNull(d_year), EqualTo(d_moy,11), EqualTo(d_year,1999), IsNotNull(d_date_sk)] +ReadSchema: struct + +(46) Filter +Input [3]: [d_date_sk#1, d_year#2, d_moy#3] +Condition : ((((isnotnull(d_moy#3) AND isnotnull(d_year#2)) AND (d_moy#3 = 11)) AND (d_year#2 = 1999)) AND isnotnull(d_date_sk#1)) + +(47) Project +Output [1]: [d_date_sk#1] +Input [3]: [d_date_sk#1, d_year#2, d_moy#3] + +(48) Exchange +Input [1]: [d_date_sk#1] +Arguments: hashpartitioning(d_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(49) Sort +Input [1]: [d_date_sk#1] +Arguments: [d_date_sk#1 ASC NULLS FIRST], false, 0 + +(50) Scan parquet +Output [3]: [ss_sold_date_sk#4, ss_item_sk#5, ss_ext_sales_price#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(51) Filter +Input [3]: [ss_sold_date_sk#4, ss_item_sk#5, ss_ext_sales_price#6] +Condition : (isnotnull(ss_sold_date_sk#4) AND isnotnull(ss_item_sk#5)) + +(52) Exchange +Input [3]: [ss_sold_date_sk#4, ss_item_sk#5, ss_ext_sales_price#6] +Arguments: hashpartitioning(ss_sold_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(53) Sort +Input [3]: [ss_sold_date_sk#4, ss_item_sk#5, ss_ext_sales_price#6] +Arguments: [ss_sold_date_sk#4 ASC NULLS FIRST], false, 0 + +(54) SortMergeJoin +Left keys [1]: [d_date_sk#1] +Right keys [1]: [ss_sold_date_sk#4] +Join type: Inner +Join condition: None + +(55) Project +Output [2]: [ss_item_sk#5, ss_ext_sales_price#6] +Input [4]: [d_date_sk#1, ss_sold_date_sk#4, ss_item_sk#5, ss_ext_sales_price#6] + +(56) Exchange +Input [2]: [ss_item_sk#5, ss_ext_sales_price#6] +Arguments: hashpartitioning(ss_item_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(57) Sort +Input [2]: [ss_item_sk#5, ss_ext_sales_price#6] +Arguments: [ss_item_sk#5 ASC NULLS FIRST], false, 0 + +(58) Scan parquet +Output [4]: [i_item_sk#7, i_brand_id#8, i_brand#9, i_manager_id#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_manager_id), EqualTo(i_manager_id,28), IsNotNull(i_item_sk)] +ReadSchema: struct + +(59) Filter +Input [4]: [i_item_sk#7, i_brand_id#8, i_brand#9, i_manager_id#10] +Condition : ((isnotnull(i_manager_id#10) AND (i_manager_id#10 = 28)) AND isnotnull(i_item_sk#7)) + +(60) Project +Output [3]: [i_item_sk#7, i_brand_id#8, i_brand#9] +Input [4]: [i_item_sk#7, i_brand_id#8, i_brand#9, i_manager_id#10] + +(61) Exchange +Input [3]: [i_item_sk#7, i_brand_id#8, i_brand#9] +Arguments: hashpartitioning(i_item_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(62) Sort +Input [3]: [i_item_sk#7, i_brand_id#8, i_brand#9] +Arguments: [i_item_sk#7 ASC NULLS FIRST], false, 0 + +(63) SortMergeJoin +Left keys [1]: [ss_item_sk#5] +Right keys [1]: [i_item_sk#7] +Join type: Inner +Join condition: None + +(64) Project +Output [3]: [ss_ext_sales_price#6, i_brand_id#8, i_brand#9] +Input [5]: [ss_item_sk#5, ss_ext_sales_price#6, i_item_sk#7, i_brand_id#8, i_brand#9] + +(65) HashAggregate +Input [3]: [ss_ext_sales_price#6, i_brand_id#8, i_brand#9] +Keys [2]: [i_brand#9, i_brand_id#8] +Functions [1]: [partial_sum(UnscaledValue(ss_ext_sales_price#6))] +Aggregate Attributes [1]: [sum#12] +Results [3]: [i_brand#9, i_brand_id#8, sum#18] + +(66) Exchange +Input [3]: [i_brand#9, i_brand_id#8, sum#18] +Arguments: hashpartitioning(i_brand#9, i_brand_id#8, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(67) HashAggregate +Input [3]: [i_brand#9, i_brand_id#8, sum#18] +Keys [2]: [i_brand#9, i_brand_id#8] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#6))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#6))#14] +Results [3]: [i_brand_id#8 AS brand_id#15, i_brand#9 AS brand#16, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#6))#14,17,2) AS ext_price#17] + +(68) TakeOrderedAndProject +Input [3]: [brand_id#15, brand#16, ext_price#17] +Arguments: X, [ext_price#17 DESC NULLS LAST, brand_id#15 ASC NULLS FIRST], [brand_id#15, brand#16, ext_price#17] + +(69) AdaptiveSparkPlan +Output [3]: [brand_id#15, brand#16, ext_price#17] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q56.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q56.txt new file mode 100644 index 000000000..cd5325dad --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q56.txt @@ -0,0 +1,1660 @@ +== Physical Plan == +AdaptiveSparkPlan (306) ++- == Final Plan == + NativeTakeOrdered (183) + +- NativeProject (182) + +- NativeHashAggregate (181) + +- InputAdapter (180) + +- AQEShuffleRead (179) + +- ShuffleQueryStage (178), Statistics(X) + +- NativeShuffleExchange (177) + +- NativeHashAggregate (176) + +- InputAdapter (175) + +- NativeUnion (174) + :- NativeProject (73) + : +- NativeHashAggregate (72) + : +- InputAdapter (71) + : +- AQEShuffleRead (70) + : +- ShuffleQueryStage (69), Statistics(X) + : +- NativeShuffleExchange (68) + : +- NativeHashAggregate (67) + : +- NativeProject (66) + : +- NativeProject (65) + : +- NativeSortMergeJoin Inner (64) + : :- NativeSort (40) + : : +- InputAdapter (39) + : : +- AQEShuffleRead (38) + : : +- ShuffleQueryStage (37), Statistics(X) + : : +- NativeShuffleExchange (36) + : : +- NativeProject (35) + : : +- NativeSortMergeJoin Inner (34) + : : :- 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 (33) + : : +- InputAdapter (32) + : : +- AQEShuffleRead (31) + : : +- ShuffleQueryStage (30), Statistics(X) + : : +- NativeShuffleExchange (29) + : : +- NativeProject (28) + : : +- NativeFilter (27) + : : +- InputAdapter (26) + : : +- NativeParquetScan (25) + : +- NativeSort (63) + : +- InputAdapter (62) + : +- AQEShuffleRead (61) + : +- ShuffleQueryStage (60), Statistics(X) + : +- NativeShuffleExchange (59) + : +- NativeSortMergeJoin LeftSemi (58) + : :- NativeSort (48) + : : +- InputAdapter (47) + : : +- AQEShuffleRead (46) + : : +- ShuffleQueryStage (45), Statistics(X) + : : +- NativeShuffleExchange (44) + : : +- NativeFilter (43) + : : +- InputAdapter (42) + : : +- NativeParquetScan (41) + : +- NativeSort (57) + : +- InputAdapter (56) + : +- AQEShuffleRead (55) + : +- ShuffleQueryStage (54), Statistics(X) + : +- NativeShuffleExchange (53) + : +- NativeProject (52) + : +- NativeFilter (51) + : +- InputAdapter (50) + : +- NativeParquetScan (49) + :- NativeProject (123) + : +- NativeHashAggregate (122) + : +- InputAdapter (121) + : +- AQEShuffleRead (120) + : +- ShuffleQueryStage (119), Statistics(X) + : +- NativeShuffleExchange (118) + : +- NativeHashAggregate (117) + : +- NativeProject (116) + : +- NativeProject (115) + : +- NativeSortMergeJoin Inner (114) + : :- NativeSort (107) + : : +- InputAdapter (106) + : : +- AQEShuffleRead (105) + : : +- ShuffleQueryStage (104), Statistics(X) + : : +- NativeShuffleExchange (103) + : : +- NativeProject (102) + : : +- NativeSortMergeJoin Inner (101) + : : :- NativeSort (94) + : : : +- InputAdapter (93) + : : : +- AQEShuffleRead (92) + : : : +- ShuffleQueryStage (91), Statistics(X) + : : : +- NativeShuffleExchange (90) + : : : +- NativeProject (89) + : : : +- NativeSortMergeJoin Inner (88) + : : : :- NativeSort (81) + : : : : +- InputAdapter (80) + : : : : +- AQEShuffleRead (79) + : : : : +- ShuffleQueryStage (78), Statistics(X) + : : : : +- NativeShuffleExchange (77) + : : : : +- NativeFilter (76) + : : : : +- InputAdapter (75) + : : : : +- NativeParquetScan (74) + : : : +- NativeSort (87) + : : : +- InputAdapter (86) + : : : +- InputAdapter (85) + : : : +- AQEShuffleRead (84) + : : : +- ShuffleQueryStage (83), Statistics(X) + : : : +- ReusedExchange (82) + : : +- NativeSort (100) + : : +- InputAdapter (99) + : : +- InputAdapter (98) + : : +- AQEShuffleRead (97) + : : +- ShuffleQueryStage (96), Statistics(X) + : : +- ReusedExchange (95) + : +- NativeSort (113) + : +- InputAdapter (112) + : +- InputAdapter (111) + : +- AQEShuffleRead (110) + : +- ShuffleQueryStage (109), Statistics(X) + : +- ReusedExchange (108) + +- NativeProject (173) + +- NativeHashAggregate (172) + +- InputAdapter (171) + +- AQEShuffleRead (170) + +- ShuffleQueryStage (169), Statistics(X) + +- NativeShuffleExchange (168) + +- NativeHashAggregate (167) + +- NativeProject (166) + +- NativeProject (165) + +- NativeSortMergeJoin Inner (164) + :- NativeSort (157) + : +- InputAdapter (156) + : +- AQEShuffleRead (155) + : +- ShuffleQueryStage (154), Statistics(X) + : +- NativeShuffleExchange (153) + : +- NativeProject (152) + : +- NativeSortMergeJoin Inner (151) + : :- NativeSort (144) + : : +- InputAdapter (143) + : : +- AQEShuffleRead (142) + : : +- ShuffleQueryStage (141), Statistics(X) + : : +- NativeShuffleExchange (140) + : : +- NativeProject (139) + : : +- NativeSortMergeJoin Inner (138) + : : :- NativeSort (131) + : : : +- InputAdapter (130) + : : : +- AQEShuffleRead (129) + : : : +- ShuffleQueryStage (128), Statistics(X) + : : : +- NativeShuffleExchange (127) + : : : +- NativeFilter (126) + : : : +- InputAdapter (125) + : : : +- NativeParquetScan (124) + : : +- NativeSort (137) + : : +- InputAdapter (136) + : : +- InputAdapter (135) + : : +- AQEShuffleRead (134) + : : +- ShuffleQueryStage (133), Statistics(X) + : : +- ReusedExchange (132) + : +- NativeSort (150) + : +- InputAdapter (149) + : +- InputAdapter (148) + : +- AQEShuffleRead (147) + : +- ShuffleQueryStage (146), Statistics(X) + : +- ReusedExchange (145) + +- NativeSort (163) + +- InputAdapter (162) + +- InputAdapter (161) + +- AQEShuffleRead (160) + +- ShuffleQueryStage (159), Statistics(X) + +- ReusedExchange (158) ++- == Initial Plan == + TakeOrderedAndProject (305) + +- HashAggregate (304) + +- Exchange (303) + +- HashAggregate (302) + +- Union (301) + :- HashAggregate (222) + : +- Exchange (221) + : +- HashAggregate (220) + : +- Project (219) + : +- SortMergeJoin Inner (218) + : :- Sort (205) + : : +- Exchange (204) + : : +- Project (203) + : : +- SortMergeJoin Inner (202) + : : :- Sort (196) + : : : +- Exchange (195) + : : : +- Project (194) + : : : +- SortMergeJoin Inner (193) + : : : :- Sort (187) + : : : : +- Exchange (186) + : : : : +- Filter (185) + : : : : +- Scan parquet (184) + : : : +- Sort (192) + : : : +- Exchange (191) + : : : +- Project (190) + : : : +- Filter (189) + : : : +- Scan parquet (188) + : : +- Sort (201) + : : +- Exchange (200) + : : +- Project (199) + : : +- Filter (198) + : : +- Scan parquet (197) + : +- Sort (217) + : +- Exchange (216) + : +- SortMergeJoin LeftSemi (215) + : :- Sort (209) + : : +- Exchange (208) + : : +- Filter (207) + : : +- Scan parquet (206) + : +- Sort (214) + : +- Exchange (213) + : +- Project (212) + : +- Filter (211) + : +- Scan parquet (210) + :- HashAggregate (261) + : +- Exchange (260) + : +- HashAggregate (259) + : +- Project (258) + : +- SortMergeJoin Inner (257) + : :- Sort (244) + : : +- Exchange (243) + : : +- Project (242) + : : +- SortMergeJoin Inner (241) + : : :- Sort (235) + : : : +- Exchange (234) + : : : +- Project (233) + : : : +- SortMergeJoin Inner (232) + : : : :- Sort (226) + : : : : +- Exchange (225) + : : : : +- Filter (224) + : : : : +- Scan parquet (223) + : : : +- Sort (231) + : : : +- Exchange (230) + : : : +- Project (229) + : : : +- Filter (228) + : : : +- Scan parquet (227) + : : +- Sort (240) + : : +- Exchange (239) + : : +- Project (238) + : : +- Filter (237) + : : +- Scan parquet (236) + : +- Sort (256) + : +- Exchange (255) + : +- SortMergeJoin LeftSemi (254) + : :- Sort (248) + : : +- Exchange (247) + : : +- Filter (246) + : : +- Scan parquet (245) + : +- Sort (253) + : +- Exchange (252) + : +- Project (251) + : +- Filter (250) + : +- Scan parquet (249) + +- HashAggregate (300) + +- Exchange (299) + +- HashAggregate (298) + +- Project (297) + +- SortMergeJoin Inner (296) + :- Sort (283) + : +- Exchange (282) + : +- Project (281) + : +- SortMergeJoin Inner (280) + : :- Sort (274) + : : +- Exchange (273) + : : +- Project (272) + : : +- SortMergeJoin Inner (271) + : : :- Sort (265) + : : : +- Exchange (264) + : : : +- Filter (263) + : : : +- Scan parquet (262) + : : +- Sort (270) + : : +- Exchange (269) + : : +- Project (268) + : : +- Filter (267) + : : +- Scan parquet (266) + : +- Sort (279) + : +- Exchange (278) + : +- Project (277) + : +- Filter (276) + : +- Scan parquet (275) + +- Sort (295) + +- Exchange (294) + +- SortMergeJoin LeftSemi (293) + :- Sort (287) + : +- Exchange (286) + : +- Filter (285) + : +- Scan parquet (284) + +- Sort (292) + +- Exchange (291) + +- Project (290) + +- Filter (289) + +- Scan parquet (288) + + +(184) Scan parquet +Output [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_addr_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Arguments: [#1, #2, #3, #4] + +(3) NativeFilter +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Condition : ((isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_addr_sk#3)) AND isnotnull(ss_item_sk#2)) + +(4) NativeShuffleExchange +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: X + +(6) AQEShuffleRead +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: coalesced + +(7) InputAdapter +Input [4]: [#1#1, #2#2, #3#3, #4#4] + +(8) NativeSort +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(188) Scan parquet +Output [3]: [d_date_sk#5, d_year#6, d_moy#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), EqualTo(d_moy,2), IsNotNull(d_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [3]: [d_date_sk#5, d_year#6, d_moy#7] +Arguments: [#5, #6, #7] + +(11) NativeFilter +Input [3]: [#5#5, #6#6, #7#7] +Condition : ((((isnotnull(d_year#6) AND isnotnull(d_moy#7)) AND (d_year#6 = 2001)) AND (d_moy#7 = 2)) AND isnotnull(d_date_sk#5)) + +(12) NativeProject +Output [1]: [d_date_sk#5] +Input [3]: [#5#5, #6#6, #7#7] + +(13) NativeShuffleExchange +Input [1]: [d_date_sk#5] +Arguments: hashpartitioning(d_date_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [1]: [d_date_sk#5] +Arguments: X + +(15) AQEShuffleRead +Input [1]: [d_date_sk#5] +Arguments: coalesced + +(16) InputAdapter +Input [1]: [d_date_sk#5] + +(17) NativeSort +Input [1]: [d_date_sk#5] +Arguments: [d_date_sk#5 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#5] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [3]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Input [5]: [#1#1, #2#2, #3#3, #4#4, d_date_sk#5] + +(20) NativeShuffleExchange +Input [3]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Arguments: hashpartitioning(ss_addr_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [3]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Arguments: X + +(22) AQEShuffleRead +Input [3]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Arguments: coalesced + +(23) InputAdapter +Input [3]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] + +(24) NativeSort +Input [3]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Arguments: [ss_addr_sk#3 ASC NULLS FIRST], false + +(197) Scan parquet +Output [2]: [ca_address_sk#8, ca_gmt_offset#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_gmt_offset), EqualTo(ca_gmt_offset,-5.00), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [2]: [ca_address_sk#8, ca_gmt_offset#9] +Arguments: [#8, #9] + +(27) NativeFilter +Input [2]: [#8#8, #9#9] +Condition : ((isnotnull(ca_gmt_offset#9) AND (ca_gmt_offset#9 = -5.00)) AND isnotnull(ca_address_sk#8)) + +(28) NativeProject +Output [1]: [ca_address_sk#8] +Input [2]: [#8#8, #9#9] + +(29) NativeShuffleExchange +Input [1]: [ca_address_sk#8] +Arguments: hashpartitioning(ca_address_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(30) ShuffleQueryStage +Output [1]: [ca_address_sk#8] +Arguments: X + +(31) AQEShuffleRead +Input [1]: [ca_address_sk#8] +Arguments: coalesced + +(32) InputAdapter +Input [1]: [ca_address_sk#8] + +(33) NativeSort +Input [1]: [ca_address_sk#8] +Arguments: [ca_address_sk#8 ASC NULLS FIRST], false + +(34) NativeSortMergeJoin +Left keys [1]: [ss_addr_sk#3] +Right keys [1]: [ca_address_sk#8] +Join type: Inner +Join condition: None + +(35) NativeProject +Output [2]: [ss_item_sk#2, ss_ext_sales_price#4] +Input [4]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4, ca_address_sk#8] + +(36) NativeShuffleExchange +Input [2]: [ss_item_sk#2, ss_ext_sales_price#4] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [2]: [ss_item_sk#2, ss_ext_sales_price#4] +Arguments: X + +(38) AQEShuffleRead +Input [2]: [ss_item_sk#2, ss_ext_sales_price#4] +Arguments: coalesced + +(39) InputAdapter +Input [2]: [ss_item_sk#2, ss_ext_sales_price#4] + +(40) NativeSort +Input [2]: [ss_item_sk#2, ss_ext_sales_price#4] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false + +(206) Scan parquet +Output [2]: [i_item_sk#10, i_item_id#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(42) InputAdapter +Input [2]: [i_item_sk#10, i_item_id#11] +Arguments: [#10, #11] + +(43) NativeFilter +Input [2]: [#10#10, #11#11] +Condition : isnotnull(i_item_sk#10) + +(44) NativeShuffleExchange +Input [2]: [#10#10, #11#11] +Arguments: hashpartitioning(i_item_id#11, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(45) ShuffleQueryStage +Output [2]: [#10#10, #11#11] +Arguments: X + +(46) AQEShuffleRead +Input [2]: [#10#10, #11#11] +Arguments: coalesced + +(47) InputAdapter +Input [2]: [#10#10, #11#11] + +(48) NativeSort +Input [2]: [#10#10, #11#11] +Arguments: [i_item_id#11 ASC NULLS FIRST], false + +(210) Scan parquet +Output [2]: [i_item_id#12, i_color#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(i_color, [blanched,burnished,slate])] +ReadSchema: struct + +(50) InputAdapter +Input [2]: [i_item_id#12, i_color#13] +Arguments: [#12, #13] + +(51) NativeFilter +Input [2]: [#12#12, #13#13] +Condition : i_color#13 IN (slate,blanched,burnished) + +(52) NativeProject +Output [1]: [i_item_id#12] +Input [2]: [#12#12, #13#13] + +(53) NativeShuffleExchange +Input [1]: [i_item_id#12] +Arguments: hashpartitioning(i_item_id#12, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(54) ShuffleQueryStage +Output [1]: [i_item_id#12] +Arguments: X + +(55) AQEShuffleRead +Input [1]: [i_item_id#12] +Arguments: coalesced + +(56) InputAdapter +Input [1]: [i_item_id#12] + +(57) NativeSort +Input [1]: [i_item_id#12] +Arguments: [i_item_id#12 ASC NULLS FIRST], false + +(58) NativeSortMergeJoin +Left keys [1]: [i_item_id#11] +Right keys [1]: [i_item_id#12] +Join type: LeftSemi +Join condition: None + +(59) NativeShuffleExchange +Input [2]: [#10#10, #11#11] +Arguments: hashpartitioning(i_item_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(60) ShuffleQueryStage +Output [2]: [#10#10, #11#11] +Arguments: X + +(61) AQEShuffleRead +Input [2]: [#10#10, #11#11] +Arguments: coalesced + +(62) InputAdapter +Input [2]: [#10#10, #11#11] + +(63) NativeSort +Input [2]: [#10#10, #11#11] +Arguments: [i_item_sk#10 ASC NULLS FIRST], false + +(64) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#10] +Join type: Inner +Join condition: None + +(65) NativeProject +Output [2]: [ss_ext_sales_price#4, i_item_id#11] +Input [4]: [ss_item_sk#2, ss_ext_sales_price#4, #10#10, #11#11] + +(66) NativeProject +Output [2]: [i_item_id#11 AS i_item_id#11, UnscaledValue(ss_ext_sales_price#4) AS _c1#14] +Input [2]: [ss_ext_sales_price#4, i_item_id#11] + +(67) NativeHashAggregate +Input [2]: [i_item_id#11, _c1#14] +Keys [1]: [i_item_id#11] +Functions [1]: [partial_sum(_c1#14)] +Aggregate Attributes [1]: [sum#15] +Results [2]: [i_item_id#11, #16#16] + +(68) NativeShuffleExchange +Input [2]: [i_item_id#11, #16#16] +Arguments: hashpartitioning(i_item_id#11, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(69) ShuffleQueryStage +Output [2]: [i_item_id#11, #16#16] +Arguments: X + +(70) AQEShuffleRead +Input [2]: [i_item_id#11, #16#16] +Arguments: coalesced + +(71) InputAdapter +Input [2]: [i_item_id#11, #16#16] + +(72) NativeHashAggregate +Input [2]: [i_item_id#11, #16#16] +Keys [1]: [i_item_id#11] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#4))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#4))#17] +Results [2]: [i_item_id#11, sum(UnscaledValue(ss_ext_sales_price#4))#17] + +(73) NativeProject +Output [2]: [i_item_id#11, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#4))#17,17,2) AS total_sales#18] +Input [2]: [i_item_id#11, sum(UnscaledValue(ss_ext_sales_price#4))#17] + +(223) Scan parquet +Output [4]: [cs_sold_date_sk#19, cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk), IsNotNull(cs_bill_addr_sk), IsNotNull(cs_item_sk)] +ReadSchema: struct + +(75) InputAdapter +Input [4]: [cs_sold_date_sk#19, cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Arguments: [#19, #20, #21, #22] + +(76) NativeFilter +Input [4]: [#19#19, #20#20, #21#21, #22#22] +Condition : ((isnotnull(cs_sold_date_sk#19) AND isnotnull(cs_bill_addr_sk#20)) AND isnotnull(cs_item_sk#21)) + +(77) NativeShuffleExchange +Input [4]: [#19#19, #20#20, #21#21, #22#22] +Arguments: hashpartitioning(cs_sold_date_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(78) ShuffleQueryStage +Output [4]: [#19#19, #20#20, #21#21, #22#22] +Arguments: X + +(79) AQEShuffleRead +Input [4]: [#19#19, #20#20, #21#21, #22#22] +Arguments: coalesced + +(80) InputAdapter +Input [4]: [#19#19, #20#20, #21#21, #22#22] + +(81) NativeSort +Input [4]: [#19#19, #20#20, #21#21, #22#22] +Arguments: [cs_sold_date_sk#19 ASC NULLS FIRST], false + +(82) ReusedExchange [Reuses operator id: 13] +Output [1]: [d_date_sk#23] + +(83) ShuffleQueryStage +Output [1]: [d_date_sk#23] +Arguments: X + +(84) AQEShuffleRead +Input [1]: [d_date_sk#23] +Arguments: coalesced + +(85) InputAdapter +Input [1]: [d_date_sk#23] +Arguments: [#23] + +(86) InputAdapter +Input [1]: [#23#23] + +(87) NativeSort +Input [1]: [#23#23] +Arguments: [d_date_sk#23 ASC NULLS FIRST], false + +(88) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#19] +Right keys [1]: [d_date_sk#23] +Join type: Inner +Join condition: None + +(89) NativeProject +Output [3]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Input [5]: [#19#19, #20#20, #21#21, #22#22, #23#23] + +(90) NativeShuffleExchange +Input [3]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Arguments: hashpartitioning(cs_bill_addr_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(91) ShuffleQueryStage +Output [3]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Arguments: X + +(92) AQEShuffleRead +Input [3]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Arguments: coalesced + +(93) InputAdapter +Input [3]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] + +(94) NativeSort +Input [3]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Arguments: [cs_bill_addr_sk#20 ASC NULLS FIRST], false + +(95) ReusedExchange [Reuses operator id: 29] +Output [1]: [ca_address_sk#24] + +(96) ShuffleQueryStage +Output [1]: [ca_address_sk#24] +Arguments: X + +(97) AQEShuffleRead +Input [1]: [ca_address_sk#24] +Arguments: coalesced + +(98) InputAdapter +Input [1]: [ca_address_sk#24] +Arguments: [#24] + +(99) InputAdapter +Input [1]: [#24#24] + +(100) NativeSort +Input [1]: [#24#24] +Arguments: [ca_address_sk#24 ASC NULLS FIRST], false + +(101) NativeSortMergeJoin +Left keys [1]: [cs_bill_addr_sk#20] +Right keys [1]: [ca_address_sk#24] +Join type: Inner +Join condition: None + +(102) NativeProject +Output [2]: [cs_item_sk#21, cs_ext_sales_price#22] +Input [4]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22, #24#24] + +(103) NativeShuffleExchange +Input [2]: [cs_item_sk#21, cs_ext_sales_price#22] +Arguments: hashpartitioning(cs_item_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(104) ShuffleQueryStage +Output [2]: [cs_item_sk#21, cs_ext_sales_price#22] +Arguments: X + +(105) AQEShuffleRead +Input [2]: [cs_item_sk#21, cs_ext_sales_price#22] +Arguments: coalesced + +(106) InputAdapter +Input [2]: [cs_item_sk#21, cs_ext_sales_price#22] + +(107) NativeSort +Input [2]: [cs_item_sk#21, cs_ext_sales_price#22] +Arguments: [cs_item_sk#21 ASC NULLS FIRST], false + +(108) ReusedExchange [Reuses operator id: 59] +Output [2]: [i_item_sk#25, i_item_id#26] + +(109) ShuffleQueryStage +Output [2]: [i_item_sk#25, i_item_id#26] +Arguments: X + +(110) AQEShuffleRead +Input [2]: [i_item_sk#25, i_item_id#26] +Arguments: coalesced + +(111) InputAdapter +Input [2]: [i_item_sk#25, i_item_id#26] +Arguments: [#25, #26] + +(112) InputAdapter +Input [2]: [#25#25, #26#26] + +(113) NativeSort +Input [2]: [#25#25, #26#26] +Arguments: [i_item_sk#25 ASC NULLS FIRST], false + +(114) NativeSortMergeJoin +Left keys [1]: [cs_item_sk#21] +Right keys [1]: [i_item_sk#25] +Join type: Inner +Join condition: None + +(115) NativeProject +Output [2]: [cs_ext_sales_price#22, i_item_id#26] +Input [4]: [cs_item_sk#21, cs_ext_sales_price#22, #25#25, #26#26] + +(116) NativeProject +Output [2]: [i_item_id#26 AS i_item_id#26, UnscaledValue(cs_ext_sales_price#22) AS _c1#27] +Input [2]: [cs_ext_sales_price#22, i_item_id#26] + +(117) NativeHashAggregate +Input [2]: [i_item_id#26, _c1#27] +Keys [1]: [i_item_id#26] +Functions [1]: [partial_sum(_c1#27)] +Aggregate Attributes [1]: [sum#28] +Results [2]: [i_item_id#26, #16#16] + +(118) NativeShuffleExchange +Input [2]: [i_item_id#26, #16#16] +Arguments: hashpartitioning(i_item_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(119) ShuffleQueryStage +Output [2]: [i_item_id#26, #16#16] +Arguments: X + +(120) AQEShuffleRead +Input [2]: [i_item_id#26, #16#16] +Arguments: coalesced + +(121) InputAdapter +Input [2]: [i_item_id#26, #16#16] + +(122) NativeHashAggregate +Input [2]: [i_item_id#26, #16#16] +Keys [1]: [i_item_id#26] +Functions [1]: [sum(UnscaledValue(cs_ext_sales_price#22))] +Aggregate Attributes [1]: [sum(UnscaledValue(cs_ext_sales_price#22))#29] +Results [2]: [i_item_id#26, sum(UnscaledValue(cs_ext_sales_price#22))#29] + +(123) NativeProject +Output [2]: [i_item_id#26, MakeDecimal(sum(UnscaledValue(cs_ext_sales_price#22))#29,17,2) AS total_sales#30] +Input [2]: [i_item_id#26, sum(UnscaledValue(cs_ext_sales_price#22))#29] + +(262) Scan parquet +Output [4]: [ws_sold_date_sk#31, ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_bill_addr_sk), IsNotNull(ws_item_sk)] +ReadSchema: struct + +(125) InputAdapter +Input [4]: [ws_sold_date_sk#31, ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Arguments: [#31, #32, #33, #34] + +(126) NativeFilter +Input [4]: [#31#31, #32#32, #33#33, #34#34] +Condition : ((isnotnull(ws_sold_date_sk#31) AND isnotnull(ws_bill_addr_sk#33)) AND isnotnull(ws_item_sk#32)) + +(127) NativeShuffleExchange +Input [4]: [#31#31, #32#32, #33#33, #34#34] +Arguments: hashpartitioning(ws_sold_date_sk#31, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(128) ShuffleQueryStage +Output [4]: [#31#31, #32#32, #33#33, #34#34] +Arguments: X + +(129) AQEShuffleRead +Input [4]: [#31#31, #32#32, #33#33, #34#34] +Arguments: coalesced + +(130) InputAdapter +Input [4]: [#31#31, #32#32, #33#33, #34#34] + +(131) NativeSort +Input [4]: [#31#31, #32#32, #33#33, #34#34] +Arguments: [ws_sold_date_sk#31 ASC NULLS FIRST], false + +(132) ReusedExchange [Reuses operator id: 13] +Output [1]: [d_date_sk#35] + +(133) ShuffleQueryStage +Output [1]: [d_date_sk#35] +Arguments: X + +(134) AQEShuffleRead +Input [1]: [d_date_sk#35] +Arguments: coalesced + +(135) InputAdapter +Input [1]: [d_date_sk#35] +Arguments: [#35] + +(136) InputAdapter +Input [1]: [#35#35] + +(137) NativeSort +Input [1]: [#35#35] +Arguments: [d_date_sk#35 ASC NULLS FIRST], false + +(138) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#31] +Right keys [1]: [d_date_sk#35] +Join type: Inner +Join condition: None + +(139) NativeProject +Output [3]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Input [5]: [#31#31, #32#32, #33#33, #34#34, #35#35] + +(140) NativeShuffleExchange +Input [3]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Arguments: hashpartitioning(ws_bill_addr_sk#33, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(141) ShuffleQueryStage +Output [3]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Arguments: X + +(142) AQEShuffleRead +Input [3]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Arguments: coalesced + +(143) InputAdapter +Input [3]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] + +(144) NativeSort +Input [3]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Arguments: [ws_bill_addr_sk#33 ASC NULLS FIRST], false + +(145) ReusedExchange [Reuses operator id: 29] +Output [1]: [ca_address_sk#36] + +(146) ShuffleQueryStage +Output [1]: [ca_address_sk#36] +Arguments: X + +(147) AQEShuffleRead +Input [1]: [ca_address_sk#36] +Arguments: coalesced + +(148) InputAdapter +Input [1]: [ca_address_sk#36] +Arguments: [#36] + +(149) InputAdapter +Input [1]: [#36#36] + +(150) NativeSort +Input [1]: [#36#36] +Arguments: [ca_address_sk#36 ASC NULLS FIRST], false + +(151) NativeSortMergeJoin +Left keys [1]: [ws_bill_addr_sk#33] +Right keys [1]: [ca_address_sk#36] +Join type: Inner +Join condition: None + +(152) NativeProject +Output [2]: [ws_item_sk#32, ws_ext_sales_price#34] +Input [4]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34, #36#36] + +(153) NativeShuffleExchange +Input [2]: [ws_item_sk#32, ws_ext_sales_price#34] +Arguments: hashpartitioning(ws_item_sk#32, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(154) ShuffleQueryStage +Output [2]: [ws_item_sk#32, ws_ext_sales_price#34] +Arguments: X + +(155) AQEShuffleRead +Input [2]: [ws_item_sk#32, ws_ext_sales_price#34] +Arguments: coalesced + +(156) InputAdapter +Input [2]: [ws_item_sk#32, ws_ext_sales_price#34] + +(157) NativeSort +Input [2]: [ws_item_sk#32, ws_ext_sales_price#34] +Arguments: [ws_item_sk#32 ASC NULLS FIRST], false + +(158) ReusedExchange [Reuses operator id: 59] +Output [2]: [i_item_sk#37, i_item_id#38] + +(159) ShuffleQueryStage +Output [2]: [i_item_sk#37, i_item_id#38] +Arguments: X + +(160) AQEShuffleRead +Input [2]: [i_item_sk#37, i_item_id#38] +Arguments: coalesced + +(161) InputAdapter +Input [2]: [i_item_sk#37, i_item_id#38] +Arguments: [#37, #38] + +(162) InputAdapter +Input [2]: [#37#37, #38#38] + +(163) NativeSort +Input [2]: [#37#37, #38#38] +Arguments: [i_item_sk#37 ASC NULLS FIRST], false + +(164) NativeSortMergeJoin +Left keys [1]: [ws_item_sk#32] +Right keys [1]: [i_item_sk#37] +Join type: Inner +Join condition: None + +(165) NativeProject +Output [2]: [ws_ext_sales_price#34, i_item_id#38] +Input [4]: [ws_item_sk#32, ws_ext_sales_price#34, #37#37, #38#38] + +(166) NativeProject +Output [2]: [i_item_id#38 AS i_item_id#38, UnscaledValue(ws_ext_sales_price#34) AS _c1#39] +Input [2]: [ws_ext_sales_price#34, i_item_id#38] + +(167) NativeHashAggregate +Input [2]: [i_item_id#38, _c1#39] +Keys [1]: [i_item_id#38] +Functions [1]: [partial_sum(_c1#39)] +Aggregate Attributes [1]: [sum#40] +Results [2]: [i_item_id#38, #16#16] + +(168) NativeShuffleExchange +Input [2]: [i_item_id#38, #16#16] +Arguments: hashpartitioning(i_item_id#38, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(169) ShuffleQueryStage +Output [2]: [i_item_id#38, #16#16] +Arguments: X + +(170) AQEShuffleRead +Input [2]: [i_item_id#38, #16#16] +Arguments: coalesced + +(171) InputAdapter +Input [2]: [i_item_id#38, #16#16] + +(172) NativeHashAggregate +Input [2]: [i_item_id#38, #16#16] +Keys [1]: [i_item_id#38] +Functions [1]: [sum(UnscaledValue(ws_ext_sales_price#34))] +Aggregate Attributes [1]: [sum(UnscaledValue(ws_ext_sales_price#34))#41] +Results [2]: [i_item_id#38, sum(UnscaledValue(ws_ext_sales_price#34))#41] + +(173) NativeProject +Output [2]: [i_item_id#38, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#34))#41,17,2) AS total_sales#42] +Input [2]: [i_item_id#38, sum(UnscaledValue(ws_ext_sales_price#34))#41] + +(174) NativeUnion +Arguments: [i_item_id#11, total_sales#18] + +(175) InputAdapter +Input [2]: [i_item_id#11, total_sales#18] +Arguments: [#11, #18] + +(176) NativeHashAggregate +Input [2]: [#11#11, #18#18] +Keys [1]: [i_item_id#11] +Functions [1]: [partial_sum(total_sales#18)] +Aggregate Attributes [2]: [sum#43, isEmpty#44] +Results [2]: [i_item_id#11, #16#16] + +(177) NativeShuffleExchange +Input [2]: [i_item_id#11, #16#16] +Arguments: hashpartitioning(i_item_id#11, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(178) ShuffleQueryStage +Output [2]: [i_item_id#11, #16#16] +Arguments: X + +(179) AQEShuffleRead +Input [2]: [i_item_id#11, #16#16] +Arguments: coalesced + +(180) InputAdapter +Input [2]: [i_item_id#11, #16#16] + +(181) NativeHashAggregate +Input [2]: [i_item_id#11, #16#16] +Keys [1]: [i_item_id#11] +Functions [1]: [sum(total_sales#18)] +Aggregate Attributes [1]: [sum(total_sales#18)#45] +Results [2]: [i_item_id#11, sum(total_sales#18)#45] + +(182) NativeProject +Output [2]: [i_item_id#11, sum(total_sales#18)#45 AS total_sales#46] +Input [2]: [i_item_id#11, sum(total_sales#18)#45] + +(183) NativeTakeOrdered +Input [2]: [i_item_id#11, total_sales#46] +Arguments: X, [total_sales#46 ASC NULLS FIRST, i_item_id#11 ASC NULLS FIRST] + +(184) Scan parquet +Output [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_addr_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(185) Filter +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Condition : ((isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_addr_sk#3)) AND isnotnull(ss_item_sk#2)) + +(186) Exchange +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(187) Sort +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(188) Scan parquet +Output [3]: [d_date_sk#5, d_year#6, d_moy#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), EqualTo(d_moy,2), IsNotNull(d_date_sk)] +ReadSchema: struct + +(189) Filter +Input [3]: [d_date_sk#5, d_year#6, d_moy#7] +Condition : ((((isnotnull(d_year#6) AND isnotnull(d_moy#7)) AND (d_year#6 = 2001)) AND (d_moy#7 = 2)) AND isnotnull(d_date_sk#5)) + +(190) Project +Output [1]: [d_date_sk#5] +Input [3]: [d_date_sk#5, d_year#6, d_moy#7] + +(191) Exchange +Input [1]: [d_date_sk#5] +Arguments: hashpartitioning(d_date_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(192) Sort +Input [1]: [d_date_sk#5] +Arguments: [d_date_sk#5 ASC NULLS FIRST], false, 0 + +(193) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#5] +Join type: Inner +Join condition: None + +(194) Project +Output [3]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Input [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4, d_date_sk#5] + +(195) Exchange +Input [3]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Arguments: hashpartitioning(ss_addr_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(196) Sort +Input [3]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Arguments: [ss_addr_sk#3 ASC NULLS FIRST], false, 0 + +(197) Scan parquet +Output [2]: [ca_address_sk#8, ca_gmt_offset#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_gmt_offset), EqualTo(ca_gmt_offset,-5.00), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(198) Filter +Input [2]: [ca_address_sk#8, ca_gmt_offset#9] +Condition : ((isnotnull(ca_gmt_offset#9) AND (ca_gmt_offset#9 = -5.00)) AND isnotnull(ca_address_sk#8)) + +(199) Project +Output [1]: [ca_address_sk#8] +Input [2]: [ca_address_sk#8, ca_gmt_offset#9] + +(200) Exchange +Input [1]: [ca_address_sk#8] +Arguments: hashpartitioning(ca_address_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(201) Sort +Input [1]: [ca_address_sk#8] +Arguments: [ca_address_sk#8 ASC NULLS FIRST], false, 0 + +(202) SortMergeJoin +Left keys [1]: [ss_addr_sk#3] +Right keys [1]: [ca_address_sk#8] +Join type: Inner +Join condition: None + +(203) Project +Output [2]: [ss_item_sk#2, ss_ext_sales_price#4] +Input [4]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4, ca_address_sk#8] + +(204) Exchange +Input [2]: [ss_item_sk#2, ss_ext_sales_price#4] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(205) Sort +Input [2]: [ss_item_sk#2, ss_ext_sales_price#4] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false, 0 + +(206) Scan parquet +Output [2]: [i_item_sk#10, i_item_id#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(207) Filter +Input [2]: [i_item_sk#10, i_item_id#11] +Condition : isnotnull(i_item_sk#10) + +(208) Exchange +Input [2]: [i_item_sk#10, i_item_id#11] +Arguments: hashpartitioning(i_item_id#11, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(209) Sort +Input [2]: [i_item_sk#10, i_item_id#11] +Arguments: [i_item_id#11 ASC NULLS FIRST], false, 0 + +(210) Scan parquet +Output [2]: [i_item_id#12, i_color#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(i_color, [blanched,burnished,slate])] +ReadSchema: struct + +(211) Filter +Input [2]: [i_item_id#12, i_color#13] +Condition : i_color#13 IN (slate,blanched,burnished) + +(212) Project +Output [1]: [i_item_id#12] +Input [2]: [i_item_id#12, i_color#13] + +(213) Exchange +Input [1]: [i_item_id#12] +Arguments: hashpartitioning(i_item_id#12, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(214) Sort +Input [1]: [i_item_id#12] +Arguments: [i_item_id#12 ASC NULLS FIRST], false, 0 + +(215) SortMergeJoin +Left keys [1]: [i_item_id#11] +Right keys [1]: [i_item_id#12] +Join type: LeftSemi +Join condition: None + +(216) Exchange +Input [2]: [i_item_sk#10, i_item_id#11] +Arguments: hashpartitioning(i_item_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(217) Sort +Input [2]: [i_item_sk#10, i_item_id#11] +Arguments: [i_item_sk#10 ASC NULLS FIRST], false, 0 + +(218) SortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#10] +Join type: Inner +Join condition: None + +(219) Project +Output [2]: [ss_ext_sales_price#4, i_item_id#11] +Input [4]: [ss_item_sk#2, ss_ext_sales_price#4, i_item_sk#10, i_item_id#11] + +(220) HashAggregate +Input [2]: [ss_ext_sales_price#4, i_item_id#11] +Keys [1]: [i_item_id#11] +Functions [1]: [partial_sum(UnscaledValue(ss_ext_sales_price#4))] +Aggregate Attributes [1]: [sum#15] +Results [2]: [i_item_id#11, sum#47] + +(221) Exchange +Input [2]: [i_item_id#11, sum#47] +Arguments: hashpartitioning(i_item_id#11, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(222) HashAggregate +Input [2]: [i_item_id#11, sum#47] +Keys [1]: [i_item_id#11] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#4))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#4))#17] +Results [2]: [i_item_id#11, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#4))#17,17,2) AS total_sales#18] + +(223) Scan parquet +Output [4]: [cs_sold_date_sk#19, cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk), IsNotNull(cs_bill_addr_sk), IsNotNull(cs_item_sk)] +ReadSchema: struct + +(224) Filter +Input [4]: [cs_sold_date_sk#19, cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Condition : ((isnotnull(cs_sold_date_sk#19) AND isnotnull(cs_bill_addr_sk#20)) AND isnotnull(cs_item_sk#21)) + +(225) Exchange +Input [4]: [cs_sold_date_sk#19, cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Arguments: hashpartitioning(cs_sold_date_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(226) Sort +Input [4]: [cs_sold_date_sk#19, cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Arguments: [cs_sold_date_sk#19 ASC NULLS FIRST], false, 0 + +(227) Scan parquet +Output [3]: [d_date_sk#23, d_year#48, d_moy#49] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), EqualTo(d_moy,2), IsNotNull(d_date_sk)] +ReadSchema: struct + +(228) Filter +Input [3]: [d_date_sk#23, d_year#48, d_moy#49] +Condition : ((((isnotnull(d_year#48) AND isnotnull(d_moy#49)) AND (d_year#48 = 2001)) AND (d_moy#49 = 2)) AND isnotnull(d_date_sk#23)) + +(229) Project +Output [1]: [d_date_sk#23] +Input [3]: [d_date_sk#23, d_year#48, d_moy#49] + +(230) Exchange +Input [1]: [d_date_sk#23] +Arguments: hashpartitioning(d_date_sk#23, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(231) Sort +Input [1]: [d_date_sk#23] +Arguments: [d_date_sk#23 ASC NULLS FIRST], false, 0 + +(232) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#19] +Right keys [1]: [d_date_sk#23] +Join type: Inner +Join condition: None + +(233) Project +Output [3]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Input [5]: [cs_sold_date_sk#19, cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22, d_date_sk#23] + +(234) Exchange +Input [3]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Arguments: hashpartitioning(cs_bill_addr_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(235) Sort +Input [3]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Arguments: [cs_bill_addr_sk#20 ASC NULLS FIRST], false, 0 + +(236) Scan parquet +Output [2]: [ca_address_sk#24, ca_gmt_offset#50] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_gmt_offset), EqualTo(ca_gmt_offset,-5.00), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(237) Filter +Input [2]: [ca_address_sk#24, ca_gmt_offset#50] +Condition : ((isnotnull(ca_gmt_offset#50) AND (ca_gmt_offset#50 = -5.00)) AND isnotnull(ca_address_sk#24)) + +(238) Project +Output [1]: [ca_address_sk#24] +Input [2]: [ca_address_sk#24, ca_gmt_offset#50] + +(239) Exchange +Input [1]: [ca_address_sk#24] +Arguments: hashpartitioning(ca_address_sk#24, 100), ENSURE_REQUIREMENTS, [plan_id=31] + +(240) Sort +Input [1]: [ca_address_sk#24] +Arguments: [ca_address_sk#24 ASC NULLS FIRST], false, 0 + +(241) SortMergeJoin +Left keys [1]: [cs_bill_addr_sk#20] +Right keys [1]: [ca_address_sk#24] +Join type: Inner +Join condition: None + +(242) Project +Output [2]: [cs_item_sk#21, cs_ext_sales_price#22] +Input [4]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22, ca_address_sk#24] + +(243) Exchange +Input [2]: [cs_item_sk#21, cs_ext_sales_price#22] +Arguments: hashpartitioning(cs_item_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=32] + +(244) Sort +Input [2]: [cs_item_sk#21, cs_ext_sales_price#22] +Arguments: [cs_item_sk#21 ASC NULLS FIRST], false, 0 + +(245) Scan parquet +Output [2]: [i_item_sk#25, i_item_id#26] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(246) Filter +Input [2]: [i_item_sk#25, i_item_id#26] +Condition : isnotnull(i_item_sk#25) + +(247) Exchange +Input [2]: [i_item_sk#25, i_item_id#26] +Arguments: hashpartitioning(i_item_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=33] + +(248) Sort +Input [2]: [i_item_sk#25, i_item_id#26] +Arguments: [i_item_id#26 ASC NULLS FIRST], false, 0 + +(249) Scan parquet +Output [2]: [i_item_id#51, i_color#52] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(i_color, [blanched,burnished,slate])] +ReadSchema: struct + +(250) Filter +Input [2]: [i_item_id#51, i_color#52] +Condition : i_color#52 IN (slate,blanched,burnished) + +(251) Project +Output [1]: [i_item_id#51] +Input [2]: [i_item_id#51, i_color#52] + +(252) Exchange +Input [1]: [i_item_id#51] +Arguments: hashpartitioning(i_item_id#51, 100), ENSURE_REQUIREMENTS, [plan_id=34] + +(253) Sort +Input [1]: [i_item_id#51] +Arguments: [i_item_id#51 ASC NULLS FIRST], false, 0 + +(254) SortMergeJoin +Left keys [1]: [i_item_id#26] +Right keys [1]: [i_item_id#51] +Join type: LeftSemi +Join condition: None + +(255) Exchange +Input [2]: [i_item_sk#25, i_item_id#26] +Arguments: hashpartitioning(i_item_sk#25, 100), ENSURE_REQUIREMENTS, [plan_id=35] + +(256) Sort +Input [2]: [i_item_sk#25, i_item_id#26] +Arguments: [i_item_sk#25 ASC NULLS FIRST], false, 0 + +(257) SortMergeJoin +Left keys [1]: [cs_item_sk#21] +Right keys [1]: [i_item_sk#25] +Join type: Inner +Join condition: None + +(258) Project +Output [2]: [cs_ext_sales_price#22, i_item_id#26] +Input [4]: [cs_item_sk#21, cs_ext_sales_price#22, i_item_sk#25, i_item_id#26] + +(259) HashAggregate +Input [2]: [cs_ext_sales_price#22, i_item_id#26] +Keys [1]: [i_item_id#26] +Functions [1]: [partial_sum(UnscaledValue(cs_ext_sales_price#22))] +Aggregate Attributes [1]: [sum#28] +Results [2]: [i_item_id#26, sum#53] + +(260) Exchange +Input [2]: [i_item_id#26, sum#53] +Arguments: hashpartitioning(i_item_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=36] + +(261) HashAggregate +Input [2]: [i_item_id#26, sum#53] +Keys [1]: [i_item_id#26] +Functions [1]: [sum(UnscaledValue(cs_ext_sales_price#22))] +Aggregate Attributes [1]: [sum(UnscaledValue(cs_ext_sales_price#22))#29] +Results [2]: [i_item_id#26, MakeDecimal(sum(UnscaledValue(cs_ext_sales_price#22))#29,17,2) AS total_sales#30] + +(262) Scan parquet +Output [4]: [ws_sold_date_sk#31, ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_bill_addr_sk), IsNotNull(ws_item_sk)] +ReadSchema: struct + +(263) Filter +Input [4]: [ws_sold_date_sk#31, ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Condition : ((isnotnull(ws_sold_date_sk#31) AND isnotnull(ws_bill_addr_sk#33)) AND isnotnull(ws_item_sk#32)) + +(264) Exchange +Input [4]: [ws_sold_date_sk#31, ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Arguments: hashpartitioning(ws_sold_date_sk#31, 100), ENSURE_REQUIREMENTS, [plan_id=37] + +(265) Sort +Input [4]: [ws_sold_date_sk#31, ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Arguments: [ws_sold_date_sk#31 ASC NULLS FIRST], false, 0 + +(266) Scan parquet +Output [3]: [d_date_sk#35, d_year#54, d_moy#55] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), EqualTo(d_moy,2), IsNotNull(d_date_sk)] +ReadSchema: struct + +(267) Filter +Input [3]: [d_date_sk#35, d_year#54, d_moy#55] +Condition : ((((isnotnull(d_year#54) AND isnotnull(d_moy#55)) AND (d_year#54 = 2001)) AND (d_moy#55 = 2)) AND isnotnull(d_date_sk#35)) + +(268) Project +Output [1]: [d_date_sk#35] +Input [3]: [d_date_sk#35, d_year#54, d_moy#55] + +(269) Exchange +Input [1]: [d_date_sk#35] +Arguments: hashpartitioning(d_date_sk#35, 100), ENSURE_REQUIREMENTS, [plan_id=38] + +(270) Sort +Input [1]: [d_date_sk#35] +Arguments: [d_date_sk#35 ASC NULLS FIRST], false, 0 + +(271) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#31] +Right keys [1]: [d_date_sk#35] +Join type: Inner +Join condition: None + +(272) Project +Output [3]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Input [5]: [ws_sold_date_sk#31, ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34, d_date_sk#35] + +(273) Exchange +Input [3]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Arguments: hashpartitioning(ws_bill_addr_sk#33, 100), ENSURE_REQUIREMENTS, [plan_id=39] + +(274) Sort +Input [3]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Arguments: [ws_bill_addr_sk#33 ASC NULLS FIRST], false, 0 + +(275) Scan parquet +Output [2]: [ca_address_sk#36, ca_gmt_offset#56] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_gmt_offset), EqualTo(ca_gmt_offset,-5.00), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(276) Filter +Input [2]: [ca_address_sk#36, ca_gmt_offset#56] +Condition : ((isnotnull(ca_gmt_offset#56) AND (ca_gmt_offset#56 = -5.00)) AND isnotnull(ca_address_sk#36)) + +(277) Project +Output [1]: [ca_address_sk#36] +Input [2]: [ca_address_sk#36, ca_gmt_offset#56] + +(278) Exchange +Input [1]: [ca_address_sk#36] +Arguments: hashpartitioning(ca_address_sk#36, 100), ENSURE_REQUIREMENTS, [plan_id=40] + +(279) Sort +Input [1]: [ca_address_sk#36] +Arguments: [ca_address_sk#36 ASC NULLS FIRST], false, 0 + +(280) SortMergeJoin +Left keys [1]: [ws_bill_addr_sk#33] +Right keys [1]: [ca_address_sk#36] +Join type: Inner +Join condition: None + +(281) Project +Output [2]: [ws_item_sk#32, ws_ext_sales_price#34] +Input [4]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34, ca_address_sk#36] + +(282) Exchange +Input [2]: [ws_item_sk#32, ws_ext_sales_price#34] +Arguments: hashpartitioning(ws_item_sk#32, 100), ENSURE_REQUIREMENTS, [plan_id=41] + +(283) Sort +Input [2]: [ws_item_sk#32, ws_ext_sales_price#34] +Arguments: [ws_item_sk#32 ASC NULLS FIRST], false, 0 + +(284) Scan parquet +Output [2]: [i_item_sk#37, i_item_id#38] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(285) Filter +Input [2]: [i_item_sk#37, i_item_id#38] +Condition : isnotnull(i_item_sk#37) + +(286) Exchange +Input [2]: [i_item_sk#37, i_item_id#38] +Arguments: hashpartitioning(i_item_id#38, 100), ENSURE_REQUIREMENTS, [plan_id=42] + +(287) Sort +Input [2]: [i_item_sk#37, i_item_id#38] +Arguments: [i_item_id#38 ASC NULLS FIRST], false, 0 + +(288) Scan parquet +Output [2]: [i_item_id#57, i_color#58] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(i_color, [blanched,burnished,slate])] +ReadSchema: struct + +(289) Filter +Input [2]: [i_item_id#57, i_color#58] +Condition : i_color#58 IN (slate,blanched,burnished) + +(290) Project +Output [1]: [i_item_id#57] +Input [2]: [i_item_id#57, i_color#58] + +(291) Exchange +Input [1]: [i_item_id#57] +Arguments: hashpartitioning(i_item_id#57, 100), ENSURE_REQUIREMENTS, [plan_id=43] + +(292) Sort +Input [1]: [i_item_id#57] +Arguments: [i_item_id#57 ASC NULLS FIRST], false, 0 + +(293) SortMergeJoin +Left keys [1]: [i_item_id#38] +Right keys [1]: [i_item_id#57] +Join type: LeftSemi +Join condition: None + +(294) Exchange +Input [2]: [i_item_sk#37, i_item_id#38] +Arguments: hashpartitioning(i_item_sk#37, 100), ENSURE_REQUIREMENTS, [plan_id=44] + +(295) Sort +Input [2]: [i_item_sk#37, i_item_id#38] +Arguments: [i_item_sk#37 ASC NULLS FIRST], false, 0 + +(296) SortMergeJoin +Left keys [1]: [ws_item_sk#32] +Right keys [1]: [i_item_sk#37] +Join type: Inner +Join condition: None + +(297) Project +Output [2]: [ws_ext_sales_price#34, i_item_id#38] +Input [4]: [ws_item_sk#32, ws_ext_sales_price#34, i_item_sk#37, i_item_id#38] + +(298) HashAggregate +Input [2]: [ws_ext_sales_price#34, i_item_id#38] +Keys [1]: [i_item_id#38] +Functions [1]: [partial_sum(UnscaledValue(ws_ext_sales_price#34))] +Aggregate Attributes [1]: [sum#40] +Results [2]: [i_item_id#38, sum#59] + +(299) Exchange +Input [2]: [i_item_id#38, sum#59] +Arguments: hashpartitioning(i_item_id#38, 100), ENSURE_REQUIREMENTS, [plan_id=45] + +(300) HashAggregate +Input [2]: [i_item_id#38, sum#59] +Keys [1]: [i_item_id#38] +Functions [1]: [sum(UnscaledValue(ws_ext_sales_price#34))] +Aggregate Attributes [1]: [sum(UnscaledValue(ws_ext_sales_price#34))#41] +Results [2]: [i_item_id#38, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#34))#41,17,2) AS total_sales#42] + +(301) Union + +(302) HashAggregate +Input [2]: [i_item_id#11, total_sales#18] +Keys [1]: [i_item_id#11] +Functions [1]: [partial_sum(total_sales#18)] +Aggregate Attributes [2]: [sum#43, isEmpty#44] +Results [3]: [i_item_id#11, sum#60, isEmpty#61] + +(303) Exchange +Input [3]: [i_item_id#11, sum#60, isEmpty#61] +Arguments: hashpartitioning(i_item_id#11, 100), ENSURE_REQUIREMENTS, [plan_id=46] + +(304) HashAggregate +Input [3]: [i_item_id#11, sum#60, isEmpty#61] +Keys [1]: [i_item_id#11] +Functions [1]: [sum(total_sales#18)] +Aggregate Attributes [1]: [sum(total_sales#18)#45] +Results [2]: [i_item_id#11, sum(total_sales#18)#45 AS total_sales#46] + +(305) TakeOrderedAndProject +Input [2]: [i_item_id#11, total_sales#46] +Arguments: X, [total_sales#46 ASC NULLS FIRST, i_item_id#11 ASC NULLS FIRST], [i_item_id#11, total_sales#46] + +(306) AdaptiveSparkPlan +Output [2]: [i_item_id#11, total_sales#46] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q57.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q57.txt new file mode 100644 index 000000000..ac282457c --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q57.txt @@ -0,0 +1,1210 @@ +== Physical Plan == +AdaptiveSparkPlan (223) ++- == Final Plan == + NativeTakeOrdered (109) + +- NativeProject (108) + +- NativeSortMergeJoin Inner (107) + :- NativeProject (93) + : +- NativeSortMergeJoin Inner (92) + : :- NativeSort (72) + : : +- InputAdapter (71) + : : +- AQEShuffleRead (70) + : : +- ShuffleQueryStage (69), Statistics(X) + : : +- NativeShuffleExchange (68) + : : +- ConvertToNative (67) + : : +- * Project (66) + : : +- * Filter (65) + : : +- Window (64) + : : +- NativeFilter (63) + : : +- NativeWindow (62) + : : +- NativeSort (61) + : : +- InputAdapter (60) + : : +- AQEShuffleRead (59) + : : +- ShuffleQueryStage (58), Statistics(X) + : : +- NativeShuffleExchange (57) + : : +- NativeProject (56) + : : +- NativeHashAggregate (55) + : : +- InputAdapter (54) + : : +- AQEShuffleRead (53) + : : +- ShuffleQueryStage (52), Statistics(X) + : : +- NativeShuffleExchange (51) + : : +- NativeHashAggregate (50) + : : +- NativeProject (49) + : : +- NativeProject (48) + : : +- NativeSortMergeJoin Inner (47) + : : :- NativeSort (38) + : : : +- InputAdapter (37) + : : : +- AQEShuffleRead (36) + : : : +- ShuffleQueryStage (35), Statistics(X) + : : : +- NativeShuffleExchange (34) + : : : +- NativeProject (33) + : : : +- NativeSortMergeJoin Inner (32) + : : : :- NativeSort (23) + : : : : +- InputAdapter (22) + : : : : +- AQEShuffleRead (21) + : : : : +- ShuffleQueryStage (20), Statistics(X) + : : : : +- NativeShuffleExchange (19) + : : : : +- NativeProject (18) + : : : : +- NativeSortMergeJoin Inner (17) + : : : : :- NativeSort (8) + : : : : : +- InputAdapter (7) + : : : : : +- AQEShuffleRead (6) + : : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : : +- NativeShuffleExchange (4) + : : : : : +- NativeFilter (3) + : : : : : +- InputAdapter (2) + : : : : : +- NativeParquetScan (1) + : : : : +- NativeSort (16) + : : : : +- InputAdapter (15) + : : : : +- AQEShuffleRead (14) + : : : : +- ShuffleQueryStage (13), Statistics(X) + : : : : +- NativeShuffleExchange (12) + : : : : +- NativeFilter (11) + : : : : +- InputAdapter (10) + : : : : +- NativeParquetScan (9) + : : : +- NativeSort (31) + : : : +- InputAdapter (30) + : : : +- AQEShuffleRead (29) + : : : +- ShuffleQueryStage (28), Statistics(X) + : : : +- NativeShuffleExchange (27) + : : : +- NativeFilter (26) + : : : +- InputAdapter (25) + : : : +- NativeParquetScan (24) + : : +- NativeSort (46) + : : +- InputAdapter (45) + : : +- AQEShuffleRead (44) + : : +- ShuffleQueryStage (43), Statistics(X) + : : +- NativeShuffleExchange (42) + : : +- NativeFilter (41) + : : +- InputAdapter (40) + : : +- NativeParquetScan (39) + : +- NativeSort (91) + : +- InputAdapter (90) + : +- AQEShuffleRead (89) + : +- ShuffleQueryStage (88), Statistics(X) + : +- NativeShuffleExchange (87) + : +- NativeProject (86) + : +- NativeWindow (85) + : +- NativeSort (84) + : +- InputAdapter (83) + : +- AQEShuffleRead (82) + : +- ShuffleQueryStage (81), Statistics(X) + : +- NativeShuffleExchange (80) + : +- NativeProject (79) + : +- NativeHashAggregate (78) + : +- InputAdapter (77) + : +- InputAdapter (76) + : +- AQEShuffleRead (75) + : +- ShuffleQueryStage (74), Statistics(X) + : +- ReusedExchange (73) + +- NativeSort (106) + +- InputAdapter (105) + +- AQEShuffleRead (104) + +- ShuffleQueryStage (103), Statistics(X) + +- NativeShuffleExchange (102) + +- NativeProject (101) + +- NativeWindow (100) + +- NativeSort (99) + +- InputAdapter (98) + +- InputAdapter (97) + +- AQEShuffleRead (96) + +- ShuffleQueryStage (95), Statistics(X) + +- ReusedExchange (94) ++- == Initial Plan == + TakeOrderedAndProject (222) + +- Project (221) + +- SortMergeJoin Inner (220) + :- Project (184) + : +- SortMergeJoin Inner (183) + : :- Sort (147) + : : +- Exchange (146) + : : +- Project (145) + : : +- Filter (144) + : : +- Window (143) + : : +- Filter (142) + : : +- Window (141) + : : +- Sort (140) + : : +- Exchange (139) + : : +- HashAggregate (138) + : : +- Exchange (137) + : : +- HashAggregate (136) + : : +- Project (135) + : : +- SortMergeJoin Inner (134) + : : :- Sort (129) + : : : +- Exchange (128) + : : : +- Project (127) + : : : +- SortMergeJoin Inner (126) + : : : :- Sort (121) + : : : : +- Exchange (120) + : : : : +- Project (119) + : : : : +- SortMergeJoin Inner (118) + : : : : :- Sort (113) + : : : : : +- Exchange (112) + : : : : : +- Filter (111) + : : : : : +- Scan parquet (110) + : : : : +- Sort (117) + : : : : +- Exchange (116) + : : : : +- Filter (115) + : : : : +- Scan parquet (114) + : : : +- Sort (125) + : : : +- Exchange (124) + : : : +- Filter (123) + : : : +- Scan parquet (122) + : : +- Sort (133) + : : +- Exchange (132) + : : +- Filter (131) + : : +- Scan parquet (130) + : +- Sort (182) + : +- Exchange (181) + : +- Project (180) + : +- Window (179) + : +- Sort (178) + : +- Exchange (177) + : +- HashAggregate (176) + : +- Exchange (175) + : +- HashAggregate (174) + : +- Project (173) + : +- SortMergeJoin Inner (172) + : :- Sort (167) + : : +- Exchange (166) + : : +- Project (165) + : : +- SortMergeJoin Inner (164) + : : :- Sort (159) + : : : +- Exchange (158) + : : : +- Project (157) + : : : +- SortMergeJoin Inner (156) + : : : :- Sort (151) + : : : : +- Exchange (150) + : : : : +- Filter (149) + : : : : +- Scan parquet (148) + : : : +- Sort (155) + : : : +- Exchange (154) + : : : +- Filter (153) + : : : +- Scan parquet (152) + : : +- Sort (163) + : : +- Exchange (162) + : : +- Filter (161) + : : +- Scan parquet (160) + : +- Sort (171) + : +- Exchange (170) + : +- Filter (169) + : +- Scan parquet (168) + +- Sort (219) + +- Exchange (218) + +- Project (217) + +- Window (216) + +- Sort (215) + +- Exchange (214) + +- HashAggregate (213) + +- Exchange (212) + +- HashAggregate (211) + +- Project (210) + +- SortMergeJoin Inner (209) + :- Sort (204) + : +- Exchange (203) + : +- Project (202) + : +- SortMergeJoin Inner (201) + : :- Sort (196) + : : +- Exchange (195) + : : +- Project (194) + : : +- SortMergeJoin Inner (193) + : : :- Sort (188) + : : : +- Exchange (187) + : : : +- Filter (186) + : : : +- Scan parquet (185) + : : +- Sort (192) + : : +- Exchange (191) + : : +- Filter (190) + : : +- Scan parquet (189) + : +- Sort (200) + : +- Exchange (199) + : +- Filter (198) + : +- Scan parquet (197) + +- Sort (208) + +- Exchange (207) + +- Filter (206) + +- Scan parquet (205) + + +(110) Scan parquet +Output [3]: [i_item_sk#1, i_brand#2, i_category#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_category), IsNotNull(i_brand)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [i_item_sk#1, i_brand#2, i_category#3] +Arguments: [#1, #2, #3] + +(3) NativeFilter +Input [3]: [#1#1, #2#2, #3#3] +Condition : ((isnotnull(i_item_sk#1) AND isnotnull(i_category#3)) AND isnotnull(i_brand#2)) + +(4) NativeShuffleExchange +Input [3]: [#1#1, #2#2, #3#3] +Arguments: hashpartitioning(i_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [3]: [#1#1, #2#2, #3#3] +Arguments: X + +(6) AQEShuffleRead +Input [3]: [#1#1, #2#2, #3#3] +Arguments: coalesced + +(7) InputAdapter +Input [3]: [#1#1, #2#2, #3#3] + +(8) NativeSort +Input [3]: [#1#1, #2#2, #3#3] +Arguments: [i_item_sk#1 ASC NULLS FIRST], false + +(114) Scan parquet +Output [4]: [cs_sold_date_sk#4, cs_call_center_sk#5, cs_item_sk#6, cs_sales_price#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk), IsNotNull(cs_call_center_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [4]: [cs_sold_date_sk#4, cs_call_center_sk#5, cs_item_sk#6, cs_sales_price#7] +Arguments: [#4, #5, #6, #7] + +(11) NativeFilter +Input [4]: [#4#4, #5#5, #6#6, #7#7] +Condition : ((isnotnull(cs_item_sk#6) AND isnotnull(cs_sold_date_sk#4)) AND isnotnull(cs_call_center_sk#5)) + +(12) NativeShuffleExchange +Input [4]: [#4#4, #5#5, #6#6, #7#7] +Arguments: hashpartitioning(cs_item_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [4]: [#4#4, #5#5, #6#6, #7#7] +Arguments: X + +(14) AQEShuffleRead +Input [4]: [#4#4, #5#5, #6#6, #7#7] +Arguments: coalesced + +(15) InputAdapter +Input [4]: [#4#4, #5#5, #6#6, #7#7] + +(16) NativeSort +Input [4]: [#4#4, #5#5, #6#6, #7#7] +Arguments: [cs_item_sk#6 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [1]: [i_item_sk#1] +Right keys [1]: [cs_item_sk#6] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [5]: [i_brand#2, i_category#3, cs_sold_date_sk#4, cs_call_center_sk#5, cs_sales_price#7] +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] + +(19) NativeShuffleExchange +Input [5]: [i_brand#2, i_category#3, cs_sold_date_sk#4, cs_call_center_sk#5, cs_sales_price#7] +Arguments: hashpartitioning(cs_sold_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [5]: [i_brand#2, i_category#3, cs_sold_date_sk#4, cs_call_center_sk#5, cs_sales_price#7] +Arguments: X + +(21) AQEShuffleRead +Input [5]: [i_brand#2, i_category#3, cs_sold_date_sk#4, cs_call_center_sk#5, cs_sales_price#7] +Arguments: coalesced + +(22) InputAdapter +Input [5]: [i_brand#2, i_category#3, cs_sold_date_sk#4, cs_call_center_sk#5, cs_sales_price#7] + +(23) NativeSort +Input [5]: [i_brand#2, i_category#3, cs_sold_date_sk#4, cs_call_center_sk#5, cs_sales_price#7] +Arguments: [cs_sold_date_sk#4 ASC NULLS FIRST], false + +(122) Scan parquet +Output [3]: [d_date_sk#8, d_year#9, d_moy#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(Or(EqualTo(d_year,1999),And(EqualTo(d_year,1998),EqualTo(d_moy,12))),And(EqualTo(d_year,2000),EqualTo(d_moy,1))), IsNotNull(d_date_sk)] +ReadSchema: struct + +(25) InputAdapter +Input [3]: [d_date_sk#8, d_year#9, d_moy#10] +Arguments: [#8, #9, #10] + +(26) NativeFilter +Input [3]: [#8#8, #9#9, #10#10] +Condition : ((((d_year#9 = 1999) OR ((d_year#9 = 1998) AND (d_moy#10 = 12))) OR ((d_year#9 = 2000) AND (d_moy#10 = 1))) AND isnotnull(d_date_sk#8)) + +(27) NativeShuffleExchange +Input [3]: [#8#8, #9#9, #10#10] +Arguments: hashpartitioning(d_date_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(28) ShuffleQueryStage +Output [3]: [#8#8, #9#9, #10#10] +Arguments: X + +(29) AQEShuffleRead +Input [3]: [#8#8, #9#9, #10#10] +Arguments: coalesced + +(30) InputAdapter +Input [3]: [#8#8, #9#9, #10#10] + +(31) NativeSort +Input [3]: [#8#8, #9#9, #10#10] +Arguments: [d_date_sk#8 ASC NULLS FIRST], false + +(32) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#4] +Right keys [1]: [d_date_sk#8] +Join type: Inner +Join condition: None + +(33) NativeProject +Output [6]: [i_brand#2, i_category#3, cs_call_center_sk#5, cs_sales_price#7, d_year#9, d_moy#10] +Input [8]: [i_brand#2, i_category#3, cs_sold_date_sk#4, cs_call_center_sk#5, cs_sales_price#7, #8#8, #9#9, #10#10] + +(34) NativeShuffleExchange +Input [6]: [i_brand#2, i_category#3, cs_call_center_sk#5, cs_sales_price#7, d_year#9, d_moy#10] +Arguments: hashpartitioning(cs_call_center_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(35) ShuffleQueryStage +Output [6]: [i_brand#2, i_category#3, cs_call_center_sk#5, cs_sales_price#7, d_year#9, d_moy#10] +Arguments: X + +(36) AQEShuffleRead +Input [6]: [i_brand#2, i_category#3, cs_call_center_sk#5, cs_sales_price#7, d_year#9, d_moy#10] +Arguments: coalesced + +(37) InputAdapter +Input [6]: [i_brand#2, i_category#3, cs_call_center_sk#5, cs_sales_price#7, d_year#9, d_moy#10] + +(38) NativeSort +Input [6]: [i_brand#2, i_category#3, cs_call_center_sk#5, cs_sales_price#7, d_year#9, d_moy#10] +Arguments: [cs_call_center_sk#5 ASC NULLS FIRST], false + +(130) Scan parquet +Output [2]: [cc_call_center_sk#11, cc_name#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cc_call_center_sk), IsNotNull(cc_name)] +ReadSchema: struct + +(40) InputAdapter +Input [2]: [cc_call_center_sk#11, cc_name#12] +Arguments: [#11, #12] + +(41) NativeFilter +Input [2]: [#11#11, #12#12] +Condition : (isnotnull(cc_call_center_sk#11) AND isnotnull(cc_name#12)) + +(42) NativeShuffleExchange +Input [2]: [#11#11, #12#12] +Arguments: hashpartitioning(cc_call_center_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(43) ShuffleQueryStage +Output [2]: [#11#11, #12#12] +Arguments: X + +(44) AQEShuffleRead +Input [2]: [#11#11, #12#12] +Arguments: coalesced + +(45) InputAdapter +Input [2]: [#11#11, #12#12] + +(46) NativeSort +Input [2]: [#11#11, #12#12] +Arguments: [cc_call_center_sk#11 ASC NULLS FIRST], false + +(47) NativeSortMergeJoin +Left keys [1]: [cs_call_center_sk#5] +Right keys [1]: [cc_call_center_sk#11] +Join type: Inner +Join condition: None + +(48) NativeProject +Output [6]: [i_brand#2, i_category#3, cs_sales_price#7, d_year#9, d_moy#10, cc_name#12] +Input [8]: [i_brand#2, i_category#3, cs_call_center_sk#5, cs_sales_price#7, d_year#9, d_moy#10, #11#11, #12#12] + +(49) NativeProject +Output [6]: [i_category#3 AS i_category#3, i_brand#2 AS i_brand#2, cc_name#12 AS cc_name#12, d_year#9 AS d_year#9, d_moy#10 AS d_moy#10, UnscaledValue(cs_sales_price#7) AS _c5#13] +Input [6]: [i_brand#2, i_category#3, cs_sales_price#7, d_year#9, d_moy#10, cc_name#12] + +(50) NativeHashAggregate +Input [6]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, _c5#13] +Keys [5]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10] +Functions [1]: [partial_sum(_c5#13)] +Aggregate Attributes [1]: [sum#14] +Results [6]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, #15#15] + +(51) NativeShuffleExchange +Input [6]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, #15#15] +Arguments: hashpartitioning(i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(52) ShuffleQueryStage +Output [6]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, #15#15] +Arguments: X + +(53) AQEShuffleRead +Input [6]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, #15#15] +Arguments: coalesced + +(54) InputAdapter +Input [6]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, #15#15] + +(55) NativeHashAggregate +Input [6]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, #15#15] +Keys [5]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10] +Functions [1]: [sum(UnscaledValue(cs_sales_price#7))] +Aggregate Attributes [1]: [sum(UnscaledValue(cs_sales_price#7))#16] +Results [6]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum(UnscaledValue(cs_sales_price#7))#16] + +(56) NativeProject +Output [7]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, MakeDecimal(sum(UnscaledValue(cs_sales_price#7))#16,17,2) AS sum_sales#17, MakeDecimal(sum(UnscaledValue(cs_sales_price#7))#16,17,2) AS _w0#18] +Input [6]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum(UnscaledValue(cs_sales_price#7))#16] + +(57) NativeShuffleExchange +Input [7]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, _w0#18] +Arguments: hashpartitioning(i_category#3, i_brand#2, cc_name#12, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(58) ShuffleQueryStage +Output [7]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, _w0#18] +Arguments: X + +(59) AQEShuffleRead +Input [7]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, _w0#18] +Arguments: coalesced + +(60) InputAdapter +Input [7]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, _w0#18] + +(61) NativeSort +Input [7]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, _w0#18] +Arguments: [i_category#3 ASC NULLS FIRST, i_brand#2 ASC NULLS FIRST, cc_name#12 ASC NULLS FIRST, d_year#9 ASC NULLS FIRST, d_moy#10 ASC NULLS FIRST], false + +(62) NativeWindow +Input [7]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, _w0#18] +Arguments: [rank(d_year#9, d_moy#10) windowspecdefinition(i_category#3, i_brand#2, cc_name#12, d_year#9 ASC NULLS FIRST, d_moy#10 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rn#19], [i_category#3, i_brand#2, cc_name#12], [d_year#9 ASC NULLS FIRST, d_moy#10 ASC NULLS FIRST] + +(63) NativeFilter +Input [8]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, _w0#18, rn#19] +Condition : (isnotnull(d_year#9) AND (d_year#9 = 1999)) + +(64) Window +Input [8]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, _w0#18, rn#19] +Arguments: [avg(_w0#18) windowspecdefinition(i_category#3, i_brand#2, cc_name#12, d_year#9, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS avg_monthly_sales#20], [i_category#3, i_brand#2, cc_name#12, d_year#9] + +(65) Filter [codegen id : 1] +Input [9]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, _w0#18, rn#19, avg_monthly_sales#20] +Condition : ((isnotnull(avg_monthly_sales#20) AND (avg_monthly_sales#20 > 0.000000)) AND CASE WHEN (avg_monthly_sales#20 > 0.000000) THEN ((abs((sum_sales#17 - avg_monthly_sales#20)) / avg_monthly_sales#20) > 0.1000000000000000) END) + +(66) Project [codegen id : 1] +Output [8]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, avg_monthly_sales#20, rn#19] +Input [9]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, _w0#18, rn#19, avg_monthly_sales#20] + +(67) ConvertToNative +Input [8]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, avg_monthly_sales#20, rn#19] + +(68) NativeShuffleExchange +Input [8]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, avg_monthly_sales#20, rn#19] +Arguments: hashpartitioning(i_category#3, i_brand#2, cc_name#12, rn#19, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(69) ShuffleQueryStage +Output [8]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, avg_monthly_sales#20, rn#19] +Arguments: X + +(70) AQEShuffleRead +Input [8]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, avg_monthly_sales#20, rn#19] +Arguments: coalesced + +(71) InputAdapter +Input [8]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, avg_monthly_sales#20, rn#19] + +(72) NativeSort +Input [8]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, avg_monthly_sales#20, rn#19] +Arguments: [i_category#3 ASC NULLS FIRST, i_brand#2 ASC NULLS FIRST, cc_name#12 ASC NULLS FIRST, rn#19 ASC NULLS FIRST], false + +(73) ReusedExchange [Reuses operator id: 51] +Output [6]: [i_category#21, i_brand#22, cc_name#23, d_year#24, d_moy#25, sum#26] + +(74) ShuffleQueryStage +Output [6]: [i_category#21, i_brand#22, cc_name#23, d_year#24, d_moy#25, sum#26] +Arguments: X + +(75) AQEShuffleRead +Input [6]: [i_category#21, i_brand#22, cc_name#23, d_year#24, d_moy#25, sum#26] +Arguments: coalesced + +(76) InputAdapter +Input [6]: [i_category#21, i_brand#22, cc_name#23, d_year#24, d_moy#25, sum#26] +Arguments: [#21, #22, #23, #24, #25, #27] + +(77) InputAdapter +Input [6]: [#21#21, #22#22, #23#23, #24#24, #25#25, #27#26] + +(78) NativeHashAggregate +Input [6]: [#21#21, #22#22, #23#23, #24#24, #25#25, #27#26] +Keys [5]: [i_category#21, i_brand#22, cc_name#23, d_year#24, d_moy#25] +Functions [1]: [sum(UnscaledValue(cs_sales_price#28))] +Aggregate Attributes [1]: [sum(UnscaledValue(cs_sales_price#28))#16] +Results [6]: [i_category#21, i_brand#22, cc_name#23, d_year#24, d_moy#25, sum(UnscaledValue(cs_sales_price#28))#16] + +(79) NativeProject +Output [6]: [i_category#21, i_brand#22, cc_name#23, d_year#24, d_moy#25, MakeDecimal(sum(UnscaledValue(cs_sales_price#28))#16,17,2) AS sum_sales#17] +Input [6]: [i_category#21, i_brand#22, cc_name#23, d_year#24, d_moy#25, sum(UnscaledValue(cs_sales_price#28))#16] + +(80) NativeShuffleExchange +Input [6]: [i_category#21, i_brand#22, cc_name#23, d_year#24, d_moy#25, sum_sales#17] +Arguments: hashpartitioning(i_category#21, i_brand#22, cc_name#23, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(81) ShuffleQueryStage +Output [6]: [i_category#21, i_brand#22, cc_name#23, d_year#24, d_moy#25, sum_sales#17] +Arguments: X + +(82) AQEShuffleRead +Input [6]: [i_category#21, i_brand#22, cc_name#23, d_year#24, d_moy#25, sum_sales#17] +Arguments: coalesced + +(83) InputAdapter +Input [6]: [i_category#21, i_brand#22, cc_name#23, d_year#24, d_moy#25, sum_sales#17] + +(84) NativeSort +Input [6]: [i_category#21, i_brand#22, cc_name#23, d_year#24, d_moy#25, sum_sales#17] +Arguments: [i_category#21 ASC NULLS FIRST, i_brand#22 ASC NULLS FIRST, cc_name#23 ASC NULLS FIRST, d_year#24 ASC NULLS FIRST, d_moy#25 ASC NULLS FIRST], false + +(85) NativeWindow +Input [6]: [i_category#21, i_brand#22, cc_name#23, d_year#24, d_moy#25, sum_sales#17] +Arguments: [rank(d_year#24, d_moy#25) windowspecdefinition(i_category#21, i_brand#22, cc_name#23, d_year#24 ASC NULLS FIRST, d_moy#25 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rn#29], [i_category#21, i_brand#22, cc_name#23], [d_year#24 ASC NULLS FIRST, d_moy#25 ASC NULLS FIRST] + +(86) NativeProject +Output [5]: [i_category#21, i_brand#22, cc_name#23, sum_sales#17 AS sum_sales#30, rn#29] +Input [7]: [i_category#21, i_brand#22, cc_name#23, d_year#24, d_moy#25, sum_sales#17, rn#29] + +(87) NativeShuffleExchange +Input [5]: [i_category#21, i_brand#22, cc_name#23, sum_sales#30, rn#29] +Arguments: hashpartitioning(i_category#21, i_brand#22, cc_name#23, (rn#29 + 1), 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(88) ShuffleQueryStage +Output [5]: [i_category#21, i_brand#22, cc_name#23, sum_sales#30, rn#29] +Arguments: X + +(89) AQEShuffleRead +Input [5]: [i_category#21, i_brand#22, cc_name#23, sum_sales#30, rn#29] +Arguments: coalesced + +(90) InputAdapter +Input [5]: [i_category#21, i_brand#22, cc_name#23, sum_sales#30, rn#29] + +(91) NativeSort +Input [5]: [i_category#21, i_brand#22, cc_name#23, sum_sales#30, rn#29] +Arguments: [i_category#21 ASC NULLS FIRST, i_brand#22 ASC NULLS FIRST, cc_name#23 ASC NULLS FIRST, (rn#29 + 1) ASC NULLS FIRST], false + +(92) NativeSortMergeJoin +Left keys [4]: [i_category#3, i_brand#2, cc_name#12, rn#19] +Right keys [4]: [i_category#21, i_brand#22, cc_name#23, (rn#29 + 1)] +Join type: Inner +Join condition: None + +(93) NativeProject +Output [9]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, avg_monthly_sales#20, rn#19, sum_sales#30] +Input [13]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, avg_monthly_sales#20, rn#19, i_category#21, i_brand#22, cc_name#23, sum_sales#30, rn#29] + +(94) ReusedExchange [Reuses operator id: 80] +Output [6]: [i_category#31, i_brand#32, cc_name#33, d_year#34, d_moy#35, sum_sales#17] + +(95) ShuffleQueryStage +Output [6]: [i_category#31, i_brand#32, cc_name#33, d_year#34, d_moy#35, sum_sales#17] +Arguments: X + +(96) AQEShuffleRead +Input [6]: [i_category#31, i_brand#32, cc_name#33, d_year#34, d_moy#35, sum_sales#17] +Arguments: coalesced + +(97) InputAdapter +Input [6]: [i_category#31, i_brand#32, cc_name#33, d_year#34, d_moy#35, sum_sales#17] +Arguments: [#31, #32, #33, #34, #35, #17] + +(98) InputAdapter +Input [6]: [#31#31, #32#32, #33#33, #34#34, #35#35, #17#17] + +(99) NativeSort +Input [6]: [#31#31, #32#32, #33#33, #34#34, #35#35, #17#17] +Arguments: [i_category#31 ASC NULLS FIRST, i_brand#32 ASC NULLS FIRST, cc_name#33 ASC NULLS FIRST, d_year#34 ASC NULLS FIRST, d_moy#35 ASC NULLS FIRST], false + +(100) NativeWindow +Input [6]: [#31#31, #32#32, #33#33, #34#34, #35#35, #17#17] +Arguments: [rank(d_year#34, d_moy#35) windowspecdefinition(i_category#31, i_brand#32, cc_name#33, d_year#34 ASC NULLS FIRST, d_moy#35 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rn#36], [i_category#31, i_brand#32, cc_name#33], [d_year#34 ASC NULLS FIRST, d_moy#35 ASC NULLS FIRST] + +(101) NativeProject +Output [5]: [i_category#31, i_brand#32, cc_name#33, sum_sales#17 AS sum_sales#37, rn#36] +Input [7]: [#31#31, #32#32, #33#33, #34#34, #35#35, #17#17, rn#36] + +(102) NativeShuffleExchange +Input [5]: [i_category#31, i_brand#32, cc_name#33, sum_sales#37, rn#36] +Arguments: hashpartitioning(i_category#31, i_brand#32, cc_name#33, (rn#36 - 1), 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(103) ShuffleQueryStage +Output [5]: [i_category#31, i_brand#32, cc_name#33, sum_sales#37, rn#36] +Arguments: X + +(104) AQEShuffleRead +Input [5]: [i_category#31, i_brand#32, cc_name#33, sum_sales#37, rn#36] +Arguments: coalesced + +(105) InputAdapter +Input [5]: [i_category#31, i_brand#32, cc_name#33, sum_sales#37, rn#36] + +(106) NativeSort +Input [5]: [i_category#31, i_brand#32, cc_name#33, sum_sales#37, rn#36] +Arguments: [i_category#31 ASC NULLS FIRST, i_brand#32 ASC NULLS FIRST, cc_name#33 ASC NULLS FIRST, (rn#36 - 1) ASC NULLS FIRST], false + +(107) NativeSortMergeJoin +Left keys [4]: [i_category#3, i_brand#2, cc_name#12, rn#19] +Right keys [4]: [i_category#31, i_brand#32, cc_name#33, (rn#36 - 1)] +Join type: Inner +Join condition: None + +(108) NativeProject +Output [9]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, avg_monthly_sales#20, sum_sales#17, sum_sales#30 AS psum#38, sum_sales#37 AS nsum#39] +Input [14]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, avg_monthly_sales#20, rn#19, sum_sales#30, i_category#31, i_brand#32, cc_name#33, sum_sales#37, rn#36] + +(109) NativeTakeOrdered +Input [9]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, avg_monthly_sales#20, sum_sales#17, psum#38, nsum#39] +Arguments: X, [(sum_sales#17 - avg_monthly_sales#20) ASC NULLS FIRST, cc_name#12 ASC NULLS FIRST] + +(110) Scan parquet +Output [3]: [i_item_sk#1, i_brand#2, i_category#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_category), IsNotNull(i_brand)] +ReadSchema: struct + +(111) Filter +Input [3]: [i_item_sk#1, i_brand#2, i_category#3] +Condition : ((isnotnull(i_item_sk#1) AND isnotnull(i_category#3)) AND isnotnull(i_brand#2)) + +(112) Exchange +Input [3]: [i_item_sk#1, i_brand#2, i_category#3] +Arguments: hashpartitioning(i_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(113) Sort +Input [3]: [i_item_sk#1, i_brand#2, i_category#3] +Arguments: [i_item_sk#1 ASC NULLS FIRST], false, 0 + +(114) Scan parquet +Output [4]: [cs_sold_date_sk#4, cs_call_center_sk#5, cs_item_sk#6, cs_sales_price#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk), IsNotNull(cs_call_center_sk)] +ReadSchema: struct + +(115) Filter +Input [4]: [cs_sold_date_sk#4, cs_call_center_sk#5, cs_item_sk#6, cs_sales_price#7] +Condition : ((isnotnull(cs_item_sk#6) AND isnotnull(cs_sold_date_sk#4)) AND isnotnull(cs_call_center_sk#5)) + +(116) Exchange +Input [4]: [cs_sold_date_sk#4, cs_call_center_sk#5, cs_item_sk#6, cs_sales_price#7] +Arguments: hashpartitioning(cs_item_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(117) Sort +Input [4]: [cs_sold_date_sk#4, cs_call_center_sk#5, cs_item_sk#6, cs_sales_price#7] +Arguments: [cs_item_sk#6 ASC NULLS FIRST], false, 0 + +(118) SortMergeJoin +Left keys [1]: [i_item_sk#1] +Right keys [1]: [cs_item_sk#6] +Join type: Inner +Join condition: None + +(119) Project +Output [5]: [i_brand#2, i_category#3, cs_sold_date_sk#4, cs_call_center_sk#5, cs_sales_price#7] +Input [7]: [i_item_sk#1, i_brand#2, i_category#3, cs_sold_date_sk#4, cs_call_center_sk#5, cs_item_sk#6, cs_sales_price#7] + +(120) Exchange +Input [5]: [i_brand#2, i_category#3, cs_sold_date_sk#4, cs_call_center_sk#5, cs_sales_price#7] +Arguments: hashpartitioning(cs_sold_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(121) Sort +Input [5]: [i_brand#2, i_category#3, cs_sold_date_sk#4, cs_call_center_sk#5, cs_sales_price#7] +Arguments: [cs_sold_date_sk#4 ASC NULLS FIRST], false, 0 + +(122) Scan parquet +Output [3]: [d_date_sk#8, d_year#9, d_moy#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(Or(EqualTo(d_year,1999),And(EqualTo(d_year,1998),EqualTo(d_moy,12))),And(EqualTo(d_year,2000),EqualTo(d_moy,1))), IsNotNull(d_date_sk)] +ReadSchema: struct + +(123) Filter +Input [3]: [d_date_sk#8, d_year#9, d_moy#10] +Condition : ((((d_year#9 = 1999) OR ((d_year#9 = 1998) AND (d_moy#10 = 12))) OR ((d_year#9 = 2000) AND (d_moy#10 = 1))) AND isnotnull(d_date_sk#8)) + +(124) Exchange +Input [3]: [d_date_sk#8, d_year#9, d_moy#10] +Arguments: hashpartitioning(d_date_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(125) Sort +Input [3]: [d_date_sk#8, d_year#9, d_moy#10] +Arguments: [d_date_sk#8 ASC NULLS FIRST], false, 0 + +(126) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#4] +Right keys [1]: [d_date_sk#8] +Join type: Inner +Join condition: None + +(127) Project +Output [6]: [i_brand#2, i_category#3, cs_call_center_sk#5, cs_sales_price#7, d_year#9, d_moy#10] +Input [8]: [i_brand#2, i_category#3, cs_sold_date_sk#4, cs_call_center_sk#5, cs_sales_price#7, d_date_sk#8, d_year#9, d_moy#10] + +(128) Exchange +Input [6]: [i_brand#2, i_category#3, cs_call_center_sk#5, cs_sales_price#7, d_year#9, d_moy#10] +Arguments: hashpartitioning(cs_call_center_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(129) Sort +Input [6]: [i_brand#2, i_category#3, cs_call_center_sk#5, cs_sales_price#7, d_year#9, d_moy#10] +Arguments: [cs_call_center_sk#5 ASC NULLS FIRST], false, 0 + +(130) Scan parquet +Output [2]: [cc_call_center_sk#11, cc_name#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cc_call_center_sk), IsNotNull(cc_name)] +ReadSchema: struct + +(131) Filter +Input [2]: [cc_call_center_sk#11, cc_name#12] +Condition : (isnotnull(cc_call_center_sk#11) AND isnotnull(cc_name#12)) + +(132) Exchange +Input [2]: [cc_call_center_sk#11, cc_name#12] +Arguments: hashpartitioning(cc_call_center_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(133) Sort +Input [2]: [cc_call_center_sk#11, cc_name#12] +Arguments: [cc_call_center_sk#11 ASC NULLS FIRST], false, 0 + +(134) SortMergeJoin +Left keys [1]: [cs_call_center_sk#5] +Right keys [1]: [cc_call_center_sk#11] +Join type: Inner +Join condition: None + +(135) Project +Output [6]: [i_brand#2, i_category#3, cs_sales_price#7, d_year#9, d_moy#10, cc_name#12] +Input [8]: [i_brand#2, i_category#3, cs_call_center_sk#5, cs_sales_price#7, d_year#9, d_moy#10, cc_call_center_sk#11, cc_name#12] + +(136) HashAggregate +Input [6]: [i_brand#2, i_category#3, cs_sales_price#7, d_year#9, d_moy#10, cc_name#12] +Keys [5]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10] +Functions [1]: [partial_sum(UnscaledValue(cs_sales_price#7))] +Aggregate Attributes [1]: [sum#14] +Results [6]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum#40] + +(137) Exchange +Input [6]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum#40] +Arguments: hashpartitioning(i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(138) HashAggregate +Input [6]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum#40] +Keys [5]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10] +Functions [1]: [sum(UnscaledValue(cs_sales_price#7))] +Aggregate Attributes [1]: [sum(UnscaledValue(cs_sales_price#7))#16] +Results [7]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, MakeDecimal(sum(UnscaledValue(cs_sales_price#7))#16,17,2) AS sum_sales#17, MakeDecimal(sum(UnscaledValue(cs_sales_price#7))#16,17,2) AS _w0#18] + +(139) Exchange +Input [7]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, _w0#18] +Arguments: hashpartitioning(i_category#3, i_brand#2, cc_name#12, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(140) Sort +Input [7]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, _w0#18] +Arguments: [i_category#3 ASC NULLS FIRST, i_brand#2 ASC NULLS FIRST, cc_name#12 ASC NULLS FIRST, d_year#9 ASC NULLS FIRST, d_moy#10 ASC NULLS FIRST], false, 0 + +(141) Window +Input [7]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, _w0#18] +Arguments: [rank(d_year#9, d_moy#10) windowspecdefinition(i_category#3, i_brand#2, cc_name#12, d_year#9 ASC NULLS FIRST, d_moy#10 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rn#19], [i_category#3, i_brand#2, cc_name#12], [d_year#9 ASC NULLS FIRST, d_moy#10 ASC NULLS FIRST] + +(142) Filter +Input [8]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, _w0#18, rn#19] +Condition : (isnotnull(d_year#9) AND (d_year#9 = 1999)) + +(143) Window +Input [8]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, _w0#18, rn#19] +Arguments: [avg(_w0#18) windowspecdefinition(i_category#3, i_brand#2, cc_name#12, d_year#9, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS avg_monthly_sales#20], [i_category#3, i_brand#2, cc_name#12, d_year#9] + +(144) Filter +Input [9]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, _w0#18, rn#19, avg_monthly_sales#20] +Condition : ((isnotnull(avg_monthly_sales#20) AND (avg_monthly_sales#20 > 0.000000)) AND CASE WHEN (avg_monthly_sales#20 > 0.000000) THEN ((abs((sum_sales#17 - avg_monthly_sales#20)) / avg_monthly_sales#20) > 0.1000000000000000) END) + +(145) Project +Output [8]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, avg_monthly_sales#20, rn#19] +Input [9]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, _w0#18, rn#19, avg_monthly_sales#20] + +(146) Exchange +Input [8]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, avg_monthly_sales#20, rn#19] +Arguments: hashpartitioning(i_category#3, i_brand#2, cc_name#12, rn#19, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(147) Sort +Input [8]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, avg_monthly_sales#20, rn#19] +Arguments: [i_category#3 ASC NULLS FIRST, i_brand#2 ASC NULLS FIRST, cc_name#12 ASC NULLS FIRST, rn#19 ASC NULLS FIRST], false, 0 + +(148) Scan parquet +Output [3]: [i_item_sk#41, i_brand#22, i_category#21] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_category), IsNotNull(i_brand)] +ReadSchema: struct + +(149) Filter +Input [3]: [i_item_sk#41, i_brand#22, i_category#21] +Condition : ((isnotnull(i_item_sk#41) AND isnotnull(i_category#21)) AND isnotnull(i_brand#22)) + +(150) Exchange +Input [3]: [i_item_sk#41, i_brand#22, i_category#21] +Arguments: hashpartitioning(i_item_sk#41, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(151) Sort +Input [3]: [i_item_sk#41, i_brand#22, i_category#21] +Arguments: [i_item_sk#41 ASC NULLS FIRST], false, 0 + +(152) Scan parquet +Output [4]: [cs_sold_date_sk#42, cs_call_center_sk#43, cs_item_sk#44, cs_sales_price#28] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk), IsNotNull(cs_call_center_sk)] +ReadSchema: struct + +(153) Filter +Input [4]: [cs_sold_date_sk#42, cs_call_center_sk#43, cs_item_sk#44, cs_sales_price#28] +Condition : ((isnotnull(cs_item_sk#44) AND isnotnull(cs_sold_date_sk#42)) AND isnotnull(cs_call_center_sk#43)) + +(154) Exchange +Input [4]: [cs_sold_date_sk#42, cs_call_center_sk#43, cs_item_sk#44, cs_sales_price#28] +Arguments: hashpartitioning(cs_item_sk#44, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(155) Sort +Input [4]: [cs_sold_date_sk#42, cs_call_center_sk#43, cs_item_sk#44, cs_sales_price#28] +Arguments: [cs_item_sk#44 ASC NULLS FIRST], false, 0 + +(156) SortMergeJoin +Left keys [1]: [i_item_sk#41] +Right keys [1]: [cs_item_sk#44] +Join type: Inner +Join condition: None + +(157) Project +Output [5]: [i_brand#22, i_category#21, cs_sold_date_sk#42, cs_call_center_sk#43, cs_sales_price#28] +Input [7]: [i_item_sk#41, i_brand#22, i_category#21, cs_sold_date_sk#42, cs_call_center_sk#43, cs_item_sk#44, cs_sales_price#28] + +(158) Exchange +Input [5]: [i_brand#22, i_category#21, cs_sold_date_sk#42, cs_call_center_sk#43, cs_sales_price#28] +Arguments: hashpartitioning(cs_sold_date_sk#42, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(159) Sort +Input [5]: [i_brand#22, i_category#21, cs_sold_date_sk#42, cs_call_center_sk#43, cs_sales_price#28] +Arguments: [cs_sold_date_sk#42 ASC NULLS FIRST], false, 0 + +(160) Scan parquet +Output [3]: [d_date_sk#45, d_year#24, d_moy#25] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(Or(EqualTo(d_year,1999),And(EqualTo(d_year,1998),EqualTo(d_moy,12))),And(EqualTo(d_year,2000),EqualTo(d_moy,1))), IsNotNull(d_date_sk)] +ReadSchema: struct + +(161) Filter +Input [3]: [d_date_sk#45, d_year#24, d_moy#25] +Condition : ((((d_year#24 = 1999) OR ((d_year#24 = 1998) AND (d_moy#25 = 12))) OR ((d_year#24 = 2000) AND (d_moy#25 = 1))) AND isnotnull(d_date_sk#45)) + +(162) Exchange +Input [3]: [d_date_sk#45, d_year#24, d_moy#25] +Arguments: hashpartitioning(d_date_sk#45, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(163) Sort +Input [3]: [d_date_sk#45, d_year#24, d_moy#25] +Arguments: [d_date_sk#45 ASC NULLS FIRST], false, 0 + +(164) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#42] +Right keys [1]: [d_date_sk#45] +Join type: Inner +Join condition: None + +(165) Project +Output [6]: [i_brand#22, i_category#21, cs_call_center_sk#43, cs_sales_price#28, d_year#24, d_moy#25] +Input [8]: [i_brand#22, i_category#21, cs_sold_date_sk#42, cs_call_center_sk#43, cs_sales_price#28, d_date_sk#45, d_year#24, d_moy#25] + +(166) Exchange +Input [6]: [i_brand#22, i_category#21, cs_call_center_sk#43, cs_sales_price#28, d_year#24, d_moy#25] +Arguments: hashpartitioning(cs_call_center_sk#43, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(167) Sort +Input [6]: [i_brand#22, i_category#21, cs_call_center_sk#43, cs_sales_price#28, d_year#24, d_moy#25] +Arguments: [cs_call_center_sk#43 ASC NULLS FIRST], false, 0 + +(168) Scan parquet +Output [2]: [cc_call_center_sk#46, cc_name#23] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cc_call_center_sk), IsNotNull(cc_name)] +ReadSchema: struct + +(169) Filter +Input [2]: [cc_call_center_sk#46, cc_name#23] +Condition : (isnotnull(cc_call_center_sk#46) AND isnotnull(cc_name#23)) + +(170) Exchange +Input [2]: [cc_call_center_sk#46, cc_name#23] +Arguments: hashpartitioning(cc_call_center_sk#46, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(171) Sort +Input [2]: [cc_call_center_sk#46, cc_name#23] +Arguments: [cc_call_center_sk#46 ASC NULLS FIRST], false, 0 + +(172) SortMergeJoin +Left keys [1]: [cs_call_center_sk#43] +Right keys [1]: [cc_call_center_sk#46] +Join type: Inner +Join condition: None + +(173) Project +Output [6]: [i_brand#22, i_category#21, cs_sales_price#28, d_year#24, d_moy#25, cc_name#23] +Input [8]: [i_brand#22, i_category#21, cs_call_center_sk#43, cs_sales_price#28, d_year#24, d_moy#25, cc_call_center_sk#46, cc_name#23] + +(174) HashAggregate +Input [6]: [i_brand#22, i_category#21, cs_sales_price#28, d_year#24, d_moy#25, cc_name#23] +Keys [5]: [i_category#21, i_brand#22, cc_name#23, d_year#24, d_moy#25] +Functions [1]: [partial_sum(UnscaledValue(cs_sales_price#28))] +Aggregate Attributes [1]: [sum#47] +Results [6]: [i_category#21, i_brand#22, cc_name#23, d_year#24, d_moy#25, sum#26] + +(175) Exchange +Input [6]: [i_category#21, i_brand#22, cc_name#23, d_year#24, d_moy#25, sum#26] +Arguments: hashpartitioning(i_category#21, i_brand#22, cc_name#23, d_year#24, d_moy#25, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(176) HashAggregate +Input [6]: [i_category#21, i_brand#22, cc_name#23, d_year#24, d_moy#25, sum#26] +Keys [5]: [i_category#21, i_brand#22, cc_name#23, d_year#24, d_moy#25] +Functions [1]: [sum(UnscaledValue(cs_sales_price#28))] +Aggregate Attributes [1]: [sum(UnscaledValue(cs_sales_price#28))#16] +Results [6]: [i_category#21, i_brand#22, cc_name#23, d_year#24, d_moy#25, MakeDecimal(sum(UnscaledValue(cs_sales_price#28))#16,17,2) AS sum_sales#17] + +(177) Exchange +Input [6]: [i_category#21, i_brand#22, cc_name#23, d_year#24, d_moy#25, sum_sales#17] +Arguments: hashpartitioning(i_category#21, i_brand#22, cc_name#23, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(178) Sort +Input [6]: [i_category#21, i_brand#22, cc_name#23, d_year#24, d_moy#25, sum_sales#17] +Arguments: [i_category#21 ASC NULLS FIRST, i_brand#22 ASC NULLS FIRST, cc_name#23 ASC NULLS FIRST, d_year#24 ASC NULLS FIRST, d_moy#25 ASC NULLS FIRST], false, 0 + +(179) Window +Input [6]: [i_category#21, i_brand#22, cc_name#23, d_year#24, d_moy#25, sum_sales#17] +Arguments: [rank(d_year#24, d_moy#25) windowspecdefinition(i_category#21, i_brand#22, cc_name#23, d_year#24 ASC NULLS FIRST, d_moy#25 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rn#29], [i_category#21, i_brand#22, cc_name#23], [d_year#24 ASC NULLS FIRST, d_moy#25 ASC NULLS FIRST] + +(180) Project +Output [5]: [i_category#21, i_brand#22, cc_name#23, sum_sales#17 AS sum_sales#30, rn#29] +Input [7]: [i_category#21, i_brand#22, cc_name#23, d_year#24, d_moy#25, sum_sales#17, rn#29] + +(181) Exchange +Input [5]: [i_category#21, i_brand#22, cc_name#23, sum_sales#30, rn#29] +Arguments: hashpartitioning(i_category#21, i_brand#22, cc_name#23, (rn#29 + 1), 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(182) Sort +Input [5]: [i_category#21, i_brand#22, cc_name#23, sum_sales#30, rn#29] +Arguments: [i_category#21 ASC NULLS FIRST, i_brand#22 ASC NULLS FIRST, cc_name#23 ASC NULLS FIRST, (rn#29 + 1) ASC NULLS FIRST], false, 0 + +(183) SortMergeJoin +Left keys [4]: [i_category#3, i_brand#2, cc_name#12, rn#19] +Right keys [4]: [i_category#21, i_brand#22, cc_name#23, (rn#29 + 1)] +Join type: Inner +Join condition: None + +(184) Project +Output [9]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, avg_monthly_sales#20, rn#19, sum_sales#30] +Input [13]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, avg_monthly_sales#20, rn#19, i_category#21, i_brand#22, cc_name#23, sum_sales#30, rn#29] + +(185) Scan parquet +Output [3]: [i_item_sk#48, i_brand#32, i_category#31] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_category), IsNotNull(i_brand)] +ReadSchema: struct + +(186) Filter +Input [3]: [i_item_sk#48, i_brand#32, i_category#31] +Condition : ((isnotnull(i_item_sk#48) AND isnotnull(i_category#31)) AND isnotnull(i_brand#32)) + +(187) Exchange +Input [3]: [i_item_sk#48, i_brand#32, i_category#31] +Arguments: hashpartitioning(i_item_sk#48, 100), ENSURE_REQUIREMENTS, [plan_id=31] + +(188) Sort +Input [3]: [i_item_sk#48, i_brand#32, i_category#31] +Arguments: [i_item_sk#48 ASC NULLS FIRST], false, 0 + +(189) Scan parquet +Output [4]: [cs_sold_date_sk#49, cs_call_center_sk#50, cs_item_sk#51, cs_sales_price#52] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk), IsNotNull(cs_call_center_sk)] +ReadSchema: struct + +(190) Filter +Input [4]: [cs_sold_date_sk#49, cs_call_center_sk#50, cs_item_sk#51, cs_sales_price#52] +Condition : ((isnotnull(cs_item_sk#51) AND isnotnull(cs_sold_date_sk#49)) AND isnotnull(cs_call_center_sk#50)) + +(191) Exchange +Input [4]: [cs_sold_date_sk#49, cs_call_center_sk#50, cs_item_sk#51, cs_sales_price#52] +Arguments: hashpartitioning(cs_item_sk#51, 100), ENSURE_REQUIREMENTS, [plan_id=32] + +(192) Sort +Input [4]: [cs_sold_date_sk#49, cs_call_center_sk#50, cs_item_sk#51, cs_sales_price#52] +Arguments: [cs_item_sk#51 ASC NULLS FIRST], false, 0 + +(193) SortMergeJoin +Left keys [1]: [i_item_sk#48] +Right keys [1]: [cs_item_sk#51] +Join type: Inner +Join condition: None + +(194) Project +Output [5]: [i_brand#32, i_category#31, cs_sold_date_sk#49, cs_call_center_sk#50, cs_sales_price#52] +Input [7]: [i_item_sk#48, i_brand#32, i_category#31, cs_sold_date_sk#49, cs_call_center_sk#50, cs_item_sk#51, cs_sales_price#52] + +(195) Exchange +Input [5]: [i_brand#32, i_category#31, cs_sold_date_sk#49, cs_call_center_sk#50, cs_sales_price#52] +Arguments: hashpartitioning(cs_sold_date_sk#49, 100), ENSURE_REQUIREMENTS, [plan_id=33] + +(196) Sort +Input [5]: [i_brand#32, i_category#31, cs_sold_date_sk#49, cs_call_center_sk#50, cs_sales_price#52] +Arguments: [cs_sold_date_sk#49 ASC NULLS FIRST], false, 0 + +(197) Scan parquet +Output [3]: [d_date_sk#53, d_year#34, d_moy#35] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(Or(EqualTo(d_year,1999),And(EqualTo(d_year,1998),EqualTo(d_moy,12))),And(EqualTo(d_year,2000),EqualTo(d_moy,1))), IsNotNull(d_date_sk)] +ReadSchema: struct + +(198) Filter +Input [3]: [d_date_sk#53, d_year#34, d_moy#35] +Condition : ((((d_year#34 = 1999) OR ((d_year#34 = 1998) AND (d_moy#35 = 12))) OR ((d_year#34 = 2000) AND (d_moy#35 = 1))) AND isnotnull(d_date_sk#53)) + +(199) Exchange +Input [3]: [d_date_sk#53, d_year#34, d_moy#35] +Arguments: hashpartitioning(d_date_sk#53, 100), ENSURE_REQUIREMENTS, [plan_id=34] + +(200) Sort +Input [3]: [d_date_sk#53, d_year#34, d_moy#35] +Arguments: [d_date_sk#53 ASC NULLS FIRST], false, 0 + +(201) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#49] +Right keys [1]: [d_date_sk#53] +Join type: Inner +Join condition: None + +(202) Project +Output [6]: [i_brand#32, i_category#31, cs_call_center_sk#50, cs_sales_price#52, d_year#34, d_moy#35] +Input [8]: [i_brand#32, i_category#31, cs_sold_date_sk#49, cs_call_center_sk#50, cs_sales_price#52, d_date_sk#53, d_year#34, d_moy#35] + +(203) Exchange +Input [6]: [i_brand#32, i_category#31, cs_call_center_sk#50, cs_sales_price#52, d_year#34, d_moy#35] +Arguments: hashpartitioning(cs_call_center_sk#50, 100), ENSURE_REQUIREMENTS, [plan_id=35] + +(204) Sort +Input [6]: [i_brand#32, i_category#31, cs_call_center_sk#50, cs_sales_price#52, d_year#34, d_moy#35] +Arguments: [cs_call_center_sk#50 ASC NULLS FIRST], false, 0 + +(205) Scan parquet +Output [2]: [cc_call_center_sk#54, cc_name#33] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cc_call_center_sk), IsNotNull(cc_name)] +ReadSchema: struct + +(206) Filter +Input [2]: [cc_call_center_sk#54, cc_name#33] +Condition : (isnotnull(cc_call_center_sk#54) AND isnotnull(cc_name#33)) + +(207) Exchange +Input [2]: [cc_call_center_sk#54, cc_name#33] +Arguments: hashpartitioning(cc_call_center_sk#54, 100), ENSURE_REQUIREMENTS, [plan_id=36] + +(208) Sort +Input [2]: [cc_call_center_sk#54, cc_name#33] +Arguments: [cc_call_center_sk#54 ASC NULLS FIRST], false, 0 + +(209) SortMergeJoin +Left keys [1]: [cs_call_center_sk#50] +Right keys [1]: [cc_call_center_sk#54] +Join type: Inner +Join condition: None + +(210) Project +Output [6]: [i_brand#32, i_category#31, cs_sales_price#52, d_year#34, d_moy#35, cc_name#33] +Input [8]: [i_brand#32, i_category#31, cs_call_center_sk#50, cs_sales_price#52, d_year#34, d_moy#35, cc_call_center_sk#54, cc_name#33] + +(211) HashAggregate +Input [6]: [i_brand#32, i_category#31, cs_sales_price#52, d_year#34, d_moy#35, cc_name#33] +Keys [5]: [i_category#31, i_brand#32, cc_name#33, d_year#34, d_moy#35] +Functions [1]: [partial_sum(UnscaledValue(cs_sales_price#52))] +Aggregate Attributes [1]: [sum#55] +Results [6]: [i_category#31, i_brand#32, cc_name#33, d_year#34, d_moy#35, sum#56] + +(212) Exchange +Input [6]: [i_category#31, i_brand#32, cc_name#33, d_year#34, d_moy#35, sum#56] +Arguments: hashpartitioning(i_category#31, i_brand#32, cc_name#33, d_year#34, d_moy#35, 100), ENSURE_REQUIREMENTS, [plan_id=37] + +(213) HashAggregate +Input [6]: [i_category#31, i_brand#32, cc_name#33, d_year#34, d_moy#35, sum#56] +Keys [5]: [i_category#31, i_brand#32, cc_name#33, d_year#34, d_moy#35] +Functions [1]: [sum(UnscaledValue(cs_sales_price#52))] +Aggregate Attributes [1]: [sum(UnscaledValue(cs_sales_price#52))#16] +Results [6]: [i_category#31, i_brand#32, cc_name#33, d_year#34, d_moy#35, MakeDecimal(sum(UnscaledValue(cs_sales_price#52))#16,17,2) AS sum_sales#17] + +(214) Exchange +Input [6]: [i_category#31, i_brand#32, cc_name#33, d_year#34, d_moy#35, sum_sales#17] +Arguments: hashpartitioning(i_category#31, i_brand#32, cc_name#33, 100), ENSURE_REQUIREMENTS, [plan_id=38] + +(215) Sort +Input [6]: [i_category#31, i_brand#32, cc_name#33, d_year#34, d_moy#35, sum_sales#17] +Arguments: [i_category#31 ASC NULLS FIRST, i_brand#32 ASC NULLS FIRST, cc_name#33 ASC NULLS FIRST, d_year#34 ASC NULLS FIRST, d_moy#35 ASC NULLS FIRST], false, 0 + +(216) Window +Input [6]: [i_category#31, i_brand#32, cc_name#33, d_year#34, d_moy#35, sum_sales#17] +Arguments: [rank(d_year#34, d_moy#35) windowspecdefinition(i_category#31, i_brand#32, cc_name#33, d_year#34 ASC NULLS FIRST, d_moy#35 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rn#36], [i_category#31, i_brand#32, cc_name#33], [d_year#34 ASC NULLS FIRST, d_moy#35 ASC NULLS FIRST] + +(217) Project +Output [5]: [i_category#31, i_brand#32, cc_name#33, sum_sales#17 AS sum_sales#37, rn#36] +Input [7]: [i_category#31, i_brand#32, cc_name#33, d_year#34, d_moy#35, sum_sales#17, rn#36] + +(218) Exchange +Input [5]: [i_category#31, i_brand#32, cc_name#33, sum_sales#37, rn#36] +Arguments: hashpartitioning(i_category#31, i_brand#32, cc_name#33, (rn#36 - 1), 100), ENSURE_REQUIREMENTS, [plan_id=39] + +(219) Sort +Input [5]: [i_category#31, i_brand#32, cc_name#33, sum_sales#37, rn#36] +Arguments: [i_category#31 ASC NULLS FIRST, i_brand#32 ASC NULLS FIRST, cc_name#33 ASC NULLS FIRST, (rn#36 - 1) ASC NULLS FIRST], false, 0 + +(220) SortMergeJoin +Left keys [4]: [i_category#3, i_brand#2, cc_name#12, rn#19] +Right keys [4]: [i_category#31, i_brand#32, cc_name#33, (rn#36 - 1)] +Join type: Inner +Join condition: None + +(221) Project +Output [9]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, avg_monthly_sales#20, sum_sales#17, sum_sales#30 AS psum#38, sum_sales#37 AS nsum#39] +Input [14]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, sum_sales#17, avg_monthly_sales#20, rn#19, sum_sales#30, i_category#31, i_brand#32, cc_name#33, sum_sales#37, rn#36] + +(222) TakeOrderedAndProject +Input [9]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, avg_monthly_sales#20, sum_sales#17, psum#38, nsum#39] +Arguments: X, [(sum_sales#17 - avg_monthly_sales#20) ASC NULLS FIRST, cc_name#12 ASC NULLS FIRST], [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, avg_monthly_sales#20, sum_sales#17, psum#38, nsum#39] + +(223) AdaptiveSparkPlan +Output [9]: [i_category#3, i_brand#2, cc_name#12, d_year#9, d_moy#10, avg_monthly_sales#20, sum_sales#17, psum#38, nsum#39] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q58.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q58.txt new file mode 100644 index 000000000..1887feeef --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q58.txt @@ -0,0 +1,1388 @@ +== Physical Plan == +AdaptiveSparkPlan (244) ++- == Final Plan == + TakeOrderedAndProject (142) + +- * Project (141) + +- * SortMergeJoin Inner (140) + :- * Project (100) + : +- * SortMergeJoin Inner (99) + : :- NativeSort (59) + : : +- NativeFilter (58) + : : +- NativeProject (57) + : : +- NativeHashAggregate (56) + : : +- InputAdapter (55) + : : +- AQEShuffleRead (54) + : : +- ShuffleQueryStage (53), Statistics(X) + : : +- NativeShuffleExchange (52) + : : +- NativeHashAggregate (51) + : : +- NativeProject (50) + : : +- NativeProject (49) + : : +- NativeSortMergeJoin Inner (48) + : : :- NativeSort (23) + : : : +- InputAdapter (22) + : : : +- AQEShuffleRead (21) + : : : +- ShuffleQueryStage (20), Statistics(X) + : : : +- NativeShuffleExchange (19) + : : : +- NativeProject (18) + : : : +- NativeSortMergeJoin Inner (17) + : : : :- NativeSort (8) + : : : : +- InputAdapter (7) + : : : : +- AQEShuffleRead (6) + : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : +- NativeShuffleExchange (4) + : : : : +- NativeFilter (3) + : : : : +- InputAdapter (2) + : : : : +- NativeParquetScan (1) + : : : +- NativeSort (16) + : : : +- InputAdapter (15) + : : : +- AQEShuffleRead (14) + : : : +- ShuffleQueryStage (13), Statistics(X) + : : : +- NativeShuffleExchange (12) + : : : +- NativeFilter (11) + : : : +- InputAdapter (10) + : : : +- NativeParquetScan (9) + : : +- NativeSort (47) + : : +- InputAdapter (46) + : : +- AQEShuffleRead (45) + : : +- ShuffleQueryStage (44), Statistics(X) + : : +- NativeShuffleExchange (43) + : : +- NativeProject (42) + : : +- NativeSortMergeJoin LeftSemi (41) + : : :- NativeSort (31) + : : : +- InputAdapter (30) + : : : +- AQEShuffleRead (29) + : : : +- ShuffleQueryStage (28), Statistics(X) + : : : +- NativeShuffleExchange (27) + : : : +- NativeFilter (26) + : : : +- InputAdapter (25) + : : : +- NativeParquetScan (24) + : : +- NativeSort (40) + : : +- InputAdapter (39) + : : +- AQEShuffleRead (38) + : : +- ShuffleQueryStage (37), Statistics(X) + : : +- NativeShuffleExchange (36) + : : +- NativeProject (35) + : : +- NativeFilter (34) + : : +- InputAdapter (33) + : : +- NativeParquetScan (32) + : +- NativeSort (98) + : +- NativeFilter (97) + : +- NativeProject (96) + : +- NativeHashAggregate (95) + : +- InputAdapter (94) + : +- AQEShuffleRead (93) + : +- ShuffleQueryStage (92), Statistics(X) + : +- NativeShuffleExchange (91) + : +- NativeHashAggregate (90) + : +- NativeProject (89) + : +- NativeProject (88) + : +- NativeSortMergeJoin Inner (87) + : :- NativeSort (80) + : : +- InputAdapter (79) + : : +- AQEShuffleRead (78) + : : +- ShuffleQueryStage (77), Statistics(X) + : : +- NativeShuffleExchange (76) + : : +- NativeProject (75) + : : +- NativeSortMergeJoin Inner (74) + : : :- NativeSort (67) + : : : +- InputAdapter (66) + : : : +- AQEShuffleRead (65) + : : : +- ShuffleQueryStage (64), Statistics(X) + : : : +- NativeShuffleExchange (63) + : : : +- NativeFilter (62) + : : : +- InputAdapter (61) + : : : +- NativeParquetScan (60) + : : +- NativeSort (73) + : : +- InputAdapter (72) + : : +- InputAdapter (71) + : : +- AQEShuffleRead (70) + : : +- ShuffleQueryStage (69), Statistics(X) + : : +- ReusedExchange (68) + : +- NativeSort (86) + : +- InputAdapter (85) + : +- InputAdapter (84) + : +- AQEShuffleRead (83) + : +- ShuffleQueryStage (82), Statistics(X) + : +- ReusedExchange (81) + +- NativeSort (139) + +- NativeFilter (138) + +- NativeProject (137) + +- NativeHashAggregate (136) + +- InputAdapter (135) + +- AQEShuffleRead (134) + +- ShuffleQueryStage (133), Statistics(X) + +- NativeShuffleExchange (132) + +- NativeHashAggregate (131) + +- NativeProject (130) + +- NativeProject (129) + +- NativeSortMergeJoin Inner (128) + :- NativeSort (121) + : +- InputAdapter (120) + : +- AQEShuffleRead (119) + : +- ShuffleQueryStage (118), Statistics(X) + : +- NativeShuffleExchange (117) + : +- NativeProject (116) + : +- NativeSortMergeJoin Inner (115) + : :- NativeSort (108) + : : +- InputAdapter (107) + : : +- AQEShuffleRead (106) + : : +- ShuffleQueryStage (105), Statistics(X) + : : +- NativeShuffleExchange (104) + : : +- NativeFilter (103) + : : +- InputAdapter (102) + : : +- NativeParquetScan (101) + : +- NativeSort (114) + : +- InputAdapter (113) + : +- InputAdapter (112) + : +- AQEShuffleRead (111) + : +- ShuffleQueryStage (110), Statistics(X) + : +- ReusedExchange (109) + +- NativeSort (127) + +- InputAdapter (126) + +- InputAdapter (125) + +- AQEShuffleRead (124) + +- ShuffleQueryStage (123), Statistics(X) + +- ReusedExchange (122) ++- == Initial Plan == + TakeOrderedAndProject (243) + +- Project (242) + +- SortMergeJoin Inner (241) + :- Project (208) + : +- SortMergeJoin Inner (207) + : :- Sort (174) + : : +- Filter (173) + : : +- HashAggregate (172) + : : +- Exchange (171) + : : +- HashAggregate (170) + : : +- Project (169) + : : +- SortMergeJoin Inner (168) + : : :- Sort (154) + : : : +- Exchange (153) + : : : +- Project (152) + : : : +- SortMergeJoin Inner (151) + : : : :- Sort (146) + : : : : +- Exchange (145) + : : : : +- Filter (144) + : : : : +- Scan parquet (143) + : : : +- Sort (150) + : : : +- Exchange (149) + : : : +- Filter (148) + : : : +- Scan parquet (147) + : : +- Sort (167) + : : +- Exchange (166) + : : +- Project (165) + : : +- SortMergeJoin LeftSemi (164) + : : :- Sort (158) + : : : +- Exchange (157) + : : : +- Filter (156) + : : : +- Scan parquet (155) + : : +- Sort (163) + : : +- Exchange (162) + : : +- Project (161) + : : +- Filter (160) + : : +- Scan parquet (159) + : +- Sort (206) + : +- Filter (205) + : +- HashAggregate (204) + : +- Exchange (203) + : +- HashAggregate (202) + : +- Project (201) + : +- SortMergeJoin Inner (200) + : :- Sort (186) + : : +- Exchange (185) + : : +- Project (184) + : : +- SortMergeJoin Inner (183) + : : :- Sort (178) + : : : +- Exchange (177) + : : : +- Filter (176) + : : : +- Scan parquet (175) + : : +- Sort (182) + : : +- Exchange (181) + : : +- Filter (180) + : : +- Scan parquet (179) + : +- Sort (199) + : +- Exchange (198) + : +- Project (197) + : +- SortMergeJoin LeftSemi (196) + : :- Sort (190) + : : +- Exchange (189) + : : +- Filter (188) + : : +- Scan parquet (187) + : +- Sort (195) + : +- Exchange (194) + : +- Project (193) + : +- Filter (192) + : +- Scan parquet (191) + +- Sort (240) + +- Filter (239) + +- HashAggregate (238) + +- Exchange (237) + +- HashAggregate (236) + +- Project (235) + +- SortMergeJoin Inner (234) + :- Sort (220) + : +- Exchange (219) + : +- Project (218) + : +- SortMergeJoin Inner (217) + : :- Sort (212) + : : +- Exchange (211) + : : +- Filter (210) + : : +- Scan parquet (209) + : +- Sort (216) + : +- Exchange (215) + : +- Filter (214) + : +- Scan parquet (213) + +- Sort (233) + +- Exchange (232) + +- Project (231) + +- SortMergeJoin LeftSemi (230) + :- Sort (224) + : +- Exchange (223) + : +- Filter (222) + : +- Scan parquet (221) + +- Sort (229) + +- Exchange (228) + +- Project (227) + +- Filter (226) + +- Scan parquet (225) + + +(143) Scan parquet +Output [3]: [ss_sold_date_sk#1, ss_item_sk#2, ss_ext_sales_price#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [ss_sold_date_sk#1, ss_item_sk#2, ss_ext_sales_price#3] +Arguments: [#1, #2, #3] + +(3) NativeFilter +Input [3]: [#1#1, #2#2, #3#3] +Condition : (isnotnull(ss_item_sk#2) AND isnotnull(ss_sold_date_sk#1)) + +(4) NativeShuffleExchange +Input [3]: [#1#1, #2#2, #3#3] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [3]: [#1#1, #2#2, #3#3] +Arguments: X + +(6) AQEShuffleRead +Input [3]: [#1#1, #2#2, #3#3] +Arguments: coalesced + +(7) InputAdapter +Input [3]: [#1#1, #2#2, #3#3] + +(8) NativeSort +Input [3]: [#1#1, #2#2, #3#3] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false + +(147) Scan parquet +Output [2]: [i_item_sk#4, i_item_id#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_item_id)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [i_item_sk#4, i_item_id#5] +Arguments: [#4, #5] + +(11) NativeFilter +Input [2]: [#4#4, #5#5] +Condition : (isnotnull(i_item_sk#4) AND isnotnull(i_item_id#5)) + +(12) NativeShuffleExchange +Input [2]: [#4#4, #5#5] +Arguments: hashpartitioning(i_item_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [2]: [#4#4, #5#5] +Arguments: X + +(14) AQEShuffleRead +Input [2]: [#4#4, #5#5] +Arguments: coalesced + +(15) InputAdapter +Input [2]: [#4#4, #5#5] + +(16) NativeSort +Input [2]: [#4#4, #5#5] +Arguments: [i_item_sk#4 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#4] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [3]: [ss_sold_date_sk#1, ss_ext_sales_price#3, i_item_id#5] +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] + +(19) NativeShuffleExchange +Input [3]: [ss_sold_date_sk#1, ss_ext_sales_price#3, i_item_id#5] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [3]: [ss_sold_date_sk#1, ss_ext_sales_price#3, i_item_id#5] +Arguments: X + +(21) AQEShuffleRead +Input [3]: [ss_sold_date_sk#1, ss_ext_sales_price#3, i_item_id#5] +Arguments: coalesced + +(22) InputAdapter +Input [3]: [ss_sold_date_sk#1, ss_ext_sales_price#3, i_item_id#5] + +(23) NativeSort +Input [3]: [ss_sold_date_sk#1, ss_ext_sales_price#3, i_item_id#5] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(155) Scan parquet +Output [2]: [d_date_sk#6, d_date#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date_sk)] +ReadSchema: struct + +(25) InputAdapter +Input [2]: [d_date_sk#6, d_date#7] +Arguments: [#6, #7] + +(26) NativeFilter +Input [2]: [#6#6, #7#7] +Condition : isnotnull(d_date_sk#6) + +(27) NativeShuffleExchange +Input [2]: [#6#6, #7#7] +Arguments: hashpartitioning(d_date#7, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(28) ShuffleQueryStage +Output [2]: [#6#6, #7#7] +Arguments: X + +(29) AQEShuffleRead +Input [2]: [#6#6, #7#7] +Arguments: coalesced + +(30) InputAdapter +Input [2]: [#6#6, #7#7] + +(31) NativeSort +Input [2]: [#6#6, #7#7] +Arguments: [d_date#7 ASC NULLS FIRST], false + +(159) Scan parquet +Output [2]: [d_date#8, d_week_seq#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_week_seq)] +ReadSchema: struct + +(33) InputAdapter +Input [2]: [d_date#8, d_week_seq#9] +Arguments: [#8, #9] + +(34) NativeFilter +Input [2]: [#8#8, #9#9] +Condition : (isnotnull(d_week_seq#9) AND (d_week_seq#9 = Subquery subquery#10, [id=#11])) + +(35) NativeProject +Output [1]: [d_date#8] +Input [2]: [#8#8, #9#9] + +(36) NativeShuffleExchange +Input [1]: [d_date#8] +Arguments: hashpartitioning(d_date#8, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [1]: [d_date#8] +Arguments: X + +(38) AQEShuffleRead +Input [1]: [d_date#8] +Arguments: coalesced + +(39) InputAdapter +Input [1]: [d_date#8] + +(40) NativeSort +Input [1]: [d_date#8] +Arguments: [d_date#8 ASC NULLS FIRST], false + +(41) NativeSortMergeJoin +Left keys [1]: [d_date#7] +Right keys [1]: [d_date#8] +Join type: LeftSemi +Join condition: None + +(42) NativeProject +Output [1]: [d_date_sk#6] +Input [2]: [#6#6, #7#7] + +(43) NativeShuffleExchange +Input [1]: [d_date_sk#6] +Arguments: hashpartitioning(d_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) ShuffleQueryStage +Output [1]: [d_date_sk#6] +Arguments: X + +(45) AQEShuffleRead +Input [1]: [d_date_sk#6] +Arguments: coalesced + +(46) InputAdapter +Input [1]: [d_date_sk#6] + +(47) NativeSort +Input [1]: [d_date_sk#6] +Arguments: [d_date_sk#6 ASC NULLS FIRST], false + +(48) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#6] +Join type: Inner +Join condition: None + +(49) NativeProject +Output [2]: [ss_ext_sales_price#3, i_item_id#5] +Input [4]: [ss_sold_date_sk#1, ss_ext_sales_price#3, i_item_id#5, d_date_sk#6] + +(50) NativeProject +Output [2]: [i_item_id#5 AS i_item_id#5, UnscaledValue(ss_ext_sales_price#3) AS _c1#12] +Input [2]: [ss_ext_sales_price#3, i_item_id#5] + +(51) NativeHashAggregate +Input [2]: [i_item_id#5, _c1#12] +Keys [1]: [i_item_id#5] +Functions [1]: [partial_sum(_c1#12)] +Aggregate Attributes [1]: [sum#13] +Results [2]: [i_item_id#5, #14#14] + +(52) NativeShuffleExchange +Input [2]: [i_item_id#5, #14#14] +Arguments: hashpartitioning(i_item_id#5, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(53) ShuffleQueryStage +Output [2]: [i_item_id#5, #14#14] +Arguments: X + +(54) AQEShuffleRead +Input [2]: [i_item_id#5, #14#14] +Arguments: coalesced + +(55) InputAdapter +Input [2]: [i_item_id#5, #14#14] + +(56) NativeHashAggregate +Input [2]: [i_item_id#5, #14#14] +Keys [1]: [i_item_id#5] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#3))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#3))#15] +Results [2]: [i_item_id#5, sum(UnscaledValue(ss_ext_sales_price#3))#15] + +(57) NativeProject +Output [2]: [i_item_id#5 AS item_id#16, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#3))#15,17,2) AS ss_item_rev#17] +Input [2]: [i_item_id#5, sum(UnscaledValue(ss_ext_sales_price#3))#15] + +(58) NativeFilter +Input [2]: [item_id#16, ss_item_rev#17] +Condition : isnotnull(ss_item_rev#17) + +(59) NativeSort +Input [2]: [item_id#16, ss_item_rev#17] +Arguments: [item_id#16 ASC NULLS FIRST], false + +(175) Scan parquet +Output [3]: [cs_sold_date_sk#18, cs_item_sk#19, cs_ext_sales_price#20] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(61) InputAdapter +Input [3]: [cs_sold_date_sk#18, cs_item_sk#19, cs_ext_sales_price#20] +Arguments: [#18, #19, #20] + +(62) NativeFilter +Input [3]: [#18#18, #19#19, #20#20] +Condition : (isnotnull(cs_item_sk#19) AND isnotnull(cs_sold_date_sk#18)) + +(63) NativeShuffleExchange +Input [3]: [#18#18, #19#19, #20#20] +Arguments: hashpartitioning(cs_item_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(64) ShuffleQueryStage +Output [3]: [#18#18, #19#19, #20#20] +Arguments: X + +(65) AQEShuffleRead +Input [3]: [#18#18, #19#19, #20#20] +Arguments: coalesced + +(66) InputAdapter +Input [3]: [#18#18, #19#19, #20#20] + +(67) NativeSort +Input [3]: [#18#18, #19#19, #20#20] +Arguments: [cs_item_sk#19 ASC NULLS FIRST], false + +(68) ReusedExchange [Reuses operator id: 12] +Output [2]: [i_item_sk#21, i_item_id#22] + +(69) ShuffleQueryStage +Output [2]: [i_item_sk#21, i_item_id#22] +Arguments: X + +(70) AQEShuffleRead +Input [2]: [i_item_sk#21, i_item_id#22] +Arguments: coalesced + +(71) InputAdapter +Input [2]: [i_item_sk#21, i_item_id#22] +Arguments: [#21, #22] + +(72) InputAdapter +Input [2]: [#21#21, #22#22] + +(73) NativeSort +Input [2]: [#21#21, #22#22] +Arguments: [i_item_sk#21 ASC NULLS FIRST], false + +(74) NativeSortMergeJoin +Left keys [1]: [cs_item_sk#19] +Right keys [1]: [i_item_sk#21] +Join type: Inner +Join condition: None + +(75) NativeProject +Output [3]: [cs_sold_date_sk#18, cs_ext_sales_price#20, i_item_id#22] +Input [5]: [#18#18, #19#19, #20#20, #21#21, #22#22] + +(76) NativeShuffleExchange +Input [3]: [cs_sold_date_sk#18, cs_ext_sales_price#20, i_item_id#22] +Arguments: hashpartitioning(cs_sold_date_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(77) ShuffleQueryStage +Output [3]: [cs_sold_date_sk#18, cs_ext_sales_price#20, i_item_id#22] +Arguments: X + +(78) AQEShuffleRead +Input [3]: [cs_sold_date_sk#18, cs_ext_sales_price#20, i_item_id#22] +Arguments: coalesced + +(79) InputAdapter +Input [3]: [cs_sold_date_sk#18, cs_ext_sales_price#20, i_item_id#22] + +(80) NativeSort +Input [3]: [cs_sold_date_sk#18, cs_ext_sales_price#20, i_item_id#22] +Arguments: [cs_sold_date_sk#18 ASC NULLS FIRST], false + +(81) ReusedExchange [Reuses operator id: 43] +Output [1]: [d_date_sk#23] + +(82) ShuffleQueryStage +Output [1]: [d_date_sk#23] +Arguments: X + +(83) AQEShuffleRead +Input [1]: [d_date_sk#23] +Arguments: coalesced + +(84) InputAdapter +Input [1]: [d_date_sk#23] +Arguments: [#23] + +(85) InputAdapter +Input [1]: [#23#23] + +(86) NativeSort +Input [1]: [#23#23] +Arguments: [d_date_sk#23 ASC NULLS FIRST], false + +(87) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#18] +Right keys [1]: [d_date_sk#23] +Join type: Inner +Join condition: None + +(88) NativeProject +Output [2]: [cs_ext_sales_price#20, i_item_id#22] +Input [4]: [cs_sold_date_sk#18, cs_ext_sales_price#20, i_item_id#22, #23#23] + +(89) NativeProject +Output [2]: [i_item_id#22 AS i_item_id#22, UnscaledValue(cs_ext_sales_price#20) AS _c1#24] +Input [2]: [cs_ext_sales_price#20, i_item_id#22] + +(90) NativeHashAggregate +Input [2]: [i_item_id#22, _c1#24] +Keys [1]: [i_item_id#22] +Functions [1]: [partial_sum(_c1#24)] +Aggregate Attributes [1]: [sum#25] +Results [2]: [i_item_id#22, #14#14] + +(91) NativeShuffleExchange +Input [2]: [i_item_id#22, #14#14] +Arguments: hashpartitioning(i_item_id#22, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(92) ShuffleQueryStage +Output [2]: [i_item_id#22, #14#14] +Arguments: X + +(93) AQEShuffleRead +Input [2]: [i_item_id#22, #14#14] +Arguments: coalesced + +(94) InputAdapter +Input [2]: [i_item_id#22, #14#14] + +(95) NativeHashAggregate +Input [2]: [i_item_id#22, #14#14] +Keys [1]: [i_item_id#22] +Functions [1]: [sum(UnscaledValue(cs_ext_sales_price#20))] +Aggregate Attributes [1]: [sum(UnscaledValue(cs_ext_sales_price#20))#26] +Results [2]: [i_item_id#22, sum(UnscaledValue(cs_ext_sales_price#20))#26] + +(96) NativeProject +Output [2]: [i_item_id#22 AS item_id#27, MakeDecimal(sum(UnscaledValue(cs_ext_sales_price#20))#26,17,2) AS cs_item_rev#28] +Input [2]: [i_item_id#22, sum(UnscaledValue(cs_ext_sales_price#20))#26] + +(97) NativeFilter +Input [2]: [item_id#27, cs_item_rev#28] +Condition : isnotnull(cs_item_rev#28) + +(98) NativeSort +Input [2]: [item_id#27, cs_item_rev#28] +Arguments: [item_id#27 ASC NULLS FIRST], false + +(99) SortMergeJoin [codegen id : 1] +Left keys [1]: [item_id#16] +Right keys [1]: [item_id#27] +Join type: Inner +Join condition: ((((cast(ss_item_rev#17 as decimal(19,3)) >= (0.9 * cs_item_rev#28)) AND (cast(ss_item_rev#17 as decimal(20,3)) <= (1.1 * cs_item_rev#28))) AND (cast(cs_item_rev#28 as decimal(19,3)) >= (0.9 * ss_item_rev#17))) AND (cast(cs_item_rev#28 as decimal(20,3)) <= (1.1 * ss_item_rev#17))) + +(100) Project [codegen id : 1] +Output [3]: [item_id#16, ss_item_rev#17, cs_item_rev#28] +Input [4]: [item_id#16, ss_item_rev#17, item_id#27, cs_item_rev#28] + +(209) Scan parquet +Output [3]: [ws_sold_date_sk#29, ws_item_sk#30, ws_ext_sales_price#31] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(102) InputAdapter +Input [3]: [ws_sold_date_sk#29, ws_item_sk#30, ws_ext_sales_price#31] +Arguments: [#29, #30, #31] + +(103) NativeFilter +Input [3]: [#29#29, #30#30, #31#31] +Condition : (isnotnull(ws_item_sk#30) AND isnotnull(ws_sold_date_sk#29)) + +(104) NativeShuffleExchange +Input [3]: [#29#29, #30#30, #31#31] +Arguments: hashpartitioning(ws_item_sk#30, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(105) ShuffleQueryStage +Output [3]: [#29#29, #30#30, #31#31] +Arguments: X + +(106) AQEShuffleRead +Input [3]: [#29#29, #30#30, #31#31] +Arguments: coalesced + +(107) InputAdapter +Input [3]: [#29#29, #30#30, #31#31] + +(108) NativeSort +Input [3]: [#29#29, #30#30, #31#31] +Arguments: [ws_item_sk#30 ASC NULLS FIRST], false + +(109) ReusedExchange [Reuses operator id: 12] +Output [2]: [i_item_sk#32, i_item_id#33] + +(110) ShuffleQueryStage +Output [2]: [i_item_sk#32, i_item_id#33] +Arguments: X + +(111) AQEShuffleRead +Input [2]: [i_item_sk#32, i_item_id#33] +Arguments: coalesced + +(112) InputAdapter +Input [2]: [i_item_sk#32, i_item_id#33] +Arguments: [#32, #33] + +(113) InputAdapter +Input [2]: [#32#32, #33#33] + +(114) NativeSort +Input [2]: [#32#32, #33#33] +Arguments: [i_item_sk#32 ASC NULLS FIRST], false + +(115) NativeSortMergeJoin +Left keys [1]: [ws_item_sk#30] +Right keys [1]: [i_item_sk#32] +Join type: Inner +Join condition: None + +(116) NativeProject +Output [3]: [ws_sold_date_sk#29, ws_ext_sales_price#31, i_item_id#33] +Input [5]: [#29#29, #30#30, #31#31, #32#32, #33#33] + +(117) NativeShuffleExchange +Input [3]: [ws_sold_date_sk#29, ws_ext_sales_price#31, i_item_id#33] +Arguments: hashpartitioning(ws_sold_date_sk#29, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(118) ShuffleQueryStage +Output [3]: [ws_sold_date_sk#29, ws_ext_sales_price#31, i_item_id#33] +Arguments: X + +(119) AQEShuffleRead +Input [3]: [ws_sold_date_sk#29, ws_ext_sales_price#31, i_item_id#33] +Arguments: coalesced + +(120) InputAdapter +Input [3]: [ws_sold_date_sk#29, ws_ext_sales_price#31, i_item_id#33] + +(121) NativeSort +Input [3]: [ws_sold_date_sk#29, ws_ext_sales_price#31, i_item_id#33] +Arguments: [ws_sold_date_sk#29 ASC NULLS FIRST], false + +(122) ReusedExchange [Reuses operator id: 43] +Output [1]: [d_date_sk#34] + +(123) ShuffleQueryStage +Output [1]: [d_date_sk#34] +Arguments: X + +(124) AQEShuffleRead +Input [1]: [d_date_sk#34] +Arguments: coalesced + +(125) InputAdapter +Input [1]: [d_date_sk#34] +Arguments: [#34] + +(126) InputAdapter +Input [1]: [#34#34] + +(127) NativeSort +Input [1]: [#34#34] +Arguments: [d_date_sk#34 ASC NULLS FIRST], false + +(128) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#29] +Right keys [1]: [d_date_sk#34] +Join type: Inner +Join condition: None + +(129) NativeProject +Output [2]: [ws_ext_sales_price#31, i_item_id#33] +Input [4]: [ws_sold_date_sk#29, ws_ext_sales_price#31, i_item_id#33, #34#34] + +(130) NativeProject +Output [2]: [i_item_id#33 AS i_item_id#33, UnscaledValue(ws_ext_sales_price#31) AS _c1#35] +Input [2]: [ws_ext_sales_price#31, i_item_id#33] + +(131) NativeHashAggregate +Input [2]: [i_item_id#33, _c1#35] +Keys [1]: [i_item_id#33] +Functions [1]: [partial_sum(_c1#35)] +Aggregate Attributes [1]: [sum#36] +Results [2]: [i_item_id#33, #14#14] + +(132) NativeShuffleExchange +Input [2]: [i_item_id#33, #14#14] +Arguments: hashpartitioning(i_item_id#33, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(133) ShuffleQueryStage +Output [2]: [i_item_id#33, #14#14] +Arguments: X + +(134) AQEShuffleRead +Input [2]: [i_item_id#33, #14#14] +Arguments: coalesced + +(135) InputAdapter +Input [2]: [i_item_id#33, #14#14] + +(136) NativeHashAggregate +Input [2]: [i_item_id#33, #14#14] +Keys [1]: [i_item_id#33] +Functions [1]: [sum(UnscaledValue(ws_ext_sales_price#31))] +Aggregate Attributes [1]: [sum(UnscaledValue(ws_ext_sales_price#31))#37] +Results [2]: [i_item_id#33, sum(UnscaledValue(ws_ext_sales_price#31))#37] + +(137) NativeProject +Output [2]: [i_item_id#33 AS item_id#38, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#31))#37,17,2) AS ws_item_rev#39] +Input [2]: [i_item_id#33, sum(UnscaledValue(ws_ext_sales_price#31))#37] + +(138) NativeFilter +Input [2]: [item_id#38, ws_item_rev#39] +Condition : isnotnull(ws_item_rev#39) + +(139) NativeSort +Input [2]: [item_id#38, ws_item_rev#39] +Arguments: [item_id#38 ASC NULLS FIRST], false + +(140) SortMergeJoin [codegen id : 2] +Left keys [1]: [item_id#16] +Right keys [1]: [item_id#38] +Join type: Inner +Join condition: ((((((((cast(ss_item_rev#17 as decimal(19,3)) >= (0.9 * ws_item_rev#39)) AND (cast(ss_item_rev#17 as decimal(20,3)) <= (1.1 * ws_item_rev#39))) AND (cast(cs_item_rev#28 as decimal(19,3)) >= (0.9 * ws_item_rev#39))) AND (cast(cs_item_rev#28 as decimal(20,3)) <= (1.1 * ws_item_rev#39))) AND (cast(ws_item_rev#39 as decimal(19,3)) >= (0.9 * ss_item_rev#17))) AND (cast(ws_item_rev#39 as decimal(20,3)) <= (1.1 * ss_item_rev#17))) AND (cast(ws_item_rev#39 as decimal(19,3)) >= (0.9 * cs_item_rev#28))) AND (cast(ws_item_rev#39 as decimal(20,3)) <= (1.1 * cs_item_rev#28))) + +(141) Project [codegen id : 2] +Output [8]: [item_id#16, ss_item_rev#17, (((ss_item_rev#17 / ((ss_item_rev#17 + cs_item_rev#28) + ws_item_rev#39)) / 3) * 100) AS ss_dev#40, cs_item_rev#28, (((cs_item_rev#28 / ((ss_item_rev#17 + cs_item_rev#28) + ws_item_rev#39)) / 3) * 100) AS cs_dev#41, ws_item_rev#39, (((ws_item_rev#39 / ((ss_item_rev#17 + cs_item_rev#28) + ws_item_rev#39)) / 3) * 100) AS ws_dev#42, (((ss_item_rev#17 + cs_item_rev#28) + ws_item_rev#39) / 3) AS average#43] +Input [5]: [item_id#16, ss_item_rev#17, cs_item_rev#28, item_id#38, ws_item_rev#39] + +(142) TakeOrderedAndProject +Input [8]: [item_id#16, ss_item_rev#17, ss_dev#40, cs_item_rev#28, cs_dev#41, ws_item_rev#39, ws_dev#42, average#43] +Arguments: X, [item_id#16 ASC NULLS FIRST, ss_item_rev#17 ASC NULLS FIRST], [item_id#16, ss_item_rev#17, ss_dev#40, cs_item_rev#28, cs_dev#41, ws_item_rev#39, ws_dev#42, average#43] + +(143) Scan parquet +Output [3]: [ss_sold_date_sk#1, ss_item_sk#2, ss_ext_sales_price#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(144) Filter +Input [3]: [ss_sold_date_sk#1, ss_item_sk#2, ss_ext_sales_price#3] +Condition : (isnotnull(ss_item_sk#2) AND isnotnull(ss_sold_date_sk#1)) + +(145) Exchange +Input [3]: [ss_sold_date_sk#1, ss_item_sk#2, ss_ext_sales_price#3] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(146) Sort +Input [3]: [ss_sold_date_sk#1, ss_item_sk#2, ss_ext_sales_price#3] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false, 0 + +(147) Scan parquet +Output [2]: [i_item_sk#4, i_item_id#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_item_id)] +ReadSchema: struct + +(148) Filter +Input [2]: [i_item_sk#4, i_item_id#5] +Condition : (isnotnull(i_item_sk#4) AND isnotnull(i_item_id#5)) + +(149) Exchange +Input [2]: [i_item_sk#4, i_item_id#5] +Arguments: hashpartitioning(i_item_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(150) Sort +Input [2]: [i_item_sk#4, i_item_id#5] +Arguments: [i_item_sk#4 ASC NULLS FIRST], false, 0 + +(151) SortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#4] +Join type: Inner +Join condition: None + +(152) Project +Output [3]: [ss_sold_date_sk#1, ss_ext_sales_price#3, i_item_id#5] +Input [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_ext_sales_price#3, i_item_sk#4, i_item_id#5] + +(153) Exchange +Input [3]: [ss_sold_date_sk#1, ss_ext_sales_price#3, i_item_id#5] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(154) Sort +Input [3]: [ss_sold_date_sk#1, ss_ext_sales_price#3, i_item_id#5] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(155) Scan parquet +Output [2]: [d_date_sk#6, d_date#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date_sk)] +ReadSchema: struct + +(156) Filter +Input [2]: [d_date_sk#6, d_date#7] +Condition : isnotnull(d_date_sk#6) + +(157) Exchange +Input [2]: [d_date_sk#6, d_date#7] +Arguments: hashpartitioning(d_date#7, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(158) Sort +Input [2]: [d_date_sk#6, d_date#7] +Arguments: [d_date#7 ASC NULLS FIRST], false, 0 + +(159) Scan parquet +Output [2]: [d_date#8, d_week_seq#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_week_seq)] +ReadSchema: struct + +(160) Filter +Input [2]: [d_date#8, d_week_seq#9] +Condition : (isnotnull(d_week_seq#9) AND (d_week_seq#9 = Subquery subquery#10, [id=#11])) + +(161) Project +Output [1]: [d_date#8] +Input [2]: [d_date#8, d_week_seq#9] + +(162) Exchange +Input [1]: [d_date#8] +Arguments: hashpartitioning(d_date#8, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(163) Sort +Input [1]: [d_date#8] +Arguments: [d_date#8 ASC NULLS FIRST], false, 0 + +(164) SortMergeJoin +Left keys [1]: [d_date#7] +Right keys [1]: [d_date#8] +Join type: LeftSemi +Join condition: None + +(165) Project +Output [1]: [d_date_sk#6] +Input [2]: [d_date_sk#6, d_date#7] + +(166) Exchange +Input [1]: [d_date_sk#6] +Arguments: hashpartitioning(d_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(167) Sort +Input [1]: [d_date_sk#6] +Arguments: [d_date_sk#6 ASC NULLS FIRST], false, 0 + +(168) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#6] +Join type: Inner +Join condition: None + +(169) Project +Output [2]: [ss_ext_sales_price#3, i_item_id#5] +Input [4]: [ss_sold_date_sk#1, ss_ext_sales_price#3, i_item_id#5, d_date_sk#6] + +(170) HashAggregate +Input [2]: [ss_ext_sales_price#3, i_item_id#5] +Keys [1]: [i_item_id#5] +Functions [1]: [partial_sum(UnscaledValue(ss_ext_sales_price#3))] +Aggregate Attributes [1]: [sum#13] +Results [2]: [i_item_id#5, sum#44] + +(171) Exchange +Input [2]: [i_item_id#5, sum#44] +Arguments: hashpartitioning(i_item_id#5, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(172) HashAggregate +Input [2]: [i_item_id#5, sum#44] +Keys [1]: [i_item_id#5] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#3))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#3))#15] +Results [2]: [i_item_id#5 AS item_id#16, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#3))#15,17,2) AS ss_item_rev#17] + +(173) Filter +Input [2]: [item_id#16, ss_item_rev#17] +Condition : isnotnull(ss_item_rev#17) + +(174) Sort +Input [2]: [item_id#16, ss_item_rev#17] +Arguments: [item_id#16 ASC NULLS FIRST], false, 0 + +(175) Scan parquet +Output [3]: [cs_sold_date_sk#18, cs_item_sk#19, cs_ext_sales_price#20] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(176) Filter +Input [3]: [cs_sold_date_sk#18, cs_item_sk#19, cs_ext_sales_price#20] +Condition : (isnotnull(cs_item_sk#19) AND isnotnull(cs_sold_date_sk#18)) + +(177) Exchange +Input [3]: [cs_sold_date_sk#18, cs_item_sk#19, cs_ext_sales_price#20] +Arguments: hashpartitioning(cs_item_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(178) Sort +Input [3]: [cs_sold_date_sk#18, cs_item_sk#19, cs_ext_sales_price#20] +Arguments: [cs_item_sk#19 ASC NULLS FIRST], false, 0 + +(179) Scan parquet +Output [2]: [i_item_sk#21, i_item_id#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_item_id)] +ReadSchema: struct + +(180) Filter +Input [2]: [i_item_sk#21, i_item_id#22] +Condition : (isnotnull(i_item_sk#21) AND isnotnull(i_item_id#22)) + +(181) Exchange +Input [2]: [i_item_sk#21, i_item_id#22] +Arguments: hashpartitioning(i_item_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(182) Sort +Input [2]: [i_item_sk#21, i_item_id#22] +Arguments: [i_item_sk#21 ASC NULLS FIRST], false, 0 + +(183) SortMergeJoin +Left keys [1]: [cs_item_sk#19] +Right keys [1]: [i_item_sk#21] +Join type: Inner +Join condition: None + +(184) Project +Output [3]: [cs_sold_date_sk#18, cs_ext_sales_price#20, i_item_id#22] +Input [5]: [cs_sold_date_sk#18, cs_item_sk#19, cs_ext_sales_price#20, i_item_sk#21, i_item_id#22] + +(185) Exchange +Input [3]: [cs_sold_date_sk#18, cs_ext_sales_price#20, i_item_id#22] +Arguments: hashpartitioning(cs_sold_date_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(186) Sort +Input [3]: [cs_sold_date_sk#18, cs_ext_sales_price#20, i_item_id#22] +Arguments: [cs_sold_date_sk#18 ASC NULLS FIRST], false, 0 + +(187) Scan parquet +Output [2]: [d_date_sk#23, d_date#45] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date_sk)] +ReadSchema: struct + +(188) Filter +Input [2]: [d_date_sk#23, d_date#45] +Condition : isnotnull(d_date_sk#23) + +(189) Exchange +Input [2]: [d_date_sk#23, d_date#45] +Arguments: hashpartitioning(d_date#45, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(190) Sort +Input [2]: [d_date_sk#23, d_date#45] +Arguments: [d_date#45 ASC NULLS FIRST], false, 0 + +(191) Scan parquet +Output [2]: [d_date#46, d_week_seq#47] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_week_seq)] +ReadSchema: struct + +(192) Filter +Input [2]: [d_date#46, d_week_seq#47] +Condition : (isnotnull(d_week_seq#47) AND (d_week_seq#47 = Subquery subquery#48, [id=#49])) + +(193) Project +Output [1]: [d_date#46] +Input [2]: [d_date#46, d_week_seq#47] + +(194) Exchange +Input [1]: [d_date#46] +Arguments: hashpartitioning(d_date#46, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(195) Sort +Input [1]: [d_date#46] +Arguments: [d_date#46 ASC NULLS FIRST], false, 0 + +(196) SortMergeJoin +Left keys [1]: [d_date#45] +Right keys [1]: [d_date#46] +Join type: LeftSemi +Join condition: None + +(197) Project +Output [1]: [d_date_sk#23] +Input [2]: [d_date_sk#23, d_date#45] + +(198) Exchange +Input [1]: [d_date_sk#23] +Arguments: hashpartitioning(d_date_sk#23, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(199) Sort +Input [1]: [d_date_sk#23] +Arguments: [d_date_sk#23 ASC NULLS FIRST], false, 0 + +(200) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#18] +Right keys [1]: [d_date_sk#23] +Join type: Inner +Join condition: None + +(201) Project +Output [2]: [cs_ext_sales_price#20, i_item_id#22] +Input [4]: [cs_sold_date_sk#18, cs_ext_sales_price#20, i_item_id#22, d_date_sk#23] + +(202) HashAggregate +Input [2]: [cs_ext_sales_price#20, i_item_id#22] +Keys [1]: [i_item_id#22] +Functions [1]: [partial_sum(UnscaledValue(cs_ext_sales_price#20))] +Aggregate Attributes [1]: [sum#25] +Results [2]: [i_item_id#22, sum#50] + +(203) Exchange +Input [2]: [i_item_id#22, sum#50] +Arguments: hashpartitioning(i_item_id#22, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(204) HashAggregate +Input [2]: [i_item_id#22, sum#50] +Keys [1]: [i_item_id#22] +Functions [1]: [sum(UnscaledValue(cs_ext_sales_price#20))] +Aggregate Attributes [1]: [sum(UnscaledValue(cs_ext_sales_price#20))#26] +Results [2]: [i_item_id#22 AS item_id#27, MakeDecimal(sum(UnscaledValue(cs_ext_sales_price#20))#26,17,2) AS cs_item_rev#28] + +(205) Filter +Input [2]: [item_id#27, cs_item_rev#28] +Condition : isnotnull(cs_item_rev#28) + +(206) Sort +Input [2]: [item_id#27, cs_item_rev#28] +Arguments: [item_id#27 ASC NULLS FIRST], false, 0 + +(207) SortMergeJoin +Left keys [1]: [item_id#16] +Right keys [1]: [item_id#27] +Join type: Inner +Join condition: ((((cast(ss_item_rev#17 as decimal(19,3)) >= (0.9 * cs_item_rev#28)) AND (cast(ss_item_rev#17 as decimal(20,3)) <= (1.1 * cs_item_rev#28))) AND (cast(cs_item_rev#28 as decimal(19,3)) >= (0.9 * ss_item_rev#17))) AND (cast(cs_item_rev#28 as decimal(20,3)) <= (1.1 * ss_item_rev#17))) + +(208) Project +Output [3]: [item_id#16, ss_item_rev#17, cs_item_rev#28] +Input [4]: [item_id#16, ss_item_rev#17, item_id#27, cs_item_rev#28] + +(209) Scan parquet +Output [3]: [ws_sold_date_sk#29, ws_item_sk#30, ws_ext_sales_price#31] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(210) Filter +Input [3]: [ws_sold_date_sk#29, ws_item_sk#30, ws_ext_sales_price#31] +Condition : (isnotnull(ws_item_sk#30) AND isnotnull(ws_sold_date_sk#29)) + +(211) Exchange +Input [3]: [ws_sold_date_sk#29, ws_item_sk#30, ws_ext_sales_price#31] +Arguments: hashpartitioning(ws_item_sk#30, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(212) Sort +Input [3]: [ws_sold_date_sk#29, ws_item_sk#30, ws_ext_sales_price#31] +Arguments: [ws_item_sk#30 ASC NULLS FIRST], false, 0 + +(213) Scan parquet +Output [2]: [i_item_sk#32, i_item_id#33] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_item_id)] +ReadSchema: struct + +(214) Filter +Input [2]: [i_item_sk#32, i_item_id#33] +Condition : (isnotnull(i_item_sk#32) AND isnotnull(i_item_id#33)) + +(215) Exchange +Input [2]: [i_item_sk#32, i_item_id#33] +Arguments: hashpartitioning(i_item_sk#32, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(216) Sort +Input [2]: [i_item_sk#32, i_item_id#33] +Arguments: [i_item_sk#32 ASC NULLS FIRST], false, 0 + +(217) SortMergeJoin +Left keys [1]: [ws_item_sk#30] +Right keys [1]: [i_item_sk#32] +Join type: Inner +Join condition: None + +(218) Project +Output [3]: [ws_sold_date_sk#29, ws_ext_sales_price#31, i_item_id#33] +Input [5]: [ws_sold_date_sk#29, ws_item_sk#30, ws_ext_sales_price#31, i_item_sk#32, i_item_id#33] + +(219) Exchange +Input [3]: [ws_sold_date_sk#29, ws_ext_sales_price#31, i_item_id#33] +Arguments: hashpartitioning(ws_sold_date_sk#29, 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(220) Sort +Input [3]: [ws_sold_date_sk#29, ws_ext_sales_price#31, i_item_id#33] +Arguments: [ws_sold_date_sk#29 ASC NULLS FIRST], false, 0 + +(221) Scan parquet +Output [2]: [d_date_sk#34, d_date#51] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date_sk)] +ReadSchema: struct + +(222) Filter +Input [2]: [d_date_sk#34, d_date#51] +Condition : isnotnull(d_date_sk#34) + +(223) Exchange +Input [2]: [d_date_sk#34, d_date#51] +Arguments: hashpartitioning(d_date#51, 100), ENSURE_REQUIREMENTS, [plan_id=31] + +(224) Sort +Input [2]: [d_date_sk#34, d_date#51] +Arguments: [d_date#51 ASC NULLS FIRST], false, 0 + +(225) Scan parquet +Output [2]: [d_date#52, d_week_seq#53] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_week_seq)] +ReadSchema: struct + +(226) Filter +Input [2]: [d_date#52, d_week_seq#53] +Condition : (isnotnull(d_week_seq#53) AND (d_week_seq#53 = Subquery subquery#54, [id=#55])) + +(227) Project +Output [1]: [d_date#52] +Input [2]: [d_date#52, d_week_seq#53] + +(228) Exchange +Input [1]: [d_date#52] +Arguments: hashpartitioning(d_date#52, 100), ENSURE_REQUIREMENTS, [plan_id=32] + +(229) Sort +Input [1]: [d_date#52] +Arguments: [d_date#52 ASC NULLS FIRST], false, 0 + +(230) SortMergeJoin +Left keys [1]: [d_date#51] +Right keys [1]: [d_date#52] +Join type: LeftSemi +Join condition: None + +(231) Project +Output [1]: [d_date_sk#34] +Input [2]: [d_date_sk#34, d_date#51] + +(232) Exchange +Input [1]: [d_date_sk#34] +Arguments: hashpartitioning(d_date_sk#34, 100), ENSURE_REQUIREMENTS, [plan_id=33] + +(233) Sort +Input [1]: [d_date_sk#34] +Arguments: [d_date_sk#34 ASC NULLS FIRST], false, 0 + +(234) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#29] +Right keys [1]: [d_date_sk#34] +Join type: Inner +Join condition: None + +(235) Project +Output [2]: [ws_ext_sales_price#31, i_item_id#33] +Input [4]: [ws_sold_date_sk#29, ws_ext_sales_price#31, i_item_id#33, d_date_sk#34] + +(236) HashAggregate +Input [2]: [ws_ext_sales_price#31, i_item_id#33] +Keys [1]: [i_item_id#33] +Functions [1]: [partial_sum(UnscaledValue(ws_ext_sales_price#31))] +Aggregate Attributes [1]: [sum#36] +Results [2]: [i_item_id#33, sum#56] + +(237) Exchange +Input [2]: [i_item_id#33, sum#56] +Arguments: hashpartitioning(i_item_id#33, 100), ENSURE_REQUIREMENTS, [plan_id=34] + +(238) HashAggregate +Input [2]: [i_item_id#33, sum#56] +Keys [1]: [i_item_id#33] +Functions [1]: [sum(UnscaledValue(ws_ext_sales_price#31))] +Aggregate Attributes [1]: [sum(UnscaledValue(ws_ext_sales_price#31))#37] +Results [2]: [i_item_id#33 AS item_id#38, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#31))#37,17,2) AS ws_item_rev#39] + +(239) Filter +Input [2]: [item_id#38, ws_item_rev#39] +Condition : isnotnull(ws_item_rev#39) + +(240) Sort +Input [2]: [item_id#38, ws_item_rev#39] +Arguments: [item_id#38 ASC NULLS FIRST], false, 0 + +(241) SortMergeJoin +Left keys [1]: [item_id#16] +Right keys [1]: [item_id#38] +Join type: Inner +Join condition: ((((((((cast(ss_item_rev#17 as decimal(19,3)) >= (0.9 * ws_item_rev#39)) AND (cast(ss_item_rev#17 as decimal(20,3)) <= (1.1 * ws_item_rev#39))) AND (cast(cs_item_rev#28 as decimal(19,3)) >= (0.9 * ws_item_rev#39))) AND (cast(cs_item_rev#28 as decimal(20,3)) <= (1.1 * ws_item_rev#39))) AND (cast(ws_item_rev#39 as decimal(19,3)) >= (0.9 * ss_item_rev#17))) AND (cast(ws_item_rev#39 as decimal(20,3)) <= (1.1 * ss_item_rev#17))) AND (cast(ws_item_rev#39 as decimal(19,3)) >= (0.9 * cs_item_rev#28))) AND (cast(ws_item_rev#39 as decimal(20,3)) <= (1.1 * cs_item_rev#28))) + +(242) Project +Output [8]: [item_id#16, ss_item_rev#17, (((ss_item_rev#17 / ((ss_item_rev#17 + cs_item_rev#28) + ws_item_rev#39)) / 3) * 100) AS ss_dev#40, cs_item_rev#28, (((cs_item_rev#28 / ((ss_item_rev#17 + cs_item_rev#28) + ws_item_rev#39)) / 3) * 100) AS cs_dev#41, ws_item_rev#39, (((ws_item_rev#39 / ((ss_item_rev#17 + cs_item_rev#28) + ws_item_rev#39)) / 3) * 100) AS ws_dev#42, (((ss_item_rev#17 + cs_item_rev#28) + ws_item_rev#39) / 3) AS average#43] +Input [5]: [item_id#16, ss_item_rev#17, cs_item_rev#28, item_id#38, ws_item_rev#39] + +(243) TakeOrderedAndProject +Input [8]: [item_id#16, ss_item_rev#17, ss_dev#40, cs_item_rev#28, cs_dev#41, ws_item_rev#39, ws_dev#42, average#43] +Arguments: X, [item_id#16 ASC NULLS FIRST, ss_item_rev#17 ASC NULLS FIRST], [item_id#16, ss_item_rev#17, ss_dev#40, cs_item_rev#28, cs_dev#41, ws_item_rev#39, ws_dev#42, average#43] + +(244) AdaptiveSparkPlan +Output [8]: [item_id#16, ss_item_rev#17, ss_dev#40, cs_item_rev#28, cs_dev#41, ws_item_rev#39, ws_dev#42, average#43] +Arguments: isFinalPlan=true + +===== Subqueries ===== + +Subquery:1 Hosting operator id = 34 Hosting Expression = Subquery subquery#10, [id=#11] +AdaptiveSparkPlan (252) ++- == Final Plan == + NativeProject (248) + +- NativeFilter (247) + +- InputAdapter (246) + +- NativeParquetScan (245) ++- == Initial Plan == + Project (251) + +- Filter (250) + +- Scan parquet (249) + + +(249) Scan parquet +Output [2]: [d_date#57, d_week_seq#58] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), EqualTo(d_date,2000-01-03)] +ReadSchema: struct + +(246) InputAdapter +Input [2]: [d_date#57, d_week_seq#58] +Arguments: [#57, #58] + +(247) NativeFilter +Input [2]: [#57#57, #58#58] +Condition : (isnotnull(d_date#57) AND (d_date#57 = 2000-01-03)) + +(248) NativeProject +Output [1]: [d_week_seq#58] +Input [2]: [#57#57, #58#58] + +(249) Scan parquet +Output [2]: [d_date#57, d_week_seq#58] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), EqualTo(d_date,2000-01-03)] +ReadSchema: struct + +(250) Filter +Input [2]: [d_date#57, d_week_seq#58] +Condition : (isnotnull(d_date#57) AND (d_date#57 = 2000-01-03)) + +(251) Project +Output [1]: [d_week_seq#58] +Input [2]: [d_date#57, d_week_seq#58] + +(252) AdaptiveSparkPlan +Output [1]: [d_week_seq#58] +Arguments: isFinalPlan=true + + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q59.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q59.txt new file mode 100644 index 000000000..216f4c6cf --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q59.txt @@ -0,0 +1,927 @@ +== Physical Plan == +AdaptiveSparkPlan (170) ++- == Final Plan == + NativeTakeOrdered (102) + +- NativeProject (101) + +- NativeSortMergeJoin Inner (100) + :- NativeSort (62) + : +- InputAdapter (61) + : +- AQEShuffleRead (60) + : +- ShuffleQueryStage (59), Statistics(X) + : +- NativeShuffleExchange (58) + : +- NativeProject (57) + : +- NativeSortMergeJoin Inner (56) + : :- NativeSort (46) + : : +- InputAdapter (45) + : : +- AQEShuffleRead (44) + : : +- ShuffleQueryStage (43), Statistics(X) + : : +- NativeShuffleExchange (42) + : : +- NativeProject (41) + : : +- NativeSortMergeJoin Inner (40) + : : :- NativeSort (31) + : : : +- InputAdapter (30) + : : : +- AQEShuffleRead (29) + : : : +- ShuffleQueryStage (28), Statistics(X) + : : : +- NativeShuffleExchange (27) + : : : +- NativeProject (26) + : : : +- NativeHashAggregate (25) + : : : +- InputAdapter (24) + : : : +- AQEShuffleRead (23) + : : : +- ShuffleQueryStage (22), Statistics(X) + : : : +- NativeShuffleExchange (21) + : : : +- NativeHashAggregate (20) + : : : +- NativeProject (19) + : : : +- NativeProject (18) + : : : +- NativeSortMergeJoin Inner (17) + : : : :- NativeSort (8) + : : : : +- InputAdapter (7) + : : : : +- AQEShuffleRead (6) + : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : +- NativeShuffleExchange (4) + : : : : +- NativeFilter (3) + : : : : +- InputAdapter (2) + : : : : +- NativeParquetScan (1) + : : : +- NativeSort (16) + : : : +- InputAdapter (15) + : : : +- AQEShuffleRead (14) + : : : +- ShuffleQueryStage (13), Statistics(X) + : : : +- NativeShuffleExchange (12) + : : : +- NativeFilter (11) + : : : +- InputAdapter (10) + : : : +- NativeParquetScan (9) + : : +- NativeSort (39) + : : +- InputAdapter (38) + : : +- AQEShuffleRead (37) + : : +- ShuffleQueryStage (36), Statistics(X) + : : +- NativeShuffleExchange (35) + : : +- NativeFilter (34) + : : +- InputAdapter (33) + : : +- NativeParquetScan (32) + : +- NativeSort (55) + : +- InputAdapter (54) + : +- AQEShuffleRead (53) + : +- ShuffleQueryStage (52), Statistics(X) + : +- NativeShuffleExchange (51) + : +- NativeProject (50) + : +- NativeFilter (49) + : +- InputAdapter (48) + : +- NativeParquetScan (47) + +- NativeSort (99) + +- InputAdapter (98) + +- AQEShuffleRead (97) + +- ShuffleQueryStage (96), Statistics(X) + +- NativeShuffleExchange (95) + +- NativeProject (94) + +- NativeSortMergeJoin Inner (93) + :- NativeSort (83) + : +- InputAdapter (82) + : +- AQEShuffleRead (81) + : +- ShuffleQueryStage (80), Statistics(X) + : +- NativeShuffleExchange (79) + : +- NativeProject (78) + : +- NativeSortMergeJoin Inner (77) + : :- NativeSort (68) + : : +- InputAdapter (67) + : : +- InputAdapter (66) + : : +- AQEShuffleRead (65) + : : +- ShuffleQueryStage (64), Statistics(X) + : : +- ReusedExchange (63) + : +- NativeSort (76) + : +- InputAdapter (75) + : +- AQEShuffleRead (74) + : +- ShuffleQueryStage (73), Statistics(X) + : +- NativeShuffleExchange (72) + : +- NativeFilter (71) + : +- InputAdapter (70) + : +- NativeParquetScan (69) + +- NativeSort (92) + +- InputAdapter (91) + +- AQEShuffleRead (90) + +- ShuffleQueryStage (89), Statistics(X) + +- NativeShuffleExchange (88) + +- NativeProject (87) + +- NativeFilter (86) + +- InputAdapter (85) + +- NativeParquetScan (84) ++- == Initial Plan == + TakeOrderedAndProject (169) + +- Project (168) + +- SortMergeJoin Inner (167) + :- Sort (134) + : +- Exchange (133) + : +- Project (132) + : +- SortMergeJoin Inner (131) + : :- Sort (125) + : : +- Exchange (124) + : : +- Project (123) + : : +- SortMergeJoin Inner (122) + : : :- Sort (117) + : : : +- Exchange (116) + : : : +- HashAggregate (115) + : : : +- Exchange (114) + : : : +- HashAggregate (113) + : : : +- Project (112) + : : : +- SortMergeJoin Inner (111) + : : : :- Sort (106) + : : : : +- Exchange (105) + : : : : +- Filter (104) + : : : : +- Scan parquet (103) + : : : +- Sort (110) + : : : +- Exchange (109) + : : : +- Filter (108) + : : : +- Scan parquet (107) + : : +- Sort (121) + : : +- Exchange (120) + : : +- Filter (119) + : : +- Scan parquet (118) + : +- Sort (130) + : +- Exchange (129) + : +- Project (128) + : +- Filter (127) + : +- Scan parquet (126) + +- Sort (166) + +- Exchange (165) + +- Project (164) + +- SortMergeJoin Inner (163) + :- Sort (157) + : +- Exchange (156) + : +- Project (155) + : +- SortMergeJoin Inner (154) + : :- Sort (149) + : : +- Exchange (148) + : : +- HashAggregate (147) + : : +- Exchange (146) + : : +- HashAggregate (145) + : : +- Project (144) + : : +- SortMergeJoin Inner (143) + : : :- Sort (138) + : : : +- Exchange (137) + : : : +- Filter (136) + : : : +- Scan parquet (135) + : : +- Sort (142) + : : +- Exchange (141) + : : +- Filter (140) + : : +- Scan parquet (139) + : +- Sort (153) + : +- Exchange (152) + : +- Filter (151) + : +- Scan parquet (150) + +- Sort (162) + +- Exchange (161) + +- Project (160) + +- Filter (159) + +- Scan parquet (158) + + +(103) Scan parquet +Output [3]: [ss_sold_date_sk#1, ss_store_sk#2, ss_sales_price#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [ss_sold_date_sk#1, ss_store_sk#2, ss_sales_price#3] +Arguments: [#1, #2, #3] + +(3) NativeFilter +Input [3]: [#1#1, #2#2, #3#3] +Condition : (isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_store_sk#2)) + +(4) NativeShuffleExchange +Input [3]: [#1#1, #2#2, #3#3] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [3]: [#1#1, #2#2, #3#3] +Arguments: X + +(6) AQEShuffleRead +Input [3]: [#1#1, #2#2, #3#3] +Arguments: coalesced + +(7) InputAdapter +Input [3]: [#1#1, #2#2, #3#3] + +(8) NativeSort +Input [3]: [#1#1, #2#2, #3#3] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(107) Scan parquet +Output [3]: [d_date_sk#4, d_week_seq#5, d_day_name#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date_sk), IsNotNull(d_week_seq)] +ReadSchema: struct + +(10) InputAdapter +Input [3]: [d_date_sk#4, d_week_seq#5, d_day_name#6] +Arguments: [#4, #5, #6] + +(11) NativeFilter +Input [3]: [#4#4, #5#5, #6#6] +Condition : (isnotnull(d_date_sk#4) AND isnotnull(d_week_seq#5)) + +(12) NativeShuffleExchange +Input [3]: [#4#4, #5#5, #6#6] +Arguments: hashpartitioning(d_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [3]: [#4#4, #5#5, #6#6] +Arguments: X + +(14) AQEShuffleRead +Input [3]: [#4#4, #5#5, #6#6] +Arguments: coalesced + +(15) InputAdapter +Input [3]: [#4#4, #5#5, #6#6] + +(16) NativeSort +Input [3]: [#4#4, #5#5, #6#6] +Arguments: [d_date_sk#4 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#4] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [4]: [ss_store_sk#2, ss_sales_price#3, d_week_seq#5, d_day_name#6] +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] + +(19) NativeProject +Output [9]: [d_week_seq#5 AS d_week_seq#5, ss_store_sk#2 AS ss_store_sk#2, UnscaledValue(CASE WHEN (d_day_name#6 = Sunday) THEN ss_sales_price#3 END) AS _c2#7, UnscaledValue(CASE WHEN (d_day_name#6 = Monday) THEN ss_sales_price#3 END) AS _c3#8, UnscaledValue(CASE WHEN (d_day_name#6 = Tuesday) THEN ss_sales_price#3 END) AS _c4#9, UnscaledValue(CASE WHEN (d_day_name#6 = Wednesday) THEN ss_sales_price#3 END) AS _c5#10, UnscaledValue(CASE WHEN (d_day_name#6 = Thursday) THEN ss_sales_price#3 END) AS _c6#11, UnscaledValue(CASE WHEN (d_day_name#6 = Friday) THEN ss_sales_price#3 END) AS _c7#12, UnscaledValue(CASE WHEN (d_day_name#6 = Saturday) THEN ss_sales_price#3 END) AS _c8#13] +Input [4]: [ss_store_sk#2, ss_sales_price#3, d_week_seq#5, d_day_name#6] + +(20) NativeHashAggregate +Input [9]: [d_week_seq#5, ss_store_sk#2, _c2#7, _c3#8, _c4#9, _c5#10, _c6#11, _c7#12, _c8#13] +Keys [2]: [d_week_seq#5, ss_store_sk#2] +Functions [7]: [partial_sum(_c2#7), partial_sum(_c3#8), partial_sum(_c4#9), partial_sum(_c5#10), partial_sum(_c6#11), partial_sum(_c7#12), partial_sum(_c8#13)] +Aggregate Attributes [7]: [sum#14, sum#15, sum#16, sum#17, sum#18, sum#19, sum#20] +Results [3]: [d_week_seq#5, ss_store_sk#2, #21#21] + +(21) NativeShuffleExchange +Input [3]: [d_week_seq#5, ss_store_sk#2, #21#21] +Arguments: hashpartitioning(d_week_seq#5, ss_store_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(22) ShuffleQueryStage +Output [3]: [d_week_seq#5, ss_store_sk#2, #21#21] +Arguments: X + +(23) AQEShuffleRead +Input [3]: [d_week_seq#5, ss_store_sk#2, #21#21] +Arguments: coalesced + +(24) InputAdapter +Input [3]: [d_week_seq#5, ss_store_sk#2, #21#21] + +(25) NativeHashAggregate +Input [3]: [d_week_seq#5, ss_store_sk#2, #21#21] +Keys [2]: [d_week_seq#5, ss_store_sk#2] +Functions [7]: [sum(UnscaledValue(CASE WHEN (d_day_name#6 = Sunday) THEN ss_sales_price#3 END)), sum(UnscaledValue(CASE WHEN (d_day_name#6 = Monday) THEN ss_sales_price#3 END)), sum(UnscaledValue(CASE WHEN (d_day_name#6 = Tuesday) THEN ss_sales_price#3 END)), sum(UnscaledValue(CASE WHEN (d_day_name#6 = Wednesday) THEN ss_sales_price#3 END)), sum(UnscaledValue(CASE WHEN (d_day_name#6 = Thursday) THEN ss_sales_price#3 END)), sum(UnscaledValue(CASE WHEN (d_day_name#6 = Friday) THEN ss_sales_price#3 END)), sum(UnscaledValue(CASE WHEN (d_day_name#6 = Saturday) THEN ss_sales_price#3 END))] +Aggregate Attributes [7]: [sum(UnscaledValue(CASE WHEN (d_day_name#6 = Sunday) THEN ss_sales_price#3 END))#22, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Monday) THEN ss_sales_price#3 END))#23, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Tuesday) THEN ss_sales_price#3 END))#24, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Wednesday) THEN ss_sales_price#3 END))#25, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Thursday) THEN ss_sales_price#3 END))#26, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Friday) THEN ss_sales_price#3 END))#27, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Saturday) THEN ss_sales_price#3 END))#28] +Results [9]: [d_week_seq#5, ss_store_sk#2, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Sunday) THEN ss_sales_price#3 END))#22, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Monday) THEN ss_sales_price#3 END))#23, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Tuesday) THEN ss_sales_price#3 END))#24, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Wednesday) THEN ss_sales_price#3 END))#25, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Thursday) THEN ss_sales_price#3 END))#26, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Friday) THEN ss_sales_price#3 END))#27, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Saturday) THEN ss_sales_price#3 END))#28] + +(26) NativeProject +Output [9]: [d_week_seq#5, ss_store_sk#2, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#6 = Sunday) THEN ss_sales_price#3 END))#22,17,2) AS sun_sales#29, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#6 = Monday) THEN ss_sales_price#3 END))#23,17,2) AS mon_sales#30, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#6 = Tuesday) THEN ss_sales_price#3 END))#24,17,2) AS tue_sales#31, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#6 = Wednesday) THEN ss_sales_price#3 END))#25,17,2) AS wed_sales#32, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#6 = Thursday) THEN ss_sales_price#3 END))#26,17,2) AS thu_sales#33, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#6 = Friday) THEN ss_sales_price#3 END))#27,17,2) AS fri_sales#34, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#6 = Saturday) THEN ss_sales_price#3 END))#28,17,2) AS sat_sales#35] +Input [9]: [d_week_seq#5, ss_store_sk#2, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Sunday) THEN ss_sales_price#3 END))#22, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Monday) THEN ss_sales_price#3 END))#23, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Tuesday) THEN ss_sales_price#3 END))#24, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Wednesday) THEN ss_sales_price#3 END))#25, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Thursday) THEN ss_sales_price#3 END))#26, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Friday) THEN ss_sales_price#3 END))#27, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Saturday) THEN ss_sales_price#3 END))#28] + +(27) NativeShuffleExchange +Input [9]: [d_week_seq#5, ss_store_sk#2, sun_sales#29, mon_sales#30, tue_sales#31, wed_sales#32, thu_sales#33, fri_sales#34, sat_sales#35] +Arguments: hashpartitioning(ss_store_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(28) ShuffleQueryStage +Output [9]: [d_week_seq#5, ss_store_sk#2, sun_sales#29, mon_sales#30, tue_sales#31, wed_sales#32, thu_sales#33, fri_sales#34, sat_sales#35] +Arguments: X + +(29) AQEShuffleRead +Input [9]: [d_week_seq#5, ss_store_sk#2, sun_sales#29, mon_sales#30, tue_sales#31, wed_sales#32, thu_sales#33, fri_sales#34, sat_sales#35] +Arguments: coalesced + +(30) InputAdapter +Input [9]: [d_week_seq#5, ss_store_sk#2, sun_sales#29, mon_sales#30, tue_sales#31, wed_sales#32, thu_sales#33, fri_sales#34, sat_sales#35] + +(31) NativeSort +Input [9]: [d_week_seq#5, ss_store_sk#2, sun_sales#29, mon_sales#30, tue_sales#31, wed_sales#32, thu_sales#33, fri_sales#34, sat_sales#35] +Arguments: [ss_store_sk#2 ASC NULLS FIRST], false + +(118) Scan parquet +Output [3]: [s_store_sk#36, s_store_id#37, s_store_name#38] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk), IsNotNull(s_store_id)] +ReadSchema: struct + +(33) InputAdapter +Input [3]: [s_store_sk#36, s_store_id#37, s_store_name#38] +Arguments: [#36, #37, #38] + +(34) NativeFilter +Input [3]: [#36#36, #37#37, #38#38] +Condition : (isnotnull(s_store_sk#36) AND isnotnull(s_store_id#37)) + +(35) NativeShuffleExchange +Input [3]: [#36#36, #37#37, #38#38] +Arguments: hashpartitioning(s_store_sk#36, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(36) ShuffleQueryStage +Output [3]: [#36#36, #37#37, #38#38] +Arguments: X + +(37) AQEShuffleRead +Input [3]: [#36#36, #37#37, #38#38] +Arguments: coalesced + +(38) InputAdapter +Input [3]: [#36#36, #37#37, #38#38] + +(39) NativeSort +Input [3]: [#36#36, #37#37, #38#38] +Arguments: [s_store_sk#36 ASC NULLS FIRST], false + +(40) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#2] +Right keys [1]: [s_store_sk#36] +Join type: Inner +Join condition: None + +(41) NativeProject +Output [10]: [d_week_seq#5, sun_sales#29, mon_sales#30, tue_sales#31, wed_sales#32, thu_sales#33, fri_sales#34, sat_sales#35, s_store_id#37, s_store_name#38] +Input [12]: [d_week_seq#5, ss_store_sk#2, sun_sales#29, mon_sales#30, tue_sales#31, wed_sales#32, thu_sales#33, fri_sales#34, sat_sales#35, #36#36, #37#37, #38#38] + +(42) NativeShuffleExchange +Input [10]: [d_week_seq#5, sun_sales#29, mon_sales#30, tue_sales#31, wed_sales#32, thu_sales#33, fri_sales#34, sat_sales#35, s_store_id#37, s_store_name#38] +Arguments: hashpartitioning(d_week_seq#5, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(43) ShuffleQueryStage +Output [10]: [d_week_seq#5, sun_sales#29, mon_sales#30, tue_sales#31, wed_sales#32, thu_sales#33, fri_sales#34, sat_sales#35, s_store_id#37, s_store_name#38] +Arguments: X + +(44) AQEShuffleRead +Input [10]: [d_week_seq#5, sun_sales#29, mon_sales#30, tue_sales#31, wed_sales#32, thu_sales#33, fri_sales#34, sat_sales#35, s_store_id#37, s_store_name#38] +Arguments: coalesced + +(45) InputAdapter +Input [10]: [d_week_seq#5, sun_sales#29, mon_sales#30, tue_sales#31, wed_sales#32, thu_sales#33, fri_sales#34, sat_sales#35, s_store_id#37, s_store_name#38] + +(46) NativeSort +Input [10]: [d_week_seq#5, sun_sales#29, mon_sales#30, tue_sales#31, wed_sales#32, thu_sales#33, fri_sales#34, sat_sales#35, s_store_id#37, s_store_name#38] +Arguments: [d_week_seq#5 ASC NULLS FIRST], false + +(126) Scan parquet +Output [2]: [d_month_seq#39, d_week_seq#40] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1212), LessThanOrEqual(d_month_seq,1223), IsNotNull(d_week_seq)] +ReadSchema: struct + +(48) InputAdapter +Input [2]: [d_month_seq#39, d_week_seq#40] +Arguments: [#39, #40] + +(49) NativeFilter +Input [2]: [#39#39, #40#40] +Condition : (((isnotnull(d_month_seq#39) AND (d_month_seq#39 >= 1212)) AND (d_month_seq#39 <= 1223)) AND isnotnull(d_week_seq#40)) + +(50) NativeProject +Output [1]: [d_week_seq#40] +Input [2]: [#39#39, #40#40] + +(51) NativeShuffleExchange +Input [1]: [d_week_seq#40] +Arguments: hashpartitioning(d_week_seq#40, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(52) ShuffleQueryStage +Output [1]: [d_week_seq#40] +Arguments: X + +(53) AQEShuffleRead +Input [1]: [d_week_seq#40] +Arguments: coalesced + +(54) InputAdapter +Input [1]: [d_week_seq#40] + +(55) NativeSort +Input [1]: [d_week_seq#40] +Arguments: [d_week_seq#40 ASC NULLS FIRST], false + +(56) NativeSortMergeJoin +Left keys [1]: [d_week_seq#5] +Right keys [1]: [d_week_seq#40] +Join type: Inner +Join condition: None + +(57) NativeProject +Output [10]: [s_store_name#38 AS s_store_name1#41, d_week_seq#5 AS d_week_seq1#42, s_store_id#37 AS s_store_id1#43, sun_sales#29 AS sun_sales1#44, mon_sales#30 AS mon_sales1#45, tue_sales#31 AS tue_sales1#46, wed_sales#32 AS wed_sales1#47, thu_sales#33 AS thu_sales1#48, fri_sales#34 AS fri_sales1#49, sat_sales#35 AS sat_sales1#50] +Input [11]: [d_week_seq#5, sun_sales#29, mon_sales#30, tue_sales#31, wed_sales#32, thu_sales#33, fri_sales#34, sat_sales#35, s_store_id#37, s_store_name#38, d_week_seq#40] + +(58) NativeShuffleExchange +Input [10]: [s_store_name1#41, d_week_seq1#42, s_store_id1#43, sun_sales1#44, mon_sales1#45, tue_sales1#46, wed_sales1#47, thu_sales1#48, fri_sales1#49, sat_sales1#50] +Arguments: hashpartitioning(s_store_id1#43, d_week_seq1#42, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(59) ShuffleQueryStage +Output [10]: [s_store_name1#41, d_week_seq1#42, s_store_id1#43, sun_sales1#44, mon_sales1#45, tue_sales1#46, wed_sales1#47, thu_sales1#48, fri_sales1#49, sat_sales1#50] +Arguments: X + +(60) AQEShuffleRead +Input [10]: [s_store_name1#41, d_week_seq1#42, s_store_id1#43, sun_sales1#44, mon_sales1#45, tue_sales1#46, wed_sales1#47, thu_sales1#48, fri_sales1#49, sat_sales1#50] +Arguments: coalesced + +(61) InputAdapter +Input [10]: [s_store_name1#41, d_week_seq1#42, s_store_id1#43, sun_sales1#44, mon_sales1#45, tue_sales1#46, wed_sales1#47, thu_sales1#48, fri_sales1#49, sat_sales1#50] + +(62) NativeSort +Input [10]: [s_store_name1#41, d_week_seq1#42, s_store_id1#43, sun_sales1#44, mon_sales1#45, tue_sales1#46, wed_sales1#47, thu_sales1#48, fri_sales1#49, sat_sales1#50] +Arguments: [s_store_id1#43 ASC NULLS FIRST, d_week_seq1#42 ASC NULLS FIRST], false + +(63) ReusedExchange [Reuses operator id: 27] +Output [9]: [d_week_seq#51, ss_store_sk#52, sun_sales#53, mon_sales#54, tue_sales#55, wed_sales#56, thu_sales#57, fri_sales#58, sat_sales#59] + +(64) ShuffleQueryStage +Output [9]: [d_week_seq#51, ss_store_sk#52, sun_sales#53, mon_sales#54, tue_sales#55, wed_sales#56, thu_sales#57, fri_sales#58, sat_sales#59] +Arguments: X + +(65) AQEShuffleRead +Input [9]: [d_week_seq#51, ss_store_sk#52, sun_sales#53, mon_sales#54, tue_sales#55, wed_sales#56, thu_sales#57, fri_sales#58, sat_sales#59] +Arguments: coalesced + +(66) InputAdapter +Input [9]: [d_week_seq#51, ss_store_sk#52, sun_sales#53, mon_sales#54, tue_sales#55, wed_sales#56, thu_sales#57, fri_sales#58, sat_sales#59] +Arguments: [#51, #52, #53, #54, #55, #56, #57, #58, #59] + +(67) InputAdapter +Input [9]: [#51#51, #52#52, #53#53, #54#54, #55#55, #56#56, #57#57, #58#58, #59#59] + +(68) NativeSort +Input [9]: [#51#51, #52#52, #53#53, #54#54, #55#55, #56#56, #57#57, #58#58, #59#59] +Arguments: [ss_store_sk#52 ASC NULLS FIRST], false + +(150) Scan parquet +Output [2]: [s_store_sk#60, s_store_id#61] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk), IsNotNull(s_store_id)] +ReadSchema: struct + +(70) InputAdapter +Input [2]: [s_store_sk#60, s_store_id#61] +Arguments: [#60, #61] + +(71) NativeFilter +Input [2]: [#60#60, #61#61] +Condition : (isnotnull(s_store_sk#60) AND isnotnull(s_store_id#61)) + +(72) NativeShuffleExchange +Input [2]: [#60#60, #61#61] +Arguments: hashpartitioning(s_store_sk#60, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(73) ShuffleQueryStage +Output [2]: [#60#60, #61#61] +Arguments: X + +(74) AQEShuffleRead +Input [2]: [#60#60, #61#61] +Arguments: coalesced + +(75) InputAdapter +Input [2]: [#60#60, #61#61] + +(76) NativeSort +Input [2]: [#60#60, #61#61] +Arguments: [s_store_sk#60 ASC NULLS FIRST], false + +(77) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#52] +Right keys [1]: [s_store_sk#60] +Join type: Inner +Join condition: None + +(78) NativeProject +Output [9]: [d_week_seq#51, sun_sales#53, mon_sales#54, tue_sales#55, wed_sales#56, thu_sales#57, fri_sales#58, sat_sales#59, s_store_id#61] +Input [11]: [#51#51, #52#52, #53#53, #54#54, #55#55, #56#56, #57#57, #58#58, #59#59, #60#60, #61#61] + +(79) NativeShuffleExchange +Input [9]: [d_week_seq#51, sun_sales#53, mon_sales#54, tue_sales#55, wed_sales#56, thu_sales#57, fri_sales#58, sat_sales#59, s_store_id#61] +Arguments: hashpartitioning(d_week_seq#51, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(80) ShuffleQueryStage +Output [9]: [d_week_seq#51, sun_sales#53, mon_sales#54, tue_sales#55, wed_sales#56, thu_sales#57, fri_sales#58, sat_sales#59, s_store_id#61] +Arguments: X + +(81) AQEShuffleRead +Input [9]: [d_week_seq#51, sun_sales#53, mon_sales#54, tue_sales#55, wed_sales#56, thu_sales#57, fri_sales#58, sat_sales#59, s_store_id#61] +Arguments: coalesced + +(82) InputAdapter +Input [9]: [d_week_seq#51, sun_sales#53, mon_sales#54, tue_sales#55, wed_sales#56, thu_sales#57, fri_sales#58, sat_sales#59, s_store_id#61] + +(83) NativeSort +Input [9]: [d_week_seq#51, sun_sales#53, mon_sales#54, tue_sales#55, wed_sales#56, thu_sales#57, fri_sales#58, sat_sales#59, s_store_id#61] +Arguments: [d_week_seq#51 ASC NULLS FIRST], false + +(158) Scan parquet +Output [2]: [d_month_seq#62, d_week_seq#63] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1224), LessThanOrEqual(d_month_seq,1235), IsNotNull(d_week_seq)] +ReadSchema: struct + +(85) InputAdapter +Input [2]: [d_month_seq#62, d_week_seq#63] +Arguments: [#62, #63] + +(86) NativeFilter +Input [2]: [#62#62, #63#63] +Condition : (((isnotnull(d_month_seq#62) AND (d_month_seq#62 >= 1224)) AND (d_month_seq#62 <= 1235)) AND isnotnull(d_week_seq#63)) + +(87) NativeProject +Output [1]: [d_week_seq#63] +Input [2]: [#62#62, #63#63] + +(88) NativeShuffleExchange +Input [1]: [d_week_seq#63] +Arguments: hashpartitioning(d_week_seq#63, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(89) ShuffleQueryStage +Output [1]: [d_week_seq#63] +Arguments: X + +(90) AQEShuffleRead +Input [1]: [d_week_seq#63] +Arguments: coalesced + +(91) InputAdapter +Input [1]: [d_week_seq#63] + +(92) NativeSort +Input [1]: [d_week_seq#63] +Arguments: [d_week_seq#63 ASC NULLS FIRST], false + +(93) NativeSortMergeJoin +Left keys [1]: [d_week_seq#51] +Right keys [1]: [d_week_seq#63] +Join type: Inner +Join condition: None + +(94) NativeProject +Output [9]: [d_week_seq#51 AS d_week_seq2#64, s_store_id#61 AS s_store_id2#65, sun_sales#53 AS sun_sales2#66, mon_sales#54 AS mon_sales2#67, tue_sales#55 AS tue_sales2#68, wed_sales#56 AS wed_sales2#69, thu_sales#57 AS thu_sales2#70, fri_sales#58 AS fri_sales2#71, sat_sales#59 AS sat_sales2#72] +Input [10]: [d_week_seq#51, sun_sales#53, mon_sales#54, tue_sales#55, wed_sales#56, thu_sales#57, fri_sales#58, sat_sales#59, s_store_id#61, d_week_seq#63] + +(95) NativeShuffleExchange +Input [9]: [d_week_seq2#64, s_store_id2#65, sun_sales2#66, mon_sales2#67, tue_sales2#68, wed_sales2#69, thu_sales2#70, fri_sales2#71, sat_sales2#72] +Arguments: hashpartitioning(s_store_id2#65, (d_week_seq2#64 - 52), 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(96) ShuffleQueryStage +Output [9]: [d_week_seq2#64, s_store_id2#65, sun_sales2#66, mon_sales2#67, tue_sales2#68, wed_sales2#69, thu_sales2#70, fri_sales2#71, sat_sales2#72] +Arguments: X + +(97) AQEShuffleRead +Input [9]: [d_week_seq2#64, s_store_id2#65, sun_sales2#66, mon_sales2#67, tue_sales2#68, wed_sales2#69, thu_sales2#70, fri_sales2#71, sat_sales2#72] +Arguments: coalesced + +(98) InputAdapter +Input [9]: [d_week_seq2#64, s_store_id2#65, sun_sales2#66, mon_sales2#67, tue_sales2#68, wed_sales2#69, thu_sales2#70, fri_sales2#71, sat_sales2#72] + +(99) NativeSort +Input [9]: [d_week_seq2#64, s_store_id2#65, sun_sales2#66, mon_sales2#67, tue_sales2#68, wed_sales2#69, thu_sales2#70, fri_sales2#71, sat_sales2#72] +Arguments: [s_store_id2#65 ASC NULLS FIRST, (d_week_seq2#64 - 52) ASC NULLS FIRST], false + +(100) NativeSortMergeJoin +Left keys [2]: [s_store_id1#43, d_week_seq1#42] +Right keys [2]: [s_store_id2#65, (d_week_seq2#64 - 52)] +Join type: Inner +Join condition: None + +(101) NativeProject +Output [10]: [s_store_name1#41, s_store_id1#43, d_week_seq1#42, (sun_sales1#44 / sun_sales2#66) AS (sun_sales1 / sun_sales2)#73, (mon_sales1#45 / mon_sales2#67) AS (mon_sales1 / mon_sales2)#74, (tue_sales1#46 / tue_sales2#68) AS (tue_sales1 / tue_sales2)#75, (wed_sales1#47 / wed_sales2#69) AS (wed_sales1 / wed_sales2)#76, (thu_sales1#48 / thu_sales2#70) AS (thu_sales1 / thu_sales2)#77, (fri_sales1#49 / fri_sales2#71) AS (fri_sales1 / fri_sales2)#78, (sat_sales1#50 / sat_sales2#72) AS (sat_sales1 / sat_sales2)#79] +Input [19]: [s_store_name1#41, d_week_seq1#42, s_store_id1#43, sun_sales1#44, mon_sales1#45, tue_sales1#46, wed_sales1#47, thu_sales1#48, fri_sales1#49, sat_sales1#50, d_week_seq2#64, s_store_id2#65, sun_sales2#66, mon_sales2#67, tue_sales2#68, wed_sales2#69, thu_sales2#70, fri_sales2#71, sat_sales2#72] + +(102) NativeTakeOrdered +Input [10]: [s_store_name1#41, s_store_id1#43, d_week_seq1#42, (sun_sales1 / sun_sales2)#73, (mon_sales1 / mon_sales2)#74, (tue_sales1 / tue_sales2)#75, (wed_sales1 / wed_sales2)#76, (thu_sales1 / thu_sales2)#77, (fri_sales1 / fri_sales2)#78, (sat_sales1 / sat_sales2)#79] +Arguments: X, [s_store_name1#41 ASC NULLS FIRST, s_store_id1#43 ASC NULLS FIRST, d_week_seq1#42 ASC NULLS FIRST] + +(103) Scan parquet +Output [3]: [ss_sold_date_sk#1, ss_store_sk#2, ss_sales_price#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(104) Filter +Input [3]: [ss_sold_date_sk#1, ss_store_sk#2, ss_sales_price#3] +Condition : (isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_store_sk#2)) + +(105) Exchange +Input [3]: [ss_sold_date_sk#1, ss_store_sk#2, ss_sales_price#3] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(106) Sort +Input [3]: [ss_sold_date_sk#1, ss_store_sk#2, ss_sales_price#3] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(107) Scan parquet +Output [3]: [d_date_sk#4, d_week_seq#5, d_day_name#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date_sk), IsNotNull(d_week_seq)] +ReadSchema: struct + +(108) Filter +Input [3]: [d_date_sk#4, d_week_seq#5, d_day_name#6] +Condition : (isnotnull(d_date_sk#4) AND isnotnull(d_week_seq#5)) + +(109) Exchange +Input [3]: [d_date_sk#4, d_week_seq#5, d_day_name#6] +Arguments: hashpartitioning(d_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(110) Sort +Input [3]: [d_date_sk#4, d_week_seq#5, d_day_name#6] +Arguments: [d_date_sk#4 ASC NULLS FIRST], false, 0 + +(111) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#4] +Join type: Inner +Join condition: None + +(112) Project +Output [4]: [ss_store_sk#2, ss_sales_price#3, d_week_seq#5, d_day_name#6] +Input [6]: [ss_sold_date_sk#1, ss_store_sk#2, ss_sales_price#3, d_date_sk#4, d_week_seq#5, d_day_name#6] + +(113) HashAggregate +Input [4]: [ss_store_sk#2, ss_sales_price#3, d_week_seq#5, d_day_name#6] +Keys [2]: [d_week_seq#5, ss_store_sk#2] +Functions [7]: [partial_sum(UnscaledValue(CASE WHEN (d_day_name#6 = Sunday) THEN ss_sales_price#3 END)), partial_sum(UnscaledValue(CASE WHEN (d_day_name#6 = Monday) THEN ss_sales_price#3 END)), partial_sum(UnscaledValue(CASE WHEN (d_day_name#6 = Tuesday) THEN ss_sales_price#3 END)), partial_sum(UnscaledValue(CASE WHEN (d_day_name#6 = Wednesday) THEN ss_sales_price#3 END)), partial_sum(UnscaledValue(CASE WHEN (d_day_name#6 = Thursday) THEN ss_sales_price#3 END)), partial_sum(UnscaledValue(CASE WHEN (d_day_name#6 = Friday) THEN ss_sales_price#3 END)), partial_sum(UnscaledValue(CASE WHEN (d_day_name#6 = Saturday) THEN ss_sales_price#3 END))] +Aggregate Attributes [7]: [sum#14, sum#15, sum#16, sum#17, sum#18, sum#19, sum#20] +Results [9]: [d_week_seq#5, ss_store_sk#2, sum#80, sum#81, sum#82, sum#83, sum#84, sum#85, sum#86] + +(114) Exchange +Input [9]: [d_week_seq#5, ss_store_sk#2, sum#80, sum#81, sum#82, sum#83, sum#84, sum#85, sum#86] +Arguments: hashpartitioning(d_week_seq#5, ss_store_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(115) HashAggregate +Input [9]: [d_week_seq#5, ss_store_sk#2, sum#80, sum#81, sum#82, sum#83, sum#84, sum#85, sum#86] +Keys [2]: [d_week_seq#5, ss_store_sk#2] +Functions [7]: [sum(UnscaledValue(CASE WHEN (d_day_name#6 = Sunday) THEN ss_sales_price#3 END)), sum(UnscaledValue(CASE WHEN (d_day_name#6 = Monday) THEN ss_sales_price#3 END)), sum(UnscaledValue(CASE WHEN (d_day_name#6 = Tuesday) THEN ss_sales_price#3 END)), sum(UnscaledValue(CASE WHEN (d_day_name#6 = Wednesday) THEN ss_sales_price#3 END)), sum(UnscaledValue(CASE WHEN (d_day_name#6 = Thursday) THEN ss_sales_price#3 END)), sum(UnscaledValue(CASE WHEN (d_day_name#6 = Friday) THEN ss_sales_price#3 END)), sum(UnscaledValue(CASE WHEN (d_day_name#6 = Saturday) THEN ss_sales_price#3 END))] +Aggregate Attributes [7]: [sum(UnscaledValue(CASE WHEN (d_day_name#6 = Sunday) THEN ss_sales_price#3 END))#22, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Monday) THEN ss_sales_price#3 END))#23, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Tuesday) THEN ss_sales_price#3 END))#24, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Wednesday) THEN ss_sales_price#3 END))#25, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Thursday) THEN ss_sales_price#3 END))#26, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Friday) THEN ss_sales_price#3 END))#27, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Saturday) THEN ss_sales_price#3 END))#28] +Results [9]: [d_week_seq#5, ss_store_sk#2, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#6 = Sunday) THEN ss_sales_price#3 END))#22,17,2) AS sun_sales#29, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#6 = Monday) THEN ss_sales_price#3 END))#23,17,2) AS mon_sales#30, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#6 = Tuesday) THEN ss_sales_price#3 END))#24,17,2) AS tue_sales#31, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#6 = Wednesday) THEN ss_sales_price#3 END))#25,17,2) AS wed_sales#32, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#6 = Thursday) THEN ss_sales_price#3 END))#26,17,2) AS thu_sales#33, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#6 = Friday) THEN ss_sales_price#3 END))#27,17,2) AS fri_sales#34, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#6 = Saturday) THEN ss_sales_price#3 END))#28,17,2) AS sat_sales#35] + +(116) Exchange +Input [9]: [d_week_seq#5, ss_store_sk#2, sun_sales#29, mon_sales#30, tue_sales#31, wed_sales#32, thu_sales#33, fri_sales#34, sat_sales#35] +Arguments: hashpartitioning(ss_store_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(117) Sort +Input [9]: [d_week_seq#5, ss_store_sk#2, sun_sales#29, mon_sales#30, tue_sales#31, wed_sales#32, thu_sales#33, fri_sales#34, sat_sales#35] +Arguments: [ss_store_sk#2 ASC NULLS FIRST], false, 0 + +(118) Scan parquet +Output [3]: [s_store_sk#36, s_store_id#37, s_store_name#38] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk), IsNotNull(s_store_id)] +ReadSchema: struct + +(119) Filter +Input [3]: [s_store_sk#36, s_store_id#37, s_store_name#38] +Condition : (isnotnull(s_store_sk#36) AND isnotnull(s_store_id#37)) + +(120) Exchange +Input [3]: [s_store_sk#36, s_store_id#37, s_store_name#38] +Arguments: hashpartitioning(s_store_sk#36, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(121) Sort +Input [3]: [s_store_sk#36, s_store_id#37, s_store_name#38] +Arguments: [s_store_sk#36 ASC NULLS FIRST], false, 0 + +(122) SortMergeJoin +Left keys [1]: [ss_store_sk#2] +Right keys [1]: [s_store_sk#36] +Join type: Inner +Join condition: None + +(123) Project +Output [10]: [d_week_seq#5, sun_sales#29, mon_sales#30, tue_sales#31, wed_sales#32, thu_sales#33, fri_sales#34, sat_sales#35, s_store_id#37, s_store_name#38] +Input [12]: [d_week_seq#5, ss_store_sk#2, sun_sales#29, mon_sales#30, tue_sales#31, wed_sales#32, thu_sales#33, fri_sales#34, sat_sales#35, s_store_sk#36, s_store_id#37, s_store_name#38] + +(124) Exchange +Input [10]: [d_week_seq#5, sun_sales#29, mon_sales#30, tue_sales#31, wed_sales#32, thu_sales#33, fri_sales#34, sat_sales#35, s_store_id#37, s_store_name#38] +Arguments: hashpartitioning(d_week_seq#5, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(125) Sort +Input [10]: [d_week_seq#5, sun_sales#29, mon_sales#30, tue_sales#31, wed_sales#32, thu_sales#33, fri_sales#34, sat_sales#35, s_store_id#37, s_store_name#38] +Arguments: [d_week_seq#5 ASC NULLS FIRST], false, 0 + +(126) Scan parquet +Output [2]: [d_month_seq#39, d_week_seq#40] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1212), LessThanOrEqual(d_month_seq,1223), IsNotNull(d_week_seq)] +ReadSchema: struct + +(127) Filter +Input [2]: [d_month_seq#39, d_week_seq#40] +Condition : (((isnotnull(d_month_seq#39) AND (d_month_seq#39 >= 1212)) AND (d_month_seq#39 <= 1223)) AND isnotnull(d_week_seq#40)) + +(128) Project +Output [1]: [d_week_seq#40] +Input [2]: [d_month_seq#39, d_week_seq#40] + +(129) Exchange +Input [1]: [d_week_seq#40] +Arguments: hashpartitioning(d_week_seq#40, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(130) Sort +Input [1]: [d_week_seq#40] +Arguments: [d_week_seq#40 ASC NULLS FIRST], false, 0 + +(131) SortMergeJoin +Left keys [1]: [d_week_seq#5] +Right keys [1]: [d_week_seq#40] +Join type: Inner +Join condition: None + +(132) Project +Output [10]: [s_store_name#38 AS s_store_name1#41, d_week_seq#5 AS d_week_seq1#42, s_store_id#37 AS s_store_id1#43, sun_sales#29 AS sun_sales1#44, mon_sales#30 AS mon_sales1#45, tue_sales#31 AS tue_sales1#46, wed_sales#32 AS wed_sales1#47, thu_sales#33 AS thu_sales1#48, fri_sales#34 AS fri_sales1#49, sat_sales#35 AS sat_sales1#50] +Input [11]: [d_week_seq#5, sun_sales#29, mon_sales#30, tue_sales#31, wed_sales#32, thu_sales#33, fri_sales#34, sat_sales#35, s_store_id#37, s_store_name#38, d_week_seq#40] + +(133) Exchange +Input [10]: [s_store_name1#41, d_week_seq1#42, s_store_id1#43, sun_sales1#44, mon_sales1#45, tue_sales1#46, wed_sales1#47, thu_sales1#48, fri_sales1#49, sat_sales1#50] +Arguments: hashpartitioning(s_store_id1#43, d_week_seq1#42, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(134) Sort +Input [10]: [s_store_name1#41, d_week_seq1#42, s_store_id1#43, sun_sales1#44, mon_sales1#45, tue_sales1#46, wed_sales1#47, thu_sales1#48, fri_sales1#49, sat_sales1#50] +Arguments: [s_store_id1#43 ASC NULLS FIRST, d_week_seq1#42 ASC NULLS FIRST], false, 0 + +(135) Scan parquet +Output [3]: [ss_sold_date_sk#87, ss_store_sk#52, ss_sales_price#88] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(136) Filter +Input [3]: [ss_sold_date_sk#87, ss_store_sk#52, ss_sales_price#88] +Condition : (isnotnull(ss_sold_date_sk#87) AND isnotnull(ss_store_sk#52)) + +(137) Exchange +Input [3]: [ss_sold_date_sk#87, ss_store_sk#52, ss_sales_price#88] +Arguments: hashpartitioning(ss_sold_date_sk#87, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(138) Sort +Input [3]: [ss_sold_date_sk#87, ss_store_sk#52, ss_sales_price#88] +Arguments: [ss_sold_date_sk#87 ASC NULLS FIRST], false, 0 + +(139) Scan parquet +Output [3]: [d_date_sk#89, d_week_seq#51, d_day_name#90] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date_sk), IsNotNull(d_week_seq)] +ReadSchema: struct + +(140) Filter +Input [3]: [d_date_sk#89, d_week_seq#51, d_day_name#90] +Condition : (isnotnull(d_date_sk#89) AND isnotnull(d_week_seq#51)) + +(141) Exchange +Input [3]: [d_date_sk#89, d_week_seq#51, d_day_name#90] +Arguments: hashpartitioning(d_date_sk#89, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(142) Sort +Input [3]: [d_date_sk#89, d_week_seq#51, d_day_name#90] +Arguments: [d_date_sk#89 ASC NULLS FIRST], false, 0 + +(143) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#87] +Right keys [1]: [d_date_sk#89] +Join type: Inner +Join condition: None + +(144) Project +Output [4]: [ss_store_sk#52, ss_sales_price#88, d_week_seq#51, d_day_name#90] +Input [6]: [ss_sold_date_sk#87, ss_store_sk#52, ss_sales_price#88, d_date_sk#89, d_week_seq#51, d_day_name#90] + +(145) HashAggregate +Input [4]: [ss_store_sk#52, ss_sales_price#88, d_week_seq#51, d_day_name#90] +Keys [2]: [d_week_seq#51, ss_store_sk#52] +Functions [7]: [partial_sum(UnscaledValue(CASE WHEN (d_day_name#90 = Sunday) THEN ss_sales_price#88 END)), partial_sum(UnscaledValue(CASE WHEN (d_day_name#90 = Monday) THEN ss_sales_price#88 END)), partial_sum(UnscaledValue(CASE WHEN (d_day_name#90 = Tuesday) THEN ss_sales_price#88 END)), partial_sum(UnscaledValue(CASE WHEN (d_day_name#90 = Wednesday) THEN ss_sales_price#88 END)), partial_sum(UnscaledValue(CASE WHEN (d_day_name#90 = Thursday) THEN ss_sales_price#88 END)), partial_sum(UnscaledValue(CASE WHEN (d_day_name#90 = Friday) THEN ss_sales_price#88 END)), partial_sum(UnscaledValue(CASE WHEN (d_day_name#90 = Saturday) THEN ss_sales_price#88 END))] +Aggregate Attributes [7]: [sum#91, sum#92, sum#93, sum#94, sum#95, sum#96, sum#97] +Results [9]: [d_week_seq#51, ss_store_sk#52, sum#98, sum#99, sum#100, sum#101, sum#102, sum#103, sum#104] + +(146) Exchange +Input [9]: [d_week_seq#51, ss_store_sk#52, sum#98, sum#99, sum#100, sum#101, sum#102, sum#103, sum#104] +Arguments: hashpartitioning(d_week_seq#51, ss_store_sk#52, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(147) HashAggregate +Input [9]: [d_week_seq#51, ss_store_sk#52, sum#98, sum#99, sum#100, sum#101, sum#102, sum#103, sum#104] +Keys [2]: [d_week_seq#51, ss_store_sk#52] +Functions [7]: [sum(UnscaledValue(CASE WHEN (d_day_name#90 = Sunday) THEN ss_sales_price#88 END)), sum(UnscaledValue(CASE WHEN (d_day_name#90 = Monday) THEN ss_sales_price#88 END)), sum(UnscaledValue(CASE WHEN (d_day_name#90 = Tuesday) THEN ss_sales_price#88 END)), sum(UnscaledValue(CASE WHEN (d_day_name#90 = Wednesday) THEN ss_sales_price#88 END)), sum(UnscaledValue(CASE WHEN (d_day_name#90 = Thursday) THEN ss_sales_price#88 END)), sum(UnscaledValue(CASE WHEN (d_day_name#90 = Friday) THEN ss_sales_price#88 END)), sum(UnscaledValue(CASE WHEN (d_day_name#90 = Saturday) THEN ss_sales_price#88 END))] +Aggregate Attributes [7]: [sum(UnscaledValue(CASE WHEN (d_day_name#90 = Sunday) THEN ss_sales_price#88 END))#22, sum(UnscaledValue(CASE WHEN (d_day_name#90 = Monday) THEN ss_sales_price#88 END))#23, sum(UnscaledValue(CASE WHEN (d_day_name#90 = Tuesday) THEN ss_sales_price#88 END))#24, sum(UnscaledValue(CASE WHEN (d_day_name#90 = Wednesday) THEN ss_sales_price#88 END))#25, sum(UnscaledValue(CASE WHEN (d_day_name#90 = Thursday) THEN ss_sales_price#88 END))#26, sum(UnscaledValue(CASE WHEN (d_day_name#90 = Friday) THEN ss_sales_price#88 END))#27, sum(UnscaledValue(CASE WHEN (d_day_name#90 = Saturday) THEN ss_sales_price#88 END))#28] +Results [9]: [d_week_seq#51, ss_store_sk#52, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#90 = Sunday) THEN ss_sales_price#88 END))#22,17,2) AS sun_sales#53, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#90 = Monday) THEN ss_sales_price#88 END))#23,17,2) AS mon_sales#54, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#90 = Tuesday) THEN ss_sales_price#88 END))#24,17,2) AS tue_sales#55, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#90 = Wednesday) THEN ss_sales_price#88 END))#25,17,2) AS wed_sales#56, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#90 = Thursday) THEN ss_sales_price#88 END))#26,17,2) AS thu_sales#57, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#90 = Friday) THEN ss_sales_price#88 END))#27,17,2) AS fri_sales#58, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#90 = Saturday) THEN ss_sales_price#88 END))#28,17,2) AS sat_sales#59] + +(148) Exchange +Input [9]: [d_week_seq#51, ss_store_sk#52, sun_sales#53, mon_sales#54, tue_sales#55, wed_sales#56, thu_sales#57, fri_sales#58, sat_sales#59] +Arguments: hashpartitioning(ss_store_sk#52, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(149) Sort +Input [9]: [d_week_seq#51, ss_store_sk#52, sun_sales#53, mon_sales#54, tue_sales#55, wed_sales#56, thu_sales#57, fri_sales#58, sat_sales#59] +Arguments: [ss_store_sk#52 ASC NULLS FIRST], false, 0 + +(150) Scan parquet +Output [2]: [s_store_sk#60, s_store_id#61] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk), IsNotNull(s_store_id)] +ReadSchema: struct + +(151) Filter +Input [2]: [s_store_sk#60, s_store_id#61] +Condition : (isnotnull(s_store_sk#60) AND isnotnull(s_store_id#61)) + +(152) Exchange +Input [2]: [s_store_sk#60, s_store_id#61] +Arguments: hashpartitioning(s_store_sk#60, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(153) Sort +Input [2]: [s_store_sk#60, s_store_id#61] +Arguments: [s_store_sk#60 ASC NULLS FIRST], false, 0 + +(154) SortMergeJoin +Left keys [1]: [ss_store_sk#52] +Right keys [1]: [s_store_sk#60] +Join type: Inner +Join condition: None + +(155) Project +Output [9]: [d_week_seq#51, sun_sales#53, mon_sales#54, tue_sales#55, wed_sales#56, thu_sales#57, fri_sales#58, sat_sales#59, s_store_id#61] +Input [11]: [d_week_seq#51, ss_store_sk#52, sun_sales#53, mon_sales#54, tue_sales#55, wed_sales#56, thu_sales#57, fri_sales#58, sat_sales#59, s_store_sk#60, s_store_id#61] + +(156) Exchange +Input [9]: [d_week_seq#51, sun_sales#53, mon_sales#54, tue_sales#55, wed_sales#56, thu_sales#57, fri_sales#58, sat_sales#59, s_store_id#61] +Arguments: hashpartitioning(d_week_seq#51, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(157) Sort +Input [9]: [d_week_seq#51, sun_sales#53, mon_sales#54, tue_sales#55, wed_sales#56, thu_sales#57, fri_sales#58, sat_sales#59, s_store_id#61] +Arguments: [d_week_seq#51 ASC NULLS FIRST], false, 0 + +(158) Scan parquet +Output [2]: [d_month_seq#62, d_week_seq#63] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1224), LessThanOrEqual(d_month_seq,1235), IsNotNull(d_week_seq)] +ReadSchema: struct + +(159) Filter +Input [2]: [d_month_seq#62, d_week_seq#63] +Condition : (((isnotnull(d_month_seq#62) AND (d_month_seq#62 >= 1224)) AND (d_month_seq#62 <= 1235)) AND isnotnull(d_week_seq#63)) + +(160) Project +Output [1]: [d_week_seq#63] +Input [2]: [d_month_seq#62, d_week_seq#63] + +(161) Exchange +Input [1]: [d_week_seq#63] +Arguments: hashpartitioning(d_week_seq#63, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(162) Sort +Input [1]: [d_week_seq#63] +Arguments: [d_week_seq#63 ASC NULLS FIRST], false, 0 + +(163) SortMergeJoin +Left keys [1]: [d_week_seq#51] +Right keys [1]: [d_week_seq#63] +Join type: Inner +Join condition: None + +(164) Project +Output [9]: [d_week_seq#51 AS d_week_seq2#64, s_store_id#61 AS s_store_id2#65, sun_sales#53 AS sun_sales2#66, mon_sales#54 AS mon_sales2#67, tue_sales#55 AS tue_sales2#68, wed_sales#56 AS wed_sales2#69, thu_sales#57 AS thu_sales2#70, fri_sales#58 AS fri_sales2#71, sat_sales#59 AS sat_sales2#72] +Input [10]: [d_week_seq#51, sun_sales#53, mon_sales#54, tue_sales#55, wed_sales#56, thu_sales#57, fri_sales#58, sat_sales#59, s_store_id#61, d_week_seq#63] + +(165) Exchange +Input [9]: [d_week_seq2#64, s_store_id2#65, sun_sales2#66, mon_sales2#67, tue_sales2#68, wed_sales2#69, thu_sales2#70, fri_sales2#71, sat_sales2#72] +Arguments: hashpartitioning(s_store_id2#65, (d_week_seq2#64 - 52), 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(166) Sort +Input [9]: [d_week_seq2#64, s_store_id2#65, sun_sales2#66, mon_sales2#67, tue_sales2#68, wed_sales2#69, thu_sales2#70, fri_sales2#71, sat_sales2#72] +Arguments: [s_store_id2#65 ASC NULLS FIRST, (d_week_seq2#64 - 52) ASC NULLS FIRST], false, 0 + +(167) SortMergeJoin +Left keys [2]: [s_store_id1#43, d_week_seq1#42] +Right keys [2]: [s_store_id2#65, (d_week_seq2#64 - 52)] +Join type: Inner +Join condition: None + +(168) Project +Output [10]: [s_store_name1#41, s_store_id1#43, d_week_seq1#42, (sun_sales1#44 / sun_sales2#66) AS (sun_sales1 / sun_sales2)#73, (mon_sales1#45 / mon_sales2#67) AS (mon_sales1 / mon_sales2)#74, (tue_sales1#46 / tue_sales2#68) AS (tue_sales1 / tue_sales2)#75, (wed_sales1#47 / wed_sales2#69) AS (wed_sales1 / wed_sales2)#76, (thu_sales1#48 / thu_sales2#70) AS (thu_sales1 / thu_sales2)#77, (fri_sales1#49 / fri_sales2#71) AS (fri_sales1 / fri_sales2)#78, (sat_sales1#50 / sat_sales2#72) AS (sat_sales1 / sat_sales2)#79] +Input [19]: [s_store_name1#41, d_week_seq1#42, s_store_id1#43, sun_sales1#44, mon_sales1#45, tue_sales1#46, wed_sales1#47, thu_sales1#48, fri_sales1#49, sat_sales1#50, d_week_seq2#64, s_store_id2#65, sun_sales2#66, mon_sales2#67, tue_sales2#68, wed_sales2#69, thu_sales2#70, fri_sales2#71, sat_sales2#72] + +(169) TakeOrderedAndProject +Input [10]: [s_store_name1#41, s_store_id1#43, d_week_seq1#42, (sun_sales1 / sun_sales2)#73, (mon_sales1 / mon_sales2)#74, (tue_sales1 / tue_sales2)#75, (wed_sales1 / wed_sales2)#76, (thu_sales1 / thu_sales2)#77, (fri_sales1 / fri_sales2)#78, (sat_sales1 / sat_sales2)#79] +Arguments: X, [s_store_name1#41 ASC NULLS FIRST, s_store_id1#43 ASC NULLS FIRST, d_week_seq1#42 ASC NULLS FIRST], [s_store_name1#41, s_store_id1#43, d_week_seq1#42, (sun_sales1 / sun_sales2)#73, (mon_sales1 / mon_sales2)#74, (tue_sales1 / tue_sales2)#75, (wed_sales1 / wed_sales2)#76, (thu_sales1 / thu_sales2)#77, (fri_sales1 / fri_sales2)#78, (sat_sales1 / sat_sales2)#79] + +(170) AdaptiveSparkPlan +Output [10]: [s_store_name1#41, s_store_id1#43, d_week_seq1#42, (sun_sales1 / sun_sales2)#73, (mon_sales1 / mon_sales2)#74, (tue_sales1 / tue_sales2)#75, (wed_sales1 / wed_sales2)#76, (thu_sales1 / thu_sales2)#77, (fri_sales1 / fri_sales2)#78, (sat_sales1 / sat_sales2)#79] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q6.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q6.txt new file mode 100644 index 000000000..ddadc008a --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q6.txt @@ -0,0 +1,923 @@ +== Physical Plan == +AdaptiveSparkPlan (147) ++- == Final Plan == + NativeProject (95) + +- NativeTakeOrdered (94) + +- NativeFilter (93) + +- NativeProject (92) + +- NativeHashAggregate (91) + +- InputAdapter (90) + +- AQEShuffleRead (89) + +- ShuffleQueryStage (88), Statistics(X) + +- NativeShuffleExchange (87) + +- NativeHashAggregate (86) + +- NativeProject (85) + +- NativeSortMergeJoin Inner (84) + :- NativeSort (54) + : +- InputAdapter (53) + : +- AQEShuffleRead (52) + : +- ShuffleQueryStage (51), Statistics(X) + : +- NativeShuffleExchange (50) + : +- NativeProject (49) + : +- NativeSortMergeJoin Inner (48) + : :- NativeSort (38) + : : +- InputAdapter (37) + : : +- AQEShuffleRead (36) + : : +- ShuffleQueryStage (35), Statistics(X) + : : +- NativeShuffleExchange (34) + : : +- NativeProject (33) + : : +- NativeSortMergeJoin Inner (32) + : : :- NativeSort (23) + : : : +- InputAdapter (22) + : : : +- AQEShuffleRead (21) + : : : +- ShuffleQueryStage (20), Statistics(X) + : : : +- NativeShuffleExchange (19) + : : : +- NativeProject (18) + : : : +- NativeSortMergeJoin Inner (17) + : : : :- NativeSort (8) + : : : : +- InputAdapter (7) + : : : : +- AQEShuffleRead (6) + : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : +- NativeShuffleExchange (4) + : : : : +- NativeFilter (3) + : : : : +- InputAdapter (2) + : : : : +- NativeParquetScan (1) + : : : +- NativeSort (16) + : : : +- InputAdapter (15) + : : : +- AQEShuffleRead (14) + : : : +- ShuffleQueryStage (13), Statistics(X) + : : : +- NativeShuffleExchange (12) + : : : +- NativeFilter (11) + : : : +- InputAdapter (10) + : : : +- NativeParquetScan (9) + : : +- NativeSort (31) + : : +- InputAdapter (30) + : : +- AQEShuffleRead (29) + : : +- ShuffleQueryStage (28), Statistics(X) + : : +- NativeShuffleExchange (27) + : : +- NativeFilter (26) + : : +- InputAdapter (25) + : : +- NativeParquetScan (24) + : +- NativeSort (47) + : +- InputAdapter (46) + : +- AQEShuffleRead (45) + : +- ShuffleQueryStage (44), Statistics(X) + : +- NativeShuffleExchange (43) + : +- NativeProject (42) + : +- NativeFilter (41) + : +- InputAdapter (40) + : +- NativeParquetScan (39) + +- NativeSort (83) + +- InputAdapter (82) + +- AQEShuffleRead (81) + +- ShuffleQueryStage (80), Statistics(X) + +- NativeShuffleExchange (79) + +- ConvertToNative (78) + +- * Project (77) + +- * SortMergeJoin Inner (76) + :- NativeSort (62) + : +- InputAdapter (61) + : +- AQEShuffleRead (60) + : +- ShuffleQueryStage (59), Statistics(X) + : +- NativeShuffleExchange (58) + : +- NativeFilter (57) + : +- InputAdapter (56) + : +- NativeParquetScan (55) + +- NativeSort (75) + +- NativeFilter (74) + +- NativeProject (73) + +- NativeHashAggregate (72) + +- InputAdapter (71) + +- AQEShuffleRead (70) + +- ShuffleQueryStage (69), Statistics(X) + +- NativeShuffleExchange (68) + +- NativeHashAggregate (67) + +- NativeProject (66) + +- NativeFilter (65) + +- InputAdapter (64) + +- NativeParquetScan (63) ++- == Initial Plan == + TakeOrderedAndProject (146) + +- Filter (145) + +- HashAggregate (144) + +- Exchange (143) + +- HashAggregate (142) + +- Project (141) + +- SortMergeJoin Inner (140) + :- Sort (124) + : +- Exchange (123) + : +- Project (122) + : +- SortMergeJoin Inner (121) + : :- Sort (115) + : : +- Exchange (114) + : : +- Project (113) + : : +- SortMergeJoin Inner (112) + : : :- Sort (107) + : : : +- Exchange (106) + : : : +- Project (105) + : : : +- SortMergeJoin Inner (104) + : : : :- Sort (99) + : : : : +- Exchange (98) + : : : : +- Filter (97) + : : : : +- Scan parquet (96) + : : : +- Sort (103) + : : : +- Exchange (102) + : : : +- Filter (101) + : : : +- Scan parquet (100) + : : +- Sort (111) + : : +- Exchange (110) + : : +- Filter (109) + : : +- Scan parquet (108) + : +- Sort (120) + : +- Exchange (119) + : +- Project (118) + : +- Filter (117) + : +- Scan parquet (116) + +- Sort (139) + +- Exchange (138) + +- Project (137) + +- SortMergeJoin Inner (136) + :- Sort (128) + : +- Exchange (127) + : +- Filter (126) + : +- Scan parquet (125) + +- Sort (135) + +- Filter (134) + +- HashAggregate (133) + +- Exchange (132) + +- HashAggregate (131) + +- Filter (130) + +- Scan parquet (129) + + +(96) Scan parquet +Output [2]: [ca_address_sk#1, ca_state#2] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [2]: [ca_address_sk#1, ca_state#2] +Arguments: [#1, #2] + +(3) NativeFilter +Input [2]: [#1#1, #2#2] +Condition : isnotnull(ca_address_sk#1) + +(4) NativeShuffleExchange +Input [2]: [#1#1, #2#2] +Arguments: hashpartitioning(ca_address_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: [ca_address_sk#1 ASC NULLS FIRST], false + +(100) Scan parquet +Output [2]: [c_customer_sk#3, c_current_addr_sk#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_current_addr_sk), IsNotNull(c_customer_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [c_customer_sk#3, c_current_addr_sk#4] +Arguments: [#3, #4] + +(11) NativeFilter +Input [2]: [#3#3, #4#4] +Condition : (isnotnull(c_current_addr_sk#4) AND isnotnull(c_customer_sk#3)) + +(12) NativeShuffleExchange +Input [2]: [#3#3, #4#4] +Arguments: hashpartitioning(c_current_addr_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [2]: [#3#3, #4#4] +Arguments: X + +(14) AQEShuffleRead +Input [2]: [#3#3, #4#4] +Arguments: coalesced + +(15) InputAdapter +Input [2]: [#3#3, #4#4] + +(16) NativeSort +Input [2]: [#3#3, #4#4] +Arguments: [c_current_addr_sk#4 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [1]: [ca_address_sk#1] +Right keys [1]: [c_current_addr_sk#4] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [2]: [ca_state#2, c_customer_sk#3] +Input [4]: [#1#1, #2#2, #3#3, #4#4] + +(19) NativeShuffleExchange +Input [2]: [ca_state#2, c_customer_sk#3] +Arguments: hashpartitioning(c_customer_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [2]: [ca_state#2, c_customer_sk#3] +Arguments: X + +(21) AQEShuffleRead +Input [2]: [ca_state#2, c_customer_sk#3] +Arguments: coalesced + +(22) InputAdapter +Input [2]: [ca_state#2, c_customer_sk#3] + +(23) NativeSort +Input [2]: [ca_state#2, c_customer_sk#3] +Arguments: [c_customer_sk#3 ASC NULLS FIRST], false + +(108) Scan parquet +Output [3]: [ss_sold_date_sk#5, ss_item_sk#6, ss_customer_sk#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk), IsNotNull(ss_sold_date_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(25) InputAdapter +Input [3]: [ss_sold_date_sk#5, ss_item_sk#6, ss_customer_sk#7] +Arguments: [#5, #6, #7] + +(26) NativeFilter +Input [3]: [#5#5, #6#6, #7#7] +Condition : ((isnotnull(ss_customer_sk#7) AND isnotnull(ss_sold_date_sk#5)) AND isnotnull(ss_item_sk#6)) + +(27) NativeShuffleExchange +Input [3]: [#5#5, #6#6, #7#7] +Arguments: hashpartitioning(ss_customer_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(28) ShuffleQueryStage +Output [3]: [#5#5, #6#6, #7#7] +Arguments: X + +(29) AQEShuffleRead +Input [3]: [#5#5, #6#6, #7#7] +Arguments: coalesced + +(30) InputAdapter +Input [3]: [#5#5, #6#6, #7#7] + +(31) NativeSort +Input [3]: [#5#5, #6#6, #7#7] +Arguments: [ss_customer_sk#7 ASC NULLS FIRST], false + +(32) NativeSortMergeJoin +Left keys [1]: [c_customer_sk#3] +Right keys [1]: [ss_customer_sk#7] +Join type: Inner +Join condition: None + +(33) NativeProject +Output [3]: [ca_state#2, ss_sold_date_sk#5, ss_item_sk#6] +Input [5]: [ca_state#2, c_customer_sk#3, #5#5, #6#6, #7#7] + +(34) NativeShuffleExchange +Input [3]: [ca_state#2, ss_sold_date_sk#5, ss_item_sk#6] +Arguments: hashpartitioning(ss_sold_date_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(35) ShuffleQueryStage +Output [3]: [ca_state#2, ss_sold_date_sk#5, ss_item_sk#6] +Arguments: X + +(36) AQEShuffleRead +Input [3]: [ca_state#2, ss_sold_date_sk#5, ss_item_sk#6] +Arguments: coalesced + +(37) InputAdapter +Input [3]: [ca_state#2, ss_sold_date_sk#5, ss_item_sk#6] + +(38) NativeSort +Input [3]: [ca_state#2, ss_sold_date_sk#5, ss_item_sk#6] +Arguments: [ss_sold_date_sk#5 ASC NULLS FIRST], false + +(116) Scan parquet +Output [2]: [d_date_sk#8, d_month_seq#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), IsNotNull(d_date_sk)] +ReadSchema: struct + +(40) InputAdapter +Input [2]: [d_date_sk#8, d_month_seq#9] +Arguments: [#8, #9] + +(41) NativeFilter +Input [2]: [#8#8, #9#9] +Condition : ((isnotnull(d_month_seq#9) AND (d_month_seq#9 = Subquery subquery#10, [id=#11])) AND isnotnull(d_date_sk#8)) + +(42) NativeProject +Output [1]: [d_date_sk#8] +Input [2]: [#8#8, #9#9] + +(43) NativeShuffleExchange +Input [1]: [d_date_sk#8] +Arguments: hashpartitioning(d_date_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) ShuffleQueryStage +Output [1]: [d_date_sk#8] +Arguments: X + +(45) AQEShuffleRead +Input [1]: [d_date_sk#8] +Arguments: coalesced + +(46) InputAdapter +Input [1]: [d_date_sk#8] + +(47) NativeSort +Input [1]: [d_date_sk#8] +Arguments: [d_date_sk#8 ASC NULLS FIRST], false + +(48) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#5] +Right keys [1]: [d_date_sk#8] +Join type: Inner +Join condition: None + +(49) NativeProject +Output [2]: [ca_state#2, ss_item_sk#6] +Input [4]: [ca_state#2, ss_sold_date_sk#5, ss_item_sk#6, d_date_sk#8] + +(50) NativeShuffleExchange +Input [2]: [ca_state#2, ss_item_sk#6] +Arguments: hashpartitioning(ss_item_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(51) ShuffleQueryStage +Output [2]: [ca_state#2, ss_item_sk#6] +Arguments: X + +(52) AQEShuffleRead +Input [2]: [ca_state#2, ss_item_sk#6] +Arguments: coalesced + +(53) InputAdapter +Input [2]: [ca_state#2, ss_item_sk#6] + +(54) NativeSort +Input [2]: [ca_state#2, ss_item_sk#6] +Arguments: [ss_item_sk#6 ASC NULLS FIRST], false + +(125) Scan parquet +Output [3]: [i_item_sk#12, i_current_price#13, i_category#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_current_price), IsNotNull(i_category), IsNotNull(i_item_sk)] +ReadSchema: struct + +(56) InputAdapter +Input [3]: [i_item_sk#12, i_current_price#13, i_category#14] +Arguments: [#12, #13, #14] + +(57) NativeFilter +Input [3]: [#12#12, #13#13, #14#14] +Condition : ((isnotnull(i_current_price#13) AND isnotnull(i_category#14)) AND isnotnull(i_item_sk#12)) + +(58) NativeShuffleExchange +Input [3]: [#12#12, #13#13, #14#14] +Arguments: hashpartitioning(i_category#14, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(59) ShuffleQueryStage +Output [3]: [#12#12, #13#13, #14#14] +Arguments: X + +(60) AQEShuffleRead +Input [3]: [#12#12, #13#13, #14#14] +Arguments: coalesced + +(61) InputAdapter +Input [3]: [#12#12, #13#13, #14#14] + +(62) NativeSort +Input [3]: [#12#12, #13#13, #14#14] +Arguments: [i_category#14 ASC NULLS FIRST], false + +(129) Scan parquet +Output [2]: [i_current_price#15, i_category#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_category)] +ReadSchema: struct + +(64) InputAdapter +Input [2]: [i_current_price#15, i_category#16] +Arguments: [#15, #16] + +(65) NativeFilter +Input [2]: [#15#15, #16#16] +Condition : isnotnull(i_category#16) + +(66) NativeProject +Output [2]: [i_category#16 AS i_category#16, UnscaledValue(i_current_price#15) AS _c1#17] +Input [2]: [#15#15, #16#16] + +(67) NativeHashAggregate +Input [2]: [i_category#16, _c1#17] +Keys [1]: [i_category#16] +Functions [1]: [partial_avg(_c1#17)] +Aggregate Attributes [2]: [sum#18, count#19] +Results [2]: [i_category#16, #20#20] + +(68) NativeShuffleExchange +Input [2]: [i_category#16, #20#20] +Arguments: hashpartitioning(i_category#16, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(69) ShuffleQueryStage +Output [2]: [i_category#16, #20#20] +Arguments: X + +(70) AQEShuffleRead +Input [2]: [i_category#16, #20#20] +Arguments: coalesced + +(71) InputAdapter +Input [2]: [i_category#16, #20#20] + +(72) NativeHashAggregate +Input [2]: [i_category#16, #20#20] +Keys [1]: [i_category#16] +Functions [1]: [avg(UnscaledValue(i_current_price#15))] +Aggregate Attributes [1]: [avg(UnscaledValue(i_current_price#15))#21] +Results [2]: [i_category#16, avg(UnscaledValue(i_current_price#15))#21] + +(73) NativeProject +Output [2]: [cast((avg(UnscaledValue(i_current_price#15))#21 / 100.0) as decimal(11,6)) AS avg(i_current_price)#22, i_category#16] +Input [2]: [i_category#16, avg(UnscaledValue(i_current_price#15))#21] + +(74) NativeFilter +Input [2]: [avg(i_current_price)#22, i_category#16] +Condition : isnotnull(avg(i_current_price)#22) + +(75) NativeSort +Input [2]: [avg(i_current_price)#22, i_category#16] +Arguments: [i_category#16 ASC NULLS FIRST], false + +(76) SortMergeJoin [codegen id : 1] +Left keys [1]: [i_category#14] +Right keys [1]: [i_category#16] +Join type: Inner +Join condition: (cast(i_current_price#13 as decimal(14,7)) > (1.2 * avg(i_current_price)#22)) + +(77) Project [codegen id : 1] +Output [1]: [i_item_sk#12] +Input [5]: [#12#12, #13#13, #14#14, avg(i_current_price)#22, i_category#16] + +(78) ConvertToNative +Input [1]: [i_item_sk#12] + +(79) NativeShuffleExchange +Input [1]: [i_item_sk#12] +Arguments: hashpartitioning(i_item_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(80) ShuffleQueryStage +Output [1]: [i_item_sk#12] +Arguments: X + +(81) AQEShuffleRead +Input [1]: [i_item_sk#12] +Arguments: coalesced + +(82) InputAdapter +Input [1]: [i_item_sk#12] + +(83) NativeSort +Input [1]: [i_item_sk#12] +Arguments: [i_item_sk#12 ASC NULLS FIRST], false + +(84) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#6] +Right keys [1]: [i_item_sk#12] +Join type: Inner +Join condition: None + +(85) NativeProject +Output [1]: [ca_state#2] +Input [3]: [ca_state#2, ss_item_sk#6, i_item_sk#12] + +(86) NativeHashAggregate +Input [1]: [ca_state#2] +Keys [1]: [ca_state#2] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#23] +Results [2]: [ca_state#2, #20#20] + +(87) NativeShuffleExchange +Input [2]: [ca_state#2, #20#20] +Arguments: hashpartitioning(ca_state#2, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(88) ShuffleQueryStage +Output [2]: [ca_state#2, #20#20] +Arguments: X + +(89) AQEShuffleRead +Input [2]: [ca_state#2, #20#20] +Arguments: coalesced + +(90) InputAdapter +Input [2]: [ca_state#2, #20#20] + +(91) NativeHashAggregate +Input [2]: [ca_state#2, #20#20] +Keys [1]: [ca_state#2] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#24] +Results [2]: [ca_state#2, count(1)#24] + +(92) NativeProject +Output [3]: [ca_state#2 AS state#25, count(1)#24 AS cnt#26, ca_state#2] +Input [2]: [ca_state#2, count(1)#24] + +(93) NativeFilter +Input [3]: [state#25, cnt#26, ca_state#2] +Condition : (cnt#26 >= 10) + +(94) NativeTakeOrdered +Input [3]: [state#25, cnt#26, ca_state#2] +Arguments: X, [cnt#26 ASC NULLS FIRST, ca_state#2 ASC NULLS FIRST] + +(95) NativeProject +Output [2]: [state#25, cnt#26] +Input [3]: [state#25, cnt#26, ca_state#2] + +(96) Scan parquet +Output [2]: [ca_address_sk#1, ca_state#2] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk)] +ReadSchema: struct + +(97) Filter +Input [2]: [ca_address_sk#1, ca_state#2] +Condition : isnotnull(ca_address_sk#1) + +(98) Exchange +Input [2]: [ca_address_sk#1, ca_state#2] +Arguments: hashpartitioning(ca_address_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(99) Sort +Input [2]: [ca_address_sk#1, ca_state#2] +Arguments: [ca_address_sk#1 ASC NULLS FIRST], false, 0 + +(100) Scan parquet +Output [2]: [c_customer_sk#3, c_current_addr_sk#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_current_addr_sk), IsNotNull(c_customer_sk)] +ReadSchema: struct + +(101) Filter +Input [2]: [c_customer_sk#3, c_current_addr_sk#4] +Condition : (isnotnull(c_current_addr_sk#4) AND isnotnull(c_customer_sk#3)) + +(102) Exchange +Input [2]: [c_customer_sk#3, c_current_addr_sk#4] +Arguments: hashpartitioning(c_current_addr_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(103) Sort +Input [2]: [c_customer_sk#3, c_current_addr_sk#4] +Arguments: [c_current_addr_sk#4 ASC NULLS FIRST], false, 0 + +(104) SortMergeJoin +Left keys [1]: [ca_address_sk#1] +Right keys [1]: [c_current_addr_sk#4] +Join type: Inner +Join condition: None + +(105) Project +Output [2]: [ca_state#2, c_customer_sk#3] +Input [4]: [ca_address_sk#1, ca_state#2, c_customer_sk#3, c_current_addr_sk#4] + +(106) Exchange +Input [2]: [ca_state#2, c_customer_sk#3] +Arguments: hashpartitioning(c_customer_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(107) Sort +Input [2]: [ca_state#2, c_customer_sk#3] +Arguments: [c_customer_sk#3 ASC NULLS FIRST], false, 0 + +(108) Scan parquet +Output [3]: [ss_sold_date_sk#5, ss_item_sk#6, ss_customer_sk#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk), IsNotNull(ss_sold_date_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(109) Filter +Input [3]: [ss_sold_date_sk#5, ss_item_sk#6, ss_customer_sk#7] +Condition : ((isnotnull(ss_customer_sk#7) AND isnotnull(ss_sold_date_sk#5)) AND isnotnull(ss_item_sk#6)) + +(110) Exchange +Input [3]: [ss_sold_date_sk#5, ss_item_sk#6, ss_customer_sk#7] +Arguments: hashpartitioning(ss_customer_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(111) Sort +Input [3]: [ss_sold_date_sk#5, ss_item_sk#6, ss_customer_sk#7] +Arguments: [ss_customer_sk#7 ASC NULLS FIRST], false, 0 + +(112) SortMergeJoin +Left keys [1]: [c_customer_sk#3] +Right keys [1]: [ss_customer_sk#7] +Join type: Inner +Join condition: None + +(113) Project +Output [3]: [ca_state#2, ss_sold_date_sk#5, ss_item_sk#6] +Input [5]: [ca_state#2, c_customer_sk#3, ss_sold_date_sk#5, ss_item_sk#6, ss_customer_sk#7] + +(114) Exchange +Input [3]: [ca_state#2, ss_sold_date_sk#5, ss_item_sk#6] +Arguments: hashpartitioning(ss_sold_date_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(115) Sort +Input [3]: [ca_state#2, ss_sold_date_sk#5, ss_item_sk#6] +Arguments: [ss_sold_date_sk#5 ASC NULLS FIRST], false, 0 + +(116) Scan parquet +Output [2]: [d_date_sk#8, d_month_seq#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), IsNotNull(d_date_sk)] +ReadSchema: struct + +(117) Filter +Input [2]: [d_date_sk#8, d_month_seq#9] +Condition : ((isnotnull(d_month_seq#9) AND (d_month_seq#9 = Subquery subquery#10, [id=#11])) AND isnotnull(d_date_sk#8)) + +(118) Project +Output [1]: [d_date_sk#8] +Input [2]: [d_date_sk#8, d_month_seq#9] + +(119) Exchange +Input [1]: [d_date_sk#8] +Arguments: hashpartitioning(d_date_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(120) Sort +Input [1]: [d_date_sk#8] +Arguments: [d_date_sk#8 ASC NULLS FIRST], false, 0 + +(121) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#5] +Right keys [1]: [d_date_sk#8] +Join type: Inner +Join condition: None + +(122) Project +Output [2]: [ca_state#2, ss_item_sk#6] +Input [4]: [ca_state#2, ss_sold_date_sk#5, ss_item_sk#6, d_date_sk#8] + +(123) Exchange +Input [2]: [ca_state#2, ss_item_sk#6] +Arguments: hashpartitioning(ss_item_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(124) Sort +Input [2]: [ca_state#2, ss_item_sk#6] +Arguments: [ss_item_sk#6 ASC NULLS FIRST], false, 0 + +(125) Scan parquet +Output [3]: [i_item_sk#12, i_current_price#13, i_category#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_current_price), IsNotNull(i_category), IsNotNull(i_item_sk)] +ReadSchema: struct + +(126) Filter +Input [3]: [i_item_sk#12, i_current_price#13, i_category#14] +Condition : ((isnotnull(i_current_price#13) AND isnotnull(i_category#14)) AND isnotnull(i_item_sk#12)) + +(127) Exchange +Input [3]: [i_item_sk#12, i_current_price#13, i_category#14] +Arguments: hashpartitioning(i_category#14, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(128) Sort +Input [3]: [i_item_sk#12, i_current_price#13, i_category#14] +Arguments: [i_category#14 ASC NULLS FIRST], false, 0 + +(129) Scan parquet +Output [2]: [i_current_price#15, i_category#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_category)] +ReadSchema: struct + +(130) Filter +Input [2]: [i_current_price#15, i_category#16] +Condition : isnotnull(i_category#16) + +(131) HashAggregate +Input [2]: [i_current_price#15, i_category#16] +Keys [1]: [i_category#16] +Functions [1]: [partial_avg(UnscaledValue(i_current_price#15))] +Aggregate Attributes [2]: [sum#18, count#19] +Results [3]: [i_category#16, sum#27, count#28] + +(132) Exchange +Input [3]: [i_category#16, sum#27, count#28] +Arguments: hashpartitioning(i_category#16, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(133) HashAggregate +Input [3]: [i_category#16, sum#27, count#28] +Keys [1]: [i_category#16] +Functions [1]: [avg(UnscaledValue(i_current_price#15))] +Aggregate Attributes [1]: [avg(UnscaledValue(i_current_price#15))#21] +Results [2]: [cast((avg(UnscaledValue(i_current_price#15))#21 / 100.0) as decimal(11,6)) AS avg(i_current_price)#22, i_category#16] + +(134) Filter +Input [2]: [avg(i_current_price)#22, i_category#16] +Condition : isnotnull(avg(i_current_price)#22) + +(135) Sort +Input [2]: [avg(i_current_price)#22, i_category#16] +Arguments: [i_category#16 ASC NULLS FIRST], false, 0 + +(136) SortMergeJoin +Left keys [1]: [i_category#14] +Right keys [1]: [i_category#16] +Join type: Inner +Join condition: (cast(i_current_price#13 as decimal(14,7)) > (1.2 * avg(i_current_price)#22)) + +(137) Project +Output [1]: [i_item_sk#12] +Input [5]: [i_item_sk#12, i_current_price#13, i_category#14, avg(i_current_price)#22, i_category#16] + +(138) Exchange +Input [1]: [i_item_sk#12] +Arguments: hashpartitioning(i_item_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(139) Sort +Input [1]: [i_item_sk#12] +Arguments: [i_item_sk#12 ASC NULLS FIRST], false, 0 + +(140) SortMergeJoin +Left keys [1]: [ss_item_sk#6] +Right keys [1]: [i_item_sk#12] +Join type: Inner +Join condition: None + +(141) Project +Output [1]: [ca_state#2] +Input [3]: [ca_state#2, ss_item_sk#6, i_item_sk#12] + +(142) HashAggregate +Input [1]: [ca_state#2] +Keys [1]: [ca_state#2] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#23] +Results [2]: [ca_state#2, count#29] + +(143) Exchange +Input [2]: [ca_state#2, count#29] +Arguments: hashpartitioning(ca_state#2, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(144) HashAggregate +Input [2]: [ca_state#2, count#29] +Keys [1]: [ca_state#2] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#24] +Results [3]: [ca_state#2 AS state#25, count(1)#24 AS cnt#26, ca_state#2] + +(145) Filter +Input [3]: [state#25, cnt#26, ca_state#2] +Condition : (cnt#26 >= 10) + +(146) TakeOrderedAndProject +Input [3]: [state#25, cnt#26, ca_state#2] +Arguments: X, [cnt#26 ASC NULLS FIRST, ca_state#2 ASC NULLS FIRST], [state#25, cnt#26] + +(147) AdaptiveSparkPlan +Output [2]: [state#25, cnt#26] +Arguments: isFinalPlan=true + +===== Subqueries ===== + +Subquery:1 Hosting operator id = 41 Hosting Expression = Subquery subquery#10, [id=#11] +AdaptiveSparkPlan (165) ++- == Final Plan == + NativeProject (158) + +- NativeHashAggregate (157) + +- InputAdapter (156) + +- AQEShuffleRead (155) + +- ShuffleQueryStage (154), Statistics(X) + +- NativeShuffleExchange (153) + +- NativeHashAggregate (152) + +- NativeProject (151) + +- NativeFilter (150) + +- InputAdapter (149) + +- NativeParquetScan (148) ++- == Initial Plan == + HashAggregate (164) + +- Exchange (163) + +- HashAggregate (162) + +- Project (161) + +- Filter (160) + +- Scan parquet (159) + + +(159) Scan parquet +Output [3]: [d_month_seq#30, d_year#31, d_moy#32] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2000), EqualTo(d_moy,1)] +ReadSchema: struct + +(149) InputAdapter +Input [3]: [d_month_seq#30, d_year#31, d_moy#32] +Arguments: [#30, #31, #32] + +(150) NativeFilter +Input [3]: [#30#30, #31#31, #32#32] +Condition : (((isnotnull(d_year#31) AND isnotnull(d_moy#32)) AND (d_year#31 = 2000)) AND (d_moy#32 = 1)) + +(151) NativeProject +Output [1]: [d_month_seq#30] +Input [3]: [#30#30, #31#31, #32#32] + +(152) NativeHashAggregate +Input [1]: [d_month_seq#30] +Keys [1]: [d_month_seq#30] +Functions: [] +Aggregate Attributes: [] +Results [2]: [d_month_seq#30, #20#20] + +(153) NativeShuffleExchange +Input [2]: [d_month_seq#30, #20#20] +Arguments: hashpartitioning(d_month_seq#30, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(154) ShuffleQueryStage +Output [2]: [d_month_seq#30, #20#20] +Arguments: X + +(155) AQEShuffleRead +Input [2]: [d_month_seq#30, #20#20] +Arguments: coalesced + +(156) InputAdapter +Input [2]: [d_month_seq#30, #20#20] + +(157) NativeHashAggregate +Input [2]: [d_month_seq#30, #20#20] +Keys [1]: [d_month_seq#30] +Functions: [] +Aggregate Attributes: [] +Results [2]: [d_month_seq#30, #20#20] + +(158) NativeProject +Output [1]: [d_month_seq#30] +Input [2]: [d_month_seq#30, #20#20] + +(159) Scan parquet +Output [3]: [d_month_seq#30, d_year#31, d_moy#32] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2000), EqualTo(d_moy,1)] +ReadSchema: struct + +(160) Filter +Input [3]: [d_month_seq#30, d_year#31, d_moy#32] +Condition : (((isnotnull(d_year#31) AND isnotnull(d_moy#32)) AND (d_year#31 = 2000)) AND (d_moy#32 = 1)) + +(161) Project +Output [1]: [d_month_seq#30] +Input [3]: [d_month_seq#30, d_year#31, d_moy#32] + +(162) HashAggregate +Input [1]: [d_month_seq#30] +Keys [1]: [d_month_seq#30] +Functions: [] +Aggregate Attributes: [] +Results [1]: [d_month_seq#30] + +(163) Exchange +Input [1]: [d_month_seq#30] +Arguments: hashpartitioning(d_month_seq#30, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(164) HashAggregate +Input [1]: [d_month_seq#30] +Keys [1]: [d_month_seq#30] +Functions: [] +Aggregate Attributes: [] +Results [1]: [d_month_seq#30] + +(165) AdaptiveSparkPlan +Output [1]: [d_month_seq#30] +Arguments: isFinalPlan=true + + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q60.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q60.txt new file mode 100644 index 000000000..657598799 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q60.txt @@ -0,0 +1,1660 @@ +== Physical Plan == +AdaptiveSparkPlan (306) ++- == Final Plan == + NativeTakeOrdered (183) + +- NativeProject (182) + +- NativeHashAggregate (181) + +- InputAdapter (180) + +- AQEShuffleRead (179) + +- ShuffleQueryStage (178), Statistics(X) + +- NativeShuffleExchange (177) + +- NativeHashAggregate (176) + +- InputAdapter (175) + +- NativeUnion (174) + :- NativeProject (73) + : +- NativeHashAggregate (72) + : +- InputAdapter (71) + : +- AQEShuffleRead (70) + : +- ShuffleQueryStage (69), Statistics(X) + : +- NativeShuffleExchange (68) + : +- NativeHashAggregate (67) + : +- NativeProject (66) + : +- NativeProject (65) + : +- NativeSortMergeJoin Inner (64) + : :- NativeSort (40) + : : +- InputAdapter (39) + : : +- AQEShuffleRead (38) + : : +- ShuffleQueryStage (37), Statistics(X) + : : +- NativeShuffleExchange (36) + : : +- NativeProject (35) + : : +- NativeSortMergeJoin Inner (34) + : : :- 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 (33) + : : +- InputAdapter (32) + : : +- AQEShuffleRead (31) + : : +- ShuffleQueryStage (30), Statistics(X) + : : +- NativeShuffleExchange (29) + : : +- NativeProject (28) + : : +- NativeFilter (27) + : : +- InputAdapter (26) + : : +- NativeParquetScan (25) + : +- NativeSort (63) + : +- InputAdapter (62) + : +- AQEShuffleRead (61) + : +- ShuffleQueryStage (60), Statistics(X) + : +- NativeShuffleExchange (59) + : +- NativeSortMergeJoin LeftSemi (58) + : :- NativeSort (48) + : : +- InputAdapter (47) + : : +- AQEShuffleRead (46) + : : +- ShuffleQueryStage (45), Statistics(X) + : : +- NativeShuffleExchange (44) + : : +- NativeFilter (43) + : : +- InputAdapter (42) + : : +- NativeParquetScan (41) + : +- NativeSort (57) + : +- InputAdapter (56) + : +- AQEShuffleRead (55) + : +- ShuffleQueryStage (54), Statistics(X) + : +- NativeShuffleExchange (53) + : +- NativeProject (52) + : +- NativeFilter (51) + : +- InputAdapter (50) + : +- NativeParquetScan (49) + :- NativeProject (123) + : +- NativeHashAggregate (122) + : +- InputAdapter (121) + : +- AQEShuffleRead (120) + : +- ShuffleQueryStage (119), Statistics(X) + : +- NativeShuffleExchange (118) + : +- NativeHashAggregate (117) + : +- NativeProject (116) + : +- NativeProject (115) + : +- NativeSortMergeJoin Inner (114) + : :- NativeSort (107) + : : +- InputAdapter (106) + : : +- AQEShuffleRead (105) + : : +- ShuffleQueryStage (104), Statistics(X) + : : +- NativeShuffleExchange (103) + : : +- NativeProject (102) + : : +- NativeSortMergeJoin Inner (101) + : : :- NativeSort (94) + : : : +- InputAdapter (93) + : : : +- AQEShuffleRead (92) + : : : +- ShuffleQueryStage (91), Statistics(X) + : : : +- NativeShuffleExchange (90) + : : : +- NativeProject (89) + : : : +- NativeSortMergeJoin Inner (88) + : : : :- NativeSort (81) + : : : : +- InputAdapter (80) + : : : : +- AQEShuffleRead (79) + : : : : +- ShuffleQueryStage (78), Statistics(X) + : : : : +- NativeShuffleExchange (77) + : : : : +- NativeFilter (76) + : : : : +- InputAdapter (75) + : : : : +- NativeParquetScan (74) + : : : +- NativeSort (87) + : : : +- InputAdapter (86) + : : : +- InputAdapter (85) + : : : +- AQEShuffleRead (84) + : : : +- ShuffleQueryStage (83), Statistics(X) + : : : +- ReusedExchange (82) + : : +- NativeSort (100) + : : +- InputAdapter (99) + : : +- InputAdapter (98) + : : +- AQEShuffleRead (97) + : : +- ShuffleQueryStage (96), Statistics(X) + : : +- ReusedExchange (95) + : +- NativeSort (113) + : +- InputAdapter (112) + : +- InputAdapter (111) + : +- AQEShuffleRead (110) + : +- ShuffleQueryStage (109), Statistics(X) + : +- ReusedExchange (108) + +- NativeProject (173) + +- NativeHashAggregate (172) + +- InputAdapter (171) + +- AQEShuffleRead (170) + +- ShuffleQueryStage (169), Statistics(X) + +- NativeShuffleExchange (168) + +- NativeHashAggregate (167) + +- NativeProject (166) + +- NativeProject (165) + +- NativeSortMergeJoin Inner (164) + :- NativeSort (157) + : +- InputAdapter (156) + : +- AQEShuffleRead (155) + : +- ShuffleQueryStage (154), Statistics(X) + : +- NativeShuffleExchange (153) + : +- NativeProject (152) + : +- NativeSortMergeJoin Inner (151) + : :- NativeSort (144) + : : +- InputAdapter (143) + : : +- AQEShuffleRead (142) + : : +- ShuffleQueryStage (141), Statistics(X) + : : +- NativeShuffleExchange (140) + : : +- NativeProject (139) + : : +- NativeSortMergeJoin Inner (138) + : : :- NativeSort (131) + : : : +- InputAdapter (130) + : : : +- AQEShuffleRead (129) + : : : +- ShuffleQueryStage (128), Statistics(X) + : : : +- NativeShuffleExchange (127) + : : : +- NativeFilter (126) + : : : +- InputAdapter (125) + : : : +- NativeParquetScan (124) + : : +- NativeSort (137) + : : +- InputAdapter (136) + : : +- InputAdapter (135) + : : +- AQEShuffleRead (134) + : : +- ShuffleQueryStage (133), Statistics(X) + : : +- ReusedExchange (132) + : +- NativeSort (150) + : +- InputAdapter (149) + : +- InputAdapter (148) + : +- AQEShuffleRead (147) + : +- ShuffleQueryStage (146), Statistics(X) + : +- ReusedExchange (145) + +- NativeSort (163) + +- InputAdapter (162) + +- InputAdapter (161) + +- AQEShuffleRead (160) + +- ShuffleQueryStage (159), Statistics(X) + +- ReusedExchange (158) ++- == Initial Plan == + TakeOrderedAndProject (305) + +- HashAggregate (304) + +- Exchange (303) + +- HashAggregate (302) + +- Union (301) + :- HashAggregate (222) + : +- Exchange (221) + : +- HashAggregate (220) + : +- Project (219) + : +- SortMergeJoin Inner (218) + : :- Sort (205) + : : +- Exchange (204) + : : +- Project (203) + : : +- SortMergeJoin Inner (202) + : : :- Sort (196) + : : : +- Exchange (195) + : : : +- Project (194) + : : : +- SortMergeJoin Inner (193) + : : : :- Sort (187) + : : : : +- Exchange (186) + : : : : +- Filter (185) + : : : : +- Scan parquet (184) + : : : +- Sort (192) + : : : +- Exchange (191) + : : : +- Project (190) + : : : +- Filter (189) + : : : +- Scan parquet (188) + : : +- Sort (201) + : : +- Exchange (200) + : : +- Project (199) + : : +- Filter (198) + : : +- Scan parquet (197) + : +- Sort (217) + : +- Exchange (216) + : +- SortMergeJoin LeftSemi (215) + : :- Sort (209) + : : +- Exchange (208) + : : +- Filter (207) + : : +- Scan parquet (206) + : +- Sort (214) + : +- Exchange (213) + : +- Project (212) + : +- Filter (211) + : +- Scan parquet (210) + :- HashAggregate (261) + : +- Exchange (260) + : +- HashAggregate (259) + : +- Project (258) + : +- SortMergeJoin Inner (257) + : :- Sort (244) + : : +- Exchange (243) + : : +- Project (242) + : : +- SortMergeJoin Inner (241) + : : :- Sort (235) + : : : +- Exchange (234) + : : : +- Project (233) + : : : +- SortMergeJoin Inner (232) + : : : :- Sort (226) + : : : : +- Exchange (225) + : : : : +- Filter (224) + : : : : +- Scan parquet (223) + : : : +- Sort (231) + : : : +- Exchange (230) + : : : +- Project (229) + : : : +- Filter (228) + : : : +- Scan parquet (227) + : : +- Sort (240) + : : +- Exchange (239) + : : +- Project (238) + : : +- Filter (237) + : : +- Scan parquet (236) + : +- Sort (256) + : +- Exchange (255) + : +- SortMergeJoin LeftSemi (254) + : :- Sort (248) + : : +- Exchange (247) + : : +- Filter (246) + : : +- Scan parquet (245) + : +- Sort (253) + : +- Exchange (252) + : +- Project (251) + : +- Filter (250) + : +- Scan parquet (249) + +- HashAggregate (300) + +- Exchange (299) + +- HashAggregate (298) + +- Project (297) + +- SortMergeJoin Inner (296) + :- Sort (283) + : +- Exchange (282) + : +- Project (281) + : +- SortMergeJoin Inner (280) + : :- Sort (274) + : : +- Exchange (273) + : : +- Project (272) + : : +- SortMergeJoin Inner (271) + : : :- Sort (265) + : : : +- Exchange (264) + : : : +- Filter (263) + : : : +- Scan parquet (262) + : : +- Sort (270) + : : +- Exchange (269) + : : +- Project (268) + : : +- Filter (267) + : : +- Scan parquet (266) + : +- Sort (279) + : +- Exchange (278) + : +- Project (277) + : +- Filter (276) + : +- Scan parquet (275) + +- Sort (295) + +- Exchange (294) + +- SortMergeJoin LeftSemi (293) + :- Sort (287) + : +- Exchange (286) + : +- Filter (285) + : +- Scan parquet (284) + +- Sort (292) + +- Exchange (291) + +- Project (290) + +- Filter (289) + +- Scan parquet (288) + + +(184) Scan parquet +Output [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_addr_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Arguments: [#1, #2, #3, #4] + +(3) NativeFilter +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Condition : ((isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_addr_sk#3)) AND isnotnull(ss_item_sk#2)) + +(4) NativeShuffleExchange +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: X + +(6) AQEShuffleRead +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: coalesced + +(7) InputAdapter +Input [4]: [#1#1, #2#2, #3#3, #4#4] + +(8) NativeSort +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(188) Scan parquet +Output [3]: [d_date_sk#5, d_year#6, d_moy#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,1998), EqualTo(d_moy,9), IsNotNull(d_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [3]: [d_date_sk#5, d_year#6, d_moy#7] +Arguments: [#5, #6, #7] + +(11) NativeFilter +Input [3]: [#5#5, #6#6, #7#7] +Condition : ((((isnotnull(d_year#6) AND isnotnull(d_moy#7)) AND (d_year#6 = 1998)) AND (d_moy#7 = 9)) AND isnotnull(d_date_sk#5)) + +(12) NativeProject +Output [1]: [d_date_sk#5] +Input [3]: [#5#5, #6#6, #7#7] + +(13) NativeShuffleExchange +Input [1]: [d_date_sk#5] +Arguments: hashpartitioning(d_date_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [1]: [d_date_sk#5] +Arguments: X + +(15) AQEShuffleRead +Input [1]: [d_date_sk#5] +Arguments: coalesced + +(16) InputAdapter +Input [1]: [d_date_sk#5] + +(17) NativeSort +Input [1]: [d_date_sk#5] +Arguments: [d_date_sk#5 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#5] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [3]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Input [5]: [#1#1, #2#2, #3#3, #4#4, d_date_sk#5] + +(20) NativeShuffleExchange +Input [3]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Arguments: hashpartitioning(ss_addr_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [3]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Arguments: X + +(22) AQEShuffleRead +Input [3]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Arguments: coalesced + +(23) InputAdapter +Input [3]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] + +(24) NativeSort +Input [3]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Arguments: [ss_addr_sk#3 ASC NULLS FIRST], false + +(197) Scan parquet +Output [2]: [ca_address_sk#8, ca_gmt_offset#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_gmt_offset), EqualTo(ca_gmt_offset,-5.00), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [2]: [ca_address_sk#8, ca_gmt_offset#9] +Arguments: [#8, #9] + +(27) NativeFilter +Input [2]: [#8#8, #9#9] +Condition : ((isnotnull(ca_gmt_offset#9) AND (ca_gmt_offset#9 = -5.00)) AND isnotnull(ca_address_sk#8)) + +(28) NativeProject +Output [1]: [ca_address_sk#8] +Input [2]: [#8#8, #9#9] + +(29) NativeShuffleExchange +Input [1]: [ca_address_sk#8] +Arguments: hashpartitioning(ca_address_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(30) ShuffleQueryStage +Output [1]: [ca_address_sk#8] +Arguments: X + +(31) AQEShuffleRead +Input [1]: [ca_address_sk#8] +Arguments: coalesced + +(32) InputAdapter +Input [1]: [ca_address_sk#8] + +(33) NativeSort +Input [1]: [ca_address_sk#8] +Arguments: [ca_address_sk#8 ASC NULLS FIRST], false + +(34) NativeSortMergeJoin +Left keys [1]: [ss_addr_sk#3] +Right keys [1]: [ca_address_sk#8] +Join type: Inner +Join condition: None + +(35) NativeProject +Output [2]: [ss_item_sk#2, ss_ext_sales_price#4] +Input [4]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4, ca_address_sk#8] + +(36) NativeShuffleExchange +Input [2]: [ss_item_sk#2, ss_ext_sales_price#4] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [2]: [ss_item_sk#2, ss_ext_sales_price#4] +Arguments: X + +(38) AQEShuffleRead +Input [2]: [ss_item_sk#2, ss_ext_sales_price#4] +Arguments: coalesced + +(39) InputAdapter +Input [2]: [ss_item_sk#2, ss_ext_sales_price#4] + +(40) NativeSort +Input [2]: [ss_item_sk#2, ss_ext_sales_price#4] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false + +(206) Scan parquet +Output [2]: [i_item_sk#10, i_item_id#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(42) InputAdapter +Input [2]: [i_item_sk#10, i_item_id#11] +Arguments: [#10, #11] + +(43) NativeFilter +Input [2]: [#10#10, #11#11] +Condition : isnotnull(i_item_sk#10) + +(44) NativeShuffleExchange +Input [2]: [#10#10, #11#11] +Arguments: hashpartitioning(i_item_id#11, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(45) ShuffleQueryStage +Output [2]: [#10#10, #11#11] +Arguments: X + +(46) AQEShuffleRead +Input [2]: [#10#10, #11#11] +Arguments: coalesced + +(47) InputAdapter +Input [2]: [#10#10, #11#11] + +(48) NativeSort +Input [2]: [#10#10, #11#11] +Arguments: [i_item_id#11 ASC NULLS FIRST], false + +(210) Scan parquet +Output [2]: [i_item_id#12, i_category#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_category), EqualTo(i_category,Music)] +ReadSchema: struct + +(50) InputAdapter +Input [2]: [i_item_id#12, i_category#13] +Arguments: [#12, #13] + +(51) NativeFilter +Input [2]: [#12#12, #13#13] +Condition : (isnotnull(i_category#13) AND (i_category#13 = Music)) + +(52) NativeProject +Output [1]: [i_item_id#12] +Input [2]: [#12#12, #13#13] + +(53) NativeShuffleExchange +Input [1]: [i_item_id#12] +Arguments: hashpartitioning(i_item_id#12, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(54) ShuffleQueryStage +Output [1]: [i_item_id#12] +Arguments: X + +(55) AQEShuffleRead +Input [1]: [i_item_id#12] +Arguments: coalesced + +(56) InputAdapter +Input [1]: [i_item_id#12] + +(57) NativeSort +Input [1]: [i_item_id#12] +Arguments: [i_item_id#12 ASC NULLS FIRST], false + +(58) NativeSortMergeJoin +Left keys [1]: [i_item_id#11] +Right keys [1]: [i_item_id#12] +Join type: LeftSemi +Join condition: None + +(59) NativeShuffleExchange +Input [2]: [#10#10, #11#11] +Arguments: hashpartitioning(i_item_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(60) ShuffleQueryStage +Output [2]: [#10#10, #11#11] +Arguments: X + +(61) AQEShuffleRead +Input [2]: [#10#10, #11#11] +Arguments: coalesced + +(62) InputAdapter +Input [2]: [#10#10, #11#11] + +(63) NativeSort +Input [2]: [#10#10, #11#11] +Arguments: [i_item_sk#10 ASC NULLS FIRST], false + +(64) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#10] +Join type: Inner +Join condition: None + +(65) NativeProject +Output [2]: [ss_ext_sales_price#4, i_item_id#11] +Input [4]: [ss_item_sk#2, ss_ext_sales_price#4, #10#10, #11#11] + +(66) NativeProject +Output [2]: [i_item_id#11 AS i_item_id#11, UnscaledValue(ss_ext_sales_price#4) AS _c1#14] +Input [2]: [ss_ext_sales_price#4, i_item_id#11] + +(67) NativeHashAggregate +Input [2]: [i_item_id#11, _c1#14] +Keys [1]: [i_item_id#11] +Functions [1]: [partial_sum(_c1#14)] +Aggregate Attributes [1]: [sum#15] +Results [2]: [i_item_id#11, #16#16] + +(68) NativeShuffleExchange +Input [2]: [i_item_id#11, #16#16] +Arguments: hashpartitioning(i_item_id#11, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(69) ShuffleQueryStage +Output [2]: [i_item_id#11, #16#16] +Arguments: X + +(70) AQEShuffleRead +Input [2]: [i_item_id#11, #16#16] +Arguments: coalesced + +(71) InputAdapter +Input [2]: [i_item_id#11, #16#16] + +(72) NativeHashAggregate +Input [2]: [i_item_id#11, #16#16] +Keys [1]: [i_item_id#11] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#4))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#4))#17] +Results [2]: [i_item_id#11, sum(UnscaledValue(ss_ext_sales_price#4))#17] + +(73) NativeProject +Output [2]: [i_item_id#11, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#4))#17,17,2) AS total_sales#18] +Input [2]: [i_item_id#11, sum(UnscaledValue(ss_ext_sales_price#4))#17] + +(223) Scan parquet +Output [4]: [cs_sold_date_sk#19, cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk), IsNotNull(cs_bill_addr_sk), IsNotNull(cs_item_sk)] +ReadSchema: struct + +(75) InputAdapter +Input [4]: [cs_sold_date_sk#19, cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Arguments: [#19, #20, #21, #22] + +(76) NativeFilter +Input [4]: [#19#19, #20#20, #21#21, #22#22] +Condition : ((isnotnull(cs_sold_date_sk#19) AND isnotnull(cs_bill_addr_sk#20)) AND isnotnull(cs_item_sk#21)) + +(77) NativeShuffleExchange +Input [4]: [#19#19, #20#20, #21#21, #22#22] +Arguments: hashpartitioning(cs_sold_date_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(78) ShuffleQueryStage +Output [4]: [#19#19, #20#20, #21#21, #22#22] +Arguments: X + +(79) AQEShuffleRead +Input [4]: [#19#19, #20#20, #21#21, #22#22] +Arguments: coalesced + +(80) InputAdapter +Input [4]: [#19#19, #20#20, #21#21, #22#22] + +(81) NativeSort +Input [4]: [#19#19, #20#20, #21#21, #22#22] +Arguments: [cs_sold_date_sk#19 ASC NULLS FIRST], false + +(82) ReusedExchange [Reuses operator id: 13] +Output [1]: [d_date_sk#23] + +(83) ShuffleQueryStage +Output [1]: [d_date_sk#23] +Arguments: X + +(84) AQEShuffleRead +Input [1]: [d_date_sk#23] +Arguments: coalesced + +(85) InputAdapter +Input [1]: [d_date_sk#23] +Arguments: [#23] + +(86) InputAdapter +Input [1]: [#23#23] + +(87) NativeSort +Input [1]: [#23#23] +Arguments: [d_date_sk#23 ASC NULLS FIRST], false + +(88) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#19] +Right keys [1]: [d_date_sk#23] +Join type: Inner +Join condition: None + +(89) NativeProject +Output [3]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Input [5]: [#19#19, #20#20, #21#21, #22#22, #23#23] + +(90) NativeShuffleExchange +Input [3]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Arguments: hashpartitioning(cs_bill_addr_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(91) ShuffleQueryStage +Output [3]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Arguments: X + +(92) AQEShuffleRead +Input [3]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Arguments: coalesced + +(93) InputAdapter +Input [3]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] + +(94) NativeSort +Input [3]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Arguments: [cs_bill_addr_sk#20 ASC NULLS FIRST], false + +(95) ReusedExchange [Reuses operator id: 29] +Output [1]: [ca_address_sk#24] + +(96) ShuffleQueryStage +Output [1]: [ca_address_sk#24] +Arguments: X + +(97) AQEShuffleRead +Input [1]: [ca_address_sk#24] +Arguments: coalesced + +(98) InputAdapter +Input [1]: [ca_address_sk#24] +Arguments: [#24] + +(99) InputAdapter +Input [1]: [#24#24] + +(100) NativeSort +Input [1]: [#24#24] +Arguments: [ca_address_sk#24 ASC NULLS FIRST], false + +(101) NativeSortMergeJoin +Left keys [1]: [cs_bill_addr_sk#20] +Right keys [1]: [ca_address_sk#24] +Join type: Inner +Join condition: None + +(102) NativeProject +Output [2]: [cs_item_sk#21, cs_ext_sales_price#22] +Input [4]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22, #24#24] + +(103) NativeShuffleExchange +Input [2]: [cs_item_sk#21, cs_ext_sales_price#22] +Arguments: hashpartitioning(cs_item_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(104) ShuffleQueryStage +Output [2]: [cs_item_sk#21, cs_ext_sales_price#22] +Arguments: X + +(105) AQEShuffleRead +Input [2]: [cs_item_sk#21, cs_ext_sales_price#22] +Arguments: coalesced + +(106) InputAdapter +Input [2]: [cs_item_sk#21, cs_ext_sales_price#22] + +(107) NativeSort +Input [2]: [cs_item_sk#21, cs_ext_sales_price#22] +Arguments: [cs_item_sk#21 ASC NULLS FIRST], false + +(108) ReusedExchange [Reuses operator id: 59] +Output [2]: [i_item_sk#25, i_item_id#26] + +(109) ShuffleQueryStage +Output [2]: [i_item_sk#25, i_item_id#26] +Arguments: X + +(110) AQEShuffleRead +Input [2]: [i_item_sk#25, i_item_id#26] +Arguments: coalesced + +(111) InputAdapter +Input [2]: [i_item_sk#25, i_item_id#26] +Arguments: [#25, #26] + +(112) InputAdapter +Input [2]: [#25#25, #26#26] + +(113) NativeSort +Input [2]: [#25#25, #26#26] +Arguments: [i_item_sk#25 ASC NULLS FIRST], false + +(114) NativeSortMergeJoin +Left keys [1]: [cs_item_sk#21] +Right keys [1]: [i_item_sk#25] +Join type: Inner +Join condition: None + +(115) NativeProject +Output [2]: [cs_ext_sales_price#22, i_item_id#26] +Input [4]: [cs_item_sk#21, cs_ext_sales_price#22, #25#25, #26#26] + +(116) NativeProject +Output [2]: [i_item_id#26 AS i_item_id#26, UnscaledValue(cs_ext_sales_price#22) AS _c1#27] +Input [2]: [cs_ext_sales_price#22, i_item_id#26] + +(117) NativeHashAggregate +Input [2]: [i_item_id#26, _c1#27] +Keys [1]: [i_item_id#26] +Functions [1]: [partial_sum(_c1#27)] +Aggregate Attributes [1]: [sum#28] +Results [2]: [i_item_id#26, #16#16] + +(118) NativeShuffleExchange +Input [2]: [i_item_id#26, #16#16] +Arguments: hashpartitioning(i_item_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(119) ShuffleQueryStage +Output [2]: [i_item_id#26, #16#16] +Arguments: X + +(120) AQEShuffleRead +Input [2]: [i_item_id#26, #16#16] +Arguments: coalesced + +(121) InputAdapter +Input [2]: [i_item_id#26, #16#16] + +(122) NativeHashAggregate +Input [2]: [i_item_id#26, #16#16] +Keys [1]: [i_item_id#26] +Functions [1]: [sum(UnscaledValue(cs_ext_sales_price#22))] +Aggregate Attributes [1]: [sum(UnscaledValue(cs_ext_sales_price#22))#29] +Results [2]: [i_item_id#26, sum(UnscaledValue(cs_ext_sales_price#22))#29] + +(123) NativeProject +Output [2]: [i_item_id#26, MakeDecimal(sum(UnscaledValue(cs_ext_sales_price#22))#29,17,2) AS total_sales#30] +Input [2]: [i_item_id#26, sum(UnscaledValue(cs_ext_sales_price#22))#29] + +(262) Scan parquet +Output [4]: [ws_sold_date_sk#31, ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_bill_addr_sk), IsNotNull(ws_item_sk)] +ReadSchema: struct + +(125) InputAdapter +Input [4]: [ws_sold_date_sk#31, ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Arguments: [#31, #32, #33, #34] + +(126) NativeFilter +Input [4]: [#31#31, #32#32, #33#33, #34#34] +Condition : ((isnotnull(ws_sold_date_sk#31) AND isnotnull(ws_bill_addr_sk#33)) AND isnotnull(ws_item_sk#32)) + +(127) NativeShuffleExchange +Input [4]: [#31#31, #32#32, #33#33, #34#34] +Arguments: hashpartitioning(ws_sold_date_sk#31, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(128) ShuffleQueryStage +Output [4]: [#31#31, #32#32, #33#33, #34#34] +Arguments: X + +(129) AQEShuffleRead +Input [4]: [#31#31, #32#32, #33#33, #34#34] +Arguments: coalesced + +(130) InputAdapter +Input [4]: [#31#31, #32#32, #33#33, #34#34] + +(131) NativeSort +Input [4]: [#31#31, #32#32, #33#33, #34#34] +Arguments: [ws_sold_date_sk#31 ASC NULLS FIRST], false + +(132) ReusedExchange [Reuses operator id: 13] +Output [1]: [d_date_sk#35] + +(133) ShuffleQueryStage +Output [1]: [d_date_sk#35] +Arguments: X + +(134) AQEShuffleRead +Input [1]: [d_date_sk#35] +Arguments: coalesced + +(135) InputAdapter +Input [1]: [d_date_sk#35] +Arguments: [#35] + +(136) InputAdapter +Input [1]: [#35#35] + +(137) NativeSort +Input [1]: [#35#35] +Arguments: [d_date_sk#35 ASC NULLS FIRST], false + +(138) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#31] +Right keys [1]: [d_date_sk#35] +Join type: Inner +Join condition: None + +(139) NativeProject +Output [3]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Input [5]: [#31#31, #32#32, #33#33, #34#34, #35#35] + +(140) NativeShuffleExchange +Input [3]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Arguments: hashpartitioning(ws_bill_addr_sk#33, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(141) ShuffleQueryStage +Output [3]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Arguments: X + +(142) AQEShuffleRead +Input [3]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Arguments: coalesced + +(143) InputAdapter +Input [3]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] + +(144) NativeSort +Input [3]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Arguments: [ws_bill_addr_sk#33 ASC NULLS FIRST], false + +(145) ReusedExchange [Reuses operator id: 29] +Output [1]: [ca_address_sk#36] + +(146) ShuffleQueryStage +Output [1]: [ca_address_sk#36] +Arguments: X + +(147) AQEShuffleRead +Input [1]: [ca_address_sk#36] +Arguments: coalesced + +(148) InputAdapter +Input [1]: [ca_address_sk#36] +Arguments: [#36] + +(149) InputAdapter +Input [1]: [#36#36] + +(150) NativeSort +Input [1]: [#36#36] +Arguments: [ca_address_sk#36 ASC NULLS FIRST], false + +(151) NativeSortMergeJoin +Left keys [1]: [ws_bill_addr_sk#33] +Right keys [1]: [ca_address_sk#36] +Join type: Inner +Join condition: None + +(152) NativeProject +Output [2]: [ws_item_sk#32, ws_ext_sales_price#34] +Input [4]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34, #36#36] + +(153) NativeShuffleExchange +Input [2]: [ws_item_sk#32, ws_ext_sales_price#34] +Arguments: hashpartitioning(ws_item_sk#32, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(154) ShuffleQueryStage +Output [2]: [ws_item_sk#32, ws_ext_sales_price#34] +Arguments: X + +(155) AQEShuffleRead +Input [2]: [ws_item_sk#32, ws_ext_sales_price#34] +Arguments: coalesced + +(156) InputAdapter +Input [2]: [ws_item_sk#32, ws_ext_sales_price#34] + +(157) NativeSort +Input [2]: [ws_item_sk#32, ws_ext_sales_price#34] +Arguments: [ws_item_sk#32 ASC NULLS FIRST], false + +(158) ReusedExchange [Reuses operator id: 59] +Output [2]: [i_item_sk#37, i_item_id#38] + +(159) ShuffleQueryStage +Output [2]: [i_item_sk#37, i_item_id#38] +Arguments: X + +(160) AQEShuffleRead +Input [2]: [i_item_sk#37, i_item_id#38] +Arguments: coalesced + +(161) InputAdapter +Input [2]: [i_item_sk#37, i_item_id#38] +Arguments: [#37, #38] + +(162) InputAdapter +Input [2]: [#37#37, #38#38] + +(163) NativeSort +Input [2]: [#37#37, #38#38] +Arguments: [i_item_sk#37 ASC NULLS FIRST], false + +(164) NativeSortMergeJoin +Left keys [1]: [ws_item_sk#32] +Right keys [1]: [i_item_sk#37] +Join type: Inner +Join condition: None + +(165) NativeProject +Output [2]: [ws_ext_sales_price#34, i_item_id#38] +Input [4]: [ws_item_sk#32, ws_ext_sales_price#34, #37#37, #38#38] + +(166) NativeProject +Output [2]: [i_item_id#38 AS i_item_id#38, UnscaledValue(ws_ext_sales_price#34) AS _c1#39] +Input [2]: [ws_ext_sales_price#34, i_item_id#38] + +(167) NativeHashAggregate +Input [2]: [i_item_id#38, _c1#39] +Keys [1]: [i_item_id#38] +Functions [1]: [partial_sum(_c1#39)] +Aggregate Attributes [1]: [sum#40] +Results [2]: [i_item_id#38, #16#16] + +(168) NativeShuffleExchange +Input [2]: [i_item_id#38, #16#16] +Arguments: hashpartitioning(i_item_id#38, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(169) ShuffleQueryStage +Output [2]: [i_item_id#38, #16#16] +Arguments: X + +(170) AQEShuffleRead +Input [2]: [i_item_id#38, #16#16] +Arguments: coalesced + +(171) InputAdapter +Input [2]: [i_item_id#38, #16#16] + +(172) NativeHashAggregate +Input [2]: [i_item_id#38, #16#16] +Keys [1]: [i_item_id#38] +Functions [1]: [sum(UnscaledValue(ws_ext_sales_price#34))] +Aggregate Attributes [1]: [sum(UnscaledValue(ws_ext_sales_price#34))#41] +Results [2]: [i_item_id#38, sum(UnscaledValue(ws_ext_sales_price#34))#41] + +(173) NativeProject +Output [2]: [i_item_id#38, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#34))#41,17,2) AS total_sales#42] +Input [2]: [i_item_id#38, sum(UnscaledValue(ws_ext_sales_price#34))#41] + +(174) NativeUnion +Arguments: [i_item_id#11, total_sales#18] + +(175) InputAdapter +Input [2]: [i_item_id#11, total_sales#18] +Arguments: [#11, #18] + +(176) NativeHashAggregate +Input [2]: [#11#11, #18#18] +Keys [1]: [i_item_id#11] +Functions [1]: [partial_sum(total_sales#18)] +Aggregate Attributes [2]: [sum#43, isEmpty#44] +Results [2]: [i_item_id#11, #16#16] + +(177) NativeShuffleExchange +Input [2]: [i_item_id#11, #16#16] +Arguments: hashpartitioning(i_item_id#11, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(178) ShuffleQueryStage +Output [2]: [i_item_id#11, #16#16] +Arguments: X + +(179) AQEShuffleRead +Input [2]: [i_item_id#11, #16#16] +Arguments: coalesced + +(180) InputAdapter +Input [2]: [i_item_id#11, #16#16] + +(181) NativeHashAggregate +Input [2]: [i_item_id#11, #16#16] +Keys [1]: [i_item_id#11] +Functions [1]: [sum(total_sales#18)] +Aggregate Attributes [1]: [sum(total_sales#18)#45] +Results [2]: [i_item_id#11, sum(total_sales#18)#45] + +(182) NativeProject +Output [2]: [i_item_id#11, sum(total_sales#18)#45 AS total_sales#46] +Input [2]: [i_item_id#11, sum(total_sales#18)#45] + +(183) NativeTakeOrdered +Input [2]: [i_item_id#11, total_sales#46] +Arguments: X, [i_item_id#11 ASC NULLS FIRST, total_sales#46 ASC NULLS FIRST] + +(184) Scan parquet +Output [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_addr_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(185) Filter +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Condition : ((isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_addr_sk#3)) AND isnotnull(ss_item_sk#2)) + +(186) Exchange +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(187) Sort +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(188) Scan parquet +Output [3]: [d_date_sk#5, d_year#6, d_moy#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,1998), EqualTo(d_moy,9), IsNotNull(d_date_sk)] +ReadSchema: struct + +(189) Filter +Input [3]: [d_date_sk#5, d_year#6, d_moy#7] +Condition : ((((isnotnull(d_year#6) AND isnotnull(d_moy#7)) AND (d_year#6 = 1998)) AND (d_moy#7 = 9)) AND isnotnull(d_date_sk#5)) + +(190) Project +Output [1]: [d_date_sk#5] +Input [3]: [d_date_sk#5, d_year#6, d_moy#7] + +(191) Exchange +Input [1]: [d_date_sk#5] +Arguments: hashpartitioning(d_date_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(192) Sort +Input [1]: [d_date_sk#5] +Arguments: [d_date_sk#5 ASC NULLS FIRST], false, 0 + +(193) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#5] +Join type: Inner +Join condition: None + +(194) Project +Output [3]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Input [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4, d_date_sk#5] + +(195) Exchange +Input [3]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Arguments: hashpartitioning(ss_addr_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(196) Sort +Input [3]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4] +Arguments: [ss_addr_sk#3 ASC NULLS FIRST], false, 0 + +(197) Scan parquet +Output [2]: [ca_address_sk#8, ca_gmt_offset#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_gmt_offset), EqualTo(ca_gmt_offset,-5.00), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(198) Filter +Input [2]: [ca_address_sk#8, ca_gmt_offset#9] +Condition : ((isnotnull(ca_gmt_offset#9) AND (ca_gmt_offset#9 = -5.00)) AND isnotnull(ca_address_sk#8)) + +(199) Project +Output [1]: [ca_address_sk#8] +Input [2]: [ca_address_sk#8, ca_gmt_offset#9] + +(200) Exchange +Input [1]: [ca_address_sk#8] +Arguments: hashpartitioning(ca_address_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(201) Sort +Input [1]: [ca_address_sk#8] +Arguments: [ca_address_sk#8 ASC NULLS FIRST], false, 0 + +(202) SortMergeJoin +Left keys [1]: [ss_addr_sk#3] +Right keys [1]: [ca_address_sk#8] +Join type: Inner +Join condition: None + +(203) Project +Output [2]: [ss_item_sk#2, ss_ext_sales_price#4] +Input [4]: [ss_item_sk#2, ss_addr_sk#3, ss_ext_sales_price#4, ca_address_sk#8] + +(204) Exchange +Input [2]: [ss_item_sk#2, ss_ext_sales_price#4] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(205) Sort +Input [2]: [ss_item_sk#2, ss_ext_sales_price#4] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false, 0 + +(206) Scan parquet +Output [2]: [i_item_sk#10, i_item_id#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(207) Filter +Input [2]: [i_item_sk#10, i_item_id#11] +Condition : isnotnull(i_item_sk#10) + +(208) Exchange +Input [2]: [i_item_sk#10, i_item_id#11] +Arguments: hashpartitioning(i_item_id#11, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(209) Sort +Input [2]: [i_item_sk#10, i_item_id#11] +Arguments: [i_item_id#11 ASC NULLS FIRST], false, 0 + +(210) Scan parquet +Output [2]: [i_item_id#12, i_category#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_category), EqualTo(i_category,Music)] +ReadSchema: struct + +(211) Filter +Input [2]: [i_item_id#12, i_category#13] +Condition : (isnotnull(i_category#13) AND (i_category#13 = Music)) + +(212) Project +Output [1]: [i_item_id#12] +Input [2]: [i_item_id#12, i_category#13] + +(213) Exchange +Input [1]: [i_item_id#12] +Arguments: hashpartitioning(i_item_id#12, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(214) Sort +Input [1]: [i_item_id#12] +Arguments: [i_item_id#12 ASC NULLS FIRST], false, 0 + +(215) SortMergeJoin +Left keys [1]: [i_item_id#11] +Right keys [1]: [i_item_id#12] +Join type: LeftSemi +Join condition: None + +(216) Exchange +Input [2]: [i_item_sk#10, i_item_id#11] +Arguments: hashpartitioning(i_item_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(217) Sort +Input [2]: [i_item_sk#10, i_item_id#11] +Arguments: [i_item_sk#10 ASC NULLS FIRST], false, 0 + +(218) SortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#10] +Join type: Inner +Join condition: None + +(219) Project +Output [2]: [ss_ext_sales_price#4, i_item_id#11] +Input [4]: [ss_item_sk#2, ss_ext_sales_price#4, i_item_sk#10, i_item_id#11] + +(220) HashAggregate +Input [2]: [ss_ext_sales_price#4, i_item_id#11] +Keys [1]: [i_item_id#11] +Functions [1]: [partial_sum(UnscaledValue(ss_ext_sales_price#4))] +Aggregate Attributes [1]: [sum#15] +Results [2]: [i_item_id#11, sum#47] + +(221) Exchange +Input [2]: [i_item_id#11, sum#47] +Arguments: hashpartitioning(i_item_id#11, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(222) HashAggregate +Input [2]: [i_item_id#11, sum#47] +Keys [1]: [i_item_id#11] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#4))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#4))#17] +Results [2]: [i_item_id#11, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#4))#17,17,2) AS total_sales#18] + +(223) Scan parquet +Output [4]: [cs_sold_date_sk#19, cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk), IsNotNull(cs_bill_addr_sk), IsNotNull(cs_item_sk)] +ReadSchema: struct + +(224) Filter +Input [4]: [cs_sold_date_sk#19, cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Condition : ((isnotnull(cs_sold_date_sk#19) AND isnotnull(cs_bill_addr_sk#20)) AND isnotnull(cs_item_sk#21)) + +(225) Exchange +Input [4]: [cs_sold_date_sk#19, cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Arguments: hashpartitioning(cs_sold_date_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(226) Sort +Input [4]: [cs_sold_date_sk#19, cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Arguments: [cs_sold_date_sk#19 ASC NULLS FIRST], false, 0 + +(227) Scan parquet +Output [3]: [d_date_sk#23, d_year#48, d_moy#49] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,1998), EqualTo(d_moy,9), IsNotNull(d_date_sk)] +ReadSchema: struct + +(228) Filter +Input [3]: [d_date_sk#23, d_year#48, d_moy#49] +Condition : ((((isnotnull(d_year#48) AND isnotnull(d_moy#49)) AND (d_year#48 = 1998)) AND (d_moy#49 = 9)) AND isnotnull(d_date_sk#23)) + +(229) Project +Output [1]: [d_date_sk#23] +Input [3]: [d_date_sk#23, d_year#48, d_moy#49] + +(230) Exchange +Input [1]: [d_date_sk#23] +Arguments: hashpartitioning(d_date_sk#23, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(231) Sort +Input [1]: [d_date_sk#23] +Arguments: [d_date_sk#23 ASC NULLS FIRST], false, 0 + +(232) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#19] +Right keys [1]: [d_date_sk#23] +Join type: Inner +Join condition: None + +(233) Project +Output [3]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Input [5]: [cs_sold_date_sk#19, cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22, d_date_sk#23] + +(234) Exchange +Input [3]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Arguments: hashpartitioning(cs_bill_addr_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(235) Sort +Input [3]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22] +Arguments: [cs_bill_addr_sk#20 ASC NULLS FIRST], false, 0 + +(236) Scan parquet +Output [2]: [ca_address_sk#24, ca_gmt_offset#50] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_gmt_offset), EqualTo(ca_gmt_offset,-5.00), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(237) Filter +Input [2]: [ca_address_sk#24, ca_gmt_offset#50] +Condition : ((isnotnull(ca_gmt_offset#50) AND (ca_gmt_offset#50 = -5.00)) AND isnotnull(ca_address_sk#24)) + +(238) Project +Output [1]: [ca_address_sk#24] +Input [2]: [ca_address_sk#24, ca_gmt_offset#50] + +(239) Exchange +Input [1]: [ca_address_sk#24] +Arguments: hashpartitioning(ca_address_sk#24, 100), ENSURE_REQUIREMENTS, [plan_id=31] + +(240) Sort +Input [1]: [ca_address_sk#24] +Arguments: [ca_address_sk#24 ASC NULLS FIRST], false, 0 + +(241) SortMergeJoin +Left keys [1]: [cs_bill_addr_sk#20] +Right keys [1]: [ca_address_sk#24] +Join type: Inner +Join condition: None + +(242) Project +Output [2]: [cs_item_sk#21, cs_ext_sales_price#22] +Input [4]: [cs_bill_addr_sk#20, cs_item_sk#21, cs_ext_sales_price#22, ca_address_sk#24] + +(243) Exchange +Input [2]: [cs_item_sk#21, cs_ext_sales_price#22] +Arguments: hashpartitioning(cs_item_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=32] + +(244) Sort +Input [2]: [cs_item_sk#21, cs_ext_sales_price#22] +Arguments: [cs_item_sk#21 ASC NULLS FIRST], false, 0 + +(245) Scan parquet +Output [2]: [i_item_sk#25, i_item_id#26] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(246) Filter +Input [2]: [i_item_sk#25, i_item_id#26] +Condition : isnotnull(i_item_sk#25) + +(247) Exchange +Input [2]: [i_item_sk#25, i_item_id#26] +Arguments: hashpartitioning(i_item_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=33] + +(248) Sort +Input [2]: [i_item_sk#25, i_item_id#26] +Arguments: [i_item_id#26 ASC NULLS FIRST], false, 0 + +(249) Scan parquet +Output [2]: [i_item_id#51, i_category#52] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_category), EqualTo(i_category,Music)] +ReadSchema: struct + +(250) Filter +Input [2]: [i_item_id#51, i_category#52] +Condition : (isnotnull(i_category#52) AND (i_category#52 = Music)) + +(251) Project +Output [1]: [i_item_id#51] +Input [2]: [i_item_id#51, i_category#52] + +(252) Exchange +Input [1]: [i_item_id#51] +Arguments: hashpartitioning(i_item_id#51, 100), ENSURE_REQUIREMENTS, [plan_id=34] + +(253) Sort +Input [1]: [i_item_id#51] +Arguments: [i_item_id#51 ASC NULLS FIRST], false, 0 + +(254) SortMergeJoin +Left keys [1]: [i_item_id#26] +Right keys [1]: [i_item_id#51] +Join type: LeftSemi +Join condition: None + +(255) Exchange +Input [2]: [i_item_sk#25, i_item_id#26] +Arguments: hashpartitioning(i_item_sk#25, 100), ENSURE_REQUIREMENTS, [plan_id=35] + +(256) Sort +Input [2]: [i_item_sk#25, i_item_id#26] +Arguments: [i_item_sk#25 ASC NULLS FIRST], false, 0 + +(257) SortMergeJoin +Left keys [1]: [cs_item_sk#21] +Right keys [1]: [i_item_sk#25] +Join type: Inner +Join condition: None + +(258) Project +Output [2]: [cs_ext_sales_price#22, i_item_id#26] +Input [4]: [cs_item_sk#21, cs_ext_sales_price#22, i_item_sk#25, i_item_id#26] + +(259) HashAggregate +Input [2]: [cs_ext_sales_price#22, i_item_id#26] +Keys [1]: [i_item_id#26] +Functions [1]: [partial_sum(UnscaledValue(cs_ext_sales_price#22))] +Aggregate Attributes [1]: [sum#28] +Results [2]: [i_item_id#26, sum#53] + +(260) Exchange +Input [2]: [i_item_id#26, sum#53] +Arguments: hashpartitioning(i_item_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=36] + +(261) HashAggregate +Input [2]: [i_item_id#26, sum#53] +Keys [1]: [i_item_id#26] +Functions [1]: [sum(UnscaledValue(cs_ext_sales_price#22))] +Aggregate Attributes [1]: [sum(UnscaledValue(cs_ext_sales_price#22))#29] +Results [2]: [i_item_id#26, MakeDecimal(sum(UnscaledValue(cs_ext_sales_price#22))#29,17,2) AS total_sales#30] + +(262) Scan parquet +Output [4]: [ws_sold_date_sk#31, ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_bill_addr_sk), IsNotNull(ws_item_sk)] +ReadSchema: struct + +(263) Filter +Input [4]: [ws_sold_date_sk#31, ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Condition : ((isnotnull(ws_sold_date_sk#31) AND isnotnull(ws_bill_addr_sk#33)) AND isnotnull(ws_item_sk#32)) + +(264) Exchange +Input [4]: [ws_sold_date_sk#31, ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Arguments: hashpartitioning(ws_sold_date_sk#31, 100), ENSURE_REQUIREMENTS, [plan_id=37] + +(265) Sort +Input [4]: [ws_sold_date_sk#31, ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Arguments: [ws_sold_date_sk#31 ASC NULLS FIRST], false, 0 + +(266) Scan parquet +Output [3]: [d_date_sk#35, d_year#54, d_moy#55] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,1998), EqualTo(d_moy,9), IsNotNull(d_date_sk)] +ReadSchema: struct + +(267) Filter +Input [3]: [d_date_sk#35, d_year#54, d_moy#55] +Condition : ((((isnotnull(d_year#54) AND isnotnull(d_moy#55)) AND (d_year#54 = 1998)) AND (d_moy#55 = 9)) AND isnotnull(d_date_sk#35)) + +(268) Project +Output [1]: [d_date_sk#35] +Input [3]: [d_date_sk#35, d_year#54, d_moy#55] + +(269) Exchange +Input [1]: [d_date_sk#35] +Arguments: hashpartitioning(d_date_sk#35, 100), ENSURE_REQUIREMENTS, [plan_id=38] + +(270) Sort +Input [1]: [d_date_sk#35] +Arguments: [d_date_sk#35 ASC NULLS FIRST], false, 0 + +(271) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#31] +Right keys [1]: [d_date_sk#35] +Join type: Inner +Join condition: None + +(272) Project +Output [3]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Input [5]: [ws_sold_date_sk#31, ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34, d_date_sk#35] + +(273) Exchange +Input [3]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Arguments: hashpartitioning(ws_bill_addr_sk#33, 100), ENSURE_REQUIREMENTS, [plan_id=39] + +(274) Sort +Input [3]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34] +Arguments: [ws_bill_addr_sk#33 ASC NULLS FIRST], false, 0 + +(275) Scan parquet +Output [2]: [ca_address_sk#36, ca_gmt_offset#56] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_gmt_offset), EqualTo(ca_gmt_offset,-5.00), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(276) Filter +Input [2]: [ca_address_sk#36, ca_gmt_offset#56] +Condition : ((isnotnull(ca_gmt_offset#56) AND (ca_gmt_offset#56 = -5.00)) AND isnotnull(ca_address_sk#36)) + +(277) Project +Output [1]: [ca_address_sk#36] +Input [2]: [ca_address_sk#36, ca_gmt_offset#56] + +(278) Exchange +Input [1]: [ca_address_sk#36] +Arguments: hashpartitioning(ca_address_sk#36, 100), ENSURE_REQUIREMENTS, [plan_id=40] + +(279) Sort +Input [1]: [ca_address_sk#36] +Arguments: [ca_address_sk#36 ASC NULLS FIRST], false, 0 + +(280) SortMergeJoin +Left keys [1]: [ws_bill_addr_sk#33] +Right keys [1]: [ca_address_sk#36] +Join type: Inner +Join condition: None + +(281) Project +Output [2]: [ws_item_sk#32, ws_ext_sales_price#34] +Input [4]: [ws_item_sk#32, ws_bill_addr_sk#33, ws_ext_sales_price#34, ca_address_sk#36] + +(282) Exchange +Input [2]: [ws_item_sk#32, ws_ext_sales_price#34] +Arguments: hashpartitioning(ws_item_sk#32, 100), ENSURE_REQUIREMENTS, [plan_id=41] + +(283) Sort +Input [2]: [ws_item_sk#32, ws_ext_sales_price#34] +Arguments: [ws_item_sk#32 ASC NULLS FIRST], false, 0 + +(284) Scan parquet +Output [2]: [i_item_sk#37, i_item_id#38] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(285) Filter +Input [2]: [i_item_sk#37, i_item_id#38] +Condition : isnotnull(i_item_sk#37) + +(286) Exchange +Input [2]: [i_item_sk#37, i_item_id#38] +Arguments: hashpartitioning(i_item_id#38, 100), ENSURE_REQUIREMENTS, [plan_id=42] + +(287) Sort +Input [2]: [i_item_sk#37, i_item_id#38] +Arguments: [i_item_id#38 ASC NULLS FIRST], false, 0 + +(288) Scan parquet +Output [2]: [i_item_id#57, i_category#58] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_category), EqualTo(i_category,Music)] +ReadSchema: struct + +(289) Filter +Input [2]: [i_item_id#57, i_category#58] +Condition : (isnotnull(i_category#58) AND (i_category#58 = Music)) + +(290) Project +Output [1]: [i_item_id#57] +Input [2]: [i_item_id#57, i_category#58] + +(291) Exchange +Input [1]: [i_item_id#57] +Arguments: hashpartitioning(i_item_id#57, 100), ENSURE_REQUIREMENTS, [plan_id=43] + +(292) Sort +Input [1]: [i_item_id#57] +Arguments: [i_item_id#57 ASC NULLS FIRST], false, 0 + +(293) SortMergeJoin +Left keys [1]: [i_item_id#38] +Right keys [1]: [i_item_id#57] +Join type: LeftSemi +Join condition: None + +(294) Exchange +Input [2]: [i_item_sk#37, i_item_id#38] +Arguments: hashpartitioning(i_item_sk#37, 100), ENSURE_REQUIREMENTS, [plan_id=44] + +(295) Sort +Input [2]: [i_item_sk#37, i_item_id#38] +Arguments: [i_item_sk#37 ASC NULLS FIRST], false, 0 + +(296) SortMergeJoin +Left keys [1]: [ws_item_sk#32] +Right keys [1]: [i_item_sk#37] +Join type: Inner +Join condition: None + +(297) Project +Output [2]: [ws_ext_sales_price#34, i_item_id#38] +Input [4]: [ws_item_sk#32, ws_ext_sales_price#34, i_item_sk#37, i_item_id#38] + +(298) HashAggregate +Input [2]: [ws_ext_sales_price#34, i_item_id#38] +Keys [1]: [i_item_id#38] +Functions [1]: [partial_sum(UnscaledValue(ws_ext_sales_price#34))] +Aggregate Attributes [1]: [sum#40] +Results [2]: [i_item_id#38, sum#59] + +(299) Exchange +Input [2]: [i_item_id#38, sum#59] +Arguments: hashpartitioning(i_item_id#38, 100), ENSURE_REQUIREMENTS, [plan_id=45] + +(300) HashAggregate +Input [2]: [i_item_id#38, sum#59] +Keys [1]: [i_item_id#38] +Functions [1]: [sum(UnscaledValue(ws_ext_sales_price#34))] +Aggregate Attributes [1]: [sum(UnscaledValue(ws_ext_sales_price#34))#41] +Results [2]: [i_item_id#38, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#34))#41,17,2) AS total_sales#42] + +(301) Union + +(302) HashAggregate +Input [2]: [i_item_id#11, total_sales#18] +Keys [1]: [i_item_id#11] +Functions [1]: [partial_sum(total_sales#18)] +Aggregate Attributes [2]: [sum#43, isEmpty#44] +Results [3]: [i_item_id#11, sum#60, isEmpty#61] + +(303) Exchange +Input [3]: [i_item_id#11, sum#60, isEmpty#61] +Arguments: hashpartitioning(i_item_id#11, 100), ENSURE_REQUIREMENTS, [plan_id=46] + +(304) HashAggregate +Input [3]: [i_item_id#11, sum#60, isEmpty#61] +Keys [1]: [i_item_id#11] +Functions [1]: [sum(total_sales#18)] +Aggregate Attributes [1]: [sum(total_sales#18)#45] +Results [2]: [i_item_id#11, sum(total_sales#18)#45 AS total_sales#46] + +(305) TakeOrderedAndProject +Input [2]: [i_item_id#11, total_sales#46] +Arguments: X, [i_item_id#11 ASC NULLS FIRST, total_sales#46 ASC NULLS FIRST], [i_item_id#11, total_sales#46] + +(306) AdaptiveSparkPlan +Output [2]: [i_item_id#11, total_sales#46] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q61.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q61.txt new file mode 100644 index 000000000..8982df027 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q61.txt @@ -0,0 +1,1559 @@ +== Physical Plan == +AdaptiveSparkPlan (290) ++- == Final Plan == + * Project (180) + +- CartesianProduct Inner (179) + :- NativeProject (104) + : +- NativeHashAggregate (103) + : +- ShuffleQueryStage (102), Statistics(X) + : +- NativeShuffleExchange (101) + : +- NativeHashAggregate (100) + : +- NativeProject (99) + : +- NativeProject (98) + : +- NativeSortMergeJoin Inner (97) + : :- NativeSort (87) + : : +- InputAdapter (86) + : : +- AQEShuffleRead (85) + : : +- ShuffleQueryStage (84), Statistics(X) + : : +- NativeShuffleExchange (83) + : : +- NativeProject (82) + : : +- NativeSortMergeJoin Inner (81) + : : :- NativeSort (71) + : : : +- InputAdapter (70) + : : : +- AQEShuffleRead (69) + : : : +- ShuffleQueryStage (68), Statistics(X) + : : : +- NativeShuffleExchange (67) + : : : +- NativeProject (66) + : : : +- NativeSortMergeJoin Inner (65) + : : : :- NativeSort (56) + : : : : +- InputAdapter (55) + : : : : +- AQEShuffleRead (54) + : : : : +- ShuffleQueryStage (53), Statistics(X) + : : : : +- NativeShuffleExchange (52) + : : : : +- NativeProject (51) + : : : : +- NativeSortMergeJoin Inner (50) + : : : : :- NativeSort (40) + : : : : : +- InputAdapter (39) + : : : : : +- AQEShuffleRead (38) + : : : : : +- ShuffleQueryStage (37), Statistics(X) + : : : : : +- NativeShuffleExchange (36) + : : : : : +- NativeProject (35) + : : : : : +- NativeSortMergeJoin Inner (34) + : : : : : :- 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 (33) + : : : : : +- InputAdapter (32) + : : : : : +- AQEShuffleRead (31) + : : : : : +- ShuffleQueryStage (30), Statistics(X) + : : : : : +- NativeShuffleExchange (29) + : : : : : +- NativeProject (28) + : : : : : +- NativeFilter (27) + : : : : : +- InputAdapter (26) + : : : : : +- NativeParquetScan (25) + : : : : +- NativeSort (49) + : : : : +- InputAdapter (48) + : : : : +- AQEShuffleRead (47) + : : : : +- ShuffleQueryStage (46), Statistics(X) + : : : : +- NativeShuffleExchange (45) + : : : : +- NativeProject (44) + : : : : +- NativeFilter (43) + : : : : +- InputAdapter (42) + : : : : +- NativeParquetScan (41) + : : : +- NativeSort (64) + : : : +- InputAdapter (63) + : : : +- AQEShuffleRead (62) + : : : +- ShuffleQueryStage (61), Statistics(X) + : : : +- NativeShuffleExchange (60) + : : : +- NativeFilter (59) + : : : +- InputAdapter (58) + : : : +- NativeParquetScan (57) + : : +- NativeSort (80) + : : +- InputAdapter (79) + : : +- AQEShuffleRead (78) + : : +- ShuffleQueryStage (77), Statistics(X) + : : +- NativeShuffleExchange (76) + : : +- NativeProject (75) + : : +- NativeFilter (74) + : : +- InputAdapter (73) + : : +- NativeParquetScan (72) + : +- NativeSort (96) + : +- InputAdapter (95) + : +- AQEShuffleRead (94) + : +- ShuffleQueryStage (93), Statistics(X) + : +- NativeShuffleExchange (92) + : +- NativeProject (91) + : +- NativeFilter (90) + : +- InputAdapter (89) + : +- NativeParquetScan (88) + +- NativeProject (178) + +- NativeHashAggregate (177) + +- ShuffleQueryStage (176), Statistics(X) + +- NativeShuffleExchange (175) + +- NativeHashAggregate (174) + +- NativeProject (173) + +- NativeProject (172) + +- NativeSortMergeJoin Inner (171) + :- NativeSort (164) + : +- InputAdapter (163) + : +- AQEShuffleRead (162) + : +- ShuffleQueryStage (161), Statistics(X) + : +- NativeShuffleExchange (160) + : +- NativeProject (159) + : +- NativeSortMergeJoin Inner (158) + : :- NativeSort (151) + : : +- InputAdapter (150) + : : +- AQEShuffleRead (149) + : : +- ShuffleQueryStage (148), Statistics(X) + : : +- NativeShuffleExchange (147) + : : +- NativeProject (146) + : : +- NativeSortMergeJoin Inner (145) + : : :- NativeSort (138) + : : : +- InputAdapter (137) + : : : +- AQEShuffleRead (136) + : : : +- ShuffleQueryStage (135), Statistics(X) + : : : +- NativeShuffleExchange (134) + : : : +- NativeProject (133) + : : : +- NativeSortMergeJoin Inner (132) + : : : :- NativeSort (125) + : : : : +- InputAdapter (124) + : : : : +- AQEShuffleRead (123) + : : : : +- ShuffleQueryStage (122), Statistics(X) + : : : : +- NativeShuffleExchange (121) + : : : : +- NativeProject (120) + : : : : +- NativeSortMergeJoin Inner (119) + : : : : :- NativeSort (112) + : : : : : +- InputAdapter (111) + : : : : : +- AQEShuffleRead (110) + : : : : : +- ShuffleQueryStage (109), Statistics(X) + : : : : : +- NativeShuffleExchange (108) + : : : : : +- NativeFilter (107) + : : : : : +- InputAdapter (106) + : : : : : +- NativeParquetScan (105) + : : : : +- NativeSort (118) + : : : : +- InputAdapter (117) + : : : : +- InputAdapter (116) + : : : : +- AQEShuffleRead (115) + : : : : +- ShuffleQueryStage (114), Statistics(X) + : : : : +- ReusedExchange (113) + : : : +- NativeSort (131) + : : : +- InputAdapter (130) + : : : +- InputAdapter (129) + : : : +- AQEShuffleRead (128) + : : : +- ShuffleQueryStage (127), Statistics(X) + : : : +- ReusedExchange (126) + : : +- NativeSort (144) + : : +- InputAdapter (143) + : : +- InputAdapter (142) + : : +- AQEShuffleRead (141) + : : +- ShuffleQueryStage (140), Statistics(X) + : : +- ReusedExchange (139) + : +- NativeSort (157) + : +- InputAdapter (156) + : +- InputAdapter (155) + : +- AQEShuffleRead (154) + : +- ShuffleQueryStage (153), Statistics(X) + : +- ReusedExchange (152) + +- NativeSort (170) + +- InputAdapter (169) + +- InputAdapter (168) + +- AQEShuffleRead (167) + +- ShuffleQueryStage (166), Statistics(X) + +- ReusedExchange (165) ++- == Initial Plan == + Project (289) + +- CartesianProduct Inner (288) + :- HashAggregate (238) + : +- Exchange (237) + : +- HashAggregate (236) + : +- Project (235) + : +- SortMergeJoin Inner (234) + : :- Sort (228) + : : +- Exchange (227) + : : +- Project (226) + : : +- SortMergeJoin Inner (225) + : : :- Sort (219) + : : : +- Exchange (218) + : : : +- Project (217) + : : : +- SortMergeJoin Inner (216) + : : : :- Sort (211) + : : : : +- Exchange (210) + : : : : +- Project (209) + : : : : +- SortMergeJoin Inner (208) + : : : : :- Sort (202) + : : : : : +- Exchange (201) + : : : : : +- Project (200) + : : : : : +- SortMergeJoin Inner (199) + : : : : : :- Sort (193) + : : : : : : +- Exchange (192) + : : : : : : +- Project (191) + : : : : : : +- SortMergeJoin Inner (190) + : : : : : : :- Sort (184) + : : : : : : : +- Exchange (183) + : : : : : : : +- Filter (182) + : : : : : : : +- Scan parquet (181) + : : : : : : +- Sort (189) + : : : : : : +- Exchange (188) + : : : : : : +- Project (187) + : : : : : : +- Filter (186) + : : : : : : +- Scan parquet (185) + : : : : : +- Sort (198) + : : : : : +- Exchange (197) + : : : : : +- Project (196) + : : : : : +- Filter (195) + : : : : : +- Scan parquet (194) + : : : : +- Sort (207) + : : : : +- Exchange (206) + : : : : +- Project (205) + : : : : +- Filter (204) + : : : : +- Scan parquet (203) + : : : +- Sort (215) + : : : +- Exchange (214) + : : : +- Filter (213) + : : : +- Scan parquet (212) + : : +- Sort (224) + : : +- Exchange (223) + : : +- Project (222) + : : +- Filter (221) + : : +- Scan parquet (220) + : +- Sort (233) + : +- Exchange (232) + : +- Project (231) + : +- Filter (230) + : +- Scan parquet (229) + +- HashAggregate (287) + +- Exchange (286) + +- HashAggregate (285) + +- Project (284) + +- SortMergeJoin Inner (283) + :- Sort (277) + : +- Exchange (276) + : +- Project (275) + : +- SortMergeJoin Inner (274) + : :- Sort (268) + : : +- Exchange (267) + : : +- Project (266) + : : +- SortMergeJoin Inner (265) + : : :- Sort (260) + : : : +- Exchange (259) + : : : +- Project (258) + : : : +- SortMergeJoin Inner (257) + : : : :- Sort (251) + : : : : +- Exchange (250) + : : : : +- Project (249) + : : : : +- SortMergeJoin Inner (248) + : : : : :- Sort (242) + : : : : : +- Exchange (241) + : : : : : +- Filter (240) + : : : : : +- Scan parquet (239) + : : : : +- Sort (247) + : : : : +- Exchange (246) + : : : : +- Project (245) + : : : : +- Filter (244) + : : : : +- Scan parquet (243) + : : : +- Sort (256) + : : : +- Exchange (255) + : : : +- Project (254) + : : : +- Filter (253) + : : : +- Scan parquet (252) + : : +- Sort (264) + : : +- Exchange (263) + : : +- Filter (262) + : : +- Scan parquet (261) + : +- Sort (273) + : +- Exchange (272) + : +- Project (271) + : +- Filter (270) + : +- Scan parquet (269) + +- Sort (282) + +- Exchange (281) + +- Project (280) + +- Filter (279) + +- Scan parquet (278) + + +(181) Scan parquet +Output [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_promo_sk#5, ss_ext_sales_price#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_store_sk), IsNotNull(ss_promo_sk), IsNotNull(ss_sold_date_sk), IsNotNull(ss_customer_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_promo_sk#5, ss_ext_sales_price#6] +Arguments: [#1, #2, #3, #4, #5, #6] + +(3) NativeFilter +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Condition : ((((isnotnull(ss_store_sk#4) AND isnotnull(ss_promo_sk#5)) AND isnotnull(ss_sold_date_sk#1)) AND isnotnull(ss_customer_sk#3)) AND isnotnull(ss_item_sk#2)) + +(4) NativeShuffleExchange +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Arguments: hashpartitioning(ss_store_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Arguments: X + +(6) AQEShuffleRead +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Arguments: coalesced + +(7) InputAdapter +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] + +(8) NativeSort +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Arguments: [ss_store_sk#4 ASC NULLS FIRST], false + +(185) Scan parquet +Output [2]: [s_store_sk#7, s_gmt_offset#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_gmt_offset), EqualTo(s_gmt_offset,-5.00), IsNotNull(s_store_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [s_store_sk#7, s_gmt_offset#8] +Arguments: [#7, #8] + +(11) NativeFilter +Input [2]: [#7#7, #8#8] +Condition : ((isnotnull(s_gmt_offset#8) AND (s_gmt_offset#8 = -5.00)) AND isnotnull(s_store_sk#7)) + +(12) NativeProject +Output [1]: [s_store_sk#7] +Input [2]: [#7#7, #8#8] + +(13) NativeShuffleExchange +Input [1]: [s_store_sk#7] +Arguments: hashpartitioning(s_store_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [1]: [s_store_sk#7] +Arguments: X + +(15) AQEShuffleRead +Input [1]: [s_store_sk#7] +Arguments: coalesced + +(16) InputAdapter +Input [1]: [s_store_sk#7] + +(17) NativeSort +Input [1]: [s_store_sk#7] +Arguments: [s_store_sk#7 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#4] +Right keys [1]: [s_store_sk#7] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_promo_sk#5, ss_ext_sales_price#6] +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, s_store_sk#7] + +(20) NativeShuffleExchange +Input [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_promo_sk#5, ss_ext_sales_price#6] +Arguments: hashpartitioning(ss_promo_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_promo_sk#5, ss_ext_sales_price#6] +Arguments: X + +(22) AQEShuffleRead +Input [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_promo_sk#5, ss_ext_sales_price#6] +Arguments: coalesced + +(23) InputAdapter +Input [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_promo_sk#5, ss_ext_sales_price#6] + +(24) NativeSort +Input [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_promo_sk#5, ss_ext_sales_price#6] +Arguments: [ss_promo_sk#5 ASC NULLS FIRST], false + +(194) Scan parquet +Output [4]: [p_promo_sk#9, p_channel_dmail#10, p_channel_email#11, p_channel_tv#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(Or(EqualTo(p_channel_dmail,Y),EqualTo(p_channel_email,Y)),EqualTo(p_channel_tv,Y)), IsNotNull(p_promo_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [4]: [p_promo_sk#9, p_channel_dmail#10, p_channel_email#11, p_channel_tv#12] +Arguments: [#9, #10, #11, #12] + +(27) NativeFilter +Input [4]: [#9#9, #10#10, #11#11, #12#12] +Condition : ((((p_channel_dmail#10 = Y) OR (p_channel_email#11 = Y)) OR (p_channel_tv#12 = Y)) AND isnotnull(p_promo_sk#9)) + +(28) NativeProject +Output [1]: [p_promo_sk#9] +Input [4]: [#9#9, #10#10, #11#11, #12#12] + +(29) NativeShuffleExchange +Input [1]: [p_promo_sk#9] +Arguments: hashpartitioning(p_promo_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(30) ShuffleQueryStage +Output [1]: [p_promo_sk#9] +Arguments: X + +(31) AQEShuffleRead +Input [1]: [p_promo_sk#9] +Arguments: coalesced + +(32) InputAdapter +Input [1]: [p_promo_sk#9] + +(33) NativeSort +Input [1]: [p_promo_sk#9] +Arguments: [p_promo_sk#9 ASC NULLS FIRST], false + +(34) NativeSortMergeJoin +Left keys [1]: [ss_promo_sk#5] +Right keys [1]: [p_promo_sk#9] +Join type: Inner +Join condition: None + +(35) NativeProject +Output [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_ext_sales_price#6] +Input [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_promo_sk#5, ss_ext_sales_price#6, p_promo_sk#9] + +(36) NativeShuffleExchange +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_ext_sales_price#6] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_ext_sales_price#6] +Arguments: X + +(38) AQEShuffleRead +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_ext_sales_price#6] +Arguments: coalesced + +(39) InputAdapter +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_ext_sales_price#6] + +(40) NativeSort +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_ext_sales_price#6] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(203) Scan parquet +Output [3]: [d_date_sk#13, d_year#14, d_moy#15] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,1998), EqualTo(d_moy,11), IsNotNull(d_date_sk)] +ReadSchema: struct + +(42) InputAdapter +Input [3]: [d_date_sk#13, d_year#14, d_moy#15] +Arguments: [#13, #14, #15] + +(43) NativeFilter +Input [3]: [#13#13, #14#14, #15#15] +Condition : ((((isnotnull(d_year#14) AND isnotnull(d_moy#15)) AND (d_year#14 = 1998)) AND (d_moy#15 = 11)) AND isnotnull(d_date_sk#13)) + +(44) NativeProject +Output [1]: [d_date_sk#13] +Input [3]: [#13#13, #14#14, #15#15] + +(45) NativeShuffleExchange +Input [1]: [d_date_sk#13] +Arguments: hashpartitioning(d_date_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(46) ShuffleQueryStage +Output [1]: [d_date_sk#13] +Arguments: X + +(47) AQEShuffleRead +Input [1]: [d_date_sk#13] +Arguments: coalesced + +(48) InputAdapter +Input [1]: [d_date_sk#13] + +(49) NativeSort +Input [1]: [d_date_sk#13] +Arguments: [d_date_sk#13 ASC NULLS FIRST], false + +(50) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#13] +Join type: Inner +Join condition: None + +(51) NativeProject +Output [3]: [ss_item_sk#2, ss_customer_sk#3, ss_ext_sales_price#6] +Input [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_ext_sales_price#6, d_date_sk#13] + +(52) NativeShuffleExchange +Input [3]: [ss_item_sk#2, ss_customer_sk#3, ss_ext_sales_price#6] +Arguments: hashpartitioning(ss_customer_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(53) ShuffleQueryStage +Output [3]: [ss_item_sk#2, ss_customer_sk#3, ss_ext_sales_price#6] +Arguments: X + +(54) AQEShuffleRead +Input [3]: [ss_item_sk#2, ss_customer_sk#3, ss_ext_sales_price#6] +Arguments: coalesced + +(55) InputAdapter +Input [3]: [ss_item_sk#2, ss_customer_sk#3, ss_ext_sales_price#6] + +(56) NativeSort +Input [3]: [ss_item_sk#2, ss_customer_sk#3, ss_ext_sales_price#6] +Arguments: [ss_customer_sk#3 ASC NULLS FIRST], false + +(212) Scan parquet +Output [2]: [c_customer_sk#16, c_current_addr_sk#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_current_addr_sk)] +ReadSchema: struct + +(58) InputAdapter +Input [2]: [c_customer_sk#16, c_current_addr_sk#17] +Arguments: [#16, #17] + +(59) NativeFilter +Input [2]: [#16#16, #17#17] +Condition : (isnotnull(c_customer_sk#16) AND isnotnull(c_current_addr_sk#17)) + +(60) NativeShuffleExchange +Input [2]: [#16#16, #17#17] +Arguments: hashpartitioning(c_customer_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(61) ShuffleQueryStage +Output [2]: [#16#16, #17#17] +Arguments: X + +(62) AQEShuffleRead +Input [2]: [#16#16, #17#17] +Arguments: coalesced + +(63) InputAdapter +Input [2]: [#16#16, #17#17] + +(64) NativeSort +Input [2]: [#16#16, #17#17] +Arguments: [c_customer_sk#16 ASC NULLS FIRST], false + +(65) NativeSortMergeJoin +Left keys [1]: [ss_customer_sk#3] +Right keys [1]: [c_customer_sk#16] +Join type: Inner +Join condition: None + +(66) NativeProject +Output [3]: [ss_item_sk#2, ss_ext_sales_price#6, c_current_addr_sk#17] +Input [5]: [ss_item_sk#2, ss_customer_sk#3, ss_ext_sales_price#6, #16#16, #17#17] + +(67) NativeShuffleExchange +Input [3]: [ss_item_sk#2, ss_ext_sales_price#6, c_current_addr_sk#17] +Arguments: hashpartitioning(c_current_addr_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(68) ShuffleQueryStage +Output [3]: [ss_item_sk#2, ss_ext_sales_price#6, c_current_addr_sk#17] +Arguments: X + +(69) AQEShuffleRead +Input [3]: [ss_item_sk#2, ss_ext_sales_price#6, c_current_addr_sk#17] +Arguments: coalesced + +(70) InputAdapter +Input [3]: [ss_item_sk#2, ss_ext_sales_price#6, c_current_addr_sk#17] + +(71) NativeSort +Input [3]: [ss_item_sk#2, ss_ext_sales_price#6, c_current_addr_sk#17] +Arguments: [c_current_addr_sk#17 ASC NULLS FIRST], false + +(220) Scan parquet +Output [2]: [ca_address_sk#18, ca_gmt_offset#19] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_gmt_offset), EqualTo(ca_gmt_offset,-5.00), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(73) InputAdapter +Input [2]: [ca_address_sk#18, ca_gmt_offset#19] +Arguments: [#18, #19] + +(74) NativeFilter +Input [2]: [#18#18, #19#19] +Condition : ((isnotnull(ca_gmt_offset#19) AND (ca_gmt_offset#19 = -5.00)) AND isnotnull(ca_address_sk#18)) + +(75) NativeProject +Output [1]: [ca_address_sk#18] +Input [2]: [#18#18, #19#19] + +(76) NativeShuffleExchange +Input [1]: [ca_address_sk#18] +Arguments: hashpartitioning(ca_address_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(77) ShuffleQueryStage +Output [1]: [ca_address_sk#18] +Arguments: X + +(78) AQEShuffleRead +Input [1]: [ca_address_sk#18] +Arguments: coalesced + +(79) InputAdapter +Input [1]: [ca_address_sk#18] + +(80) NativeSort +Input [1]: [ca_address_sk#18] +Arguments: [ca_address_sk#18 ASC NULLS FIRST], false + +(81) NativeSortMergeJoin +Left keys [1]: [c_current_addr_sk#17] +Right keys [1]: [ca_address_sk#18] +Join type: Inner +Join condition: None + +(82) NativeProject +Output [2]: [ss_item_sk#2, ss_ext_sales_price#6] +Input [4]: [ss_item_sk#2, ss_ext_sales_price#6, c_current_addr_sk#17, ca_address_sk#18] + +(83) NativeShuffleExchange +Input [2]: [ss_item_sk#2, ss_ext_sales_price#6] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(84) ShuffleQueryStage +Output [2]: [ss_item_sk#2, ss_ext_sales_price#6] +Arguments: X + +(85) AQEShuffleRead +Input [2]: [ss_item_sk#2, ss_ext_sales_price#6] +Arguments: coalesced + +(86) InputAdapter +Input [2]: [ss_item_sk#2, ss_ext_sales_price#6] + +(87) NativeSort +Input [2]: [ss_item_sk#2, ss_ext_sales_price#6] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false + +(229) Scan parquet +Output [2]: [i_item_sk#20, i_category#21] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_category), EqualTo(i_category,Jewelry), IsNotNull(i_item_sk)] +ReadSchema: struct + +(89) InputAdapter +Input [2]: [i_item_sk#20, i_category#21] +Arguments: [#20, #21] + +(90) NativeFilter +Input [2]: [#20#20, #21#21] +Condition : ((isnotnull(i_category#21) AND (i_category#21 = Jewelry)) AND isnotnull(i_item_sk#20)) + +(91) NativeProject +Output [1]: [i_item_sk#20] +Input [2]: [#20#20, #21#21] + +(92) NativeShuffleExchange +Input [1]: [i_item_sk#20] +Arguments: hashpartitioning(i_item_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(93) ShuffleQueryStage +Output [1]: [i_item_sk#20] +Arguments: X + +(94) AQEShuffleRead +Input [1]: [i_item_sk#20] +Arguments: coalesced + +(95) InputAdapter +Input [1]: [i_item_sk#20] + +(96) NativeSort +Input [1]: [i_item_sk#20] +Arguments: [i_item_sk#20 ASC NULLS FIRST], false + +(97) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#20] +Join type: Inner +Join condition: None + +(98) NativeProject +Output [1]: [ss_ext_sales_price#6] +Input [3]: [ss_item_sk#2, ss_ext_sales_price#6, i_item_sk#20] + +(99) NativeProject +Output [1]: [UnscaledValue(ss_ext_sales_price#6) AS _c0#22] +Input [1]: [ss_ext_sales_price#6] + +(100) NativeHashAggregate +Input [1]: [_c0#22] +Keys: [] +Functions [1]: [partial_sum(_c0#22)] +Aggregate Attributes [1]: [sum#23] +Results [1]: [#24#24] + +(101) NativeShuffleExchange +Input [1]: [#24#24] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=13] + +(102) ShuffleQueryStage +Output [1]: [#24#24] +Arguments: X + +(103) NativeHashAggregate +Input [1]: [#24#24] +Keys: [] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#6))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#6))#25] +Results [1]: [sum(UnscaledValue(ss_ext_sales_price#6))#25] + +(104) NativeProject +Output [1]: [MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#6))#25,17,2) AS promotions#26] +Input [1]: [sum(UnscaledValue(ss_ext_sales_price#6))#25] + +(239) Scan parquet +Output [5]: [ss_sold_date_sk#27, ss_item_sk#28, ss_customer_sk#29, ss_store_sk#30, ss_ext_sales_price#31] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_store_sk), IsNotNull(ss_sold_date_sk), IsNotNull(ss_customer_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(106) InputAdapter +Input [5]: [ss_sold_date_sk#27, ss_item_sk#28, ss_customer_sk#29, ss_store_sk#30, ss_ext_sales_price#31] +Arguments: [#27, #28, #29, #30, #31] + +(107) NativeFilter +Input [5]: [#27#27, #28#28, #29#29, #30#30, #31#31] +Condition : (((isnotnull(ss_store_sk#30) AND isnotnull(ss_sold_date_sk#27)) AND isnotnull(ss_customer_sk#29)) AND isnotnull(ss_item_sk#28)) + +(108) NativeShuffleExchange +Input [5]: [#27#27, #28#28, #29#29, #30#30, #31#31] +Arguments: hashpartitioning(ss_store_sk#30, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(109) ShuffleQueryStage +Output [5]: [#27#27, #28#28, #29#29, #30#30, #31#31] +Arguments: X + +(110) AQEShuffleRead +Input [5]: [#27#27, #28#28, #29#29, #30#30, #31#31] +Arguments: coalesced + +(111) InputAdapter +Input [5]: [#27#27, #28#28, #29#29, #30#30, #31#31] + +(112) NativeSort +Input [5]: [#27#27, #28#28, #29#29, #30#30, #31#31] +Arguments: [ss_store_sk#30 ASC NULLS FIRST], false + +(113) ReusedExchange [Reuses operator id: 13] +Output [1]: [s_store_sk#32] + +(114) ShuffleQueryStage +Output [1]: [s_store_sk#32] +Arguments: X + +(115) AQEShuffleRead +Input [1]: [s_store_sk#32] +Arguments: coalesced + +(116) InputAdapter +Input [1]: [s_store_sk#32] +Arguments: [#32] + +(117) InputAdapter +Input [1]: [#32#32] + +(118) NativeSort +Input [1]: [#32#32] +Arguments: [s_store_sk#32 ASC NULLS FIRST], false + +(119) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#30] +Right keys [1]: [s_store_sk#32] +Join type: Inner +Join condition: None + +(120) NativeProject +Output [4]: [ss_sold_date_sk#27, ss_item_sk#28, ss_customer_sk#29, ss_ext_sales_price#31] +Input [6]: [#27#27, #28#28, #29#29, #30#30, #31#31, #32#32] + +(121) NativeShuffleExchange +Input [4]: [ss_sold_date_sk#27, ss_item_sk#28, ss_customer_sk#29, ss_ext_sales_price#31] +Arguments: hashpartitioning(ss_sold_date_sk#27, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(122) ShuffleQueryStage +Output [4]: [ss_sold_date_sk#27, ss_item_sk#28, ss_customer_sk#29, ss_ext_sales_price#31] +Arguments: X + +(123) AQEShuffleRead +Input [4]: [ss_sold_date_sk#27, ss_item_sk#28, ss_customer_sk#29, ss_ext_sales_price#31] +Arguments: coalesced + +(124) InputAdapter +Input [4]: [ss_sold_date_sk#27, ss_item_sk#28, ss_customer_sk#29, ss_ext_sales_price#31] + +(125) NativeSort +Input [4]: [ss_sold_date_sk#27, ss_item_sk#28, ss_customer_sk#29, ss_ext_sales_price#31] +Arguments: [ss_sold_date_sk#27 ASC NULLS FIRST], false + +(126) ReusedExchange [Reuses operator id: 45] +Output [1]: [d_date_sk#33] + +(127) ShuffleQueryStage +Output [1]: [d_date_sk#33] +Arguments: X + +(128) AQEShuffleRead +Input [1]: [d_date_sk#33] +Arguments: coalesced + +(129) InputAdapter +Input [1]: [d_date_sk#33] +Arguments: [#33] + +(130) InputAdapter +Input [1]: [#33#33] + +(131) NativeSort +Input [1]: [#33#33] +Arguments: [d_date_sk#33 ASC NULLS FIRST], false + +(132) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#27] +Right keys [1]: [d_date_sk#33] +Join type: Inner +Join condition: None + +(133) NativeProject +Output [3]: [ss_item_sk#28, ss_customer_sk#29, ss_ext_sales_price#31] +Input [5]: [ss_sold_date_sk#27, ss_item_sk#28, ss_customer_sk#29, ss_ext_sales_price#31, #33#33] + +(134) NativeShuffleExchange +Input [3]: [ss_item_sk#28, ss_customer_sk#29, ss_ext_sales_price#31] +Arguments: hashpartitioning(ss_customer_sk#29, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(135) ShuffleQueryStage +Output [3]: [ss_item_sk#28, ss_customer_sk#29, ss_ext_sales_price#31] +Arguments: X + +(136) AQEShuffleRead +Input [3]: [ss_item_sk#28, ss_customer_sk#29, ss_ext_sales_price#31] +Arguments: coalesced + +(137) InputAdapter +Input [3]: [ss_item_sk#28, ss_customer_sk#29, ss_ext_sales_price#31] + +(138) NativeSort +Input [3]: [ss_item_sk#28, ss_customer_sk#29, ss_ext_sales_price#31] +Arguments: [ss_customer_sk#29 ASC NULLS FIRST], false + +(139) ReusedExchange [Reuses operator id: 60] +Output [2]: [c_customer_sk#34, c_current_addr_sk#35] + +(140) ShuffleQueryStage +Output [2]: [c_customer_sk#34, c_current_addr_sk#35] +Arguments: X + +(141) AQEShuffleRead +Input [2]: [c_customer_sk#34, c_current_addr_sk#35] +Arguments: coalesced + +(142) InputAdapter +Input [2]: [c_customer_sk#34, c_current_addr_sk#35] +Arguments: [#34, #35] + +(143) InputAdapter +Input [2]: [#34#34, #35#35] + +(144) NativeSort +Input [2]: [#34#34, #35#35] +Arguments: [c_customer_sk#34 ASC NULLS FIRST], false + +(145) NativeSortMergeJoin +Left keys [1]: [ss_customer_sk#29] +Right keys [1]: [c_customer_sk#34] +Join type: Inner +Join condition: None + +(146) NativeProject +Output [3]: [ss_item_sk#28, ss_ext_sales_price#31, c_current_addr_sk#35] +Input [5]: [ss_item_sk#28, ss_customer_sk#29, ss_ext_sales_price#31, #34#34, #35#35] + +(147) NativeShuffleExchange +Input [3]: [ss_item_sk#28, ss_ext_sales_price#31, c_current_addr_sk#35] +Arguments: hashpartitioning(c_current_addr_sk#35, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(148) ShuffleQueryStage +Output [3]: [ss_item_sk#28, ss_ext_sales_price#31, c_current_addr_sk#35] +Arguments: X + +(149) AQEShuffleRead +Input [3]: [ss_item_sk#28, ss_ext_sales_price#31, c_current_addr_sk#35] +Arguments: coalesced + +(150) InputAdapter +Input [3]: [ss_item_sk#28, ss_ext_sales_price#31, c_current_addr_sk#35] + +(151) NativeSort +Input [3]: [ss_item_sk#28, ss_ext_sales_price#31, c_current_addr_sk#35] +Arguments: [c_current_addr_sk#35 ASC NULLS FIRST], false + +(152) ReusedExchange [Reuses operator id: 76] +Output [1]: [ca_address_sk#36] + +(153) ShuffleQueryStage +Output [1]: [ca_address_sk#36] +Arguments: X + +(154) AQEShuffleRead +Input [1]: [ca_address_sk#36] +Arguments: coalesced + +(155) InputAdapter +Input [1]: [ca_address_sk#36] +Arguments: [#36] + +(156) InputAdapter +Input [1]: [#36#36] + +(157) NativeSort +Input [1]: [#36#36] +Arguments: [ca_address_sk#36 ASC NULLS FIRST], false + +(158) NativeSortMergeJoin +Left keys [1]: [c_current_addr_sk#35] +Right keys [1]: [ca_address_sk#36] +Join type: Inner +Join condition: None + +(159) NativeProject +Output [2]: [ss_item_sk#28, ss_ext_sales_price#31] +Input [4]: [ss_item_sk#28, ss_ext_sales_price#31, c_current_addr_sk#35, #36#36] + +(160) NativeShuffleExchange +Input [2]: [ss_item_sk#28, ss_ext_sales_price#31] +Arguments: hashpartitioning(ss_item_sk#28, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(161) ShuffleQueryStage +Output [2]: [ss_item_sk#28, ss_ext_sales_price#31] +Arguments: X + +(162) AQEShuffleRead +Input [2]: [ss_item_sk#28, ss_ext_sales_price#31] +Arguments: coalesced + +(163) InputAdapter +Input [2]: [ss_item_sk#28, ss_ext_sales_price#31] + +(164) NativeSort +Input [2]: [ss_item_sk#28, ss_ext_sales_price#31] +Arguments: [ss_item_sk#28 ASC NULLS FIRST], false + +(165) ReusedExchange [Reuses operator id: 92] +Output [1]: [i_item_sk#37] + +(166) ShuffleQueryStage +Output [1]: [i_item_sk#37] +Arguments: X + +(167) AQEShuffleRead +Input [1]: [i_item_sk#37] +Arguments: coalesced + +(168) InputAdapter +Input [1]: [i_item_sk#37] +Arguments: [#37] + +(169) InputAdapter +Input [1]: [#37#37] + +(170) NativeSort +Input [1]: [#37#37] +Arguments: [i_item_sk#37 ASC NULLS FIRST], false + +(171) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#28] +Right keys [1]: [i_item_sk#37] +Join type: Inner +Join condition: None + +(172) NativeProject +Output [1]: [ss_ext_sales_price#31] +Input [3]: [ss_item_sk#28, ss_ext_sales_price#31, #37#37] + +(173) NativeProject +Output [1]: [UnscaledValue(ss_ext_sales_price#31) AS _c0#38] +Input [1]: [ss_ext_sales_price#31] + +(174) NativeHashAggregate +Input [1]: [_c0#38] +Keys: [] +Functions [1]: [partial_sum(_c0#38)] +Aggregate Attributes [1]: [sum#39] +Results [1]: [#24#24] + +(175) NativeShuffleExchange +Input [1]: [#24#24] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=19] + +(176) ShuffleQueryStage +Output [1]: [#24#24] +Arguments: X + +(177) NativeHashAggregate +Input [1]: [#24#24] +Keys: [] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#31))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#31))#40] +Results [1]: [sum(UnscaledValue(ss_ext_sales_price#31))#40] + +(178) NativeProject +Output [1]: [MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#31))#40,17,2) AS total#41] +Input [1]: [sum(UnscaledValue(ss_ext_sales_price#31))#40] + +(179) CartesianProduct +Join type: Inner +Join condition: None + +(180) Project [codegen id : 1] +Output [3]: [promotions#26, total#41, ((cast(promotions#26 as decimal(15,4)) / cast(total#41 as decimal(15,4))) * 100) AS ((CAST(promotions AS DECIMAL(15,4)) / CAST(total AS DECIMAL(15,4))) * 100)#42] +Input [2]: [promotions#26, total#41] + +(181) Scan parquet +Output [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_promo_sk#5, ss_ext_sales_price#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_store_sk), IsNotNull(ss_promo_sk), IsNotNull(ss_sold_date_sk), IsNotNull(ss_customer_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(182) Filter +Input [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_promo_sk#5, ss_ext_sales_price#6] +Condition : ((((isnotnull(ss_store_sk#4) AND isnotnull(ss_promo_sk#5)) AND isnotnull(ss_sold_date_sk#1)) AND isnotnull(ss_customer_sk#3)) AND isnotnull(ss_item_sk#2)) + +(183) Exchange +Input [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_promo_sk#5, ss_ext_sales_price#6] +Arguments: hashpartitioning(ss_store_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(184) Sort +Input [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_promo_sk#5, ss_ext_sales_price#6] +Arguments: [ss_store_sk#4 ASC NULLS FIRST], false, 0 + +(185) Scan parquet +Output [2]: [s_store_sk#7, s_gmt_offset#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_gmt_offset), EqualTo(s_gmt_offset,-5.00), IsNotNull(s_store_sk)] +ReadSchema: struct + +(186) Filter +Input [2]: [s_store_sk#7, s_gmt_offset#8] +Condition : ((isnotnull(s_gmt_offset#8) AND (s_gmt_offset#8 = -5.00)) AND isnotnull(s_store_sk#7)) + +(187) Project +Output [1]: [s_store_sk#7] +Input [2]: [s_store_sk#7, s_gmt_offset#8] + +(188) Exchange +Input [1]: [s_store_sk#7] +Arguments: hashpartitioning(s_store_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(189) Sort +Input [1]: [s_store_sk#7] +Arguments: [s_store_sk#7 ASC NULLS FIRST], false, 0 + +(190) SortMergeJoin +Left keys [1]: [ss_store_sk#4] +Right keys [1]: [s_store_sk#7] +Join type: Inner +Join condition: None + +(191) Project +Output [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_promo_sk#5, ss_ext_sales_price#6] +Input [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_store_sk#4, ss_promo_sk#5, ss_ext_sales_price#6, s_store_sk#7] + +(192) Exchange +Input [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_promo_sk#5, ss_ext_sales_price#6] +Arguments: hashpartitioning(ss_promo_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(193) Sort +Input [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_promo_sk#5, ss_ext_sales_price#6] +Arguments: [ss_promo_sk#5 ASC NULLS FIRST], false, 0 + +(194) Scan parquet +Output [4]: [p_promo_sk#9, p_channel_dmail#10, p_channel_email#11, p_channel_tv#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(Or(EqualTo(p_channel_dmail,Y),EqualTo(p_channel_email,Y)),EqualTo(p_channel_tv,Y)), IsNotNull(p_promo_sk)] +ReadSchema: struct + +(195) Filter +Input [4]: [p_promo_sk#9, p_channel_dmail#10, p_channel_email#11, p_channel_tv#12] +Condition : ((((p_channel_dmail#10 = Y) OR (p_channel_email#11 = Y)) OR (p_channel_tv#12 = Y)) AND isnotnull(p_promo_sk#9)) + +(196) Project +Output [1]: [p_promo_sk#9] +Input [4]: [p_promo_sk#9, p_channel_dmail#10, p_channel_email#11, p_channel_tv#12] + +(197) Exchange +Input [1]: [p_promo_sk#9] +Arguments: hashpartitioning(p_promo_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(198) Sort +Input [1]: [p_promo_sk#9] +Arguments: [p_promo_sk#9 ASC NULLS FIRST], false, 0 + +(199) SortMergeJoin +Left keys [1]: [ss_promo_sk#5] +Right keys [1]: [p_promo_sk#9] +Join type: Inner +Join condition: None + +(200) Project +Output [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_ext_sales_price#6] +Input [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_promo_sk#5, ss_ext_sales_price#6, p_promo_sk#9] + +(201) Exchange +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_ext_sales_price#6] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(202) Sort +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_ext_sales_price#6] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(203) Scan parquet +Output [3]: [d_date_sk#13, d_year#14, d_moy#15] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,1998), EqualTo(d_moy,11), IsNotNull(d_date_sk)] +ReadSchema: struct + +(204) Filter +Input [3]: [d_date_sk#13, d_year#14, d_moy#15] +Condition : ((((isnotnull(d_year#14) AND isnotnull(d_moy#15)) AND (d_year#14 = 1998)) AND (d_moy#15 = 11)) AND isnotnull(d_date_sk#13)) + +(205) Project +Output [1]: [d_date_sk#13] +Input [3]: [d_date_sk#13, d_year#14, d_moy#15] + +(206) Exchange +Input [1]: [d_date_sk#13] +Arguments: hashpartitioning(d_date_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(207) Sort +Input [1]: [d_date_sk#13] +Arguments: [d_date_sk#13 ASC NULLS FIRST], false, 0 + +(208) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#13] +Join type: Inner +Join condition: None + +(209) Project +Output [3]: [ss_item_sk#2, ss_customer_sk#3, ss_ext_sales_price#6] +Input [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_ext_sales_price#6, d_date_sk#13] + +(210) Exchange +Input [3]: [ss_item_sk#2, ss_customer_sk#3, ss_ext_sales_price#6] +Arguments: hashpartitioning(ss_customer_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(211) Sort +Input [3]: [ss_item_sk#2, ss_customer_sk#3, ss_ext_sales_price#6] +Arguments: [ss_customer_sk#3 ASC NULLS FIRST], false, 0 + +(212) Scan parquet +Output [2]: [c_customer_sk#16, c_current_addr_sk#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_current_addr_sk)] +ReadSchema: struct + +(213) Filter +Input [2]: [c_customer_sk#16, c_current_addr_sk#17] +Condition : (isnotnull(c_customer_sk#16) AND isnotnull(c_current_addr_sk#17)) + +(214) Exchange +Input [2]: [c_customer_sk#16, c_current_addr_sk#17] +Arguments: hashpartitioning(c_customer_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(215) Sort +Input [2]: [c_customer_sk#16, c_current_addr_sk#17] +Arguments: [c_customer_sk#16 ASC NULLS FIRST], false, 0 + +(216) SortMergeJoin +Left keys [1]: [ss_customer_sk#3] +Right keys [1]: [c_customer_sk#16] +Join type: Inner +Join condition: None + +(217) Project +Output [3]: [ss_item_sk#2, ss_ext_sales_price#6, c_current_addr_sk#17] +Input [5]: [ss_item_sk#2, ss_customer_sk#3, ss_ext_sales_price#6, c_customer_sk#16, c_current_addr_sk#17] + +(218) Exchange +Input [3]: [ss_item_sk#2, ss_ext_sales_price#6, c_current_addr_sk#17] +Arguments: hashpartitioning(c_current_addr_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(219) Sort +Input [3]: [ss_item_sk#2, ss_ext_sales_price#6, c_current_addr_sk#17] +Arguments: [c_current_addr_sk#17 ASC NULLS FIRST], false, 0 + +(220) Scan parquet +Output [2]: [ca_address_sk#18, ca_gmt_offset#19] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_gmt_offset), EqualTo(ca_gmt_offset,-5.00), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(221) Filter +Input [2]: [ca_address_sk#18, ca_gmt_offset#19] +Condition : ((isnotnull(ca_gmt_offset#19) AND (ca_gmt_offset#19 = -5.00)) AND isnotnull(ca_address_sk#18)) + +(222) Project +Output [1]: [ca_address_sk#18] +Input [2]: [ca_address_sk#18, ca_gmt_offset#19] + +(223) Exchange +Input [1]: [ca_address_sk#18] +Arguments: hashpartitioning(ca_address_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(224) Sort +Input [1]: [ca_address_sk#18] +Arguments: [ca_address_sk#18 ASC NULLS FIRST], false, 0 + +(225) SortMergeJoin +Left keys [1]: [c_current_addr_sk#17] +Right keys [1]: [ca_address_sk#18] +Join type: Inner +Join condition: None + +(226) Project +Output [2]: [ss_item_sk#2, ss_ext_sales_price#6] +Input [4]: [ss_item_sk#2, ss_ext_sales_price#6, c_current_addr_sk#17, ca_address_sk#18] + +(227) Exchange +Input [2]: [ss_item_sk#2, ss_ext_sales_price#6] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(228) Sort +Input [2]: [ss_item_sk#2, ss_ext_sales_price#6] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false, 0 + +(229) Scan parquet +Output [2]: [i_item_sk#20, i_category#21] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_category), EqualTo(i_category,Jewelry), IsNotNull(i_item_sk)] +ReadSchema: struct + +(230) Filter +Input [2]: [i_item_sk#20, i_category#21] +Condition : ((isnotnull(i_category#21) AND (i_category#21 = Jewelry)) AND isnotnull(i_item_sk#20)) + +(231) Project +Output [1]: [i_item_sk#20] +Input [2]: [i_item_sk#20, i_category#21] + +(232) Exchange +Input [1]: [i_item_sk#20] +Arguments: hashpartitioning(i_item_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=31] + +(233) Sort +Input [1]: [i_item_sk#20] +Arguments: [i_item_sk#20 ASC NULLS FIRST], false, 0 + +(234) SortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#20] +Join type: Inner +Join condition: None + +(235) Project +Output [1]: [ss_ext_sales_price#6] +Input [3]: [ss_item_sk#2, ss_ext_sales_price#6, i_item_sk#20] + +(236) HashAggregate +Input [1]: [ss_ext_sales_price#6] +Keys: [] +Functions [1]: [partial_sum(UnscaledValue(ss_ext_sales_price#6))] +Aggregate Attributes [1]: [sum#23] +Results [1]: [sum#43] + +(237) Exchange +Input [1]: [sum#43] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=32] + +(238) HashAggregate +Input [1]: [sum#43] +Keys: [] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#6))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#6))#25] +Results [1]: [MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#6))#25,17,2) AS promotions#26] + +(239) Scan parquet +Output [5]: [ss_sold_date_sk#27, ss_item_sk#28, ss_customer_sk#29, ss_store_sk#30, ss_ext_sales_price#31] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_store_sk), IsNotNull(ss_sold_date_sk), IsNotNull(ss_customer_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(240) Filter +Input [5]: [ss_sold_date_sk#27, ss_item_sk#28, ss_customer_sk#29, ss_store_sk#30, ss_ext_sales_price#31] +Condition : (((isnotnull(ss_store_sk#30) AND isnotnull(ss_sold_date_sk#27)) AND isnotnull(ss_customer_sk#29)) AND isnotnull(ss_item_sk#28)) + +(241) Exchange +Input [5]: [ss_sold_date_sk#27, ss_item_sk#28, ss_customer_sk#29, ss_store_sk#30, ss_ext_sales_price#31] +Arguments: hashpartitioning(ss_store_sk#30, 100), ENSURE_REQUIREMENTS, [plan_id=33] + +(242) Sort +Input [5]: [ss_sold_date_sk#27, ss_item_sk#28, ss_customer_sk#29, ss_store_sk#30, ss_ext_sales_price#31] +Arguments: [ss_store_sk#30 ASC NULLS FIRST], false, 0 + +(243) Scan parquet +Output [2]: [s_store_sk#32, s_gmt_offset#44] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_gmt_offset), EqualTo(s_gmt_offset,-5.00), IsNotNull(s_store_sk)] +ReadSchema: struct + +(244) Filter +Input [2]: [s_store_sk#32, s_gmt_offset#44] +Condition : ((isnotnull(s_gmt_offset#44) AND (s_gmt_offset#44 = -5.00)) AND isnotnull(s_store_sk#32)) + +(245) Project +Output [1]: [s_store_sk#32] +Input [2]: [s_store_sk#32, s_gmt_offset#44] + +(246) Exchange +Input [1]: [s_store_sk#32] +Arguments: hashpartitioning(s_store_sk#32, 100), ENSURE_REQUIREMENTS, [plan_id=34] + +(247) Sort +Input [1]: [s_store_sk#32] +Arguments: [s_store_sk#32 ASC NULLS FIRST], false, 0 + +(248) SortMergeJoin +Left keys [1]: [ss_store_sk#30] +Right keys [1]: [s_store_sk#32] +Join type: Inner +Join condition: None + +(249) Project +Output [4]: [ss_sold_date_sk#27, ss_item_sk#28, ss_customer_sk#29, ss_ext_sales_price#31] +Input [6]: [ss_sold_date_sk#27, ss_item_sk#28, ss_customer_sk#29, ss_store_sk#30, ss_ext_sales_price#31, s_store_sk#32] + +(250) Exchange +Input [4]: [ss_sold_date_sk#27, ss_item_sk#28, ss_customer_sk#29, ss_ext_sales_price#31] +Arguments: hashpartitioning(ss_sold_date_sk#27, 100), ENSURE_REQUIREMENTS, [plan_id=35] + +(251) Sort +Input [4]: [ss_sold_date_sk#27, ss_item_sk#28, ss_customer_sk#29, ss_ext_sales_price#31] +Arguments: [ss_sold_date_sk#27 ASC NULLS FIRST], false, 0 + +(252) Scan parquet +Output [3]: [d_date_sk#33, d_year#45, d_moy#46] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,1998), EqualTo(d_moy,11), IsNotNull(d_date_sk)] +ReadSchema: struct + +(253) Filter +Input [3]: [d_date_sk#33, d_year#45, d_moy#46] +Condition : ((((isnotnull(d_year#45) AND isnotnull(d_moy#46)) AND (d_year#45 = 1998)) AND (d_moy#46 = 11)) AND isnotnull(d_date_sk#33)) + +(254) Project +Output [1]: [d_date_sk#33] +Input [3]: [d_date_sk#33, d_year#45, d_moy#46] + +(255) Exchange +Input [1]: [d_date_sk#33] +Arguments: hashpartitioning(d_date_sk#33, 100), ENSURE_REQUIREMENTS, [plan_id=36] + +(256) Sort +Input [1]: [d_date_sk#33] +Arguments: [d_date_sk#33 ASC NULLS FIRST], false, 0 + +(257) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#27] +Right keys [1]: [d_date_sk#33] +Join type: Inner +Join condition: None + +(258) Project +Output [3]: [ss_item_sk#28, ss_customer_sk#29, ss_ext_sales_price#31] +Input [5]: [ss_sold_date_sk#27, ss_item_sk#28, ss_customer_sk#29, ss_ext_sales_price#31, d_date_sk#33] + +(259) Exchange +Input [3]: [ss_item_sk#28, ss_customer_sk#29, ss_ext_sales_price#31] +Arguments: hashpartitioning(ss_customer_sk#29, 100), ENSURE_REQUIREMENTS, [plan_id=37] + +(260) Sort +Input [3]: [ss_item_sk#28, ss_customer_sk#29, ss_ext_sales_price#31] +Arguments: [ss_customer_sk#29 ASC NULLS FIRST], false, 0 + +(261) Scan parquet +Output [2]: [c_customer_sk#34, c_current_addr_sk#35] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_current_addr_sk)] +ReadSchema: struct + +(262) Filter +Input [2]: [c_customer_sk#34, c_current_addr_sk#35] +Condition : (isnotnull(c_customer_sk#34) AND isnotnull(c_current_addr_sk#35)) + +(263) Exchange +Input [2]: [c_customer_sk#34, c_current_addr_sk#35] +Arguments: hashpartitioning(c_customer_sk#34, 100), ENSURE_REQUIREMENTS, [plan_id=38] + +(264) Sort +Input [2]: [c_customer_sk#34, c_current_addr_sk#35] +Arguments: [c_customer_sk#34 ASC NULLS FIRST], false, 0 + +(265) SortMergeJoin +Left keys [1]: [ss_customer_sk#29] +Right keys [1]: [c_customer_sk#34] +Join type: Inner +Join condition: None + +(266) Project +Output [3]: [ss_item_sk#28, ss_ext_sales_price#31, c_current_addr_sk#35] +Input [5]: [ss_item_sk#28, ss_customer_sk#29, ss_ext_sales_price#31, c_customer_sk#34, c_current_addr_sk#35] + +(267) Exchange +Input [3]: [ss_item_sk#28, ss_ext_sales_price#31, c_current_addr_sk#35] +Arguments: hashpartitioning(c_current_addr_sk#35, 100), ENSURE_REQUIREMENTS, [plan_id=39] + +(268) Sort +Input [3]: [ss_item_sk#28, ss_ext_sales_price#31, c_current_addr_sk#35] +Arguments: [c_current_addr_sk#35 ASC NULLS FIRST], false, 0 + +(269) Scan parquet +Output [2]: [ca_address_sk#36, ca_gmt_offset#47] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_gmt_offset), EqualTo(ca_gmt_offset,-5.00), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(270) Filter +Input [2]: [ca_address_sk#36, ca_gmt_offset#47] +Condition : ((isnotnull(ca_gmt_offset#47) AND (ca_gmt_offset#47 = -5.00)) AND isnotnull(ca_address_sk#36)) + +(271) Project +Output [1]: [ca_address_sk#36] +Input [2]: [ca_address_sk#36, ca_gmt_offset#47] + +(272) Exchange +Input [1]: [ca_address_sk#36] +Arguments: hashpartitioning(ca_address_sk#36, 100), ENSURE_REQUIREMENTS, [plan_id=40] + +(273) Sort +Input [1]: [ca_address_sk#36] +Arguments: [ca_address_sk#36 ASC NULLS FIRST], false, 0 + +(274) SortMergeJoin +Left keys [1]: [c_current_addr_sk#35] +Right keys [1]: [ca_address_sk#36] +Join type: Inner +Join condition: None + +(275) Project +Output [2]: [ss_item_sk#28, ss_ext_sales_price#31] +Input [4]: [ss_item_sk#28, ss_ext_sales_price#31, c_current_addr_sk#35, ca_address_sk#36] + +(276) Exchange +Input [2]: [ss_item_sk#28, ss_ext_sales_price#31] +Arguments: hashpartitioning(ss_item_sk#28, 100), ENSURE_REQUIREMENTS, [plan_id=41] + +(277) Sort +Input [2]: [ss_item_sk#28, ss_ext_sales_price#31] +Arguments: [ss_item_sk#28 ASC NULLS FIRST], false, 0 + +(278) Scan parquet +Output [2]: [i_item_sk#37, i_category#48] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_category), EqualTo(i_category,Jewelry), IsNotNull(i_item_sk)] +ReadSchema: struct + +(279) Filter +Input [2]: [i_item_sk#37, i_category#48] +Condition : ((isnotnull(i_category#48) AND (i_category#48 = Jewelry)) AND isnotnull(i_item_sk#37)) + +(280) Project +Output [1]: [i_item_sk#37] +Input [2]: [i_item_sk#37, i_category#48] + +(281) Exchange +Input [1]: [i_item_sk#37] +Arguments: hashpartitioning(i_item_sk#37, 100), ENSURE_REQUIREMENTS, [plan_id=42] + +(282) Sort +Input [1]: [i_item_sk#37] +Arguments: [i_item_sk#37 ASC NULLS FIRST], false, 0 + +(283) SortMergeJoin +Left keys [1]: [ss_item_sk#28] +Right keys [1]: [i_item_sk#37] +Join type: Inner +Join condition: None + +(284) Project +Output [1]: [ss_ext_sales_price#31] +Input [3]: [ss_item_sk#28, ss_ext_sales_price#31, i_item_sk#37] + +(285) HashAggregate +Input [1]: [ss_ext_sales_price#31] +Keys: [] +Functions [1]: [partial_sum(UnscaledValue(ss_ext_sales_price#31))] +Aggregate Attributes [1]: [sum#39] +Results [1]: [sum#49] + +(286) Exchange +Input [1]: [sum#49] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=43] + +(287) HashAggregate +Input [1]: [sum#49] +Keys: [] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#31))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#31))#40] +Results [1]: [MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#31))#40,17,2) AS total#41] + +(288) CartesianProduct +Join type: Inner +Join condition: None + +(289) Project +Output [3]: [promotions#26, total#41, ((cast(promotions#26 as decimal(15,4)) / cast(total#41 as decimal(15,4))) * 100) AS ((CAST(promotions AS DECIMAL(15,4)) / CAST(total AS DECIMAL(15,4))) * 100)#42] +Input [2]: [promotions#26, total#41] + +(290) AdaptiveSparkPlan +Output [3]: [promotions#26, total#41, ((CAST(promotions AS DECIMAL(15,4)) / CAST(total AS DECIMAL(15,4))) * 100)#42] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q62.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q62.txt new file mode 100644 index 000000000..fb391275f --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q62.txt @@ -0,0 +1,619 @@ +== Physical Plan == +AdaptiveSparkPlan (113) ++- == Final Plan == + NativeTakeOrdered (73) + +- NativeProject (72) + +- NativeHashAggregate (71) + +- InputAdapter (70) + +- AQEShuffleRead (69) + +- ShuffleQueryStage (68), Statistics(X) + +- NativeShuffleExchange (67) + +- NativeHashAggregate (66) + +- NativeProject (65) + +- NativeProject (64) + +- NativeSortMergeJoin Inner (63) + :- NativeSort (53) + : +- InputAdapter (52) + : +- AQEShuffleRead (51) + : +- ShuffleQueryStage (50), Statistics(X) + : +- NativeShuffleExchange (49) + : +- NativeProject (48) + : +- NativeSortMergeJoin Inner (47) + : :- NativeSort (38) + : : +- InputAdapter (37) + : : +- AQEShuffleRead (36) + : : +- ShuffleQueryStage (35), Statistics(X) + : : +- NativeShuffleExchange (34) + : : +- NativeProject (33) + : : +- NativeSortMergeJoin Inner (32) + : : :- NativeSort (23) + : : : +- InputAdapter (22) + : : : +- AQEShuffleRead (21) + : : : +- ShuffleQueryStage (20), Statistics(X) + : : : +- NativeShuffleExchange (19) + : : : +- NativeProject (18) + : : : +- NativeSortMergeJoin Inner (17) + : : : :- NativeSort (8) + : : : : +- InputAdapter (7) + : : : : +- AQEShuffleRead (6) + : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : +- NativeShuffleExchange (4) + : : : : +- NativeFilter (3) + : : : : +- InputAdapter (2) + : : : : +- NativeParquetScan (1) + : : : +- NativeSort (16) + : : : +- InputAdapter (15) + : : : +- AQEShuffleRead (14) + : : : +- ShuffleQueryStage (13), Statistics(X) + : : : +- NativeShuffleExchange (12) + : : : +- NativeFilter (11) + : : : +- InputAdapter (10) + : : : +- NativeParquetScan (9) + : : +- NativeSort (31) + : : +- InputAdapter (30) + : : +- AQEShuffleRead (29) + : : +- ShuffleQueryStage (28), Statistics(X) + : : +- NativeShuffleExchange (27) + : : +- NativeFilter (26) + : : +- InputAdapter (25) + : : +- NativeParquetScan (24) + : +- NativeSort (46) + : +- InputAdapter (45) + : +- AQEShuffleRead (44) + : +- ShuffleQueryStage (43), Statistics(X) + : +- NativeShuffleExchange (42) + : +- NativeFilter (41) + : +- InputAdapter (40) + : +- NativeParquetScan (39) + +- NativeSort (62) + +- InputAdapter (61) + +- AQEShuffleRead (60) + +- ShuffleQueryStage (59), Statistics(X) + +- NativeShuffleExchange (58) + +- NativeProject (57) + +- NativeFilter (56) + +- InputAdapter (55) + +- NativeParquetScan (54) ++- == Initial Plan == + TakeOrderedAndProject (112) + +- HashAggregate (111) + +- Exchange (110) + +- HashAggregate (109) + +- Project (108) + +- SortMergeJoin Inner (107) + :- Sort (101) + : +- Exchange (100) + : +- Project (99) + : +- SortMergeJoin Inner (98) + : :- Sort (93) + : : +- Exchange (92) + : : +- Project (91) + : : +- SortMergeJoin Inner (90) + : : :- Sort (85) + : : : +- Exchange (84) + : : : +- Project (83) + : : : +- SortMergeJoin Inner (82) + : : : :- Sort (77) + : : : : +- Exchange (76) + : : : : +- Filter (75) + : : : : +- Scan parquet (74) + : : : +- Sort (81) + : : : +- Exchange (80) + : : : +- Filter (79) + : : : +- Scan parquet (78) + : : +- Sort (89) + : : +- Exchange (88) + : : +- Filter (87) + : : +- Scan parquet (86) + : +- Sort (97) + : +- Exchange (96) + : +- Filter (95) + : +- Scan parquet (94) + +- Sort (106) + +- Exchange (105) + +- Project (104) + +- Filter (103) + +- Scan parquet (102) + + +(74) Scan parquet +Output [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, ws_web_site_sk#3, ws_ship_mode_sk#4, ws_warehouse_sk#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_warehouse_sk), IsNotNull(ws_ship_mode_sk), IsNotNull(ws_web_site_sk), IsNotNull(ws_ship_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, ws_web_site_sk#3, ws_ship_mode_sk#4, ws_warehouse_sk#5] +Arguments: [#1, #2, #3, #4, #5] + +(3) NativeFilter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Condition : (((isnotnull(ws_warehouse_sk#5) AND isnotnull(ws_ship_mode_sk#4)) AND isnotnull(ws_web_site_sk#3)) AND isnotnull(ws_ship_date_sk#2)) + +(4) NativeShuffleExchange +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: hashpartitioning(ws_warehouse_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: X + +(6) AQEShuffleRead +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: coalesced + +(7) InputAdapter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] + +(8) NativeSort +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: [ws_warehouse_sk#5 ASC NULLS FIRST], false + +(78) Scan parquet +Output [2]: [w_warehouse_sk#6, w_warehouse_name#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(w_warehouse_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [w_warehouse_sk#6, w_warehouse_name#7] +Arguments: [#6, #7] + +(11) NativeFilter +Input [2]: [#6#6, #7#7] +Condition : isnotnull(w_warehouse_sk#6) + +(12) NativeShuffleExchange +Input [2]: [#6#6, #7#7] +Arguments: hashpartitioning(w_warehouse_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [2]: [#6#6, #7#7] +Arguments: X + +(14) AQEShuffleRead +Input [2]: [#6#6, #7#7] +Arguments: coalesced + +(15) InputAdapter +Input [2]: [#6#6, #7#7] + +(16) NativeSort +Input [2]: [#6#6, #7#7] +Arguments: [w_warehouse_sk#6 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [1]: [ws_warehouse_sk#5] +Right keys [1]: [w_warehouse_sk#6] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, ws_web_site_sk#3, ws_ship_mode_sk#4, w_warehouse_name#7] +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] + +(19) NativeShuffleExchange +Input [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, ws_web_site_sk#3, ws_ship_mode_sk#4, w_warehouse_name#7] +Arguments: hashpartitioning(ws_ship_mode_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, ws_web_site_sk#3, ws_ship_mode_sk#4, w_warehouse_name#7] +Arguments: X + +(21) AQEShuffleRead +Input [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, ws_web_site_sk#3, ws_ship_mode_sk#4, w_warehouse_name#7] +Arguments: coalesced + +(22) InputAdapter +Input [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, ws_web_site_sk#3, ws_ship_mode_sk#4, w_warehouse_name#7] + +(23) NativeSort +Input [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, ws_web_site_sk#3, ws_ship_mode_sk#4, w_warehouse_name#7] +Arguments: [ws_ship_mode_sk#4 ASC NULLS FIRST], false + +(86) Scan parquet +Output [2]: [sm_ship_mode_sk#8, sm_type#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sm_ship_mode_sk)] +ReadSchema: struct + +(25) InputAdapter +Input [2]: [sm_ship_mode_sk#8, sm_type#9] +Arguments: [#8, #9] + +(26) NativeFilter +Input [2]: [#8#8, #9#9] +Condition : isnotnull(sm_ship_mode_sk#8) + +(27) NativeShuffleExchange +Input [2]: [#8#8, #9#9] +Arguments: hashpartitioning(sm_ship_mode_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(28) ShuffleQueryStage +Output [2]: [#8#8, #9#9] +Arguments: X + +(29) AQEShuffleRead +Input [2]: [#8#8, #9#9] +Arguments: coalesced + +(30) InputAdapter +Input [2]: [#8#8, #9#9] + +(31) NativeSort +Input [2]: [#8#8, #9#9] +Arguments: [sm_ship_mode_sk#8 ASC NULLS FIRST], false + +(32) NativeSortMergeJoin +Left keys [1]: [ws_ship_mode_sk#4] +Right keys [1]: [sm_ship_mode_sk#8] +Join type: Inner +Join condition: None + +(33) NativeProject +Output [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, ws_web_site_sk#3, w_warehouse_name#7, sm_type#9] +Input [7]: [ws_sold_date_sk#1, ws_ship_date_sk#2, ws_web_site_sk#3, ws_ship_mode_sk#4, w_warehouse_name#7, #8#8, #9#9] + +(34) NativeShuffleExchange +Input [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, ws_web_site_sk#3, w_warehouse_name#7, sm_type#9] +Arguments: hashpartitioning(ws_web_site_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(35) ShuffleQueryStage +Output [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, ws_web_site_sk#3, w_warehouse_name#7, sm_type#9] +Arguments: X + +(36) AQEShuffleRead +Input [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, ws_web_site_sk#3, w_warehouse_name#7, sm_type#9] +Arguments: coalesced + +(37) InputAdapter +Input [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, ws_web_site_sk#3, w_warehouse_name#7, sm_type#9] + +(38) NativeSort +Input [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, ws_web_site_sk#3, w_warehouse_name#7, sm_type#9] +Arguments: [ws_web_site_sk#3 ASC NULLS FIRST], false + +(94) Scan parquet +Output [2]: [web_site_sk#10, web_name#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(web_site_sk)] +ReadSchema: struct + +(40) InputAdapter +Input [2]: [web_site_sk#10, web_name#11] +Arguments: [#10, #11] + +(41) NativeFilter +Input [2]: [#10#10, #11#11] +Condition : isnotnull(web_site_sk#10) + +(42) NativeShuffleExchange +Input [2]: [#10#10, #11#11] +Arguments: hashpartitioning(web_site_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(43) ShuffleQueryStage +Output [2]: [#10#10, #11#11] +Arguments: X + +(44) AQEShuffleRead +Input [2]: [#10#10, #11#11] +Arguments: coalesced + +(45) InputAdapter +Input [2]: [#10#10, #11#11] + +(46) NativeSort +Input [2]: [#10#10, #11#11] +Arguments: [web_site_sk#10 ASC NULLS FIRST], false + +(47) NativeSortMergeJoin +Left keys [1]: [ws_web_site_sk#3] +Right keys [1]: [web_site_sk#10] +Join type: Inner +Join condition: None + +(48) NativeProject +Output [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, w_warehouse_name#7, sm_type#9, web_name#11] +Input [7]: [ws_sold_date_sk#1, ws_ship_date_sk#2, ws_web_site_sk#3, w_warehouse_name#7, sm_type#9, #10#10, #11#11] + +(49) NativeShuffleExchange +Input [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, w_warehouse_name#7, sm_type#9, web_name#11] +Arguments: hashpartitioning(ws_ship_date_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(50) ShuffleQueryStage +Output [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, w_warehouse_name#7, sm_type#9, web_name#11] +Arguments: X + +(51) AQEShuffleRead +Input [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, w_warehouse_name#7, sm_type#9, web_name#11] +Arguments: coalesced + +(52) InputAdapter +Input [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, w_warehouse_name#7, sm_type#9, web_name#11] + +(53) NativeSort +Input [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, w_warehouse_name#7, sm_type#9, web_name#11] +Arguments: [ws_ship_date_sk#2 ASC NULLS FIRST], false + +(102) Scan parquet +Output [2]: [d_date_sk#12, d_month_seq#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)] +ReadSchema: struct + +(55) InputAdapter +Input [2]: [d_date_sk#12, d_month_seq#13] +Arguments: [#12, #13] + +(56) NativeFilter +Input [2]: [#12#12, #13#13] +Condition : (((isnotnull(d_month_seq#13) AND (d_month_seq#13 >= 1200)) AND (d_month_seq#13 <= 1211)) AND isnotnull(d_date_sk#12)) + +(57) NativeProject +Output [1]: [d_date_sk#12] +Input [2]: [#12#12, #13#13] + +(58) NativeShuffleExchange +Input [1]: [d_date_sk#12] +Arguments: hashpartitioning(d_date_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(59) ShuffleQueryStage +Output [1]: [d_date_sk#12] +Arguments: X + +(60) AQEShuffleRead +Input [1]: [d_date_sk#12] +Arguments: coalesced + +(61) InputAdapter +Input [1]: [d_date_sk#12] + +(62) NativeSort +Input [1]: [d_date_sk#12] +Arguments: [d_date_sk#12 ASC NULLS FIRST], false + +(63) NativeSortMergeJoin +Left keys [1]: [ws_ship_date_sk#2] +Right keys [1]: [d_date_sk#12] +Join type: Inner +Join condition: None + +(64) NativeProject +Output [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, sm_type#9, web_name#11, substr(w_warehouse_name#7, 1, 20) AS _groupingexpression#14] +Input [6]: [ws_sold_date_sk#1, ws_ship_date_sk#2, w_warehouse_name#7, sm_type#9, web_name#11, d_date_sk#12] + +(65) NativeProject +Output [8]: [_groupingexpression#14 AS _groupingexpression#14, sm_type#9 AS sm_type#9, web_name#11 AS web_name#11, CASE WHEN ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 30) THEN 1 ELSE 0 END AS _c3#15, CASE WHEN (((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 30) AND ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 60)) THEN 1 ELSE 0 END AS _c4#16, CASE WHEN (((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 60) AND ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 90)) THEN 1 ELSE 0 END AS _c5#17, CASE WHEN (((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 90) AND ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 120)) THEN 1 ELSE 0 END AS _c6#18, CASE WHEN ((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 120) THEN 1 ELSE 0 END AS _c7#19] +Input [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, sm_type#9, web_name#11, _groupingexpression#14] + +(66) NativeHashAggregate +Input [8]: [_groupingexpression#14, sm_type#9, web_name#11, _c3#15, _c4#16, _c5#17, _c6#18, _c7#19] +Keys [3]: [_groupingexpression#14, sm_type#9, web_name#11] +Functions [5]: [partial_sum(_c3#15), partial_sum(_c4#16), partial_sum(_c5#17), partial_sum(_c6#18), partial_sum(_c7#19)] +Aggregate Attributes [5]: [sum#20, sum#21, sum#22, sum#23, sum#24] +Results [4]: [_groupingexpression#14, sm_type#9, web_name#11, #25#25] + +(67) NativeShuffleExchange +Input [4]: [_groupingexpression#14, sm_type#9, web_name#11, #25#25] +Arguments: hashpartitioning(_groupingexpression#14, sm_type#9, web_name#11, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(68) ShuffleQueryStage +Output [4]: [_groupingexpression#14, sm_type#9, web_name#11, #25#25] +Arguments: X + +(69) AQEShuffleRead +Input [4]: [_groupingexpression#14, sm_type#9, web_name#11, #25#25] +Arguments: coalesced + +(70) InputAdapter +Input [4]: [_groupingexpression#14, sm_type#9, web_name#11, #25#25] + +(71) NativeHashAggregate +Input [4]: [_groupingexpression#14, sm_type#9, web_name#11, #25#25] +Keys [3]: [_groupingexpression#14, sm_type#9, web_name#11] +Functions [5]: [sum(CASE WHEN ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 30) THEN 1 ELSE 0 END), sum(CASE WHEN (((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 30) AND ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 60)) THEN 1 ELSE 0 END), sum(CASE WHEN (((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 60) AND ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 90)) THEN 1 ELSE 0 END), sum(CASE WHEN (((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 90) AND ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 120)) THEN 1 ELSE 0 END), sum(CASE WHEN ((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 120) THEN 1 ELSE 0 END)] +Aggregate Attributes [5]: [sum(CASE WHEN ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 30) THEN 1 ELSE 0 END)#26, sum(CASE WHEN (((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 30) AND ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 60)) THEN 1 ELSE 0 END)#27, sum(CASE WHEN (((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 60) AND ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 90)) THEN 1 ELSE 0 END)#28, sum(CASE WHEN (((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 90) AND ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 120)) THEN 1 ELSE 0 END)#29, sum(CASE WHEN ((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 120) THEN 1 ELSE 0 END)#30] +Results [8]: [_groupingexpression#14, sm_type#9, web_name#11, sum(CASE WHEN ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 30) THEN 1 ELSE 0 END)#26, sum(CASE WHEN (((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 30) AND ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 60)) THEN 1 ELSE 0 END)#27, sum(CASE WHEN (((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 60) AND ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 90)) THEN 1 ELSE 0 END)#28, sum(CASE WHEN (((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 90) AND ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 120)) THEN 1 ELSE 0 END)#29, sum(CASE WHEN ((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 120) THEN 1 ELSE 0 END)#30] + +(72) NativeProject +Output [8]: [_groupingexpression#14 AS substr(w_warehouse_name, 1, 20)#31, sm_type#9, web_name#11, sum(CASE WHEN ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 30) THEN 1 ELSE 0 END)#26 AS 30 days #32, sum(CASE WHEN (((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 30) AND ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 60)) THEN 1 ELSE 0 END)#27 AS 31 - 60 days #33, sum(CASE WHEN (((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 60) AND ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 90)) THEN 1 ELSE 0 END)#28 AS 61 - 90 days #34, sum(CASE WHEN (((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 90) AND ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 120)) THEN 1 ELSE 0 END)#29 AS 91 - 120 days #35, sum(CASE WHEN ((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 120) THEN 1 ELSE 0 END)#30 AS >120 days #36] +Input [8]: [_groupingexpression#14, sm_type#9, web_name#11, sum(CASE WHEN ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 30) THEN 1 ELSE 0 END)#26, sum(CASE WHEN (((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 30) AND ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 60)) THEN 1 ELSE 0 END)#27, sum(CASE WHEN (((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 60) AND ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 90)) THEN 1 ELSE 0 END)#28, sum(CASE WHEN (((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 90) AND ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 120)) THEN 1 ELSE 0 END)#29, sum(CASE WHEN ((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 120) THEN 1 ELSE 0 END)#30] + +(73) NativeTakeOrdered +Input [8]: [substr(w_warehouse_name, 1, 20)#31, sm_type#9, web_name#11, 30 days #32, 31 - 60 days #33, 61 - 90 days #34, 91 - 120 days #35, >120 days #36] +Arguments: X, [substr(w_warehouse_name, 1, 20)#31 ASC NULLS FIRST, sm_type#9 ASC NULLS FIRST, web_name#11 ASC NULLS FIRST] + +(74) Scan parquet +Output [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, ws_web_site_sk#3, ws_ship_mode_sk#4, ws_warehouse_sk#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_warehouse_sk), IsNotNull(ws_ship_mode_sk), IsNotNull(ws_web_site_sk), IsNotNull(ws_ship_date_sk)] +ReadSchema: struct + +(75) Filter +Input [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, ws_web_site_sk#3, ws_ship_mode_sk#4, ws_warehouse_sk#5] +Condition : (((isnotnull(ws_warehouse_sk#5) AND isnotnull(ws_ship_mode_sk#4)) AND isnotnull(ws_web_site_sk#3)) AND isnotnull(ws_ship_date_sk#2)) + +(76) Exchange +Input [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, ws_web_site_sk#3, ws_ship_mode_sk#4, ws_warehouse_sk#5] +Arguments: hashpartitioning(ws_warehouse_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(77) Sort +Input [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, ws_web_site_sk#3, ws_ship_mode_sk#4, ws_warehouse_sk#5] +Arguments: [ws_warehouse_sk#5 ASC NULLS FIRST], false, 0 + +(78) Scan parquet +Output [2]: [w_warehouse_sk#6, w_warehouse_name#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(w_warehouse_sk)] +ReadSchema: struct + +(79) Filter +Input [2]: [w_warehouse_sk#6, w_warehouse_name#7] +Condition : isnotnull(w_warehouse_sk#6) + +(80) Exchange +Input [2]: [w_warehouse_sk#6, w_warehouse_name#7] +Arguments: hashpartitioning(w_warehouse_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(81) Sort +Input [2]: [w_warehouse_sk#6, w_warehouse_name#7] +Arguments: [w_warehouse_sk#6 ASC NULLS FIRST], false, 0 + +(82) SortMergeJoin +Left keys [1]: [ws_warehouse_sk#5] +Right keys [1]: [w_warehouse_sk#6] +Join type: Inner +Join condition: None + +(83) Project +Output [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, ws_web_site_sk#3, ws_ship_mode_sk#4, w_warehouse_name#7] +Input [7]: [ws_sold_date_sk#1, ws_ship_date_sk#2, ws_web_site_sk#3, ws_ship_mode_sk#4, ws_warehouse_sk#5, w_warehouse_sk#6, w_warehouse_name#7] + +(84) Exchange +Input [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, ws_web_site_sk#3, ws_ship_mode_sk#4, w_warehouse_name#7] +Arguments: hashpartitioning(ws_ship_mode_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(85) Sort +Input [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, ws_web_site_sk#3, ws_ship_mode_sk#4, w_warehouse_name#7] +Arguments: [ws_ship_mode_sk#4 ASC NULLS FIRST], false, 0 + +(86) Scan parquet +Output [2]: [sm_ship_mode_sk#8, sm_type#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sm_ship_mode_sk)] +ReadSchema: struct + +(87) Filter +Input [2]: [sm_ship_mode_sk#8, sm_type#9] +Condition : isnotnull(sm_ship_mode_sk#8) + +(88) Exchange +Input [2]: [sm_ship_mode_sk#8, sm_type#9] +Arguments: hashpartitioning(sm_ship_mode_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(89) Sort +Input [2]: [sm_ship_mode_sk#8, sm_type#9] +Arguments: [sm_ship_mode_sk#8 ASC NULLS FIRST], false, 0 + +(90) SortMergeJoin +Left keys [1]: [ws_ship_mode_sk#4] +Right keys [1]: [sm_ship_mode_sk#8] +Join type: Inner +Join condition: None + +(91) Project +Output [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, ws_web_site_sk#3, w_warehouse_name#7, sm_type#9] +Input [7]: [ws_sold_date_sk#1, ws_ship_date_sk#2, ws_web_site_sk#3, ws_ship_mode_sk#4, w_warehouse_name#7, sm_ship_mode_sk#8, sm_type#9] + +(92) Exchange +Input [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, ws_web_site_sk#3, w_warehouse_name#7, sm_type#9] +Arguments: hashpartitioning(ws_web_site_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(93) Sort +Input [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, ws_web_site_sk#3, w_warehouse_name#7, sm_type#9] +Arguments: [ws_web_site_sk#3 ASC NULLS FIRST], false, 0 + +(94) Scan parquet +Output [2]: [web_site_sk#10, web_name#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(web_site_sk)] +ReadSchema: struct + +(95) Filter +Input [2]: [web_site_sk#10, web_name#11] +Condition : isnotnull(web_site_sk#10) + +(96) Exchange +Input [2]: [web_site_sk#10, web_name#11] +Arguments: hashpartitioning(web_site_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(97) Sort +Input [2]: [web_site_sk#10, web_name#11] +Arguments: [web_site_sk#10 ASC NULLS FIRST], false, 0 + +(98) SortMergeJoin +Left keys [1]: [ws_web_site_sk#3] +Right keys [1]: [web_site_sk#10] +Join type: Inner +Join condition: None + +(99) Project +Output [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, w_warehouse_name#7, sm_type#9, web_name#11] +Input [7]: [ws_sold_date_sk#1, ws_ship_date_sk#2, ws_web_site_sk#3, w_warehouse_name#7, sm_type#9, web_site_sk#10, web_name#11] + +(100) Exchange +Input [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, w_warehouse_name#7, sm_type#9, web_name#11] +Arguments: hashpartitioning(ws_ship_date_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(101) Sort +Input [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, w_warehouse_name#7, sm_type#9, web_name#11] +Arguments: [ws_ship_date_sk#2 ASC NULLS FIRST], false, 0 + +(102) Scan parquet +Output [2]: [d_date_sk#12, d_month_seq#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)] +ReadSchema: struct + +(103) Filter +Input [2]: [d_date_sk#12, d_month_seq#13] +Condition : (((isnotnull(d_month_seq#13) AND (d_month_seq#13 >= 1200)) AND (d_month_seq#13 <= 1211)) AND isnotnull(d_date_sk#12)) + +(104) Project +Output [1]: [d_date_sk#12] +Input [2]: [d_date_sk#12, d_month_seq#13] + +(105) Exchange +Input [1]: [d_date_sk#12] +Arguments: hashpartitioning(d_date_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(106) Sort +Input [1]: [d_date_sk#12] +Arguments: [d_date_sk#12 ASC NULLS FIRST], false, 0 + +(107) SortMergeJoin +Left keys [1]: [ws_ship_date_sk#2] +Right keys [1]: [d_date_sk#12] +Join type: Inner +Join condition: None + +(108) Project +Output [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, sm_type#9, web_name#11, substr(w_warehouse_name#7, 1, 20) AS _groupingexpression#14] +Input [6]: [ws_sold_date_sk#1, ws_ship_date_sk#2, w_warehouse_name#7, sm_type#9, web_name#11, d_date_sk#12] + +(109) HashAggregate +Input [5]: [ws_sold_date_sk#1, ws_ship_date_sk#2, sm_type#9, web_name#11, _groupingexpression#14] +Keys [3]: [_groupingexpression#14, sm_type#9, web_name#11] +Functions [5]: [partial_sum(CASE WHEN ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 30) THEN 1 ELSE 0 END), partial_sum(CASE WHEN (((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 30) AND ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 60)) THEN 1 ELSE 0 END), partial_sum(CASE WHEN (((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 60) AND ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 90)) THEN 1 ELSE 0 END), partial_sum(CASE WHEN (((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 90) AND ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 120)) THEN 1 ELSE 0 END), partial_sum(CASE WHEN ((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 120) THEN 1 ELSE 0 END)] +Aggregate Attributes [5]: [sum#20, sum#21, sum#22, sum#23, sum#24] +Results [8]: [_groupingexpression#14, sm_type#9, web_name#11, sum#37, sum#38, sum#39, sum#40, sum#41] + +(110) Exchange +Input [8]: [_groupingexpression#14, sm_type#9, web_name#11, sum#37, sum#38, sum#39, sum#40, sum#41] +Arguments: hashpartitioning(_groupingexpression#14, sm_type#9, web_name#11, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(111) HashAggregate +Input [8]: [_groupingexpression#14, sm_type#9, web_name#11, sum#37, sum#38, sum#39, sum#40, sum#41] +Keys [3]: [_groupingexpression#14, sm_type#9, web_name#11] +Functions [5]: [sum(CASE WHEN ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 30) THEN 1 ELSE 0 END), sum(CASE WHEN (((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 30) AND ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 60)) THEN 1 ELSE 0 END), sum(CASE WHEN (((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 60) AND ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 90)) THEN 1 ELSE 0 END), sum(CASE WHEN (((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 90) AND ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 120)) THEN 1 ELSE 0 END), sum(CASE WHEN ((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 120) THEN 1 ELSE 0 END)] +Aggregate Attributes [5]: [sum(CASE WHEN ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 30) THEN 1 ELSE 0 END)#26, sum(CASE WHEN (((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 30) AND ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 60)) THEN 1 ELSE 0 END)#27, sum(CASE WHEN (((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 60) AND ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 90)) THEN 1 ELSE 0 END)#28, sum(CASE WHEN (((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 90) AND ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 120)) THEN 1 ELSE 0 END)#29, sum(CASE WHEN ((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 120) THEN 1 ELSE 0 END)#30] +Results [8]: [_groupingexpression#14 AS substr(w_warehouse_name, 1, 20)#31, sm_type#9, web_name#11, sum(CASE WHEN ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 30) THEN 1 ELSE 0 END)#26 AS 30 days #32, sum(CASE WHEN (((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 30) AND ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 60)) THEN 1 ELSE 0 END)#27 AS 31 - 60 days #33, sum(CASE WHEN (((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 60) AND ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 90)) THEN 1 ELSE 0 END)#28 AS 61 - 90 days #34, sum(CASE WHEN (((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 90) AND ((ws_ship_date_sk#2 - ws_sold_date_sk#1) <= 120)) THEN 1 ELSE 0 END)#29 AS 91 - 120 days #35, sum(CASE WHEN ((ws_ship_date_sk#2 - ws_sold_date_sk#1) > 120) THEN 1 ELSE 0 END)#30 AS >120 days #36] + +(112) TakeOrderedAndProject +Input [8]: [substr(w_warehouse_name, 1, 20)#31, sm_type#9, web_name#11, 30 days #32, 31 - 60 days #33, 61 - 90 days #34, 91 - 120 days #35, >120 days #36] +Arguments: X, [substr(w_warehouse_name, 1, 20)#31 ASC NULLS FIRST, sm_type#9 ASC NULLS FIRST, web_name#11 ASC NULLS FIRST], [substr(w_warehouse_name, 1, 20)#31, sm_type#9, web_name#11, 30 days #32, 31 - 60 days #33, 61 - 90 days #34, 91 - 120 days #35, >120 days #36] + +(113) AdaptiveSparkPlan +Output [8]: [substr(w_warehouse_name, 1, 20)#31, sm_type#9, web_name#11, 30 days #32, 31 - 60 days #33, 61 - 90 days #34, 91 - 120 days #35, >120 days #36] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q63.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q63.txt new file mode 100644 index 000000000..ee2729f35 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q63.txt @@ -0,0 +1,570 @@ +== Physical Plan == +AdaptiveSparkPlan (105) ++- == Final Plan == + TakeOrderedAndProject (67) + +- * Project (66) + +- * Filter (65) + +- Window (64) + +- NativeSort (63) + +- InputAdapter (62) + +- AQEShuffleRead (61) + +- ShuffleQueryStage (60), Statistics(X) + +- NativeShuffleExchange (59) + +- NativeProject (58) + +- NativeHashAggregate (57) + +- InputAdapter (56) + +- AQEShuffleRead (55) + +- ShuffleQueryStage (54), Statistics(X) + +- NativeShuffleExchange (53) + +- NativeHashAggregate (52) + +- NativeProject (51) + +- NativeProject (50) + +- NativeSortMergeJoin Inner (49) + :- NativeSort (40) + : +- InputAdapter (39) + : +- AQEShuffleRead (38) + : +- ShuffleQueryStage (37), Statistics(X) + : +- NativeShuffleExchange (36) + : +- NativeProject (35) + : +- NativeSortMergeJoin Inner (34) + : :- NativeSort (24) + : : +- InputAdapter (23) + : : +- AQEShuffleRead (22) + : : +- ShuffleQueryStage (21), Statistics(X) + : : +- NativeShuffleExchange (20) + : : +- NativeProject (19) + : : +- NativeSortMergeJoin Inner (18) + : : :- NativeSort (9) + : : : +- InputAdapter (8) + : : : +- AQEShuffleRead (7) + : : : +- ShuffleQueryStage (6), Statistics(X) + : : : +- NativeShuffleExchange (5) + : : : +- NativeProject (4) + : : : +- NativeFilter (3) + : : : +- InputAdapter (2) + : : : +- NativeParquetScan (1) + : : +- NativeSort (17) + : : +- InputAdapter (16) + : : +- AQEShuffleRead (15) + : : +- ShuffleQueryStage (14), Statistics(X) + : : +- NativeShuffleExchange (13) + : : +- NativeFilter (12) + : : +- InputAdapter (11) + : : +- NativeParquetScan (10) + : +- NativeSort (33) + : +- InputAdapter (32) + : +- AQEShuffleRead (31) + : +- ShuffleQueryStage (30), Statistics(X) + : +- NativeShuffleExchange (29) + : +- NativeProject (28) + : +- NativeFilter (27) + : +- InputAdapter (26) + : +- NativeParquetScan (25) + +- NativeSort (48) + +- InputAdapter (47) + +- AQEShuffleRead (46) + +- ShuffleQueryStage (45), Statistics(X) + +- NativeShuffleExchange (44) + +- NativeFilter (43) + +- InputAdapter (42) + +- NativeParquetScan (41) ++- == Initial Plan == + TakeOrderedAndProject (104) + +- Project (103) + +- Filter (102) + +- Window (101) + +- Sort (100) + +- Exchange (99) + +- HashAggregate (98) + +- Exchange (97) + +- HashAggregate (96) + +- Project (95) + +- SortMergeJoin Inner (94) + :- Sort (89) + : +- Exchange (88) + : +- Project (87) + : +- SortMergeJoin Inner (86) + : :- Sort (80) + : : +- Exchange (79) + : : +- Project (78) + : : +- SortMergeJoin Inner (77) + : : :- Sort (72) + : : : +- Exchange (71) + : : : +- Project (70) + : : : +- Filter (69) + : : : +- Scan parquet (68) + : : +- Sort (76) + : : +- Exchange (75) + : : +- Filter (74) + : : +- Scan parquet (73) + : +- Sort (85) + : +- Exchange (84) + : +- Project (83) + : +- Filter (82) + : +- Scan parquet (81) + +- Sort (93) + +- Exchange (92) + +- Filter (91) + +- Scan parquet (90) + + +(68) Scan parquet +Output [5]: [i_item_sk#1, i_brand#2, i_class#3, i_category#4, i_manager_id#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(And(And(In(i_category, [Books,Children,Electronics]),In(i_class, [personal,portable,refernece,self-help])),In(i_brand, [exportiunivamalg #6,scholaramalgamalg #7,scholaramalgamalg #8,scholaramalgamalg #6])),And(And(In(i_category, [Men,Music,Women]),In(i_class, [accessories,classical,fragrances,pants])),In(i_brand, [amalgimporto #9,edu packscholar #9,exportiimporto #9,importoamalg #9]))), IsNotNull(i_item_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [5]: [i_item_sk#1, i_brand#2, i_class#3, i_category#4, i_manager_id#5] +Arguments: [#1, #2, #3, #4, #5] + +(3) NativeFilter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Condition : ((((i_category#4 IN (Books,Children,Electronics) AND i_class#3 IN (personal,portable,refernece,self-help)) AND i_brand#2 IN (scholaramalgamalg #7,scholaramalgamalg #8,exportiunivamalg #6,scholaramalgamalg #6)) OR ((i_category#4 IN (Women,Music,Men) AND i_class#3 IN (accessories,classical,fragrances,pants)) AND i_brand#2 IN (amalgimporto #9,edu packscholar #9,exportiimporto #9,importoamalg #9))) AND isnotnull(i_item_sk#1)) + +(4) NativeProject +Output [2]: [i_item_sk#1, i_manager_id#5] +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] + +(5) NativeShuffleExchange +Input [2]: [i_item_sk#1, i_manager_id#5] +Arguments: hashpartitioning(i_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(6) ShuffleQueryStage +Output [2]: [i_item_sk#1, i_manager_id#5] +Arguments: X + +(7) AQEShuffleRead +Input [2]: [i_item_sk#1, i_manager_id#5] +Arguments: coalesced + +(8) InputAdapter +Input [2]: [i_item_sk#1, i_manager_id#5] + +(9) NativeSort +Input [2]: [i_item_sk#1, i_manager_id#5] +Arguments: [i_item_sk#1 ASC NULLS FIRST], false + +(73) Scan parquet +Output [4]: [ss_sold_date_sk#10, ss_item_sk#11, ss_store_sk#12, ss_sales_price#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(11) InputAdapter +Input [4]: [ss_sold_date_sk#10, ss_item_sk#11, ss_store_sk#12, ss_sales_price#13] +Arguments: [#10, #11, #12, #13] + +(12) NativeFilter +Input [4]: [#10#10, #11#11, #12#12, #13#13] +Condition : ((isnotnull(ss_item_sk#11) AND isnotnull(ss_sold_date_sk#10)) AND isnotnull(ss_store_sk#12)) + +(13) NativeShuffleExchange +Input [4]: [#10#10, #11#11, #12#12, #13#13] +Arguments: hashpartitioning(ss_item_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [4]: [#10#10, #11#11, #12#12, #13#13] +Arguments: X + +(15) AQEShuffleRead +Input [4]: [#10#10, #11#11, #12#12, #13#13] +Arguments: coalesced + +(16) InputAdapter +Input [4]: [#10#10, #11#11, #12#12, #13#13] + +(17) NativeSort +Input [4]: [#10#10, #11#11, #12#12, #13#13] +Arguments: [ss_item_sk#11 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [i_item_sk#1] +Right keys [1]: [ss_item_sk#11] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [4]: [i_manager_id#5, ss_sold_date_sk#10, ss_store_sk#12, ss_sales_price#13] +Input [6]: [i_item_sk#1, i_manager_id#5, #10#10, #11#11, #12#12, #13#13] + +(20) NativeShuffleExchange +Input [4]: [i_manager_id#5, ss_sold_date_sk#10, ss_store_sk#12, ss_sales_price#13] +Arguments: hashpartitioning(ss_sold_date_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [4]: [i_manager_id#5, ss_sold_date_sk#10, ss_store_sk#12, ss_sales_price#13] +Arguments: X + +(22) AQEShuffleRead +Input [4]: [i_manager_id#5, ss_sold_date_sk#10, ss_store_sk#12, ss_sales_price#13] +Arguments: coalesced + +(23) InputAdapter +Input [4]: [i_manager_id#5, ss_sold_date_sk#10, ss_store_sk#12, ss_sales_price#13] + +(24) NativeSort +Input [4]: [i_manager_id#5, ss_sold_date_sk#10, ss_store_sk#12, ss_sales_price#13] +Arguments: [ss_sold_date_sk#10 ASC NULLS FIRST], false + +(81) Scan parquet +Output [3]: [d_date_sk#14, d_month_seq#15, d_moy#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(d_month_seq, [1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [3]: [d_date_sk#14, d_month_seq#15, d_moy#16] +Arguments: [#14, #15, #16] + +(27) NativeFilter +Input [3]: [#14#14, #15#15, #16#16] +Condition : (d_month_seq#15 INSET 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211 AND isnotnull(d_date_sk#14)) + +(28) NativeProject +Output [2]: [d_date_sk#14, d_moy#16] +Input [3]: [#14#14, #15#15, #16#16] + +(29) NativeShuffleExchange +Input [2]: [d_date_sk#14, d_moy#16] +Arguments: hashpartitioning(d_date_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(30) ShuffleQueryStage +Output [2]: [d_date_sk#14, d_moy#16] +Arguments: X + +(31) AQEShuffleRead +Input [2]: [d_date_sk#14, d_moy#16] +Arguments: coalesced + +(32) InputAdapter +Input [2]: [d_date_sk#14, d_moy#16] + +(33) NativeSort +Input [2]: [d_date_sk#14, d_moy#16] +Arguments: [d_date_sk#14 ASC NULLS FIRST], false + +(34) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#10] +Right keys [1]: [d_date_sk#14] +Join type: Inner +Join condition: None + +(35) NativeProject +Output [4]: [i_manager_id#5, ss_store_sk#12, ss_sales_price#13, d_moy#16] +Input [6]: [i_manager_id#5, ss_sold_date_sk#10, ss_store_sk#12, ss_sales_price#13, d_date_sk#14, d_moy#16] + +(36) NativeShuffleExchange +Input [4]: [i_manager_id#5, ss_store_sk#12, ss_sales_price#13, d_moy#16] +Arguments: hashpartitioning(ss_store_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [4]: [i_manager_id#5, ss_store_sk#12, ss_sales_price#13, d_moy#16] +Arguments: X + +(38) AQEShuffleRead +Input [4]: [i_manager_id#5, ss_store_sk#12, ss_sales_price#13, d_moy#16] +Arguments: coalesced + +(39) InputAdapter +Input [4]: [i_manager_id#5, ss_store_sk#12, ss_sales_price#13, d_moy#16] + +(40) NativeSort +Input [4]: [i_manager_id#5, ss_store_sk#12, ss_sales_price#13, d_moy#16] +Arguments: [ss_store_sk#12 ASC NULLS FIRST], false + +(90) Scan parquet +Output [1]: [s_store_sk#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(42) InputAdapter +Input [1]: [s_store_sk#17] +Arguments: [#17] + +(43) NativeFilter +Input [1]: [#17#17] +Condition : isnotnull(s_store_sk#17) + +(44) NativeShuffleExchange +Input [1]: [#17#17] +Arguments: hashpartitioning(s_store_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(45) ShuffleQueryStage +Output [1]: [#17#17] +Arguments: X + +(46) AQEShuffleRead +Input [1]: [#17#17] +Arguments: coalesced + +(47) InputAdapter +Input [1]: [#17#17] + +(48) NativeSort +Input [1]: [#17#17] +Arguments: [s_store_sk#17 ASC NULLS FIRST], false + +(49) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#12] +Right keys [1]: [s_store_sk#17] +Join type: Inner +Join condition: None + +(50) NativeProject +Output [3]: [i_manager_id#5, ss_sales_price#13, d_moy#16] +Input [5]: [i_manager_id#5, ss_store_sk#12, ss_sales_price#13, d_moy#16, #17#17] + +(51) NativeProject +Output [3]: [i_manager_id#5 AS i_manager_id#5, d_moy#16 AS d_moy#16, UnscaledValue(ss_sales_price#13) AS _c2#18] +Input [3]: [i_manager_id#5, ss_sales_price#13, d_moy#16] + +(52) NativeHashAggregate +Input [3]: [i_manager_id#5, d_moy#16, _c2#18] +Keys [2]: [i_manager_id#5, d_moy#16] +Functions [1]: [partial_sum(_c2#18)] +Aggregate Attributes [1]: [sum#19] +Results [3]: [i_manager_id#5, d_moy#16, #20#20] + +(53) NativeShuffleExchange +Input [3]: [i_manager_id#5, d_moy#16, #20#20] +Arguments: hashpartitioning(i_manager_id#5, d_moy#16, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(54) ShuffleQueryStage +Output [3]: [i_manager_id#5, d_moy#16, #20#20] +Arguments: X + +(55) AQEShuffleRead +Input [3]: [i_manager_id#5, d_moy#16, #20#20] +Arguments: coalesced + +(56) InputAdapter +Input [3]: [i_manager_id#5, d_moy#16, #20#20] + +(57) NativeHashAggregate +Input [3]: [i_manager_id#5, d_moy#16, #20#20] +Keys [2]: [i_manager_id#5, d_moy#16] +Functions [1]: [sum(UnscaledValue(ss_sales_price#13))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_sales_price#13))#21] +Results [3]: [i_manager_id#5, d_moy#16, sum(UnscaledValue(ss_sales_price#13))#21] + +(58) NativeProject +Output [3]: [i_manager_id#5, MakeDecimal(sum(UnscaledValue(ss_sales_price#13))#21,17,2) AS sum_sales#22, MakeDecimal(sum(UnscaledValue(ss_sales_price#13))#21,17,2) AS _w0#23] +Input [3]: [i_manager_id#5, d_moy#16, sum(UnscaledValue(ss_sales_price#13))#21] + +(59) NativeShuffleExchange +Input [3]: [i_manager_id#5, sum_sales#22, _w0#23] +Arguments: hashpartitioning(i_manager_id#5, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(60) ShuffleQueryStage +Output [3]: [i_manager_id#5, sum_sales#22, _w0#23] +Arguments: X + +(61) AQEShuffleRead +Input [3]: [i_manager_id#5, sum_sales#22, _w0#23] +Arguments: coalesced + +(62) InputAdapter +Input [3]: [i_manager_id#5, sum_sales#22, _w0#23] + +(63) NativeSort +Input [3]: [i_manager_id#5, sum_sales#22, _w0#23] +Arguments: [i_manager_id#5 ASC NULLS FIRST], false + +(64) Window +Input [3]: [i_manager_id#5, sum_sales#22, _w0#23] +Arguments: [avg(_w0#23) windowspecdefinition(i_manager_id#5, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS avg_monthly_sales#24], [i_manager_id#5] + +(65) Filter [codegen id : 1] +Input [4]: [i_manager_id#5, sum_sales#22, _w0#23, avg_monthly_sales#24] +Condition : CASE WHEN (avg_monthly_sales#24 > 0.000000) THEN ((abs((sum_sales#22 - avg_monthly_sales#24)) / avg_monthly_sales#24) > 0.1000000000000000) ELSE false END + +(66) Project [codegen id : 1] +Output [3]: [i_manager_id#5, sum_sales#22, avg_monthly_sales#24] +Input [4]: [i_manager_id#5, sum_sales#22, _w0#23, avg_monthly_sales#24] + +(67) TakeOrderedAndProject +Input [3]: [i_manager_id#5, sum_sales#22, avg_monthly_sales#24] +Arguments: X, [i_manager_id#5 ASC NULLS FIRST, avg_monthly_sales#24 ASC NULLS FIRST, sum_sales#22 ASC NULLS FIRST], [i_manager_id#5, sum_sales#22, avg_monthly_sales#24] + +(68) Scan parquet +Output [5]: [i_item_sk#1, i_brand#2, i_class#3, i_category#4, i_manager_id#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(And(And(In(i_category, [Books,Children,Electronics]),In(i_class, [personal,portable,refernece,self-help])),In(i_brand, [exportiunivamalg #6,scholaramalgamalg #7,scholaramalgamalg #8,scholaramalgamalg #6])),And(And(In(i_category, [Men,Music,Women]),In(i_class, [accessories,classical,fragrances,pants])),In(i_brand, [amalgimporto #9,edu packscholar #9,exportiimporto #9,importoamalg #9]))), IsNotNull(i_item_sk)] +ReadSchema: struct + +(69) Filter +Input [5]: [i_item_sk#1, i_brand#2, i_class#3, i_category#4, i_manager_id#5] +Condition : ((((i_category#4 IN (Books,Children,Electronics) AND i_class#3 IN (personal,portable,refernece,self-help)) AND i_brand#2 IN (scholaramalgamalg #7,scholaramalgamalg #8,exportiunivamalg #6,scholaramalgamalg #6)) OR ((i_category#4 IN (Women,Music,Men) AND i_class#3 IN (accessories,classical,fragrances,pants)) AND i_brand#2 IN (amalgimporto #9,edu packscholar #9,exportiimporto #9,importoamalg #9))) AND isnotnull(i_item_sk#1)) + +(70) Project +Output [2]: [i_item_sk#1, i_manager_id#5] +Input [5]: [i_item_sk#1, i_brand#2, i_class#3, i_category#4, i_manager_id#5] + +(71) Exchange +Input [2]: [i_item_sk#1, i_manager_id#5] +Arguments: hashpartitioning(i_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(72) Sort +Input [2]: [i_item_sk#1, i_manager_id#5] +Arguments: [i_item_sk#1 ASC NULLS FIRST], false, 0 + +(73) Scan parquet +Output [4]: [ss_sold_date_sk#10, ss_item_sk#11, ss_store_sk#12, ss_sales_price#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(74) Filter +Input [4]: [ss_sold_date_sk#10, ss_item_sk#11, ss_store_sk#12, ss_sales_price#13] +Condition : ((isnotnull(ss_item_sk#11) AND isnotnull(ss_sold_date_sk#10)) AND isnotnull(ss_store_sk#12)) + +(75) Exchange +Input [4]: [ss_sold_date_sk#10, ss_item_sk#11, ss_store_sk#12, ss_sales_price#13] +Arguments: hashpartitioning(ss_item_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(76) Sort +Input [4]: [ss_sold_date_sk#10, ss_item_sk#11, ss_store_sk#12, ss_sales_price#13] +Arguments: [ss_item_sk#11 ASC NULLS FIRST], false, 0 + +(77) SortMergeJoin +Left keys [1]: [i_item_sk#1] +Right keys [1]: [ss_item_sk#11] +Join type: Inner +Join condition: None + +(78) Project +Output [4]: [i_manager_id#5, ss_sold_date_sk#10, ss_store_sk#12, ss_sales_price#13] +Input [6]: [i_item_sk#1, i_manager_id#5, ss_sold_date_sk#10, ss_item_sk#11, ss_store_sk#12, ss_sales_price#13] + +(79) Exchange +Input [4]: [i_manager_id#5, ss_sold_date_sk#10, ss_store_sk#12, ss_sales_price#13] +Arguments: hashpartitioning(ss_sold_date_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(80) Sort +Input [4]: [i_manager_id#5, ss_sold_date_sk#10, ss_store_sk#12, ss_sales_price#13] +Arguments: [ss_sold_date_sk#10 ASC NULLS FIRST], false, 0 + +(81) Scan parquet +Output [3]: [d_date_sk#14, d_month_seq#15, d_moy#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(d_month_seq, [1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(82) Filter +Input [3]: [d_date_sk#14, d_month_seq#15, d_moy#16] +Condition : (d_month_seq#15 INSET 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211 AND isnotnull(d_date_sk#14)) + +(83) Project +Output [2]: [d_date_sk#14, d_moy#16] +Input [3]: [d_date_sk#14, d_month_seq#15, d_moy#16] + +(84) Exchange +Input [2]: [d_date_sk#14, d_moy#16] +Arguments: hashpartitioning(d_date_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(85) Sort +Input [2]: [d_date_sk#14, d_moy#16] +Arguments: [d_date_sk#14 ASC NULLS FIRST], false, 0 + +(86) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#10] +Right keys [1]: [d_date_sk#14] +Join type: Inner +Join condition: None + +(87) Project +Output [4]: [i_manager_id#5, ss_store_sk#12, ss_sales_price#13, d_moy#16] +Input [6]: [i_manager_id#5, ss_sold_date_sk#10, ss_store_sk#12, ss_sales_price#13, d_date_sk#14, d_moy#16] + +(88) Exchange +Input [4]: [i_manager_id#5, ss_store_sk#12, ss_sales_price#13, d_moy#16] +Arguments: hashpartitioning(ss_store_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(89) Sort +Input [4]: [i_manager_id#5, ss_store_sk#12, ss_sales_price#13, d_moy#16] +Arguments: [ss_store_sk#12 ASC NULLS FIRST], false, 0 + +(90) Scan parquet +Output [1]: [s_store_sk#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(91) Filter +Input [1]: [s_store_sk#17] +Condition : isnotnull(s_store_sk#17) + +(92) Exchange +Input [1]: [s_store_sk#17] +Arguments: hashpartitioning(s_store_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(93) Sort +Input [1]: [s_store_sk#17] +Arguments: [s_store_sk#17 ASC NULLS FIRST], false, 0 + +(94) SortMergeJoin +Left keys [1]: [ss_store_sk#12] +Right keys [1]: [s_store_sk#17] +Join type: Inner +Join condition: None + +(95) Project +Output [3]: [i_manager_id#5, ss_sales_price#13, d_moy#16] +Input [5]: [i_manager_id#5, ss_store_sk#12, ss_sales_price#13, d_moy#16, s_store_sk#17] + +(96) HashAggregate +Input [3]: [i_manager_id#5, ss_sales_price#13, d_moy#16] +Keys [2]: [i_manager_id#5, d_moy#16] +Functions [1]: [partial_sum(UnscaledValue(ss_sales_price#13))] +Aggregate Attributes [1]: [sum#19] +Results [3]: [i_manager_id#5, d_moy#16, sum#25] + +(97) Exchange +Input [3]: [i_manager_id#5, d_moy#16, sum#25] +Arguments: hashpartitioning(i_manager_id#5, d_moy#16, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(98) HashAggregate +Input [3]: [i_manager_id#5, d_moy#16, sum#25] +Keys [2]: [i_manager_id#5, d_moy#16] +Functions [1]: [sum(UnscaledValue(ss_sales_price#13))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_sales_price#13))#21] +Results [3]: [i_manager_id#5, MakeDecimal(sum(UnscaledValue(ss_sales_price#13))#21,17,2) AS sum_sales#22, MakeDecimal(sum(UnscaledValue(ss_sales_price#13))#21,17,2) AS _w0#23] + +(99) Exchange +Input [3]: [i_manager_id#5, sum_sales#22, _w0#23] +Arguments: hashpartitioning(i_manager_id#5, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(100) Sort +Input [3]: [i_manager_id#5, sum_sales#22, _w0#23] +Arguments: [i_manager_id#5 ASC NULLS FIRST], false, 0 + +(101) Window +Input [3]: [i_manager_id#5, sum_sales#22, _w0#23] +Arguments: [avg(_w0#23) windowspecdefinition(i_manager_id#5, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS avg_monthly_sales#24], [i_manager_id#5] + +(102) Filter +Input [4]: [i_manager_id#5, sum_sales#22, _w0#23, avg_monthly_sales#24] +Condition : CASE WHEN (avg_monthly_sales#24 > 0.000000) THEN ((abs((sum_sales#22 - avg_monthly_sales#24)) / avg_monthly_sales#24) > 0.1000000000000000) ELSE false END + +(103) Project +Output [3]: [i_manager_id#5, sum_sales#22, avg_monthly_sales#24] +Input [4]: [i_manager_id#5, sum_sales#22, _w0#23, avg_monthly_sales#24] + +(104) TakeOrderedAndProject +Input [3]: [i_manager_id#5, sum_sales#22, avg_monthly_sales#24] +Arguments: X, [i_manager_id#5 ASC NULLS FIRST, avg_monthly_sales#24 ASC NULLS FIRST, sum_sales#22 ASC NULLS FIRST], [i_manager_id#5, sum_sales#22, avg_monthly_sales#24] + +(105) AdaptiveSparkPlan +Output [3]: [i_manager_id#5, sum_sales#22, avg_monthly_sales#24] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q64.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q64.txt new file mode 100644 index 000000000..939461e22 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q64.txt @@ -0,0 +1,4311 @@ +== Physical Plan == +AdaptiveSparkPlan (811) ++- == Final Plan == + NativeSort (496) + +- InputAdapter (495) + +- AQEShuffleRead (494) + +- ShuffleQueryStage (493), Statistics(X) + +- NativeShuffleExchange (492) + +- ConvertToNative (491) + +- * Project (490) + +- * SortMergeJoin Inner (489) + :- NativeSort (280) + : +- InputAdapter (279) + : +- AQEShuffleRead (278) + : +- ShuffleQueryStage (277), Statistics(X) + : +- NativeShuffleExchange (276) + : +- NativeProject (275) + : +- NativeHashAggregate (274) + : +- NativeHashAggregate (273) + : +- NativeProject (272) + : +- NativeProject (271) + : +- NativeSortMergeJoin Inner (270) + : :- NativeSort (260) + : : +- InputAdapter (259) + : : +- AQEShuffleRead (258) + : : +- ShuffleQueryStage (257), Statistics(X) + : : +- NativeShuffleExchange (256) + : : +- NativeProject (255) + : : +- NativeSortMergeJoin Inner (254) + : : :- NativeSort (247) + : : : +- InputAdapter (246) + : : : +- AQEShuffleRead (245) + : : : +- ShuffleQueryStage (244), Statistics(X) + : : : +- NativeShuffleExchange (243) + : : : +- NativeProject (242) + : : : +- NativeSortMergeJoin Inner (241) + : : : :- NativeSort (232) + : : : : +- InputAdapter (231) + : : : : +- AQEShuffleRead (230) + : : : : +- ShuffleQueryStage (229), Statistics(X) + : : : : +- NativeShuffleExchange (228) + : : : : +- NativeProject (227) + : : : : +- NativeSortMergeJoin Inner (226) + : : : : :- NativeSort (219) + : : : : : +- InputAdapter (218) + : : : : : +- AQEShuffleRead (217) + : : : : : +- ShuffleQueryStage (216), Statistics(X) + : : : : : +- NativeShuffleExchange (215) + : : : : : +- NativeProject (214) + : : : : : +- NativeSortMergeJoin Inner (213) + : : : : : :- NativeSort (204) + : : : : : : +- InputAdapter (203) + : : : : : : +- AQEShuffleRead (202) + : : : : : : +- ShuffleQueryStage (201), Statistics(X) + : : : : : : +- NativeShuffleExchange (200) + : : : : : : +- NativeProject (199) + : : : : : : +- NativeSortMergeJoin Inner (198) + : : : : : : :- NativeSort (191) + : : : : : : : +- InputAdapter (190) + : : : : : : : +- AQEShuffleRead (189) + : : : : : : : +- ShuffleQueryStage (188), Statistics(X) + : : : : : : : +- NativeShuffleExchange (187) + : : : : : : : +- NativeProject (186) + : : : : : : : +- NativeSortMergeJoin Inner (185) + : : : : : : : :- NativeSort (176) + : : : : : : : : +- InputAdapter (175) + : : : : : : : : +- AQEShuffleRead (174) + : : : : : : : : +- ShuffleQueryStage (173), Statistics(X) + : : : : : : : : +- NativeShuffleExchange (172) + : : : : : : : : +- NativeProject (171) + : : : : : : : : +- NativeSortMergeJoin Inner (170) + : : : : : : : : :- NativeSort (161) + : : : : : : : : : +- InputAdapter (160) + : : : : : : : : : +- AQEShuffleRead (159) + : : : : : : : : : +- ShuffleQueryStage (158), Statistics(X) + : : : : : : : : : +- NativeShuffleExchange (157) + : : : : : : : : : +- ConvertToNative (156) + : : : : : : : : : +- * Project (155) + : : : : : : : : : +- * SortMergeJoin Inner (154) + : : : : : : : : : :- NativeSort (147) + : : : : : : : : : : +- InputAdapter (146) + : : : : : : : : : : +- AQEShuffleRead (145) + : : : : : : : : : : +- ShuffleQueryStage (144), Statistics(X) + : : : : : : : : : : +- NativeShuffleExchange (143) + : : : : : : : : : : +- NativeProject (142) + : : : : : : : : : : +- NativeSortMergeJoin Inner (141) + : : : : : : : : : : :- NativeSort (132) + : : : : : : : : : : : +- InputAdapter (131) + : : : : : : : : : : : +- AQEShuffleRead (130) + : : : : : : : : : : : +- ShuffleQueryStage (129), Statistics(X) + : : : : : : : : : : : +- NativeShuffleExchange (128) + : : : : : : : : : : : +- NativeProject (127) + : : : : : : : : : : : +- NativeSortMergeJoin Inner (126) + : : : : : : : : : : : :- NativeSort (119) + : : : : : : : : : : : : +- InputAdapter (118) + : : : : : : : : : : : : +- AQEShuffleRead (117) + : : : : : : : : : : : : +- ShuffleQueryStage (116), Statistics(X) + : : : : : : : : : : : : +- NativeShuffleExchange (115) + : : : : : : : : : : : : +- NativeProject (114) + : : : : : : : : : : : : +- NativeSortMergeJoin Inner (113) + : : : : : : : : : : : : :- NativeSort (104) + : : : : : : : : : : : : : +- InputAdapter (103) + : : : : : : : : : : : : : +- AQEShuffleRead (102) + : : : : : : : : : : : : : +- ShuffleQueryStage (101), Statistics(X) + : : : : : : : : : : : : : +- NativeShuffleExchange (100) + : : : : : : : : : : : : : +- NativeProject (99) + : : : : : : : : : : : : : +- NativeSortMergeJoin Inner (98) + : : : : : : : : : : : : : :- NativeSort (89) + : : : : : : : : : : : : : : +- InputAdapter (88) + : : : : : : : : : : : : : : +- AQEShuffleRead (87) + : : : : : : : : : : : : : : +- ShuffleQueryStage (86), Statistics(X) + : : : : : : : : : : : : : : +- NativeShuffleExchange (85) + : : : : : : : : : : : : : : +- NativeProject (84) + : : : : : : : : : : : : : : +- NativeSortMergeJoin Inner (83) + : : : : : : : : : : : : : : :- NativeSort (74) + : : : : : : : : : : : : : : : +- InputAdapter (73) + : : : : : : : : : : : : : : : +- AQEShuffleRead (72) + : : : : : : : : : : : : : : : +- ShuffleQueryStage (71), Statistics(X) + : : : : : : : : : : : : : : : +- NativeShuffleExchange (70) + : : : : : : : : : : : : : : : +- NativeProject (69) + : : : : : : : : : : : : : : : +- NativeSortMergeJoin Inner (68) + : : : : : : : : : : : : : : : :- NativeSort (59) + : : : : : : : : : : : : : : : : +- InputAdapter (58) + : : : : : : : : : : : : : : : : +- AQEShuffleRead (57) + : : : : : : : : : : : : : : : : +- ShuffleQueryStage (56), Statistics(X) + : : : : : : : : : : : : : : : : +- NativeShuffleExchange (55) + : : : : : : : : : : : : : : : : +- NativeProject (54) + : : : : : : : : : : : : : : : : +- NativeSortMergeJoin Inner (53) + : : : : : : : : : : : : : : : : :- NativeSort (23) + : : : : : : : : : : : : : : : : : +- InputAdapter (22) + : : : : : : : : : : : : : : : : : +- AQEShuffleRead (21) + : : : : : : : : : : : : : : : : : +- ShuffleQueryStage (20), Statistics(X) + : : : : : : : : : : : : : : : : : +- NativeShuffleExchange (19) + : : : : : : : : : : : : : : : : : +- NativeProject (18) + : : : : : : : : : : : : : : : : : +- NativeSortMergeJoin Inner (17) + : : : : : : : : : : : : : : : : : :- NativeSort (8) + : : : : : : : : : : : : : : : : : : +- InputAdapter (7) + : : : : : : : : : : : : : : : : : : +- AQEShuffleRead (6) + : : : : : : : : : : : : : : : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : : : : : : : : : : : : : : : +- NativeShuffleExchange (4) + : : : : : : : : : : : : : : : : : : +- NativeFilter (3) + : : : : : : : : : : : : : : : : : : +- InputAdapter (2) + : : : : : : : : : : : : : : : : : : +- NativeParquetScan (1) + : : : : : : : : : : : : : : : : : +- NativeSort (16) + : : : : : : : : : : : : : : : : : +- InputAdapter (15) + : : : : : : : : : : : : : : : : : +- AQEShuffleRead (14) + : : : : : : : : : : : : : : : : : +- ShuffleQueryStage (13), Statistics(X) + : : : : : : : : : : : : : : : : : +- NativeShuffleExchange (12) + : : : : : : : : : : : : : : : : : +- NativeFilter (11) + : : : : : : : : : : : : : : : : : +- InputAdapter (10) + : : : : : : : : : : : : : : : : : +- NativeParquetScan (9) + : : : : : : : : : : : : : : : : +- NativeSort (52) + : : : : : : : : : : : : : : : : +- NativeProject (51) + : : : : : : : : : : : : : : : : +- NativeFilter (50) + : : : : : : : : : : : : : : : : +- NativeProject (49) + : : : : : : : : : : : : : : : : +- NativeHashAggregate (48) + : : : : : : : : : : : : : : : : +- InputAdapter (47) + : : : : : : : : : : : : : : : : +- AQEShuffleRead (46) + : : : : : : : : : : : : : : : : +- ShuffleQueryStage (45), Statistics(X) + : : : : : : : : : : : : : : : : +- NativeShuffleExchange (44) + : : : : : : : : : : : : : : : : +- NativeHashAggregate (43) + : : : : : : : : : : : : : : : : +- NativeProject (42) + : : : : : : : : : : : : : : : : +- NativeProject (41) + : : : : : : : : : : : : : : : : +- NativeSortMergeJoin Inner (40) + : : : : : : : : : : : : : : : : :- NativeSort (31) + : : : : : : : : : : : : : : : : : +- InputAdapter (30) + : : : : : : : : : : : : : : : : : +- AQEShuffleRead (29) + : : : : : : : : : : : : : : : : : +- ShuffleQueryStage (28), Statistics(X) + : : : : : : : : : : : : : : : : : +- NativeShuffleExchange (27) + : : : : : : : : : : : : : : : : : +- NativeFilter (26) + : : : : : : : : : : : : : : : : : +- InputAdapter (25) + : : : : : : : : : : : : : : : : : +- NativeParquetScan (24) + : : : : : : : : : : : : : : : : +- NativeSort (39) + : : : : : : : : : : : : : : : : +- InputAdapter (38) + : : : : : : : : : : : : : : : : +- AQEShuffleRead (37) + : : : : : : : : : : : : : : : : +- ShuffleQueryStage (36), Statistics(X) + : : : : : : : : : : : : : : : : +- NativeShuffleExchange (35) + : : : : : : : : : : : : : : : : +- NativeFilter (34) + : : : : : : : : : : : : : : : : +- InputAdapter (33) + : : : : : : : : : : : : : : : : +- NativeParquetScan (32) + : : : : : : : : : : : : : : : +- NativeSort (67) + : : : : : : : : : : : : : : : +- InputAdapter (66) + : : : : : : : : : : : : : : : +- AQEShuffleRead (65) + : : : : : : : : : : : : : : : +- ShuffleQueryStage (64), Statistics(X) + : : : : : : : : : : : : : : : +- NativeShuffleExchange (63) + : : : : : : : : : : : : : : : +- NativeFilter (62) + : : : : : : : : : : : : : : : +- InputAdapter (61) + : : : : : : : : : : : : : : : +- NativeParquetScan (60) + : : : : : : : : : : : : : : +- NativeSort (82) + : : : : : : : : : : : : : : +- InputAdapter (81) + : : : : : : : : : : : : : : +- AQEShuffleRead (80) + : : : : : : : : : : : : : : +- ShuffleQueryStage (79), Statistics(X) + : : : : : : : : : : : : : : +- NativeShuffleExchange (78) + : : : : : : : : : : : : : : +- NativeFilter (77) + : : : : : : : : : : : : : : +- InputAdapter (76) + : : : : : : : : : : : : : : +- NativeParquetScan (75) + : : : : : : : : : : : : : +- NativeSort (97) + : : : : : : : : : : : : : +- InputAdapter (96) + : : : : : : : : : : : : : +- AQEShuffleRead (95) + : : : : : : : : : : : : : +- ShuffleQueryStage (94), Statistics(X) + : : : : : : : : : : : : : +- NativeShuffleExchange (93) + : : : : : : : : : : : : : +- NativeFilter (92) + : : : : : : : : : : : : : +- InputAdapter (91) + : : : : : : : : : : : : : +- NativeParquetScan (90) + : : : : : : : : : : : : +- NativeSort (112) + : : : : : : : : : : : : +- InputAdapter (111) + : : : : : : : : : : : : +- AQEShuffleRead (110) + : : : : : : : : : : : : +- ShuffleQueryStage (109), Statistics(X) + : : : : : : : : : : : : +- NativeShuffleExchange (108) + : : : : : : : : : : : : +- NativeFilter (107) + : : : : : : : : : : : : +- InputAdapter (106) + : : : : : : : : : : : : +- NativeParquetScan (105) + : : : : : : : : : : : +- NativeSort (125) + : : : : : : : : : : : +- InputAdapter (124) + : : : : : : : : : : : +- InputAdapter (123) + : : : : : : : : : : : +- AQEShuffleRead (122) + : : : : : : : : : : : +- ShuffleQueryStage (121), Statistics(X) + : : : : : : : : : : : +- ReusedExchange (120) + : : : : : : : : : : +- NativeSort (140) + : : : : : : : : : : +- InputAdapter (139) + : : : : : : : : : : +- AQEShuffleRead (138) + : : : : : : : : : : +- ShuffleQueryStage (137), Statistics(X) + : : : : : : : : : : +- NativeShuffleExchange (136) + : : : : : : : : : : +- NativeFilter (135) + : : : : : : : : : : +- InputAdapter (134) + : : : : : : : : : : +- NativeParquetScan (133) + : : : : : : : : : +- NativeSort (153) + : : : : : : : : : +- InputAdapter (152) + : : : : : : : : : +- InputAdapter (151) + : : : : : : : : : +- AQEShuffleRead (150) + : : : : : : : : : +- ShuffleQueryStage (149), Statistics(X) + : : : : : : : : : +- ReusedExchange (148) + : : : : : : : : +- NativeSort (169) + : : : : : : : : +- InputAdapter (168) + : : : : : : : : +- AQEShuffleRead (167) + : : : : : : : : +- ShuffleQueryStage (166), Statistics(X) + : : : : : : : : +- NativeShuffleExchange (165) + : : : : : : : : +- NativeFilter (164) + : : : : : : : : +- InputAdapter (163) + : : : : : : : : +- NativeParquetScan (162) + : : : : : : : +- NativeSort (184) + : : : : : : : +- InputAdapter (183) + : : : : : : : +- AQEShuffleRead (182) + : : : : : : : +- ShuffleQueryStage (181), Statistics(X) + : : : : : : : +- NativeShuffleExchange (180) + : : : : : : : +- NativeFilter (179) + : : : : : : : +- InputAdapter (178) + : : : : : : : +- NativeParquetScan (177) + : : : : : : +- NativeSort (197) + : : : : : : +- InputAdapter (196) + : : : : : : +- InputAdapter (195) + : : : : : : +- AQEShuffleRead (194) + : : : : : : +- ShuffleQueryStage (193), Statistics(X) + : : : : : : +- ReusedExchange (192) + : : : : : +- NativeSort (212) + : : : : : +- InputAdapter (211) + : : : : : +- AQEShuffleRead (210) + : : : : : +- ShuffleQueryStage (209), Statistics(X) + : : : : : +- NativeShuffleExchange (208) + : : : : : +- NativeFilter (207) + : : : : : +- InputAdapter (206) + : : : : : +- NativeParquetScan (205) + : : : : +- NativeSort (225) + : : : : +- InputAdapter (224) + : : : : +- InputAdapter (223) + : : : : +- AQEShuffleRead (222) + : : : : +- ShuffleQueryStage (221), Statistics(X) + : : : : +- ReusedExchange (220) + : : : +- NativeSort (240) + : : : +- InputAdapter (239) + : : : +- AQEShuffleRead (238) + : : : +- ShuffleQueryStage (237), Statistics(X) + : : : +- NativeShuffleExchange (236) + : : : +- NativeFilter (235) + : : : +- InputAdapter (234) + : : : +- NativeParquetScan (233) + : : +- NativeSort (253) + : : +- InputAdapter (252) + : : +- InputAdapter (251) + : : +- AQEShuffleRead (250) + : : +- ShuffleQueryStage (249), Statistics(X) + : : +- ReusedExchange (248) + : +- NativeSort (269) + : +- InputAdapter (268) + : +- AQEShuffleRead (267) + : +- ShuffleQueryStage (266), Statistics(X) + : +- NativeShuffleExchange (265) + : +- NativeProject (264) + : +- NativeFilter (263) + : +- InputAdapter (262) + : +- NativeParquetScan (261) + +- NativeSort (488) + +- InputAdapter (487) + +- AQEShuffleRead (486) + +- ShuffleQueryStage (485), Statistics(X) + +- NativeShuffleExchange (484) + +- NativeProject (483) + +- NativeHashAggregate (482) + +- NativeHashAggregate (481) + +- NativeProject (480) + +- NativeProject (479) + +- NativeSortMergeJoin Inner (478) + :- NativeSort (471) + : +- InputAdapter (470) + : +- AQEShuffleRead (469) + : +- ShuffleQueryStage (468), Statistics(X) + : +- NativeShuffleExchange (467) + : +- NativeProject (466) + : +- NativeSortMergeJoin Inner (465) + : :- NativeSort (458) + : : +- InputAdapter (457) + : : +- AQEShuffleRead (456) + : : +- ShuffleQueryStage (455), Statistics(X) + : : +- NativeShuffleExchange (454) + : : +- NativeProject (453) + : : +- NativeSortMergeJoin Inner (452) + : : :- NativeSort (445) + : : : +- InputAdapter (444) + : : : +- AQEShuffleRead (443) + : : : +- ShuffleQueryStage (442), Statistics(X) + : : : +- NativeShuffleExchange (441) + : : : +- NativeProject (440) + : : : +- NativeSortMergeJoin Inner (439) + : : : :- NativeSort (432) + : : : : +- InputAdapter (431) + : : : : +- AQEShuffleRead (430) + : : : : +- ShuffleQueryStage (429), Statistics(X) + : : : : +- NativeShuffleExchange (428) + : : : : +- NativeProject (427) + : : : : +- NativeSortMergeJoin Inner (426) + : : : : :- NativeSort (419) + : : : : : +- InputAdapter (418) + : : : : : +- AQEShuffleRead (417) + : : : : : +- ShuffleQueryStage (416), Statistics(X) + : : : : : +- NativeShuffleExchange (415) + : : : : : +- NativeProject (414) + : : : : : +- NativeSortMergeJoin Inner (413) + : : : : : :- NativeSort (406) + : : : : : : +- InputAdapter (405) + : : : : : : +- AQEShuffleRead (404) + : : : : : : +- ShuffleQueryStage (403), Statistics(X) + : : : : : : +- NativeShuffleExchange (402) + : : : : : : +- NativeProject (401) + : : : : : : +- NativeSortMergeJoin Inner (400) + : : : : : : :- NativeSort (393) + : : : : : : : +- InputAdapter (392) + : : : : : : : +- AQEShuffleRead (391) + : : : : : : : +- ShuffleQueryStage (390), Statistics(X) + : : : : : : : +- NativeShuffleExchange (389) + : : : : : : : +- NativeProject (388) + : : : : : : : +- NativeSortMergeJoin Inner (387) + : : : : : : : :- NativeSort (380) + : : : : : : : : +- InputAdapter (379) + : : : : : : : : +- AQEShuffleRead (378) + : : : : : : : : +- ShuffleQueryStage (377), Statistics(X) + : : : : : : : : +- NativeShuffleExchange (376) + : : : : : : : : +- ConvertToNative (375) + : : : : : : : : +- * Project (374) + : : : : : : : : +- * SortMergeJoin Inner (373) + : : : : : : : : :- NativeSort (366) + : : : : : : : : : +- InputAdapter (365) + : : : : : : : : : +- AQEShuffleRead (364) + : : : : : : : : : +- ShuffleQueryStage (363), Statistics(X) + : : : : : : : : : +- NativeShuffleExchange (362) + : : : : : : : : : +- NativeProject (361) + : : : : : : : : : +- NativeSortMergeJoin Inner (360) + : : : : : : : : : :- NativeSort (353) + : : : : : : : : : : +- InputAdapter (352) + : : : : : : : : : : +- AQEShuffleRead (351) + : : : : : : : : : : +- ShuffleQueryStage (350), Statistics(X) + : : : : : : : : : : +- NativeShuffleExchange (349) + : : : : : : : : : : +- NativeProject (348) + : : : : : : : : : : +- NativeSortMergeJoin Inner (347) + : : : : : : : : : : :- NativeSort (340) + : : : : : : : : : : : +- InputAdapter (339) + : : : : : : : : : : : +- AQEShuffleRead (338) + : : : : : : : : : : : +- ShuffleQueryStage (337), Statistics(X) + : : : : : : : : : : : +- NativeShuffleExchange (336) + : : : : : : : : : : : +- NativeProject (335) + : : : : : : : : : : : +- NativeSortMergeJoin Inner (334) + : : : : : : : : : : : :- NativeSort (327) + : : : : : : : : : : : : +- InputAdapter (326) + : : : : : : : : : : : : +- AQEShuffleRead (325) + : : : : : : : : : : : : +- ShuffleQueryStage (324), Statistics(X) + : : : : : : : : : : : : +- NativeShuffleExchange (323) + : : : : : : : : : : : : +- NativeProject (322) + : : : : : : : : : : : : +- NativeSortMergeJoin Inner (321) + : : : : : : : : : : : : :- NativeSort (314) + : : : : : : : : : : : : : +- InputAdapter (313) + : : : : : : : : : : : : : +- AQEShuffleRead (312) + : : : : : : : : : : : : : +- ShuffleQueryStage (311), Statistics(X) + : : : : : : : : : : : : : +- NativeShuffleExchange (310) + : : : : : : : : : : : : : +- NativeProject (309) + : : : : : : : : : : : : : +- NativeSortMergeJoin Inner (308) + : : : : : : : : : : : : : :- NativeSort (301) + : : : : : : : : : : : : : : +- InputAdapter (300) + : : : : : : : : : : : : : : +- AQEShuffleRead (299) + : : : : : : : : : : : : : : +- ShuffleQueryStage (298), Statistics(X) + : : : : : : : : : : : : : : +- NativeShuffleExchange (297) + : : : : : : : : : : : : : : +- NativeProject (296) + : : : : : : : : : : : : : : +- NativeSortMergeJoin Inner (295) + : : : : : : : : : : : : : : :- NativeSort (286) + : : : : : : : : : : : : : : : +- InputAdapter (285) + : : : : : : : : : : : : : : : +- InputAdapter (284) + : : : : : : : : : : : : : : : +- AQEShuffleRead (283) + : : : : : : : : : : : : : : : +- ShuffleQueryStage (282), Statistics(X) + : : : : : : : : : : : : : : : +- ReusedExchange (281) + : : : : : : : : : : : : : : +- NativeSort (294) + : : : : : : : : : : : : : : +- InputAdapter (293) + : : : : : : : : : : : : : : +- AQEShuffleRead (292) + : : : : : : : : : : : : : : +- ShuffleQueryStage (291), Statistics(X) + : : : : : : : : : : : : : : +- NativeShuffleExchange (290) + : : : : : : : : : : : : : : +- NativeFilter (289) + : : : : : : : : : : : : : : +- InputAdapter (288) + : : : : : : : : : : : : : : +- NativeParquetScan (287) + : : : : : : : : : : : : : +- NativeSort (307) + : : : : : : : : : : : : : +- InputAdapter (306) + : : : : : : : : : : : : : +- InputAdapter (305) + : : : : : : : : : : : : : +- AQEShuffleRead (304) + : : : : : : : : : : : : : +- ShuffleQueryStage (303), Statistics(X) + : : : : : : : : : : : : : +- ReusedExchange (302) + : : : : : : : : : : : : +- NativeSort (320) + : : : : : : : : : : : : +- InputAdapter (319) + : : : : : : : : : : : : +- InputAdapter (318) + : : : : : : : : : : : : +- AQEShuffleRead (317) + : : : : : : : : : : : : +- ShuffleQueryStage (316), Statistics(X) + : : : : : : : : : : : : +- ReusedExchange (315) + : : : : : : : : : : : +- NativeSort (333) + : : : : : : : : : : : +- InputAdapter (332) + : : : : : : : : : : : +- InputAdapter (331) + : : : : : : : : : : : +- AQEShuffleRead (330) + : : : : : : : : : : : +- ShuffleQueryStage (329), Statistics(X) + : : : : : : : : : : : +- ReusedExchange (328) + : : : : : : : : : : +- NativeSort (346) + : : : : : : : : : : +- InputAdapter (345) + : : : : : : : : : : +- InputAdapter (344) + : : : : : : : : : : +- AQEShuffleRead (343) + : : : : : : : : : : +- ShuffleQueryStage (342), Statistics(X) + : : : : : : : : : : +- ReusedExchange (341) + : : : : : : : : : +- NativeSort (359) + : : : : : : : : : +- InputAdapter (358) + : : : : : : : : : +- InputAdapter (357) + : : : : : : : : : +- AQEShuffleRead (356) + : : : : : : : : : +- ShuffleQueryStage (355), Statistics(X) + : : : : : : : : : +- ReusedExchange (354) + : : : : : : : : +- NativeSort (372) + : : : : : : : : +- InputAdapter (371) + : : : : : : : : +- InputAdapter (370) + : : : : : : : : +- AQEShuffleRead (369) + : : : : : : : : +- ShuffleQueryStage (368), Statistics(X) + : : : : : : : : +- ReusedExchange (367) + : : : : : : : +- NativeSort (386) + : : : : : : : +- InputAdapter (385) + : : : : : : : +- InputAdapter (384) + : : : : : : : +- AQEShuffleRead (383) + : : : : : : : +- ShuffleQueryStage (382), Statistics(X) + : : : : : : : +- ReusedExchange (381) + : : : : : : +- NativeSort (399) + : : : : : : +- InputAdapter (398) + : : : : : : +- InputAdapter (397) + : : : : : : +- AQEShuffleRead (396) + : : : : : : +- ShuffleQueryStage (395), Statistics(X) + : : : : : : +- ReusedExchange (394) + : : : : : +- NativeSort (412) + : : : : : +- InputAdapter (411) + : : : : : +- InputAdapter (410) + : : : : : +- AQEShuffleRead (409) + : : : : : +- ShuffleQueryStage (408), Statistics(X) + : : : : : +- ReusedExchange (407) + : : : : +- NativeSort (425) + : : : : +- InputAdapter (424) + : : : : +- InputAdapter (423) + : : : : +- AQEShuffleRead (422) + : : : : +- ShuffleQueryStage (421), Statistics(X) + : : : : +- ReusedExchange (420) + : : : +- NativeSort (438) + : : : +- InputAdapter (437) + : : : +- InputAdapter (436) + : : : +- AQEShuffleRead (435) + : : : +- ShuffleQueryStage (434), Statistics(X) + : : : +- ReusedExchange (433) + : : +- NativeSort (451) + : : +- InputAdapter (450) + : : +- InputAdapter (449) + : : +- AQEShuffleRead (448) + : : +- ShuffleQueryStage (447), Statistics(X) + : : +- ReusedExchange (446) + : +- NativeSort (464) + : +- InputAdapter (463) + : +- InputAdapter (462) + : +- AQEShuffleRead (461) + : +- ShuffleQueryStage (460), Statistics(X) + : +- ReusedExchange (459) + +- NativeSort (477) + +- InputAdapter (476) + +- InputAdapter (475) + +- AQEShuffleRead (474) + +- ShuffleQueryStage (473), Statistics(X) + +- ReusedExchange (472) ++- == Initial Plan == + Sort (810) + +- Exchange (809) + +- Project (808) + +- SortMergeJoin Inner (807) + :- Sort (651) + : +- Exchange (650) + : +- HashAggregate (649) + : +- HashAggregate (648) + : +- Project (647) + : +- SortMergeJoin Inner (646) + : :- Sort (640) + : : +- Exchange (639) + : : +- Project (638) + : : +- SortMergeJoin Inner (637) + : : :- Sort (632) + : : : +- Exchange (631) + : : : +- Project (630) + : : : +- SortMergeJoin Inner (629) + : : : :- Sort (624) + : : : : +- Exchange (623) + : : : : +- Project (622) + : : : : +- SortMergeJoin Inner (621) + : : : : :- Sort (616) + : : : : : +- Exchange (615) + : : : : : +- Project (614) + : : : : : +- SortMergeJoin Inner (613) + : : : : : :- Sort (608) + : : : : : : +- Exchange (607) + : : : : : : +- Project (606) + : : : : : : +- SortMergeJoin Inner (605) + : : : : : : :- Sort (600) + : : : : : : : +- Exchange (599) + : : : : : : : +- Project (598) + : : : : : : : +- SortMergeJoin Inner (597) + : : : : : : : :- Sort (592) + : : : : : : : : +- Exchange (591) + : : : : : : : : +- Project (590) + : : : : : : : : +- SortMergeJoin Inner (589) + : : : : : : : : :- Sort (584) + : : : : : : : : : +- Exchange (583) + : : : : : : : : : +- Project (582) + : : : : : : : : : +- SortMergeJoin Inner (581) + : : : : : : : : : :- Sort (576) + : : : : : : : : : : +- Exchange (575) + : : : : : : : : : : +- Project (574) + : : : : : : : : : : +- SortMergeJoin Inner (573) + : : : : : : : : : : :- Sort (568) + : : : : : : : : : : : +- Exchange (567) + : : : : : : : : : : : +- Project (566) + : : : : : : : : : : : +- SortMergeJoin Inner (565) + : : : : : : : : : : : :- Sort (560) + : : : : : : : : : : : : +- Exchange (559) + : : : : : : : : : : : : +- Project (558) + : : : : : : : : : : : : +- SortMergeJoin Inner (557) + : : : : : : : : : : : : :- Sort (552) + : : : : : : : : : : : : : +- Exchange (551) + : : : : : : : : : : : : : +- Project (550) + : : : : : : : : : : : : : +- SortMergeJoin Inner (549) + : : : : : : : : : : : : : :- Sort (544) + : : : : : : : : : : : : : : +- Exchange (543) + : : : : : : : : : : : : : : +- Project (542) + : : : : : : : : : : : : : : +- SortMergeJoin Inner (541) + : : : : : : : : : : : : : : :- Sort (536) + : : : : : : : : : : : : : : : +- Exchange (535) + : : : : : : : : : : : : : : : +- Project (534) + : : : : : : : : : : : : : : : +- SortMergeJoin Inner (533) + : : : : : : : : : : : : : : : :- Sort (528) + : : : : : : : : : : : : : : : : +- Exchange (527) + : : : : : : : : : : : : : : : : +- Project (526) + : : : : : : : : : : : : : : : : +- SortMergeJoin Inner (525) + : : : : : : : : : : : : : : : : :- Sort (508) + : : : : : : : : : : : : : : : : : +- Exchange (507) + : : : : : : : : : : : : : : : : : +- Project (506) + : : : : : : : : : : : : : : : : : +- SortMergeJoin Inner (505) + : : : : : : : : : : : : : : : : : :- Sort (500) + : : : : : : : : : : : : : : : : : : +- Exchange (499) + : : : : : : : : : : : : : : : : : : +- Filter (498) + : : : : : : : : : : : : : : : : : : +- Scan parquet (497) + : : : : : : : : : : : : : : : : : +- Sort (504) + : : : : : : : : : : : : : : : : : +- Exchange (503) + : : : : : : : : : : : : : : : : : +- Filter (502) + : : : : : : : : : : : : : : : : : +- Scan parquet (501) + : : : : : : : : : : : : : : : : +- Sort (524) + : : : : : : : : : : : : : : : : +- Project (523) + : : : : : : : : : : : : : : : : +- Filter (522) + : : : : : : : : : : : : : : : : +- HashAggregate (521) + : : : : : : : : : : : : : : : : +- Exchange (520) + : : : : : : : : : : : : : : : : +- HashAggregate (519) + : : : : : : : : : : : : : : : : +- Project (518) + : : : : : : : : : : : : : : : : +- SortMergeJoin Inner (517) + : : : : : : : : : : : : : : : : :- Sort (512) + : : : : : : : : : : : : : : : : : +- Exchange (511) + : : : : : : : : : : : : : : : : : +- Filter (510) + : : : : : : : : : : : : : : : : : +- Scan parquet (509) + : : : : : : : : : : : : : : : : +- Sort (516) + : : : : : : : : : : : : : : : : +- Exchange (515) + : : : : : : : : : : : : : : : : +- Filter (514) + : : : : : : : : : : : : : : : : +- Scan parquet (513) + : : : : : : : : : : : : : : : +- Sort (532) + : : : : : : : : : : : : : : : +- Exchange (531) + : : : : : : : : : : : : : : : +- Filter (530) + : : : : : : : : : : : : : : : +- Scan parquet (529) + : : : : : : : : : : : : : : +- Sort (540) + : : : : : : : : : : : : : : +- Exchange (539) + : : : : : : : : : : : : : : +- Filter (538) + : : : : : : : : : : : : : : +- Scan parquet (537) + : : : : : : : : : : : : : +- Sort (548) + : : : : : : : : : : : : : +- Exchange (547) + : : : : : : : : : : : : : +- Filter (546) + : : : : : : : : : : : : : +- Scan parquet (545) + : : : : : : : : : : : : +- Sort (556) + : : : : : : : : : : : : +- Exchange (555) + : : : : : : : : : : : : +- Filter (554) + : : : : : : : : : : : : +- Scan parquet (553) + : : : : : : : : : : : +- Sort (564) + : : : : : : : : : : : +- Exchange (563) + : : : : : : : : : : : +- Filter (562) + : : : : : : : : : : : +- Scan parquet (561) + : : : : : : : : : : +- Sort (572) + : : : : : : : : : : +- Exchange (571) + : : : : : : : : : : +- Filter (570) + : : : : : : : : : : +- Scan parquet (569) + : : : : : : : : : +- Sort (580) + : : : : : : : : : +- Exchange (579) + : : : : : : : : : +- Filter (578) + : : : : : : : : : +- Scan parquet (577) + : : : : : : : : +- Sort (588) + : : : : : : : : +- Exchange (587) + : : : : : : : : +- Filter (586) + : : : : : : : : +- Scan parquet (585) + : : : : : : : +- Sort (596) + : : : : : : : +- Exchange (595) + : : : : : : : +- Filter (594) + : : : : : : : +- Scan parquet (593) + : : : : : : +- Sort (604) + : : : : : : +- Exchange (603) + : : : : : : +- Filter (602) + : : : : : : +- Scan parquet (601) + : : : : : +- Sort (612) + : : : : : +- Exchange (611) + : : : : : +- Filter (610) + : : : : : +- Scan parquet (609) + : : : : +- Sort (620) + : : : : +- Exchange (619) + : : : : +- Filter (618) + : : : : +- Scan parquet (617) + : : : +- Sort (628) + : : : +- Exchange (627) + : : : +- Filter (626) + : : : +- Scan parquet (625) + : : +- Sort (636) + : : +- Exchange (635) + : : +- Filter (634) + : : +- Scan parquet (633) + : +- Sort (645) + : +- Exchange (644) + : +- Project (643) + : +- Filter (642) + : +- Scan parquet (641) + +- Sort (806) + +- Exchange (805) + +- HashAggregate (804) + +- HashAggregate (803) + +- Project (802) + +- SortMergeJoin Inner (801) + :- Sort (795) + : +- Exchange (794) + : +- Project (793) + : +- SortMergeJoin Inner (792) + : :- Sort (787) + : : +- Exchange (786) + : : +- Project (785) + : : +- SortMergeJoin Inner (784) + : : :- Sort (779) + : : : +- Exchange (778) + : : : +- Project (777) + : : : +- SortMergeJoin Inner (776) + : : : :- Sort (771) + : : : : +- Exchange (770) + : : : : +- Project (769) + : : : : +- SortMergeJoin Inner (768) + : : : : :- Sort (763) + : : : : : +- Exchange (762) + : : : : : +- Project (761) + : : : : : +- SortMergeJoin Inner (760) + : : : : : :- Sort (755) + : : : : : : +- Exchange (754) + : : : : : : +- Project (753) + : : : : : : +- SortMergeJoin Inner (752) + : : : : : : :- Sort (747) + : : : : : : : +- Exchange (746) + : : : : : : : +- Project (745) + : : : : : : : +- SortMergeJoin Inner (744) + : : : : : : : :- Sort (739) + : : : : : : : : +- Exchange (738) + : : : : : : : : +- Project (737) + : : : : : : : : +- SortMergeJoin Inner (736) + : : : : : : : : :- Sort (731) + : : : : : : : : : +- Exchange (730) + : : : : : : : : : +- Project (729) + : : : : : : : : : +- SortMergeJoin Inner (728) + : : : : : : : : : :- Sort (723) + : : : : : : : : : : +- Exchange (722) + : : : : : : : : : : +- Project (721) + : : : : : : : : : : +- SortMergeJoin Inner (720) + : : : : : : : : : : :- Sort (715) + : : : : : : : : : : : +- Exchange (714) + : : : : : : : : : : : +- Project (713) + : : : : : : : : : : : +- SortMergeJoin Inner (712) + : : : : : : : : : : : :- Sort (707) + : : : : : : : : : : : : +- Exchange (706) + : : : : : : : : : : : : +- Project (705) + : : : : : : : : : : : : +- SortMergeJoin Inner (704) + : : : : : : : : : : : : :- Sort (699) + : : : : : : : : : : : : : +- Exchange (698) + : : : : : : : : : : : : : +- Project (697) + : : : : : : : : : : : : : +- SortMergeJoin Inner (696) + : : : : : : : : : : : : : :- Sort (691) + : : : : : : : : : : : : : : +- Exchange (690) + : : : : : : : : : : : : : : +- Project (689) + : : : : : : : : : : : : : : +- SortMergeJoin Inner (688) + : : : : : : : : : : : : : : :- Sort (683) + : : : : : : : : : : : : : : : +- Exchange (682) + : : : : : : : : : : : : : : : +- Project (681) + : : : : : : : : : : : : : : : +- SortMergeJoin Inner (680) + : : : : : : : : : : : : : : : :- Sort (663) + : : : : : : : : : : : : : : : : +- Exchange (662) + : : : : : : : : : : : : : : : : +- Project (661) + : : : : : : : : : : : : : : : : +- SortMergeJoin Inner (660) + : : : : : : : : : : : : : : : : :- Sort (655) + : : : : : : : : : : : : : : : : : +- Exchange (654) + : : : : : : : : : : : : : : : : : +- Filter (653) + : : : : : : : : : : : : : : : : : +- Scan parquet (652) + : : : : : : : : : : : : : : : : +- Sort (659) + : : : : : : : : : : : : : : : : +- Exchange (658) + : : : : : : : : : : : : : : : : +- Filter (657) + : : : : : : : : : : : : : : : : +- Scan parquet (656) + : : : : : : : : : : : : : : : +- Sort (679) + : : : : : : : : : : : : : : : +- Project (678) + : : : : : : : : : : : : : : : +- Filter (677) + : : : : : : : : : : : : : : : +- HashAggregate (676) + : : : : : : : : : : : : : : : +- Exchange (675) + : : : : : : : : : : : : : : : +- HashAggregate (674) + : : : : : : : : : : : : : : : +- Project (673) + : : : : : : : : : : : : : : : +- SortMergeJoin Inner (672) + : : : : : : : : : : : : : : : :- Sort (667) + : : : : : : : : : : : : : : : : +- Exchange (666) + : : : : : : : : : : : : : : : : +- Filter (665) + : : : : : : : : : : : : : : : : +- Scan parquet (664) + : : : : : : : : : : : : : : : +- Sort (671) + : : : : : : : : : : : : : : : +- Exchange (670) + : : : : : : : : : : : : : : : +- Filter (669) + : : : : : : : : : : : : : : : +- Scan parquet (668) + : : : : : : : : : : : : : : +- Sort (687) + : : : : : : : : : : : : : : +- Exchange (686) + : : : : : : : : : : : : : : +- Filter (685) + : : : : : : : : : : : : : : +- Scan parquet (684) + : : : : : : : : : : : : : +- Sort (695) + : : : : : : : : : : : : : +- Exchange (694) + : : : : : : : : : : : : : +- Filter (693) + : : : : : : : : : : : : : +- Scan parquet (692) + : : : : : : : : : : : : +- Sort (703) + : : : : : : : : : : : : +- Exchange (702) + : : : : : : : : : : : : +- Filter (701) + : : : : : : : : : : : : +- Scan parquet (700) + : : : : : : : : : : : +- Sort (711) + : : : : : : : : : : : +- Exchange (710) + : : : : : : : : : : : +- Filter (709) + : : : : : : : : : : : +- Scan parquet (708) + : : : : : : : : : : +- Sort (719) + : : : : : : : : : : +- Exchange (718) + : : : : : : : : : : +- Filter (717) + : : : : : : : : : : +- Scan parquet (716) + : : : : : : : : : +- Sort (727) + : : : : : : : : : +- Exchange (726) + : : : : : : : : : +- Filter (725) + : : : : : : : : : +- Scan parquet (724) + : : : : : : : : +- Sort (735) + : : : : : : : : +- Exchange (734) + : : : : : : : : +- Filter (733) + : : : : : : : : +- Scan parquet (732) + : : : : : : : +- Sort (743) + : : : : : : : +- Exchange (742) + : : : : : : : +- Filter (741) + : : : : : : : +- Scan parquet (740) + : : : : : : +- Sort (751) + : : : : : : +- Exchange (750) + : : : : : : +- Filter (749) + : : : : : : +- Scan parquet (748) + : : : : : +- Sort (759) + : : : : : +- Exchange (758) + : : : : : +- Filter (757) + : : : : : +- Scan parquet (756) + : : : : +- Sort (767) + : : : : +- Exchange (766) + : : : : +- Filter (765) + : : : : +- Scan parquet (764) + : : : +- Sort (775) + : : : +- Exchange (774) + : : : +- Filter (773) + : : : +- Scan parquet (772) + : : +- Sort (783) + : : +- Exchange (782) + : : +- Filter (781) + : : +- Scan parquet (780) + : +- Sort (791) + : +- Exchange (790) + : +- Filter (789) + : +- Scan parquet (788) + +- Sort (800) + +- Exchange (799) + +- Project (798) + +- Filter (797) + +- Scan parquet (796) + + +(497) Scan parquet +Output [12]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_ticket_number#9, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_ticket_number), IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk), IsNotNull(ss_customer_sk), IsNotNull(ss_cdemo_sk), IsNotNull(ss_promo_sk), IsNotNull(ss_hdemo_sk), IsNotNull(ss_addr_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [12]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_ticket_number#9, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12] +Arguments: [#1, #2, #3, #4, #5, #6, #7, #8, #9, #10, #11, #12] + +(3) NativeFilter +Input [12]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9, #10#10, #11#11, #12#12] +Condition : ((((((((isnotnull(ss_item_sk#2) AND isnotnull(ss_ticket_number#9)) AND isnotnull(ss_sold_date_sk#1)) AND isnotnull(ss_store_sk#7)) AND isnotnull(ss_customer_sk#3)) AND isnotnull(ss_cdemo_sk#4)) AND isnotnull(ss_promo_sk#8)) AND isnotnull(ss_hdemo_sk#5)) AND isnotnull(ss_addr_sk#6)) + +(4) NativeShuffleExchange +Input [12]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9, #10#10, #11#11, #12#12] +Arguments: hashpartitioning(ss_item_sk#2, ss_ticket_number#9, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [12]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9, #10#10, #11#11, #12#12] +Arguments: X + +(6) AQEShuffleRead +Input [12]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9, #10#10, #11#11, #12#12] +Arguments: coalesced + +(7) InputAdapter +Input [12]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9, #10#10, #11#11, #12#12] + +(8) NativeSort +Input [12]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9, #10#10, #11#11, #12#12] +Arguments: [ss_item_sk#2 ASC NULLS FIRST, ss_ticket_number#9 ASC NULLS FIRST], false + +(501) Scan parquet +Output [2]: [sr_item_sk#13, sr_ticket_number#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_item_sk), IsNotNull(sr_ticket_number)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [sr_item_sk#13, sr_ticket_number#14] +Arguments: [#13, #14] + +(11) NativeFilter +Input [2]: [#13#13, #14#14] +Condition : (isnotnull(sr_item_sk#13) AND isnotnull(sr_ticket_number#14)) + +(12) NativeShuffleExchange +Input [2]: [#13#13, #14#14] +Arguments: hashpartitioning(sr_item_sk#13, sr_ticket_number#14, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [2]: [#13#13, #14#14] +Arguments: X + +(14) AQEShuffleRead +Input [2]: [#13#13, #14#14] +Arguments: coalesced + +(15) InputAdapter +Input [2]: [#13#13, #14#14] + +(16) NativeSort +Input [2]: [#13#13, #14#14] +Arguments: [sr_item_sk#13 ASC NULLS FIRST, sr_ticket_number#14 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [2]: [ss_item_sk#2, ss_ticket_number#9] +Right keys [2]: [sr_item_sk#13, sr_ticket_number#14] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [11]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12] +Input [14]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9, #10#10, #11#11, #12#12, #13#13, #14#14] + +(19) NativeShuffleExchange +Input [11]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [11]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12] +Arguments: X + +(21) AQEShuffleRead +Input [11]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12] +Arguments: coalesced + +(22) InputAdapter +Input [11]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12] + +(23) NativeSort +Input [11]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false + +(509) Scan parquet +Output [3]: [cs_item_sk#15, cs_order_number#16, cs_ext_list_price#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_order_number)] +ReadSchema: struct + +(25) InputAdapter +Input [3]: [cs_item_sk#15, cs_order_number#16, cs_ext_list_price#17] +Arguments: [#15, #16, #17] + +(26) NativeFilter +Input [3]: [#15#15, #16#16, #17#17] +Condition : (isnotnull(cs_item_sk#15) AND isnotnull(cs_order_number#16)) + +(27) NativeShuffleExchange +Input [3]: [#15#15, #16#16, #17#17] +Arguments: hashpartitioning(cs_item_sk#15, cs_order_number#16, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(28) ShuffleQueryStage +Output [3]: [#15#15, #16#16, #17#17] +Arguments: X + +(29) AQEShuffleRead +Input [3]: [#15#15, #16#16, #17#17] +Arguments: coalesced + +(30) InputAdapter +Input [3]: [#15#15, #16#16, #17#17] + +(31) NativeSort +Input [3]: [#15#15, #16#16, #17#17] +Arguments: [cs_item_sk#15 ASC NULLS FIRST, cs_order_number#16 ASC NULLS FIRST], false + +(513) Scan parquet +Output [5]: [cr_item_sk#18, cr_order_number#19, cr_refunded_cash#20, cr_reversed_charge#21, cr_store_credit#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cr_item_sk), IsNotNull(cr_order_number)] +ReadSchema: struct + +(33) InputAdapter +Input [5]: [cr_item_sk#18, cr_order_number#19, cr_refunded_cash#20, cr_reversed_charge#21, cr_store_credit#22] +Arguments: [#18, #19, #20, #21, #22] + +(34) NativeFilter +Input [5]: [#18#18, #19#19, #20#20, #21#21, #22#22] +Condition : (isnotnull(cr_item_sk#18) AND isnotnull(cr_order_number#19)) + +(35) NativeShuffleExchange +Input [5]: [#18#18, #19#19, #20#20, #21#21, #22#22] +Arguments: hashpartitioning(cr_item_sk#18, cr_order_number#19, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(36) ShuffleQueryStage +Output [5]: [#18#18, #19#19, #20#20, #21#21, #22#22] +Arguments: X + +(37) AQEShuffleRead +Input [5]: [#18#18, #19#19, #20#20, #21#21, #22#22] +Arguments: coalesced + +(38) InputAdapter +Input [5]: [#18#18, #19#19, #20#20, #21#21, #22#22] + +(39) NativeSort +Input [5]: [#18#18, #19#19, #20#20, #21#21, #22#22] +Arguments: [cr_item_sk#18 ASC NULLS FIRST, cr_order_number#19 ASC NULLS FIRST], false + +(40) NativeSortMergeJoin +Left keys [2]: [cs_item_sk#15, cs_order_number#16] +Right keys [2]: [cr_item_sk#18, cr_order_number#19] +Join type: Inner +Join condition: None + +(41) NativeProject +Output [5]: [cs_item_sk#15, cs_ext_list_price#17, cr_refunded_cash#20, cr_reversed_charge#21, cr_store_credit#22] +Input [8]: [#15#15, #16#16, #17#17, #18#18, #19#19, #20#20, #21#21, #22#22] + +(42) NativeProject +Output [3]: [cs_item_sk#15 AS cs_item_sk#15, UnscaledValue(cs_ext_list_price#17) AS _c1#23, ((cr_refunded_cash#20 + cr_reversed_charge#21) + cr_store_credit#22) AS _c2#24] +Input [5]: [cs_item_sk#15, cs_ext_list_price#17, cr_refunded_cash#20, cr_reversed_charge#21, cr_store_credit#22] + +(43) NativeHashAggregate +Input [3]: [cs_item_sk#15, _c1#23, _c2#24] +Keys [1]: [cs_item_sk#15] +Functions [2]: [partial_sum(_c1#23), partial_sum(_c2#24)] +Aggregate Attributes [3]: [sum#25, sum#26, isEmpty#27] +Results [2]: [cs_item_sk#15, #28#28] + +(44) NativeShuffleExchange +Input [2]: [cs_item_sk#15, #28#28] +Arguments: hashpartitioning(cs_item_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(45) ShuffleQueryStage +Output [2]: [cs_item_sk#15, #28#28] +Arguments: X + +(46) AQEShuffleRead +Input [2]: [cs_item_sk#15, #28#28] +Arguments: coalesced + +(47) InputAdapter +Input [2]: [cs_item_sk#15, #28#28] + +(48) NativeHashAggregate +Input [2]: [cs_item_sk#15, #28#28] +Keys [1]: [cs_item_sk#15] +Functions [2]: [sum(UnscaledValue(cs_ext_list_price#17)), sum(((cr_refunded_cash#20 + cr_reversed_charge#21) + cr_store_credit#22))] +Aggregate Attributes [2]: [sum(UnscaledValue(cs_ext_list_price#17))#29, sum(((cr_refunded_cash#20 + cr_reversed_charge#21) + cr_store_credit#22))#30] +Results [3]: [cs_item_sk#15, sum(UnscaledValue(cs_ext_list_price#17))#29, sum(((cr_refunded_cash#20 + cr_reversed_charge#21) + cr_store_credit#22))#30] + +(49) NativeProject +Output [3]: [cs_item_sk#15, MakeDecimal(sum(UnscaledValue(cs_ext_list_price#17))#29,17,2) AS sale#31, sum(((cr_refunded_cash#20 + cr_reversed_charge#21) + cr_store_credit#22))#30 AS refund#32] +Input [3]: [cs_item_sk#15, sum(UnscaledValue(cs_ext_list_price#17))#29, sum(((cr_refunded_cash#20 + cr_reversed_charge#21) + cr_store_credit#22))#30] + +(50) NativeFilter +Input [3]: [cs_item_sk#15, sale#31, refund#32] +Condition : ((isnotnull(sale#31) AND isnotnull(refund#32)) AND (cast(sale#31 as decimal(21,2)) > (2 * refund#32))) + +(51) NativeProject +Output [1]: [cs_item_sk#15] +Input [3]: [cs_item_sk#15, sale#31, refund#32] + +(52) NativeSort +Input [1]: [cs_item_sk#15] +Arguments: [cs_item_sk#15 ASC NULLS FIRST], false + +(53) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [cs_item_sk#15] +Join type: Inner +Join condition: None + +(54) NativeProject +Output [11]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12] +Input [12]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, cs_item_sk#15] + +(55) NativeShuffleExchange +Input [11]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(56) ShuffleQueryStage +Output [11]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12] +Arguments: X + +(57) AQEShuffleRead +Input [11]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12] +Arguments: coalesced + +(58) InputAdapter +Input [11]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12] + +(59) NativeSort +Input [11]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(529) Scan parquet +Output [2]: [d_date_sk#33, d_year#34] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,1999), IsNotNull(d_date_sk)] +ReadSchema: struct + +(61) InputAdapter +Input [2]: [d_date_sk#33, d_year#34] +Arguments: [#33, #34] + +(62) NativeFilter +Input [2]: [#33#33, #34#34] +Condition : ((isnotnull(d_year#34) AND (d_year#34 = 1999)) AND isnotnull(d_date_sk#33)) + +(63) NativeShuffleExchange +Input [2]: [#33#33, #34#34] +Arguments: hashpartitioning(d_date_sk#33, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(64) ShuffleQueryStage +Output [2]: [#33#33, #34#34] +Arguments: X + +(65) AQEShuffleRead +Input [2]: [#33#33, #34#34] +Arguments: coalesced + +(66) InputAdapter +Input [2]: [#33#33, #34#34] + +(67) NativeSort +Input [2]: [#33#33, #34#34] +Arguments: [d_date_sk#33 ASC NULLS FIRST], false + +(68) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#33] +Join type: Inner +Join condition: None + +(69) NativeProject +Output [11]: [ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34] +Input [13]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, #33#33, #34#34] + +(70) NativeShuffleExchange +Input [11]: [ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34] +Arguments: hashpartitioning(ss_store_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(71) ShuffleQueryStage +Output [11]: [ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34] +Arguments: X + +(72) AQEShuffleRead +Input [11]: [ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34] +Arguments: coalesced + +(73) InputAdapter +Input [11]: [ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34] + +(74) NativeSort +Input [11]: [ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34] +Arguments: [ss_store_sk#7 ASC NULLS FIRST], false + +(537) Scan parquet +Output [3]: [s_store_sk#35, s_store_name#36, s_zip#37] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk), IsNotNull(s_store_name), IsNotNull(s_zip)] +ReadSchema: struct + +(76) InputAdapter +Input [3]: [s_store_sk#35, s_store_name#36, s_zip#37] +Arguments: [#35, #36, #37] + +(77) NativeFilter +Input [3]: [#35#35, #36#36, #37#37] +Condition : ((isnotnull(s_store_sk#35) AND isnotnull(s_store_name#36)) AND isnotnull(s_zip#37)) + +(78) NativeShuffleExchange +Input [3]: [#35#35, #36#36, #37#37] +Arguments: hashpartitioning(s_store_sk#35, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(79) ShuffleQueryStage +Output [3]: [#35#35, #36#36, #37#37] +Arguments: X + +(80) AQEShuffleRead +Input [3]: [#35#35, #36#36, #37#37] +Arguments: coalesced + +(81) InputAdapter +Input [3]: [#35#35, #36#36, #37#37] + +(82) NativeSort +Input [3]: [#35#35, #36#36, #37#37] +Arguments: [s_store_sk#35 ASC NULLS FIRST], false + +(83) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#7] +Right keys [1]: [s_store_sk#35] +Join type: Inner +Join condition: None + +(84) NativeProject +Output [12]: [ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37] +Input [14]: [ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, #35#35, #36#36, #37#37] + +(85) NativeShuffleExchange +Input [12]: [ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37] +Arguments: hashpartitioning(ss_customer_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(86) ShuffleQueryStage +Output [12]: [ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37] +Arguments: X + +(87) AQEShuffleRead +Input [12]: [ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37] +Arguments: coalesced + +(88) InputAdapter +Input [12]: [ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37] + +(89) NativeSort +Input [12]: [ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37] +Arguments: [ss_customer_sk#3 ASC NULLS FIRST], false + +(545) Scan parquet +Output [6]: [c_customer_sk#38, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, c_first_shipto_date_sk#42, c_first_sales_date_sk#43] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_first_sales_date_sk), IsNotNull(c_first_shipto_date_sk), IsNotNull(c_current_cdemo_sk), IsNotNull(c_current_hdemo_sk), IsNotNull(c_current_addr_sk)] +ReadSchema: struct + +(91) InputAdapter +Input [6]: [c_customer_sk#38, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, c_first_shipto_date_sk#42, c_first_sales_date_sk#43] +Arguments: [#38, #39, #40, #41, #42, #43] + +(92) NativeFilter +Input [6]: [#38#38, #39#39, #40#40, #41#41, #42#42, #43#43] +Condition : (((((isnotnull(c_customer_sk#38) AND isnotnull(c_first_sales_date_sk#43)) AND isnotnull(c_first_shipto_date_sk#42)) AND isnotnull(c_current_cdemo_sk#39)) AND isnotnull(c_current_hdemo_sk#40)) AND isnotnull(c_current_addr_sk#41)) + +(93) NativeShuffleExchange +Input [6]: [#38#38, #39#39, #40#40, #41#41, #42#42, #43#43] +Arguments: hashpartitioning(c_customer_sk#38, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(94) ShuffleQueryStage +Output [6]: [#38#38, #39#39, #40#40, #41#41, #42#42, #43#43] +Arguments: X + +(95) AQEShuffleRead +Input [6]: [#38#38, #39#39, #40#40, #41#41, #42#42, #43#43] +Arguments: coalesced + +(96) InputAdapter +Input [6]: [#38#38, #39#39, #40#40, #41#41, #42#42, #43#43] + +(97) NativeSort +Input [6]: [#38#38, #39#39, #40#40, #41#41, #42#42, #43#43] +Arguments: [c_customer_sk#38 ASC NULLS FIRST], false + +(98) NativeSortMergeJoin +Left keys [1]: [ss_customer_sk#3] +Right keys [1]: [c_customer_sk#38] +Join type: Inner +Join condition: None + +(99) NativeProject +Output [16]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, c_first_shipto_date_sk#42, c_first_sales_date_sk#43] +Input [18]: [ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, #38#38, #39#39, #40#40, #41#41, #42#42, #43#43] + +(100) NativeShuffleExchange +Input [16]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, c_first_shipto_date_sk#42, c_first_sales_date_sk#43] +Arguments: hashpartitioning(c_first_sales_date_sk#43, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(101) ShuffleQueryStage +Output [16]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, c_first_shipto_date_sk#42, c_first_sales_date_sk#43] +Arguments: X + +(102) AQEShuffleRead +Input [16]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, c_first_shipto_date_sk#42, c_first_sales_date_sk#43] +Arguments: coalesced + +(103) InputAdapter +Input [16]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, c_first_shipto_date_sk#42, c_first_sales_date_sk#43] + +(104) NativeSort +Input [16]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, c_first_shipto_date_sk#42, c_first_sales_date_sk#43] +Arguments: [c_first_sales_date_sk#43 ASC NULLS FIRST], false + +(553) Scan parquet +Output [2]: [d_date_sk#44, d_year#45] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date_sk)] +ReadSchema: struct + +(106) InputAdapter +Input [2]: [d_date_sk#44, d_year#45] +Arguments: [#44, #45] + +(107) NativeFilter +Input [2]: [#44#44, #45#45] +Condition : isnotnull(d_date_sk#44) + +(108) NativeShuffleExchange +Input [2]: [#44#44, #45#45] +Arguments: hashpartitioning(d_date_sk#44, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(109) ShuffleQueryStage +Output [2]: [#44#44, #45#45] +Arguments: X + +(110) AQEShuffleRead +Input [2]: [#44#44, #45#45] +Arguments: coalesced + +(111) InputAdapter +Input [2]: [#44#44, #45#45] + +(112) NativeSort +Input [2]: [#44#44, #45#45] +Arguments: [d_date_sk#44 ASC NULLS FIRST], false + +(113) NativeSortMergeJoin +Left keys [1]: [c_first_sales_date_sk#43] +Right keys [1]: [d_date_sk#44] +Join type: Inner +Join condition: None + +(114) NativeProject +Output [16]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, c_first_shipto_date_sk#42, d_year#45] +Input [18]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, c_first_shipto_date_sk#42, c_first_sales_date_sk#43, #44#44, #45#45] + +(115) NativeShuffleExchange +Input [16]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, c_first_shipto_date_sk#42, d_year#45] +Arguments: hashpartitioning(c_first_shipto_date_sk#42, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(116) ShuffleQueryStage +Output [16]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, c_first_shipto_date_sk#42, d_year#45] +Arguments: X + +(117) AQEShuffleRead +Input [16]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, c_first_shipto_date_sk#42, d_year#45] +Arguments: coalesced + +(118) InputAdapter +Input [16]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, c_first_shipto_date_sk#42, d_year#45] + +(119) NativeSort +Input [16]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, c_first_shipto_date_sk#42, d_year#45] +Arguments: [c_first_shipto_date_sk#42 ASC NULLS FIRST], false + +(120) ReusedExchange [Reuses operator id: 108] +Output [2]: [d_date_sk#46, d_year#47] + +(121) ShuffleQueryStage +Output [2]: [d_date_sk#46, d_year#47] +Arguments: X + +(122) AQEShuffleRead +Input [2]: [d_date_sk#46, d_year#47] +Arguments: coalesced + +(123) InputAdapter +Input [2]: [d_date_sk#46, d_year#47] +Arguments: [#46, #47] + +(124) InputAdapter +Input [2]: [#46#46, #47#47] + +(125) NativeSort +Input [2]: [#46#46, #47#47] +Arguments: [d_date_sk#46 ASC NULLS FIRST], false + +(126) NativeSortMergeJoin +Left keys [1]: [c_first_shipto_date_sk#42] +Right keys [1]: [d_date_sk#46] +Join type: Inner +Join condition: None + +(127) NativeProject +Output [16]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47] +Input [18]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, c_first_shipto_date_sk#42, d_year#45, #46#46, #47#47] + +(128) NativeShuffleExchange +Input [16]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47] +Arguments: hashpartitioning(ss_cdemo_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(129) ShuffleQueryStage +Output [16]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47] +Arguments: X + +(130) AQEShuffleRead +Input [16]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47] +Arguments: coalesced + +(131) InputAdapter +Input [16]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47] + +(132) NativeSort +Input [16]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47] +Arguments: [ss_cdemo_sk#4 ASC NULLS FIRST], false + +(569) Scan parquet +Output [2]: [cd_demo_sk#48, cd_marital_status#49] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_demo_sk), IsNotNull(cd_marital_status)] +ReadSchema: struct + +(134) InputAdapter +Input [2]: [cd_demo_sk#48, cd_marital_status#49] +Arguments: [#48, #49] + +(135) NativeFilter +Input [2]: [#48#48, #49#49] +Condition : (isnotnull(cd_demo_sk#48) AND isnotnull(cd_marital_status#49)) + +(136) NativeShuffleExchange +Input [2]: [#48#48, #49#49] +Arguments: hashpartitioning(cd_demo_sk#48, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(137) ShuffleQueryStage +Output [2]: [#48#48, #49#49] +Arguments: X + +(138) AQEShuffleRead +Input [2]: [#48#48, #49#49] +Arguments: coalesced + +(139) InputAdapter +Input [2]: [#48#48, #49#49] + +(140) NativeSort +Input [2]: [#48#48, #49#49] +Arguments: [cd_demo_sk#48 ASC NULLS FIRST], false + +(141) NativeSortMergeJoin +Left keys [1]: [ss_cdemo_sk#4] +Right keys [1]: [cd_demo_sk#48] +Join type: Inner +Join condition: None + +(142) NativeProject +Output [16]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47, cd_marital_status#49] +Input [18]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47, #48#48, #49#49] + +(143) NativeShuffleExchange +Input [16]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47, cd_marital_status#49] +Arguments: hashpartitioning(c_current_cdemo_sk#39, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(144) ShuffleQueryStage +Output [16]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47, cd_marital_status#49] +Arguments: X + +(145) AQEShuffleRead +Input [16]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47, cd_marital_status#49] +Arguments: coalesced + +(146) InputAdapter +Input [16]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47, cd_marital_status#49] + +(147) NativeSort +Input [16]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47, cd_marital_status#49] +Arguments: [c_current_cdemo_sk#39 ASC NULLS FIRST], false + +(148) ReusedExchange [Reuses operator id: 136] +Output [2]: [cd_demo_sk#50, cd_marital_status#51] + +(149) ShuffleQueryStage +Output [2]: [cd_demo_sk#50, cd_marital_status#51] +Arguments: X + +(150) AQEShuffleRead +Input [2]: [cd_demo_sk#50, cd_marital_status#51] +Arguments: coalesced + +(151) InputAdapter +Input [2]: [cd_demo_sk#50, cd_marital_status#51] +Arguments: [#50, #51] + +(152) InputAdapter +Input [2]: [#50#50, #51#51] + +(153) NativeSort +Input [2]: [#50#50, #51#51] +Arguments: [cd_demo_sk#50 ASC NULLS FIRST], false + +(154) SortMergeJoin [codegen id : 1] +Left keys [1]: [c_current_cdemo_sk#39] +Right keys [1]: [cd_demo_sk#50] +Join type: Inner +Join condition: NOT (cd_marital_status#49 = cd_marital_status#51) + +(155) Project [codegen id : 1] +Output [14]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47] +Input [18]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47, cd_marital_status#49, #50#50, #51#51] + +(156) ConvertToNative +Input [14]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47] + +(157) NativeShuffleExchange +Input [14]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47] +Arguments: hashpartitioning(ss_promo_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(158) ShuffleQueryStage +Output [14]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47] +Arguments: X + +(159) AQEShuffleRead +Input [14]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47] +Arguments: coalesced + +(160) InputAdapter +Input [14]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47] + +(161) NativeSort +Input [14]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47] +Arguments: [ss_promo_sk#8 ASC NULLS FIRST], false + +(585) Scan parquet +Output [1]: [p_promo_sk#52] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(p_promo_sk)] +ReadSchema: struct + +(163) InputAdapter +Input [1]: [p_promo_sk#52] +Arguments: [#52] + +(164) NativeFilter +Input [1]: [#52#52] +Condition : isnotnull(p_promo_sk#52) + +(165) NativeShuffleExchange +Input [1]: [#52#52] +Arguments: hashpartitioning(p_promo_sk#52, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(166) ShuffleQueryStage +Output [1]: [#52#52] +Arguments: X + +(167) AQEShuffleRead +Input [1]: [#52#52] +Arguments: coalesced + +(168) InputAdapter +Input [1]: [#52#52] + +(169) NativeSort +Input [1]: [#52#52] +Arguments: [p_promo_sk#52 ASC NULLS FIRST], false + +(170) NativeSortMergeJoin +Left keys [1]: [ss_promo_sk#8] +Right keys [1]: [p_promo_sk#52] +Join type: Inner +Join condition: None + +(171) NativeProject +Output [13]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47] +Input [15]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47, #52#52] + +(172) NativeShuffleExchange +Input [13]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47] +Arguments: hashpartitioning(ss_hdemo_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(173) ShuffleQueryStage +Output [13]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47] +Arguments: X + +(174) AQEShuffleRead +Input [13]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47] +Arguments: coalesced + +(175) InputAdapter +Input [13]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47] + +(176) NativeSort +Input [13]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47] +Arguments: [ss_hdemo_sk#5 ASC NULLS FIRST], false + +(593) Scan parquet +Output [2]: [hd_demo_sk#53, hd_income_band_sk#54] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(hd_demo_sk), IsNotNull(hd_income_band_sk)] +ReadSchema: struct + +(178) InputAdapter +Input [2]: [hd_demo_sk#53, hd_income_band_sk#54] +Arguments: [#53, #54] + +(179) NativeFilter +Input [2]: [#53#53, #54#54] +Condition : (isnotnull(hd_demo_sk#53) AND isnotnull(hd_income_band_sk#54)) + +(180) NativeShuffleExchange +Input [2]: [#53#53, #54#54] +Arguments: hashpartitioning(hd_demo_sk#53, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(181) ShuffleQueryStage +Output [2]: [#53#53, #54#54] +Arguments: X + +(182) AQEShuffleRead +Input [2]: [#53#53, #54#54] +Arguments: coalesced + +(183) InputAdapter +Input [2]: [#53#53, #54#54] + +(184) NativeSort +Input [2]: [#53#53, #54#54] +Arguments: [hd_demo_sk#53 ASC NULLS FIRST], false + +(185) NativeSortMergeJoin +Left keys [1]: [ss_hdemo_sk#5] +Right keys [1]: [hd_demo_sk#53] +Join type: Inner +Join condition: None + +(186) NativeProject +Output [13]: [ss_item_sk#2, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54] +Input [15]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47, #53#53, #54#54] + +(187) NativeShuffleExchange +Input [13]: [ss_item_sk#2, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54] +Arguments: hashpartitioning(c_current_hdemo_sk#40, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(188) ShuffleQueryStage +Output [13]: [ss_item_sk#2, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54] +Arguments: X + +(189) AQEShuffleRead +Input [13]: [ss_item_sk#2, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54] +Arguments: coalesced + +(190) InputAdapter +Input [13]: [ss_item_sk#2, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54] + +(191) NativeSort +Input [13]: [ss_item_sk#2, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54] +Arguments: [c_current_hdemo_sk#40 ASC NULLS FIRST], false + +(192) ReusedExchange [Reuses operator id: 180] +Output [2]: [hd_demo_sk#55, hd_income_band_sk#56] + +(193) ShuffleQueryStage +Output [2]: [hd_demo_sk#55, hd_income_band_sk#56] +Arguments: X + +(194) AQEShuffleRead +Input [2]: [hd_demo_sk#55, hd_income_band_sk#56] +Arguments: coalesced + +(195) InputAdapter +Input [2]: [hd_demo_sk#55, hd_income_band_sk#56] +Arguments: [#55, #56] + +(196) InputAdapter +Input [2]: [#55#55, #56#56] + +(197) NativeSort +Input [2]: [#55#55, #56#56] +Arguments: [hd_demo_sk#55 ASC NULLS FIRST], false + +(198) NativeSortMergeJoin +Left keys [1]: [c_current_hdemo_sk#40] +Right keys [1]: [hd_demo_sk#55] +Join type: Inner +Join condition: None + +(199) NativeProject +Output [13]: [ss_item_sk#2, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56] +Input [15]: [ss_item_sk#2, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54, #55#55, #56#56] + +(200) NativeShuffleExchange +Input [13]: [ss_item_sk#2, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56] +Arguments: hashpartitioning(ss_addr_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(201) ShuffleQueryStage +Output [13]: [ss_item_sk#2, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56] +Arguments: X + +(202) AQEShuffleRead +Input [13]: [ss_item_sk#2, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56] +Arguments: coalesced + +(203) InputAdapter +Input [13]: [ss_item_sk#2, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56] + +(204) NativeSort +Input [13]: [ss_item_sk#2, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56] +Arguments: [ss_addr_sk#6 ASC NULLS FIRST], false + +(609) Scan parquet +Output [5]: [ca_address_sk#57, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk)] +ReadSchema: struct + +(206) InputAdapter +Input [5]: [ca_address_sk#57, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61] +Arguments: [#57, #58, #59, #60, #61] + +(207) NativeFilter +Input [5]: [#57#57, #58#58, #59#59, #60#60, #61#61] +Condition : isnotnull(ca_address_sk#57) + +(208) NativeShuffleExchange +Input [5]: [#57#57, #58#58, #59#59, #60#60, #61#61] +Arguments: hashpartitioning(ca_address_sk#57, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(209) ShuffleQueryStage +Output [5]: [#57#57, #58#58, #59#59, #60#60, #61#61] +Arguments: X + +(210) AQEShuffleRead +Input [5]: [#57#57, #58#58, #59#59, #60#60, #61#61] +Arguments: coalesced + +(211) InputAdapter +Input [5]: [#57#57, #58#58, #59#59, #60#60, #61#61] + +(212) NativeSort +Input [5]: [#57#57, #58#58, #59#59, #60#60, #61#61] +Arguments: [ca_address_sk#57 ASC NULLS FIRST], false + +(213) NativeSortMergeJoin +Left keys [1]: [ss_addr_sk#6] +Right keys [1]: [ca_address_sk#57] +Join type: Inner +Join condition: None + +(214) NativeProject +Output [16]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61] +Input [18]: [ss_item_sk#2, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56, #57#57, #58#58, #59#59, #60#60, #61#61] + +(215) NativeShuffleExchange +Input [16]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61] +Arguments: hashpartitioning(c_current_addr_sk#41, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(216) ShuffleQueryStage +Output [16]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61] +Arguments: X + +(217) AQEShuffleRead +Input [16]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61] +Arguments: coalesced + +(218) InputAdapter +Input [16]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61] + +(219) NativeSort +Input [16]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61] +Arguments: [c_current_addr_sk#41 ASC NULLS FIRST], false + +(220) ReusedExchange [Reuses operator id: 208] +Output [5]: [ca_address_sk#62, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] + +(221) ShuffleQueryStage +Output [5]: [ca_address_sk#62, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Arguments: X + +(222) AQEShuffleRead +Input [5]: [ca_address_sk#62, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Arguments: coalesced + +(223) InputAdapter +Input [5]: [ca_address_sk#62, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Arguments: [#62, #63, #64, #65, #66] + +(224) InputAdapter +Input [5]: [#62#62, #63#63, #64#64, #65#65, #66#66] + +(225) NativeSort +Input [5]: [#62#62, #63#63, #64#64, #65#65, #66#66] +Arguments: [ca_address_sk#62 ASC NULLS FIRST], false + +(226) NativeSortMergeJoin +Left keys [1]: [c_current_addr_sk#41] +Right keys [1]: [ca_address_sk#62] +Join type: Inner +Join condition: None + +(227) NativeProject +Output [19]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Input [21]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, #62#62, #63#63, #64#64, #65#65, #66#66] + +(228) NativeShuffleExchange +Input [19]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Arguments: hashpartitioning(hd_income_band_sk#54, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(229) ShuffleQueryStage +Output [19]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Arguments: X + +(230) AQEShuffleRead +Input [19]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Arguments: coalesced + +(231) InputAdapter +Input [19]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] + +(232) NativeSort +Input [19]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Arguments: [hd_income_band_sk#54 ASC NULLS FIRST], false + +(625) Scan parquet +Output [1]: [ib_income_band_sk#67] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ib_income_band_sk)] +ReadSchema: struct + +(234) InputAdapter +Input [1]: [ib_income_band_sk#67] +Arguments: [#67] + +(235) NativeFilter +Input [1]: [#67#67] +Condition : isnotnull(ib_income_band_sk#67) + +(236) NativeShuffleExchange +Input [1]: [#67#67] +Arguments: hashpartitioning(ib_income_band_sk#67, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(237) ShuffleQueryStage +Output [1]: [#67#67] +Arguments: X + +(238) AQEShuffleRead +Input [1]: [#67#67] +Arguments: coalesced + +(239) InputAdapter +Input [1]: [#67#67] + +(240) NativeSort +Input [1]: [#67#67] +Arguments: [ib_income_band_sk#67 ASC NULLS FIRST], false + +(241) NativeSortMergeJoin +Left keys [1]: [hd_income_band_sk#54] +Right keys [1]: [ib_income_band_sk#67] +Join type: Inner +Join condition: None + +(242) NativeProject +Output [18]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Input [20]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66, #67#67] + +(243) NativeShuffleExchange +Input [18]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Arguments: hashpartitioning(hd_income_band_sk#56, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(244) ShuffleQueryStage +Output [18]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Arguments: X + +(245) AQEShuffleRead +Input [18]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Arguments: coalesced + +(246) InputAdapter +Input [18]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] + +(247) NativeSort +Input [18]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Arguments: [hd_income_band_sk#56 ASC NULLS FIRST], false + +(248) ReusedExchange [Reuses operator id: 236] +Output [1]: [ib_income_band_sk#68] + +(249) ShuffleQueryStage +Output [1]: [ib_income_band_sk#68] +Arguments: X + +(250) AQEShuffleRead +Input [1]: [ib_income_band_sk#68] +Arguments: coalesced + +(251) InputAdapter +Input [1]: [ib_income_band_sk#68] +Arguments: [#68] + +(252) InputAdapter +Input [1]: [#68#68] + +(253) NativeSort +Input [1]: [#68#68] +Arguments: [ib_income_band_sk#68 ASC NULLS FIRST], false + +(254) NativeSortMergeJoin +Left keys [1]: [hd_income_band_sk#56] +Right keys [1]: [ib_income_band_sk#68] +Join type: Inner +Join condition: None + +(255) NativeProject +Output [17]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Input [19]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66, #68#68] + +(256) NativeShuffleExchange +Input [17]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(257) ShuffleQueryStage +Output [17]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Arguments: X + +(258) AQEShuffleRead +Input [17]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Arguments: coalesced + +(259) InputAdapter +Input [17]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] + +(260) NativeSort +Input [17]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false + +(641) Scan parquet +Output [4]: [i_item_sk#69, i_current_price#70, i_color#71, i_product_name#72] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_current_price), In(i_color, [burlywood,floral,indian,medium,purple,spring]), GreaterThanOrEqual(i_current_price,64.00), LessThanOrEqual(i_current_price,74.00), GreaterThanOrEqual(i_current_price,65.00), LessThanOrEqual(i_current_price,79.00), IsNotNull(i_item_sk)] +ReadSchema: struct + +(262) InputAdapter +Input [4]: [i_item_sk#69, i_current_price#70, i_color#71, i_product_name#72] +Arguments: [#69, #70, #71, #72] + +(263) NativeFilter +Input [4]: [#69#69, #70#70, #71#71, #72#72] +Condition : ((((((isnotnull(i_current_price#70) AND i_color#71 IN (purple,burlywood,indian,spring,floral,medium)) AND (i_current_price#70 >= 64.00)) AND (i_current_price#70 <= 74.00)) AND (i_current_price#70 >= 65.00)) AND (i_current_price#70 <= 79.00)) AND isnotnull(i_item_sk#69)) + +(264) NativeProject +Output [2]: [i_item_sk#69, i_product_name#72] +Input [4]: [#69#69, #70#70, #71#71, #72#72] + +(265) NativeShuffleExchange +Input [2]: [i_item_sk#69, i_product_name#72] +Arguments: hashpartitioning(i_item_sk#69, 100), ENSURE_REQUIREMENTS, [plan_id=31] + +(266) ShuffleQueryStage +Output [2]: [i_item_sk#69, i_product_name#72] +Arguments: X + +(267) AQEShuffleRead +Input [2]: [i_item_sk#69, i_product_name#72] +Arguments: coalesced + +(268) InputAdapter +Input [2]: [i_item_sk#69, i_product_name#72] + +(269) NativeSort +Input [2]: [i_item_sk#69, i_product_name#72] +Arguments: [i_item_sk#69 ASC NULLS FIRST], false + +(270) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#69] +Join type: Inner +Join condition: None + +(271) NativeProject +Output [18]: [ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, d_year#45, d_year#47, s_store_name#36, s_zip#37, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66, i_item_sk#69, i_product_name#72] +Input [19]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66, i_item_sk#69, i_product_name#72] + +(272) NativeProject +Output [18]: [i_product_name#72 AS i_product_name#72, i_item_sk#69 AS i_item_sk#69, s_store_name#36 AS s_store_name#36, s_zip#37 AS s_zip#37, ca_street_number#58 AS ca_street_number#58, ca_street_name#59 AS ca_street_name#59, ca_city#60 AS ca_city#60, ca_zip#61 AS ca_zip#61, ca_street_number#63 AS ca_street_number#63, ca_street_name#64 AS ca_street_name#64, ca_city#65 AS ca_city#65, ca_zip#66 AS ca_zip#66, d_year#34 AS d_year#34, d_year#45 AS d_year#45, d_year#47 AS d_year#47, UnscaledValue(ss_wholesale_cost#10) AS _c15#73, UnscaledValue(ss_list_price#11) AS _c16#74, UnscaledValue(ss_coupon_amt#12) AS _c17#75] +Input [18]: [ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, d_year#45, d_year#47, s_store_name#36, s_zip#37, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66, i_item_sk#69, i_product_name#72] + +(273) NativeHashAggregate +Input [18]: [i_product_name#72, i_item_sk#69, s_store_name#36, s_zip#37, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66, d_year#34, d_year#45, d_year#47, _c15#73, _c16#74, _c17#75] +Keys [15]: [i_product_name#72, i_item_sk#69, s_store_name#36, s_zip#37, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66, d_year#34, d_year#45, d_year#47] +Functions [4]: [partial_count(1), partial_sum(_c15#73), partial_sum(_c16#74), partial_sum(_c17#75)] +Aggregate Attributes [4]: [count#76, sum#77, sum#78, sum#79] +Results [16]: [i_product_name#72, i_item_sk#69, s_store_name#36, s_zip#37, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66, d_year#34, d_year#45, d_year#47, #28#28] + +(274) NativeHashAggregate +Input [16]: [i_product_name#72, i_item_sk#69, s_store_name#36, s_zip#37, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66, d_year#34, d_year#45, d_year#47, #28#28] +Keys [15]: [i_product_name#72, i_item_sk#69, s_store_name#36, s_zip#37, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66, d_year#34, d_year#45, d_year#47] +Functions [4]: [count(1), sum(UnscaledValue(ss_wholesale_cost#10)), sum(UnscaledValue(ss_list_price#11)), sum(UnscaledValue(ss_coupon_amt#12))] +Aggregate Attributes [4]: [count(1)#80, sum(UnscaledValue(ss_wholesale_cost#10))#81, sum(UnscaledValue(ss_list_price#11))#82, sum(UnscaledValue(ss_coupon_amt#12))#83] +Results [19]: [i_product_name#72, i_item_sk#69, s_store_name#36, s_zip#37, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66, d_year#34, d_year#45, d_year#47, count(1)#80, sum(UnscaledValue(ss_wholesale_cost#10))#81, sum(UnscaledValue(ss_list_price#11))#82, sum(UnscaledValue(ss_coupon_amt#12))#83] + +(275) NativeProject +Output [17]: [i_product_name#72 AS product_name#84, i_item_sk#69 AS item_sk#85, s_store_name#36 AS store_name#86, s_zip#37 AS store_zip#87, ca_street_number#58 AS b_street_number#88, ca_street_name#59 AS b_streen_name#89, ca_city#60 AS b_city#90, ca_zip#61 AS b_zip#91, ca_street_number#63 AS c_street_number#92, ca_street_name#64 AS c_street_name#93, ca_city#65 AS c_city#94, ca_zip#66 AS c_zip#95, d_year#34 AS syear#96, count(1)#80 AS cnt#97, MakeDecimal(sum(UnscaledValue(ss_wholesale_cost#10))#81,17,2) AS s1#98, MakeDecimal(sum(UnscaledValue(ss_list_price#11))#82,17,2) AS s2#99, MakeDecimal(sum(UnscaledValue(ss_coupon_amt#12))#83,17,2) AS s3#100] +Input [19]: [i_product_name#72, i_item_sk#69, s_store_name#36, s_zip#37, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66, d_year#34, d_year#45, d_year#47, count(1)#80, sum(UnscaledValue(ss_wholesale_cost#10))#81, sum(UnscaledValue(ss_list_price#11))#82, sum(UnscaledValue(ss_coupon_amt#12))#83] + +(276) NativeShuffleExchange +Input [17]: [product_name#84, item_sk#85, store_name#86, store_zip#87, b_street_number#88, b_streen_name#89, b_city#90, b_zip#91, c_street_number#92, c_street_name#93, c_city#94, c_zip#95, syear#96, cnt#97, s1#98, s2#99, s3#100] +Arguments: hashpartitioning(item_sk#85, store_name#86, store_zip#87, 100), ENSURE_REQUIREMENTS, [plan_id=32] + +(277) ShuffleQueryStage +Output [17]: [product_name#84, item_sk#85, store_name#86, store_zip#87, b_street_number#88, b_streen_name#89, b_city#90, b_zip#91, c_street_number#92, c_street_name#93, c_city#94, c_zip#95, syear#96, cnt#97, s1#98, s2#99, s3#100] +Arguments: X + +(278) AQEShuffleRead +Input [17]: [product_name#84, item_sk#85, store_name#86, store_zip#87, b_street_number#88, b_streen_name#89, b_city#90, b_zip#91, c_street_number#92, c_street_name#93, c_city#94, c_zip#95, syear#96, cnt#97, s1#98, s2#99, s3#100] +Arguments: coalesced + +(279) InputAdapter +Input [17]: [product_name#84, item_sk#85, store_name#86, store_zip#87, b_street_number#88, b_streen_name#89, b_city#90, b_zip#91, c_street_number#92, c_street_name#93, c_city#94, c_zip#95, syear#96, cnt#97, s1#98, s2#99, s3#100] + +(280) NativeSort +Input [17]: [product_name#84, item_sk#85, store_name#86, store_zip#87, b_street_number#88, b_streen_name#89, b_city#90, b_zip#91, c_street_number#92, c_street_name#93, c_city#94, c_zip#95, syear#96, cnt#97, s1#98, s2#99, s3#100] +Arguments: [item_sk#85 ASC NULLS FIRST, store_name#86 ASC NULLS FIRST, store_zip#87 ASC NULLS FIRST], false + +(281) ReusedExchange [Reuses operator id: 55] +Output [11]: [ss_sold_date_sk#101, ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_store_sk#107, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111] + +(282) ShuffleQueryStage +Output [11]: [ss_sold_date_sk#101, ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_store_sk#107, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111] +Arguments: X + +(283) AQEShuffleRead +Input [11]: [ss_sold_date_sk#101, ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_store_sk#107, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111] +Arguments: coalesced + +(284) InputAdapter +Input [11]: [ss_sold_date_sk#101, ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_store_sk#107, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111] +Arguments: [#101, #102, #103, #104, #105, #106, #107, #108, #109, #110, #111] + +(285) InputAdapter +Input [11]: [#101#101, #102#102, #103#103, #104#104, #105#105, #106#106, #107#107, #108#108, #109#109, #110#110, #111#111] + +(286) NativeSort +Input [11]: [#101#101, #102#102, #103#103, #104#104, #105#105, #106#106, #107#107, #108#108, #109#109, #110#110, #111#111] +Arguments: [ss_sold_date_sk#101 ASC NULLS FIRST], false + +(684) Scan parquet +Output [2]: [d_date_sk#112, d_year#113] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(288) InputAdapter +Input [2]: [d_date_sk#112, d_year#113] +Arguments: [#112, #113] + +(289) NativeFilter +Input [2]: [#112#112, #113#113] +Condition : ((isnotnull(d_year#113) AND (d_year#113 = 2000)) AND isnotnull(d_date_sk#112)) + +(290) NativeShuffleExchange +Input [2]: [#112#112, #113#113] +Arguments: hashpartitioning(d_date_sk#112, 100), ENSURE_REQUIREMENTS, [plan_id=33] + +(291) ShuffleQueryStage +Output [2]: [#112#112, #113#113] +Arguments: X + +(292) AQEShuffleRead +Input [2]: [#112#112, #113#113] +Arguments: coalesced + +(293) InputAdapter +Input [2]: [#112#112, #113#113] + +(294) NativeSort +Input [2]: [#112#112, #113#113] +Arguments: [d_date_sk#112 ASC NULLS FIRST], false + +(295) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#101] +Right keys [1]: [d_date_sk#112] +Join type: Inner +Join condition: None + +(296) NativeProject +Output [11]: [ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_store_sk#107, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113] +Input [13]: [#101#101, #102#102, #103#103, #104#104, #105#105, #106#106, #107#107, #108#108, #109#109, #110#110, #111#111, #112#112, #113#113] + +(297) NativeShuffleExchange +Input [11]: [ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_store_sk#107, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113] +Arguments: hashpartitioning(ss_store_sk#107, 100), ENSURE_REQUIREMENTS, [plan_id=34] + +(298) ShuffleQueryStage +Output [11]: [ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_store_sk#107, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113] +Arguments: X + +(299) AQEShuffleRead +Input [11]: [ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_store_sk#107, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113] +Arguments: coalesced + +(300) InputAdapter +Input [11]: [ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_store_sk#107, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113] + +(301) NativeSort +Input [11]: [ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_store_sk#107, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113] +Arguments: [ss_store_sk#107 ASC NULLS FIRST], false + +(302) ReusedExchange [Reuses operator id: 78] +Output [3]: [s_store_sk#114, s_store_name#115, s_zip#116] + +(303) ShuffleQueryStage +Output [3]: [s_store_sk#114, s_store_name#115, s_zip#116] +Arguments: X + +(304) AQEShuffleRead +Input [3]: [s_store_sk#114, s_store_name#115, s_zip#116] +Arguments: coalesced + +(305) InputAdapter +Input [3]: [s_store_sk#114, s_store_name#115, s_zip#116] +Arguments: [#114, #115, #116] + +(306) InputAdapter +Input [3]: [#114#114, #115#115, #116#116] + +(307) NativeSort +Input [3]: [#114#114, #115#115, #116#116] +Arguments: [s_store_sk#114 ASC NULLS FIRST], false + +(308) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#107] +Right keys [1]: [s_store_sk#114] +Join type: Inner +Join condition: None + +(309) NativeProject +Output [12]: [ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116] +Input [14]: [ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_store_sk#107, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, #114#114, #115#115, #116#116] + +(310) NativeShuffleExchange +Input [12]: [ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116] +Arguments: hashpartitioning(ss_customer_sk#103, 100), ENSURE_REQUIREMENTS, [plan_id=35] + +(311) ShuffleQueryStage +Output [12]: [ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116] +Arguments: X + +(312) AQEShuffleRead +Input [12]: [ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116] +Arguments: coalesced + +(313) InputAdapter +Input [12]: [ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116] + +(314) NativeSort +Input [12]: [ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116] +Arguments: [ss_customer_sk#103 ASC NULLS FIRST], false + +(315) ReusedExchange [Reuses operator id: 93] +Output [6]: [c_customer_sk#117, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, c_first_sales_date_sk#122] + +(316) ShuffleQueryStage +Output [6]: [c_customer_sk#117, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, c_first_sales_date_sk#122] +Arguments: X + +(317) AQEShuffleRead +Input [6]: [c_customer_sk#117, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, c_first_sales_date_sk#122] +Arguments: coalesced + +(318) InputAdapter +Input [6]: [c_customer_sk#117, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, c_first_sales_date_sk#122] +Arguments: [#117, #118, #119, #120, #121, #122] + +(319) InputAdapter +Input [6]: [#117#117, #118#118, #119#119, #120#120, #121#121, #122#122] + +(320) NativeSort +Input [6]: [#117#117, #118#118, #119#119, #120#120, #121#121, #122#122] +Arguments: [c_customer_sk#117 ASC NULLS FIRST], false + +(321) NativeSortMergeJoin +Left keys [1]: [ss_customer_sk#103] +Right keys [1]: [c_customer_sk#117] +Join type: Inner +Join condition: None + +(322) NativeProject +Output [16]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, c_first_sales_date_sk#122] +Input [18]: [ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, #117#117, #118#118, #119#119, #120#120, #121#121, #122#122] + +(323) NativeShuffleExchange +Input [16]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, c_first_sales_date_sk#122] +Arguments: hashpartitioning(c_first_sales_date_sk#122, 100), ENSURE_REQUIREMENTS, [plan_id=36] + +(324) ShuffleQueryStage +Output [16]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, c_first_sales_date_sk#122] +Arguments: X + +(325) AQEShuffleRead +Input [16]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, c_first_sales_date_sk#122] +Arguments: coalesced + +(326) InputAdapter +Input [16]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, c_first_sales_date_sk#122] + +(327) NativeSort +Input [16]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, c_first_sales_date_sk#122] +Arguments: [c_first_sales_date_sk#122 ASC NULLS FIRST], false + +(328) ReusedExchange [Reuses operator id: 108] +Output [2]: [d_date_sk#123, d_year#124] + +(329) ShuffleQueryStage +Output [2]: [d_date_sk#123, d_year#124] +Arguments: X + +(330) AQEShuffleRead +Input [2]: [d_date_sk#123, d_year#124] +Arguments: coalesced + +(331) InputAdapter +Input [2]: [d_date_sk#123, d_year#124] +Arguments: [#123, #124] + +(332) InputAdapter +Input [2]: [#123#123, #124#124] + +(333) NativeSort +Input [2]: [#123#123, #124#124] +Arguments: [d_date_sk#123 ASC NULLS FIRST], false + +(334) NativeSortMergeJoin +Left keys [1]: [c_first_sales_date_sk#122] +Right keys [1]: [d_date_sk#123] +Join type: Inner +Join condition: None + +(335) NativeProject +Output [16]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, d_year#124] +Input [18]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, c_first_sales_date_sk#122, #123#123, #124#124] + +(336) NativeShuffleExchange +Input [16]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, d_year#124] +Arguments: hashpartitioning(c_first_shipto_date_sk#121, 100), ENSURE_REQUIREMENTS, [plan_id=37] + +(337) ShuffleQueryStage +Output [16]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, d_year#124] +Arguments: X + +(338) AQEShuffleRead +Input [16]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, d_year#124] +Arguments: coalesced + +(339) InputAdapter +Input [16]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, d_year#124] + +(340) NativeSort +Input [16]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, d_year#124] +Arguments: [c_first_shipto_date_sk#121 ASC NULLS FIRST], false + +(341) ReusedExchange [Reuses operator id: 108] +Output [2]: [d_date_sk#125, d_year#126] + +(342) ShuffleQueryStage +Output [2]: [d_date_sk#125, d_year#126] +Arguments: X + +(343) AQEShuffleRead +Input [2]: [d_date_sk#125, d_year#126] +Arguments: coalesced + +(344) InputAdapter +Input [2]: [d_date_sk#125, d_year#126] +Arguments: [#125, #126] + +(345) InputAdapter +Input [2]: [#125#125, #126#126] + +(346) NativeSort +Input [2]: [#125#125, #126#126] +Arguments: [d_date_sk#125 ASC NULLS FIRST], false + +(347) NativeSortMergeJoin +Left keys [1]: [c_first_shipto_date_sk#121] +Right keys [1]: [d_date_sk#125] +Join type: Inner +Join condition: None + +(348) NativeProject +Output [16]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126] +Input [18]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, d_year#124, #125#125, #126#126] + +(349) NativeShuffleExchange +Input [16]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126] +Arguments: hashpartitioning(ss_cdemo_sk#104, 100), ENSURE_REQUIREMENTS, [plan_id=38] + +(350) ShuffleQueryStage +Output [16]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126] +Arguments: X + +(351) AQEShuffleRead +Input [16]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126] +Arguments: coalesced + +(352) InputAdapter +Input [16]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126] + +(353) NativeSort +Input [16]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126] +Arguments: [ss_cdemo_sk#104 ASC NULLS FIRST], false + +(354) ReusedExchange [Reuses operator id: 136] +Output [2]: [cd_demo_sk#127, cd_marital_status#128] + +(355) ShuffleQueryStage +Output [2]: [cd_demo_sk#127, cd_marital_status#128] +Arguments: X + +(356) AQEShuffleRead +Input [2]: [cd_demo_sk#127, cd_marital_status#128] +Arguments: coalesced + +(357) InputAdapter +Input [2]: [cd_demo_sk#127, cd_marital_status#128] +Arguments: [#127, #128] + +(358) InputAdapter +Input [2]: [#127#127, #128#128] + +(359) NativeSort +Input [2]: [#127#127, #128#128] +Arguments: [cd_demo_sk#127 ASC NULLS FIRST], false + +(360) NativeSortMergeJoin +Left keys [1]: [ss_cdemo_sk#104] +Right keys [1]: [cd_demo_sk#127] +Join type: Inner +Join condition: None + +(361) NativeProject +Output [16]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126, cd_marital_status#128] +Input [18]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126, #127#127, #128#128] + +(362) NativeShuffleExchange +Input [16]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126, cd_marital_status#128] +Arguments: hashpartitioning(c_current_cdemo_sk#118, 100), ENSURE_REQUIREMENTS, [plan_id=39] + +(363) ShuffleQueryStage +Output [16]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126, cd_marital_status#128] +Arguments: X + +(364) AQEShuffleRead +Input [16]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126, cd_marital_status#128] +Arguments: coalesced + +(365) InputAdapter +Input [16]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126, cd_marital_status#128] + +(366) NativeSort +Input [16]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126, cd_marital_status#128] +Arguments: [c_current_cdemo_sk#118 ASC NULLS FIRST], false + +(367) ReusedExchange [Reuses operator id: 136] +Output [2]: [cd_demo_sk#129, cd_marital_status#130] + +(368) ShuffleQueryStage +Output [2]: [cd_demo_sk#129, cd_marital_status#130] +Arguments: X + +(369) AQEShuffleRead +Input [2]: [cd_demo_sk#129, cd_marital_status#130] +Arguments: coalesced + +(370) InputAdapter +Input [2]: [cd_demo_sk#129, cd_marital_status#130] +Arguments: [#129, #130] + +(371) InputAdapter +Input [2]: [#129#129, #130#130] + +(372) NativeSort +Input [2]: [#129#129, #130#130] +Arguments: [cd_demo_sk#129 ASC NULLS FIRST], false + +(373) SortMergeJoin [codegen id : 2] +Left keys [1]: [c_current_cdemo_sk#118] +Right keys [1]: [cd_demo_sk#129] +Join type: Inner +Join condition: NOT (cd_marital_status#128 = cd_marital_status#130) + +(374) Project [codegen id : 2] +Output [14]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126] +Input [18]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126, cd_marital_status#128, #129#129, #130#130] + +(375) ConvertToNative +Input [14]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126] + +(376) NativeShuffleExchange +Input [14]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126] +Arguments: hashpartitioning(ss_promo_sk#108, 100), ENSURE_REQUIREMENTS, [plan_id=40] + +(377) ShuffleQueryStage +Output [14]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126] +Arguments: X + +(378) AQEShuffleRead +Input [14]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126] +Arguments: coalesced + +(379) InputAdapter +Input [14]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126] + +(380) NativeSort +Input [14]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126] +Arguments: [ss_promo_sk#108 ASC NULLS FIRST], false + +(381) ReusedExchange [Reuses operator id: 165] +Output [1]: [p_promo_sk#131] + +(382) ShuffleQueryStage +Output [1]: [p_promo_sk#131] +Arguments: X + +(383) AQEShuffleRead +Input [1]: [p_promo_sk#131] +Arguments: coalesced + +(384) InputAdapter +Input [1]: [p_promo_sk#131] +Arguments: [#131] + +(385) InputAdapter +Input [1]: [#131#131] + +(386) NativeSort +Input [1]: [#131#131] +Arguments: [p_promo_sk#131 ASC NULLS FIRST], false + +(387) NativeSortMergeJoin +Left keys [1]: [ss_promo_sk#108] +Right keys [1]: [p_promo_sk#131] +Join type: Inner +Join condition: None + +(388) NativeProject +Output [13]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126] +Input [15]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126, #131#131] + +(389) NativeShuffleExchange +Input [13]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126] +Arguments: hashpartitioning(ss_hdemo_sk#105, 100), ENSURE_REQUIREMENTS, [plan_id=41] + +(390) ShuffleQueryStage +Output [13]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126] +Arguments: X + +(391) AQEShuffleRead +Input [13]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126] +Arguments: coalesced + +(392) InputAdapter +Input [13]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126] + +(393) NativeSort +Input [13]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126] +Arguments: [ss_hdemo_sk#105 ASC NULLS FIRST], false + +(394) ReusedExchange [Reuses operator id: 180] +Output [2]: [hd_demo_sk#132, hd_income_band_sk#133] + +(395) ShuffleQueryStage +Output [2]: [hd_demo_sk#132, hd_income_band_sk#133] +Arguments: X + +(396) AQEShuffleRead +Input [2]: [hd_demo_sk#132, hd_income_band_sk#133] +Arguments: coalesced + +(397) InputAdapter +Input [2]: [hd_demo_sk#132, hd_income_band_sk#133] +Arguments: [#132, #133] + +(398) InputAdapter +Input [2]: [#132#132, #133#133] + +(399) NativeSort +Input [2]: [#132#132, #133#133] +Arguments: [hd_demo_sk#132 ASC NULLS FIRST], false + +(400) NativeSortMergeJoin +Left keys [1]: [ss_hdemo_sk#105] +Right keys [1]: [hd_demo_sk#132] +Join type: Inner +Join condition: None + +(401) NativeProject +Output [13]: [ss_item_sk#102, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133] +Input [15]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126, #132#132, #133#133] + +(402) NativeShuffleExchange +Input [13]: [ss_item_sk#102, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133] +Arguments: hashpartitioning(c_current_hdemo_sk#119, 100), ENSURE_REQUIREMENTS, [plan_id=42] + +(403) ShuffleQueryStage +Output [13]: [ss_item_sk#102, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133] +Arguments: X + +(404) AQEShuffleRead +Input [13]: [ss_item_sk#102, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133] +Arguments: coalesced + +(405) InputAdapter +Input [13]: [ss_item_sk#102, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133] + +(406) NativeSort +Input [13]: [ss_item_sk#102, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133] +Arguments: [c_current_hdemo_sk#119 ASC NULLS FIRST], false + +(407) ReusedExchange [Reuses operator id: 180] +Output [2]: [hd_demo_sk#134, hd_income_band_sk#135] + +(408) ShuffleQueryStage +Output [2]: [hd_demo_sk#134, hd_income_band_sk#135] +Arguments: X + +(409) AQEShuffleRead +Input [2]: [hd_demo_sk#134, hd_income_band_sk#135] +Arguments: coalesced + +(410) InputAdapter +Input [2]: [hd_demo_sk#134, hd_income_band_sk#135] +Arguments: [#134, #135] + +(411) InputAdapter +Input [2]: [#134#134, #135#135] + +(412) NativeSort +Input [2]: [#134#134, #135#135] +Arguments: [hd_demo_sk#134 ASC NULLS FIRST], false + +(413) NativeSortMergeJoin +Left keys [1]: [c_current_hdemo_sk#119] +Right keys [1]: [hd_demo_sk#134] +Join type: Inner +Join condition: None + +(414) NativeProject +Output [13]: [ss_item_sk#102, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135] +Input [15]: [ss_item_sk#102, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133, #134#134, #135#135] + +(415) NativeShuffleExchange +Input [13]: [ss_item_sk#102, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135] +Arguments: hashpartitioning(ss_addr_sk#106, 100), ENSURE_REQUIREMENTS, [plan_id=43] + +(416) ShuffleQueryStage +Output [13]: [ss_item_sk#102, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135] +Arguments: X + +(417) AQEShuffleRead +Input [13]: [ss_item_sk#102, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135] +Arguments: coalesced + +(418) InputAdapter +Input [13]: [ss_item_sk#102, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135] + +(419) NativeSort +Input [13]: [ss_item_sk#102, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135] +Arguments: [ss_addr_sk#106 ASC NULLS FIRST], false + +(420) ReusedExchange [Reuses operator id: 208] +Output [5]: [ca_address_sk#136, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140] + +(421) ShuffleQueryStage +Output [5]: [ca_address_sk#136, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140] +Arguments: X + +(422) AQEShuffleRead +Input [5]: [ca_address_sk#136, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140] +Arguments: coalesced + +(423) InputAdapter +Input [5]: [ca_address_sk#136, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140] +Arguments: [#136, #137, #138, #139, #140] + +(424) InputAdapter +Input [5]: [#136#136, #137#137, #138#138, #139#139, #140#140] + +(425) NativeSort +Input [5]: [#136#136, #137#137, #138#138, #139#139, #140#140] +Arguments: [ca_address_sk#136 ASC NULLS FIRST], false + +(426) NativeSortMergeJoin +Left keys [1]: [ss_addr_sk#106] +Right keys [1]: [ca_address_sk#136] +Join type: Inner +Join condition: None + +(427) NativeProject +Output [16]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140] +Input [18]: [ss_item_sk#102, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135, #136#136, #137#137, #138#138, #139#139, #140#140] + +(428) NativeShuffleExchange +Input [16]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140] +Arguments: hashpartitioning(c_current_addr_sk#120, 100), ENSURE_REQUIREMENTS, [plan_id=44] + +(429) ShuffleQueryStage +Output [16]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140] +Arguments: X + +(430) AQEShuffleRead +Input [16]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140] +Arguments: coalesced + +(431) InputAdapter +Input [16]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140] + +(432) NativeSort +Input [16]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140] +Arguments: [c_current_addr_sk#120 ASC NULLS FIRST], false + +(433) ReusedExchange [Reuses operator id: 208] +Output [5]: [ca_address_sk#141, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] + +(434) ShuffleQueryStage +Output [5]: [ca_address_sk#141, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Arguments: X + +(435) AQEShuffleRead +Input [5]: [ca_address_sk#141, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Arguments: coalesced + +(436) InputAdapter +Input [5]: [ca_address_sk#141, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Arguments: [#141, #142, #143, #144, #145] + +(437) InputAdapter +Input [5]: [#141#141, #142#142, #143#143, #144#144, #145#145] + +(438) NativeSort +Input [5]: [#141#141, #142#142, #143#143, #144#144, #145#145] +Arguments: [ca_address_sk#141 ASC NULLS FIRST], false + +(439) NativeSortMergeJoin +Left keys [1]: [c_current_addr_sk#120] +Right keys [1]: [ca_address_sk#141] +Join type: Inner +Join condition: None + +(440) NativeProject +Output [19]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Input [21]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, #141#141, #142#142, #143#143, #144#144, #145#145] + +(441) NativeShuffleExchange +Input [19]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Arguments: hashpartitioning(hd_income_band_sk#133, 100), ENSURE_REQUIREMENTS, [plan_id=45] + +(442) ShuffleQueryStage +Output [19]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Arguments: X + +(443) AQEShuffleRead +Input [19]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Arguments: coalesced + +(444) InputAdapter +Input [19]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] + +(445) NativeSort +Input [19]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Arguments: [hd_income_band_sk#133 ASC NULLS FIRST], false + +(446) ReusedExchange [Reuses operator id: 236] +Output [1]: [ib_income_band_sk#146] + +(447) ShuffleQueryStage +Output [1]: [ib_income_band_sk#146] +Arguments: X + +(448) AQEShuffleRead +Input [1]: [ib_income_band_sk#146] +Arguments: coalesced + +(449) InputAdapter +Input [1]: [ib_income_band_sk#146] +Arguments: [#146] + +(450) InputAdapter +Input [1]: [#146#146] + +(451) NativeSort +Input [1]: [#146#146] +Arguments: [ib_income_band_sk#146 ASC NULLS FIRST], false + +(452) NativeSortMergeJoin +Left keys [1]: [hd_income_band_sk#133] +Right keys [1]: [ib_income_band_sk#146] +Join type: Inner +Join condition: None + +(453) NativeProject +Output [18]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Input [20]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145, #146#146] + +(454) NativeShuffleExchange +Input [18]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Arguments: hashpartitioning(hd_income_band_sk#135, 100), ENSURE_REQUIREMENTS, [plan_id=46] + +(455) ShuffleQueryStage +Output [18]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Arguments: X + +(456) AQEShuffleRead +Input [18]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Arguments: coalesced + +(457) InputAdapter +Input [18]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] + +(458) NativeSort +Input [18]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Arguments: [hd_income_band_sk#135 ASC NULLS FIRST], false + +(459) ReusedExchange [Reuses operator id: 236] +Output [1]: [ib_income_band_sk#147] + +(460) ShuffleQueryStage +Output [1]: [ib_income_band_sk#147] +Arguments: X + +(461) AQEShuffleRead +Input [1]: [ib_income_band_sk#147] +Arguments: coalesced + +(462) InputAdapter +Input [1]: [ib_income_band_sk#147] +Arguments: [#147] + +(463) InputAdapter +Input [1]: [#147#147] + +(464) NativeSort +Input [1]: [#147#147] +Arguments: [ib_income_band_sk#147 ASC NULLS FIRST], false + +(465) NativeSortMergeJoin +Left keys [1]: [hd_income_band_sk#135] +Right keys [1]: [ib_income_band_sk#147] +Join type: Inner +Join condition: None + +(466) NativeProject +Output [17]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Input [19]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145, #147#147] + +(467) NativeShuffleExchange +Input [17]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Arguments: hashpartitioning(ss_item_sk#102, 100), ENSURE_REQUIREMENTS, [plan_id=47] + +(468) ShuffleQueryStage +Output [17]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Arguments: X + +(469) AQEShuffleRead +Input [17]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Arguments: coalesced + +(470) InputAdapter +Input [17]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] + +(471) NativeSort +Input [17]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Arguments: [ss_item_sk#102 ASC NULLS FIRST], false + +(472) ReusedExchange [Reuses operator id: 265] +Output [2]: [i_item_sk#148, i_product_name#149] + +(473) ShuffleQueryStage +Output [2]: [i_item_sk#148, i_product_name#149] +Arguments: X + +(474) AQEShuffleRead +Input [2]: [i_item_sk#148, i_product_name#149] +Arguments: coalesced + +(475) InputAdapter +Input [2]: [i_item_sk#148, i_product_name#149] +Arguments: [#148, #149] + +(476) InputAdapter +Input [2]: [#148#148, #149#149] + +(477) NativeSort +Input [2]: [#148#148, #149#149] +Arguments: [i_item_sk#148 ASC NULLS FIRST], false + +(478) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#102] +Right keys [1]: [i_item_sk#148] +Join type: Inner +Join condition: None + +(479) NativeProject +Output [18]: [ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, d_year#124, d_year#126, s_store_name#115, s_zip#116, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145, i_item_sk#148, i_product_name#149] +Input [19]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145, #148#148, #149#149] + +(480) NativeProject +Output [18]: [i_product_name#149 AS i_product_name#149, i_item_sk#148 AS i_item_sk#148, s_store_name#115 AS s_store_name#115, s_zip#116 AS s_zip#116, ca_street_number#137 AS ca_street_number#137, ca_street_name#138 AS ca_street_name#138, ca_city#139 AS ca_city#139, ca_zip#140 AS ca_zip#140, ca_street_number#142 AS ca_street_number#142, ca_street_name#143 AS ca_street_name#143, ca_city#144 AS ca_city#144, ca_zip#145 AS ca_zip#145, d_year#113 AS d_year#113, d_year#124 AS d_year#124, d_year#126 AS d_year#126, UnscaledValue(ss_wholesale_cost#109) AS _c15#150, UnscaledValue(ss_list_price#110) AS _c16#151, UnscaledValue(ss_coupon_amt#111) AS _c17#152] +Input [18]: [ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, d_year#124, d_year#126, s_store_name#115, s_zip#116, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145, i_item_sk#148, i_product_name#149] + +(481) NativeHashAggregate +Input [18]: [i_product_name#149, i_item_sk#148, s_store_name#115, s_zip#116, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145, d_year#113, d_year#124, d_year#126, _c15#150, _c16#151, _c17#152] +Keys [15]: [i_product_name#149, i_item_sk#148, s_store_name#115, s_zip#116, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145, d_year#113, d_year#124, d_year#126] +Functions [4]: [partial_count(1), partial_sum(_c15#150), partial_sum(_c16#151), partial_sum(_c17#152)] +Aggregate Attributes [4]: [count#76, sum#153, sum#154, sum#155] +Results [16]: [i_product_name#149, i_item_sk#148, s_store_name#115, s_zip#116, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145, d_year#113, d_year#124, d_year#126, #28#28] + +(482) NativeHashAggregate +Input [16]: [i_product_name#149, i_item_sk#148, s_store_name#115, s_zip#116, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145, d_year#113, d_year#124, d_year#126, #28#28] +Keys [15]: [i_product_name#149, i_item_sk#148, s_store_name#115, s_zip#116, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145, d_year#113, d_year#124, d_year#126] +Functions [4]: [count(1), sum(UnscaledValue(ss_wholesale_cost#109)), sum(UnscaledValue(ss_list_price#110)), sum(UnscaledValue(ss_coupon_amt#111))] +Aggregate Attributes [4]: [count(1)#80, sum(UnscaledValue(ss_wholesale_cost#109))#81, sum(UnscaledValue(ss_list_price#110))#82, sum(UnscaledValue(ss_coupon_amt#111))#83] +Results [19]: [i_product_name#149, i_item_sk#148, s_store_name#115, s_zip#116, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145, d_year#113, d_year#124, d_year#126, count(1)#80, sum(UnscaledValue(ss_wholesale_cost#109))#81, sum(UnscaledValue(ss_list_price#110))#82, sum(UnscaledValue(ss_coupon_amt#111))#83] + +(483) NativeProject +Output [8]: [i_item_sk#148 AS item_sk#156, s_store_name#115 AS store_name#157, s_zip#116 AS store_zip#158, d_year#113 AS syear#159, count(1)#80 AS cnt#160, MakeDecimal(sum(UnscaledValue(ss_wholesale_cost#109))#81,17,2) AS s1#161, MakeDecimal(sum(UnscaledValue(ss_list_price#110))#82,17,2) AS s2#162, MakeDecimal(sum(UnscaledValue(ss_coupon_amt#111))#83,17,2) AS s3#163] +Input [19]: [i_product_name#149, i_item_sk#148, s_store_name#115, s_zip#116, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145, d_year#113, d_year#124, d_year#126, count(1)#80, sum(UnscaledValue(ss_wholesale_cost#109))#81, sum(UnscaledValue(ss_list_price#110))#82, sum(UnscaledValue(ss_coupon_amt#111))#83] + +(484) NativeShuffleExchange +Input [8]: [item_sk#156, store_name#157, store_zip#158, syear#159, cnt#160, s1#161, s2#162, s3#163] +Arguments: hashpartitioning(item_sk#156, store_name#157, store_zip#158, 100), ENSURE_REQUIREMENTS, [plan_id=48] + +(485) ShuffleQueryStage +Output [8]: [item_sk#156, store_name#157, store_zip#158, syear#159, cnt#160, s1#161, s2#162, s3#163] +Arguments: X + +(486) AQEShuffleRead +Input [8]: [item_sk#156, store_name#157, store_zip#158, syear#159, cnt#160, s1#161, s2#162, s3#163] +Arguments: coalesced + +(487) InputAdapter +Input [8]: [item_sk#156, store_name#157, store_zip#158, syear#159, cnt#160, s1#161, s2#162, s3#163] + +(488) NativeSort +Input [8]: [item_sk#156, store_name#157, store_zip#158, syear#159, cnt#160, s1#161, s2#162, s3#163] +Arguments: [item_sk#156 ASC NULLS FIRST, store_name#157 ASC NULLS FIRST, store_zip#158 ASC NULLS FIRST], false + +(489) SortMergeJoin [codegen id : 3] +Left keys [3]: [item_sk#85, store_name#86, store_zip#87] +Right keys [3]: [item_sk#156, store_name#157, store_zip#158] +Join type: Inner +Join condition: (cnt#160 <= cnt#97) + +(490) Project [codegen id : 3] +Output [21]: [product_name#84, store_name#86, store_zip#87, b_street_number#88, b_streen_name#89, b_city#90, b_zip#91, c_street_number#92, c_street_name#93, c_city#94, c_zip#95, syear#96, cnt#97, s1#98, s2#99, s3#100, s1#161, s2#162, s3#163, syear#159, cnt#160] +Input [25]: [product_name#84, item_sk#85, store_name#86, store_zip#87, b_street_number#88, b_streen_name#89, b_city#90, b_zip#91, c_street_number#92, c_street_name#93, c_city#94, c_zip#95, syear#96, cnt#97, s1#98, s2#99, s3#100, item_sk#156, store_name#157, store_zip#158, syear#159, cnt#160, s1#161, s2#162, s3#163] + +(491) ConvertToNative +Input [21]: [product_name#84, store_name#86, store_zip#87, b_street_number#88, b_streen_name#89, b_city#90, b_zip#91, c_street_number#92, c_street_name#93, c_city#94, c_zip#95, syear#96, cnt#97, s1#98, s2#99, s3#100, s1#161, s2#162, s3#163, syear#159, cnt#160] + +(492) NativeShuffleExchange +Input [21]: [product_name#84, store_name#86, store_zip#87, b_street_number#88, b_streen_name#89, b_city#90, b_zip#91, c_street_number#92, c_street_name#93, c_city#94, c_zip#95, syear#96, cnt#97, s1#98, s2#99, s3#100, s1#161, s2#162, s3#163, syear#159, cnt#160] +Arguments: rangepartitioning(product_name#84 ASC NULLS FIRST, store_name#86 ASC NULLS FIRST, cnt#160 ASC NULLS FIRST, s1#98 ASC NULLS FIRST, s1#161 ASC NULLS FIRST, 100), ENSURE_REQUIREMENTS, [plan_id=49] + +(493) ShuffleQueryStage +Output [21]: [product_name#84, store_name#86, store_zip#87, b_street_number#88, b_streen_name#89, b_city#90, b_zip#91, c_street_number#92, c_street_name#93, c_city#94, c_zip#95, syear#96, cnt#97, s1#98, s2#99, s3#100, s1#161, s2#162, s3#163, syear#159, cnt#160] +Arguments: X + +(494) AQEShuffleRead +Input [21]: [product_name#84, store_name#86, store_zip#87, b_street_number#88, b_streen_name#89, b_city#90, b_zip#91, c_street_number#92, c_street_name#93, c_city#94, c_zip#95, syear#96, cnt#97, s1#98, s2#99, s3#100, s1#161, s2#162, s3#163, syear#159, cnt#160] +Arguments: coalesced + +(495) InputAdapter +Input [21]: [product_name#84, store_name#86, store_zip#87, b_street_number#88, b_streen_name#89, b_city#90, b_zip#91, c_street_number#92, c_street_name#93, c_city#94, c_zip#95, syear#96, cnt#97, s1#98, s2#99, s3#100, s1#161, s2#162, s3#163, syear#159, cnt#160] + +(496) NativeSort +Input [21]: [product_name#84, store_name#86, store_zip#87, b_street_number#88, b_streen_name#89, b_city#90, b_zip#91, c_street_number#92, c_street_name#93, c_city#94, c_zip#95, syear#96, cnt#97, s1#98, s2#99, s3#100, s1#161, s2#162, s3#163, syear#159, cnt#160] +Arguments: [product_name#84 ASC NULLS FIRST, store_name#86 ASC NULLS FIRST, cnt#160 ASC NULLS FIRST, s1#98 ASC NULLS FIRST, s1#161 ASC NULLS FIRST], true + +(497) Scan parquet +Output [12]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_ticket_number#9, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_ticket_number), IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk), IsNotNull(ss_customer_sk), IsNotNull(ss_cdemo_sk), IsNotNull(ss_promo_sk), IsNotNull(ss_hdemo_sk), IsNotNull(ss_addr_sk)] +ReadSchema: struct + +(498) Filter +Input [12]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_ticket_number#9, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12] +Condition : ((((((((isnotnull(ss_item_sk#2) AND isnotnull(ss_ticket_number#9)) AND isnotnull(ss_sold_date_sk#1)) AND isnotnull(ss_store_sk#7)) AND isnotnull(ss_customer_sk#3)) AND isnotnull(ss_cdemo_sk#4)) AND isnotnull(ss_promo_sk#8)) AND isnotnull(ss_hdemo_sk#5)) AND isnotnull(ss_addr_sk#6)) + +(499) Exchange +Input [12]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_ticket_number#9, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12] +Arguments: hashpartitioning(ss_item_sk#2, ss_ticket_number#9, 100), ENSURE_REQUIREMENTS, [plan_id=50] + +(500) Sort +Input [12]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_ticket_number#9, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12] +Arguments: [ss_item_sk#2 ASC NULLS FIRST, ss_ticket_number#9 ASC NULLS FIRST], false, 0 + +(501) Scan parquet +Output [2]: [sr_item_sk#13, sr_ticket_number#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_item_sk), IsNotNull(sr_ticket_number)] +ReadSchema: struct + +(502) Filter +Input [2]: [sr_item_sk#13, sr_ticket_number#14] +Condition : (isnotnull(sr_item_sk#13) AND isnotnull(sr_ticket_number#14)) + +(503) Exchange +Input [2]: [sr_item_sk#13, sr_ticket_number#14] +Arguments: hashpartitioning(sr_item_sk#13, sr_ticket_number#14, 100), ENSURE_REQUIREMENTS, [plan_id=51] + +(504) Sort +Input [2]: [sr_item_sk#13, sr_ticket_number#14] +Arguments: [sr_item_sk#13 ASC NULLS FIRST, sr_ticket_number#14 ASC NULLS FIRST], false, 0 + +(505) SortMergeJoin +Left keys [2]: [ss_item_sk#2, ss_ticket_number#9] +Right keys [2]: [sr_item_sk#13, sr_ticket_number#14] +Join type: Inner +Join condition: None + +(506) Project +Output [11]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12] +Input [14]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_ticket_number#9, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, sr_item_sk#13, sr_ticket_number#14] + +(507) Exchange +Input [11]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=52] + +(508) Sort +Input [11]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false, 0 + +(509) Scan parquet +Output [3]: [cs_item_sk#15, cs_order_number#16, cs_ext_list_price#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_order_number)] +ReadSchema: struct + +(510) Filter +Input [3]: [cs_item_sk#15, cs_order_number#16, cs_ext_list_price#17] +Condition : (isnotnull(cs_item_sk#15) AND isnotnull(cs_order_number#16)) + +(511) Exchange +Input [3]: [cs_item_sk#15, cs_order_number#16, cs_ext_list_price#17] +Arguments: hashpartitioning(cs_item_sk#15, cs_order_number#16, 100), ENSURE_REQUIREMENTS, [plan_id=53] + +(512) Sort +Input [3]: [cs_item_sk#15, cs_order_number#16, cs_ext_list_price#17] +Arguments: [cs_item_sk#15 ASC NULLS FIRST, cs_order_number#16 ASC NULLS FIRST], false, 0 + +(513) Scan parquet +Output [5]: [cr_item_sk#18, cr_order_number#19, cr_refunded_cash#20, cr_reversed_charge#21, cr_store_credit#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cr_item_sk), IsNotNull(cr_order_number)] +ReadSchema: struct + +(514) Filter +Input [5]: [cr_item_sk#18, cr_order_number#19, cr_refunded_cash#20, cr_reversed_charge#21, cr_store_credit#22] +Condition : (isnotnull(cr_item_sk#18) AND isnotnull(cr_order_number#19)) + +(515) Exchange +Input [5]: [cr_item_sk#18, cr_order_number#19, cr_refunded_cash#20, cr_reversed_charge#21, cr_store_credit#22] +Arguments: hashpartitioning(cr_item_sk#18, cr_order_number#19, 100), ENSURE_REQUIREMENTS, [plan_id=54] + +(516) Sort +Input [5]: [cr_item_sk#18, cr_order_number#19, cr_refunded_cash#20, cr_reversed_charge#21, cr_store_credit#22] +Arguments: [cr_item_sk#18 ASC NULLS FIRST, cr_order_number#19 ASC NULLS FIRST], false, 0 + +(517) SortMergeJoin +Left keys [2]: [cs_item_sk#15, cs_order_number#16] +Right keys [2]: [cr_item_sk#18, cr_order_number#19] +Join type: Inner +Join condition: None + +(518) Project +Output [5]: [cs_item_sk#15, cs_ext_list_price#17, cr_refunded_cash#20, cr_reversed_charge#21, cr_store_credit#22] +Input [8]: [cs_item_sk#15, cs_order_number#16, cs_ext_list_price#17, cr_item_sk#18, cr_order_number#19, cr_refunded_cash#20, cr_reversed_charge#21, cr_store_credit#22] + +(519) HashAggregate +Input [5]: [cs_item_sk#15, cs_ext_list_price#17, cr_refunded_cash#20, cr_reversed_charge#21, cr_store_credit#22] +Keys [1]: [cs_item_sk#15] +Functions [2]: [partial_sum(UnscaledValue(cs_ext_list_price#17)), partial_sum(((cr_refunded_cash#20 + cr_reversed_charge#21) + cr_store_credit#22))] +Aggregate Attributes [3]: [sum#25, sum#26, isEmpty#27] +Results [4]: [cs_item_sk#15, sum#164, sum#165, isEmpty#166] + +(520) Exchange +Input [4]: [cs_item_sk#15, sum#164, sum#165, isEmpty#166] +Arguments: hashpartitioning(cs_item_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=55] + +(521) HashAggregate +Input [4]: [cs_item_sk#15, sum#164, sum#165, isEmpty#166] +Keys [1]: [cs_item_sk#15] +Functions [2]: [sum(UnscaledValue(cs_ext_list_price#17)), sum(((cr_refunded_cash#20 + cr_reversed_charge#21) + cr_store_credit#22))] +Aggregate Attributes [2]: [sum(UnscaledValue(cs_ext_list_price#17))#29, sum(((cr_refunded_cash#20 + cr_reversed_charge#21) + cr_store_credit#22))#30] +Results [3]: [cs_item_sk#15, MakeDecimal(sum(UnscaledValue(cs_ext_list_price#17))#29,17,2) AS sale#31, sum(((cr_refunded_cash#20 + cr_reversed_charge#21) + cr_store_credit#22))#30 AS refund#32] + +(522) Filter +Input [3]: [cs_item_sk#15, sale#31, refund#32] +Condition : ((isnotnull(sale#31) AND isnotnull(refund#32)) AND (cast(sale#31 as decimal(21,2)) > (2 * refund#32))) + +(523) Project +Output [1]: [cs_item_sk#15] +Input [3]: [cs_item_sk#15, sale#31, refund#32] + +(524) Sort +Input [1]: [cs_item_sk#15] +Arguments: [cs_item_sk#15 ASC NULLS FIRST], false, 0 + +(525) SortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [cs_item_sk#15] +Join type: Inner +Join condition: None + +(526) Project +Output [11]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12] +Input [12]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, cs_item_sk#15] + +(527) Exchange +Input [11]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=56] + +(528) Sort +Input [11]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(529) Scan parquet +Output [2]: [d_date_sk#33, d_year#34] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,1999), IsNotNull(d_date_sk)] +ReadSchema: struct + +(530) Filter +Input [2]: [d_date_sk#33, d_year#34] +Condition : ((isnotnull(d_year#34) AND (d_year#34 = 1999)) AND isnotnull(d_date_sk#33)) + +(531) Exchange +Input [2]: [d_date_sk#33, d_year#34] +Arguments: hashpartitioning(d_date_sk#33, 100), ENSURE_REQUIREMENTS, [plan_id=57] + +(532) Sort +Input [2]: [d_date_sk#33, d_year#34] +Arguments: [d_date_sk#33 ASC NULLS FIRST], false, 0 + +(533) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#33] +Join type: Inner +Join condition: None + +(534) Project +Output [11]: [ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34] +Input [13]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_date_sk#33, d_year#34] + +(535) Exchange +Input [11]: [ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34] +Arguments: hashpartitioning(ss_store_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=58] + +(536) Sort +Input [11]: [ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34] +Arguments: [ss_store_sk#7 ASC NULLS FIRST], false, 0 + +(537) Scan parquet +Output [3]: [s_store_sk#35, s_store_name#36, s_zip#37] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk), IsNotNull(s_store_name), IsNotNull(s_zip)] +ReadSchema: struct + +(538) Filter +Input [3]: [s_store_sk#35, s_store_name#36, s_zip#37] +Condition : ((isnotnull(s_store_sk#35) AND isnotnull(s_store_name#36)) AND isnotnull(s_zip#37)) + +(539) Exchange +Input [3]: [s_store_sk#35, s_store_name#36, s_zip#37] +Arguments: hashpartitioning(s_store_sk#35, 100), ENSURE_REQUIREMENTS, [plan_id=59] + +(540) Sort +Input [3]: [s_store_sk#35, s_store_name#36, s_zip#37] +Arguments: [s_store_sk#35 ASC NULLS FIRST], false, 0 + +(541) SortMergeJoin +Left keys [1]: [ss_store_sk#7] +Right keys [1]: [s_store_sk#35] +Join type: Inner +Join condition: None + +(542) Project +Output [12]: [ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37] +Input [14]: [ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_sk#35, s_store_name#36, s_zip#37] + +(543) Exchange +Input [12]: [ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37] +Arguments: hashpartitioning(ss_customer_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=60] + +(544) Sort +Input [12]: [ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37] +Arguments: [ss_customer_sk#3 ASC NULLS FIRST], false, 0 + +(545) Scan parquet +Output [6]: [c_customer_sk#38, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, c_first_shipto_date_sk#42, c_first_sales_date_sk#43] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_first_sales_date_sk), IsNotNull(c_first_shipto_date_sk), IsNotNull(c_current_cdemo_sk), IsNotNull(c_current_hdemo_sk), IsNotNull(c_current_addr_sk)] +ReadSchema: struct + +(546) Filter +Input [6]: [c_customer_sk#38, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, c_first_shipto_date_sk#42, c_first_sales_date_sk#43] +Condition : (((((isnotnull(c_customer_sk#38) AND isnotnull(c_first_sales_date_sk#43)) AND isnotnull(c_first_shipto_date_sk#42)) AND isnotnull(c_current_cdemo_sk#39)) AND isnotnull(c_current_hdemo_sk#40)) AND isnotnull(c_current_addr_sk#41)) + +(547) Exchange +Input [6]: [c_customer_sk#38, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, c_first_shipto_date_sk#42, c_first_sales_date_sk#43] +Arguments: hashpartitioning(c_customer_sk#38, 100), ENSURE_REQUIREMENTS, [plan_id=61] + +(548) Sort +Input [6]: [c_customer_sk#38, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, c_first_shipto_date_sk#42, c_first_sales_date_sk#43] +Arguments: [c_customer_sk#38 ASC NULLS FIRST], false, 0 + +(549) SortMergeJoin +Left keys [1]: [ss_customer_sk#3] +Right keys [1]: [c_customer_sk#38] +Join type: Inner +Join condition: None + +(550) Project +Output [16]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, c_first_shipto_date_sk#42, c_first_sales_date_sk#43] +Input [18]: [ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_customer_sk#38, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, c_first_shipto_date_sk#42, c_first_sales_date_sk#43] + +(551) Exchange +Input [16]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, c_first_shipto_date_sk#42, c_first_sales_date_sk#43] +Arguments: hashpartitioning(c_first_sales_date_sk#43, 100), ENSURE_REQUIREMENTS, [plan_id=62] + +(552) Sort +Input [16]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, c_first_shipto_date_sk#42, c_first_sales_date_sk#43] +Arguments: [c_first_sales_date_sk#43 ASC NULLS FIRST], false, 0 + +(553) Scan parquet +Output [2]: [d_date_sk#44, d_year#45] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date_sk)] +ReadSchema: struct + +(554) Filter +Input [2]: [d_date_sk#44, d_year#45] +Condition : isnotnull(d_date_sk#44) + +(555) Exchange +Input [2]: [d_date_sk#44, d_year#45] +Arguments: hashpartitioning(d_date_sk#44, 100), ENSURE_REQUIREMENTS, [plan_id=63] + +(556) Sort +Input [2]: [d_date_sk#44, d_year#45] +Arguments: [d_date_sk#44 ASC NULLS FIRST], false, 0 + +(557) SortMergeJoin +Left keys [1]: [c_first_sales_date_sk#43] +Right keys [1]: [d_date_sk#44] +Join type: Inner +Join condition: None + +(558) Project +Output [16]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, c_first_shipto_date_sk#42, d_year#45] +Input [18]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, c_first_shipto_date_sk#42, c_first_sales_date_sk#43, d_date_sk#44, d_year#45] + +(559) Exchange +Input [16]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, c_first_shipto_date_sk#42, d_year#45] +Arguments: hashpartitioning(c_first_shipto_date_sk#42, 100), ENSURE_REQUIREMENTS, [plan_id=64] + +(560) Sort +Input [16]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, c_first_shipto_date_sk#42, d_year#45] +Arguments: [c_first_shipto_date_sk#42 ASC NULLS FIRST], false, 0 + +(561) Scan parquet +Output [2]: [d_date_sk#46, d_year#47] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date_sk)] +ReadSchema: struct + +(562) Filter +Input [2]: [d_date_sk#46, d_year#47] +Condition : isnotnull(d_date_sk#46) + +(563) Exchange +Input [2]: [d_date_sk#46, d_year#47] +Arguments: hashpartitioning(d_date_sk#46, 100), ENSURE_REQUIREMENTS, [plan_id=65] + +(564) Sort +Input [2]: [d_date_sk#46, d_year#47] +Arguments: [d_date_sk#46 ASC NULLS FIRST], false, 0 + +(565) SortMergeJoin +Left keys [1]: [c_first_shipto_date_sk#42] +Right keys [1]: [d_date_sk#46] +Join type: Inner +Join condition: None + +(566) Project +Output [16]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47] +Input [18]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, c_first_shipto_date_sk#42, d_year#45, d_date_sk#46, d_year#47] + +(567) Exchange +Input [16]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47] +Arguments: hashpartitioning(ss_cdemo_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=66] + +(568) Sort +Input [16]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47] +Arguments: [ss_cdemo_sk#4 ASC NULLS FIRST], false, 0 + +(569) Scan parquet +Output [2]: [cd_demo_sk#48, cd_marital_status#49] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_demo_sk), IsNotNull(cd_marital_status)] +ReadSchema: struct + +(570) Filter +Input [2]: [cd_demo_sk#48, cd_marital_status#49] +Condition : (isnotnull(cd_demo_sk#48) AND isnotnull(cd_marital_status#49)) + +(571) Exchange +Input [2]: [cd_demo_sk#48, cd_marital_status#49] +Arguments: hashpartitioning(cd_demo_sk#48, 100), ENSURE_REQUIREMENTS, [plan_id=67] + +(572) Sort +Input [2]: [cd_demo_sk#48, cd_marital_status#49] +Arguments: [cd_demo_sk#48 ASC NULLS FIRST], false, 0 + +(573) SortMergeJoin +Left keys [1]: [ss_cdemo_sk#4] +Right keys [1]: [cd_demo_sk#48] +Join type: Inner +Join condition: None + +(574) Project +Output [16]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47, cd_marital_status#49] +Input [18]: [ss_item_sk#2, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47, cd_demo_sk#48, cd_marital_status#49] + +(575) Exchange +Input [16]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47, cd_marital_status#49] +Arguments: hashpartitioning(c_current_cdemo_sk#39, 100), ENSURE_REQUIREMENTS, [plan_id=68] + +(576) Sort +Input [16]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47, cd_marital_status#49] +Arguments: [c_current_cdemo_sk#39 ASC NULLS FIRST], false, 0 + +(577) Scan parquet +Output [2]: [cd_demo_sk#50, cd_marital_status#51] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_demo_sk), IsNotNull(cd_marital_status)] +ReadSchema: struct + +(578) Filter +Input [2]: [cd_demo_sk#50, cd_marital_status#51] +Condition : (isnotnull(cd_demo_sk#50) AND isnotnull(cd_marital_status#51)) + +(579) Exchange +Input [2]: [cd_demo_sk#50, cd_marital_status#51] +Arguments: hashpartitioning(cd_demo_sk#50, 100), ENSURE_REQUIREMENTS, [plan_id=69] + +(580) Sort +Input [2]: [cd_demo_sk#50, cd_marital_status#51] +Arguments: [cd_demo_sk#50 ASC NULLS FIRST], false, 0 + +(581) SortMergeJoin +Left keys [1]: [c_current_cdemo_sk#39] +Right keys [1]: [cd_demo_sk#50] +Join type: Inner +Join condition: NOT (cd_marital_status#49 = cd_marital_status#51) + +(582) Project +Output [14]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47] +Input [18]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_cdemo_sk#39, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47, cd_marital_status#49, cd_demo_sk#50, cd_marital_status#51] + +(583) Exchange +Input [14]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47] +Arguments: hashpartitioning(ss_promo_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=70] + +(584) Sort +Input [14]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47] +Arguments: [ss_promo_sk#8 ASC NULLS FIRST], false, 0 + +(585) Scan parquet +Output [1]: [p_promo_sk#52] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(p_promo_sk)] +ReadSchema: struct + +(586) Filter +Input [1]: [p_promo_sk#52] +Condition : isnotnull(p_promo_sk#52) + +(587) Exchange +Input [1]: [p_promo_sk#52] +Arguments: hashpartitioning(p_promo_sk#52, 100), ENSURE_REQUIREMENTS, [plan_id=71] + +(588) Sort +Input [1]: [p_promo_sk#52] +Arguments: [p_promo_sk#52 ASC NULLS FIRST], false, 0 + +(589) SortMergeJoin +Left keys [1]: [ss_promo_sk#8] +Right keys [1]: [p_promo_sk#52] +Join type: Inner +Join condition: None + +(590) Project +Output [13]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47] +Input [15]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_promo_sk#8, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47, p_promo_sk#52] + +(591) Exchange +Input [13]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47] +Arguments: hashpartitioning(ss_hdemo_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=72] + +(592) Sort +Input [13]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47] +Arguments: [ss_hdemo_sk#5 ASC NULLS FIRST], false, 0 + +(593) Scan parquet +Output [2]: [hd_demo_sk#53, hd_income_band_sk#54] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(hd_demo_sk), IsNotNull(hd_income_band_sk)] +ReadSchema: struct + +(594) Filter +Input [2]: [hd_demo_sk#53, hd_income_band_sk#54] +Condition : (isnotnull(hd_demo_sk#53) AND isnotnull(hd_income_band_sk#54)) + +(595) Exchange +Input [2]: [hd_demo_sk#53, hd_income_band_sk#54] +Arguments: hashpartitioning(hd_demo_sk#53, 100), ENSURE_REQUIREMENTS, [plan_id=73] + +(596) Sort +Input [2]: [hd_demo_sk#53, hd_income_band_sk#54] +Arguments: [hd_demo_sk#53 ASC NULLS FIRST], false, 0 + +(597) SortMergeJoin +Left keys [1]: [ss_hdemo_sk#5] +Right keys [1]: [hd_demo_sk#53] +Join type: Inner +Join condition: None + +(598) Project +Output [13]: [ss_item_sk#2, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54] +Input [15]: [ss_item_sk#2, ss_hdemo_sk#5, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47, hd_demo_sk#53, hd_income_band_sk#54] + +(599) Exchange +Input [13]: [ss_item_sk#2, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54] +Arguments: hashpartitioning(c_current_hdemo_sk#40, 100), ENSURE_REQUIREMENTS, [plan_id=74] + +(600) Sort +Input [13]: [ss_item_sk#2, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54] +Arguments: [c_current_hdemo_sk#40 ASC NULLS FIRST], false, 0 + +(601) Scan parquet +Output [2]: [hd_demo_sk#55, hd_income_band_sk#56] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(hd_demo_sk), IsNotNull(hd_income_band_sk)] +ReadSchema: struct + +(602) Filter +Input [2]: [hd_demo_sk#55, hd_income_band_sk#56] +Condition : (isnotnull(hd_demo_sk#55) AND isnotnull(hd_income_band_sk#56)) + +(603) Exchange +Input [2]: [hd_demo_sk#55, hd_income_band_sk#56] +Arguments: hashpartitioning(hd_demo_sk#55, 100), ENSURE_REQUIREMENTS, [plan_id=75] + +(604) Sort +Input [2]: [hd_demo_sk#55, hd_income_band_sk#56] +Arguments: [hd_demo_sk#55 ASC NULLS FIRST], false, 0 + +(605) SortMergeJoin +Left keys [1]: [c_current_hdemo_sk#40] +Right keys [1]: [hd_demo_sk#55] +Join type: Inner +Join condition: None + +(606) Project +Output [13]: [ss_item_sk#2, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56] +Input [15]: [ss_item_sk#2, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_hdemo_sk#40, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54, hd_demo_sk#55, hd_income_band_sk#56] + +(607) Exchange +Input [13]: [ss_item_sk#2, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56] +Arguments: hashpartitioning(ss_addr_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=76] + +(608) Sort +Input [13]: [ss_item_sk#2, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56] +Arguments: [ss_addr_sk#6 ASC NULLS FIRST], false, 0 + +(609) Scan parquet +Output [5]: [ca_address_sk#57, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk)] +ReadSchema: struct + +(610) Filter +Input [5]: [ca_address_sk#57, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61] +Condition : isnotnull(ca_address_sk#57) + +(611) Exchange +Input [5]: [ca_address_sk#57, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61] +Arguments: hashpartitioning(ca_address_sk#57, 100), ENSURE_REQUIREMENTS, [plan_id=77] + +(612) Sort +Input [5]: [ca_address_sk#57, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61] +Arguments: [ca_address_sk#57 ASC NULLS FIRST], false, 0 + +(613) SortMergeJoin +Left keys [1]: [ss_addr_sk#6] +Right keys [1]: [ca_address_sk#57] +Join type: Inner +Join condition: None + +(614) Project +Output [16]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61] +Input [18]: [ss_item_sk#2, ss_addr_sk#6, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56, ca_address_sk#57, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61] + +(615) Exchange +Input [16]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61] +Arguments: hashpartitioning(c_current_addr_sk#41, 100), ENSURE_REQUIREMENTS, [plan_id=78] + +(616) Sort +Input [16]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61] +Arguments: [c_current_addr_sk#41 ASC NULLS FIRST], false, 0 + +(617) Scan parquet +Output [5]: [ca_address_sk#62, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk)] +ReadSchema: struct + +(618) Filter +Input [5]: [ca_address_sk#62, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Condition : isnotnull(ca_address_sk#62) + +(619) Exchange +Input [5]: [ca_address_sk#62, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Arguments: hashpartitioning(ca_address_sk#62, 100), ENSURE_REQUIREMENTS, [plan_id=79] + +(620) Sort +Input [5]: [ca_address_sk#62, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Arguments: [ca_address_sk#62 ASC NULLS FIRST], false, 0 + +(621) SortMergeJoin +Left keys [1]: [c_current_addr_sk#41] +Right keys [1]: [ca_address_sk#62] +Join type: Inner +Join condition: None + +(622) Project +Output [19]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Input [21]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, c_current_addr_sk#41, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_address_sk#62, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] + +(623) Exchange +Input [19]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Arguments: hashpartitioning(hd_income_band_sk#54, 100), ENSURE_REQUIREMENTS, [plan_id=80] + +(624) Sort +Input [19]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Arguments: [hd_income_band_sk#54 ASC NULLS FIRST], false, 0 + +(625) Scan parquet +Output [1]: [ib_income_band_sk#67] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ib_income_band_sk)] +ReadSchema: struct + +(626) Filter +Input [1]: [ib_income_band_sk#67] +Condition : isnotnull(ib_income_band_sk#67) + +(627) Exchange +Input [1]: [ib_income_band_sk#67] +Arguments: hashpartitioning(ib_income_band_sk#67, 100), ENSURE_REQUIREMENTS, [plan_id=81] + +(628) Sort +Input [1]: [ib_income_band_sk#67] +Arguments: [ib_income_band_sk#67 ASC NULLS FIRST], false, 0 + +(629) SortMergeJoin +Left keys [1]: [hd_income_band_sk#54] +Right keys [1]: [ib_income_band_sk#67] +Join type: Inner +Join condition: None + +(630) Project +Output [18]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Input [20]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, hd_income_band_sk#54, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66, ib_income_band_sk#67] + +(631) Exchange +Input [18]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Arguments: hashpartitioning(hd_income_band_sk#56, 100), ENSURE_REQUIREMENTS, [plan_id=82] + +(632) Sort +Input [18]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Arguments: [hd_income_band_sk#56 ASC NULLS FIRST], false, 0 + +(633) Scan parquet +Output [1]: [ib_income_band_sk#68] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ib_income_band_sk)] +ReadSchema: struct + +(634) Filter +Input [1]: [ib_income_band_sk#68] +Condition : isnotnull(ib_income_band_sk#68) + +(635) Exchange +Input [1]: [ib_income_band_sk#68] +Arguments: hashpartitioning(ib_income_band_sk#68, 100), ENSURE_REQUIREMENTS, [plan_id=83] + +(636) Sort +Input [1]: [ib_income_band_sk#68] +Arguments: [ib_income_band_sk#68 ASC NULLS FIRST], false, 0 + +(637) SortMergeJoin +Left keys [1]: [hd_income_band_sk#56] +Right keys [1]: [ib_income_band_sk#68] +Join type: Inner +Join condition: None + +(638) Project +Output [17]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Input [19]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, hd_income_band_sk#56, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66, ib_income_band_sk#68] + +(639) Exchange +Input [17]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=84] + +(640) Sort +Input [17]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false, 0 + +(641) Scan parquet +Output [4]: [i_item_sk#69, i_current_price#70, i_color#71, i_product_name#72] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_current_price), In(i_color, [burlywood,floral,indian,medium,purple,spring]), GreaterThanOrEqual(i_current_price,64.00), LessThanOrEqual(i_current_price,74.00), GreaterThanOrEqual(i_current_price,65.00), LessThanOrEqual(i_current_price,79.00), IsNotNull(i_item_sk)] +ReadSchema: struct + +(642) Filter +Input [4]: [i_item_sk#69, i_current_price#70, i_color#71, i_product_name#72] +Condition : ((((((isnotnull(i_current_price#70) AND i_color#71 IN (purple,burlywood,indian,spring,floral,medium)) AND (i_current_price#70 >= 64.00)) AND (i_current_price#70 <= 74.00)) AND (i_current_price#70 >= 65.00)) AND (i_current_price#70 <= 79.00)) AND isnotnull(i_item_sk#69)) + +(643) Project +Output [2]: [i_item_sk#69, i_product_name#72] +Input [4]: [i_item_sk#69, i_current_price#70, i_color#71, i_product_name#72] + +(644) Exchange +Input [2]: [i_item_sk#69, i_product_name#72] +Arguments: hashpartitioning(i_item_sk#69, 100), ENSURE_REQUIREMENTS, [plan_id=85] + +(645) Sort +Input [2]: [i_item_sk#69, i_product_name#72] +Arguments: [i_item_sk#69 ASC NULLS FIRST], false, 0 + +(646) SortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#69] +Join type: Inner +Join condition: None + +(647) Project +Output [18]: [ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, d_year#45, d_year#47, s_store_name#36, s_zip#37, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66, i_item_sk#69, i_product_name#72] +Input [19]: [ss_item_sk#2, ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, s_store_name#36, s_zip#37, d_year#45, d_year#47, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66, i_item_sk#69, i_product_name#72] + +(648) HashAggregate +Input [18]: [ss_wholesale_cost#10, ss_list_price#11, ss_coupon_amt#12, d_year#34, d_year#45, d_year#47, s_store_name#36, s_zip#37, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66, i_item_sk#69, i_product_name#72] +Keys [15]: [i_product_name#72, i_item_sk#69, s_store_name#36, s_zip#37, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66, d_year#34, d_year#45, d_year#47] +Functions [4]: [partial_count(1), partial_sum(UnscaledValue(ss_wholesale_cost#10)), partial_sum(UnscaledValue(ss_list_price#11)), partial_sum(UnscaledValue(ss_coupon_amt#12))] +Aggregate Attributes [4]: [count#76, sum#77, sum#78, sum#79] +Results [19]: [i_product_name#72, i_item_sk#69, s_store_name#36, s_zip#37, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66, d_year#34, d_year#45, d_year#47, count#167, sum#168, sum#169, sum#170] + +(649) HashAggregate +Input [19]: [i_product_name#72, i_item_sk#69, s_store_name#36, s_zip#37, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66, d_year#34, d_year#45, d_year#47, count#167, sum#168, sum#169, sum#170] +Keys [15]: [i_product_name#72, i_item_sk#69, s_store_name#36, s_zip#37, ca_street_number#58, ca_street_name#59, ca_city#60, ca_zip#61, ca_street_number#63, ca_street_name#64, ca_city#65, ca_zip#66, d_year#34, d_year#45, d_year#47] +Functions [4]: [count(1), sum(UnscaledValue(ss_wholesale_cost#10)), sum(UnscaledValue(ss_list_price#11)), sum(UnscaledValue(ss_coupon_amt#12))] +Aggregate Attributes [4]: [count(1)#80, sum(UnscaledValue(ss_wholesale_cost#10))#81, sum(UnscaledValue(ss_list_price#11))#82, sum(UnscaledValue(ss_coupon_amt#12))#83] +Results [17]: [i_product_name#72 AS product_name#84, i_item_sk#69 AS item_sk#85, s_store_name#36 AS store_name#86, s_zip#37 AS store_zip#87, ca_street_number#58 AS b_street_number#88, ca_street_name#59 AS b_streen_name#89, ca_city#60 AS b_city#90, ca_zip#61 AS b_zip#91, ca_street_number#63 AS c_street_number#92, ca_street_name#64 AS c_street_name#93, ca_city#65 AS c_city#94, ca_zip#66 AS c_zip#95, d_year#34 AS syear#96, count(1)#80 AS cnt#97, MakeDecimal(sum(UnscaledValue(ss_wholesale_cost#10))#81,17,2) AS s1#98, MakeDecimal(sum(UnscaledValue(ss_list_price#11))#82,17,2) AS s2#99, MakeDecimal(sum(UnscaledValue(ss_coupon_amt#12))#83,17,2) AS s3#100] + +(650) Exchange +Input [17]: [product_name#84, item_sk#85, store_name#86, store_zip#87, b_street_number#88, b_streen_name#89, b_city#90, b_zip#91, c_street_number#92, c_street_name#93, c_city#94, c_zip#95, syear#96, cnt#97, s1#98, s2#99, s3#100] +Arguments: hashpartitioning(item_sk#85, store_name#86, store_zip#87, 100), ENSURE_REQUIREMENTS, [plan_id=86] + +(651) Sort +Input [17]: [product_name#84, item_sk#85, store_name#86, store_zip#87, b_street_number#88, b_streen_name#89, b_city#90, b_zip#91, c_street_number#92, c_street_name#93, c_city#94, c_zip#95, syear#96, cnt#97, s1#98, s2#99, s3#100] +Arguments: [item_sk#85 ASC NULLS FIRST, store_name#86 ASC NULLS FIRST, store_zip#87 ASC NULLS FIRST], false, 0 + +(652) Scan parquet +Output [12]: [ss_sold_date_sk#101, ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_store_sk#107, ss_promo_sk#108, ss_ticket_number#171, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_ticket_number), IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk), IsNotNull(ss_customer_sk), IsNotNull(ss_cdemo_sk), IsNotNull(ss_promo_sk), IsNotNull(ss_hdemo_sk), IsNotNull(ss_addr_sk)] +ReadSchema: struct + +(653) Filter +Input [12]: [ss_sold_date_sk#101, ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_store_sk#107, ss_promo_sk#108, ss_ticket_number#171, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111] +Condition : ((((((((isnotnull(ss_item_sk#102) AND isnotnull(ss_ticket_number#171)) AND isnotnull(ss_sold_date_sk#101)) AND isnotnull(ss_store_sk#107)) AND isnotnull(ss_customer_sk#103)) AND isnotnull(ss_cdemo_sk#104)) AND isnotnull(ss_promo_sk#108)) AND isnotnull(ss_hdemo_sk#105)) AND isnotnull(ss_addr_sk#106)) + +(654) Exchange +Input [12]: [ss_sold_date_sk#101, ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_store_sk#107, ss_promo_sk#108, ss_ticket_number#171, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111] +Arguments: hashpartitioning(ss_item_sk#102, ss_ticket_number#171, 100), ENSURE_REQUIREMENTS, [plan_id=87] + +(655) Sort +Input [12]: [ss_sold_date_sk#101, ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_store_sk#107, ss_promo_sk#108, ss_ticket_number#171, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111] +Arguments: [ss_item_sk#102 ASC NULLS FIRST, ss_ticket_number#171 ASC NULLS FIRST], false, 0 + +(656) Scan parquet +Output [2]: [sr_item_sk#172, sr_ticket_number#173] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_item_sk), IsNotNull(sr_ticket_number)] +ReadSchema: struct + +(657) Filter +Input [2]: [sr_item_sk#172, sr_ticket_number#173] +Condition : (isnotnull(sr_item_sk#172) AND isnotnull(sr_ticket_number#173)) + +(658) Exchange +Input [2]: [sr_item_sk#172, sr_ticket_number#173] +Arguments: hashpartitioning(sr_item_sk#172, sr_ticket_number#173, 100), ENSURE_REQUIREMENTS, [plan_id=88] + +(659) Sort +Input [2]: [sr_item_sk#172, sr_ticket_number#173] +Arguments: [sr_item_sk#172 ASC NULLS FIRST, sr_ticket_number#173 ASC NULLS FIRST], false, 0 + +(660) SortMergeJoin +Left keys [2]: [ss_item_sk#102, ss_ticket_number#171] +Right keys [2]: [sr_item_sk#172, sr_ticket_number#173] +Join type: Inner +Join condition: None + +(661) Project +Output [11]: [ss_sold_date_sk#101, ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_store_sk#107, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111] +Input [14]: [ss_sold_date_sk#101, ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_store_sk#107, ss_promo_sk#108, ss_ticket_number#171, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, sr_item_sk#172, sr_ticket_number#173] + +(662) Exchange +Input [11]: [ss_sold_date_sk#101, ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_store_sk#107, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111] +Arguments: hashpartitioning(ss_item_sk#102, 100), ENSURE_REQUIREMENTS, [plan_id=89] + +(663) Sort +Input [11]: [ss_sold_date_sk#101, ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_store_sk#107, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111] +Arguments: [ss_item_sk#102 ASC NULLS FIRST], false, 0 + +(664) Scan parquet +Output [3]: [cs_item_sk#174, cs_order_number#175, cs_ext_list_price#176] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_order_number)] +ReadSchema: struct + +(665) Filter +Input [3]: [cs_item_sk#174, cs_order_number#175, cs_ext_list_price#176] +Condition : (isnotnull(cs_item_sk#174) AND isnotnull(cs_order_number#175)) + +(666) Exchange +Input [3]: [cs_item_sk#174, cs_order_number#175, cs_ext_list_price#176] +Arguments: hashpartitioning(cs_item_sk#174, cs_order_number#175, 100), ENSURE_REQUIREMENTS, [plan_id=90] + +(667) Sort +Input [3]: [cs_item_sk#174, cs_order_number#175, cs_ext_list_price#176] +Arguments: [cs_item_sk#174 ASC NULLS FIRST, cs_order_number#175 ASC NULLS FIRST], false, 0 + +(668) Scan parquet +Output [5]: [cr_item_sk#177, cr_order_number#178, cr_refunded_cash#179, cr_reversed_charge#180, cr_store_credit#181] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cr_item_sk), IsNotNull(cr_order_number)] +ReadSchema: struct + +(669) Filter +Input [5]: [cr_item_sk#177, cr_order_number#178, cr_refunded_cash#179, cr_reversed_charge#180, cr_store_credit#181] +Condition : (isnotnull(cr_item_sk#177) AND isnotnull(cr_order_number#178)) + +(670) Exchange +Input [5]: [cr_item_sk#177, cr_order_number#178, cr_refunded_cash#179, cr_reversed_charge#180, cr_store_credit#181] +Arguments: hashpartitioning(cr_item_sk#177, cr_order_number#178, 100), ENSURE_REQUIREMENTS, [plan_id=91] + +(671) Sort +Input [5]: [cr_item_sk#177, cr_order_number#178, cr_refunded_cash#179, cr_reversed_charge#180, cr_store_credit#181] +Arguments: [cr_item_sk#177 ASC NULLS FIRST, cr_order_number#178 ASC NULLS FIRST], false, 0 + +(672) SortMergeJoin +Left keys [2]: [cs_item_sk#174, cs_order_number#175] +Right keys [2]: [cr_item_sk#177, cr_order_number#178] +Join type: Inner +Join condition: None + +(673) Project +Output [5]: [cs_item_sk#174, cs_ext_list_price#176, cr_refunded_cash#179, cr_reversed_charge#180, cr_store_credit#181] +Input [8]: [cs_item_sk#174, cs_order_number#175, cs_ext_list_price#176, cr_item_sk#177, cr_order_number#178, cr_refunded_cash#179, cr_reversed_charge#180, cr_store_credit#181] + +(674) HashAggregate +Input [5]: [cs_item_sk#174, cs_ext_list_price#176, cr_refunded_cash#179, cr_reversed_charge#180, cr_store_credit#181] +Keys [1]: [cs_item_sk#174] +Functions [2]: [partial_sum(UnscaledValue(cs_ext_list_price#176)), partial_sum(((cr_refunded_cash#179 + cr_reversed_charge#180) + cr_store_credit#181))] +Aggregate Attributes [3]: [sum#182, sum#183, isEmpty#184] +Results [4]: [cs_item_sk#174, sum#185, sum#186, isEmpty#187] + +(675) Exchange +Input [4]: [cs_item_sk#174, sum#185, sum#186, isEmpty#187] +Arguments: hashpartitioning(cs_item_sk#174, 100), ENSURE_REQUIREMENTS, [plan_id=92] + +(676) HashAggregate +Input [4]: [cs_item_sk#174, sum#185, sum#186, isEmpty#187] +Keys [1]: [cs_item_sk#174] +Functions [2]: [sum(UnscaledValue(cs_ext_list_price#176)), sum(((cr_refunded_cash#179 + cr_reversed_charge#180) + cr_store_credit#181))] +Aggregate Attributes [2]: [sum(UnscaledValue(cs_ext_list_price#176))#29, sum(((cr_refunded_cash#179 + cr_reversed_charge#180) + cr_store_credit#181))#30] +Results [3]: [cs_item_sk#174, MakeDecimal(sum(UnscaledValue(cs_ext_list_price#176))#29,17,2) AS sale#31, sum(((cr_refunded_cash#179 + cr_reversed_charge#180) + cr_store_credit#181))#30 AS refund#32] + +(677) Filter +Input [3]: [cs_item_sk#174, sale#31, refund#32] +Condition : ((isnotnull(sale#31) AND isnotnull(refund#32)) AND (cast(sale#31 as decimal(21,2)) > (2 * refund#32))) + +(678) Project +Output [1]: [cs_item_sk#174] +Input [3]: [cs_item_sk#174, sale#31, refund#32] + +(679) Sort +Input [1]: [cs_item_sk#174] +Arguments: [cs_item_sk#174 ASC NULLS FIRST], false, 0 + +(680) SortMergeJoin +Left keys [1]: [ss_item_sk#102] +Right keys [1]: [cs_item_sk#174] +Join type: Inner +Join condition: None + +(681) Project +Output [11]: [ss_sold_date_sk#101, ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_store_sk#107, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111] +Input [12]: [ss_sold_date_sk#101, ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_store_sk#107, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, cs_item_sk#174] + +(682) Exchange +Input [11]: [ss_sold_date_sk#101, ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_store_sk#107, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111] +Arguments: hashpartitioning(ss_sold_date_sk#101, 100), ENSURE_REQUIREMENTS, [plan_id=93] + +(683) Sort +Input [11]: [ss_sold_date_sk#101, ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_store_sk#107, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111] +Arguments: [ss_sold_date_sk#101 ASC NULLS FIRST], false, 0 + +(684) Scan parquet +Output [2]: [d_date_sk#112, d_year#113] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(685) Filter +Input [2]: [d_date_sk#112, d_year#113] +Condition : ((isnotnull(d_year#113) AND (d_year#113 = 2000)) AND isnotnull(d_date_sk#112)) + +(686) Exchange +Input [2]: [d_date_sk#112, d_year#113] +Arguments: hashpartitioning(d_date_sk#112, 100), ENSURE_REQUIREMENTS, [plan_id=94] + +(687) Sort +Input [2]: [d_date_sk#112, d_year#113] +Arguments: [d_date_sk#112 ASC NULLS FIRST], false, 0 + +(688) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#101] +Right keys [1]: [d_date_sk#112] +Join type: Inner +Join condition: None + +(689) Project +Output [11]: [ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_store_sk#107, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113] +Input [13]: [ss_sold_date_sk#101, ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_store_sk#107, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_date_sk#112, d_year#113] + +(690) Exchange +Input [11]: [ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_store_sk#107, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113] +Arguments: hashpartitioning(ss_store_sk#107, 100), ENSURE_REQUIREMENTS, [plan_id=95] + +(691) Sort +Input [11]: [ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_store_sk#107, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113] +Arguments: [ss_store_sk#107 ASC NULLS FIRST], false, 0 + +(692) Scan parquet +Output [3]: [s_store_sk#114, s_store_name#115, s_zip#116] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk), IsNotNull(s_store_name), IsNotNull(s_zip)] +ReadSchema: struct + +(693) Filter +Input [3]: [s_store_sk#114, s_store_name#115, s_zip#116] +Condition : ((isnotnull(s_store_sk#114) AND isnotnull(s_store_name#115)) AND isnotnull(s_zip#116)) + +(694) Exchange +Input [3]: [s_store_sk#114, s_store_name#115, s_zip#116] +Arguments: hashpartitioning(s_store_sk#114, 100), ENSURE_REQUIREMENTS, [plan_id=96] + +(695) Sort +Input [3]: [s_store_sk#114, s_store_name#115, s_zip#116] +Arguments: [s_store_sk#114 ASC NULLS FIRST], false, 0 + +(696) SortMergeJoin +Left keys [1]: [ss_store_sk#107] +Right keys [1]: [s_store_sk#114] +Join type: Inner +Join condition: None + +(697) Project +Output [12]: [ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116] +Input [14]: [ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_store_sk#107, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_sk#114, s_store_name#115, s_zip#116] + +(698) Exchange +Input [12]: [ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116] +Arguments: hashpartitioning(ss_customer_sk#103, 100), ENSURE_REQUIREMENTS, [plan_id=97] + +(699) Sort +Input [12]: [ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116] +Arguments: [ss_customer_sk#103 ASC NULLS FIRST], false, 0 + +(700) Scan parquet +Output [6]: [c_customer_sk#117, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, c_first_sales_date_sk#122] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_first_sales_date_sk), IsNotNull(c_first_shipto_date_sk), IsNotNull(c_current_cdemo_sk), IsNotNull(c_current_hdemo_sk), IsNotNull(c_current_addr_sk)] +ReadSchema: struct + +(701) Filter +Input [6]: [c_customer_sk#117, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, c_first_sales_date_sk#122] +Condition : (((((isnotnull(c_customer_sk#117) AND isnotnull(c_first_sales_date_sk#122)) AND isnotnull(c_first_shipto_date_sk#121)) AND isnotnull(c_current_cdemo_sk#118)) AND isnotnull(c_current_hdemo_sk#119)) AND isnotnull(c_current_addr_sk#120)) + +(702) Exchange +Input [6]: [c_customer_sk#117, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, c_first_sales_date_sk#122] +Arguments: hashpartitioning(c_customer_sk#117, 100), ENSURE_REQUIREMENTS, [plan_id=98] + +(703) Sort +Input [6]: [c_customer_sk#117, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, c_first_sales_date_sk#122] +Arguments: [c_customer_sk#117 ASC NULLS FIRST], false, 0 + +(704) SortMergeJoin +Left keys [1]: [ss_customer_sk#103] +Right keys [1]: [c_customer_sk#117] +Join type: Inner +Join condition: None + +(705) Project +Output [16]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, c_first_sales_date_sk#122] +Input [18]: [ss_item_sk#102, ss_customer_sk#103, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_customer_sk#117, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, c_first_sales_date_sk#122] + +(706) Exchange +Input [16]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, c_first_sales_date_sk#122] +Arguments: hashpartitioning(c_first_sales_date_sk#122, 100), ENSURE_REQUIREMENTS, [plan_id=99] + +(707) Sort +Input [16]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, c_first_sales_date_sk#122] +Arguments: [c_first_sales_date_sk#122 ASC NULLS FIRST], false, 0 + +(708) Scan parquet +Output [2]: [d_date_sk#123, d_year#124] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date_sk)] +ReadSchema: struct + +(709) Filter +Input [2]: [d_date_sk#123, d_year#124] +Condition : isnotnull(d_date_sk#123) + +(710) Exchange +Input [2]: [d_date_sk#123, d_year#124] +Arguments: hashpartitioning(d_date_sk#123, 100), ENSURE_REQUIREMENTS, [plan_id=100] + +(711) Sort +Input [2]: [d_date_sk#123, d_year#124] +Arguments: [d_date_sk#123 ASC NULLS FIRST], false, 0 + +(712) SortMergeJoin +Left keys [1]: [c_first_sales_date_sk#122] +Right keys [1]: [d_date_sk#123] +Join type: Inner +Join condition: None + +(713) Project +Output [16]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, d_year#124] +Input [18]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, c_first_sales_date_sk#122, d_date_sk#123, d_year#124] + +(714) Exchange +Input [16]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, d_year#124] +Arguments: hashpartitioning(c_first_shipto_date_sk#121, 100), ENSURE_REQUIREMENTS, [plan_id=101] + +(715) Sort +Input [16]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, d_year#124] +Arguments: [c_first_shipto_date_sk#121 ASC NULLS FIRST], false, 0 + +(716) Scan parquet +Output [2]: [d_date_sk#125, d_year#126] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date_sk)] +ReadSchema: struct + +(717) Filter +Input [2]: [d_date_sk#125, d_year#126] +Condition : isnotnull(d_date_sk#125) + +(718) Exchange +Input [2]: [d_date_sk#125, d_year#126] +Arguments: hashpartitioning(d_date_sk#125, 100), ENSURE_REQUIREMENTS, [plan_id=102] + +(719) Sort +Input [2]: [d_date_sk#125, d_year#126] +Arguments: [d_date_sk#125 ASC NULLS FIRST], false, 0 + +(720) SortMergeJoin +Left keys [1]: [c_first_shipto_date_sk#121] +Right keys [1]: [d_date_sk#125] +Join type: Inner +Join condition: None + +(721) Project +Output [16]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126] +Input [18]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, c_first_shipto_date_sk#121, d_year#124, d_date_sk#125, d_year#126] + +(722) Exchange +Input [16]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126] +Arguments: hashpartitioning(ss_cdemo_sk#104, 100), ENSURE_REQUIREMENTS, [plan_id=103] + +(723) Sort +Input [16]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126] +Arguments: [ss_cdemo_sk#104 ASC NULLS FIRST], false, 0 + +(724) Scan parquet +Output [2]: [cd_demo_sk#127, cd_marital_status#128] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_demo_sk), IsNotNull(cd_marital_status)] +ReadSchema: struct + +(725) Filter +Input [2]: [cd_demo_sk#127, cd_marital_status#128] +Condition : (isnotnull(cd_demo_sk#127) AND isnotnull(cd_marital_status#128)) + +(726) Exchange +Input [2]: [cd_demo_sk#127, cd_marital_status#128] +Arguments: hashpartitioning(cd_demo_sk#127, 100), ENSURE_REQUIREMENTS, [plan_id=104] + +(727) Sort +Input [2]: [cd_demo_sk#127, cd_marital_status#128] +Arguments: [cd_demo_sk#127 ASC NULLS FIRST], false, 0 + +(728) SortMergeJoin +Left keys [1]: [ss_cdemo_sk#104] +Right keys [1]: [cd_demo_sk#127] +Join type: Inner +Join condition: None + +(729) Project +Output [16]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126, cd_marital_status#128] +Input [18]: [ss_item_sk#102, ss_cdemo_sk#104, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126, cd_demo_sk#127, cd_marital_status#128] + +(730) Exchange +Input [16]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126, cd_marital_status#128] +Arguments: hashpartitioning(c_current_cdemo_sk#118, 100), ENSURE_REQUIREMENTS, [plan_id=105] + +(731) Sort +Input [16]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126, cd_marital_status#128] +Arguments: [c_current_cdemo_sk#118 ASC NULLS FIRST], false, 0 + +(732) Scan parquet +Output [2]: [cd_demo_sk#129, cd_marital_status#130] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_demo_sk), IsNotNull(cd_marital_status)] +ReadSchema: struct + +(733) Filter +Input [2]: [cd_demo_sk#129, cd_marital_status#130] +Condition : (isnotnull(cd_demo_sk#129) AND isnotnull(cd_marital_status#130)) + +(734) Exchange +Input [2]: [cd_demo_sk#129, cd_marital_status#130] +Arguments: hashpartitioning(cd_demo_sk#129, 100), ENSURE_REQUIREMENTS, [plan_id=106] + +(735) Sort +Input [2]: [cd_demo_sk#129, cd_marital_status#130] +Arguments: [cd_demo_sk#129 ASC NULLS FIRST], false, 0 + +(736) SortMergeJoin +Left keys [1]: [c_current_cdemo_sk#118] +Right keys [1]: [cd_demo_sk#129] +Join type: Inner +Join condition: NOT (cd_marital_status#128 = cd_marital_status#130) + +(737) Project +Output [14]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126] +Input [18]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_cdemo_sk#118, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126, cd_marital_status#128, cd_demo_sk#129, cd_marital_status#130] + +(738) Exchange +Input [14]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126] +Arguments: hashpartitioning(ss_promo_sk#108, 100), ENSURE_REQUIREMENTS, [plan_id=107] + +(739) Sort +Input [14]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126] +Arguments: [ss_promo_sk#108 ASC NULLS FIRST], false, 0 + +(740) Scan parquet +Output [1]: [p_promo_sk#131] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(p_promo_sk)] +ReadSchema: struct + +(741) Filter +Input [1]: [p_promo_sk#131] +Condition : isnotnull(p_promo_sk#131) + +(742) Exchange +Input [1]: [p_promo_sk#131] +Arguments: hashpartitioning(p_promo_sk#131, 100), ENSURE_REQUIREMENTS, [plan_id=108] + +(743) Sort +Input [1]: [p_promo_sk#131] +Arguments: [p_promo_sk#131 ASC NULLS FIRST], false, 0 + +(744) SortMergeJoin +Left keys [1]: [ss_promo_sk#108] +Right keys [1]: [p_promo_sk#131] +Join type: Inner +Join condition: None + +(745) Project +Output [13]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126] +Input [15]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_promo_sk#108, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126, p_promo_sk#131] + +(746) Exchange +Input [13]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126] +Arguments: hashpartitioning(ss_hdemo_sk#105, 100), ENSURE_REQUIREMENTS, [plan_id=109] + +(747) Sort +Input [13]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126] +Arguments: [ss_hdemo_sk#105 ASC NULLS FIRST], false, 0 + +(748) Scan parquet +Output [2]: [hd_demo_sk#132, hd_income_band_sk#133] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(hd_demo_sk), IsNotNull(hd_income_band_sk)] +ReadSchema: struct + +(749) Filter +Input [2]: [hd_demo_sk#132, hd_income_band_sk#133] +Condition : (isnotnull(hd_demo_sk#132) AND isnotnull(hd_income_band_sk#133)) + +(750) Exchange +Input [2]: [hd_demo_sk#132, hd_income_band_sk#133] +Arguments: hashpartitioning(hd_demo_sk#132, 100), ENSURE_REQUIREMENTS, [plan_id=110] + +(751) Sort +Input [2]: [hd_demo_sk#132, hd_income_band_sk#133] +Arguments: [hd_demo_sk#132 ASC NULLS FIRST], false, 0 + +(752) SortMergeJoin +Left keys [1]: [ss_hdemo_sk#105] +Right keys [1]: [hd_demo_sk#132] +Join type: Inner +Join condition: None + +(753) Project +Output [13]: [ss_item_sk#102, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133] +Input [15]: [ss_item_sk#102, ss_hdemo_sk#105, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126, hd_demo_sk#132, hd_income_band_sk#133] + +(754) Exchange +Input [13]: [ss_item_sk#102, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133] +Arguments: hashpartitioning(c_current_hdemo_sk#119, 100), ENSURE_REQUIREMENTS, [plan_id=111] + +(755) Sort +Input [13]: [ss_item_sk#102, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133] +Arguments: [c_current_hdemo_sk#119 ASC NULLS FIRST], false, 0 + +(756) Scan parquet +Output [2]: [hd_demo_sk#134, hd_income_band_sk#135] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(hd_demo_sk), IsNotNull(hd_income_band_sk)] +ReadSchema: struct + +(757) Filter +Input [2]: [hd_demo_sk#134, hd_income_band_sk#135] +Condition : (isnotnull(hd_demo_sk#134) AND isnotnull(hd_income_band_sk#135)) + +(758) Exchange +Input [2]: [hd_demo_sk#134, hd_income_band_sk#135] +Arguments: hashpartitioning(hd_demo_sk#134, 100), ENSURE_REQUIREMENTS, [plan_id=112] + +(759) Sort +Input [2]: [hd_demo_sk#134, hd_income_band_sk#135] +Arguments: [hd_demo_sk#134 ASC NULLS FIRST], false, 0 + +(760) SortMergeJoin +Left keys [1]: [c_current_hdemo_sk#119] +Right keys [1]: [hd_demo_sk#134] +Join type: Inner +Join condition: None + +(761) Project +Output [13]: [ss_item_sk#102, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135] +Input [15]: [ss_item_sk#102, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_hdemo_sk#119, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133, hd_demo_sk#134, hd_income_band_sk#135] + +(762) Exchange +Input [13]: [ss_item_sk#102, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135] +Arguments: hashpartitioning(ss_addr_sk#106, 100), ENSURE_REQUIREMENTS, [plan_id=113] + +(763) Sort +Input [13]: [ss_item_sk#102, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135] +Arguments: [ss_addr_sk#106 ASC NULLS FIRST], false, 0 + +(764) Scan parquet +Output [5]: [ca_address_sk#136, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk)] +ReadSchema: struct + +(765) Filter +Input [5]: [ca_address_sk#136, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140] +Condition : isnotnull(ca_address_sk#136) + +(766) Exchange +Input [5]: [ca_address_sk#136, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140] +Arguments: hashpartitioning(ca_address_sk#136, 100), ENSURE_REQUIREMENTS, [plan_id=114] + +(767) Sort +Input [5]: [ca_address_sk#136, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140] +Arguments: [ca_address_sk#136 ASC NULLS FIRST], false, 0 + +(768) SortMergeJoin +Left keys [1]: [ss_addr_sk#106] +Right keys [1]: [ca_address_sk#136] +Join type: Inner +Join condition: None + +(769) Project +Output [16]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140] +Input [18]: [ss_item_sk#102, ss_addr_sk#106, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135, ca_address_sk#136, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140] + +(770) Exchange +Input [16]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140] +Arguments: hashpartitioning(c_current_addr_sk#120, 100), ENSURE_REQUIREMENTS, [plan_id=115] + +(771) Sort +Input [16]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140] +Arguments: [c_current_addr_sk#120 ASC NULLS FIRST], false, 0 + +(772) Scan parquet +Output [5]: [ca_address_sk#141, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk)] +ReadSchema: struct + +(773) Filter +Input [5]: [ca_address_sk#141, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Condition : isnotnull(ca_address_sk#141) + +(774) Exchange +Input [5]: [ca_address_sk#141, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Arguments: hashpartitioning(ca_address_sk#141, 100), ENSURE_REQUIREMENTS, [plan_id=116] + +(775) Sort +Input [5]: [ca_address_sk#141, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Arguments: [ca_address_sk#141 ASC NULLS FIRST], false, 0 + +(776) SortMergeJoin +Left keys [1]: [c_current_addr_sk#120] +Right keys [1]: [ca_address_sk#141] +Join type: Inner +Join condition: None + +(777) Project +Output [19]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Input [21]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, c_current_addr_sk#120, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_address_sk#141, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] + +(778) Exchange +Input [19]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Arguments: hashpartitioning(hd_income_band_sk#133, 100), ENSURE_REQUIREMENTS, [plan_id=117] + +(779) Sort +Input [19]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Arguments: [hd_income_band_sk#133 ASC NULLS FIRST], false, 0 + +(780) Scan parquet +Output [1]: [ib_income_band_sk#146] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ib_income_band_sk)] +ReadSchema: struct + +(781) Filter +Input [1]: [ib_income_band_sk#146] +Condition : isnotnull(ib_income_band_sk#146) + +(782) Exchange +Input [1]: [ib_income_band_sk#146] +Arguments: hashpartitioning(ib_income_band_sk#146, 100), ENSURE_REQUIREMENTS, [plan_id=118] + +(783) Sort +Input [1]: [ib_income_band_sk#146] +Arguments: [ib_income_band_sk#146 ASC NULLS FIRST], false, 0 + +(784) SortMergeJoin +Left keys [1]: [hd_income_band_sk#133] +Right keys [1]: [ib_income_band_sk#146] +Join type: Inner +Join condition: None + +(785) Project +Output [18]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Input [20]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, hd_income_band_sk#133, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145, ib_income_band_sk#146] + +(786) Exchange +Input [18]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Arguments: hashpartitioning(hd_income_band_sk#135, 100), ENSURE_REQUIREMENTS, [plan_id=119] + +(787) Sort +Input [18]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Arguments: [hd_income_band_sk#135 ASC NULLS FIRST], false, 0 + +(788) Scan parquet +Output [1]: [ib_income_band_sk#147] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ib_income_band_sk)] +ReadSchema: struct + +(789) Filter +Input [1]: [ib_income_band_sk#147] +Condition : isnotnull(ib_income_band_sk#147) + +(790) Exchange +Input [1]: [ib_income_band_sk#147] +Arguments: hashpartitioning(ib_income_band_sk#147, 100), ENSURE_REQUIREMENTS, [plan_id=120] + +(791) Sort +Input [1]: [ib_income_band_sk#147] +Arguments: [ib_income_band_sk#147 ASC NULLS FIRST], false, 0 + +(792) SortMergeJoin +Left keys [1]: [hd_income_band_sk#135] +Right keys [1]: [ib_income_band_sk#147] +Join type: Inner +Join condition: None + +(793) Project +Output [17]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Input [19]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, hd_income_band_sk#135, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145, ib_income_band_sk#147] + +(794) Exchange +Input [17]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Arguments: hashpartitioning(ss_item_sk#102, 100), ENSURE_REQUIREMENTS, [plan_id=121] + +(795) Sort +Input [17]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145] +Arguments: [ss_item_sk#102 ASC NULLS FIRST], false, 0 + +(796) Scan parquet +Output [4]: [i_item_sk#148, i_current_price#188, i_color#189, i_product_name#149] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_current_price), In(i_color, [burlywood,floral,indian,medium,purple,spring]), GreaterThanOrEqual(i_current_price,64.00), LessThanOrEqual(i_current_price,74.00), GreaterThanOrEqual(i_current_price,65.00), LessThanOrEqual(i_current_price,79.00), IsNotNull(i_item_sk)] +ReadSchema: struct + +(797) Filter +Input [4]: [i_item_sk#148, i_current_price#188, i_color#189, i_product_name#149] +Condition : ((((((isnotnull(i_current_price#188) AND i_color#189 IN (purple,burlywood,indian,spring,floral,medium)) AND (i_current_price#188 >= 64.00)) AND (i_current_price#188 <= 74.00)) AND (i_current_price#188 >= 65.00)) AND (i_current_price#188 <= 79.00)) AND isnotnull(i_item_sk#148)) + +(798) Project +Output [2]: [i_item_sk#148, i_product_name#149] +Input [4]: [i_item_sk#148, i_current_price#188, i_color#189, i_product_name#149] + +(799) Exchange +Input [2]: [i_item_sk#148, i_product_name#149] +Arguments: hashpartitioning(i_item_sk#148, 100), ENSURE_REQUIREMENTS, [plan_id=122] + +(800) Sort +Input [2]: [i_item_sk#148, i_product_name#149] +Arguments: [i_item_sk#148 ASC NULLS FIRST], false, 0 + +(801) SortMergeJoin +Left keys [1]: [ss_item_sk#102] +Right keys [1]: [i_item_sk#148] +Join type: Inner +Join condition: None + +(802) Project +Output [18]: [ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, d_year#124, d_year#126, s_store_name#115, s_zip#116, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145, i_item_sk#148, i_product_name#149] +Input [19]: [ss_item_sk#102, ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, s_store_name#115, s_zip#116, d_year#124, d_year#126, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145, i_item_sk#148, i_product_name#149] + +(803) HashAggregate +Input [18]: [ss_wholesale_cost#109, ss_list_price#110, ss_coupon_amt#111, d_year#113, d_year#124, d_year#126, s_store_name#115, s_zip#116, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145, i_item_sk#148, i_product_name#149] +Keys [15]: [i_product_name#149, i_item_sk#148, s_store_name#115, s_zip#116, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145, d_year#113, d_year#124, d_year#126] +Functions [4]: [partial_count(1), partial_sum(UnscaledValue(ss_wholesale_cost#109)), partial_sum(UnscaledValue(ss_list_price#110)), partial_sum(UnscaledValue(ss_coupon_amt#111))] +Aggregate Attributes [4]: [count#76, sum#153, sum#154, sum#155] +Results [19]: [i_product_name#149, i_item_sk#148, s_store_name#115, s_zip#116, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145, d_year#113, d_year#124, d_year#126, count#167, sum#190, sum#191, sum#192] + +(804) HashAggregate +Input [19]: [i_product_name#149, i_item_sk#148, s_store_name#115, s_zip#116, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145, d_year#113, d_year#124, d_year#126, count#167, sum#190, sum#191, sum#192] +Keys [15]: [i_product_name#149, i_item_sk#148, s_store_name#115, s_zip#116, ca_street_number#137, ca_street_name#138, ca_city#139, ca_zip#140, ca_street_number#142, ca_street_name#143, ca_city#144, ca_zip#145, d_year#113, d_year#124, d_year#126] +Functions [4]: [count(1), sum(UnscaledValue(ss_wholesale_cost#109)), sum(UnscaledValue(ss_list_price#110)), sum(UnscaledValue(ss_coupon_amt#111))] +Aggregate Attributes [4]: [count(1)#80, sum(UnscaledValue(ss_wholesale_cost#109))#81, sum(UnscaledValue(ss_list_price#110))#82, sum(UnscaledValue(ss_coupon_amt#111))#83] +Results [8]: [i_item_sk#148 AS item_sk#156, s_store_name#115 AS store_name#157, s_zip#116 AS store_zip#158, d_year#113 AS syear#159, count(1)#80 AS cnt#160, MakeDecimal(sum(UnscaledValue(ss_wholesale_cost#109))#81,17,2) AS s1#161, MakeDecimal(sum(UnscaledValue(ss_list_price#110))#82,17,2) AS s2#162, MakeDecimal(sum(UnscaledValue(ss_coupon_amt#111))#83,17,2) AS s3#163] + +(805) Exchange +Input [8]: [item_sk#156, store_name#157, store_zip#158, syear#159, cnt#160, s1#161, s2#162, s3#163] +Arguments: hashpartitioning(item_sk#156, store_name#157, store_zip#158, 100), ENSURE_REQUIREMENTS, [plan_id=123] + +(806) Sort +Input [8]: [item_sk#156, store_name#157, store_zip#158, syear#159, cnt#160, s1#161, s2#162, s3#163] +Arguments: [item_sk#156 ASC NULLS FIRST, store_name#157 ASC NULLS FIRST, store_zip#158 ASC NULLS FIRST], false, 0 + +(807) SortMergeJoin +Left keys [3]: [item_sk#85, store_name#86, store_zip#87] +Right keys [3]: [item_sk#156, store_name#157, store_zip#158] +Join type: Inner +Join condition: (cnt#160 <= cnt#97) + +(808) Project +Output [21]: [product_name#84, store_name#86, store_zip#87, b_street_number#88, b_streen_name#89, b_city#90, b_zip#91, c_street_number#92, c_street_name#93, c_city#94, c_zip#95, syear#96, cnt#97, s1#98, s2#99, s3#100, s1#161, s2#162, s3#163, syear#159, cnt#160] +Input [25]: [product_name#84, item_sk#85, store_name#86, store_zip#87, b_street_number#88, b_streen_name#89, b_city#90, b_zip#91, c_street_number#92, c_street_name#93, c_city#94, c_zip#95, syear#96, cnt#97, s1#98, s2#99, s3#100, item_sk#156, store_name#157, store_zip#158, syear#159, cnt#160, s1#161, s2#162, s3#163] + +(809) Exchange +Input [21]: [product_name#84, store_name#86, store_zip#87, b_street_number#88, b_streen_name#89, b_city#90, b_zip#91, c_street_number#92, c_street_name#93, c_city#94, c_zip#95, syear#96, cnt#97, s1#98, s2#99, s3#100, s1#161, s2#162, s3#163, syear#159, cnt#160] +Arguments: rangepartitioning(product_name#84 ASC NULLS FIRST, store_name#86 ASC NULLS FIRST, cnt#160 ASC NULLS FIRST, s1#98 ASC NULLS FIRST, s1#161 ASC NULLS FIRST, 100), ENSURE_REQUIREMENTS, [plan_id=124] + +(810) Sort +Input [21]: [product_name#84, store_name#86, store_zip#87, b_street_number#88, b_streen_name#89, b_city#90, b_zip#91, c_street_number#92, c_street_name#93, c_city#94, c_zip#95, syear#96, cnt#97, s1#98, s2#99, s3#100, s1#161, s2#162, s3#163, syear#159, cnt#160] +Arguments: [product_name#84 ASC NULLS FIRST, store_name#86 ASC NULLS FIRST, cnt#160 ASC NULLS FIRST, s1#98 ASC NULLS FIRST, s1#161 ASC NULLS FIRST], true, 0 + +(811) AdaptiveSparkPlan +Output [21]: [product_name#84, store_name#86, store_zip#87, b_street_number#88, b_streen_name#89, b_city#90, b_zip#91, c_street_number#92, c_street_name#93, c_city#94, c_zip#95, syear#96, cnt#97, s1#98, s2#99, s3#100, s1#161, s2#162, s3#163, syear#159, cnt#160] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q65.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q65.txt new file mode 100644 index 000000000..fb0e3489d --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q65.txt @@ -0,0 +1,856 @@ +== Physical Plan == +AdaptiveSparkPlan (155) ++- == Final Plan == + TakeOrderedAndProject (99) + +- * Project (98) + +- * SortMergeJoin Inner (97) + :- NativeSort (63) + : +- InputAdapter (62) + : +- AQEShuffleRead (61) + : +- ShuffleQueryStage (60), Statistics(X) + : +- NativeShuffleExchange (59) + : +- NativeProject (58) + : +- NativeSortMergeJoin Inner (57) + : :- NativeSort (48) + : : +- InputAdapter (47) + : : +- AQEShuffleRead (46) + : : +- ShuffleQueryStage (45), Statistics(X) + : : +- NativeShuffleExchange (44) + : : +- NativeProject (43) + : : +- NativeSortMergeJoin Inner (42) + : : :- NativeSort (8) + : : : +- InputAdapter (7) + : : : +- AQEShuffleRead (6) + : : : +- ShuffleQueryStage (5), Statistics(X) + : : : +- NativeShuffleExchange (4) + : : : +- NativeFilter (3) + : : : +- InputAdapter (2) + : : : +- NativeParquetScan (1) + : : +- NativeSort (41) + : : +- InputAdapter (40) + : : +- AQEShuffleRead (39) + : : +- ShuffleQueryStage (38), Statistics(X) + : : +- NativeShuffleExchange (37) + : : +- NativeFilter (36) + : : +- NativeProject (35) + : : +- NativeHashAggregate (34) + : : +- InputAdapter (33) + : : +- AQEShuffleRead (32) + : : +- ShuffleQueryStage (31), Statistics(X) + : : +- NativeShuffleExchange (30) + : : +- NativeHashAggregate (29) + : : +- NativeProject (28) + : : +- NativeProject (27) + : : +- NativeSortMergeJoin Inner (26) + : : :- NativeSort (16) + : : : +- InputAdapter (15) + : : : +- AQEShuffleRead (14) + : : : +- ShuffleQueryStage (13), Statistics(X) + : : : +- NativeShuffleExchange (12) + : : : +- NativeFilter (11) + : : : +- InputAdapter (10) + : : : +- NativeParquetScan (9) + : : +- NativeSort (25) + : : +- InputAdapter (24) + : : +- AQEShuffleRead (23) + : : +- ShuffleQueryStage (22), Statistics(X) + : : +- NativeShuffleExchange (21) + : : +- NativeProject (20) + : : +- NativeFilter (19) + : : +- InputAdapter (18) + : : +- NativeParquetScan (17) + : +- NativeSort (56) + : +- InputAdapter (55) + : +- AQEShuffleRead (54) + : +- ShuffleQueryStage (53), Statistics(X) + : +- NativeShuffleExchange (52) + : +- NativeFilter (51) + : +- InputAdapter (50) + : +- NativeParquetScan (49) + +- NativeSort (96) + +- NativeFilter (95) + +- NativeProject (94) + +- NativeHashAggregate (93) + +- InputAdapter (92) + +- AQEShuffleRead (91) + +- ShuffleQueryStage (90), Statistics(X) + +- NativeShuffleExchange (89) + +- NativeHashAggregate (88) + +- NativeProject (87) + +- NativeHashAggregate (86) + +- InputAdapter (85) + +- AQEShuffleRead (84) + +- ShuffleQueryStage (83), Statistics(X) + +- NativeShuffleExchange (82) + +- NativeHashAggregate (81) + +- NativeProject (80) + +- NativeProject (79) + +- NativeSortMergeJoin Inner (78) + :- NativeSort (71) + : +- InputAdapter (70) + : +- AQEShuffleRead (69) + : +- ShuffleQueryStage (68), Statistics(X) + : +- NativeShuffleExchange (67) + : +- NativeFilter (66) + : +- InputAdapter (65) + : +- NativeParquetScan (64) + +- NativeSort (77) + +- InputAdapter (76) + +- InputAdapter (75) + +- AQEShuffleRead (74) + +- ShuffleQueryStage (73), Statistics(X) + +- ReusedExchange (72) ++- == Initial Plan == + TakeOrderedAndProject (154) + +- Project (153) + +- SortMergeJoin Inner (152) + :- Sort (132) + : +- Exchange (131) + : +- Project (130) + : +- SortMergeJoin Inner (129) + : :- Sort (124) + : : +- Exchange (123) + : : +- Project (122) + : : +- SortMergeJoin Inner (121) + : : :- Sort (103) + : : : +- Exchange (102) + : : : +- Filter (101) + : : : +- Scan parquet (100) + : : +- Sort (120) + : : +- Exchange (119) + : : +- Filter (118) + : : +- HashAggregate (117) + : : +- Exchange (116) + : : +- HashAggregate (115) + : : +- Project (114) + : : +- SortMergeJoin Inner (113) + : : :- Sort (107) + : : : +- Exchange (106) + : : : +- Filter (105) + : : : +- Scan parquet (104) + : : +- Sort (112) + : : +- Exchange (111) + : : +- Project (110) + : : +- Filter (109) + : : +- Scan parquet (108) + : +- Sort (128) + : +- Exchange (127) + : +- Filter (126) + : +- Scan parquet (125) + +- Sort (151) + +- Filter (150) + +- HashAggregate (149) + +- Exchange (148) + +- HashAggregate (147) + +- HashAggregate (146) + +- Exchange (145) + +- HashAggregate (144) + +- Project (143) + +- SortMergeJoin Inner (142) + :- Sort (136) + : +- Exchange (135) + : +- Filter (134) + : +- Scan parquet (133) + +- Sort (141) + +- Exchange (140) + +- Project (139) + +- Filter (138) + +- Scan parquet (137) + + +(100) Scan parquet +Output [2]: [s_store_sk#1, s_store_name#2] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [2]: [s_store_sk#1, s_store_name#2] +Arguments: [#1, #2] + +(3) NativeFilter +Input [2]: [#1#1, #2#2] +Condition : isnotnull(s_store_sk#1) + +(4) NativeShuffleExchange +Input [2]: [#1#1, #2#2] +Arguments: hashpartitioning(s_store_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: [s_store_sk#1 ASC NULLS FIRST], false + +(104) Scan parquet +Output [4]: [ss_sold_date_sk#3, ss_item_sk#4, ss_store_sk#5, ss_sales_price#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [4]: [ss_sold_date_sk#3, ss_item_sk#4, ss_store_sk#5, ss_sales_price#6] +Arguments: [#3, #4, #5, #6] + +(11) NativeFilter +Input [4]: [#3#3, #4#4, #5#5, #6#6] +Condition : ((isnotnull(ss_sold_date_sk#3) AND isnotnull(ss_store_sk#5)) AND isnotnull(ss_item_sk#4)) + +(12) NativeShuffleExchange +Input [4]: [#3#3, #4#4, #5#5, #6#6] +Arguments: hashpartitioning(ss_sold_date_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [4]: [#3#3, #4#4, #5#5, #6#6] +Arguments: X + +(14) AQEShuffleRead +Input [4]: [#3#3, #4#4, #5#5, #6#6] +Arguments: coalesced + +(15) InputAdapter +Input [4]: [#3#3, #4#4, #5#5, #6#6] + +(16) NativeSort +Input [4]: [#3#3, #4#4, #5#5, #6#6] +Arguments: [ss_sold_date_sk#3 ASC NULLS FIRST], false + +(108) Scan parquet +Output [2]: [d_date_sk#7, d_month_seq#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1176), LessThanOrEqual(d_month_seq,1187), IsNotNull(d_date_sk)] +ReadSchema: struct + +(18) InputAdapter +Input [2]: [d_date_sk#7, d_month_seq#8] +Arguments: [#7, #8] + +(19) NativeFilter +Input [2]: [#7#7, #8#8] +Condition : (((isnotnull(d_month_seq#8) AND (d_month_seq#8 >= 1176)) AND (d_month_seq#8 <= 1187)) AND isnotnull(d_date_sk#7)) + +(20) NativeProject +Output [1]: [d_date_sk#7] +Input [2]: [#7#7, #8#8] + +(21) NativeShuffleExchange +Input [1]: [d_date_sk#7] +Arguments: hashpartitioning(d_date_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(22) ShuffleQueryStage +Output [1]: [d_date_sk#7] +Arguments: X + +(23) AQEShuffleRead +Input [1]: [d_date_sk#7] +Arguments: coalesced + +(24) InputAdapter +Input [1]: [d_date_sk#7] + +(25) NativeSort +Input [1]: [d_date_sk#7] +Arguments: [d_date_sk#7 ASC NULLS FIRST], false + +(26) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#3] +Right keys [1]: [d_date_sk#7] +Join type: Inner +Join condition: None + +(27) NativeProject +Output [3]: [ss_item_sk#4, ss_store_sk#5, ss_sales_price#6] +Input [5]: [#3#3, #4#4, #5#5, #6#6, d_date_sk#7] + +(28) NativeProject +Output [3]: [ss_store_sk#5 AS ss_store_sk#5, ss_item_sk#4 AS ss_item_sk#4, UnscaledValue(ss_sales_price#6) AS _c2#9] +Input [3]: [ss_item_sk#4, ss_store_sk#5, ss_sales_price#6] + +(29) NativeHashAggregate +Input [3]: [ss_store_sk#5, ss_item_sk#4, _c2#9] +Keys [2]: [ss_store_sk#5, ss_item_sk#4] +Functions [1]: [partial_sum(_c2#9)] +Aggregate Attributes [1]: [sum#10] +Results [3]: [ss_store_sk#5, ss_item_sk#4, #11#11] + +(30) NativeShuffleExchange +Input [3]: [ss_store_sk#5, ss_item_sk#4, #11#11] +Arguments: hashpartitioning(ss_store_sk#5, ss_item_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(31) ShuffleQueryStage +Output [3]: [ss_store_sk#5, ss_item_sk#4, #11#11] +Arguments: X + +(32) AQEShuffleRead +Input [3]: [ss_store_sk#5, ss_item_sk#4, #11#11] +Arguments: coalesced + +(33) InputAdapter +Input [3]: [ss_store_sk#5, ss_item_sk#4, #11#11] + +(34) NativeHashAggregate +Input [3]: [ss_store_sk#5, ss_item_sk#4, #11#11] +Keys [2]: [ss_store_sk#5, ss_item_sk#4] +Functions [1]: [sum(UnscaledValue(ss_sales_price#6))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_sales_price#6))#12] +Results [3]: [ss_store_sk#5, ss_item_sk#4, sum(UnscaledValue(ss_sales_price#6))#12] + +(35) NativeProject +Output [3]: [ss_store_sk#5, ss_item_sk#4, MakeDecimal(sum(UnscaledValue(ss_sales_price#6))#12,17,2) AS revenue#13] +Input [3]: [ss_store_sk#5, ss_item_sk#4, sum(UnscaledValue(ss_sales_price#6))#12] + +(36) NativeFilter +Input [3]: [ss_store_sk#5, ss_item_sk#4, revenue#13] +Condition : isnotnull(revenue#13) + +(37) NativeShuffleExchange +Input [3]: [ss_store_sk#5, ss_item_sk#4, revenue#13] +Arguments: hashpartitioning(ss_store_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(38) ShuffleQueryStage +Output [3]: [ss_store_sk#5, ss_item_sk#4, revenue#13] +Arguments: X + +(39) AQEShuffleRead +Input [3]: [ss_store_sk#5, ss_item_sk#4, revenue#13] +Arguments: coalesced + +(40) InputAdapter +Input [3]: [ss_store_sk#5, ss_item_sk#4, revenue#13] + +(41) NativeSort +Input [3]: [ss_store_sk#5, ss_item_sk#4, revenue#13] +Arguments: [ss_store_sk#5 ASC NULLS FIRST], false + +(42) NativeSortMergeJoin +Left keys [1]: [s_store_sk#1] +Right keys [1]: [ss_store_sk#5] +Join type: Inner +Join condition: None + +(43) NativeProject +Output [4]: [s_store_name#2, ss_store_sk#5, ss_item_sk#4, revenue#13] +Input [5]: [#1#1, #2#2, ss_store_sk#5, ss_item_sk#4, revenue#13] + +(44) NativeShuffleExchange +Input [4]: [s_store_name#2, ss_store_sk#5, ss_item_sk#4, revenue#13] +Arguments: hashpartitioning(ss_item_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(45) ShuffleQueryStage +Output [4]: [s_store_name#2, ss_store_sk#5, ss_item_sk#4, revenue#13] +Arguments: X + +(46) AQEShuffleRead +Input [4]: [s_store_name#2, ss_store_sk#5, ss_item_sk#4, revenue#13] +Arguments: coalesced + +(47) InputAdapter +Input [4]: [s_store_name#2, ss_store_sk#5, ss_item_sk#4, revenue#13] + +(48) NativeSort +Input [4]: [s_store_name#2, ss_store_sk#5, ss_item_sk#4, revenue#13] +Arguments: [ss_item_sk#4 ASC NULLS FIRST], false + +(125) Scan parquet +Output [5]: [i_item_sk#14, i_item_desc#15, i_current_price#16, i_wholesale_cost#17, i_brand#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(50) InputAdapter +Input [5]: [i_item_sk#14, i_item_desc#15, i_current_price#16, i_wholesale_cost#17, i_brand#18] +Arguments: [#14, #15, #16, #17, #18] + +(51) NativeFilter +Input [5]: [#14#14, #15#15, #16#16, #17#17, #18#18] +Condition : isnotnull(i_item_sk#14) + +(52) NativeShuffleExchange +Input [5]: [#14#14, #15#15, #16#16, #17#17, #18#18] +Arguments: hashpartitioning(i_item_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(53) ShuffleQueryStage +Output [5]: [#14#14, #15#15, #16#16, #17#17, #18#18] +Arguments: X + +(54) AQEShuffleRead +Input [5]: [#14#14, #15#15, #16#16, #17#17, #18#18] +Arguments: coalesced + +(55) InputAdapter +Input [5]: [#14#14, #15#15, #16#16, #17#17, #18#18] + +(56) NativeSort +Input [5]: [#14#14, #15#15, #16#16, #17#17, #18#18] +Arguments: [i_item_sk#14 ASC NULLS FIRST], false + +(57) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#4] +Right keys [1]: [i_item_sk#14] +Join type: Inner +Join condition: None + +(58) NativeProject +Output [7]: [s_store_name#2, ss_store_sk#5, revenue#13, i_item_desc#15, i_current_price#16, i_wholesale_cost#17, i_brand#18] +Input [9]: [s_store_name#2, ss_store_sk#5, ss_item_sk#4, revenue#13, #14#14, #15#15, #16#16, #17#17, #18#18] + +(59) NativeShuffleExchange +Input [7]: [s_store_name#2, ss_store_sk#5, revenue#13, i_item_desc#15, i_current_price#16, i_wholesale_cost#17, i_brand#18] +Arguments: hashpartitioning(ss_store_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(60) ShuffleQueryStage +Output [7]: [s_store_name#2, ss_store_sk#5, revenue#13, i_item_desc#15, i_current_price#16, i_wholesale_cost#17, i_brand#18] +Arguments: X + +(61) AQEShuffleRead +Input [7]: [s_store_name#2, ss_store_sk#5, revenue#13, i_item_desc#15, i_current_price#16, i_wholesale_cost#17, i_brand#18] +Arguments: coalesced + +(62) InputAdapter +Input [7]: [s_store_name#2, ss_store_sk#5, revenue#13, i_item_desc#15, i_current_price#16, i_wholesale_cost#17, i_brand#18] + +(63) NativeSort +Input [7]: [s_store_name#2, ss_store_sk#5, revenue#13, i_item_desc#15, i_current_price#16, i_wholesale_cost#17, i_brand#18] +Arguments: [ss_store_sk#5 ASC NULLS FIRST], false + +(133) Scan parquet +Output [4]: [ss_sold_date_sk#19, ss_item_sk#20, ss_store_sk#21, ss_sales_price#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(65) InputAdapter +Input [4]: [ss_sold_date_sk#19, ss_item_sk#20, ss_store_sk#21, ss_sales_price#22] +Arguments: [#19, #20, #21, #22] + +(66) NativeFilter +Input [4]: [#19#19, #20#20, #21#21, #22#22] +Condition : (isnotnull(ss_sold_date_sk#19) AND isnotnull(ss_store_sk#21)) + +(67) NativeShuffleExchange +Input [4]: [#19#19, #20#20, #21#21, #22#22] +Arguments: hashpartitioning(ss_sold_date_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(68) ShuffleQueryStage +Output [4]: [#19#19, #20#20, #21#21, #22#22] +Arguments: X + +(69) AQEShuffleRead +Input [4]: [#19#19, #20#20, #21#21, #22#22] +Arguments: coalesced + +(70) InputAdapter +Input [4]: [#19#19, #20#20, #21#21, #22#22] + +(71) NativeSort +Input [4]: [#19#19, #20#20, #21#21, #22#22] +Arguments: [ss_sold_date_sk#19 ASC NULLS FIRST], false + +(72) ReusedExchange [Reuses operator id: 21] +Output [1]: [d_date_sk#23] + +(73) ShuffleQueryStage +Output [1]: [d_date_sk#23] +Arguments: X + +(74) AQEShuffleRead +Input [1]: [d_date_sk#23] +Arguments: coalesced + +(75) InputAdapter +Input [1]: [d_date_sk#23] +Arguments: [#23] + +(76) InputAdapter +Input [1]: [#23#23] + +(77) NativeSort +Input [1]: [#23#23] +Arguments: [d_date_sk#23 ASC NULLS FIRST], false + +(78) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#19] +Right keys [1]: [d_date_sk#23] +Join type: Inner +Join condition: None + +(79) NativeProject +Output [3]: [ss_item_sk#20, ss_store_sk#21, ss_sales_price#22] +Input [5]: [#19#19, #20#20, #21#21, #22#22, #23#23] + +(80) NativeProject +Output [3]: [ss_store_sk#21 AS ss_store_sk#21, ss_item_sk#20 AS ss_item_sk#20, UnscaledValue(ss_sales_price#22) AS _c2#24] +Input [3]: [ss_item_sk#20, ss_store_sk#21, ss_sales_price#22] + +(81) NativeHashAggregate +Input [3]: [ss_store_sk#21, ss_item_sk#20, _c2#24] +Keys [2]: [ss_store_sk#21, ss_item_sk#20] +Functions [1]: [partial_sum(_c2#24)] +Aggregate Attributes [1]: [sum#25] +Results [3]: [ss_store_sk#21, ss_item_sk#20, #11#11] + +(82) NativeShuffleExchange +Input [3]: [ss_store_sk#21, ss_item_sk#20, #11#11] +Arguments: hashpartitioning(ss_store_sk#21, ss_item_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(83) ShuffleQueryStage +Output [3]: [ss_store_sk#21, ss_item_sk#20, #11#11] +Arguments: X + +(84) AQEShuffleRead +Input [3]: [ss_store_sk#21, ss_item_sk#20, #11#11] +Arguments: coalesced + +(85) InputAdapter +Input [3]: [ss_store_sk#21, ss_item_sk#20, #11#11] + +(86) NativeHashAggregate +Input [3]: [ss_store_sk#21, ss_item_sk#20, #11#11] +Keys [2]: [ss_store_sk#21, ss_item_sk#20] +Functions [1]: [sum(UnscaledValue(ss_sales_price#22))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_sales_price#22))#26] +Results [3]: [ss_store_sk#21, ss_item_sk#20, sum(UnscaledValue(ss_sales_price#22))#26] + +(87) NativeProject +Output [2]: [ss_store_sk#21, MakeDecimal(sum(UnscaledValue(ss_sales_price#22))#26,17,2) AS revenue#27] +Input [3]: [ss_store_sk#21, ss_item_sk#20, sum(UnscaledValue(ss_sales_price#22))#26] + +(88) NativeHashAggregate +Input [2]: [ss_store_sk#21, revenue#27] +Keys [1]: [ss_store_sk#21] +Functions [1]: [partial_avg(revenue#27)] +Aggregate Attributes [2]: [sum#28, count#29] +Results [2]: [ss_store_sk#21, #11#11] + +(89) NativeShuffleExchange +Input [2]: [ss_store_sk#21, #11#11] +Arguments: hashpartitioning(ss_store_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(90) ShuffleQueryStage +Output [2]: [ss_store_sk#21, #11#11] +Arguments: X + +(91) AQEShuffleRead +Input [2]: [ss_store_sk#21, #11#11] +Arguments: coalesced + +(92) InputAdapter +Input [2]: [ss_store_sk#21, #11#11] + +(93) NativeHashAggregate +Input [2]: [ss_store_sk#21, #11#11] +Keys [1]: [ss_store_sk#21] +Functions [1]: [avg(revenue#27)] +Aggregate Attributes [1]: [avg(revenue#27)#30] +Results [2]: [ss_store_sk#21, avg(revenue#27)#30] + +(94) NativeProject +Output [2]: [ss_store_sk#21, avg(revenue#27)#30 AS ave#31] +Input [2]: [ss_store_sk#21, avg(revenue#27)#30] + +(95) NativeFilter +Input [2]: [ss_store_sk#21, ave#31] +Condition : isnotnull(ave#31) + +(96) NativeSort +Input [2]: [ss_store_sk#21, ave#31] +Arguments: [ss_store_sk#21 ASC NULLS FIRST], false + +(97) SortMergeJoin [codegen id : 1] +Left keys [1]: [ss_store_sk#5] +Right keys [1]: [ss_store_sk#21] +Join type: Inner +Join condition: (cast(revenue#13 as decimal(23,7)) <= (0.1 * ave#31)) + +(98) Project [codegen id : 1] +Output [6]: [s_store_name#2, i_item_desc#15, revenue#13, i_current_price#16, i_wholesale_cost#17, i_brand#18] +Input [9]: [s_store_name#2, ss_store_sk#5, revenue#13, i_item_desc#15, i_current_price#16, i_wholesale_cost#17, i_brand#18, ss_store_sk#21, ave#31] + +(99) TakeOrderedAndProject +Input [6]: [s_store_name#2, i_item_desc#15, revenue#13, i_current_price#16, i_wholesale_cost#17, i_brand#18] +Arguments: X, [s_store_name#2 ASC NULLS FIRST, i_item_desc#15 ASC NULLS FIRST], [s_store_name#2, i_item_desc#15, revenue#13, i_current_price#16, i_wholesale_cost#17, i_brand#18] + +(100) Scan parquet +Output [2]: [s_store_sk#1, s_store_name#2] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(101) Filter +Input [2]: [s_store_sk#1, s_store_name#2] +Condition : isnotnull(s_store_sk#1) + +(102) Exchange +Input [2]: [s_store_sk#1, s_store_name#2] +Arguments: hashpartitioning(s_store_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(103) Sort +Input [2]: [s_store_sk#1, s_store_name#2] +Arguments: [s_store_sk#1 ASC NULLS FIRST], false, 0 + +(104) Scan parquet +Output [4]: [ss_sold_date_sk#3, ss_item_sk#4, ss_store_sk#5, ss_sales_price#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(105) Filter +Input [4]: [ss_sold_date_sk#3, ss_item_sk#4, ss_store_sk#5, ss_sales_price#6] +Condition : ((isnotnull(ss_sold_date_sk#3) AND isnotnull(ss_store_sk#5)) AND isnotnull(ss_item_sk#4)) + +(106) Exchange +Input [4]: [ss_sold_date_sk#3, ss_item_sk#4, ss_store_sk#5, ss_sales_price#6] +Arguments: hashpartitioning(ss_sold_date_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(107) Sort +Input [4]: [ss_sold_date_sk#3, ss_item_sk#4, ss_store_sk#5, ss_sales_price#6] +Arguments: [ss_sold_date_sk#3 ASC NULLS FIRST], false, 0 + +(108) Scan parquet +Output [2]: [d_date_sk#7, d_month_seq#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1176), LessThanOrEqual(d_month_seq,1187), IsNotNull(d_date_sk)] +ReadSchema: struct + +(109) Filter +Input [2]: [d_date_sk#7, d_month_seq#8] +Condition : (((isnotnull(d_month_seq#8) AND (d_month_seq#8 >= 1176)) AND (d_month_seq#8 <= 1187)) AND isnotnull(d_date_sk#7)) + +(110) Project +Output [1]: [d_date_sk#7] +Input [2]: [d_date_sk#7, d_month_seq#8] + +(111) Exchange +Input [1]: [d_date_sk#7] +Arguments: hashpartitioning(d_date_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(112) Sort +Input [1]: [d_date_sk#7] +Arguments: [d_date_sk#7 ASC NULLS FIRST], false, 0 + +(113) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#3] +Right keys [1]: [d_date_sk#7] +Join type: Inner +Join condition: None + +(114) Project +Output [3]: [ss_item_sk#4, ss_store_sk#5, ss_sales_price#6] +Input [5]: [ss_sold_date_sk#3, ss_item_sk#4, ss_store_sk#5, ss_sales_price#6, d_date_sk#7] + +(115) HashAggregate +Input [3]: [ss_item_sk#4, ss_store_sk#5, ss_sales_price#6] +Keys [2]: [ss_store_sk#5, ss_item_sk#4] +Functions [1]: [partial_sum(UnscaledValue(ss_sales_price#6))] +Aggregate Attributes [1]: [sum#10] +Results [3]: [ss_store_sk#5, ss_item_sk#4, sum#32] + +(116) Exchange +Input [3]: [ss_store_sk#5, ss_item_sk#4, sum#32] +Arguments: hashpartitioning(ss_store_sk#5, ss_item_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(117) HashAggregate +Input [3]: [ss_store_sk#5, ss_item_sk#4, sum#32] +Keys [2]: [ss_store_sk#5, ss_item_sk#4] +Functions [1]: [sum(UnscaledValue(ss_sales_price#6))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_sales_price#6))#12] +Results [3]: [ss_store_sk#5, ss_item_sk#4, MakeDecimal(sum(UnscaledValue(ss_sales_price#6))#12,17,2) AS revenue#13] + +(118) Filter +Input [3]: [ss_store_sk#5, ss_item_sk#4, revenue#13] +Condition : isnotnull(revenue#13) + +(119) Exchange +Input [3]: [ss_store_sk#5, ss_item_sk#4, revenue#13] +Arguments: hashpartitioning(ss_store_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(120) Sort +Input [3]: [ss_store_sk#5, ss_item_sk#4, revenue#13] +Arguments: [ss_store_sk#5 ASC NULLS FIRST], false, 0 + +(121) SortMergeJoin +Left keys [1]: [s_store_sk#1] +Right keys [1]: [ss_store_sk#5] +Join type: Inner +Join condition: None + +(122) Project +Output [4]: [s_store_name#2, ss_store_sk#5, ss_item_sk#4, revenue#13] +Input [5]: [s_store_sk#1, s_store_name#2, ss_store_sk#5, ss_item_sk#4, revenue#13] + +(123) Exchange +Input [4]: [s_store_name#2, ss_store_sk#5, ss_item_sk#4, revenue#13] +Arguments: hashpartitioning(ss_item_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(124) Sort +Input [4]: [s_store_name#2, ss_store_sk#5, ss_item_sk#4, revenue#13] +Arguments: [ss_item_sk#4 ASC NULLS FIRST], false, 0 + +(125) Scan parquet +Output [5]: [i_item_sk#14, i_item_desc#15, i_current_price#16, i_wholesale_cost#17, i_brand#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(126) Filter +Input [5]: [i_item_sk#14, i_item_desc#15, i_current_price#16, i_wholesale_cost#17, i_brand#18] +Condition : isnotnull(i_item_sk#14) + +(127) Exchange +Input [5]: [i_item_sk#14, i_item_desc#15, i_current_price#16, i_wholesale_cost#17, i_brand#18] +Arguments: hashpartitioning(i_item_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(128) Sort +Input [5]: [i_item_sk#14, i_item_desc#15, i_current_price#16, i_wholesale_cost#17, i_brand#18] +Arguments: [i_item_sk#14 ASC NULLS FIRST], false, 0 + +(129) SortMergeJoin +Left keys [1]: [ss_item_sk#4] +Right keys [1]: [i_item_sk#14] +Join type: Inner +Join condition: None + +(130) Project +Output [7]: [s_store_name#2, ss_store_sk#5, revenue#13, i_item_desc#15, i_current_price#16, i_wholesale_cost#17, i_brand#18] +Input [9]: [s_store_name#2, ss_store_sk#5, ss_item_sk#4, revenue#13, i_item_sk#14, i_item_desc#15, i_current_price#16, i_wholesale_cost#17, i_brand#18] + +(131) Exchange +Input [7]: [s_store_name#2, ss_store_sk#5, revenue#13, i_item_desc#15, i_current_price#16, i_wholesale_cost#17, i_brand#18] +Arguments: hashpartitioning(ss_store_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(132) Sort +Input [7]: [s_store_name#2, ss_store_sk#5, revenue#13, i_item_desc#15, i_current_price#16, i_wholesale_cost#17, i_brand#18] +Arguments: [ss_store_sk#5 ASC NULLS FIRST], false, 0 + +(133) Scan parquet +Output [4]: [ss_sold_date_sk#19, ss_item_sk#20, ss_store_sk#21, ss_sales_price#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(134) Filter +Input [4]: [ss_sold_date_sk#19, ss_item_sk#20, ss_store_sk#21, ss_sales_price#22] +Condition : (isnotnull(ss_sold_date_sk#19) AND isnotnull(ss_store_sk#21)) + +(135) Exchange +Input [4]: [ss_sold_date_sk#19, ss_item_sk#20, ss_store_sk#21, ss_sales_price#22] +Arguments: hashpartitioning(ss_sold_date_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(136) Sort +Input [4]: [ss_sold_date_sk#19, ss_item_sk#20, ss_store_sk#21, ss_sales_price#22] +Arguments: [ss_sold_date_sk#19 ASC NULLS FIRST], false, 0 + +(137) Scan parquet +Output [2]: [d_date_sk#23, d_month_seq#33] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1176), LessThanOrEqual(d_month_seq,1187), IsNotNull(d_date_sk)] +ReadSchema: struct + +(138) Filter +Input [2]: [d_date_sk#23, d_month_seq#33] +Condition : (((isnotnull(d_month_seq#33) AND (d_month_seq#33 >= 1176)) AND (d_month_seq#33 <= 1187)) AND isnotnull(d_date_sk#23)) + +(139) Project +Output [1]: [d_date_sk#23] +Input [2]: [d_date_sk#23, d_month_seq#33] + +(140) Exchange +Input [1]: [d_date_sk#23] +Arguments: hashpartitioning(d_date_sk#23, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(141) Sort +Input [1]: [d_date_sk#23] +Arguments: [d_date_sk#23 ASC NULLS FIRST], false, 0 + +(142) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#19] +Right keys [1]: [d_date_sk#23] +Join type: Inner +Join condition: None + +(143) Project +Output [3]: [ss_item_sk#20, ss_store_sk#21, ss_sales_price#22] +Input [5]: [ss_sold_date_sk#19, ss_item_sk#20, ss_store_sk#21, ss_sales_price#22, d_date_sk#23] + +(144) HashAggregate +Input [3]: [ss_item_sk#20, ss_store_sk#21, ss_sales_price#22] +Keys [2]: [ss_store_sk#21, ss_item_sk#20] +Functions [1]: [partial_sum(UnscaledValue(ss_sales_price#22))] +Aggregate Attributes [1]: [sum#25] +Results [3]: [ss_store_sk#21, ss_item_sk#20, sum#34] + +(145) Exchange +Input [3]: [ss_store_sk#21, ss_item_sk#20, sum#34] +Arguments: hashpartitioning(ss_store_sk#21, ss_item_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(146) HashAggregate +Input [3]: [ss_store_sk#21, ss_item_sk#20, sum#34] +Keys [2]: [ss_store_sk#21, ss_item_sk#20] +Functions [1]: [sum(UnscaledValue(ss_sales_price#22))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_sales_price#22))#26] +Results [2]: [ss_store_sk#21, MakeDecimal(sum(UnscaledValue(ss_sales_price#22))#26,17,2) AS revenue#27] + +(147) HashAggregate +Input [2]: [ss_store_sk#21, revenue#27] +Keys [1]: [ss_store_sk#21] +Functions [1]: [partial_avg(revenue#27)] +Aggregate Attributes [2]: [sum#28, count#29] +Results [3]: [ss_store_sk#21, sum#35, count#36] + +(148) Exchange +Input [3]: [ss_store_sk#21, sum#35, count#36] +Arguments: hashpartitioning(ss_store_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(149) HashAggregate +Input [3]: [ss_store_sk#21, sum#35, count#36] +Keys [1]: [ss_store_sk#21] +Functions [1]: [avg(revenue#27)] +Aggregate Attributes [1]: [avg(revenue#27)#30] +Results [2]: [ss_store_sk#21, avg(revenue#27)#30 AS ave#31] + +(150) Filter +Input [2]: [ss_store_sk#21, ave#31] +Condition : isnotnull(ave#31) + +(151) Sort +Input [2]: [ss_store_sk#21, ave#31] +Arguments: [ss_store_sk#21 ASC NULLS FIRST], false, 0 + +(152) SortMergeJoin +Left keys [1]: [ss_store_sk#5] +Right keys [1]: [ss_store_sk#21] +Join type: Inner +Join condition: (cast(revenue#13 as decimal(23,7)) <= (0.1 * ave#31)) + +(153) Project +Output [6]: [s_store_name#2, i_item_desc#15, revenue#13, i_current_price#16, i_wholesale_cost#17, i_brand#18] +Input [9]: [s_store_name#2, ss_store_sk#5, revenue#13, i_item_desc#15, i_current_price#16, i_wholesale_cost#17, i_brand#18, ss_store_sk#21, ave#31] + +(154) TakeOrderedAndProject +Input [6]: [s_store_name#2, i_item_desc#15, revenue#13, i_current_price#16, i_wholesale_cost#17, i_brand#18] +Arguments: X, [s_store_name#2 ASC NULLS FIRST, i_item_desc#15 ASC NULLS FIRST], [s_store_name#2, i_item_desc#15, revenue#13, i_current_price#16, i_wholesale_cost#17, i_brand#18] + +(155) AdaptiveSparkPlan +Output [6]: [s_store_name#2, i_item_desc#15, revenue#13, i_current_price#16, i_wholesale_cost#17, i_brand#18] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q66.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q66.txt new file mode 100644 index 000000000..b0822487f --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q66.txt @@ -0,0 +1,1250 @@ +== Physical Plan == +AdaptiveSparkPlan (231) ++- == Final Plan == + NativeTakeOrdered (147) + +- NativeProject (146) + +- NativeHashAggregate (145) + +- InputAdapter (144) + +- AQEShuffleRead (143) + +- ShuffleQueryStage (142), Statistics(X) + +- NativeShuffleExchange (141) + +- NativeHashAggregate (140) + +- NativeProject (139) + +- InputAdapter (138) + +- NativeUnion (137) + :- NativeProject (73) + : +- NativeHashAggregate (72) + : +- InputAdapter (71) + : +- AQEShuffleRead (70) + : +- ShuffleQueryStage (69), Statistics(X) + : +- NativeShuffleExchange (68) + : +- NativeHashAggregate (67) + : +- NativeProject (66) + : +- NativeProject (65) + : +- NativeSortMergeJoin Inner (64) + : :- NativeSort (54) + : : +- InputAdapter (53) + : : +- AQEShuffleRead (52) + : : +- ShuffleQueryStage (51), Statistics(X) + : : +- NativeShuffleExchange (50) + : : +- NativeProject (49) + : : +- NativeSortMergeJoin Inner (48) + : : :- NativeSort (38) + : : : +- InputAdapter (37) + : : : +- AQEShuffleRead (36) + : : : +- ShuffleQueryStage (35), Statistics(X) + : : : +- NativeShuffleExchange (34) + : : : +- NativeProject (33) + : : : +- NativeSortMergeJoin Inner (32) + : : : :- NativeSort (23) + : : : : +- InputAdapter (22) + : : : : +- AQEShuffleRead (21) + : : : : +- ShuffleQueryStage (20), Statistics(X) + : : : : +- NativeShuffleExchange (19) + : : : : +- NativeProject (18) + : : : : +- NativeSortMergeJoin Inner (17) + : : : : :- NativeSort (8) + : : : : : +- InputAdapter (7) + : : : : : +- AQEShuffleRead (6) + : : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : : +- NativeShuffleExchange (4) + : : : : : +- NativeFilter (3) + : : : : : +- InputAdapter (2) + : : : : : +- NativeParquetScan (1) + : : : : +- NativeSort (16) + : : : : +- InputAdapter (15) + : : : : +- AQEShuffleRead (14) + : : : : +- ShuffleQueryStage (13), Statistics(X) + : : : : +- NativeShuffleExchange (12) + : : : : +- NativeFilter (11) + : : : : +- InputAdapter (10) + : : : : +- NativeParquetScan (9) + : : : +- NativeSort (31) + : : : +- InputAdapter (30) + : : : +- AQEShuffleRead (29) + : : : +- ShuffleQueryStage (28), Statistics(X) + : : : +- NativeShuffleExchange (27) + : : : +- NativeFilter (26) + : : : +- InputAdapter (25) + : : : +- NativeParquetScan (24) + : : +- NativeSort (47) + : : +- InputAdapter (46) + : : +- AQEShuffleRead (45) + : : +- ShuffleQueryStage (44), Statistics(X) + : : +- NativeShuffleExchange (43) + : : +- NativeProject (42) + : : +- NativeFilter (41) + : : +- InputAdapter (40) + : : +- NativeParquetScan (39) + : +- NativeSort (63) + : +- InputAdapter (62) + : +- AQEShuffleRead (61) + : +- ShuffleQueryStage (60), Statistics(X) + : +- NativeShuffleExchange (59) + : +- NativeProject (58) + : +- NativeFilter (57) + : +- InputAdapter (56) + : +- NativeParquetScan (55) + +- NativeProject (136) + +- NativeHashAggregate (135) + +- InputAdapter (134) + +- AQEShuffleRead (133) + +- ShuffleQueryStage (132), Statistics(X) + +- NativeShuffleExchange (131) + +- NativeHashAggregate (130) + +- NativeProject (129) + +- NativeProject (128) + +- NativeSortMergeJoin Inner (127) + :- NativeSort (120) + : +- InputAdapter (119) + : +- AQEShuffleRead (118) + : +- ShuffleQueryStage (117), Statistics(X) + : +- NativeShuffleExchange (116) + : +- NativeProject (115) + : +- NativeSortMergeJoin Inner (114) + : :- NativeSort (107) + : : +- InputAdapter (106) + : : +- AQEShuffleRead (105) + : : +- ShuffleQueryStage (104), Statistics(X) + : : +- NativeShuffleExchange (103) + : : +- NativeProject (102) + : : +- NativeSortMergeJoin Inner (101) + : : :- NativeSort (94) + : : : +- InputAdapter (93) + : : : +- AQEShuffleRead (92) + : : : +- ShuffleQueryStage (91), Statistics(X) + : : : +- NativeShuffleExchange (90) + : : : +- NativeProject (89) + : : : +- NativeSortMergeJoin Inner (88) + : : : :- NativeSort (81) + : : : : +- InputAdapter (80) + : : : : +- AQEShuffleRead (79) + : : : : +- ShuffleQueryStage (78), Statistics(X) + : : : : +- NativeShuffleExchange (77) + : : : : +- NativeFilter (76) + : : : : +- InputAdapter (75) + : : : : +- NativeParquetScan (74) + : : : +- NativeSort (87) + : : : +- InputAdapter (86) + : : : +- InputAdapter (85) + : : : +- AQEShuffleRead (84) + : : : +- ShuffleQueryStage (83), Statistics(X) + : : : +- ReusedExchange (82) + : : +- NativeSort (100) + : : +- InputAdapter (99) + : : +- InputAdapter (98) + : : +- AQEShuffleRead (97) + : : +- ShuffleQueryStage (96), Statistics(X) + : : +- ReusedExchange (95) + : +- NativeSort (113) + : +- InputAdapter (112) + : +- InputAdapter (111) + : +- AQEShuffleRead (110) + : +- ShuffleQueryStage (109), Statistics(X) + : +- ReusedExchange (108) + +- NativeSort (126) + +- InputAdapter (125) + +- InputAdapter (124) + +- AQEShuffleRead (123) + +- ShuffleQueryStage (122), Statistics(X) + +- ReusedExchange (121) ++- == Initial Plan == + TakeOrderedAndProject (230) + +- HashAggregate (229) + +- Exchange (228) + +- HashAggregate (227) + +- Union (226) + :- HashAggregate (186) + : +- Exchange (185) + : +- HashAggregate (184) + : +- Project (183) + : +- SortMergeJoin Inner (182) + : :- Sort (176) + : : +- Exchange (175) + : : +- Project (174) + : : +- SortMergeJoin Inner (173) + : : :- Sort (167) + : : : +- Exchange (166) + : : : +- Project (165) + : : : +- SortMergeJoin Inner (164) + : : : :- Sort (159) + : : : : +- Exchange (158) + : : : : +- Project (157) + : : : : +- SortMergeJoin Inner (156) + : : : : :- Sort (151) + : : : : : +- Exchange (150) + : : : : : +- Filter (149) + : : : : : +- Scan parquet (148) + : : : : +- Sort (155) + : : : : +- Exchange (154) + : : : : +- Filter (153) + : : : : +- Scan parquet (152) + : : : +- Sort (163) + : : : +- Exchange (162) + : : : +- Filter (161) + : : : +- Scan parquet (160) + : : +- Sort (172) + : : +- Exchange (171) + : : +- Project (170) + : : +- Filter (169) + : : +- Scan parquet (168) + : +- Sort (181) + : +- Exchange (180) + : +- Project (179) + : +- Filter (178) + : +- Scan parquet (177) + +- HashAggregate (225) + +- Exchange (224) + +- HashAggregate (223) + +- Project (222) + +- SortMergeJoin Inner (221) + :- Sort (215) + : +- Exchange (214) + : +- Project (213) + : +- SortMergeJoin Inner (212) + : :- Sort (206) + : : +- Exchange (205) + : : +- Project (204) + : : +- SortMergeJoin Inner (203) + : : :- Sort (198) + : : : +- Exchange (197) + : : : +- Project (196) + : : : +- SortMergeJoin Inner (195) + : : : :- Sort (190) + : : : : +- Exchange (189) + : : : : +- Filter (188) + : : : : +- Scan parquet (187) + : : : +- Sort (194) + : : : +- Exchange (193) + : : : +- Filter (192) + : : : +- Scan parquet (191) + : : +- Sort (202) + : : +- Exchange (201) + : : +- Filter (200) + : : +- Scan parquet (199) + : +- Sort (211) + : +- Exchange (210) + : +- Project (209) + : +- Filter (208) + : +- Scan parquet (207) + +- Sort (220) + +- Exchange (219) + +- Project (218) + +- Filter (217) + +- Scan parquet (216) + + +(148) Scan parquet +Output [7]: [ws_sold_date_sk#1, ws_sold_time_sk#2, ws_ship_mode_sk#3, ws_warehouse_sk#4, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_warehouse_sk), IsNotNull(ws_sold_date_sk), IsNotNull(ws_sold_time_sk), IsNotNull(ws_ship_mode_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [7]: [ws_sold_date_sk#1, ws_sold_time_sk#2, ws_ship_mode_sk#3, ws_warehouse_sk#4, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7] +Arguments: [#1, #2, #3, #4, #5, #6, #7] + +(3) NativeFilter +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Condition : (((isnotnull(ws_warehouse_sk#4) AND isnotnull(ws_sold_date_sk#1)) AND isnotnull(ws_sold_time_sk#2)) AND isnotnull(ws_ship_mode_sk#3)) + +(4) NativeShuffleExchange +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Arguments: hashpartitioning(ws_warehouse_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Arguments: X + +(6) AQEShuffleRead +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Arguments: coalesced + +(7) InputAdapter +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] + +(8) NativeSort +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Arguments: [ws_warehouse_sk#4 ASC NULLS FIRST], false + +(152) Scan parquet +Output [7]: [w_warehouse_sk#8, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(w_warehouse_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [7]: [w_warehouse_sk#8, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14] +Arguments: [#8, #9, #10, #11, #12, #13, #14] + +(11) NativeFilter +Input [7]: [#8#8, #9#9, #10#10, #11#11, #12#12, #13#13, #14#14] +Condition : isnotnull(w_warehouse_sk#8) + +(12) NativeShuffleExchange +Input [7]: [#8#8, #9#9, #10#10, #11#11, #12#12, #13#13, #14#14] +Arguments: hashpartitioning(w_warehouse_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [7]: [#8#8, #9#9, #10#10, #11#11, #12#12, #13#13, #14#14] +Arguments: X + +(14) AQEShuffleRead +Input [7]: [#8#8, #9#9, #10#10, #11#11, #12#12, #13#13, #14#14] +Arguments: coalesced + +(15) InputAdapter +Input [7]: [#8#8, #9#9, #10#10, #11#11, #12#12, #13#13, #14#14] + +(16) NativeSort +Input [7]: [#8#8, #9#9, #10#10, #11#11, #12#12, #13#13, #14#14] +Arguments: [w_warehouse_sk#8 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [1]: [ws_warehouse_sk#4] +Right keys [1]: [w_warehouse_sk#8] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [12]: [ws_sold_date_sk#1, ws_sold_time_sk#2, ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14] +Input [14]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9, #10#10, #11#11, #12#12, #13#13, #14#14] + +(19) NativeShuffleExchange +Input [12]: [ws_sold_date_sk#1, ws_sold_time_sk#2, ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14] +Arguments: hashpartitioning(ws_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [12]: [ws_sold_date_sk#1, ws_sold_time_sk#2, ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14] +Arguments: X + +(21) AQEShuffleRead +Input [12]: [ws_sold_date_sk#1, ws_sold_time_sk#2, ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14] +Arguments: coalesced + +(22) InputAdapter +Input [12]: [ws_sold_date_sk#1, ws_sold_time_sk#2, ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14] + +(23) NativeSort +Input [12]: [ws_sold_date_sk#1, ws_sold_time_sk#2, ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14] +Arguments: [ws_sold_date_sk#1 ASC NULLS FIRST], false + +(160) Scan parquet +Output [3]: [d_date_sk#15, d_year#16, d_moy#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(25) InputAdapter +Input [3]: [d_date_sk#15, d_year#16, d_moy#17] +Arguments: [#15, #16, #17] + +(26) NativeFilter +Input [3]: [#15#15, #16#16, #17#17] +Condition : ((isnotnull(d_year#16) AND (d_year#16 = 2001)) AND isnotnull(d_date_sk#15)) + +(27) NativeShuffleExchange +Input [3]: [#15#15, #16#16, #17#17] +Arguments: hashpartitioning(d_date_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(28) ShuffleQueryStage +Output [3]: [#15#15, #16#16, #17#17] +Arguments: X + +(29) AQEShuffleRead +Input [3]: [#15#15, #16#16, #17#17] +Arguments: coalesced + +(30) InputAdapter +Input [3]: [#15#15, #16#16, #17#17] + +(31) NativeSort +Input [3]: [#15#15, #16#16, #17#17] +Arguments: [d_date_sk#15 ASC NULLS FIRST], false + +(32) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#1] +Right keys [1]: [d_date_sk#15] +Join type: Inner +Join condition: None + +(33) NativeProject +Output [13]: [ws_sold_time_sk#2, ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, d_moy#17] +Input [15]: [ws_sold_date_sk#1, ws_sold_time_sk#2, ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, #15#15, #16#16, #17#17] + +(34) NativeShuffleExchange +Input [13]: [ws_sold_time_sk#2, ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, d_moy#17] +Arguments: hashpartitioning(ws_sold_time_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(35) ShuffleQueryStage +Output [13]: [ws_sold_time_sk#2, ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, d_moy#17] +Arguments: X + +(36) AQEShuffleRead +Input [13]: [ws_sold_time_sk#2, ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, d_moy#17] +Arguments: coalesced + +(37) InputAdapter +Input [13]: [ws_sold_time_sk#2, ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, d_moy#17] + +(38) NativeSort +Input [13]: [ws_sold_time_sk#2, ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, d_moy#17] +Arguments: [ws_sold_time_sk#2 ASC NULLS FIRST], false + +(168) Scan parquet +Output [2]: [t_time_sk#18, t_time#19] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(t_time), GreaterThanOrEqual(t_time,30838), LessThanOrEqual(t_time,59638), IsNotNull(t_time_sk)] +ReadSchema: struct + +(40) InputAdapter +Input [2]: [t_time_sk#18, t_time#19] +Arguments: [#18, #19] + +(41) NativeFilter +Input [2]: [#18#18, #19#19] +Condition : (((isnotnull(t_time#19) AND (t_time#19 >= 30838)) AND (t_time#19 <= 59638)) AND isnotnull(t_time_sk#18)) + +(42) NativeProject +Output [1]: [t_time_sk#18] +Input [2]: [#18#18, #19#19] + +(43) NativeShuffleExchange +Input [1]: [t_time_sk#18] +Arguments: hashpartitioning(t_time_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) ShuffleQueryStage +Output [1]: [t_time_sk#18] +Arguments: X + +(45) AQEShuffleRead +Input [1]: [t_time_sk#18] +Arguments: coalesced + +(46) InputAdapter +Input [1]: [t_time_sk#18] + +(47) NativeSort +Input [1]: [t_time_sk#18] +Arguments: [t_time_sk#18 ASC NULLS FIRST], false + +(48) NativeSortMergeJoin +Left keys [1]: [ws_sold_time_sk#2] +Right keys [1]: [t_time_sk#18] +Join type: Inner +Join condition: None + +(49) NativeProject +Output [12]: [ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, d_moy#17] +Input [14]: [ws_sold_time_sk#2, ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, d_moy#17, t_time_sk#18] + +(50) NativeShuffleExchange +Input [12]: [ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, d_moy#17] +Arguments: hashpartitioning(ws_ship_mode_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(51) ShuffleQueryStage +Output [12]: [ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, d_moy#17] +Arguments: X + +(52) AQEShuffleRead +Input [12]: [ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, d_moy#17] +Arguments: coalesced + +(53) InputAdapter +Input [12]: [ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, d_moy#17] + +(54) NativeSort +Input [12]: [ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, d_moy#17] +Arguments: [ws_ship_mode_sk#3 ASC NULLS FIRST], false + +(177) Scan parquet +Output [2]: [sm_ship_mode_sk#20, sm_carrier#21] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(sm_carrier, [BARIAN,DHL]), IsNotNull(sm_ship_mode_sk)] +ReadSchema: struct + +(56) InputAdapter +Input [2]: [sm_ship_mode_sk#20, sm_carrier#21] +Arguments: [#20, #21] + +(57) NativeFilter +Input [2]: [#20#20, #21#21] +Condition : (sm_carrier#21 IN (DHL,BARIAN) AND isnotnull(sm_ship_mode_sk#20)) + +(58) NativeProject +Output [1]: [sm_ship_mode_sk#20] +Input [2]: [#20#20, #21#21] + +(59) NativeShuffleExchange +Input [1]: [sm_ship_mode_sk#20] +Arguments: hashpartitioning(sm_ship_mode_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(60) ShuffleQueryStage +Output [1]: [sm_ship_mode_sk#20] +Arguments: X + +(61) AQEShuffleRead +Input [1]: [sm_ship_mode_sk#20] +Arguments: coalesced + +(62) InputAdapter +Input [1]: [sm_ship_mode_sk#20] + +(63) NativeSort +Input [1]: [sm_ship_mode_sk#20] +Arguments: [sm_ship_mode_sk#20 ASC NULLS FIRST], false + +(64) NativeSortMergeJoin +Left keys [1]: [ws_ship_mode_sk#3] +Right keys [1]: [sm_ship_mode_sk#20] +Join type: Inner +Join condition: None + +(65) NativeProject +Output [11]: [ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, d_moy#17] +Input [13]: [ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, d_moy#17, sm_ship_mode_sk#20] + +(66) NativeProject +Output [31]: [w_warehouse_name#9 AS w_warehouse_name#9, w_warehouse_sq_ft#10 AS w_warehouse_sq_ft#10, w_city#11 AS w_city#11, w_county#12 AS w_county#12, w_state#13 AS w_state#13, w_country#14 AS w_country#14, d_year#16 AS d_year#16, CASE WHEN (d_moy#17 = 1) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END AS _c7#22, CASE WHEN (d_moy#17 = 2) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END AS _c8#23, CASE WHEN (d_moy#17 = 3) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END AS _c9#24, CASE WHEN (d_moy#17 = 4) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END AS _c10#25, CASE WHEN (d_moy#17 = 5) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END AS _c11#26, CASE WHEN (d_moy#17 = 6) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END AS _c12#27, CASE WHEN (d_moy#17 = 7) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END AS _c13#28, CASE WHEN (d_moy#17 = 8) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END AS _c14#29, CASE WHEN (d_moy#17 = 9) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END AS _c15#30, CASE WHEN (d_moy#17 = 10) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END AS _c16#31, CASE WHEN (d_moy#17 = 11) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END AS _c17#32, CASE WHEN (d_moy#17 = 12) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END AS _c18#33, CASE WHEN (d_moy#17 = 1) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END AS _c19#34, CASE WHEN (d_moy#17 = 2) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END AS _c20#35, CASE WHEN (d_moy#17 = 3) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END AS _c21#36, CASE WHEN (d_moy#17 = 4) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END AS _c22#37, CASE WHEN (d_moy#17 = 5) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END AS _c23#38, CASE WHEN (d_moy#17 = 6) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END AS _c24#39, CASE WHEN (d_moy#17 = 7) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END AS _c25#40, CASE WHEN (d_moy#17 = 8) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END AS _c26#41, CASE WHEN (d_moy#17 = 9) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END AS _c27#42, CASE WHEN (d_moy#17 = 10) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END AS _c28#43, CASE WHEN (d_moy#17 = 11) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END AS _c29#44, CASE WHEN (d_moy#17 = 12) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END AS _c30#45] +Input [11]: [ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, d_moy#17] + +(67) NativeHashAggregate +Input [31]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, _c7#22, _c8#23, _c9#24, _c10#25, _c11#26, _c12#27, _c13#28, _c14#29, _c15#30, _c16#31, _c17#32, _c18#33, _c19#34, _c20#35, _c21#36, _c22#37, _c23#38, _c24#39, _c25#40, _c26#41, _c27#42, _c28#43, _c29#44, _c30#45] +Keys [7]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16] +Functions [24]: [partial_sum(_c7#22), partial_sum(_c8#23), partial_sum(_c9#24), partial_sum(_c10#25), partial_sum(_c11#26), partial_sum(_c12#27), partial_sum(_c13#28), partial_sum(_c14#29), partial_sum(_c15#30), partial_sum(_c16#31), partial_sum(_c17#32), partial_sum(_c18#33), partial_sum(_c19#34), partial_sum(_c20#35), partial_sum(_c21#36), partial_sum(_c22#37), partial_sum(_c23#38), partial_sum(_c24#39), partial_sum(_c25#40), partial_sum(_c26#41), partial_sum(_c27#42), partial_sum(_c28#43), partial_sum(_c29#44), partial_sum(_c30#45)] +Aggregate Attributes [48]: [sum#46, isEmpty#47, sum#48, isEmpty#49, sum#50, isEmpty#51, sum#52, isEmpty#53, sum#54, isEmpty#55, sum#56, isEmpty#57, sum#58, isEmpty#59, sum#60, isEmpty#61, sum#62, isEmpty#63, sum#64, isEmpty#65, sum#66, isEmpty#67, sum#68, isEmpty#69, sum#70, isEmpty#71, sum#72, isEmpty#73, sum#74, isEmpty#75, sum#76, isEmpty#77, sum#78, isEmpty#79, sum#80, isEmpty#81, sum#82, isEmpty#83, sum#84, isEmpty#85, sum#86, isEmpty#87, sum#88, isEmpty#89, sum#90, isEmpty#91, sum#92, isEmpty#93] +Results [8]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, #94#94] + +(68) NativeShuffleExchange +Input [8]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, #94#94] +Arguments: hashpartitioning(w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(69) ShuffleQueryStage +Output [8]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, #94#94] +Arguments: X + +(70) AQEShuffleRead +Input [8]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, #94#94] +Arguments: coalesced + +(71) InputAdapter +Input [8]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, #94#94] + +(72) NativeHashAggregate +Input [8]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, #94#94] +Keys [7]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16] +Functions [24]: [sum(CASE WHEN (d_moy#17 = 1) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 2) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 3) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 4) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 5) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 6) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 7) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 8) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 9) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 10) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 11) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 12) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 1) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 2) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 3) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 4) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 5) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 6) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 7) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 8) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 9) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 10) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 11) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 12) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)] +Aggregate Attributes [24]: [sum(CASE WHEN (d_moy#17 = 1) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#95, sum(CASE WHEN (d_moy#17 = 2) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#96, sum(CASE WHEN (d_moy#17 = 3) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#97, sum(CASE WHEN (d_moy#17 = 4) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#98, sum(CASE WHEN (d_moy#17 = 5) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#99, sum(CASE WHEN (d_moy#17 = 6) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#100, sum(CASE WHEN (d_moy#17 = 7) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#101, sum(CASE WHEN (d_moy#17 = 8) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#102, sum(CASE WHEN (d_moy#17 = 9) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#103, sum(CASE WHEN (d_moy#17 = 10) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#104, sum(CASE WHEN (d_moy#17 = 11) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#105, sum(CASE WHEN (d_moy#17 = 12) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#106, sum(CASE WHEN (d_moy#17 = 1) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#107, sum(CASE WHEN (d_moy#17 = 2) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#108, sum(CASE WHEN (d_moy#17 = 3) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#109, sum(CASE WHEN (d_moy#17 = 4) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#110, sum(CASE WHEN (d_moy#17 = 5) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#111, sum(CASE WHEN (d_moy#17 = 6) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#112, sum(CASE WHEN (d_moy#17 = 7) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#113, sum(CASE WHEN (d_moy#17 = 8) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#114, sum(CASE WHEN (d_moy#17 = 9) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#115, sum(CASE WHEN (d_moy#17 = 10) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#116, sum(CASE WHEN (d_moy#17 = 11) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#117, sum(CASE WHEN (d_moy#17 = 12) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#118] +Results [31]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, sum(CASE WHEN (d_moy#17 = 1) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#95, sum(CASE WHEN (d_moy#17 = 2) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#96, sum(CASE WHEN (d_moy#17 = 3) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#97, sum(CASE WHEN (d_moy#17 = 4) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#98, sum(CASE WHEN (d_moy#17 = 5) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#99, sum(CASE WHEN (d_moy#17 = 6) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#100, sum(CASE WHEN (d_moy#17 = 7) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#101, sum(CASE WHEN (d_moy#17 = 8) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#102, sum(CASE WHEN (d_moy#17 = 9) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#103, sum(CASE WHEN (d_moy#17 = 10) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#104, sum(CASE WHEN (d_moy#17 = 11) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#105, sum(CASE WHEN (d_moy#17 = 12) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#106, sum(CASE WHEN (d_moy#17 = 1) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#107, sum(CASE WHEN (d_moy#17 = 2) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#108, sum(CASE WHEN (d_moy#17 = 3) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#109, sum(CASE WHEN (d_moy#17 = 4) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#110, sum(CASE WHEN (d_moy#17 = 5) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#111, sum(CASE WHEN (d_moy#17 = 6) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#112, sum(CASE WHEN (d_moy#17 = 7) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#113, sum(CASE WHEN (d_moy#17 = 8) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#114, sum(CASE WHEN (d_moy#17 = 9) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#115, sum(CASE WHEN (d_moy#17 = 10) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#116, sum(CASE WHEN (d_moy#17 = 11) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#117, sum(CASE WHEN (d_moy#17 = 12) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#118] + +(73) NativeProject +Output [32]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, DHL,BARIAN AS ship_carriers#119, d_year#16 AS year#120, sum(CASE WHEN (d_moy#17 = 1) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#95 AS jan_sales#121, sum(CASE WHEN (d_moy#17 = 2) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#96 AS feb_sales#122, sum(CASE WHEN (d_moy#17 = 3) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#97 AS mar_sales#123, sum(CASE WHEN (d_moy#17 = 4) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#98 AS apr_sales#124, sum(CASE WHEN (d_moy#17 = 5) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#99 AS may_sales#125, sum(CASE WHEN (d_moy#17 = 6) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#100 AS jun_sales#126, sum(CASE WHEN (d_moy#17 = 7) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#101 AS jul_sales#127, sum(CASE WHEN (d_moy#17 = 8) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#102 AS aug_sales#128, sum(CASE WHEN (d_moy#17 = 9) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#103 AS sep_sales#129, sum(CASE WHEN (d_moy#17 = 10) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#104 AS oct_sales#130, sum(CASE WHEN (d_moy#17 = 11) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#105 AS nov_sales#131, sum(CASE WHEN (d_moy#17 = 12) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#106 AS dec_sales#132, sum(CASE WHEN (d_moy#17 = 1) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#107 AS jan_net#133, sum(CASE WHEN (d_moy#17 = 2) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#108 AS feb_net#134, sum(CASE WHEN (d_moy#17 = 3) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#109 AS mar_net#135, sum(CASE WHEN (d_moy#17 = 4) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#110 AS apr_net#136, sum(CASE WHEN (d_moy#17 = 5) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#111 AS may_net#137, sum(CASE WHEN (d_moy#17 = 6) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#112 AS jun_net#138, sum(CASE WHEN (d_moy#17 = 7) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#113 AS jul_net#139, sum(CASE WHEN (d_moy#17 = 8) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#114 AS aug_net#140, sum(CASE WHEN (d_moy#17 = 9) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#115 AS sep_net#141, sum(CASE WHEN (d_moy#17 = 10) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#116 AS oct_net#142, sum(CASE WHEN (d_moy#17 = 11) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#117 AS nov_net#143, sum(CASE WHEN (d_moy#17 = 12) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#118 AS dec_net#144] +Input [31]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, sum(CASE WHEN (d_moy#17 = 1) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#95, sum(CASE WHEN (d_moy#17 = 2) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#96, sum(CASE WHEN (d_moy#17 = 3) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#97, sum(CASE WHEN (d_moy#17 = 4) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#98, sum(CASE WHEN (d_moy#17 = 5) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#99, sum(CASE WHEN (d_moy#17 = 6) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#100, sum(CASE WHEN (d_moy#17 = 7) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#101, sum(CASE WHEN (d_moy#17 = 8) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#102, sum(CASE WHEN (d_moy#17 = 9) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#103, sum(CASE WHEN (d_moy#17 = 10) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#104, sum(CASE WHEN (d_moy#17 = 11) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#105, sum(CASE WHEN (d_moy#17 = 12) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#106, sum(CASE WHEN (d_moy#17 = 1) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#107, sum(CASE WHEN (d_moy#17 = 2) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#108, sum(CASE WHEN (d_moy#17 = 3) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#109, sum(CASE WHEN (d_moy#17 = 4) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#110, sum(CASE WHEN (d_moy#17 = 5) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#111, sum(CASE WHEN (d_moy#17 = 6) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#112, sum(CASE WHEN (d_moy#17 = 7) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#113, sum(CASE WHEN (d_moy#17 = 8) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#114, sum(CASE WHEN (d_moy#17 = 9) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#115, sum(CASE WHEN (d_moy#17 = 10) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#116, sum(CASE WHEN (d_moy#17 = 11) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#117, sum(CASE WHEN (d_moy#17 = 12) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#118] + +(187) Scan parquet +Output [7]: [cs_sold_date_sk#145, cs_sold_time_sk#146, cs_ship_mode_sk#147, cs_warehouse_sk#148, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_warehouse_sk), IsNotNull(cs_sold_date_sk), IsNotNull(cs_sold_time_sk), IsNotNull(cs_ship_mode_sk)] +ReadSchema: struct + +(75) InputAdapter +Input [7]: [cs_sold_date_sk#145, cs_sold_time_sk#146, cs_ship_mode_sk#147, cs_warehouse_sk#148, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151] +Arguments: [#145, #146, #147, #148, #149, #150, #151] + +(76) NativeFilter +Input [7]: [#145#145, #146#146, #147#147, #148#148, #149#149, #150#150, #151#151] +Condition : (((isnotnull(cs_warehouse_sk#148) AND isnotnull(cs_sold_date_sk#145)) AND isnotnull(cs_sold_time_sk#146)) AND isnotnull(cs_ship_mode_sk#147)) + +(77) NativeShuffleExchange +Input [7]: [#145#145, #146#146, #147#147, #148#148, #149#149, #150#150, #151#151] +Arguments: hashpartitioning(cs_warehouse_sk#148, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(78) ShuffleQueryStage +Output [7]: [#145#145, #146#146, #147#147, #148#148, #149#149, #150#150, #151#151] +Arguments: X + +(79) AQEShuffleRead +Input [7]: [#145#145, #146#146, #147#147, #148#148, #149#149, #150#150, #151#151] +Arguments: coalesced + +(80) InputAdapter +Input [7]: [#145#145, #146#146, #147#147, #148#148, #149#149, #150#150, #151#151] + +(81) NativeSort +Input [7]: [#145#145, #146#146, #147#147, #148#148, #149#149, #150#150, #151#151] +Arguments: [cs_warehouse_sk#148 ASC NULLS FIRST], false + +(82) ReusedExchange [Reuses operator id: 12] +Output [7]: [w_warehouse_sk#152, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158] + +(83) ShuffleQueryStage +Output [7]: [w_warehouse_sk#152, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158] +Arguments: X + +(84) AQEShuffleRead +Input [7]: [w_warehouse_sk#152, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158] +Arguments: coalesced + +(85) InputAdapter +Input [7]: [w_warehouse_sk#152, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158] +Arguments: [#152, #153, #154, #155, #156, #157, #158] + +(86) InputAdapter +Input [7]: [#152#152, #153#153, #154#154, #155#155, #156#156, #157#157, #158#158] + +(87) NativeSort +Input [7]: [#152#152, #153#153, #154#154, #155#155, #156#156, #157#157, #158#158] +Arguments: [w_warehouse_sk#152 ASC NULLS FIRST], false + +(88) NativeSortMergeJoin +Left keys [1]: [cs_warehouse_sk#148] +Right keys [1]: [w_warehouse_sk#152] +Join type: Inner +Join condition: None + +(89) NativeProject +Output [12]: [cs_sold_date_sk#145, cs_sold_time_sk#146, cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158] +Input [14]: [#145#145, #146#146, #147#147, #148#148, #149#149, #150#150, #151#151, #152#152, #153#153, #154#154, #155#155, #156#156, #157#157, #158#158] + +(90) NativeShuffleExchange +Input [12]: [cs_sold_date_sk#145, cs_sold_time_sk#146, cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158] +Arguments: hashpartitioning(cs_sold_date_sk#145, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(91) ShuffleQueryStage +Output [12]: [cs_sold_date_sk#145, cs_sold_time_sk#146, cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158] +Arguments: X + +(92) AQEShuffleRead +Input [12]: [cs_sold_date_sk#145, cs_sold_time_sk#146, cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158] +Arguments: coalesced + +(93) InputAdapter +Input [12]: [cs_sold_date_sk#145, cs_sold_time_sk#146, cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158] + +(94) NativeSort +Input [12]: [cs_sold_date_sk#145, cs_sold_time_sk#146, cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158] +Arguments: [cs_sold_date_sk#145 ASC NULLS FIRST], false + +(95) ReusedExchange [Reuses operator id: 27] +Output [3]: [d_date_sk#159, d_year#160, d_moy#161] + +(96) ShuffleQueryStage +Output [3]: [d_date_sk#159, d_year#160, d_moy#161] +Arguments: X + +(97) AQEShuffleRead +Input [3]: [d_date_sk#159, d_year#160, d_moy#161] +Arguments: coalesced + +(98) InputAdapter +Input [3]: [d_date_sk#159, d_year#160, d_moy#161] +Arguments: [#159, #160, #161] + +(99) InputAdapter +Input [3]: [#159#159, #160#160, #161#161] + +(100) NativeSort +Input [3]: [#159#159, #160#160, #161#161] +Arguments: [d_date_sk#159 ASC NULLS FIRST], false + +(101) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#145] +Right keys [1]: [d_date_sk#159] +Join type: Inner +Join condition: None + +(102) NativeProject +Output [13]: [cs_sold_time_sk#146, cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, d_moy#161] +Input [15]: [cs_sold_date_sk#145, cs_sold_time_sk#146, cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, #159#159, #160#160, #161#161] + +(103) NativeShuffleExchange +Input [13]: [cs_sold_time_sk#146, cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, d_moy#161] +Arguments: hashpartitioning(cs_sold_time_sk#146, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(104) ShuffleQueryStage +Output [13]: [cs_sold_time_sk#146, cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, d_moy#161] +Arguments: X + +(105) AQEShuffleRead +Input [13]: [cs_sold_time_sk#146, cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, d_moy#161] +Arguments: coalesced + +(106) InputAdapter +Input [13]: [cs_sold_time_sk#146, cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, d_moy#161] + +(107) NativeSort +Input [13]: [cs_sold_time_sk#146, cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, d_moy#161] +Arguments: [cs_sold_time_sk#146 ASC NULLS FIRST], false + +(108) ReusedExchange [Reuses operator id: 43] +Output [1]: [t_time_sk#162] + +(109) ShuffleQueryStage +Output [1]: [t_time_sk#162] +Arguments: X + +(110) AQEShuffleRead +Input [1]: [t_time_sk#162] +Arguments: coalesced + +(111) InputAdapter +Input [1]: [t_time_sk#162] +Arguments: [#162] + +(112) InputAdapter +Input [1]: [#162#162] + +(113) NativeSort +Input [1]: [#162#162] +Arguments: [t_time_sk#162 ASC NULLS FIRST], false + +(114) NativeSortMergeJoin +Left keys [1]: [cs_sold_time_sk#146] +Right keys [1]: [t_time_sk#162] +Join type: Inner +Join condition: None + +(115) NativeProject +Output [12]: [cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, d_moy#161] +Input [14]: [cs_sold_time_sk#146, cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, d_moy#161, #162#162] + +(116) NativeShuffleExchange +Input [12]: [cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, d_moy#161] +Arguments: hashpartitioning(cs_ship_mode_sk#147, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(117) ShuffleQueryStage +Output [12]: [cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, d_moy#161] +Arguments: X + +(118) AQEShuffleRead +Input [12]: [cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, d_moy#161] +Arguments: coalesced + +(119) InputAdapter +Input [12]: [cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, d_moy#161] + +(120) NativeSort +Input [12]: [cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, d_moy#161] +Arguments: [cs_ship_mode_sk#147 ASC NULLS FIRST], false + +(121) ReusedExchange [Reuses operator id: 59] +Output [1]: [sm_ship_mode_sk#163] + +(122) ShuffleQueryStage +Output [1]: [sm_ship_mode_sk#163] +Arguments: X + +(123) AQEShuffleRead +Input [1]: [sm_ship_mode_sk#163] +Arguments: coalesced + +(124) InputAdapter +Input [1]: [sm_ship_mode_sk#163] +Arguments: [#163] + +(125) InputAdapter +Input [1]: [#163#163] + +(126) NativeSort +Input [1]: [#163#163] +Arguments: [sm_ship_mode_sk#163 ASC NULLS FIRST], false + +(127) NativeSortMergeJoin +Left keys [1]: [cs_ship_mode_sk#147] +Right keys [1]: [sm_ship_mode_sk#163] +Join type: Inner +Join condition: None + +(128) NativeProject +Output [11]: [cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, d_moy#161] +Input [13]: [cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, d_moy#161, #163#163] + +(129) NativeProject +Output [31]: [w_warehouse_name#153 AS w_warehouse_name#153, w_warehouse_sq_ft#154 AS w_warehouse_sq_ft#154, w_city#155 AS w_city#155, w_county#156 AS w_county#156, w_state#157 AS w_state#157, w_country#158 AS w_country#158, d_year#160 AS d_year#160, CASE WHEN (d_moy#161 = 1) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END AS _c7#164, CASE WHEN (d_moy#161 = 2) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END AS _c8#165, CASE WHEN (d_moy#161 = 3) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END AS _c9#166, CASE WHEN (d_moy#161 = 4) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END AS _c10#167, CASE WHEN (d_moy#161 = 5) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END AS _c11#168, CASE WHEN (d_moy#161 = 6) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END AS _c12#169, CASE WHEN (d_moy#161 = 7) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END AS _c13#170, CASE WHEN (d_moy#161 = 8) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END AS _c14#171, CASE WHEN (d_moy#161 = 9) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END AS _c15#172, CASE WHEN (d_moy#161 = 10) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END AS _c16#173, CASE WHEN (d_moy#161 = 11) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END AS _c17#174, CASE WHEN (d_moy#161 = 12) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END AS _c18#175, CASE WHEN (d_moy#161 = 1) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END AS _c19#176, CASE WHEN (d_moy#161 = 2) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END AS _c20#177, CASE WHEN (d_moy#161 = 3) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END AS _c21#178, CASE WHEN (d_moy#161 = 4) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END AS _c22#179, CASE WHEN (d_moy#161 = 5) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END AS _c23#180, CASE WHEN (d_moy#161 = 6) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END AS _c24#181, CASE WHEN (d_moy#161 = 7) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END AS _c25#182, CASE WHEN (d_moy#161 = 8) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END AS _c26#183, CASE WHEN (d_moy#161 = 9) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END AS _c27#184, CASE WHEN (d_moy#161 = 10) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END AS _c28#185, CASE WHEN (d_moy#161 = 11) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END AS _c29#186, CASE WHEN (d_moy#161 = 12) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END AS _c30#187] +Input [11]: [cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, d_moy#161] + +(130) NativeHashAggregate +Input [31]: [w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, _c7#164, _c8#165, _c9#166, _c10#167, _c11#168, _c12#169, _c13#170, _c14#171, _c15#172, _c16#173, _c17#174, _c18#175, _c19#176, _c20#177, _c21#178, _c22#179, _c23#180, _c24#181, _c25#182, _c26#183, _c27#184, _c28#185, _c29#186, _c30#187] +Keys [7]: [w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160] +Functions [24]: [partial_sum(_c7#164), partial_sum(_c8#165), partial_sum(_c9#166), partial_sum(_c10#167), partial_sum(_c11#168), partial_sum(_c12#169), partial_sum(_c13#170), partial_sum(_c14#171), partial_sum(_c15#172), partial_sum(_c16#173), partial_sum(_c17#174), partial_sum(_c18#175), partial_sum(_c19#176), partial_sum(_c20#177), partial_sum(_c21#178), partial_sum(_c22#179), partial_sum(_c23#180), partial_sum(_c24#181), partial_sum(_c25#182), partial_sum(_c26#183), partial_sum(_c27#184), partial_sum(_c28#185), partial_sum(_c29#186), partial_sum(_c30#187)] +Aggregate Attributes [48]: [sum#188, isEmpty#189, sum#190, isEmpty#191, sum#192, isEmpty#193, sum#194, isEmpty#195, sum#196, isEmpty#197, sum#198, isEmpty#199, sum#200, isEmpty#201, sum#202, isEmpty#203, sum#204, isEmpty#205, sum#206, isEmpty#207, sum#208, isEmpty#209, sum#210, isEmpty#211, sum#212, isEmpty#213, sum#214, isEmpty#215, sum#216, isEmpty#217, sum#218, isEmpty#219, sum#220, isEmpty#221, sum#222, isEmpty#223, sum#224, isEmpty#225, sum#226, isEmpty#227, sum#228, isEmpty#229, sum#230, isEmpty#231, sum#232, isEmpty#233, sum#234, isEmpty#235] +Results [8]: [w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, #94#94] + +(131) NativeShuffleExchange +Input [8]: [w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, #94#94] +Arguments: hashpartitioning(w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(132) ShuffleQueryStage +Output [8]: [w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, #94#94] +Arguments: X + +(133) AQEShuffleRead +Input [8]: [w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, #94#94] +Arguments: coalesced + +(134) InputAdapter +Input [8]: [w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, #94#94] + +(135) NativeHashAggregate +Input [8]: [w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, #94#94] +Keys [7]: [w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160] +Functions [24]: [sum(CASE WHEN (d_moy#161 = 1) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 2) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 3) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 4) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 5) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 6) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 7) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 8) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 9) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 10) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 11) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 12) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 1) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 2) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 3) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 4) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 5) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 6) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 7) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 8) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 9) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 10) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 11) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 12) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)] +Aggregate Attributes [24]: [sum(CASE WHEN (d_moy#161 = 1) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#236, sum(CASE WHEN (d_moy#161 = 2) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#237, sum(CASE WHEN (d_moy#161 = 3) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#238, sum(CASE WHEN (d_moy#161 = 4) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#239, sum(CASE WHEN (d_moy#161 = 5) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#240, sum(CASE WHEN (d_moy#161 = 6) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#241, sum(CASE WHEN (d_moy#161 = 7) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#242, sum(CASE WHEN (d_moy#161 = 8) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#243, sum(CASE WHEN (d_moy#161 = 9) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#244, sum(CASE WHEN (d_moy#161 = 10) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#245, sum(CASE WHEN (d_moy#161 = 11) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#246, sum(CASE WHEN (d_moy#161 = 12) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#247, sum(CASE WHEN (d_moy#161 = 1) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#248, sum(CASE WHEN (d_moy#161 = 2) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#249, sum(CASE WHEN (d_moy#161 = 3) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#250, sum(CASE WHEN (d_moy#161 = 4) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#251, sum(CASE WHEN (d_moy#161 = 5) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#252, sum(CASE WHEN (d_moy#161 = 6) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#253, sum(CASE WHEN (d_moy#161 = 7) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#254, sum(CASE WHEN (d_moy#161 = 8) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#255, sum(CASE WHEN (d_moy#161 = 9) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#256, sum(CASE WHEN (d_moy#161 = 10) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#257, sum(CASE WHEN (d_moy#161 = 11) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#258, sum(CASE WHEN (d_moy#161 = 12) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#259] +Results [31]: [w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, sum(CASE WHEN (d_moy#161 = 1) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#236, sum(CASE WHEN (d_moy#161 = 2) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#237, sum(CASE WHEN (d_moy#161 = 3) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#238, sum(CASE WHEN (d_moy#161 = 4) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#239, sum(CASE WHEN (d_moy#161 = 5) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#240, sum(CASE WHEN (d_moy#161 = 6) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#241, sum(CASE WHEN (d_moy#161 = 7) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#242, sum(CASE WHEN (d_moy#161 = 8) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#243, sum(CASE WHEN (d_moy#161 = 9) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#244, sum(CASE WHEN (d_moy#161 = 10) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#245, sum(CASE WHEN (d_moy#161 = 11) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#246, sum(CASE WHEN (d_moy#161 = 12) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#247, sum(CASE WHEN (d_moy#161 = 1) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#248, sum(CASE WHEN (d_moy#161 = 2) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#249, sum(CASE WHEN (d_moy#161 = 3) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#250, sum(CASE WHEN (d_moy#161 = 4) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#251, sum(CASE WHEN (d_moy#161 = 5) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#252, sum(CASE WHEN (d_moy#161 = 6) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#253, sum(CASE WHEN (d_moy#161 = 7) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#254, sum(CASE WHEN (d_moy#161 = 8) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#255, sum(CASE WHEN (d_moy#161 = 9) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#256, sum(CASE WHEN (d_moy#161 = 10) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#257, sum(CASE WHEN (d_moy#161 = 11) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#258, sum(CASE WHEN (d_moy#161 = 12) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#259] + +(136) NativeProject +Output [32]: [w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, DHL,BARIAN AS ship_carriers#260, d_year#160 AS year#261, sum(CASE WHEN (d_moy#161 = 1) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#236 AS jan_sales#262, sum(CASE WHEN (d_moy#161 = 2) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#237 AS feb_sales#263, sum(CASE WHEN (d_moy#161 = 3) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#238 AS mar_sales#264, sum(CASE WHEN (d_moy#161 = 4) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#239 AS apr_sales#265, sum(CASE WHEN (d_moy#161 = 5) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#240 AS may_sales#266, sum(CASE WHEN (d_moy#161 = 6) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#241 AS jun_sales#267, sum(CASE WHEN (d_moy#161 = 7) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#242 AS jul_sales#268, sum(CASE WHEN (d_moy#161 = 8) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#243 AS aug_sales#269, sum(CASE WHEN (d_moy#161 = 9) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#244 AS sep_sales#270, sum(CASE WHEN (d_moy#161 = 10) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#245 AS oct_sales#271, sum(CASE WHEN (d_moy#161 = 11) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#246 AS nov_sales#272, sum(CASE WHEN (d_moy#161 = 12) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#247 AS dec_sales#273, sum(CASE WHEN (d_moy#161 = 1) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#248 AS jan_net#274, sum(CASE WHEN (d_moy#161 = 2) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#249 AS feb_net#275, sum(CASE WHEN (d_moy#161 = 3) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#250 AS mar_net#276, sum(CASE WHEN (d_moy#161 = 4) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#251 AS apr_net#277, sum(CASE WHEN (d_moy#161 = 5) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#252 AS may_net#278, sum(CASE WHEN (d_moy#161 = 6) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#253 AS jun_net#279, sum(CASE WHEN (d_moy#161 = 7) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#254 AS jul_net#280, sum(CASE WHEN (d_moy#161 = 8) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#255 AS aug_net#281, sum(CASE WHEN (d_moy#161 = 9) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#256 AS sep_net#282, sum(CASE WHEN (d_moy#161 = 10) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#257 AS oct_net#283, sum(CASE WHEN (d_moy#161 = 11) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#258 AS nov_net#284, sum(CASE WHEN (d_moy#161 = 12) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#259 AS dec_net#285] +Input [31]: [w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, sum(CASE WHEN (d_moy#161 = 1) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#236, sum(CASE WHEN (d_moy#161 = 2) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#237, sum(CASE WHEN (d_moy#161 = 3) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#238, sum(CASE WHEN (d_moy#161 = 4) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#239, sum(CASE WHEN (d_moy#161 = 5) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#240, sum(CASE WHEN (d_moy#161 = 6) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#241, sum(CASE WHEN (d_moy#161 = 7) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#242, sum(CASE WHEN (d_moy#161 = 8) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#243, sum(CASE WHEN (d_moy#161 = 9) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#244, sum(CASE WHEN (d_moy#161 = 10) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#245, sum(CASE WHEN (d_moy#161 = 11) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#246, sum(CASE WHEN (d_moy#161 = 12) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#247, sum(CASE WHEN (d_moy#161 = 1) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#248, sum(CASE WHEN (d_moy#161 = 2) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#249, sum(CASE WHEN (d_moy#161 = 3) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#250, sum(CASE WHEN (d_moy#161 = 4) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#251, sum(CASE WHEN (d_moy#161 = 5) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#252, sum(CASE WHEN (d_moy#161 = 6) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#253, sum(CASE WHEN (d_moy#161 = 7) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#254, sum(CASE WHEN (d_moy#161 = 8) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#255, sum(CASE WHEN (d_moy#161 = 9) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#256, sum(CASE WHEN (d_moy#161 = 10) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#257, sum(CASE WHEN (d_moy#161 = 11) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#258, sum(CASE WHEN (d_moy#161 = 12) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#259] + +(137) NativeUnion +Arguments: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, ship_carriers#119, year#120, jan_sales#121, feb_sales#122, mar_sales#123, apr_sales#124, may_sales#125, jun_sales#126, jul_sales#127, aug_sales#128, sep_sales#129, oct_sales#130, nov_sales#131, dec_sales#132, jan_net#133, feb_net#134, mar_net#135, apr_net#136, ... 8 more fields] + +(138) InputAdapter +Input [32]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, ship_carriers#119, year#120, jan_sales#121, feb_sales#122, mar_sales#123, apr_sales#124, may_sales#125, jun_sales#126, jul_sales#127, aug_sales#128, sep_sales#129, oct_sales#130, nov_sales#131, dec_sales#132, jan_net#133, feb_net#134, mar_net#135, apr_net#136, may_net#137, jun_net#138, jul_net#139, aug_net#140, sep_net#141, oct_net#142, nov_net#143, dec_net#144] +Arguments: [#9, #10, #11, #12, #13, #14, #119, #120, #121, #122, #123, #124, #125, #126, #127, #128, #129, #130, #131, #132, #133, #134, #135, #136, ... 8 more fields] + +(139) NativeProject +Output [44]: [w_warehouse_name#9 AS w_warehouse_name#9, w_warehouse_sq_ft#10 AS w_warehouse_sq_ft#10, w_city#11 AS w_city#11, w_county#12 AS w_county#12, w_state#13 AS w_state#13, w_country#14 AS w_country#14, ship_carriers#119 AS ship_carriers#119, year#120 AS year#120, jan_sales#121 AS _c8#286, feb_sales#122 AS _c9#287, mar_sales#123 AS _c10#288, apr_sales#124 AS _c11#289, may_sales#125 AS _c12#290, jun_sales#126 AS _c13#291, jul_sales#127 AS _c14#292, aug_sales#128 AS _c15#293, sep_sales#129 AS _c16#294, oct_sales#130 AS _c17#295, nov_sales#131 AS _c18#296, dec_sales#132 AS _c19#297, (jan_sales#121 / cast(w_warehouse_sq_ft#10 as decimal(10,0))) AS _c20#298, (feb_sales#122 / cast(w_warehouse_sq_ft#10 as decimal(10,0))) AS _c21#299, (mar_sales#123 / cast(w_warehouse_sq_ft#10 as decimal(10,0))) AS _c22#300, (apr_sales#124 / cast(w_warehouse_sq_ft#10 as decimal(10,0))) AS _c23#301, (may_sales#125 / cast(w_warehouse_sq_ft#10 as decimal(10,0))) AS _c24#302, (jun_sales#126 / cast(w_warehouse_sq_ft#10 as decimal(10,0))) AS _c25#303, (jul_sales#127 / cast(w_warehouse_sq_ft#10 as decimal(10,0))) AS _c26#304, (aug_sales#128 / cast(w_warehouse_sq_ft#10 as decimal(10,0))) AS _c27#305, (sep_sales#129 / cast(w_warehouse_sq_ft#10 as decimal(10,0))) AS _c28#306, (oct_sales#130 / cast(w_warehouse_sq_ft#10 as decimal(10,0))) AS _c29#307, (nov_sales#131 / cast(w_warehouse_sq_ft#10 as decimal(10,0))) AS _c30#308, (dec_sales#132 / cast(w_warehouse_sq_ft#10 as decimal(10,0))) AS _c31#309, jan_net#133 AS _c32#310, feb_net#134 AS _c33#311, mar_net#135 AS _c34#312, apr_net#136 AS _c35#313, may_net#137 AS _c36#314, jun_net#138 AS _c37#315, jul_net#139 AS _c38#316, aug_net#140 AS _c39#317, sep_net#141 AS _c40#318, oct_net#142 AS _c41#319, nov_net#143 AS _c42#320, dec_net#144 AS _c43#321] +Input [32]: [#9#9, #10#10, #11#11, #12#12, #13#13, #14#14, #119#119, #120#120, #121#121, #122#122, #123#123, #124#124, #125#125, #126#126, #127#127, #128#128, #129#129, #130#130, #131#131, #132#132, #133#133, #134#134, #135#135, #136#136, #137#137, #138#138, #139#139, #140#140, #141#141, #142#142, #143#143, #144#144] + +(140) NativeHashAggregate +Input [44]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, ship_carriers#119, year#120, _c8#286, _c9#287, _c10#288, _c11#289, _c12#290, _c13#291, _c14#292, _c15#293, _c16#294, _c17#295, _c18#296, _c19#297, _c20#298, _c21#299, _c22#300, _c23#301, _c24#302, _c25#303, _c26#304, _c27#305, _c28#306, _c29#307, _c30#308, _c31#309, _c32#310, _c33#311, _c34#312, _c35#313, _c36#314, _c37#315, _c38#316, _c39#317, _c40#318, _c41#319, _c42#320, _c43#321] +Keys [8]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, ship_carriers#119, year#120] +Functions [36]: [partial_sum(_c8#286), partial_sum(_c9#287), partial_sum(_c10#288), partial_sum(_c11#289), partial_sum(_c12#290), partial_sum(_c13#291), partial_sum(_c14#292), partial_sum(_c15#293), partial_sum(_c16#294), partial_sum(_c17#295), partial_sum(_c18#296), partial_sum(_c19#297), partial_sum(_c20#298), partial_sum(_c21#299), partial_sum(_c22#300), partial_sum(_c23#301), partial_sum(_c24#302), partial_sum(_c25#303), partial_sum(_c26#304), partial_sum(_c27#305), partial_sum(_c28#306), partial_sum(_c29#307), partial_sum(_c30#308), partial_sum(_c31#309), partial_sum(_c32#310), partial_sum(_c33#311), partial_sum(_c34#312), partial_sum(_c35#313), partial_sum(_c36#314), partial_sum(_c37#315), partial_sum(_c38#316), partial_sum(_c39#317), partial_sum(_c40#318), partial_sum(_c41#319), partial_sum(_c42#320), partial_sum(_c43#321)] +Aggregate Attributes [72]: [sum#322, isEmpty#323, sum#324, isEmpty#325, sum#326, isEmpty#327, sum#328, isEmpty#329, sum#330, isEmpty#331, sum#332, isEmpty#333, sum#334, isEmpty#335, sum#336, isEmpty#337, sum#338, isEmpty#339, sum#340, isEmpty#341, sum#342, isEmpty#343, sum#344, isEmpty#345, sum#346, isEmpty#347, sum#348, isEmpty#349, sum#350, isEmpty#351, sum#352, isEmpty#353, sum#354, isEmpty#355, sum#356, isEmpty#357, sum#358, isEmpty#359, sum#360, isEmpty#361, sum#362, isEmpty#363, sum#364, isEmpty#365, sum#366, isEmpty#367, sum#368, isEmpty#369, sum#370, isEmpty#371, sum#372, isEmpty#373, sum#374, isEmpty#375, sum#376, isEmpty#377, sum#378, isEmpty#379, sum#380, isEmpty#381, sum#382, isEmpty#383, sum#384, isEmpty#385, sum#386, isEmpty#387, sum#388, isEmpty#389, sum#390, isEmpty#391, sum#392, isEmpty#393] +Results [9]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, ship_carriers#119, year#120, #94#94] + +(141) NativeShuffleExchange +Input [9]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, ship_carriers#119, year#120, #94#94] +Arguments: hashpartitioning(w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, ship_carriers#119, year#120, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(142) ShuffleQueryStage +Output [9]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, ship_carriers#119, year#120, #94#94] +Arguments: X + +(143) AQEShuffleRead +Input [9]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, ship_carriers#119, year#120, #94#94] +Arguments: coalesced + +(144) InputAdapter +Input [9]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, ship_carriers#119, year#120, #94#94] + +(145) NativeHashAggregate +Input [9]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, ship_carriers#119, year#120, #94#94] +Keys [8]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, ship_carriers#119, year#120] +Functions [36]: [sum(jan_sales#121), sum(feb_sales#122), sum(mar_sales#123), sum(apr_sales#124), sum(may_sales#125), sum(jun_sales#126), sum(jul_sales#127), sum(aug_sales#128), sum(sep_sales#129), sum(oct_sales#130), sum(nov_sales#131), sum(dec_sales#132), sum((jan_sales#121 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), sum((feb_sales#122 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), sum((mar_sales#123 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), sum((apr_sales#124 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), sum((may_sales#125 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), sum((jun_sales#126 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), sum((jul_sales#127 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), sum((aug_sales#128 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), sum((sep_sales#129 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), sum((oct_sales#130 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), sum((nov_sales#131 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), sum((dec_sales#132 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), sum(jan_net#133), sum(feb_net#134), sum(mar_net#135), sum(apr_net#136), sum(may_net#137), sum(jun_net#138), sum(jul_net#139), sum(aug_net#140), sum(sep_net#141), sum(oct_net#142), sum(nov_net#143), sum(dec_net#144)] +Aggregate Attributes [36]: [sum(jan_sales#121)#394, sum(feb_sales#122)#395, sum(mar_sales#123)#396, sum(apr_sales#124)#397, sum(may_sales#125)#398, sum(jun_sales#126)#399, sum(jul_sales#127)#400, sum(aug_sales#128)#401, sum(sep_sales#129)#402, sum(oct_sales#130)#403, sum(nov_sales#131)#404, sum(dec_sales#132)#405, sum((jan_sales#121 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#406, sum((feb_sales#122 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#407, sum((mar_sales#123 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#408, sum((apr_sales#124 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#409, sum((may_sales#125 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#410, sum((jun_sales#126 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#411, sum((jul_sales#127 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#412, sum((aug_sales#128 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#413, sum((sep_sales#129 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#414, sum((oct_sales#130 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#415, sum((nov_sales#131 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#416, sum((dec_sales#132 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#417, sum(jan_net#133)#418, sum(feb_net#134)#419, sum(mar_net#135)#420, sum(apr_net#136)#421, sum(may_net#137)#422, sum(jun_net#138)#423, sum(jul_net#139)#424, sum(aug_net#140)#425, sum(sep_net#141)#426, sum(oct_net#142)#427, sum(nov_net#143)#428, sum(dec_net#144)#429] +Results [44]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, ship_carriers#119, year#120, sum(jan_sales#121)#394, sum(feb_sales#122)#395, sum(mar_sales#123)#396, sum(apr_sales#124)#397, sum(may_sales#125)#398, sum(jun_sales#126)#399, sum(jul_sales#127)#400, sum(aug_sales#128)#401, sum(sep_sales#129)#402, sum(oct_sales#130)#403, sum(nov_sales#131)#404, sum(dec_sales#132)#405, sum((jan_sales#121 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#406, sum((feb_sales#122 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#407, sum((mar_sales#123 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#408, sum((apr_sales#124 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#409, sum((may_sales#125 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#410, sum((jun_sales#126 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#411, sum((jul_sales#127 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#412, sum((aug_sales#128 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#413, sum((sep_sales#129 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#414, sum((oct_sales#130 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#415, sum((nov_sales#131 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#416, sum((dec_sales#132 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#417, sum(jan_net#133)#418, sum(feb_net#134)#419, sum(mar_net#135)#420, sum(apr_net#136)#421, sum(may_net#137)#422, sum(jun_net#138)#423, sum(jul_net#139)#424, sum(aug_net#140)#425, sum(sep_net#141)#426, sum(oct_net#142)#427, sum(nov_net#143)#428, sum(dec_net#144)#429] + +(146) NativeProject +Output [44]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, ship_carriers#119, year#120, sum(jan_sales#121)#394 AS jan_sales#430, sum(feb_sales#122)#395 AS feb_sales#431, sum(mar_sales#123)#396 AS mar_sales#432, sum(apr_sales#124)#397 AS apr_sales#433, sum(may_sales#125)#398 AS may_sales#434, sum(jun_sales#126)#399 AS jun_sales#435, sum(jul_sales#127)#400 AS jul_sales#436, sum(aug_sales#128)#401 AS aug_sales#437, sum(sep_sales#129)#402 AS sep_sales#438, sum(oct_sales#130)#403 AS oct_sales#439, sum(nov_sales#131)#404 AS nov_sales#440, sum(dec_sales#132)#405 AS dec_sales#441, sum((jan_sales#121 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#406 AS jan_sales_per_sq_foot#442, sum((feb_sales#122 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#407 AS feb_sales_per_sq_foot#443, sum((mar_sales#123 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#408 AS mar_sales_per_sq_foot#444, sum((apr_sales#124 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#409 AS apr_sales_per_sq_foot#445, sum((may_sales#125 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#410 AS may_sales_per_sq_foot#446, sum((jun_sales#126 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#411 AS jun_sales_per_sq_foot#447, sum((jul_sales#127 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#412 AS jul_sales_per_sq_foot#448, sum((aug_sales#128 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#413 AS aug_sales_per_sq_foot#449, sum((sep_sales#129 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#414 AS sep_sales_per_sq_foot#450, sum((oct_sales#130 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#415 AS oct_sales_per_sq_foot#451, sum((nov_sales#131 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#416 AS nov_sales_per_sq_foot#452, sum((dec_sales#132 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#417 AS dec_sales_per_sq_foot#453, sum(jan_net#133)#418 AS jan_net#454, sum(feb_net#134)#419 AS feb_net#455, sum(mar_net#135)#420 AS mar_net#456, sum(apr_net#136)#421 AS apr_net#457, sum(may_net#137)#422 AS may_net#458, sum(jun_net#138)#423 AS jun_net#459, sum(jul_net#139)#424 AS jul_net#460, sum(aug_net#140)#425 AS aug_net#461, sum(sep_net#141)#426 AS sep_net#462, sum(oct_net#142)#427 AS oct_net#463, sum(nov_net#143)#428 AS nov_net#464, sum(dec_net#144)#429 AS dec_net#465] +Input [44]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, ship_carriers#119, year#120, sum(jan_sales#121)#394, sum(feb_sales#122)#395, sum(mar_sales#123)#396, sum(apr_sales#124)#397, sum(may_sales#125)#398, sum(jun_sales#126)#399, sum(jul_sales#127)#400, sum(aug_sales#128)#401, sum(sep_sales#129)#402, sum(oct_sales#130)#403, sum(nov_sales#131)#404, sum(dec_sales#132)#405, sum((jan_sales#121 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#406, sum((feb_sales#122 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#407, sum((mar_sales#123 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#408, sum((apr_sales#124 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#409, sum((may_sales#125 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#410, sum((jun_sales#126 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#411, sum((jul_sales#127 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#412, sum((aug_sales#128 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#413, sum((sep_sales#129 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#414, sum((oct_sales#130 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#415, sum((nov_sales#131 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#416, sum((dec_sales#132 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#417, sum(jan_net#133)#418, sum(feb_net#134)#419, sum(mar_net#135)#420, sum(apr_net#136)#421, sum(may_net#137)#422, sum(jun_net#138)#423, sum(jul_net#139)#424, sum(aug_net#140)#425, sum(sep_net#141)#426, sum(oct_net#142)#427, sum(nov_net#143)#428, sum(dec_net#144)#429] + +(147) NativeTakeOrdered +Input [44]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, ship_carriers#119, year#120, jan_sales#430, feb_sales#431, mar_sales#432, apr_sales#433, may_sales#434, jun_sales#435, jul_sales#436, aug_sales#437, sep_sales#438, oct_sales#439, nov_sales#440, dec_sales#441, jan_sales_per_sq_foot#442, feb_sales_per_sq_foot#443, mar_sales_per_sq_foot#444, apr_sales_per_sq_foot#445, may_sales_per_sq_foot#446, jun_sales_per_sq_foot#447, jul_sales_per_sq_foot#448, aug_sales_per_sq_foot#449, sep_sales_per_sq_foot#450, oct_sales_per_sq_foot#451, nov_sales_per_sq_foot#452, dec_sales_per_sq_foot#453, jan_net#454, feb_net#455, mar_net#456, apr_net#457, may_net#458, jun_net#459, jul_net#460, aug_net#461, sep_net#462, oct_net#463, nov_net#464, dec_net#465] +Arguments: X, [w_warehouse_name#9 ASC NULLS FIRST] + +(148) Scan parquet +Output [7]: [ws_sold_date_sk#1, ws_sold_time_sk#2, ws_ship_mode_sk#3, ws_warehouse_sk#4, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_warehouse_sk), IsNotNull(ws_sold_date_sk), IsNotNull(ws_sold_time_sk), IsNotNull(ws_ship_mode_sk)] +ReadSchema: struct + +(149) Filter +Input [7]: [ws_sold_date_sk#1, ws_sold_time_sk#2, ws_ship_mode_sk#3, ws_warehouse_sk#4, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7] +Condition : (((isnotnull(ws_warehouse_sk#4) AND isnotnull(ws_sold_date_sk#1)) AND isnotnull(ws_sold_time_sk#2)) AND isnotnull(ws_ship_mode_sk#3)) + +(150) Exchange +Input [7]: [ws_sold_date_sk#1, ws_sold_time_sk#2, ws_ship_mode_sk#3, ws_warehouse_sk#4, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7] +Arguments: hashpartitioning(ws_warehouse_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(151) Sort +Input [7]: [ws_sold_date_sk#1, ws_sold_time_sk#2, ws_ship_mode_sk#3, ws_warehouse_sk#4, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7] +Arguments: [ws_warehouse_sk#4 ASC NULLS FIRST], false, 0 + +(152) Scan parquet +Output [7]: [w_warehouse_sk#8, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(w_warehouse_sk)] +ReadSchema: struct + +(153) Filter +Input [7]: [w_warehouse_sk#8, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14] +Condition : isnotnull(w_warehouse_sk#8) + +(154) Exchange +Input [7]: [w_warehouse_sk#8, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14] +Arguments: hashpartitioning(w_warehouse_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(155) Sort +Input [7]: [w_warehouse_sk#8, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14] +Arguments: [w_warehouse_sk#8 ASC NULLS FIRST], false, 0 + +(156) SortMergeJoin +Left keys [1]: [ws_warehouse_sk#4] +Right keys [1]: [w_warehouse_sk#8] +Join type: Inner +Join condition: None + +(157) Project +Output [12]: [ws_sold_date_sk#1, ws_sold_time_sk#2, ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14] +Input [14]: [ws_sold_date_sk#1, ws_sold_time_sk#2, ws_ship_mode_sk#3, ws_warehouse_sk#4, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_sk#8, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14] + +(158) Exchange +Input [12]: [ws_sold_date_sk#1, ws_sold_time_sk#2, ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14] +Arguments: hashpartitioning(ws_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(159) Sort +Input [12]: [ws_sold_date_sk#1, ws_sold_time_sk#2, ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14] +Arguments: [ws_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(160) Scan parquet +Output [3]: [d_date_sk#15, d_year#16, d_moy#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(161) Filter +Input [3]: [d_date_sk#15, d_year#16, d_moy#17] +Condition : ((isnotnull(d_year#16) AND (d_year#16 = 2001)) AND isnotnull(d_date_sk#15)) + +(162) Exchange +Input [3]: [d_date_sk#15, d_year#16, d_moy#17] +Arguments: hashpartitioning(d_date_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(163) Sort +Input [3]: [d_date_sk#15, d_year#16, d_moy#17] +Arguments: [d_date_sk#15 ASC NULLS FIRST], false, 0 + +(164) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#1] +Right keys [1]: [d_date_sk#15] +Join type: Inner +Join condition: None + +(165) Project +Output [13]: [ws_sold_time_sk#2, ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, d_moy#17] +Input [15]: [ws_sold_date_sk#1, ws_sold_time_sk#2, ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_date_sk#15, d_year#16, d_moy#17] + +(166) Exchange +Input [13]: [ws_sold_time_sk#2, ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, d_moy#17] +Arguments: hashpartitioning(ws_sold_time_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(167) Sort +Input [13]: [ws_sold_time_sk#2, ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, d_moy#17] +Arguments: [ws_sold_time_sk#2 ASC NULLS FIRST], false, 0 + +(168) Scan parquet +Output [2]: [t_time_sk#18, t_time#19] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(t_time), GreaterThanOrEqual(t_time,30838), LessThanOrEqual(t_time,59638), IsNotNull(t_time_sk)] +ReadSchema: struct + +(169) Filter +Input [2]: [t_time_sk#18, t_time#19] +Condition : (((isnotnull(t_time#19) AND (t_time#19 >= 30838)) AND (t_time#19 <= 59638)) AND isnotnull(t_time_sk#18)) + +(170) Project +Output [1]: [t_time_sk#18] +Input [2]: [t_time_sk#18, t_time#19] + +(171) Exchange +Input [1]: [t_time_sk#18] +Arguments: hashpartitioning(t_time_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(172) Sort +Input [1]: [t_time_sk#18] +Arguments: [t_time_sk#18 ASC NULLS FIRST], false, 0 + +(173) SortMergeJoin +Left keys [1]: [ws_sold_time_sk#2] +Right keys [1]: [t_time_sk#18] +Join type: Inner +Join condition: None + +(174) Project +Output [12]: [ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, d_moy#17] +Input [14]: [ws_sold_time_sk#2, ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, d_moy#17, t_time_sk#18] + +(175) Exchange +Input [12]: [ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, d_moy#17] +Arguments: hashpartitioning(ws_ship_mode_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(176) Sort +Input [12]: [ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, d_moy#17] +Arguments: [ws_ship_mode_sk#3 ASC NULLS FIRST], false, 0 + +(177) Scan parquet +Output [2]: [sm_ship_mode_sk#20, sm_carrier#21] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(sm_carrier, [BARIAN,DHL]), IsNotNull(sm_ship_mode_sk)] +ReadSchema: struct + +(178) Filter +Input [2]: [sm_ship_mode_sk#20, sm_carrier#21] +Condition : (sm_carrier#21 IN (DHL,BARIAN) AND isnotnull(sm_ship_mode_sk#20)) + +(179) Project +Output [1]: [sm_ship_mode_sk#20] +Input [2]: [sm_ship_mode_sk#20, sm_carrier#21] + +(180) Exchange +Input [1]: [sm_ship_mode_sk#20] +Arguments: hashpartitioning(sm_ship_mode_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(181) Sort +Input [1]: [sm_ship_mode_sk#20] +Arguments: [sm_ship_mode_sk#20 ASC NULLS FIRST], false, 0 + +(182) SortMergeJoin +Left keys [1]: [ws_ship_mode_sk#3] +Right keys [1]: [sm_ship_mode_sk#20] +Join type: Inner +Join condition: None + +(183) Project +Output [11]: [ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, d_moy#17] +Input [13]: [ws_ship_mode_sk#3, ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, d_moy#17, sm_ship_mode_sk#20] + +(184) HashAggregate +Input [11]: [ws_quantity#5, ws_ext_sales_price#6, ws_net_paid#7, w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, d_moy#17] +Keys [7]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16] +Functions [24]: [partial_sum(CASE WHEN (d_moy#17 = 1) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#17 = 2) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#17 = 3) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#17 = 4) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#17 = 5) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#17 = 6) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#17 = 7) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#17 = 8) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#17 = 9) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#17 = 10) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#17 = 11) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#17 = 12) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#17 = 1) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#17 = 2) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#17 = 3) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#17 = 4) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#17 = 5) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#17 = 6) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#17 = 7) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#17 = 8) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#17 = 9) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#17 = 10) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#17 = 11) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#17 = 12) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)] +Aggregate Attributes [48]: [sum#46, isEmpty#47, sum#48, isEmpty#49, sum#50, isEmpty#51, sum#52, isEmpty#53, sum#54, isEmpty#55, sum#56, isEmpty#57, sum#58, isEmpty#59, sum#60, isEmpty#61, sum#62, isEmpty#63, sum#64, isEmpty#65, sum#66, isEmpty#67, sum#68, isEmpty#69, sum#70, isEmpty#71, sum#72, isEmpty#73, sum#74, isEmpty#75, sum#76, isEmpty#77, sum#78, isEmpty#79, sum#80, isEmpty#81, sum#82, isEmpty#83, sum#84, isEmpty#85, sum#86, isEmpty#87, sum#88, isEmpty#89, sum#90, isEmpty#91, sum#92, isEmpty#93] +Results [55]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, sum#466, isEmpty#467, sum#468, isEmpty#469, sum#470, isEmpty#471, sum#472, isEmpty#473, sum#474, isEmpty#475, sum#476, isEmpty#477, sum#478, isEmpty#479, sum#480, isEmpty#481, sum#482, isEmpty#483, sum#484, isEmpty#485, sum#486, isEmpty#487, sum#488, isEmpty#489, sum#490, isEmpty#491, sum#492, isEmpty#493, sum#494, isEmpty#495, sum#496, isEmpty#497, sum#498, isEmpty#499, sum#500, isEmpty#501, sum#502, isEmpty#503, sum#504, isEmpty#505, sum#506, isEmpty#507, sum#508, isEmpty#509, sum#510, isEmpty#511, sum#512, isEmpty#513] + +(185) Exchange +Input [55]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, sum#466, isEmpty#467, sum#468, isEmpty#469, sum#470, isEmpty#471, sum#472, isEmpty#473, sum#474, isEmpty#475, sum#476, isEmpty#477, sum#478, isEmpty#479, sum#480, isEmpty#481, sum#482, isEmpty#483, sum#484, isEmpty#485, sum#486, isEmpty#487, sum#488, isEmpty#489, sum#490, isEmpty#491, sum#492, isEmpty#493, sum#494, isEmpty#495, sum#496, isEmpty#497, sum#498, isEmpty#499, sum#500, isEmpty#501, sum#502, isEmpty#503, sum#504, isEmpty#505, sum#506, isEmpty#507, sum#508, isEmpty#509, sum#510, isEmpty#511, sum#512, isEmpty#513] +Arguments: hashpartitioning(w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(186) HashAggregate +Input [55]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16, sum#466, isEmpty#467, sum#468, isEmpty#469, sum#470, isEmpty#471, sum#472, isEmpty#473, sum#474, isEmpty#475, sum#476, isEmpty#477, sum#478, isEmpty#479, sum#480, isEmpty#481, sum#482, isEmpty#483, sum#484, isEmpty#485, sum#486, isEmpty#487, sum#488, isEmpty#489, sum#490, isEmpty#491, sum#492, isEmpty#493, sum#494, isEmpty#495, sum#496, isEmpty#497, sum#498, isEmpty#499, sum#500, isEmpty#501, sum#502, isEmpty#503, sum#504, isEmpty#505, sum#506, isEmpty#507, sum#508, isEmpty#509, sum#510, isEmpty#511, sum#512, isEmpty#513] +Keys [7]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, d_year#16] +Functions [24]: [sum(CASE WHEN (d_moy#17 = 1) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 2) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 3) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 4) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 5) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 6) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 7) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 8) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 9) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 10) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 11) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 12) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 1) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 2) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 3) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 4) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 5) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 6) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 7) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 8) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 9) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 10) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 11) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#17 = 12) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)] +Aggregate Attributes [24]: [sum(CASE WHEN (d_moy#17 = 1) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#95, sum(CASE WHEN (d_moy#17 = 2) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#96, sum(CASE WHEN (d_moy#17 = 3) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#97, sum(CASE WHEN (d_moy#17 = 4) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#98, sum(CASE WHEN (d_moy#17 = 5) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#99, sum(CASE WHEN (d_moy#17 = 6) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#100, sum(CASE WHEN (d_moy#17 = 7) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#101, sum(CASE WHEN (d_moy#17 = 8) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#102, sum(CASE WHEN (d_moy#17 = 9) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#103, sum(CASE WHEN (d_moy#17 = 10) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#104, sum(CASE WHEN (d_moy#17 = 11) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#105, sum(CASE WHEN (d_moy#17 = 12) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#106, sum(CASE WHEN (d_moy#17 = 1) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#107, sum(CASE WHEN (d_moy#17 = 2) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#108, sum(CASE WHEN (d_moy#17 = 3) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#109, sum(CASE WHEN (d_moy#17 = 4) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#110, sum(CASE WHEN (d_moy#17 = 5) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#111, sum(CASE WHEN (d_moy#17 = 6) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#112, sum(CASE WHEN (d_moy#17 = 7) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#113, sum(CASE WHEN (d_moy#17 = 8) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#114, sum(CASE WHEN (d_moy#17 = 9) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#115, sum(CASE WHEN (d_moy#17 = 10) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#116, sum(CASE WHEN (d_moy#17 = 11) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#117, sum(CASE WHEN (d_moy#17 = 12) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#118] +Results [32]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, DHL,BARIAN AS ship_carriers#119, d_year#16 AS year#120, sum(CASE WHEN (d_moy#17 = 1) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#95 AS jan_sales#121, sum(CASE WHEN (d_moy#17 = 2) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#96 AS feb_sales#122, sum(CASE WHEN (d_moy#17 = 3) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#97 AS mar_sales#123, sum(CASE WHEN (d_moy#17 = 4) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#98 AS apr_sales#124, sum(CASE WHEN (d_moy#17 = 5) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#99 AS may_sales#125, sum(CASE WHEN (d_moy#17 = 6) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#100 AS jun_sales#126, sum(CASE WHEN (d_moy#17 = 7) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#101 AS jul_sales#127, sum(CASE WHEN (d_moy#17 = 8) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#102 AS aug_sales#128, sum(CASE WHEN (d_moy#17 = 9) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#103 AS sep_sales#129, sum(CASE WHEN (d_moy#17 = 10) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#104 AS oct_sales#130, sum(CASE WHEN (d_moy#17 = 11) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#105 AS nov_sales#131, sum(CASE WHEN (d_moy#17 = 12) THEN (ws_ext_sales_price#6 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#106 AS dec_sales#132, sum(CASE WHEN (d_moy#17 = 1) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#107 AS jan_net#133, sum(CASE WHEN (d_moy#17 = 2) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#108 AS feb_net#134, sum(CASE WHEN (d_moy#17 = 3) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#109 AS mar_net#135, sum(CASE WHEN (d_moy#17 = 4) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#110 AS apr_net#136, sum(CASE WHEN (d_moy#17 = 5) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#111 AS may_net#137, sum(CASE WHEN (d_moy#17 = 6) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#112 AS jun_net#138, sum(CASE WHEN (d_moy#17 = 7) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#113 AS jul_net#139, sum(CASE WHEN (d_moy#17 = 8) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#114 AS aug_net#140, sum(CASE WHEN (d_moy#17 = 9) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#115 AS sep_net#141, sum(CASE WHEN (d_moy#17 = 10) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#116 AS oct_net#142, sum(CASE WHEN (d_moy#17 = 11) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#117 AS nov_net#143, sum(CASE WHEN (d_moy#17 = 12) THEN (ws_net_paid#7 * cast(ws_quantity#5 as decimal(10,0))) ELSE 0.00 END)#118 AS dec_net#144] + +(187) Scan parquet +Output [7]: [cs_sold_date_sk#145, cs_sold_time_sk#146, cs_ship_mode_sk#147, cs_warehouse_sk#148, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_warehouse_sk), IsNotNull(cs_sold_date_sk), IsNotNull(cs_sold_time_sk), IsNotNull(cs_ship_mode_sk)] +ReadSchema: struct + +(188) Filter +Input [7]: [cs_sold_date_sk#145, cs_sold_time_sk#146, cs_ship_mode_sk#147, cs_warehouse_sk#148, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151] +Condition : (((isnotnull(cs_warehouse_sk#148) AND isnotnull(cs_sold_date_sk#145)) AND isnotnull(cs_sold_time_sk#146)) AND isnotnull(cs_ship_mode_sk#147)) + +(189) Exchange +Input [7]: [cs_sold_date_sk#145, cs_sold_time_sk#146, cs_ship_mode_sk#147, cs_warehouse_sk#148, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151] +Arguments: hashpartitioning(cs_warehouse_sk#148, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(190) Sort +Input [7]: [cs_sold_date_sk#145, cs_sold_time_sk#146, cs_ship_mode_sk#147, cs_warehouse_sk#148, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151] +Arguments: [cs_warehouse_sk#148 ASC NULLS FIRST], false, 0 + +(191) Scan parquet +Output [7]: [w_warehouse_sk#152, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(w_warehouse_sk)] +ReadSchema: struct + +(192) Filter +Input [7]: [w_warehouse_sk#152, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158] +Condition : isnotnull(w_warehouse_sk#152) + +(193) Exchange +Input [7]: [w_warehouse_sk#152, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158] +Arguments: hashpartitioning(w_warehouse_sk#152, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(194) Sort +Input [7]: [w_warehouse_sk#152, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158] +Arguments: [w_warehouse_sk#152 ASC NULLS FIRST], false, 0 + +(195) SortMergeJoin +Left keys [1]: [cs_warehouse_sk#148] +Right keys [1]: [w_warehouse_sk#152] +Join type: Inner +Join condition: None + +(196) Project +Output [12]: [cs_sold_date_sk#145, cs_sold_time_sk#146, cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158] +Input [14]: [cs_sold_date_sk#145, cs_sold_time_sk#146, cs_ship_mode_sk#147, cs_warehouse_sk#148, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_sk#152, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158] + +(197) Exchange +Input [12]: [cs_sold_date_sk#145, cs_sold_time_sk#146, cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158] +Arguments: hashpartitioning(cs_sold_date_sk#145, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(198) Sort +Input [12]: [cs_sold_date_sk#145, cs_sold_time_sk#146, cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158] +Arguments: [cs_sold_date_sk#145 ASC NULLS FIRST], false, 0 + +(199) Scan parquet +Output [3]: [d_date_sk#159, d_year#160, d_moy#161] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(200) Filter +Input [3]: [d_date_sk#159, d_year#160, d_moy#161] +Condition : ((isnotnull(d_year#160) AND (d_year#160 = 2001)) AND isnotnull(d_date_sk#159)) + +(201) Exchange +Input [3]: [d_date_sk#159, d_year#160, d_moy#161] +Arguments: hashpartitioning(d_date_sk#159, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(202) Sort +Input [3]: [d_date_sk#159, d_year#160, d_moy#161] +Arguments: [d_date_sk#159 ASC NULLS FIRST], false, 0 + +(203) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#145] +Right keys [1]: [d_date_sk#159] +Join type: Inner +Join condition: None + +(204) Project +Output [13]: [cs_sold_time_sk#146, cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, d_moy#161] +Input [15]: [cs_sold_date_sk#145, cs_sold_time_sk#146, cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_date_sk#159, d_year#160, d_moy#161] + +(205) Exchange +Input [13]: [cs_sold_time_sk#146, cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, d_moy#161] +Arguments: hashpartitioning(cs_sold_time_sk#146, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(206) Sort +Input [13]: [cs_sold_time_sk#146, cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, d_moy#161] +Arguments: [cs_sold_time_sk#146 ASC NULLS FIRST], false, 0 + +(207) Scan parquet +Output [2]: [t_time_sk#162, t_time#514] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(t_time), GreaterThanOrEqual(t_time,30838), LessThanOrEqual(t_time,59638), IsNotNull(t_time_sk)] +ReadSchema: struct + +(208) Filter +Input [2]: [t_time_sk#162, t_time#514] +Condition : (((isnotnull(t_time#514) AND (t_time#514 >= 30838)) AND (t_time#514 <= 59638)) AND isnotnull(t_time_sk#162)) + +(209) Project +Output [1]: [t_time_sk#162] +Input [2]: [t_time_sk#162, t_time#514] + +(210) Exchange +Input [1]: [t_time_sk#162] +Arguments: hashpartitioning(t_time_sk#162, 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(211) Sort +Input [1]: [t_time_sk#162] +Arguments: [t_time_sk#162 ASC NULLS FIRST], false, 0 + +(212) SortMergeJoin +Left keys [1]: [cs_sold_time_sk#146] +Right keys [1]: [t_time_sk#162] +Join type: Inner +Join condition: None + +(213) Project +Output [12]: [cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, d_moy#161] +Input [14]: [cs_sold_time_sk#146, cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, d_moy#161, t_time_sk#162] + +(214) Exchange +Input [12]: [cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, d_moy#161] +Arguments: hashpartitioning(cs_ship_mode_sk#147, 100), ENSURE_REQUIREMENTS, [plan_id=31] + +(215) Sort +Input [12]: [cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, d_moy#161] +Arguments: [cs_ship_mode_sk#147 ASC NULLS FIRST], false, 0 + +(216) Scan parquet +Output [2]: [sm_ship_mode_sk#163, sm_carrier#515] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(sm_carrier, [BARIAN,DHL]), IsNotNull(sm_ship_mode_sk)] +ReadSchema: struct + +(217) Filter +Input [2]: [sm_ship_mode_sk#163, sm_carrier#515] +Condition : (sm_carrier#515 IN (DHL,BARIAN) AND isnotnull(sm_ship_mode_sk#163)) + +(218) Project +Output [1]: [sm_ship_mode_sk#163] +Input [2]: [sm_ship_mode_sk#163, sm_carrier#515] + +(219) Exchange +Input [1]: [sm_ship_mode_sk#163] +Arguments: hashpartitioning(sm_ship_mode_sk#163, 100), ENSURE_REQUIREMENTS, [plan_id=32] + +(220) Sort +Input [1]: [sm_ship_mode_sk#163] +Arguments: [sm_ship_mode_sk#163 ASC NULLS FIRST], false, 0 + +(221) SortMergeJoin +Left keys [1]: [cs_ship_mode_sk#147] +Right keys [1]: [sm_ship_mode_sk#163] +Join type: Inner +Join condition: None + +(222) Project +Output [11]: [cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, d_moy#161] +Input [13]: [cs_ship_mode_sk#147, cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, d_moy#161, sm_ship_mode_sk#163] + +(223) HashAggregate +Input [11]: [cs_quantity#149, cs_sales_price#150, cs_net_paid_inc_tax#151, w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, d_moy#161] +Keys [7]: [w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160] +Functions [24]: [partial_sum(CASE WHEN (d_moy#161 = 1) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#161 = 2) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#161 = 3) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#161 = 4) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#161 = 5) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#161 = 6) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#161 = 7) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#161 = 8) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#161 = 9) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#161 = 10) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#161 = 11) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#161 = 12) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#161 = 1) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#161 = 2) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#161 = 3) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#161 = 4) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#161 = 5) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#161 = 6) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#161 = 7) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#161 = 8) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#161 = 9) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#161 = 10) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#161 = 11) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), partial_sum(CASE WHEN (d_moy#161 = 12) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)] +Aggregate Attributes [48]: [sum#188, isEmpty#189, sum#190, isEmpty#191, sum#192, isEmpty#193, sum#194, isEmpty#195, sum#196, isEmpty#197, sum#198, isEmpty#199, sum#200, isEmpty#201, sum#202, isEmpty#203, sum#204, isEmpty#205, sum#206, isEmpty#207, sum#208, isEmpty#209, sum#210, isEmpty#211, sum#212, isEmpty#213, sum#214, isEmpty#215, sum#216, isEmpty#217, sum#218, isEmpty#219, sum#220, isEmpty#221, sum#222, isEmpty#223, sum#224, isEmpty#225, sum#226, isEmpty#227, sum#228, isEmpty#229, sum#230, isEmpty#231, sum#232, isEmpty#233, sum#234, isEmpty#235] +Results [55]: [w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, sum#516, isEmpty#517, sum#518, isEmpty#519, sum#520, isEmpty#521, sum#522, isEmpty#523, sum#524, isEmpty#525, sum#526, isEmpty#527, sum#528, isEmpty#529, sum#530, isEmpty#531, sum#532, isEmpty#533, sum#534, isEmpty#535, sum#536, isEmpty#537, sum#538, isEmpty#539, sum#540, isEmpty#541, sum#542, isEmpty#543, sum#544, isEmpty#545, sum#546, isEmpty#547, sum#548, isEmpty#549, sum#550, isEmpty#551, sum#552, isEmpty#553, sum#554, isEmpty#555, sum#556, isEmpty#557, sum#558, isEmpty#559, sum#560, isEmpty#561, sum#562, isEmpty#563] + +(224) Exchange +Input [55]: [w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, sum#516, isEmpty#517, sum#518, isEmpty#519, sum#520, isEmpty#521, sum#522, isEmpty#523, sum#524, isEmpty#525, sum#526, isEmpty#527, sum#528, isEmpty#529, sum#530, isEmpty#531, sum#532, isEmpty#533, sum#534, isEmpty#535, sum#536, isEmpty#537, sum#538, isEmpty#539, sum#540, isEmpty#541, sum#542, isEmpty#543, sum#544, isEmpty#545, sum#546, isEmpty#547, sum#548, isEmpty#549, sum#550, isEmpty#551, sum#552, isEmpty#553, sum#554, isEmpty#555, sum#556, isEmpty#557, sum#558, isEmpty#559, sum#560, isEmpty#561, sum#562, isEmpty#563] +Arguments: hashpartitioning(w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, 100), ENSURE_REQUIREMENTS, [plan_id=33] + +(225) HashAggregate +Input [55]: [w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160, sum#516, isEmpty#517, sum#518, isEmpty#519, sum#520, isEmpty#521, sum#522, isEmpty#523, sum#524, isEmpty#525, sum#526, isEmpty#527, sum#528, isEmpty#529, sum#530, isEmpty#531, sum#532, isEmpty#533, sum#534, isEmpty#535, sum#536, isEmpty#537, sum#538, isEmpty#539, sum#540, isEmpty#541, sum#542, isEmpty#543, sum#544, isEmpty#545, sum#546, isEmpty#547, sum#548, isEmpty#549, sum#550, isEmpty#551, sum#552, isEmpty#553, sum#554, isEmpty#555, sum#556, isEmpty#557, sum#558, isEmpty#559, sum#560, isEmpty#561, sum#562, isEmpty#563] +Keys [7]: [w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, d_year#160] +Functions [24]: [sum(CASE WHEN (d_moy#161 = 1) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 2) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 3) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 4) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 5) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 6) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 7) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 8) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 9) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 10) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 11) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 12) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 1) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 2) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 3) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 4) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 5) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 6) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 7) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 8) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 9) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 10) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 11) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END), sum(CASE WHEN (d_moy#161 = 12) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)] +Aggregate Attributes [24]: [sum(CASE WHEN (d_moy#161 = 1) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#236, sum(CASE WHEN (d_moy#161 = 2) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#237, sum(CASE WHEN (d_moy#161 = 3) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#238, sum(CASE WHEN (d_moy#161 = 4) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#239, sum(CASE WHEN (d_moy#161 = 5) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#240, sum(CASE WHEN (d_moy#161 = 6) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#241, sum(CASE WHEN (d_moy#161 = 7) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#242, sum(CASE WHEN (d_moy#161 = 8) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#243, sum(CASE WHEN (d_moy#161 = 9) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#244, sum(CASE WHEN (d_moy#161 = 10) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#245, sum(CASE WHEN (d_moy#161 = 11) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#246, sum(CASE WHEN (d_moy#161 = 12) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#247, sum(CASE WHEN (d_moy#161 = 1) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#248, sum(CASE WHEN (d_moy#161 = 2) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#249, sum(CASE WHEN (d_moy#161 = 3) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#250, sum(CASE WHEN (d_moy#161 = 4) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#251, sum(CASE WHEN (d_moy#161 = 5) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#252, sum(CASE WHEN (d_moy#161 = 6) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#253, sum(CASE WHEN (d_moy#161 = 7) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#254, sum(CASE WHEN (d_moy#161 = 8) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#255, sum(CASE WHEN (d_moy#161 = 9) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#256, sum(CASE WHEN (d_moy#161 = 10) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#257, sum(CASE WHEN (d_moy#161 = 11) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#258, sum(CASE WHEN (d_moy#161 = 12) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#259] +Results [32]: [w_warehouse_name#153, w_warehouse_sq_ft#154, w_city#155, w_county#156, w_state#157, w_country#158, DHL,BARIAN AS ship_carriers#260, d_year#160 AS year#261, sum(CASE WHEN (d_moy#161 = 1) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#236 AS jan_sales#262, sum(CASE WHEN (d_moy#161 = 2) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#237 AS feb_sales#263, sum(CASE WHEN (d_moy#161 = 3) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#238 AS mar_sales#264, sum(CASE WHEN (d_moy#161 = 4) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#239 AS apr_sales#265, sum(CASE WHEN (d_moy#161 = 5) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#240 AS may_sales#266, sum(CASE WHEN (d_moy#161 = 6) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#241 AS jun_sales#267, sum(CASE WHEN (d_moy#161 = 7) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#242 AS jul_sales#268, sum(CASE WHEN (d_moy#161 = 8) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#243 AS aug_sales#269, sum(CASE WHEN (d_moy#161 = 9) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#244 AS sep_sales#270, sum(CASE WHEN (d_moy#161 = 10) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#245 AS oct_sales#271, sum(CASE WHEN (d_moy#161 = 11) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#246 AS nov_sales#272, sum(CASE WHEN (d_moy#161 = 12) THEN (cs_sales_price#150 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#247 AS dec_sales#273, sum(CASE WHEN (d_moy#161 = 1) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#248 AS jan_net#274, sum(CASE WHEN (d_moy#161 = 2) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#249 AS feb_net#275, sum(CASE WHEN (d_moy#161 = 3) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#250 AS mar_net#276, sum(CASE WHEN (d_moy#161 = 4) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#251 AS apr_net#277, sum(CASE WHEN (d_moy#161 = 5) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#252 AS may_net#278, sum(CASE WHEN (d_moy#161 = 6) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#253 AS jun_net#279, sum(CASE WHEN (d_moy#161 = 7) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#254 AS jul_net#280, sum(CASE WHEN (d_moy#161 = 8) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#255 AS aug_net#281, sum(CASE WHEN (d_moy#161 = 9) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#256 AS sep_net#282, sum(CASE WHEN (d_moy#161 = 10) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#257 AS oct_net#283, sum(CASE WHEN (d_moy#161 = 11) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#258 AS nov_net#284, sum(CASE WHEN (d_moy#161 = 12) THEN (cs_net_paid_inc_tax#151 * cast(cs_quantity#149 as decimal(10,0))) ELSE 0.00 END)#259 AS dec_net#285] + +(226) Union + +(227) HashAggregate +Input [32]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, ship_carriers#119, year#120, jan_sales#121, feb_sales#122, mar_sales#123, apr_sales#124, may_sales#125, jun_sales#126, jul_sales#127, aug_sales#128, sep_sales#129, oct_sales#130, nov_sales#131, dec_sales#132, jan_net#133, feb_net#134, mar_net#135, apr_net#136, may_net#137, jun_net#138, jul_net#139, aug_net#140, sep_net#141, oct_net#142, nov_net#143, dec_net#144] +Keys [8]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, ship_carriers#119, year#120] +Functions [36]: [partial_sum(jan_sales#121), partial_sum(feb_sales#122), partial_sum(mar_sales#123), partial_sum(apr_sales#124), partial_sum(may_sales#125), partial_sum(jun_sales#126), partial_sum(jul_sales#127), partial_sum(aug_sales#128), partial_sum(sep_sales#129), partial_sum(oct_sales#130), partial_sum(nov_sales#131), partial_sum(dec_sales#132), partial_sum((jan_sales#121 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), partial_sum((feb_sales#122 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), partial_sum((mar_sales#123 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), partial_sum((apr_sales#124 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), partial_sum((may_sales#125 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), partial_sum((jun_sales#126 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), partial_sum((jul_sales#127 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), partial_sum((aug_sales#128 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), partial_sum((sep_sales#129 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), partial_sum((oct_sales#130 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), partial_sum((nov_sales#131 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), partial_sum((dec_sales#132 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), partial_sum(jan_net#133), partial_sum(feb_net#134), partial_sum(mar_net#135), partial_sum(apr_net#136), partial_sum(may_net#137), partial_sum(jun_net#138), partial_sum(jul_net#139), partial_sum(aug_net#140), partial_sum(sep_net#141), partial_sum(oct_net#142), partial_sum(nov_net#143), partial_sum(dec_net#144)] +Aggregate Attributes [72]: [sum#322, isEmpty#323, sum#324, isEmpty#325, sum#326, isEmpty#327, sum#328, isEmpty#329, sum#330, isEmpty#331, sum#332, isEmpty#333, sum#334, isEmpty#335, sum#336, isEmpty#337, sum#338, isEmpty#339, sum#340, isEmpty#341, sum#342, isEmpty#343, sum#344, isEmpty#345, sum#346, isEmpty#347, sum#348, isEmpty#349, sum#350, isEmpty#351, sum#352, isEmpty#353, sum#354, isEmpty#355, sum#356, isEmpty#357, sum#358, isEmpty#359, sum#360, isEmpty#361, sum#362, isEmpty#363, sum#364, isEmpty#365, sum#366, isEmpty#367, sum#368, isEmpty#369, sum#370, isEmpty#371, sum#372, isEmpty#373, sum#374, isEmpty#375, sum#376, isEmpty#377, sum#378, isEmpty#379, sum#380, isEmpty#381, sum#382, isEmpty#383, sum#384, isEmpty#385, sum#386, isEmpty#387, sum#388, isEmpty#389, sum#390, isEmpty#391, sum#392, isEmpty#393] +Results [80]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, ship_carriers#119, year#120, sum#564, isEmpty#565, sum#566, isEmpty#567, sum#568, isEmpty#569, sum#570, isEmpty#571, sum#572, isEmpty#573, sum#574, isEmpty#575, sum#576, isEmpty#577, sum#578, isEmpty#579, sum#580, isEmpty#581, sum#582, isEmpty#583, sum#584, isEmpty#585, sum#586, isEmpty#587, sum#588, isEmpty#589, sum#590, isEmpty#591, sum#592, isEmpty#593, sum#594, isEmpty#595, sum#596, isEmpty#597, sum#598, isEmpty#599, sum#600, isEmpty#601, sum#602, isEmpty#603, sum#604, isEmpty#605, sum#606, isEmpty#607, sum#608, isEmpty#609, sum#610, isEmpty#611, sum#612, isEmpty#613, sum#614, isEmpty#615, sum#616, isEmpty#617, sum#618, isEmpty#619, sum#620, isEmpty#621, sum#622, isEmpty#623, sum#624, isEmpty#625, sum#626, isEmpty#627, sum#628, isEmpty#629, sum#630, isEmpty#631, sum#632, isEmpty#633, sum#634, isEmpty#635] + +(228) Exchange +Input [80]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, ship_carriers#119, year#120, sum#564, isEmpty#565, sum#566, isEmpty#567, sum#568, isEmpty#569, sum#570, isEmpty#571, sum#572, isEmpty#573, sum#574, isEmpty#575, sum#576, isEmpty#577, sum#578, isEmpty#579, sum#580, isEmpty#581, sum#582, isEmpty#583, sum#584, isEmpty#585, sum#586, isEmpty#587, sum#588, isEmpty#589, sum#590, isEmpty#591, sum#592, isEmpty#593, sum#594, isEmpty#595, sum#596, isEmpty#597, sum#598, isEmpty#599, sum#600, isEmpty#601, sum#602, isEmpty#603, sum#604, isEmpty#605, sum#606, isEmpty#607, sum#608, isEmpty#609, sum#610, isEmpty#611, sum#612, isEmpty#613, sum#614, isEmpty#615, sum#616, isEmpty#617, sum#618, isEmpty#619, sum#620, isEmpty#621, sum#622, isEmpty#623, sum#624, isEmpty#625, sum#626, isEmpty#627, sum#628, isEmpty#629, sum#630, isEmpty#631, sum#632, isEmpty#633, sum#634, isEmpty#635] +Arguments: hashpartitioning(w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, ship_carriers#119, year#120, 100), ENSURE_REQUIREMENTS, [plan_id=34] + +(229) HashAggregate +Input [80]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, ship_carriers#119, year#120, sum#564, isEmpty#565, sum#566, isEmpty#567, sum#568, isEmpty#569, sum#570, isEmpty#571, sum#572, isEmpty#573, sum#574, isEmpty#575, sum#576, isEmpty#577, sum#578, isEmpty#579, sum#580, isEmpty#581, sum#582, isEmpty#583, sum#584, isEmpty#585, sum#586, isEmpty#587, sum#588, isEmpty#589, sum#590, isEmpty#591, sum#592, isEmpty#593, sum#594, isEmpty#595, sum#596, isEmpty#597, sum#598, isEmpty#599, sum#600, isEmpty#601, sum#602, isEmpty#603, sum#604, isEmpty#605, sum#606, isEmpty#607, sum#608, isEmpty#609, sum#610, isEmpty#611, sum#612, isEmpty#613, sum#614, isEmpty#615, sum#616, isEmpty#617, sum#618, isEmpty#619, sum#620, isEmpty#621, sum#622, isEmpty#623, sum#624, isEmpty#625, sum#626, isEmpty#627, sum#628, isEmpty#629, sum#630, isEmpty#631, sum#632, isEmpty#633, sum#634, isEmpty#635] +Keys [8]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, ship_carriers#119, year#120] +Functions [36]: [sum(jan_sales#121), sum(feb_sales#122), sum(mar_sales#123), sum(apr_sales#124), sum(may_sales#125), sum(jun_sales#126), sum(jul_sales#127), sum(aug_sales#128), sum(sep_sales#129), sum(oct_sales#130), sum(nov_sales#131), sum(dec_sales#132), sum((jan_sales#121 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), sum((feb_sales#122 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), sum((mar_sales#123 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), sum((apr_sales#124 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), sum((may_sales#125 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), sum((jun_sales#126 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), sum((jul_sales#127 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), sum((aug_sales#128 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), sum((sep_sales#129 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), sum((oct_sales#130 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), sum((nov_sales#131 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), sum((dec_sales#132 / cast(w_warehouse_sq_ft#10 as decimal(10,0)))), sum(jan_net#133), sum(feb_net#134), sum(mar_net#135), sum(apr_net#136), sum(may_net#137), sum(jun_net#138), sum(jul_net#139), sum(aug_net#140), sum(sep_net#141), sum(oct_net#142), sum(nov_net#143), sum(dec_net#144)] +Aggregate Attributes [36]: [sum(jan_sales#121)#394, sum(feb_sales#122)#395, sum(mar_sales#123)#396, sum(apr_sales#124)#397, sum(may_sales#125)#398, sum(jun_sales#126)#399, sum(jul_sales#127)#400, sum(aug_sales#128)#401, sum(sep_sales#129)#402, sum(oct_sales#130)#403, sum(nov_sales#131)#404, sum(dec_sales#132)#405, sum((jan_sales#121 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#406, sum((feb_sales#122 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#407, sum((mar_sales#123 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#408, sum((apr_sales#124 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#409, sum((may_sales#125 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#410, sum((jun_sales#126 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#411, sum((jul_sales#127 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#412, sum((aug_sales#128 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#413, sum((sep_sales#129 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#414, sum((oct_sales#130 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#415, sum((nov_sales#131 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#416, sum((dec_sales#132 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#417, sum(jan_net#133)#418, sum(feb_net#134)#419, sum(mar_net#135)#420, sum(apr_net#136)#421, sum(may_net#137)#422, sum(jun_net#138)#423, sum(jul_net#139)#424, sum(aug_net#140)#425, sum(sep_net#141)#426, sum(oct_net#142)#427, sum(nov_net#143)#428, sum(dec_net#144)#429] +Results [44]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, ship_carriers#119, year#120, sum(jan_sales#121)#394 AS jan_sales#430, sum(feb_sales#122)#395 AS feb_sales#431, sum(mar_sales#123)#396 AS mar_sales#432, sum(apr_sales#124)#397 AS apr_sales#433, sum(may_sales#125)#398 AS may_sales#434, sum(jun_sales#126)#399 AS jun_sales#435, sum(jul_sales#127)#400 AS jul_sales#436, sum(aug_sales#128)#401 AS aug_sales#437, sum(sep_sales#129)#402 AS sep_sales#438, sum(oct_sales#130)#403 AS oct_sales#439, sum(nov_sales#131)#404 AS nov_sales#440, sum(dec_sales#132)#405 AS dec_sales#441, sum((jan_sales#121 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#406 AS jan_sales_per_sq_foot#442, sum((feb_sales#122 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#407 AS feb_sales_per_sq_foot#443, sum((mar_sales#123 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#408 AS mar_sales_per_sq_foot#444, sum((apr_sales#124 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#409 AS apr_sales_per_sq_foot#445, sum((may_sales#125 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#410 AS may_sales_per_sq_foot#446, sum((jun_sales#126 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#411 AS jun_sales_per_sq_foot#447, sum((jul_sales#127 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#412 AS jul_sales_per_sq_foot#448, sum((aug_sales#128 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#413 AS aug_sales_per_sq_foot#449, sum((sep_sales#129 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#414 AS sep_sales_per_sq_foot#450, sum((oct_sales#130 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#415 AS oct_sales_per_sq_foot#451, sum((nov_sales#131 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#416 AS nov_sales_per_sq_foot#452, sum((dec_sales#132 / cast(w_warehouse_sq_ft#10 as decimal(10,0))))#417 AS dec_sales_per_sq_foot#453, sum(jan_net#133)#418 AS jan_net#454, sum(feb_net#134)#419 AS feb_net#455, sum(mar_net#135)#420 AS mar_net#456, sum(apr_net#136)#421 AS apr_net#457, sum(may_net#137)#422 AS may_net#458, sum(jun_net#138)#423 AS jun_net#459, sum(jul_net#139)#424 AS jul_net#460, sum(aug_net#140)#425 AS aug_net#461, sum(sep_net#141)#426 AS sep_net#462, sum(oct_net#142)#427 AS oct_net#463, sum(nov_net#143)#428 AS nov_net#464, sum(dec_net#144)#429 AS dec_net#465] + +(230) TakeOrderedAndProject +Input [44]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, ship_carriers#119, year#120, jan_sales#430, feb_sales#431, mar_sales#432, apr_sales#433, may_sales#434, jun_sales#435, jul_sales#436, aug_sales#437, sep_sales#438, oct_sales#439, nov_sales#440, dec_sales#441, jan_sales_per_sq_foot#442, feb_sales_per_sq_foot#443, mar_sales_per_sq_foot#444, apr_sales_per_sq_foot#445, may_sales_per_sq_foot#446, jun_sales_per_sq_foot#447, jul_sales_per_sq_foot#448, aug_sales_per_sq_foot#449, sep_sales_per_sq_foot#450, oct_sales_per_sq_foot#451, nov_sales_per_sq_foot#452, dec_sales_per_sq_foot#453, jan_net#454, feb_net#455, mar_net#456, apr_net#457, may_net#458, jun_net#459, jul_net#460, aug_net#461, sep_net#462, oct_net#463, nov_net#464, dec_net#465] +Arguments: X, [w_warehouse_name#9 ASC NULLS FIRST], [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, ship_carriers#119, year#120, jan_sales#430, feb_sales#431, mar_sales#432, apr_sales#433, may_sales#434, jun_sales#435, jul_sales#436, aug_sales#437, sep_sales#438, oct_sales#439, nov_sales#440, dec_sales#441, jan_sales_per_sq_foot#442, feb_sales_per_sq_foot#443, mar_sales_per_sq_foot#444, apr_sales_per_sq_foot#445, ... 20 more fields] + +(231) AdaptiveSparkPlan +Output [44]: [w_warehouse_name#9, w_warehouse_sq_ft#10, w_city#11, w_county#12, w_state#13, w_country#14, ship_carriers#119, year#120, jan_sales#430, feb_sales#431, mar_sales#432, apr_sales#433, may_sales#434, jun_sales#435, jul_sales#436, aug_sales#437, sep_sales#438, oct_sales#439, nov_sales#440, dec_sales#441, jan_sales_per_sq_foot#442, feb_sales_per_sq_foot#443, mar_sales_per_sq_foot#444, apr_sales_per_sq_foot#445, may_sales_per_sq_foot#446, jun_sales_per_sq_foot#447, jul_sales_per_sq_foot#448, aug_sales_per_sq_foot#449, sep_sales_per_sq_foot#450, oct_sales_per_sq_foot#451, nov_sales_per_sq_foot#452, dec_sales_per_sq_foot#453, jan_net#454, feb_net#455, mar_net#456, apr_net#457, may_net#458, jun_net#459, jul_net#460, aug_net#461, sep_net#462, oct_net#463, nov_net#464, dec_net#465] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q67.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q67.txt new file mode 100644 index 000000000..609f51296 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q67.txt @@ -0,0 +1,590 @@ +== Physical Plan == +AdaptiveSparkPlan (109) ++- == Final Plan == + NativeTakeOrdered (69) + +- NativeFilter (68) + +- NativeWindow (67) + +- NativeWindowGroupLimit (66) + +- NativeSort (65) + +- InputAdapter (64) + +- AQEShuffleRead (63) + +- ShuffleQueryStage (62), Statistics(X) + +- NativeShuffleExchange (61) + +- NativeWindowGroupLimit (60) + +- NativeSort (59) + +- NativeProject (58) + +- NativeHashAggregate (57) + +- InputAdapter (56) + +- AQEShuffleRead (55) + +- ShuffleQueryStage (54), Statistics(X) + +- NativeShuffleExchange (53) + +- NativeHashAggregate (52) + +- NativeProject (51) + +- NativeExpand (50) + +- NativeProject (49) + +- NativeSortMergeJoin Inner (48) + :- NativeSort (39) + : +- InputAdapter (38) + : +- AQEShuffleRead (37) + : +- ShuffleQueryStage (36), Statistics(X) + : +- NativeShuffleExchange (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 (47) + +- InputAdapter (46) + +- AQEShuffleRead (45) + +- ShuffleQueryStage (44), Statistics(X) + +- NativeShuffleExchange (43) + +- NativeFilter (42) + +- InputAdapter (41) + +- NativeParquetScan (40) ++- == Initial Plan == + TakeOrderedAndProject (108) + +- Filter (107) + +- Window (106) + +- WindowGroupLimit (105) + +- Sort (104) + +- Exchange (103) + +- WindowGroupLimit (102) + +- Sort (101) + +- HashAggregate (100) + +- Exchange (99) + +- HashAggregate (98) + +- Expand (97) + +- Project (96) + +- SortMergeJoin Inner (95) + :- Sort (90) + : +- Exchange (89) + : +- Project (88) + : +- SortMergeJoin Inner (87) + : :- Sort (82) + : : +- Exchange (81) + : : +- Project (80) + : : +- SortMergeJoin Inner (79) + : : :- Sort (73) + : : : +- Exchange (72) + : : : +- Filter (71) + : : : +- Scan parquet (70) + : : +- Sort (78) + : : +- Exchange (77) + : : +- Project (76) + : : +- Filter (75) + : : +- Scan parquet (74) + : +- Sort (86) + : +- Exchange (85) + : +- Filter (84) + : +- Scan parquet (83) + +- Sort (94) + +- Exchange (93) + +- Filter (92) + +- Scan parquet (91) + + +(70) Scan parquet +Output [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_quantity#4, ss_sales_price#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_quantity#4, ss_sales_price#5] +Arguments: [#1, #2, #3, #4, #5] + +(3) NativeFilter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Condition : ((isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_store_sk#3)) AND isnotnull(ss_item_sk#2)) + +(4) NativeShuffleExchange +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: X + +(6) AQEShuffleRead +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: coalesced + +(7) InputAdapter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] + +(8) NativeSort +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(74) Scan parquet +Output [5]: [d_date_sk#6, d_month_seq#7, d_year#8, d_moy#9, d_qoy#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [5]: [d_date_sk#6, d_month_seq#7, d_year#8, d_moy#9, d_qoy#10] +Arguments: [#6, #7, #8, #9, #10] + +(11) NativeFilter +Input [5]: [#6#6, #7#7, #8#8, #9#9, #10#10] +Condition : (((isnotnull(d_month_seq#7) AND (d_month_seq#7 >= 1200)) AND (d_month_seq#7 <= 1211)) AND isnotnull(d_date_sk#6)) + +(12) NativeProject +Output [4]: [d_date_sk#6, d_year#8, d_moy#9, d_qoy#10] +Input [5]: [#6#6, #7#7, #8#8, #9#9, #10#10] + +(13) NativeShuffleExchange +Input [4]: [d_date_sk#6, d_year#8, d_moy#9, d_qoy#10] +Arguments: hashpartitioning(d_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [4]: [d_date_sk#6, d_year#8, d_moy#9, d_qoy#10] +Arguments: X + +(15) AQEShuffleRead +Input [4]: [d_date_sk#6, d_year#8, d_moy#9, d_qoy#10] +Arguments: coalesced + +(16) InputAdapter +Input [4]: [d_date_sk#6, d_year#8, d_moy#9, d_qoy#10] + +(17) NativeSort +Input [4]: [d_date_sk#6, d_year#8, d_moy#9, d_qoy#10] +Arguments: [d_date_sk#6 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#6] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [7]: [ss_item_sk#2, ss_store_sk#3, ss_quantity#4, ss_sales_price#5, d_year#8, d_moy#9, d_qoy#10] +Input [9]: [#1#1, #2#2, #3#3, #4#4, #5#5, d_date_sk#6, d_year#8, d_moy#9, d_qoy#10] + +(20) NativeShuffleExchange +Input [7]: [ss_item_sk#2, ss_store_sk#3, ss_quantity#4, ss_sales_price#5, d_year#8, d_moy#9, d_qoy#10] +Arguments: hashpartitioning(ss_store_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [7]: [ss_item_sk#2, ss_store_sk#3, ss_quantity#4, ss_sales_price#5, d_year#8, d_moy#9, d_qoy#10] +Arguments: X + +(22) AQEShuffleRead +Input [7]: [ss_item_sk#2, ss_store_sk#3, ss_quantity#4, ss_sales_price#5, d_year#8, d_moy#9, d_qoy#10] +Arguments: coalesced + +(23) InputAdapter +Input [7]: [ss_item_sk#2, ss_store_sk#3, ss_quantity#4, ss_sales_price#5, d_year#8, d_moy#9, d_qoy#10] + +(24) NativeSort +Input [7]: [ss_item_sk#2, ss_store_sk#3, ss_quantity#4, ss_sales_price#5, d_year#8, d_moy#9, d_qoy#10] +Arguments: [ss_store_sk#3 ASC NULLS FIRST], false + +(83) Scan parquet +Output [2]: [s_store_sk#11, s_store_id#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [2]: [s_store_sk#11, s_store_id#12] +Arguments: [#11, #12] + +(27) NativeFilter +Input [2]: [#11#11, #12#12] +Condition : isnotnull(s_store_sk#11) + +(28) NativeShuffleExchange +Input [2]: [#11#11, #12#12] +Arguments: hashpartitioning(s_store_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(29) ShuffleQueryStage +Output [2]: [#11#11, #12#12] +Arguments: X + +(30) AQEShuffleRead +Input [2]: [#11#11, #12#12] +Arguments: coalesced + +(31) InputAdapter +Input [2]: [#11#11, #12#12] + +(32) NativeSort +Input [2]: [#11#11, #12#12] +Arguments: [s_store_sk#11 ASC NULLS FIRST], false + +(33) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#3] +Right keys [1]: [s_store_sk#11] +Join type: Inner +Join condition: None + +(34) NativeProject +Output [7]: [ss_item_sk#2, ss_quantity#4, ss_sales_price#5, d_year#8, d_moy#9, d_qoy#10, s_store_id#12] +Input [9]: [ss_item_sk#2, ss_store_sk#3, ss_quantity#4, ss_sales_price#5, d_year#8, d_moy#9, d_qoy#10, #11#11, #12#12] + +(35) NativeShuffleExchange +Input [7]: [ss_item_sk#2, ss_quantity#4, ss_sales_price#5, d_year#8, d_moy#9, d_qoy#10, s_store_id#12] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(36) ShuffleQueryStage +Output [7]: [ss_item_sk#2, ss_quantity#4, ss_sales_price#5, d_year#8, d_moy#9, d_qoy#10, s_store_id#12] +Arguments: X + +(37) AQEShuffleRead +Input [7]: [ss_item_sk#2, ss_quantity#4, ss_sales_price#5, d_year#8, d_moy#9, d_qoy#10, s_store_id#12] +Arguments: coalesced + +(38) InputAdapter +Input [7]: [ss_item_sk#2, ss_quantity#4, ss_sales_price#5, d_year#8, d_moy#9, d_qoy#10, s_store_id#12] + +(39) NativeSort +Input [7]: [ss_item_sk#2, ss_quantity#4, ss_sales_price#5, d_year#8, d_moy#9, d_qoy#10, s_store_id#12] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false + +(91) Scan parquet +Output [5]: [i_item_sk#13, i_brand#14, i_class#15, i_category#16, i_product_name#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(41) InputAdapter +Input [5]: [i_item_sk#13, i_brand#14, i_class#15, i_category#16, i_product_name#17] +Arguments: [#13, #14, #15, #16, #17] + +(42) NativeFilter +Input [5]: [#13#13, #14#14, #15#15, #16#16, #17#17] +Condition : isnotnull(i_item_sk#13) + +(43) NativeShuffleExchange +Input [5]: [#13#13, #14#14, #15#15, #16#16, #17#17] +Arguments: hashpartitioning(i_item_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) ShuffleQueryStage +Output [5]: [#13#13, #14#14, #15#15, #16#16, #17#17] +Arguments: X + +(45) AQEShuffleRead +Input [5]: [#13#13, #14#14, #15#15, #16#16, #17#17] +Arguments: coalesced + +(46) InputAdapter +Input [5]: [#13#13, #14#14, #15#15, #16#16, #17#17] + +(47) NativeSort +Input [5]: [#13#13, #14#14, #15#15, #16#16, #17#17] +Arguments: [i_item_sk#13 ASC NULLS FIRST], false + +(48) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#13] +Join type: Inner +Join condition: None + +(49) NativeProject +Output [10]: [ss_quantity#4, ss_sales_price#5, i_category#16, i_class#15, i_brand#14, i_product_name#17, d_year#8, d_qoy#10, d_moy#9, s_store_id#12] +Input [12]: [ss_item_sk#2, ss_quantity#4, ss_sales_price#5, d_year#8, d_moy#9, d_qoy#10, s_store_id#12, #13#13, #14#14, #15#15, #16#16, #17#17] + +(50) NativeExpand +Input [10]: [ss_quantity#4, ss_sales_price#5, i_category#16, i_class#15, i_brand#14, i_product_name#17, d_year#8, d_qoy#10, d_moy#9, s_store_id#12] +Arguments: [[ss_quantity#4, ss_sales_price#5, i_category#16, i_class#15, i_brand#14, i_product_name#17, d_year#8, d_qoy#10, d_moy#9, s_store_id#12, 0], [ss_quantity#4, ss_sales_price#5, i_category#16, i_class#15, i_brand#14, i_product_name#17, d_year#8, d_qoy#10, d_moy#9, null, 1], [ss_quantity#4, ss_sales_price#5, i_category#16, i_class#15, i_brand#14, i_product_name#17, d_year#8, d_qoy#10, null, null, 3], [ss_quantity#4, ss_sales_price#5, i_category#16, i_class#15, i_brand#14, i_product_name#17, d_year#8, null, null, null, 7], [ss_quantity#4, ss_sales_price#5, i_category#16, i_class#15, i_brand#14, i_product_name#17, null, null, null, null, 15], [ss_quantity#4, ss_sales_price#5, i_category#16, i_class#15, i_brand#14, null, null, null, null, null, 31], [ss_quantity#4, ss_sales_price#5, i_category#16, i_class#15, null, null, null, null, null, null, 63], [ss_quantity#4, ss_sales_price#5, i_category#16, null, null, null, null, null, null, null, 127], [ss_quantity#4, ss_sales_price#5, null, null, null, null, null, null, null, null, 255]], [ss_quantity#4, ss_sales_price#5, i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, spark_grouping_id#26] + +(51) NativeProject +Output [10]: [i_category#18 AS i_category#18, i_class#19 AS i_class#19, i_brand#20 AS i_brand#20, i_product_name#21 AS i_product_name#21, d_year#22 AS d_year#22, d_qoy#23 AS d_qoy#23, d_moy#24 AS d_moy#24, s_store_id#25 AS s_store_id#25, spark_grouping_id#26 AS spark_grouping_id#26, coalesce((ss_sales_price#5 * cast(ss_quantity#4 as decimal(10,0))), 0.00) AS _c9#27] +Input [11]: [ss_quantity#4, ss_sales_price#5, i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, spark_grouping_id#26] + +(52) NativeHashAggregate +Input [10]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, spark_grouping_id#26, _c9#27] +Keys [9]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, spark_grouping_id#26] +Functions [1]: [partial_sum(_c9#27)] +Aggregate Attributes [2]: [sum#28, isEmpty#29] +Results [10]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, spark_grouping_id#26, #30#30] + +(53) NativeShuffleExchange +Input [10]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, spark_grouping_id#26, #30#30] +Arguments: hashpartitioning(i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, spark_grouping_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(54) ShuffleQueryStage +Output [10]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, spark_grouping_id#26, #30#30] +Arguments: X + +(55) AQEShuffleRead +Input [10]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, spark_grouping_id#26, #30#30] +Arguments: coalesced + +(56) InputAdapter +Input [10]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, spark_grouping_id#26, #30#30] + +(57) NativeHashAggregate +Input [10]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, spark_grouping_id#26, #30#30] +Keys [9]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, spark_grouping_id#26] +Functions [1]: [sum(coalesce((ss_sales_price#5 * cast(ss_quantity#4 as decimal(10,0))), 0.00))] +Aggregate Attributes [1]: [sum(coalesce((ss_sales_price#5 * cast(ss_quantity#4 as decimal(10,0))), 0.00))#31] +Results [10]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, spark_grouping_id#26, sum(coalesce((ss_sales_price#5 * cast(ss_quantity#4 as decimal(10,0))), 0.00))#31] + +(58) NativeProject +Output [9]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, sum(coalesce((ss_sales_price#5 * cast(ss_quantity#4 as decimal(10,0))), 0.00))#31 AS sumsales#32] +Input [10]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, spark_grouping_id#26, sum(coalesce((ss_sales_price#5 * cast(ss_quantity#4 as decimal(10,0))), 0.00))#31] + +(59) NativeSort +Input [9]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, sumsales#32] +Arguments: [i_category#18 ASC NULLS FIRST, sumsales#32 DESC NULLS LAST], false + +(60) NativeWindowGroupLimit +Input [9]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, sumsales#32] +Arguments: [rank(sumsales#32) windowspecdefinition(i_category#18, sumsales#32 DESC NULLS LAST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS __window_expression__#33], [i_category#18], [sumsales#32 DESC NULLS LAST], 100 + +(61) NativeShuffleExchange +Input [9]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, sumsales#32] +Arguments: hashpartitioning(i_category#18, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(62) ShuffleQueryStage +Output [9]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, sumsales#32] +Arguments: X + +(63) AQEShuffleRead +Input [9]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, sumsales#32] +Arguments: coalesced + +(64) InputAdapter +Input [9]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, sumsales#32] + +(65) NativeSort +Input [9]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, sumsales#32] +Arguments: [i_category#18 ASC NULLS FIRST, sumsales#32 DESC NULLS LAST], false + +(66) NativeWindowGroupLimit +Input [9]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, sumsales#32] +Arguments: [rank(sumsales#32) windowspecdefinition(i_category#18, sumsales#32 DESC NULLS LAST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS __window_expression__#34], [i_category#18], [sumsales#32 DESC NULLS LAST], 100 + +(67) NativeWindow +Input [9]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, sumsales#32] +Arguments: [rank(sumsales#32) windowspecdefinition(i_category#18, sumsales#32 DESC NULLS LAST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rk#35], [i_category#18], [sumsales#32 DESC NULLS LAST] + +(68) NativeFilter +Input [10]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, sumsales#32, rk#35] +Condition : (rk#35 <= 100) + +(69) NativeTakeOrdered +Input [10]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, sumsales#32, rk#35] +Arguments: X, [i_category#18 ASC NULLS FIRST, i_class#19 ASC NULLS FIRST, i_brand#20 ASC NULLS FIRST, i_product_name#21 ASC NULLS FIRST, d_year#22 ASC NULLS FIRST, d_qoy#23 ASC NULLS FIRST, d_moy#24 ASC NULLS FIRST, s_store_id#25 ASC NULLS FIRST, sumsales#32 ASC NULLS FIRST, rk#35 ASC NULLS FIRST] + +(70) Scan parquet +Output [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_quantity#4, ss_sales_price#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk), IsNotNull(ss_item_sk)] +ReadSchema: struct + +(71) Filter +Input [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_quantity#4, ss_sales_price#5] +Condition : ((isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_store_sk#3)) AND isnotnull(ss_item_sk#2)) + +(72) Exchange +Input [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_quantity#4, ss_sales_price#5] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(73) Sort +Input [5]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_quantity#4, ss_sales_price#5] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(74) Scan parquet +Output [5]: [d_date_sk#6, d_month_seq#7, d_year#8, d_moy#9, d_qoy#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)] +ReadSchema: struct + +(75) Filter +Input [5]: [d_date_sk#6, d_month_seq#7, d_year#8, d_moy#9, d_qoy#10] +Condition : (((isnotnull(d_month_seq#7) AND (d_month_seq#7 >= 1200)) AND (d_month_seq#7 <= 1211)) AND isnotnull(d_date_sk#6)) + +(76) Project +Output [4]: [d_date_sk#6, d_year#8, d_moy#9, d_qoy#10] +Input [5]: [d_date_sk#6, d_month_seq#7, d_year#8, d_moy#9, d_qoy#10] + +(77) Exchange +Input [4]: [d_date_sk#6, d_year#8, d_moy#9, d_qoy#10] +Arguments: hashpartitioning(d_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(78) Sort +Input [4]: [d_date_sk#6, d_year#8, d_moy#9, d_qoy#10] +Arguments: [d_date_sk#6 ASC NULLS FIRST], false, 0 + +(79) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#6] +Join type: Inner +Join condition: None + +(80) Project +Output [7]: [ss_item_sk#2, ss_store_sk#3, ss_quantity#4, ss_sales_price#5, d_year#8, d_moy#9, d_qoy#10] +Input [9]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_quantity#4, ss_sales_price#5, d_date_sk#6, d_year#8, d_moy#9, d_qoy#10] + +(81) Exchange +Input [7]: [ss_item_sk#2, ss_store_sk#3, ss_quantity#4, ss_sales_price#5, d_year#8, d_moy#9, d_qoy#10] +Arguments: hashpartitioning(ss_store_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(82) Sort +Input [7]: [ss_item_sk#2, ss_store_sk#3, ss_quantity#4, ss_sales_price#5, d_year#8, d_moy#9, d_qoy#10] +Arguments: [ss_store_sk#3 ASC NULLS FIRST], false, 0 + +(83) Scan parquet +Output [2]: [s_store_sk#11, s_store_id#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(84) Filter +Input [2]: [s_store_sk#11, s_store_id#12] +Condition : isnotnull(s_store_sk#11) + +(85) Exchange +Input [2]: [s_store_sk#11, s_store_id#12] +Arguments: hashpartitioning(s_store_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(86) Sort +Input [2]: [s_store_sk#11, s_store_id#12] +Arguments: [s_store_sk#11 ASC NULLS FIRST], false, 0 + +(87) SortMergeJoin +Left keys [1]: [ss_store_sk#3] +Right keys [1]: [s_store_sk#11] +Join type: Inner +Join condition: None + +(88) Project +Output [7]: [ss_item_sk#2, ss_quantity#4, ss_sales_price#5, d_year#8, d_moy#9, d_qoy#10, s_store_id#12] +Input [9]: [ss_item_sk#2, ss_store_sk#3, ss_quantity#4, ss_sales_price#5, d_year#8, d_moy#9, d_qoy#10, s_store_sk#11, s_store_id#12] + +(89) Exchange +Input [7]: [ss_item_sk#2, ss_quantity#4, ss_sales_price#5, d_year#8, d_moy#9, d_qoy#10, s_store_id#12] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(90) Sort +Input [7]: [ss_item_sk#2, ss_quantity#4, ss_sales_price#5, d_year#8, d_moy#9, d_qoy#10, s_store_id#12] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false, 0 + +(91) Scan parquet +Output [5]: [i_item_sk#13, i_brand#14, i_class#15, i_category#16, i_product_name#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(92) Filter +Input [5]: [i_item_sk#13, i_brand#14, i_class#15, i_category#16, i_product_name#17] +Condition : isnotnull(i_item_sk#13) + +(93) Exchange +Input [5]: [i_item_sk#13, i_brand#14, i_class#15, i_category#16, i_product_name#17] +Arguments: hashpartitioning(i_item_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(94) Sort +Input [5]: [i_item_sk#13, i_brand#14, i_class#15, i_category#16, i_product_name#17] +Arguments: [i_item_sk#13 ASC NULLS FIRST], false, 0 + +(95) SortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#13] +Join type: Inner +Join condition: None + +(96) Project +Output [10]: [ss_quantity#4, ss_sales_price#5, i_category#16, i_class#15, i_brand#14, i_product_name#17, d_year#8, d_qoy#10, d_moy#9, s_store_id#12] +Input [12]: [ss_item_sk#2, ss_quantity#4, ss_sales_price#5, d_year#8, d_moy#9, d_qoy#10, s_store_id#12, i_item_sk#13, i_brand#14, i_class#15, i_category#16, i_product_name#17] + +(97) Expand +Input [10]: [ss_quantity#4, ss_sales_price#5, i_category#16, i_class#15, i_brand#14, i_product_name#17, d_year#8, d_qoy#10, d_moy#9, s_store_id#12] +Arguments: [[ss_quantity#4, ss_sales_price#5, i_category#16, i_class#15, i_brand#14, i_product_name#17, d_year#8, d_qoy#10, d_moy#9, s_store_id#12, 0], [ss_quantity#4, ss_sales_price#5, i_category#16, i_class#15, i_brand#14, i_product_name#17, d_year#8, d_qoy#10, d_moy#9, null, 1], [ss_quantity#4, ss_sales_price#5, i_category#16, i_class#15, i_brand#14, i_product_name#17, d_year#8, d_qoy#10, null, null, 3], [ss_quantity#4, ss_sales_price#5, i_category#16, i_class#15, i_brand#14, i_product_name#17, d_year#8, null, null, null, 7], [ss_quantity#4, ss_sales_price#5, i_category#16, i_class#15, i_brand#14, i_product_name#17, null, null, null, null, 15], [ss_quantity#4, ss_sales_price#5, i_category#16, i_class#15, i_brand#14, null, null, null, null, null, 31], [ss_quantity#4, ss_sales_price#5, i_category#16, i_class#15, null, null, null, null, null, null, 63], [ss_quantity#4, ss_sales_price#5, i_category#16, null, null, null, null, null, null, null, 127], [ss_quantity#4, ss_sales_price#5, null, null, null, null, null, null, null, null, 255]], [ss_quantity#4, ss_sales_price#5, i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, spark_grouping_id#26] + +(98) HashAggregate +Input [11]: [ss_quantity#4, ss_sales_price#5, i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, spark_grouping_id#26] +Keys [9]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, spark_grouping_id#26] +Functions [1]: [partial_sum(coalesce((ss_sales_price#5 * cast(ss_quantity#4 as decimal(10,0))), 0.00))] +Aggregate Attributes [2]: [sum#28, isEmpty#29] +Results [11]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, spark_grouping_id#26, sum#36, isEmpty#37] + +(99) Exchange +Input [11]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, spark_grouping_id#26, sum#36, isEmpty#37] +Arguments: hashpartitioning(i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, spark_grouping_id#26, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(100) HashAggregate +Input [11]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, spark_grouping_id#26, sum#36, isEmpty#37] +Keys [9]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, spark_grouping_id#26] +Functions [1]: [sum(coalesce((ss_sales_price#5 * cast(ss_quantity#4 as decimal(10,0))), 0.00))] +Aggregate Attributes [1]: [sum(coalesce((ss_sales_price#5 * cast(ss_quantity#4 as decimal(10,0))), 0.00))#31] +Results [9]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, sum(coalesce((ss_sales_price#5 * cast(ss_quantity#4 as decimal(10,0))), 0.00))#31 AS sumsales#32] + +(101) Sort +Input [9]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, sumsales#32] +Arguments: [i_category#18 ASC NULLS FIRST, sumsales#32 DESC NULLS LAST], false, 0 + +(102) WindowGroupLimit +Input [9]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, sumsales#32] +Arguments: [i_category#18], [sumsales#32 DESC NULLS LAST], rank(sumsales#32), 100, Partial + +(103) Exchange +Input [9]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, sumsales#32] +Arguments: hashpartitioning(i_category#18, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(104) Sort +Input [9]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, sumsales#32] +Arguments: [i_category#18 ASC NULLS FIRST, sumsales#32 DESC NULLS LAST], false, 0 + +(105) WindowGroupLimit +Input [9]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, sumsales#32] +Arguments: [i_category#18], [sumsales#32 DESC NULLS LAST], rank(sumsales#32), 100, Final + +(106) Window +Input [9]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, sumsales#32] +Arguments: [rank(sumsales#32) windowspecdefinition(i_category#18, sumsales#32 DESC NULLS LAST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rk#35], [i_category#18], [sumsales#32 DESC NULLS LAST] + +(107) Filter +Input [10]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, sumsales#32, rk#35] +Condition : (rk#35 <= 100) + +(108) TakeOrderedAndProject +Input [10]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, sumsales#32, rk#35] +Arguments: X, [i_category#18 ASC NULLS FIRST, i_class#19 ASC NULLS FIRST, i_brand#20 ASC NULLS FIRST, i_product_name#21 ASC NULLS FIRST, d_year#22 ASC NULLS FIRST, d_qoy#23 ASC NULLS FIRST, d_moy#24 ASC NULLS FIRST, s_store_id#25 ASC NULLS FIRST, sumsales#32 ASC NULLS FIRST, rk#35 ASC NULLS FIRST], [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, sumsales#32, rk#35] + +(109) AdaptiveSparkPlan +Output [10]: [i_category#18, i_class#19, i_brand#20, i_product_name#21, d_year#22, d_qoy#23, d_moy#24, s_store_id#25, sumsales#32, rk#35] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q68.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q68.txt new file mode 100644 index 000000000..eaa4041b7 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q68.txt @@ -0,0 +1,847 @@ +== Physical Plan == +AdaptiveSparkPlan (156) ++- == Final Plan == + TakeOrderedAndProject (99) + +- * Project (98) + +- * SortMergeJoin Inner (97) + :- NativeSort (90) + : +- InputAdapter (89) + : +- AQEShuffleRead (88) + : +- ShuffleQueryStage (87), Statistics(X) + : +- NativeShuffleExchange (86) + : +- NativeProject (85) + : +- NativeSortMergeJoin Inner (84) + : :- NativeSort (75) + : : +- InputAdapter (74) + : : +- AQEShuffleRead (73) + : : +- ShuffleQueryStage (72), Statistics(X) + : : +- NativeShuffleExchange (71) + : : +- NativeProject (70) + : : +- NativeHashAggregate (69) + : : +- NativeHashAggregate (68) + : : +- NativeProject (67) + : : +- NativeProject (66) + : : +- NativeSortMergeJoin Inner (65) + : : :- NativeSort (56) + : : : +- InputAdapter (55) + : : : +- AQEShuffleRead (54) + : : : +- ShuffleQueryStage (53), Statistics(X) + : : : +- NativeShuffleExchange (52) + : : : +- NativeProject (51) + : : : +- NativeSortMergeJoin Inner (50) + : : : :- NativeSort (40) + : : : : +- InputAdapter (39) + : : : : +- AQEShuffleRead (38) + : : : : +- ShuffleQueryStage (37), Statistics(X) + : : : : +- NativeShuffleExchange (36) + : : : : +- NativeProject (35) + : : : : +- NativeSortMergeJoin Inner (34) + : : : : :- 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 (33) + : : : : +- InputAdapter (32) + : : : : +- AQEShuffleRead (31) + : : : : +- ShuffleQueryStage (30), Statistics(X) + : : : : +- NativeShuffleExchange (29) + : : : : +- NativeProject (28) + : : : : +- NativeFilter (27) + : : : : +- InputAdapter (26) + : : : : +- NativeParquetScan (25) + : : : +- NativeSort (49) + : : : +- InputAdapter (48) + : : : +- AQEShuffleRead (47) + : : : +- ShuffleQueryStage (46), Statistics(X) + : : : +- NativeShuffleExchange (45) + : : : +- NativeProject (44) + : : : +- NativeFilter (43) + : : : +- InputAdapter (42) + : : : +- NativeParquetScan (41) + : : +- NativeSort (64) + : : +- InputAdapter (63) + : : +- AQEShuffleRead (62) + : : +- ShuffleQueryStage (61), Statistics(X) + : : +- NativeShuffleExchange (60) + : : +- NativeFilter (59) + : : +- InputAdapter (58) + : : +- NativeParquetScan (57) + : +- NativeSort (83) + : +- InputAdapter (82) + : +- AQEShuffleRead (81) + : +- ShuffleQueryStage (80), Statistics(X) + : +- NativeShuffleExchange (79) + : +- NativeFilter (78) + : +- InputAdapter (77) + : +- NativeParquetScan (76) + +- NativeSort (96) + +- InputAdapter (95) + +- InputAdapter (94) + +- AQEShuffleRead (93) + +- ShuffleQueryStage (92), Statistics(X) + +- ReusedExchange (91) ++- == Initial Plan == + TakeOrderedAndProject (155) + +- Project (154) + +- SortMergeJoin Inner (153) + :- Sort (148) + : +- Exchange (147) + : +- Project (146) + : +- SortMergeJoin Inner (145) + : :- Sort (140) + : : +- Exchange (139) + : : +- HashAggregate (138) + : : +- HashAggregate (137) + : : +- Project (136) + : : +- SortMergeJoin Inner (135) + : : :- Sort (130) + : : : +- Exchange (129) + : : : +- Project (128) + : : : +- SortMergeJoin Inner (127) + : : : :- Sort (121) + : : : : +- Exchange (120) + : : : : +- Project (119) + : : : : +- SortMergeJoin Inner (118) + : : : : :- Sort (112) + : : : : : +- Exchange (111) + : : : : : +- Project (110) + : : : : : +- SortMergeJoin Inner (109) + : : : : : :- Sort (103) + : : : : : : +- Exchange (102) + : : : : : : +- Filter (101) + : : : : : : +- Scan parquet (100) + : : : : : +- Sort (108) + : : : : : +- Exchange (107) + : : : : : +- Project (106) + : : : : : +- Filter (105) + : : : : : +- Scan parquet (104) + : : : : +- Sort (117) + : : : : +- Exchange (116) + : : : : +- Project (115) + : : : : +- Filter (114) + : : : : +- Scan parquet (113) + : : : +- Sort (126) + : : : +- Exchange (125) + : : : +- Project (124) + : : : +- Filter (123) + : : : +- Scan parquet (122) + : : +- Sort (134) + : : +- Exchange (133) + : : +- Filter (132) + : : +- Scan parquet (131) + : +- Sort (144) + : +- Exchange (143) + : +- Filter (142) + : +- Scan parquet (141) + +- Sort (152) + +- Exchange (151) + +- Filter (150) + +- Scan parquet (149) + + +(100) Scan parquet +Output [9]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk), IsNotNull(ss_hdemo_sk), IsNotNull(ss_addr_sk), IsNotNull(ss_customer_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [9]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] +Arguments: [#1, #2, #3, #4, #5, #6, #7, #8, #9] + +(3) NativeFilter +Input [9]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9] +Condition : ((((isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_store_sk#5)) AND isnotnull(ss_hdemo_sk#3)) AND isnotnull(ss_addr_sk#4)) AND isnotnull(ss_customer_sk#2)) + +(4) NativeShuffleExchange +Input [9]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [9]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9] +Arguments: X + +(6) AQEShuffleRead +Input [9]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9] +Arguments: coalesced + +(7) InputAdapter +Input [9]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9] + +(8) NativeSort +Input [9]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(104) Scan parquet +Output [3]: [d_date_sk#10, d_year#11, d_dom#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_dom), GreaterThanOrEqual(d_dom,1), LessThanOrEqual(d_dom,2), In(d_year, [1999,2000,2001]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [3]: [d_date_sk#10, d_year#11, d_dom#12] +Arguments: [#10, #11, #12] + +(11) NativeFilter +Input [3]: [#10#10, #11#11, #12#12] +Condition : ((((isnotnull(d_dom#12) AND (d_dom#12 >= 1)) AND (d_dom#12 <= 2)) AND d_year#11 IN (1999,2000,2001)) AND isnotnull(d_date_sk#10)) + +(12) NativeProject +Output [1]: [d_date_sk#10] +Input [3]: [#10#10, #11#11, #12#12] + +(13) NativeShuffleExchange +Input [1]: [d_date_sk#10] +Arguments: hashpartitioning(d_date_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [1]: [d_date_sk#10] +Arguments: X + +(15) AQEShuffleRead +Input [1]: [d_date_sk#10] +Arguments: coalesced + +(16) InputAdapter +Input [1]: [d_date_sk#10] + +(17) NativeSort +Input [1]: [d_date_sk#10] +Arguments: [d_date_sk#10 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#10] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [8]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] +Input [10]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9, d_date_sk#10] + +(20) NativeShuffleExchange +Input [8]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] +Arguments: hashpartitioning(ss_store_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [8]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] +Arguments: X + +(22) AQEShuffleRead +Input [8]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] +Arguments: coalesced + +(23) InputAdapter +Input [8]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] + +(24) NativeSort +Input [8]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] +Arguments: [ss_store_sk#5 ASC NULLS FIRST], false + +(113) Scan parquet +Output [2]: [s_store_sk#13, s_city#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(s_city, [Fairview,Midway]), IsNotNull(s_store_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [2]: [s_store_sk#13, s_city#14] +Arguments: [#13, #14] + +(27) NativeFilter +Input [2]: [#13#13, #14#14] +Condition : (s_city#14 IN (Midway,Fairview) AND isnotnull(s_store_sk#13)) + +(28) NativeProject +Output [1]: [s_store_sk#13] +Input [2]: [#13#13, #14#14] + +(29) NativeShuffleExchange +Input [1]: [s_store_sk#13] +Arguments: hashpartitioning(s_store_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(30) ShuffleQueryStage +Output [1]: [s_store_sk#13] +Arguments: X + +(31) AQEShuffleRead +Input [1]: [s_store_sk#13] +Arguments: coalesced + +(32) InputAdapter +Input [1]: [s_store_sk#13] + +(33) NativeSort +Input [1]: [s_store_sk#13] +Arguments: [s_store_sk#13 ASC NULLS FIRST], false + +(34) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#5] +Right keys [1]: [s_store_sk#13] +Join type: Inner +Join condition: None + +(35) NativeProject +Output [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] +Input [9]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9, s_store_sk#13] + +(36) NativeShuffleExchange +Input [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] +Arguments: hashpartitioning(ss_hdemo_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] +Arguments: X + +(38) AQEShuffleRead +Input [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] +Arguments: coalesced + +(39) InputAdapter +Input [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] + +(40) NativeSort +Input [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] +Arguments: [ss_hdemo_sk#3 ASC NULLS FIRST], false + +(122) Scan parquet +Output [3]: [hd_demo_sk#15, hd_dep_count#16, hd_vehicle_count#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(EqualTo(hd_dep_count,4),EqualTo(hd_vehicle_count,3)), IsNotNull(hd_demo_sk)] +ReadSchema: struct + +(42) InputAdapter +Input [3]: [hd_demo_sk#15, hd_dep_count#16, hd_vehicle_count#17] +Arguments: [#15, #16, #17] + +(43) NativeFilter +Input [3]: [#15#15, #16#16, #17#17] +Condition : (((hd_dep_count#16 = 4) OR (hd_vehicle_count#17 = 3)) AND isnotnull(hd_demo_sk#15)) + +(44) NativeProject +Output [1]: [hd_demo_sk#15] +Input [3]: [#15#15, #16#16, #17#17] + +(45) NativeShuffleExchange +Input [1]: [hd_demo_sk#15] +Arguments: hashpartitioning(hd_demo_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(46) ShuffleQueryStage +Output [1]: [hd_demo_sk#15] +Arguments: X + +(47) AQEShuffleRead +Input [1]: [hd_demo_sk#15] +Arguments: coalesced + +(48) InputAdapter +Input [1]: [hd_demo_sk#15] + +(49) NativeSort +Input [1]: [hd_demo_sk#15] +Arguments: [hd_demo_sk#15 ASC NULLS FIRST], false + +(50) NativeSortMergeJoin +Left keys [1]: [ss_hdemo_sk#3] +Right keys [1]: [hd_demo_sk#15] +Join type: Inner +Join condition: None + +(51) NativeProject +Output [6]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] +Input [8]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9, hd_demo_sk#15] + +(52) NativeShuffleExchange +Input [6]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] +Arguments: hashpartitioning(ss_addr_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(53) ShuffleQueryStage +Output [6]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] +Arguments: X + +(54) AQEShuffleRead +Input [6]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] +Arguments: coalesced + +(55) InputAdapter +Input [6]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] + +(56) NativeSort +Input [6]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] +Arguments: [ss_addr_sk#4 ASC NULLS FIRST], false + +(131) Scan parquet +Output [2]: [ca_address_sk#18, ca_city#19] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_city)] +ReadSchema: struct + +(58) InputAdapter +Input [2]: [ca_address_sk#18, ca_city#19] +Arguments: [#18, #19] + +(59) NativeFilter +Input [2]: [#18#18, #19#19] +Condition : (isnotnull(ca_address_sk#18) AND isnotnull(ca_city#19)) + +(60) NativeShuffleExchange +Input [2]: [#18#18, #19#19] +Arguments: hashpartitioning(ca_address_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(61) ShuffleQueryStage +Output [2]: [#18#18, #19#19] +Arguments: X + +(62) AQEShuffleRead +Input [2]: [#18#18, #19#19] +Arguments: coalesced + +(63) InputAdapter +Input [2]: [#18#18, #19#19] + +(64) NativeSort +Input [2]: [#18#18, #19#19] +Arguments: [ca_address_sk#18 ASC NULLS FIRST], false + +(65) NativeSortMergeJoin +Left keys [1]: [ss_addr_sk#4] +Right keys [1]: [ca_address_sk#18] +Join type: Inner +Join condition: None + +(66) NativeProject +Output [7]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9, ca_city#19] +Input [8]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9, #18#18, #19#19] + +(67) NativeProject +Output [7]: [ss_ticket_number#6 AS ss_ticket_number#6, ss_customer_sk#2 AS ss_customer_sk#2, ss_addr_sk#4 AS ss_addr_sk#4, ca_city#19 AS ca_city#19, UnscaledValue(ss_ext_sales_price#7) AS _c4#20, UnscaledValue(ss_ext_list_price#8) AS _c5#21, UnscaledValue(ss_ext_tax#9) AS _c6#22] +Input [7]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9, ca_city#19] + +(68) NativeHashAggregate +Input [7]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, ca_city#19, _c4#20, _c5#21, _c6#22] +Keys [4]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, ca_city#19] +Functions [3]: [partial_sum(_c4#20), partial_sum(_c5#21), partial_sum(_c6#22)] +Aggregate Attributes [3]: [sum#23, sum#24, sum#25] +Results [5]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, ca_city#19, #26#26] + +(69) NativeHashAggregate +Input [5]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, ca_city#19, #26#26] +Keys [4]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, ca_city#19] +Functions [3]: [sum(UnscaledValue(ss_ext_sales_price#7)), sum(UnscaledValue(ss_ext_list_price#8)), sum(UnscaledValue(ss_ext_tax#9))] +Aggregate Attributes [3]: [sum(UnscaledValue(ss_ext_sales_price#7))#27, sum(UnscaledValue(ss_ext_list_price#8))#28, sum(UnscaledValue(ss_ext_tax#9))#29] +Results [7]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, ca_city#19, sum(UnscaledValue(ss_ext_sales_price#7))#27, sum(UnscaledValue(ss_ext_list_price#8))#28, sum(UnscaledValue(ss_ext_tax#9))#29] + +(70) NativeProject +Output [6]: [ss_ticket_number#6, ss_customer_sk#2, ca_city#19 AS bought_city#30, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#7))#27,17,2) AS extended_price#31, MakeDecimal(sum(UnscaledValue(ss_ext_list_price#8))#28,17,2) AS list_price#32, MakeDecimal(sum(UnscaledValue(ss_ext_tax#9))#29,17,2) AS extended_tax#33] +Input [7]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, ca_city#19, sum(UnscaledValue(ss_ext_sales_price#7))#27, sum(UnscaledValue(ss_ext_list_price#8))#28, sum(UnscaledValue(ss_ext_tax#9))#29] + +(71) NativeShuffleExchange +Input [6]: [ss_ticket_number#6, ss_customer_sk#2, bought_city#30, extended_price#31, list_price#32, extended_tax#33] +Arguments: hashpartitioning(ss_customer_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(72) ShuffleQueryStage +Output [6]: [ss_ticket_number#6, ss_customer_sk#2, bought_city#30, extended_price#31, list_price#32, extended_tax#33] +Arguments: X + +(73) AQEShuffleRead +Input [6]: [ss_ticket_number#6, ss_customer_sk#2, bought_city#30, extended_price#31, list_price#32, extended_tax#33] +Arguments: coalesced + +(74) InputAdapter +Input [6]: [ss_ticket_number#6, ss_customer_sk#2, bought_city#30, extended_price#31, list_price#32, extended_tax#33] + +(75) NativeSort +Input [6]: [ss_ticket_number#6, ss_customer_sk#2, bought_city#30, extended_price#31, list_price#32, extended_tax#33] +Arguments: [ss_customer_sk#2 ASC NULLS FIRST], false + +(141) Scan parquet +Output [4]: [c_customer_sk#34, c_current_addr_sk#35, c_first_name#36, c_last_name#37] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_current_addr_sk)] +ReadSchema: struct + +(77) InputAdapter +Input [4]: [c_customer_sk#34, c_current_addr_sk#35, c_first_name#36, c_last_name#37] +Arguments: [#34, #35, #36, #37] + +(78) NativeFilter +Input [4]: [#34#34, #35#35, #36#36, #37#37] +Condition : (isnotnull(c_customer_sk#34) AND isnotnull(c_current_addr_sk#35)) + +(79) NativeShuffleExchange +Input [4]: [#34#34, #35#35, #36#36, #37#37] +Arguments: hashpartitioning(c_customer_sk#34, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(80) ShuffleQueryStage +Output [4]: [#34#34, #35#35, #36#36, #37#37] +Arguments: X + +(81) AQEShuffleRead +Input [4]: [#34#34, #35#35, #36#36, #37#37] +Arguments: coalesced + +(82) InputAdapter +Input [4]: [#34#34, #35#35, #36#36, #37#37] + +(83) NativeSort +Input [4]: [#34#34, #35#35, #36#36, #37#37] +Arguments: [c_customer_sk#34 ASC NULLS FIRST], false + +(84) NativeSortMergeJoin +Left keys [1]: [ss_customer_sk#2] +Right keys [1]: [c_customer_sk#34] +Join type: Inner +Join condition: None + +(85) NativeProject +Output [8]: [ss_ticket_number#6, bought_city#30, extended_price#31, list_price#32, extended_tax#33, c_current_addr_sk#35, c_first_name#36, c_last_name#37] +Input [10]: [ss_ticket_number#6, ss_customer_sk#2, bought_city#30, extended_price#31, list_price#32, extended_tax#33, #34#34, #35#35, #36#36, #37#37] + +(86) NativeShuffleExchange +Input [8]: [ss_ticket_number#6, bought_city#30, extended_price#31, list_price#32, extended_tax#33, c_current_addr_sk#35, c_first_name#36, c_last_name#37] +Arguments: hashpartitioning(c_current_addr_sk#35, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(87) ShuffleQueryStage +Output [8]: [ss_ticket_number#6, bought_city#30, extended_price#31, list_price#32, extended_tax#33, c_current_addr_sk#35, c_first_name#36, c_last_name#37] +Arguments: X + +(88) AQEShuffleRead +Input [8]: [ss_ticket_number#6, bought_city#30, extended_price#31, list_price#32, extended_tax#33, c_current_addr_sk#35, c_first_name#36, c_last_name#37] +Arguments: coalesced + +(89) InputAdapter +Input [8]: [ss_ticket_number#6, bought_city#30, extended_price#31, list_price#32, extended_tax#33, c_current_addr_sk#35, c_first_name#36, c_last_name#37] + +(90) NativeSort +Input [8]: [ss_ticket_number#6, bought_city#30, extended_price#31, list_price#32, extended_tax#33, c_current_addr_sk#35, c_first_name#36, c_last_name#37] +Arguments: [c_current_addr_sk#35 ASC NULLS FIRST], false + +(91) ReusedExchange [Reuses operator id: 60] +Output [2]: [ca_address_sk#38, ca_city#39] + +(92) ShuffleQueryStage +Output [2]: [ca_address_sk#38, ca_city#39] +Arguments: X + +(93) AQEShuffleRead +Input [2]: [ca_address_sk#38, ca_city#39] +Arguments: coalesced + +(94) InputAdapter +Input [2]: [ca_address_sk#38, ca_city#39] +Arguments: [#38, #39] + +(95) InputAdapter +Input [2]: [#38#38, #39#39] + +(96) NativeSort +Input [2]: [#38#38, #39#39] +Arguments: [ca_address_sk#38 ASC NULLS FIRST], false + +(97) SortMergeJoin [codegen id : 1] +Left keys [1]: [c_current_addr_sk#35] +Right keys [1]: [ca_address_sk#38] +Join type: Inner +Join condition: NOT (ca_city#39 = bought_city#30) + +(98) Project [codegen id : 1] +Output [8]: [c_last_name#37, c_first_name#36, ca_city#39, bought_city#30, ss_ticket_number#6, extended_price#31, extended_tax#33, list_price#32] +Input [10]: [ss_ticket_number#6, bought_city#30, extended_price#31, list_price#32, extended_tax#33, c_current_addr_sk#35, c_first_name#36, c_last_name#37, #38#38, #39#39] + +(99) TakeOrderedAndProject +Input [8]: [c_last_name#37, c_first_name#36, ca_city#39, bought_city#30, ss_ticket_number#6, extended_price#31, extended_tax#33, list_price#32] +Arguments: X, [c_last_name#37 ASC NULLS FIRST, ss_ticket_number#6 ASC NULLS FIRST], [c_last_name#37, c_first_name#36, ca_city#39, bought_city#30, ss_ticket_number#6, extended_price#31, extended_tax#33, list_price#32] + +(100) Scan parquet +Output [9]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk), IsNotNull(ss_hdemo_sk), IsNotNull(ss_addr_sk), IsNotNull(ss_customer_sk)] +ReadSchema: struct + +(101) Filter +Input [9]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] +Condition : ((((isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_store_sk#5)) AND isnotnull(ss_hdemo_sk#3)) AND isnotnull(ss_addr_sk#4)) AND isnotnull(ss_customer_sk#2)) + +(102) Exchange +Input [9]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(103) Sort +Input [9]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(104) Scan parquet +Output [3]: [d_date_sk#10, d_year#11, d_dom#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_dom), GreaterThanOrEqual(d_dom,1), LessThanOrEqual(d_dom,2), In(d_year, [1999,2000,2001]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(105) Filter +Input [3]: [d_date_sk#10, d_year#11, d_dom#12] +Condition : ((((isnotnull(d_dom#12) AND (d_dom#12 >= 1)) AND (d_dom#12 <= 2)) AND d_year#11 IN (1999,2000,2001)) AND isnotnull(d_date_sk#10)) + +(106) Project +Output [1]: [d_date_sk#10] +Input [3]: [d_date_sk#10, d_year#11, d_dom#12] + +(107) Exchange +Input [1]: [d_date_sk#10] +Arguments: hashpartitioning(d_date_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(108) Sort +Input [1]: [d_date_sk#10] +Arguments: [d_date_sk#10 ASC NULLS FIRST], false, 0 + +(109) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#10] +Join type: Inner +Join condition: None + +(110) Project +Output [8]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] +Input [10]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9, d_date_sk#10] + +(111) Exchange +Input [8]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] +Arguments: hashpartitioning(ss_store_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(112) Sort +Input [8]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] +Arguments: [ss_store_sk#5 ASC NULLS FIRST], false, 0 + +(113) Scan parquet +Output [2]: [s_store_sk#13, s_city#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(s_city, [Fairview,Midway]), IsNotNull(s_store_sk)] +ReadSchema: struct + +(114) Filter +Input [2]: [s_store_sk#13, s_city#14] +Condition : (s_city#14 IN (Midway,Fairview) AND isnotnull(s_store_sk#13)) + +(115) Project +Output [1]: [s_store_sk#13] +Input [2]: [s_store_sk#13, s_city#14] + +(116) Exchange +Input [1]: [s_store_sk#13] +Arguments: hashpartitioning(s_store_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(117) Sort +Input [1]: [s_store_sk#13] +Arguments: [s_store_sk#13 ASC NULLS FIRST], false, 0 + +(118) SortMergeJoin +Left keys [1]: [ss_store_sk#5] +Right keys [1]: [s_store_sk#13] +Join type: Inner +Join condition: None + +(119) Project +Output [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] +Input [9]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9, s_store_sk#13] + +(120) Exchange +Input [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] +Arguments: hashpartitioning(ss_hdemo_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(121) Sort +Input [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] +Arguments: [ss_hdemo_sk#3 ASC NULLS FIRST], false, 0 + +(122) Scan parquet +Output [3]: [hd_demo_sk#15, hd_dep_count#16, hd_vehicle_count#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(EqualTo(hd_dep_count,4),EqualTo(hd_vehicle_count,3)), IsNotNull(hd_demo_sk)] +ReadSchema: struct + +(123) Filter +Input [3]: [hd_demo_sk#15, hd_dep_count#16, hd_vehicle_count#17] +Condition : (((hd_dep_count#16 = 4) OR (hd_vehicle_count#17 = 3)) AND isnotnull(hd_demo_sk#15)) + +(124) Project +Output [1]: [hd_demo_sk#15] +Input [3]: [hd_demo_sk#15, hd_dep_count#16, hd_vehicle_count#17] + +(125) Exchange +Input [1]: [hd_demo_sk#15] +Arguments: hashpartitioning(hd_demo_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(126) Sort +Input [1]: [hd_demo_sk#15] +Arguments: [hd_demo_sk#15 ASC NULLS FIRST], false, 0 + +(127) SortMergeJoin +Left keys [1]: [ss_hdemo_sk#3] +Right keys [1]: [hd_demo_sk#15] +Join type: Inner +Join condition: None + +(128) Project +Output [6]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] +Input [8]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9, hd_demo_sk#15] + +(129) Exchange +Input [6]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] +Arguments: hashpartitioning(ss_addr_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(130) Sort +Input [6]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9] +Arguments: [ss_addr_sk#4 ASC NULLS FIRST], false, 0 + +(131) Scan parquet +Output [2]: [ca_address_sk#18, ca_city#19] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_city)] +ReadSchema: struct + +(132) Filter +Input [2]: [ca_address_sk#18, ca_city#19] +Condition : (isnotnull(ca_address_sk#18) AND isnotnull(ca_city#19)) + +(133) Exchange +Input [2]: [ca_address_sk#18, ca_city#19] +Arguments: hashpartitioning(ca_address_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(134) Sort +Input [2]: [ca_address_sk#18, ca_city#19] +Arguments: [ca_address_sk#18 ASC NULLS FIRST], false, 0 + +(135) SortMergeJoin +Left keys [1]: [ss_addr_sk#4] +Right keys [1]: [ca_address_sk#18] +Join type: Inner +Join condition: None + +(136) Project +Output [7]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9, ca_city#19] +Input [8]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9, ca_address_sk#18, ca_city#19] + +(137) HashAggregate +Input [7]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_ext_sales_price#7, ss_ext_list_price#8, ss_ext_tax#9, ca_city#19] +Keys [4]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, ca_city#19] +Functions [3]: [partial_sum(UnscaledValue(ss_ext_sales_price#7)), partial_sum(UnscaledValue(ss_ext_list_price#8)), partial_sum(UnscaledValue(ss_ext_tax#9))] +Aggregate Attributes [3]: [sum#23, sum#24, sum#25] +Results [7]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, ca_city#19, sum#40, sum#41, sum#42] + +(138) HashAggregate +Input [7]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, ca_city#19, sum#40, sum#41, sum#42] +Keys [4]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, ca_city#19] +Functions [3]: [sum(UnscaledValue(ss_ext_sales_price#7)), sum(UnscaledValue(ss_ext_list_price#8)), sum(UnscaledValue(ss_ext_tax#9))] +Aggregate Attributes [3]: [sum(UnscaledValue(ss_ext_sales_price#7))#27, sum(UnscaledValue(ss_ext_list_price#8))#28, sum(UnscaledValue(ss_ext_tax#9))#29] +Results [6]: [ss_ticket_number#6, ss_customer_sk#2, ca_city#19 AS bought_city#30, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#7))#27,17,2) AS extended_price#31, MakeDecimal(sum(UnscaledValue(ss_ext_list_price#8))#28,17,2) AS list_price#32, MakeDecimal(sum(UnscaledValue(ss_ext_tax#9))#29,17,2) AS extended_tax#33] + +(139) Exchange +Input [6]: [ss_ticket_number#6, ss_customer_sk#2, bought_city#30, extended_price#31, list_price#32, extended_tax#33] +Arguments: hashpartitioning(ss_customer_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(140) Sort +Input [6]: [ss_ticket_number#6, ss_customer_sk#2, bought_city#30, extended_price#31, list_price#32, extended_tax#33] +Arguments: [ss_customer_sk#2 ASC NULLS FIRST], false, 0 + +(141) Scan parquet +Output [4]: [c_customer_sk#34, c_current_addr_sk#35, c_first_name#36, c_last_name#37] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_current_addr_sk)] +ReadSchema: struct + +(142) Filter +Input [4]: [c_customer_sk#34, c_current_addr_sk#35, c_first_name#36, c_last_name#37] +Condition : (isnotnull(c_customer_sk#34) AND isnotnull(c_current_addr_sk#35)) + +(143) Exchange +Input [4]: [c_customer_sk#34, c_current_addr_sk#35, c_first_name#36, c_last_name#37] +Arguments: hashpartitioning(c_customer_sk#34, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(144) Sort +Input [4]: [c_customer_sk#34, c_current_addr_sk#35, c_first_name#36, c_last_name#37] +Arguments: [c_customer_sk#34 ASC NULLS FIRST], false, 0 + +(145) SortMergeJoin +Left keys [1]: [ss_customer_sk#2] +Right keys [1]: [c_customer_sk#34] +Join type: Inner +Join condition: None + +(146) Project +Output [8]: [ss_ticket_number#6, bought_city#30, extended_price#31, list_price#32, extended_tax#33, c_current_addr_sk#35, c_first_name#36, c_last_name#37] +Input [10]: [ss_ticket_number#6, ss_customer_sk#2, bought_city#30, extended_price#31, list_price#32, extended_tax#33, c_customer_sk#34, c_current_addr_sk#35, c_first_name#36, c_last_name#37] + +(147) Exchange +Input [8]: [ss_ticket_number#6, bought_city#30, extended_price#31, list_price#32, extended_tax#33, c_current_addr_sk#35, c_first_name#36, c_last_name#37] +Arguments: hashpartitioning(c_current_addr_sk#35, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(148) Sort +Input [8]: [ss_ticket_number#6, bought_city#30, extended_price#31, list_price#32, extended_tax#33, c_current_addr_sk#35, c_first_name#36, c_last_name#37] +Arguments: [c_current_addr_sk#35 ASC NULLS FIRST], false, 0 + +(149) Scan parquet +Output [2]: [ca_address_sk#38, ca_city#39] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_city)] +ReadSchema: struct + +(150) Filter +Input [2]: [ca_address_sk#38, ca_city#39] +Condition : (isnotnull(ca_address_sk#38) AND isnotnull(ca_city#39)) + +(151) Exchange +Input [2]: [ca_address_sk#38, ca_city#39] +Arguments: hashpartitioning(ca_address_sk#38, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(152) Sort +Input [2]: [ca_address_sk#38, ca_city#39] +Arguments: [ca_address_sk#38 ASC NULLS FIRST], false, 0 + +(153) SortMergeJoin +Left keys [1]: [c_current_addr_sk#35] +Right keys [1]: [ca_address_sk#38] +Join type: Inner +Join condition: NOT (ca_city#39 = bought_city#30) + +(154) Project +Output [8]: [c_last_name#37, c_first_name#36, ca_city#39, bought_city#30, ss_ticket_number#6, extended_price#31, extended_tax#33, list_price#32] +Input [10]: [ss_ticket_number#6, bought_city#30, extended_price#31, list_price#32, extended_tax#33, c_current_addr_sk#35, c_first_name#36, c_last_name#37, ca_address_sk#38, ca_city#39] + +(155) TakeOrderedAndProject +Input [8]: [c_last_name#37, c_first_name#36, ca_city#39, bought_city#30, ss_ticket_number#6, extended_price#31, extended_tax#33, list_price#32] +Arguments: X, [c_last_name#37 ASC NULLS FIRST, ss_ticket_number#6 ASC NULLS FIRST], [c_last_name#37, c_first_name#36, ca_city#39, bought_city#30, ss_ticket_number#6, extended_price#31, extended_tax#33, list_price#32] + +(156) AdaptiveSparkPlan +Output [8]: [c_last_name#37, c_first_name#36, ca_city#39, bought_city#30, ss_ticket_number#6, extended_price#31, extended_tax#33, list_price#32] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q69.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q69.txt new file mode 100644 index 000000000..a350ac419 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q69.txt @@ -0,0 +1,1010 @@ +== Physical Plan == +AdaptiveSparkPlan (186) ++- == Final Plan == + NativeTakeOrdered (117) + +- NativeProject (116) + +- NativeHashAggregate (115) + +- InputAdapter (114) + +- AQEShuffleRead (113) + +- ShuffleQueryStage (112), Statistics(X) + +- NativeShuffleExchange (111) + +- NativeHashAggregate (110) + +- NativeProject (109) + +- NativeSortMergeJoin Inner (108) + :- NativeSort (99) + : +- InputAdapter (98) + : +- AQEShuffleRead (97) + : +- ShuffleQueryStage (96), Statistics(X) + : +- NativeShuffleExchange (95) + : +- NativeProject (94) + : +- NativeSortMergeJoin Inner (93) + : :- NativeSort (83) + : : +- InputAdapter (82) + : : +- AQEShuffleRead (81) + : : +- ShuffleQueryStage (80), Statistics(X) + : : +- NativeShuffleExchange (79) + : : +- NativeProject (78) + : : +- NativeSortMergeJoin LeftAnti (77) + : : :- NativeSortMergeJoin LeftAnti (55) + : : : :- NativeSortMergeJoin LeftSemi (33) + : : : : :- NativeSort (8) + : : : : : +- InputAdapter (7) + : : : : : +- AQEShuffleRead (6) + : : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : : +- NativeShuffleExchange (4) + : : : : : +- NativeFilter (3) + : : : : : +- InputAdapter (2) + : : : : : +- NativeParquetScan (1) + : : : : +- NativeSort (32) + : : : : +- InputAdapter (31) + : : : : +- AQEShuffleRead (30) + : : : : +- ShuffleQueryStage (29), Statistics(X) + : : : : +- NativeShuffleExchange (28) + : : : : +- NativeProject (27) + : : : : +- NativeSortMergeJoin Inner (26) + : : : : :- NativeSort (16) + : : : : : +- InputAdapter (15) + : : : : : +- AQEShuffleRead (14) + : : : : : +- ShuffleQueryStage (13), Statistics(X) + : : : : : +- NativeShuffleExchange (12) + : : : : : +- NativeFilter (11) + : : : : : +- InputAdapter (10) + : : : : : +- NativeParquetScan (9) + : : : : +- NativeSort (25) + : : : : +- InputAdapter (24) + : : : : +- AQEShuffleRead (23) + : : : : +- ShuffleQueryStage (22), Statistics(X) + : : : : +- NativeShuffleExchange (21) + : : : : +- NativeProject (20) + : : : : +- NativeFilter (19) + : : : : +- InputAdapter (18) + : : : : +- NativeParquetScan (17) + : : : +- NativeSort (54) + : : : +- InputAdapter (53) + : : : +- AQEShuffleRead (52) + : : : +- ShuffleQueryStage (51), Statistics(X) + : : : +- NativeShuffleExchange (50) + : : : +- NativeProject (49) + : : : +- NativeSortMergeJoin Inner (48) + : : : :- NativeSort (41) + : : : : +- InputAdapter (40) + : : : : +- AQEShuffleRead (39) + : : : : +- ShuffleQueryStage (38), Statistics(X) + : : : : +- NativeShuffleExchange (37) + : : : : +- NativeFilter (36) + : : : : +- InputAdapter (35) + : : : : +- NativeParquetScan (34) + : : : +- NativeSort (47) + : : : +- InputAdapter (46) + : : : +- InputAdapter (45) + : : : +- AQEShuffleRead (44) + : : : +- ShuffleQueryStage (43), Statistics(X) + : : : +- ReusedExchange (42) + : : +- NativeSort (76) + : : +- InputAdapter (75) + : : +- AQEShuffleRead (74) + : : +- ShuffleQueryStage (73), Statistics(X) + : : +- NativeShuffleExchange (72) + : : +- NativeProject (71) + : : +- NativeSortMergeJoin Inner (70) + : : :- NativeSort (63) + : : : +- InputAdapter (62) + : : : +- AQEShuffleRead (61) + : : : +- ShuffleQueryStage (60), Statistics(X) + : : : +- NativeShuffleExchange (59) + : : : +- NativeFilter (58) + : : : +- InputAdapter (57) + : : : +- NativeParquetScan (56) + : : +- NativeSort (69) + : : +- InputAdapter (68) + : : +- InputAdapter (67) + : : +- AQEShuffleRead (66) + : : +- ShuffleQueryStage (65), Statistics(X) + : : +- ReusedExchange (64) + : +- NativeSort (92) + : +- InputAdapter (91) + : +- AQEShuffleRead (90) + : +- ShuffleQueryStage (89), Statistics(X) + : +- NativeShuffleExchange (88) + : +- NativeProject (87) + : +- NativeFilter (86) + : +- InputAdapter (85) + : +- NativeParquetScan (84) + +- NativeSort (107) + +- InputAdapter (106) + +- AQEShuffleRead (105) + +- ShuffleQueryStage (104), Statistics(X) + +- NativeShuffleExchange (103) + +- NativeFilter (102) + +- InputAdapter (101) + +- NativeParquetScan (100) ++- == Initial Plan == + TakeOrderedAndProject (185) + +- HashAggregate (184) + +- Exchange (183) + +- HashAggregate (182) + +- Project (181) + +- SortMergeJoin Inner (180) + :- Sort (175) + : +- Exchange (174) + : +- Project (173) + : +- SortMergeJoin Inner (172) + : :- Sort (166) + : : +- Exchange (165) + : : +- Project (164) + : : +- SortMergeJoin LeftAnti (163) + : : :- SortMergeJoin LeftAnti (149) + : : : :- SortMergeJoin LeftSemi (135) + : : : : :- Sort (121) + : : : : : +- Exchange (120) + : : : : : +- Filter (119) + : : : : : +- Scan parquet (118) + : : : : +- Sort (134) + : : : : +- Exchange (133) + : : : : +- Project (132) + : : : : +- SortMergeJoin Inner (131) + : : : : :- Sort (125) + : : : : : +- Exchange (124) + : : : : : +- Filter (123) + : : : : : +- Scan parquet (122) + : : : : +- Sort (130) + : : : : +- Exchange (129) + : : : : +- Project (128) + : : : : +- Filter (127) + : : : : +- Scan parquet (126) + : : : +- Sort (148) + : : : +- Exchange (147) + : : : +- Project (146) + : : : +- SortMergeJoin Inner (145) + : : : :- Sort (139) + : : : : +- Exchange (138) + : : : : +- Filter (137) + : : : : +- Scan parquet (136) + : : : +- Sort (144) + : : : +- Exchange (143) + : : : +- Project (142) + : : : +- Filter (141) + : : : +- Scan parquet (140) + : : +- Sort (162) + : : +- Exchange (161) + : : +- Project (160) + : : +- SortMergeJoin Inner (159) + : : :- Sort (153) + : : : +- Exchange (152) + : : : +- Filter (151) + : : : +- Scan parquet (150) + : : +- Sort (158) + : : +- Exchange (157) + : : +- Project (156) + : : +- Filter (155) + : : +- Scan parquet (154) + : +- Sort (171) + : +- Exchange (170) + : +- Project (169) + : +- Filter (168) + : +- Scan parquet (167) + +- Sort (179) + +- Exchange (178) + +- Filter (177) + +- Scan parquet (176) + + +(118) Scan parquet +Output [3]: [c_customer_sk#1, c_current_cdemo_sk#2, c_current_addr_sk#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_current_addr_sk), IsNotNull(c_current_cdemo_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [c_customer_sk#1, c_current_cdemo_sk#2, c_current_addr_sk#3] +Arguments: [#1, #2, #3] + +(3) NativeFilter +Input [3]: [#1#1, #2#2, #3#3] +Condition : (isnotnull(c_current_addr_sk#3) AND isnotnull(c_current_cdemo_sk#2)) + +(4) NativeShuffleExchange +Input [3]: [#1#1, #2#2, #3#3] +Arguments: hashpartitioning(c_customer_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [3]: [#1#1, #2#2, #3#3] +Arguments: X + +(6) AQEShuffleRead +Input [3]: [#1#1, #2#2, #3#3] +Arguments: coalesced + +(7) InputAdapter +Input [3]: [#1#1, #2#2, #3#3] + +(8) NativeSort +Input [3]: [#1#1, #2#2, #3#3] +Arguments: [c_customer_sk#1 ASC NULLS FIRST], false + +(122) Scan parquet +Output [2]: [ss_sold_date_sk#4, ss_customer_sk#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [ss_sold_date_sk#4, ss_customer_sk#5] +Arguments: [#4, #5] + +(11) NativeFilter +Input [2]: [#4#4, #5#5] +Condition : isnotnull(ss_sold_date_sk#4) + +(12) NativeShuffleExchange +Input [2]: [#4#4, #5#5] +Arguments: hashpartitioning(ss_sold_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [2]: [#4#4, #5#5] +Arguments: X + +(14) AQEShuffleRead +Input [2]: [#4#4, #5#5] +Arguments: coalesced + +(15) InputAdapter +Input [2]: [#4#4, #5#5] + +(16) NativeSort +Input [2]: [#4#4, #5#5] +Arguments: [ss_sold_date_sk#4 ASC NULLS FIRST], false + +(126) Scan parquet +Output [3]: [d_date_sk#6, d_year#7, d_moy#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), GreaterThanOrEqual(d_moy,4), LessThanOrEqual(d_moy,6), IsNotNull(d_date_sk)] +ReadSchema: struct + +(18) InputAdapter +Input [3]: [d_date_sk#6, d_year#7, d_moy#8] +Arguments: [#6, #7, #8] + +(19) NativeFilter +Input [3]: [#6#6, #7#7, #8#8] +Condition : (((((isnotnull(d_year#7) AND isnotnull(d_moy#8)) AND (d_year#7 = 2001)) AND (d_moy#8 >= 4)) AND (d_moy#8 <= 6)) AND isnotnull(d_date_sk#6)) + +(20) NativeProject +Output [1]: [d_date_sk#6] +Input [3]: [#6#6, #7#7, #8#8] + +(21) NativeShuffleExchange +Input [1]: [d_date_sk#6] +Arguments: hashpartitioning(d_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(22) ShuffleQueryStage +Output [1]: [d_date_sk#6] +Arguments: X + +(23) AQEShuffleRead +Input [1]: [d_date_sk#6] +Arguments: coalesced + +(24) InputAdapter +Input [1]: [d_date_sk#6] + +(25) NativeSort +Input [1]: [d_date_sk#6] +Arguments: [d_date_sk#6 ASC NULLS FIRST], false + +(26) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#4] +Right keys [1]: [d_date_sk#6] +Join type: Inner +Join condition: None + +(27) NativeProject +Output [1]: [ss_customer_sk#5] +Input [3]: [#4#4, #5#5, d_date_sk#6] + +(28) NativeShuffleExchange +Input [1]: [ss_customer_sk#5] +Arguments: hashpartitioning(ss_customer_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(29) ShuffleQueryStage +Output [1]: [ss_customer_sk#5] +Arguments: X + +(30) AQEShuffleRead +Input [1]: [ss_customer_sk#5] +Arguments: coalesced + +(31) InputAdapter +Input [1]: [ss_customer_sk#5] + +(32) NativeSort +Input [1]: [ss_customer_sk#5] +Arguments: [ss_customer_sk#5 ASC NULLS FIRST], false + +(33) NativeSortMergeJoin +Left keys [1]: [c_customer_sk#1] +Right keys [1]: [ss_customer_sk#5] +Join type: LeftSemi +Join condition: None + +(136) Scan parquet +Output [2]: [ws_sold_date_sk#9, ws_bill_customer_sk#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(35) InputAdapter +Input [2]: [ws_sold_date_sk#9, ws_bill_customer_sk#10] +Arguments: [#9, #10] + +(36) NativeFilter +Input [2]: [#9#9, #10#10] +Condition : isnotnull(ws_sold_date_sk#9) + +(37) NativeShuffleExchange +Input [2]: [#9#9, #10#10] +Arguments: hashpartitioning(ws_sold_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(38) ShuffleQueryStage +Output [2]: [#9#9, #10#10] +Arguments: X + +(39) AQEShuffleRead +Input [2]: [#9#9, #10#10] +Arguments: coalesced + +(40) InputAdapter +Input [2]: [#9#9, #10#10] + +(41) NativeSort +Input [2]: [#9#9, #10#10] +Arguments: [ws_sold_date_sk#9 ASC NULLS FIRST], false + +(42) ReusedExchange [Reuses operator id: 21] +Output [1]: [d_date_sk#11] + +(43) ShuffleQueryStage +Output [1]: [d_date_sk#11] +Arguments: X + +(44) AQEShuffleRead +Input [1]: [d_date_sk#11] +Arguments: coalesced + +(45) InputAdapter +Input [1]: [d_date_sk#11] +Arguments: [#11] + +(46) InputAdapter +Input [1]: [#11#11] + +(47) NativeSort +Input [1]: [#11#11] +Arguments: [d_date_sk#11 ASC NULLS FIRST], false + +(48) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#9] +Right keys [1]: [d_date_sk#11] +Join type: Inner +Join condition: None + +(49) NativeProject +Output [1]: [ws_bill_customer_sk#10] +Input [3]: [#9#9, #10#10, #11#11] + +(50) NativeShuffleExchange +Input [1]: [ws_bill_customer_sk#10] +Arguments: hashpartitioning(ws_bill_customer_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(51) ShuffleQueryStage +Output [1]: [ws_bill_customer_sk#10] +Arguments: X + +(52) AQEShuffleRead +Input [1]: [ws_bill_customer_sk#10] +Arguments: coalesced + +(53) InputAdapter +Input [1]: [ws_bill_customer_sk#10] + +(54) NativeSort +Input [1]: [ws_bill_customer_sk#10] +Arguments: [ws_bill_customer_sk#10 ASC NULLS FIRST], false + +(55) NativeSortMergeJoin +Left keys [1]: [c_customer_sk#1] +Right keys [1]: [ws_bill_customer_sk#10] +Join type: LeftAnti +Join condition: None + +(150) Scan parquet +Output [2]: [cs_sold_date_sk#12, cs_ship_customer_sk#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(57) InputAdapter +Input [2]: [cs_sold_date_sk#12, cs_ship_customer_sk#13] +Arguments: [#12, #13] + +(58) NativeFilter +Input [2]: [#12#12, #13#13] +Condition : isnotnull(cs_sold_date_sk#12) + +(59) NativeShuffleExchange +Input [2]: [#12#12, #13#13] +Arguments: hashpartitioning(cs_sold_date_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(60) ShuffleQueryStage +Output [2]: [#12#12, #13#13] +Arguments: X + +(61) AQEShuffleRead +Input [2]: [#12#12, #13#13] +Arguments: coalesced + +(62) InputAdapter +Input [2]: [#12#12, #13#13] + +(63) NativeSort +Input [2]: [#12#12, #13#13] +Arguments: [cs_sold_date_sk#12 ASC NULLS FIRST], false + +(64) ReusedExchange [Reuses operator id: 21] +Output [1]: [d_date_sk#14] + +(65) ShuffleQueryStage +Output [1]: [d_date_sk#14] +Arguments: X + +(66) AQEShuffleRead +Input [1]: [d_date_sk#14] +Arguments: coalesced + +(67) InputAdapter +Input [1]: [d_date_sk#14] +Arguments: [#14] + +(68) InputAdapter +Input [1]: [#14#14] + +(69) NativeSort +Input [1]: [#14#14] +Arguments: [d_date_sk#14 ASC NULLS FIRST], false + +(70) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#12] +Right keys [1]: [d_date_sk#14] +Join type: Inner +Join condition: None + +(71) NativeProject +Output [1]: [cs_ship_customer_sk#13] +Input [3]: [#12#12, #13#13, #14#14] + +(72) NativeShuffleExchange +Input [1]: [cs_ship_customer_sk#13] +Arguments: hashpartitioning(cs_ship_customer_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(73) ShuffleQueryStage +Output [1]: [cs_ship_customer_sk#13] +Arguments: X + +(74) AQEShuffleRead +Input [1]: [cs_ship_customer_sk#13] +Arguments: coalesced + +(75) InputAdapter +Input [1]: [cs_ship_customer_sk#13] + +(76) NativeSort +Input [1]: [cs_ship_customer_sk#13] +Arguments: [cs_ship_customer_sk#13 ASC NULLS FIRST], false + +(77) NativeSortMergeJoin +Left keys [1]: [c_customer_sk#1] +Right keys [1]: [cs_ship_customer_sk#13] +Join type: LeftAnti +Join condition: None + +(78) NativeProject +Output [2]: [c_current_cdemo_sk#2, c_current_addr_sk#3] +Input [3]: [#1#1, #2#2, #3#3] + +(79) NativeShuffleExchange +Input [2]: [c_current_cdemo_sk#2, c_current_addr_sk#3] +Arguments: hashpartitioning(c_current_addr_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(80) ShuffleQueryStage +Output [2]: [c_current_cdemo_sk#2, c_current_addr_sk#3] +Arguments: X + +(81) AQEShuffleRead +Input [2]: [c_current_cdemo_sk#2, c_current_addr_sk#3] +Arguments: coalesced + +(82) InputAdapter +Input [2]: [c_current_cdemo_sk#2, c_current_addr_sk#3] + +(83) NativeSort +Input [2]: [c_current_cdemo_sk#2, c_current_addr_sk#3] +Arguments: [c_current_addr_sk#3 ASC NULLS FIRST], false + +(167) Scan parquet +Output [2]: [ca_address_sk#15, ca_state#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(ca_state, [GA,KY,NM]), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(85) InputAdapter +Input [2]: [ca_address_sk#15, ca_state#16] +Arguments: [#15, #16] + +(86) NativeFilter +Input [2]: [#15#15, #16#16] +Condition : (ca_state#16 IN (KY,GA,NM) AND isnotnull(ca_address_sk#15)) + +(87) NativeProject +Output [1]: [ca_address_sk#15] +Input [2]: [#15#15, #16#16] + +(88) NativeShuffleExchange +Input [1]: [ca_address_sk#15] +Arguments: hashpartitioning(ca_address_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(89) ShuffleQueryStage +Output [1]: [ca_address_sk#15] +Arguments: X + +(90) AQEShuffleRead +Input [1]: [ca_address_sk#15] +Arguments: coalesced + +(91) InputAdapter +Input [1]: [ca_address_sk#15] + +(92) NativeSort +Input [1]: [ca_address_sk#15] +Arguments: [ca_address_sk#15 ASC NULLS FIRST], false + +(93) NativeSortMergeJoin +Left keys [1]: [c_current_addr_sk#3] +Right keys [1]: [ca_address_sk#15] +Join type: Inner +Join condition: None + +(94) NativeProject +Output [1]: [c_current_cdemo_sk#2] +Input [3]: [c_current_cdemo_sk#2, c_current_addr_sk#3, ca_address_sk#15] + +(95) NativeShuffleExchange +Input [1]: [c_current_cdemo_sk#2] +Arguments: hashpartitioning(c_current_cdemo_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(96) ShuffleQueryStage +Output [1]: [c_current_cdemo_sk#2] +Arguments: X + +(97) AQEShuffleRead +Input [1]: [c_current_cdemo_sk#2] +Arguments: coalesced + +(98) InputAdapter +Input [1]: [c_current_cdemo_sk#2] + +(99) NativeSort +Input [1]: [c_current_cdemo_sk#2] +Arguments: [c_current_cdemo_sk#2 ASC NULLS FIRST], false + +(176) Scan parquet +Output [6]: [cd_demo_sk#17, cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_demo_sk)] +ReadSchema: struct + +(101) InputAdapter +Input [6]: [cd_demo_sk#17, cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22] +Arguments: [#17, #18, #19, #20, #21, #22] + +(102) NativeFilter +Input [6]: [#17#17, #18#18, #19#19, #20#20, #21#21, #22#22] +Condition : isnotnull(cd_demo_sk#17) + +(103) NativeShuffleExchange +Input [6]: [#17#17, #18#18, #19#19, #20#20, #21#21, #22#22] +Arguments: hashpartitioning(cd_demo_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(104) ShuffleQueryStage +Output [6]: [#17#17, #18#18, #19#19, #20#20, #21#21, #22#22] +Arguments: X + +(105) AQEShuffleRead +Input [6]: [#17#17, #18#18, #19#19, #20#20, #21#21, #22#22] +Arguments: coalesced + +(106) InputAdapter +Input [6]: [#17#17, #18#18, #19#19, #20#20, #21#21, #22#22] + +(107) NativeSort +Input [6]: [#17#17, #18#18, #19#19, #20#20, #21#21, #22#22] +Arguments: [cd_demo_sk#17 ASC NULLS FIRST], false + +(108) NativeSortMergeJoin +Left keys [1]: [c_current_cdemo_sk#2] +Right keys [1]: [cd_demo_sk#17] +Join type: Inner +Join condition: None + +(109) NativeProject +Output [5]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22] +Input [7]: [c_current_cdemo_sk#2, #17#17, #18#18, #19#19, #20#20, #21#21, #22#22] + +(110) NativeHashAggregate +Input [5]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22] +Keys [5]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#23] +Results [6]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22, #24#24] + +(111) NativeShuffleExchange +Input [6]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22, #24#24] +Arguments: hashpartitioning(cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(112) ShuffleQueryStage +Output [6]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22, #24#24] +Arguments: X + +(113) AQEShuffleRead +Input [6]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22, #24#24] +Arguments: coalesced + +(114) InputAdapter +Input [6]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22, #24#24] + +(115) NativeHashAggregate +Input [6]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22, #24#24] +Keys [5]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#25] +Results [6]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22, count(1)#25] + +(116) NativeProject +Output [8]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, count(1)#25 AS cnt1#26, cd_purchase_estimate#21, count(1)#25 AS cnt2#27, cd_credit_rating#22, count(1)#25 AS cnt3#28] +Input [6]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22, count(1)#25] + +(117) NativeTakeOrdered +Input [8]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cnt1#26, cd_purchase_estimate#21, cnt2#27, cd_credit_rating#22, cnt3#28] +Arguments: X, [cd_gender#18 ASC NULLS FIRST, cd_marital_status#19 ASC NULLS FIRST, cd_education_status#20 ASC NULLS FIRST, cd_purchase_estimate#21 ASC NULLS FIRST, cd_credit_rating#22 ASC NULLS FIRST] + +(118) Scan parquet +Output [3]: [c_customer_sk#1, c_current_cdemo_sk#2, c_current_addr_sk#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_current_addr_sk), IsNotNull(c_current_cdemo_sk)] +ReadSchema: struct + +(119) Filter +Input [3]: [c_customer_sk#1, c_current_cdemo_sk#2, c_current_addr_sk#3] +Condition : (isnotnull(c_current_addr_sk#3) AND isnotnull(c_current_cdemo_sk#2)) + +(120) Exchange +Input [3]: [c_customer_sk#1, c_current_cdemo_sk#2, c_current_addr_sk#3] +Arguments: hashpartitioning(c_customer_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(121) Sort +Input [3]: [c_customer_sk#1, c_current_cdemo_sk#2, c_current_addr_sk#3] +Arguments: [c_customer_sk#1 ASC NULLS FIRST], false, 0 + +(122) Scan parquet +Output [2]: [ss_sold_date_sk#4, ss_customer_sk#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(123) Filter +Input [2]: [ss_sold_date_sk#4, ss_customer_sk#5] +Condition : isnotnull(ss_sold_date_sk#4) + +(124) Exchange +Input [2]: [ss_sold_date_sk#4, ss_customer_sk#5] +Arguments: hashpartitioning(ss_sold_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(125) Sort +Input [2]: [ss_sold_date_sk#4, ss_customer_sk#5] +Arguments: [ss_sold_date_sk#4 ASC NULLS FIRST], false, 0 + +(126) Scan parquet +Output [3]: [d_date_sk#6, d_year#7, d_moy#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), GreaterThanOrEqual(d_moy,4), LessThanOrEqual(d_moy,6), IsNotNull(d_date_sk)] +ReadSchema: struct + +(127) Filter +Input [3]: [d_date_sk#6, d_year#7, d_moy#8] +Condition : (((((isnotnull(d_year#7) AND isnotnull(d_moy#8)) AND (d_year#7 = 2001)) AND (d_moy#8 >= 4)) AND (d_moy#8 <= 6)) AND isnotnull(d_date_sk#6)) + +(128) Project +Output [1]: [d_date_sk#6] +Input [3]: [d_date_sk#6, d_year#7, d_moy#8] + +(129) Exchange +Input [1]: [d_date_sk#6] +Arguments: hashpartitioning(d_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(130) Sort +Input [1]: [d_date_sk#6] +Arguments: [d_date_sk#6 ASC NULLS FIRST], false, 0 + +(131) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#4] +Right keys [1]: [d_date_sk#6] +Join type: Inner +Join condition: None + +(132) Project +Output [1]: [ss_customer_sk#5] +Input [3]: [ss_sold_date_sk#4, ss_customer_sk#5, d_date_sk#6] + +(133) Exchange +Input [1]: [ss_customer_sk#5] +Arguments: hashpartitioning(ss_customer_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(134) Sort +Input [1]: [ss_customer_sk#5] +Arguments: [ss_customer_sk#5 ASC NULLS FIRST], false, 0 + +(135) SortMergeJoin +Left keys [1]: [c_customer_sk#1] +Right keys [1]: [ss_customer_sk#5] +Join type: LeftSemi +Join condition: None + +(136) Scan parquet +Output [2]: [ws_sold_date_sk#9, ws_bill_customer_sk#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(137) Filter +Input [2]: [ws_sold_date_sk#9, ws_bill_customer_sk#10] +Condition : isnotnull(ws_sold_date_sk#9) + +(138) Exchange +Input [2]: [ws_sold_date_sk#9, ws_bill_customer_sk#10] +Arguments: hashpartitioning(ws_sold_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(139) Sort +Input [2]: [ws_sold_date_sk#9, ws_bill_customer_sk#10] +Arguments: [ws_sold_date_sk#9 ASC NULLS FIRST], false, 0 + +(140) Scan parquet +Output [3]: [d_date_sk#11, d_year#29, d_moy#30] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), GreaterThanOrEqual(d_moy,4), LessThanOrEqual(d_moy,6), IsNotNull(d_date_sk)] +ReadSchema: struct + +(141) Filter +Input [3]: [d_date_sk#11, d_year#29, d_moy#30] +Condition : (((((isnotnull(d_year#29) AND isnotnull(d_moy#30)) AND (d_year#29 = 2001)) AND (d_moy#30 >= 4)) AND (d_moy#30 <= 6)) AND isnotnull(d_date_sk#11)) + +(142) Project +Output [1]: [d_date_sk#11] +Input [3]: [d_date_sk#11, d_year#29, d_moy#30] + +(143) Exchange +Input [1]: [d_date_sk#11] +Arguments: hashpartitioning(d_date_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(144) Sort +Input [1]: [d_date_sk#11] +Arguments: [d_date_sk#11 ASC NULLS FIRST], false, 0 + +(145) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#9] +Right keys [1]: [d_date_sk#11] +Join type: Inner +Join condition: None + +(146) Project +Output [1]: [ws_bill_customer_sk#10] +Input [3]: [ws_sold_date_sk#9, ws_bill_customer_sk#10, d_date_sk#11] + +(147) Exchange +Input [1]: [ws_bill_customer_sk#10] +Arguments: hashpartitioning(ws_bill_customer_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(148) Sort +Input [1]: [ws_bill_customer_sk#10] +Arguments: [ws_bill_customer_sk#10 ASC NULLS FIRST], false, 0 + +(149) SortMergeJoin +Left keys [1]: [c_customer_sk#1] +Right keys [1]: [ws_bill_customer_sk#10] +Join type: LeftAnti +Join condition: None + +(150) Scan parquet +Output [2]: [cs_sold_date_sk#12, cs_ship_customer_sk#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(151) Filter +Input [2]: [cs_sold_date_sk#12, cs_ship_customer_sk#13] +Condition : isnotnull(cs_sold_date_sk#12) + +(152) Exchange +Input [2]: [cs_sold_date_sk#12, cs_ship_customer_sk#13] +Arguments: hashpartitioning(cs_sold_date_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(153) Sort +Input [2]: [cs_sold_date_sk#12, cs_ship_customer_sk#13] +Arguments: [cs_sold_date_sk#12 ASC NULLS FIRST], false, 0 + +(154) Scan parquet +Output [3]: [d_date_sk#14, d_year#31, d_moy#32] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), GreaterThanOrEqual(d_moy,4), LessThanOrEqual(d_moy,6), IsNotNull(d_date_sk)] +ReadSchema: struct + +(155) Filter +Input [3]: [d_date_sk#14, d_year#31, d_moy#32] +Condition : (((((isnotnull(d_year#31) AND isnotnull(d_moy#32)) AND (d_year#31 = 2001)) AND (d_moy#32 >= 4)) AND (d_moy#32 <= 6)) AND isnotnull(d_date_sk#14)) + +(156) Project +Output [1]: [d_date_sk#14] +Input [3]: [d_date_sk#14, d_year#31, d_moy#32] + +(157) Exchange +Input [1]: [d_date_sk#14] +Arguments: hashpartitioning(d_date_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(158) Sort +Input [1]: [d_date_sk#14] +Arguments: [d_date_sk#14 ASC NULLS FIRST], false, 0 + +(159) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#12] +Right keys [1]: [d_date_sk#14] +Join type: Inner +Join condition: None + +(160) Project +Output [1]: [cs_ship_customer_sk#13] +Input [3]: [cs_sold_date_sk#12, cs_ship_customer_sk#13, d_date_sk#14] + +(161) Exchange +Input [1]: [cs_ship_customer_sk#13] +Arguments: hashpartitioning(cs_ship_customer_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(162) Sort +Input [1]: [cs_ship_customer_sk#13] +Arguments: [cs_ship_customer_sk#13 ASC NULLS FIRST], false, 0 + +(163) SortMergeJoin +Left keys [1]: [c_customer_sk#1] +Right keys [1]: [cs_ship_customer_sk#13] +Join type: LeftAnti +Join condition: None + +(164) Project +Output [2]: [c_current_cdemo_sk#2, c_current_addr_sk#3] +Input [3]: [c_customer_sk#1, c_current_cdemo_sk#2, c_current_addr_sk#3] + +(165) Exchange +Input [2]: [c_current_cdemo_sk#2, c_current_addr_sk#3] +Arguments: hashpartitioning(c_current_addr_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(166) Sort +Input [2]: [c_current_cdemo_sk#2, c_current_addr_sk#3] +Arguments: [c_current_addr_sk#3 ASC NULLS FIRST], false, 0 + +(167) Scan parquet +Output [2]: [ca_address_sk#15, ca_state#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(ca_state, [GA,KY,NM]), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(168) Filter +Input [2]: [ca_address_sk#15, ca_state#16] +Condition : (ca_state#16 IN (KY,GA,NM) AND isnotnull(ca_address_sk#15)) + +(169) Project +Output [1]: [ca_address_sk#15] +Input [2]: [ca_address_sk#15, ca_state#16] + +(170) Exchange +Input [1]: [ca_address_sk#15] +Arguments: hashpartitioning(ca_address_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(171) Sort +Input [1]: [ca_address_sk#15] +Arguments: [ca_address_sk#15 ASC NULLS FIRST], false, 0 + +(172) SortMergeJoin +Left keys [1]: [c_current_addr_sk#3] +Right keys [1]: [ca_address_sk#15] +Join type: Inner +Join condition: None + +(173) Project +Output [1]: [c_current_cdemo_sk#2] +Input [3]: [c_current_cdemo_sk#2, c_current_addr_sk#3, ca_address_sk#15] + +(174) Exchange +Input [1]: [c_current_cdemo_sk#2] +Arguments: hashpartitioning(c_current_cdemo_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(175) Sort +Input [1]: [c_current_cdemo_sk#2] +Arguments: [c_current_cdemo_sk#2 ASC NULLS FIRST], false, 0 + +(176) Scan parquet +Output [6]: [cd_demo_sk#17, cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_demo_sk)] +ReadSchema: struct + +(177) Filter +Input [6]: [cd_demo_sk#17, cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22] +Condition : isnotnull(cd_demo_sk#17) + +(178) Exchange +Input [6]: [cd_demo_sk#17, cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22] +Arguments: hashpartitioning(cd_demo_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(179) Sort +Input [6]: [cd_demo_sk#17, cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22] +Arguments: [cd_demo_sk#17 ASC NULLS FIRST], false, 0 + +(180) SortMergeJoin +Left keys [1]: [c_current_cdemo_sk#2] +Right keys [1]: [cd_demo_sk#17] +Join type: Inner +Join condition: None + +(181) Project +Output [5]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22] +Input [7]: [c_current_cdemo_sk#2, cd_demo_sk#17, cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22] + +(182) HashAggregate +Input [5]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22] +Keys [5]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#23] +Results [6]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22, count#33] + +(183) Exchange +Input [6]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22, count#33] +Arguments: hashpartitioning(cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(184) HashAggregate +Input [6]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22, count#33] +Keys [5]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cd_purchase_estimate#21, cd_credit_rating#22] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#25] +Results [8]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, count(1)#25 AS cnt1#26, cd_purchase_estimate#21, count(1)#25 AS cnt2#27, cd_credit_rating#22, count(1)#25 AS cnt3#28] + +(185) TakeOrderedAndProject +Input [8]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cnt1#26, cd_purchase_estimate#21, cnt2#27, cd_credit_rating#22, cnt3#28] +Arguments: X, [cd_gender#18 ASC NULLS FIRST, cd_marital_status#19 ASC NULLS FIRST, cd_education_status#20 ASC NULLS FIRST, cd_purchase_estimate#21 ASC NULLS FIRST, cd_credit_rating#22 ASC NULLS FIRST], [cd_gender#18, cd_marital_status#19, cd_education_status#20, cnt1#26, cd_purchase_estimate#21, cnt2#27, cd_credit_rating#22, cnt3#28] + +(186) AdaptiveSparkPlan +Output [8]: [cd_gender#18, cd_marital_status#19, cd_education_status#20, cnt1#26, cd_purchase_estimate#21, cnt2#27, cd_credit_rating#22, cnt3#28] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q7.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q7.txt new file mode 100644 index 000000000..80b9ba06a --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q7.txt @@ -0,0 +1,639 @@ +== Physical Plan == +AdaptiveSparkPlan (117) ++- == Final Plan == + NativeTakeOrdered (75) + +- NativeProject (74) + +- NativeHashAggregate (73) + +- InputAdapter (72) + +- AQEShuffleRead (71) + +- ShuffleQueryStage (70), Statistics(X) + +- NativeShuffleExchange (69) + +- NativeHashAggregate (68) + +- NativeProject (67) + +- NativeProject (66) + +- NativeSortMergeJoin Inner (65) + :- NativeSort (55) + : +- InputAdapter (54) + : +- AQEShuffleRead (53) + : +- ShuffleQueryStage (52), Statistics(X) + : +- NativeShuffleExchange (51) + : +- NativeProject (50) + : +- NativeSortMergeJoin Inner (49) + : :- NativeSort (40) + : : +- InputAdapter (39) + : : +- AQEShuffleRead (38) + : : +- ShuffleQueryStage (37), Statistics(X) + : : +- NativeShuffleExchange (36) + : : +- NativeProject (35) + : : +- NativeSortMergeJoin Inner (34) + : : :- 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 (33) + : : +- InputAdapter (32) + : : +- AQEShuffleRead (31) + : : +- ShuffleQueryStage (30), Statistics(X) + : : +- NativeShuffleExchange (29) + : : +- NativeProject (28) + : : +- NativeFilter (27) + : : +- InputAdapter (26) + : : +- NativeParquetScan (25) + : +- NativeSort (48) + : +- InputAdapter (47) + : +- AQEShuffleRead (46) + : +- ShuffleQueryStage (45), Statistics(X) + : +- NativeShuffleExchange (44) + : +- NativeFilter (43) + : +- InputAdapter (42) + : +- NativeParquetScan (41) + +- NativeSort (64) + +- InputAdapter (63) + +- AQEShuffleRead (62) + +- ShuffleQueryStage (61), Statistics(X) + +- NativeShuffleExchange (60) + +- NativeProject (59) + +- NativeFilter (58) + +- InputAdapter (57) + +- NativeParquetScan (56) ++- == Initial Plan == + TakeOrderedAndProject (116) + +- HashAggregate (115) + +- Exchange (114) + +- HashAggregate (113) + +- Project (112) + +- SortMergeJoin Inner (111) + :- Sort (105) + : +- Exchange (104) + : +- Project (103) + : +- SortMergeJoin Inner (102) + : :- Sort (97) + : : +- Exchange (96) + : : +- Project (95) + : : +- SortMergeJoin Inner (94) + : : :- Sort (88) + : : : +- Exchange (87) + : : : +- Project (86) + : : : +- SortMergeJoin Inner (85) + : : : :- Sort (79) + : : : : +- Exchange (78) + : : : : +- Filter (77) + : : : : +- Scan parquet (76) + : : : +- Sort (84) + : : : +- Exchange (83) + : : : +- Project (82) + : : : +- Filter (81) + : : : +- Scan parquet (80) + : : +- Sort (93) + : : +- Exchange (92) + : : +- Project (91) + : : +- Filter (90) + : : +- Scan parquet (89) + : +- Sort (101) + : +- Exchange (100) + : +- Filter (99) + : +- Scan parquet (98) + +- Sort (110) + +- Exchange (109) + +- Project (108) + +- Filter (107) + +- Scan parquet (106) + + +(76) Scan parquet +Output [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_cdemo_sk#3, ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_cdemo_sk), IsNotNull(ss_sold_date_sk), IsNotNull(ss_item_sk), IsNotNull(ss_promo_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_cdemo_sk#3, ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Arguments: [#1, #2, #3, #4, #5, #6, #7, #8] + +(3) NativeFilter +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Condition : (((isnotnull(ss_cdemo_sk#3) AND isnotnull(ss_sold_date_sk#1)) AND isnotnull(ss_item_sk#2)) AND isnotnull(ss_promo_sk#4)) + +(4) NativeShuffleExchange +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: hashpartitioning(ss_cdemo_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: X + +(6) AQEShuffleRead +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: coalesced + +(7) InputAdapter +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] + +(8) NativeSort +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: [ss_cdemo_sk#3 ASC NULLS FIRST], false + +(80) Scan parquet +Output [4]: [cd_demo_sk#9, cd_gender#10, cd_marital_status#11, cd_education_status#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_gender), IsNotNull(cd_marital_status), IsNotNull(cd_education_status), EqualTo(cd_gender,M), EqualTo(cd_marital_status,S), EqualTo(cd_education_status,College), IsNotNull(cd_demo_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [4]: [cd_demo_sk#9, cd_gender#10, cd_marital_status#11, cd_education_status#12] +Arguments: [#9, #10, #11, #12] + +(11) NativeFilter +Input [4]: [#9#9, #10#10, #11#11, #12#12] +Condition : ((((((isnotnull(cd_gender#10) AND isnotnull(cd_marital_status#11)) AND isnotnull(cd_education_status#12)) AND (cd_gender#10 = M)) AND (cd_marital_status#11 = S)) AND (cd_education_status#12 = College)) AND isnotnull(cd_demo_sk#9)) + +(12) NativeProject +Output [1]: [cd_demo_sk#9] +Input [4]: [#9#9, #10#10, #11#11, #12#12] + +(13) NativeShuffleExchange +Input [1]: [cd_demo_sk#9] +Arguments: hashpartitioning(cd_demo_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [1]: [cd_demo_sk#9] +Arguments: X + +(15) AQEShuffleRead +Input [1]: [cd_demo_sk#9] +Arguments: coalesced + +(16) InputAdapter +Input [1]: [cd_demo_sk#9] + +(17) NativeSort +Input [1]: [cd_demo_sk#9] +Arguments: [cd_demo_sk#9 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [ss_cdemo_sk#3] +Right keys [1]: [cd_demo_sk#9] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Input [9]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, cd_demo_sk#9] + +(20) NativeShuffleExchange +Input [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Arguments: X + +(22) AQEShuffleRead +Input [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Arguments: coalesced + +(23) InputAdapter +Input [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] + +(24) NativeSort +Input [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(89) Scan parquet +Output [2]: [d_date_sk#13, d_year#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [2]: [d_date_sk#13, d_year#14] +Arguments: [#13, #14] + +(27) NativeFilter +Input [2]: [#13#13, #14#14] +Condition : ((isnotnull(d_year#14) AND (d_year#14 = 2000)) AND isnotnull(d_date_sk#13)) + +(28) NativeProject +Output [1]: [d_date_sk#13] +Input [2]: [#13#13, #14#14] + +(29) NativeShuffleExchange +Input [1]: [d_date_sk#13] +Arguments: hashpartitioning(d_date_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(30) ShuffleQueryStage +Output [1]: [d_date_sk#13] +Arguments: X + +(31) AQEShuffleRead +Input [1]: [d_date_sk#13] +Arguments: coalesced + +(32) InputAdapter +Input [1]: [d_date_sk#13] + +(33) NativeSort +Input [1]: [d_date_sk#13] +Arguments: [d_date_sk#13 ASC NULLS FIRST], false + +(34) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#13] +Join type: Inner +Join condition: None + +(35) NativeProject +Output [6]: [ss_item_sk#2, ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, d_date_sk#13] + +(36) NativeShuffleExchange +Input [6]: [ss_item_sk#2, ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [6]: [ss_item_sk#2, ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Arguments: X + +(38) AQEShuffleRead +Input [6]: [ss_item_sk#2, ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Arguments: coalesced + +(39) InputAdapter +Input [6]: [ss_item_sk#2, ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] + +(40) NativeSort +Input [6]: [ss_item_sk#2, ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false + +(98) Scan parquet +Output [2]: [i_item_sk#15, i_item_id#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(42) InputAdapter +Input [2]: [i_item_sk#15, i_item_id#16] +Arguments: [#15, #16] + +(43) NativeFilter +Input [2]: [#15#15, #16#16] +Condition : isnotnull(i_item_sk#15) + +(44) NativeShuffleExchange +Input [2]: [#15#15, #16#16] +Arguments: hashpartitioning(i_item_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(45) ShuffleQueryStage +Output [2]: [#15#15, #16#16] +Arguments: X + +(46) AQEShuffleRead +Input [2]: [#15#15, #16#16] +Arguments: coalesced + +(47) InputAdapter +Input [2]: [#15#15, #16#16] + +(48) NativeSort +Input [2]: [#15#15, #16#16] +Arguments: [i_item_sk#15 ASC NULLS FIRST], false + +(49) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#15] +Join type: Inner +Join condition: None + +(50) NativeProject +Output [6]: [ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, i_item_id#16] +Input [8]: [ss_item_sk#2, ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, #15#15, #16#16] + +(51) NativeShuffleExchange +Input [6]: [ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, i_item_id#16] +Arguments: hashpartitioning(ss_promo_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(52) ShuffleQueryStage +Output [6]: [ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, i_item_id#16] +Arguments: X + +(53) AQEShuffleRead +Input [6]: [ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, i_item_id#16] +Arguments: coalesced + +(54) InputAdapter +Input [6]: [ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, i_item_id#16] + +(55) NativeSort +Input [6]: [ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, i_item_id#16] +Arguments: [ss_promo_sk#4 ASC NULLS FIRST], false + +(106) Scan parquet +Output [3]: [p_promo_sk#17, p_channel_email#18, p_channel_event#19] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(EqualTo(p_channel_email,N),EqualTo(p_channel_event,N)), IsNotNull(p_promo_sk)] +ReadSchema: struct + +(57) InputAdapter +Input [3]: [p_promo_sk#17, p_channel_email#18, p_channel_event#19] +Arguments: [#17, #18, #19] + +(58) NativeFilter +Input [3]: [#17#17, #18#18, #19#19] +Condition : (((p_channel_email#18 = N) OR (p_channel_event#19 = N)) AND isnotnull(p_promo_sk#17)) + +(59) NativeProject +Output [1]: [p_promo_sk#17] +Input [3]: [#17#17, #18#18, #19#19] + +(60) NativeShuffleExchange +Input [1]: [p_promo_sk#17] +Arguments: hashpartitioning(p_promo_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(61) ShuffleQueryStage +Output [1]: [p_promo_sk#17] +Arguments: X + +(62) AQEShuffleRead +Input [1]: [p_promo_sk#17] +Arguments: coalesced + +(63) InputAdapter +Input [1]: [p_promo_sk#17] + +(64) NativeSort +Input [1]: [p_promo_sk#17] +Arguments: [p_promo_sk#17 ASC NULLS FIRST], false + +(65) NativeSortMergeJoin +Left keys [1]: [ss_promo_sk#4] +Right keys [1]: [p_promo_sk#17] +Join type: Inner +Join condition: None + +(66) NativeProject +Output [5]: [ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, i_item_id#16] +Input [7]: [ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, i_item_id#16, p_promo_sk#17] + +(67) NativeProject +Output [5]: [i_item_id#16 AS i_item_id#16, ss_quantity#5 AS _c1#20, UnscaledValue(ss_list_price#6) AS _c2#21, UnscaledValue(ss_coupon_amt#8) AS _c3#22, UnscaledValue(ss_sales_price#7) AS _c4#23] +Input [5]: [ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, i_item_id#16] + +(68) NativeHashAggregate +Input [5]: [i_item_id#16, _c1#20, _c2#21, _c3#22, _c4#23] +Keys [1]: [i_item_id#16] +Functions [4]: [partial_avg(_c1#20), partial_avg(_c2#21), partial_avg(_c3#22), partial_avg(_c4#23)] +Aggregate Attributes [8]: [sum#24, count#25, sum#26, count#27, sum#28, count#29, sum#30, count#31] +Results [2]: [i_item_id#16, #32#32] + +(69) NativeShuffleExchange +Input [2]: [i_item_id#16, #32#32] +Arguments: hashpartitioning(i_item_id#16, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(70) ShuffleQueryStage +Output [2]: [i_item_id#16, #32#32] +Arguments: X + +(71) AQEShuffleRead +Input [2]: [i_item_id#16, #32#32] +Arguments: coalesced + +(72) InputAdapter +Input [2]: [i_item_id#16, #32#32] + +(73) NativeHashAggregate +Input [2]: [i_item_id#16, #32#32] +Keys [1]: [i_item_id#16] +Functions [4]: [avg(ss_quantity#5), avg(UnscaledValue(ss_list_price#6)), avg(UnscaledValue(ss_coupon_amt#8)), avg(UnscaledValue(ss_sales_price#7))] +Aggregate Attributes [4]: [avg(ss_quantity#5)#33, avg(UnscaledValue(ss_list_price#6))#34, avg(UnscaledValue(ss_coupon_amt#8))#35, avg(UnscaledValue(ss_sales_price#7))#36] +Results [5]: [i_item_id#16, avg(ss_quantity#5)#33, avg(UnscaledValue(ss_list_price#6))#34, avg(UnscaledValue(ss_coupon_amt#8))#35, avg(UnscaledValue(ss_sales_price#7))#36] + +(74) NativeProject +Output [5]: [i_item_id#16, avg(ss_quantity#5)#33 AS agg1#37, cast((avg(UnscaledValue(ss_list_price#6))#34 / 100.0) as decimal(11,6)) AS agg2#38, cast((avg(UnscaledValue(ss_coupon_amt#8))#35 / 100.0) as decimal(11,6)) AS agg3#39, cast((avg(UnscaledValue(ss_sales_price#7))#36 / 100.0) as decimal(11,6)) AS agg4#40] +Input [5]: [i_item_id#16, avg(ss_quantity#5)#33, avg(UnscaledValue(ss_list_price#6))#34, avg(UnscaledValue(ss_coupon_amt#8))#35, avg(UnscaledValue(ss_sales_price#7))#36] + +(75) NativeTakeOrdered +Input [5]: [i_item_id#16, agg1#37, agg2#38, agg3#39, agg4#40] +Arguments: X, [i_item_id#16 ASC NULLS FIRST] + +(76) Scan parquet +Output [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_cdemo_sk#3, ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_cdemo_sk), IsNotNull(ss_sold_date_sk), IsNotNull(ss_item_sk), IsNotNull(ss_promo_sk)] +ReadSchema: struct + +(77) Filter +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_cdemo_sk#3, ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Condition : (((isnotnull(ss_cdemo_sk#3) AND isnotnull(ss_sold_date_sk#1)) AND isnotnull(ss_item_sk#2)) AND isnotnull(ss_promo_sk#4)) + +(78) Exchange +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_cdemo_sk#3, ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Arguments: hashpartitioning(ss_cdemo_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(79) Sort +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_cdemo_sk#3, ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Arguments: [ss_cdemo_sk#3 ASC NULLS FIRST], false, 0 + +(80) Scan parquet +Output [4]: [cd_demo_sk#9, cd_gender#10, cd_marital_status#11, cd_education_status#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_gender), IsNotNull(cd_marital_status), IsNotNull(cd_education_status), EqualTo(cd_gender,M), EqualTo(cd_marital_status,S), EqualTo(cd_education_status,College), IsNotNull(cd_demo_sk)] +ReadSchema: struct + +(81) Filter +Input [4]: [cd_demo_sk#9, cd_gender#10, cd_marital_status#11, cd_education_status#12] +Condition : ((((((isnotnull(cd_gender#10) AND isnotnull(cd_marital_status#11)) AND isnotnull(cd_education_status#12)) AND (cd_gender#10 = M)) AND (cd_marital_status#11 = S)) AND (cd_education_status#12 = College)) AND isnotnull(cd_demo_sk#9)) + +(82) Project +Output [1]: [cd_demo_sk#9] +Input [4]: [cd_demo_sk#9, cd_gender#10, cd_marital_status#11, cd_education_status#12] + +(83) Exchange +Input [1]: [cd_demo_sk#9] +Arguments: hashpartitioning(cd_demo_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(84) Sort +Input [1]: [cd_demo_sk#9] +Arguments: [cd_demo_sk#9 ASC NULLS FIRST], false, 0 + +(85) SortMergeJoin +Left keys [1]: [ss_cdemo_sk#3] +Right keys [1]: [cd_demo_sk#9] +Join type: Inner +Join condition: None + +(86) Project +Output [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Input [9]: [ss_sold_date_sk#1, ss_item_sk#2, ss_cdemo_sk#3, ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, cd_demo_sk#9] + +(87) Exchange +Input [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(88) Sort +Input [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(89) Scan parquet +Output [2]: [d_date_sk#13, d_year#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(90) Filter +Input [2]: [d_date_sk#13, d_year#14] +Condition : ((isnotnull(d_year#14) AND (d_year#14 = 2000)) AND isnotnull(d_date_sk#13)) + +(91) Project +Output [1]: [d_date_sk#13] +Input [2]: [d_date_sk#13, d_year#14] + +(92) Exchange +Input [1]: [d_date_sk#13] +Arguments: hashpartitioning(d_date_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(93) Sort +Input [1]: [d_date_sk#13] +Arguments: [d_date_sk#13 ASC NULLS FIRST], false, 0 + +(94) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#13] +Join type: Inner +Join condition: None + +(95) Project +Output [6]: [ss_item_sk#2, ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, d_date_sk#13] + +(96) Exchange +Input [6]: [ss_item_sk#2, ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(97) Sort +Input [6]: [ss_item_sk#2, ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false, 0 + +(98) Scan parquet +Output [2]: [i_item_sk#15, i_item_id#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(99) Filter +Input [2]: [i_item_sk#15, i_item_id#16] +Condition : isnotnull(i_item_sk#15) + +(100) Exchange +Input [2]: [i_item_sk#15, i_item_id#16] +Arguments: hashpartitioning(i_item_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(101) Sort +Input [2]: [i_item_sk#15, i_item_id#16] +Arguments: [i_item_sk#15 ASC NULLS FIRST], false, 0 + +(102) SortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#15] +Join type: Inner +Join condition: None + +(103) Project +Output [6]: [ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, i_item_id#16] +Input [8]: [ss_item_sk#2, ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, i_item_sk#15, i_item_id#16] + +(104) Exchange +Input [6]: [ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, i_item_id#16] +Arguments: hashpartitioning(ss_promo_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(105) Sort +Input [6]: [ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, i_item_id#16] +Arguments: [ss_promo_sk#4 ASC NULLS FIRST], false, 0 + +(106) Scan parquet +Output [3]: [p_promo_sk#17, p_channel_email#18, p_channel_event#19] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(EqualTo(p_channel_email,N),EqualTo(p_channel_event,N)), IsNotNull(p_promo_sk)] +ReadSchema: struct + +(107) Filter +Input [3]: [p_promo_sk#17, p_channel_email#18, p_channel_event#19] +Condition : (((p_channel_email#18 = N) OR (p_channel_event#19 = N)) AND isnotnull(p_promo_sk#17)) + +(108) Project +Output [1]: [p_promo_sk#17] +Input [3]: [p_promo_sk#17, p_channel_email#18, p_channel_event#19] + +(109) Exchange +Input [1]: [p_promo_sk#17] +Arguments: hashpartitioning(p_promo_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(110) Sort +Input [1]: [p_promo_sk#17] +Arguments: [p_promo_sk#17 ASC NULLS FIRST], false, 0 + +(111) SortMergeJoin +Left keys [1]: [ss_promo_sk#4] +Right keys [1]: [p_promo_sk#17] +Join type: Inner +Join condition: None + +(112) Project +Output [5]: [ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, i_item_id#16] +Input [7]: [ss_promo_sk#4, ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, i_item_id#16, p_promo_sk#17] + +(113) HashAggregate +Input [5]: [ss_quantity#5, ss_list_price#6, ss_sales_price#7, ss_coupon_amt#8, i_item_id#16] +Keys [1]: [i_item_id#16] +Functions [4]: [partial_avg(ss_quantity#5), partial_avg(UnscaledValue(ss_list_price#6)), partial_avg(UnscaledValue(ss_coupon_amt#8)), partial_avg(UnscaledValue(ss_sales_price#7))] +Aggregate Attributes [8]: [sum#24, count#25, sum#26, count#27, sum#28, count#29, sum#30, count#31] +Results [9]: [i_item_id#16, sum#41, count#42, sum#43, count#44, sum#45, count#46, sum#47, count#48] + +(114) Exchange +Input [9]: [i_item_id#16, sum#41, count#42, sum#43, count#44, sum#45, count#46, sum#47, count#48] +Arguments: hashpartitioning(i_item_id#16, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(115) HashAggregate +Input [9]: [i_item_id#16, sum#41, count#42, sum#43, count#44, sum#45, count#46, sum#47, count#48] +Keys [1]: [i_item_id#16] +Functions [4]: [avg(ss_quantity#5), avg(UnscaledValue(ss_list_price#6)), avg(UnscaledValue(ss_coupon_amt#8)), avg(UnscaledValue(ss_sales_price#7))] +Aggregate Attributes [4]: [avg(ss_quantity#5)#33, avg(UnscaledValue(ss_list_price#6))#34, avg(UnscaledValue(ss_coupon_amt#8))#35, avg(UnscaledValue(ss_sales_price#7))#36] +Results [5]: [i_item_id#16, avg(ss_quantity#5)#33 AS agg1#37, cast((avg(UnscaledValue(ss_list_price#6))#34 / 100.0) as decimal(11,6)) AS agg2#38, cast((avg(UnscaledValue(ss_coupon_amt#8))#35 / 100.0) as decimal(11,6)) AS agg3#39, cast((avg(UnscaledValue(ss_sales_price#7))#36 / 100.0) as decimal(11,6)) AS agg4#40] + +(116) TakeOrderedAndProject +Input [5]: [i_item_id#16, agg1#37, agg2#38, agg3#39, agg4#40] +Arguments: X, [i_item_id#16 ASC NULLS FIRST], [i_item_id#16, agg1#37, agg2#38, agg3#39, agg4#40] + +(117) AdaptiveSparkPlan +Output [5]: [i_item_id#16, agg1#37, agg2#38, agg3#39, agg4#40] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q70.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q70.txt new file mode 100644 index 000000000..4bd76bfbd --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q70.txt @@ -0,0 +1,869 @@ +== Physical Plan == +AdaptiveSparkPlan (160) ++- == Final Plan == + NativeTakeOrdered (101) + +- NativeProject (100) + +- NativeWindow (99) + +- NativeSort (98) + +- InputAdapter (97) + +- AQEShuffleRead (96) + +- ShuffleQueryStage (95), Statistics(X) + +- NativeShuffleExchange (94) + +- NativeProject (93) + +- NativeHashAggregate (92) + +- InputAdapter (91) + +- AQEShuffleRead (90) + +- ShuffleQueryStage (89), Statistics(X) + +- NativeShuffleExchange (88) + +- NativeHashAggregate (87) + +- NativeProject (86) + +- NativeExpand (85) + +- NativeProject (84) + +- NativeSortMergeJoin Inner (83) + :- 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 (82) + +- InputAdapter (81) + +- AQEShuffleRead (80) + +- ShuffleQueryStage (79), Statistics(X) + +- NativeShuffleExchange (78) + +- NativeSortMergeJoin LeftSemi (77) + :- NativeSort (32) + : +- InputAdapter (31) + : +- AQEShuffleRead (30) + : +- ShuffleQueryStage (29), Statistics(X) + : +- NativeShuffleExchange (28) + : +- NativeFilter (27) + : +- InputAdapter (26) + : +- NativeParquetScan (25) + +- NativeProject (76) + +- NativeFilter (75) + +- NativeWindow (74) + +- NativeWindowGroupLimit (73) + +- NativeSort (72) + +- NativeProject (71) + +- NativeHashAggregate (70) + +- InputAdapter (69) + +- AQEShuffleRead (68) + +- ShuffleQueryStage (67), Statistics(X) + +- NativeShuffleExchange (66) + +- NativeHashAggregate (65) + +- NativeProject (64) + +- NativeProject (63) + +- NativeSortMergeJoin Inner (62) + :- NativeSort (55) + : +- InputAdapter (54) + : +- AQEShuffleRead (53) + : +- ShuffleQueryStage (52), Statistics(X) + : +- NativeShuffleExchange (51) + : +- NativeProject (50) + : +- NativeSortMergeJoin Inner (49) + : :- NativeSort (40) + : : +- InputAdapter (39) + : : +- AQEShuffleRead (38) + : : +- ShuffleQueryStage (37), Statistics(X) + : : +- NativeShuffleExchange (36) + : : +- NativeFilter (35) + : : +- InputAdapter (34) + : : +- NativeParquetScan (33) + : +- NativeSort (48) + : +- InputAdapter (47) + : +- AQEShuffleRead (46) + : +- ShuffleQueryStage (45), Statistics(X) + : +- NativeShuffleExchange (44) + : +- NativeFilter (43) + : +- InputAdapter (42) + : +- NativeParquetScan (41) + +- NativeSort (61) + +- InputAdapter (60) + +- InputAdapter (59) + +- AQEShuffleRead (58) + +- ShuffleQueryStage (57), Statistics(X) + +- ReusedExchange (56) ++- == Initial Plan == + TakeOrderedAndProject (159) + +- Project (158) + +- Window (157) + +- Sort (156) + +- Exchange (155) + +- HashAggregate (154) + +- Exchange (153) + +- HashAggregate (152) + +- Expand (151) + +- Project (150) + +- SortMergeJoin Inner (149) + :- Sort (114) + : +- Exchange (113) + : +- Project (112) + : +- SortMergeJoin Inner (111) + : :- Sort (105) + : : +- Exchange (104) + : : +- Filter (103) + : : +- Scan parquet (102) + : +- Sort (110) + : +- Exchange (109) + : +- Project (108) + : +- Filter (107) + : +- Scan parquet (106) + +- Sort (148) + +- Exchange (147) + +- SortMergeJoin LeftSemi (146) + :- Sort (118) + : +- Exchange (117) + : +- Filter (116) + : +- Scan parquet (115) + +- Project (145) + +- Filter (144) + +- Window (143) + +- WindowGroupLimit (142) + +- Sort (141) + +- HashAggregate (140) + +- Exchange (139) + +- HashAggregate (138) + +- Project (137) + +- SortMergeJoin Inner (136) + :- Sort (130) + : +- Exchange (129) + : +- Project (128) + : +- SortMergeJoin Inner (127) + : :- Sort (122) + : : +- Exchange (121) + : : +- Filter (120) + : : +- Scan parquet (119) + : +- Sort (126) + : +- Exchange (125) + : +- Filter (124) + : +- Scan parquet (123) + +- Sort (135) + +- Exchange (134) + +- Project (133) + +- Filter (132) + +- Scan parquet (131) + + +(102) Scan parquet +Output [3]: [ss_sold_date_sk#1, ss_store_sk#2, ss_net_profit#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [ss_sold_date_sk#1, ss_store_sk#2, ss_net_profit#3] +Arguments: [#1, #2, #3] + +(3) NativeFilter +Input [3]: [#1#1, #2#2, #3#3] +Condition : (isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_store_sk#2)) + +(4) NativeShuffleExchange +Input [3]: [#1#1, #2#2, #3#3] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [3]: [#1#1, #2#2, #3#3] +Arguments: X + +(6) AQEShuffleRead +Input [3]: [#1#1, #2#2, #3#3] +Arguments: coalesced + +(7) InputAdapter +Input [3]: [#1#1, #2#2, #3#3] + +(8) NativeSort +Input [3]: [#1#1, #2#2, #3#3] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(106) Scan parquet +Output [2]: [d_date_sk#4, d_month_seq#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [d_date_sk#4, d_month_seq#5] +Arguments: [#4, #5] + +(11) NativeFilter +Input [2]: [#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#4)) + +(12) NativeProject +Output [1]: [d_date_sk#4] +Input [2]: [#4#4, #5#5] + +(13) NativeShuffleExchange +Input [1]: [d_date_sk#4] +Arguments: hashpartitioning(d_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [1]: [d_date_sk#4] +Arguments: X + +(15) AQEShuffleRead +Input [1]: [d_date_sk#4] +Arguments: coalesced + +(16) InputAdapter +Input [1]: [d_date_sk#4] + +(17) NativeSort +Input [1]: [d_date_sk#4] +Arguments: [d_date_sk#4 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#4] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [2]: [ss_store_sk#2, ss_net_profit#3] +Input [4]: [#1#1, #2#2, #3#3, d_date_sk#4] + +(20) NativeShuffleExchange +Input [2]: [ss_store_sk#2, ss_net_profit#3] +Arguments: hashpartitioning(ss_store_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [2]: [ss_store_sk#2, ss_net_profit#3] +Arguments: X + +(22) AQEShuffleRead +Input [2]: [ss_store_sk#2, ss_net_profit#3] +Arguments: coalesced + +(23) InputAdapter +Input [2]: [ss_store_sk#2, ss_net_profit#3] + +(24) NativeSort +Input [2]: [ss_store_sk#2, ss_net_profit#3] +Arguments: [ss_store_sk#2 ASC NULLS FIRST], false + +(115) Scan parquet +Output [3]: [s_store_sk#6, s_county#7, s_state#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [3]: [s_store_sk#6, s_county#7, s_state#8] +Arguments: [#6, #7, #8] + +(27) NativeFilter +Input [3]: [#6#6, #7#7, #8#8] +Condition : isnotnull(s_store_sk#6) + +(28) NativeShuffleExchange +Input [3]: [#6#6, #7#7, #8#8] +Arguments: hashpartitioning(s_state#8, 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: [s_state#8 ASC NULLS FIRST], false + +(119) Scan parquet +Output [3]: [ss_sold_date_sk#9, ss_store_sk#10, ss_net_profit#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_store_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(34) InputAdapter +Input [3]: [ss_sold_date_sk#9, ss_store_sk#10, ss_net_profit#11] +Arguments: [#9, #10, #11] + +(35) NativeFilter +Input [3]: [#9#9, #10#10, #11#11] +Condition : (isnotnull(ss_store_sk#10) AND isnotnull(ss_sold_date_sk#9)) + +(36) NativeShuffleExchange +Input [3]: [#9#9, #10#10, #11#11] +Arguments: hashpartitioning(ss_store_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [3]: [#9#9, #10#10, #11#11] +Arguments: X + +(38) AQEShuffleRead +Input [3]: [#9#9, #10#10, #11#11] +Arguments: coalesced + +(39) InputAdapter +Input [3]: [#9#9, #10#10, #11#11] + +(40) NativeSort +Input [3]: [#9#9, #10#10, #11#11] +Arguments: [ss_store_sk#10 ASC NULLS FIRST], false + +(123) Scan parquet +Output [2]: [s_store_sk#12, s_state#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(42) InputAdapter +Input [2]: [s_store_sk#12, s_state#13] +Arguments: [#12, #13] + +(43) NativeFilter +Input [2]: [#12#12, #13#13] +Condition : isnotnull(s_store_sk#12) + +(44) NativeShuffleExchange +Input [2]: [#12#12, #13#13] +Arguments: hashpartitioning(s_store_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(45) ShuffleQueryStage +Output [2]: [#12#12, #13#13] +Arguments: X + +(46) AQEShuffleRead +Input [2]: [#12#12, #13#13] +Arguments: coalesced + +(47) InputAdapter +Input [2]: [#12#12, #13#13] + +(48) NativeSort +Input [2]: [#12#12, #13#13] +Arguments: [s_store_sk#12 ASC NULLS FIRST], false + +(49) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#10] +Right keys [1]: [s_store_sk#12] +Join type: Inner +Join condition: None + +(50) NativeProject +Output [3]: [ss_sold_date_sk#9, ss_net_profit#11, s_state#13] +Input [5]: [#9#9, #10#10, #11#11, #12#12, #13#13] + +(51) NativeShuffleExchange +Input [3]: [ss_sold_date_sk#9, ss_net_profit#11, s_state#13] +Arguments: hashpartitioning(ss_sold_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(52) ShuffleQueryStage +Output [3]: [ss_sold_date_sk#9, ss_net_profit#11, s_state#13] +Arguments: X + +(53) AQEShuffleRead +Input [3]: [ss_sold_date_sk#9, ss_net_profit#11, s_state#13] +Arguments: coalesced + +(54) InputAdapter +Input [3]: [ss_sold_date_sk#9, ss_net_profit#11, s_state#13] + +(55) NativeSort +Input [3]: [ss_sold_date_sk#9, ss_net_profit#11, s_state#13] +Arguments: [ss_sold_date_sk#9 ASC NULLS FIRST], false + +(56) ReusedExchange [Reuses operator id: 13] +Output [1]: [d_date_sk#14] + +(57) ShuffleQueryStage +Output [1]: [d_date_sk#14] +Arguments: X + +(58) AQEShuffleRead +Input [1]: [d_date_sk#14] +Arguments: coalesced + +(59) InputAdapter +Input [1]: [d_date_sk#14] +Arguments: [#14] + +(60) InputAdapter +Input [1]: [#14#14] + +(61) NativeSort +Input [1]: [#14#14] +Arguments: [d_date_sk#14 ASC NULLS FIRST], false + +(62) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#9] +Right keys [1]: [d_date_sk#14] +Join type: Inner +Join condition: None + +(63) NativeProject +Output [2]: [ss_net_profit#11, s_state#13] +Input [4]: [ss_sold_date_sk#9, ss_net_profit#11, s_state#13, #14#14] + +(64) NativeProject +Output [2]: [s_state#13 AS s_state#13, UnscaledValue(ss_net_profit#11) AS _c1#15] +Input [2]: [ss_net_profit#11, s_state#13] + +(65) NativeHashAggregate +Input [2]: [s_state#13, _c1#15] +Keys [1]: [s_state#13] +Functions [1]: [partial_sum(_c1#15)] +Aggregate Attributes [1]: [sum#16] +Results [2]: [s_state#13, #17#17] + +(66) NativeShuffleExchange +Input [2]: [s_state#13, #17#17] +Arguments: hashpartitioning(s_state#13, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(67) ShuffleQueryStage +Output [2]: [s_state#13, #17#17] +Arguments: X + +(68) AQEShuffleRead +Input [2]: [s_state#13, #17#17] +Arguments: coalesced + +(69) InputAdapter +Input [2]: [s_state#13, #17#17] + +(70) NativeHashAggregate +Input [2]: [s_state#13, #17#17] +Keys [1]: [s_state#13] +Functions [1]: [sum(UnscaledValue(ss_net_profit#11))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_net_profit#11))#18] +Results [2]: [s_state#13, sum(UnscaledValue(ss_net_profit#11))#18] + +(71) NativeProject +Output [3]: [s_state#13, s_state#13, MakeDecimal(sum(UnscaledValue(ss_net_profit#11))#18,17,2) AS _w1#19] +Input [2]: [s_state#13, sum(UnscaledValue(ss_net_profit#11))#18] + +(72) NativeSort +Input [3]: [s_state#13, s_state#13, _w1#19] +Arguments: [s_state#13 ASC NULLS FIRST, _w1#19 DESC NULLS LAST], false + +(73) NativeWindowGroupLimit +Input [3]: [s_state#13, s_state#13, _w1#19] +Arguments: [rank(_w1#19) windowspecdefinition(s_state#13, _w1#19 DESC NULLS LAST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS __window_expression__#20], [s_state#13], [_w1#19 DESC NULLS LAST], 5 + +(74) NativeWindow +Input [3]: [s_state#13, s_state#13, _w1#19] +Arguments: [rank(_w1#19) windowspecdefinition(s_state#13, _w1#19 DESC NULLS LAST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS ranking#21], [s_state#13], [_w1#19 DESC NULLS LAST] + +(75) NativeFilter +Input [4]: [s_state#13, s_state#13, _w1#19, ranking#21] +Condition : (ranking#21 <= 5) + +(76) NativeProject +Output [1]: [s_state#13] +Input [4]: [s_state#13, s_state#13, _w1#19, ranking#21] + +(77) NativeSortMergeJoin +Left keys [1]: [s_state#8] +Right keys [1]: [s_state#13] +Join type: LeftSemi +Join condition: None + +(78) NativeShuffleExchange +Input [3]: [#6#6, #7#7, #8#8] +Arguments: hashpartitioning(s_store_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(79) ShuffleQueryStage +Output [3]: [#6#6, #7#7, #8#8] +Arguments: X + +(80) AQEShuffleRead +Input [3]: [#6#6, #7#7, #8#8] +Arguments: coalesced + +(81) InputAdapter +Input [3]: [#6#6, #7#7, #8#8] + +(82) NativeSort +Input [3]: [#6#6, #7#7, #8#8] +Arguments: [s_store_sk#6 ASC NULLS FIRST], false + +(83) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#2] +Right keys [1]: [s_store_sk#6] +Join type: Inner +Join condition: None + +(84) NativeProject +Output [3]: [ss_net_profit#3, s_state#8, s_county#7] +Input [5]: [ss_store_sk#2, ss_net_profit#3, #6#6, #7#7, #8#8] + +(85) NativeExpand +Input [3]: [ss_net_profit#3, s_state#8, s_county#7] +Arguments: [[ss_net_profit#3, s_state#8, s_county#7, 0], [ss_net_profit#3, s_state#8, null, 1], [ss_net_profit#3, null, null, 3]], [ss_net_profit#3, s_state#22, s_county#23, spark_grouping_id#24] + +(86) NativeProject +Output [4]: [s_state#22 AS s_state#22, s_county#23 AS s_county#23, spark_grouping_id#24 AS spark_grouping_id#24, UnscaledValue(ss_net_profit#3) AS _c3#25] +Input [4]: [ss_net_profit#3, s_state#22, s_county#23, spark_grouping_id#24] + +(87) NativeHashAggregate +Input [4]: [s_state#22, s_county#23, spark_grouping_id#24, _c3#25] +Keys [3]: [s_state#22, s_county#23, spark_grouping_id#24] +Functions [1]: [partial_sum(_c3#25)] +Aggregate Attributes [1]: [sum#26] +Results [4]: [s_state#22, s_county#23, spark_grouping_id#24, #17#17] + +(88) NativeShuffleExchange +Input [4]: [s_state#22, s_county#23, spark_grouping_id#24, #17#17] +Arguments: hashpartitioning(s_state#22, s_county#23, spark_grouping_id#24, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(89) ShuffleQueryStage +Output [4]: [s_state#22, s_county#23, spark_grouping_id#24, #17#17] +Arguments: X + +(90) AQEShuffleRead +Input [4]: [s_state#22, s_county#23, spark_grouping_id#24, #17#17] +Arguments: coalesced + +(91) InputAdapter +Input [4]: [s_state#22, s_county#23, spark_grouping_id#24, #17#17] + +(92) NativeHashAggregate +Input [4]: [s_state#22, s_county#23, spark_grouping_id#24, #17#17] +Keys [3]: [s_state#22, s_county#23, spark_grouping_id#24] +Functions [1]: [sum(UnscaledValue(ss_net_profit#3))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_net_profit#3))#27] +Results [4]: [s_state#22, s_county#23, spark_grouping_id#24, sum(UnscaledValue(ss_net_profit#3))#27] + +(93) NativeProject +Output [7]: [MakeDecimal(sum(UnscaledValue(ss_net_profit#3))#27,17,2) AS total_sum#28, s_state#22, s_county#23, (cast((shiftright(spark_grouping_id#24, 1) & 1) as tinyint) + cast((shiftright(spark_grouping_id#24, 0) & 1) as tinyint)) AS lochierarchy#29, MakeDecimal(sum(UnscaledValue(ss_net_profit#3))#27,17,2) AS _w0#30, (cast((shiftright(spark_grouping_id#24, 1) & 1) as tinyint) + cast((shiftright(spark_grouping_id#24, 0) & 1) as tinyint)) AS _w1#31, CASE WHEN (cast((shiftright(spark_grouping_id#24, 0) & 1) as tinyint) = 0) THEN s_state#22 END AS _w2#32] +Input [4]: [s_state#22, s_county#23, spark_grouping_id#24, sum(UnscaledValue(ss_net_profit#3))#27] + +(94) NativeShuffleExchange +Input [7]: [total_sum#28, s_state#22, s_county#23, lochierarchy#29, _w0#30, _w1#31, _w2#32] +Arguments: hashpartitioning(_w1#31, _w2#32, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(95) ShuffleQueryStage +Output [7]: [total_sum#28, s_state#22, s_county#23, lochierarchy#29, _w0#30, _w1#31, _w2#32] +Arguments: X + +(96) AQEShuffleRead +Input [7]: [total_sum#28, s_state#22, s_county#23, lochierarchy#29, _w0#30, _w1#31, _w2#32] +Arguments: coalesced + +(97) InputAdapter +Input [7]: [total_sum#28, s_state#22, s_county#23, lochierarchy#29, _w0#30, _w1#31, _w2#32] + +(98) NativeSort +Input [7]: [total_sum#28, s_state#22, s_county#23, lochierarchy#29, _w0#30, _w1#31, _w2#32] +Arguments: [_w1#31 ASC NULLS FIRST, _w2#32 ASC NULLS FIRST, _w0#30 DESC NULLS LAST], false + +(99) NativeWindow +Input [7]: [total_sum#28, s_state#22, s_county#23, lochierarchy#29, _w0#30, _w1#31, _w2#32] +Arguments: [rank(_w0#30) windowspecdefinition(_w1#31, _w2#32, _w0#30 DESC NULLS LAST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rank_within_parent#33], [_w1#31, _w2#32], [_w0#30 DESC NULLS LAST] + +(100) NativeProject +Output [5]: [total_sum#28, s_state#22, s_county#23, lochierarchy#29, rank_within_parent#33] +Input [8]: [total_sum#28, s_state#22, s_county#23, lochierarchy#29, _w0#30, _w1#31, _w2#32, rank_within_parent#33] + +(101) NativeTakeOrdered +Input [5]: [total_sum#28, s_state#22, s_county#23, lochierarchy#29, rank_within_parent#33] +Arguments: X, [lochierarchy#29 DESC NULLS LAST, CASE WHEN (lochierarchy#29 = 0) THEN s_state#22 END ASC NULLS FIRST, rank_within_parent#33 ASC NULLS FIRST] + +(102) Scan parquet +Output [3]: [ss_sold_date_sk#1, ss_store_sk#2, ss_net_profit#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(103) Filter +Input [3]: [ss_sold_date_sk#1, ss_store_sk#2, ss_net_profit#3] +Condition : (isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_store_sk#2)) + +(104) Exchange +Input [3]: [ss_sold_date_sk#1, ss_store_sk#2, ss_net_profit#3] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(105) Sort +Input [3]: [ss_sold_date_sk#1, ss_store_sk#2, ss_net_profit#3] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(106) Scan parquet +Output [2]: [d_date_sk#4, d_month_seq#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)] +ReadSchema: struct + +(107) Filter +Input [2]: [d_date_sk#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#4)) + +(108) Project +Output [1]: [d_date_sk#4] +Input [2]: [d_date_sk#4, d_month_seq#5] + +(109) Exchange +Input [1]: [d_date_sk#4] +Arguments: hashpartitioning(d_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(110) Sort +Input [1]: [d_date_sk#4] +Arguments: [d_date_sk#4 ASC NULLS FIRST], false, 0 + +(111) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#4] +Join type: Inner +Join condition: None + +(112) Project +Output [2]: [ss_store_sk#2, ss_net_profit#3] +Input [4]: [ss_sold_date_sk#1, ss_store_sk#2, ss_net_profit#3, d_date_sk#4] + +(113) Exchange +Input [2]: [ss_store_sk#2, ss_net_profit#3] +Arguments: hashpartitioning(ss_store_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(114) Sort +Input [2]: [ss_store_sk#2, ss_net_profit#3] +Arguments: [ss_store_sk#2 ASC NULLS FIRST], false, 0 + +(115) Scan parquet +Output [3]: [s_store_sk#6, s_county#7, s_state#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(116) Filter +Input [3]: [s_store_sk#6, s_county#7, s_state#8] +Condition : isnotnull(s_store_sk#6) + +(117) Exchange +Input [3]: [s_store_sk#6, s_county#7, s_state#8] +Arguments: hashpartitioning(s_state#8, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(118) Sort +Input [3]: [s_store_sk#6, s_county#7, s_state#8] +Arguments: [s_state#8 ASC NULLS FIRST], false, 0 + +(119) Scan parquet +Output [3]: [ss_sold_date_sk#9, ss_store_sk#10, ss_net_profit#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_store_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(120) Filter +Input [3]: [ss_sold_date_sk#9, ss_store_sk#10, ss_net_profit#11] +Condition : (isnotnull(ss_store_sk#10) AND isnotnull(ss_sold_date_sk#9)) + +(121) Exchange +Input [3]: [ss_sold_date_sk#9, ss_store_sk#10, ss_net_profit#11] +Arguments: hashpartitioning(ss_store_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(122) Sort +Input [3]: [ss_sold_date_sk#9, ss_store_sk#10, ss_net_profit#11] +Arguments: [ss_store_sk#10 ASC NULLS FIRST], false, 0 + +(123) Scan parquet +Output [2]: [s_store_sk#12, s_state#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(124) Filter +Input [2]: [s_store_sk#12, s_state#13] +Condition : isnotnull(s_store_sk#12) + +(125) Exchange +Input [2]: [s_store_sk#12, s_state#13] +Arguments: hashpartitioning(s_store_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(126) Sort +Input [2]: [s_store_sk#12, s_state#13] +Arguments: [s_store_sk#12 ASC NULLS FIRST], false, 0 + +(127) SortMergeJoin +Left keys [1]: [ss_store_sk#10] +Right keys [1]: [s_store_sk#12] +Join type: Inner +Join condition: None + +(128) Project +Output [3]: [ss_sold_date_sk#9, ss_net_profit#11, s_state#13] +Input [5]: [ss_sold_date_sk#9, ss_store_sk#10, ss_net_profit#11, s_store_sk#12, s_state#13] + +(129) Exchange +Input [3]: [ss_sold_date_sk#9, ss_net_profit#11, s_state#13] +Arguments: hashpartitioning(ss_sold_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(130) Sort +Input [3]: [ss_sold_date_sk#9, ss_net_profit#11, s_state#13] +Arguments: [ss_sold_date_sk#9 ASC NULLS FIRST], false, 0 + +(131) Scan parquet +Output [2]: [d_date_sk#14, d_month_seq#34] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)] +ReadSchema: struct + +(132) Filter +Input [2]: [d_date_sk#14, d_month_seq#34] +Condition : (((isnotnull(d_month_seq#34) AND (d_month_seq#34 >= 1200)) AND (d_month_seq#34 <= 1211)) AND isnotnull(d_date_sk#14)) + +(133) Project +Output [1]: [d_date_sk#14] +Input [2]: [d_date_sk#14, d_month_seq#34] + +(134) Exchange +Input [1]: [d_date_sk#14] +Arguments: hashpartitioning(d_date_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(135) Sort +Input [1]: [d_date_sk#14] +Arguments: [d_date_sk#14 ASC NULLS FIRST], false, 0 + +(136) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#9] +Right keys [1]: [d_date_sk#14] +Join type: Inner +Join condition: None + +(137) Project +Output [2]: [ss_net_profit#11, s_state#13] +Input [4]: [ss_sold_date_sk#9, ss_net_profit#11, s_state#13, d_date_sk#14] + +(138) HashAggregate +Input [2]: [ss_net_profit#11, s_state#13] +Keys [1]: [s_state#13] +Functions [1]: [partial_sum(UnscaledValue(ss_net_profit#11))] +Aggregate Attributes [1]: [sum#16] +Results [2]: [s_state#13, sum#35] + +(139) Exchange +Input [2]: [s_state#13, sum#35] +Arguments: hashpartitioning(s_state#13, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(140) HashAggregate +Input [2]: [s_state#13, sum#35] +Keys [1]: [s_state#13] +Functions [1]: [sum(UnscaledValue(ss_net_profit#11))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_net_profit#11))#18] +Results [3]: [s_state#13, s_state#13, MakeDecimal(sum(UnscaledValue(ss_net_profit#11))#18,17,2) AS _w1#19] + +(141) Sort +Input [3]: [s_state#13, s_state#13, _w1#19] +Arguments: [s_state#13 ASC NULLS FIRST, _w1#19 DESC NULLS LAST], false, 0 + +(142) WindowGroupLimit +Input [3]: [s_state#13, s_state#13, _w1#19] +Arguments: [s_state#13], [_w1#19 DESC NULLS LAST], rank(_w1#19), 5, Final + +(143) Window +Input [3]: [s_state#13, s_state#13, _w1#19] +Arguments: [rank(_w1#19) windowspecdefinition(s_state#13, _w1#19 DESC NULLS LAST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS ranking#21], [s_state#13], [_w1#19 DESC NULLS LAST] + +(144) Filter +Input [4]: [s_state#13, s_state#13, _w1#19, ranking#21] +Condition : (ranking#21 <= 5) + +(145) Project +Output [1]: [s_state#13] +Input [4]: [s_state#13, s_state#13, _w1#19, ranking#21] + +(146) SortMergeJoin +Left keys [1]: [s_state#8] +Right keys [1]: [s_state#13] +Join type: LeftSemi +Join condition: None + +(147) Exchange +Input [3]: [s_store_sk#6, s_county#7, s_state#8] +Arguments: hashpartitioning(s_store_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(148) Sort +Input [3]: [s_store_sk#6, s_county#7, s_state#8] +Arguments: [s_store_sk#6 ASC NULLS FIRST], false, 0 + +(149) SortMergeJoin +Left keys [1]: [ss_store_sk#2] +Right keys [1]: [s_store_sk#6] +Join type: Inner +Join condition: None + +(150) Project +Output [3]: [ss_net_profit#3, s_state#8, s_county#7] +Input [5]: [ss_store_sk#2, ss_net_profit#3, s_store_sk#6, s_county#7, s_state#8] + +(151) Expand +Input [3]: [ss_net_profit#3, s_state#8, s_county#7] +Arguments: [[ss_net_profit#3, s_state#8, s_county#7, 0], [ss_net_profit#3, s_state#8, null, 1], [ss_net_profit#3, null, null, 3]], [ss_net_profit#3, s_state#22, s_county#23, spark_grouping_id#24] + +(152) HashAggregate +Input [4]: [ss_net_profit#3, s_state#22, s_county#23, spark_grouping_id#24] +Keys [3]: [s_state#22, s_county#23, spark_grouping_id#24] +Functions [1]: [partial_sum(UnscaledValue(ss_net_profit#3))] +Aggregate Attributes [1]: [sum#26] +Results [4]: [s_state#22, s_county#23, spark_grouping_id#24, sum#36] + +(153) Exchange +Input [4]: [s_state#22, s_county#23, spark_grouping_id#24, sum#36] +Arguments: hashpartitioning(s_state#22, s_county#23, spark_grouping_id#24, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(154) HashAggregate +Input [4]: [s_state#22, s_county#23, spark_grouping_id#24, sum#36] +Keys [3]: [s_state#22, s_county#23, spark_grouping_id#24] +Functions [1]: [sum(UnscaledValue(ss_net_profit#3))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_net_profit#3))#27] +Results [7]: [MakeDecimal(sum(UnscaledValue(ss_net_profit#3))#27,17,2) AS total_sum#28, s_state#22, s_county#23, (cast((shiftright(spark_grouping_id#24, 1) & 1) as tinyint) + cast((shiftright(spark_grouping_id#24, 0) & 1) as tinyint)) AS lochierarchy#29, MakeDecimal(sum(UnscaledValue(ss_net_profit#3))#27,17,2) AS _w0#30, (cast((shiftright(spark_grouping_id#24, 1) & 1) as tinyint) + cast((shiftright(spark_grouping_id#24, 0) & 1) as tinyint)) AS _w1#31, CASE WHEN (cast((shiftright(spark_grouping_id#24, 0) & 1) as tinyint) = 0) THEN s_state#22 END AS _w2#32] + +(155) Exchange +Input [7]: [total_sum#28, s_state#22, s_county#23, lochierarchy#29, _w0#30, _w1#31, _w2#32] +Arguments: hashpartitioning(_w1#31, _w2#32, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(156) Sort +Input [7]: [total_sum#28, s_state#22, s_county#23, lochierarchy#29, _w0#30, _w1#31, _w2#32] +Arguments: [_w1#31 ASC NULLS FIRST, _w2#32 ASC NULLS FIRST, _w0#30 DESC NULLS LAST], false, 0 + +(157) Window +Input [7]: [total_sum#28, s_state#22, s_county#23, lochierarchy#29, _w0#30, _w1#31, _w2#32] +Arguments: [rank(_w0#30) windowspecdefinition(_w1#31, _w2#32, _w0#30 DESC NULLS LAST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rank_within_parent#33], [_w1#31, _w2#32], [_w0#30 DESC NULLS LAST] + +(158) Project +Output [5]: [total_sum#28, s_state#22, s_county#23, lochierarchy#29, rank_within_parent#33] +Input [8]: [total_sum#28, s_state#22, s_county#23, lochierarchy#29, _w0#30, _w1#31, _w2#32, rank_within_parent#33] + +(159) TakeOrderedAndProject +Input [5]: [total_sum#28, s_state#22, s_county#23, lochierarchy#29, rank_within_parent#33] +Arguments: X, [lochierarchy#29 DESC NULLS LAST, CASE WHEN (lochierarchy#29 = 0) THEN s_state#22 END ASC NULLS FIRST, rank_within_parent#33 ASC NULLS FIRST], [total_sum#28, s_state#22, s_county#23, lochierarchy#29, rank_within_parent#33] + +(160) AdaptiveSparkPlan +Output [5]: [total_sum#28, s_state#22, s_county#23, lochierarchy#29, rank_within_parent#33] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q71.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q71.txt new file mode 100644 index 000000000..7daf63811 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q71.txt @@ -0,0 +1,842 @@ +== Physical Plan == +AdaptiveSparkPlan (156) ++- == Final Plan == + NativeSort (98) + +- InputAdapter (97) + +- AQEShuffleRead (96) + +- ShuffleQueryStage (95), Statistics(X) + +- NativeShuffleExchange (94) + +- NativeProject (93) + +- NativeHashAggregate (92) + +- InputAdapter (91) + +- AQEShuffleRead (90) + +- ShuffleQueryStage (89), Statistics(X) + +- NativeShuffleExchange (88) + +- NativeHashAggregate (87) + +- NativeProject (86) + +- NativeProject (85) + +- NativeSortMergeJoin Inner (84) + :- NativeSort (74) + : +- InputAdapter (73) + : +- AQEShuffleRead (72) + : +- ShuffleQueryStage (71), Statistics(X) + : +- NativeShuffleExchange (70) + : +- NativeProject (69) + : +- NativeSortMergeJoin Inner (68) + : :- NativeSort (9) + : : +- InputAdapter (8) + : : +- AQEShuffleRead (7) + : : +- ShuffleQueryStage (6), Statistics(X) + : : +- NativeShuffleExchange (5) + : : +- NativeProject (4) + : : +- NativeFilter (3) + : : +- InputAdapter (2) + : : +- NativeParquetScan (1) + : +- NativeSort (67) + : +- InputAdapter (66) + : +- AQEShuffleRead (65) + : +- ShuffleQueryStage (64), Statistics(X) + : +- NativeShuffleExchange (63) + : +- InputAdapter (62) + : +- NativeUnion (61) + : :- NativeProject (28) + : : +- NativeSortMergeJoin Inner (27) + : : :- NativeSort (17) + : : : +- InputAdapter (16) + : : : +- AQEShuffleRead (15) + : : : +- ShuffleQueryStage (14), Statistics(X) + : : : +- NativeShuffleExchange (13) + : : : +- NativeFilter (12) + : : : +- InputAdapter (11) + : : : +- NativeParquetScan (10) + : : +- NativeSort (26) + : : +- InputAdapter (25) + : : +- AQEShuffleRead (24) + : : +- ShuffleQueryStage (23), Statistics(X) + : : +- NativeShuffleExchange (22) + : : +- NativeProject (21) + : : +- NativeFilter (20) + : : +- InputAdapter (19) + : : +- NativeParquetScan (18) + : :- NativeProject (44) + : : +- NativeSortMergeJoin Inner (43) + : : :- NativeSort (36) + : : : +- InputAdapter (35) + : : : +- AQEShuffleRead (34) + : : : +- ShuffleQueryStage (33), Statistics(X) + : : : +- NativeShuffleExchange (32) + : : : +- NativeFilter (31) + : : : +- InputAdapter (30) + : : : +- NativeParquetScan (29) + : : +- NativeSort (42) + : : +- InputAdapter (41) + : : +- InputAdapter (40) + : : +- AQEShuffleRead (39) + : : +- ShuffleQueryStage (38), Statistics(X) + : : +- ReusedExchange (37) + : +- NativeProject (60) + : +- NativeSortMergeJoin Inner (59) + : :- NativeSort (52) + : : +- InputAdapter (51) + : : +- AQEShuffleRead (50) + : : +- ShuffleQueryStage (49), Statistics(X) + : : +- NativeShuffleExchange (48) + : : +- NativeFilter (47) + : : +- InputAdapter (46) + : : +- NativeParquetScan (45) + : +- NativeSort (58) + : +- InputAdapter (57) + : +- InputAdapter (56) + : +- AQEShuffleRead (55) + : +- ShuffleQueryStage (54), Statistics(X) + : +- ReusedExchange (53) + +- NativeSort (83) + +- InputAdapter (82) + +- AQEShuffleRead (81) + +- ShuffleQueryStage (80), Statistics(X) + +- NativeShuffleExchange (79) + +- NativeProject (78) + +- NativeFilter (77) + +- InputAdapter (76) + +- NativeParquetScan (75) ++- == Initial Plan == + Sort (155) + +- Exchange (154) + +- HashAggregate (153) + +- Exchange (152) + +- HashAggregate (151) + +- Project (150) + +- SortMergeJoin Inner (149) + :- Sort (143) + : +- Exchange (142) + : +- Project (141) + : +- SortMergeJoin Inner (140) + : :- Sort (103) + : : +- Exchange (102) + : : +- Project (101) + : : +- Filter (100) + : : +- Scan parquet (99) + : +- Sort (139) + : +- Exchange (138) + : +- Union (137) + : :- Project (114) + : : +- SortMergeJoin Inner (113) + : : :- Sort (107) + : : : +- Exchange (106) + : : : +- Filter (105) + : : : +- Scan parquet (104) + : : +- Sort (112) + : : +- Exchange (111) + : : +- Project (110) + : : +- Filter (109) + : : +- Scan parquet (108) + : :- Project (125) + : : +- SortMergeJoin Inner (124) + : : :- Sort (118) + : : : +- Exchange (117) + : : : +- Filter (116) + : : : +- Scan parquet (115) + : : +- Sort (123) + : : +- Exchange (122) + : : +- Project (121) + : : +- Filter (120) + : : +- Scan parquet (119) + : +- Project (136) + : +- SortMergeJoin Inner (135) + : :- Sort (129) + : : +- Exchange (128) + : : +- Filter (127) + : : +- Scan parquet (126) + : +- Sort (134) + : +- Exchange (133) + : +- Project (132) + : +- Filter (131) + : +- Scan parquet (130) + +- Sort (148) + +- Exchange (147) + +- Project (146) + +- Filter (145) + +- Scan parquet (144) + + +(99) Scan parquet +Output [4]: [i_item_sk#1, i_brand_id#2, i_brand#3, i_manager_id#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_manager_id), EqualTo(i_manager_id,1), IsNotNull(i_item_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [4]: [i_item_sk#1, i_brand_id#2, i_brand#3, i_manager_id#4] +Arguments: [#1, #2, #3, #4] + +(3) NativeFilter +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Condition : ((isnotnull(i_manager_id#4) AND (i_manager_id#4 = 1)) AND isnotnull(i_item_sk#1)) + +(4) NativeProject +Output [3]: [i_item_sk#1, i_brand_id#2, i_brand#3] +Input [4]: [#1#1, #2#2, #3#3, #4#4] + +(5) NativeShuffleExchange +Input [3]: [i_item_sk#1, i_brand_id#2, i_brand#3] +Arguments: hashpartitioning(i_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(6) ShuffleQueryStage +Output [3]: [i_item_sk#1, i_brand_id#2, i_brand#3] +Arguments: X + +(7) AQEShuffleRead +Input [3]: [i_item_sk#1, i_brand_id#2, i_brand#3] +Arguments: coalesced + +(8) InputAdapter +Input [3]: [i_item_sk#1, i_brand_id#2, i_brand#3] + +(9) NativeSort +Input [3]: [i_item_sk#1, i_brand_id#2, i_brand#3] +Arguments: [i_item_sk#1 ASC NULLS FIRST], false + +(104) Scan parquet +Output [4]: [ws_sold_date_sk#5, ws_sold_time_sk#6, ws_item_sk#7, ws_ext_sales_price#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_item_sk), IsNotNull(ws_sold_time_sk)] +ReadSchema: struct + +(11) InputAdapter +Input [4]: [ws_sold_date_sk#5, ws_sold_time_sk#6, ws_item_sk#7, ws_ext_sales_price#8] +Arguments: [#5, #6, #7, #8] + +(12) NativeFilter +Input [4]: [#5#5, #6#6, #7#7, #8#8] +Condition : ((isnotnull(ws_sold_date_sk#5) AND isnotnull(ws_item_sk#7)) AND isnotnull(ws_sold_time_sk#6)) + +(13) NativeShuffleExchange +Input [4]: [#5#5, #6#6, #7#7, #8#8] +Arguments: hashpartitioning(ws_sold_date_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [4]: [#5#5, #6#6, #7#7, #8#8] +Arguments: X + +(15) AQEShuffleRead +Input [4]: [#5#5, #6#6, #7#7, #8#8] +Arguments: coalesced + +(16) InputAdapter +Input [4]: [#5#5, #6#6, #7#7, #8#8] + +(17) NativeSort +Input [4]: [#5#5, #6#6, #7#7, #8#8] +Arguments: [ws_sold_date_sk#5 ASC NULLS FIRST], false + +(108) Scan parquet +Output [3]: [d_date_sk#9, d_year#10, d_moy#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_moy), IsNotNull(d_year), EqualTo(d_moy,11), EqualTo(d_year,1999), IsNotNull(d_date_sk)] +ReadSchema: struct + +(19) InputAdapter +Input [3]: [d_date_sk#9, d_year#10, d_moy#11] +Arguments: [#9, #10, #11] + +(20) NativeFilter +Input [3]: [#9#9, #10#10, #11#11] +Condition : ((((isnotnull(d_moy#11) AND isnotnull(d_year#10)) AND (d_moy#11 = 11)) AND (d_year#10 = 1999)) AND isnotnull(d_date_sk#9)) + +(21) NativeProject +Output [1]: [d_date_sk#9] +Input [3]: [#9#9, #10#10, #11#11] + +(22) NativeShuffleExchange +Input [1]: [d_date_sk#9] +Arguments: hashpartitioning(d_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(23) ShuffleQueryStage +Output [1]: [d_date_sk#9] +Arguments: X + +(24) AQEShuffleRead +Input [1]: [d_date_sk#9] +Arguments: coalesced + +(25) InputAdapter +Input [1]: [d_date_sk#9] + +(26) NativeSort +Input [1]: [d_date_sk#9] +Arguments: [d_date_sk#9 ASC NULLS FIRST], false + +(27) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#5] +Right keys [1]: [d_date_sk#9] +Join type: Inner +Join condition: None + +(28) NativeProject +Output [3]: [ws_ext_sales_price#8 AS ext_price#12, ws_item_sk#7 AS sold_item_sk#13, ws_sold_time_sk#6 AS time_sk#14] +Input [5]: [#5#5, #6#6, #7#7, #8#8, d_date_sk#9] + +(115) Scan parquet +Output [4]: [cs_sold_date_sk#15, cs_sold_time_sk#16, cs_item_sk#17, cs_ext_sales_price#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk), IsNotNull(cs_item_sk), IsNotNull(cs_sold_time_sk)] +ReadSchema: struct + +(30) InputAdapter +Input [4]: [cs_sold_date_sk#15, cs_sold_time_sk#16, cs_item_sk#17, cs_ext_sales_price#18] +Arguments: [#15, #16, #17, #18] + +(31) NativeFilter +Input [4]: [#15#15, #16#16, #17#17, #18#18] +Condition : ((isnotnull(cs_sold_date_sk#15) AND isnotnull(cs_item_sk#17)) AND isnotnull(cs_sold_time_sk#16)) + +(32) NativeShuffleExchange +Input [4]: [#15#15, #16#16, #17#17, #18#18] +Arguments: hashpartitioning(cs_sold_date_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(33) ShuffleQueryStage +Output [4]: [#15#15, #16#16, #17#17, #18#18] +Arguments: X + +(34) AQEShuffleRead +Input [4]: [#15#15, #16#16, #17#17, #18#18] +Arguments: coalesced + +(35) InputAdapter +Input [4]: [#15#15, #16#16, #17#17, #18#18] + +(36) NativeSort +Input [4]: [#15#15, #16#16, #17#17, #18#18] +Arguments: [cs_sold_date_sk#15 ASC NULLS FIRST], false + +(37) ReusedExchange [Reuses operator id: 22] +Output [1]: [d_date_sk#19] + +(38) ShuffleQueryStage +Output [1]: [d_date_sk#19] +Arguments: X + +(39) AQEShuffleRead +Input [1]: [d_date_sk#19] +Arguments: coalesced + +(40) InputAdapter +Input [1]: [d_date_sk#19] +Arguments: [#19] + +(41) InputAdapter +Input [1]: [#19#19] + +(42) NativeSort +Input [1]: [#19#19] +Arguments: [d_date_sk#19 ASC NULLS FIRST], false + +(43) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#15] +Right keys [1]: [d_date_sk#19] +Join type: Inner +Join condition: None + +(44) NativeProject +Output [3]: [cs_ext_sales_price#18 AS ext_price#20, cs_item_sk#17 AS sold_item_sk#21, cs_sold_time_sk#16 AS time_sk#22] +Input [5]: [#15#15, #16#16, #17#17, #18#18, #19#19] + +(126) Scan parquet +Output [4]: [ss_sold_date_sk#23, ss_sold_time_sk#24, ss_item_sk#25, ss_ext_sales_price#26] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_item_sk), IsNotNull(ss_sold_time_sk)] +ReadSchema: struct + +(46) InputAdapter +Input [4]: [ss_sold_date_sk#23, ss_sold_time_sk#24, ss_item_sk#25, ss_ext_sales_price#26] +Arguments: [#23, #24, #25, #26] + +(47) NativeFilter +Input [4]: [#23#23, #24#24, #25#25, #26#26] +Condition : ((isnotnull(ss_sold_date_sk#23) AND isnotnull(ss_item_sk#25)) AND isnotnull(ss_sold_time_sk#24)) + +(48) NativeShuffleExchange +Input [4]: [#23#23, #24#24, #25#25, #26#26] +Arguments: hashpartitioning(ss_sold_date_sk#23, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(49) ShuffleQueryStage +Output [4]: [#23#23, #24#24, #25#25, #26#26] +Arguments: X + +(50) AQEShuffleRead +Input [4]: [#23#23, #24#24, #25#25, #26#26] +Arguments: coalesced + +(51) InputAdapter +Input [4]: [#23#23, #24#24, #25#25, #26#26] + +(52) NativeSort +Input [4]: [#23#23, #24#24, #25#25, #26#26] +Arguments: [ss_sold_date_sk#23 ASC NULLS FIRST], false + +(53) ReusedExchange [Reuses operator id: 22] +Output [1]: [d_date_sk#27] + +(54) ShuffleQueryStage +Output [1]: [d_date_sk#27] +Arguments: X + +(55) AQEShuffleRead +Input [1]: [d_date_sk#27] +Arguments: coalesced + +(56) InputAdapter +Input [1]: [d_date_sk#27] +Arguments: [#27] + +(57) InputAdapter +Input [1]: [#27#27] + +(58) NativeSort +Input [1]: [#27#27] +Arguments: [d_date_sk#27 ASC NULLS FIRST], false + +(59) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#23] +Right keys [1]: [d_date_sk#27] +Join type: Inner +Join condition: None + +(60) NativeProject +Output [3]: [ss_ext_sales_price#26 AS ext_price#28, ss_item_sk#25 AS sold_item_sk#29, ss_sold_time_sk#24 AS time_sk#30] +Input [5]: [#23#23, #24#24, #25#25, #26#26, #27#27] + +(61) NativeUnion +Arguments: [ext_price#12, sold_item_sk#13, time_sk#14] + +(62) InputAdapter +Input [3]: [ext_price#12, sold_item_sk#13, time_sk#14] +Arguments: [#12, #13, #14] + +(63) NativeShuffleExchange +Input [3]: [#12#12, #13#13, #14#14] +Arguments: hashpartitioning(sold_item_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(64) ShuffleQueryStage +Output [3]: [#12#12, #13#13, #14#14] +Arguments: X + +(65) AQEShuffleRead +Input [3]: [#12#12, #13#13, #14#14] +Arguments: coalesced + +(66) InputAdapter +Input [3]: [#12#12, #13#13, #14#14] + +(67) NativeSort +Input [3]: [#12#12, #13#13, #14#14] +Arguments: [sold_item_sk#13 ASC NULLS FIRST], false + +(68) NativeSortMergeJoin +Left keys [1]: [i_item_sk#1] +Right keys [1]: [sold_item_sk#13] +Join type: Inner +Join condition: None + +(69) NativeProject +Output [4]: [i_brand_id#2, i_brand#3, ext_price#12, time_sk#14] +Input [6]: [i_item_sk#1, i_brand_id#2, i_brand#3, #12#12, #13#13, #14#14] + +(70) NativeShuffleExchange +Input [4]: [i_brand_id#2, i_brand#3, ext_price#12, time_sk#14] +Arguments: hashpartitioning(time_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(71) ShuffleQueryStage +Output [4]: [i_brand_id#2, i_brand#3, ext_price#12, time_sk#14] +Arguments: X + +(72) AQEShuffleRead +Input [4]: [i_brand_id#2, i_brand#3, ext_price#12, time_sk#14] +Arguments: coalesced + +(73) InputAdapter +Input [4]: [i_brand_id#2, i_brand#3, ext_price#12, time_sk#14] + +(74) NativeSort +Input [4]: [i_brand_id#2, i_brand#3, ext_price#12, time_sk#14] +Arguments: [time_sk#14 ASC NULLS FIRST], false + +(144) Scan parquet +Output [4]: [t_time_sk#31, t_hour#32, t_minute#33, t_meal_time#34] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(EqualTo(t_meal_time,breakfast),EqualTo(t_meal_time,dinner)), IsNotNull(t_time_sk)] +ReadSchema: struct + +(76) InputAdapter +Input [4]: [t_time_sk#31, t_hour#32, t_minute#33, t_meal_time#34] +Arguments: [#31, #32, #33, #34] + +(77) NativeFilter +Input [4]: [#31#31, #32#32, #33#33, #34#34] +Condition : (((t_meal_time#34 = breakfast) OR (t_meal_time#34 = dinner)) AND isnotnull(t_time_sk#31)) + +(78) NativeProject +Output [3]: [t_time_sk#31, t_hour#32, t_minute#33] +Input [4]: [#31#31, #32#32, #33#33, #34#34] + +(79) NativeShuffleExchange +Input [3]: [t_time_sk#31, t_hour#32, t_minute#33] +Arguments: hashpartitioning(t_time_sk#31, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(80) ShuffleQueryStage +Output [3]: [t_time_sk#31, t_hour#32, t_minute#33] +Arguments: X + +(81) AQEShuffleRead +Input [3]: [t_time_sk#31, t_hour#32, t_minute#33] +Arguments: coalesced + +(82) InputAdapter +Input [3]: [t_time_sk#31, t_hour#32, t_minute#33] + +(83) NativeSort +Input [3]: [t_time_sk#31, t_hour#32, t_minute#33] +Arguments: [t_time_sk#31 ASC NULLS FIRST], false + +(84) NativeSortMergeJoin +Left keys [1]: [time_sk#14] +Right keys [1]: [t_time_sk#31] +Join type: Inner +Join condition: None + +(85) NativeProject +Output [5]: [i_brand_id#2, i_brand#3, ext_price#12, t_hour#32, t_minute#33] +Input [7]: [i_brand_id#2, i_brand#3, ext_price#12, time_sk#14, t_time_sk#31, t_hour#32, t_minute#33] + +(86) NativeProject +Output [5]: [i_brand#3 AS i_brand#3, i_brand_id#2 AS i_brand_id#2, t_hour#32 AS t_hour#32, t_minute#33 AS t_minute#33, UnscaledValue(ext_price#12) AS _c4#35] +Input [5]: [i_brand_id#2, i_brand#3, ext_price#12, t_hour#32, t_minute#33] + +(87) NativeHashAggregate +Input [5]: [i_brand#3, i_brand_id#2, t_hour#32, t_minute#33, _c4#35] +Keys [4]: [i_brand#3, i_brand_id#2, t_hour#32, t_minute#33] +Functions [1]: [partial_sum(_c4#35)] +Aggregate Attributes [1]: [sum#36] +Results [5]: [i_brand#3, i_brand_id#2, t_hour#32, t_minute#33, #37#37] + +(88) NativeShuffleExchange +Input [5]: [i_brand#3, i_brand_id#2, t_hour#32, t_minute#33, #37#37] +Arguments: hashpartitioning(i_brand#3, i_brand_id#2, t_hour#32, t_minute#33, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(89) ShuffleQueryStage +Output [5]: [i_brand#3, i_brand_id#2, t_hour#32, t_minute#33, #37#37] +Arguments: X + +(90) AQEShuffleRead +Input [5]: [i_brand#3, i_brand_id#2, t_hour#32, t_minute#33, #37#37] +Arguments: coalesced + +(91) InputAdapter +Input [5]: [i_brand#3, i_brand_id#2, t_hour#32, t_minute#33, #37#37] + +(92) NativeHashAggregate +Input [5]: [i_brand#3, i_brand_id#2, t_hour#32, t_minute#33, #37#37] +Keys [4]: [i_brand#3, i_brand_id#2, t_hour#32, t_minute#33] +Functions [1]: [sum(UnscaledValue(ext_price#12))] +Aggregate Attributes [1]: [sum(UnscaledValue(ext_price#12))#38] +Results [5]: [i_brand#3, i_brand_id#2, t_hour#32, t_minute#33, sum(UnscaledValue(ext_price#12))#38] + +(93) NativeProject +Output [5]: [i_brand_id#2 AS brand_id#39, i_brand#3 AS brand#40, t_hour#32, t_minute#33, MakeDecimal(sum(UnscaledValue(ext_price#12))#38,17,2) AS ext_price#41] +Input [5]: [i_brand#3, i_brand_id#2, t_hour#32, t_minute#33, sum(UnscaledValue(ext_price#12))#38] + +(94) NativeShuffleExchange +Input [5]: [brand_id#39, brand#40, t_hour#32, t_minute#33, ext_price#41] +Arguments: rangepartitioning(ext_price#41 DESC NULLS LAST, brand_id#39 ASC NULLS FIRST, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(95) ShuffleQueryStage +Output [5]: [brand_id#39, brand#40, t_hour#32, t_minute#33, ext_price#41] +Arguments: X + +(96) AQEShuffleRead +Input [5]: [brand_id#39, brand#40, t_hour#32, t_minute#33, ext_price#41] +Arguments: coalesced + +(97) InputAdapter +Input [5]: [brand_id#39, brand#40, t_hour#32, t_minute#33, ext_price#41] + +(98) NativeSort +Input [5]: [brand_id#39, brand#40, t_hour#32, t_minute#33, ext_price#41] +Arguments: [ext_price#41 DESC NULLS LAST, brand_id#39 ASC NULLS FIRST], true + +(99) Scan parquet +Output [4]: [i_item_sk#1, i_brand_id#2, i_brand#3, i_manager_id#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_manager_id), EqualTo(i_manager_id,1), IsNotNull(i_item_sk)] +ReadSchema: struct + +(100) Filter +Input [4]: [i_item_sk#1, i_brand_id#2, i_brand#3, i_manager_id#4] +Condition : ((isnotnull(i_manager_id#4) AND (i_manager_id#4 = 1)) AND isnotnull(i_item_sk#1)) + +(101) Project +Output [3]: [i_item_sk#1, i_brand_id#2, i_brand#3] +Input [4]: [i_item_sk#1, i_brand_id#2, i_brand#3, i_manager_id#4] + +(102) Exchange +Input [3]: [i_item_sk#1, i_brand_id#2, i_brand#3] +Arguments: hashpartitioning(i_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(103) Sort +Input [3]: [i_item_sk#1, i_brand_id#2, i_brand#3] +Arguments: [i_item_sk#1 ASC NULLS FIRST], false, 0 + +(104) Scan parquet +Output [4]: [ws_sold_date_sk#5, ws_sold_time_sk#6, ws_item_sk#7, ws_ext_sales_price#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_item_sk), IsNotNull(ws_sold_time_sk)] +ReadSchema: struct + +(105) Filter +Input [4]: [ws_sold_date_sk#5, ws_sold_time_sk#6, ws_item_sk#7, ws_ext_sales_price#8] +Condition : ((isnotnull(ws_sold_date_sk#5) AND isnotnull(ws_item_sk#7)) AND isnotnull(ws_sold_time_sk#6)) + +(106) Exchange +Input [4]: [ws_sold_date_sk#5, ws_sold_time_sk#6, ws_item_sk#7, ws_ext_sales_price#8] +Arguments: hashpartitioning(ws_sold_date_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(107) Sort +Input [4]: [ws_sold_date_sk#5, ws_sold_time_sk#6, ws_item_sk#7, ws_ext_sales_price#8] +Arguments: [ws_sold_date_sk#5 ASC NULLS FIRST], false, 0 + +(108) Scan parquet +Output [3]: [d_date_sk#9, d_year#10, d_moy#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_moy), IsNotNull(d_year), EqualTo(d_moy,11), EqualTo(d_year,1999), IsNotNull(d_date_sk)] +ReadSchema: struct + +(109) Filter +Input [3]: [d_date_sk#9, d_year#10, d_moy#11] +Condition : ((((isnotnull(d_moy#11) AND isnotnull(d_year#10)) AND (d_moy#11 = 11)) AND (d_year#10 = 1999)) AND isnotnull(d_date_sk#9)) + +(110) Project +Output [1]: [d_date_sk#9] +Input [3]: [d_date_sk#9, d_year#10, d_moy#11] + +(111) Exchange +Input [1]: [d_date_sk#9] +Arguments: hashpartitioning(d_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(112) Sort +Input [1]: [d_date_sk#9] +Arguments: [d_date_sk#9 ASC NULLS FIRST], false, 0 + +(113) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#5] +Right keys [1]: [d_date_sk#9] +Join type: Inner +Join condition: None + +(114) Project +Output [3]: [ws_ext_sales_price#8 AS ext_price#12, ws_item_sk#7 AS sold_item_sk#13, ws_sold_time_sk#6 AS time_sk#14] +Input [5]: [ws_sold_date_sk#5, ws_sold_time_sk#6, ws_item_sk#7, ws_ext_sales_price#8, d_date_sk#9] + +(115) Scan parquet +Output [4]: [cs_sold_date_sk#15, cs_sold_time_sk#16, cs_item_sk#17, cs_ext_sales_price#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk), IsNotNull(cs_item_sk), IsNotNull(cs_sold_time_sk)] +ReadSchema: struct + +(116) Filter +Input [4]: [cs_sold_date_sk#15, cs_sold_time_sk#16, cs_item_sk#17, cs_ext_sales_price#18] +Condition : ((isnotnull(cs_sold_date_sk#15) AND isnotnull(cs_item_sk#17)) AND isnotnull(cs_sold_time_sk#16)) + +(117) Exchange +Input [4]: [cs_sold_date_sk#15, cs_sold_time_sk#16, cs_item_sk#17, cs_ext_sales_price#18] +Arguments: hashpartitioning(cs_sold_date_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(118) Sort +Input [4]: [cs_sold_date_sk#15, cs_sold_time_sk#16, cs_item_sk#17, cs_ext_sales_price#18] +Arguments: [cs_sold_date_sk#15 ASC NULLS FIRST], false, 0 + +(119) Scan parquet +Output [3]: [d_date_sk#19, d_year#42, d_moy#43] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_moy), IsNotNull(d_year), EqualTo(d_moy,11), EqualTo(d_year,1999), IsNotNull(d_date_sk)] +ReadSchema: struct + +(120) Filter +Input [3]: [d_date_sk#19, d_year#42, d_moy#43] +Condition : ((((isnotnull(d_moy#43) AND isnotnull(d_year#42)) AND (d_moy#43 = 11)) AND (d_year#42 = 1999)) AND isnotnull(d_date_sk#19)) + +(121) Project +Output [1]: [d_date_sk#19] +Input [3]: [d_date_sk#19, d_year#42, d_moy#43] + +(122) Exchange +Input [1]: [d_date_sk#19] +Arguments: hashpartitioning(d_date_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(123) Sort +Input [1]: [d_date_sk#19] +Arguments: [d_date_sk#19 ASC NULLS FIRST], false, 0 + +(124) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#15] +Right keys [1]: [d_date_sk#19] +Join type: Inner +Join condition: None + +(125) Project +Output [3]: [cs_ext_sales_price#18 AS ext_price#20, cs_item_sk#17 AS sold_item_sk#21, cs_sold_time_sk#16 AS time_sk#22] +Input [5]: [cs_sold_date_sk#15, cs_sold_time_sk#16, cs_item_sk#17, cs_ext_sales_price#18, d_date_sk#19] + +(126) Scan parquet +Output [4]: [ss_sold_date_sk#23, ss_sold_time_sk#24, ss_item_sk#25, ss_ext_sales_price#26] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_item_sk), IsNotNull(ss_sold_time_sk)] +ReadSchema: struct + +(127) Filter +Input [4]: [ss_sold_date_sk#23, ss_sold_time_sk#24, ss_item_sk#25, ss_ext_sales_price#26] +Condition : ((isnotnull(ss_sold_date_sk#23) AND isnotnull(ss_item_sk#25)) AND isnotnull(ss_sold_time_sk#24)) + +(128) Exchange +Input [4]: [ss_sold_date_sk#23, ss_sold_time_sk#24, ss_item_sk#25, ss_ext_sales_price#26] +Arguments: hashpartitioning(ss_sold_date_sk#23, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(129) Sort +Input [4]: [ss_sold_date_sk#23, ss_sold_time_sk#24, ss_item_sk#25, ss_ext_sales_price#26] +Arguments: [ss_sold_date_sk#23 ASC NULLS FIRST], false, 0 + +(130) Scan parquet +Output [3]: [d_date_sk#27, d_year#44, d_moy#45] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_moy), IsNotNull(d_year), EqualTo(d_moy,11), EqualTo(d_year,1999), IsNotNull(d_date_sk)] +ReadSchema: struct + +(131) Filter +Input [3]: [d_date_sk#27, d_year#44, d_moy#45] +Condition : ((((isnotnull(d_moy#45) AND isnotnull(d_year#44)) AND (d_moy#45 = 11)) AND (d_year#44 = 1999)) AND isnotnull(d_date_sk#27)) + +(132) Project +Output [1]: [d_date_sk#27] +Input [3]: [d_date_sk#27, d_year#44, d_moy#45] + +(133) Exchange +Input [1]: [d_date_sk#27] +Arguments: hashpartitioning(d_date_sk#27, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(134) Sort +Input [1]: [d_date_sk#27] +Arguments: [d_date_sk#27 ASC NULLS FIRST], false, 0 + +(135) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#23] +Right keys [1]: [d_date_sk#27] +Join type: Inner +Join condition: None + +(136) Project +Output [3]: [ss_ext_sales_price#26 AS ext_price#28, ss_item_sk#25 AS sold_item_sk#29, ss_sold_time_sk#24 AS time_sk#30] +Input [5]: [ss_sold_date_sk#23, ss_sold_time_sk#24, ss_item_sk#25, ss_ext_sales_price#26, d_date_sk#27] + +(137) Union + +(138) Exchange +Input [3]: [ext_price#12, sold_item_sk#13, time_sk#14] +Arguments: hashpartitioning(sold_item_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(139) Sort +Input [3]: [ext_price#12, sold_item_sk#13, time_sk#14] +Arguments: [sold_item_sk#13 ASC NULLS FIRST], false, 0 + +(140) SortMergeJoin +Left keys [1]: [i_item_sk#1] +Right keys [1]: [sold_item_sk#13] +Join type: Inner +Join condition: None + +(141) Project +Output [4]: [i_brand_id#2, i_brand#3, ext_price#12, time_sk#14] +Input [6]: [i_item_sk#1, i_brand_id#2, i_brand#3, ext_price#12, sold_item_sk#13, time_sk#14] + +(142) Exchange +Input [4]: [i_brand_id#2, i_brand#3, ext_price#12, time_sk#14] +Arguments: hashpartitioning(time_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(143) Sort +Input [4]: [i_brand_id#2, i_brand#3, ext_price#12, time_sk#14] +Arguments: [time_sk#14 ASC NULLS FIRST], false, 0 + +(144) Scan parquet +Output [4]: [t_time_sk#31, t_hour#32, t_minute#33, t_meal_time#34] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(EqualTo(t_meal_time,breakfast),EqualTo(t_meal_time,dinner)), IsNotNull(t_time_sk)] +ReadSchema: struct + +(145) Filter +Input [4]: [t_time_sk#31, t_hour#32, t_minute#33, t_meal_time#34] +Condition : (((t_meal_time#34 = breakfast) OR (t_meal_time#34 = dinner)) AND isnotnull(t_time_sk#31)) + +(146) Project +Output [3]: [t_time_sk#31, t_hour#32, t_minute#33] +Input [4]: [t_time_sk#31, t_hour#32, t_minute#33, t_meal_time#34] + +(147) Exchange +Input [3]: [t_time_sk#31, t_hour#32, t_minute#33] +Arguments: hashpartitioning(t_time_sk#31, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(148) Sort +Input [3]: [t_time_sk#31, t_hour#32, t_minute#33] +Arguments: [t_time_sk#31 ASC NULLS FIRST], false, 0 + +(149) SortMergeJoin +Left keys [1]: [time_sk#14] +Right keys [1]: [t_time_sk#31] +Join type: Inner +Join condition: None + +(150) Project +Output [5]: [i_brand_id#2, i_brand#3, ext_price#12, t_hour#32, t_minute#33] +Input [7]: [i_brand_id#2, i_brand#3, ext_price#12, time_sk#14, t_time_sk#31, t_hour#32, t_minute#33] + +(151) HashAggregate +Input [5]: [i_brand_id#2, i_brand#3, ext_price#12, t_hour#32, t_minute#33] +Keys [4]: [i_brand#3, i_brand_id#2, t_hour#32, t_minute#33] +Functions [1]: [partial_sum(UnscaledValue(ext_price#12))] +Aggregate Attributes [1]: [sum#36] +Results [5]: [i_brand#3, i_brand_id#2, t_hour#32, t_minute#33, sum#46] + +(152) Exchange +Input [5]: [i_brand#3, i_brand_id#2, t_hour#32, t_minute#33, sum#46] +Arguments: hashpartitioning(i_brand#3, i_brand_id#2, t_hour#32, t_minute#33, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(153) HashAggregate +Input [5]: [i_brand#3, i_brand_id#2, t_hour#32, t_minute#33, sum#46] +Keys [4]: [i_brand#3, i_brand_id#2, t_hour#32, t_minute#33] +Functions [1]: [sum(UnscaledValue(ext_price#12))] +Aggregate Attributes [1]: [sum(UnscaledValue(ext_price#12))#38] +Results [5]: [i_brand_id#2 AS brand_id#39, i_brand#3 AS brand#40, t_hour#32, t_minute#33, MakeDecimal(sum(UnscaledValue(ext_price#12))#38,17,2) AS ext_price#41] + +(154) Exchange +Input [5]: [brand_id#39, brand#40, t_hour#32, t_minute#33, ext_price#41] +Arguments: rangepartitioning(ext_price#41 DESC NULLS LAST, brand_id#39 ASC NULLS FIRST, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(155) Sort +Input [5]: [brand_id#39, brand#40, t_hour#32, t_minute#33, ext_price#41] +Arguments: [ext_price#41 DESC NULLS LAST, brand_id#39 ASC NULLS FIRST], true, 0 + +(156) AdaptiveSparkPlan +Output [5]: [brand_id#39, brand#40, t_hour#32, t_minute#33, ext_price#41] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q72.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q72.txt new file mode 100644 index 000000000..7a82f1cd3 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q72.txt @@ -0,0 +1,1380 @@ +== Physical Plan == +AdaptiveSparkPlan (256) ++- == Final Plan == + NativeTakeOrdered (166) + +- NativeProject (165) + +- NativeHashAggregate (164) + +- InputAdapter (163) + +- AQEShuffleRead (162) + +- ShuffleQueryStage (161), Statistics(X) + +- NativeShuffleExchange (160) + +- NativeHashAggregate (159) + +- NativeProject (158) + +- NativeSortMergeJoin LeftOuter (157) + :- NativeSort (148) + : +- InputAdapter (147) + : +- AQEShuffleRead (146) + : +- ShuffleQueryStage (145), Statistics(X) + : +- NativeShuffleExchange (144) + : +- NativeProject (143) + : +- NativeSortMergeJoin LeftOuter (142) + : :- NativeSort (133) + : : +- InputAdapter (132) + : : +- AQEShuffleRead (131) + : : +- ShuffleQueryStage (130), Statistics(X) + : : +- NativeShuffleExchange (129) + : : +- ConvertToNative (128) + : : +- * Project (127) + : : +- * SortMergeJoin Inner (126) + : : :- NativeSort (117) + : : : +- InputAdapter (116) + : : : +- AQEShuffleRead (115) + : : : +- ShuffleQueryStage (114), Statistics(X) + : : : +- NativeShuffleExchange (113) + : : : +- NativeProject (112) + : : : +- NativeSortMergeJoin Inner (111) + : : : :- NativeSort (102) + : : : : +- InputAdapter (101) + : : : : +- AQEShuffleRead (100) + : : : : +- ShuffleQueryStage (99), Statistics(X) + : : : : +- NativeShuffleExchange (98) + : : : : +- NativeProject (97) + : : : : +- NativeSortMergeJoin Inner (96) + : : : : :- NativeSort (86) + : : : : : +- InputAdapter (85) + : : : : : +- AQEShuffleRead (84) + : : : : : +- ShuffleQueryStage (83), Statistics(X) + : : : : : +- NativeShuffleExchange (82) + : : : : : +- NativeProject (81) + : : : : : +- NativeSortMergeJoin Inner (80) + : : : : : :- NativeSort (70) + : : : : : : +- InputAdapter (69) + : : : : : : +- AQEShuffleRead (68) + : : : : : : +- ShuffleQueryStage (67), Statistics(X) + : : : : : : +- NativeShuffleExchange (66) + : : : : : : +- NativeProject (65) + : : : : : : +- NativeSortMergeJoin Inner (64) + : : : : : : :- NativeSort (54) + : : : : : : : +- InputAdapter (53) + : : : : : : : +- AQEShuffleRead (52) + : : : : : : : +- ShuffleQueryStage (51), Statistics(X) + : : : : : : : +- NativeShuffleExchange (50) + : : : : : : : +- NativeProject (49) + : : : : : : : +- NativeSortMergeJoin Inner (48) + : : : : : : : :- NativeSort (39) + : : : : : : : : +- InputAdapter (38) + : : : : : : : : +- AQEShuffleRead (37) + : : : : : : : : +- ShuffleQueryStage (36), Statistics(X) + : : : : : : : : +- NativeShuffleExchange (35) + : : : : : : : : +- NativeProject (34) + : : : : : : : : +- NativeSortMergeJoin Inner (33) + : : : : : : : : :- NativeSort (24) + : : : : : : : : : +- InputAdapter (23) + : : : : : : : : : +- AQEShuffleRead (22) + : : : : : : : : : +- ShuffleQueryStage (21), Statistics(X) + : : : : : : : : : +- NativeShuffleExchange (20) + : : : : : : : : : +- ConvertToNative (19) + : : : : : : : : : +- * Project (18) + : : : : : : : : : +- * SortMergeJoin Inner (17) + : : : : : : : : : :- NativeSort (8) + : : : : : : : : : : +- InputAdapter (7) + : : : : : : : : : : +- AQEShuffleRead (6) + : : : : : : : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : : : : : : : +- NativeShuffleExchange (4) + : : : : : : : : : : +- NativeFilter (3) + : : : : : : : : : : +- InputAdapter (2) + : : : : : : : : : : +- NativeParquetScan (1) + : : : : : : : : : +- NativeSort (16) + : : : : : : : : : +- InputAdapter (15) + : : : : : : : : : +- AQEShuffleRead (14) + : : : : : : : : : +- ShuffleQueryStage (13), Statistics(X) + : : : : : : : : : +- NativeShuffleExchange (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 (47) + : : : : : : : +- InputAdapter (46) + : : : : : : : +- AQEShuffleRead (45) + : : : : : : : +- ShuffleQueryStage (44), Statistics(X) + : : : : : : : +- NativeShuffleExchange (43) + : : : : : : : +- NativeFilter (42) + : : : : : : : +- InputAdapter (41) + : : : : : : : +- NativeParquetScan (40) + : : : : : : +- NativeSort (63) + : : : : : : +- InputAdapter (62) + : : : : : : +- AQEShuffleRead (61) + : : : : : : +- ShuffleQueryStage (60), Statistics(X) + : : : : : : +- NativeShuffleExchange (59) + : : : : : : +- NativeProject (58) + : : : : : : +- NativeFilter (57) + : : : : : : +- InputAdapter (56) + : : : : : : +- NativeParquetScan (55) + : : : : : +- NativeSort (79) + : : : : : +- InputAdapter (78) + : : : : : +- AQEShuffleRead (77) + : : : : : +- ShuffleQueryStage (76), Statistics(X) + : : : : : +- NativeShuffleExchange (75) + : : : : : +- NativeProject (74) + : : : : : +- NativeFilter (73) + : : : : : +- InputAdapter (72) + : : : : : +- NativeParquetScan (71) + : : : : +- NativeSort (95) + : : : : +- InputAdapter (94) + : : : : +- AQEShuffleRead (93) + : : : : +- ShuffleQueryStage (92), Statistics(X) + : : : : +- NativeShuffleExchange (91) + : : : : +- NativeProject (90) + : : : : +- NativeFilter (89) + : : : : +- InputAdapter (88) + : : : : +- NativeParquetScan (87) + : : : +- NativeSort (110) + : : : +- InputAdapter (109) + : : : +- AQEShuffleRead (108) + : : : +- ShuffleQueryStage (107), Statistics(X) + : : : +- NativeShuffleExchange (106) + : : : +- NativeFilter (105) + : : : +- InputAdapter (104) + : : : +- NativeParquetScan (103) + : : +- NativeSort (125) + : : +- InputAdapter (124) + : : +- AQEShuffleRead (123) + : : +- ShuffleQueryStage (122), Statistics(X) + : : +- NativeShuffleExchange (121) + : : +- NativeFilter (120) + : : +- InputAdapter (119) + : : +- NativeParquetScan (118) + : +- NativeSort (141) + : +- InputAdapter (140) + : +- AQEShuffleRead (139) + : +- ShuffleQueryStage (138), Statistics(X) + : +- NativeShuffleExchange (137) + : +- NativeFilter (136) + : +- InputAdapter (135) + : +- NativeParquetScan (134) + +- NativeSort (156) + +- InputAdapter (155) + +- AQEShuffleRead (154) + +- ShuffleQueryStage (153), Statistics(X) + +- NativeShuffleExchange (152) + +- NativeFilter (151) + +- InputAdapter (150) + +- NativeParquetScan (149) ++- == Initial Plan == + TakeOrderedAndProject (255) + +- HashAggregate (254) + +- Exchange (253) + +- HashAggregate (252) + +- Project (251) + +- SortMergeJoin LeftOuter (250) + :- Sort (245) + : +- Exchange (244) + : +- Project (243) + : +- SortMergeJoin LeftOuter (242) + : :- Sort (237) + : : +- Exchange (236) + : : +- Project (235) + : : +- SortMergeJoin Inner (234) + : : :- Sort (229) + : : : +- Exchange (228) + : : : +- Project (227) + : : : +- SortMergeJoin Inner (226) + : : : :- Sort (221) + : : : : +- Exchange (220) + : : : : +- Project (219) + : : : : +- SortMergeJoin Inner (218) + : : : : :- Sort (212) + : : : : : +- Exchange (211) + : : : : : +- Project (210) + : : : : : +- SortMergeJoin Inner (209) + : : : : : :- Sort (203) + : : : : : : +- Exchange (202) + : : : : : : +- Project (201) + : : : : : : +- SortMergeJoin Inner (200) + : : : : : : :- Sort (194) + : : : : : : : +- Exchange (193) + : : : : : : : +- Project (192) + : : : : : : : +- SortMergeJoin Inner (191) + : : : : : : : :- Sort (186) + : : : : : : : : +- Exchange (185) + : : : : : : : : +- Project (184) + : : : : : : : : +- SortMergeJoin Inner (183) + : : : : : : : : :- Sort (178) + : : : : : : : : : +- Exchange (177) + : : : : : : : : : +- Project (176) + : : : : : : : : : +- SortMergeJoin Inner (175) + : : : : : : : : : :- Sort (170) + : : : : : : : : : : +- Exchange (169) + : : : : : : : : : : +- Filter (168) + : : : : : : : : : : +- Scan parquet (167) + : : : : : : : : : +- Sort (174) + : : : : : : : : : +- Exchange (173) + : : : : : : : : : +- Filter (172) + : : : : : : : : : +- Scan parquet (171) + : : : : : : : : +- Sort (182) + : : : : : : : : +- Exchange (181) + : : : : : : : : +- Filter (180) + : : : : : : : : +- Scan parquet (179) + : : : : : : : +- Sort (190) + : : : : : : : +- Exchange (189) + : : : : : : : +- Filter (188) + : : : : : : : +- Scan parquet (187) + : : : : : : +- Sort (199) + : : : : : : +- Exchange (198) + : : : : : : +- Project (197) + : : : : : : +- Filter (196) + : : : : : : +- Scan parquet (195) + : : : : : +- Sort (208) + : : : : : +- Exchange (207) + : : : : : +- Project (206) + : : : : : +- Filter (205) + : : : : : +- Scan parquet (204) + : : : : +- Sort (217) + : : : : +- Exchange (216) + : : : : +- Project (215) + : : : : +- Filter (214) + : : : : +- Scan parquet (213) + : : : +- Sort (225) + : : : +- Exchange (224) + : : : +- Filter (223) + : : : +- Scan parquet (222) + : : +- Sort (233) + : : +- Exchange (232) + : : +- Filter (231) + : : +- Scan parquet (230) + : +- Sort (241) + : +- Exchange (240) + : +- Filter (239) + : +- Scan parquet (238) + +- Sort (249) + +- Exchange (248) + +- Filter (247) + +- Scan parquet (246) + + +(167) Scan parquet +Output [8]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, cs_quantity#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_quantity), IsNotNull(cs_item_sk), IsNotNull(cs_bill_cdemo_sk), IsNotNull(cs_bill_hdemo_sk), IsNotNull(cs_sold_date_sk), IsNotNull(cs_ship_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [8]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, cs_quantity#8] +Arguments: [#1, #2, #3, #4, #5, #6, #7, #8] + +(3) NativeFilter +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Condition : (((((isnotnull(cs_quantity#8) AND isnotnull(cs_item_sk#5)) AND isnotnull(cs_bill_cdemo_sk#3)) AND isnotnull(cs_bill_hdemo_sk#4)) AND isnotnull(cs_sold_date_sk#1)) AND isnotnull(cs_ship_date_sk#2)) + +(4) NativeShuffleExchange +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: hashpartitioning(cs_item_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: X + +(6) AQEShuffleRead +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: coalesced + +(7) InputAdapter +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] + +(8) NativeSort +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: [cs_item_sk#5 ASC NULLS FIRST], false + +(171) Scan parquet +Output [4]: [inv_date_sk#9, inv_item_sk#10, inv_warehouse_sk#11, inv_quantity_on_hand#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(inv_quantity_on_hand), IsNotNull(inv_item_sk), IsNotNull(inv_warehouse_sk), IsNotNull(inv_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [4]: [inv_date_sk#9, inv_item_sk#10, inv_warehouse_sk#11, inv_quantity_on_hand#12] +Arguments: [#9, #10, #11, #12] + +(11) NativeFilter +Input [4]: [#9#9, #10#10, #11#11, #12#12] +Condition : (((isnotnull(inv_quantity_on_hand#12) AND isnotnull(inv_item_sk#10)) AND isnotnull(inv_warehouse_sk#11)) AND isnotnull(inv_date_sk#9)) + +(12) NativeShuffleExchange +Input [4]: [#9#9, #10#10, #11#11, #12#12] +Arguments: hashpartitioning(inv_item_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [4]: [#9#9, #10#10, #11#11, #12#12] +Arguments: X + +(14) AQEShuffleRead +Input [4]: [#9#9, #10#10, #11#11, #12#12] +Arguments: coalesced + +(15) InputAdapter +Input [4]: [#9#9, #10#10, #11#11, #12#12] + +(16) NativeSort +Input [4]: [#9#9, #10#10, #11#11, #12#12] +Arguments: [inv_item_sk#10 ASC NULLS FIRST], false + +(17) SortMergeJoin [codegen id : 1] +Left keys [1]: [cs_item_sk#5] +Right keys [1]: [inv_item_sk#10] +Join type: Inner +Join condition: (inv_quantity_on_hand#12 < cs_quantity#8) + +(18) Project [codegen id : 1] +Output [9]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, inv_warehouse_sk#11] +Input [12]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9, #10#10, #11#11, #12#12] + +(19) ConvertToNative +Input [9]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, inv_warehouse_sk#11] + +(20) NativeShuffleExchange +Input [9]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, inv_warehouse_sk#11] +Arguments: hashpartitioning(inv_warehouse_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [9]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, inv_warehouse_sk#11] +Arguments: X + +(22) AQEShuffleRead +Input [9]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, inv_warehouse_sk#11] +Arguments: coalesced + +(23) InputAdapter +Input [9]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, inv_warehouse_sk#11] + +(24) NativeSort +Input [9]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, inv_warehouse_sk#11] +Arguments: [inv_warehouse_sk#11 ASC NULLS FIRST], false + +(179) Scan parquet +Output [2]: [w_warehouse_sk#13, w_warehouse_name#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(w_warehouse_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [2]: [w_warehouse_sk#13, w_warehouse_name#14] +Arguments: [#13, #14] + +(27) NativeFilter +Input [2]: [#13#13, #14#14] +Condition : isnotnull(w_warehouse_sk#13) + +(28) NativeShuffleExchange +Input [2]: [#13#13, #14#14] +Arguments: hashpartitioning(w_warehouse_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(29) ShuffleQueryStage +Output [2]: [#13#13, #14#14] +Arguments: X + +(30) AQEShuffleRead +Input [2]: [#13#13, #14#14] +Arguments: coalesced + +(31) InputAdapter +Input [2]: [#13#13, #14#14] + +(32) NativeSort +Input [2]: [#13#13, #14#14] +Arguments: [w_warehouse_sk#13 ASC NULLS FIRST], false + +(33) NativeSortMergeJoin +Left keys [1]: [inv_warehouse_sk#11] +Right keys [1]: [w_warehouse_sk#13] +Join type: Inner +Join condition: None + +(34) NativeProject +Output [9]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14] +Input [11]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, inv_warehouse_sk#11, #13#13, #14#14] + +(35) NativeShuffleExchange +Input [9]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14] +Arguments: hashpartitioning(cs_item_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(36) ShuffleQueryStage +Output [9]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14] +Arguments: X + +(37) AQEShuffleRead +Input [9]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14] +Arguments: coalesced + +(38) InputAdapter +Input [9]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14] + +(39) NativeSort +Input [9]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14] +Arguments: [cs_item_sk#5 ASC NULLS FIRST], false + +(187) Scan parquet +Output [2]: [i_item_sk#15, i_item_desc#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(41) InputAdapter +Input [2]: [i_item_sk#15, i_item_desc#16] +Arguments: [#15, #16] + +(42) NativeFilter +Input [2]: [#15#15, #16#16] +Condition : isnotnull(i_item_sk#15) + +(43) NativeShuffleExchange +Input [2]: [#15#15, #16#16] +Arguments: hashpartitioning(i_item_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) ShuffleQueryStage +Output [2]: [#15#15, #16#16] +Arguments: X + +(45) AQEShuffleRead +Input [2]: [#15#15, #16#16] +Arguments: coalesced + +(46) InputAdapter +Input [2]: [#15#15, #16#16] + +(47) NativeSort +Input [2]: [#15#15, #16#16] +Arguments: [i_item_sk#15 ASC NULLS FIRST], false + +(48) NativeSortMergeJoin +Left keys [1]: [cs_item_sk#5] +Right keys [1]: [i_item_sk#15] +Join type: Inner +Join condition: None + +(49) NativeProject +Output [10]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16] +Input [11]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, #15#15, #16#16] + +(50) NativeShuffleExchange +Input [10]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16] +Arguments: hashpartitioning(cs_bill_cdemo_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(51) ShuffleQueryStage +Output [10]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16] +Arguments: X + +(52) AQEShuffleRead +Input [10]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16] +Arguments: coalesced + +(53) InputAdapter +Input [10]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16] + +(54) NativeSort +Input [10]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16] +Arguments: [cs_bill_cdemo_sk#3 ASC NULLS FIRST], false + +(195) Scan parquet +Output [2]: [cd_demo_sk#17, cd_marital_status#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_marital_status), EqualTo(cd_marital_status,D), IsNotNull(cd_demo_sk)] +ReadSchema: struct + +(56) InputAdapter +Input [2]: [cd_demo_sk#17, cd_marital_status#18] +Arguments: [#17, #18] + +(57) NativeFilter +Input [2]: [#17#17, #18#18] +Condition : ((isnotnull(cd_marital_status#18) AND (cd_marital_status#18 = D)) AND isnotnull(cd_demo_sk#17)) + +(58) NativeProject +Output [1]: [cd_demo_sk#17] +Input [2]: [#17#17, #18#18] + +(59) NativeShuffleExchange +Input [1]: [cd_demo_sk#17] +Arguments: hashpartitioning(cd_demo_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(60) ShuffleQueryStage +Output [1]: [cd_demo_sk#17] +Arguments: X + +(61) AQEShuffleRead +Input [1]: [cd_demo_sk#17] +Arguments: coalesced + +(62) InputAdapter +Input [1]: [cd_demo_sk#17] + +(63) NativeSort +Input [1]: [cd_demo_sk#17] +Arguments: [cd_demo_sk#17 ASC NULLS FIRST], false + +(64) NativeSortMergeJoin +Left keys [1]: [cs_bill_cdemo_sk#3] +Right keys [1]: [cd_demo_sk#17] +Join type: Inner +Join condition: None + +(65) NativeProject +Output [9]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16] +Input [11]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16, cd_demo_sk#17] + +(66) NativeShuffleExchange +Input [9]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16] +Arguments: hashpartitioning(cs_bill_hdemo_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(67) ShuffleQueryStage +Output [9]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16] +Arguments: X + +(68) AQEShuffleRead +Input [9]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16] +Arguments: coalesced + +(69) InputAdapter +Input [9]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16] + +(70) NativeSort +Input [9]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16] +Arguments: [cs_bill_hdemo_sk#4 ASC NULLS FIRST], false + +(204) Scan parquet +Output [2]: [hd_demo_sk#19, hd_buy_potential#20] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(hd_buy_potential), EqualTo(hd_buy_potential,>10000), IsNotNull(hd_demo_sk)] +ReadSchema: struct + +(72) InputAdapter +Input [2]: [hd_demo_sk#19, hd_buy_potential#20] +Arguments: [#19, #20] + +(73) NativeFilter +Input [2]: [#19#19, #20#20] +Condition : ((isnotnull(hd_buy_potential#20) AND (hd_buy_potential#20 = >10000)) AND isnotnull(hd_demo_sk#19)) + +(74) NativeProject +Output [1]: [hd_demo_sk#19] +Input [2]: [#19#19, #20#20] + +(75) NativeShuffleExchange +Input [1]: [hd_demo_sk#19] +Arguments: hashpartitioning(hd_demo_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(76) ShuffleQueryStage +Output [1]: [hd_demo_sk#19] +Arguments: X + +(77) AQEShuffleRead +Input [1]: [hd_demo_sk#19] +Arguments: coalesced + +(78) InputAdapter +Input [1]: [hd_demo_sk#19] + +(79) NativeSort +Input [1]: [hd_demo_sk#19] +Arguments: [hd_demo_sk#19 ASC NULLS FIRST], false + +(80) NativeSortMergeJoin +Left keys [1]: [cs_bill_hdemo_sk#4] +Right keys [1]: [hd_demo_sk#19] +Join type: Inner +Join condition: None + +(81) NativeProject +Output [8]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16] +Input [10]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16, hd_demo_sk#19] + +(82) NativeShuffleExchange +Input [8]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16] +Arguments: hashpartitioning(cs_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(83) ShuffleQueryStage +Output [8]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16] +Arguments: X + +(84) AQEShuffleRead +Input [8]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16] +Arguments: coalesced + +(85) InputAdapter +Input [8]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16] + +(86) NativeSort +Input [8]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16] +Arguments: [cs_sold_date_sk#1 ASC NULLS FIRST], false + +(213) Scan parquet +Output [4]: [d_date_sk#21, d_date#22, d_week_seq#23, d_year#24] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,1999), IsNotNull(d_date_sk), IsNotNull(d_week_seq), IsNotNull(d_date)] +ReadSchema: struct + +(88) InputAdapter +Input [4]: [d_date_sk#21, d_date#22, d_week_seq#23, d_year#24] +Arguments: [#21, #22, #23, #24] + +(89) NativeFilter +Input [4]: [#21#21, #22#22, #23#23, #24#24] +Condition : ((((isnotnull(d_year#24) AND (d_year#24 = 1999)) AND isnotnull(d_date_sk#21)) AND isnotnull(d_week_seq#23)) AND isnotnull(d_date#22)) + +(90) NativeProject +Output [3]: [d_date_sk#21, d_date#22, d_week_seq#23] +Input [4]: [#21#21, #22#22, #23#23, #24#24] + +(91) NativeShuffleExchange +Input [3]: [d_date_sk#21, d_date#22, d_week_seq#23] +Arguments: hashpartitioning(d_date_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(92) ShuffleQueryStage +Output [3]: [d_date_sk#21, d_date#22, d_week_seq#23] +Arguments: X + +(93) AQEShuffleRead +Input [3]: [d_date_sk#21, d_date#22, d_week_seq#23] +Arguments: coalesced + +(94) InputAdapter +Input [3]: [d_date_sk#21, d_date#22, d_week_seq#23] + +(95) NativeSort +Input [3]: [d_date_sk#21, d_date#22, d_week_seq#23] +Arguments: [d_date_sk#21 ASC NULLS FIRST], false + +(96) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#1] +Right keys [1]: [d_date_sk#21] +Join type: Inner +Join condition: None + +(97) NativeProject +Output [9]: [cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16, d_date#22, d_week_seq#23] +Input [11]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16, d_date_sk#21, d_date#22, d_week_seq#23] + +(98) NativeShuffleExchange +Input [9]: [cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16, d_date#22, d_week_seq#23] +Arguments: hashpartitioning(d_week_seq#23, inv_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(99) ShuffleQueryStage +Output [9]: [cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16, d_date#22, d_week_seq#23] +Arguments: X + +(100) AQEShuffleRead +Input [9]: [cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16, d_date#22, d_week_seq#23] +Arguments: coalesced + +(101) InputAdapter +Input [9]: [cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16, d_date#22, d_week_seq#23] + +(102) NativeSort +Input [9]: [cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16, d_date#22, d_week_seq#23] +Arguments: [d_week_seq#23 ASC NULLS FIRST, inv_date_sk#9 ASC NULLS FIRST], false + +(222) Scan parquet +Output [2]: [d_date_sk#25, d_week_seq#26] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_week_seq), IsNotNull(d_date_sk)] +ReadSchema: struct + +(104) InputAdapter +Input [2]: [d_date_sk#25, d_week_seq#26] +Arguments: [#25, #26] + +(105) NativeFilter +Input [2]: [#25#25, #26#26] +Condition : (isnotnull(d_week_seq#26) AND isnotnull(d_date_sk#25)) + +(106) NativeShuffleExchange +Input [2]: [#25#25, #26#26] +Arguments: hashpartitioning(d_week_seq#26, d_date_sk#25, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(107) ShuffleQueryStage +Output [2]: [#25#25, #26#26] +Arguments: X + +(108) AQEShuffleRead +Input [2]: [#25#25, #26#26] +Arguments: coalesced + +(109) InputAdapter +Input [2]: [#25#25, #26#26] + +(110) NativeSort +Input [2]: [#25#25, #26#26] +Arguments: [d_week_seq#26 ASC NULLS FIRST, d_date_sk#25 ASC NULLS FIRST], false + +(111) NativeSortMergeJoin +Left keys [2]: [d_week_seq#23, inv_date_sk#9] +Right keys [2]: [d_week_seq#26, d_date_sk#25] +Join type: Inner +Join condition: None + +(112) NativeProject +Output [8]: [cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_date#22, d_week_seq#23] +Input [11]: [cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16, d_date#22, d_week_seq#23, #25#25, #26#26] + +(113) NativeShuffleExchange +Input [8]: [cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_date#22, d_week_seq#23] +Arguments: hashpartitioning(cs_ship_date_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(114) ShuffleQueryStage +Output [8]: [cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_date#22, d_week_seq#23] +Arguments: X + +(115) AQEShuffleRead +Input [8]: [cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_date#22, d_week_seq#23] +Arguments: coalesced + +(116) InputAdapter +Input [8]: [cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_date#22, d_week_seq#23] + +(117) NativeSort +Input [8]: [cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_date#22, d_week_seq#23] +Arguments: [cs_ship_date_sk#2 ASC NULLS FIRST], false + +(230) Scan parquet +Output [2]: [d_date_sk#27, d_date#28] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), IsNotNull(d_date_sk)] +ReadSchema: struct + +(119) InputAdapter +Input [2]: [d_date_sk#27, d_date#28] +Arguments: [#27, #28] + +(120) NativeFilter +Input [2]: [#27#27, #28#28] +Condition : (isnotnull(d_date#28) AND isnotnull(d_date_sk#27)) + +(121) NativeShuffleExchange +Input [2]: [#27#27, #28#28] +Arguments: hashpartitioning(d_date_sk#27, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(122) ShuffleQueryStage +Output [2]: [#27#27, #28#28] +Arguments: X + +(123) AQEShuffleRead +Input [2]: [#27#27, #28#28] +Arguments: coalesced + +(124) InputAdapter +Input [2]: [#27#27, #28#28] + +(125) NativeSort +Input [2]: [#27#27, #28#28] +Arguments: [d_date_sk#27 ASC NULLS FIRST], false + +(126) SortMergeJoin [codegen id : 2] +Left keys [1]: [cs_ship_date_sk#2] +Right keys [1]: [d_date_sk#27] +Join type: Inner +Join condition: (d_date#28 > date_add(d_date#22, 5)) + +(127) Project [codegen id : 2] +Output [6]: [cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_week_seq#23] +Input [10]: [cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_date#22, d_week_seq#23, #27#27, #28#28] + +(128) ConvertToNative +Input [6]: [cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_week_seq#23] + +(129) NativeShuffleExchange +Input [6]: [cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_week_seq#23] +Arguments: hashpartitioning(cs_promo_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(130) ShuffleQueryStage +Output [6]: [cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_week_seq#23] +Arguments: X + +(131) AQEShuffleRead +Input [6]: [cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_week_seq#23] +Arguments: coalesced + +(132) InputAdapter +Input [6]: [cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_week_seq#23] + +(133) NativeSort +Input [6]: [cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_week_seq#23] +Arguments: [cs_promo_sk#6 ASC NULLS FIRST], false + +(238) Scan parquet +Output [1]: [p_promo_sk#29] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(p_promo_sk)] +ReadSchema: struct + +(135) InputAdapter +Input [1]: [p_promo_sk#29] +Arguments: [#29] + +(136) NativeFilter +Input [1]: [#29#29] +Condition : isnotnull(p_promo_sk#29) + +(137) NativeShuffleExchange +Input [1]: [#29#29] +Arguments: hashpartitioning(p_promo_sk#29, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(138) ShuffleQueryStage +Output [1]: [#29#29] +Arguments: X + +(139) AQEShuffleRead +Input [1]: [#29#29] +Arguments: coalesced + +(140) InputAdapter +Input [1]: [#29#29] + +(141) NativeSort +Input [1]: [#29#29] +Arguments: [p_promo_sk#29 ASC NULLS FIRST], false + +(142) NativeSortMergeJoin +Left keys [1]: [cs_promo_sk#6] +Right keys [1]: [p_promo_sk#29] +Join type: LeftOuter +Join condition: None + +(143) NativeProject +Output [5]: [cs_item_sk#5, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_week_seq#23] +Input [7]: [cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_week_seq#23, #29#29] + +(144) NativeShuffleExchange +Input [5]: [cs_item_sk#5, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_week_seq#23] +Arguments: hashpartitioning(cs_item_sk#5, cs_order_number#7, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(145) ShuffleQueryStage +Output [5]: [cs_item_sk#5, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_week_seq#23] +Arguments: X + +(146) AQEShuffleRead +Input [5]: [cs_item_sk#5, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_week_seq#23] +Arguments: coalesced + +(147) InputAdapter +Input [5]: [cs_item_sk#5, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_week_seq#23] + +(148) NativeSort +Input [5]: [cs_item_sk#5, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_week_seq#23] +Arguments: [cs_item_sk#5 ASC NULLS FIRST, cs_order_number#7 ASC NULLS FIRST], false + +(246) Scan parquet +Output [2]: [cr_item_sk#30, cr_order_number#31] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cr_item_sk), IsNotNull(cr_order_number)] +ReadSchema: struct + +(150) InputAdapter +Input [2]: [cr_item_sk#30, cr_order_number#31] +Arguments: [#30, #31] + +(151) NativeFilter +Input [2]: [#30#30, #31#31] +Condition : (isnotnull(cr_item_sk#30) AND isnotnull(cr_order_number#31)) + +(152) NativeShuffleExchange +Input [2]: [#30#30, #31#31] +Arguments: hashpartitioning(cr_item_sk#30, cr_order_number#31, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(153) ShuffleQueryStage +Output [2]: [#30#30, #31#31] +Arguments: X + +(154) AQEShuffleRead +Input [2]: [#30#30, #31#31] +Arguments: coalesced + +(155) InputAdapter +Input [2]: [#30#30, #31#31] + +(156) NativeSort +Input [2]: [#30#30, #31#31] +Arguments: [cr_item_sk#30 ASC NULLS FIRST, cr_order_number#31 ASC NULLS FIRST], false + +(157) NativeSortMergeJoin +Left keys [2]: [cs_item_sk#5, cs_order_number#7] +Right keys [2]: [cr_item_sk#30, cr_order_number#31] +Join type: LeftOuter +Join condition: None + +(158) NativeProject +Output [3]: [w_warehouse_name#14, i_item_desc#16, d_week_seq#23] +Input [7]: [cs_item_sk#5, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_week_seq#23, #30#30, #31#31] + +(159) NativeHashAggregate +Input [3]: [w_warehouse_name#14, i_item_desc#16, d_week_seq#23] +Keys [3]: [i_item_desc#16, w_warehouse_name#14, d_week_seq#23] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#32] +Results [4]: [i_item_desc#16, w_warehouse_name#14, d_week_seq#23, #33#33] + +(160) NativeShuffleExchange +Input [4]: [i_item_desc#16, w_warehouse_name#14, d_week_seq#23, #33#33] +Arguments: hashpartitioning(i_item_desc#16, w_warehouse_name#14, d_week_seq#23, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(161) ShuffleQueryStage +Output [4]: [i_item_desc#16, w_warehouse_name#14, d_week_seq#23, #33#33] +Arguments: X + +(162) AQEShuffleRead +Input [4]: [i_item_desc#16, w_warehouse_name#14, d_week_seq#23, #33#33] +Arguments: coalesced + +(163) InputAdapter +Input [4]: [i_item_desc#16, w_warehouse_name#14, d_week_seq#23, #33#33] + +(164) NativeHashAggregate +Input [4]: [i_item_desc#16, w_warehouse_name#14, d_week_seq#23, #33#33] +Keys [3]: [i_item_desc#16, w_warehouse_name#14, d_week_seq#23] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#34] +Results [4]: [i_item_desc#16, w_warehouse_name#14, d_week_seq#23, count(1)#34] + +(165) NativeProject +Output [6]: [i_item_desc#16, w_warehouse_name#14, d_week_seq#23, count(1)#34 AS no_promo#35, count(1)#34 AS promo#36, count(1)#34 AS total_cnt#37] +Input [4]: [i_item_desc#16, w_warehouse_name#14, d_week_seq#23, count(1)#34] + +(166) NativeTakeOrdered +Input [6]: [i_item_desc#16, w_warehouse_name#14, d_week_seq#23, no_promo#35, promo#36, total_cnt#37] +Arguments: X, [total_cnt#37 DESC NULLS LAST, i_item_desc#16 ASC NULLS FIRST, w_warehouse_name#14 ASC NULLS FIRST, d_week_seq#23 ASC NULLS FIRST] + +(167) Scan parquet +Output [8]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, cs_quantity#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_quantity), IsNotNull(cs_item_sk), IsNotNull(cs_bill_cdemo_sk), IsNotNull(cs_bill_hdemo_sk), IsNotNull(cs_sold_date_sk), IsNotNull(cs_ship_date_sk)] +ReadSchema: struct + +(168) Filter +Input [8]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, cs_quantity#8] +Condition : (((((isnotnull(cs_quantity#8) AND isnotnull(cs_item_sk#5)) AND isnotnull(cs_bill_cdemo_sk#3)) AND isnotnull(cs_bill_hdemo_sk#4)) AND isnotnull(cs_sold_date_sk#1)) AND isnotnull(cs_ship_date_sk#2)) + +(169) Exchange +Input [8]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, cs_quantity#8] +Arguments: hashpartitioning(cs_item_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(170) Sort +Input [8]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, cs_quantity#8] +Arguments: [cs_item_sk#5 ASC NULLS FIRST], false, 0 + +(171) Scan parquet +Output [4]: [inv_date_sk#9, inv_item_sk#10, inv_warehouse_sk#11, inv_quantity_on_hand#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(inv_quantity_on_hand), IsNotNull(inv_item_sk), IsNotNull(inv_warehouse_sk), IsNotNull(inv_date_sk)] +ReadSchema: struct + +(172) Filter +Input [4]: [inv_date_sk#9, inv_item_sk#10, inv_warehouse_sk#11, inv_quantity_on_hand#12] +Condition : (((isnotnull(inv_quantity_on_hand#12) AND isnotnull(inv_item_sk#10)) AND isnotnull(inv_warehouse_sk#11)) AND isnotnull(inv_date_sk#9)) + +(173) Exchange +Input [4]: [inv_date_sk#9, inv_item_sk#10, inv_warehouse_sk#11, inv_quantity_on_hand#12] +Arguments: hashpartitioning(inv_item_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(174) Sort +Input [4]: [inv_date_sk#9, inv_item_sk#10, inv_warehouse_sk#11, inv_quantity_on_hand#12] +Arguments: [inv_item_sk#10 ASC NULLS FIRST], false, 0 + +(175) SortMergeJoin +Left keys [1]: [cs_item_sk#5] +Right keys [1]: [inv_item_sk#10] +Join type: Inner +Join condition: (inv_quantity_on_hand#12 < cs_quantity#8) + +(176) Project +Output [9]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, inv_warehouse_sk#11] +Input [12]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, cs_quantity#8, inv_date_sk#9, inv_item_sk#10, inv_warehouse_sk#11, inv_quantity_on_hand#12] + +(177) Exchange +Input [9]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, inv_warehouse_sk#11] +Arguments: hashpartitioning(inv_warehouse_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(178) Sort +Input [9]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, inv_warehouse_sk#11] +Arguments: [inv_warehouse_sk#11 ASC NULLS FIRST], false, 0 + +(179) Scan parquet +Output [2]: [w_warehouse_sk#13, w_warehouse_name#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(w_warehouse_sk)] +ReadSchema: struct + +(180) Filter +Input [2]: [w_warehouse_sk#13, w_warehouse_name#14] +Condition : isnotnull(w_warehouse_sk#13) + +(181) Exchange +Input [2]: [w_warehouse_sk#13, w_warehouse_name#14] +Arguments: hashpartitioning(w_warehouse_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(182) Sort +Input [2]: [w_warehouse_sk#13, w_warehouse_name#14] +Arguments: [w_warehouse_sk#13 ASC NULLS FIRST], false, 0 + +(183) SortMergeJoin +Left keys [1]: [inv_warehouse_sk#11] +Right keys [1]: [w_warehouse_sk#13] +Join type: Inner +Join condition: None + +(184) Project +Output [9]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14] +Input [11]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, inv_warehouse_sk#11, w_warehouse_sk#13, w_warehouse_name#14] + +(185) Exchange +Input [9]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14] +Arguments: hashpartitioning(cs_item_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(186) Sort +Input [9]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14] +Arguments: [cs_item_sk#5 ASC NULLS FIRST], false, 0 + +(187) Scan parquet +Output [2]: [i_item_sk#15, i_item_desc#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(188) Filter +Input [2]: [i_item_sk#15, i_item_desc#16] +Condition : isnotnull(i_item_sk#15) + +(189) Exchange +Input [2]: [i_item_sk#15, i_item_desc#16] +Arguments: hashpartitioning(i_item_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(190) Sort +Input [2]: [i_item_sk#15, i_item_desc#16] +Arguments: [i_item_sk#15 ASC NULLS FIRST], false, 0 + +(191) SortMergeJoin +Left keys [1]: [cs_item_sk#5] +Right keys [1]: [i_item_sk#15] +Join type: Inner +Join condition: None + +(192) Project +Output [10]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16] +Input [11]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_sk#15, i_item_desc#16] + +(193) Exchange +Input [10]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16] +Arguments: hashpartitioning(cs_bill_cdemo_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(194) Sort +Input [10]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16] +Arguments: [cs_bill_cdemo_sk#3 ASC NULLS FIRST], false, 0 + +(195) Scan parquet +Output [2]: [cd_demo_sk#17, cd_marital_status#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_marital_status), EqualTo(cd_marital_status,D), IsNotNull(cd_demo_sk)] +ReadSchema: struct + +(196) Filter +Input [2]: [cd_demo_sk#17, cd_marital_status#18] +Condition : ((isnotnull(cd_marital_status#18) AND (cd_marital_status#18 = D)) AND isnotnull(cd_demo_sk#17)) + +(197) Project +Output [1]: [cd_demo_sk#17] +Input [2]: [cd_demo_sk#17, cd_marital_status#18] + +(198) Exchange +Input [1]: [cd_demo_sk#17] +Arguments: hashpartitioning(cd_demo_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(199) Sort +Input [1]: [cd_demo_sk#17] +Arguments: [cd_demo_sk#17 ASC NULLS FIRST], false, 0 + +(200) SortMergeJoin +Left keys [1]: [cs_bill_cdemo_sk#3] +Right keys [1]: [cd_demo_sk#17] +Join type: Inner +Join condition: None + +(201) Project +Output [9]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16] +Input [11]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_cdemo_sk#3, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16, cd_demo_sk#17] + +(202) Exchange +Input [9]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16] +Arguments: hashpartitioning(cs_bill_hdemo_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(203) Sort +Input [9]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16] +Arguments: [cs_bill_hdemo_sk#4 ASC NULLS FIRST], false, 0 + +(204) Scan parquet +Output [2]: [hd_demo_sk#19, hd_buy_potential#20] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(hd_buy_potential), EqualTo(hd_buy_potential,>10000), IsNotNull(hd_demo_sk)] +ReadSchema: struct + +(205) Filter +Input [2]: [hd_demo_sk#19, hd_buy_potential#20] +Condition : ((isnotnull(hd_buy_potential#20) AND (hd_buy_potential#20 = >10000)) AND isnotnull(hd_demo_sk#19)) + +(206) Project +Output [1]: [hd_demo_sk#19] +Input [2]: [hd_demo_sk#19, hd_buy_potential#20] + +(207) Exchange +Input [1]: [hd_demo_sk#19] +Arguments: hashpartitioning(hd_demo_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=31] + +(208) Sort +Input [1]: [hd_demo_sk#19] +Arguments: [hd_demo_sk#19 ASC NULLS FIRST], false, 0 + +(209) SortMergeJoin +Left keys [1]: [cs_bill_hdemo_sk#4] +Right keys [1]: [hd_demo_sk#19] +Join type: Inner +Join condition: None + +(210) Project +Output [8]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16] +Input [10]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_bill_hdemo_sk#4, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16, hd_demo_sk#19] + +(211) Exchange +Input [8]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16] +Arguments: hashpartitioning(cs_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=32] + +(212) Sort +Input [8]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16] +Arguments: [cs_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(213) Scan parquet +Output [4]: [d_date_sk#21, d_date#22, d_week_seq#23, d_year#24] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,1999), IsNotNull(d_date_sk), IsNotNull(d_week_seq), IsNotNull(d_date)] +ReadSchema: struct + +(214) Filter +Input [4]: [d_date_sk#21, d_date#22, d_week_seq#23, d_year#24] +Condition : ((((isnotnull(d_year#24) AND (d_year#24 = 1999)) AND isnotnull(d_date_sk#21)) AND isnotnull(d_week_seq#23)) AND isnotnull(d_date#22)) + +(215) Project +Output [3]: [d_date_sk#21, d_date#22, d_week_seq#23] +Input [4]: [d_date_sk#21, d_date#22, d_week_seq#23, d_year#24] + +(216) Exchange +Input [3]: [d_date_sk#21, d_date#22, d_week_seq#23] +Arguments: hashpartitioning(d_date_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=33] + +(217) Sort +Input [3]: [d_date_sk#21, d_date#22, d_week_seq#23] +Arguments: [d_date_sk#21 ASC NULLS FIRST], false, 0 + +(218) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#1] +Right keys [1]: [d_date_sk#21] +Join type: Inner +Join condition: None + +(219) Project +Output [9]: [cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16, d_date#22, d_week_seq#23] +Input [11]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16, d_date_sk#21, d_date#22, d_week_seq#23] + +(220) Exchange +Input [9]: [cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16, d_date#22, d_week_seq#23] +Arguments: hashpartitioning(d_week_seq#23, inv_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=34] + +(221) Sort +Input [9]: [cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16, d_date#22, d_week_seq#23] +Arguments: [d_week_seq#23 ASC NULLS FIRST, inv_date_sk#9 ASC NULLS FIRST], false, 0 + +(222) Scan parquet +Output [2]: [d_date_sk#25, d_week_seq#26] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_week_seq), IsNotNull(d_date_sk)] +ReadSchema: struct + +(223) Filter +Input [2]: [d_date_sk#25, d_week_seq#26] +Condition : (isnotnull(d_week_seq#26) AND isnotnull(d_date_sk#25)) + +(224) Exchange +Input [2]: [d_date_sk#25, d_week_seq#26] +Arguments: hashpartitioning(d_week_seq#26, d_date_sk#25, 100), ENSURE_REQUIREMENTS, [plan_id=35] + +(225) Sort +Input [2]: [d_date_sk#25, d_week_seq#26] +Arguments: [d_week_seq#26 ASC NULLS FIRST, d_date_sk#25 ASC NULLS FIRST], false, 0 + +(226) SortMergeJoin +Left keys [2]: [d_week_seq#23, inv_date_sk#9] +Right keys [2]: [d_week_seq#26, d_date_sk#25] +Join type: Inner +Join condition: None + +(227) Project +Output [8]: [cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_date#22, d_week_seq#23] +Input [11]: [cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, inv_date_sk#9, w_warehouse_name#14, i_item_desc#16, d_date#22, d_week_seq#23, d_date_sk#25, d_week_seq#26] + +(228) Exchange +Input [8]: [cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_date#22, d_week_seq#23] +Arguments: hashpartitioning(cs_ship_date_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=36] + +(229) Sort +Input [8]: [cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_date#22, d_week_seq#23] +Arguments: [cs_ship_date_sk#2 ASC NULLS FIRST], false, 0 + +(230) Scan parquet +Output [2]: [d_date_sk#27, d_date#28] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), IsNotNull(d_date_sk)] +ReadSchema: struct + +(231) Filter +Input [2]: [d_date_sk#27, d_date#28] +Condition : (isnotnull(d_date#28) AND isnotnull(d_date_sk#27)) + +(232) Exchange +Input [2]: [d_date_sk#27, d_date#28] +Arguments: hashpartitioning(d_date_sk#27, 100), ENSURE_REQUIREMENTS, [plan_id=37] + +(233) Sort +Input [2]: [d_date_sk#27, d_date#28] +Arguments: [d_date_sk#27 ASC NULLS FIRST], false, 0 + +(234) SortMergeJoin +Left keys [1]: [cs_ship_date_sk#2] +Right keys [1]: [d_date_sk#27] +Join type: Inner +Join condition: (d_date#28 > date_add(d_date#22, 5)) + +(235) Project +Output [6]: [cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_week_seq#23] +Input [10]: [cs_ship_date_sk#2, cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_date#22, d_week_seq#23, d_date_sk#27, d_date#28] + +(236) Exchange +Input [6]: [cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_week_seq#23] +Arguments: hashpartitioning(cs_promo_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=38] + +(237) Sort +Input [6]: [cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_week_seq#23] +Arguments: [cs_promo_sk#6 ASC NULLS FIRST], false, 0 + +(238) Scan parquet +Output [1]: [p_promo_sk#29] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(p_promo_sk)] +ReadSchema: struct + +(239) Filter +Input [1]: [p_promo_sk#29] +Condition : isnotnull(p_promo_sk#29) + +(240) Exchange +Input [1]: [p_promo_sk#29] +Arguments: hashpartitioning(p_promo_sk#29, 100), ENSURE_REQUIREMENTS, [plan_id=39] + +(241) Sort +Input [1]: [p_promo_sk#29] +Arguments: [p_promo_sk#29 ASC NULLS FIRST], false, 0 + +(242) SortMergeJoin +Left keys [1]: [cs_promo_sk#6] +Right keys [1]: [p_promo_sk#29] +Join type: LeftOuter +Join condition: None + +(243) Project +Output [5]: [cs_item_sk#5, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_week_seq#23] +Input [7]: [cs_item_sk#5, cs_promo_sk#6, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_week_seq#23, p_promo_sk#29] + +(244) Exchange +Input [5]: [cs_item_sk#5, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_week_seq#23] +Arguments: hashpartitioning(cs_item_sk#5, cs_order_number#7, 100), ENSURE_REQUIREMENTS, [plan_id=40] + +(245) Sort +Input [5]: [cs_item_sk#5, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_week_seq#23] +Arguments: [cs_item_sk#5 ASC NULLS FIRST, cs_order_number#7 ASC NULLS FIRST], false, 0 + +(246) Scan parquet +Output [2]: [cr_item_sk#30, cr_order_number#31] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cr_item_sk), IsNotNull(cr_order_number)] +ReadSchema: struct + +(247) Filter +Input [2]: [cr_item_sk#30, cr_order_number#31] +Condition : (isnotnull(cr_item_sk#30) AND isnotnull(cr_order_number#31)) + +(248) Exchange +Input [2]: [cr_item_sk#30, cr_order_number#31] +Arguments: hashpartitioning(cr_item_sk#30, cr_order_number#31, 100), ENSURE_REQUIREMENTS, [plan_id=41] + +(249) Sort +Input [2]: [cr_item_sk#30, cr_order_number#31] +Arguments: [cr_item_sk#30 ASC NULLS FIRST, cr_order_number#31 ASC NULLS FIRST], false, 0 + +(250) SortMergeJoin +Left keys [2]: [cs_item_sk#5, cs_order_number#7] +Right keys [2]: [cr_item_sk#30, cr_order_number#31] +Join type: LeftOuter +Join condition: None + +(251) Project +Output [3]: [w_warehouse_name#14, i_item_desc#16, d_week_seq#23] +Input [7]: [cs_item_sk#5, cs_order_number#7, w_warehouse_name#14, i_item_desc#16, d_week_seq#23, cr_item_sk#30, cr_order_number#31] + +(252) HashAggregate +Input [3]: [w_warehouse_name#14, i_item_desc#16, d_week_seq#23] +Keys [3]: [i_item_desc#16, w_warehouse_name#14, d_week_seq#23] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#32] +Results [4]: [i_item_desc#16, w_warehouse_name#14, d_week_seq#23, count#38] + +(253) Exchange +Input [4]: [i_item_desc#16, w_warehouse_name#14, d_week_seq#23, count#38] +Arguments: hashpartitioning(i_item_desc#16, w_warehouse_name#14, d_week_seq#23, 100), ENSURE_REQUIREMENTS, [plan_id=42] + +(254) HashAggregate +Input [4]: [i_item_desc#16, w_warehouse_name#14, d_week_seq#23, count#38] +Keys [3]: [i_item_desc#16, w_warehouse_name#14, d_week_seq#23] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#34] +Results [6]: [i_item_desc#16, w_warehouse_name#14, d_week_seq#23, count(1)#34 AS no_promo#35, count(1)#34 AS promo#36, count(1)#34 AS total_cnt#37] + +(255) TakeOrderedAndProject +Input [6]: [i_item_desc#16, w_warehouse_name#14, d_week_seq#23, no_promo#35, promo#36, total_cnt#37] +Arguments: X, [total_cnt#37 DESC NULLS LAST, i_item_desc#16 ASC NULLS FIRST, w_warehouse_name#14 ASC NULLS FIRST, d_week_seq#23 ASC NULLS FIRST], [i_item_desc#16, w_warehouse_name#14, d_week_seq#23, no_promo#35, promo#36, total_cnt#37] + +(256) AdaptiveSparkPlan +Output [6]: [i_item_desc#16, w_warehouse_name#14, d_week_seq#23, no_promo#35, promo#36, total_cnt#37] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q73.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q73.txt new file mode 100644 index 000000000..1db4de1c8 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q73.txt @@ -0,0 +1,663 @@ +== Physical Plan == +AdaptiveSparkPlan (122) ++- == Final Plan == + InputAdapter (78) + +- AQEShuffleRead (77) + +- ShuffleQueryStage (76), Statistics(X) + +- NativeShuffleExchange (75) + +- NativeProject (74) + +- NativeSortMergeJoin Inner (73) + :- NativeSort (64) + : +- InputAdapter (63) + : +- AQEShuffleRead (62) + : +- ShuffleQueryStage (61), Statistics(X) + : +- NativeShuffleExchange (60) + : +- NativeFilter (59) + : +- NativeProject (58) + : +- NativeHashAggregate (57) + : +- InputAdapter (56) + : +- AQEShuffleRead (55) + : +- ShuffleQueryStage (54), Statistics(X) + : +- NativeShuffleExchange (53) + : +- NativeHashAggregate (52) + : +- NativeProject (51) + : +- NativeSortMergeJoin Inner (50) + : :- NativeSort (40) + : : +- InputAdapter (39) + : : +- AQEShuffleRead (38) + : : +- ShuffleQueryStage (37), Statistics(X) + : : +- NativeShuffleExchange (36) + : : +- NativeProject (35) + : : +- NativeSortMergeJoin Inner (34) + : : :- 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 (33) + : : +- InputAdapter (32) + : : +- AQEShuffleRead (31) + : : +- ShuffleQueryStage (30), Statistics(X) + : : +- NativeShuffleExchange (29) + : : +- NativeProject (28) + : : +- NativeFilter (27) + : : +- InputAdapter (26) + : : +- NativeParquetScan (25) + : +- NativeSort (49) + : +- InputAdapter (48) + : +- AQEShuffleRead (47) + : +- ShuffleQueryStage (46), Statistics(X) + : +- NativeShuffleExchange (45) + : +- NativeProject (44) + : +- NativeFilter (43) + : +- InputAdapter (42) + : +- NativeParquetScan (41) + +- NativeSort (72) + +- InputAdapter (71) + +- AQEShuffleRead (70) + +- ShuffleQueryStage (69), Statistics(X) + +- NativeShuffleExchange (68) + +- NativeFilter (67) + +- InputAdapter (66) + +- NativeParquetScan (65) ++- == Initial Plan == + Sort (121) + +- Exchange (120) + +- Project (119) + +- SortMergeJoin Inner (118) + :- Sort (113) + : +- Exchange (112) + : +- Filter (111) + : +- HashAggregate (110) + : +- Exchange (109) + : +- HashAggregate (108) + : +- Project (107) + : +- SortMergeJoin Inner (106) + : :- Sort (100) + : : +- Exchange (99) + : : +- Project (98) + : : +- SortMergeJoin Inner (97) + : : :- Sort (91) + : : : +- Exchange (90) + : : : +- Project (89) + : : : +- SortMergeJoin Inner (88) + : : : :- Sort (82) + : : : : +- Exchange (81) + : : : : +- Filter (80) + : : : : +- Scan parquet (79) + : : : +- Sort (87) + : : : +- Exchange (86) + : : : +- Project (85) + : : : +- Filter (84) + : : : +- Scan parquet (83) + : : +- Sort (96) + : : +- Exchange (95) + : : +- Project (94) + : : +- Filter (93) + : : +- Scan parquet (92) + : +- Sort (105) + : +- Exchange (104) + : +- Project (103) + : +- Filter (102) + : +- Scan parquet (101) + +- Sort (117) + +- Exchange (116) + +- Filter (115) + +- Scan parquet (114) + + +(79) Scan parquet +Output [5]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk), IsNotNull(ss_hdemo_sk), IsNotNull(ss_customer_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [5]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5] +Arguments: [#1, #2, #3, #4, #5] + +(3) NativeFilter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Condition : (((isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_store_sk#4)) AND isnotnull(ss_hdemo_sk#3)) AND isnotnull(ss_customer_sk#2)) + +(4) NativeShuffleExchange +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: X + +(6) AQEShuffleRead +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: coalesced + +(7) InputAdapter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] + +(8) NativeSort +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(83) Scan parquet +Output [3]: [d_date_sk#6, d_year#7, d_dom#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_dom), GreaterThanOrEqual(d_dom,1), LessThanOrEqual(d_dom,2), In(d_year, [1999,2000,2001]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [3]: [d_date_sk#6, d_year#7, d_dom#8] +Arguments: [#6, #7, #8] + +(11) NativeFilter +Input [3]: [#6#6, #7#7, #8#8] +Condition : ((((isnotnull(d_dom#8) AND (d_dom#8 >= 1)) AND (d_dom#8 <= 2)) AND d_year#7 IN (1999,2000,2001)) AND isnotnull(d_date_sk#6)) + +(12) NativeProject +Output [1]: [d_date_sk#6] +Input [3]: [#6#6, #7#7, #8#8] + +(13) NativeShuffleExchange +Input [1]: [d_date_sk#6] +Arguments: hashpartitioning(d_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [1]: [d_date_sk#6] +Arguments: X + +(15) AQEShuffleRead +Input [1]: [d_date_sk#6] +Arguments: coalesced + +(16) InputAdapter +Input [1]: [d_date_sk#6] + +(17) NativeSort +Input [1]: [d_date_sk#6] +Arguments: [d_date_sk#6 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#6] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [4]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5] +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, d_date_sk#6] + +(20) NativeShuffleExchange +Input [4]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5] +Arguments: hashpartitioning(ss_store_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [4]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5] +Arguments: X + +(22) AQEShuffleRead +Input [4]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5] +Arguments: coalesced + +(23) InputAdapter +Input [4]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5] + +(24) NativeSort +Input [4]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5] +Arguments: [ss_store_sk#4 ASC NULLS FIRST], false + +(92) Scan parquet +Output [2]: [s_store_sk#9, s_county#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(s_county, [Bronx County,Franklin Parish,Orange County,Williamson County]), IsNotNull(s_store_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [2]: [s_store_sk#9, s_county#10] +Arguments: [#9, #10] + +(27) NativeFilter +Input [2]: [#9#9, #10#10] +Condition : (s_county#10 IN (Williamson County,Franklin Parish,Bronx County,Orange County) AND isnotnull(s_store_sk#9)) + +(28) NativeProject +Output [1]: [s_store_sk#9] +Input [2]: [#9#9, #10#10] + +(29) NativeShuffleExchange +Input [1]: [s_store_sk#9] +Arguments: hashpartitioning(s_store_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(30) ShuffleQueryStage +Output [1]: [s_store_sk#9] +Arguments: X + +(31) AQEShuffleRead +Input [1]: [s_store_sk#9] +Arguments: coalesced + +(32) InputAdapter +Input [1]: [s_store_sk#9] + +(33) NativeSort +Input [1]: [s_store_sk#9] +Arguments: [s_store_sk#9 ASC NULLS FIRST], false + +(34) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#4] +Right keys [1]: [s_store_sk#9] +Join type: Inner +Join condition: None + +(35) NativeProject +Output [3]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_ticket_number#5] +Input [5]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5, s_store_sk#9] + +(36) NativeShuffleExchange +Input [3]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_ticket_number#5] +Arguments: hashpartitioning(ss_hdemo_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [3]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_ticket_number#5] +Arguments: X + +(38) AQEShuffleRead +Input [3]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_ticket_number#5] +Arguments: coalesced + +(39) InputAdapter +Input [3]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_ticket_number#5] + +(40) NativeSort +Input [3]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_ticket_number#5] +Arguments: [ss_hdemo_sk#3 ASC NULLS FIRST], false + +(101) Scan parquet +Output [4]: [hd_demo_sk#11, hd_buy_potential#12, hd_dep_count#13, hd_vehicle_count#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(hd_vehicle_count), Or(EqualTo(hd_buy_potential,>10000),EqualTo(hd_buy_potential,unknown)), GreaterThan(hd_vehicle_count,0), IsNotNull(hd_demo_sk)] +ReadSchema: struct + +(42) InputAdapter +Input [4]: [hd_demo_sk#11, hd_buy_potential#12, hd_dep_count#13, hd_vehicle_count#14] +Arguments: [#11, #12, #13, #14] + +(43) NativeFilter +Input [4]: [#11#11, #12#12, #13#13, #14#14] +Condition : ((((isnotnull(hd_vehicle_count#14) AND ((hd_buy_potential#12 = >10000) OR (hd_buy_potential#12 = unknown))) AND (hd_vehicle_count#14 > 0)) AND CASE WHEN (hd_vehicle_count#14 > 0) THEN ((cast(hd_dep_count#13 as double) / cast(hd_vehicle_count#14 as double)) > 1.0) END) AND isnotnull(hd_demo_sk#11)) + +(44) NativeProject +Output [1]: [hd_demo_sk#11] +Input [4]: [#11#11, #12#12, #13#13, #14#14] + +(45) NativeShuffleExchange +Input [1]: [hd_demo_sk#11] +Arguments: hashpartitioning(hd_demo_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(46) ShuffleQueryStage +Output [1]: [hd_demo_sk#11] +Arguments: X + +(47) AQEShuffleRead +Input [1]: [hd_demo_sk#11] +Arguments: coalesced + +(48) InputAdapter +Input [1]: [hd_demo_sk#11] + +(49) NativeSort +Input [1]: [hd_demo_sk#11] +Arguments: [hd_demo_sk#11 ASC NULLS FIRST], false + +(50) NativeSortMergeJoin +Left keys [1]: [ss_hdemo_sk#3] +Right keys [1]: [hd_demo_sk#11] +Join type: Inner +Join condition: None + +(51) NativeProject +Output [2]: [ss_customer_sk#2, ss_ticket_number#5] +Input [4]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_ticket_number#5, hd_demo_sk#11] + +(52) NativeHashAggregate +Input [2]: [ss_customer_sk#2, ss_ticket_number#5] +Keys [2]: [ss_ticket_number#5, ss_customer_sk#2] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#15] +Results [3]: [ss_ticket_number#5, ss_customer_sk#2, #16#16] + +(53) NativeShuffleExchange +Input [3]: [ss_ticket_number#5, ss_customer_sk#2, #16#16] +Arguments: hashpartitioning(ss_ticket_number#5, ss_customer_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(54) ShuffleQueryStage +Output [3]: [ss_ticket_number#5, ss_customer_sk#2, #16#16] +Arguments: X + +(55) AQEShuffleRead +Input [3]: [ss_ticket_number#5, ss_customer_sk#2, #16#16] +Arguments: coalesced + +(56) InputAdapter +Input [3]: [ss_ticket_number#5, ss_customer_sk#2, #16#16] + +(57) NativeHashAggregate +Input [3]: [ss_ticket_number#5, ss_customer_sk#2, #16#16] +Keys [2]: [ss_ticket_number#5, ss_customer_sk#2] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#17] +Results [3]: [ss_ticket_number#5, ss_customer_sk#2, count(1)#17] + +(58) NativeProject +Output [3]: [ss_ticket_number#5, ss_customer_sk#2, count(1)#17 AS cnt#18] +Input [3]: [ss_ticket_number#5, ss_customer_sk#2, count(1)#17] + +(59) NativeFilter +Input [3]: [ss_ticket_number#5, ss_customer_sk#2, cnt#18] +Condition : ((cnt#18 >= 1) AND (cnt#18 <= 5)) + +(60) NativeShuffleExchange +Input [3]: [ss_ticket_number#5, ss_customer_sk#2, cnt#18] +Arguments: hashpartitioning(ss_customer_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(61) ShuffleQueryStage +Output [3]: [ss_ticket_number#5, ss_customer_sk#2, cnt#18] +Arguments: X + +(62) AQEShuffleRead +Input [3]: [ss_ticket_number#5, ss_customer_sk#2, cnt#18] +Arguments: coalesced + +(63) InputAdapter +Input [3]: [ss_ticket_number#5, ss_customer_sk#2, cnt#18] + +(64) NativeSort +Input [3]: [ss_ticket_number#5, ss_customer_sk#2, cnt#18] +Arguments: [ss_customer_sk#2 ASC NULLS FIRST], false + +(114) Scan parquet +Output [5]: [c_customer_sk#19, c_salutation#20, c_first_name#21, c_last_name#22, c_preferred_cust_flag#23] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk)] +ReadSchema: struct + +(66) InputAdapter +Input [5]: [c_customer_sk#19, c_salutation#20, c_first_name#21, c_last_name#22, c_preferred_cust_flag#23] +Arguments: [#19, #20, #21, #22, #23] + +(67) NativeFilter +Input [5]: [#19#19, #20#20, #21#21, #22#22, #23#23] +Condition : isnotnull(c_customer_sk#19) + +(68) NativeShuffleExchange +Input [5]: [#19#19, #20#20, #21#21, #22#22, #23#23] +Arguments: hashpartitioning(c_customer_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(69) ShuffleQueryStage +Output [5]: [#19#19, #20#20, #21#21, #22#22, #23#23] +Arguments: X + +(70) AQEShuffleRead +Input [5]: [#19#19, #20#20, #21#21, #22#22, #23#23] +Arguments: coalesced + +(71) InputAdapter +Input [5]: [#19#19, #20#20, #21#21, #22#22, #23#23] + +(72) NativeSort +Input [5]: [#19#19, #20#20, #21#21, #22#22, #23#23] +Arguments: [c_customer_sk#19 ASC NULLS FIRST], false + +(73) NativeSortMergeJoin +Left keys [1]: [ss_customer_sk#2] +Right keys [1]: [c_customer_sk#19] +Join type: Inner +Join condition: None + +(74) NativeProject +Output [6]: [c_last_name#22, c_first_name#21, c_salutation#20, c_preferred_cust_flag#23, ss_ticket_number#5, cnt#18] +Input [8]: [ss_ticket_number#5, ss_customer_sk#2, cnt#18, #19#19, #20#20, #21#21, #22#22, #23#23] + +(75) NativeShuffleExchange +Input [6]: [c_last_name#22, c_first_name#21, c_salutation#20, c_preferred_cust_flag#23, ss_ticket_number#5, cnt#18] +Arguments: rangepartitioning(cnt#18 DESC NULLS LAST, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(76) ShuffleQueryStage +Output [6]: [c_last_name#22, c_first_name#21, c_salutation#20, c_preferred_cust_flag#23, ss_ticket_number#5, cnt#18] +Arguments: X + +(77) AQEShuffleRead +Input [6]: [c_last_name#22, c_first_name#21, c_salutation#20, c_preferred_cust_flag#23, ss_ticket_number#5, cnt#18] +Arguments: local + +(78) InputAdapter +Input [6]: [c_last_name#22, c_first_name#21, c_salutation#20, c_preferred_cust_flag#23, ss_ticket_number#5, cnt#18] + +(79) Scan parquet +Output [5]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk), IsNotNull(ss_hdemo_sk), IsNotNull(ss_customer_sk)] +ReadSchema: struct + +(80) Filter +Input [5]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5] +Condition : (((isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_store_sk#4)) AND isnotnull(ss_hdemo_sk#3)) AND isnotnull(ss_customer_sk#2)) + +(81) Exchange +Input [5]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(82) Sort +Input [5]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(83) Scan parquet +Output [3]: [d_date_sk#6, d_year#7, d_dom#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_dom), GreaterThanOrEqual(d_dom,1), LessThanOrEqual(d_dom,2), In(d_year, [1999,2000,2001]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(84) Filter +Input [3]: [d_date_sk#6, d_year#7, d_dom#8] +Condition : ((((isnotnull(d_dom#8) AND (d_dom#8 >= 1)) AND (d_dom#8 <= 2)) AND d_year#7 IN (1999,2000,2001)) AND isnotnull(d_date_sk#6)) + +(85) Project +Output [1]: [d_date_sk#6] +Input [3]: [d_date_sk#6, d_year#7, d_dom#8] + +(86) Exchange +Input [1]: [d_date_sk#6] +Arguments: hashpartitioning(d_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(87) Sort +Input [1]: [d_date_sk#6] +Arguments: [d_date_sk#6 ASC NULLS FIRST], false, 0 + +(88) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#6] +Join type: Inner +Join condition: None + +(89) Project +Output [4]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5] +Input [6]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5, d_date_sk#6] + +(90) Exchange +Input [4]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5] +Arguments: hashpartitioning(ss_store_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(91) Sort +Input [4]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5] +Arguments: [ss_store_sk#4 ASC NULLS FIRST], false, 0 + +(92) Scan parquet +Output [2]: [s_store_sk#9, s_county#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(s_county, [Bronx County,Franklin Parish,Orange County,Williamson County]), IsNotNull(s_store_sk)] +ReadSchema: struct + +(93) Filter +Input [2]: [s_store_sk#9, s_county#10] +Condition : (s_county#10 IN (Williamson County,Franklin Parish,Bronx County,Orange County) AND isnotnull(s_store_sk#9)) + +(94) Project +Output [1]: [s_store_sk#9] +Input [2]: [s_store_sk#9, s_county#10] + +(95) Exchange +Input [1]: [s_store_sk#9] +Arguments: hashpartitioning(s_store_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(96) Sort +Input [1]: [s_store_sk#9] +Arguments: [s_store_sk#9 ASC NULLS FIRST], false, 0 + +(97) SortMergeJoin +Left keys [1]: [ss_store_sk#4] +Right keys [1]: [s_store_sk#9] +Join type: Inner +Join condition: None + +(98) Project +Output [3]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_ticket_number#5] +Input [5]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_store_sk#4, ss_ticket_number#5, s_store_sk#9] + +(99) Exchange +Input [3]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_ticket_number#5] +Arguments: hashpartitioning(ss_hdemo_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(100) Sort +Input [3]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_ticket_number#5] +Arguments: [ss_hdemo_sk#3 ASC NULLS FIRST], false, 0 + +(101) Scan parquet +Output [4]: [hd_demo_sk#11, hd_buy_potential#12, hd_dep_count#13, hd_vehicle_count#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(hd_vehicle_count), Or(EqualTo(hd_buy_potential,>10000),EqualTo(hd_buy_potential,unknown)), GreaterThan(hd_vehicle_count,0), IsNotNull(hd_demo_sk)] +ReadSchema: struct + +(102) Filter +Input [4]: [hd_demo_sk#11, hd_buy_potential#12, hd_dep_count#13, hd_vehicle_count#14] +Condition : ((((isnotnull(hd_vehicle_count#14) AND ((hd_buy_potential#12 = >10000) OR (hd_buy_potential#12 = unknown))) AND (hd_vehicle_count#14 > 0)) AND CASE WHEN (hd_vehicle_count#14 > 0) THEN ((cast(hd_dep_count#13 as double) / cast(hd_vehicle_count#14 as double)) > 1.0) END) AND isnotnull(hd_demo_sk#11)) + +(103) Project +Output [1]: [hd_demo_sk#11] +Input [4]: [hd_demo_sk#11, hd_buy_potential#12, hd_dep_count#13, hd_vehicle_count#14] + +(104) Exchange +Input [1]: [hd_demo_sk#11] +Arguments: hashpartitioning(hd_demo_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(105) Sort +Input [1]: [hd_demo_sk#11] +Arguments: [hd_demo_sk#11 ASC NULLS FIRST], false, 0 + +(106) SortMergeJoin +Left keys [1]: [ss_hdemo_sk#3] +Right keys [1]: [hd_demo_sk#11] +Join type: Inner +Join condition: None + +(107) Project +Output [2]: [ss_customer_sk#2, ss_ticket_number#5] +Input [4]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_ticket_number#5, hd_demo_sk#11] + +(108) HashAggregate +Input [2]: [ss_customer_sk#2, ss_ticket_number#5] +Keys [2]: [ss_ticket_number#5, ss_customer_sk#2] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#15] +Results [3]: [ss_ticket_number#5, ss_customer_sk#2, count#24] + +(109) Exchange +Input [3]: [ss_ticket_number#5, ss_customer_sk#2, count#24] +Arguments: hashpartitioning(ss_ticket_number#5, ss_customer_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(110) HashAggregate +Input [3]: [ss_ticket_number#5, ss_customer_sk#2, count#24] +Keys [2]: [ss_ticket_number#5, ss_customer_sk#2] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#17] +Results [3]: [ss_ticket_number#5, ss_customer_sk#2, count(1)#17 AS cnt#18] + +(111) Filter +Input [3]: [ss_ticket_number#5, ss_customer_sk#2, cnt#18] +Condition : ((cnt#18 >= 1) AND (cnt#18 <= 5)) + +(112) Exchange +Input [3]: [ss_ticket_number#5, ss_customer_sk#2, cnt#18] +Arguments: hashpartitioning(ss_customer_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(113) Sort +Input [3]: [ss_ticket_number#5, ss_customer_sk#2, cnt#18] +Arguments: [ss_customer_sk#2 ASC NULLS FIRST], false, 0 + +(114) Scan parquet +Output [5]: [c_customer_sk#19, c_salutation#20, c_first_name#21, c_last_name#22, c_preferred_cust_flag#23] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk)] +ReadSchema: struct + +(115) Filter +Input [5]: [c_customer_sk#19, c_salutation#20, c_first_name#21, c_last_name#22, c_preferred_cust_flag#23] +Condition : isnotnull(c_customer_sk#19) + +(116) Exchange +Input [5]: [c_customer_sk#19, c_salutation#20, c_first_name#21, c_last_name#22, c_preferred_cust_flag#23] +Arguments: hashpartitioning(c_customer_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(117) Sort +Input [5]: [c_customer_sk#19, c_salutation#20, c_first_name#21, c_last_name#22, c_preferred_cust_flag#23] +Arguments: [c_customer_sk#19 ASC NULLS FIRST], false, 0 + +(118) SortMergeJoin +Left keys [1]: [ss_customer_sk#2] +Right keys [1]: [c_customer_sk#19] +Join type: Inner +Join condition: None + +(119) Project +Output [6]: [c_last_name#22, c_first_name#21, c_salutation#20, c_preferred_cust_flag#23, ss_ticket_number#5, cnt#18] +Input [8]: [ss_ticket_number#5, ss_customer_sk#2, cnt#18, c_customer_sk#19, c_salutation#20, c_first_name#21, c_last_name#22, c_preferred_cust_flag#23] + +(120) Exchange +Input [6]: [c_last_name#22, c_first_name#21, c_salutation#20, c_preferred_cust_flag#23, ss_ticket_number#5, cnt#18] +Arguments: rangepartitioning(cnt#18 DESC NULLS LAST, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(121) Sort +Input [6]: [c_last_name#22, c_first_name#21, c_salutation#20, c_preferred_cust_flag#23, ss_ticket_number#5, cnt#18] +Arguments: [cnt#18 DESC NULLS LAST], true, 0 + +(122) AdaptiveSparkPlan +Output [6]: [c_last_name#22, c_first_name#21, c_salutation#20, c_preferred_cust_flag#23, ss_ticket_number#5, cnt#18] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q74.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q74.txt new file mode 100644 index 000000000..1dc81d36b --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q74.txt @@ -0,0 +1,1384 @@ +== Physical Plan == +AdaptiveSparkPlan (253) ++- == Final Plan == + TakeOrderedAndProject (152) + +- * Project (151) + +- * SortMergeJoin Inner (150) + :- NativeProject (122) + : +- NativeSortMergeJoin Inner (121) + : :- NativeSortMergeJoin Inner (77) + : : :- NativeSort (47) + : : : +- InputAdapter (46) + : : : +- AQEShuffleRead (45) + : : : +- ShuffleQueryStage (44), Statistics(X) + : : : +- NativeShuffleExchange (43) + : : : +- NativeFilter (42) + : : : +- NativeProject (41) + : : : +- NativeHashAggregate (40) + : : : +- InputAdapter (39) + : : : +- AQEShuffleRead (38) + : : : +- ShuffleQueryStage (37), Statistics(X) + : : : +- NativeShuffleExchange (36) + : : : +- NativeHashAggregate (35) + : : : +- NativeProject (34) + : : : +- NativeProject (33) + : : : +- NativeSortMergeJoin Inner (32) + : : : :- NativeSort (23) + : : : : +- InputAdapter (22) + : : : : +- AQEShuffleRead (21) + : : : : +- ShuffleQueryStage (20), Statistics(X) + : : : : +- NativeShuffleExchange (19) + : : : : +- NativeProject (18) + : : : : +- NativeSortMergeJoin Inner (17) + : : : : :- NativeSort (8) + : : : : : +- InputAdapter (7) + : : : : : +- AQEShuffleRead (6) + : : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : : +- NativeShuffleExchange (4) + : : : : : +- NativeFilter (3) + : : : : : +- InputAdapter (2) + : : : : : +- NativeParquetScan (1) + : : : : +- NativeSort (16) + : : : : +- InputAdapter (15) + : : : : +- AQEShuffleRead (14) + : : : : +- ShuffleQueryStage (13), Statistics(X) + : : : : +- NativeShuffleExchange (12) + : : : : +- NativeFilter (11) + : : : : +- InputAdapter (10) + : : : : +- NativeParquetScan (9) + : : : +- NativeSort (31) + : : : +- InputAdapter (30) + : : : +- AQEShuffleRead (29) + : : : +- ShuffleQueryStage (28), Statistics(X) + : : : +- NativeShuffleExchange (27) + : : : +- NativeFilter (26) + : : : +- InputAdapter (25) + : : : +- NativeParquetScan (24) + : : +- NativeSort (76) + : : +- InputAdapter (75) + : : +- AQEShuffleRead (74) + : : +- ShuffleQueryStage (73), Statistics(X) + : : +- NativeShuffleExchange (72) + : : +- NativeProject (71) + : : +- NativeHashAggregate (70) + : : +- InputAdapter (69) + : : +- AQEShuffleRead (68) + : : +- ShuffleQueryStage (67), Statistics(X) + : : +- NativeShuffleExchange (66) + : : +- NativeHashAggregate (65) + : : +- NativeProject (64) + : : +- NativeProject (63) + : : +- NativeSortMergeJoin Inner (62) + : : :- NativeSort (53) + : : : +- InputAdapter (52) + : : : +- InputAdapter (51) + : : : +- AQEShuffleRead (50) + : : : +- ShuffleQueryStage (49), Statistics(X) + : : : +- ReusedExchange (48) + : : +- NativeSort (61) + : : +- InputAdapter (60) + : : +- AQEShuffleRead (59) + : : +- ShuffleQueryStage (58), Statistics(X) + : : +- NativeShuffleExchange (57) + : : +- NativeFilter (56) + : : +- InputAdapter (55) + : : +- NativeParquetScan (54) + : +- NativeSort (120) + : +- InputAdapter (119) + : +- AQEShuffleRead (118) + : +- ShuffleQueryStage (117), Statistics(X) + : +- NativeShuffleExchange (116) + : +- NativeFilter (115) + : +- NativeProject (114) + : +- NativeHashAggregate (113) + : +- InputAdapter (112) + : +- AQEShuffleRead (111) + : +- ShuffleQueryStage (110), Statistics(X) + : +- NativeShuffleExchange (109) + : +- NativeHashAggregate (108) + : +- NativeProject (107) + : +- NativeProject (106) + : +- NativeSortMergeJoin Inner (105) + : :- NativeSort (98) + : : +- InputAdapter (97) + : : +- AQEShuffleRead (96) + : : +- ShuffleQueryStage (95), Statistics(X) + : : +- NativeShuffleExchange (94) + : : +- NativeProject (93) + : : +- NativeSortMergeJoin Inner (92) + : : :- NativeSort (83) + : : : +- InputAdapter (82) + : : : +- InputAdapter (81) + : : : +- AQEShuffleRead (80) + : : : +- ShuffleQueryStage (79), Statistics(X) + : : : +- ReusedExchange (78) + : : +- NativeSort (91) + : : +- InputAdapter (90) + : : +- AQEShuffleRead (89) + : : +- ShuffleQueryStage (88), Statistics(X) + : : +- NativeShuffleExchange (87) + : : +- NativeFilter (86) + : : +- InputAdapter (85) + : : +- NativeParquetScan (84) + : +- NativeSort (104) + : +- InputAdapter (103) + : +- InputAdapter (102) + : +- AQEShuffleRead (101) + : +- ShuffleQueryStage (100), Statistics(X) + : +- ReusedExchange (99) + +- NativeSort (149) + +- InputAdapter (148) + +- AQEShuffleRead (147) + +- ShuffleQueryStage (146), Statistics(X) + +- NativeShuffleExchange (145) + +- NativeProject (144) + +- NativeHashAggregate (143) + +- InputAdapter (142) + +- AQEShuffleRead (141) + +- ShuffleQueryStage (140), Statistics(X) + +- NativeShuffleExchange (139) + +- NativeHashAggregate (138) + +- NativeProject (137) + +- NativeProject (136) + +- NativeSortMergeJoin Inner (135) + :- NativeSort (128) + : +- InputAdapter (127) + : +- InputAdapter (126) + : +- AQEShuffleRead (125) + : +- ShuffleQueryStage (124), Statistics(X) + : +- ReusedExchange (123) + +- NativeSort (134) + +- InputAdapter (133) + +- InputAdapter (132) + +- AQEShuffleRead (131) + +- ShuffleQueryStage (130), Statistics(X) + +- ReusedExchange (129) ++- == Initial Plan == + TakeOrderedAndProject (252) + +- Project (251) + +- SortMergeJoin Inner (250) + :- Project (226) + : +- SortMergeJoin Inner (225) + : :- SortMergeJoin Inner (200) + : : :- Sort (176) + : : : +- Exchange (175) + : : : +- Filter (174) + : : : +- HashAggregate (173) + : : : +- Exchange (172) + : : : +- HashAggregate (171) + : : : +- Project (170) + : : : +- SortMergeJoin Inner (169) + : : : :- Sort (164) + : : : : +- Exchange (163) + : : : : +- Project (162) + : : : : +- SortMergeJoin Inner (161) + : : : : :- Sort (156) + : : : : : +- Exchange (155) + : : : : : +- Filter (154) + : : : : : +- Scan parquet (153) + : : : : +- Sort (160) + : : : : +- Exchange (159) + : : : : +- Filter (158) + : : : : +- Scan parquet (157) + : : : +- Sort (168) + : : : +- Exchange (167) + : : : +- Filter (166) + : : : +- Scan parquet (165) + : : +- Sort (199) + : : +- Exchange (198) + : : +- HashAggregate (197) + : : +- Exchange (196) + : : +- HashAggregate (195) + : : +- Project (194) + : : +- SortMergeJoin Inner (193) + : : :- Sort (188) + : : : +- Exchange (187) + : : : +- Project (186) + : : : +- SortMergeJoin Inner (185) + : : : :- Sort (180) + : : : : +- Exchange (179) + : : : : +- Filter (178) + : : : : +- Scan parquet (177) + : : : +- Sort (184) + : : : +- Exchange (183) + : : : +- Filter (182) + : : : +- Scan parquet (181) + : : +- Sort (192) + : : +- Exchange (191) + : : +- Filter (190) + : : +- Scan parquet (189) + : +- Sort (224) + : +- Exchange (223) + : +- Filter (222) + : +- HashAggregate (221) + : +- Exchange (220) + : +- HashAggregate (219) + : +- Project (218) + : +- SortMergeJoin Inner (217) + : :- Sort (212) + : : +- Exchange (211) + : : +- Project (210) + : : +- SortMergeJoin Inner (209) + : : :- Sort (204) + : : : +- Exchange (203) + : : : +- Filter (202) + : : : +- Scan parquet (201) + : : +- Sort (208) + : : +- Exchange (207) + : : +- Filter (206) + : : +- Scan parquet (205) + : +- Sort (216) + : +- Exchange (215) + : +- Filter (214) + : +- Scan parquet (213) + +- Sort (249) + +- Exchange (248) + +- HashAggregate (247) + +- Exchange (246) + +- HashAggregate (245) + +- Project (244) + +- SortMergeJoin Inner (243) + :- Sort (238) + : +- Exchange (237) + : +- Project (236) + : +- SortMergeJoin Inner (235) + : :- Sort (230) + : : +- Exchange (229) + : : +- Filter (228) + : : +- Scan parquet (227) + : +- Sort (234) + : +- Exchange (233) + : +- Filter (232) + : +- Scan parquet (231) + +- Sort (242) + +- Exchange (241) + +- Filter (240) + +- Scan parquet (239) + + +(153) Scan parquet +Output [4]: [c_customer_sk#1, c_customer_id#2, c_first_name#3, c_last_name#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_customer_id)] +ReadSchema: struct + +(2) InputAdapter +Input [4]: [c_customer_sk#1, c_customer_id#2, c_first_name#3, c_last_name#4] +Arguments: [#1, #2, #3, #4] + +(3) NativeFilter +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Condition : (isnotnull(c_customer_sk#1) AND isnotnull(c_customer_id#2)) + +(4) NativeShuffleExchange +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: hashpartitioning(c_customer_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: X + +(6) AQEShuffleRead +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: coalesced + +(7) InputAdapter +Input [4]: [#1#1, #2#2, #3#3, #4#4] + +(8) NativeSort +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: [c_customer_sk#1 ASC NULLS FIRST], false + +(157) Scan parquet +Output [3]: [ss_sold_date_sk#5, ss_customer_sk#6, ss_net_paid#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [3]: [ss_sold_date_sk#5, ss_customer_sk#6, ss_net_paid#7] +Arguments: [#5, #6, #7] + +(11) NativeFilter +Input [3]: [#5#5, #6#6, #7#7] +Condition : (isnotnull(ss_customer_sk#6) AND isnotnull(ss_sold_date_sk#5)) + +(12) NativeShuffleExchange +Input [3]: [#5#5, #6#6, #7#7] +Arguments: hashpartitioning(ss_customer_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [3]: [#5#5, #6#6, #7#7] +Arguments: X + +(14) AQEShuffleRead +Input [3]: [#5#5, #6#6, #7#7] +Arguments: coalesced + +(15) InputAdapter +Input [3]: [#5#5, #6#6, #7#7] + +(16) NativeSort +Input [3]: [#5#5, #6#6, #7#7] +Arguments: [ss_customer_sk#6 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [1]: [c_customer_sk#1] +Right keys [1]: [ss_customer_sk#6] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [5]: [c_customer_id#2, c_first_name#3, c_last_name#4, ss_sold_date_sk#5, ss_net_paid#7] +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] + +(19) NativeShuffleExchange +Input [5]: [c_customer_id#2, c_first_name#3, c_last_name#4, ss_sold_date_sk#5, ss_net_paid#7] +Arguments: hashpartitioning(ss_sold_date_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [5]: [c_customer_id#2, c_first_name#3, c_last_name#4, ss_sold_date_sk#5, ss_net_paid#7] +Arguments: X + +(21) AQEShuffleRead +Input [5]: [c_customer_id#2, c_first_name#3, c_last_name#4, ss_sold_date_sk#5, ss_net_paid#7] +Arguments: coalesced + +(22) InputAdapter +Input [5]: [c_customer_id#2, c_first_name#3, c_last_name#4, ss_sold_date_sk#5, ss_net_paid#7] + +(23) NativeSort +Input [5]: [c_customer_id#2, c_first_name#3, c_last_name#4, ss_sold_date_sk#5, ss_net_paid#7] +Arguments: [ss_sold_date_sk#5 ASC NULLS FIRST], false + +(165) Scan parquet +Output [2]: [d_date_sk#8, d_year#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), In(d_year, [2001,2002]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(25) InputAdapter +Input [2]: [d_date_sk#8, d_year#9] +Arguments: [#8, #9] + +(26) NativeFilter +Input [2]: [#8#8, #9#9] +Condition : (((isnotnull(d_year#9) AND (d_year#9 = 2001)) AND d_year#9 IN (2001,2002)) AND isnotnull(d_date_sk#8)) + +(27) NativeShuffleExchange +Input [2]: [#8#8, #9#9] +Arguments: hashpartitioning(d_date_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(28) ShuffleQueryStage +Output [2]: [#8#8, #9#9] +Arguments: X + +(29) AQEShuffleRead +Input [2]: [#8#8, #9#9] +Arguments: coalesced + +(30) InputAdapter +Input [2]: [#8#8, #9#9] + +(31) NativeSort +Input [2]: [#8#8, #9#9] +Arguments: [d_date_sk#8 ASC NULLS FIRST], false + +(32) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#5] +Right keys [1]: [d_date_sk#8] +Join type: Inner +Join condition: None + +(33) NativeProject +Output [5]: [c_customer_id#2, c_first_name#3, c_last_name#4, ss_net_paid#7, d_year#9] +Input [7]: [c_customer_id#2, c_first_name#3, c_last_name#4, ss_sold_date_sk#5, ss_net_paid#7, #8#8, #9#9] + +(34) NativeProject +Output [5]: [c_customer_id#2 AS c_customer_id#2, c_first_name#3 AS c_first_name#3, c_last_name#4 AS c_last_name#4, d_year#9 AS d_year#9, UnscaledValue(ss_net_paid#7) AS _c4#10] +Input [5]: [c_customer_id#2, c_first_name#3, c_last_name#4, ss_net_paid#7, d_year#9] + +(35) NativeHashAggregate +Input [5]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#9, _c4#10] +Keys [4]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#9] +Functions [1]: [partial_sum(_c4#10)] +Aggregate Attributes [1]: [sum#11] +Results [5]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#9, #12#12] + +(36) NativeShuffleExchange +Input [5]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#9, #12#12] +Arguments: hashpartitioning(c_customer_id#2, c_first_name#3, c_last_name#4, d_year#9, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [5]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#9, #12#12] +Arguments: X + +(38) AQEShuffleRead +Input [5]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#9, #12#12] +Arguments: coalesced + +(39) InputAdapter +Input [5]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#9, #12#12] + +(40) NativeHashAggregate +Input [5]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#9, #12#12] +Keys [4]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#9] +Functions [1]: [sum(UnscaledValue(ss_net_paid#7))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_net_paid#7))#13] +Results [5]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#9, sum(UnscaledValue(ss_net_paid#7))#13] + +(41) NativeProject +Output [2]: [c_customer_id#2 AS customer_id#14, MakeDecimal(sum(UnscaledValue(ss_net_paid#7))#13,17,2) AS year_total#15] +Input [5]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#9, sum(UnscaledValue(ss_net_paid#7))#13] + +(42) NativeFilter +Input [2]: [customer_id#14, year_total#15] +Condition : (isnotnull(year_total#15) AND (year_total#15 > 0.00)) + +(43) NativeShuffleExchange +Input [2]: [customer_id#14, year_total#15] +Arguments: hashpartitioning(customer_id#14, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) ShuffleQueryStage +Output [2]: [customer_id#14, year_total#15] +Arguments: X + +(45) AQEShuffleRead +Input [2]: [customer_id#14, year_total#15] +Arguments: coalesced + +(46) InputAdapter +Input [2]: [customer_id#14, year_total#15] + +(47) NativeSort +Input [2]: [customer_id#14, year_total#15] +Arguments: [customer_id#14 ASC NULLS FIRST], false + +(48) ReusedExchange [Reuses operator id: 19] +Output [5]: [c_customer_id#16, c_first_name#17, c_last_name#18, ss_sold_date_sk#19, ss_net_paid#20] + +(49) ShuffleQueryStage +Output [5]: [c_customer_id#16, c_first_name#17, c_last_name#18, ss_sold_date_sk#19, ss_net_paid#20] +Arguments: X + +(50) AQEShuffleRead +Input [5]: [c_customer_id#16, c_first_name#17, c_last_name#18, ss_sold_date_sk#19, ss_net_paid#20] +Arguments: coalesced + +(51) InputAdapter +Input [5]: [c_customer_id#16, c_first_name#17, c_last_name#18, ss_sold_date_sk#19, ss_net_paid#20] +Arguments: [#16, #17, #18, #19, #20] + +(52) InputAdapter +Input [5]: [#16#16, #17#17, #18#18, #19#19, #20#20] + +(53) NativeSort +Input [5]: [#16#16, #17#17, #18#18, #19#19, #20#20] +Arguments: [ss_sold_date_sk#19 ASC NULLS FIRST], false + +(189) Scan parquet +Output [2]: [d_date_sk#21, d_year#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2002), In(d_year, [2001,2002]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(55) InputAdapter +Input [2]: [d_date_sk#21, d_year#22] +Arguments: [#21, #22] + +(56) NativeFilter +Input [2]: [#21#21, #22#22] +Condition : (((isnotnull(d_year#22) AND (d_year#22 = 2002)) AND d_year#22 IN (2001,2002)) AND isnotnull(d_date_sk#21)) + +(57) NativeShuffleExchange +Input [2]: [#21#21, #22#22] +Arguments: hashpartitioning(d_date_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(58) ShuffleQueryStage +Output [2]: [#21#21, #22#22] +Arguments: X + +(59) AQEShuffleRead +Input [2]: [#21#21, #22#22] +Arguments: coalesced + +(60) InputAdapter +Input [2]: [#21#21, #22#22] + +(61) NativeSort +Input [2]: [#21#21, #22#22] +Arguments: [d_date_sk#21 ASC NULLS FIRST], false + +(62) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#19] +Right keys [1]: [d_date_sk#21] +Join type: Inner +Join condition: None + +(63) NativeProject +Output [5]: [c_customer_id#16, c_first_name#17, c_last_name#18, ss_net_paid#20, d_year#22] +Input [7]: [#16#16, #17#17, #18#18, #19#19, #20#20, #21#21, #22#22] + +(64) NativeProject +Output [5]: [c_customer_id#16 AS c_customer_id#16, c_first_name#17 AS c_first_name#17, c_last_name#18 AS c_last_name#18, d_year#22 AS d_year#22, UnscaledValue(ss_net_paid#20) AS _c4#23] +Input [5]: [c_customer_id#16, c_first_name#17, c_last_name#18, ss_net_paid#20, d_year#22] + +(65) NativeHashAggregate +Input [5]: [c_customer_id#16, c_first_name#17, c_last_name#18, d_year#22, _c4#23] +Keys [4]: [c_customer_id#16, c_first_name#17, c_last_name#18, d_year#22] +Functions [1]: [partial_sum(_c4#23)] +Aggregate Attributes [1]: [sum#24] +Results [5]: [c_customer_id#16, c_first_name#17, c_last_name#18, d_year#22, #12#12] + +(66) NativeShuffleExchange +Input [5]: [c_customer_id#16, c_first_name#17, c_last_name#18, d_year#22, #12#12] +Arguments: hashpartitioning(c_customer_id#16, c_first_name#17, c_last_name#18, d_year#22, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(67) ShuffleQueryStage +Output [5]: [c_customer_id#16, c_first_name#17, c_last_name#18, d_year#22, #12#12] +Arguments: X + +(68) AQEShuffleRead +Input [5]: [c_customer_id#16, c_first_name#17, c_last_name#18, d_year#22, #12#12] +Arguments: coalesced + +(69) InputAdapter +Input [5]: [c_customer_id#16, c_first_name#17, c_last_name#18, d_year#22, #12#12] + +(70) NativeHashAggregate +Input [5]: [c_customer_id#16, c_first_name#17, c_last_name#18, d_year#22, #12#12] +Keys [4]: [c_customer_id#16, c_first_name#17, c_last_name#18, d_year#22] +Functions [1]: [sum(UnscaledValue(ss_net_paid#20))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_net_paid#20))#13] +Results [5]: [c_customer_id#16, c_first_name#17, c_last_name#18, d_year#22, sum(UnscaledValue(ss_net_paid#20))#13] + +(71) NativeProject +Output [4]: [c_customer_id#16 AS customer_id#25, c_first_name#17 AS customer_first_name#26, c_last_name#18 AS customer_last_name#27, MakeDecimal(sum(UnscaledValue(ss_net_paid#20))#13,17,2) AS year_total#28] +Input [5]: [c_customer_id#16, c_first_name#17, c_last_name#18, d_year#22, sum(UnscaledValue(ss_net_paid#20))#13] + +(72) NativeShuffleExchange +Input [4]: [customer_id#25, customer_first_name#26, customer_last_name#27, year_total#28] +Arguments: hashpartitioning(customer_id#25, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(73) ShuffleQueryStage +Output [4]: [customer_id#25, customer_first_name#26, customer_last_name#27, year_total#28] +Arguments: X + +(74) AQEShuffleRead +Input [4]: [customer_id#25, customer_first_name#26, customer_last_name#27, year_total#28] +Arguments: coalesced + +(75) InputAdapter +Input [4]: [customer_id#25, customer_first_name#26, customer_last_name#27, year_total#28] + +(76) NativeSort +Input [4]: [customer_id#25, customer_first_name#26, customer_last_name#27, year_total#28] +Arguments: [customer_id#25 ASC NULLS FIRST], false + +(77) NativeSortMergeJoin +Left keys [1]: [customer_id#14] +Right keys [1]: [customer_id#25] +Join type: Inner +Join condition: None + +(78) ReusedExchange [Reuses operator id: 4] +Output [4]: [c_customer_sk#29, c_customer_id#30, c_first_name#31, c_last_name#32] + +(79) ShuffleQueryStage +Output [4]: [c_customer_sk#29, c_customer_id#30, c_first_name#31, c_last_name#32] +Arguments: X + +(80) AQEShuffleRead +Input [4]: [c_customer_sk#29, c_customer_id#30, c_first_name#31, c_last_name#32] +Arguments: coalesced + +(81) InputAdapter +Input [4]: [c_customer_sk#29, c_customer_id#30, c_first_name#31, c_last_name#32] +Arguments: [#29, #30, #31, #32] + +(82) InputAdapter +Input [4]: [#29#29, #30#30, #31#31, #32#32] + +(83) NativeSort +Input [4]: [#29#29, #30#30, #31#31, #32#32] +Arguments: [c_customer_sk#29 ASC NULLS FIRST], false + +(205) Scan parquet +Output [3]: [ws_sold_date_sk#33, ws_bill_customer_sk#34, ws_net_paid#35] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_bill_customer_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(85) InputAdapter +Input [3]: [ws_sold_date_sk#33, ws_bill_customer_sk#34, ws_net_paid#35] +Arguments: [#33, #34, #35] + +(86) NativeFilter +Input [3]: [#33#33, #34#34, #35#35] +Condition : (isnotnull(ws_bill_customer_sk#34) AND isnotnull(ws_sold_date_sk#33)) + +(87) NativeShuffleExchange +Input [3]: [#33#33, #34#34, #35#35] +Arguments: hashpartitioning(ws_bill_customer_sk#34, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(88) ShuffleQueryStage +Output [3]: [#33#33, #34#34, #35#35] +Arguments: X + +(89) AQEShuffleRead +Input [3]: [#33#33, #34#34, #35#35] +Arguments: coalesced + +(90) InputAdapter +Input [3]: [#33#33, #34#34, #35#35] + +(91) NativeSort +Input [3]: [#33#33, #34#34, #35#35] +Arguments: [ws_bill_customer_sk#34 ASC NULLS FIRST], false + +(92) NativeSortMergeJoin +Left keys [1]: [c_customer_sk#29] +Right keys [1]: [ws_bill_customer_sk#34] +Join type: Inner +Join condition: None + +(93) NativeProject +Output [5]: [c_customer_id#30, c_first_name#31, c_last_name#32, ws_sold_date_sk#33, ws_net_paid#35] +Input [7]: [#29#29, #30#30, #31#31, #32#32, #33#33, #34#34, #35#35] + +(94) NativeShuffleExchange +Input [5]: [c_customer_id#30, c_first_name#31, c_last_name#32, ws_sold_date_sk#33, ws_net_paid#35] +Arguments: hashpartitioning(ws_sold_date_sk#33, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(95) ShuffleQueryStage +Output [5]: [c_customer_id#30, c_first_name#31, c_last_name#32, ws_sold_date_sk#33, ws_net_paid#35] +Arguments: X + +(96) AQEShuffleRead +Input [5]: [c_customer_id#30, c_first_name#31, c_last_name#32, ws_sold_date_sk#33, ws_net_paid#35] +Arguments: coalesced + +(97) InputAdapter +Input [5]: [c_customer_id#30, c_first_name#31, c_last_name#32, ws_sold_date_sk#33, ws_net_paid#35] + +(98) NativeSort +Input [5]: [c_customer_id#30, c_first_name#31, c_last_name#32, ws_sold_date_sk#33, ws_net_paid#35] +Arguments: [ws_sold_date_sk#33 ASC NULLS FIRST], false + +(99) ReusedExchange [Reuses operator id: 27] +Output [2]: [d_date_sk#36, d_year#37] + +(100) ShuffleQueryStage +Output [2]: [d_date_sk#36, d_year#37] +Arguments: X + +(101) AQEShuffleRead +Input [2]: [d_date_sk#36, d_year#37] +Arguments: coalesced + +(102) InputAdapter +Input [2]: [d_date_sk#36, d_year#37] +Arguments: [#36, #37] + +(103) InputAdapter +Input [2]: [#36#36, #37#37] + +(104) NativeSort +Input [2]: [#36#36, #37#37] +Arguments: [d_date_sk#36 ASC NULLS FIRST], false + +(105) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#33] +Right keys [1]: [d_date_sk#36] +Join type: Inner +Join condition: None + +(106) NativeProject +Output [5]: [c_customer_id#30, c_first_name#31, c_last_name#32, ws_net_paid#35, d_year#37] +Input [7]: [c_customer_id#30, c_first_name#31, c_last_name#32, ws_sold_date_sk#33, ws_net_paid#35, #36#36, #37#37] + +(107) NativeProject +Output [5]: [c_customer_id#30 AS c_customer_id#30, c_first_name#31 AS c_first_name#31, c_last_name#32 AS c_last_name#32, d_year#37 AS d_year#37, UnscaledValue(ws_net_paid#35) AS _c4#38] +Input [5]: [c_customer_id#30, c_first_name#31, c_last_name#32, ws_net_paid#35, d_year#37] + +(108) NativeHashAggregate +Input [5]: [c_customer_id#30, c_first_name#31, c_last_name#32, d_year#37, _c4#38] +Keys [4]: [c_customer_id#30, c_first_name#31, c_last_name#32, d_year#37] +Functions [1]: [partial_sum(_c4#38)] +Aggregate Attributes [1]: [sum#39] +Results [5]: [c_customer_id#30, c_first_name#31, c_last_name#32, d_year#37, #12#12] + +(109) NativeShuffleExchange +Input [5]: [c_customer_id#30, c_first_name#31, c_last_name#32, d_year#37, #12#12] +Arguments: hashpartitioning(c_customer_id#30, c_first_name#31, c_last_name#32, d_year#37, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(110) ShuffleQueryStage +Output [5]: [c_customer_id#30, c_first_name#31, c_last_name#32, d_year#37, #12#12] +Arguments: X + +(111) AQEShuffleRead +Input [5]: [c_customer_id#30, c_first_name#31, c_last_name#32, d_year#37, #12#12] +Arguments: coalesced + +(112) InputAdapter +Input [5]: [c_customer_id#30, c_first_name#31, c_last_name#32, d_year#37, #12#12] + +(113) NativeHashAggregate +Input [5]: [c_customer_id#30, c_first_name#31, c_last_name#32, d_year#37, #12#12] +Keys [4]: [c_customer_id#30, c_first_name#31, c_last_name#32, d_year#37] +Functions [1]: [sum(UnscaledValue(ws_net_paid#35))] +Aggregate Attributes [1]: [sum(UnscaledValue(ws_net_paid#35))#40] +Results [5]: [c_customer_id#30, c_first_name#31, c_last_name#32, d_year#37, sum(UnscaledValue(ws_net_paid#35))#40] + +(114) NativeProject +Output [2]: [c_customer_id#30 AS customer_id#41, MakeDecimal(sum(UnscaledValue(ws_net_paid#35))#40,17,2) AS year_total#42] +Input [5]: [c_customer_id#30, c_first_name#31, c_last_name#32, d_year#37, sum(UnscaledValue(ws_net_paid#35))#40] + +(115) NativeFilter +Input [2]: [customer_id#41, year_total#42] +Condition : (isnotnull(year_total#42) AND (year_total#42 > 0.00)) + +(116) NativeShuffleExchange +Input [2]: [customer_id#41, year_total#42] +Arguments: hashpartitioning(customer_id#41, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(117) ShuffleQueryStage +Output [2]: [customer_id#41, year_total#42] +Arguments: X + +(118) AQEShuffleRead +Input [2]: [customer_id#41, year_total#42] +Arguments: coalesced + +(119) InputAdapter +Input [2]: [customer_id#41, year_total#42] + +(120) NativeSort +Input [2]: [customer_id#41, year_total#42] +Arguments: [customer_id#41 ASC NULLS FIRST], false + +(121) NativeSortMergeJoin +Left keys [1]: [customer_id#14] +Right keys [1]: [customer_id#41] +Join type: Inner +Join condition: None + +(122) NativeProject +Output [7]: [customer_id#14, year_total#15, customer_id#25, customer_first_name#26, customer_last_name#27, year_total#28, year_total#42] +Input [8]: [customer_id#14, year_total#15, customer_id#25, customer_first_name#26, customer_last_name#27, year_total#28, customer_id#41, year_total#42] + +(123) ReusedExchange [Reuses operator id: 94] +Output [5]: [c_customer_id#43, c_first_name#44, c_last_name#45, ws_sold_date_sk#46, ws_net_paid#47] + +(124) ShuffleQueryStage +Output [5]: [c_customer_id#43, c_first_name#44, c_last_name#45, ws_sold_date_sk#46, ws_net_paid#47] +Arguments: X + +(125) AQEShuffleRead +Input [5]: [c_customer_id#43, c_first_name#44, c_last_name#45, ws_sold_date_sk#46, ws_net_paid#47] +Arguments: coalesced + +(126) InputAdapter +Input [5]: [c_customer_id#43, c_first_name#44, c_last_name#45, ws_sold_date_sk#46, ws_net_paid#47] +Arguments: [#43, #44, #45, #46, #47] + +(127) InputAdapter +Input [5]: [#43#43, #44#44, #45#45, #46#46, #47#47] + +(128) NativeSort +Input [5]: [#43#43, #44#44, #45#45, #46#46, #47#47] +Arguments: [ws_sold_date_sk#46 ASC NULLS FIRST], false + +(129) ReusedExchange [Reuses operator id: 57] +Output [2]: [d_date_sk#48, d_year#49] + +(130) ShuffleQueryStage +Output [2]: [d_date_sk#48, d_year#49] +Arguments: X + +(131) AQEShuffleRead +Input [2]: [d_date_sk#48, d_year#49] +Arguments: coalesced + +(132) InputAdapter +Input [2]: [d_date_sk#48, d_year#49] +Arguments: [#48, #49] + +(133) InputAdapter +Input [2]: [#48#48, #49#49] + +(134) NativeSort +Input [2]: [#48#48, #49#49] +Arguments: [d_date_sk#48 ASC NULLS FIRST], false + +(135) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#46] +Right keys [1]: [d_date_sk#48] +Join type: Inner +Join condition: None + +(136) NativeProject +Output [5]: [c_customer_id#43, c_first_name#44, c_last_name#45, ws_net_paid#47, d_year#49] +Input [7]: [#43#43, #44#44, #45#45, #46#46, #47#47, #48#48, #49#49] + +(137) NativeProject +Output [5]: [c_customer_id#43 AS c_customer_id#43, c_first_name#44 AS c_first_name#44, c_last_name#45 AS c_last_name#45, d_year#49 AS d_year#49, UnscaledValue(ws_net_paid#47) AS _c4#50] +Input [5]: [c_customer_id#43, c_first_name#44, c_last_name#45, ws_net_paid#47, d_year#49] + +(138) NativeHashAggregate +Input [5]: [c_customer_id#43, c_first_name#44, c_last_name#45, d_year#49, _c4#50] +Keys [4]: [c_customer_id#43, c_first_name#44, c_last_name#45, d_year#49] +Functions [1]: [partial_sum(_c4#50)] +Aggregate Attributes [1]: [sum#51] +Results [5]: [c_customer_id#43, c_first_name#44, c_last_name#45, d_year#49, #12#12] + +(139) NativeShuffleExchange +Input [5]: [c_customer_id#43, c_first_name#44, c_last_name#45, d_year#49, #12#12] +Arguments: hashpartitioning(c_customer_id#43, c_first_name#44, c_last_name#45, d_year#49, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(140) ShuffleQueryStage +Output [5]: [c_customer_id#43, c_first_name#44, c_last_name#45, d_year#49, #12#12] +Arguments: X + +(141) AQEShuffleRead +Input [5]: [c_customer_id#43, c_first_name#44, c_last_name#45, d_year#49, #12#12] +Arguments: coalesced + +(142) InputAdapter +Input [5]: [c_customer_id#43, c_first_name#44, c_last_name#45, d_year#49, #12#12] + +(143) NativeHashAggregate +Input [5]: [c_customer_id#43, c_first_name#44, c_last_name#45, d_year#49, #12#12] +Keys [4]: [c_customer_id#43, c_first_name#44, c_last_name#45, d_year#49] +Functions [1]: [sum(UnscaledValue(ws_net_paid#47))] +Aggregate Attributes [1]: [sum(UnscaledValue(ws_net_paid#47))#40] +Results [5]: [c_customer_id#43, c_first_name#44, c_last_name#45, d_year#49, sum(UnscaledValue(ws_net_paid#47))#40] + +(144) NativeProject +Output [2]: [c_customer_id#43 AS customer_id#52, MakeDecimal(sum(UnscaledValue(ws_net_paid#47))#40,17,2) AS year_total#53] +Input [5]: [c_customer_id#43, c_first_name#44, c_last_name#45, d_year#49, sum(UnscaledValue(ws_net_paid#47))#40] + +(145) NativeShuffleExchange +Input [2]: [customer_id#52, year_total#53] +Arguments: hashpartitioning(customer_id#52, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(146) ShuffleQueryStage +Output [2]: [customer_id#52, year_total#53] +Arguments: X + +(147) AQEShuffleRead +Input [2]: [customer_id#52, year_total#53] +Arguments: coalesced + +(148) InputAdapter +Input [2]: [customer_id#52, year_total#53] + +(149) NativeSort +Input [2]: [customer_id#52, year_total#53] +Arguments: [customer_id#52 ASC NULLS FIRST], false + +(150) SortMergeJoin [codegen id : 1] +Left keys [1]: [customer_id#14] +Right keys [1]: [customer_id#52] +Join type: Inner +Join condition: (CASE WHEN (year_total#42 > 0.00) THEN (year_total#53 / year_total#42) END > CASE WHEN (year_total#15 > 0.00) THEN (year_total#28 / year_total#15) END) + +(151) Project [codegen id : 1] +Output [3]: [customer_id#25, customer_first_name#26, customer_last_name#27] +Input [9]: [customer_id#14, year_total#15, customer_id#25, customer_first_name#26, customer_last_name#27, year_total#28, year_total#42, customer_id#52, year_total#53] + +(152) TakeOrderedAndProject +Input [3]: [customer_id#25, customer_first_name#26, customer_last_name#27] +Arguments: X, [customer_id#25 ASC NULLS FIRST, customer_id#25 ASC NULLS FIRST, customer_id#25 ASC NULLS FIRST], [customer_id#25, customer_first_name#26, customer_last_name#27] + +(153) Scan parquet +Output [4]: [c_customer_sk#1, c_customer_id#2, c_first_name#3, c_last_name#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_customer_id)] +ReadSchema: struct + +(154) Filter +Input [4]: [c_customer_sk#1, c_customer_id#2, c_first_name#3, c_last_name#4] +Condition : (isnotnull(c_customer_sk#1) AND isnotnull(c_customer_id#2)) + +(155) Exchange +Input [4]: [c_customer_sk#1, c_customer_id#2, c_first_name#3, c_last_name#4] +Arguments: hashpartitioning(c_customer_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(156) Sort +Input [4]: [c_customer_sk#1, c_customer_id#2, c_first_name#3, c_last_name#4] +Arguments: [c_customer_sk#1 ASC NULLS FIRST], false, 0 + +(157) Scan parquet +Output [3]: [ss_sold_date_sk#5, ss_customer_sk#6, ss_net_paid#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(158) Filter +Input [3]: [ss_sold_date_sk#5, ss_customer_sk#6, ss_net_paid#7] +Condition : (isnotnull(ss_customer_sk#6) AND isnotnull(ss_sold_date_sk#5)) + +(159) Exchange +Input [3]: [ss_sold_date_sk#5, ss_customer_sk#6, ss_net_paid#7] +Arguments: hashpartitioning(ss_customer_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(160) Sort +Input [3]: [ss_sold_date_sk#5, ss_customer_sk#6, ss_net_paid#7] +Arguments: [ss_customer_sk#6 ASC NULLS FIRST], false, 0 + +(161) SortMergeJoin +Left keys [1]: [c_customer_sk#1] +Right keys [1]: [ss_customer_sk#6] +Join type: Inner +Join condition: None + +(162) Project +Output [5]: [c_customer_id#2, c_first_name#3, c_last_name#4, ss_sold_date_sk#5, ss_net_paid#7] +Input [7]: [c_customer_sk#1, c_customer_id#2, c_first_name#3, c_last_name#4, ss_sold_date_sk#5, ss_customer_sk#6, ss_net_paid#7] + +(163) Exchange +Input [5]: [c_customer_id#2, c_first_name#3, c_last_name#4, ss_sold_date_sk#5, ss_net_paid#7] +Arguments: hashpartitioning(ss_sold_date_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(164) Sort +Input [5]: [c_customer_id#2, c_first_name#3, c_last_name#4, ss_sold_date_sk#5, ss_net_paid#7] +Arguments: [ss_sold_date_sk#5 ASC NULLS FIRST], false, 0 + +(165) Scan parquet +Output [2]: [d_date_sk#8, d_year#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), In(d_year, [2001,2002]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(166) Filter +Input [2]: [d_date_sk#8, d_year#9] +Condition : (((isnotnull(d_year#9) AND (d_year#9 = 2001)) AND d_year#9 IN (2001,2002)) AND isnotnull(d_date_sk#8)) + +(167) Exchange +Input [2]: [d_date_sk#8, d_year#9] +Arguments: hashpartitioning(d_date_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(168) Sort +Input [2]: [d_date_sk#8, d_year#9] +Arguments: [d_date_sk#8 ASC NULLS FIRST], false, 0 + +(169) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#5] +Right keys [1]: [d_date_sk#8] +Join type: Inner +Join condition: None + +(170) Project +Output [5]: [c_customer_id#2, c_first_name#3, c_last_name#4, ss_net_paid#7, d_year#9] +Input [7]: [c_customer_id#2, c_first_name#3, c_last_name#4, ss_sold_date_sk#5, ss_net_paid#7, d_date_sk#8, d_year#9] + +(171) HashAggregate +Input [5]: [c_customer_id#2, c_first_name#3, c_last_name#4, ss_net_paid#7, d_year#9] +Keys [4]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#9] +Functions [1]: [partial_sum(UnscaledValue(ss_net_paid#7))] +Aggregate Attributes [1]: [sum#11] +Results [5]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#9, sum#54] + +(172) Exchange +Input [5]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#9, sum#54] +Arguments: hashpartitioning(c_customer_id#2, c_first_name#3, c_last_name#4, d_year#9, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(173) HashAggregate +Input [5]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#9, sum#54] +Keys [4]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#9] +Functions [1]: [sum(UnscaledValue(ss_net_paid#7))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_net_paid#7))#13] +Results [2]: [c_customer_id#2 AS customer_id#14, MakeDecimal(sum(UnscaledValue(ss_net_paid#7))#13,17,2) AS year_total#15] + +(174) Filter +Input [2]: [customer_id#14, year_total#15] +Condition : (isnotnull(year_total#15) AND (year_total#15 > 0.00)) + +(175) Exchange +Input [2]: [customer_id#14, year_total#15] +Arguments: hashpartitioning(customer_id#14, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(176) Sort +Input [2]: [customer_id#14, year_total#15] +Arguments: [customer_id#14 ASC NULLS FIRST], false, 0 + +(177) Scan parquet +Output [4]: [c_customer_sk#55, c_customer_id#16, c_first_name#17, c_last_name#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_customer_id)] +ReadSchema: struct + +(178) Filter +Input [4]: [c_customer_sk#55, c_customer_id#16, c_first_name#17, c_last_name#18] +Condition : (isnotnull(c_customer_sk#55) AND isnotnull(c_customer_id#16)) + +(179) Exchange +Input [4]: [c_customer_sk#55, c_customer_id#16, c_first_name#17, c_last_name#18] +Arguments: hashpartitioning(c_customer_sk#55, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(180) Sort +Input [4]: [c_customer_sk#55, c_customer_id#16, c_first_name#17, c_last_name#18] +Arguments: [c_customer_sk#55 ASC NULLS FIRST], false, 0 + +(181) Scan parquet +Output [3]: [ss_sold_date_sk#19, ss_customer_sk#56, ss_net_paid#20] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_customer_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(182) Filter +Input [3]: [ss_sold_date_sk#19, ss_customer_sk#56, ss_net_paid#20] +Condition : (isnotnull(ss_customer_sk#56) AND isnotnull(ss_sold_date_sk#19)) + +(183) Exchange +Input [3]: [ss_sold_date_sk#19, ss_customer_sk#56, ss_net_paid#20] +Arguments: hashpartitioning(ss_customer_sk#56, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(184) Sort +Input [3]: [ss_sold_date_sk#19, ss_customer_sk#56, ss_net_paid#20] +Arguments: [ss_customer_sk#56 ASC NULLS FIRST], false, 0 + +(185) SortMergeJoin +Left keys [1]: [c_customer_sk#55] +Right keys [1]: [ss_customer_sk#56] +Join type: Inner +Join condition: None + +(186) Project +Output [5]: [c_customer_id#16, c_first_name#17, c_last_name#18, ss_sold_date_sk#19, ss_net_paid#20] +Input [7]: [c_customer_sk#55, c_customer_id#16, c_first_name#17, c_last_name#18, ss_sold_date_sk#19, ss_customer_sk#56, ss_net_paid#20] + +(187) Exchange +Input [5]: [c_customer_id#16, c_first_name#17, c_last_name#18, ss_sold_date_sk#19, ss_net_paid#20] +Arguments: hashpartitioning(ss_sold_date_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(188) Sort +Input [5]: [c_customer_id#16, c_first_name#17, c_last_name#18, ss_sold_date_sk#19, ss_net_paid#20] +Arguments: [ss_sold_date_sk#19 ASC NULLS FIRST], false, 0 + +(189) Scan parquet +Output [2]: [d_date_sk#21, d_year#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2002), In(d_year, [2001,2002]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(190) Filter +Input [2]: [d_date_sk#21, d_year#22] +Condition : (((isnotnull(d_year#22) AND (d_year#22 = 2002)) AND d_year#22 IN (2001,2002)) AND isnotnull(d_date_sk#21)) + +(191) Exchange +Input [2]: [d_date_sk#21, d_year#22] +Arguments: hashpartitioning(d_date_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(192) Sort +Input [2]: [d_date_sk#21, d_year#22] +Arguments: [d_date_sk#21 ASC NULLS FIRST], false, 0 + +(193) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#19] +Right keys [1]: [d_date_sk#21] +Join type: Inner +Join condition: None + +(194) Project +Output [5]: [c_customer_id#16, c_first_name#17, c_last_name#18, ss_net_paid#20, d_year#22] +Input [7]: [c_customer_id#16, c_first_name#17, c_last_name#18, ss_sold_date_sk#19, ss_net_paid#20, d_date_sk#21, d_year#22] + +(195) HashAggregate +Input [5]: [c_customer_id#16, c_first_name#17, c_last_name#18, ss_net_paid#20, d_year#22] +Keys [4]: [c_customer_id#16, c_first_name#17, c_last_name#18, d_year#22] +Functions [1]: [partial_sum(UnscaledValue(ss_net_paid#20))] +Aggregate Attributes [1]: [sum#24] +Results [5]: [c_customer_id#16, c_first_name#17, c_last_name#18, d_year#22, sum#57] + +(196) Exchange +Input [5]: [c_customer_id#16, c_first_name#17, c_last_name#18, d_year#22, sum#57] +Arguments: hashpartitioning(c_customer_id#16, c_first_name#17, c_last_name#18, d_year#22, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(197) HashAggregate +Input [5]: [c_customer_id#16, c_first_name#17, c_last_name#18, d_year#22, sum#57] +Keys [4]: [c_customer_id#16, c_first_name#17, c_last_name#18, d_year#22] +Functions [1]: [sum(UnscaledValue(ss_net_paid#20))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_net_paid#20))#13] +Results [4]: [c_customer_id#16 AS customer_id#25, c_first_name#17 AS customer_first_name#26, c_last_name#18 AS customer_last_name#27, MakeDecimal(sum(UnscaledValue(ss_net_paid#20))#13,17,2) AS year_total#28] + +(198) Exchange +Input [4]: [customer_id#25, customer_first_name#26, customer_last_name#27, year_total#28] +Arguments: hashpartitioning(customer_id#25, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(199) Sort +Input [4]: [customer_id#25, customer_first_name#26, customer_last_name#27, year_total#28] +Arguments: [customer_id#25 ASC NULLS FIRST], false, 0 + +(200) SortMergeJoin +Left keys [1]: [customer_id#14] +Right keys [1]: [customer_id#25] +Join type: Inner +Join condition: None + +(201) Scan parquet +Output [4]: [c_customer_sk#29, c_customer_id#30, c_first_name#31, c_last_name#32] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_customer_id)] +ReadSchema: struct + +(202) Filter +Input [4]: [c_customer_sk#29, c_customer_id#30, c_first_name#31, c_last_name#32] +Condition : (isnotnull(c_customer_sk#29) AND isnotnull(c_customer_id#30)) + +(203) Exchange +Input [4]: [c_customer_sk#29, c_customer_id#30, c_first_name#31, c_last_name#32] +Arguments: hashpartitioning(c_customer_sk#29, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(204) Sort +Input [4]: [c_customer_sk#29, c_customer_id#30, c_first_name#31, c_last_name#32] +Arguments: [c_customer_sk#29 ASC NULLS FIRST], false, 0 + +(205) Scan parquet +Output [3]: [ws_sold_date_sk#33, ws_bill_customer_sk#34, ws_net_paid#35] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_bill_customer_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(206) Filter +Input [3]: [ws_sold_date_sk#33, ws_bill_customer_sk#34, ws_net_paid#35] +Condition : (isnotnull(ws_bill_customer_sk#34) AND isnotnull(ws_sold_date_sk#33)) + +(207) Exchange +Input [3]: [ws_sold_date_sk#33, ws_bill_customer_sk#34, ws_net_paid#35] +Arguments: hashpartitioning(ws_bill_customer_sk#34, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(208) Sort +Input [3]: [ws_sold_date_sk#33, ws_bill_customer_sk#34, ws_net_paid#35] +Arguments: [ws_bill_customer_sk#34 ASC NULLS FIRST], false, 0 + +(209) SortMergeJoin +Left keys [1]: [c_customer_sk#29] +Right keys [1]: [ws_bill_customer_sk#34] +Join type: Inner +Join condition: None + +(210) Project +Output [5]: [c_customer_id#30, c_first_name#31, c_last_name#32, ws_sold_date_sk#33, ws_net_paid#35] +Input [7]: [c_customer_sk#29, c_customer_id#30, c_first_name#31, c_last_name#32, ws_sold_date_sk#33, ws_bill_customer_sk#34, ws_net_paid#35] + +(211) Exchange +Input [5]: [c_customer_id#30, c_first_name#31, c_last_name#32, ws_sold_date_sk#33, ws_net_paid#35] +Arguments: hashpartitioning(ws_sold_date_sk#33, 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(212) Sort +Input [5]: [c_customer_id#30, c_first_name#31, c_last_name#32, ws_sold_date_sk#33, ws_net_paid#35] +Arguments: [ws_sold_date_sk#33 ASC NULLS FIRST], false, 0 + +(213) Scan parquet +Output [2]: [d_date_sk#36, d_year#37] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), In(d_year, [2001,2002]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(214) Filter +Input [2]: [d_date_sk#36, d_year#37] +Condition : (((isnotnull(d_year#37) AND (d_year#37 = 2001)) AND d_year#37 IN (2001,2002)) AND isnotnull(d_date_sk#36)) + +(215) Exchange +Input [2]: [d_date_sk#36, d_year#37] +Arguments: hashpartitioning(d_date_sk#36, 100), ENSURE_REQUIREMENTS, [plan_id=31] + +(216) Sort +Input [2]: [d_date_sk#36, d_year#37] +Arguments: [d_date_sk#36 ASC NULLS FIRST], false, 0 + +(217) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#33] +Right keys [1]: [d_date_sk#36] +Join type: Inner +Join condition: None + +(218) Project +Output [5]: [c_customer_id#30, c_first_name#31, c_last_name#32, ws_net_paid#35, d_year#37] +Input [7]: [c_customer_id#30, c_first_name#31, c_last_name#32, ws_sold_date_sk#33, ws_net_paid#35, d_date_sk#36, d_year#37] + +(219) HashAggregate +Input [5]: [c_customer_id#30, c_first_name#31, c_last_name#32, ws_net_paid#35, d_year#37] +Keys [4]: [c_customer_id#30, c_first_name#31, c_last_name#32, d_year#37] +Functions [1]: [partial_sum(UnscaledValue(ws_net_paid#35))] +Aggregate Attributes [1]: [sum#39] +Results [5]: [c_customer_id#30, c_first_name#31, c_last_name#32, d_year#37, sum#58] + +(220) Exchange +Input [5]: [c_customer_id#30, c_first_name#31, c_last_name#32, d_year#37, sum#58] +Arguments: hashpartitioning(c_customer_id#30, c_first_name#31, c_last_name#32, d_year#37, 100), ENSURE_REQUIREMENTS, [plan_id=32] + +(221) HashAggregate +Input [5]: [c_customer_id#30, c_first_name#31, c_last_name#32, d_year#37, sum#58] +Keys [4]: [c_customer_id#30, c_first_name#31, c_last_name#32, d_year#37] +Functions [1]: [sum(UnscaledValue(ws_net_paid#35))] +Aggregate Attributes [1]: [sum(UnscaledValue(ws_net_paid#35))#40] +Results [2]: [c_customer_id#30 AS customer_id#41, MakeDecimal(sum(UnscaledValue(ws_net_paid#35))#40,17,2) AS year_total#42] + +(222) Filter +Input [2]: [customer_id#41, year_total#42] +Condition : (isnotnull(year_total#42) AND (year_total#42 > 0.00)) + +(223) Exchange +Input [2]: [customer_id#41, year_total#42] +Arguments: hashpartitioning(customer_id#41, 100), ENSURE_REQUIREMENTS, [plan_id=33] + +(224) Sort +Input [2]: [customer_id#41, year_total#42] +Arguments: [customer_id#41 ASC NULLS FIRST], false, 0 + +(225) SortMergeJoin +Left keys [1]: [customer_id#14] +Right keys [1]: [customer_id#41] +Join type: Inner +Join condition: None + +(226) Project +Output [7]: [customer_id#14, year_total#15, customer_id#25, customer_first_name#26, customer_last_name#27, year_total#28, year_total#42] +Input [8]: [customer_id#14, year_total#15, customer_id#25, customer_first_name#26, customer_last_name#27, year_total#28, customer_id#41, year_total#42] + +(227) Scan parquet +Output [4]: [c_customer_sk#59, c_customer_id#43, c_first_name#44, c_last_name#45] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_customer_id)] +ReadSchema: struct + +(228) Filter +Input [4]: [c_customer_sk#59, c_customer_id#43, c_first_name#44, c_last_name#45] +Condition : (isnotnull(c_customer_sk#59) AND isnotnull(c_customer_id#43)) + +(229) Exchange +Input [4]: [c_customer_sk#59, c_customer_id#43, c_first_name#44, c_last_name#45] +Arguments: hashpartitioning(c_customer_sk#59, 100), ENSURE_REQUIREMENTS, [plan_id=34] + +(230) Sort +Input [4]: [c_customer_sk#59, c_customer_id#43, c_first_name#44, c_last_name#45] +Arguments: [c_customer_sk#59 ASC NULLS FIRST], false, 0 + +(231) Scan parquet +Output [3]: [ws_sold_date_sk#46, ws_bill_customer_sk#60, ws_net_paid#47] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_bill_customer_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(232) Filter +Input [3]: [ws_sold_date_sk#46, ws_bill_customer_sk#60, ws_net_paid#47] +Condition : (isnotnull(ws_bill_customer_sk#60) AND isnotnull(ws_sold_date_sk#46)) + +(233) Exchange +Input [3]: [ws_sold_date_sk#46, ws_bill_customer_sk#60, ws_net_paid#47] +Arguments: hashpartitioning(ws_bill_customer_sk#60, 100), ENSURE_REQUIREMENTS, [plan_id=35] + +(234) Sort +Input [3]: [ws_sold_date_sk#46, ws_bill_customer_sk#60, ws_net_paid#47] +Arguments: [ws_bill_customer_sk#60 ASC NULLS FIRST], false, 0 + +(235) SortMergeJoin +Left keys [1]: [c_customer_sk#59] +Right keys [1]: [ws_bill_customer_sk#60] +Join type: Inner +Join condition: None + +(236) Project +Output [5]: [c_customer_id#43, c_first_name#44, c_last_name#45, ws_sold_date_sk#46, ws_net_paid#47] +Input [7]: [c_customer_sk#59, c_customer_id#43, c_first_name#44, c_last_name#45, ws_sold_date_sk#46, ws_bill_customer_sk#60, ws_net_paid#47] + +(237) Exchange +Input [5]: [c_customer_id#43, c_first_name#44, c_last_name#45, ws_sold_date_sk#46, ws_net_paid#47] +Arguments: hashpartitioning(ws_sold_date_sk#46, 100), ENSURE_REQUIREMENTS, [plan_id=36] + +(238) Sort +Input [5]: [c_customer_id#43, c_first_name#44, c_last_name#45, ws_sold_date_sk#46, ws_net_paid#47] +Arguments: [ws_sold_date_sk#46 ASC NULLS FIRST], false, 0 + +(239) Scan parquet +Output [2]: [d_date_sk#48, d_year#49] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2002), In(d_year, [2001,2002]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(240) Filter +Input [2]: [d_date_sk#48, d_year#49] +Condition : (((isnotnull(d_year#49) AND (d_year#49 = 2002)) AND d_year#49 IN (2001,2002)) AND isnotnull(d_date_sk#48)) + +(241) Exchange +Input [2]: [d_date_sk#48, d_year#49] +Arguments: hashpartitioning(d_date_sk#48, 100), ENSURE_REQUIREMENTS, [plan_id=37] + +(242) Sort +Input [2]: [d_date_sk#48, d_year#49] +Arguments: [d_date_sk#48 ASC NULLS FIRST], false, 0 + +(243) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#46] +Right keys [1]: [d_date_sk#48] +Join type: Inner +Join condition: None + +(244) Project +Output [5]: [c_customer_id#43, c_first_name#44, c_last_name#45, ws_net_paid#47, d_year#49] +Input [7]: [c_customer_id#43, c_first_name#44, c_last_name#45, ws_sold_date_sk#46, ws_net_paid#47, d_date_sk#48, d_year#49] + +(245) HashAggregate +Input [5]: [c_customer_id#43, c_first_name#44, c_last_name#45, ws_net_paid#47, d_year#49] +Keys [4]: [c_customer_id#43, c_first_name#44, c_last_name#45, d_year#49] +Functions [1]: [partial_sum(UnscaledValue(ws_net_paid#47))] +Aggregate Attributes [1]: [sum#51] +Results [5]: [c_customer_id#43, c_first_name#44, c_last_name#45, d_year#49, sum#61] + +(246) Exchange +Input [5]: [c_customer_id#43, c_first_name#44, c_last_name#45, d_year#49, sum#61] +Arguments: hashpartitioning(c_customer_id#43, c_first_name#44, c_last_name#45, d_year#49, 100), ENSURE_REQUIREMENTS, [plan_id=38] + +(247) HashAggregate +Input [5]: [c_customer_id#43, c_first_name#44, c_last_name#45, d_year#49, sum#61] +Keys [4]: [c_customer_id#43, c_first_name#44, c_last_name#45, d_year#49] +Functions [1]: [sum(UnscaledValue(ws_net_paid#47))] +Aggregate Attributes [1]: [sum(UnscaledValue(ws_net_paid#47))#40] +Results [2]: [c_customer_id#43 AS customer_id#52, MakeDecimal(sum(UnscaledValue(ws_net_paid#47))#40,17,2) AS year_total#53] + +(248) Exchange +Input [2]: [customer_id#52, year_total#53] +Arguments: hashpartitioning(customer_id#52, 100), ENSURE_REQUIREMENTS, [plan_id=39] + +(249) Sort +Input [2]: [customer_id#52, year_total#53] +Arguments: [customer_id#52 ASC NULLS FIRST], false, 0 + +(250) SortMergeJoin +Left keys [1]: [customer_id#14] +Right keys [1]: [customer_id#52] +Join type: Inner +Join condition: (CASE WHEN (year_total#42 > 0.00) THEN (year_total#53 / year_total#42) END > CASE WHEN (year_total#15 > 0.00) THEN (year_total#28 / year_total#15) END) + +(251) Project +Output [3]: [customer_id#25, customer_first_name#26, customer_last_name#27] +Input [9]: [customer_id#14, year_total#15, customer_id#25, customer_first_name#26, customer_last_name#27, year_total#28, year_total#42, customer_id#52, year_total#53] + +(252) TakeOrderedAndProject +Input [3]: [customer_id#25, customer_first_name#26, customer_last_name#27] +Arguments: X, [customer_id#25 ASC NULLS FIRST, customer_id#25 ASC NULLS FIRST, customer_id#25 ASC NULLS FIRST], [customer_id#25, customer_first_name#26, customer_last_name#27] + +(253) AdaptiveSparkPlan +Output [3]: [customer_id#25, customer_first_name#26, customer_last_name#27] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q75.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q75.txt new file mode 100644 index 000000000..34449045a --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q75.txt @@ -0,0 +1,2443 @@ +== Physical Plan == +AdaptiveSparkPlan (455) ++- == Final Plan == + TakeOrderedAndProject (269) + +- * Project (268) + +- * SortMergeJoin Inner (267) + :- NativeSort (160) + : +- InputAdapter (159) + : +- AQEShuffleRead (158) + : +- ShuffleQueryStage (157), Statistics(X) + : +- NativeShuffleExchange (156) + : +- NativeFilter (155) + : +- NativeProject (154) + : +- NativeHashAggregate (153) + : +- InputAdapter (152) + : +- AQEShuffleRead (151) + : +- ShuffleQueryStage (150), Statistics(X) + : +- NativeShuffleExchange (149) + : +- NativeHashAggregate (148) + : +- NativeProject (147) + : +- NativeProject (146) + : +- NativeHashAggregate (145) + : +- InputAdapter (144) + : +- AQEShuffleRead (143) + : +- ShuffleQueryStage (142), Statistics(X) + : +- NativeShuffleExchange (141) + : +- NativeHashAggregate (140) + : +- InputAdapter (139) + : +- NativeUnion (138) + : :- NativeProject (49) + : : +- NativeSortMergeJoin LeftOuter (48) + : : :- NativeSort (39) + : : : +- InputAdapter (38) + : : : +- AQEShuffleRead (37) + : : : +- ShuffleQueryStage (36), Statistics(X) + : : : +- NativeShuffleExchange (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 (47) + : : +- InputAdapter (46) + : : +- AQEShuffleRead (45) + : : +- ShuffleQueryStage (44), Statistics(X) + : : +- NativeShuffleExchange (43) + : : +- NativeFilter (42) + : : +- InputAdapter (41) + : : +- NativeParquetScan (40) + : :- NativeProject (93) + : : +- NativeSortMergeJoin LeftOuter (92) + : : :- NativeSort (83) + : : : +- InputAdapter (82) + : : : +- AQEShuffleRead (81) + : : : +- ShuffleQueryStage (80), Statistics(X) + : : : +- NativeShuffleExchange (79) + : : : +- NativeProject (78) + : : : +- NativeSortMergeJoin Inner (77) + : : : :- NativeSort (70) + : : : : +- InputAdapter (69) + : : : : +- AQEShuffleRead (68) + : : : : +- ShuffleQueryStage (67), Statistics(X) + : : : : +- NativeShuffleExchange (66) + : : : : +- NativeProject (65) + : : : : +- NativeSortMergeJoin Inner (64) + : : : : :- NativeSort (57) + : : : : : +- InputAdapter (56) + : : : : : +- AQEShuffleRead (55) + : : : : : +- ShuffleQueryStage (54), Statistics(X) + : : : : : +- NativeShuffleExchange (53) + : : : : : +- NativeFilter (52) + : : : : : +- InputAdapter (51) + : : : : : +- NativeParquetScan (50) + : : : : +- NativeSort (63) + : : : : +- InputAdapter (62) + : : : : +- InputAdapter (61) + : : : : +- AQEShuffleRead (60) + : : : : +- ShuffleQueryStage (59), Statistics(X) + : : : : +- ReusedExchange (58) + : : : +- NativeSort (76) + : : : +- InputAdapter (75) + : : : +- InputAdapter (74) + : : : +- AQEShuffleRead (73) + : : : +- ShuffleQueryStage (72), Statistics(X) + : : : +- ReusedExchange (71) + : : +- NativeSort (91) + : : +- InputAdapter (90) + : : +- AQEShuffleRead (89) + : : +- ShuffleQueryStage (88), Statistics(X) + : : +- NativeShuffleExchange (87) + : : +- NativeFilter (86) + : : +- InputAdapter (85) + : : +- NativeParquetScan (84) + : +- NativeProject (137) + : +- NativeSortMergeJoin LeftOuter (136) + : :- NativeSort (127) + : : +- InputAdapter (126) + : : +- AQEShuffleRead (125) + : : +- ShuffleQueryStage (124), Statistics(X) + : : +- NativeShuffleExchange (123) + : : +- NativeProject (122) + : : +- NativeSortMergeJoin Inner (121) + : : :- NativeSort (114) + : : : +- InputAdapter (113) + : : : +- AQEShuffleRead (112) + : : : +- ShuffleQueryStage (111), Statistics(X) + : : : +- NativeShuffleExchange (110) + : : : +- NativeProject (109) + : : : +- NativeSortMergeJoin Inner (108) + : : : :- NativeSort (101) + : : : : +- InputAdapter (100) + : : : : +- AQEShuffleRead (99) + : : : : +- ShuffleQueryStage (98), Statistics(X) + : : : : +- NativeShuffleExchange (97) + : : : : +- NativeFilter (96) + : : : : +- InputAdapter (95) + : : : : +- NativeParquetScan (94) + : : : +- NativeSort (107) + : : : +- InputAdapter (106) + : : : +- InputAdapter (105) + : : : +- AQEShuffleRead (104) + : : : +- ShuffleQueryStage (103), Statistics(X) + : : : +- ReusedExchange (102) + : : +- NativeSort (120) + : : +- InputAdapter (119) + : : +- InputAdapter (118) + : : +- AQEShuffleRead (117) + : : +- ShuffleQueryStage (116), Statistics(X) + : : +- ReusedExchange (115) + : +- NativeSort (135) + : +- InputAdapter (134) + : +- AQEShuffleRead (133) + : +- ShuffleQueryStage (132), Statistics(X) + : +- NativeShuffleExchange (131) + : +- NativeFilter (130) + : +- InputAdapter (129) + : +- NativeParquetScan (128) + +- NativeSort (266) + +- InputAdapter (265) + +- AQEShuffleRead (264) + +- ShuffleQueryStage (263), Statistics(X) + +- NativeShuffleExchange (262) + +- NativeFilter (261) + +- NativeProject (260) + +- NativeHashAggregate (259) + +- InputAdapter (258) + +- AQEShuffleRead (257) + +- ShuffleQueryStage (256), Statistics(X) + +- NativeShuffleExchange (255) + +- NativeHashAggregate (254) + +- NativeProject (253) + +- NativeProject (252) + +- NativeHashAggregate (251) + +- InputAdapter (250) + +- AQEShuffleRead (249) + +- ShuffleQueryStage (248), Statistics(X) + +- NativeShuffleExchange (247) + +- NativeHashAggregate (246) + +- InputAdapter (245) + +- NativeUnion (244) + :- NativeProject (189) + : +- NativeSortMergeJoin LeftOuter (188) + : :- NativeSort (181) + : : +- InputAdapter (180) + : : +- AQEShuffleRead (179) + : : +- ShuffleQueryStage (178), Statistics(X) + : : +- NativeShuffleExchange (177) + : : +- NativeProject (176) + : : +- NativeSortMergeJoin Inner (175) + : : :- NativeSort (166) + : : : +- InputAdapter (165) + : : : +- InputAdapter (164) + : : : +- AQEShuffleRead (163) + : : : +- ShuffleQueryStage (162), Statistics(X) + : : : +- ReusedExchange (161) + : : +- NativeSort (174) + : : +- InputAdapter (173) + : : +- AQEShuffleRead (172) + : : +- ShuffleQueryStage (171), Statistics(X) + : : +- NativeShuffleExchange (170) + : : +- NativeFilter (169) + : : +- InputAdapter (168) + : : +- NativeParquetScan (167) + : +- NativeSort (187) + : +- InputAdapter (186) + : +- InputAdapter (185) + : +- AQEShuffleRead (184) + : +- ShuffleQueryStage (183), Statistics(X) + : +- ReusedExchange (182) + :- NativeProject (216) + : +- NativeSortMergeJoin LeftOuter (215) + : :- NativeSort (208) + : : +- InputAdapter (207) + : : +- AQEShuffleRead (206) + : : +- ShuffleQueryStage (205), Statistics(X) + : : +- NativeShuffleExchange (204) + : : +- NativeProject (203) + : : +- NativeSortMergeJoin Inner (202) + : : :- NativeSort (195) + : : : +- InputAdapter (194) + : : : +- InputAdapter (193) + : : : +- AQEShuffleRead (192) + : : : +- ShuffleQueryStage (191), Statistics(X) + : : : +- ReusedExchange (190) + : : +- NativeSort (201) + : : +- InputAdapter (200) + : : +- InputAdapter (199) + : : +- AQEShuffleRead (198) + : : +- ShuffleQueryStage (197), Statistics(X) + : : +- ReusedExchange (196) + : +- NativeSort (214) + : +- InputAdapter (213) + : +- InputAdapter (212) + : +- AQEShuffleRead (211) + : +- ShuffleQueryStage (210), Statistics(X) + : +- ReusedExchange (209) + +- NativeProject (243) + +- NativeSortMergeJoin LeftOuter (242) + :- NativeSort (235) + : +- InputAdapter (234) + : +- AQEShuffleRead (233) + : +- ShuffleQueryStage (232), Statistics(X) + : +- NativeShuffleExchange (231) + : +- NativeProject (230) + : +- NativeSortMergeJoin Inner (229) + : :- NativeSort (222) + : : +- InputAdapter (221) + : : +- InputAdapter (220) + : : +- AQEShuffleRead (219) + : : +- ShuffleQueryStage (218), Statistics(X) + : : +- ReusedExchange (217) + : +- NativeSort (228) + : +- InputAdapter (227) + : +- InputAdapter (226) + : +- AQEShuffleRead (225) + : +- ShuffleQueryStage (224), Statistics(X) + : +- ReusedExchange (223) + +- NativeSort (241) + +- InputAdapter (240) + +- InputAdapter (239) + +- AQEShuffleRead (238) + +- ShuffleQueryStage (237), Statistics(X) + +- ReusedExchange (236) ++- == Initial Plan == + TakeOrderedAndProject (454) + +- Project (453) + +- SortMergeJoin Inner (452) + :- Sort (360) + : +- Exchange (359) + : +- Filter (358) + : +- HashAggregate (357) + : +- Exchange (356) + : +- HashAggregate (355) + : +- HashAggregate (354) + : +- Exchange (353) + : +- HashAggregate (352) + : +- Union (351) + : :- Project (296) + : : +- SortMergeJoin LeftOuter (295) + : : :- Sort (290) + : : : +- Exchange (289) + : : : +- Project (288) + : : : +- SortMergeJoin Inner (287) + : : : :- Sort (282) + : : : : +- Exchange (281) + : : : : +- Project (280) + : : : : +- SortMergeJoin Inner (279) + : : : : :- Sort (273) + : : : : : +- Exchange (272) + : : : : : +- Filter (271) + : : : : : +- Scan parquet (270) + : : : : +- Sort (278) + : : : : +- Exchange (277) + : : : : +- Project (276) + : : : : +- Filter (275) + : : : : +- Scan parquet (274) + : : : +- Sort (286) + : : : +- Exchange (285) + : : : +- Filter (284) + : : : +- Scan parquet (283) + : : +- Sort (294) + : : +- Exchange (293) + : : +- Filter (292) + : : +- Scan parquet (291) + : :- Project (323) + : : +- SortMergeJoin LeftOuter (322) + : : :- Sort (317) + : : : +- Exchange (316) + : : : +- Project (315) + : : : +- SortMergeJoin Inner (314) + : : : :- Sort (309) + : : : : +- Exchange (308) + : : : : +- Project (307) + : : : : +- SortMergeJoin Inner (306) + : : : : :- Sort (300) + : : : : : +- Exchange (299) + : : : : : +- Filter (298) + : : : : : +- Scan parquet (297) + : : : : +- Sort (305) + : : : : +- Exchange (304) + : : : : +- Project (303) + : : : : +- Filter (302) + : : : : +- Scan parquet (301) + : : : +- Sort (313) + : : : +- Exchange (312) + : : : +- Filter (311) + : : : +- Scan parquet (310) + : : +- Sort (321) + : : +- Exchange (320) + : : +- Filter (319) + : : +- Scan parquet (318) + : +- Project (350) + : +- SortMergeJoin LeftOuter (349) + : :- Sort (344) + : : +- Exchange (343) + : : +- Project (342) + : : +- SortMergeJoin Inner (341) + : : :- Sort (336) + : : : +- Exchange (335) + : : : +- Project (334) + : : : +- SortMergeJoin Inner (333) + : : : :- Sort (327) + : : : : +- Exchange (326) + : : : : +- Filter (325) + : : : : +- Scan parquet (324) + : : : +- Sort (332) + : : : +- Exchange (331) + : : : +- Project (330) + : : : +- Filter (329) + : : : +- Scan parquet (328) + : : +- Sort (340) + : : +- Exchange (339) + : : +- Filter (338) + : : +- Scan parquet (337) + : +- Sort (348) + : +- Exchange (347) + : +- Filter (346) + : +- Scan parquet (345) + +- Sort (451) + +- Exchange (450) + +- Filter (449) + +- HashAggregate (448) + +- Exchange (447) + +- HashAggregate (446) + +- HashAggregate (445) + +- Exchange (444) + +- HashAggregate (443) + +- Union (442) + :- Project (387) + : +- SortMergeJoin LeftOuter (386) + : :- Sort (381) + : : +- Exchange (380) + : : +- Project (379) + : : +- SortMergeJoin Inner (378) + : : :- Sort (373) + : : : +- Exchange (372) + : : : +- Project (371) + : : : +- SortMergeJoin Inner (370) + : : : :- Sort (364) + : : : : +- Exchange (363) + : : : : +- Filter (362) + : : : : +- Scan parquet (361) + : : : +- Sort (369) + : : : +- Exchange (368) + : : : +- Project (367) + : : : +- Filter (366) + : : : +- Scan parquet (365) + : : +- Sort (377) + : : +- Exchange (376) + : : +- Filter (375) + : : +- Scan parquet (374) + : +- Sort (385) + : +- Exchange (384) + : +- Filter (383) + : +- Scan parquet (382) + :- Project (414) + : +- SortMergeJoin LeftOuter (413) + : :- Sort (408) + : : +- Exchange (407) + : : +- Project (406) + : : +- SortMergeJoin Inner (405) + : : :- Sort (400) + : : : +- Exchange (399) + : : : +- Project (398) + : : : +- SortMergeJoin Inner (397) + : : : :- Sort (391) + : : : : +- Exchange (390) + : : : : +- Filter (389) + : : : : +- Scan parquet (388) + : : : +- Sort (396) + : : : +- Exchange (395) + : : : +- Project (394) + : : : +- Filter (393) + : : : +- Scan parquet (392) + : : +- Sort (404) + : : +- Exchange (403) + : : +- Filter (402) + : : +- Scan parquet (401) + : +- Sort (412) + : +- Exchange (411) + : +- Filter (410) + : +- Scan parquet (409) + +- Project (441) + +- SortMergeJoin LeftOuter (440) + :- Sort (435) + : +- Exchange (434) + : +- Project (433) + : +- SortMergeJoin Inner (432) + : :- Sort (427) + : : +- Exchange (426) + : : +- Project (425) + : : +- SortMergeJoin Inner (424) + : : :- Sort (418) + : : : +- Exchange (417) + : : : +- Filter (416) + : : : +- Scan parquet (415) + : : +- Sort (423) + : : +- Exchange (422) + : : +- Project (421) + : : +- Filter (420) + : : +- Scan parquet (419) + : +- Sort (431) + : +- Exchange (430) + : +- Filter (429) + : +- Scan parquet (428) + +- Sort (439) + +- Exchange (438) + +- Filter (437) + +- Scan parquet (436) + + +(270) Scan parquet +Output [5]: [cs_sold_date_sk#1, cs_item_sk#2, cs_order_number#3, cs_quantity#4, cs_ext_sales_price#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [5]: [cs_sold_date_sk#1, cs_item_sk#2, cs_order_number#3, cs_quantity#4, cs_ext_sales_price#5] +Arguments: [#1, #2, #3, #4, #5] + +(3) NativeFilter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Condition : (isnotnull(cs_item_sk#2) AND isnotnull(cs_sold_date_sk#1)) + +(4) NativeShuffleExchange +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: hashpartitioning(cs_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: X + +(6) AQEShuffleRead +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: coalesced + +(7) InputAdapter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] + +(8) NativeSort +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: [cs_item_sk#2 ASC NULLS FIRST], false + +(274) Scan parquet +Output [6]: [i_item_sk#6, i_brand_id#7, i_class_id#8, i_category_id#9, i_category#10, i_manufact_id#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_category), EqualTo(i_category,Books), IsNotNull(i_item_sk), IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id), IsNotNull(i_manufact_id)] +ReadSchema: struct + +(10) InputAdapter +Input [6]: [i_item_sk#6, i_brand_id#7, i_class_id#8, i_category_id#9, i_category#10, i_manufact_id#11] +Arguments: [#6, #7, #8, #9, #10, #11] + +(11) NativeFilter +Input [6]: [#6#6, #7#7, #8#8, #9#9, #10#10, #11#11] +Condition : ((((((isnotnull(i_category#10) AND (i_category#10 = Books)) AND isnotnull(i_item_sk#6)) AND isnotnull(i_brand_id#7)) AND isnotnull(i_class_id#8)) AND isnotnull(i_category_id#9)) AND isnotnull(i_manufact_id#11)) + +(12) NativeProject +Output [5]: [i_item_sk#6, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11] +Input [6]: [#6#6, #7#7, #8#8, #9#9, #10#10, #11#11] + +(13) NativeShuffleExchange +Input [5]: [i_item_sk#6, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11] +Arguments: hashpartitioning(i_item_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [5]: [i_item_sk#6, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11] +Arguments: X + +(15) AQEShuffleRead +Input [5]: [i_item_sk#6, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11] +Arguments: coalesced + +(16) InputAdapter +Input [5]: [i_item_sk#6, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11] + +(17) NativeSort +Input [5]: [i_item_sk#6, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11] +Arguments: [i_item_sk#6 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [cs_item_sk#2] +Right keys [1]: [i_item_sk#6] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [9]: [cs_sold_date_sk#1, cs_item_sk#2, cs_order_number#3, cs_quantity#4, cs_ext_sales_price#5, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11] +Input [10]: [#1#1, #2#2, #3#3, #4#4, #5#5, i_item_sk#6, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11] + +(20) NativeShuffleExchange +Input [9]: [cs_sold_date_sk#1, cs_item_sk#2, cs_order_number#3, cs_quantity#4, cs_ext_sales_price#5, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11] +Arguments: hashpartitioning(cs_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [9]: [cs_sold_date_sk#1, cs_item_sk#2, cs_order_number#3, cs_quantity#4, cs_ext_sales_price#5, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11] +Arguments: X + +(22) AQEShuffleRead +Input [9]: [cs_sold_date_sk#1, cs_item_sk#2, cs_order_number#3, cs_quantity#4, cs_ext_sales_price#5, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11] +Arguments: coalesced + +(23) InputAdapter +Input [9]: [cs_sold_date_sk#1, cs_item_sk#2, cs_order_number#3, cs_quantity#4, cs_ext_sales_price#5, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11] + +(24) NativeSort +Input [9]: [cs_sold_date_sk#1, cs_item_sk#2, cs_order_number#3, cs_quantity#4, cs_ext_sales_price#5, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11] +Arguments: [cs_sold_date_sk#1 ASC NULLS FIRST], false + +(283) Scan parquet +Output [2]: [d_date_sk#12, d_year#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2002), IsNotNull(d_date_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [2]: [d_date_sk#12, d_year#13] +Arguments: [#12, #13] + +(27) NativeFilter +Input [2]: [#12#12, #13#13] +Condition : ((isnotnull(d_year#13) AND (d_year#13 = 2002)) AND isnotnull(d_date_sk#12)) + +(28) NativeShuffleExchange +Input [2]: [#12#12, #13#13] +Arguments: hashpartitioning(d_date_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(29) ShuffleQueryStage +Output [2]: [#12#12, #13#13] +Arguments: X + +(30) AQEShuffleRead +Input [2]: [#12#12, #13#13] +Arguments: coalesced + +(31) InputAdapter +Input [2]: [#12#12, #13#13] + +(32) NativeSort +Input [2]: [#12#12, #13#13] +Arguments: [d_date_sk#12 ASC NULLS FIRST], false + +(33) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#1] +Right keys [1]: [d_date_sk#12] +Join type: Inner +Join condition: None + +(34) NativeProject +Output [9]: [cs_item_sk#2, cs_order_number#3, cs_quantity#4, cs_ext_sales_price#5, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, d_year#13] +Input [11]: [cs_sold_date_sk#1, cs_item_sk#2, cs_order_number#3, cs_quantity#4, cs_ext_sales_price#5, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, #12#12, #13#13] + +(35) NativeShuffleExchange +Input [9]: [cs_item_sk#2, cs_order_number#3, cs_quantity#4, cs_ext_sales_price#5, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, d_year#13] +Arguments: hashpartitioning(cs_order_number#3, cs_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(36) ShuffleQueryStage +Output [9]: [cs_item_sk#2, cs_order_number#3, cs_quantity#4, cs_ext_sales_price#5, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, d_year#13] +Arguments: X + +(37) AQEShuffleRead +Input [9]: [cs_item_sk#2, cs_order_number#3, cs_quantity#4, cs_ext_sales_price#5, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, d_year#13] +Arguments: coalesced + +(38) InputAdapter +Input [9]: [cs_item_sk#2, cs_order_number#3, cs_quantity#4, cs_ext_sales_price#5, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, d_year#13] + +(39) NativeSort +Input [9]: [cs_item_sk#2, cs_order_number#3, cs_quantity#4, cs_ext_sales_price#5, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, d_year#13] +Arguments: [cs_order_number#3 ASC NULLS FIRST, cs_item_sk#2 ASC NULLS FIRST], false + +(291) Scan parquet +Output [4]: [cr_item_sk#14, cr_order_number#15, cr_return_quantity#16, cr_return_amount#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cr_order_number), IsNotNull(cr_item_sk)] +ReadSchema: struct + +(41) InputAdapter +Input [4]: [cr_item_sk#14, cr_order_number#15, cr_return_quantity#16, cr_return_amount#17] +Arguments: [#14, #15, #16, #17] + +(42) NativeFilter +Input [4]: [#14#14, #15#15, #16#16, #17#17] +Condition : (isnotnull(cr_order_number#15) AND isnotnull(cr_item_sk#14)) + +(43) NativeShuffleExchange +Input [4]: [#14#14, #15#15, #16#16, #17#17] +Arguments: hashpartitioning(cr_order_number#15, cr_item_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) ShuffleQueryStage +Output [4]: [#14#14, #15#15, #16#16, #17#17] +Arguments: X + +(45) AQEShuffleRead +Input [4]: [#14#14, #15#15, #16#16, #17#17] +Arguments: coalesced + +(46) InputAdapter +Input [4]: [#14#14, #15#15, #16#16, #17#17] + +(47) NativeSort +Input [4]: [#14#14, #15#15, #16#16, #17#17] +Arguments: [cr_order_number#15 ASC NULLS FIRST, cr_item_sk#14 ASC NULLS FIRST], false + +(48) NativeSortMergeJoin +Left keys [2]: [cs_order_number#3, cs_item_sk#2] +Right keys [2]: [cr_order_number#15, cr_item_sk#14] +Join type: LeftOuter +Join condition: None + +(49) NativeProject +Output [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, (cs_quantity#4 - coalesce(cr_return_quantity#16, 0)) AS sales_cnt#18, (cs_ext_sales_price#5 - coalesce(cr_return_amount#17, 0.00)) AS sales_amt#19] +Input [13]: [cs_item_sk#2, cs_order_number#3, cs_quantity#4, cs_ext_sales_price#5, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, d_year#13, #14#14, #15#15, #16#16, #17#17] + +(297) Scan parquet +Output [5]: [ss_sold_date_sk#20, ss_item_sk#21, ss_ticket_number#22, ss_quantity#23, ss_ext_sales_price#24] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(51) InputAdapter +Input [5]: [ss_sold_date_sk#20, ss_item_sk#21, ss_ticket_number#22, ss_quantity#23, ss_ext_sales_price#24] +Arguments: [#20, #21, #22, #23, #24] + +(52) NativeFilter +Input [5]: [#20#20, #21#21, #22#22, #23#23, #24#24] +Condition : (isnotnull(ss_item_sk#21) AND isnotnull(ss_sold_date_sk#20)) + +(53) NativeShuffleExchange +Input [5]: [#20#20, #21#21, #22#22, #23#23, #24#24] +Arguments: hashpartitioning(ss_item_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(54) ShuffleQueryStage +Output [5]: [#20#20, #21#21, #22#22, #23#23, #24#24] +Arguments: X + +(55) AQEShuffleRead +Input [5]: [#20#20, #21#21, #22#22, #23#23, #24#24] +Arguments: coalesced + +(56) InputAdapter +Input [5]: [#20#20, #21#21, #22#22, #23#23, #24#24] + +(57) NativeSort +Input [5]: [#20#20, #21#21, #22#22, #23#23, #24#24] +Arguments: [ss_item_sk#21 ASC NULLS FIRST], false + +(58) ReusedExchange [Reuses operator id: 13] +Output [5]: [i_item_sk#25, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29] + +(59) ShuffleQueryStage +Output [5]: [i_item_sk#25, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29] +Arguments: X + +(60) AQEShuffleRead +Input [5]: [i_item_sk#25, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29] +Arguments: coalesced + +(61) InputAdapter +Input [5]: [i_item_sk#25, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29] +Arguments: [#25, #26, #27, #28, #29] + +(62) InputAdapter +Input [5]: [#25#25, #26#26, #27#27, #28#28, #29#29] + +(63) NativeSort +Input [5]: [#25#25, #26#26, #27#27, #28#28, #29#29] +Arguments: [i_item_sk#25 ASC NULLS FIRST], false + +(64) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#21] +Right keys [1]: [i_item_sk#25] +Join type: Inner +Join condition: None + +(65) NativeProject +Output [9]: [ss_sold_date_sk#20, ss_item_sk#21, ss_ticket_number#22, ss_quantity#23, ss_ext_sales_price#24, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29] +Input [10]: [#20#20, #21#21, #22#22, #23#23, #24#24, #25#25, #26#26, #27#27, #28#28, #29#29] + +(66) NativeShuffleExchange +Input [9]: [ss_sold_date_sk#20, ss_item_sk#21, ss_ticket_number#22, ss_quantity#23, ss_ext_sales_price#24, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29] +Arguments: hashpartitioning(ss_sold_date_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(67) ShuffleQueryStage +Output [9]: [ss_sold_date_sk#20, ss_item_sk#21, ss_ticket_number#22, ss_quantity#23, ss_ext_sales_price#24, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29] +Arguments: X + +(68) AQEShuffleRead +Input [9]: [ss_sold_date_sk#20, ss_item_sk#21, ss_ticket_number#22, ss_quantity#23, ss_ext_sales_price#24, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29] +Arguments: coalesced + +(69) InputAdapter +Input [9]: [ss_sold_date_sk#20, ss_item_sk#21, ss_ticket_number#22, ss_quantity#23, ss_ext_sales_price#24, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29] + +(70) NativeSort +Input [9]: [ss_sold_date_sk#20, ss_item_sk#21, ss_ticket_number#22, ss_quantity#23, ss_ext_sales_price#24, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29] +Arguments: [ss_sold_date_sk#20 ASC NULLS FIRST], false + +(71) ReusedExchange [Reuses operator id: 28] +Output [2]: [d_date_sk#30, d_year#31] + +(72) ShuffleQueryStage +Output [2]: [d_date_sk#30, d_year#31] +Arguments: X + +(73) AQEShuffleRead +Input [2]: [d_date_sk#30, d_year#31] +Arguments: coalesced + +(74) InputAdapter +Input [2]: [d_date_sk#30, d_year#31] +Arguments: [#30, #31] + +(75) InputAdapter +Input [2]: [#30#30, #31#31] + +(76) NativeSort +Input [2]: [#30#30, #31#31] +Arguments: [d_date_sk#30 ASC NULLS FIRST], false + +(77) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#20] +Right keys [1]: [d_date_sk#30] +Join type: Inner +Join condition: None + +(78) NativeProject +Output [9]: [ss_item_sk#21, ss_ticket_number#22, ss_quantity#23, ss_ext_sales_price#24, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29, d_year#31] +Input [11]: [ss_sold_date_sk#20, ss_item_sk#21, ss_ticket_number#22, ss_quantity#23, ss_ext_sales_price#24, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29, #30#30, #31#31] + +(79) NativeShuffleExchange +Input [9]: [ss_item_sk#21, ss_ticket_number#22, ss_quantity#23, ss_ext_sales_price#24, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29, d_year#31] +Arguments: hashpartitioning(ss_ticket_number#22, ss_item_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(80) ShuffleQueryStage +Output [9]: [ss_item_sk#21, ss_ticket_number#22, ss_quantity#23, ss_ext_sales_price#24, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29, d_year#31] +Arguments: X + +(81) AQEShuffleRead +Input [9]: [ss_item_sk#21, ss_ticket_number#22, ss_quantity#23, ss_ext_sales_price#24, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29, d_year#31] +Arguments: coalesced + +(82) InputAdapter +Input [9]: [ss_item_sk#21, ss_ticket_number#22, ss_quantity#23, ss_ext_sales_price#24, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29, d_year#31] + +(83) NativeSort +Input [9]: [ss_item_sk#21, ss_ticket_number#22, ss_quantity#23, ss_ext_sales_price#24, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29, d_year#31] +Arguments: [ss_ticket_number#22 ASC NULLS FIRST, ss_item_sk#21 ASC NULLS FIRST], false + +(318) Scan parquet +Output [4]: [sr_item_sk#32, sr_ticket_number#33, sr_return_quantity#34, sr_return_amt#35] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_ticket_number), IsNotNull(sr_item_sk)] +ReadSchema: struct + +(85) InputAdapter +Input [4]: [sr_item_sk#32, sr_ticket_number#33, sr_return_quantity#34, sr_return_amt#35] +Arguments: [#32, #33, #34, #35] + +(86) NativeFilter +Input [4]: [#32#32, #33#33, #34#34, #35#35] +Condition : (isnotnull(sr_ticket_number#33) AND isnotnull(sr_item_sk#32)) + +(87) NativeShuffleExchange +Input [4]: [#32#32, #33#33, #34#34, #35#35] +Arguments: hashpartitioning(sr_ticket_number#33, sr_item_sk#32, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(88) ShuffleQueryStage +Output [4]: [#32#32, #33#33, #34#34, #35#35] +Arguments: X + +(89) AQEShuffleRead +Input [4]: [#32#32, #33#33, #34#34, #35#35] +Arguments: coalesced + +(90) InputAdapter +Input [4]: [#32#32, #33#33, #34#34, #35#35] + +(91) NativeSort +Input [4]: [#32#32, #33#33, #34#34, #35#35] +Arguments: [sr_ticket_number#33 ASC NULLS FIRST, sr_item_sk#32 ASC NULLS FIRST], false + +(92) NativeSortMergeJoin +Left keys [2]: [ss_ticket_number#22, ss_item_sk#21] +Right keys [2]: [sr_ticket_number#33, sr_item_sk#32] +Join type: LeftOuter +Join condition: None + +(93) NativeProject +Output [7]: [d_year#31, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29, (ss_quantity#23 - coalesce(sr_return_quantity#34, 0)) AS sales_cnt#36, (ss_ext_sales_price#24 - coalesce(sr_return_amt#35, 0.00)) AS sales_amt#37] +Input [13]: [ss_item_sk#21, ss_ticket_number#22, ss_quantity#23, ss_ext_sales_price#24, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29, d_year#31, #32#32, #33#33, #34#34, #35#35] + +(324) Scan parquet +Output [5]: [ws_sold_date_sk#38, ws_item_sk#39, ws_order_number#40, ws_quantity#41, ws_ext_sales_price#42] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(95) InputAdapter +Input [5]: [ws_sold_date_sk#38, ws_item_sk#39, ws_order_number#40, ws_quantity#41, ws_ext_sales_price#42] +Arguments: [#38, #39, #40, #41, #42] + +(96) NativeFilter +Input [5]: [#38#38, #39#39, #40#40, #41#41, #42#42] +Condition : (isnotnull(ws_item_sk#39) AND isnotnull(ws_sold_date_sk#38)) + +(97) NativeShuffleExchange +Input [5]: [#38#38, #39#39, #40#40, #41#41, #42#42] +Arguments: hashpartitioning(ws_item_sk#39, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(98) ShuffleQueryStage +Output [5]: [#38#38, #39#39, #40#40, #41#41, #42#42] +Arguments: X + +(99) AQEShuffleRead +Input [5]: [#38#38, #39#39, #40#40, #41#41, #42#42] +Arguments: coalesced + +(100) InputAdapter +Input [5]: [#38#38, #39#39, #40#40, #41#41, #42#42] + +(101) NativeSort +Input [5]: [#38#38, #39#39, #40#40, #41#41, #42#42] +Arguments: [ws_item_sk#39 ASC NULLS FIRST], false + +(102) ReusedExchange [Reuses operator id: 13] +Output [5]: [i_item_sk#43, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47] + +(103) ShuffleQueryStage +Output [5]: [i_item_sk#43, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47] +Arguments: X + +(104) AQEShuffleRead +Input [5]: [i_item_sk#43, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47] +Arguments: coalesced + +(105) InputAdapter +Input [5]: [i_item_sk#43, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47] +Arguments: [#43, #44, #45, #46, #47] + +(106) InputAdapter +Input [5]: [#43#43, #44#44, #45#45, #46#46, #47#47] + +(107) NativeSort +Input [5]: [#43#43, #44#44, #45#45, #46#46, #47#47] +Arguments: [i_item_sk#43 ASC NULLS FIRST], false + +(108) NativeSortMergeJoin +Left keys [1]: [ws_item_sk#39] +Right keys [1]: [i_item_sk#43] +Join type: Inner +Join condition: None + +(109) NativeProject +Output [9]: [ws_sold_date_sk#38, ws_item_sk#39, ws_order_number#40, ws_quantity#41, ws_ext_sales_price#42, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47] +Input [10]: [#38#38, #39#39, #40#40, #41#41, #42#42, #43#43, #44#44, #45#45, #46#46, #47#47] + +(110) NativeShuffleExchange +Input [9]: [ws_sold_date_sk#38, ws_item_sk#39, ws_order_number#40, ws_quantity#41, ws_ext_sales_price#42, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47] +Arguments: hashpartitioning(ws_sold_date_sk#38, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(111) ShuffleQueryStage +Output [9]: [ws_sold_date_sk#38, ws_item_sk#39, ws_order_number#40, ws_quantity#41, ws_ext_sales_price#42, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47] +Arguments: X + +(112) AQEShuffleRead +Input [9]: [ws_sold_date_sk#38, ws_item_sk#39, ws_order_number#40, ws_quantity#41, ws_ext_sales_price#42, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47] +Arguments: coalesced + +(113) InputAdapter +Input [9]: [ws_sold_date_sk#38, ws_item_sk#39, ws_order_number#40, ws_quantity#41, ws_ext_sales_price#42, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47] + +(114) NativeSort +Input [9]: [ws_sold_date_sk#38, ws_item_sk#39, ws_order_number#40, ws_quantity#41, ws_ext_sales_price#42, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47] +Arguments: [ws_sold_date_sk#38 ASC NULLS FIRST], false + +(115) ReusedExchange [Reuses operator id: 28] +Output [2]: [d_date_sk#48, d_year#49] + +(116) ShuffleQueryStage +Output [2]: [d_date_sk#48, d_year#49] +Arguments: X + +(117) AQEShuffleRead +Input [2]: [d_date_sk#48, d_year#49] +Arguments: coalesced + +(118) InputAdapter +Input [2]: [d_date_sk#48, d_year#49] +Arguments: [#48, #49] + +(119) InputAdapter +Input [2]: [#48#48, #49#49] + +(120) NativeSort +Input [2]: [#48#48, #49#49] +Arguments: [d_date_sk#48 ASC NULLS FIRST], false + +(121) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#38] +Right keys [1]: [d_date_sk#48] +Join type: Inner +Join condition: None + +(122) NativeProject +Output [9]: [ws_item_sk#39, ws_order_number#40, ws_quantity#41, ws_ext_sales_price#42, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47, d_year#49] +Input [11]: [ws_sold_date_sk#38, ws_item_sk#39, ws_order_number#40, ws_quantity#41, ws_ext_sales_price#42, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47, #48#48, #49#49] + +(123) NativeShuffleExchange +Input [9]: [ws_item_sk#39, ws_order_number#40, ws_quantity#41, ws_ext_sales_price#42, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47, d_year#49] +Arguments: hashpartitioning(ws_order_number#40, ws_item_sk#39, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(124) ShuffleQueryStage +Output [9]: [ws_item_sk#39, ws_order_number#40, ws_quantity#41, ws_ext_sales_price#42, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47, d_year#49] +Arguments: X + +(125) AQEShuffleRead +Input [9]: [ws_item_sk#39, ws_order_number#40, ws_quantity#41, ws_ext_sales_price#42, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47, d_year#49] +Arguments: coalesced + +(126) InputAdapter +Input [9]: [ws_item_sk#39, ws_order_number#40, ws_quantity#41, ws_ext_sales_price#42, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47, d_year#49] + +(127) NativeSort +Input [9]: [ws_item_sk#39, ws_order_number#40, ws_quantity#41, ws_ext_sales_price#42, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47, d_year#49] +Arguments: [ws_order_number#40 ASC NULLS FIRST, ws_item_sk#39 ASC NULLS FIRST], false + +(345) Scan parquet +Output [4]: [wr_item_sk#50, wr_order_number#51, wr_return_quantity#52, wr_return_amt#53] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wr_order_number), IsNotNull(wr_item_sk)] +ReadSchema: struct + +(129) InputAdapter +Input [4]: [wr_item_sk#50, wr_order_number#51, wr_return_quantity#52, wr_return_amt#53] +Arguments: [#50, #51, #52, #53] + +(130) NativeFilter +Input [4]: [#50#50, #51#51, #52#52, #53#53] +Condition : (isnotnull(wr_order_number#51) AND isnotnull(wr_item_sk#50)) + +(131) NativeShuffleExchange +Input [4]: [#50#50, #51#51, #52#52, #53#53] +Arguments: hashpartitioning(wr_order_number#51, wr_item_sk#50, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(132) ShuffleQueryStage +Output [4]: [#50#50, #51#51, #52#52, #53#53] +Arguments: X + +(133) AQEShuffleRead +Input [4]: [#50#50, #51#51, #52#52, #53#53] +Arguments: coalesced + +(134) InputAdapter +Input [4]: [#50#50, #51#51, #52#52, #53#53] + +(135) NativeSort +Input [4]: [#50#50, #51#51, #52#52, #53#53] +Arguments: [wr_order_number#51 ASC NULLS FIRST, wr_item_sk#50 ASC NULLS FIRST], false + +(136) NativeSortMergeJoin +Left keys [2]: [ws_order_number#40, ws_item_sk#39] +Right keys [2]: [wr_order_number#51, wr_item_sk#50] +Join type: LeftOuter +Join condition: None + +(137) NativeProject +Output [7]: [d_year#49, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47, (ws_quantity#41 - coalesce(wr_return_quantity#52, 0)) AS sales_cnt#54, (ws_ext_sales_price#42 - coalesce(wr_return_amt#53, 0.00)) AS sales_amt#55] +Input [13]: [ws_item_sk#39, ws_order_number#40, ws_quantity#41, ws_ext_sales_price#42, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47, d_year#49, #50#50, #51#51, #52#52, #53#53] + +(138) NativeUnion +Arguments: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#18, sales_amt#19] + +(139) InputAdapter +Input [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#18, sales_amt#19] +Arguments: [#13, #7, #8, #9, #11, #18, #19] + +(140) NativeHashAggregate +Input [7]: [#13#13, #7#7, #8#8, #9#9, #11#11, #18#18, #19#19] +Keys [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#18, sales_amt#19] +Functions: [] +Aggregate Attributes: [] +Results [8]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#18, sales_amt#19, #56#56] + +(141) NativeShuffleExchange +Input [8]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#18, sales_amt#19, #56#56] +Arguments: hashpartitioning(d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#18, sales_amt#19, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(142) ShuffleQueryStage +Output [8]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#18, sales_amt#19, #56#56] +Arguments: X + +(143) AQEShuffleRead +Input [8]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#18, sales_amt#19, #56#56] +Arguments: coalesced + +(144) InputAdapter +Input [8]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#18, sales_amt#19, #56#56] + +(145) NativeHashAggregate +Input [8]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#18, sales_amt#19, #56#56] +Keys [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#18, sales_amt#19] +Functions: [] +Aggregate Attributes: [] +Results [8]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#18, sales_amt#19, #56#56] + +(146) NativeProject +Output [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#18, sales_amt#19] +Input [8]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#18, sales_amt#19, #56#56] + +(147) NativeProject +Output [7]: [d_year#13 AS d_year#13, i_brand_id#7 AS i_brand_id#7, i_class_id#8 AS i_class_id#8, i_category_id#9 AS i_category_id#9, i_manufact_id#11 AS i_manufact_id#11, sales_cnt#18 AS _c5#57, UnscaledValue(sales_amt#19) AS _c6#58] +Input [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#18, sales_amt#19] + +(148) NativeHashAggregate +Input [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, _c5#57, _c6#58] +Keys [5]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11] +Functions [2]: [partial_sum(_c5#57), partial_sum(_c6#58)] +Aggregate Attributes [2]: [sum#59, sum#60] +Results [6]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, #56#56] + +(149) NativeShuffleExchange +Input [6]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, #56#56] +Arguments: hashpartitioning(d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(150) ShuffleQueryStage +Output [6]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, #56#56] +Arguments: X + +(151) AQEShuffleRead +Input [6]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, #56#56] +Arguments: coalesced + +(152) InputAdapter +Input [6]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, #56#56] + +(153) NativeHashAggregate +Input [6]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, #56#56] +Keys [5]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11] +Functions [2]: [sum(sales_cnt#18), sum(UnscaledValue(sales_amt#19))] +Aggregate Attributes [2]: [sum(sales_cnt#18)#61, sum(UnscaledValue(sales_amt#19))#62] +Results [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sum(sales_cnt#18)#61, sum(UnscaledValue(sales_amt#19))#62] + +(154) NativeProject +Output [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sum(sales_cnt#18)#61 AS sales_cnt#63, MakeDecimal(sum(UnscaledValue(sales_amt#19))#62,18,2) AS sales_amt#64] +Input [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sum(sales_cnt#18)#61, sum(UnscaledValue(sales_amt#19))#62] + +(155) NativeFilter +Input [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#63, sales_amt#64] +Condition : isnotnull(sales_cnt#63) + +(156) NativeShuffleExchange +Input [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#63, sales_amt#64] +Arguments: hashpartitioning(i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(157) ShuffleQueryStage +Output [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#63, sales_amt#64] +Arguments: X + +(158) AQEShuffleRead +Input [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#63, sales_amt#64] +Arguments: coalesced + +(159) InputAdapter +Input [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#63, sales_amt#64] + +(160) NativeSort +Input [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#63, sales_amt#64] +Arguments: [i_brand_id#7 ASC NULLS FIRST, i_class_id#8 ASC NULLS FIRST, i_category_id#9 ASC NULLS FIRST, i_manufact_id#11 ASC NULLS FIRST], false + +(161) ReusedExchange [Reuses operator id: 20] +Output [9]: [cs_sold_date_sk#65, cs_item_sk#66, cs_order_number#67, cs_quantity#68, cs_ext_sales_price#69, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73] + +(162) ShuffleQueryStage +Output [9]: [cs_sold_date_sk#65, cs_item_sk#66, cs_order_number#67, cs_quantity#68, cs_ext_sales_price#69, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73] +Arguments: X + +(163) AQEShuffleRead +Input [9]: [cs_sold_date_sk#65, cs_item_sk#66, cs_order_number#67, cs_quantity#68, cs_ext_sales_price#69, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73] +Arguments: coalesced + +(164) InputAdapter +Input [9]: [cs_sold_date_sk#65, cs_item_sk#66, cs_order_number#67, cs_quantity#68, cs_ext_sales_price#69, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73] +Arguments: [#65, #66, #67, #68, #69, #70, #71, #72, #73] + +(165) InputAdapter +Input [9]: [#65#65, #66#66, #67#67, #68#68, #69#69, #70#70, #71#71, #72#72, #73#73] + +(166) NativeSort +Input [9]: [#65#65, #66#66, #67#67, #68#68, #69#69, #70#70, #71#71, #72#72, #73#73] +Arguments: [cs_sold_date_sk#65 ASC NULLS FIRST], false + +(374) Scan parquet +Output [2]: [d_date_sk#74, d_year#75] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(168) InputAdapter +Input [2]: [d_date_sk#74, d_year#75] +Arguments: [#74, #75] + +(169) NativeFilter +Input [2]: [#74#74, #75#75] +Condition : ((isnotnull(d_year#75) AND (d_year#75 = 2001)) AND isnotnull(d_date_sk#74)) + +(170) NativeShuffleExchange +Input [2]: [#74#74, #75#75] +Arguments: hashpartitioning(d_date_sk#74, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(171) ShuffleQueryStage +Output [2]: [#74#74, #75#75] +Arguments: X + +(172) AQEShuffleRead +Input [2]: [#74#74, #75#75] +Arguments: coalesced + +(173) InputAdapter +Input [2]: [#74#74, #75#75] + +(174) NativeSort +Input [2]: [#74#74, #75#75] +Arguments: [d_date_sk#74 ASC NULLS FIRST], false + +(175) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#65] +Right keys [1]: [d_date_sk#74] +Join type: Inner +Join condition: None + +(176) NativeProject +Output [9]: [cs_item_sk#66, cs_order_number#67, cs_quantity#68, cs_ext_sales_price#69, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, d_year#75] +Input [11]: [#65#65, #66#66, #67#67, #68#68, #69#69, #70#70, #71#71, #72#72, #73#73, #74#74, #75#75] + +(177) NativeShuffleExchange +Input [9]: [cs_item_sk#66, cs_order_number#67, cs_quantity#68, cs_ext_sales_price#69, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, d_year#75] +Arguments: hashpartitioning(cs_order_number#67, cs_item_sk#66, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(178) ShuffleQueryStage +Output [9]: [cs_item_sk#66, cs_order_number#67, cs_quantity#68, cs_ext_sales_price#69, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, d_year#75] +Arguments: X + +(179) AQEShuffleRead +Input [9]: [cs_item_sk#66, cs_order_number#67, cs_quantity#68, cs_ext_sales_price#69, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, d_year#75] +Arguments: coalesced + +(180) InputAdapter +Input [9]: [cs_item_sk#66, cs_order_number#67, cs_quantity#68, cs_ext_sales_price#69, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, d_year#75] + +(181) NativeSort +Input [9]: [cs_item_sk#66, cs_order_number#67, cs_quantity#68, cs_ext_sales_price#69, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, d_year#75] +Arguments: [cs_order_number#67 ASC NULLS FIRST, cs_item_sk#66 ASC NULLS FIRST], false + +(182) ReusedExchange [Reuses operator id: 43] +Output [4]: [cr_item_sk#76, cr_order_number#77, cr_return_quantity#78, cr_return_amount#79] + +(183) ShuffleQueryStage +Output [4]: [cr_item_sk#76, cr_order_number#77, cr_return_quantity#78, cr_return_amount#79] +Arguments: X + +(184) AQEShuffleRead +Input [4]: [cr_item_sk#76, cr_order_number#77, cr_return_quantity#78, cr_return_amount#79] +Arguments: coalesced + +(185) InputAdapter +Input [4]: [cr_item_sk#76, cr_order_number#77, cr_return_quantity#78, cr_return_amount#79] +Arguments: [#76, #77, #78, #79] + +(186) InputAdapter +Input [4]: [#76#76, #77#77, #78#78, #79#79] + +(187) NativeSort +Input [4]: [#76#76, #77#77, #78#78, #79#79] +Arguments: [cr_order_number#77 ASC NULLS FIRST, cr_item_sk#76 ASC NULLS FIRST], false + +(188) NativeSortMergeJoin +Left keys [2]: [cs_order_number#67, cs_item_sk#66] +Right keys [2]: [cr_order_number#77, cr_item_sk#76] +Join type: LeftOuter +Join condition: None + +(189) NativeProject +Output [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, (cs_quantity#68 - coalesce(cr_return_quantity#78, 0)) AS sales_cnt#18, (cs_ext_sales_price#69 - coalesce(cr_return_amount#79, 0.00)) AS sales_amt#19] +Input [13]: [cs_item_sk#66, cs_order_number#67, cs_quantity#68, cs_ext_sales_price#69, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, d_year#75, #76#76, #77#77, #78#78, #79#79] + +(190) ReusedExchange [Reuses operator id: 66] +Output [9]: [ss_sold_date_sk#80, ss_item_sk#81, ss_ticket_number#82, ss_quantity#83, ss_ext_sales_price#84, i_brand_id#85, i_class_id#86, i_category_id#87, i_manufact_id#88] + +(191) ShuffleQueryStage +Output [9]: [ss_sold_date_sk#80, ss_item_sk#81, ss_ticket_number#82, ss_quantity#83, ss_ext_sales_price#84, i_brand_id#85, i_class_id#86, i_category_id#87, i_manufact_id#88] +Arguments: X + +(192) AQEShuffleRead +Input [9]: [ss_sold_date_sk#80, ss_item_sk#81, ss_ticket_number#82, ss_quantity#83, ss_ext_sales_price#84, i_brand_id#85, i_class_id#86, i_category_id#87, i_manufact_id#88] +Arguments: coalesced + +(193) InputAdapter +Input [9]: [ss_sold_date_sk#80, ss_item_sk#81, ss_ticket_number#82, ss_quantity#83, ss_ext_sales_price#84, i_brand_id#85, i_class_id#86, i_category_id#87, i_manufact_id#88] +Arguments: [#80, #81, #82, #83, #84, #85, #86, #87, #88] + +(194) InputAdapter +Input [9]: [#80#80, #81#81, #82#82, #83#83, #84#84, #85#85, #86#86, #87#87, #88#88] + +(195) NativeSort +Input [9]: [#80#80, #81#81, #82#82, #83#83, #84#84, #85#85, #86#86, #87#87, #88#88] +Arguments: [ss_sold_date_sk#80 ASC NULLS FIRST], false + +(196) ReusedExchange [Reuses operator id: 170] +Output [2]: [d_date_sk#89, d_year#90] + +(197) ShuffleQueryStage +Output [2]: [d_date_sk#89, d_year#90] +Arguments: X + +(198) AQEShuffleRead +Input [2]: [d_date_sk#89, d_year#90] +Arguments: coalesced + +(199) InputAdapter +Input [2]: [d_date_sk#89, d_year#90] +Arguments: [#89, #90] + +(200) InputAdapter +Input [2]: [#89#89, #90#90] + +(201) NativeSort +Input [2]: [#89#89, #90#90] +Arguments: [d_date_sk#89 ASC NULLS FIRST], false + +(202) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#80] +Right keys [1]: [d_date_sk#89] +Join type: Inner +Join condition: None + +(203) NativeProject +Output [9]: [ss_item_sk#81, ss_ticket_number#82, ss_quantity#83, ss_ext_sales_price#84, i_brand_id#85, i_class_id#86, i_category_id#87, i_manufact_id#88, d_year#90] +Input [11]: [#80#80, #81#81, #82#82, #83#83, #84#84, #85#85, #86#86, #87#87, #88#88, #89#89, #90#90] + +(204) NativeShuffleExchange +Input [9]: [ss_item_sk#81, ss_ticket_number#82, ss_quantity#83, ss_ext_sales_price#84, i_brand_id#85, i_class_id#86, i_category_id#87, i_manufact_id#88, d_year#90] +Arguments: hashpartitioning(ss_ticket_number#82, ss_item_sk#81, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(205) ShuffleQueryStage +Output [9]: [ss_item_sk#81, ss_ticket_number#82, ss_quantity#83, ss_ext_sales_price#84, i_brand_id#85, i_class_id#86, i_category_id#87, i_manufact_id#88, d_year#90] +Arguments: X + +(206) AQEShuffleRead +Input [9]: [ss_item_sk#81, ss_ticket_number#82, ss_quantity#83, ss_ext_sales_price#84, i_brand_id#85, i_class_id#86, i_category_id#87, i_manufact_id#88, d_year#90] +Arguments: coalesced + +(207) InputAdapter +Input [9]: [ss_item_sk#81, ss_ticket_number#82, ss_quantity#83, ss_ext_sales_price#84, i_brand_id#85, i_class_id#86, i_category_id#87, i_manufact_id#88, d_year#90] + +(208) NativeSort +Input [9]: [ss_item_sk#81, ss_ticket_number#82, ss_quantity#83, ss_ext_sales_price#84, i_brand_id#85, i_class_id#86, i_category_id#87, i_manufact_id#88, d_year#90] +Arguments: [ss_ticket_number#82 ASC NULLS FIRST, ss_item_sk#81 ASC NULLS FIRST], false + +(209) ReusedExchange [Reuses operator id: 87] +Output [4]: [sr_item_sk#91, sr_ticket_number#92, sr_return_quantity#93, sr_return_amt#94] + +(210) ShuffleQueryStage +Output [4]: [sr_item_sk#91, sr_ticket_number#92, sr_return_quantity#93, sr_return_amt#94] +Arguments: X + +(211) AQEShuffleRead +Input [4]: [sr_item_sk#91, sr_ticket_number#92, sr_return_quantity#93, sr_return_amt#94] +Arguments: coalesced + +(212) InputAdapter +Input [4]: [sr_item_sk#91, sr_ticket_number#92, sr_return_quantity#93, sr_return_amt#94] +Arguments: [#91, #92, #93, #94] + +(213) InputAdapter +Input [4]: [#91#91, #92#92, #93#93, #94#94] + +(214) NativeSort +Input [4]: [#91#91, #92#92, #93#93, #94#94] +Arguments: [sr_ticket_number#92 ASC NULLS FIRST, sr_item_sk#91 ASC NULLS FIRST], false + +(215) NativeSortMergeJoin +Left keys [2]: [ss_ticket_number#82, ss_item_sk#81] +Right keys [2]: [sr_ticket_number#92, sr_item_sk#91] +Join type: LeftOuter +Join condition: None + +(216) NativeProject +Output [7]: [d_year#90, i_brand_id#85, i_class_id#86, i_category_id#87, i_manufact_id#88, (ss_quantity#83 - coalesce(sr_return_quantity#93, 0)) AS sales_cnt#36, (ss_ext_sales_price#84 - coalesce(sr_return_amt#94, 0.00)) AS sales_amt#37] +Input [13]: [ss_item_sk#81, ss_ticket_number#82, ss_quantity#83, ss_ext_sales_price#84, i_brand_id#85, i_class_id#86, i_category_id#87, i_manufact_id#88, d_year#90, #91#91, #92#92, #93#93, #94#94] + +(217) ReusedExchange [Reuses operator id: 110] +Output [9]: [ws_sold_date_sk#95, ws_item_sk#96, ws_order_number#97, ws_quantity#98, ws_ext_sales_price#99, i_brand_id#100, i_class_id#101, i_category_id#102, i_manufact_id#103] + +(218) ShuffleQueryStage +Output [9]: [ws_sold_date_sk#95, ws_item_sk#96, ws_order_number#97, ws_quantity#98, ws_ext_sales_price#99, i_brand_id#100, i_class_id#101, i_category_id#102, i_manufact_id#103] +Arguments: X + +(219) AQEShuffleRead +Input [9]: [ws_sold_date_sk#95, ws_item_sk#96, ws_order_number#97, ws_quantity#98, ws_ext_sales_price#99, i_brand_id#100, i_class_id#101, i_category_id#102, i_manufact_id#103] +Arguments: coalesced + +(220) InputAdapter +Input [9]: [ws_sold_date_sk#95, ws_item_sk#96, ws_order_number#97, ws_quantity#98, ws_ext_sales_price#99, i_brand_id#100, i_class_id#101, i_category_id#102, i_manufact_id#103] +Arguments: [#95, #96, #97, #98, #99, #100, #101, #102, #103] + +(221) InputAdapter +Input [9]: [#95#95, #96#96, #97#97, #98#98, #99#99, #100#100, #101#101, #102#102, #103#103] + +(222) NativeSort +Input [9]: [#95#95, #96#96, #97#97, #98#98, #99#99, #100#100, #101#101, #102#102, #103#103] +Arguments: [ws_sold_date_sk#95 ASC NULLS FIRST], false + +(223) ReusedExchange [Reuses operator id: 170] +Output [2]: [d_date_sk#104, d_year#105] + +(224) ShuffleQueryStage +Output [2]: [d_date_sk#104, d_year#105] +Arguments: X + +(225) AQEShuffleRead +Input [2]: [d_date_sk#104, d_year#105] +Arguments: coalesced + +(226) InputAdapter +Input [2]: [d_date_sk#104, d_year#105] +Arguments: [#104, #105] + +(227) InputAdapter +Input [2]: [#104#104, #105#105] + +(228) NativeSort +Input [2]: [#104#104, #105#105] +Arguments: [d_date_sk#104 ASC NULLS FIRST], false + +(229) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#95] +Right keys [1]: [d_date_sk#104] +Join type: Inner +Join condition: None + +(230) NativeProject +Output [9]: [ws_item_sk#96, ws_order_number#97, ws_quantity#98, ws_ext_sales_price#99, i_brand_id#100, i_class_id#101, i_category_id#102, i_manufact_id#103, d_year#105] +Input [11]: [#95#95, #96#96, #97#97, #98#98, #99#99, #100#100, #101#101, #102#102, #103#103, #104#104, #105#105] + +(231) NativeShuffleExchange +Input [9]: [ws_item_sk#96, ws_order_number#97, ws_quantity#98, ws_ext_sales_price#99, i_brand_id#100, i_class_id#101, i_category_id#102, i_manufact_id#103, d_year#105] +Arguments: hashpartitioning(ws_order_number#97, ws_item_sk#96, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(232) ShuffleQueryStage +Output [9]: [ws_item_sk#96, ws_order_number#97, ws_quantity#98, ws_ext_sales_price#99, i_brand_id#100, i_class_id#101, i_category_id#102, i_manufact_id#103, d_year#105] +Arguments: X + +(233) AQEShuffleRead +Input [9]: [ws_item_sk#96, ws_order_number#97, ws_quantity#98, ws_ext_sales_price#99, i_brand_id#100, i_class_id#101, i_category_id#102, i_manufact_id#103, d_year#105] +Arguments: coalesced + +(234) InputAdapter +Input [9]: [ws_item_sk#96, ws_order_number#97, ws_quantity#98, ws_ext_sales_price#99, i_brand_id#100, i_class_id#101, i_category_id#102, i_manufact_id#103, d_year#105] + +(235) NativeSort +Input [9]: [ws_item_sk#96, ws_order_number#97, ws_quantity#98, ws_ext_sales_price#99, i_brand_id#100, i_class_id#101, i_category_id#102, i_manufact_id#103, d_year#105] +Arguments: [ws_order_number#97 ASC NULLS FIRST, ws_item_sk#96 ASC NULLS FIRST], false + +(236) ReusedExchange [Reuses operator id: 131] +Output [4]: [wr_item_sk#106, wr_order_number#107, wr_return_quantity#108, wr_return_amt#109] + +(237) ShuffleQueryStage +Output [4]: [wr_item_sk#106, wr_order_number#107, wr_return_quantity#108, wr_return_amt#109] +Arguments: X + +(238) AQEShuffleRead +Input [4]: [wr_item_sk#106, wr_order_number#107, wr_return_quantity#108, wr_return_amt#109] +Arguments: coalesced + +(239) InputAdapter +Input [4]: [wr_item_sk#106, wr_order_number#107, wr_return_quantity#108, wr_return_amt#109] +Arguments: [#106, #107, #108, #109] + +(240) InputAdapter +Input [4]: [#106#106, #107#107, #108#108, #109#109] + +(241) NativeSort +Input [4]: [#106#106, #107#107, #108#108, #109#109] +Arguments: [wr_order_number#107 ASC NULLS FIRST, wr_item_sk#106 ASC NULLS FIRST], false + +(242) NativeSortMergeJoin +Left keys [2]: [ws_order_number#97, ws_item_sk#96] +Right keys [2]: [wr_order_number#107, wr_item_sk#106] +Join type: LeftOuter +Join condition: None + +(243) NativeProject +Output [7]: [d_year#105, i_brand_id#100, i_class_id#101, i_category_id#102, i_manufact_id#103, (ws_quantity#98 - coalesce(wr_return_quantity#108, 0)) AS sales_cnt#54, (ws_ext_sales_price#99 - coalesce(wr_return_amt#109, 0.00)) AS sales_amt#55] +Input [13]: [ws_item_sk#96, ws_order_number#97, ws_quantity#98, ws_ext_sales_price#99, i_brand_id#100, i_class_id#101, i_category_id#102, i_manufact_id#103, d_year#105, #106#106, #107#107, #108#108, #109#109] + +(244) NativeUnion +Arguments: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#18, sales_amt#19] + +(245) InputAdapter +Input [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#18, sales_amt#19] +Arguments: [#75, #70, #71, #72, #73, #18, #19] + +(246) NativeHashAggregate +Input [7]: [#75#75, #70#70, #71#71, #72#72, #73#73, #18#18, #19#19] +Keys [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#18, sales_amt#19] +Functions: [] +Aggregate Attributes: [] +Results [8]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#18, sales_amt#19, #56#56] + +(247) NativeShuffleExchange +Input [8]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#18, sales_amt#19, #56#56] +Arguments: hashpartitioning(d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#18, sales_amt#19, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(248) ShuffleQueryStage +Output [8]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#18, sales_amt#19, #56#56] +Arguments: X + +(249) AQEShuffleRead +Input [8]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#18, sales_amt#19, #56#56] +Arguments: coalesced + +(250) InputAdapter +Input [8]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#18, sales_amt#19, #56#56] + +(251) NativeHashAggregate +Input [8]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#18, sales_amt#19, #56#56] +Keys [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#18, sales_amt#19] +Functions: [] +Aggregate Attributes: [] +Results [8]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#18, sales_amt#19, #56#56] + +(252) NativeProject +Output [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#18, sales_amt#19] +Input [8]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#18, sales_amt#19, #56#56] + +(253) NativeProject +Output [7]: [d_year#75 AS d_year#75, i_brand_id#70 AS i_brand_id#70, i_class_id#71 AS i_class_id#71, i_category_id#72 AS i_category_id#72, i_manufact_id#73 AS i_manufact_id#73, sales_cnt#18 AS _c5#110, UnscaledValue(sales_amt#19) AS _c6#111] +Input [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#18, sales_amt#19] + +(254) NativeHashAggregate +Input [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, _c5#110, _c6#111] +Keys [5]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73] +Functions [2]: [partial_sum(_c5#110), partial_sum(_c6#111)] +Aggregate Attributes [2]: [sum#59, sum#112] +Results [6]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, #56#56] + +(255) NativeShuffleExchange +Input [6]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, #56#56] +Arguments: hashpartitioning(d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(256) ShuffleQueryStage +Output [6]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, #56#56] +Arguments: X + +(257) AQEShuffleRead +Input [6]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, #56#56] +Arguments: coalesced + +(258) InputAdapter +Input [6]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, #56#56] + +(259) NativeHashAggregate +Input [6]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, #56#56] +Keys [5]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73] +Functions [2]: [sum(sales_cnt#18), sum(UnscaledValue(sales_amt#19))] +Aggregate Attributes [2]: [sum(sales_cnt#18)#61, sum(UnscaledValue(sales_amt#19))#62] +Results [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sum(sales_cnt#18)#61, sum(UnscaledValue(sales_amt#19))#62] + +(260) NativeProject +Output [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sum(sales_cnt#18)#61 AS sales_cnt#113, MakeDecimal(sum(UnscaledValue(sales_amt#19))#62,18,2) AS sales_amt#114] +Input [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sum(sales_cnt#18)#61, sum(UnscaledValue(sales_amt#19))#62] + +(261) NativeFilter +Input [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#113, sales_amt#114] +Condition : isnotnull(sales_cnt#113) + +(262) NativeShuffleExchange +Input [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#113, sales_amt#114] +Arguments: hashpartitioning(i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(263) ShuffleQueryStage +Output [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#113, sales_amt#114] +Arguments: X + +(264) AQEShuffleRead +Input [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#113, sales_amt#114] +Arguments: coalesced + +(265) InputAdapter +Input [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#113, sales_amt#114] + +(266) NativeSort +Input [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#113, sales_amt#114] +Arguments: [i_brand_id#70 ASC NULLS FIRST, i_class_id#71 ASC NULLS FIRST, i_category_id#72 ASC NULLS FIRST, i_manufact_id#73 ASC NULLS FIRST], false + +(267) SortMergeJoin [codegen id : 1] +Left keys [4]: [i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11] +Right keys [4]: [i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73] +Join type: Inner +Join condition: ((cast(sales_cnt#63 as decimal(17,2)) / cast(sales_cnt#113 as decimal(17,2))) < 0.90000000000000000000) + +(268) Project [codegen id : 1] +Output [10]: [d_year#75 AS prev_year#115, d_year#13 AS year#116, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#113 AS prev_yr_cnt#117, sales_cnt#63 AS curr_yr_cnt#118, (sales_cnt#63 - sales_cnt#113) AS sales_cnt_diff#119, (sales_amt#64 - sales_amt#114) AS sales_amt_diff#120] +Input [14]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#63, sales_amt#64, d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#113, sales_amt#114] + +(269) TakeOrderedAndProject +Input [10]: [prev_year#115, year#116, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, prev_yr_cnt#117, curr_yr_cnt#118, sales_cnt_diff#119, sales_amt_diff#120] +Arguments: X, [sales_cnt_diff#119 ASC NULLS FIRST, sales_amt_diff#120 ASC NULLS FIRST], [prev_year#115, year#116, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, prev_yr_cnt#117, curr_yr_cnt#118, sales_cnt_diff#119, sales_amt_diff#120] + +(270) Scan parquet +Output [5]: [cs_sold_date_sk#1, cs_item_sk#2, cs_order_number#3, cs_quantity#4, cs_ext_sales_price#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(271) Filter +Input [5]: [cs_sold_date_sk#1, cs_item_sk#2, cs_order_number#3, cs_quantity#4, cs_ext_sales_price#5] +Condition : (isnotnull(cs_item_sk#2) AND isnotnull(cs_sold_date_sk#1)) + +(272) Exchange +Input [5]: [cs_sold_date_sk#1, cs_item_sk#2, cs_order_number#3, cs_quantity#4, cs_ext_sales_price#5] +Arguments: hashpartitioning(cs_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(273) Sort +Input [5]: [cs_sold_date_sk#1, cs_item_sk#2, cs_order_number#3, cs_quantity#4, cs_ext_sales_price#5] +Arguments: [cs_item_sk#2 ASC NULLS FIRST], false, 0 + +(274) Scan parquet +Output [6]: [i_item_sk#6, i_brand_id#7, i_class_id#8, i_category_id#9, i_category#10, i_manufact_id#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_category), EqualTo(i_category,Books), IsNotNull(i_item_sk), IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id), IsNotNull(i_manufact_id)] +ReadSchema: struct + +(275) Filter +Input [6]: [i_item_sk#6, i_brand_id#7, i_class_id#8, i_category_id#9, i_category#10, i_manufact_id#11] +Condition : ((((((isnotnull(i_category#10) AND (i_category#10 = Books)) AND isnotnull(i_item_sk#6)) AND isnotnull(i_brand_id#7)) AND isnotnull(i_class_id#8)) AND isnotnull(i_category_id#9)) AND isnotnull(i_manufact_id#11)) + +(276) Project +Output [5]: [i_item_sk#6, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11] +Input [6]: [i_item_sk#6, i_brand_id#7, i_class_id#8, i_category_id#9, i_category#10, i_manufact_id#11] + +(277) Exchange +Input [5]: [i_item_sk#6, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11] +Arguments: hashpartitioning(i_item_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(278) Sort +Input [5]: [i_item_sk#6, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11] +Arguments: [i_item_sk#6 ASC NULLS FIRST], false, 0 + +(279) SortMergeJoin +Left keys [1]: [cs_item_sk#2] +Right keys [1]: [i_item_sk#6] +Join type: Inner +Join condition: None + +(280) Project +Output [9]: [cs_sold_date_sk#1, cs_item_sk#2, cs_order_number#3, cs_quantity#4, cs_ext_sales_price#5, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11] +Input [10]: [cs_sold_date_sk#1, cs_item_sk#2, cs_order_number#3, cs_quantity#4, cs_ext_sales_price#5, i_item_sk#6, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11] + +(281) Exchange +Input [9]: [cs_sold_date_sk#1, cs_item_sk#2, cs_order_number#3, cs_quantity#4, cs_ext_sales_price#5, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11] +Arguments: hashpartitioning(cs_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(282) Sort +Input [9]: [cs_sold_date_sk#1, cs_item_sk#2, cs_order_number#3, cs_quantity#4, cs_ext_sales_price#5, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11] +Arguments: [cs_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(283) Scan parquet +Output [2]: [d_date_sk#12, d_year#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2002), IsNotNull(d_date_sk)] +ReadSchema: struct + +(284) Filter +Input [2]: [d_date_sk#12, d_year#13] +Condition : ((isnotnull(d_year#13) AND (d_year#13 = 2002)) AND isnotnull(d_date_sk#12)) + +(285) Exchange +Input [2]: [d_date_sk#12, d_year#13] +Arguments: hashpartitioning(d_date_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(286) Sort +Input [2]: [d_date_sk#12, d_year#13] +Arguments: [d_date_sk#12 ASC NULLS FIRST], false, 0 + +(287) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#1] +Right keys [1]: [d_date_sk#12] +Join type: Inner +Join condition: None + +(288) Project +Output [9]: [cs_item_sk#2, cs_order_number#3, cs_quantity#4, cs_ext_sales_price#5, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, d_year#13] +Input [11]: [cs_sold_date_sk#1, cs_item_sk#2, cs_order_number#3, cs_quantity#4, cs_ext_sales_price#5, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, d_date_sk#12, d_year#13] + +(289) Exchange +Input [9]: [cs_item_sk#2, cs_order_number#3, cs_quantity#4, cs_ext_sales_price#5, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, d_year#13] +Arguments: hashpartitioning(cs_order_number#3, cs_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(290) Sort +Input [9]: [cs_item_sk#2, cs_order_number#3, cs_quantity#4, cs_ext_sales_price#5, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, d_year#13] +Arguments: [cs_order_number#3 ASC NULLS FIRST, cs_item_sk#2 ASC NULLS FIRST], false, 0 + +(291) Scan parquet +Output [4]: [cr_item_sk#14, cr_order_number#15, cr_return_quantity#16, cr_return_amount#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cr_order_number), IsNotNull(cr_item_sk)] +ReadSchema: struct + +(292) Filter +Input [4]: [cr_item_sk#14, cr_order_number#15, cr_return_quantity#16, cr_return_amount#17] +Condition : (isnotnull(cr_order_number#15) AND isnotnull(cr_item_sk#14)) + +(293) Exchange +Input [4]: [cr_item_sk#14, cr_order_number#15, cr_return_quantity#16, cr_return_amount#17] +Arguments: hashpartitioning(cr_order_number#15, cr_item_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(294) Sort +Input [4]: [cr_item_sk#14, cr_order_number#15, cr_return_quantity#16, cr_return_amount#17] +Arguments: [cr_order_number#15 ASC NULLS FIRST, cr_item_sk#14 ASC NULLS FIRST], false, 0 + +(295) SortMergeJoin +Left keys [2]: [cs_order_number#3, cs_item_sk#2] +Right keys [2]: [cr_order_number#15, cr_item_sk#14] +Join type: LeftOuter +Join condition: None + +(296) Project +Output [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, (cs_quantity#4 - coalesce(cr_return_quantity#16, 0)) AS sales_cnt#18, (cs_ext_sales_price#5 - coalesce(cr_return_amount#17, 0.00)) AS sales_amt#19] +Input [13]: [cs_item_sk#2, cs_order_number#3, cs_quantity#4, cs_ext_sales_price#5, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, d_year#13, cr_item_sk#14, cr_order_number#15, cr_return_quantity#16, cr_return_amount#17] + +(297) Scan parquet +Output [5]: [ss_sold_date_sk#20, ss_item_sk#21, ss_ticket_number#22, ss_quantity#23, ss_ext_sales_price#24] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(298) Filter +Input [5]: [ss_sold_date_sk#20, ss_item_sk#21, ss_ticket_number#22, ss_quantity#23, ss_ext_sales_price#24] +Condition : (isnotnull(ss_item_sk#21) AND isnotnull(ss_sold_date_sk#20)) + +(299) Exchange +Input [5]: [ss_sold_date_sk#20, ss_item_sk#21, ss_ticket_number#22, ss_quantity#23, ss_ext_sales_price#24] +Arguments: hashpartitioning(ss_item_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=31] + +(300) Sort +Input [5]: [ss_sold_date_sk#20, ss_item_sk#21, ss_ticket_number#22, ss_quantity#23, ss_ext_sales_price#24] +Arguments: [ss_item_sk#21 ASC NULLS FIRST], false, 0 + +(301) Scan parquet +Output [6]: [i_item_sk#25, i_brand_id#26, i_class_id#27, i_category_id#28, i_category#121, i_manufact_id#29] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_category), EqualTo(i_category,Books), IsNotNull(i_item_sk), IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id), IsNotNull(i_manufact_id)] +ReadSchema: struct + +(302) Filter +Input [6]: [i_item_sk#25, i_brand_id#26, i_class_id#27, i_category_id#28, i_category#121, i_manufact_id#29] +Condition : ((((((isnotnull(i_category#121) AND (i_category#121 = Books)) AND isnotnull(i_item_sk#25)) AND isnotnull(i_brand_id#26)) AND isnotnull(i_class_id#27)) AND isnotnull(i_category_id#28)) AND isnotnull(i_manufact_id#29)) + +(303) Project +Output [5]: [i_item_sk#25, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29] +Input [6]: [i_item_sk#25, i_brand_id#26, i_class_id#27, i_category_id#28, i_category#121, i_manufact_id#29] + +(304) Exchange +Input [5]: [i_item_sk#25, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29] +Arguments: hashpartitioning(i_item_sk#25, 100), ENSURE_REQUIREMENTS, [plan_id=32] + +(305) Sort +Input [5]: [i_item_sk#25, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29] +Arguments: [i_item_sk#25 ASC NULLS FIRST], false, 0 + +(306) SortMergeJoin +Left keys [1]: [ss_item_sk#21] +Right keys [1]: [i_item_sk#25] +Join type: Inner +Join condition: None + +(307) Project +Output [9]: [ss_sold_date_sk#20, ss_item_sk#21, ss_ticket_number#22, ss_quantity#23, ss_ext_sales_price#24, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29] +Input [10]: [ss_sold_date_sk#20, ss_item_sk#21, ss_ticket_number#22, ss_quantity#23, ss_ext_sales_price#24, i_item_sk#25, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29] + +(308) Exchange +Input [9]: [ss_sold_date_sk#20, ss_item_sk#21, ss_ticket_number#22, ss_quantity#23, ss_ext_sales_price#24, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29] +Arguments: hashpartitioning(ss_sold_date_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=33] + +(309) Sort +Input [9]: [ss_sold_date_sk#20, ss_item_sk#21, ss_ticket_number#22, ss_quantity#23, ss_ext_sales_price#24, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29] +Arguments: [ss_sold_date_sk#20 ASC NULLS FIRST], false, 0 + +(310) Scan parquet +Output [2]: [d_date_sk#30, d_year#31] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2002), IsNotNull(d_date_sk)] +ReadSchema: struct + +(311) Filter +Input [2]: [d_date_sk#30, d_year#31] +Condition : ((isnotnull(d_year#31) AND (d_year#31 = 2002)) AND isnotnull(d_date_sk#30)) + +(312) Exchange +Input [2]: [d_date_sk#30, d_year#31] +Arguments: hashpartitioning(d_date_sk#30, 100), ENSURE_REQUIREMENTS, [plan_id=34] + +(313) Sort +Input [2]: [d_date_sk#30, d_year#31] +Arguments: [d_date_sk#30 ASC NULLS FIRST], false, 0 + +(314) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#20] +Right keys [1]: [d_date_sk#30] +Join type: Inner +Join condition: None + +(315) Project +Output [9]: [ss_item_sk#21, ss_ticket_number#22, ss_quantity#23, ss_ext_sales_price#24, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29, d_year#31] +Input [11]: [ss_sold_date_sk#20, ss_item_sk#21, ss_ticket_number#22, ss_quantity#23, ss_ext_sales_price#24, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29, d_date_sk#30, d_year#31] + +(316) Exchange +Input [9]: [ss_item_sk#21, ss_ticket_number#22, ss_quantity#23, ss_ext_sales_price#24, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29, d_year#31] +Arguments: hashpartitioning(ss_ticket_number#22, ss_item_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=35] + +(317) Sort +Input [9]: [ss_item_sk#21, ss_ticket_number#22, ss_quantity#23, ss_ext_sales_price#24, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29, d_year#31] +Arguments: [ss_ticket_number#22 ASC NULLS FIRST, ss_item_sk#21 ASC NULLS FIRST], false, 0 + +(318) Scan parquet +Output [4]: [sr_item_sk#32, sr_ticket_number#33, sr_return_quantity#34, sr_return_amt#35] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_ticket_number), IsNotNull(sr_item_sk)] +ReadSchema: struct + +(319) Filter +Input [4]: [sr_item_sk#32, sr_ticket_number#33, sr_return_quantity#34, sr_return_amt#35] +Condition : (isnotnull(sr_ticket_number#33) AND isnotnull(sr_item_sk#32)) + +(320) Exchange +Input [4]: [sr_item_sk#32, sr_ticket_number#33, sr_return_quantity#34, sr_return_amt#35] +Arguments: hashpartitioning(sr_ticket_number#33, sr_item_sk#32, 100), ENSURE_REQUIREMENTS, [plan_id=36] + +(321) Sort +Input [4]: [sr_item_sk#32, sr_ticket_number#33, sr_return_quantity#34, sr_return_amt#35] +Arguments: [sr_ticket_number#33 ASC NULLS FIRST, sr_item_sk#32 ASC NULLS FIRST], false, 0 + +(322) SortMergeJoin +Left keys [2]: [ss_ticket_number#22, ss_item_sk#21] +Right keys [2]: [sr_ticket_number#33, sr_item_sk#32] +Join type: LeftOuter +Join condition: None + +(323) Project +Output [7]: [d_year#31, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29, (ss_quantity#23 - coalesce(sr_return_quantity#34, 0)) AS sales_cnt#36, (ss_ext_sales_price#24 - coalesce(sr_return_amt#35, 0.00)) AS sales_amt#37] +Input [13]: [ss_item_sk#21, ss_ticket_number#22, ss_quantity#23, ss_ext_sales_price#24, i_brand_id#26, i_class_id#27, i_category_id#28, i_manufact_id#29, d_year#31, sr_item_sk#32, sr_ticket_number#33, sr_return_quantity#34, sr_return_amt#35] + +(324) Scan parquet +Output [5]: [ws_sold_date_sk#38, ws_item_sk#39, ws_order_number#40, ws_quantity#41, ws_ext_sales_price#42] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(325) Filter +Input [5]: [ws_sold_date_sk#38, ws_item_sk#39, ws_order_number#40, ws_quantity#41, ws_ext_sales_price#42] +Condition : (isnotnull(ws_item_sk#39) AND isnotnull(ws_sold_date_sk#38)) + +(326) Exchange +Input [5]: [ws_sold_date_sk#38, ws_item_sk#39, ws_order_number#40, ws_quantity#41, ws_ext_sales_price#42] +Arguments: hashpartitioning(ws_item_sk#39, 100), ENSURE_REQUIREMENTS, [plan_id=37] + +(327) Sort +Input [5]: [ws_sold_date_sk#38, ws_item_sk#39, ws_order_number#40, ws_quantity#41, ws_ext_sales_price#42] +Arguments: [ws_item_sk#39 ASC NULLS FIRST], false, 0 + +(328) Scan parquet +Output [6]: [i_item_sk#43, i_brand_id#44, i_class_id#45, i_category_id#46, i_category#122, i_manufact_id#47] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_category), EqualTo(i_category,Books), IsNotNull(i_item_sk), IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id), IsNotNull(i_manufact_id)] +ReadSchema: struct + +(329) Filter +Input [6]: [i_item_sk#43, i_brand_id#44, i_class_id#45, i_category_id#46, i_category#122, i_manufact_id#47] +Condition : ((((((isnotnull(i_category#122) AND (i_category#122 = Books)) AND isnotnull(i_item_sk#43)) AND isnotnull(i_brand_id#44)) AND isnotnull(i_class_id#45)) AND isnotnull(i_category_id#46)) AND isnotnull(i_manufact_id#47)) + +(330) Project +Output [5]: [i_item_sk#43, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47] +Input [6]: [i_item_sk#43, i_brand_id#44, i_class_id#45, i_category_id#46, i_category#122, i_manufact_id#47] + +(331) Exchange +Input [5]: [i_item_sk#43, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47] +Arguments: hashpartitioning(i_item_sk#43, 100), ENSURE_REQUIREMENTS, [plan_id=38] + +(332) Sort +Input [5]: [i_item_sk#43, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47] +Arguments: [i_item_sk#43 ASC NULLS FIRST], false, 0 + +(333) SortMergeJoin +Left keys [1]: [ws_item_sk#39] +Right keys [1]: [i_item_sk#43] +Join type: Inner +Join condition: None + +(334) Project +Output [9]: [ws_sold_date_sk#38, ws_item_sk#39, ws_order_number#40, ws_quantity#41, ws_ext_sales_price#42, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47] +Input [10]: [ws_sold_date_sk#38, ws_item_sk#39, ws_order_number#40, ws_quantity#41, ws_ext_sales_price#42, i_item_sk#43, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47] + +(335) Exchange +Input [9]: [ws_sold_date_sk#38, ws_item_sk#39, ws_order_number#40, ws_quantity#41, ws_ext_sales_price#42, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47] +Arguments: hashpartitioning(ws_sold_date_sk#38, 100), ENSURE_REQUIREMENTS, [plan_id=39] + +(336) Sort +Input [9]: [ws_sold_date_sk#38, ws_item_sk#39, ws_order_number#40, ws_quantity#41, ws_ext_sales_price#42, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47] +Arguments: [ws_sold_date_sk#38 ASC NULLS FIRST], false, 0 + +(337) Scan parquet +Output [2]: [d_date_sk#48, d_year#49] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2002), IsNotNull(d_date_sk)] +ReadSchema: struct + +(338) Filter +Input [2]: [d_date_sk#48, d_year#49] +Condition : ((isnotnull(d_year#49) AND (d_year#49 = 2002)) AND isnotnull(d_date_sk#48)) + +(339) Exchange +Input [2]: [d_date_sk#48, d_year#49] +Arguments: hashpartitioning(d_date_sk#48, 100), ENSURE_REQUIREMENTS, [plan_id=40] + +(340) Sort +Input [2]: [d_date_sk#48, d_year#49] +Arguments: [d_date_sk#48 ASC NULLS FIRST], false, 0 + +(341) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#38] +Right keys [1]: [d_date_sk#48] +Join type: Inner +Join condition: None + +(342) Project +Output [9]: [ws_item_sk#39, ws_order_number#40, ws_quantity#41, ws_ext_sales_price#42, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47, d_year#49] +Input [11]: [ws_sold_date_sk#38, ws_item_sk#39, ws_order_number#40, ws_quantity#41, ws_ext_sales_price#42, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47, d_date_sk#48, d_year#49] + +(343) Exchange +Input [9]: [ws_item_sk#39, ws_order_number#40, ws_quantity#41, ws_ext_sales_price#42, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47, d_year#49] +Arguments: hashpartitioning(ws_order_number#40, ws_item_sk#39, 100), ENSURE_REQUIREMENTS, [plan_id=41] + +(344) Sort +Input [9]: [ws_item_sk#39, ws_order_number#40, ws_quantity#41, ws_ext_sales_price#42, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47, d_year#49] +Arguments: [ws_order_number#40 ASC NULLS FIRST, ws_item_sk#39 ASC NULLS FIRST], false, 0 + +(345) Scan parquet +Output [4]: [wr_item_sk#50, wr_order_number#51, wr_return_quantity#52, wr_return_amt#53] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wr_order_number), IsNotNull(wr_item_sk)] +ReadSchema: struct + +(346) Filter +Input [4]: [wr_item_sk#50, wr_order_number#51, wr_return_quantity#52, wr_return_amt#53] +Condition : (isnotnull(wr_order_number#51) AND isnotnull(wr_item_sk#50)) + +(347) Exchange +Input [4]: [wr_item_sk#50, wr_order_number#51, wr_return_quantity#52, wr_return_amt#53] +Arguments: hashpartitioning(wr_order_number#51, wr_item_sk#50, 100), ENSURE_REQUIREMENTS, [plan_id=42] + +(348) Sort +Input [4]: [wr_item_sk#50, wr_order_number#51, wr_return_quantity#52, wr_return_amt#53] +Arguments: [wr_order_number#51 ASC NULLS FIRST, wr_item_sk#50 ASC NULLS FIRST], false, 0 + +(349) SortMergeJoin +Left keys [2]: [ws_order_number#40, ws_item_sk#39] +Right keys [2]: [wr_order_number#51, wr_item_sk#50] +Join type: LeftOuter +Join condition: None + +(350) Project +Output [7]: [d_year#49, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47, (ws_quantity#41 - coalesce(wr_return_quantity#52, 0)) AS sales_cnt#54, (ws_ext_sales_price#42 - coalesce(wr_return_amt#53, 0.00)) AS sales_amt#55] +Input [13]: [ws_item_sk#39, ws_order_number#40, ws_quantity#41, ws_ext_sales_price#42, i_brand_id#44, i_class_id#45, i_category_id#46, i_manufact_id#47, d_year#49, wr_item_sk#50, wr_order_number#51, wr_return_quantity#52, wr_return_amt#53] + +(351) Union + +(352) HashAggregate +Input [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#18, sales_amt#19] +Keys [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#18, sales_amt#19] +Functions: [] +Aggregate Attributes: [] +Results [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#18, sales_amt#19] + +(353) Exchange +Input [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#18, sales_amt#19] +Arguments: hashpartitioning(d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#18, sales_amt#19, 100), ENSURE_REQUIREMENTS, [plan_id=43] + +(354) HashAggregate +Input [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#18, sales_amt#19] +Keys [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#18, sales_amt#19] +Functions: [] +Aggregate Attributes: [] +Results [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#18, sales_amt#19] + +(355) HashAggregate +Input [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#18, sales_amt#19] +Keys [5]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11] +Functions [2]: [partial_sum(sales_cnt#18), partial_sum(UnscaledValue(sales_amt#19))] +Aggregate Attributes [2]: [sum#59, sum#60] +Results [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sum#123, sum#124] + +(356) Exchange +Input [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sum#123, sum#124] +Arguments: hashpartitioning(d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, 100), ENSURE_REQUIREMENTS, [plan_id=44] + +(357) HashAggregate +Input [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sum#123, sum#124] +Keys [5]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11] +Functions [2]: [sum(sales_cnt#18), sum(UnscaledValue(sales_amt#19))] +Aggregate Attributes [2]: [sum(sales_cnt#18)#61, sum(UnscaledValue(sales_amt#19))#62] +Results [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sum(sales_cnt#18)#61 AS sales_cnt#63, MakeDecimal(sum(UnscaledValue(sales_amt#19))#62,18,2) AS sales_amt#64] + +(358) Filter +Input [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#63, sales_amt#64] +Condition : isnotnull(sales_cnt#63) + +(359) Exchange +Input [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#63, sales_amt#64] +Arguments: hashpartitioning(i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, 100), ENSURE_REQUIREMENTS, [plan_id=45] + +(360) Sort +Input [7]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#63, sales_amt#64] +Arguments: [i_brand_id#7 ASC NULLS FIRST, i_class_id#8 ASC NULLS FIRST, i_category_id#9 ASC NULLS FIRST, i_manufact_id#11 ASC NULLS FIRST], false, 0 + +(361) Scan parquet +Output [5]: [cs_sold_date_sk#65, cs_item_sk#66, cs_order_number#67, cs_quantity#68, cs_ext_sales_price#69] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(362) Filter +Input [5]: [cs_sold_date_sk#65, cs_item_sk#66, cs_order_number#67, cs_quantity#68, cs_ext_sales_price#69] +Condition : (isnotnull(cs_item_sk#66) AND isnotnull(cs_sold_date_sk#65)) + +(363) Exchange +Input [5]: [cs_sold_date_sk#65, cs_item_sk#66, cs_order_number#67, cs_quantity#68, cs_ext_sales_price#69] +Arguments: hashpartitioning(cs_item_sk#66, 100), ENSURE_REQUIREMENTS, [plan_id=46] + +(364) Sort +Input [5]: [cs_sold_date_sk#65, cs_item_sk#66, cs_order_number#67, cs_quantity#68, cs_ext_sales_price#69] +Arguments: [cs_item_sk#66 ASC NULLS FIRST], false, 0 + +(365) Scan parquet +Output [6]: [i_item_sk#125, i_brand_id#70, i_class_id#71, i_category_id#72, i_category#126, i_manufact_id#73] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_category), EqualTo(i_category,Books), IsNotNull(i_item_sk), IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id), IsNotNull(i_manufact_id)] +ReadSchema: struct + +(366) Filter +Input [6]: [i_item_sk#125, i_brand_id#70, i_class_id#71, i_category_id#72, i_category#126, i_manufact_id#73] +Condition : ((((((isnotnull(i_category#126) AND (i_category#126 = Books)) AND isnotnull(i_item_sk#125)) AND isnotnull(i_brand_id#70)) AND isnotnull(i_class_id#71)) AND isnotnull(i_category_id#72)) AND isnotnull(i_manufact_id#73)) + +(367) Project +Output [5]: [i_item_sk#125, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73] +Input [6]: [i_item_sk#125, i_brand_id#70, i_class_id#71, i_category_id#72, i_category#126, i_manufact_id#73] + +(368) Exchange +Input [5]: [i_item_sk#125, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73] +Arguments: hashpartitioning(i_item_sk#125, 100), ENSURE_REQUIREMENTS, [plan_id=47] + +(369) Sort +Input [5]: [i_item_sk#125, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73] +Arguments: [i_item_sk#125 ASC NULLS FIRST], false, 0 + +(370) SortMergeJoin +Left keys [1]: [cs_item_sk#66] +Right keys [1]: [i_item_sk#125] +Join type: Inner +Join condition: None + +(371) Project +Output [9]: [cs_sold_date_sk#65, cs_item_sk#66, cs_order_number#67, cs_quantity#68, cs_ext_sales_price#69, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73] +Input [10]: [cs_sold_date_sk#65, cs_item_sk#66, cs_order_number#67, cs_quantity#68, cs_ext_sales_price#69, i_item_sk#125, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73] + +(372) Exchange +Input [9]: [cs_sold_date_sk#65, cs_item_sk#66, cs_order_number#67, cs_quantity#68, cs_ext_sales_price#69, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73] +Arguments: hashpartitioning(cs_sold_date_sk#65, 100), ENSURE_REQUIREMENTS, [plan_id=48] + +(373) Sort +Input [9]: [cs_sold_date_sk#65, cs_item_sk#66, cs_order_number#67, cs_quantity#68, cs_ext_sales_price#69, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73] +Arguments: [cs_sold_date_sk#65 ASC NULLS FIRST], false, 0 + +(374) Scan parquet +Output [2]: [d_date_sk#74, d_year#75] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(375) Filter +Input [2]: [d_date_sk#74, d_year#75] +Condition : ((isnotnull(d_year#75) AND (d_year#75 = 2001)) AND isnotnull(d_date_sk#74)) + +(376) Exchange +Input [2]: [d_date_sk#74, d_year#75] +Arguments: hashpartitioning(d_date_sk#74, 100), ENSURE_REQUIREMENTS, [plan_id=49] + +(377) Sort +Input [2]: [d_date_sk#74, d_year#75] +Arguments: [d_date_sk#74 ASC NULLS FIRST], false, 0 + +(378) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#65] +Right keys [1]: [d_date_sk#74] +Join type: Inner +Join condition: None + +(379) Project +Output [9]: [cs_item_sk#66, cs_order_number#67, cs_quantity#68, cs_ext_sales_price#69, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, d_year#75] +Input [11]: [cs_sold_date_sk#65, cs_item_sk#66, cs_order_number#67, cs_quantity#68, cs_ext_sales_price#69, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, d_date_sk#74, d_year#75] + +(380) Exchange +Input [9]: [cs_item_sk#66, cs_order_number#67, cs_quantity#68, cs_ext_sales_price#69, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, d_year#75] +Arguments: hashpartitioning(cs_order_number#67, cs_item_sk#66, 100), ENSURE_REQUIREMENTS, [plan_id=50] + +(381) Sort +Input [9]: [cs_item_sk#66, cs_order_number#67, cs_quantity#68, cs_ext_sales_price#69, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, d_year#75] +Arguments: [cs_order_number#67 ASC NULLS FIRST, cs_item_sk#66 ASC NULLS FIRST], false, 0 + +(382) Scan parquet +Output [4]: [cr_item_sk#76, cr_order_number#77, cr_return_quantity#78, cr_return_amount#79] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cr_order_number), IsNotNull(cr_item_sk)] +ReadSchema: struct + +(383) Filter +Input [4]: [cr_item_sk#76, cr_order_number#77, cr_return_quantity#78, cr_return_amount#79] +Condition : (isnotnull(cr_order_number#77) AND isnotnull(cr_item_sk#76)) + +(384) Exchange +Input [4]: [cr_item_sk#76, cr_order_number#77, cr_return_quantity#78, cr_return_amount#79] +Arguments: hashpartitioning(cr_order_number#77, cr_item_sk#76, 100), ENSURE_REQUIREMENTS, [plan_id=51] + +(385) Sort +Input [4]: [cr_item_sk#76, cr_order_number#77, cr_return_quantity#78, cr_return_amount#79] +Arguments: [cr_order_number#77 ASC NULLS FIRST, cr_item_sk#76 ASC NULLS FIRST], false, 0 + +(386) SortMergeJoin +Left keys [2]: [cs_order_number#67, cs_item_sk#66] +Right keys [2]: [cr_order_number#77, cr_item_sk#76] +Join type: LeftOuter +Join condition: None + +(387) Project +Output [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, (cs_quantity#68 - coalesce(cr_return_quantity#78, 0)) AS sales_cnt#18, (cs_ext_sales_price#69 - coalesce(cr_return_amount#79, 0.00)) AS sales_amt#19] +Input [13]: [cs_item_sk#66, cs_order_number#67, cs_quantity#68, cs_ext_sales_price#69, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, d_year#75, cr_item_sk#76, cr_order_number#77, cr_return_quantity#78, cr_return_amount#79] + +(388) Scan parquet +Output [5]: [ss_sold_date_sk#80, ss_item_sk#81, ss_ticket_number#82, ss_quantity#83, ss_ext_sales_price#84] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(389) Filter +Input [5]: [ss_sold_date_sk#80, ss_item_sk#81, ss_ticket_number#82, ss_quantity#83, ss_ext_sales_price#84] +Condition : (isnotnull(ss_item_sk#81) AND isnotnull(ss_sold_date_sk#80)) + +(390) Exchange +Input [5]: [ss_sold_date_sk#80, ss_item_sk#81, ss_ticket_number#82, ss_quantity#83, ss_ext_sales_price#84] +Arguments: hashpartitioning(ss_item_sk#81, 100), ENSURE_REQUIREMENTS, [plan_id=52] + +(391) Sort +Input [5]: [ss_sold_date_sk#80, ss_item_sk#81, ss_ticket_number#82, ss_quantity#83, ss_ext_sales_price#84] +Arguments: [ss_item_sk#81 ASC NULLS FIRST], false, 0 + +(392) Scan parquet +Output [6]: [i_item_sk#127, i_brand_id#85, i_class_id#86, i_category_id#87, i_category#128, i_manufact_id#88] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_category), EqualTo(i_category,Books), IsNotNull(i_item_sk), IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id), IsNotNull(i_manufact_id)] +ReadSchema: struct + +(393) Filter +Input [6]: [i_item_sk#127, i_brand_id#85, i_class_id#86, i_category_id#87, i_category#128, i_manufact_id#88] +Condition : ((((((isnotnull(i_category#128) AND (i_category#128 = Books)) AND isnotnull(i_item_sk#127)) AND isnotnull(i_brand_id#85)) AND isnotnull(i_class_id#86)) AND isnotnull(i_category_id#87)) AND isnotnull(i_manufact_id#88)) + +(394) Project +Output [5]: [i_item_sk#127, i_brand_id#85, i_class_id#86, i_category_id#87, i_manufact_id#88] +Input [6]: [i_item_sk#127, i_brand_id#85, i_class_id#86, i_category_id#87, i_category#128, i_manufact_id#88] + +(395) Exchange +Input [5]: [i_item_sk#127, i_brand_id#85, i_class_id#86, i_category_id#87, i_manufact_id#88] +Arguments: hashpartitioning(i_item_sk#127, 100), ENSURE_REQUIREMENTS, [plan_id=53] + +(396) Sort +Input [5]: [i_item_sk#127, i_brand_id#85, i_class_id#86, i_category_id#87, i_manufact_id#88] +Arguments: [i_item_sk#127 ASC NULLS FIRST], false, 0 + +(397) SortMergeJoin +Left keys [1]: [ss_item_sk#81] +Right keys [1]: [i_item_sk#127] +Join type: Inner +Join condition: None + +(398) Project +Output [9]: [ss_sold_date_sk#80, ss_item_sk#81, ss_ticket_number#82, ss_quantity#83, ss_ext_sales_price#84, i_brand_id#85, i_class_id#86, i_category_id#87, i_manufact_id#88] +Input [10]: [ss_sold_date_sk#80, ss_item_sk#81, ss_ticket_number#82, ss_quantity#83, ss_ext_sales_price#84, i_item_sk#127, i_brand_id#85, i_class_id#86, i_category_id#87, i_manufact_id#88] + +(399) Exchange +Input [9]: [ss_sold_date_sk#80, ss_item_sk#81, ss_ticket_number#82, ss_quantity#83, ss_ext_sales_price#84, i_brand_id#85, i_class_id#86, i_category_id#87, i_manufact_id#88] +Arguments: hashpartitioning(ss_sold_date_sk#80, 100), ENSURE_REQUIREMENTS, [plan_id=54] + +(400) Sort +Input [9]: [ss_sold_date_sk#80, ss_item_sk#81, ss_ticket_number#82, ss_quantity#83, ss_ext_sales_price#84, i_brand_id#85, i_class_id#86, i_category_id#87, i_manufact_id#88] +Arguments: [ss_sold_date_sk#80 ASC NULLS FIRST], false, 0 + +(401) Scan parquet +Output [2]: [d_date_sk#89, d_year#90] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(402) Filter +Input [2]: [d_date_sk#89, d_year#90] +Condition : ((isnotnull(d_year#90) AND (d_year#90 = 2001)) AND isnotnull(d_date_sk#89)) + +(403) Exchange +Input [2]: [d_date_sk#89, d_year#90] +Arguments: hashpartitioning(d_date_sk#89, 100), ENSURE_REQUIREMENTS, [plan_id=55] + +(404) Sort +Input [2]: [d_date_sk#89, d_year#90] +Arguments: [d_date_sk#89 ASC NULLS FIRST], false, 0 + +(405) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#80] +Right keys [1]: [d_date_sk#89] +Join type: Inner +Join condition: None + +(406) Project +Output [9]: [ss_item_sk#81, ss_ticket_number#82, ss_quantity#83, ss_ext_sales_price#84, i_brand_id#85, i_class_id#86, i_category_id#87, i_manufact_id#88, d_year#90] +Input [11]: [ss_sold_date_sk#80, ss_item_sk#81, ss_ticket_number#82, ss_quantity#83, ss_ext_sales_price#84, i_brand_id#85, i_class_id#86, i_category_id#87, i_manufact_id#88, d_date_sk#89, d_year#90] + +(407) Exchange +Input [9]: [ss_item_sk#81, ss_ticket_number#82, ss_quantity#83, ss_ext_sales_price#84, i_brand_id#85, i_class_id#86, i_category_id#87, i_manufact_id#88, d_year#90] +Arguments: hashpartitioning(ss_ticket_number#82, ss_item_sk#81, 100), ENSURE_REQUIREMENTS, [plan_id=56] + +(408) Sort +Input [9]: [ss_item_sk#81, ss_ticket_number#82, ss_quantity#83, ss_ext_sales_price#84, i_brand_id#85, i_class_id#86, i_category_id#87, i_manufact_id#88, d_year#90] +Arguments: [ss_ticket_number#82 ASC NULLS FIRST, ss_item_sk#81 ASC NULLS FIRST], false, 0 + +(409) Scan parquet +Output [4]: [sr_item_sk#91, sr_ticket_number#92, sr_return_quantity#93, sr_return_amt#94] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_ticket_number), IsNotNull(sr_item_sk)] +ReadSchema: struct + +(410) Filter +Input [4]: [sr_item_sk#91, sr_ticket_number#92, sr_return_quantity#93, sr_return_amt#94] +Condition : (isnotnull(sr_ticket_number#92) AND isnotnull(sr_item_sk#91)) + +(411) Exchange +Input [4]: [sr_item_sk#91, sr_ticket_number#92, sr_return_quantity#93, sr_return_amt#94] +Arguments: hashpartitioning(sr_ticket_number#92, sr_item_sk#91, 100), ENSURE_REQUIREMENTS, [plan_id=57] + +(412) Sort +Input [4]: [sr_item_sk#91, sr_ticket_number#92, sr_return_quantity#93, sr_return_amt#94] +Arguments: [sr_ticket_number#92 ASC NULLS FIRST, sr_item_sk#91 ASC NULLS FIRST], false, 0 + +(413) SortMergeJoin +Left keys [2]: [ss_ticket_number#82, ss_item_sk#81] +Right keys [2]: [sr_ticket_number#92, sr_item_sk#91] +Join type: LeftOuter +Join condition: None + +(414) Project +Output [7]: [d_year#90, i_brand_id#85, i_class_id#86, i_category_id#87, i_manufact_id#88, (ss_quantity#83 - coalesce(sr_return_quantity#93, 0)) AS sales_cnt#36, (ss_ext_sales_price#84 - coalesce(sr_return_amt#94, 0.00)) AS sales_amt#37] +Input [13]: [ss_item_sk#81, ss_ticket_number#82, ss_quantity#83, ss_ext_sales_price#84, i_brand_id#85, i_class_id#86, i_category_id#87, i_manufact_id#88, d_year#90, sr_item_sk#91, sr_ticket_number#92, sr_return_quantity#93, sr_return_amt#94] + +(415) Scan parquet +Output [5]: [ws_sold_date_sk#95, ws_item_sk#96, ws_order_number#97, ws_quantity#98, ws_ext_sales_price#99] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(416) Filter +Input [5]: [ws_sold_date_sk#95, ws_item_sk#96, ws_order_number#97, ws_quantity#98, ws_ext_sales_price#99] +Condition : (isnotnull(ws_item_sk#96) AND isnotnull(ws_sold_date_sk#95)) + +(417) Exchange +Input [5]: [ws_sold_date_sk#95, ws_item_sk#96, ws_order_number#97, ws_quantity#98, ws_ext_sales_price#99] +Arguments: hashpartitioning(ws_item_sk#96, 100), ENSURE_REQUIREMENTS, [plan_id=58] + +(418) Sort +Input [5]: [ws_sold_date_sk#95, ws_item_sk#96, ws_order_number#97, ws_quantity#98, ws_ext_sales_price#99] +Arguments: [ws_item_sk#96 ASC NULLS FIRST], false, 0 + +(419) Scan parquet +Output [6]: [i_item_sk#129, i_brand_id#100, i_class_id#101, i_category_id#102, i_category#130, i_manufact_id#103] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_category), EqualTo(i_category,Books), IsNotNull(i_item_sk), IsNotNull(i_brand_id), IsNotNull(i_class_id), IsNotNull(i_category_id), IsNotNull(i_manufact_id)] +ReadSchema: struct + +(420) Filter +Input [6]: [i_item_sk#129, i_brand_id#100, i_class_id#101, i_category_id#102, i_category#130, i_manufact_id#103] +Condition : ((((((isnotnull(i_category#130) AND (i_category#130 = Books)) AND isnotnull(i_item_sk#129)) AND isnotnull(i_brand_id#100)) AND isnotnull(i_class_id#101)) AND isnotnull(i_category_id#102)) AND isnotnull(i_manufact_id#103)) + +(421) Project +Output [5]: [i_item_sk#129, i_brand_id#100, i_class_id#101, i_category_id#102, i_manufact_id#103] +Input [6]: [i_item_sk#129, i_brand_id#100, i_class_id#101, i_category_id#102, i_category#130, i_manufact_id#103] + +(422) Exchange +Input [5]: [i_item_sk#129, i_brand_id#100, i_class_id#101, i_category_id#102, i_manufact_id#103] +Arguments: hashpartitioning(i_item_sk#129, 100), ENSURE_REQUIREMENTS, [plan_id=59] + +(423) Sort +Input [5]: [i_item_sk#129, i_brand_id#100, i_class_id#101, i_category_id#102, i_manufact_id#103] +Arguments: [i_item_sk#129 ASC NULLS FIRST], false, 0 + +(424) SortMergeJoin +Left keys [1]: [ws_item_sk#96] +Right keys [1]: [i_item_sk#129] +Join type: Inner +Join condition: None + +(425) Project +Output [9]: [ws_sold_date_sk#95, ws_item_sk#96, ws_order_number#97, ws_quantity#98, ws_ext_sales_price#99, i_brand_id#100, i_class_id#101, i_category_id#102, i_manufact_id#103] +Input [10]: [ws_sold_date_sk#95, ws_item_sk#96, ws_order_number#97, ws_quantity#98, ws_ext_sales_price#99, i_item_sk#129, i_brand_id#100, i_class_id#101, i_category_id#102, i_manufact_id#103] + +(426) Exchange +Input [9]: [ws_sold_date_sk#95, ws_item_sk#96, ws_order_number#97, ws_quantity#98, ws_ext_sales_price#99, i_brand_id#100, i_class_id#101, i_category_id#102, i_manufact_id#103] +Arguments: hashpartitioning(ws_sold_date_sk#95, 100), ENSURE_REQUIREMENTS, [plan_id=60] + +(427) Sort +Input [9]: [ws_sold_date_sk#95, ws_item_sk#96, ws_order_number#97, ws_quantity#98, ws_ext_sales_price#99, i_brand_id#100, i_class_id#101, i_category_id#102, i_manufact_id#103] +Arguments: [ws_sold_date_sk#95 ASC NULLS FIRST], false, 0 + +(428) Scan parquet +Output [2]: [d_date_sk#104, d_year#105] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), IsNotNull(d_date_sk)] +ReadSchema: struct + +(429) Filter +Input [2]: [d_date_sk#104, d_year#105] +Condition : ((isnotnull(d_year#105) AND (d_year#105 = 2001)) AND isnotnull(d_date_sk#104)) + +(430) Exchange +Input [2]: [d_date_sk#104, d_year#105] +Arguments: hashpartitioning(d_date_sk#104, 100), ENSURE_REQUIREMENTS, [plan_id=61] + +(431) Sort +Input [2]: [d_date_sk#104, d_year#105] +Arguments: [d_date_sk#104 ASC NULLS FIRST], false, 0 + +(432) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#95] +Right keys [1]: [d_date_sk#104] +Join type: Inner +Join condition: None + +(433) Project +Output [9]: [ws_item_sk#96, ws_order_number#97, ws_quantity#98, ws_ext_sales_price#99, i_brand_id#100, i_class_id#101, i_category_id#102, i_manufact_id#103, d_year#105] +Input [11]: [ws_sold_date_sk#95, ws_item_sk#96, ws_order_number#97, ws_quantity#98, ws_ext_sales_price#99, i_brand_id#100, i_class_id#101, i_category_id#102, i_manufact_id#103, d_date_sk#104, d_year#105] + +(434) Exchange +Input [9]: [ws_item_sk#96, ws_order_number#97, ws_quantity#98, ws_ext_sales_price#99, i_brand_id#100, i_class_id#101, i_category_id#102, i_manufact_id#103, d_year#105] +Arguments: hashpartitioning(ws_order_number#97, ws_item_sk#96, 100), ENSURE_REQUIREMENTS, [plan_id=62] + +(435) Sort +Input [9]: [ws_item_sk#96, ws_order_number#97, ws_quantity#98, ws_ext_sales_price#99, i_brand_id#100, i_class_id#101, i_category_id#102, i_manufact_id#103, d_year#105] +Arguments: [ws_order_number#97 ASC NULLS FIRST, ws_item_sk#96 ASC NULLS FIRST], false, 0 + +(436) Scan parquet +Output [4]: [wr_item_sk#106, wr_order_number#107, wr_return_quantity#108, wr_return_amt#109] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wr_order_number), IsNotNull(wr_item_sk)] +ReadSchema: struct + +(437) Filter +Input [4]: [wr_item_sk#106, wr_order_number#107, wr_return_quantity#108, wr_return_amt#109] +Condition : (isnotnull(wr_order_number#107) AND isnotnull(wr_item_sk#106)) + +(438) Exchange +Input [4]: [wr_item_sk#106, wr_order_number#107, wr_return_quantity#108, wr_return_amt#109] +Arguments: hashpartitioning(wr_order_number#107, wr_item_sk#106, 100), ENSURE_REQUIREMENTS, [plan_id=63] + +(439) Sort +Input [4]: [wr_item_sk#106, wr_order_number#107, wr_return_quantity#108, wr_return_amt#109] +Arguments: [wr_order_number#107 ASC NULLS FIRST, wr_item_sk#106 ASC NULLS FIRST], false, 0 + +(440) SortMergeJoin +Left keys [2]: [ws_order_number#97, ws_item_sk#96] +Right keys [2]: [wr_order_number#107, wr_item_sk#106] +Join type: LeftOuter +Join condition: None + +(441) Project +Output [7]: [d_year#105, i_brand_id#100, i_class_id#101, i_category_id#102, i_manufact_id#103, (ws_quantity#98 - coalesce(wr_return_quantity#108, 0)) AS sales_cnt#54, (ws_ext_sales_price#99 - coalesce(wr_return_amt#109, 0.00)) AS sales_amt#55] +Input [13]: [ws_item_sk#96, ws_order_number#97, ws_quantity#98, ws_ext_sales_price#99, i_brand_id#100, i_class_id#101, i_category_id#102, i_manufact_id#103, d_year#105, wr_item_sk#106, wr_order_number#107, wr_return_quantity#108, wr_return_amt#109] + +(442) Union + +(443) HashAggregate +Input [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#18, sales_amt#19] +Keys [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#18, sales_amt#19] +Functions: [] +Aggregate Attributes: [] +Results [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#18, sales_amt#19] + +(444) Exchange +Input [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#18, sales_amt#19] +Arguments: hashpartitioning(d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#18, sales_amt#19, 100), ENSURE_REQUIREMENTS, [plan_id=64] + +(445) HashAggregate +Input [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#18, sales_amt#19] +Keys [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#18, sales_amt#19] +Functions: [] +Aggregate Attributes: [] +Results [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#18, sales_amt#19] + +(446) HashAggregate +Input [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#18, sales_amt#19] +Keys [5]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73] +Functions [2]: [partial_sum(sales_cnt#18), partial_sum(UnscaledValue(sales_amt#19))] +Aggregate Attributes [2]: [sum#59, sum#112] +Results [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sum#123, sum#131] + +(447) Exchange +Input [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sum#123, sum#131] +Arguments: hashpartitioning(d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, 100), ENSURE_REQUIREMENTS, [plan_id=65] + +(448) HashAggregate +Input [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sum#123, sum#131] +Keys [5]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73] +Functions [2]: [sum(sales_cnt#18), sum(UnscaledValue(sales_amt#19))] +Aggregate Attributes [2]: [sum(sales_cnt#18)#61, sum(UnscaledValue(sales_amt#19))#62] +Results [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sum(sales_cnt#18)#61 AS sales_cnt#113, MakeDecimal(sum(UnscaledValue(sales_amt#19))#62,18,2) AS sales_amt#114] + +(449) Filter +Input [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#113, sales_amt#114] +Condition : isnotnull(sales_cnt#113) + +(450) Exchange +Input [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#113, sales_amt#114] +Arguments: hashpartitioning(i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, 100), ENSURE_REQUIREMENTS, [plan_id=66] + +(451) Sort +Input [7]: [d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#113, sales_amt#114] +Arguments: [i_brand_id#70 ASC NULLS FIRST, i_class_id#71 ASC NULLS FIRST, i_category_id#72 ASC NULLS FIRST, i_manufact_id#73 ASC NULLS FIRST], false, 0 + +(452) SortMergeJoin +Left keys [4]: [i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11] +Right keys [4]: [i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73] +Join type: Inner +Join condition: ((cast(sales_cnt#63 as decimal(17,2)) / cast(sales_cnt#113 as decimal(17,2))) < 0.90000000000000000000) + +(453) Project +Output [10]: [d_year#75 AS prev_year#115, d_year#13 AS year#116, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#113 AS prev_yr_cnt#117, sales_cnt#63 AS curr_yr_cnt#118, (sales_cnt#63 - sales_cnt#113) AS sales_cnt_diff#119, (sales_amt#64 - sales_amt#114) AS sales_amt_diff#120] +Input [14]: [d_year#13, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, sales_cnt#63, sales_amt#64, d_year#75, i_brand_id#70, i_class_id#71, i_category_id#72, i_manufact_id#73, sales_cnt#113, sales_amt#114] + +(454) TakeOrderedAndProject +Input [10]: [prev_year#115, year#116, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, prev_yr_cnt#117, curr_yr_cnt#118, sales_cnt_diff#119, sales_amt_diff#120] +Arguments: X, [sales_cnt_diff#119 ASC NULLS FIRST, sales_amt_diff#120 ASC NULLS FIRST], [prev_year#115, year#116, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, prev_yr_cnt#117, curr_yr_cnt#118, sales_cnt_diff#119, sales_amt_diff#120] + +(455) AdaptiveSparkPlan +Output [10]: [prev_year#115, year#116, i_brand_id#7, i_class_id#8, i_category_id#9, i_manufact_id#11, prev_yr_cnt#117, curr_yr_cnt#118, sales_cnt_diff#119, sales_amt_diff#120] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q76.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q76.txt new file mode 100644 index 000000000..d0396954d --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q76.txt @@ -0,0 +1,873 @@ +== Physical Plan == +AdaptiveSparkPlan (162) ++- == Final Plan == + NativeTakeOrdered (102) + +- NativeProject (101) + +- NativeHashAggregate (100) + +- InputAdapter (99) + +- AQEShuffleRead (98) + +- ShuffleQueryStage (97), Statistics(X) + +- NativeShuffleExchange (96) + +- NativeHashAggregate (95) + +- NativeProject (94) + +- InputAdapter (93) + +- NativeUnion (92) + :- NativeProject (33) + : +- NativeSortMergeJoin Inner (32) + : :- NativeSort (23) + : : +- InputAdapter (22) + : : +- AQEShuffleRead (21) + : : +- ShuffleQueryStage (20), Statistics(X) + : : +- NativeShuffleExchange (19) + : : +- NativeProject (18) + : : +- NativeSortMergeJoin Inner (17) + : : :- NativeSort (8) + : : : +- InputAdapter (7) + : : : +- AQEShuffleRead (6) + : : : +- ShuffleQueryStage (5), Statistics(X) + : : : +- NativeShuffleExchange (4) + : : : +- NativeFilter (3) + : : : +- InputAdapter (2) + : : : +- NativeParquetScan (1) + : : +- NativeSort (16) + : : +- InputAdapter (15) + : : +- AQEShuffleRead (14) + : : +- ShuffleQueryStage (13), Statistics(X) + : : +- NativeShuffleExchange (12) + : : +- NativeFilter (11) + : : +- InputAdapter (10) + : : +- NativeParquetScan (9) + : +- NativeSort (31) + : +- InputAdapter (30) + : +- AQEShuffleRead (29) + : +- ShuffleQueryStage (28), Statistics(X) + : +- NativeShuffleExchange (27) + : +- NativeFilter (26) + : +- InputAdapter (25) + : +- NativeParquetScan (24) + :- NativeProject (62) + : +- NativeSortMergeJoin Inner (61) + : :- NativeSort (54) + : : +- InputAdapter (53) + : : +- AQEShuffleRead (52) + : : +- ShuffleQueryStage (51), Statistics(X) + : : +- NativeShuffleExchange (50) + : : +- NativeProject (49) + : : +- NativeSortMergeJoin Inner (48) + : : :- NativeSort (41) + : : : +- InputAdapter (40) + : : : +- AQEShuffleRead (39) + : : : +- ShuffleQueryStage (38), Statistics(X) + : : : +- NativeShuffleExchange (37) + : : : +- NativeFilter (36) + : : : +- InputAdapter (35) + : : : +- NativeParquetScan (34) + : : +- NativeSort (47) + : : +- InputAdapter (46) + : : +- InputAdapter (45) + : : +- AQEShuffleRead (44) + : : +- ShuffleQueryStage (43), Statistics(X) + : : +- ReusedExchange (42) + : +- NativeSort (60) + : +- InputAdapter (59) + : +- InputAdapter (58) + : +- AQEShuffleRead (57) + : +- ShuffleQueryStage (56), Statistics(X) + : +- ReusedExchange (55) + +- NativeProject (91) + +- NativeSortMergeJoin Inner (90) + :- NativeSort (83) + : +- InputAdapter (82) + : +- AQEShuffleRead (81) + : +- ShuffleQueryStage (80), Statistics(X) + : +- NativeShuffleExchange (79) + : +- NativeProject (78) + : +- NativeSortMergeJoin Inner (77) + : :- NativeSort (70) + : : +- InputAdapter (69) + : : +- AQEShuffleRead (68) + : : +- ShuffleQueryStage (67), Statistics(X) + : : +- NativeShuffleExchange (66) + : : +- NativeFilter (65) + : : +- InputAdapter (64) + : : +- NativeParquetScan (63) + : +- NativeSort (76) + : +- InputAdapter (75) + : +- InputAdapter (74) + : +- AQEShuffleRead (73) + : +- ShuffleQueryStage (72), Statistics(X) + : +- ReusedExchange (71) + +- NativeSort (89) + +- InputAdapter (88) + +- InputAdapter (87) + +- AQEShuffleRead (86) + +- ShuffleQueryStage (85), Statistics(X) + +- ReusedExchange (84) ++- == Initial Plan == + TakeOrderedAndProject (161) + +- HashAggregate (160) + +- Exchange (159) + +- HashAggregate (158) + +- Union (157) + :- Project (120) + : +- SortMergeJoin Inner (119) + : :- Sort (114) + : : +- Exchange (113) + : : +- Project (112) + : : +- SortMergeJoin Inner (111) + : : :- Sort (106) + : : : +- Exchange (105) + : : : +- Filter (104) + : : : +- Scan parquet (103) + : : +- Sort (110) + : : +- Exchange (109) + : : +- Filter (108) + : : +- Scan parquet (107) + : +- Sort (118) + : +- Exchange (117) + : +- Filter (116) + : +- Scan parquet (115) + :- Project (138) + : +- SortMergeJoin Inner (137) + : :- Sort (132) + : : +- Exchange (131) + : : +- Project (130) + : : +- SortMergeJoin Inner (129) + : : :- Sort (124) + : : : +- Exchange (123) + : : : +- Filter (122) + : : : +- Scan parquet (121) + : : +- Sort (128) + : : +- Exchange (127) + : : +- Filter (126) + : : +- Scan parquet (125) + : +- Sort (136) + : +- Exchange (135) + : +- Filter (134) + : +- Scan parquet (133) + +- Project (156) + +- SortMergeJoin Inner (155) + :- Sort (150) + : +- Exchange (149) + : +- Project (148) + : +- SortMergeJoin Inner (147) + : :- Sort (142) + : : +- Exchange (141) + : : +- Filter (140) + : : +- Scan parquet (139) + : +- Sort (146) + : +- Exchange (145) + : +- Filter (144) + : +- Scan parquet (143) + +- Sort (154) + +- Exchange (153) + +- Filter (152) + +- Scan parquet (151) + + +(103) Scan parquet +Output [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_ext_sales_price#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNull(ss_store_sk), IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_ext_sales_price#4] +Arguments: [#1, #2, #3, #4] + +(3) NativeFilter +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Condition : ((isnull(ss_store_sk#3) AND isnotnull(ss_item_sk#2)) AND isnotnull(ss_sold_date_sk#1)) + +(4) NativeShuffleExchange +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: X + +(6) AQEShuffleRead +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: coalesced + +(7) InputAdapter +Input [4]: [#1#1, #2#2, #3#3, #4#4] + +(8) NativeSort +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false + +(107) Scan parquet +Output [2]: [i_item_sk#5, i_category#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [i_item_sk#5, i_category#6] +Arguments: [#5, #6] + +(11) NativeFilter +Input [2]: [#5#5, #6#6] +Condition : isnotnull(i_item_sk#5) + +(12) NativeShuffleExchange +Input [2]: [#5#5, #6#6] +Arguments: hashpartitioning(i_item_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [2]: [#5#5, #6#6] +Arguments: X + +(14) AQEShuffleRead +Input [2]: [#5#5, #6#6] +Arguments: coalesced + +(15) InputAdapter +Input [2]: [#5#5, #6#6] + +(16) NativeSort +Input [2]: [#5#5, #6#6] +Arguments: [i_item_sk#5 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#5] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [4]: [ss_sold_date_sk#1, ss_store_sk#3, ss_ext_sales_price#4, i_category#6] +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] + +(19) NativeShuffleExchange +Input [4]: [ss_sold_date_sk#1, ss_store_sk#3, ss_ext_sales_price#4, i_category#6] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [4]: [ss_sold_date_sk#1, ss_store_sk#3, ss_ext_sales_price#4, i_category#6] +Arguments: X + +(21) AQEShuffleRead +Input [4]: [ss_sold_date_sk#1, ss_store_sk#3, ss_ext_sales_price#4, i_category#6] +Arguments: coalesced + +(22) InputAdapter +Input [4]: [ss_sold_date_sk#1, ss_store_sk#3, ss_ext_sales_price#4, i_category#6] + +(23) NativeSort +Input [4]: [ss_sold_date_sk#1, ss_store_sk#3, ss_ext_sales_price#4, i_category#6] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(115) Scan parquet +Output [3]: [d_date_sk#7, d_year#8, d_qoy#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date_sk)] +ReadSchema: struct + +(25) InputAdapter +Input [3]: [d_date_sk#7, d_year#8, d_qoy#9] +Arguments: [#7, #8, #9] + +(26) NativeFilter +Input [3]: [#7#7, #8#8, #9#9] +Condition : isnotnull(d_date_sk#7) + +(27) NativeShuffleExchange +Input [3]: [#7#7, #8#8, #9#9] +Arguments: hashpartitioning(d_date_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(28) ShuffleQueryStage +Output [3]: [#7#7, #8#8, #9#9] +Arguments: X + +(29) AQEShuffleRead +Input [3]: [#7#7, #8#8, #9#9] +Arguments: coalesced + +(30) InputAdapter +Input [3]: [#7#7, #8#8, #9#9] + +(31) NativeSort +Input [3]: [#7#7, #8#8, #9#9] +Arguments: [d_date_sk#7 ASC NULLS FIRST], false + +(32) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#7] +Join type: Inner +Join condition: None + +(33) NativeProject +Output [6]: [store AS channel#10, ss_store_sk#3 AS col_name#11, d_year#8, d_qoy#9, i_category#6, ss_ext_sales_price#4 AS ext_sales_price#12] +Input [7]: [ss_sold_date_sk#1, ss_store_sk#3, ss_ext_sales_price#4, i_category#6, #7#7, #8#8, #9#9] + +(121) Scan parquet +Output [4]: [ws_sold_date_sk#13, ws_item_sk#14, ws_ship_customer_sk#15, ws_ext_sales_price#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNull(ws_ship_customer_sk), IsNotNull(ws_item_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(35) InputAdapter +Input [4]: [ws_sold_date_sk#13, ws_item_sk#14, ws_ship_customer_sk#15, ws_ext_sales_price#16] +Arguments: [#13, #14, #15, #16] + +(36) NativeFilter +Input [4]: [#13#13, #14#14, #15#15, #16#16] +Condition : ((isnull(ws_ship_customer_sk#15) AND isnotnull(ws_item_sk#14)) AND isnotnull(ws_sold_date_sk#13)) + +(37) NativeShuffleExchange +Input [4]: [#13#13, #14#14, #15#15, #16#16] +Arguments: hashpartitioning(ws_item_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(38) ShuffleQueryStage +Output [4]: [#13#13, #14#14, #15#15, #16#16] +Arguments: X + +(39) AQEShuffleRead +Input [4]: [#13#13, #14#14, #15#15, #16#16] +Arguments: coalesced + +(40) InputAdapter +Input [4]: [#13#13, #14#14, #15#15, #16#16] + +(41) NativeSort +Input [4]: [#13#13, #14#14, #15#15, #16#16] +Arguments: [ws_item_sk#14 ASC NULLS FIRST], false + +(42) ReusedExchange [Reuses operator id: 12] +Output [2]: [i_item_sk#17, i_category#18] + +(43) ShuffleQueryStage +Output [2]: [i_item_sk#17, i_category#18] +Arguments: X + +(44) AQEShuffleRead +Input [2]: [i_item_sk#17, i_category#18] +Arguments: coalesced + +(45) InputAdapter +Input [2]: [i_item_sk#17, i_category#18] +Arguments: [#17, #18] + +(46) InputAdapter +Input [2]: [#17#17, #18#18] + +(47) NativeSort +Input [2]: [#17#17, #18#18] +Arguments: [i_item_sk#17 ASC NULLS FIRST], false + +(48) NativeSortMergeJoin +Left keys [1]: [ws_item_sk#14] +Right keys [1]: [i_item_sk#17] +Join type: Inner +Join condition: None + +(49) NativeProject +Output [4]: [ws_sold_date_sk#13, ws_ship_customer_sk#15, ws_ext_sales_price#16, i_category#18] +Input [6]: [#13#13, #14#14, #15#15, #16#16, #17#17, #18#18] + +(50) NativeShuffleExchange +Input [4]: [ws_sold_date_sk#13, ws_ship_customer_sk#15, ws_ext_sales_price#16, i_category#18] +Arguments: hashpartitioning(ws_sold_date_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(51) ShuffleQueryStage +Output [4]: [ws_sold_date_sk#13, ws_ship_customer_sk#15, ws_ext_sales_price#16, i_category#18] +Arguments: X + +(52) AQEShuffleRead +Input [4]: [ws_sold_date_sk#13, ws_ship_customer_sk#15, ws_ext_sales_price#16, i_category#18] +Arguments: coalesced + +(53) InputAdapter +Input [4]: [ws_sold_date_sk#13, ws_ship_customer_sk#15, ws_ext_sales_price#16, i_category#18] + +(54) NativeSort +Input [4]: [ws_sold_date_sk#13, ws_ship_customer_sk#15, ws_ext_sales_price#16, i_category#18] +Arguments: [ws_sold_date_sk#13 ASC NULLS FIRST], false + +(55) ReusedExchange [Reuses operator id: 27] +Output [3]: [d_date_sk#19, d_year#20, d_qoy#21] + +(56) ShuffleQueryStage +Output [3]: [d_date_sk#19, d_year#20, d_qoy#21] +Arguments: X + +(57) AQEShuffleRead +Input [3]: [d_date_sk#19, d_year#20, d_qoy#21] +Arguments: coalesced + +(58) InputAdapter +Input [3]: [d_date_sk#19, d_year#20, d_qoy#21] +Arguments: [#19, #20, #21] + +(59) InputAdapter +Input [3]: [#19#19, #20#20, #21#21] + +(60) NativeSort +Input [3]: [#19#19, #20#20, #21#21] +Arguments: [d_date_sk#19 ASC NULLS FIRST], false + +(61) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#13] +Right keys [1]: [d_date_sk#19] +Join type: Inner +Join condition: None + +(62) NativeProject +Output [6]: [web AS channel#22, ws_ship_customer_sk#15 AS col_name#23, d_year#20, d_qoy#21, i_category#18, ws_ext_sales_price#16 AS ext_sales_price#24] +Input [7]: [ws_sold_date_sk#13, ws_ship_customer_sk#15, ws_ext_sales_price#16, i_category#18, #19#19, #20#20, #21#21] + +(139) Scan parquet +Output [4]: [cs_sold_date_sk#25, cs_ship_addr_sk#26, cs_item_sk#27, cs_ext_sales_price#28] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNull(cs_ship_addr_sk), IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(64) InputAdapter +Input [4]: [cs_sold_date_sk#25, cs_ship_addr_sk#26, cs_item_sk#27, cs_ext_sales_price#28] +Arguments: [#25, #26, #27, #28] + +(65) NativeFilter +Input [4]: [#25#25, #26#26, #27#27, #28#28] +Condition : ((isnull(cs_ship_addr_sk#26) AND isnotnull(cs_item_sk#27)) AND isnotnull(cs_sold_date_sk#25)) + +(66) NativeShuffleExchange +Input [4]: [#25#25, #26#26, #27#27, #28#28] +Arguments: hashpartitioning(cs_item_sk#27, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(67) ShuffleQueryStage +Output [4]: [#25#25, #26#26, #27#27, #28#28] +Arguments: X + +(68) AQEShuffleRead +Input [4]: [#25#25, #26#26, #27#27, #28#28] +Arguments: coalesced + +(69) InputAdapter +Input [4]: [#25#25, #26#26, #27#27, #28#28] + +(70) NativeSort +Input [4]: [#25#25, #26#26, #27#27, #28#28] +Arguments: [cs_item_sk#27 ASC NULLS FIRST], false + +(71) ReusedExchange [Reuses operator id: 12] +Output [2]: [i_item_sk#29, i_category#30] + +(72) ShuffleQueryStage +Output [2]: [i_item_sk#29, i_category#30] +Arguments: X + +(73) AQEShuffleRead +Input [2]: [i_item_sk#29, i_category#30] +Arguments: coalesced + +(74) InputAdapter +Input [2]: [i_item_sk#29, i_category#30] +Arguments: [#29, #30] + +(75) InputAdapter +Input [2]: [#29#29, #30#30] + +(76) NativeSort +Input [2]: [#29#29, #30#30] +Arguments: [i_item_sk#29 ASC NULLS FIRST], false + +(77) NativeSortMergeJoin +Left keys [1]: [cs_item_sk#27] +Right keys [1]: [i_item_sk#29] +Join type: Inner +Join condition: None + +(78) NativeProject +Output [4]: [cs_sold_date_sk#25, cs_ship_addr_sk#26, cs_ext_sales_price#28, i_category#30] +Input [6]: [#25#25, #26#26, #27#27, #28#28, #29#29, #30#30] + +(79) NativeShuffleExchange +Input [4]: [cs_sold_date_sk#25, cs_ship_addr_sk#26, cs_ext_sales_price#28, i_category#30] +Arguments: hashpartitioning(cs_sold_date_sk#25, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(80) ShuffleQueryStage +Output [4]: [cs_sold_date_sk#25, cs_ship_addr_sk#26, cs_ext_sales_price#28, i_category#30] +Arguments: X + +(81) AQEShuffleRead +Input [4]: [cs_sold_date_sk#25, cs_ship_addr_sk#26, cs_ext_sales_price#28, i_category#30] +Arguments: coalesced + +(82) InputAdapter +Input [4]: [cs_sold_date_sk#25, cs_ship_addr_sk#26, cs_ext_sales_price#28, i_category#30] + +(83) NativeSort +Input [4]: [cs_sold_date_sk#25, cs_ship_addr_sk#26, cs_ext_sales_price#28, i_category#30] +Arguments: [cs_sold_date_sk#25 ASC NULLS FIRST], false + +(84) ReusedExchange [Reuses operator id: 27] +Output [3]: [d_date_sk#31, d_year#32, d_qoy#33] + +(85) ShuffleQueryStage +Output [3]: [d_date_sk#31, d_year#32, d_qoy#33] +Arguments: X + +(86) AQEShuffleRead +Input [3]: [d_date_sk#31, d_year#32, d_qoy#33] +Arguments: coalesced + +(87) InputAdapter +Input [3]: [d_date_sk#31, d_year#32, d_qoy#33] +Arguments: [#31, #32, #33] + +(88) InputAdapter +Input [3]: [#31#31, #32#32, #33#33] + +(89) NativeSort +Input [3]: [#31#31, #32#32, #33#33] +Arguments: [d_date_sk#31 ASC NULLS FIRST], false + +(90) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#25] +Right keys [1]: [d_date_sk#31] +Join type: Inner +Join condition: None + +(91) NativeProject +Output [6]: [catalog AS channel#34, cs_ship_addr_sk#26 AS col_name#35, d_year#32, d_qoy#33, i_category#30, cs_ext_sales_price#28 AS ext_sales_price#36] +Input [7]: [cs_sold_date_sk#25, cs_ship_addr_sk#26, cs_ext_sales_price#28, i_category#30, #31#31, #32#32, #33#33] + +(92) NativeUnion +Arguments: [channel#10, col_name#11, d_year#8, d_qoy#9, i_category#6, ext_sales_price#12] + +(93) InputAdapter +Input [6]: [channel#10, col_name#11, d_year#8, d_qoy#9, i_category#6, ext_sales_price#12] +Arguments: [#10, #11, #8, #9, #6, #12] + +(94) NativeProject +Output [6]: [channel#10 AS channel#10, col_name#11 AS col_name#11, d_year#8 AS d_year#8, d_qoy#9 AS d_qoy#9, i_category#6 AS i_category#6, UnscaledValue(ext_sales_price#12) AS _c5#37] +Input [6]: [#10#10, #11#11, #8#8, #9#9, #6#6, #12#12] + +(95) NativeHashAggregate +Input [6]: [channel#10, col_name#11, d_year#8, d_qoy#9, i_category#6, _c5#37] +Keys [5]: [channel#10, col_name#11, d_year#8, d_qoy#9, i_category#6] +Functions [2]: [partial_count(1), partial_sum(_c5#37)] +Aggregate Attributes [2]: [count#38, sum#39] +Results [6]: [channel#10, col_name#11, d_year#8, d_qoy#9, i_category#6, #40#40] + +(96) NativeShuffleExchange +Input [6]: [channel#10, col_name#11, d_year#8, d_qoy#9, i_category#6, #40#40] +Arguments: hashpartitioning(channel#10, col_name#11, d_year#8, d_qoy#9, i_category#6, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(97) ShuffleQueryStage +Output [6]: [channel#10, col_name#11, d_year#8, d_qoy#9, i_category#6, #40#40] +Arguments: X + +(98) AQEShuffleRead +Input [6]: [channel#10, col_name#11, d_year#8, d_qoy#9, i_category#6, #40#40] +Arguments: coalesced + +(99) InputAdapter +Input [6]: [channel#10, col_name#11, d_year#8, d_qoy#9, i_category#6, #40#40] + +(100) NativeHashAggregate +Input [6]: [channel#10, col_name#11, d_year#8, d_qoy#9, i_category#6, #40#40] +Keys [5]: [channel#10, col_name#11, d_year#8, d_qoy#9, i_category#6] +Functions [2]: [count(1), sum(UnscaledValue(ext_sales_price#12))] +Aggregate Attributes [2]: [count(1)#41, sum(UnscaledValue(ext_sales_price#12))#42] +Results [7]: [channel#10, col_name#11, d_year#8, d_qoy#9, i_category#6, count(1)#41, sum(UnscaledValue(ext_sales_price#12))#42] + +(101) NativeProject +Output [7]: [channel#10, col_name#11, d_year#8, d_qoy#9, i_category#6, count(1)#41 AS sales_cnt#43, MakeDecimal(sum(UnscaledValue(ext_sales_price#12))#42,17,2) AS sales_amt#44] +Input [7]: [channel#10, col_name#11, d_year#8, d_qoy#9, i_category#6, count(1)#41, sum(UnscaledValue(ext_sales_price#12))#42] + +(102) NativeTakeOrdered +Input [7]: [channel#10, col_name#11, d_year#8, d_qoy#9, i_category#6, sales_cnt#43, sales_amt#44] +Arguments: X, [channel#10 ASC NULLS FIRST, col_name#11 ASC NULLS FIRST, d_year#8 ASC NULLS FIRST, d_qoy#9 ASC NULLS FIRST, i_category#6 ASC NULLS FIRST] + +(103) Scan parquet +Output [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_ext_sales_price#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNull(ss_store_sk), IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(104) Filter +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_ext_sales_price#4] +Condition : ((isnull(ss_store_sk#3) AND isnotnull(ss_item_sk#2)) AND isnotnull(ss_sold_date_sk#1)) + +(105) Exchange +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_ext_sales_price#4] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(106) Sort +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_ext_sales_price#4] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false, 0 + +(107) Scan parquet +Output [2]: [i_item_sk#5, i_category#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(108) Filter +Input [2]: [i_item_sk#5, i_category#6] +Condition : isnotnull(i_item_sk#5) + +(109) Exchange +Input [2]: [i_item_sk#5, i_category#6] +Arguments: hashpartitioning(i_item_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(110) Sort +Input [2]: [i_item_sk#5, i_category#6] +Arguments: [i_item_sk#5 ASC NULLS FIRST], false, 0 + +(111) SortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#5] +Join type: Inner +Join condition: None + +(112) Project +Output [4]: [ss_sold_date_sk#1, ss_store_sk#3, ss_ext_sales_price#4, i_category#6] +Input [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_ext_sales_price#4, i_item_sk#5, i_category#6] + +(113) Exchange +Input [4]: [ss_sold_date_sk#1, ss_store_sk#3, ss_ext_sales_price#4, i_category#6] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(114) Sort +Input [4]: [ss_sold_date_sk#1, ss_store_sk#3, ss_ext_sales_price#4, i_category#6] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(115) Scan parquet +Output [3]: [d_date_sk#7, d_year#8, d_qoy#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date_sk)] +ReadSchema: struct + +(116) Filter +Input [3]: [d_date_sk#7, d_year#8, d_qoy#9] +Condition : isnotnull(d_date_sk#7) + +(117) Exchange +Input [3]: [d_date_sk#7, d_year#8, d_qoy#9] +Arguments: hashpartitioning(d_date_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(118) Sort +Input [3]: [d_date_sk#7, d_year#8, d_qoy#9] +Arguments: [d_date_sk#7 ASC NULLS FIRST], false, 0 + +(119) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#7] +Join type: Inner +Join condition: None + +(120) Project +Output [6]: [store AS channel#10, ss_store_sk#3 AS col_name#11, d_year#8, d_qoy#9, i_category#6, ss_ext_sales_price#4 AS ext_sales_price#12] +Input [7]: [ss_sold_date_sk#1, ss_store_sk#3, ss_ext_sales_price#4, i_category#6, d_date_sk#7, d_year#8, d_qoy#9] + +(121) Scan parquet +Output [4]: [ws_sold_date_sk#13, ws_item_sk#14, ws_ship_customer_sk#15, ws_ext_sales_price#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNull(ws_ship_customer_sk), IsNotNull(ws_item_sk), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(122) Filter +Input [4]: [ws_sold_date_sk#13, ws_item_sk#14, ws_ship_customer_sk#15, ws_ext_sales_price#16] +Condition : ((isnull(ws_ship_customer_sk#15) AND isnotnull(ws_item_sk#14)) AND isnotnull(ws_sold_date_sk#13)) + +(123) Exchange +Input [4]: [ws_sold_date_sk#13, ws_item_sk#14, ws_ship_customer_sk#15, ws_ext_sales_price#16] +Arguments: hashpartitioning(ws_item_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(124) Sort +Input [4]: [ws_sold_date_sk#13, ws_item_sk#14, ws_ship_customer_sk#15, ws_ext_sales_price#16] +Arguments: [ws_item_sk#14 ASC NULLS FIRST], false, 0 + +(125) Scan parquet +Output [2]: [i_item_sk#17, i_category#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(126) Filter +Input [2]: [i_item_sk#17, i_category#18] +Condition : isnotnull(i_item_sk#17) + +(127) Exchange +Input [2]: [i_item_sk#17, i_category#18] +Arguments: hashpartitioning(i_item_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(128) Sort +Input [2]: [i_item_sk#17, i_category#18] +Arguments: [i_item_sk#17 ASC NULLS FIRST], false, 0 + +(129) SortMergeJoin +Left keys [1]: [ws_item_sk#14] +Right keys [1]: [i_item_sk#17] +Join type: Inner +Join condition: None + +(130) Project +Output [4]: [ws_sold_date_sk#13, ws_ship_customer_sk#15, ws_ext_sales_price#16, i_category#18] +Input [6]: [ws_sold_date_sk#13, ws_item_sk#14, ws_ship_customer_sk#15, ws_ext_sales_price#16, i_item_sk#17, i_category#18] + +(131) Exchange +Input [4]: [ws_sold_date_sk#13, ws_ship_customer_sk#15, ws_ext_sales_price#16, i_category#18] +Arguments: hashpartitioning(ws_sold_date_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(132) Sort +Input [4]: [ws_sold_date_sk#13, ws_ship_customer_sk#15, ws_ext_sales_price#16, i_category#18] +Arguments: [ws_sold_date_sk#13 ASC NULLS FIRST], false, 0 + +(133) Scan parquet +Output [3]: [d_date_sk#19, d_year#20, d_qoy#21] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date_sk)] +ReadSchema: struct + +(134) Filter +Input [3]: [d_date_sk#19, d_year#20, d_qoy#21] +Condition : isnotnull(d_date_sk#19) + +(135) Exchange +Input [3]: [d_date_sk#19, d_year#20, d_qoy#21] +Arguments: hashpartitioning(d_date_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(136) Sort +Input [3]: [d_date_sk#19, d_year#20, d_qoy#21] +Arguments: [d_date_sk#19 ASC NULLS FIRST], false, 0 + +(137) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#13] +Right keys [1]: [d_date_sk#19] +Join type: Inner +Join condition: None + +(138) Project +Output [6]: [web AS channel#22, ws_ship_customer_sk#15 AS col_name#23, d_year#20, d_qoy#21, i_category#18, ws_ext_sales_price#16 AS ext_sales_price#24] +Input [7]: [ws_sold_date_sk#13, ws_ship_customer_sk#15, ws_ext_sales_price#16, i_category#18, d_date_sk#19, d_year#20, d_qoy#21] + +(139) Scan parquet +Output [4]: [cs_sold_date_sk#25, cs_ship_addr_sk#26, cs_item_sk#27, cs_ext_sales_price#28] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNull(cs_ship_addr_sk), IsNotNull(cs_item_sk), IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(140) Filter +Input [4]: [cs_sold_date_sk#25, cs_ship_addr_sk#26, cs_item_sk#27, cs_ext_sales_price#28] +Condition : ((isnull(cs_ship_addr_sk#26) AND isnotnull(cs_item_sk#27)) AND isnotnull(cs_sold_date_sk#25)) + +(141) Exchange +Input [4]: [cs_sold_date_sk#25, cs_ship_addr_sk#26, cs_item_sk#27, cs_ext_sales_price#28] +Arguments: hashpartitioning(cs_item_sk#27, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(142) Sort +Input [4]: [cs_sold_date_sk#25, cs_ship_addr_sk#26, cs_item_sk#27, cs_ext_sales_price#28] +Arguments: [cs_item_sk#27 ASC NULLS FIRST], false, 0 + +(143) Scan parquet +Output [2]: [i_item_sk#29, i_category#30] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(144) Filter +Input [2]: [i_item_sk#29, i_category#30] +Condition : isnotnull(i_item_sk#29) + +(145) Exchange +Input [2]: [i_item_sk#29, i_category#30] +Arguments: hashpartitioning(i_item_sk#29, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(146) Sort +Input [2]: [i_item_sk#29, i_category#30] +Arguments: [i_item_sk#29 ASC NULLS FIRST], false, 0 + +(147) SortMergeJoin +Left keys [1]: [cs_item_sk#27] +Right keys [1]: [i_item_sk#29] +Join type: Inner +Join condition: None + +(148) Project +Output [4]: [cs_sold_date_sk#25, cs_ship_addr_sk#26, cs_ext_sales_price#28, i_category#30] +Input [6]: [cs_sold_date_sk#25, cs_ship_addr_sk#26, cs_item_sk#27, cs_ext_sales_price#28, i_item_sk#29, i_category#30] + +(149) Exchange +Input [4]: [cs_sold_date_sk#25, cs_ship_addr_sk#26, cs_ext_sales_price#28, i_category#30] +Arguments: hashpartitioning(cs_sold_date_sk#25, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(150) Sort +Input [4]: [cs_sold_date_sk#25, cs_ship_addr_sk#26, cs_ext_sales_price#28, i_category#30] +Arguments: [cs_sold_date_sk#25 ASC NULLS FIRST], false, 0 + +(151) Scan parquet +Output [3]: [d_date_sk#31, d_year#32, d_qoy#33] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date_sk)] +ReadSchema: struct + +(152) Filter +Input [3]: [d_date_sk#31, d_year#32, d_qoy#33] +Condition : isnotnull(d_date_sk#31) + +(153) Exchange +Input [3]: [d_date_sk#31, d_year#32, d_qoy#33] +Arguments: hashpartitioning(d_date_sk#31, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(154) Sort +Input [3]: [d_date_sk#31, d_year#32, d_qoy#33] +Arguments: [d_date_sk#31 ASC NULLS FIRST], false, 0 + +(155) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#25] +Right keys [1]: [d_date_sk#31] +Join type: Inner +Join condition: None + +(156) Project +Output [6]: [catalog AS channel#34, cs_ship_addr_sk#26 AS col_name#35, d_year#32, d_qoy#33, i_category#30, cs_ext_sales_price#28 AS ext_sales_price#36] +Input [7]: [cs_sold_date_sk#25, cs_ship_addr_sk#26, cs_ext_sales_price#28, i_category#30, d_date_sk#31, d_year#32, d_qoy#33] + +(157) Union + +(158) HashAggregate +Input [6]: [channel#10, col_name#11, d_year#8, d_qoy#9, i_category#6, ext_sales_price#12] +Keys [5]: [channel#10, col_name#11, d_year#8, d_qoy#9, i_category#6] +Functions [2]: [partial_count(1), partial_sum(UnscaledValue(ext_sales_price#12))] +Aggregate Attributes [2]: [count#38, sum#39] +Results [7]: [channel#10, col_name#11, d_year#8, d_qoy#9, i_category#6, count#45, sum#46] + +(159) Exchange +Input [7]: [channel#10, col_name#11, d_year#8, d_qoy#9, i_category#6, count#45, sum#46] +Arguments: hashpartitioning(channel#10, col_name#11, d_year#8, d_qoy#9, i_category#6, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(160) HashAggregate +Input [7]: [channel#10, col_name#11, d_year#8, d_qoy#9, i_category#6, count#45, sum#46] +Keys [5]: [channel#10, col_name#11, d_year#8, d_qoy#9, i_category#6] +Functions [2]: [count(1), sum(UnscaledValue(ext_sales_price#12))] +Aggregate Attributes [2]: [count(1)#41, sum(UnscaledValue(ext_sales_price#12))#42] +Results [7]: [channel#10, col_name#11, d_year#8, d_qoy#9, i_category#6, count(1)#41 AS sales_cnt#43, MakeDecimal(sum(UnscaledValue(ext_sales_price#12))#42,17,2) AS sales_amt#44] + +(161) TakeOrderedAndProject +Input [7]: [channel#10, col_name#11, d_year#8, d_qoy#9, i_category#6, sales_cnt#43, sales_amt#44] +Arguments: X, [channel#10 ASC NULLS FIRST, col_name#11 ASC NULLS FIRST, d_year#8 ASC NULLS FIRST, d_qoy#9 ASC NULLS FIRST, i_category#6 ASC NULLS FIRST], [channel#10, col_name#11, d_year#8, d_qoy#9, i_category#6, sales_cnt#43, sales_amt#44] + +(162) AdaptiveSparkPlan +Output [7]: [channel#10, col_name#11, d_year#8, d_qoy#9, i_category#6, sales_cnt#43, sales_amt#44] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q77.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q77.txt new file mode 100644 index 000000000..62271142c --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q77.txt @@ -0,0 +1,1859 @@ +== Physical Plan == +AdaptiveSparkPlan (336) ++- == Final Plan == + NativeTakeOrdered (207) + +- NativeProject (206) + +- NativeHashAggregate (205) + +- InputAdapter (204) + +- AQEShuffleRead (203) + +- ShuffleQueryStage (202), Statistics(X) + +- NativeShuffleExchange (201) + +- NativeHashAggregate (200) + +- NativeExpand (199) + +- InputAdapter (198) + +- NativeUnion (197) + :- NativeProject (75) + : +- NativeSortMergeJoin LeftOuter (74) + : :- NativeSort (39) + : : +- NativeProject (38) + : : +- NativeHashAggregate (37) + : : +- NativeHashAggregate (36) + : : +- NativeProject (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 (73) + : +- NativeProject (72) + : +- NativeHashAggregate (71) + : +- NativeHashAggregate (70) + : +- NativeProject (69) + : +- NativeProject (68) + : +- NativeSortMergeJoin Inner (67) + : :- NativeSort (60) + : : +- InputAdapter (59) + : : +- AQEShuffleRead (58) + : : +- ShuffleQueryStage (57), Statistics(X) + : : +- NativeShuffleExchange (56) + : : +- NativeProject (55) + : : +- NativeSortMergeJoin Inner (54) + : : :- NativeSort (47) + : : : +- InputAdapter (46) + : : : +- AQEShuffleRead (45) + : : : +- ShuffleQueryStage (44), Statistics(X) + : : : +- NativeShuffleExchange (43) + : : : +- NativeFilter (42) + : : : +- InputAdapter (41) + : : : +- NativeParquetScan (40) + : : +- NativeSort (53) + : : +- InputAdapter (52) + : : +- InputAdapter (51) + : : +- AQEShuffleRead (50) + : : +- ShuffleQueryStage (49), Statistics(X) + : : +- ReusedExchange (48) + : +- NativeSort (66) + : +- InputAdapter (65) + : +- InputAdapter (64) + : +- AQEShuffleRead (63) + : +- ShuffleQueryStage (62), Statistics(X) + : +- ReusedExchange (61) + :- ConvertToNative (124) + : +- * Project (123) + : +- CartesianProduct Inner (122) + : :- NativeProject (99) + : : +- NativeHashAggregate (98) + : : +- InputAdapter (97) + : : +- AQEShuffleRead (96) + : : +- ShuffleQueryStage (95), Statistics(X) + : : +- NativeShuffleExchange (94) + : : +- NativeHashAggregate (93) + : : +- NativeProject (92) + : : +- NativeProject (91) + : : +- NativeSortMergeJoin Inner (90) + : : :- NativeSort (83) + : : : +- InputAdapter (82) + : : : +- AQEShuffleRead (81) + : : : +- ShuffleQueryStage (80), Statistics(X) + : : : +- NativeShuffleExchange (79) + : : : +- NativeFilter (78) + : : : +- InputAdapter (77) + : : : +- NativeParquetScan (76) + : : +- NativeSort (89) + : : +- InputAdapter (88) + : : +- InputAdapter (87) + : : +- AQEShuffleRead (86) + : : +- ShuffleQueryStage (85), Statistics(X) + : : +- ReusedExchange (84) + : +- NativeProject (121) + : +- NativeHashAggregate (120) + : +- ShuffleQueryStage (119), Statistics(X) + : +- NativeShuffleExchange (118) + : +- NativeHashAggregate (117) + : +- NativeProject (116) + : +- NativeProject (115) + : +- NativeSortMergeJoin Inner (114) + : :- NativeSort (107) + : : +- InputAdapter (106) + : : +- AQEShuffleRead (105) + : : +- ShuffleQueryStage (104), Statistics(X) + : : +- NativeShuffleExchange (103) + : : +- NativeFilter (102) + : : +- InputAdapter (101) + : : +- NativeParquetScan (100) + : +- NativeSort (113) + : +- InputAdapter (112) + : +- InputAdapter (111) + : +- AQEShuffleRead (110) + : +- ShuffleQueryStage (109), Statistics(X) + : +- ReusedExchange (108) + +- NativeProject (196) + +- NativeSortMergeJoin LeftOuter (195) + :- NativeSort (160) + : +- NativeProject (159) + : +- NativeHashAggregate (158) + : +- NativeHashAggregate (157) + : +- NativeProject (156) + : +- NativeProject (155) + : +- NativeSortMergeJoin Inner (154) + : :- NativeSort (145) + : : +- InputAdapter (144) + : : +- AQEShuffleRead (143) + : : +- ShuffleQueryStage (142), Statistics(X) + : : +- NativeShuffleExchange (141) + : : +- NativeProject (140) + : : +- NativeSortMergeJoin Inner (139) + : : :- NativeSort (132) + : : : +- InputAdapter (131) + : : : +- AQEShuffleRead (130) + : : : +- ShuffleQueryStage (129), Statistics(X) + : : : +- NativeShuffleExchange (128) + : : : +- NativeFilter (127) + : : : +- InputAdapter (126) + : : : +- NativeParquetScan (125) + : : +- NativeSort (138) + : : +- InputAdapter (137) + : : +- InputAdapter (136) + : : +- AQEShuffleRead (135) + : : +- ShuffleQueryStage (134), Statistics(X) + : : +- ReusedExchange (133) + : +- NativeSort (153) + : +- InputAdapter (152) + : +- AQEShuffleRead (151) + : +- ShuffleQueryStage (150), Statistics(X) + : +- NativeShuffleExchange (149) + : +- NativeFilter (148) + : +- InputAdapter (147) + : +- NativeParquetScan (146) + +- NativeSort (194) + +- NativeProject (193) + +- NativeHashAggregate (192) + +- NativeHashAggregate (191) + +- NativeProject (190) + +- NativeProject (189) + +- NativeSortMergeJoin Inner (188) + :- NativeSort (181) + : +- InputAdapter (180) + : +- AQEShuffleRead (179) + : +- ShuffleQueryStage (178), Statistics(X) + : +- NativeShuffleExchange (177) + : +- NativeProject (176) + : +- NativeSortMergeJoin Inner (175) + : :- NativeSort (168) + : : +- InputAdapter (167) + : : +- AQEShuffleRead (166) + : : +- ShuffleQueryStage (165), Statistics(X) + : : +- NativeShuffleExchange (164) + : : +- NativeFilter (163) + : : +- InputAdapter (162) + : : +- NativeParquetScan (161) + : +- NativeSort (174) + : +- InputAdapter (173) + : +- InputAdapter (172) + : +- AQEShuffleRead (171) + : +- ShuffleQueryStage (170), Statistics(X) + : +- ReusedExchange (169) + +- NativeSort (187) + +- InputAdapter (186) + +- InputAdapter (185) + +- AQEShuffleRead (184) + +- ShuffleQueryStage (183), Statistics(X) + +- ReusedExchange (182) ++- == Initial Plan == + TakeOrderedAndProject (335) + +- HashAggregate (334) + +- Exchange (333) + +- HashAggregate (332) + +- Expand (331) + +- Union (330) + :- Project (253) + : +- SortMergeJoin LeftOuter (252) + : :- Sort (229) + : : +- HashAggregate (228) + : : +- HashAggregate (227) + : : +- Project (226) + : : +- SortMergeJoin Inner (225) + : : :- Sort (220) + : : : +- Exchange (219) + : : : +- Project (218) + : : : +- SortMergeJoin Inner (217) + : : : :- Sort (211) + : : : : +- Exchange (210) + : : : : +- Filter (209) + : : : : +- Scan parquet (208) + : : : +- Sort (216) + : : : +- Exchange (215) + : : : +- Project (214) + : : : +- Filter (213) + : : : +- Scan parquet (212) + : : +- Sort (224) + : : +- Exchange (223) + : : +- Filter (222) + : : +- Scan parquet (221) + : +- Sort (251) + : +- HashAggregate (250) + : +- HashAggregate (249) + : +- Project (248) + : +- SortMergeJoin Inner (247) + : :- Sort (242) + : : +- Exchange (241) + : : +- Project (240) + : : +- SortMergeJoin Inner (239) + : : :- Sort (233) + : : : +- Exchange (232) + : : : +- Filter (231) + : : : +- Scan parquet (230) + : : +- Sort (238) + : : +- Exchange (237) + : : +- Project (236) + : : +- Filter (235) + : : +- Scan parquet (234) + : +- Sort (246) + : +- Exchange (245) + : +- Filter (244) + : +- Scan parquet (243) + :- Project (283) + : +- CartesianProduct Inner (282) + : :- HashAggregate (267) + : : +- Exchange (266) + : : +- HashAggregate (265) + : : +- Project (264) + : : +- SortMergeJoin Inner (263) + : : :- Sort (257) + : : : +- Exchange (256) + : : : +- Filter (255) + : : : +- Scan parquet (254) + : : +- Sort (262) + : : +- Exchange (261) + : : +- Project (260) + : : +- Filter (259) + : : +- Scan parquet (258) + : +- HashAggregate (281) + : +- Exchange (280) + : +- HashAggregate (279) + : +- Project (278) + : +- SortMergeJoin Inner (277) + : :- Sort (271) + : : +- Exchange (270) + : : +- Filter (269) + : : +- Scan parquet (268) + : +- Sort (276) + : +- Exchange (275) + : +- Project (274) + : +- Filter (273) + : +- Scan parquet (272) + +- Project (329) + +- SortMergeJoin LeftOuter (328) + :- Sort (305) + : +- HashAggregate (304) + : +- HashAggregate (303) + : +- Project (302) + : +- SortMergeJoin Inner (301) + : :- Sort (296) + : : +- Exchange (295) + : : +- Project (294) + : : +- SortMergeJoin Inner (293) + : : :- Sort (287) + : : : +- Exchange (286) + : : : +- Filter (285) + : : : +- Scan parquet (284) + : : +- Sort (292) + : : +- Exchange (291) + : : +- Project (290) + : : +- Filter (289) + : : +- Scan parquet (288) + : +- Sort (300) + : +- Exchange (299) + : +- Filter (298) + : +- Scan parquet (297) + +- Sort (327) + +- HashAggregate (326) + +- HashAggregate (325) + +- Project (324) + +- SortMergeJoin Inner (323) + :- Sort (318) + : +- Exchange (317) + : +- Project (316) + : +- SortMergeJoin Inner (315) + : :- Sort (309) + : : +- Exchange (308) + : : +- Filter (307) + : : +- Scan parquet (306) + : +- Sort (314) + : +- Exchange (313) + : +- Project (312) + : +- Filter (311) + : +- Scan parquet (310) + +- Sort (322) + +- Exchange (321) + +- Filter (320) + +- Scan parquet (319) + + +(208) Scan parquet +Output [4]: [ss_sold_date_sk#1, ss_store_sk#2, ss_ext_sales_price#3, ss_net_profit#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [4]: [ss_sold_date_sk#1, ss_store_sk#2, ss_ext_sales_price#3, ss_net_profit#4] +Arguments: [#1, #2, #3, #4] + +(3) NativeFilter +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Condition : (isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_store_sk#2)) + +(4) NativeShuffleExchange +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: X + +(6) AQEShuffleRead +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: coalesced + +(7) InputAdapter +Input [4]: [#1#1, #2#2, #3#3, #4#4] + +(8) NativeSort +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(212) Scan parquet +Output [2]: [d_date_sk#5, d_date#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,2000-08-03), LessThanOrEqual(d_date,2000-09-02), IsNotNull(d_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [d_date_sk#5, d_date#6] +Arguments: [#5, #6] + +(11) NativeFilter +Input [2]: [#5#5, #6#6] +Condition : (((isnotnull(d_date#6) AND (d_date#6 >= 2000-08-03)) AND (d_date#6 <= 2000-09-02)) AND isnotnull(d_date_sk#5)) + +(12) NativeProject +Output [1]: [d_date_sk#5] +Input [2]: [#5#5, #6#6] + +(13) NativeShuffleExchange +Input [1]: [d_date_sk#5] +Arguments: hashpartitioning(d_date_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [1]: [d_date_sk#5] +Arguments: X + +(15) AQEShuffleRead +Input [1]: [d_date_sk#5] +Arguments: coalesced + +(16) InputAdapter +Input [1]: [d_date_sk#5] + +(17) NativeSort +Input [1]: [d_date_sk#5] +Arguments: [d_date_sk#5 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#5] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [3]: [ss_store_sk#2, ss_ext_sales_price#3, ss_net_profit#4] +Input [5]: [#1#1, #2#2, #3#3, #4#4, d_date_sk#5] + +(20) NativeShuffleExchange +Input [3]: [ss_store_sk#2, ss_ext_sales_price#3, ss_net_profit#4] +Arguments: hashpartitioning(ss_store_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [3]: [ss_store_sk#2, ss_ext_sales_price#3, ss_net_profit#4] +Arguments: X + +(22) AQEShuffleRead +Input [3]: [ss_store_sk#2, ss_ext_sales_price#3, ss_net_profit#4] +Arguments: coalesced + +(23) InputAdapter +Input [3]: [ss_store_sk#2, ss_ext_sales_price#3, ss_net_profit#4] + +(24) NativeSort +Input [3]: [ss_store_sk#2, ss_ext_sales_price#3, ss_net_profit#4] +Arguments: [ss_store_sk#2 ASC NULLS FIRST], false + +(221) Scan parquet +Output [1]: [s_store_sk#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [1]: [s_store_sk#7] +Arguments: [#7] + +(27) NativeFilter +Input [1]: [#7#7] +Condition : isnotnull(s_store_sk#7) + +(28) NativeShuffleExchange +Input [1]: [#7#7] +Arguments: hashpartitioning(s_store_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(29) ShuffleQueryStage +Output [1]: [#7#7] +Arguments: X + +(30) AQEShuffleRead +Input [1]: [#7#7] +Arguments: coalesced + +(31) InputAdapter +Input [1]: [#7#7] + +(32) NativeSort +Input [1]: [#7#7] +Arguments: [s_store_sk#7 ASC NULLS FIRST], false + +(33) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#2] +Right keys [1]: [s_store_sk#7] +Join type: Inner +Join condition: None + +(34) NativeProject +Output [3]: [ss_ext_sales_price#3, ss_net_profit#4, s_store_sk#7] +Input [4]: [ss_store_sk#2, ss_ext_sales_price#3, ss_net_profit#4, #7#7] + +(35) NativeProject +Output [3]: [s_store_sk#7 AS s_store_sk#7, UnscaledValue(ss_ext_sales_price#3) AS _c1#8, UnscaledValue(ss_net_profit#4) AS _c2#9] +Input [3]: [ss_ext_sales_price#3, ss_net_profit#4, s_store_sk#7] + +(36) NativeHashAggregate +Input [3]: [s_store_sk#7, _c1#8, _c2#9] +Keys [1]: [s_store_sk#7] +Functions [2]: [partial_sum(_c1#8), partial_sum(_c2#9)] +Aggregate Attributes [2]: [sum#10, sum#11] +Results [2]: [s_store_sk#7, #12#12] + +(37) NativeHashAggregate +Input [2]: [s_store_sk#7, #12#12] +Keys [1]: [s_store_sk#7] +Functions [2]: [sum(UnscaledValue(ss_ext_sales_price#3)), sum(UnscaledValue(ss_net_profit#4))] +Aggregate Attributes [2]: [sum(UnscaledValue(ss_ext_sales_price#3))#13, sum(UnscaledValue(ss_net_profit#4))#14] +Results [3]: [s_store_sk#7, sum(UnscaledValue(ss_ext_sales_price#3))#13, sum(UnscaledValue(ss_net_profit#4))#14] + +(38) NativeProject +Output [3]: [s_store_sk#7, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#3))#13,17,2) AS sales#15, MakeDecimal(sum(UnscaledValue(ss_net_profit#4))#14,17,2) AS profit#16] +Input [3]: [s_store_sk#7, sum(UnscaledValue(ss_ext_sales_price#3))#13, sum(UnscaledValue(ss_net_profit#4))#14] + +(39) NativeSort +Input [3]: [s_store_sk#7, sales#15, profit#16] +Arguments: [s_store_sk#7 ASC NULLS FIRST], false + +(230) Scan parquet +Output [4]: [sr_returned_date_sk#17, sr_store_sk#18, sr_return_amt#19, sr_net_loss#20] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_returned_date_sk), IsNotNull(sr_store_sk)] +ReadSchema: struct + +(41) InputAdapter +Input [4]: [sr_returned_date_sk#17, sr_store_sk#18, sr_return_amt#19, sr_net_loss#20] +Arguments: [#17, #18, #19, #20] + +(42) NativeFilter +Input [4]: [#17#17, #18#18, #19#19, #20#20] +Condition : (isnotnull(sr_returned_date_sk#17) AND isnotnull(sr_store_sk#18)) + +(43) NativeShuffleExchange +Input [4]: [#17#17, #18#18, #19#19, #20#20] +Arguments: hashpartitioning(sr_returned_date_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(44) ShuffleQueryStage +Output [4]: [#17#17, #18#18, #19#19, #20#20] +Arguments: X + +(45) AQEShuffleRead +Input [4]: [#17#17, #18#18, #19#19, #20#20] +Arguments: coalesced + +(46) InputAdapter +Input [4]: [#17#17, #18#18, #19#19, #20#20] + +(47) NativeSort +Input [4]: [#17#17, #18#18, #19#19, #20#20] +Arguments: [sr_returned_date_sk#17 ASC NULLS FIRST], false + +(48) ReusedExchange [Reuses operator id: 13] +Output [1]: [d_date_sk#21] + +(49) ShuffleQueryStage +Output [1]: [d_date_sk#21] +Arguments: X + +(50) AQEShuffleRead +Input [1]: [d_date_sk#21] +Arguments: coalesced + +(51) InputAdapter +Input [1]: [d_date_sk#21] +Arguments: [#21] + +(52) InputAdapter +Input [1]: [#21#21] + +(53) NativeSort +Input [1]: [#21#21] +Arguments: [d_date_sk#21 ASC NULLS FIRST], false + +(54) NativeSortMergeJoin +Left keys [1]: [sr_returned_date_sk#17] +Right keys [1]: [d_date_sk#21] +Join type: Inner +Join condition: None + +(55) NativeProject +Output [3]: [sr_store_sk#18, sr_return_amt#19, sr_net_loss#20] +Input [5]: [#17#17, #18#18, #19#19, #20#20, #21#21] + +(56) NativeShuffleExchange +Input [3]: [sr_store_sk#18, sr_return_amt#19, sr_net_loss#20] +Arguments: hashpartitioning(sr_store_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(57) ShuffleQueryStage +Output [3]: [sr_store_sk#18, sr_return_amt#19, sr_net_loss#20] +Arguments: X + +(58) AQEShuffleRead +Input [3]: [sr_store_sk#18, sr_return_amt#19, sr_net_loss#20] +Arguments: coalesced + +(59) InputAdapter +Input [3]: [sr_store_sk#18, sr_return_amt#19, sr_net_loss#20] + +(60) NativeSort +Input [3]: [sr_store_sk#18, sr_return_amt#19, sr_net_loss#20] +Arguments: [sr_store_sk#18 ASC NULLS FIRST], false + +(61) ReusedExchange [Reuses operator id: 28] +Output [1]: [s_store_sk#22] + +(62) ShuffleQueryStage +Output [1]: [s_store_sk#22] +Arguments: X + +(63) AQEShuffleRead +Input [1]: [s_store_sk#22] +Arguments: coalesced + +(64) InputAdapter +Input [1]: [s_store_sk#22] +Arguments: [#22] + +(65) InputAdapter +Input [1]: [#22#22] + +(66) NativeSort +Input [1]: [#22#22] +Arguments: [s_store_sk#22 ASC NULLS FIRST], false + +(67) NativeSortMergeJoin +Left keys [1]: [sr_store_sk#18] +Right keys [1]: [s_store_sk#22] +Join type: Inner +Join condition: None + +(68) NativeProject +Output [3]: [sr_return_amt#19, sr_net_loss#20, s_store_sk#22] +Input [4]: [sr_store_sk#18, sr_return_amt#19, sr_net_loss#20, #22#22] + +(69) NativeProject +Output [3]: [s_store_sk#22 AS s_store_sk#22, UnscaledValue(sr_return_amt#19) AS _c1#23, UnscaledValue(sr_net_loss#20) AS _c2#24] +Input [3]: [sr_return_amt#19, sr_net_loss#20, s_store_sk#22] + +(70) NativeHashAggregate +Input [3]: [s_store_sk#22, _c1#23, _c2#24] +Keys [1]: [s_store_sk#22] +Functions [2]: [partial_sum(_c1#23), partial_sum(_c2#24)] +Aggregate Attributes [2]: [sum#25, sum#26] +Results [2]: [s_store_sk#22, #12#12] + +(71) NativeHashAggregate +Input [2]: [s_store_sk#22, #12#12] +Keys [1]: [s_store_sk#22] +Functions [2]: [sum(UnscaledValue(sr_return_amt#19)), sum(UnscaledValue(sr_net_loss#20))] +Aggregate Attributes [2]: [sum(UnscaledValue(sr_return_amt#19))#27, sum(UnscaledValue(sr_net_loss#20))#28] +Results [3]: [s_store_sk#22, sum(UnscaledValue(sr_return_amt#19))#27, sum(UnscaledValue(sr_net_loss#20))#28] + +(72) NativeProject +Output [3]: [s_store_sk#22, MakeDecimal(sum(UnscaledValue(sr_return_amt#19))#27,17,2) AS returns#29, MakeDecimal(sum(UnscaledValue(sr_net_loss#20))#28,17,2) AS profit_loss#30] +Input [3]: [s_store_sk#22, sum(UnscaledValue(sr_return_amt#19))#27, sum(UnscaledValue(sr_net_loss#20))#28] + +(73) NativeSort +Input [3]: [s_store_sk#22, returns#29, profit_loss#30] +Arguments: [s_store_sk#22 ASC NULLS FIRST], false + +(74) NativeSortMergeJoin +Left keys [1]: [s_store_sk#7] +Right keys [1]: [s_store_sk#22] +Join type: LeftOuter +Join condition: None + +(75) NativeProject +Output [5]: [sales#15, coalesce(returns#29, 0.00) AS returns#31, (profit#16 - coalesce(profit_loss#30, 0.00)) AS profit#32, store channel AS channel#33, s_store_sk#7 AS id#34] +Input [6]: [s_store_sk#7, sales#15, profit#16, s_store_sk#22, returns#29, profit_loss#30] + +(254) Scan parquet +Output [4]: [cs_sold_date_sk#35, cs_call_center_sk#36, cs_ext_sales_price#37, cs_net_profit#38] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(77) InputAdapter +Input [4]: [cs_sold_date_sk#35, cs_call_center_sk#36, cs_ext_sales_price#37, cs_net_profit#38] +Arguments: [#35, #36, #37, #38] + +(78) NativeFilter +Input [4]: [#35#35, #36#36, #37#37, #38#38] +Condition : isnotnull(cs_sold_date_sk#35) + +(79) NativeShuffleExchange +Input [4]: [#35#35, #36#36, #37#37, #38#38] +Arguments: hashpartitioning(cs_sold_date_sk#35, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(80) ShuffleQueryStage +Output [4]: [#35#35, #36#36, #37#37, #38#38] +Arguments: X + +(81) AQEShuffleRead +Input [4]: [#35#35, #36#36, #37#37, #38#38] +Arguments: coalesced + +(82) InputAdapter +Input [4]: [#35#35, #36#36, #37#37, #38#38] + +(83) NativeSort +Input [4]: [#35#35, #36#36, #37#37, #38#38] +Arguments: [cs_sold_date_sk#35 ASC NULLS FIRST], false + +(84) ReusedExchange [Reuses operator id: 13] +Output [1]: [d_date_sk#39] + +(85) ShuffleQueryStage +Output [1]: [d_date_sk#39] +Arguments: X + +(86) AQEShuffleRead +Input [1]: [d_date_sk#39] +Arguments: coalesced + +(87) InputAdapter +Input [1]: [d_date_sk#39] +Arguments: [#39] + +(88) InputAdapter +Input [1]: [#39#39] + +(89) NativeSort +Input [1]: [#39#39] +Arguments: [d_date_sk#39 ASC NULLS FIRST], false + +(90) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#35] +Right keys [1]: [d_date_sk#39] +Join type: Inner +Join condition: None + +(91) NativeProject +Output [3]: [cs_call_center_sk#36, cs_ext_sales_price#37, cs_net_profit#38] +Input [5]: [#35#35, #36#36, #37#37, #38#38, #39#39] + +(92) NativeProject +Output [3]: [cs_call_center_sk#36 AS cs_call_center_sk#36, UnscaledValue(cs_ext_sales_price#37) AS _c1#40, UnscaledValue(cs_net_profit#38) AS _c2#41] +Input [3]: [cs_call_center_sk#36, cs_ext_sales_price#37, cs_net_profit#38] + +(93) NativeHashAggregate +Input [3]: [cs_call_center_sk#36, _c1#40, _c2#41] +Keys [1]: [cs_call_center_sk#36] +Functions [2]: [partial_sum(_c1#40), partial_sum(_c2#41)] +Aggregate Attributes [2]: [sum#42, sum#43] +Results [2]: [cs_call_center_sk#36, #12#12] + +(94) NativeShuffleExchange +Input [2]: [cs_call_center_sk#36, #12#12] +Arguments: hashpartitioning(cs_call_center_sk#36, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(95) ShuffleQueryStage +Output [2]: [cs_call_center_sk#36, #12#12] +Arguments: X + +(96) AQEShuffleRead +Input [2]: [cs_call_center_sk#36, #12#12] +Arguments: coalesced + +(97) InputAdapter +Input [2]: [cs_call_center_sk#36, #12#12] + +(98) NativeHashAggregate +Input [2]: [cs_call_center_sk#36, #12#12] +Keys [1]: [cs_call_center_sk#36] +Functions [2]: [sum(UnscaledValue(cs_ext_sales_price#37)), sum(UnscaledValue(cs_net_profit#38))] +Aggregate Attributes [2]: [sum(UnscaledValue(cs_ext_sales_price#37))#44, sum(UnscaledValue(cs_net_profit#38))#45] +Results [3]: [cs_call_center_sk#36, sum(UnscaledValue(cs_ext_sales_price#37))#44, sum(UnscaledValue(cs_net_profit#38))#45] + +(99) NativeProject +Output [3]: [cs_call_center_sk#36, MakeDecimal(sum(UnscaledValue(cs_ext_sales_price#37))#44,17,2) AS sales#46, MakeDecimal(sum(UnscaledValue(cs_net_profit#38))#45,17,2) AS profit#47] +Input [3]: [cs_call_center_sk#36, sum(UnscaledValue(cs_ext_sales_price#37))#44, sum(UnscaledValue(cs_net_profit#38))#45] + +(268) Scan parquet +Output [3]: [cr_returned_date_sk#48, cr_return_amount#49, cr_net_loss#50] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cr_returned_date_sk)] +ReadSchema: struct + +(101) InputAdapter +Input [3]: [cr_returned_date_sk#48, cr_return_amount#49, cr_net_loss#50] +Arguments: [#48, #49, #50] + +(102) NativeFilter +Input [3]: [#48#48, #49#49, #50#50] +Condition : isnotnull(cr_returned_date_sk#48) + +(103) NativeShuffleExchange +Input [3]: [#48#48, #49#49, #50#50] +Arguments: hashpartitioning(cr_returned_date_sk#48, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(104) ShuffleQueryStage +Output [3]: [#48#48, #49#49, #50#50] +Arguments: X + +(105) AQEShuffleRead +Input [3]: [#48#48, #49#49, #50#50] +Arguments: coalesced + +(106) InputAdapter +Input [3]: [#48#48, #49#49, #50#50] + +(107) NativeSort +Input [3]: [#48#48, #49#49, #50#50] +Arguments: [cr_returned_date_sk#48 ASC NULLS FIRST], false + +(108) ReusedExchange [Reuses operator id: 13] +Output [1]: [d_date_sk#51] + +(109) ShuffleQueryStage +Output [1]: [d_date_sk#51] +Arguments: X + +(110) AQEShuffleRead +Input [1]: [d_date_sk#51] +Arguments: coalesced + +(111) InputAdapter +Input [1]: [d_date_sk#51] +Arguments: [#51] + +(112) InputAdapter +Input [1]: [#51#51] + +(113) NativeSort +Input [1]: [#51#51] +Arguments: [d_date_sk#51 ASC NULLS FIRST], false + +(114) NativeSortMergeJoin +Left keys [1]: [cr_returned_date_sk#48] +Right keys [1]: [d_date_sk#51] +Join type: Inner +Join condition: None + +(115) NativeProject +Output [2]: [cr_return_amount#49, cr_net_loss#50] +Input [4]: [#48#48, #49#49, #50#50, #51#51] + +(116) NativeProject +Output [2]: [UnscaledValue(cr_return_amount#49) AS _c0#52, UnscaledValue(cr_net_loss#50) AS _c1#53] +Input [2]: [cr_return_amount#49, cr_net_loss#50] + +(117) NativeHashAggregate +Input [2]: [_c0#52, _c1#53] +Keys: [] +Functions [2]: [partial_sum(_c0#52), partial_sum(_c1#53)] +Aggregate Attributes [2]: [sum#54, sum#55] +Results [1]: [#12#12] + +(118) NativeShuffleExchange +Input [1]: [#12#12] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=10] + +(119) ShuffleQueryStage +Output [1]: [#12#12] +Arguments: X + +(120) NativeHashAggregate +Input [1]: [#12#12] +Keys: [] +Functions [2]: [sum(UnscaledValue(cr_return_amount#49)), sum(UnscaledValue(cr_net_loss#50))] +Aggregate Attributes [2]: [sum(UnscaledValue(cr_return_amount#49))#56, sum(UnscaledValue(cr_net_loss#50))#57] +Results [2]: [sum(UnscaledValue(cr_return_amount#49))#56, sum(UnscaledValue(cr_net_loss#50))#57] + +(121) NativeProject +Output [2]: [MakeDecimal(sum(UnscaledValue(cr_return_amount#49))#56,17,2) AS returns#58, MakeDecimal(sum(UnscaledValue(cr_net_loss#50))#57,17,2) AS profit_loss#59] +Input [2]: [sum(UnscaledValue(cr_return_amount#49))#56, sum(UnscaledValue(cr_net_loss#50))#57] + +(122) CartesianProduct +Join type: Inner +Join condition: None + +(123) Project [codegen id : 1] +Output [5]: [sales#46, returns#58, (profit#47 - profit_loss#59) AS profit#60, catalog channel AS channel#61, cs_call_center_sk#36 AS id#62] +Input [5]: [cs_call_center_sk#36, sales#46, profit#47, returns#58, profit_loss#59] + +(124) ConvertToNative +Input [5]: [sales#46, returns#58, profit#60, channel#61, id#62] + +(284) Scan parquet +Output [4]: [ws_sold_date_sk#63, ws_web_page_sk#64, ws_ext_sales_price#65, ws_net_profit#66] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_web_page_sk)] +ReadSchema: struct + +(126) InputAdapter +Input [4]: [ws_sold_date_sk#63, ws_web_page_sk#64, ws_ext_sales_price#65, ws_net_profit#66] +Arguments: [#63, #64, #65, #66] + +(127) NativeFilter +Input [4]: [#63#63, #64#64, #65#65, #66#66] +Condition : (isnotnull(ws_sold_date_sk#63) AND isnotnull(ws_web_page_sk#64)) + +(128) NativeShuffleExchange +Input [4]: [#63#63, #64#64, #65#65, #66#66] +Arguments: hashpartitioning(ws_sold_date_sk#63, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(129) ShuffleQueryStage +Output [4]: [#63#63, #64#64, #65#65, #66#66] +Arguments: X + +(130) AQEShuffleRead +Input [4]: [#63#63, #64#64, #65#65, #66#66] +Arguments: coalesced + +(131) InputAdapter +Input [4]: [#63#63, #64#64, #65#65, #66#66] + +(132) NativeSort +Input [4]: [#63#63, #64#64, #65#65, #66#66] +Arguments: [ws_sold_date_sk#63 ASC NULLS FIRST], false + +(133) ReusedExchange [Reuses operator id: 13] +Output [1]: [d_date_sk#67] + +(134) ShuffleQueryStage +Output [1]: [d_date_sk#67] +Arguments: X + +(135) AQEShuffleRead +Input [1]: [d_date_sk#67] +Arguments: coalesced + +(136) InputAdapter +Input [1]: [d_date_sk#67] +Arguments: [#67] + +(137) InputAdapter +Input [1]: [#67#67] + +(138) NativeSort +Input [1]: [#67#67] +Arguments: [d_date_sk#67 ASC NULLS FIRST], false + +(139) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#63] +Right keys [1]: [d_date_sk#67] +Join type: Inner +Join condition: None + +(140) NativeProject +Output [3]: [ws_web_page_sk#64, ws_ext_sales_price#65, ws_net_profit#66] +Input [5]: [#63#63, #64#64, #65#65, #66#66, #67#67] + +(141) NativeShuffleExchange +Input [3]: [ws_web_page_sk#64, ws_ext_sales_price#65, ws_net_profit#66] +Arguments: hashpartitioning(ws_web_page_sk#64, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(142) ShuffleQueryStage +Output [3]: [ws_web_page_sk#64, ws_ext_sales_price#65, ws_net_profit#66] +Arguments: X + +(143) AQEShuffleRead +Input [3]: [ws_web_page_sk#64, ws_ext_sales_price#65, ws_net_profit#66] +Arguments: coalesced + +(144) InputAdapter +Input [3]: [ws_web_page_sk#64, ws_ext_sales_price#65, ws_net_profit#66] + +(145) NativeSort +Input [3]: [ws_web_page_sk#64, ws_ext_sales_price#65, ws_net_profit#66] +Arguments: [ws_web_page_sk#64 ASC NULLS FIRST], false + +(297) Scan parquet +Output [1]: [wp_web_page_sk#68] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wp_web_page_sk)] +ReadSchema: struct + +(147) InputAdapter +Input [1]: [wp_web_page_sk#68] +Arguments: [#68] + +(148) NativeFilter +Input [1]: [#68#68] +Condition : isnotnull(wp_web_page_sk#68) + +(149) NativeShuffleExchange +Input [1]: [#68#68] +Arguments: hashpartitioning(wp_web_page_sk#68, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(150) ShuffleQueryStage +Output [1]: [#68#68] +Arguments: X + +(151) AQEShuffleRead +Input [1]: [#68#68] +Arguments: coalesced + +(152) InputAdapter +Input [1]: [#68#68] + +(153) NativeSort +Input [1]: [#68#68] +Arguments: [wp_web_page_sk#68 ASC NULLS FIRST], false + +(154) NativeSortMergeJoin +Left keys [1]: [ws_web_page_sk#64] +Right keys [1]: [wp_web_page_sk#68] +Join type: Inner +Join condition: None + +(155) NativeProject +Output [3]: [ws_ext_sales_price#65, ws_net_profit#66, wp_web_page_sk#68] +Input [4]: [ws_web_page_sk#64, ws_ext_sales_price#65, ws_net_profit#66, #68#68] + +(156) NativeProject +Output [3]: [wp_web_page_sk#68 AS wp_web_page_sk#68, UnscaledValue(ws_ext_sales_price#65) AS _c1#69, UnscaledValue(ws_net_profit#66) AS _c2#70] +Input [3]: [ws_ext_sales_price#65, ws_net_profit#66, wp_web_page_sk#68] + +(157) NativeHashAggregate +Input [3]: [wp_web_page_sk#68, _c1#69, _c2#70] +Keys [1]: [wp_web_page_sk#68] +Functions [2]: [partial_sum(_c1#69), partial_sum(_c2#70)] +Aggregate Attributes [2]: [sum#71, sum#72] +Results [2]: [wp_web_page_sk#68, #12#12] + +(158) NativeHashAggregate +Input [2]: [wp_web_page_sk#68, #12#12] +Keys [1]: [wp_web_page_sk#68] +Functions [2]: [sum(UnscaledValue(ws_ext_sales_price#65)), sum(UnscaledValue(ws_net_profit#66))] +Aggregate Attributes [2]: [sum(UnscaledValue(ws_ext_sales_price#65))#73, sum(UnscaledValue(ws_net_profit#66))#74] +Results [3]: [wp_web_page_sk#68, sum(UnscaledValue(ws_ext_sales_price#65))#73, sum(UnscaledValue(ws_net_profit#66))#74] + +(159) NativeProject +Output [3]: [wp_web_page_sk#68, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#65))#73,17,2) AS sales#75, MakeDecimal(sum(UnscaledValue(ws_net_profit#66))#74,17,2) AS profit#76] +Input [3]: [wp_web_page_sk#68, sum(UnscaledValue(ws_ext_sales_price#65))#73, sum(UnscaledValue(ws_net_profit#66))#74] + +(160) NativeSort +Input [3]: [wp_web_page_sk#68, sales#75, profit#76] +Arguments: [wp_web_page_sk#68 ASC NULLS FIRST], false + +(306) Scan parquet +Output [4]: [wr_returned_date_sk#77, wr_web_page_sk#78, wr_return_amt#79, wr_net_loss#80] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wr_returned_date_sk), IsNotNull(wr_web_page_sk)] +ReadSchema: struct + +(162) InputAdapter +Input [4]: [wr_returned_date_sk#77, wr_web_page_sk#78, wr_return_amt#79, wr_net_loss#80] +Arguments: [#77, #78, #79, #80] + +(163) NativeFilter +Input [4]: [#77#77, #78#78, #79#79, #80#80] +Condition : (isnotnull(wr_returned_date_sk#77) AND isnotnull(wr_web_page_sk#78)) + +(164) NativeShuffleExchange +Input [4]: [#77#77, #78#78, #79#79, #80#80] +Arguments: hashpartitioning(wr_returned_date_sk#77, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(165) ShuffleQueryStage +Output [4]: [#77#77, #78#78, #79#79, #80#80] +Arguments: X + +(166) AQEShuffleRead +Input [4]: [#77#77, #78#78, #79#79, #80#80] +Arguments: coalesced + +(167) InputAdapter +Input [4]: [#77#77, #78#78, #79#79, #80#80] + +(168) NativeSort +Input [4]: [#77#77, #78#78, #79#79, #80#80] +Arguments: [wr_returned_date_sk#77 ASC NULLS FIRST], false + +(169) ReusedExchange [Reuses operator id: 13] +Output [1]: [d_date_sk#81] + +(170) ShuffleQueryStage +Output [1]: [d_date_sk#81] +Arguments: X + +(171) AQEShuffleRead +Input [1]: [d_date_sk#81] +Arguments: coalesced + +(172) InputAdapter +Input [1]: [d_date_sk#81] +Arguments: [#81] + +(173) InputAdapter +Input [1]: [#81#81] + +(174) NativeSort +Input [1]: [#81#81] +Arguments: [d_date_sk#81 ASC NULLS FIRST], false + +(175) NativeSortMergeJoin +Left keys [1]: [wr_returned_date_sk#77] +Right keys [1]: [d_date_sk#81] +Join type: Inner +Join condition: None + +(176) NativeProject +Output [3]: [wr_web_page_sk#78, wr_return_amt#79, wr_net_loss#80] +Input [5]: [#77#77, #78#78, #79#79, #80#80, #81#81] + +(177) NativeShuffleExchange +Input [3]: [wr_web_page_sk#78, wr_return_amt#79, wr_net_loss#80] +Arguments: hashpartitioning(wr_web_page_sk#78, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(178) ShuffleQueryStage +Output [3]: [wr_web_page_sk#78, wr_return_amt#79, wr_net_loss#80] +Arguments: X + +(179) AQEShuffleRead +Input [3]: [wr_web_page_sk#78, wr_return_amt#79, wr_net_loss#80] +Arguments: coalesced + +(180) InputAdapter +Input [3]: [wr_web_page_sk#78, wr_return_amt#79, wr_net_loss#80] + +(181) NativeSort +Input [3]: [wr_web_page_sk#78, wr_return_amt#79, wr_net_loss#80] +Arguments: [wr_web_page_sk#78 ASC NULLS FIRST], false + +(182) ReusedExchange [Reuses operator id: 149] +Output [1]: [wp_web_page_sk#82] + +(183) ShuffleQueryStage +Output [1]: [wp_web_page_sk#82] +Arguments: X + +(184) AQEShuffleRead +Input [1]: [wp_web_page_sk#82] +Arguments: coalesced + +(185) InputAdapter +Input [1]: [wp_web_page_sk#82] +Arguments: [#82] + +(186) InputAdapter +Input [1]: [#82#82] + +(187) NativeSort +Input [1]: [#82#82] +Arguments: [wp_web_page_sk#82 ASC NULLS FIRST], false + +(188) NativeSortMergeJoin +Left keys [1]: [wr_web_page_sk#78] +Right keys [1]: [wp_web_page_sk#82] +Join type: Inner +Join condition: None + +(189) NativeProject +Output [3]: [wr_return_amt#79, wr_net_loss#80, wp_web_page_sk#82] +Input [4]: [wr_web_page_sk#78, wr_return_amt#79, wr_net_loss#80, #82#82] + +(190) NativeProject +Output [3]: [wp_web_page_sk#82 AS wp_web_page_sk#82, UnscaledValue(wr_return_amt#79) AS _c1#83, UnscaledValue(wr_net_loss#80) AS _c2#84] +Input [3]: [wr_return_amt#79, wr_net_loss#80, wp_web_page_sk#82] + +(191) NativeHashAggregate +Input [3]: [wp_web_page_sk#82, _c1#83, _c2#84] +Keys [1]: [wp_web_page_sk#82] +Functions [2]: [partial_sum(_c1#83), partial_sum(_c2#84)] +Aggregate Attributes [2]: [sum#85, sum#86] +Results [2]: [wp_web_page_sk#82, #12#12] + +(192) NativeHashAggregate +Input [2]: [wp_web_page_sk#82, #12#12] +Keys [1]: [wp_web_page_sk#82] +Functions [2]: [sum(UnscaledValue(wr_return_amt#79)), sum(UnscaledValue(wr_net_loss#80))] +Aggregate Attributes [2]: [sum(UnscaledValue(wr_return_amt#79))#87, sum(UnscaledValue(wr_net_loss#80))#88] +Results [3]: [wp_web_page_sk#82, sum(UnscaledValue(wr_return_amt#79))#87, sum(UnscaledValue(wr_net_loss#80))#88] + +(193) NativeProject +Output [3]: [wp_web_page_sk#82, MakeDecimal(sum(UnscaledValue(wr_return_amt#79))#87,17,2) AS returns#89, MakeDecimal(sum(UnscaledValue(wr_net_loss#80))#88,17,2) AS profit_loss#90] +Input [3]: [wp_web_page_sk#82, sum(UnscaledValue(wr_return_amt#79))#87, sum(UnscaledValue(wr_net_loss#80))#88] + +(194) NativeSort +Input [3]: [wp_web_page_sk#82, returns#89, profit_loss#90] +Arguments: [wp_web_page_sk#82 ASC NULLS FIRST], false + +(195) NativeSortMergeJoin +Left keys [1]: [wp_web_page_sk#68] +Right keys [1]: [wp_web_page_sk#82] +Join type: LeftOuter +Join condition: None + +(196) NativeProject +Output [5]: [sales#75, coalesce(returns#89, 0.00) AS returns#91, (profit#76 - coalesce(profit_loss#90, 0.00)) AS profit#92, web channel AS channel#93, wp_web_page_sk#68 AS id#94] +Input [6]: [wp_web_page_sk#68, sales#75, profit#76, wp_web_page_sk#82, returns#89, profit_loss#90] + +(197) NativeUnion +Arguments: [sales#15, returns#31, profit#32, channel#33, id#34] + +(198) InputAdapter +Input [5]: [sales#15, returns#31, profit#32, channel#33, id#34] +Arguments: [#15, #31, #32, #33, #34] + +(199) NativeExpand +Input [5]: [#15#15, #31#31, #32#32, #33#33, #34#34] +Arguments: [[sales#15, returns#31, profit#32, channel#33, id#34, 0], [sales#15, returns#31, profit#32, channel#33, null, 1], [sales#15, returns#31, profit#32, null, null, 3]], [sales#15, returns#31, profit#32, channel#95, id#96, spark_grouping_id#97] + +(200) NativeHashAggregate +Input [6]: [sales#15, returns#31, profit#32, channel#95, id#96, spark_grouping_id#97] +Keys [3]: [channel#95, id#96, spark_grouping_id#97] +Functions [3]: [partial_sum(sales#15), partial_sum(returns#31), partial_sum(profit#32)] +Aggregate Attributes [6]: [sum#98, isEmpty#99, sum#100, isEmpty#101, sum#102, isEmpty#103] +Results [4]: [channel#95, id#96, spark_grouping_id#97, #12#12] + +(201) NativeShuffleExchange +Input [4]: [channel#95, id#96, spark_grouping_id#97, #12#12] +Arguments: hashpartitioning(channel#95, id#96, spark_grouping_id#97, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(202) ShuffleQueryStage +Output [4]: [channel#95, id#96, spark_grouping_id#97, #12#12] +Arguments: X + +(203) AQEShuffleRead +Input [4]: [channel#95, id#96, spark_grouping_id#97, #12#12] +Arguments: coalesced + +(204) InputAdapter +Input [4]: [channel#95, id#96, spark_grouping_id#97, #12#12] + +(205) NativeHashAggregate +Input [4]: [channel#95, id#96, spark_grouping_id#97, #12#12] +Keys [3]: [channel#95, id#96, spark_grouping_id#97] +Functions [3]: [sum(sales#15), sum(returns#31), sum(profit#32)] +Aggregate Attributes [3]: [sum(sales#15)#104, sum(returns#31)#105, sum(profit#32)#106] +Results [6]: [channel#95, id#96, spark_grouping_id#97, sum(sales#15)#104, sum(returns#31)#105, sum(profit#32)#106] + +(206) NativeProject +Output [5]: [channel#95, id#96, sum(sales#15)#104 AS sales#107, sum(returns#31)#105 AS returns#108, sum(profit#32)#106 AS profit#109] +Input [6]: [channel#95, id#96, spark_grouping_id#97, sum(sales#15)#104, sum(returns#31)#105, sum(profit#32)#106] + +(207) NativeTakeOrdered +Input [5]: [channel#95, id#96, sales#107, returns#108, profit#109] +Arguments: X, [channel#95 ASC NULLS FIRST, id#96 ASC NULLS FIRST, sales#107 ASC NULLS FIRST] + +(208) Scan parquet +Output [4]: [ss_sold_date_sk#1, ss_store_sk#2, ss_ext_sales_price#3, ss_net_profit#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(209) Filter +Input [4]: [ss_sold_date_sk#1, ss_store_sk#2, ss_ext_sales_price#3, ss_net_profit#4] +Condition : (isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_store_sk#2)) + +(210) Exchange +Input [4]: [ss_sold_date_sk#1, ss_store_sk#2, ss_ext_sales_price#3, ss_net_profit#4] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(211) Sort +Input [4]: [ss_sold_date_sk#1, ss_store_sk#2, ss_ext_sales_price#3, ss_net_profit#4] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(212) Scan parquet +Output [2]: [d_date_sk#5, d_date#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,2000-08-03), LessThanOrEqual(d_date,2000-09-02), IsNotNull(d_date_sk)] +ReadSchema: struct + +(213) Filter +Input [2]: [d_date_sk#5, d_date#6] +Condition : (((isnotnull(d_date#6) AND (d_date#6 >= 2000-08-03)) AND (d_date#6 <= 2000-09-02)) AND isnotnull(d_date_sk#5)) + +(214) Project +Output [1]: [d_date_sk#5] +Input [2]: [d_date_sk#5, d_date#6] + +(215) Exchange +Input [1]: [d_date_sk#5] +Arguments: hashpartitioning(d_date_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(216) Sort +Input [1]: [d_date_sk#5] +Arguments: [d_date_sk#5 ASC NULLS FIRST], false, 0 + +(217) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#5] +Join type: Inner +Join condition: None + +(218) Project +Output [3]: [ss_store_sk#2, ss_ext_sales_price#3, ss_net_profit#4] +Input [5]: [ss_sold_date_sk#1, ss_store_sk#2, ss_ext_sales_price#3, ss_net_profit#4, d_date_sk#5] + +(219) Exchange +Input [3]: [ss_store_sk#2, ss_ext_sales_price#3, ss_net_profit#4] +Arguments: hashpartitioning(ss_store_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(220) Sort +Input [3]: [ss_store_sk#2, ss_ext_sales_price#3, ss_net_profit#4] +Arguments: [ss_store_sk#2 ASC NULLS FIRST], false, 0 + +(221) Scan parquet +Output [1]: [s_store_sk#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(222) Filter +Input [1]: [s_store_sk#7] +Condition : isnotnull(s_store_sk#7) + +(223) Exchange +Input [1]: [s_store_sk#7] +Arguments: hashpartitioning(s_store_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(224) Sort +Input [1]: [s_store_sk#7] +Arguments: [s_store_sk#7 ASC NULLS FIRST], false, 0 + +(225) SortMergeJoin +Left keys [1]: [ss_store_sk#2] +Right keys [1]: [s_store_sk#7] +Join type: Inner +Join condition: None + +(226) Project +Output [3]: [ss_ext_sales_price#3, ss_net_profit#4, s_store_sk#7] +Input [4]: [ss_store_sk#2, ss_ext_sales_price#3, ss_net_profit#4, s_store_sk#7] + +(227) HashAggregate +Input [3]: [ss_ext_sales_price#3, ss_net_profit#4, s_store_sk#7] +Keys [1]: [s_store_sk#7] +Functions [2]: [partial_sum(UnscaledValue(ss_ext_sales_price#3)), partial_sum(UnscaledValue(ss_net_profit#4))] +Aggregate Attributes [2]: [sum#10, sum#11] +Results [3]: [s_store_sk#7, sum#110, sum#111] + +(228) HashAggregate +Input [3]: [s_store_sk#7, sum#110, sum#111] +Keys [1]: [s_store_sk#7] +Functions [2]: [sum(UnscaledValue(ss_ext_sales_price#3)), sum(UnscaledValue(ss_net_profit#4))] +Aggregate Attributes [2]: [sum(UnscaledValue(ss_ext_sales_price#3))#13, sum(UnscaledValue(ss_net_profit#4))#14] +Results [3]: [s_store_sk#7, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#3))#13,17,2) AS sales#15, MakeDecimal(sum(UnscaledValue(ss_net_profit#4))#14,17,2) AS profit#16] + +(229) Sort +Input [3]: [s_store_sk#7, sales#15, profit#16] +Arguments: [s_store_sk#7 ASC NULLS FIRST], false, 0 + +(230) Scan parquet +Output [4]: [sr_returned_date_sk#17, sr_store_sk#18, sr_return_amt#19, sr_net_loss#20] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_returned_date_sk), IsNotNull(sr_store_sk)] +ReadSchema: struct + +(231) Filter +Input [4]: [sr_returned_date_sk#17, sr_store_sk#18, sr_return_amt#19, sr_net_loss#20] +Condition : (isnotnull(sr_returned_date_sk#17) AND isnotnull(sr_store_sk#18)) + +(232) Exchange +Input [4]: [sr_returned_date_sk#17, sr_store_sk#18, sr_return_amt#19, sr_net_loss#20] +Arguments: hashpartitioning(sr_returned_date_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(233) Sort +Input [4]: [sr_returned_date_sk#17, sr_store_sk#18, sr_return_amt#19, sr_net_loss#20] +Arguments: [sr_returned_date_sk#17 ASC NULLS FIRST], false, 0 + +(234) Scan parquet +Output [2]: [d_date_sk#21, d_date#112] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,2000-08-03), LessThanOrEqual(d_date,2000-09-02), IsNotNull(d_date_sk)] +ReadSchema: struct + +(235) Filter +Input [2]: [d_date_sk#21, d_date#112] +Condition : (((isnotnull(d_date#112) AND (d_date#112 >= 2000-08-03)) AND (d_date#112 <= 2000-09-02)) AND isnotnull(d_date_sk#21)) + +(236) Project +Output [1]: [d_date_sk#21] +Input [2]: [d_date_sk#21, d_date#112] + +(237) Exchange +Input [1]: [d_date_sk#21] +Arguments: hashpartitioning(d_date_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(238) Sort +Input [1]: [d_date_sk#21] +Arguments: [d_date_sk#21 ASC NULLS FIRST], false, 0 + +(239) SortMergeJoin +Left keys [1]: [sr_returned_date_sk#17] +Right keys [1]: [d_date_sk#21] +Join type: Inner +Join condition: None + +(240) Project +Output [3]: [sr_store_sk#18, sr_return_amt#19, sr_net_loss#20] +Input [5]: [sr_returned_date_sk#17, sr_store_sk#18, sr_return_amt#19, sr_net_loss#20, d_date_sk#21] + +(241) Exchange +Input [3]: [sr_store_sk#18, sr_return_amt#19, sr_net_loss#20] +Arguments: hashpartitioning(sr_store_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(242) Sort +Input [3]: [sr_store_sk#18, sr_return_amt#19, sr_net_loss#20] +Arguments: [sr_store_sk#18 ASC NULLS FIRST], false, 0 + +(243) Scan parquet +Output [1]: [s_store_sk#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(244) Filter +Input [1]: [s_store_sk#22] +Condition : isnotnull(s_store_sk#22) + +(245) Exchange +Input [1]: [s_store_sk#22] +Arguments: hashpartitioning(s_store_sk#22, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(246) Sort +Input [1]: [s_store_sk#22] +Arguments: [s_store_sk#22 ASC NULLS FIRST], false, 0 + +(247) SortMergeJoin +Left keys [1]: [sr_store_sk#18] +Right keys [1]: [s_store_sk#22] +Join type: Inner +Join condition: None + +(248) Project +Output [3]: [sr_return_amt#19, sr_net_loss#20, s_store_sk#22] +Input [4]: [sr_store_sk#18, sr_return_amt#19, sr_net_loss#20, s_store_sk#22] + +(249) HashAggregate +Input [3]: [sr_return_amt#19, sr_net_loss#20, s_store_sk#22] +Keys [1]: [s_store_sk#22] +Functions [2]: [partial_sum(UnscaledValue(sr_return_amt#19)), partial_sum(UnscaledValue(sr_net_loss#20))] +Aggregate Attributes [2]: [sum#25, sum#26] +Results [3]: [s_store_sk#22, sum#113, sum#114] + +(250) HashAggregate +Input [3]: [s_store_sk#22, sum#113, sum#114] +Keys [1]: [s_store_sk#22] +Functions [2]: [sum(UnscaledValue(sr_return_amt#19)), sum(UnscaledValue(sr_net_loss#20))] +Aggregate Attributes [2]: [sum(UnscaledValue(sr_return_amt#19))#27, sum(UnscaledValue(sr_net_loss#20))#28] +Results [3]: [s_store_sk#22, MakeDecimal(sum(UnscaledValue(sr_return_amt#19))#27,17,2) AS returns#29, MakeDecimal(sum(UnscaledValue(sr_net_loss#20))#28,17,2) AS profit_loss#30] + +(251) Sort +Input [3]: [s_store_sk#22, returns#29, profit_loss#30] +Arguments: [s_store_sk#22 ASC NULLS FIRST], false, 0 + +(252) SortMergeJoin +Left keys [1]: [s_store_sk#7] +Right keys [1]: [s_store_sk#22] +Join type: LeftOuter +Join condition: None + +(253) Project +Output [5]: [sales#15, coalesce(returns#29, 0.00) AS returns#31, (profit#16 - coalesce(profit_loss#30, 0.00)) AS profit#32, store channel AS channel#33, s_store_sk#7 AS id#34] +Input [6]: [s_store_sk#7, sales#15, profit#16, s_store_sk#22, returns#29, profit_loss#30] + +(254) Scan parquet +Output [4]: [cs_sold_date_sk#35, cs_call_center_sk#36, cs_ext_sales_price#37, cs_net_profit#38] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(255) Filter +Input [4]: [cs_sold_date_sk#35, cs_call_center_sk#36, cs_ext_sales_price#37, cs_net_profit#38] +Condition : isnotnull(cs_sold_date_sk#35) + +(256) Exchange +Input [4]: [cs_sold_date_sk#35, cs_call_center_sk#36, cs_ext_sales_price#37, cs_net_profit#38] +Arguments: hashpartitioning(cs_sold_date_sk#35, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(257) Sort +Input [4]: [cs_sold_date_sk#35, cs_call_center_sk#36, cs_ext_sales_price#37, cs_net_profit#38] +Arguments: [cs_sold_date_sk#35 ASC NULLS FIRST], false, 0 + +(258) Scan parquet +Output [2]: [d_date_sk#39, d_date#115] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,2000-08-03), LessThanOrEqual(d_date,2000-09-02), IsNotNull(d_date_sk)] +ReadSchema: struct + +(259) Filter +Input [2]: [d_date_sk#39, d_date#115] +Condition : (((isnotnull(d_date#115) AND (d_date#115 >= 2000-08-03)) AND (d_date#115 <= 2000-09-02)) AND isnotnull(d_date_sk#39)) + +(260) Project +Output [1]: [d_date_sk#39] +Input [2]: [d_date_sk#39, d_date#115] + +(261) Exchange +Input [1]: [d_date_sk#39] +Arguments: hashpartitioning(d_date_sk#39, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(262) Sort +Input [1]: [d_date_sk#39] +Arguments: [d_date_sk#39 ASC NULLS FIRST], false, 0 + +(263) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#35] +Right keys [1]: [d_date_sk#39] +Join type: Inner +Join condition: None + +(264) Project +Output [3]: [cs_call_center_sk#36, cs_ext_sales_price#37, cs_net_profit#38] +Input [5]: [cs_sold_date_sk#35, cs_call_center_sk#36, cs_ext_sales_price#37, cs_net_profit#38, d_date_sk#39] + +(265) HashAggregate +Input [3]: [cs_call_center_sk#36, cs_ext_sales_price#37, cs_net_profit#38] +Keys [1]: [cs_call_center_sk#36] +Functions [2]: [partial_sum(UnscaledValue(cs_ext_sales_price#37)), partial_sum(UnscaledValue(cs_net_profit#38))] +Aggregate Attributes [2]: [sum#42, sum#43] +Results [3]: [cs_call_center_sk#36, sum#116, sum#117] + +(266) Exchange +Input [3]: [cs_call_center_sk#36, sum#116, sum#117] +Arguments: hashpartitioning(cs_call_center_sk#36, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(267) HashAggregate +Input [3]: [cs_call_center_sk#36, sum#116, sum#117] +Keys [1]: [cs_call_center_sk#36] +Functions [2]: [sum(UnscaledValue(cs_ext_sales_price#37)), sum(UnscaledValue(cs_net_profit#38))] +Aggregate Attributes [2]: [sum(UnscaledValue(cs_ext_sales_price#37))#44, sum(UnscaledValue(cs_net_profit#38))#45] +Results [3]: [cs_call_center_sk#36, MakeDecimal(sum(UnscaledValue(cs_ext_sales_price#37))#44,17,2) AS sales#46, MakeDecimal(sum(UnscaledValue(cs_net_profit#38))#45,17,2) AS profit#47] + +(268) Scan parquet +Output [3]: [cr_returned_date_sk#48, cr_return_amount#49, cr_net_loss#50] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cr_returned_date_sk)] +ReadSchema: struct + +(269) Filter +Input [3]: [cr_returned_date_sk#48, cr_return_amount#49, cr_net_loss#50] +Condition : isnotnull(cr_returned_date_sk#48) + +(270) Exchange +Input [3]: [cr_returned_date_sk#48, cr_return_amount#49, cr_net_loss#50] +Arguments: hashpartitioning(cr_returned_date_sk#48, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(271) Sort +Input [3]: [cr_returned_date_sk#48, cr_return_amount#49, cr_net_loss#50] +Arguments: [cr_returned_date_sk#48 ASC NULLS FIRST], false, 0 + +(272) Scan parquet +Output [2]: [d_date_sk#51, d_date#118] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,2000-08-03), LessThanOrEqual(d_date,2000-09-02), IsNotNull(d_date_sk)] +ReadSchema: struct + +(273) Filter +Input [2]: [d_date_sk#51, d_date#118] +Condition : (((isnotnull(d_date#118) AND (d_date#118 >= 2000-08-03)) AND (d_date#118 <= 2000-09-02)) AND isnotnull(d_date_sk#51)) + +(274) Project +Output [1]: [d_date_sk#51] +Input [2]: [d_date_sk#51, d_date#118] + +(275) Exchange +Input [1]: [d_date_sk#51] +Arguments: hashpartitioning(d_date_sk#51, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(276) Sort +Input [1]: [d_date_sk#51] +Arguments: [d_date_sk#51 ASC NULLS FIRST], false, 0 + +(277) SortMergeJoin +Left keys [1]: [cr_returned_date_sk#48] +Right keys [1]: [d_date_sk#51] +Join type: Inner +Join condition: None + +(278) Project +Output [2]: [cr_return_amount#49, cr_net_loss#50] +Input [4]: [cr_returned_date_sk#48, cr_return_amount#49, cr_net_loss#50, d_date_sk#51] + +(279) HashAggregate +Input [2]: [cr_return_amount#49, cr_net_loss#50] +Keys: [] +Functions [2]: [partial_sum(UnscaledValue(cr_return_amount#49)), partial_sum(UnscaledValue(cr_net_loss#50))] +Aggregate Attributes [2]: [sum#54, sum#55] +Results [2]: [sum#119, sum#120] + +(280) Exchange +Input [2]: [sum#119, sum#120] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=30] + +(281) HashAggregate +Input [2]: [sum#119, sum#120] +Keys: [] +Functions [2]: [sum(UnscaledValue(cr_return_amount#49)), sum(UnscaledValue(cr_net_loss#50))] +Aggregate Attributes [2]: [sum(UnscaledValue(cr_return_amount#49))#56, sum(UnscaledValue(cr_net_loss#50))#57] +Results [2]: [MakeDecimal(sum(UnscaledValue(cr_return_amount#49))#56,17,2) AS returns#58, MakeDecimal(sum(UnscaledValue(cr_net_loss#50))#57,17,2) AS profit_loss#59] + +(282) CartesianProduct +Join type: Inner +Join condition: None + +(283) Project +Output [5]: [sales#46, returns#58, (profit#47 - profit_loss#59) AS profit#60, catalog channel AS channel#61, cs_call_center_sk#36 AS id#62] +Input [5]: [cs_call_center_sk#36, sales#46, profit#47, returns#58, profit_loss#59] + +(284) Scan parquet +Output [4]: [ws_sold_date_sk#63, ws_web_page_sk#64, ws_ext_sales_price#65, ws_net_profit#66] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_web_page_sk)] +ReadSchema: struct + +(285) Filter +Input [4]: [ws_sold_date_sk#63, ws_web_page_sk#64, ws_ext_sales_price#65, ws_net_profit#66] +Condition : (isnotnull(ws_sold_date_sk#63) AND isnotnull(ws_web_page_sk#64)) + +(286) Exchange +Input [4]: [ws_sold_date_sk#63, ws_web_page_sk#64, ws_ext_sales_price#65, ws_net_profit#66] +Arguments: hashpartitioning(ws_sold_date_sk#63, 100), ENSURE_REQUIREMENTS, [plan_id=31] + +(287) Sort +Input [4]: [ws_sold_date_sk#63, ws_web_page_sk#64, ws_ext_sales_price#65, ws_net_profit#66] +Arguments: [ws_sold_date_sk#63 ASC NULLS FIRST], false, 0 + +(288) Scan parquet +Output [2]: [d_date_sk#67, d_date#121] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,2000-08-03), LessThanOrEqual(d_date,2000-09-02), IsNotNull(d_date_sk)] +ReadSchema: struct + +(289) Filter +Input [2]: [d_date_sk#67, d_date#121] +Condition : (((isnotnull(d_date#121) AND (d_date#121 >= 2000-08-03)) AND (d_date#121 <= 2000-09-02)) AND isnotnull(d_date_sk#67)) + +(290) Project +Output [1]: [d_date_sk#67] +Input [2]: [d_date_sk#67, d_date#121] + +(291) Exchange +Input [1]: [d_date_sk#67] +Arguments: hashpartitioning(d_date_sk#67, 100), ENSURE_REQUIREMENTS, [plan_id=32] + +(292) Sort +Input [1]: [d_date_sk#67] +Arguments: [d_date_sk#67 ASC NULLS FIRST], false, 0 + +(293) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#63] +Right keys [1]: [d_date_sk#67] +Join type: Inner +Join condition: None + +(294) Project +Output [3]: [ws_web_page_sk#64, ws_ext_sales_price#65, ws_net_profit#66] +Input [5]: [ws_sold_date_sk#63, ws_web_page_sk#64, ws_ext_sales_price#65, ws_net_profit#66, d_date_sk#67] + +(295) Exchange +Input [3]: [ws_web_page_sk#64, ws_ext_sales_price#65, ws_net_profit#66] +Arguments: hashpartitioning(ws_web_page_sk#64, 100), ENSURE_REQUIREMENTS, [plan_id=33] + +(296) Sort +Input [3]: [ws_web_page_sk#64, ws_ext_sales_price#65, ws_net_profit#66] +Arguments: [ws_web_page_sk#64 ASC NULLS FIRST], false, 0 + +(297) Scan parquet +Output [1]: [wp_web_page_sk#68] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wp_web_page_sk)] +ReadSchema: struct + +(298) Filter +Input [1]: [wp_web_page_sk#68] +Condition : isnotnull(wp_web_page_sk#68) + +(299) Exchange +Input [1]: [wp_web_page_sk#68] +Arguments: hashpartitioning(wp_web_page_sk#68, 100), ENSURE_REQUIREMENTS, [plan_id=34] + +(300) Sort +Input [1]: [wp_web_page_sk#68] +Arguments: [wp_web_page_sk#68 ASC NULLS FIRST], false, 0 + +(301) SortMergeJoin +Left keys [1]: [ws_web_page_sk#64] +Right keys [1]: [wp_web_page_sk#68] +Join type: Inner +Join condition: None + +(302) Project +Output [3]: [ws_ext_sales_price#65, ws_net_profit#66, wp_web_page_sk#68] +Input [4]: [ws_web_page_sk#64, ws_ext_sales_price#65, ws_net_profit#66, wp_web_page_sk#68] + +(303) HashAggregate +Input [3]: [ws_ext_sales_price#65, ws_net_profit#66, wp_web_page_sk#68] +Keys [1]: [wp_web_page_sk#68] +Functions [2]: [partial_sum(UnscaledValue(ws_ext_sales_price#65)), partial_sum(UnscaledValue(ws_net_profit#66))] +Aggregate Attributes [2]: [sum#71, sum#72] +Results [3]: [wp_web_page_sk#68, sum#122, sum#123] + +(304) HashAggregate +Input [3]: [wp_web_page_sk#68, sum#122, sum#123] +Keys [1]: [wp_web_page_sk#68] +Functions [2]: [sum(UnscaledValue(ws_ext_sales_price#65)), sum(UnscaledValue(ws_net_profit#66))] +Aggregate Attributes [2]: [sum(UnscaledValue(ws_ext_sales_price#65))#73, sum(UnscaledValue(ws_net_profit#66))#74] +Results [3]: [wp_web_page_sk#68, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#65))#73,17,2) AS sales#75, MakeDecimal(sum(UnscaledValue(ws_net_profit#66))#74,17,2) AS profit#76] + +(305) Sort +Input [3]: [wp_web_page_sk#68, sales#75, profit#76] +Arguments: [wp_web_page_sk#68 ASC NULLS FIRST], false, 0 + +(306) Scan parquet +Output [4]: [wr_returned_date_sk#77, wr_web_page_sk#78, wr_return_amt#79, wr_net_loss#80] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wr_returned_date_sk), IsNotNull(wr_web_page_sk)] +ReadSchema: struct + +(307) Filter +Input [4]: [wr_returned_date_sk#77, wr_web_page_sk#78, wr_return_amt#79, wr_net_loss#80] +Condition : (isnotnull(wr_returned_date_sk#77) AND isnotnull(wr_web_page_sk#78)) + +(308) Exchange +Input [4]: [wr_returned_date_sk#77, wr_web_page_sk#78, wr_return_amt#79, wr_net_loss#80] +Arguments: hashpartitioning(wr_returned_date_sk#77, 100), ENSURE_REQUIREMENTS, [plan_id=35] + +(309) Sort +Input [4]: [wr_returned_date_sk#77, wr_web_page_sk#78, wr_return_amt#79, wr_net_loss#80] +Arguments: [wr_returned_date_sk#77 ASC NULLS FIRST], false, 0 + +(310) Scan parquet +Output [2]: [d_date_sk#81, d_date#124] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,2000-08-03), LessThanOrEqual(d_date,2000-09-02), IsNotNull(d_date_sk)] +ReadSchema: struct + +(311) Filter +Input [2]: [d_date_sk#81, d_date#124] +Condition : (((isnotnull(d_date#124) AND (d_date#124 >= 2000-08-03)) AND (d_date#124 <= 2000-09-02)) AND isnotnull(d_date_sk#81)) + +(312) Project +Output [1]: [d_date_sk#81] +Input [2]: [d_date_sk#81, d_date#124] + +(313) Exchange +Input [1]: [d_date_sk#81] +Arguments: hashpartitioning(d_date_sk#81, 100), ENSURE_REQUIREMENTS, [plan_id=36] + +(314) Sort +Input [1]: [d_date_sk#81] +Arguments: [d_date_sk#81 ASC NULLS FIRST], false, 0 + +(315) SortMergeJoin +Left keys [1]: [wr_returned_date_sk#77] +Right keys [1]: [d_date_sk#81] +Join type: Inner +Join condition: None + +(316) Project +Output [3]: [wr_web_page_sk#78, wr_return_amt#79, wr_net_loss#80] +Input [5]: [wr_returned_date_sk#77, wr_web_page_sk#78, wr_return_amt#79, wr_net_loss#80, d_date_sk#81] + +(317) Exchange +Input [3]: [wr_web_page_sk#78, wr_return_amt#79, wr_net_loss#80] +Arguments: hashpartitioning(wr_web_page_sk#78, 100), ENSURE_REQUIREMENTS, [plan_id=37] + +(318) Sort +Input [3]: [wr_web_page_sk#78, wr_return_amt#79, wr_net_loss#80] +Arguments: [wr_web_page_sk#78 ASC NULLS FIRST], false, 0 + +(319) Scan parquet +Output [1]: [wp_web_page_sk#82] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wp_web_page_sk)] +ReadSchema: struct + +(320) Filter +Input [1]: [wp_web_page_sk#82] +Condition : isnotnull(wp_web_page_sk#82) + +(321) Exchange +Input [1]: [wp_web_page_sk#82] +Arguments: hashpartitioning(wp_web_page_sk#82, 100), ENSURE_REQUIREMENTS, [plan_id=38] + +(322) Sort +Input [1]: [wp_web_page_sk#82] +Arguments: [wp_web_page_sk#82 ASC NULLS FIRST], false, 0 + +(323) SortMergeJoin +Left keys [1]: [wr_web_page_sk#78] +Right keys [1]: [wp_web_page_sk#82] +Join type: Inner +Join condition: None + +(324) Project +Output [3]: [wr_return_amt#79, wr_net_loss#80, wp_web_page_sk#82] +Input [4]: [wr_web_page_sk#78, wr_return_amt#79, wr_net_loss#80, wp_web_page_sk#82] + +(325) HashAggregate +Input [3]: [wr_return_amt#79, wr_net_loss#80, wp_web_page_sk#82] +Keys [1]: [wp_web_page_sk#82] +Functions [2]: [partial_sum(UnscaledValue(wr_return_amt#79)), partial_sum(UnscaledValue(wr_net_loss#80))] +Aggregate Attributes [2]: [sum#85, sum#86] +Results [3]: [wp_web_page_sk#82, sum#125, sum#126] + +(326) HashAggregate +Input [3]: [wp_web_page_sk#82, sum#125, sum#126] +Keys [1]: [wp_web_page_sk#82] +Functions [2]: [sum(UnscaledValue(wr_return_amt#79)), sum(UnscaledValue(wr_net_loss#80))] +Aggregate Attributes [2]: [sum(UnscaledValue(wr_return_amt#79))#87, sum(UnscaledValue(wr_net_loss#80))#88] +Results [3]: [wp_web_page_sk#82, MakeDecimal(sum(UnscaledValue(wr_return_amt#79))#87,17,2) AS returns#89, MakeDecimal(sum(UnscaledValue(wr_net_loss#80))#88,17,2) AS profit_loss#90] + +(327) Sort +Input [3]: [wp_web_page_sk#82, returns#89, profit_loss#90] +Arguments: [wp_web_page_sk#82 ASC NULLS FIRST], false, 0 + +(328) SortMergeJoin +Left keys [1]: [wp_web_page_sk#68] +Right keys [1]: [wp_web_page_sk#82] +Join type: LeftOuter +Join condition: None + +(329) Project +Output [5]: [sales#75, coalesce(returns#89, 0.00) AS returns#91, (profit#76 - coalesce(profit_loss#90, 0.00)) AS profit#92, web channel AS channel#93, wp_web_page_sk#68 AS id#94] +Input [6]: [wp_web_page_sk#68, sales#75, profit#76, wp_web_page_sk#82, returns#89, profit_loss#90] + +(330) Union + +(331) Expand +Input [5]: [sales#15, returns#31, profit#32, channel#33, id#34] +Arguments: [[sales#15, returns#31, profit#32, channel#33, id#34, 0], [sales#15, returns#31, profit#32, channel#33, null, 1], [sales#15, returns#31, profit#32, null, null, 3]], [sales#15, returns#31, profit#32, channel#95, id#96, spark_grouping_id#97] + +(332) HashAggregate +Input [6]: [sales#15, returns#31, profit#32, channel#95, id#96, spark_grouping_id#97] +Keys [3]: [channel#95, id#96, spark_grouping_id#97] +Functions [3]: [partial_sum(sales#15), partial_sum(returns#31), partial_sum(profit#32)] +Aggregate Attributes [6]: [sum#98, isEmpty#99, sum#100, isEmpty#101, sum#102, isEmpty#103] +Results [9]: [channel#95, id#96, spark_grouping_id#97, sum#127, isEmpty#128, sum#129, isEmpty#130, sum#131, isEmpty#132] + +(333) Exchange +Input [9]: [channel#95, id#96, spark_grouping_id#97, sum#127, isEmpty#128, sum#129, isEmpty#130, sum#131, isEmpty#132] +Arguments: hashpartitioning(channel#95, id#96, spark_grouping_id#97, 100), ENSURE_REQUIREMENTS, [plan_id=39] + +(334) HashAggregate +Input [9]: [channel#95, id#96, spark_grouping_id#97, sum#127, isEmpty#128, sum#129, isEmpty#130, sum#131, isEmpty#132] +Keys [3]: [channel#95, id#96, spark_grouping_id#97] +Functions [3]: [sum(sales#15), sum(returns#31), sum(profit#32)] +Aggregate Attributes [3]: [sum(sales#15)#104, sum(returns#31)#105, sum(profit#32)#106] +Results [5]: [channel#95, id#96, sum(sales#15)#104 AS sales#107, sum(returns#31)#105 AS returns#108, sum(profit#32)#106 AS profit#109] + +(335) TakeOrderedAndProject +Input [5]: [channel#95, id#96, sales#107, returns#108, profit#109] +Arguments: X, [channel#95 ASC NULLS FIRST, id#96 ASC NULLS FIRST, sales#107 ASC NULLS FIRST], [channel#95, id#96, sales#107, returns#108, profit#109] + +(336) AdaptiveSparkPlan +Output [5]: [channel#95, id#96, sales#107, returns#108, profit#109] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q78.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q78.txt new file mode 100644 index 000000000..cf21f6ab9 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q78.txt @@ -0,0 +1,1154 @@ +== Physical Plan == +AdaptiveSparkPlan (210) ++- == Final Plan == + NativeProject (133) + +- NativeTakeOrdered (132) + +- NativeProject (131) + +- NativeSortMergeJoin Inner (130) + :- NativeProject (87) + : +- NativeSortMergeJoin Inner (86) + : :- NativeSort (43) + : : +- NativeProject (42) + : : +- NativeHashAggregate (41) + : : +- InputAdapter (40) + : : +- AQEShuffleRead (39) + : : +- ShuffleQueryStage (38), Statistics(X) + : : +- NativeShuffleExchange (37) + : : +- NativeHashAggregate (36) + : : +- NativeProject (35) + : : +- NativeProject (34) + : : +- NativeSortMergeJoin Inner (33) + : : :- NativeSort (24) + : : : +- InputAdapter (23) + : : : +- AQEShuffleRead (22) + : : : +- ShuffleQueryStage (21), Statistics(X) + : : : +- NativeShuffleExchange (20) + : : : +- NativeProject (19) + : : : +- NativeFilter (18) + : : : +- NativeSortMergeJoin LeftOuter (17) + : : : :- NativeSort (8) + : : : : +- InputAdapter (7) + : : : : +- AQEShuffleRead (6) + : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : +- NativeShuffleExchange (4) + : : : : +- NativeFilter (3) + : : : : +- InputAdapter (2) + : : : : +- NativeParquetScan (1) + : : : +- NativeSort (16) + : : : +- InputAdapter (15) + : : : +- AQEShuffleRead (14) + : : : +- ShuffleQueryStage (13), Statistics(X) + : : : +- NativeShuffleExchange (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 (85) + : +- NativeFilter (84) + : +- NativeProject (83) + : +- NativeHashAggregate (82) + : +- InputAdapter (81) + : +- AQEShuffleRead (80) + : +- ShuffleQueryStage (79), Statistics(X) + : +- NativeShuffleExchange (78) + : +- NativeHashAggregate (77) + : +- NativeProject (76) + : +- NativeProject (75) + : +- NativeSortMergeJoin Inner (74) + : :- NativeSort (67) + : : +- InputAdapter (66) + : : +- AQEShuffleRead (65) + : : +- ShuffleQueryStage (64), Statistics(X) + : : +- NativeShuffleExchange (63) + : : +- NativeProject (62) + : : +- NativeFilter (61) + : : +- NativeSortMergeJoin LeftOuter (60) + : : :- NativeSort (51) + : : : +- InputAdapter (50) + : : : +- AQEShuffleRead (49) + : : : +- ShuffleQueryStage (48), Statistics(X) + : : : +- NativeShuffleExchange (47) + : : : +- NativeFilter (46) + : : : +- InputAdapter (45) + : : : +- NativeParquetScan (44) + : : +- NativeSort (59) + : : +- InputAdapter (58) + : : +- AQEShuffleRead (57) + : : +- ShuffleQueryStage (56), Statistics(X) + : : +- NativeShuffleExchange (55) + : : +- NativeFilter (54) + : : +- InputAdapter (53) + : : +- NativeParquetScan (52) + : +- NativeSort (73) + : +- InputAdapter (72) + : +- InputAdapter (71) + : +- AQEShuffleRead (70) + : +- ShuffleQueryStage (69), Statistics(X) + : +- ReusedExchange (68) + +- NativeSort (129) + +- NativeFilter (128) + +- NativeProject (127) + +- NativeHashAggregate (126) + +- InputAdapter (125) + +- AQEShuffleRead (124) + +- ShuffleQueryStage (123), Statistics(X) + +- NativeShuffleExchange (122) + +- NativeHashAggregate (121) + +- NativeProject (120) + +- NativeProject (119) + +- NativeSortMergeJoin Inner (118) + :- NativeSort (111) + : +- InputAdapter (110) + : +- AQEShuffleRead (109) + : +- ShuffleQueryStage (108), Statistics(X) + : +- NativeShuffleExchange (107) + : +- NativeProject (106) + : +- NativeFilter (105) + : +- NativeSortMergeJoin LeftOuter (104) + : :- NativeSort (95) + : : +- InputAdapter (94) + : : +- AQEShuffleRead (93) + : : +- ShuffleQueryStage (92), Statistics(X) + : : +- NativeShuffleExchange (91) + : : +- NativeFilter (90) + : : +- InputAdapter (89) + : : +- NativeParquetScan (88) + : +- NativeSort (103) + : +- InputAdapter (102) + : +- AQEShuffleRead (101) + : +- ShuffleQueryStage (100), Statistics(X) + : +- NativeShuffleExchange (99) + : +- NativeFilter (98) + : +- InputAdapter (97) + : +- NativeParquetScan (96) + +- NativeSort (117) + +- InputAdapter (116) + +- InputAdapter (115) + +- AQEShuffleRead (114) + +- ShuffleQueryStage (113), Statistics(X) + +- ReusedExchange (112) ++- == Initial Plan == + TakeOrderedAndProject (209) + +- Project (208) + +- SortMergeJoin Inner (207) + :- Project (182) + : +- SortMergeJoin Inner (181) + : :- Sort (156) + : : +- HashAggregate (155) + : : +- Exchange (154) + : : +- HashAggregate (153) + : : +- Project (152) + : : +- SortMergeJoin Inner (151) + : : :- Sort (146) + : : : +- Exchange (145) + : : : +- Project (144) + : : : +- Filter (143) + : : : +- SortMergeJoin LeftOuter (142) + : : : :- Sort (137) + : : : : +- Exchange (136) + : : : : +- Filter (135) + : : : : +- Scan parquet (134) + : : : +- Sort (141) + : : : +- Exchange (140) + : : : +- Filter (139) + : : : +- Scan parquet (138) + : : +- Sort (150) + : : +- Exchange (149) + : : +- Filter (148) + : : +- Scan parquet (147) + : +- Sort (180) + : +- Filter (179) + : +- HashAggregate (178) + : +- Exchange (177) + : +- HashAggregate (176) + : +- Project (175) + : +- SortMergeJoin Inner (174) + : :- Sort (169) + : : +- Exchange (168) + : : +- Project (167) + : : +- Filter (166) + : : +- SortMergeJoin LeftOuter (165) + : : :- Sort (160) + : : : +- Exchange (159) + : : : +- Filter (158) + : : : +- Scan parquet (157) + : : +- Sort (164) + : : +- Exchange (163) + : : +- Filter (162) + : : +- Scan parquet (161) + : +- Sort (173) + : +- Exchange (172) + : +- Filter (171) + : +- Scan parquet (170) + +- Sort (206) + +- Filter (205) + +- HashAggregate (204) + +- Exchange (203) + +- HashAggregate (202) + +- Project (201) + +- SortMergeJoin Inner (200) + :- Sort (195) + : +- Exchange (194) + : +- Project (193) + : +- Filter (192) + : +- SortMergeJoin LeftOuter (191) + : :- Sort (186) + : : +- Exchange (185) + : : +- Filter (184) + : : +- Scan parquet (183) + : +- Sort (190) + : +- Exchange (189) + : +- Filter (188) + : +- Scan parquet (187) + +- Sort (199) + +- Exchange (198) + +- Filter (197) + +- Scan parquet (196) + + +(134) Scan parquet +Output [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_ticket_number#4, ss_quantity#5, ss_wholesale_cost#6, ss_sales_price#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_item_sk), IsNotNull(ss_customer_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_ticket_number#4, ss_quantity#5, ss_wholesale_cost#6, ss_sales_price#7] +Arguments: [#1, #2, #3, #4, #5, #6, #7] + +(3) NativeFilter +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Condition : ((isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_item_sk#2)) AND isnotnull(ss_customer_sk#3)) + +(4) NativeShuffleExchange +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Arguments: hashpartitioning(ss_ticket_number#4, ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Arguments: X + +(6) AQEShuffleRead +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Arguments: coalesced + +(7) InputAdapter +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] + +(8) NativeSort +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Arguments: [ss_ticket_number#4 ASC NULLS FIRST, ss_item_sk#2 ASC NULLS FIRST], false + +(138) Scan parquet +Output [2]: [sr_item_sk#8, sr_ticket_number#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_ticket_number), IsNotNull(sr_item_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [sr_item_sk#8, sr_ticket_number#9] +Arguments: [#8, #9] + +(11) NativeFilter +Input [2]: [#8#8, #9#9] +Condition : (isnotnull(sr_ticket_number#9) AND isnotnull(sr_item_sk#8)) + +(12) NativeShuffleExchange +Input [2]: [#8#8, #9#9] +Arguments: hashpartitioning(sr_ticket_number#9, sr_item_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [2]: [#8#8, #9#9] +Arguments: X + +(14) AQEShuffleRead +Input [2]: [#8#8, #9#9] +Arguments: coalesced + +(15) InputAdapter +Input [2]: [#8#8, #9#9] + +(16) NativeSort +Input [2]: [#8#8, #9#9] +Arguments: [sr_ticket_number#9 ASC NULLS FIRST, sr_item_sk#8 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [2]: [ss_ticket_number#4, ss_item_sk#2] +Right keys [2]: [sr_ticket_number#9, sr_item_sk#8] +Join type: LeftOuter +Join condition: None + +(18) NativeFilter +Input [9]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9] +Condition : isnull(sr_ticket_number#9) + +(19) NativeProject +Output [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_quantity#5, ss_wholesale_cost#6, ss_sales_price#7] +Input [9]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9] + +(20) NativeShuffleExchange +Input [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_quantity#5, ss_wholesale_cost#6, ss_sales_price#7] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_quantity#5, ss_wholesale_cost#6, ss_sales_price#7] +Arguments: X + +(22) AQEShuffleRead +Input [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_quantity#5, ss_wholesale_cost#6, ss_sales_price#7] +Arguments: coalesced + +(23) InputAdapter +Input [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_quantity#5, ss_wholesale_cost#6, ss_sales_price#7] + +(24) NativeSort +Input [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_quantity#5, ss_wholesale_cost#6, ss_sales_price#7] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(147) Scan parquet +Output [2]: [d_date_sk#10, d_year#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [2]: [d_date_sk#10, d_year#11] +Arguments: [#10, #11] + +(27) NativeFilter +Input [2]: [#10#10, #11#11] +Condition : ((isnotnull(d_year#11) AND (d_year#11 = 2000)) AND isnotnull(d_date_sk#10)) + +(28) NativeShuffleExchange +Input [2]: [#10#10, #11#11] +Arguments: hashpartitioning(d_date_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(29) ShuffleQueryStage +Output [2]: [#10#10, #11#11] +Arguments: X + +(30) AQEShuffleRead +Input [2]: [#10#10, #11#11] +Arguments: coalesced + +(31) InputAdapter +Input [2]: [#10#10, #11#11] + +(32) NativeSort +Input [2]: [#10#10, #11#11] +Arguments: [d_date_sk#10 ASC NULLS FIRST], false + +(33) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#10] +Join type: Inner +Join condition: None + +(34) NativeProject +Output [6]: [ss_item_sk#2, ss_customer_sk#3, ss_quantity#5, ss_wholesale_cost#6, ss_sales_price#7, d_year#11] +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_quantity#5, ss_wholesale_cost#6, ss_sales_price#7, #10#10, #11#11] + +(35) NativeProject +Output [6]: [d_year#11 AS d_year#11, ss_item_sk#2 AS ss_item_sk#2, ss_customer_sk#3 AS ss_customer_sk#3, ss_quantity#5 AS _c3#12, UnscaledValue(ss_wholesale_cost#6) AS _c4#13, UnscaledValue(ss_sales_price#7) AS _c5#14] +Input [6]: [ss_item_sk#2, ss_customer_sk#3, ss_quantity#5, ss_wholesale_cost#6, ss_sales_price#7, d_year#11] + +(36) NativeHashAggregate +Input [6]: [d_year#11, ss_item_sk#2, ss_customer_sk#3, _c3#12, _c4#13, _c5#14] +Keys [3]: [d_year#11, ss_item_sk#2, ss_customer_sk#3] +Functions [3]: [partial_sum(_c3#12), partial_sum(_c4#13), partial_sum(_c5#14)] +Aggregate Attributes [3]: [sum#15, sum#16, sum#17] +Results [4]: [d_year#11, ss_item_sk#2, ss_customer_sk#3, #18#18] + +(37) NativeShuffleExchange +Input [4]: [d_year#11, ss_item_sk#2, ss_customer_sk#3, #18#18] +Arguments: hashpartitioning(d_year#11, ss_item_sk#2, ss_customer_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(38) ShuffleQueryStage +Output [4]: [d_year#11, ss_item_sk#2, ss_customer_sk#3, #18#18] +Arguments: X + +(39) AQEShuffleRead +Input [4]: [d_year#11, ss_item_sk#2, ss_customer_sk#3, #18#18] +Arguments: coalesced + +(40) InputAdapter +Input [4]: [d_year#11, ss_item_sk#2, ss_customer_sk#3, #18#18] + +(41) NativeHashAggregate +Input [4]: [d_year#11, ss_item_sk#2, ss_customer_sk#3, #18#18] +Keys [3]: [d_year#11, ss_item_sk#2, ss_customer_sk#3] +Functions [3]: [sum(ss_quantity#5), sum(UnscaledValue(ss_wholesale_cost#6)), sum(UnscaledValue(ss_sales_price#7))] +Aggregate Attributes [3]: [sum(ss_quantity#5)#19, sum(UnscaledValue(ss_wholesale_cost#6))#20, sum(UnscaledValue(ss_sales_price#7))#21] +Results [6]: [d_year#11, ss_item_sk#2, ss_customer_sk#3, sum(ss_quantity#5)#19, sum(UnscaledValue(ss_wholesale_cost#6))#20, sum(UnscaledValue(ss_sales_price#7))#21] + +(42) NativeProject +Output [6]: [d_year#11 AS ss_sold_year#22, ss_item_sk#2, ss_customer_sk#3, sum(ss_quantity#5)#19 AS ss_qty#23, MakeDecimal(sum(UnscaledValue(ss_wholesale_cost#6))#20,17,2) AS ss_wc#24, MakeDecimal(sum(UnscaledValue(ss_sales_price#7))#21,17,2) AS ss_sp#25] +Input [6]: [d_year#11, ss_item_sk#2, ss_customer_sk#3, sum(ss_quantity#5)#19, sum(UnscaledValue(ss_wholesale_cost#6))#20, sum(UnscaledValue(ss_sales_price#7))#21] + +(43) NativeSort +Input [6]: [ss_sold_year#22, ss_item_sk#2, ss_customer_sk#3, ss_qty#23, ss_wc#24, ss_sp#25] +Arguments: [ss_sold_year#22 ASC NULLS FIRST, ss_item_sk#2 ASC NULLS FIRST, ss_customer_sk#3 ASC NULLS FIRST], false + +(157) Scan parquet +Output [7]: [ws_sold_date_sk#26, ws_item_sk#27, ws_bill_customer_sk#28, ws_order_number#29, ws_quantity#30, ws_wholesale_cost#31, ws_sales_price#32] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_item_sk), IsNotNull(ws_bill_customer_sk)] +ReadSchema: struct + +(45) InputAdapter +Input [7]: [ws_sold_date_sk#26, ws_item_sk#27, ws_bill_customer_sk#28, ws_order_number#29, ws_quantity#30, ws_wholesale_cost#31, ws_sales_price#32] +Arguments: [#26, #27, #28, #29, #30, #31, #32] + +(46) NativeFilter +Input [7]: [#26#26, #27#27, #28#28, #29#29, #30#30, #31#31, #32#32] +Condition : ((isnotnull(ws_sold_date_sk#26) AND isnotnull(ws_item_sk#27)) AND isnotnull(ws_bill_customer_sk#28)) + +(47) NativeShuffleExchange +Input [7]: [#26#26, #27#27, #28#28, #29#29, #30#30, #31#31, #32#32] +Arguments: hashpartitioning(ws_order_number#29, ws_item_sk#27, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(48) ShuffleQueryStage +Output [7]: [#26#26, #27#27, #28#28, #29#29, #30#30, #31#31, #32#32] +Arguments: X + +(49) AQEShuffleRead +Input [7]: [#26#26, #27#27, #28#28, #29#29, #30#30, #31#31, #32#32] +Arguments: coalesced + +(50) InputAdapter +Input [7]: [#26#26, #27#27, #28#28, #29#29, #30#30, #31#31, #32#32] + +(51) NativeSort +Input [7]: [#26#26, #27#27, #28#28, #29#29, #30#30, #31#31, #32#32] +Arguments: [ws_order_number#29 ASC NULLS FIRST, ws_item_sk#27 ASC NULLS FIRST], false + +(161) Scan parquet +Output [2]: [wr_item_sk#33, wr_order_number#34] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wr_order_number), IsNotNull(wr_item_sk)] +ReadSchema: struct + +(53) InputAdapter +Input [2]: [wr_item_sk#33, wr_order_number#34] +Arguments: [#33, #34] + +(54) NativeFilter +Input [2]: [#33#33, #34#34] +Condition : (isnotnull(wr_order_number#34) AND isnotnull(wr_item_sk#33)) + +(55) NativeShuffleExchange +Input [2]: [#33#33, #34#34] +Arguments: hashpartitioning(wr_order_number#34, wr_item_sk#33, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(56) ShuffleQueryStage +Output [2]: [#33#33, #34#34] +Arguments: X + +(57) AQEShuffleRead +Input [2]: [#33#33, #34#34] +Arguments: coalesced + +(58) InputAdapter +Input [2]: [#33#33, #34#34] + +(59) NativeSort +Input [2]: [#33#33, #34#34] +Arguments: [wr_order_number#34 ASC NULLS FIRST, wr_item_sk#33 ASC NULLS FIRST], false + +(60) NativeSortMergeJoin +Left keys [2]: [ws_order_number#29, ws_item_sk#27] +Right keys [2]: [wr_order_number#34, wr_item_sk#33] +Join type: LeftOuter +Join condition: None + +(61) NativeFilter +Input [9]: [#26#26, #27#27, #28#28, #29#29, #30#30, #31#31, #32#32, #33#33, #34#34] +Condition : isnull(wr_order_number#34) + +(62) NativeProject +Output [6]: [ws_sold_date_sk#26, ws_item_sk#27, ws_bill_customer_sk#28, ws_quantity#30, ws_wholesale_cost#31, ws_sales_price#32] +Input [9]: [#26#26, #27#27, #28#28, #29#29, #30#30, #31#31, #32#32, #33#33, #34#34] + +(63) NativeShuffleExchange +Input [6]: [ws_sold_date_sk#26, ws_item_sk#27, ws_bill_customer_sk#28, ws_quantity#30, ws_wholesale_cost#31, ws_sales_price#32] +Arguments: hashpartitioning(ws_sold_date_sk#26, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(64) ShuffleQueryStage +Output [6]: [ws_sold_date_sk#26, ws_item_sk#27, ws_bill_customer_sk#28, ws_quantity#30, ws_wholesale_cost#31, ws_sales_price#32] +Arguments: X + +(65) AQEShuffleRead +Input [6]: [ws_sold_date_sk#26, ws_item_sk#27, ws_bill_customer_sk#28, ws_quantity#30, ws_wholesale_cost#31, ws_sales_price#32] +Arguments: coalesced + +(66) InputAdapter +Input [6]: [ws_sold_date_sk#26, ws_item_sk#27, ws_bill_customer_sk#28, ws_quantity#30, ws_wholesale_cost#31, ws_sales_price#32] + +(67) NativeSort +Input [6]: [ws_sold_date_sk#26, ws_item_sk#27, ws_bill_customer_sk#28, ws_quantity#30, ws_wholesale_cost#31, ws_sales_price#32] +Arguments: [ws_sold_date_sk#26 ASC NULLS FIRST], false + +(68) ReusedExchange [Reuses operator id: 28] +Output [2]: [d_date_sk#35, d_year#36] + +(69) ShuffleQueryStage +Output [2]: [d_date_sk#35, d_year#36] +Arguments: X + +(70) AQEShuffleRead +Input [2]: [d_date_sk#35, d_year#36] +Arguments: coalesced + +(71) InputAdapter +Input [2]: [d_date_sk#35, d_year#36] +Arguments: [#35, #36] + +(72) InputAdapter +Input [2]: [#35#35, #36#36] + +(73) NativeSort +Input [2]: [#35#35, #36#36] +Arguments: [d_date_sk#35 ASC NULLS FIRST], false + +(74) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#26] +Right keys [1]: [d_date_sk#35] +Join type: Inner +Join condition: None + +(75) NativeProject +Output [6]: [ws_item_sk#27, ws_bill_customer_sk#28, ws_quantity#30, ws_wholesale_cost#31, ws_sales_price#32, d_year#36] +Input [8]: [ws_sold_date_sk#26, ws_item_sk#27, ws_bill_customer_sk#28, ws_quantity#30, ws_wholesale_cost#31, ws_sales_price#32, #35#35, #36#36] + +(76) NativeProject +Output [6]: [d_year#36 AS d_year#36, ws_item_sk#27 AS ws_item_sk#27, ws_bill_customer_sk#28 AS ws_bill_customer_sk#28, ws_quantity#30 AS _c3#37, UnscaledValue(ws_wholesale_cost#31) AS _c4#38, UnscaledValue(ws_sales_price#32) AS _c5#39] +Input [6]: [ws_item_sk#27, ws_bill_customer_sk#28, ws_quantity#30, ws_wholesale_cost#31, ws_sales_price#32, d_year#36] + +(77) NativeHashAggregate +Input [6]: [d_year#36, ws_item_sk#27, ws_bill_customer_sk#28, _c3#37, _c4#38, _c5#39] +Keys [3]: [d_year#36, ws_item_sk#27, ws_bill_customer_sk#28] +Functions [3]: [partial_sum(_c3#37), partial_sum(_c4#38), partial_sum(_c5#39)] +Aggregate Attributes [3]: [sum#40, sum#41, sum#42] +Results [4]: [d_year#36, ws_item_sk#27, ws_bill_customer_sk#28, #18#18] + +(78) NativeShuffleExchange +Input [4]: [d_year#36, ws_item_sk#27, ws_bill_customer_sk#28, #18#18] +Arguments: hashpartitioning(d_year#36, ws_item_sk#27, ws_bill_customer_sk#28, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(79) ShuffleQueryStage +Output [4]: [d_year#36, ws_item_sk#27, ws_bill_customer_sk#28, #18#18] +Arguments: X + +(80) AQEShuffleRead +Input [4]: [d_year#36, ws_item_sk#27, ws_bill_customer_sk#28, #18#18] +Arguments: coalesced + +(81) InputAdapter +Input [4]: [d_year#36, ws_item_sk#27, ws_bill_customer_sk#28, #18#18] + +(82) NativeHashAggregate +Input [4]: [d_year#36, ws_item_sk#27, ws_bill_customer_sk#28, #18#18] +Keys [3]: [d_year#36, ws_item_sk#27, ws_bill_customer_sk#28] +Functions [3]: [sum(ws_quantity#30), sum(UnscaledValue(ws_wholesale_cost#31)), sum(UnscaledValue(ws_sales_price#32))] +Aggregate Attributes [3]: [sum(ws_quantity#30)#43, sum(UnscaledValue(ws_wholesale_cost#31))#44, sum(UnscaledValue(ws_sales_price#32))#45] +Results [6]: [d_year#36, ws_item_sk#27, ws_bill_customer_sk#28, sum(ws_quantity#30)#43, sum(UnscaledValue(ws_wholesale_cost#31))#44, sum(UnscaledValue(ws_sales_price#32))#45] + +(83) NativeProject +Output [6]: [d_year#36 AS ws_sold_year#46, ws_item_sk#27, ws_bill_customer_sk#28 AS ws_customer_sk#47, sum(ws_quantity#30)#43 AS ws_qty#48, MakeDecimal(sum(UnscaledValue(ws_wholesale_cost#31))#44,17,2) AS ws_wc#49, MakeDecimal(sum(UnscaledValue(ws_sales_price#32))#45,17,2) AS ws_sp#50] +Input [6]: [d_year#36, ws_item_sk#27, ws_bill_customer_sk#28, sum(ws_quantity#30)#43, sum(UnscaledValue(ws_wholesale_cost#31))#44, sum(UnscaledValue(ws_sales_price#32))#45] + +(84) NativeFilter +Input [6]: [ws_sold_year#46, ws_item_sk#27, ws_customer_sk#47, ws_qty#48, ws_wc#49, ws_sp#50] +Condition : (coalesce(ws_qty#48, 0) > 0) + +(85) NativeSort +Input [6]: [ws_sold_year#46, ws_item_sk#27, ws_customer_sk#47, ws_qty#48, ws_wc#49, ws_sp#50] +Arguments: [ws_sold_year#46 ASC NULLS FIRST, ws_item_sk#27 ASC NULLS FIRST, ws_customer_sk#47 ASC NULLS FIRST], false + +(86) NativeSortMergeJoin +Left keys [3]: [ss_sold_year#22, ss_item_sk#2, ss_customer_sk#3] +Right keys [3]: [ws_sold_year#46, ws_item_sk#27, ws_customer_sk#47] +Join type: Inner +Join condition: None + +(87) NativeProject +Output [9]: [ss_sold_year#22, ss_item_sk#2, ss_customer_sk#3, ss_qty#23, ss_wc#24, ss_sp#25, ws_qty#48, ws_wc#49, ws_sp#50] +Input [12]: [ss_sold_year#22, ss_item_sk#2, ss_customer_sk#3, ss_qty#23, ss_wc#24, ss_sp#25, ws_sold_year#46, ws_item_sk#27, ws_customer_sk#47, ws_qty#48, ws_wc#49, ws_sp#50] + +(183) Scan parquet +Output [7]: [cs_sold_date_sk#51, cs_bill_customer_sk#52, cs_item_sk#53, cs_order_number#54, cs_quantity#55, cs_wholesale_cost#56, cs_sales_price#57] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk), IsNotNull(cs_item_sk), IsNotNull(cs_bill_customer_sk)] +ReadSchema: struct + +(89) InputAdapter +Input [7]: [cs_sold_date_sk#51, cs_bill_customer_sk#52, cs_item_sk#53, cs_order_number#54, cs_quantity#55, cs_wholesale_cost#56, cs_sales_price#57] +Arguments: [#51, #52, #53, #54, #55, #56, #57] + +(90) NativeFilter +Input [7]: [#51#51, #52#52, #53#53, #54#54, #55#55, #56#56, #57#57] +Condition : ((isnotnull(cs_sold_date_sk#51) AND isnotnull(cs_item_sk#53)) AND isnotnull(cs_bill_customer_sk#52)) + +(91) NativeShuffleExchange +Input [7]: [#51#51, #52#52, #53#53, #54#54, #55#55, #56#56, #57#57] +Arguments: hashpartitioning(cs_order_number#54, cs_item_sk#53, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(92) ShuffleQueryStage +Output [7]: [#51#51, #52#52, #53#53, #54#54, #55#55, #56#56, #57#57] +Arguments: X + +(93) AQEShuffleRead +Input [7]: [#51#51, #52#52, #53#53, #54#54, #55#55, #56#56, #57#57] +Arguments: coalesced + +(94) InputAdapter +Input [7]: [#51#51, #52#52, #53#53, #54#54, #55#55, #56#56, #57#57] + +(95) NativeSort +Input [7]: [#51#51, #52#52, #53#53, #54#54, #55#55, #56#56, #57#57] +Arguments: [cs_order_number#54 ASC NULLS FIRST, cs_item_sk#53 ASC NULLS FIRST], false + +(187) Scan parquet +Output [2]: [cr_item_sk#58, cr_order_number#59] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cr_order_number), IsNotNull(cr_item_sk)] +ReadSchema: struct + +(97) InputAdapter +Input [2]: [cr_item_sk#58, cr_order_number#59] +Arguments: [#58, #59] + +(98) NativeFilter +Input [2]: [#58#58, #59#59] +Condition : (isnotnull(cr_order_number#59) AND isnotnull(cr_item_sk#58)) + +(99) NativeShuffleExchange +Input [2]: [#58#58, #59#59] +Arguments: hashpartitioning(cr_order_number#59, cr_item_sk#58, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(100) ShuffleQueryStage +Output [2]: [#58#58, #59#59] +Arguments: X + +(101) AQEShuffleRead +Input [2]: [#58#58, #59#59] +Arguments: coalesced + +(102) InputAdapter +Input [2]: [#58#58, #59#59] + +(103) NativeSort +Input [2]: [#58#58, #59#59] +Arguments: [cr_order_number#59 ASC NULLS FIRST, cr_item_sk#58 ASC NULLS FIRST], false + +(104) NativeSortMergeJoin +Left keys [2]: [cs_order_number#54, cs_item_sk#53] +Right keys [2]: [cr_order_number#59, cr_item_sk#58] +Join type: LeftOuter +Join condition: None + +(105) NativeFilter +Input [9]: [#51#51, #52#52, #53#53, #54#54, #55#55, #56#56, #57#57, #58#58, #59#59] +Condition : isnull(cr_order_number#59) + +(106) NativeProject +Output [6]: [cs_sold_date_sk#51, cs_bill_customer_sk#52, cs_item_sk#53, cs_quantity#55, cs_wholesale_cost#56, cs_sales_price#57] +Input [9]: [#51#51, #52#52, #53#53, #54#54, #55#55, #56#56, #57#57, #58#58, #59#59] + +(107) NativeShuffleExchange +Input [6]: [cs_sold_date_sk#51, cs_bill_customer_sk#52, cs_item_sk#53, cs_quantity#55, cs_wholesale_cost#56, cs_sales_price#57] +Arguments: hashpartitioning(cs_sold_date_sk#51, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(108) ShuffleQueryStage +Output [6]: [cs_sold_date_sk#51, cs_bill_customer_sk#52, cs_item_sk#53, cs_quantity#55, cs_wholesale_cost#56, cs_sales_price#57] +Arguments: X + +(109) AQEShuffleRead +Input [6]: [cs_sold_date_sk#51, cs_bill_customer_sk#52, cs_item_sk#53, cs_quantity#55, cs_wholesale_cost#56, cs_sales_price#57] +Arguments: coalesced + +(110) InputAdapter +Input [6]: [cs_sold_date_sk#51, cs_bill_customer_sk#52, cs_item_sk#53, cs_quantity#55, cs_wholesale_cost#56, cs_sales_price#57] + +(111) NativeSort +Input [6]: [cs_sold_date_sk#51, cs_bill_customer_sk#52, cs_item_sk#53, cs_quantity#55, cs_wholesale_cost#56, cs_sales_price#57] +Arguments: [cs_sold_date_sk#51 ASC NULLS FIRST], false + +(112) ReusedExchange [Reuses operator id: 28] +Output [2]: [d_date_sk#60, d_year#61] + +(113) ShuffleQueryStage +Output [2]: [d_date_sk#60, d_year#61] +Arguments: X + +(114) AQEShuffleRead +Input [2]: [d_date_sk#60, d_year#61] +Arguments: coalesced + +(115) InputAdapter +Input [2]: [d_date_sk#60, d_year#61] +Arguments: [#60, #61] + +(116) InputAdapter +Input [2]: [#60#60, #61#61] + +(117) NativeSort +Input [2]: [#60#60, #61#61] +Arguments: [d_date_sk#60 ASC NULLS FIRST], false + +(118) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#51] +Right keys [1]: [d_date_sk#60] +Join type: Inner +Join condition: None + +(119) NativeProject +Output [6]: [cs_bill_customer_sk#52, cs_item_sk#53, cs_quantity#55, cs_wholesale_cost#56, cs_sales_price#57, d_year#61] +Input [8]: [cs_sold_date_sk#51, cs_bill_customer_sk#52, cs_item_sk#53, cs_quantity#55, cs_wholesale_cost#56, cs_sales_price#57, #60#60, #61#61] + +(120) NativeProject +Output [6]: [d_year#61 AS d_year#61, cs_item_sk#53 AS cs_item_sk#53, cs_bill_customer_sk#52 AS cs_bill_customer_sk#52, cs_quantity#55 AS _c3#62, UnscaledValue(cs_wholesale_cost#56) AS _c4#63, UnscaledValue(cs_sales_price#57) AS _c5#64] +Input [6]: [cs_bill_customer_sk#52, cs_item_sk#53, cs_quantity#55, cs_wholesale_cost#56, cs_sales_price#57, d_year#61] + +(121) NativeHashAggregate +Input [6]: [d_year#61, cs_item_sk#53, cs_bill_customer_sk#52, _c3#62, _c4#63, _c5#64] +Keys [3]: [d_year#61, cs_item_sk#53, cs_bill_customer_sk#52] +Functions [3]: [partial_sum(_c3#62), partial_sum(_c4#63), partial_sum(_c5#64)] +Aggregate Attributes [3]: [sum#65, sum#66, sum#67] +Results [4]: [d_year#61, cs_item_sk#53, cs_bill_customer_sk#52, #18#18] + +(122) NativeShuffleExchange +Input [4]: [d_year#61, cs_item_sk#53, cs_bill_customer_sk#52, #18#18] +Arguments: hashpartitioning(d_year#61, cs_item_sk#53, cs_bill_customer_sk#52, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(123) ShuffleQueryStage +Output [4]: [d_year#61, cs_item_sk#53, cs_bill_customer_sk#52, #18#18] +Arguments: X + +(124) AQEShuffleRead +Input [4]: [d_year#61, cs_item_sk#53, cs_bill_customer_sk#52, #18#18] +Arguments: coalesced + +(125) InputAdapter +Input [4]: [d_year#61, cs_item_sk#53, cs_bill_customer_sk#52, #18#18] + +(126) NativeHashAggregate +Input [4]: [d_year#61, cs_item_sk#53, cs_bill_customer_sk#52, #18#18] +Keys [3]: [d_year#61, cs_item_sk#53, cs_bill_customer_sk#52] +Functions [3]: [sum(cs_quantity#55), sum(UnscaledValue(cs_wholesale_cost#56)), sum(UnscaledValue(cs_sales_price#57))] +Aggregate Attributes [3]: [sum(cs_quantity#55)#68, sum(UnscaledValue(cs_wholesale_cost#56))#69, sum(UnscaledValue(cs_sales_price#57))#70] +Results [6]: [d_year#61, cs_item_sk#53, cs_bill_customer_sk#52, sum(cs_quantity#55)#68, sum(UnscaledValue(cs_wholesale_cost#56))#69, sum(UnscaledValue(cs_sales_price#57))#70] + +(127) NativeProject +Output [6]: [d_year#61 AS cs_sold_year#71, cs_item_sk#53, cs_bill_customer_sk#52 AS cs_customer_sk#72, sum(cs_quantity#55)#68 AS cs_qty#73, MakeDecimal(sum(UnscaledValue(cs_wholesale_cost#56))#69,17,2) AS cs_wc#74, MakeDecimal(sum(UnscaledValue(cs_sales_price#57))#70,17,2) AS cs_sp#75] +Input [6]: [d_year#61, cs_item_sk#53, cs_bill_customer_sk#52, sum(cs_quantity#55)#68, sum(UnscaledValue(cs_wholesale_cost#56))#69, sum(UnscaledValue(cs_sales_price#57))#70] + +(128) NativeFilter +Input [6]: [cs_sold_year#71, cs_item_sk#53, cs_customer_sk#72, cs_qty#73, cs_wc#74, cs_sp#75] +Condition : (coalesce(cs_qty#73, 0) > 0) + +(129) NativeSort +Input [6]: [cs_sold_year#71, cs_item_sk#53, cs_customer_sk#72, cs_qty#73, cs_wc#74, cs_sp#75] +Arguments: [cs_sold_year#71 ASC NULLS FIRST, cs_item_sk#53 ASC NULLS FIRST, cs_customer_sk#72 ASC NULLS FIRST], false + +(130) NativeSortMergeJoin +Left keys [3]: [ss_sold_year#22, ss_item_sk#2, ss_customer_sk#3] +Right keys [3]: [cs_sold_year#71, cs_item_sk#53, cs_customer_sk#72] +Join type: Inner +Join condition: None + +(131) NativeProject +Output [12]: [round((cast(ss_qty#23 as double) / cast(coalesce((ws_qty#48 + cs_qty#73), 1) as double)), 2) AS ratio#76, ss_qty#23 AS store_qty#77, ss_wc#24 AS store_wholesale_cost#78, ss_sp#25 AS store_sales_price#79, (coalesce(ws_qty#48, 0) + coalesce(cs_qty#73, 0)) AS other_chan_qty#80, (coalesce(ws_wc#49, 0.00) + coalesce(cs_wc#74, 0.00)) AS other_chan_wholesale_cost#81, (coalesce(ws_sp#50, 0.00) + coalesce(cs_sp#75, 0.00)) AS other_chan_sales_price#82, ss_qty#23, ss_wc#24, ss_sp#25, ws_qty#48, cs_qty#73] +Input [15]: [ss_sold_year#22, ss_item_sk#2, ss_customer_sk#3, ss_qty#23, ss_wc#24, ss_sp#25, ws_qty#48, ws_wc#49, ws_sp#50, cs_sold_year#71, cs_item_sk#53, cs_customer_sk#72, cs_qty#73, cs_wc#74, cs_sp#75] + +(132) NativeTakeOrdered +Input [12]: [ratio#76, store_qty#77, store_wholesale_cost#78, store_sales_price#79, other_chan_qty#80, other_chan_wholesale_cost#81, other_chan_sales_price#82, ss_qty#23, ss_wc#24, ss_sp#25, ws_qty#48, cs_qty#73] +Arguments: X, [ratio#76 ASC NULLS FIRST, ss_qty#23 DESC NULLS LAST, ss_wc#24 DESC NULLS LAST, ss_sp#25 DESC NULLS LAST, other_chan_qty#80 ASC NULLS FIRST, other_chan_wholesale_cost#81 ASC NULLS FIRST, other_chan_sales_price#82 ASC NULLS FIRST, round((cast(ss_qty#23 as double) / cast(coalesce((ws_qty#48 + cs_qty#73), 1) as double)), 2) ASC NULLS FIRST] + +(133) NativeProject +Output [7]: [ratio#76, store_qty#77, store_wholesale_cost#78, store_sales_price#79, other_chan_qty#80, other_chan_wholesale_cost#81, other_chan_sales_price#82] +Input [12]: [ratio#76, store_qty#77, store_wholesale_cost#78, store_sales_price#79, other_chan_qty#80, other_chan_wholesale_cost#81, other_chan_sales_price#82, ss_qty#23, ss_wc#24, ss_sp#25, ws_qty#48, cs_qty#73] + +(134) Scan parquet +Output [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_ticket_number#4, ss_quantity#5, ss_wholesale_cost#6, ss_sales_price#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_item_sk), IsNotNull(ss_customer_sk)] +ReadSchema: struct + +(135) Filter +Input [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_ticket_number#4, ss_quantity#5, ss_wholesale_cost#6, ss_sales_price#7] +Condition : ((isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_item_sk#2)) AND isnotnull(ss_customer_sk#3)) + +(136) Exchange +Input [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_ticket_number#4, ss_quantity#5, ss_wholesale_cost#6, ss_sales_price#7] +Arguments: hashpartitioning(ss_ticket_number#4, ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(137) Sort +Input [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_ticket_number#4, ss_quantity#5, ss_wholesale_cost#6, ss_sales_price#7] +Arguments: [ss_ticket_number#4 ASC NULLS FIRST, ss_item_sk#2 ASC NULLS FIRST], false, 0 + +(138) Scan parquet +Output [2]: [sr_item_sk#8, sr_ticket_number#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_ticket_number), IsNotNull(sr_item_sk)] +ReadSchema: struct + +(139) Filter +Input [2]: [sr_item_sk#8, sr_ticket_number#9] +Condition : (isnotnull(sr_ticket_number#9) AND isnotnull(sr_item_sk#8)) + +(140) Exchange +Input [2]: [sr_item_sk#8, sr_ticket_number#9] +Arguments: hashpartitioning(sr_ticket_number#9, sr_item_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(141) Sort +Input [2]: [sr_item_sk#8, sr_ticket_number#9] +Arguments: [sr_ticket_number#9 ASC NULLS FIRST, sr_item_sk#8 ASC NULLS FIRST], false, 0 + +(142) SortMergeJoin +Left keys [2]: [ss_ticket_number#4, ss_item_sk#2] +Right keys [2]: [sr_ticket_number#9, sr_item_sk#8] +Join type: LeftOuter +Join condition: None + +(143) Filter +Input [9]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_ticket_number#4, ss_quantity#5, ss_wholesale_cost#6, ss_sales_price#7, sr_item_sk#8, sr_ticket_number#9] +Condition : isnull(sr_ticket_number#9) + +(144) Project +Output [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_quantity#5, ss_wholesale_cost#6, ss_sales_price#7] +Input [9]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_ticket_number#4, ss_quantity#5, ss_wholesale_cost#6, ss_sales_price#7, sr_item_sk#8, sr_ticket_number#9] + +(145) Exchange +Input [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_quantity#5, ss_wholesale_cost#6, ss_sales_price#7] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(146) Sort +Input [6]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_quantity#5, ss_wholesale_cost#6, ss_sales_price#7] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(147) Scan parquet +Output [2]: [d_date_sk#10, d_year#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(148) Filter +Input [2]: [d_date_sk#10, d_year#11] +Condition : ((isnotnull(d_year#11) AND (d_year#11 = 2000)) AND isnotnull(d_date_sk#10)) + +(149) Exchange +Input [2]: [d_date_sk#10, d_year#11] +Arguments: hashpartitioning(d_date_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(150) Sort +Input [2]: [d_date_sk#10, d_year#11] +Arguments: [d_date_sk#10 ASC NULLS FIRST], false, 0 + +(151) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#10] +Join type: Inner +Join condition: None + +(152) Project +Output [6]: [ss_item_sk#2, ss_customer_sk#3, ss_quantity#5, ss_wholesale_cost#6, ss_sales_price#7, d_year#11] +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_quantity#5, ss_wholesale_cost#6, ss_sales_price#7, d_date_sk#10, d_year#11] + +(153) HashAggregate +Input [6]: [ss_item_sk#2, ss_customer_sk#3, ss_quantity#5, ss_wholesale_cost#6, ss_sales_price#7, d_year#11] +Keys [3]: [d_year#11, ss_item_sk#2, ss_customer_sk#3] +Functions [3]: [partial_sum(ss_quantity#5), partial_sum(UnscaledValue(ss_wholesale_cost#6)), partial_sum(UnscaledValue(ss_sales_price#7))] +Aggregate Attributes [3]: [sum#15, sum#16, sum#17] +Results [6]: [d_year#11, ss_item_sk#2, ss_customer_sk#3, sum#83, sum#84, sum#85] + +(154) Exchange +Input [6]: [d_year#11, ss_item_sk#2, ss_customer_sk#3, sum#83, sum#84, sum#85] +Arguments: hashpartitioning(d_year#11, ss_item_sk#2, ss_customer_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(155) HashAggregate +Input [6]: [d_year#11, ss_item_sk#2, ss_customer_sk#3, sum#83, sum#84, sum#85] +Keys [3]: [d_year#11, ss_item_sk#2, ss_customer_sk#3] +Functions [3]: [sum(ss_quantity#5), sum(UnscaledValue(ss_wholesale_cost#6)), sum(UnscaledValue(ss_sales_price#7))] +Aggregate Attributes [3]: [sum(ss_quantity#5)#19, sum(UnscaledValue(ss_wholesale_cost#6))#20, sum(UnscaledValue(ss_sales_price#7))#21] +Results [6]: [d_year#11 AS ss_sold_year#22, ss_item_sk#2, ss_customer_sk#3, sum(ss_quantity#5)#19 AS ss_qty#23, MakeDecimal(sum(UnscaledValue(ss_wholesale_cost#6))#20,17,2) AS ss_wc#24, MakeDecimal(sum(UnscaledValue(ss_sales_price#7))#21,17,2) AS ss_sp#25] + +(156) Sort +Input [6]: [ss_sold_year#22, ss_item_sk#2, ss_customer_sk#3, ss_qty#23, ss_wc#24, ss_sp#25] +Arguments: [ss_sold_year#22 ASC NULLS FIRST, ss_item_sk#2 ASC NULLS FIRST, ss_customer_sk#3 ASC NULLS FIRST], false, 0 + +(157) Scan parquet +Output [7]: [ws_sold_date_sk#26, ws_item_sk#27, ws_bill_customer_sk#28, ws_order_number#29, ws_quantity#30, ws_wholesale_cost#31, ws_sales_price#32] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_item_sk), IsNotNull(ws_bill_customer_sk)] +ReadSchema: struct + +(158) Filter +Input [7]: [ws_sold_date_sk#26, ws_item_sk#27, ws_bill_customer_sk#28, ws_order_number#29, ws_quantity#30, ws_wholesale_cost#31, ws_sales_price#32] +Condition : ((isnotnull(ws_sold_date_sk#26) AND isnotnull(ws_item_sk#27)) AND isnotnull(ws_bill_customer_sk#28)) + +(159) Exchange +Input [7]: [ws_sold_date_sk#26, ws_item_sk#27, ws_bill_customer_sk#28, ws_order_number#29, ws_quantity#30, ws_wholesale_cost#31, ws_sales_price#32] +Arguments: hashpartitioning(ws_order_number#29, ws_item_sk#27, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(160) Sort +Input [7]: [ws_sold_date_sk#26, ws_item_sk#27, ws_bill_customer_sk#28, ws_order_number#29, ws_quantity#30, ws_wholesale_cost#31, ws_sales_price#32] +Arguments: [ws_order_number#29 ASC NULLS FIRST, ws_item_sk#27 ASC NULLS FIRST], false, 0 + +(161) Scan parquet +Output [2]: [wr_item_sk#33, wr_order_number#34] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wr_order_number), IsNotNull(wr_item_sk)] +ReadSchema: struct + +(162) Filter +Input [2]: [wr_item_sk#33, wr_order_number#34] +Condition : (isnotnull(wr_order_number#34) AND isnotnull(wr_item_sk#33)) + +(163) Exchange +Input [2]: [wr_item_sk#33, wr_order_number#34] +Arguments: hashpartitioning(wr_order_number#34, wr_item_sk#33, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(164) Sort +Input [2]: [wr_item_sk#33, wr_order_number#34] +Arguments: [wr_order_number#34 ASC NULLS FIRST, wr_item_sk#33 ASC NULLS FIRST], false, 0 + +(165) SortMergeJoin +Left keys [2]: [ws_order_number#29, ws_item_sk#27] +Right keys [2]: [wr_order_number#34, wr_item_sk#33] +Join type: LeftOuter +Join condition: None + +(166) Filter +Input [9]: [ws_sold_date_sk#26, ws_item_sk#27, ws_bill_customer_sk#28, ws_order_number#29, ws_quantity#30, ws_wholesale_cost#31, ws_sales_price#32, wr_item_sk#33, wr_order_number#34] +Condition : isnull(wr_order_number#34) + +(167) Project +Output [6]: [ws_sold_date_sk#26, ws_item_sk#27, ws_bill_customer_sk#28, ws_quantity#30, ws_wholesale_cost#31, ws_sales_price#32] +Input [9]: [ws_sold_date_sk#26, ws_item_sk#27, ws_bill_customer_sk#28, ws_order_number#29, ws_quantity#30, ws_wholesale_cost#31, ws_sales_price#32, wr_item_sk#33, wr_order_number#34] + +(168) Exchange +Input [6]: [ws_sold_date_sk#26, ws_item_sk#27, ws_bill_customer_sk#28, ws_quantity#30, ws_wholesale_cost#31, ws_sales_price#32] +Arguments: hashpartitioning(ws_sold_date_sk#26, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(169) Sort +Input [6]: [ws_sold_date_sk#26, ws_item_sk#27, ws_bill_customer_sk#28, ws_quantity#30, ws_wholesale_cost#31, ws_sales_price#32] +Arguments: [ws_sold_date_sk#26 ASC NULLS FIRST], false, 0 + +(170) Scan parquet +Output [2]: [d_date_sk#35, d_year#36] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date_sk), EqualTo(d_year,2000), IsNotNull(d_year)] +ReadSchema: struct + +(171) Filter +Input [2]: [d_date_sk#35, d_year#36] +Condition : ((isnotnull(d_date_sk#35) AND (d_year#36 = 2000)) AND isnotnull(d_year#36)) + +(172) Exchange +Input [2]: [d_date_sk#35, d_year#36] +Arguments: hashpartitioning(d_date_sk#35, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(173) Sort +Input [2]: [d_date_sk#35, d_year#36] +Arguments: [d_date_sk#35 ASC NULLS FIRST], false, 0 + +(174) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#26] +Right keys [1]: [d_date_sk#35] +Join type: Inner +Join condition: None + +(175) Project +Output [6]: [ws_item_sk#27, ws_bill_customer_sk#28, ws_quantity#30, ws_wholesale_cost#31, ws_sales_price#32, d_year#36] +Input [8]: [ws_sold_date_sk#26, ws_item_sk#27, ws_bill_customer_sk#28, ws_quantity#30, ws_wholesale_cost#31, ws_sales_price#32, d_date_sk#35, d_year#36] + +(176) HashAggregate +Input [6]: [ws_item_sk#27, ws_bill_customer_sk#28, ws_quantity#30, ws_wholesale_cost#31, ws_sales_price#32, d_year#36] +Keys [3]: [d_year#36, ws_item_sk#27, ws_bill_customer_sk#28] +Functions [3]: [partial_sum(ws_quantity#30), partial_sum(UnscaledValue(ws_wholesale_cost#31)), partial_sum(UnscaledValue(ws_sales_price#32))] +Aggregate Attributes [3]: [sum#40, sum#41, sum#42] +Results [6]: [d_year#36, ws_item_sk#27, ws_bill_customer_sk#28, sum#86, sum#87, sum#88] + +(177) Exchange +Input [6]: [d_year#36, ws_item_sk#27, ws_bill_customer_sk#28, sum#86, sum#87, sum#88] +Arguments: hashpartitioning(d_year#36, ws_item_sk#27, ws_bill_customer_sk#28, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(178) HashAggregate +Input [6]: [d_year#36, ws_item_sk#27, ws_bill_customer_sk#28, sum#86, sum#87, sum#88] +Keys [3]: [d_year#36, ws_item_sk#27, ws_bill_customer_sk#28] +Functions [3]: [sum(ws_quantity#30), sum(UnscaledValue(ws_wholesale_cost#31)), sum(UnscaledValue(ws_sales_price#32))] +Aggregate Attributes [3]: [sum(ws_quantity#30)#43, sum(UnscaledValue(ws_wholesale_cost#31))#44, sum(UnscaledValue(ws_sales_price#32))#45] +Results [6]: [d_year#36 AS ws_sold_year#46, ws_item_sk#27, ws_bill_customer_sk#28 AS ws_customer_sk#47, sum(ws_quantity#30)#43 AS ws_qty#48, MakeDecimal(sum(UnscaledValue(ws_wholesale_cost#31))#44,17,2) AS ws_wc#49, MakeDecimal(sum(UnscaledValue(ws_sales_price#32))#45,17,2) AS ws_sp#50] + +(179) Filter +Input [6]: [ws_sold_year#46, ws_item_sk#27, ws_customer_sk#47, ws_qty#48, ws_wc#49, ws_sp#50] +Condition : (coalesce(ws_qty#48, 0) > 0) + +(180) Sort +Input [6]: [ws_sold_year#46, ws_item_sk#27, ws_customer_sk#47, ws_qty#48, ws_wc#49, ws_sp#50] +Arguments: [ws_sold_year#46 ASC NULLS FIRST, ws_item_sk#27 ASC NULLS FIRST, ws_customer_sk#47 ASC NULLS FIRST], false, 0 + +(181) SortMergeJoin +Left keys [3]: [ss_sold_year#22, ss_item_sk#2, ss_customer_sk#3] +Right keys [3]: [ws_sold_year#46, ws_item_sk#27, ws_customer_sk#47] +Join type: Inner +Join condition: None + +(182) Project +Output [9]: [ss_sold_year#22, ss_item_sk#2, ss_customer_sk#3, ss_qty#23, ss_wc#24, ss_sp#25, ws_qty#48, ws_wc#49, ws_sp#50] +Input [12]: [ss_sold_year#22, ss_item_sk#2, ss_customer_sk#3, ss_qty#23, ss_wc#24, ss_sp#25, ws_sold_year#46, ws_item_sk#27, ws_customer_sk#47, ws_qty#48, ws_wc#49, ws_sp#50] + +(183) Scan parquet +Output [7]: [cs_sold_date_sk#51, cs_bill_customer_sk#52, cs_item_sk#53, cs_order_number#54, cs_quantity#55, cs_wholesale_cost#56, cs_sales_price#57] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk), IsNotNull(cs_item_sk), IsNotNull(cs_bill_customer_sk)] +ReadSchema: struct + +(184) Filter +Input [7]: [cs_sold_date_sk#51, cs_bill_customer_sk#52, cs_item_sk#53, cs_order_number#54, cs_quantity#55, cs_wholesale_cost#56, cs_sales_price#57] +Condition : ((isnotnull(cs_sold_date_sk#51) AND isnotnull(cs_item_sk#53)) AND isnotnull(cs_bill_customer_sk#52)) + +(185) Exchange +Input [7]: [cs_sold_date_sk#51, cs_bill_customer_sk#52, cs_item_sk#53, cs_order_number#54, cs_quantity#55, cs_wholesale_cost#56, cs_sales_price#57] +Arguments: hashpartitioning(cs_order_number#54, cs_item_sk#53, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(186) Sort +Input [7]: [cs_sold_date_sk#51, cs_bill_customer_sk#52, cs_item_sk#53, cs_order_number#54, cs_quantity#55, cs_wholesale_cost#56, cs_sales_price#57] +Arguments: [cs_order_number#54 ASC NULLS FIRST, cs_item_sk#53 ASC NULLS FIRST], false, 0 + +(187) Scan parquet +Output [2]: [cr_item_sk#58, cr_order_number#59] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cr_order_number), IsNotNull(cr_item_sk)] +ReadSchema: struct + +(188) Filter +Input [2]: [cr_item_sk#58, cr_order_number#59] +Condition : (isnotnull(cr_order_number#59) AND isnotnull(cr_item_sk#58)) + +(189) Exchange +Input [2]: [cr_item_sk#58, cr_order_number#59] +Arguments: hashpartitioning(cr_order_number#59, cr_item_sk#58, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(190) Sort +Input [2]: [cr_item_sk#58, cr_order_number#59] +Arguments: [cr_order_number#59 ASC NULLS FIRST, cr_item_sk#58 ASC NULLS FIRST], false, 0 + +(191) SortMergeJoin +Left keys [2]: [cs_order_number#54, cs_item_sk#53] +Right keys [2]: [cr_order_number#59, cr_item_sk#58] +Join type: LeftOuter +Join condition: None + +(192) Filter +Input [9]: [cs_sold_date_sk#51, cs_bill_customer_sk#52, cs_item_sk#53, cs_order_number#54, cs_quantity#55, cs_wholesale_cost#56, cs_sales_price#57, cr_item_sk#58, cr_order_number#59] +Condition : isnull(cr_order_number#59) + +(193) Project +Output [6]: [cs_sold_date_sk#51, cs_bill_customer_sk#52, cs_item_sk#53, cs_quantity#55, cs_wholesale_cost#56, cs_sales_price#57] +Input [9]: [cs_sold_date_sk#51, cs_bill_customer_sk#52, cs_item_sk#53, cs_order_number#54, cs_quantity#55, cs_wholesale_cost#56, cs_sales_price#57, cr_item_sk#58, cr_order_number#59] + +(194) Exchange +Input [6]: [cs_sold_date_sk#51, cs_bill_customer_sk#52, cs_item_sk#53, cs_quantity#55, cs_wholesale_cost#56, cs_sales_price#57] +Arguments: hashpartitioning(cs_sold_date_sk#51, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(195) Sort +Input [6]: [cs_sold_date_sk#51, cs_bill_customer_sk#52, cs_item_sk#53, cs_quantity#55, cs_wholesale_cost#56, cs_sales_price#57] +Arguments: [cs_sold_date_sk#51 ASC NULLS FIRST], false, 0 + +(196) Scan parquet +Output [2]: [d_date_sk#60, d_year#61] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date_sk), EqualTo(d_year,2000), IsNotNull(d_year)] +ReadSchema: struct + +(197) Filter +Input [2]: [d_date_sk#60, d_year#61] +Condition : ((isnotnull(d_date_sk#60) AND (d_year#61 = 2000)) AND isnotnull(d_year#61)) + +(198) Exchange +Input [2]: [d_date_sk#60, d_year#61] +Arguments: hashpartitioning(d_date_sk#60, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(199) Sort +Input [2]: [d_date_sk#60, d_year#61] +Arguments: [d_date_sk#60 ASC NULLS FIRST], false, 0 + +(200) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#51] +Right keys [1]: [d_date_sk#60] +Join type: Inner +Join condition: None + +(201) Project +Output [6]: [cs_bill_customer_sk#52, cs_item_sk#53, cs_quantity#55, cs_wholesale_cost#56, cs_sales_price#57, d_year#61] +Input [8]: [cs_sold_date_sk#51, cs_bill_customer_sk#52, cs_item_sk#53, cs_quantity#55, cs_wholesale_cost#56, cs_sales_price#57, d_date_sk#60, d_year#61] + +(202) HashAggregate +Input [6]: [cs_bill_customer_sk#52, cs_item_sk#53, cs_quantity#55, cs_wholesale_cost#56, cs_sales_price#57, d_year#61] +Keys [3]: [d_year#61, cs_item_sk#53, cs_bill_customer_sk#52] +Functions [3]: [partial_sum(cs_quantity#55), partial_sum(UnscaledValue(cs_wholesale_cost#56)), partial_sum(UnscaledValue(cs_sales_price#57))] +Aggregate Attributes [3]: [sum#65, sum#66, sum#67] +Results [6]: [d_year#61, cs_item_sk#53, cs_bill_customer_sk#52, sum#89, sum#90, sum#91] + +(203) Exchange +Input [6]: [d_year#61, cs_item_sk#53, cs_bill_customer_sk#52, sum#89, sum#90, sum#91] +Arguments: hashpartitioning(d_year#61, cs_item_sk#53, cs_bill_customer_sk#52, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(204) HashAggregate +Input [6]: [d_year#61, cs_item_sk#53, cs_bill_customer_sk#52, sum#89, sum#90, sum#91] +Keys [3]: [d_year#61, cs_item_sk#53, cs_bill_customer_sk#52] +Functions [3]: [sum(cs_quantity#55), sum(UnscaledValue(cs_wholesale_cost#56)), sum(UnscaledValue(cs_sales_price#57))] +Aggregate Attributes [3]: [sum(cs_quantity#55)#68, sum(UnscaledValue(cs_wholesale_cost#56))#69, sum(UnscaledValue(cs_sales_price#57))#70] +Results [6]: [d_year#61 AS cs_sold_year#71, cs_item_sk#53, cs_bill_customer_sk#52 AS cs_customer_sk#72, sum(cs_quantity#55)#68 AS cs_qty#73, MakeDecimal(sum(UnscaledValue(cs_wholesale_cost#56))#69,17,2) AS cs_wc#74, MakeDecimal(sum(UnscaledValue(cs_sales_price#57))#70,17,2) AS cs_sp#75] + +(205) Filter +Input [6]: [cs_sold_year#71, cs_item_sk#53, cs_customer_sk#72, cs_qty#73, cs_wc#74, cs_sp#75] +Condition : (coalesce(cs_qty#73, 0) > 0) + +(206) Sort +Input [6]: [cs_sold_year#71, cs_item_sk#53, cs_customer_sk#72, cs_qty#73, cs_wc#74, cs_sp#75] +Arguments: [cs_sold_year#71 ASC NULLS FIRST, cs_item_sk#53 ASC NULLS FIRST, cs_customer_sk#72 ASC NULLS FIRST], false, 0 + +(207) SortMergeJoin +Left keys [3]: [ss_sold_year#22, ss_item_sk#2, ss_customer_sk#3] +Right keys [3]: [cs_sold_year#71, cs_item_sk#53, cs_customer_sk#72] +Join type: Inner +Join condition: None + +(208) Project +Output [12]: [round((cast(ss_qty#23 as double) / cast(coalesce((ws_qty#48 + cs_qty#73), 1) as double)), 2) AS ratio#76, ss_qty#23 AS store_qty#77, ss_wc#24 AS store_wholesale_cost#78, ss_sp#25 AS store_sales_price#79, (coalesce(ws_qty#48, 0) + coalesce(cs_qty#73, 0)) AS other_chan_qty#80, (coalesce(ws_wc#49, 0.00) + coalesce(cs_wc#74, 0.00)) AS other_chan_wholesale_cost#81, (coalesce(ws_sp#50, 0.00) + coalesce(cs_sp#75, 0.00)) AS other_chan_sales_price#82, ss_qty#23, ss_wc#24, ss_sp#25, ws_qty#48, cs_qty#73] +Input [15]: [ss_sold_year#22, ss_item_sk#2, ss_customer_sk#3, ss_qty#23, ss_wc#24, ss_sp#25, ws_qty#48, ws_wc#49, ws_sp#50, cs_sold_year#71, cs_item_sk#53, cs_customer_sk#72, cs_qty#73, cs_wc#74, cs_sp#75] + +(209) TakeOrderedAndProject +Input [12]: [ratio#76, store_qty#77, store_wholesale_cost#78, store_sales_price#79, other_chan_qty#80, other_chan_wholesale_cost#81, other_chan_sales_price#82, ss_qty#23, ss_wc#24, ss_sp#25, ws_qty#48, cs_qty#73] +Arguments: X, [ratio#76 ASC NULLS FIRST, ss_qty#23 DESC NULLS LAST, ss_wc#24 DESC NULLS LAST, ss_sp#25 DESC NULLS LAST, other_chan_qty#80 ASC NULLS FIRST, other_chan_wholesale_cost#81 ASC NULLS FIRST, other_chan_sales_price#82 ASC NULLS FIRST, round((cast(ss_qty#23 as double) / cast(coalesce((ws_qty#48 + cs_qty#73), 1) as double)), 2) ASC NULLS FIRST], [ratio#76, store_qty#77, store_wholesale_cost#78, store_sales_price#79, other_chan_qty#80, other_chan_wholesale_cost#81, other_chan_sales_price#82] + +(210) AdaptiveSparkPlan +Output [7]: [ratio#76, store_qty#77, store_wholesale_cost#78, store_sales_price#79, other_chan_qty#80, other_chan_wholesale_cost#81, other_chan_sales_price#82] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q79.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q79.txt new file mode 100644 index 000000000..ab317fd45 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q79.txt @@ -0,0 +1,644 @@ +== Physical Plan == +AdaptiveSparkPlan (118) ++- == Final Plan == + NativeProject (76) + +- NativeTakeOrdered (75) + +- NativeProject (74) + +- NativeSortMergeJoin Inner (73) + :- NativeSort (64) + : +- InputAdapter (63) + : +- AQEShuffleRead (62) + : +- ShuffleQueryStage (61), Statistics(X) + : +- NativeShuffleExchange (60) + : +- NativeProject (59) + : +- NativeHashAggregate (58) + : +- InputAdapter (57) + : +- AQEShuffleRead (56) + : +- ShuffleQueryStage (55), Statistics(X) + : +- NativeShuffleExchange (54) + : +- NativeHashAggregate (53) + : +- NativeProject (52) + : +- NativeProject (51) + : +- NativeSortMergeJoin Inner (50) + : :- NativeSort (40) + : : +- InputAdapter (39) + : : +- AQEShuffleRead (38) + : : +- ShuffleQueryStage (37), Statistics(X) + : : +- NativeShuffleExchange (36) + : : +- NativeProject (35) + : : +- NativeSortMergeJoin Inner (34) + : : :- 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 (33) + : : +- InputAdapter (32) + : : +- AQEShuffleRead (31) + : : +- ShuffleQueryStage (30), Statistics(X) + : : +- NativeShuffleExchange (29) + : : +- NativeProject (28) + : : +- NativeFilter (27) + : : +- InputAdapter (26) + : : +- NativeParquetScan (25) + : +- NativeSort (49) + : +- InputAdapter (48) + : +- AQEShuffleRead (47) + : +- ShuffleQueryStage (46), Statistics(X) + : +- NativeShuffleExchange (45) + : +- NativeProject (44) + : +- NativeFilter (43) + : +- InputAdapter (42) + : +- NativeParquetScan (41) + +- NativeSort (72) + +- InputAdapter (71) + +- AQEShuffleRead (70) + +- ShuffleQueryStage (69), Statistics(X) + +- NativeShuffleExchange (68) + +- NativeFilter (67) + +- InputAdapter (66) + +- NativeParquetScan (65) ++- == Initial Plan == + TakeOrderedAndProject (117) + +- Project (116) + +- SortMergeJoin Inner (115) + :- Sort (110) + : +- Exchange (109) + : +- HashAggregate (108) + : +- Exchange (107) + : +- HashAggregate (106) + : +- Project (105) + : +- SortMergeJoin Inner (104) + : :- Sort (98) + : : +- Exchange (97) + : : +- Project (96) + : : +- SortMergeJoin Inner (95) + : : :- Sort (89) + : : : +- Exchange (88) + : : : +- Project (87) + : : : +- SortMergeJoin Inner (86) + : : : :- Sort (80) + : : : : +- Exchange (79) + : : : : +- Filter (78) + : : : : +- Scan parquet (77) + : : : +- Sort (85) + : : : +- Exchange (84) + : : : +- Project (83) + : : : +- Filter (82) + : : : +- Scan parquet (81) + : : +- Sort (94) + : : +- Exchange (93) + : : +- Project (92) + : : +- Filter (91) + : : +- Scan parquet (90) + : +- Sort (103) + : +- Exchange (102) + : +- Project (101) + : +- Filter (100) + : +- Scan parquet (99) + +- Sort (114) + +- Exchange (113) + +- Filter (112) + +- Scan parquet (111) + + +(77) Scan parquet +Output [8]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk), IsNotNull(ss_hdemo_sk), IsNotNull(ss_customer_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [8]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Arguments: [#1, #2, #3, #4, #5, #6, #7, #8] + +(3) NativeFilter +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Condition : (((isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_store_sk#5)) AND isnotnull(ss_hdemo_sk#3)) AND isnotnull(ss_customer_sk#2)) + +(4) NativeShuffleExchange +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: X + +(6) AQEShuffleRead +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: coalesced + +(7) InputAdapter +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] + +(8) NativeSort +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(81) Scan parquet +Output [3]: [d_date_sk#9, d_year#10, d_dow#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_dow), EqualTo(d_dow,1), In(d_year, [1999,2000,2001]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [3]: [d_date_sk#9, d_year#10, d_dow#11] +Arguments: [#9, #10, #11] + +(11) NativeFilter +Input [3]: [#9#9, #10#10, #11#11] +Condition : (((isnotnull(d_dow#11) AND (d_dow#11 = 1)) AND d_year#10 IN (1999,2000,2001)) AND isnotnull(d_date_sk#9)) + +(12) NativeProject +Output [1]: [d_date_sk#9] +Input [3]: [#9#9, #10#10, #11#11] + +(13) NativeShuffleExchange +Input [1]: [d_date_sk#9] +Arguments: hashpartitioning(d_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [1]: [d_date_sk#9] +Arguments: X + +(15) AQEShuffleRead +Input [1]: [d_date_sk#9] +Arguments: coalesced + +(16) InputAdapter +Input [1]: [d_date_sk#9] + +(17) NativeSort +Input [1]: [d_date_sk#9] +Arguments: [d_date_sk#9 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#9] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Input [9]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, d_date_sk#9] + +(20) NativeShuffleExchange +Input [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Arguments: hashpartitioning(ss_store_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Arguments: X + +(22) AQEShuffleRead +Input [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Arguments: coalesced + +(23) InputAdapter +Input [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] + +(24) NativeSort +Input [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Arguments: [ss_store_sk#5 ASC NULLS FIRST], false + +(90) Scan parquet +Output [3]: [s_store_sk#12, s_number_employees#13, s_city#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_number_employees), GreaterThanOrEqual(s_number_employees,200), LessThanOrEqual(s_number_employees,295), IsNotNull(s_store_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [3]: [s_store_sk#12, s_number_employees#13, s_city#14] +Arguments: [#12, #13, #14] + +(27) NativeFilter +Input [3]: [#12#12, #13#13, #14#14] +Condition : (((isnotnull(s_number_employees#13) AND (s_number_employees#13 >= 200)) AND (s_number_employees#13 <= 295)) AND isnotnull(s_store_sk#12)) + +(28) NativeProject +Output [2]: [s_store_sk#12, s_city#14] +Input [3]: [#12#12, #13#13, #14#14] + +(29) NativeShuffleExchange +Input [2]: [s_store_sk#12, s_city#14] +Arguments: hashpartitioning(s_store_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(30) ShuffleQueryStage +Output [2]: [s_store_sk#12, s_city#14] +Arguments: X + +(31) AQEShuffleRead +Input [2]: [s_store_sk#12, s_city#14] +Arguments: coalesced + +(32) InputAdapter +Input [2]: [s_store_sk#12, s_city#14] + +(33) NativeSort +Input [2]: [s_store_sk#12, s_city#14] +Arguments: [s_store_sk#12 ASC NULLS FIRST], false + +(34) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#5] +Right keys [1]: [s_store_sk#12] +Join type: Inner +Join condition: None + +(35) NativeProject +Output [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8, s_city#14] +Input [9]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8, s_store_sk#12, s_city#14] + +(36) NativeShuffleExchange +Input [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8, s_city#14] +Arguments: hashpartitioning(ss_hdemo_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8, s_city#14] +Arguments: X + +(38) AQEShuffleRead +Input [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8, s_city#14] +Arguments: coalesced + +(39) InputAdapter +Input [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8, s_city#14] + +(40) NativeSort +Input [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8, s_city#14] +Arguments: [ss_hdemo_sk#3 ASC NULLS FIRST], false + +(99) Scan parquet +Output [3]: [hd_demo_sk#15, hd_dep_count#16, hd_vehicle_count#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(EqualTo(hd_dep_count,6),GreaterThan(hd_vehicle_count,2)), IsNotNull(hd_demo_sk)] +ReadSchema: struct + +(42) InputAdapter +Input [3]: [hd_demo_sk#15, hd_dep_count#16, hd_vehicle_count#17] +Arguments: [#15, #16, #17] + +(43) NativeFilter +Input [3]: [#15#15, #16#16, #17#17] +Condition : (((hd_dep_count#16 = 6) OR (hd_vehicle_count#17 > 2)) AND isnotnull(hd_demo_sk#15)) + +(44) NativeProject +Output [1]: [hd_demo_sk#15] +Input [3]: [#15#15, #16#16, #17#17] + +(45) NativeShuffleExchange +Input [1]: [hd_demo_sk#15] +Arguments: hashpartitioning(hd_demo_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(46) ShuffleQueryStage +Output [1]: [hd_demo_sk#15] +Arguments: X + +(47) AQEShuffleRead +Input [1]: [hd_demo_sk#15] +Arguments: coalesced + +(48) InputAdapter +Input [1]: [hd_demo_sk#15] + +(49) NativeSort +Input [1]: [hd_demo_sk#15] +Arguments: [hd_demo_sk#15 ASC NULLS FIRST], false + +(50) NativeSortMergeJoin +Left keys [1]: [ss_hdemo_sk#3] +Right keys [1]: [hd_demo_sk#15] +Join type: Inner +Join condition: None + +(51) NativeProject +Output [6]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8, s_city#14] +Input [8]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8, s_city#14, hd_demo_sk#15] + +(52) NativeProject +Output [6]: [ss_ticket_number#6 AS ss_ticket_number#6, ss_customer_sk#2 AS ss_customer_sk#2, ss_addr_sk#4 AS ss_addr_sk#4, s_city#14 AS s_city#14, UnscaledValue(ss_coupon_amt#7) AS _c4#18, UnscaledValue(ss_net_profit#8) AS _c5#19] +Input [6]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8, s_city#14] + +(53) NativeHashAggregate +Input [6]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, s_city#14, _c4#18, _c5#19] +Keys [4]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, s_city#14] +Functions [2]: [partial_sum(_c4#18), partial_sum(_c5#19)] +Aggregate Attributes [2]: [sum#20, sum#21] +Results [5]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, s_city#14, #22#22] + +(54) NativeShuffleExchange +Input [5]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, s_city#14, #22#22] +Arguments: hashpartitioning(ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, s_city#14, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(55) ShuffleQueryStage +Output [5]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, s_city#14, #22#22] +Arguments: X + +(56) AQEShuffleRead +Input [5]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, s_city#14, #22#22] +Arguments: coalesced + +(57) InputAdapter +Input [5]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, s_city#14, #22#22] + +(58) NativeHashAggregate +Input [5]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, s_city#14, #22#22] +Keys [4]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, s_city#14] +Functions [2]: [sum(UnscaledValue(ss_coupon_amt#7)), sum(UnscaledValue(ss_net_profit#8))] +Aggregate Attributes [2]: [sum(UnscaledValue(ss_coupon_amt#7))#23, sum(UnscaledValue(ss_net_profit#8))#24] +Results [6]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, s_city#14, sum(UnscaledValue(ss_coupon_amt#7))#23, sum(UnscaledValue(ss_net_profit#8))#24] + +(59) NativeProject +Output [5]: [ss_ticket_number#6, ss_customer_sk#2, s_city#14, MakeDecimal(sum(UnscaledValue(ss_coupon_amt#7))#23,17,2) AS amt#25, MakeDecimal(sum(UnscaledValue(ss_net_profit#8))#24,17,2) AS profit#26] +Input [6]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, s_city#14, sum(UnscaledValue(ss_coupon_amt#7))#23, sum(UnscaledValue(ss_net_profit#8))#24] + +(60) NativeShuffleExchange +Input [5]: [ss_ticket_number#6, ss_customer_sk#2, s_city#14, amt#25, profit#26] +Arguments: hashpartitioning(ss_customer_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(61) ShuffleQueryStage +Output [5]: [ss_ticket_number#6, ss_customer_sk#2, s_city#14, amt#25, profit#26] +Arguments: X + +(62) AQEShuffleRead +Input [5]: [ss_ticket_number#6, ss_customer_sk#2, s_city#14, amt#25, profit#26] +Arguments: coalesced + +(63) InputAdapter +Input [5]: [ss_ticket_number#6, ss_customer_sk#2, s_city#14, amt#25, profit#26] + +(64) NativeSort +Input [5]: [ss_ticket_number#6, ss_customer_sk#2, s_city#14, amt#25, profit#26] +Arguments: [ss_customer_sk#2 ASC NULLS FIRST], false + +(111) Scan parquet +Output [3]: [c_customer_sk#27, c_first_name#28, c_last_name#29] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk)] +ReadSchema: struct + +(66) InputAdapter +Input [3]: [c_customer_sk#27, c_first_name#28, c_last_name#29] +Arguments: [#27, #28, #29] + +(67) NativeFilter +Input [3]: [#27#27, #28#28, #29#29] +Condition : isnotnull(c_customer_sk#27) + +(68) NativeShuffleExchange +Input [3]: [#27#27, #28#28, #29#29] +Arguments: hashpartitioning(c_customer_sk#27, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(69) ShuffleQueryStage +Output [3]: [#27#27, #28#28, #29#29] +Arguments: X + +(70) AQEShuffleRead +Input [3]: [#27#27, #28#28, #29#29] +Arguments: coalesced + +(71) InputAdapter +Input [3]: [#27#27, #28#28, #29#29] + +(72) NativeSort +Input [3]: [#27#27, #28#28, #29#29] +Arguments: [c_customer_sk#27 ASC NULLS FIRST], false + +(73) NativeSortMergeJoin +Left keys [1]: [ss_customer_sk#2] +Right keys [1]: [c_customer_sk#27] +Join type: Inner +Join condition: None + +(74) NativeProject +Output [7]: [c_last_name#29, c_first_name#28, substr(s_city#14, 1, 30) AS substr(s_city, 1, 30)#30, ss_ticket_number#6, amt#25, profit#26, s_city#14] +Input [8]: [ss_ticket_number#6, ss_customer_sk#2, s_city#14, amt#25, profit#26, #27#27, #28#28, #29#29] + +(75) NativeTakeOrdered +Input [7]: [c_last_name#29, c_first_name#28, substr(s_city, 1, 30)#30, ss_ticket_number#6, amt#25, profit#26, s_city#14] +Arguments: X, [c_last_name#29 ASC NULLS FIRST, c_first_name#28 ASC NULLS FIRST, substr(s_city#14, 1, 30) ASC NULLS FIRST, ss_ticket_number#6 ASC NULLS FIRST, profit#26 ASC NULLS FIRST] + +(76) NativeProject +Output [6]: [c_last_name#29, c_first_name#28, substr(s_city, 1, 30)#30, ss_ticket_number#6, amt#25, profit#26] +Input [7]: [c_last_name#29, c_first_name#28, substr(s_city, 1, 30)#30, ss_ticket_number#6, amt#25, profit#26, s_city#14] + +(77) Scan parquet +Output [8]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk), IsNotNull(ss_hdemo_sk), IsNotNull(ss_customer_sk)] +ReadSchema: struct + +(78) Filter +Input [8]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Condition : (((isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_store_sk#5)) AND isnotnull(ss_hdemo_sk#3)) AND isnotnull(ss_customer_sk#2)) + +(79) Exchange +Input [8]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(80) Sort +Input [8]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(81) Scan parquet +Output [3]: [d_date_sk#9, d_year#10, d_dow#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_dow), EqualTo(d_dow,1), In(d_year, [1999,2000,2001]), IsNotNull(d_date_sk)] +ReadSchema: struct + +(82) Filter +Input [3]: [d_date_sk#9, d_year#10, d_dow#11] +Condition : (((isnotnull(d_dow#11) AND (d_dow#11 = 1)) AND d_year#10 IN (1999,2000,2001)) AND isnotnull(d_date_sk#9)) + +(83) Project +Output [1]: [d_date_sk#9] +Input [3]: [d_date_sk#9, d_year#10, d_dow#11] + +(84) Exchange +Input [1]: [d_date_sk#9] +Arguments: hashpartitioning(d_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(85) Sort +Input [1]: [d_date_sk#9] +Arguments: [d_date_sk#9 ASC NULLS FIRST], false, 0 + +(86) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#9] +Join type: Inner +Join condition: None + +(87) Project +Output [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Input [9]: [ss_sold_date_sk#1, ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8, d_date_sk#9] + +(88) Exchange +Input [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Arguments: hashpartitioning(ss_store_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(89) Sort +Input [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8] +Arguments: [ss_store_sk#5 ASC NULLS FIRST], false, 0 + +(90) Scan parquet +Output [3]: [s_store_sk#12, s_number_employees#13, s_city#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_number_employees), GreaterThanOrEqual(s_number_employees,200), LessThanOrEqual(s_number_employees,295), IsNotNull(s_store_sk)] +ReadSchema: struct + +(91) Filter +Input [3]: [s_store_sk#12, s_number_employees#13, s_city#14] +Condition : (((isnotnull(s_number_employees#13) AND (s_number_employees#13 >= 200)) AND (s_number_employees#13 <= 295)) AND isnotnull(s_store_sk#12)) + +(92) Project +Output [2]: [s_store_sk#12, s_city#14] +Input [3]: [s_store_sk#12, s_number_employees#13, s_city#14] + +(93) Exchange +Input [2]: [s_store_sk#12, s_city#14] +Arguments: hashpartitioning(s_store_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(94) Sort +Input [2]: [s_store_sk#12, s_city#14] +Arguments: [s_store_sk#12 ASC NULLS FIRST], false, 0 + +(95) SortMergeJoin +Left keys [1]: [ss_store_sk#5] +Right keys [1]: [s_store_sk#12] +Join type: Inner +Join condition: None + +(96) Project +Output [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8, s_city#14] +Input [9]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8, s_store_sk#12, s_city#14] + +(97) Exchange +Input [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8, s_city#14] +Arguments: hashpartitioning(ss_hdemo_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(98) Sort +Input [7]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8, s_city#14] +Arguments: [ss_hdemo_sk#3 ASC NULLS FIRST], false, 0 + +(99) Scan parquet +Output [3]: [hd_demo_sk#15, hd_dep_count#16, hd_vehicle_count#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(EqualTo(hd_dep_count,6),GreaterThan(hd_vehicle_count,2)), IsNotNull(hd_demo_sk)] +ReadSchema: struct + +(100) Filter +Input [3]: [hd_demo_sk#15, hd_dep_count#16, hd_vehicle_count#17] +Condition : (((hd_dep_count#16 = 6) OR (hd_vehicle_count#17 > 2)) AND isnotnull(hd_demo_sk#15)) + +(101) Project +Output [1]: [hd_demo_sk#15] +Input [3]: [hd_demo_sk#15, hd_dep_count#16, hd_vehicle_count#17] + +(102) Exchange +Input [1]: [hd_demo_sk#15] +Arguments: hashpartitioning(hd_demo_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(103) Sort +Input [1]: [hd_demo_sk#15] +Arguments: [hd_demo_sk#15 ASC NULLS FIRST], false, 0 + +(104) SortMergeJoin +Left keys [1]: [ss_hdemo_sk#3] +Right keys [1]: [hd_demo_sk#15] +Join type: Inner +Join condition: None + +(105) Project +Output [6]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8, s_city#14] +Input [8]: [ss_customer_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8, s_city#14, hd_demo_sk#15] + +(106) HashAggregate +Input [6]: [ss_customer_sk#2, ss_addr_sk#4, ss_ticket_number#6, ss_coupon_amt#7, ss_net_profit#8, s_city#14] +Keys [4]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, s_city#14] +Functions [2]: [partial_sum(UnscaledValue(ss_coupon_amt#7)), partial_sum(UnscaledValue(ss_net_profit#8))] +Aggregate Attributes [2]: [sum#20, sum#21] +Results [6]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, s_city#14, sum#31, sum#32] + +(107) Exchange +Input [6]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, s_city#14, sum#31, sum#32] +Arguments: hashpartitioning(ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, s_city#14, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(108) HashAggregate +Input [6]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, s_city#14, sum#31, sum#32] +Keys [4]: [ss_ticket_number#6, ss_customer_sk#2, ss_addr_sk#4, s_city#14] +Functions [2]: [sum(UnscaledValue(ss_coupon_amt#7)), sum(UnscaledValue(ss_net_profit#8))] +Aggregate Attributes [2]: [sum(UnscaledValue(ss_coupon_amt#7))#23, sum(UnscaledValue(ss_net_profit#8))#24] +Results [5]: [ss_ticket_number#6, ss_customer_sk#2, s_city#14, MakeDecimal(sum(UnscaledValue(ss_coupon_amt#7))#23,17,2) AS amt#25, MakeDecimal(sum(UnscaledValue(ss_net_profit#8))#24,17,2) AS profit#26] + +(109) Exchange +Input [5]: [ss_ticket_number#6, ss_customer_sk#2, s_city#14, amt#25, profit#26] +Arguments: hashpartitioning(ss_customer_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(110) Sort +Input [5]: [ss_ticket_number#6, ss_customer_sk#2, s_city#14, amt#25, profit#26] +Arguments: [ss_customer_sk#2 ASC NULLS FIRST], false, 0 + +(111) Scan parquet +Output [3]: [c_customer_sk#27, c_first_name#28, c_last_name#29] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk)] +ReadSchema: struct + +(112) Filter +Input [3]: [c_customer_sk#27, c_first_name#28, c_last_name#29] +Condition : isnotnull(c_customer_sk#27) + +(113) Exchange +Input [3]: [c_customer_sk#27, c_first_name#28, c_last_name#29] +Arguments: hashpartitioning(c_customer_sk#27, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(114) Sort +Input [3]: [c_customer_sk#27, c_first_name#28, c_last_name#29] +Arguments: [c_customer_sk#27 ASC NULLS FIRST], false, 0 + +(115) SortMergeJoin +Left keys [1]: [ss_customer_sk#2] +Right keys [1]: [c_customer_sk#27] +Join type: Inner +Join condition: None + +(116) Project +Output [7]: [c_last_name#29, c_first_name#28, substr(s_city#14, 1, 30) AS substr(s_city, 1, 30)#30, ss_ticket_number#6, amt#25, profit#26, s_city#14] +Input [8]: [ss_ticket_number#6, ss_customer_sk#2, s_city#14, amt#25, profit#26, c_customer_sk#27, c_first_name#28, c_last_name#29] + +(117) TakeOrderedAndProject +Input [7]: [c_last_name#29, c_first_name#28, substr(s_city, 1, 30)#30, ss_ticket_number#6, amt#25, profit#26, s_city#14] +Arguments: X, [c_last_name#29 ASC NULLS FIRST, c_first_name#28 ASC NULLS FIRST, substr(s_city#14, 1, 30) ASC NULLS FIRST, ss_ticket_number#6 ASC NULLS FIRST, profit#26 ASC NULLS FIRST], [c_last_name#29, c_first_name#28, substr(s_city, 1, 30)#30, ss_ticket_number#6, amt#25, profit#26] + +(118) AdaptiveSparkPlan +Output [6]: [c_last_name#29, c_first_name#28, substr(s_city, 1, 30)#30, ss_ticket_number#6, amt#25, profit#26] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q8.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q8.txt new file mode 100644 index 000000000..6593842c4 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q8.txt @@ -0,0 +1,892 @@ +== Physical Plan == +AdaptiveSparkPlan (162) ++- == Final Plan == + NativeTakeOrdered (105) + +- NativeProject (104) + +- NativeHashAggregate (103) + +- InputAdapter (102) + +- AQEShuffleRead (101) + +- ShuffleQueryStage (100), Statistics(X) + +- NativeShuffleExchange (99) + +- NativeHashAggregate (98) + +- NativeProject (97) + +- NativeProject (96) + +- NativeSortMergeJoin Inner (95) + :- NativeSort (39) + : +- InputAdapter (38) + : +- AQEShuffleRead (37) + : +- ShuffleQueryStage (36), Statistics(X) + : +- NativeShuffleExchange (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 (94) + +- InputAdapter (93) + +- AQEShuffleRead (92) + +- ShuffleQueryStage (91), Statistics(X) + +- NativeShuffleExchange (90) + +- NativeProject (89) + +- NativeHashAggregate (88) + +- InputAdapter (87) + +- AQEShuffleRead (86) + +- ShuffleQueryStage (85), Statistics(X) + +- NativeShuffleExchange (84) + +- NativeHashAggregate (83) + +- NativeSortMergeJoin LeftSemi (82) + :- NativeSort (48) + : +- InputAdapter (47) + : +- AQEShuffleRead (46) + : +- ShuffleQueryStage (45), Statistics(X) + : +- NativeShuffleExchange (44) + : +- NativeProject (43) + : +- NativeFilter (42) + : +- InputAdapter (41) + : +- NativeParquetScan (40) + +- NativeSort (81) + +- InputAdapter (80) + +- AQEShuffleRead (79) + +- ShuffleQueryStage (78), Statistics(X) + +- NativeShuffleExchange (77) + +- NativeProject (76) + +- NativeFilter (75) + +- NativeProject (74) + +- NativeHashAggregate (73) + +- InputAdapter (72) + +- AQEShuffleRead (71) + +- ShuffleQueryStage (70), Statistics(X) + +- NativeShuffleExchange (69) + +- NativeHashAggregate (68) + +- NativeProject (67) + +- NativeSortMergeJoin Inner (66) + :- NativeSort (56) + : +- InputAdapter (55) + : +- AQEShuffleRead (54) + : +- ShuffleQueryStage (53), Statistics(X) + : +- NativeShuffleExchange (52) + : +- NativeFilter (51) + : +- InputAdapter (50) + : +- NativeParquetScan (49) + +- NativeSort (65) + +- InputAdapter (64) + +- AQEShuffleRead (63) + +- ShuffleQueryStage (62), Statistics(X) + +- NativeShuffleExchange (61) + +- NativeProject (60) + +- NativeFilter (59) + +- InputAdapter (58) + +- NativeParquetScan (57) ++- == Initial Plan == + TakeOrderedAndProject (161) + +- HashAggregate (160) + +- Exchange (159) + +- HashAggregate (158) + +- Project (157) + +- SortMergeJoin Inner (156) + :- Sort (126) + : +- Exchange (125) + : +- Project (124) + : +- SortMergeJoin Inner (123) + : :- Sort (118) + : : +- Exchange (117) + : : +- Project (116) + : : +- SortMergeJoin Inner (115) + : : :- Sort (109) + : : : +- Exchange (108) + : : : +- Filter (107) + : : : +- Scan parquet (106) + : : +- Sort (114) + : : +- Exchange (113) + : : +- Project (112) + : : +- Filter (111) + : : +- Scan parquet (110) + : +- Sort (122) + : +- Exchange (121) + : +- Filter (120) + : +- Scan parquet (119) + +- Sort (155) + +- Exchange (154) + +- HashAggregate (153) + +- Exchange (152) + +- HashAggregate (151) + +- SortMergeJoin LeftSemi (150) + :- Sort (131) + : +- Exchange (130) + : +- Project (129) + : +- Filter (128) + : +- Scan parquet (127) + +- Sort (149) + +- Exchange (148) + +- Project (147) + +- Filter (146) + +- HashAggregate (145) + +- Exchange (144) + +- HashAggregate (143) + +- Project (142) + +- SortMergeJoin Inner (141) + :- Sort (135) + : +- Exchange (134) + : +- Filter (133) + : +- Scan parquet (132) + +- Sort (140) + +- Exchange (139) + +- Project (138) + +- Filter (137) + +- Scan parquet (136) + + +(106) Scan parquet +Output [3]: [ss_sold_date_sk#1, ss_store_sk#2, ss_net_profit#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [ss_sold_date_sk#1, ss_store_sk#2, ss_net_profit#3] +Arguments: [#1, #2, #3] + +(3) NativeFilter +Input [3]: [#1#1, #2#2, #3#3] +Condition : (isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_store_sk#2)) + +(4) NativeShuffleExchange +Input [3]: [#1#1, #2#2, #3#3] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [3]: [#1#1, #2#2, #3#3] +Arguments: X + +(6) AQEShuffleRead +Input [3]: [#1#1, #2#2, #3#3] +Arguments: coalesced + +(7) InputAdapter +Input [3]: [#1#1, #2#2, #3#3] + +(8) NativeSort +Input [3]: [#1#1, #2#2, #3#3] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(110) Scan parquet +Output [3]: [d_date_sk#4, d_year#5, d_qoy#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_qoy), IsNotNull(d_year), EqualTo(d_qoy,2), EqualTo(d_year,1998), IsNotNull(d_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [3]: [d_date_sk#4, d_year#5, d_qoy#6] +Arguments: [#4, #5, #6] + +(11) NativeFilter +Input [3]: [#4#4, #5#5, #6#6] +Condition : ((((isnotnull(d_qoy#6) AND isnotnull(d_year#5)) AND (d_qoy#6 = 2)) AND (d_year#5 = 1998)) AND isnotnull(d_date_sk#4)) + +(12) NativeProject +Output [1]: [d_date_sk#4] +Input [3]: [#4#4, #5#5, #6#6] + +(13) NativeShuffleExchange +Input [1]: [d_date_sk#4] +Arguments: hashpartitioning(d_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [1]: [d_date_sk#4] +Arguments: X + +(15) AQEShuffleRead +Input [1]: [d_date_sk#4] +Arguments: coalesced + +(16) InputAdapter +Input [1]: [d_date_sk#4] + +(17) NativeSort +Input [1]: [d_date_sk#4] +Arguments: [d_date_sk#4 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#4] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [2]: [ss_store_sk#2, ss_net_profit#3] +Input [4]: [#1#1, #2#2, #3#3, d_date_sk#4] + +(20) NativeShuffleExchange +Input [2]: [ss_store_sk#2, ss_net_profit#3] +Arguments: hashpartitioning(ss_store_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [2]: [ss_store_sk#2, ss_net_profit#3] +Arguments: X + +(22) AQEShuffleRead +Input [2]: [ss_store_sk#2, ss_net_profit#3] +Arguments: coalesced + +(23) InputAdapter +Input [2]: [ss_store_sk#2, ss_net_profit#3] + +(24) NativeSort +Input [2]: [ss_store_sk#2, ss_net_profit#3] +Arguments: [ss_store_sk#2 ASC NULLS FIRST], false + +(119) Scan parquet +Output [3]: [s_store_sk#7, s_store_name#8, s_zip#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk), IsNotNull(s_zip)] +ReadSchema: struct + +(26) InputAdapter +Input [3]: [s_store_sk#7, s_store_name#8, s_zip#9] +Arguments: [#7, #8, #9] + +(27) NativeFilter +Input [3]: [#7#7, #8#8, #9#9] +Condition : (isnotnull(s_store_sk#7) AND isnotnull(s_zip#9)) + +(28) NativeShuffleExchange +Input [3]: [#7#7, #8#8, #9#9] +Arguments: hashpartitioning(s_store_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(29) ShuffleQueryStage +Output [3]: [#7#7, #8#8, #9#9] +Arguments: X + +(30) AQEShuffleRead +Input [3]: [#7#7, #8#8, #9#9] +Arguments: coalesced + +(31) InputAdapter +Input [3]: [#7#7, #8#8, #9#9] + +(32) NativeSort +Input [3]: [#7#7, #8#8, #9#9] +Arguments: [s_store_sk#7 ASC NULLS FIRST], false + +(33) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#2] +Right keys [1]: [s_store_sk#7] +Join type: Inner +Join condition: None + +(34) NativeProject +Output [3]: [ss_net_profit#3, s_store_name#8, s_zip#9] +Input [5]: [ss_store_sk#2, ss_net_profit#3, #7#7, #8#8, #9#9] + +(35) NativeShuffleExchange +Input [3]: [ss_net_profit#3, s_store_name#8, s_zip#9] +Arguments: hashpartitioning(substr(s_zip#9, 1, 2), 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(36) ShuffleQueryStage +Output [3]: [ss_net_profit#3, s_store_name#8, s_zip#9] +Arguments: X + +(37) AQEShuffleRead +Input [3]: [ss_net_profit#3, s_store_name#8, s_zip#9] +Arguments: coalesced + +(38) InputAdapter +Input [3]: [ss_net_profit#3, s_store_name#8, s_zip#9] + +(39) NativeSort +Input [3]: [ss_net_profit#3, s_store_name#8, s_zip#9] +Arguments: [substr(s_zip#9, 1, 2) ASC NULLS FIRST], false + +(127) Scan parquet +Output [1]: [ca_zip#10] +Batched: true +Location: InMemoryFileIndex [file:/] +ReadSchema: struct + +(41) InputAdapter +Input [1]: [ca_zip#10] +Arguments: [#10] + +(42) NativeFilter +Input [1]: [#10#10] +Condition : (substr(ca_zip#10, 1, 5) INSET 10144, 10336, 10390, 10445, 10516, 10567, 11101, 11356, 11376, 11489, 11634, 11928, 12305, 13354, 13375, 13376, 13394, 13595, 13695, 13955, 14060, 14089, 14171, 14328, 14663, 14867, 14922, 15126, 15146, 15371, 15455, 15559, 15723, 15734, 15765, 15798, 15882, 16021, 16725, 16807, 17043, 17183, 17871, 17879, 17920, 18119, 18270, 18376, 18383, 18426, 18652, 18767, 18799, 18840, 18842, 18845, 18906, 19430, 19505, 19512, 19515, 19736, 19769, 19849, 20004, 20260, 20548, 21076, 21195, 21286, 21309, 21337, 21756, 22152, 22245, 22246, 22351, 22437, 22461, 22685, 22744, 22752, 22927, 23006, 23470, 23932, 23968, 24128, 24206, 24317, 24610, 24671, 24676, 24996, 25003, 25103, 25280, 25486, 25631, 25733, 25782, 25858, 25989, 26065, 26105, 26231, 26233, 26653, 26689, 26859, 27068, 27156, 27385, 27700, 28286, 28488, 28545, 28577, 28587, 28709, 28810, 28898, 28915, 29178, 29741, 29839, 30010, 30122, 30431, 30450, 30469, 30625, 30903, 31016, 31029, 31387, 31671, 31880, 32213, 32754, 33123, 33282, 33515, 33786, 34102, 34322, 34425, 35258, 35458, 35474, 35576, 35850, 35942, 36233, 36420, 36446, 36495, 36634, 37125, 37126, 37930, 38122, 38193, 38415, 38607, 38935, 39127, 39192, 39371, 39516, 39736, 39861, 39972, 40081, 40162, 40558, 40604, 41248, 41367, 41368, 41766, 41918, 42029, 42666, 42961, 43285, 43848, 43933, 44165, 44438, 45200, 45266, 45375, 45549, 45692, 45721, 45748, 46081, 46136, 46820, 47305, 47537, 47770, 48033, 48425, 48583, 49130, 49156, 49448, 50016, 50298, 50308, 50412, 51061, 51103, 51200, 51211, 51622, 51649, 51650, 51798, 51949, 52867, 53179, 53268, 53535, 53672, 54364, 54601, 54917, 55253, 55307, 55565, 56240, 56458, 56529, 56571, 56575, 56616, 56691, 56910, 57047, 57647, 57665, 57834, 57855, 58048, 58058, 58078, 58263, 58470, 58943, 59166, 59402, 60099, 60279, 60576, 61265, 61547, 61810, 61860, 62377, 62496, 62878, 62971, 63089, 63193, 63435, 63792, 63837, 63981, 64034, 64147, 64457, 64528, 64544, 65084, 65164, 66162, 66708, 66864, 67030, 67301, 67467, 67473, 67853, 67875, 67897, 68014, 68100, 68101, 68309, 68341, 68621, 68786, 68806, 68880, 68893, 68908, 69035, 69399, 69913, 69952, 70372, 70466, 70738, 71256, 71286, 71791, 71954, 72013, 72151, 72175, 72305, 72325, 72425, 72550, 72823, 73134, 73171, 73241, 73273, 73520, 73650, 74351, 75691, 76107, 76231, 76232, 76614, 76638, 76698, 77191, 77556, 77610, 77721, 78451, 78567, 78668, 78890, 79077, 79777, 79994, 81019, 81096, 81312, 81426, 82136, 82276, 82636, 83041, 83144, 83444, 83849, 83921, 83926, 83933, 84093, 84935, 85816, 86057, 86198, 86284, 86379, 87343, 87501, 87816, 88086, 88190, 88424, 88885, 89091, 89360, 90225, 90257, 90578, 91068, 91110, 91137, 91393, 92712, 94167, 94627, 94898, 94945, 94983, 96451, 96576, 96765, 96888, 96976, 97189, 97789, 98025, 98235, 98294, 98359, 98569, 99076, 99543 AND isnotnull(substr(ca_zip#10, 1, 5))) + +(43) NativeProject +Output [1]: [substr(ca_zip#10, 1, 5) AS ca_zip#11] +Input [1]: [#10#10] + +(44) NativeShuffleExchange +Input [1]: [ca_zip#11] +Arguments: hashpartitioning(coalesce(ca_zip#11, ), isnull(ca_zip#11), 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(45) ShuffleQueryStage +Output [1]: [ca_zip#11] +Arguments: X + +(46) AQEShuffleRead +Input [1]: [ca_zip#11] +Arguments: coalesced + +(47) InputAdapter +Input [1]: [ca_zip#11] + +(48) NativeSort +Input [1]: [ca_zip#11] +Arguments: [coalesce(ca_zip#11, ) ASC NULLS FIRST, isnull(ca_zip#11) ASC NULLS FIRST], false + +(132) Scan parquet +Output [2]: [ca_address_sk#12, ca_zip#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk)] +ReadSchema: struct + +(50) InputAdapter +Input [2]: [ca_address_sk#12, ca_zip#13] +Arguments: [#12, #13] + +(51) NativeFilter +Input [2]: [#12#12, #13#13] +Condition : isnotnull(ca_address_sk#12) + +(52) NativeShuffleExchange +Input [2]: [#12#12, #13#13] +Arguments: hashpartitioning(ca_address_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(53) ShuffleQueryStage +Output [2]: [#12#12, #13#13] +Arguments: X + +(54) AQEShuffleRead +Input [2]: [#12#12, #13#13] +Arguments: coalesced + +(55) InputAdapter +Input [2]: [#12#12, #13#13] + +(56) NativeSort +Input [2]: [#12#12, #13#13] +Arguments: [ca_address_sk#12 ASC NULLS FIRST], false + +(136) Scan parquet +Output [2]: [c_current_addr_sk#14, c_preferred_cust_flag#15] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_preferred_cust_flag), EqualTo(c_preferred_cust_flag,Y), IsNotNull(c_current_addr_sk)] +ReadSchema: struct + +(58) InputAdapter +Input [2]: [c_current_addr_sk#14, c_preferred_cust_flag#15] +Arguments: [#14, #15] + +(59) NativeFilter +Input [2]: [#14#14, #15#15] +Condition : ((isnotnull(c_preferred_cust_flag#15) AND (c_preferred_cust_flag#15 = Y)) AND isnotnull(c_current_addr_sk#14)) + +(60) NativeProject +Output [1]: [c_current_addr_sk#14] +Input [2]: [#14#14, #15#15] + +(61) NativeShuffleExchange +Input [1]: [c_current_addr_sk#14] +Arguments: hashpartitioning(c_current_addr_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(62) ShuffleQueryStage +Output [1]: [c_current_addr_sk#14] +Arguments: X + +(63) AQEShuffleRead +Input [1]: [c_current_addr_sk#14] +Arguments: coalesced + +(64) InputAdapter +Input [1]: [c_current_addr_sk#14] + +(65) NativeSort +Input [1]: [c_current_addr_sk#14] +Arguments: [c_current_addr_sk#14 ASC NULLS FIRST], false + +(66) NativeSortMergeJoin +Left keys [1]: [ca_address_sk#12] +Right keys [1]: [c_current_addr_sk#14] +Join type: Inner +Join condition: None + +(67) NativeProject +Output [1]: [ca_zip#13] +Input [3]: [#12#12, #13#13, c_current_addr_sk#14] + +(68) NativeHashAggregate +Input [1]: [ca_zip#13] +Keys [1]: [ca_zip#13] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#16] +Results [2]: [ca_zip#13, #17#17] + +(69) NativeShuffleExchange +Input [2]: [ca_zip#13, #17#17] +Arguments: hashpartitioning(ca_zip#13, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(70) ShuffleQueryStage +Output [2]: [ca_zip#13, #17#17] +Arguments: X + +(71) AQEShuffleRead +Input [2]: [ca_zip#13, #17#17] +Arguments: coalesced + +(72) InputAdapter +Input [2]: [ca_zip#13, #17#17] + +(73) NativeHashAggregate +Input [2]: [ca_zip#13, #17#17] +Keys [1]: [ca_zip#13] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#18] +Results [2]: [ca_zip#13, count(1)#18] + +(74) NativeProject +Output [2]: [substr(ca_zip#13, 1, 5) AS ca_zip#19, count(1)#18 AS cnt#20] +Input [2]: [ca_zip#13, count(1)#18] + +(75) NativeFilter +Input [2]: [ca_zip#19, cnt#20] +Condition : (cnt#20 > 10) + +(76) NativeProject +Output [1]: [ca_zip#19] +Input [2]: [ca_zip#19, cnt#20] + +(77) NativeShuffleExchange +Input [1]: [ca_zip#19] +Arguments: hashpartitioning(coalesce(ca_zip#19, ), isnull(ca_zip#19), 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(78) ShuffleQueryStage +Output [1]: [ca_zip#19] +Arguments: X + +(79) AQEShuffleRead +Input [1]: [ca_zip#19] +Arguments: coalesced + +(80) InputAdapter +Input [1]: [ca_zip#19] + +(81) NativeSort +Input [1]: [ca_zip#19] +Arguments: [coalesce(ca_zip#19, ) ASC NULLS FIRST, isnull(ca_zip#19) ASC NULLS FIRST], false + +(82) NativeSortMergeJoin +Left keys [2]: [coalesce(ca_zip#11, ), isnull(ca_zip#11)] +Right keys [2]: [coalesce(ca_zip#19, ), isnull(ca_zip#19)] +Join type: LeftSemi +Join condition: None + +(83) NativeHashAggregate +Input [1]: [ca_zip#11] +Keys [1]: [ca_zip#11] +Functions: [] +Aggregate Attributes: [] +Results [2]: [ca_zip#11, #17#17] + +(84) NativeShuffleExchange +Input [2]: [ca_zip#11, #17#17] +Arguments: hashpartitioning(ca_zip#11, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(85) ShuffleQueryStage +Output [2]: [ca_zip#11, #17#17] +Arguments: X + +(86) AQEShuffleRead +Input [2]: [ca_zip#11, #17#17] +Arguments: coalesced + +(87) InputAdapter +Input [2]: [ca_zip#11, #17#17] + +(88) NativeHashAggregate +Input [2]: [ca_zip#11, #17#17] +Keys [1]: [ca_zip#11] +Functions: [] +Aggregate Attributes: [] +Results [2]: [ca_zip#11, #17#17] + +(89) NativeProject +Output [1]: [ca_zip#11] +Input [2]: [ca_zip#11, #17#17] + +(90) NativeShuffleExchange +Input [1]: [ca_zip#11] +Arguments: hashpartitioning(substr(ca_zip#11, 1, 2), 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(91) ShuffleQueryStage +Output [1]: [ca_zip#11] +Arguments: X + +(92) AQEShuffleRead +Input [1]: [ca_zip#11] +Arguments: coalesced + +(93) InputAdapter +Input [1]: [ca_zip#11] + +(94) NativeSort +Input [1]: [ca_zip#11] +Arguments: [substr(ca_zip#11, 1, 2) ASC NULLS FIRST], false + +(95) NativeSortMergeJoin +Left keys [1]: [substr(s_zip#9, 1, 2)] +Right keys [1]: [substr(ca_zip#11, 1, 2)] +Join type: Inner +Join condition: None + +(96) NativeProject +Output [2]: [ss_net_profit#3, s_store_name#8] +Input [4]: [ss_net_profit#3, s_store_name#8, s_zip#9, ca_zip#11] + +(97) NativeProject +Output [2]: [s_store_name#8 AS s_store_name#8, UnscaledValue(ss_net_profit#3) AS _c1#21] +Input [2]: [ss_net_profit#3, s_store_name#8] + +(98) NativeHashAggregate +Input [2]: [s_store_name#8, _c1#21] +Keys [1]: [s_store_name#8] +Functions [1]: [partial_sum(_c1#21)] +Aggregate Attributes [1]: [sum#22] +Results [2]: [s_store_name#8, #17#17] + +(99) NativeShuffleExchange +Input [2]: [s_store_name#8, #17#17] +Arguments: hashpartitioning(s_store_name#8, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(100) ShuffleQueryStage +Output [2]: [s_store_name#8, #17#17] +Arguments: X + +(101) AQEShuffleRead +Input [2]: [s_store_name#8, #17#17] +Arguments: coalesced + +(102) InputAdapter +Input [2]: [s_store_name#8, #17#17] + +(103) NativeHashAggregate +Input [2]: [s_store_name#8, #17#17] +Keys [1]: [s_store_name#8] +Functions [1]: [sum(UnscaledValue(ss_net_profit#3))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_net_profit#3))#23] +Results [2]: [s_store_name#8, sum(UnscaledValue(ss_net_profit#3))#23] + +(104) NativeProject +Output [2]: [s_store_name#8, MakeDecimal(sum(UnscaledValue(ss_net_profit#3))#23,17,2) AS sum(ss_net_profit)#24] +Input [2]: [s_store_name#8, sum(UnscaledValue(ss_net_profit#3))#23] + +(105) NativeTakeOrdered +Input [2]: [s_store_name#8, sum(ss_net_profit)#24] +Arguments: X, [s_store_name#8 ASC NULLS FIRST] + +(106) Scan parquet +Output [3]: [ss_sold_date_sk#1, ss_store_sk#2, ss_net_profit#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(107) Filter +Input [3]: [ss_sold_date_sk#1, ss_store_sk#2, ss_net_profit#3] +Condition : (isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_store_sk#2)) + +(108) Exchange +Input [3]: [ss_sold_date_sk#1, ss_store_sk#2, ss_net_profit#3] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(109) Sort +Input [3]: [ss_sold_date_sk#1, ss_store_sk#2, ss_net_profit#3] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(110) Scan parquet +Output [3]: [d_date_sk#4, d_year#5, d_qoy#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_qoy), IsNotNull(d_year), EqualTo(d_qoy,2), EqualTo(d_year,1998), IsNotNull(d_date_sk)] +ReadSchema: struct + +(111) Filter +Input [3]: [d_date_sk#4, d_year#5, d_qoy#6] +Condition : ((((isnotnull(d_qoy#6) AND isnotnull(d_year#5)) AND (d_qoy#6 = 2)) AND (d_year#5 = 1998)) AND isnotnull(d_date_sk#4)) + +(112) Project +Output [1]: [d_date_sk#4] +Input [3]: [d_date_sk#4, d_year#5, d_qoy#6] + +(113) Exchange +Input [1]: [d_date_sk#4] +Arguments: hashpartitioning(d_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(114) Sort +Input [1]: [d_date_sk#4] +Arguments: [d_date_sk#4 ASC NULLS FIRST], false, 0 + +(115) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#4] +Join type: Inner +Join condition: None + +(116) Project +Output [2]: [ss_store_sk#2, ss_net_profit#3] +Input [4]: [ss_sold_date_sk#1, ss_store_sk#2, ss_net_profit#3, d_date_sk#4] + +(117) Exchange +Input [2]: [ss_store_sk#2, ss_net_profit#3] +Arguments: hashpartitioning(ss_store_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(118) Sort +Input [2]: [ss_store_sk#2, ss_net_profit#3] +Arguments: [ss_store_sk#2 ASC NULLS FIRST], false, 0 + +(119) Scan parquet +Output [3]: [s_store_sk#7, s_store_name#8, s_zip#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk), IsNotNull(s_zip)] +ReadSchema: struct + +(120) Filter +Input [3]: [s_store_sk#7, s_store_name#8, s_zip#9] +Condition : (isnotnull(s_store_sk#7) AND isnotnull(s_zip#9)) + +(121) Exchange +Input [3]: [s_store_sk#7, s_store_name#8, s_zip#9] +Arguments: hashpartitioning(s_store_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(122) Sort +Input [3]: [s_store_sk#7, s_store_name#8, s_zip#9] +Arguments: [s_store_sk#7 ASC NULLS FIRST], false, 0 + +(123) SortMergeJoin +Left keys [1]: [ss_store_sk#2] +Right keys [1]: [s_store_sk#7] +Join type: Inner +Join condition: None + +(124) Project +Output [3]: [ss_net_profit#3, s_store_name#8, s_zip#9] +Input [5]: [ss_store_sk#2, ss_net_profit#3, s_store_sk#7, s_store_name#8, s_zip#9] + +(125) Exchange +Input [3]: [ss_net_profit#3, s_store_name#8, s_zip#9] +Arguments: hashpartitioning(substr(s_zip#9, 1, 2), 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(126) Sort +Input [3]: [ss_net_profit#3, s_store_name#8, s_zip#9] +Arguments: [substr(s_zip#9, 1, 2) ASC NULLS FIRST], false, 0 + +(127) Scan parquet +Output [1]: [ca_zip#10] +Batched: true +Location: InMemoryFileIndex [file:/] +ReadSchema: struct + +(128) Filter +Input [1]: [ca_zip#10] +Condition : (substr(ca_zip#10, 1, 5) INSET 10144, 10336, 10390, 10445, 10516, 10567, 11101, 11356, 11376, 11489, 11634, 11928, 12305, 13354, 13375, 13376, 13394, 13595, 13695, 13955, 14060, 14089, 14171, 14328, 14663, 14867, 14922, 15126, 15146, 15371, 15455, 15559, 15723, 15734, 15765, 15798, 15882, 16021, 16725, 16807, 17043, 17183, 17871, 17879, 17920, 18119, 18270, 18376, 18383, 18426, 18652, 18767, 18799, 18840, 18842, 18845, 18906, 19430, 19505, 19512, 19515, 19736, 19769, 19849, 20004, 20260, 20548, 21076, 21195, 21286, 21309, 21337, 21756, 22152, 22245, 22246, 22351, 22437, 22461, 22685, 22744, 22752, 22927, 23006, 23470, 23932, 23968, 24128, 24206, 24317, 24610, 24671, 24676, 24996, 25003, 25103, 25280, 25486, 25631, 25733, 25782, 25858, 25989, 26065, 26105, 26231, 26233, 26653, 26689, 26859, 27068, 27156, 27385, 27700, 28286, 28488, 28545, 28577, 28587, 28709, 28810, 28898, 28915, 29178, 29741, 29839, 30010, 30122, 30431, 30450, 30469, 30625, 30903, 31016, 31029, 31387, 31671, 31880, 32213, 32754, 33123, 33282, 33515, 33786, 34102, 34322, 34425, 35258, 35458, 35474, 35576, 35850, 35942, 36233, 36420, 36446, 36495, 36634, 37125, 37126, 37930, 38122, 38193, 38415, 38607, 38935, 39127, 39192, 39371, 39516, 39736, 39861, 39972, 40081, 40162, 40558, 40604, 41248, 41367, 41368, 41766, 41918, 42029, 42666, 42961, 43285, 43848, 43933, 44165, 44438, 45200, 45266, 45375, 45549, 45692, 45721, 45748, 46081, 46136, 46820, 47305, 47537, 47770, 48033, 48425, 48583, 49130, 49156, 49448, 50016, 50298, 50308, 50412, 51061, 51103, 51200, 51211, 51622, 51649, 51650, 51798, 51949, 52867, 53179, 53268, 53535, 53672, 54364, 54601, 54917, 55253, 55307, 55565, 56240, 56458, 56529, 56571, 56575, 56616, 56691, 56910, 57047, 57647, 57665, 57834, 57855, 58048, 58058, 58078, 58263, 58470, 58943, 59166, 59402, 60099, 60279, 60576, 61265, 61547, 61810, 61860, 62377, 62496, 62878, 62971, 63089, 63193, 63435, 63792, 63837, 63981, 64034, 64147, 64457, 64528, 64544, 65084, 65164, 66162, 66708, 66864, 67030, 67301, 67467, 67473, 67853, 67875, 67897, 68014, 68100, 68101, 68309, 68341, 68621, 68786, 68806, 68880, 68893, 68908, 69035, 69399, 69913, 69952, 70372, 70466, 70738, 71256, 71286, 71791, 71954, 72013, 72151, 72175, 72305, 72325, 72425, 72550, 72823, 73134, 73171, 73241, 73273, 73520, 73650, 74351, 75691, 76107, 76231, 76232, 76614, 76638, 76698, 77191, 77556, 77610, 77721, 78451, 78567, 78668, 78890, 79077, 79777, 79994, 81019, 81096, 81312, 81426, 82136, 82276, 82636, 83041, 83144, 83444, 83849, 83921, 83926, 83933, 84093, 84935, 85816, 86057, 86198, 86284, 86379, 87343, 87501, 87816, 88086, 88190, 88424, 88885, 89091, 89360, 90225, 90257, 90578, 91068, 91110, 91137, 91393, 92712, 94167, 94627, 94898, 94945, 94983, 96451, 96576, 96765, 96888, 96976, 97189, 97789, 98025, 98235, 98294, 98359, 98569, 99076, 99543 AND isnotnull(substr(ca_zip#10, 1, 5))) + +(129) Project +Output [1]: [substr(ca_zip#10, 1, 5) AS ca_zip#11] +Input [1]: [ca_zip#10] + +(130) Exchange +Input [1]: [ca_zip#11] +Arguments: hashpartitioning(coalesce(ca_zip#11, ), isnull(ca_zip#11), 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(131) Sort +Input [1]: [ca_zip#11] +Arguments: [coalesce(ca_zip#11, ) ASC NULLS FIRST, isnull(ca_zip#11) ASC NULLS FIRST], false, 0 + +(132) Scan parquet +Output [2]: [ca_address_sk#12, ca_zip#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk)] +ReadSchema: struct + +(133) Filter +Input [2]: [ca_address_sk#12, ca_zip#13] +Condition : isnotnull(ca_address_sk#12) + +(134) Exchange +Input [2]: [ca_address_sk#12, ca_zip#13] +Arguments: hashpartitioning(ca_address_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(135) Sort +Input [2]: [ca_address_sk#12, ca_zip#13] +Arguments: [ca_address_sk#12 ASC NULLS FIRST], false, 0 + +(136) Scan parquet +Output [2]: [c_current_addr_sk#14, c_preferred_cust_flag#15] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_preferred_cust_flag), EqualTo(c_preferred_cust_flag,Y), IsNotNull(c_current_addr_sk)] +ReadSchema: struct + +(137) Filter +Input [2]: [c_current_addr_sk#14, c_preferred_cust_flag#15] +Condition : ((isnotnull(c_preferred_cust_flag#15) AND (c_preferred_cust_flag#15 = Y)) AND isnotnull(c_current_addr_sk#14)) + +(138) Project +Output [1]: [c_current_addr_sk#14] +Input [2]: [c_current_addr_sk#14, c_preferred_cust_flag#15] + +(139) Exchange +Input [1]: [c_current_addr_sk#14] +Arguments: hashpartitioning(c_current_addr_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(140) Sort +Input [1]: [c_current_addr_sk#14] +Arguments: [c_current_addr_sk#14 ASC NULLS FIRST], false, 0 + +(141) SortMergeJoin +Left keys [1]: [ca_address_sk#12] +Right keys [1]: [c_current_addr_sk#14] +Join type: Inner +Join condition: None + +(142) Project +Output [1]: [ca_zip#13] +Input [3]: [ca_address_sk#12, ca_zip#13, c_current_addr_sk#14] + +(143) HashAggregate +Input [1]: [ca_zip#13] +Keys [1]: [ca_zip#13] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#16] +Results [2]: [ca_zip#13, count#25] + +(144) Exchange +Input [2]: [ca_zip#13, count#25] +Arguments: hashpartitioning(ca_zip#13, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(145) HashAggregate +Input [2]: [ca_zip#13, count#25] +Keys [1]: [ca_zip#13] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#18] +Results [2]: [substr(ca_zip#13, 1, 5) AS ca_zip#19, count(1)#18 AS cnt#20] + +(146) Filter +Input [2]: [ca_zip#19, cnt#20] +Condition : (cnt#20 > 10) + +(147) Project +Output [1]: [ca_zip#19] +Input [2]: [ca_zip#19, cnt#20] + +(148) Exchange +Input [1]: [ca_zip#19] +Arguments: hashpartitioning(coalesce(ca_zip#19, ), isnull(ca_zip#19), 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(149) Sort +Input [1]: [ca_zip#19] +Arguments: [coalesce(ca_zip#19, ) ASC NULLS FIRST, isnull(ca_zip#19) ASC NULLS FIRST], false, 0 + +(150) SortMergeJoin +Left keys [2]: [coalesce(ca_zip#11, ), isnull(ca_zip#11)] +Right keys [2]: [coalesce(ca_zip#19, ), isnull(ca_zip#19)] +Join type: LeftSemi +Join condition: None + +(151) HashAggregate +Input [1]: [ca_zip#11] +Keys [1]: [ca_zip#11] +Functions: [] +Aggregate Attributes: [] +Results [1]: [ca_zip#11] + +(152) Exchange +Input [1]: [ca_zip#11] +Arguments: hashpartitioning(ca_zip#11, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(153) HashAggregate +Input [1]: [ca_zip#11] +Keys [1]: [ca_zip#11] +Functions: [] +Aggregate Attributes: [] +Results [1]: [ca_zip#11] + +(154) Exchange +Input [1]: [ca_zip#11] +Arguments: hashpartitioning(substr(ca_zip#11, 1, 2), 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(155) Sort +Input [1]: [ca_zip#11] +Arguments: [substr(ca_zip#11, 1, 2) ASC NULLS FIRST], false, 0 + +(156) SortMergeJoin +Left keys [1]: [substr(s_zip#9, 1, 2)] +Right keys [1]: [substr(ca_zip#11, 1, 2)] +Join type: Inner +Join condition: None + +(157) Project +Output [2]: [ss_net_profit#3, s_store_name#8] +Input [4]: [ss_net_profit#3, s_store_name#8, s_zip#9, ca_zip#11] + +(158) HashAggregate +Input [2]: [ss_net_profit#3, s_store_name#8] +Keys [1]: [s_store_name#8] +Functions [1]: [partial_sum(UnscaledValue(ss_net_profit#3))] +Aggregate Attributes [1]: [sum#22] +Results [2]: [s_store_name#8, sum#26] + +(159) Exchange +Input [2]: [s_store_name#8, sum#26] +Arguments: hashpartitioning(s_store_name#8, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(160) HashAggregate +Input [2]: [s_store_name#8, sum#26] +Keys [1]: [s_store_name#8] +Functions [1]: [sum(UnscaledValue(ss_net_profit#3))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_net_profit#3))#23] +Results [2]: [s_store_name#8, MakeDecimal(sum(UnscaledValue(ss_net_profit#3))#23,17,2) AS sum(ss_net_profit)#24] + +(161) TakeOrderedAndProject +Input [2]: [s_store_name#8, sum(ss_net_profit)#24] +Arguments: X, [s_store_name#8 ASC NULLS FIRST], [s_store_name#8, sum(ss_net_profit)#24] + +(162) AdaptiveSparkPlan +Output [2]: [s_store_name#8, sum(ss_net_profit)#24] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q80.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q80.txt new file mode 100644 index 000000000..721300cd0 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q80.txt @@ -0,0 +1,2215 @@ +== Physical Plan == +AdaptiveSparkPlan (411) ++- == Final Plan == + NativeTakeOrdered (260) + +- NativeProject (259) + +- NativeHashAggregate (258) + +- InputAdapter (257) + +- AQEShuffleRead (256) + +- ShuffleQueryStage (255), Statistics(X) + +- NativeShuffleExchange (254) + +- NativeHashAggregate (253) + +- NativeExpand (252) + +- InputAdapter (251) + +- NativeUnion (250) + :- NativeProject (89) + : +- NativeHashAggregate (88) + : +- InputAdapter (87) + : +- AQEShuffleRead (86) + : +- ShuffleQueryStage (85), Statistics(X) + : +- NativeShuffleExchange (84) + : +- NativeHashAggregate (83) + : +- NativeProject (82) + : +- NativeProject (81) + : +- NativeSortMergeJoin Inner (80) + : :- NativeSort (70) + : : +- InputAdapter (69) + : : +- AQEShuffleRead (68) + : : +- ShuffleQueryStage (67), Statistics(X) + : : +- NativeShuffleExchange (66) + : : +- NativeProject (65) + : : +- NativeSortMergeJoin Inner (64) + : : :- NativeSort (54) + : : : +- InputAdapter (53) + : : : +- AQEShuffleRead (52) + : : : +- ShuffleQueryStage (51), Statistics(X) + : : : +- NativeShuffleExchange (50) + : : : +- NativeProject (49) + : : : +- NativeSortMergeJoin Inner (48) + : : : :- NativeSort (39) + : : : : +- InputAdapter (38) + : : : : +- AQEShuffleRead (37) + : : : : +- ShuffleQueryStage (36), Statistics(X) + : : : : +- NativeShuffleExchange (35) + : : : : +- NativeProject (34) + : : : : +- NativeSortMergeJoin Inner (33) + : : : : :- NativeSort (23) + : : : : : +- InputAdapter (22) + : : : : : +- AQEShuffleRead (21) + : : : : : +- ShuffleQueryStage (20), Statistics(X) + : : : : : +- NativeShuffleExchange (19) + : : : : : +- NativeProject (18) + : : : : : +- NativeSortMergeJoin LeftOuter (17) + : : : : : :- NativeSort (8) + : : : : : : +- InputAdapter (7) + : : : : : : +- AQEShuffleRead (6) + : : : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : : : +- NativeShuffleExchange (4) + : : : : : : +- NativeFilter (3) + : : : : : : +- InputAdapter (2) + : : : : : : +- NativeParquetScan (1) + : : : : : +- NativeSort (16) + : : : : : +- InputAdapter (15) + : : : : : +- AQEShuffleRead (14) + : : : : : +- ShuffleQueryStage (13), Statistics(X) + : : : : : +- NativeShuffleExchange (12) + : : : : : +- NativeFilter (11) + : : : : : +- InputAdapter (10) + : : : : : +- NativeParquetScan (9) + : : : : +- NativeSort (32) + : : : : +- InputAdapter (31) + : : : : +- AQEShuffleRead (30) + : : : : +- ShuffleQueryStage (29), Statistics(X) + : : : : +- NativeShuffleExchange (28) + : : : : +- NativeProject (27) + : : : : +- NativeFilter (26) + : : : : +- InputAdapter (25) + : : : : +- NativeParquetScan (24) + : : : +- NativeSort (47) + : : : +- InputAdapter (46) + : : : +- AQEShuffleRead (45) + : : : +- ShuffleQueryStage (44), Statistics(X) + : : : +- NativeShuffleExchange (43) + : : : +- NativeFilter (42) + : : : +- InputAdapter (41) + : : : +- NativeParquetScan (40) + : : +- NativeSort (63) + : : +- InputAdapter (62) + : : +- AQEShuffleRead (61) + : : +- ShuffleQueryStage (60), Statistics(X) + : : +- NativeShuffleExchange (59) + : : +- NativeProject (58) + : : +- NativeFilter (57) + : : +- InputAdapter (56) + : : +- NativeParquetScan (55) + : +- NativeSort (79) + : +- InputAdapter (78) + : +- AQEShuffleRead (77) + : +- ShuffleQueryStage (76), Statistics(X) + : +- NativeShuffleExchange (75) + : +- NativeProject (74) + : +- NativeFilter (73) + : +- InputAdapter (72) + : +- NativeParquetScan (71) + :- NativeProject (169) + : +- NativeHashAggregate (168) + : +- InputAdapter (167) + : +- AQEShuffleRead (166) + : +- ShuffleQueryStage (165), Statistics(X) + : +- NativeShuffleExchange (164) + : +- NativeHashAggregate (163) + : +- NativeProject (162) + : +- NativeProject (161) + : +- NativeSortMergeJoin Inner (160) + : :- NativeSort (153) + : : +- InputAdapter (152) + : : +- AQEShuffleRead (151) + : : +- ShuffleQueryStage (150), Statistics(X) + : : +- NativeShuffleExchange (149) + : : +- NativeProject (148) + : : +- NativeSortMergeJoin Inner (147) + : : :- NativeSort (140) + : : : +- InputAdapter (139) + : : : +- AQEShuffleRead (138) + : : : +- ShuffleQueryStage (137), Statistics(X) + : : : +- NativeShuffleExchange (136) + : : : +- NativeProject (135) + : : : +- NativeSortMergeJoin Inner (134) + : : : :- NativeSort (125) + : : : : +- InputAdapter (124) + : : : : +- AQEShuffleRead (123) + : : : : +- ShuffleQueryStage (122), Statistics(X) + : : : : +- NativeShuffleExchange (121) + : : : : +- NativeProject (120) + : : : : +- NativeSortMergeJoin Inner (119) + : : : : :- NativeSort (112) + : : : : : +- InputAdapter (111) + : : : : : +- AQEShuffleRead (110) + : : : : : +- ShuffleQueryStage (109), Statistics(X) + : : : : : +- NativeShuffleExchange (108) + : : : : : +- NativeProject (107) + : : : : : +- NativeSortMergeJoin LeftOuter (106) + : : : : : :- NativeSort (97) + : : : : : : +- InputAdapter (96) + : : : : : : +- AQEShuffleRead (95) + : : : : : : +- ShuffleQueryStage (94), Statistics(X) + : : : : : : +- NativeShuffleExchange (93) + : : : : : : +- NativeFilter (92) + : : : : : : +- InputAdapter (91) + : : : : : : +- NativeParquetScan (90) + : : : : : +- NativeSort (105) + : : : : : +- InputAdapter (104) + : : : : : +- AQEShuffleRead (103) + : : : : : +- ShuffleQueryStage (102), Statistics(X) + : : : : : +- NativeShuffleExchange (101) + : : : : : +- NativeFilter (100) + : : : : : +- InputAdapter (99) + : : : : : +- NativeParquetScan (98) + : : : : +- NativeSort (118) + : : : : +- InputAdapter (117) + : : : : +- InputAdapter (116) + : : : : +- AQEShuffleRead (115) + : : : : +- ShuffleQueryStage (114), Statistics(X) + : : : : +- ReusedExchange (113) + : : : +- NativeSort (133) + : : : +- InputAdapter (132) + : : : +- AQEShuffleRead (131) + : : : +- ShuffleQueryStage (130), Statistics(X) + : : : +- NativeShuffleExchange (129) + : : : +- NativeFilter (128) + : : : +- InputAdapter (127) + : : : +- NativeParquetScan (126) + : : +- NativeSort (146) + : : +- InputAdapter (145) + : : +- InputAdapter (144) + : : +- AQEShuffleRead (143) + : : +- ShuffleQueryStage (142), Statistics(X) + : : +- ReusedExchange (141) + : +- NativeSort (159) + : +- InputAdapter (158) + : +- InputAdapter (157) + : +- AQEShuffleRead (156) + : +- ShuffleQueryStage (155), Statistics(X) + : +- ReusedExchange (154) + +- NativeProject (249) + +- NativeHashAggregate (248) + +- InputAdapter (247) + +- AQEShuffleRead (246) + +- ShuffleQueryStage (245), Statistics(X) + +- NativeShuffleExchange (244) + +- NativeHashAggregate (243) + +- NativeProject (242) + +- NativeProject (241) + +- NativeSortMergeJoin Inner (240) + :- NativeSort (233) + : +- InputAdapter (232) + : +- AQEShuffleRead (231) + : +- ShuffleQueryStage (230), Statistics(X) + : +- NativeShuffleExchange (229) + : +- NativeProject (228) + : +- NativeSortMergeJoin Inner (227) + : :- NativeSort (220) + : : +- InputAdapter (219) + : : +- AQEShuffleRead (218) + : : +- ShuffleQueryStage (217), Statistics(X) + : : +- NativeShuffleExchange (216) + : : +- NativeProject (215) + : : +- NativeSortMergeJoin Inner (214) + : : :- NativeSort (205) + : : : +- InputAdapter (204) + : : : +- AQEShuffleRead (203) + : : : +- ShuffleQueryStage (202), Statistics(X) + : : : +- NativeShuffleExchange (201) + : : : +- NativeProject (200) + : : : +- NativeSortMergeJoin Inner (199) + : : : :- NativeSort (192) + : : : : +- InputAdapter (191) + : : : : +- AQEShuffleRead (190) + : : : : +- ShuffleQueryStage (189), Statistics(X) + : : : : +- NativeShuffleExchange (188) + : : : : +- NativeProject (187) + : : : : +- NativeSortMergeJoin LeftOuter (186) + : : : : :- NativeSort (177) + : : : : : +- InputAdapter (176) + : : : : : +- AQEShuffleRead (175) + : : : : : +- ShuffleQueryStage (174), Statistics(X) + : : : : : +- NativeShuffleExchange (173) + : : : : : +- NativeFilter (172) + : : : : : +- InputAdapter (171) + : : : : : +- NativeParquetScan (170) + : : : : +- NativeSort (185) + : : : : +- InputAdapter (184) + : : : : +- AQEShuffleRead (183) + : : : : +- ShuffleQueryStage (182), Statistics(X) + : : : : +- NativeShuffleExchange (181) + : : : : +- NativeFilter (180) + : : : : +- InputAdapter (179) + : : : : +- NativeParquetScan (178) + : : : +- NativeSort (198) + : : : +- InputAdapter (197) + : : : +- InputAdapter (196) + : : : +- AQEShuffleRead (195) + : : : +- ShuffleQueryStage (194), Statistics(X) + : : : +- ReusedExchange (193) + : : +- NativeSort (213) + : : +- InputAdapter (212) + : : +- AQEShuffleRead (211) + : : +- ShuffleQueryStage (210), Statistics(X) + : : +- NativeShuffleExchange (209) + : : +- NativeFilter (208) + : : +- InputAdapter (207) + : : +- NativeParquetScan (206) + : +- NativeSort (226) + : +- InputAdapter (225) + : +- InputAdapter (224) + : +- AQEShuffleRead (223) + : +- ShuffleQueryStage (222), Statistics(X) + : +- ReusedExchange (221) + +- NativeSort (239) + +- InputAdapter (238) + +- InputAdapter (237) + +- AQEShuffleRead (236) + +- ShuffleQueryStage (235), Statistics(X) + +- ReusedExchange (234) ++- == Initial Plan == + TakeOrderedAndProject (410) + +- HashAggregate (409) + +- Exchange (408) + +- HashAggregate (407) + +- Expand (406) + +- Union (405) + :- HashAggregate (308) + : +- Exchange (307) + : +- HashAggregate (306) + : +- Project (305) + : +- SortMergeJoin Inner (304) + : :- Sort (298) + : : +- Exchange (297) + : : +- Project (296) + : : +- SortMergeJoin Inner (295) + : : :- Sort (289) + : : : +- Exchange (288) + : : : +- Project (287) + : : : +- SortMergeJoin Inner (286) + : : : :- Sort (281) + : : : : +- Exchange (280) + : : : : +- Project (279) + : : : : +- SortMergeJoin Inner (278) + : : : : :- Sort (272) + : : : : : +- Exchange (271) + : : : : : +- Project (270) + : : : : : +- SortMergeJoin LeftOuter (269) + : : : : : :- Sort (264) + : : : : : : +- Exchange (263) + : : : : : : +- Filter (262) + : : : : : : +- Scan parquet (261) + : : : : : +- Sort (268) + : : : : : +- Exchange (267) + : : : : : +- Filter (266) + : : : : : +- Scan parquet (265) + : : : : +- Sort (277) + : : : : +- Exchange (276) + : : : : +- Project (275) + : : : : +- Filter (274) + : : : : +- Scan parquet (273) + : : : +- Sort (285) + : : : +- Exchange (284) + : : : +- Filter (283) + : : : +- Scan parquet (282) + : : +- Sort (294) + : : +- Exchange (293) + : : +- Project (292) + : : +- Filter (291) + : : +- Scan parquet (290) + : +- Sort (303) + : +- Exchange (302) + : +- Project (301) + : +- Filter (300) + : +- Scan parquet (299) + :- HashAggregate (356) + : +- Exchange (355) + : +- HashAggregate (354) + : +- Project (353) + : +- SortMergeJoin Inner (352) + : :- Sort (346) + : : +- Exchange (345) + : : +- Project (344) + : : +- SortMergeJoin Inner (343) + : : :- Sort (337) + : : : +- Exchange (336) + : : : +- Project (335) + : : : +- SortMergeJoin Inner (334) + : : : :- Sort (329) + : : : : +- Exchange (328) + : : : : +- Project (327) + : : : : +- SortMergeJoin Inner (326) + : : : : :- Sort (320) + : : : : : +- Exchange (319) + : : : : : +- Project (318) + : : : : : +- SortMergeJoin LeftOuter (317) + : : : : : :- Sort (312) + : : : : : : +- Exchange (311) + : : : : : : +- Filter (310) + : : : : : : +- Scan parquet (309) + : : : : : +- Sort (316) + : : : : : +- Exchange (315) + : : : : : +- Filter (314) + : : : : : +- Scan parquet (313) + : : : : +- Sort (325) + : : : : +- Exchange (324) + : : : : +- Project (323) + : : : : +- Filter (322) + : : : : +- Scan parquet (321) + : : : +- Sort (333) + : : : +- Exchange (332) + : : : +- Filter (331) + : : : +- Scan parquet (330) + : : +- Sort (342) + : : +- Exchange (341) + : : +- Project (340) + : : +- Filter (339) + : : +- Scan parquet (338) + : +- Sort (351) + : +- Exchange (350) + : +- Project (349) + : +- Filter (348) + : +- Scan parquet (347) + +- HashAggregate (404) + +- Exchange (403) + +- HashAggregate (402) + +- Project (401) + +- SortMergeJoin Inner (400) + :- Sort (394) + : +- Exchange (393) + : +- Project (392) + : +- SortMergeJoin Inner (391) + : :- Sort (385) + : : +- Exchange (384) + : : +- Project (383) + : : +- SortMergeJoin Inner (382) + : : :- Sort (377) + : : : +- Exchange (376) + : : : +- Project (375) + : : : +- SortMergeJoin Inner (374) + : : : :- Sort (368) + : : : : +- Exchange (367) + : : : : +- Project (366) + : : : : +- SortMergeJoin LeftOuter (365) + : : : : :- Sort (360) + : : : : : +- Exchange (359) + : : : : : +- Filter (358) + : : : : : +- Scan parquet (357) + : : : : +- Sort (364) + : : : : +- Exchange (363) + : : : : +- Filter (362) + : : : : +- Scan parquet (361) + : : : +- Sort (373) + : : : +- Exchange (372) + : : : +- Project (371) + : : : +- Filter (370) + : : : +- Scan parquet (369) + : : +- Sort (381) + : : +- Exchange (380) + : : +- Filter (379) + : : +- Scan parquet (378) + : +- Sort (390) + : +- Exchange (389) + : +- Project (388) + : +- Filter (387) + : +- Scan parquet (386) + +- Sort (399) + +- Exchange (398) + +- Project (397) + +- Filter (396) + +- Scan parquet (395) + + +(261) Scan parquet +Output [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_promo_sk#4, ss_ticket_number#5, ss_ext_sales_price#6, ss_net_profit#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk), IsNotNull(ss_item_sk), IsNotNull(ss_promo_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_promo_sk#4, ss_ticket_number#5, ss_ext_sales_price#6, ss_net_profit#7] +Arguments: [#1, #2, #3, #4, #5, #6, #7] + +(3) NativeFilter +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Condition : (((isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_store_sk#3)) AND isnotnull(ss_item_sk#2)) AND isnotnull(ss_promo_sk#4)) + +(4) NativeShuffleExchange +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Arguments: hashpartitioning(ss_item_sk#2, ss_ticket_number#5, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Arguments: X + +(6) AQEShuffleRead +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Arguments: coalesced + +(7) InputAdapter +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] + +(8) NativeSort +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Arguments: [ss_item_sk#2 ASC NULLS FIRST, ss_ticket_number#5 ASC NULLS FIRST], false + +(265) Scan parquet +Output [4]: [sr_item_sk#8, sr_ticket_number#9, sr_return_amt#10, sr_net_loss#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_item_sk), IsNotNull(sr_ticket_number)] +ReadSchema: struct + +(10) InputAdapter +Input [4]: [sr_item_sk#8, sr_ticket_number#9, sr_return_amt#10, sr_net_loss#11] +Arguments: [#8, #9, #10, #11] + +(11) NativeFilter +Input [4]: [#8#8, #9#9, #10#10, #11#11] +Condition : (isnotnull(sr_item_sk#8) AND isnotnull(sr_ticket_number#9)) + +(12) NativeShuffleExchange +Input [4]: [#8#8, #9#9, #10#10, #11#11] +Arguments: hashpartitioning(sr_item_sk#8, sr_ticket_number#9, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [4]: [#8#8, #9#9, #10#10, #11#11] +Arguments: X + +(14) AQEShuffleRead +Input [4]: [#8#8, #9#9, #10#10, #11#11] +Arguments: coalesced + +(15) InputAdapter +Input [4]: [#8#8, #9#9, #10#10, #11#11] + +(16) NativeSort +Input [4]: [#8#8, #9#9, #10#10, #11#11] +Arguments: [sr_item_sk#8 ASC NULLS FIRST, sr_ticket_number#9 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [2]: [ss_item_sk#2, ss_ticket_number#5] +Right keys [2]: [sr_item_sk#8, sr_ticket_number#9] +Join type: LeftOuter +Join condition: None + +(18) NativeProject +Output [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11] +Input [11]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9, #10#10, #11#11] + +(19) NativeShuffleExchange +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11] +Arguments: X + +(21) AQEShuffleRead +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11] +Arguments: coalesced + +(22) InputAdapter +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11] + +(23) NativeSort +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(273) Scan parquet +Output [2]: [d_date_sk#12, d_date#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,2000-08-23), LessThanOrEqual(d_date,2000-09-22), IsNotNull(d_date_sk)] +ReadSchema: struct + +(25) InputAdapter +Input [2]: [d_date_sk#12, d_date#13] +Arguments: [#12, #13] + +(26) NativeFilter +Input [2]: [#12#12, #13#13] +Condition : (((isnotnull(d_date#13) AND (d_date#13 >= 2000-08-23)) AND (d_date#13 <= 2000-09-22)) AND isnotnull(d_date_sk#12)) + +(27) NativeProject +Output [1]: [d_date_sk#12] +Input [2]: [#12#12, #13#13] + +(28) NativeShuffleExchange +Input [1]: [d_date_sk#12] +Arguments: hashpartitioning(d_date_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(29) ShuffleQueryStage +Output [1]: [d_date_sk#12] +Arguments: X + +(30) AQEShuffleRead +Input [1]: [d_date_sk#12] +Arguments: coalesced + +(31) InputAdapter +Input [1]: [d_date_sk#12] + +(32) NativeSort +Input [1]: [d_date_sk#12] +Arguments: [d_date_sk#12 ASC NULLS FIRST], false + +(33) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#12] +Join type: Inner +Join condition: None + +(34) NativeProject +Output [7]: [ss_item_sk#2, ss_store_sk#3, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11] +Input [9]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11, d_date_sk#12] + +(35) NativeShuffleExchange +Input [7]: [ss_item_sk#2, ss_store_sk#3, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11] +Arguments: hashpartitioning(ss_store_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(36) ShuffleQueryStage +Output [7]: [ss_item_sk#2, ss_store_sk#3, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11] +Arguments: X + +(37) AQEShuffleRead +Input [7]: [ss_item_sk#2, ss_store_sk#3, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11] +Arguments: coalesced + +(38) InputAdapter +Input [7]: [ss_item_sk#2, ss_store_sk#3, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11] + +(39) NativeSort +Input [7]: [ss_item_sk#2, ss_store_sk#3, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11] +Arguments: [ss_store_sk#3 ASC NULLS FIRST], false + +(282) Scan parquet +Output [2]: [s_store_sk#14, s_store_id#15] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(41) InputAdapter +Input [2]: [s_store_sk#14, s_store_id#15] +Arguments: [#14, #15] + +(42) NativeFilter +Input [2]: [#14#14, #15#15] +Condition : isnotnull(s_store_sk#14) + +(43) NativeShuffleExchange +Input [2]: [#14#14, #15#15] +Arguments: hashpartitioning(s_store_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) ShuffleQueryStage +Output [2]: [#14#14, #15#15] +Arguments: X + +(45) AQEShuffleRead +Input [2]: [#14#14, #15#15] +Arguments: coalesced + +(46) InputAdapter +Input [2]: [#14#14, #15#15] + +(47) NativeSort +Input [2]: [#14#14, #15#15] +Arguments: [s_store_sk#14 ASC NULLS FIRST], false + +(48) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#3] +Right keys [1]: [s_store_sk#14] +Join type: Inner +Join condition: None + +(49) NativeProject +Output [7]: [ss_item_sk#2, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11, s_store_id#15] +Input [9]: [ss_item_sk#2, ss_store_sk#3, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11, #14#14, #15#15] + +(50) NativeShuffleExchange +Input [7]: [ss_item_sk#2, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11, s_store_id#15] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(51) ShuffleQueryStage +Output [7]: [ss_item_sk#2, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11, s_store_id#15] +Arguments: X + +(52) AQEShuffleRead +Input [7]: [ss_item_sk#2, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11, s_store_id#15] +Arguments: coalesced + +(53) InputAdapter +Input [7]: [ss_item_sk#2, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11, s_store_id#15] + +(54) NativeSort +Input [7]: [ss_item_sk#2, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11, s_store_id#15] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false + +(290) Scan parquet +Output [2]: [i_item_sk#16, i_current_price#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_current_price), GreaterThan(i_current_price,50.00), IsNotNull(i_item_sk)] +ReadSchema: struct + +(56) InputAdapter +Input [2]: [i_item_sk#16, i_current_price#17] +Arguments: [#16, #17] + +(57) NativeFilter +Input [2]: [#16#16, #17#17] +Condition : ((isnotnull(i_current_price#17) AND (i_current_price#17 > 50.00)) AND isnotnull(i_item_sk#16)) + +(58) NativeProject +Output [1]: [i_item_sk#16] +Input [2]: [#16#16, #17#17] + +(59) NativeShuffleExchange +Input [1]: [i_item_sk#16] +Arguments: hashpartitioning(i_item_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(60) ShuffleQueryStage +Output [1]: [i_item_sk#16] +Arguments: X + +(61) AQEShuffleRead +Input [1]: [i_item_sk#16] +Arguments: coalesced + +(62) InputAdapter +Input [1]: [i_item_sk#16] + +(63) NativeSort +Input [1]: [i_item_sk#16] +Arguments: [i_item_sk#16 ASC NULLS FIRST], false + +(64) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#16] +Join type: Inner +Join condition: None + +(65) NativeProject +Output [6]: [ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11, s_store_id#15] +Input [8]: [ss_item_sk#2, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11, s_store_id#15, i_item_sk#16] + +(66) NativeShuffleExchange +Input [6]: [ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11, s_store_id#15] +Arguments: hashpartitioning(ss_promo_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(67) ShuffleQueryStage +Output [6]: [ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11, s_store_id#15] +Arguments: X + +(68) AQEShuffleRead +Input [6]: [ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11, s_store_id#15] +Arguments: coalesced + +(69) InputAdapter +Input [6]: [ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11, s_store_id#15] + +(70) NativeSort +Input [6]: [ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11, s_store_id#15] +Arguments: [ss_promo_sk#4 ASC NULLS FIRST], false + +(299) Scan parquet +Output [2]: [p_promo_sk#18, p_channel_tv#19] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(p_channel_tv), EqualTo(p_channel_tv,N), IsNotNull(p_promo_sk)] +ReadSchema: struct + +(72) InputAdapter +Input [2]: [p_promo_sk#18, p_channel_tv#19] +Arguments: [#18, #19] + +(73) NativeFilter +Input [2]: [#18#18, #19#19] +Condition : ((isnotnull(p_channel_tv#19) AND (p_channel_tv#19 = N)) AND isnotnull(p_promo_sk#18)) + +(74) NativeProject +Output [1]: [p_promo_sk#18] +Input [2]: [#18#18, #19#19] + +(75) NativeShuffleExchange +Input [1]: [p_promo_sk#18] +Arguments: hashpartitioning(p_promo_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(76) ShuffleQueryStage +Output [1]: [p_promo_sk#18] +Arguments: X + +(77) AQEShuffleRead +Input [1]: [p_promo_sk#18] +Arguments: coalesced + +(78) InputAdapter +Input [1]: [p_promo_sk#18] + +(79) NativeSort +Input [1]: [p_promo_sk#18] +Arguments: [p_promo_sk#18 ASC NULLS FIRST], false + +(80) NativeSortMergeJoin +Left keys [1]: [ss_promo_sk#4] +Right keys [1]: [p_promo_sk#18] +Join type: Inner +Join condition: None + +(81) NativeProject +Output [5]: [ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11, s_store_id#15] +Input [7]: [ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11, s_store_id#15, p_promo_sk#18] + +(82) NativeProject +Output [4]: [s_store_id#15 AS s_store_id#15, UnscaledValue(ss_ext_sales_price#6) AS _c1#20, coalesce(cast(sr_return_amt#10 as decimal(12,2)), 0.00) AS _c2#21, (ss_net_profit#7 - coalesce(cast(sr_net_loss#11 as decimal(12,2)), 0.00)) AS _c3#22] +Input [5]: [ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11, s_store_id#15] + +(83) NativeHashAggregate +Input [4]: [s_store_id#15, _c1#20, _c2#21, _c3#22] +Keys [1]: [s_store_id#15] +Functions [3]: [partial_sum(_c1#20), partial_sum(_c2#21), partial_sum(_c3#22)] +Aggregate Attributes [5]: [sum#23, sum#24, isEmpty#25, sum#26, isEmpty#27] +Results [2]: [s_store_id#15, #28#28] + +(84) NativeShuffleExchange +Input [2]: [s_store_id#15, #28#28] +Arguments: hashpartitioning(s_store_id#15, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(85) ShuffleQueryStage +Output [2]: [s_store_id#15, #28#28] +Arguments: X + +(86) AQEShuffleRead +Input [2]: [s_store_id#15, #28#28] +Arguments: coalesced + +(87) InputAdapter +Input [2]: [s_store_id#15, #28#28] + +(88) NativeHashAggregate +Input [2]: [s_store_id#15, #28#28] +Keys [1]: [s_store_id#15] +Functions [3]: [sum(UnscaledValue(ss_ext_sales_price#6)), sum(coalesce(cast(sr_return_amt#10 as decimal(12,2)), 0.00)), sum((ss_net_profit#7 - coalesce(cast(sr_net_loss#11 as decimal(12,2)), 0.00)))] +Aggregate Attributes [3]: [sum(UnscaledValue(ss_ext_sales_price#6))#29, sum(coalesce(cast(sr_return_amt#10 as decimal(12,2)), 0.00))#30, sum((ss_net_profit#7 - coalesce(cast(sr_net_loss#11 as decimal(12,2)), 0.00)))#31] +Results [4]: [s_store_id#15, sum(UnscaledValue(ss_ext_sales_price#6))#29, sum(coalesce(cast(sr_return_amt#10 as decimal(12,2)), 0.00))#30, sum((ss_net_profit#7 - coalesce(cast(sr_net_loss#11 as decimal(12,2)), 0.00)))#31] + +(89) NativeProject +Output [5]: [MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#6))#29,17,2) AS sales#32, sum(coalesce(cast(sr_return_amt#10 as decimal(12,2)), 0.00))#30 AS returns#33, sum((ss_net_profit#7 - coalesce(cast(sr_net_loss#11 as decimal(12,2)), 0.00)))#31 AS profit#34, store channel AS channel#35, concat(store, s_store_id#15) AS id#36] +Input [4]: [s_store_id#15, sum(UnscaledValue(ss_ext_sales_price#6))#29, sum(coalesce(cast(sr_return_amt#10 as decimal(12,2)), 0.00))#30, sum((ss_net_profit#7 - coalesce(cast(sr_net_loss#11 as decimal(12,2)), 0.00)))#31] + +(309) Scan parquet +Output [7]: [cs_sold_date_sk#37, cs_catalog_page_sk#38, cs_item_sk#39, cs_promo_sk#40, cs_order_number#41, cs_ext_sales_price#42, cs_net_profit#43] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk), IsNotNull(cs_catalog_page_sk), IsNotNull(cs_item_sk), IsNotNull(cs_promo_sk)] +ReadSchema: struct + +(91) InputAdapter +Input [7]: [cs_sold_date_sk#37, cs_catalog_page_sk#38, cs_item_sk#39, cs_promo_sk#40, cs_order_number#41, cs_ext_sales_price#42, cs_net_profit#43] +Arguments: [#37, #38, #39, #40, #41, #42, #43] + +(92) NativeFilter +Input [7]: [#37#37, #38#38, #39#39, #40#40, #41#41, #42#42, #43#43] +Condition : (((isnotnull(cs_sold_date_sk#37) AND isnotnull(cs_catalog_page_sk#38)) AND isnotnull(cs_item_sk#39)) AND isnotnull(cs_promo_sk#40)) + +(93) NativeShuffleExchange +Input [7]: [#37#37, #38#38, #39#39, #40#40, #41#41, #42#42, #43#43] +Arguments: hashpartitioning(cs_item_sk#39, cs_order_number#41, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(94) ShuffleQueryStage +Output [7]: [#37#37, #38#38, #39#39, #40#40, #41#41, #42#42, #43#43] +Arguments: X + +(95) AQEShuffleRead +Input [7]: [#37#37, #38#38, #39#39, #40#40, #41#41, #42#42, #43#43] +Arguments: coalesced + +(96) InputAdapter +Input [7]: [#37#37, #38#38, #39#39, #40#40, #41#41, #42#42, #43#43] + +(97) NativeSort +Input [7]: [#37#37, #38#38, #39#39, #40#40, #41#41, #42#42, #43#43] +Arguments: [cs_item_sk#39 ASC NULLS FIRST, cs_order_number#41 ASC NULLS FIRST], false + +(313) Scan parquet +Output [4]: [cr_item_sk#44, cr_order_number#45, cr_return_amount#46, cr_net_loss#47] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cr_item_sk), IsNotNull(cr_order_number)] +ReadSchema: struct + +(99) InputAdapter +Input [4]: [cr_item_sk#44, cr_order_number#45, cr_return_amount#46, cr_net_loss#47] +Arguments: [#44, #45, #46, #47] + +(100) NativeFilter +Input [4]: [#44#44, #45#45, #46#46, #47#47] +Condition : (isnotnull(cr_item_sk#44) AND isnotnull(cr_order_number#45)) + +(101) NativeShuffleExchange +Input [4]: [#44#44, #45#45, #46#46, #47#47] +Arguments: hashpartitioning(cr_item_sk#44, cr_order_number#45, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(102) ShuffleQueryStage +Output [4]: [#44#44, #45#45, #46#46, #47#47] +Arguments: X + +(103) AQEShuffleRead +Input [4]: [#44#44, #45#45, #46#46, #47#47] +Arguments: coalesced + +(104) InputAdapter +Input [4]: [#44#44, #45#45, #46#46, #47#47] + +(105) NativeSort +Input [4]: [#44#44, #45#45, #46#46, #47#47] +Arguments: [cr_item_sk#44 ASC NULLS FIRST, cr_order_number#45 ASC NULLS FIRST], false + +(106) NativeSortMergeJoin +Left keys [2]: [cs_item_sk#39, cs_order_number#41] +Right keys [2]: [cr_item_sk#44, cr_order_number#45] +Join type: LeftOuter +Join condition: None + +(107) NativeProject +Output [8]: [cs_sold_date_sk#37, cs_catalog_page_sk#38, cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47] +Input [11]: [#37#37, #38#38, #39#39, #40#40, #41#41, #42#42, #43#43, #44#44, #45#45, #46#46, #47#47] + +(108) NativeShuffleExchange +Input [8]: [cs_sold_date_sk#37, cs_catalog_page_sk#38, cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47] +Arguments: hashpartitioning(cs_sold_date_sk#37, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(109) ShuffleQueryStage +Output [8]: [cs_sold_date_sk#37, cs_catalog_page_sk#38, cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47] +Arguments: X + +(110) AQEShuffleRead +Input [8]: [cs_sold_date_sk#37, cs_catalog_page_sk#38, cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47] +Arguments: coalesced + +(111) InputAdapter +Input [8]: [cs_sold_date_sk#37, cs_catalog_page_sk#38, cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47] + +(112) NativeSort +Input [8]: [cs_sold_date_sk#37, cs_catalog_page_sk#38, cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47] +Arguments: [cs_sold_date_sk#37 ASC NULLS FIRST], false + +(113) ReusedExchange [Reuses operator id: 28] +Output [1]: [d_date_sk#48] + +(114) ShuffleQueryStage +Output [1]: [d_date_sk#48] +Arguments: X + +(115) AQEShuffleRead +Input [1]: [d_date_sk#48] +Arguments: coalesced + +(116) InputAdapter +Input [1]: [d_date_sk#48] +Arguments: [#48] + +(117) InputAdapter +Input [1]: [#48#48] + +(118) NativeSort +Input [1]: [#48#48] +Arguments: [d_date_sk#48 ASC NULLS FIRST], false + +(119) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#37] +Right keys [1]: [d_date_sk#48] +Join type: Inner +Join condition: None + +(120) NativeProject +Output [7]: [cs_catalog_page_sk#38, cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47] +Input [9]: [cs_sold_date_sk#37, cs_catalog_page_sk#38, cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47, #48#48] + +(121) NativeShuffleExchange +Input [7]: [cs_catalog_page_sk#38, cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47] +Arguments: hashpartitioning(cs_catalog_page_sk#38, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(122) ShuffleQueryStage +Output [7]: [cs_catalog_page_sk#38, cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47] +Arguments: X + +(123) AQEShuffleRead +Input [7]: [cs_catalog_page_sk#38, cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47] +Arguments: coalesced + +(124) InputAdapter +Input [7]: [cs_catalog_page_sk#38, cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47] + +(125) NativeSort +Input [7]: [cs_catalog_page_sk#38, cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47] +Arguments: [cs_catalog_page_sk#38 ASC NULLS FIRST], false + +(330) Scan parquet +Output [2]: [cp_catalog_page_sk#49, cp_catalog_page_id#50] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cp_catalog_page_sk)] +ReadSchema: struct + +(127) InputAdapter +Input [2]: [cp_catalog_page_sk#49, cp_catalog_page_id#50] +Arguments: [#49, #50] + +(128) NativeFilter +Input [2]: [#49#49, #50#50] +Condition : isnotnull(cp_catalog_page_sk#49) + +(129) NativeShuffleExchange +Input [2]: [#49#49, #50#50] +Arguments: hashpartitioning(cp_catalog_page_sk#49, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(130) ShuffleQueryStage +Output [2]: [#49#49, #50#50] +Arguments: X + +(131) AQEShuffleRead +Input [2]: [#49#49, #50#50] +Arguments: coalesced + +(132) InputAdapter +Input [2]: [#49#49, #50#50] + +(133) NativeSort +Input [2]: [#49#49, #50#50] +Arguments: [cp_catalog_page_sk#49 ASC NULLS FIRST], false + +(134) NativeSortMergeJoin +Left keys [1]: [cs_catalog_page_sk#38] +Right keys [1]: [cp_catalog_page_sk#49] +Join type: Inner +Join condition: None + +(135) NativeProject +Output [7]: [cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47, cp_catalog_page_id#50] +Input [9]: [cs_catalog_page_sk#38, cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47, #49#49, #50#50] + +(136) NativeShuffleExchange +Input [7]: [cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47, cp_catalog_page_id#50] +Arguments: hashpartitioning(cs_item_sk#39, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(137) ShuffleQueryStage +Output [7]: [cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47, cp_catalog_page_id#50] +Arguments: X + +(138) AQEShuffleRead +Input [7]: [cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47, cp_catalog_page_id#50] +Arguments: coalesced + +(139) InputAdapter +Input [7]: [cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47, cp_catalog_page_id#50] + +(140) NativeSort +Input [7]: [cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47, cp_catalog_page_id#50] +Arguments: [cs_item_sk#39 ASC NULLS FIRST], false + +(141) ReusedExchange [Reuses operator id: 59] +Output [1]: [i_item_sk#51] + +(142) ShuffleQueryStage +Output [1]: [i_item_sk#51] +Arguments: X + +(143) AQEShuffleRead +Input [1]: [i_item_sk#51] +Arguments: coalesced + +(144) InputAdapter +Input [1]: [i_item_sk#51] +Arguments: [#51] + +(145) InputAdapter +Input [1]: [#51#51] + +(146) NativeSort +Input [1]: [#51#51] +Arguments: [i_item_sk#51 ASC NULLS FIRST], false + +(147) NativeSortMergeJoin +Left keys [1]: [cs_item_sk#39] +Right keys [1]: [i_item_sk#51] +Join type: Inner +Join condition: None + +(148) NativeProject +Output [6]: [cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47, cp_catalog_page_id#50] +Input [8]: [cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47, cp_catalog_page_id#50, #51#51] + +(149) NativeShuffleExchange +Input [6]: [cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47, cp_catalog_page_id#50] +Arguments: hashpartitioning(cs_promo_sk#40, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(150) ShuffleQueryStage +Output [6]: [cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47, cp_catalog_page_id#50] +Arguments: X + +(151) AQEShuffleRead +Input [6]: [cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47, cp_catalog_page_id#50] +Arguments: coalesced + +(152) InputAdapter +Input [6]: [cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47, cp_catalog_page_id#50] + +(153) NativeSort +Input [6]: [cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47, cp_catalog_page_id#50] +Arguments: [cs_promo_sk#40 ASC NULLS FIRST], false + +(154) ReusedExchange [Reuses operator id: 75] +Output [1]: [p_promo_sk#52] + +(155) ShuffleQueryStage +Output [1]: [p_promo_sk#52] +Arguments: X + +(156) AQEShuffleRead +Input [1]: [p_promo_sk#52] +Arguments: coalesced + +(157) InputAdapter +Input [1]: [p_promo_sk#52] +Arguments: [#52] + +(158) InputAdapter +Input [1]: [#52#52] + +(159) NativeSort +Input [1]: [#52#52] +Arguments: [p_promo_sk#52 ASC NULLS FIRST], false + +(160) NativeSortMergeJoin +Left keys [1]: [cs_promo_sk#40] +Right keys [1]: [p_promo_sk#52] +Join type: Inner +Join condition: None + +(161) NativeProject +Output [5]: [cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47, cp_catalog_page_id#50] +Input [7]: [cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47, cp_catalog_page_id#50, #52#52] + +(162) NativeProject +Output [4]: [cp_catalog_page_id#50 AS cp_catalog_page_id#50, UnscaledValue(cs_ext_sales_price#42) AS _c1#53, coalesce(cast(cr_return_amount#46 as decimal(12,2)), 0.00) AS _c2#54, (cs_net_profit#43 - coalesce(cast(cr_net_loss#47 as decimal(12,2)), 0.00)) AS _c3#55] +Input [5]: [cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47, cp_catalog_page_id#50] + +(163) NativeHashAggregate +Input [4]: [cp_catalog_page_id#50, _c1#53, _c2#54, _c3#55] +Keys [1]: [cp_catalog_page_id#50] +Functions [3]: [partial_sum(_c1#53), partial_sum(_c2#54), partial_sum(_c3#55)] +Aggregate Attributes [5]: [sum#56, sum#57, isEmpty#58, sum#59, isEmpty#60] +Results [2]: [cp_catalog_page_id#50, #28#28] + +(164) NativeShuffleExchange +Input [2]: [cp_catalog_page_id#50, #28#28] +Arguments: hashpartitioning(cp_catalog_page_id#50, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(165) ShuffleQueryStage +Output [2]: [cp_catalog_page_id#50, #28#28] +Arguments: X + +(166) AQEShuffleRead +Input [2]: [cp_catalog_page_id#50, #28#28] +Arguments: coalesced + +(167) InputAdapter +Input [2]: [cp_catalog_page_id#50, #28#28] + +(168) NativeHashAggregate +Input [2]: [cp_catalog_page_id#50, #28#28] +Keys [1]: [cp_catalog_page_id#50] +Functions [3]: [sum(UnscaledValue(cs_ext_sales_price#42)), sum(coalesce(cast(cr_return_amount#46 as decimal(12,2)), 0.00)), sum((cs_net_profit#43 - coalesce(cast(cr_net_loss#47 as decimal(12,2)), 0.00)))] +Aggregate Attributes [3]: [sum(UnscaledValue(cs_ext_sales_price#42))#61, sum(coalesce(cast(cr_return_amount#46 as decimal(12,2)), 0.00))#62, sum((cs_net_profit#43 - coalesce(cast(cr_net_loss#47 as decimal(12,2)), 0.00)))#63] +Results [4]: [cp_catalog_page_id#50, sum(UnscaledValue(cs_ext_sales_price#42))#61, sum(coalesce(cast(cr_return_amount#46 as decimal(12,2)), 0.00))#62, sum((cs_net_profit#43 - coalesce(cast(cr_net_loss#47 as decimal(12,2)), 0.00)))#63] + +(169) NativeProject +Output [5]: [MakeDecimal(sum(UnscaledValue(cs_ext_sales_price#42))#61,17,2) AS sales#64, sum(coalesce(cast(cr_return_amount#46 as decimal(12,2)), 0.00))#62 AS returns#65, sum((cs_net_profit#43 - coalesce(cast(cr_net_loss#47 as decimal(12,2)), 0.00)))#63 AS profit#66, catalog channel AS channel#67, concat(catalog_page, cp_catalog_page_id#50) AS id#68] +Input [4]: [cp_catalog_page_id#50, sum(UnscaledValue(cs_ext_sales_price#42))#61, sum(coalesce(cast(cr_return_amount#46 as decimal(12,2)), 0.00))#62, sum((cs_net_profit#43 - coalesce(cast(cr_net_loss#47 as decimal(12,2)), 0.00)))#63] + +(357) Scan parquet +Output [7]: [ws_sold_date_sk#69, ws_item_sk#70, ws_web_site_sk#71, ws_promo_sk#72, ws_order_number#73, ws_ext_sales_price#74, ws_net_profit#75] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_web_site_sk), IsNotNull(ws_item_sk), IsNotNull(ws_promo_sk)] +ReadSchema: struct + +(171) InputAdapter +Input [7]: [ws_sold_date_sk#69, ws_item_sk#70, ws_web_site_sk#71, ws_promo_sk#72, ws_order_number#73, ws_ext_sales_price#74, ws_net_profit#75] +Arguments: [#69, #70, #71, #72, #73, #74, #75] + +(172) NativeFilter +Input [7]: [#69#69, #70#70, #71#71, #72#72, #73#73, #74#74, #75#75] +Condition : (((isnotnull(ws_sold_date_sk#69) AND isnotnull(ws_web_site_sk#71)) AND isnotnull(ws_item_sk#70)) AND isnotnull(ws_promo_sk#72)) + +(173) NativeShuffleExchange +Input [7]: [#69#69, #70#70, #71#71, #72#72, #73#73, #74#74, #75#75] +Arguments: hashpartitioning(ws_item_sk#70, ws_order_number#73, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(174) ShuffleQueryStage +Output [7]: [#69#69, #70#70, #71#71, #72#72, #73#73, #74#74, #75#75] +Arguments: X + +(175) AQEShuffleRead +Input [7]: [#69#69, #70#70, #71#71, #72#72, #73#73, #74#74, #75#75] +Arguments: coalesced + +(176) InputAdapter +Input [7]: [#69#69, #70#70, #71#71, #72#72, #73#73, #74#74, #75#75] + +(177) NativeSort +Input [7]: [#69#69, #70#70, #71#71, #72#72, #73#73, #74#74, #75#75] +Arguments: [ws_item_sk#70 ASC NULLS FIRST, ws_order_number#73 ASC NULLS FIRST], false + +(361) Scan parquet +Output [4]: [wr_item_sk#76, wr_order_number#77, wr_return_amt#78, wr_net_loss#79] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wr_item_sk), IsNotNull(wr_order_number)] +ReadSchema: struct + +(179) InputAdapter +Input [4]: [wr_item_sk#76, wr_order_number#77, wr_return_amt#78, wr_net_loss#79] +Arguments: [#76, #77, #78, #79] + +(180) NativeFilter +Input [4]: [#76#76, #77#77, #78#78, #79#79] +Condition : (isnotnull(wr_item_sk#76) AND isnotnull(wr_order_number#77)) + +(181) NativeShuffleExchange +Input [4]: [#76#76, #77#77, #78#78, #79#79] +Arguments: hashpartitioning(wr_item_sk#76, wr_order_number#77, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(182) ShuffleQueryStage +Output [4]: [#76#76, #77#77, #78#78, #79#79] +Arguments: X + +(183) AQEShuffleRead +Input [4]: [#76#76, #77#77, #78#78, #79#79] +Arguments: coalesced + +(184) InputAdapter +Input [4]: [#76#76, #77#77, #78#78, #79#79] + +(185) NativeSort +Input [4]: [#76#76, #77#77, #78#78, #79#79] +Arguments: [wr_item_sk#76 ASC NULLS FIRST, wr_order_number#77 ASC NULLS FIRST], false + +(186) NativeSortMergeJoin +Left keys [2]: [ws_item_sk#70, ws_order_number#73] +Right keys [2]: [wr_item_sk#76, wr_order_number#77] +Join type: LeftOuter +Join condition: None + +(187) NativeProject +Output [8]: [ws_sold_date_sk#69, ws_item_sk#70, ws_web_site_sk#71, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79] +Input [11]: [#69#69, #70#70, #71#71, #72#72, #73#73, #74#74, #75#75, #76#76, #77#77, #78#78, #79#79] + +(188) NativeShuffleExchange +Input [8]: [ws_sold_date_sk#69, ws_item_sk#70, ws_web_site_sk#71, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79] +Arguments: hashpartitioning(ws_sold_date_sk#69, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(189) ShuffleQueryStage +Output [8]: [ws_sold_date_sk#69, ws_item_sk#70, ws_web_site_sk#71, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79] +Arguments: X + +(190) AQEShuffleRead +Input [8]: [ws_sold_date_sk#69, ws_item_sk#70, ws_web_site_sk#71, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79] +Arguments: coalesced + +(191) InputAdapter +Input [8]: [ws_sold_date_sk#69, ws_item_sk#70, ws_web_site_sk#71, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79] + +(192) NativeSort +Input [8]: [ws_sold_date_sk#69, ws_item_sk#70, ws_web_site_sk#71, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79] +Arguments: [ws_sold_date_sk#69 ASC NULLS FIRST], false + +(193) ReusedExchange [Reuses operator id: 28] +Output [1]: [d_date_sk#80] + +(194) ShuffleQueryStage +Output [1]: [d_date_sk#80] +Arguments: X + +(195) AQEShuffleRead +Input [1]: [d_date_sk#80] +Arguments: coalesced + +(196) InputAdapter +Input [1]: [d_date_sk#80] +Arguments: [#80] + +(197) InputAdapter +Input [1]: [#80#80] + +(198) NativeSort +Input [1]: [#80#80] +Arguments: [d_date_sk#80 ASC NULLS FIRST], false + +(199) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#69] +Right keys [1]: [d_date_sk#80] +Join type: Inner +Join condition: None + +(200) NativeProject +Output [7]: [ws_item_sk#70, ws_web_site_sk#71, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79] +Input [9]: [ws_sold_date_sk#69, ws_item_sk#70, ws_web_site_sk#71, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79, #80#80] + +(201) NativeShuffleExchange +Input [7]: [ws_item_sk#70, ws_web_site_sk#71, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79] +Arguments: hashpartitioning(ws_web_site_sk#71, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(202) ShuffleQueryStage +Output [7]: [ws_item_sk#70, ws_web_site_sk#71, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79] +Arguments: X + +(203) AQEShuffleRead +Input [7]: [ws_item_sk#70, ws_web_site_sk#71, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79] +Arguments: coalesced + +(204) InputAdapter +Input [7]: [ws_item_sk#70, ws_web_site_sk#71, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79] + +(205) NativeSort +Input [7]: [ws_item_sk#70, ws_web_site_sk#71, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79] +Arguments: [ws_web_site_sk#71 ASC NULLS FIRST], false + +(378) Scan parquet +Output [2]: [web_site_sk#81, web_site_id#82] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(web_site_sk)] +ReadSchema: struct + +(207) InputAdapter +Input [2]: [web_site_sk#81, web_site_id#82] +Arguments: [#81, #82] + +(208) NativeFilter +Input [2]: [#81#81, #82#82] +Condition : isnotnull(web_site_sk#81) + +(209) NativeShuffleExchange +Input [2]: [#81#81, #82#82] +Arguments: hashpartitioning(web_site_sk#81, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(210) ShuffleQueryStage +Output [2]: [#81#81, #82#82] +Arguments: X + +(211) AQEShuffleRead +Input [2]: [#81#81, #82#82] +Arguments: coalesced + +(212) InputAdapter +Input [2]: [#81#81, #82#82] + +(213) NativeSort +Input [2]: [#81#81, #82#82] +Arguments: [web_site_sk#81 ASC NULLS FIRST], false + +(214) NativeSortMergeJoin +Left keys [1]: [ws_web_site_sk#71] +Right keys [1]: [web_site_sk#81] +Join type: Inner +Join condition: None + +(215) NativeProject +Output [7]: [ws_item_sk#70, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79, web_site_id#82] +Input [9]: [ws_item_sk#70, ws_web_site_sk#71, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79, #81#81, #82#82] + +(216) NativeShuffleExchange +Input [7]: [ws_item_sk#70, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79, web_site_id#82] +Arguments: hashpartitioning(ws_item_sk#70, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(217) ShuffleQueryStage +Output [7]: [ws_item_sk#70, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79, web_site_id#82] +Arguments: X + +(218) AQEShuffleRead +Input [7]: [ws_item_sk#70, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79, web_site_id#82] +Arguments: coalesced + +(219) InputAdapter +Input [7]: [ws_item_sk#70, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79, web_site_id#82] + +(220) NativeSort +Input [7]: [ws_item_sk#70, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79, web_site_id#82] +Arguments: [ws_item_sk#70 ASC NULLS FIRST], false + +(221) ReusedExchange [Reuses operator id: 59] +Output [1]: [i_item_sk#83] + +(222) ShuffleQueryStage +Output [1]: [i_item_sk#83] +Arguments: X + +(223) AQEShuffleRead +Input [1]: [i_item_sk#83] +Arguments: coalesced + +(224) InputAdapter +Input [1]: [i_item_sk#83] +Arguments: [#83] + +(225) InputAdapter +Input [1]: [#83#83] + +(226) NativeSort +Input [1]: [#83#83] +Arguments: [i_item_sk#83 ASC NULLS FIRST], false + +(227) NativeSortMergeJoin +Left keys [1]: [ws_item_sk#70] +Right keys [1]: [i_item_sk#83] +Join type: Inner +Join condition: None + +(228) NativeProject +Output [6]: [ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79, web_site_id#82] +Input [8]: [ws_item_sk#70, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79, web_site_id#82, #83#83] + +(229) NativeShuffleExchange +Input [6]: [ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79, web_site_id#82] +Arguments: hashpartitioning(ws_promo_sk#72, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(230) ShuffleQueryStage +Output [6]: [ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79, web_site_id#82] +Arguments: X + +(231) AQEShuffleRead +Input [6]: [ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79, web_site_id#82] +Arguments: coalesced + +(232) InputAdapter +Input [6]: [ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79, web_site_id#82] + +(233) NativeSort +Input [6]: [ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79, web_site_id#82] +Arguments: [ws_promo_sk#72 ASC NULLS FIRST], false + +(234) ReusedExchange [Reuses operator id: 75] +Output [1]: [p_promo_sk#84] + +(235) ShuffleQueryStage +Output [1]: [p_promo_sk#84] +Arguments: X + +(236) AQEShuffleRead +Input [1]: [p_promo_sk#84] +Arguments: coalesced + +(237) InputAdapter +Input [1]: [p_promo_sk#84] +Arguments: [#84] + +(238) InputAdapter +Input [1]: [#84#84] + +(239) NativeSort +Input [1]: [#84#84] +Arguments: [p_promo_sk#84 ASC NULLS FIRST], false + +(240) NativeSortMergeJoin +Left keys [1]: [ws_promo_sk#72] +Right keys [1]: [p_promo_sk#84] +Join type: Inner +Join condition: None + +(241) NativeProject +Output [5]: [ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79, web_site_id#82] +Input [7]: [ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79, web_site_id#82, #84#84] + +(242) NativeProject +Output [4]: [web_site_id#82 AS web_site_id#82, UnscaledValue(ws_ext_sales_price#74) AS _c1#85, coalesce(cast(wr_return_amt#78 as decimal(12,2)), 0.00) AS _c2#86, (ws_net_profit#75 - coalesce(cast(wr_net_loss#79 as decimal(12,2)), 0.00)) AS _c3#87] +Input [5]: [ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79, web_site_id#82] + +(243) NativeHashAggregate +Input [4]: [web_site_id#82, _c1#85, _c2#86, _c3#87] +Keys [1]: [web_site_id#82] +Functions [3]: [partial_sum(_c1#85), partial_sum(_c2#86), partial_sum(_c3#87)] +Aggregate Attributes [5]: [sum#88, sum#89, isEmpty#90, sum#91, isEmpty#92] +Results [2]: [web_site_id#82, #28#28] + +(244) NativeShuffleExchange +Input [2]: [web_site_id#82, #28#28] +Arguments: hashpartitioning(web_site_id#82, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(245) ShuffleQueryStage +Output [2]: [web_site_id#82, #28#28] +Arguments: X + +(246) AQEShuffleRead +Input [2]: [web_site_id#82, #28#28] +Arguments: coalesced + +(247) InputAdapter +Input [2]: [web_site_id#82, #28#28] + +(248) NativeHashAggregate +Input [2]: [web_site_id#82, #28#28] +Keys [1]: [web_site_id#82] +Functions [3]: [sum(UnscaledValue(ws_ext_sales_price#74)), sum(coalesce(cast(wr_return_amt#78 as decimal(12,2)), 0.00)), sum((ws_net_profit#75 - coalesce(cast(wr_net_loss#79 as decimal(12,2)), 0.00)))] +Aggregate Attributes [3]: [sum(UnscaledValue(ws_ext_sales_price#74))#93, sum(coalesce(cast(wr_return_amt#78 as decimal(12,2)), 0.00))#94, sum((ws_net_profit#75 - coalesce(cast(wr_net_loss#79 as decimal(12,2)), 0.00)))#95] +Results [4]: [web_site_id#82, sum(UnscaledValue(ws_ext_sales_price#74))#93, sum(coalesce(cast(wr_return_amt#78 as decimal(12,2)), 0.00))#94, sum((ws_net_profit#75 - coalesce(cast(wr_net_loss#79 as decimal(12,2)), 0.00)))#95] + +(249) NativeProject +Output [5]: [MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#74))#93,17,2) AS sales#96, sum(coalesce(cast(wr_return_amt#78 as decimal(12,2)), 0.00))#94 AS returns#97, sum((ws_net_profit#75 - coalesce(cast(wr_net_loss#79 as decimal(12,2)), 0.00)))#95 AS profit#98, web channel AS channel#99, concat(web_site, web_site_id#82) AS id#100] +Input [4]: [web_site_id#82, sum(UnscaledValue(ws_ext_sales_price#74))#93, sum(coalesce(cast(wr_return_amt#78 as decimal(12,2)), 0.00))#94, sum((ws_net_profit#75 - coalesce(cast(wr_net_loss#79 as decimal(12,2)), 0.00)))#95] + +(250) NativeUnion +Arguments: [sales#32, returns#33, profit#34, channel#35, id#36] + +(251) InputAdapter +Input [5]: [sales#32, returns#33, profit#34, channel#35, id#36] +Arguments: [#32, #33, #34, #35, #36] + +(252) NativeExpand +Input [5]: [#32#32, #33#33, #34#34, #35#35, #36#36] +Arguments: [[sales#32, returns#33, profit#34, channel#35, id#36, 0], [sales#32, returns#33, profit#34, channel#35, null, 1], [sales#32, returns#33, profit#34, null, null, 3]], [sales#32, returns#33, profit#34, channel#101, id#102, spark_grouping_id#103] + +(253) NativeHashAggregate +Input [6]: [sales#32, returns#33, profit#34, channel#101, id#102, spark_grouping_id#103] +Keys [3]: [channel#101, id#102, spark_grouping_id#103] +Functions [3]: [partial_sum(sales#32), partial_sum(returns#33), partial_sum(profit#34)] +Aggregate Attributes [6]: [sum#104, isEmpty#105, sum#106, isEmpty#107, sum#108, isEmpty#109] +Results [4]: [channel#101, id#102, spark_grouping_id#103, #28#28] + +(254) NativeShuffleExchange +Input [4]: [channel#101, id#102, spark_grouping_id#103, #28#28] +Arguments: hashpartitioning(channel#101, id#102, spark_grouping_id#103, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(255) ShuffleQueryStage +Output [4]: [channel#101, id#102, spark_grouping_id#103, #28#28] +Arguments: X + +(256) AQEShuffleRead +Input [4]: [channel#101, id#102, spark_grouping_id#103, #28#28] +Arguments: coalesced + +(257) InputAdapter +Input [4]: [channel#101, id#102, spark_grouping_id#103, #28#28] + +(258) NativeHashAggregate +Input [4]: [channel#101, id#102, spark_grouping_id#103, #28#28] +Keys [3]: [channel#101, id#102, spark_grouping_id#103] +Functions [3]: [sum(sales#32), sum(returns#33), sum(profit#34)] +Aggregate Attributes [3]: [sum(sales#32)#110, sum(returns#33)#111, sum(profit#34)#112] +Results [6]: [channel#101, id#102, spark_grouping_id#103, sum(sales#32)#110, sum(returns#33)#111, sum(profit#34)#112] + +(259) NativeProject +Output [5]: [channel#101, id#102, sum(sales#32)#110 AS sales#113, sum(returns#33)#111 AS returns#114, sum(profit#34)#112 AS profit#115] +Input [6]: [channel#101, id#102, spark_grouping_id#103, sum(sales#32)#110, sum(returns#33)#111, sum(profit#34)#112] + +(260) NativeTakeOrdered +Input [5]: [channel#101, id#102, sales#113, returns#114, profit#115] +Arguments: X, [channel#101 ASC NULLS FIRST, id#102 ASC NULLS FIRST] + +(261) Scan parquet +Output [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_promo_sk#4, ss_ticket_number#5, ss_ext_sales_price#6, ss_net_profit#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk), IsNotNull(ss_item_sk), IsNotNull(ss_promo_sk)] +ReadSchema: struct + +(262) Filter +Input [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_promo_sk#4, ss_ticket_number#5, ss_ext_sales_price#6, ss_net_profit#7] +Condition : (((isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_store_sk#3)) AND isnotnull(ss_item_sk#2)) AND isnotnull(ss_promo_sk#4)) + +(263) Exchange +Input [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_promo_sk#4, ss_ticket_number#5, ss_ext_sales_price#6, ss_net_profit#7] +Arguments: hashpartitioning(ss_item_sk#2, ss_ticket_number#5, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(264) Sort +Input [7]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_promo_sk#4, ss_ticket_number#5, ss_ext_sales_price#6, ss_net_profit#7] +Arguments: [ss_item_sk#2 ASC NULLS FIRST, ss_ticket_number#5 ASC NULLS FIRST], false, 0 + +(265) Scan parquet +Output [4]: [sr_item_sk#8, sr_ticket_number#9, sr_return_amt#10, sr_net_loss#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_item_sk), IsNotNull(sr_ticket_number)] +ReadSchema: struct + +(266) Filter +Input [4]: [sr_item_sk#8, sr_ticket_number#9, sr_return_amt#10, sr_net_loss#11] +Condition : (isnotnull(sr_item_sk#8) AND isnotnull(sr_ticket_number#9)) + +(267) Exchange +Input [4]: [sr_item_sk#8, sr_ticket_number#9, sr_return_amt#10, sr_net_loss#11] +Arguments: hashpartitioning(sr_item_sk#8, sr_ticket_number#9, 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(268) Sort +Input [4]: [sr_item_sk#8, sr_ticket_number#9, sr_return_amt#10, sr_net_loss#11] +Arguments: [sr_item_sk#8 ASC NULLS FIRST, sr_ticket_number#9 ASC NULLS FIRST], false, 0 + +(269) SortMergeJoin +Left keys [2]: [ss_item_sk#2, ss_ticket_number#5] +Right keys [2]: [sr_item_sk#8, sr_ticket_number#9] +Join type: LeftOuter +Join condition: None + +(270) Project +Output [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11] +Input [11]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_promo_sk#4, ss_ticket_number#5, ss_ext_sales_price#6, ss_net_profit#7, sr_item_sk#8, sr_ticket_number#9, sr_return_amt#10, sr_net_loss#11] + +(271) Exchange +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=31] + +(272) Sort +Input [8]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(273) Scan parquet +Output [2]: [d_date_sk#12, d_date#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,2000-08-23), LessThanOrEqual(d_date,2000-09-22), IsNotNull(d_date_sk)] +ReadSchema: struct + +(274) Filter +Input [2]: [d_date_sk#12, d_date#13] +Condition : (((isnotnull(d_date#13) AND (d_date#13 >= 2000-08-23)) AND (d_date#13 <= 2000-09-22)) AND isnotnull(d_date_sk#12)) + +(275) Project +Output [1]: [d_date_sk#12] +Input [2]: [d_date_sk#12, d_date#13] + +(276) Exchange +Input [1]: [d_date_sk#12] +Arguments: hashpartitioning(d_date_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=32] + +(277) Sort +Input [1]: [d_date_sk#12] +Arguments: [d_date_sk#12 ASC NULLS FIRST], false, 0 + +(278) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#12] +Join type: Inner +Join condition: None + +(279) Project +Output [7]: [ss_item_sk#2, ss_store_sk#3, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11] +Input [9]: [ss_sold_date_sk#1, ss_item_sk#2, ss_store_sk#3, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11, d_date_sk#12] + +(280) Exchange +Input [7]: [ss_item_sk#2, ss_store_sk#3, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11] +Arguments: hashpartitioning(ss_store_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=33] + +(281) Sort +Input [7]: [ss_item_sk#2, ss_store_sk#3, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11] +Arguments: [ss_store_sk#3 ASC NULLS FIRST], false, 0 + +(282) Scan parquet +Output [2]: [s_store_sk#14, s_store_id#15] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(283) Filter +Input [2]: [s_store_sk#14, s_store_id#15] +Condition : isnotnull(s_store_sk#14) + +(284) Exchange +Input [2]: [s_store_sk#14, s_store_id#15] +Arguments: hashpartitioning(s_store_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=34] + +(285) Sort +Input [2]: [s_store_sk#14, s_store_id#15] +Arguments: [s_store_sk#14 ASC NULLS FIRST], false, 0 + +(286) SortMergeJoin +Left keys [1]: [ss_store_sk#3] +Right keys [1]: [s_store_sk#14] +Join type: Inner +Join condition: None + +(287) Project +Output [7]: [ss_item_sk#2, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11, s_store_id#15] +Input [9]: [ss_item_sk#2, ss_store_sk#3, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11, s_store_sk#14, s_store_id#15] + +(288) Exchange +Input [7]: [ss_item_sk#2, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11, s_store_id#15] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=35] + +(289) Sort +Input [7]: [ss_item_sk#2, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11, s_store_id#15] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false, 0 + +(290) Scan parquet +Output [2]: [i_item_sk#16, i_current_price#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_current_price), GreaterThan(i_current_price,50.00), IsNotNull(i_item_sk)] +ReadSchema: struct + +(291) Filter +Input [2]: [i_item_sk#16, i_current_price#17] +Condition : ((isnotnull(i_current_price#17) AND (i_current_price#17 > 50.00)) AND isnotnull(i_item_sk#16)) + +(292) Project +Output [1]: [i_item_sk#16] +Input [2]: [i_item_sk#16, i_current_price#17] + +(293) Exchange +Input [1]: [i_item_sk#16] +Arguments: hashpartitioning(i_item_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=36] + +(294) Sort +Input [1]: [i_item_sk#16] +Arguments: [i_item_sk#16 ASC NULLS FIRST], false, 0 + +(295) SortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#16] +Join type: Inner +Join condition: None + +(296) Project +Output [6]: [ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11, s_store_id#15] +Input [8]: [ss_item_sk#2, ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11, s_store_id#15, i_item_sk#16] + +(297) Exchange +Input [6]: [ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11, s_store_id#15] +Arguments: hashpartitioning(ss_promo_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=37] + +(298) Sort +Input [6]: [ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11, s_store_id#15] +Arguments: [ss_promo_sk#4 ASC NULLS FIRST], false, 0 + +(299) Scan parquet +Output [2]: [p_promo_sk#18, p_channel_tv#19] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(p_channel_tv), EqualTo(p_channel_tv,N), IsNotNull(p_promo_sk)] +ReadSchema: struct + +(300) Filter +Input [2]: [p_promo_sk#18, p_channel_tv#19] +Condition : ((isnotnull(p_channel_tv#19) AND (p_channel_tv#19 = N)) AND isnotnull(p_promo_sk#18)) + +(301) Project +Output [1]: [p_promo_sk#18] +Input [2]: [p_promo_sk#18, p_channel_tv#19] + +(302) Exchange +Input [1]: [p_promo_sk#18] +Arguments: hashpartitioning(p_promo_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=38] + +(303) Sort +Input [1]: [p_promo_sk#18] +Arguments: [p_promo_sk#18 ASC NULLS FIRST], false, 0 + +(304) SortMergeJoin +Left keys [1]: [ss_promo_sk#4] +Right keys [1]: [p_promo_sk#18] +Join type: Inner +Join condition: None + +(305) Project +Output [5]: [ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11, s_store_id#15] +Input [7]: [ss_promo_sk#4, ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11, s_store_id#15, p_promo_sk#18] + +(306) HashAggregate +Input [5]: [ss_ext_sales_price#6, ss_net_profit#7, sr_return_amt#10, sr_net_loss#11, s_store_id#15] +Keys [1]: [s_store_id#15] +Functions [3]: [partial_sum(UnscaledValue(ss_ext_sales_price#6)), partial_sum(coalesce(cast(sr_return_amt#10 as decimal(12,2)), 0.00)), partial_sum((ss_net_profit#7 - coalesce(cast(sr_net_loss#11 as decimal(12,2)), 0.00)))] +Aggregate Attributes [5]: [sum#23, sum#24, isEmpty#25, sum#26, isEmpty#27] +Results [6]: [s_store_id#15, sum#116, sum#117, isEmpty#118, sum#119, isEmpty#120] + +(307) Exchange +Input [6]: [s_store_id#15, sum#116, sum#117, isEmpty#118, sum#119, isEmpty#120] +Arguments: hashpartitioning(s_store_id#15, 100), ENSURE_REQUIREMENTS, [plan_id=39] + +(308) HashAggregate +Input [6]: [s_store_id#15, sum#116, sum#117, isEmpty#118, sum#119, isEmpty#120] +Keys [1]: [s_store_id#15] +Functions [3]: [sum(UnscaledValue(ss_ext_sales_price#6)), sum(coalesce(cast(sr_return_amt#10 as decimal(12,2)), 0.00)), sum((ss_net_profit#7 - coalesce(cast(sr_net_loss#11 as decimal(12,2)), 0.00)))] +Aggregate Attributes [3]: [sum(UnscaledValue(ss_ext_sales_price#6))#29, sum(coalesce(cast(sr_return_amt#10 as decimal(12,2)), 0.00))#30, sum((ss_net_profit#7 - coalesce(cast(sr_net_loss#11 as decimal(12,2)), 0.00)))#31] +Results [5]: [MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#6))#29,17,2) AS sales#32, sum(coalesce(cast(sr_return_amt#10 as decimal(12,2)), 0.00))#30 AS returns#33, sum((ss_net_profit#7 - coalesce(cast(sr_net_loss#11 as decimal(12,2)), 0.00)))#31 AS profit#34, store channel AS channel#35, concat(store, s_store_id#15) AS id#36] + +(309) Scan parquet +Output [7]: [cs_sold_date_sk#37, cs_catalog_page_sk#38, cs_item_sk#39, cs_promo_sk#40, cs_order_number#41, cs_ext_sales_price#42, cs_net_profit#43] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk), IsNotNull(cs_catalog_page_sk), IsNotNull(cs_item_sk), IsNotNull(cs_promo_sk)] +ReadSchema: struct + +(310) Filter +Input [7]: [cs_sold_date_sk#37, cs_catalog_page_sk#38, cs_item_sk#39, cs_promo_sk#40, cs_order_number#41, cs_ext_sales_price#42, cs_net_profit#43] +Condition : (((isnotnull(cs_sold_date_sk#37) AND isnotnull(cs_catalog_page_sk#38)) AND isnotnull(cs_item_sk#39)) AND isnotnull(cs_promo_sk#40)) + +(311) Exchange +Input [7]: [cs_sold_date_sk#37, cs_catalog_page_sk#38, cs_item_sk#39, cs_promo_sk#40, cs_order_number#41, cs_ext_sales_price#42, cs_net_profit#43] +Arguments: hashpartitioning(cs_item_sk#39, cs_order_number#41, 100), ENSURE_REQUIREMENTS, [plan_id=40] + +(312) Sort +Input [7]: [cs_sold_date_sk#37, cs_catalog_page_sk#38, cs_item_sk#39, cs_promo_sk#40, cs_order_number#41, cs_ext_sales_price#42, cs_net_profit#43] +Arguments: [cs_item_sk#39 ASC NULLS FIRST, cs_order_number#41 ASC NULLS FIRST], false, 0 + +(313) Scan parquet +Output [4]: [cr_item_sk#44, cr_order_number#45, cr_return_amount#46, cr_net_loss#47] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cr_item_sk), IsNotNull(cr_order_number)] +ReadSchema: struct + +(314) Filter +Input [4]: [cr_item_sk#44, cr_order_number#45, cr_return_amount#46, cr_net_loss#47] +Condition : (isnotnull(cr_item_sk#44) AND isnotnull(cr_order_number#45)) + +(315) Exchange +Input [4]: [cr_item_sk#44, cr_order_number#45, cr_return_amount#46, cr_net_loss#47] +Arguments: hashpartitioning(cr_item_sk#44, cr_order_number#45, 100), ENSURE_REQUIREMENTS, [plan_id=41] + +(316) Sort +Input [4]: [cr_item_sk#44, cr_order_number#45, cr_return_amount#46, cr_net_loss#47] +Arguments: [cr_item_sk#44 ASC NULLS FIRST, cr_order_number#45 ASC NULLS FIRST], false, 0 + +(317) SortMergeJoin +Left keys [2]: [cs_item_sk#39, cs_order_number#41] +Right keys [2]: [cr_item_sk#44, cr_order_number#45] +Join type: LeftOuter +Join condition: None + +(318) Project +Output [8]: [cs_sold_date_sk#37, cs_catalog_page_sk#38, cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47] +Input [11]: [cs_sold_date_sk#37, cs_catalog_page_sk#38, cs_item_sk#39, cs_promo_sk#40, cs_order_number#41, cs_ext_sales_price#42, cs_net_profit#43, cr_item_sk#44, cr_order_number#45, cr_return_amount#46, cr_net_loss#47] + +(319) Exchange +Input [8]: [cs_sold_date_sk#37, cs_catalog_page_sk#38, cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47] +Arguments: hashpartitioning(cs_sold_date_sk#37, 100), ENSURE_REQUIREMENTS, [plan_id=42] + +(320) Sort +Input [8]: [cs_sold_date_sk#37, cs_catalog_page_sk#38, cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47] +Arguments: [cs_sold_date_sk#37 ASC NULLS FIRST], false, 0 + +(321) Scan parquet +Output [2]: [d_date_sk#48, d_date#121] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,2000-08-23), LessThanOrEqual(d_date,2000-09-22), IsNotNull(d_date_sk)] +ReadSchema: struct + +(322) Filter +Input [2]: [d_date_sk#48, d_date#121] +Condition : (((isnotnull(d_date#121) AND (d_date#121 >= 2000-08-23)) AND (d_date#121 <= 2000-09-22)) AND isnotnull(d_date_sk#48)) + +(323) Project +Output [1]: [d_date_sk#48] +Input [2]: [d_date_sk#48, d_date#121] + +(324) Exchange +Input [1]: [d_date_sk#48] +Arguments: hashpartitioning(d_date_sk#48, 100), ENSURE_REQUIREMENTS, [plan_id=43] + +(325) Sort +Input [1]: [d_date_sk#48] +Arguments: [d_date_sk#48 ASC NULLS FIRST], false, 0 + +(326) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#37] +Right keys [1]: [d_date_sk#48] +Join type: Inner +Join condition: None + +(327) Project +Output [7]: [cs_catalog_page_sk#38, cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47] +Input [9]: [cs_sold_date_sk#37, cs_catalog_page_sk#38, cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47, d_date_sk#48] + +(328) Exchange +Input [7]: [cs_catalog_page_sk#38, cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47] +Arguments: hashpartitioning(cs_catalog_page_sk#38, 100), ENSURE_REQUIREMENTS, [plan_id=44] + +(329) Sort +Input [7]: [cs_catalog_page_sk#38, cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47] +Arguments: [cs_catalog_page_sk#38 ASC NULLS FIRST], false, 0 + +(330) Scan parquet +Output [2]: [cp_catalog_page_sk#49, cp_catalog_page_id#50] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cp_catalog_page_sk)] +ReadSchema: struct + +(331) Filter +Input [2]: [cp_catalog_page_sk#49, cp_catalog_page_id#50] +Condition : isnotnull(cp_catalog_page_sk#49) + +(332) Exchange +Input [2]: [cp_catalog_page_sk#49, cp_catalog_page_id#50] +Arguments: hashpartitioning(cp_catalog_page_sk#49, 100), ENSURE_REQUIREMENTS, [plan_id=45] + +(333) Sort +Input [2]: [cp_catalog_page_sk#49, cp_catalog_page_id#50] +Arguments: [cp_catalog_page_sk#49 ASC NULLS FIRST], false, 0 + +(334) SortMergeJoin +Left keys [1]: [cs_catalog_page_sk#38] +Right keys [1]: [cp_catalog_page_sk#49] +Join type: Inner +Join condition: None + +(335) Project +Output [7]: [cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47, cp_catalog_page_id#50] +Input [9]: [cs_catalog_page_sk#38, cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47, cp_catalog_page_sk#49, cp_catalog_page_id#50] + +(336) Exchange +Input [7]: [cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47, cp_catalog_page_id#50] +Arguments: hashpartitioning(cs_item_sk#39, 100), ENSURE_REQUIREMENTS, [plan_id=46] + +(337) Sort +Input [7]: [cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47, cp_catalog_page_id#50] +Arguments: [cs_item_sk#39 ASC NULLS FIRST], false, 0 + +(338) Scan parquet +Output [2]: [i_item_sk#51, i_current_price#122] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_current_price), GreaterThan(i_current_price,50.00), IsNotNull(i_item_sk)] +ReadSchema: struct + +(339) Filter +Input [2]: [i_item_sk#51, i_current_price#122] +Condition : ((isnotnull(i_current_price#122) AND (i_current_price#122 > 50.00)) AND isnotnull(i_item_sk#51)) + +(340) Project +Output [1]: [i_item_sk#51] +Input [2]: [i_item_sk#51, i_current_price#122] + +(341) Exchange +Input [1]: [i_item_sk#51] +Arguments: hashpartitioning(i_item_sk#51, 100), ENSURE_REQUIREMENTS, [plan_id=47] + +(342) Sort +Input [1]: [i_item_sk#51] +Arguments: [i_item_sk#51 ASC NULLS FIRST], false, 0 + +(343) SortMergeJoin +Left keys [1]: [cs_item_sk#39] +Right keys [1]: [i_item_sk#51] +Join type: Inner +Join condition: None + +(344) Project +Output [6]: [cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47, cp_catalog_page_id#50] +Input [8]: [cs_item_sk#39, cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47, cp_catalog_page_id#50, i_item_sk#51] + +(345) Exchange +Input [6]: [cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47, cp_catalog_page_id#50] +Arguments: hashpartitioning(cs_promo_sk#40, 100), ENSURE_REQUIREMENTS, [plan_id=48] + +(346) Sort +Input [6]: [cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47, cp_catalog_page_id#50] +Arguments: [cs_promo_sk#40 ASC NULLS FIRST], false, 0 + +(347) Scan parquet +Output [2]: [p_promo_sk#52, p_channel_tv#123] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(p_channel_tv), EqualTo(p_channel_tv,N), IsNotNull(p_promo_sk)] +ReadSchema: struct + +(348) Filter +Input [2]: [p_promo_sk#52, p_channel_tv#123] +Condition : ((isnotnull(p_channel_tv#123) AND (p_channel_tv#123 = N)) AND isnotnull(p_promo_sk#52)) + +(349) Project +Output [1]: [p_promo_sk#52] +Input [2]: [p_promo_sk#52, p_channel_tv#123] + +(350) Exchange +Input [1]: [p_promo_sk#52] +Arguments: hashpartitioning(p_promo_sk#52, 100), ENSURE_REQUIREMENTS, [plan_id=49] + +(351) Sort +Input [1]: [p_promo_sk#52] +Arguments: [p_promo_sk#52 ASC NULLS FIRST], false, 0 + +(352) SortMergeJoin +Left keys [1]: [cs_promo_sk#40] +Right keys [1]: [p_promo_sk#52] +Join type: Inner +Join condition: None + +(353) Project +Output [5]: [cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47, cp_catalog_page_id#50] +Input [7]: [cs_promo_sk#40, cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47, cp_catalog_page_id#50, p_promo_sk#52] + +(354) HashAggregate +Input [5]: [cs_ext_sales_price#42, cs_net_profit#43, cr_return_amount#46, cr_net_loss#47, cp_catalog_page_id#50] +Keys [1]: [cp_catalog_page_id#50] +Functions [3]: [partial_sum(UnscaledValue(cs_ext_sales_price#42)), partial_sum(coalesce(cast(cr_return_amount#46 as decimal(12,2)), 0.00)), partial_sum((cs_net_profit#43 - coalesce(cast(cr_net_loss#47 as decimal(12,2)), 0.00)))] +Aggregate Attributes [5]: [sum#56, sum#57, isEmpty#58, sum#59, isEmpty#60] +Results [6]: [cp_catalog_page_id#50, sum#124, sum#125, isEmpty#126, sum#127, isEmpty#128] + +(355) Exchange +Input [6]: [cp_catalog_page_id#50, sum#124, sum#125, isEmpty#126, sum#127, isEmpty#128] +Arguments: hashpartitioning(cp_catalog_page_id#50, 100), ENSURE_REQUIREMENTS, [plan_id=50] + +(356) HashAggregate +Input [6]: [cp_catalog_page_id#50, sum#124, sum#125, isEmpty#126, sum#127, isEmpty#128] +Keys [1]: [cp_catalog_page_id#50] +Functions [3]: [sum(UnscaledValue(cs_ext_sales_price#42)), sum(coalesce(cast(cr_return_amount#46 as decimal(12,2)), 0.00)), sum((cs_net_profit#43 - coalesce(cast(cr_net_loss#47 as decimal(12,2)), 0.00)))] +Aggregate Attributes [3]: [sum(UnscaledValue(cs_ext_sales_price#42))#61, sum(coalesce(cast(cr_return_amount#46 as decimal(12,2)), 0.00))#62, sum((cs_net_profit#43 - coalesce(cast(cr_net_loss#47 as decimal(12,2)), 0.00)))#63] +Results [5]: [MakeDecimal(sum(UnscaledValue(cs_ext_sales_price#42))#61,17,2) AS sales#64, sum(coalesce(cast(cr_return_amount#46 as decimal(12,2)), 0.00))#62 AS returns#65, sum((cs_net_profit#43 - coalesce(cast(cr_net_loss#47 as decimal(12,2)), 0.00)))#63 AS profit#66, catalog channel AS channel#67, concat(catalog_page, cp_catalog_page_id#50) AS id#68] + +(357) Scan parquet +Output [7]: [ws_sold_date_sk#69, ws_item_sk#70, ws_web_site_sk#71, ws_promo_sk#72, ws_order_number#73, ws_ext_sales_price#74, ws_net_profit#75] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_web_site_sk), IsNotNull(ws_item_sk), IsNotNull(ws_promo_sk)] +ReadSchema: struct + +(358) Filter +Input [7]: [ws_sold_date_sk#69, ws_item_sk#70, ws_web_site_sk#71, ws_promo_sk#72, ws_order_number#73, ws_ext_sales_price#74, ws_net_profit#75] +Condition : (((isnotnull(ws_sold_date_sk#69) AND isnotnull(ws_web_site_sk#71)) AND isnotnull(ws_item_sk#70)) AND isnotnull(ws_promo_sk#72)) + +(359) Exchange +Input [7]: [ws_sold_date_sk#69, ws_item_sk#70, ws_web_site_sk#71, ws_promo_sk#72, ws_order_number#73, ws_ext_sales_price#74, ws_net_profit#75] +Arguments: hashpartitioning(ws_item_sk#70, ws_order_number#73, 100), ENSURE_REQUIREMENTS, [plan_id=51] + +(360) Sort +Input [7]: [ws_sold_date_sk#69, ws_item_sk#70, ws_web_site_sk#71, ws_promo_sk#72, ws_order_number#73, ws_ext_sales_price#74, ws_net_profit#75] +Arguments: [ws_item_sk#70 ASC NULLS FIRST, ws_order_number#73 ASC NULLS FIRST], false, 0 + +(361) Scan parquet +Output [4]: [wr_item_sk#76, wr_order_number#77, wr_return_amt#78, wr_net_loss#79] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wr_item_sk), IsNotNull(wr_order_number)] +ReadSchema: struct + +(362) Filter +Input [4]: [wr_item_sk#76, wr_order_number#77, wr_return_amt#78, wr_net_loss#79] +Condition : (isnotnull(wr_item_sk#76) AND isnotnull(wr_order_number#77)) + +(363) Exchange +Input [4]: [wr_item_sk#76, wr_order_number#77, wr_return_amt#78, wr_net_loss#79] +Arguments: hashpartitioning(wr_item_sk#76, wr_order_number#77, 100), ENSURE_REQUIREMENTS, [plan_id=52] + +(364) Sort +Input [4]: [wr_item_sk#76, wr_order_number#77, wr_return_amt#78, wr_net_loss#79] +Arguments: [wr_item_sk#76 ASC NULLS FIRST, wr_order_number#77 ASC NULLS FIRST], false, 0 + +(365) SortMergeJoin +Left keys [2]: [ws_item_sk#70, ws_order_number#73] +Right keys [2]: [wr_item_sk#76, wr_order_number#77] +Join type: LeftOuter +Join condition: None + +(366) Project +Output [8]: [ws_sold_date_sk#69, ws_item_sk#70, ws_web_site_sk#71, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79] +Input [11]: [ws_sold_date_sk#69, ws_item_sk#70, ws_web_site_sk#71, ws_promo_sk#72, ws_order_number#73, ws_ext_sales_price#74, ws_net_profit#75, wr_item_sk#76, wr_order_number#77, wr_return_amt#78, wr_net_loss#79] + +(367) Exchange +Input [8]: [ws_sold_date_sk#69, ws_item_sk#70, ws_web_site_sk#71, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79] +Arguments: hashpartitioning(ws_sold_date_sk#69, 100), ENSURE_REQUIREMENTS, [plan_id=53] + +(368) Sort +Input [8]: [ws_sold_date_sk#69, ws_item_sk#70, ws_web_site_sk#71, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79] +Arguments: [ws_sold_date_sk#69 ASC NULLS FIRST], false, 0 + +(369) Scan parquet +Output [2]: [d_date_sk#80, d_date#129] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,2000-08-23), LessThanOrEqual(d_date,2000-09-22), IsNotNull(d_date_sk)] +ReadSchema: struct + +(370) Filter +Input [2]: [d_date_sk#80, d_date#129] +Condition : (((isnotnull(d_date#129) AND (d_date#129 >= 2000-08-23)) AND (d_date#129 <= 2000-09-22)) AND isnotnull(d_date_sk#80)) + +(371) Project +Output [1]: [d_date_sk#80] +Input [2]: [d_date_sk#80, d_date#129] + +(372) Exchange +Input [1]: [d_date_sk#80] +Arguments: hashpartitioning(d_date_sk#80, 100), ENSURE_REQUIREMENTS, [plan_id=54] + +(373) Sort +Input [1]: [d_date_sk#80] +Arguments: [d_date_sk#80 ASC NULLS FIRST], false, 0 + +(374) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#69] +Right keys [1]: [d_date_sk#80] +Join type: Inner +Join condition: None + +(375) Project +Output [7]: [ws_item_sk#70, ws_web_site_sk#71, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79] +Input [9]: [ws_sold_date_sk#69, ws_item_sk#70, ws_web_site_sk#71, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79, d_date_sk#80] + +(376) Exchange +Input [7]: [ws_item_sk#70, ws_web_site_sk#71, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79] +Arguments: hashpartitioning(ws_web_site_sk#71, 100), ENSURE_REQUIREMENTS, [plan_id=55] + +(377) Sort +Input [7]: [ws_item_sk#70, ws_web_site_sk#71, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79] +Arguments: [ws_web_site_sk#71 ASC NULLS FIRST], false, 0 + +(378) Scan parquet +Output [2]: [web_site_sk#81, web_site_id#82] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(web_site_sk)] +ReadSchema: struct + +(379) Filter +Input [2]: [web_site_sk#81, web_site_id#82] +Condition : isnotnull(web_site_sk#81) + +(380) Exchange +Input [2]: [web_site_sk#81, web_site_id#82] +Arguments: hashpartitioning(web_site_sk#81, 100), ENSURE_REQUIREMENTS, [plan_id=56] + +(381) Sort +Input [2]: [web_site_sk#81, web_site_id#82] +Arguments: [web_site_sk#81 ASC NULLS FIRST], false, 0 + +(382) SortMergeJoin +Left keys [1]: [ws_web_site_sk#71] +Right keys [1]: [web_site_sk#81] +Join type: Inner +Join condition: None + +(383) Project +Output [7]: [ws_item_sk#70, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79, web_site_id#82] +Input [9]: [ws_item_sk#70, ws_web_site_sk#71, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79, web_site_sk#81, web_site_id#82] + +(384) Exchange +Input [7]: [ws_item_sk#70, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79, web_site_id#82] +Arguments: hashpartitioning(ws_item_sk#70, 100), ENSURE_REQUIREMENTS, [plan_id=57] + +(385) Sort +Input [7]: [ws_item_sk#70, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79, web_site_id#82] +Arguments: [ws_item_sk#70 ASC NULLS FIRST], false, 0 + +(386) Scan parquet +Output [2]: [i_item_sk#83, i_current_price#130] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_current_price), GreaterThan(i_current_price,50.00), IsNotNull(i_item_sk)] +ReadSchema: struct + +(387) Filter +Input [2]: [i_item_sk#83, i_current_price#130] +Condition : ((isnotnull(i_current_price#130) AND (i_current_price#130 > 50.00)) AND isnotnull(i_item_sk#83)) + +(388) Project +Output [1]: [i_item_sk#83] +Input [2]: [i_item_sk#83, i_current_price#130] + +(389) Exchange +Input [1]: [i_item_sk#83] +Arguments: hashpartitioning(i_item_sk#83, 100), ENSURE_REQUIREMENTS, [plan_id=58] + +(390) Sort +Input [1]: [i_item_sk#83] +Arguments: [i_item_sk#83 ASC NULLS FIRST], false, 0 + +(391) SortMergeJoin +Left keys [1]: [ws_item_sk#70] +Right keys [1]: [i_item_sk#83] +Join type: Inner +Join condition: None + +(392) Project +Output [6]: [ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79, web_site_id#82] +Input [8]: [ws_item_sk#70, ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79, web_site_id#82, i_item_sk#83] + +(393) Exchange +Input [6]: [ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79, web_site_id#82] +Arguments: hashpartitioning(ws_promo_sk#72, 100), ENSURE_REQUIREMENTS, [plan_id=59] + +(394) Sort +Input [6]: [ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79, web_site_id#82] +Arguments: [ws_promo_sk#72 ASC NULLS FIRST], false, 0 + +(395) Scan parquet +Output [2]: [p_promo_sk#84, p_channel_tv#131] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(p_channel_tv), EqualTo(p_channel_tv,N), IsNotNull(p_promo_sk)] +ReadSchema: struct + +(396) Filter +Input [2]: [p_promo_sk#84, p_channel_tv#131] +Condition : ((isnotnull(p_channel_tv#131) AND (p_channel_tv#131 = N)) AND isnotnull(p_promo_sk#84)) + +(397) Project +Output [1]: [p_promo_sk#84] +Input [2]: [p_promo_sk#84, p_channel_tv#131] + +(398) Exchange +Input [1]: [p_promo_sk#84] +Arguments: hashpartitioning(p_promo_sk#84, 100), ENSURE_REQUIREMENTS, [plan_id=60] + +(399) Sort +Input [1]: [p_promo_sk#84] +Arguments: [p_promo_sk#84 ASC NULLS FIRST], false, 0 + +(400) SortMergeJoin +Left keys [1]: [ws_promo_sk#72] +Right keys [1]: [p_promo_sk#84] +Join type: Inner +Join condition: None + +(401) Project +Output [5]: [ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79, web_site_id#82] +Input [7]: [ws_promo_sk#72, ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79, web_site_id#82, p_promo_sk#84] + +(402) HashAggregate +Input [5]: [ws_ext_sales_price#74, ws_net_profit#75, wr_return_amt#78, wr_net_loss#79, web_site_id#82] +Keys [1]: [web_site_id#82] +Functions [3]: [partial_sum(UnscaledValue(ws_ext_sales_price#74)), partial_sum(coalesce(cast(wr_return_amt#78 as decimal(12,2)), 0.00)), partial_sum((ws_net_profit#75 - coalesce(cast(wr_net_loss#79 as decimal(12,2)), 0.00)))] +Aggregate Attributes [5]: [sum#88, sum#89, isEmpty#90, sum#91, isEmpty#92] +Results [6]: [web_site_id#82, sum#132, sum#133, isEmpty#134, sum#135, isEmpty#136] + +(403) Exchange +Input [6]: [web_site_id#82, sum#132, sum#133, isEmpty#134, sum#135, isEmpty#136] +Arguments: hashpartitioning(web_site_id#82, 100), ENSURE_REQUIREMENTS, [plan_id=61] + +(404) HashAggregate +Input [6]: [web_site_id#82, sum#132, sum#133, isEmpty#134, sum#135, isEmpty#136] +Keys [1]: [web_site_id#82] +Functions [3]: [sum(UnscaledValue(ws_ext_sales_price#74)), sum(coalesce(cast(wr_return_amt#78 as decimal(12,2)), 0.00)), sum((ws_net_profit#75 - coalesce(cast(wr_net_loss#79 as decimal(12,2)), 0.00)))] +Aggregate Attributes [3]: [sum(UnscaledValue(ws_ext_sales_price#74))#93, sum(coalesce(cast(wr_return_amt#78 as decimal(12,2)), 0.00))#94, sum((ws_net_profit#75 - coalesce(cast(wr_net_loss#79 as decimal(12,2)), 0.00)))#95] +Results [5]: [MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#74))#93,17,2) AS sales#96, sum(coalesce(cast(wr_return_amt#78 as decimal(12,2)), 0.00))#94 AS returns#97, sum((ws_net_profit#75 - coalesce(cast(wr_net_loss#79 as decimal(12,2)), 0.00)))#95 AS profit#98, web channel AS channel#99, concat(web_site, web_site_id#82) AS id#100] + +(405) Union + +(406) Expand +Input [5]: [sales#32, returns#33, profit#34, channel#35, id#36] +Arguments: [[sales#32, returns#33, profit#34, channel#35, id#36, 0], [sales#32, returns#33, profit#34, channel#35, null, 1], [sales#32, returns#33, profit#34, null, null, 3]], [sales#32, returns#33, profit#34, channel#101, id#102, spark_grouping_id#103] + +(407) HashAggregate +Input [6]: [sales#32, returns#33, profit#34, channel#101, id#102, spark_grouping_id#103] +Keys [3]: [channel#101, id#102, spark_grouping_id#103] +Functions [3]: [partial_sum(sales#32), partial_sum(returns#33), partial_sum(profit#34)] +Aggregate Attributes [6]: [sum#104, isEmpty#105, sum#106, isEmpty#107, sum#108, isEmpty#109] +Results [9]: [channel#101, id#102, spark_grouping_id#103, sum#137, isEmpty#138, sum#139, isEmpty#140, sum#141, isEmpty#142] + +(408) Exchange +Input [9]: [channel#101, id#102, spark_grouping_id#103, sum#137, isEmpty#138, sum#139, isEmpty#140, sum#141, isEmpty#142] +Arguments: hashpartitioning(channel#101, id#102, spark_grouping_id#103, 100), ENSURE_REQUIREMENTS, [plan_id=62] + +(409) HashAggregate +Input [9]: [channel#101, id#102, spark_grouping_id#103, sum#137, isEmpty#138, sum#139, isEmpty#140, sum#141, isEmpty#142] +Keys [3]: [channel#101, id#102, spark_grouping_id#103] +Functions [3]: [sum(sales#32), sum(returns#33), sum(profit#34)] +Aggregate Attributes [3]: [sum(sales#32)#110, sum(returns#33)#111, sum(profit#34)#112] +Results [5]: [channel#101, id#102, sum(sales#32)#110 AS sales#113, sum(returns#33)#111 AS returns#114, sum(profit#34)#112 AS profit#115] + +(410) TakeOrderedAndProject +Input [5]: [channel#101, id#102, sales#113, returns#114, profit#115] +Arguments: X, [channel#101 ASC NULLS FIRST, id#102 ASC NULLS FIRST], [channel#101, id#102, sales#113, returns#114, profit#115] + +(411) AdaptiveSparkPlan +Output [5]: [channel#101, id#102, sales#113, returns#114, profit#115] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q81.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q81.txt new file mode 100644 index 000000000..9d4f04e8d --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q81.txt @@ -0,0 +1,1092 @@ +== Physical Plan == +AdaptiveSparkPlan (200) ++- == Final Plan == + NativeTakeOrdered (128) + +- NativeProject (127) + +- NativeSortMergeJoin Inner (126) + :- NativeSort (117) + : +- InputAdapter (116) + : +- AQEShuffleRead (115) + : +- ShuffleQueryStage (114), Statistics(X) + : +- NativeShuffleExchange (113) + : +- NativeProject (112) + : +- NativeSortMergeJoin Inner (111) + : :- NativeSort (102) + : : +- InputAdapter (101) + : : +- AQEShuffleRead (100) + : : +- ShuffleQueryStage (99), Statistics(X) + : : +- NativeShuffleExchange (98) + : : +- ConvertToNative (97) + : : +- * Project (96) + : : +- * SortMergeJoin Inner (95) + : : :- NativeSort (48) + : : : +- InputAdapter (47) + : : : +- AQEShuffleRead (46) + : : : +- ShuffleQueryStage (45), Statistics(X) + : : : +- NativeShuffleExchange (44) + : : : +- NativeFilter (43) + : : : +- NativeProject (42) + : : : +- NativeHashAggregate (41) + : : : +- InputAdapter (40) + : : : +- AQEShuffleRead (39) + : : : +- ShuffleQueryStage (38), Statistics(X) + : : : +- NativeShuffleExchange (37) + : : : +- NativeHashAggregate (36) + : : : +- NativeProject (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 (94) + : : +- NativeFilter (93) + : : +- NativeProject (92) + : : +- NativeHashAggregate (91) + : : +- InputAdapter (90) + : : +- AQEShuffleRead (89) + : : +- ShuffleQueryStage (88), Statistics(X) + : : +- NativeShuffleExchange (87) + : : +- NativeHashAggregate (86) + : : +- NativeProject (85) + : : +- NativeHashAggregate (84) + : : +- InputAdapter (83) + : : +- AQEShuffleRead (82) + : : +- ShuffleQueryStage (81), Statistics(X) + : : +- NativeShuffleExchange (80) + : : +- NativeHashAggregate (79) + : : +- NativeProject (78) + : : +- NativeProject (77) + : : +- NativeSortMergeJoin Inner (76) + : : :- NativeSort (69) + : : : +- InputAdapter (68) + : : : +- AQEShuffleRead (67) + : : : +- ShuffleQueryStage (66), Statistics(X) + : : : +- NativeShuffleExchange (65) + : : : +- NativeProject (64) + : : : +- NativeSortMergeJoin Inner (63) + : : : :- NativeSort (56) + : : : : +- InputAdapter (55) + : : : : +- AQEShuffleRead (54) + : : : : +- ShuffleQueryStage (53), Statistics(X) + : : : : +- NativeShuffleExchange (52) + : : : : +- NativeFilter (51) + : : : : +- InputAdapter (50) + : : : : +- NativeParquetScan (49) + : : : +- NativeSort (62) + : : : +- InputAdapter (61) + : : : +- InputAdapter (60) + : : : +- AQEShuffleRead (59) + : : : +- ShuffleQueryStage (58), Statistics(X) + : : : +- ReusedExchange (57) + : : +- NativeSort (75) + : : +- InputAdapter (74) + : : +- InputAdapter (73) + : : +- AQEShuffleRead (72) + : : +- ShuffleQueryStage (71), Statistics(X) + : : +- ReusedExchange (70) + : +- NativeSort (110) + : +- InputAdapter (109) + : +- AQEShuffleRead (108) + : +- ShuffleQueryStage (107), Statistics(X) + : +- NativeShuffleExchange (106) + : +- NativeFilter (105) + : +- InputAdapter (104) + : +- NativeParquetScan (103) + +- NativeSort (125) + +- InputAdapter (124) + +- AQEShuffleRead (123) + +- ShuffleQueryStage (122), Statistics(X) + +- NativeShuffleExchange (121) + +- NativeFilter (120) + +- InputAdapter (119) + +- NativeParquetScan (118) ++- == Initial Plan == + TakeOrderedAndProject (199) + +- Project (198) + +- SortMergeJoin Inner (197) + :- Sort (192) + : +- Exchange (191) + : +- Project (190) + : +- SortMergeJoin Inner (189) + : :- Sort (184) + : : +- Exchange (183) + : : +- Project (182) + : : +- SortMergeJoin Inner (181) + : : :- Sort (153) + : : : +- Exchange (152) + : : : +- Filter (151) + : : : +- HashAggregate (150) + : : : +- Exchange (149) + : : : +- HashAggregate (148) + : : : +- Project (147) + : : : +- SortMergeJoin Inner (146) + : : : :- Sort (141) + : : : : +- Exchange (140) + : : : : +- Project (139) + : : : : +- SortMergeJoin Inner (138) + : : : : :- Sort (132) + : : : : : +- Exchange (131) + : : : : : +- Filter (130) + : : : : : +- Scan parquet (129) + : : : : +- Sort (137) + : : : : +- Exchange (136) + : : : : +- Project (135) + : : : : +- Filter (134) + : : : : +- Scan parquet (133) + : : : +- Sort (145) + : : : +- Exchange (144) + : : : +- Filter (143) + : : : +- Scan parquet (142) + : : +- Sort (180) + : : +- Filter (179) + : : +- HashAggregate (178) + : : +- Exchange (177) + : : +- HashAggregate (176) + : : +- HashAggregate (175) + : : +- Exchange (174) + : : +- HashAggregate (173) + : : +- Project (172) + : : +- SortMergeJoin Inner (171) + : : :- Sort (166) + : : : +- Exchange (165) + : : : +- Project (164) + : : : +- SortMergeJoin Inner (163) + : : : :- Sort (157) + : : : : +- Exchange (156) + : : : : +- Filter (155) + : : : : +- Scan parquet (154) + : : : +- Sort (162) + : : : +- Exchange (161) + : : : +- Project (160) + : : : +- Filter (159) + : : : +- Scan parquet (158) + : : +- Sort (170) + : : +- Exchange (169) + : : +- Filter (168) + : : +- Scan parquet (167) + : +- Sort (188) + : +- Exchange (187) + : +- Filter (186) + : +- Scan parquet (185) + +- Sort (196) + +- Exchange (195) + +- Filter (194) + +- Scan parquet (193) + + +(129) Scan parquet +Output [4]: [cr_returned_date_sk#1, cr_returning_customer_sk#2, cr_returning_addr_sk#3, cr_return_amt_inc_tax#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cr_returned_date_sk), IsNotNull(cr_returning_addr_sk), IsNotNull(cr_returning_customer_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [4]: [cr_returned_date_sk#1, cr_returning_customer_sk#2, cr_returning_addr_sk#3, cr_return_amt_inc_tax#4] +Arguments: [#1, #2, #3, #4] + +(3) NativeFilter +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Condition : ((isnotnull(cr_returned_date_sk#1) AND isnotnull(cr_returning_addr_sk#3)) AND isnotnull(cr_returning_customer_sk#2)) + +(4) NativeShuffleExchange +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: hashpartitioning(cr_returned_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: X + +(6) AQEShuffleRead +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: coalesced + +(7) InputAdapter +Input [4]: [#1#1, #2#2, #3#3, #4#4] + +(8) NativeSort +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: [cr_returned_date_sk#1 ASC NULLS FIRST], false + +(133) Scan parquet +Output [2]: [d_date_sk#5, d_year#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [d_date_sk#5, d_year#6] +Arguments: [#5, #6] + +(11) NativeFilter +Input [2]: [#5#5, #6#6] +Condition : ((isnotnull(d_year#6) AND (d_year#6 = 2000)) AND isnotnull(d_date_sk#5)) + +(12) NativeProject +Output [1]: [d_date_sk#5] +Input [2]: [#5#5, #6#6] + +(13) NativeShuffleExchange +Input [1]: [d_date_sk#5] +Arguments: hashpartitioning(d_date_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [1]: [d_date_sk#5] +Arguments: X + +(15) AQEShuffleRead +Input [1]: [d_date_sk#5] +Arguments: coalesced + +(16) InputAdapter +Input [1]: [d_date_sk#5] + +(17) NativeSort +Input [1]: [d_date_sk#5] +Arguments: [d_date_sk#5 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [cr_returned_date_sk#1] +Right keys [1]: [d_date_sk#5] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [3]: [cr_returning_customer_sk#2, cr_returning_addr_sk#3, cr_return_amt_inc_tax#4] +Input [5]: [#1#1, #2#2, #3#3, #4#4, d_date_sk#5] + +(20) NativeShuffleExchange +Input [3]: [cr_returning_customer_sk#2, cr_returning_addr_sk#3, cr_return_amt_inc_tax#4] +Arguments: hashpartitioning(cr_returning_addr_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [3]: [cr_returning_customer_sk#2, cr_returning_addr_sk#3, cr_return_amt_inc_tax#4] +Arguments: X + +(22) AQEShuffleRead +Input [3]: [cr_returning_customer_sk#2, cr_returning_addr_sk#3, cr_return_amt_inc_tax#4] +Arguments: coalesced + +(23) InputAdapter +Input [3]: [cr_returning_customer_sk#2, cr_returning_addr_sk#3, cr_return_amt_inc_tax#4] + +(24) NativeSort +Input [3]: [cr_returning_customer_sk#2, cr_returning_addr_sk#3, cr_return_amt_inc_tax#4] +Arguments: [cr_returning_addr_sk#3 ASC NULLS FIRST], false + +(142) Scan parquet +Output [2]: [ca_address_sk#7, ca_state#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_state)] +ReadSchema: struct + +(26) InputAdapter +Input [2]: [ca_address_sk#7, ca_state#8] +Arguments: [#7, #8] + +(27) NativeFilter +Input [2]: [#7#7, #8#8] +Condition : (isnotnull(ca_address_sk#7) AND isnotnull(ca_state#8)) + +(28) NativeShuffleExchange +Input [2]: [#7#7, #8#8] +Arguments: hashpartitioning(ca_address_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(29) ShuffleQueryStage +Output [2]: [#7#7, #8#8] +Arguments: X + +(30) AQEShuffleRead +Input [2]: [#7#7, #8#8] +Arguments: coalesced + +(31) InputAdapter +Input [2]: [#7#7, #8#8] + +(32) NativeSort +Input [2]: [#7#7, #8#8] +Arguments: [ca_address_sk#7 ASC NULLS FIRST], false + +(33) NativeSortMergeJoin +Left keys [1]: [cr_returning_addr_sk#3] +Right keys [1]: [ca_address_sk#7] +Join type: Inner +Join condition: None + +(34) NativeProject +Output [3]: [cr_returning_customer_sk#2, cr_return_amt_inc_tax#4, ca_state#8] +Input [5]: [cr_returning_customer_sk#2, cr_returning_addr_sk#3, cr_return_amt_inc_tax#4, #7#7, #8#8] + +(35) NativeProject +Output [3]: [cr_returning_customer_sk#2 AS cr_returning_customer_sk#2, ca_state#8 AS ca_state#8, UnscaledValue(cr_return_amt_inc_tax#4) AS _c2#9] +Input [3]: [cr_returning_customer_sk#2, cr_return_amt_inc_tax#4, ca_state#8] + +(36) NativeHashAggregate +Input [3]: [cr_returning_customer_sk#2, ca_state#8, _c2#9] +Keys [2]: [cr_returning_customer_sk#2, ca_state#8] +Functions [1]: [partial_sum(_c2#9)] +Aggregate Attributes [1]: [sum#10] +Results [3]: [cr_returning_customer_sk#2, ca_state#8, #11#11] + +(37) NativeShuffleExchange +Input [3]: [cr_returning_customer_sk#2, ca_state#8, #11#11] +Arguments: hashpartitioning(cr_returning_customer_sk#2, ca_state#8, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(38) ShuffleQueryStage +Output [3]: [cr_returning_customer_sk#2, ca_state#8, #11#11] +Arguments: X + +(39) AQEShuffleRead +Input [3]: [cr_returning_customer_sk#2, ca_state#8, #11#11] +Arguments: coalesced + +(40) InputAdapter +Input [3]: [cr_returning_customer_sk#2, ca_state#8, #11#11] + +(41) NativeHashAggregate +Input [3]: [cr_returning_customer_sk#2, ca_state#8, #11#11] +Keys [2]: [cr_returning_customer_sk#2, ca_state#8] +Functions [1]: [sum(UnscaledValue(cr_return_amt_inc_tax#4))] +Aggregate Attributes [1]: [sum(UnscaledValue(cr_return_amt_inc_tax#4))#12] +Results [3]: [cr_returning_customer_sk#2, ca_state#8, sum(UnscaledValue(cr_return_amt_inc_tax#4))#12] + +(42) NativeProject +Output [3]: [cr_returning_customer_sk#2 AS ctr_customer_sk#13, ca_state#8 AS ctr_state#14, MakeDecimal(sum(UnscaledValue(cr_return_amt_inc_tax#4))#12,17,2) AS ctr_total_return#15] +Input [3]: [cr_returning_customer_sk#2, ca_state#8, sum(UnscaledValue(cr_return_amt_inc_tax#4))#12] + +(43) NativeFilter +Input [3]: [ctr_customer_sk#13, ctr_state#14, ctr_total_return#15] +Condition : isnotnull(ctr_total_return#15) + +(44) NativeShuffleExchange +Input [3]: [ctr_customer_sk#13, ctr_state#14, ctr_total_return#15] +Arguments: hashpartitioning(ctr_state#14, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(45) ShuffleQueryStage +Output [3]: [ctr_customer_sk#13, ctr_state#14, ctr_total_return#15] +Arguments: X + +(46) AQEShuffleRead +Input [3]: [ctr_customer_sk#13, ctr_state#14, ctr_total_return#15] +Arguments: coalesced + +(47) InputAdapter +Input [3]: [ctr_customer_sk#13, ctr_state#14, ctr_total_return#15] + +(48) NativeSort +Input [3]: [ctr_customer_sk#13, ctr_state#14, ctr_total_return#15] +Arguments: [ctr_state#14 ASC NULLS FIRST], false + +(154) Scan parquet +Output [4]: [cr_returned_date_sk#16, cr_returning_customer_sk#17, cr_returning_addr_sk#18, cr_return_amt_inc_tax#19] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cr_returned_date_sk), IsNotNull(cr_returning_addr_sk)] +ReadSchema: struct + +(50) InputAdapter +Input [4]: [cr_returned_date_sk#16, cr_returning_customer_sk#17, cr_returning_addr_sk#18, cr_return_amt_inc_tax#19] +Arguments: [#16, #17, #18, #19] + +(51) NativeFilter +Input [4]: [#16#16, #17#17, #18#18, #19#19] +Condition : (isnotnull(cr_returned_date_sk#16) AND isnotnull(cr_returning_addr_sk#18)) + +(52) NativeShuffleExchange +Input [4]: [#16#16, #17#17, #18#18, #19#19] +Arguments: hashpartitioning(cr_returned_date_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(53) ShuffleQueryStage +Output [4]: [#16#16, #17#17, #18#18, #19#19] +Arguments: X + +(54) AQEShuffleRead +Input [4]: [#16#16, #17#17, #18#18, #19#19] +Arguments: coalesced + +(55) InputAdapter +Input [4]: [#16#16, #17#17, #18#18, #19#19] + +(56) NativeSort +Input [4]: [#16#16, #17#17, #18#18, #19#19] +Arguments: [cr_returned_date_sk#16 ASC NULLS FIRST], false + +(57) ReusedExchange [Reuses operator id: 13] +Output [1]: [d_date_sk#20] + +(58) ShuffleQueryStage +Output [1]: [d_date_sk#20] +Arguments: X + +(59) AQEShuffleRead +Input [1]: [d_date_sk#20] +Arguments: coalesced + +(60) InputAdapter +Input [1]: [d_date_sk#20] +Arguments: [#20] + +(61) InputAdapter +Input [1]: [#20#20] + +(62) NativeSort +Input [1]: [#20#20] +Arguments: [d_date_sk#20 ASC NULLS FIRST], false + +(63) NativeSortMergeJoin +Left keys [1]: [cr_returned_date_sk#16] +Right keys [1]: [d_date_sk#20] +Join type: Inner +Join condition: None + +(64) NativeProject +Output [3]: [cr_returning_customer_sk#17, cr_returning_addr_sk#18, cr_return_amt_inc_tax#19] +Input [5]: [#16#16, #17#17, #18#18, #19#19, #20#20] + +(65) NativeShuffleExchange +Input [3]: [cr_returning_customer_sk#17, cr_returning_addr_sk#18, cr_return_amt_inc_tax#19] +Arguments: hashpartitioning(cr_returning_addr_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(66) ShuffleQueryStage +Output [3]: [cr_returning_customer_sk#17, cr_returning_addr_sk#18, cr_return_amt_inc_tax#19] +Arguments: X + +(67) AQEShuffleRead +Input [3]: [cr_returning_customer_sk#17, cr_returning_addr_sk#18, cr_return_amt_inc_tax#19] +Arguments: coalesced + +(68) InputAdapter +Input [3]: [cr_returning_customer_sk#17, cr_returning_addr_sk#18, cr_return_amt_inc_tax#19] + +(69) NativeSort +Input [3]: [cr_returning_customer_sk#17, cr_returning_addr_sk#18, cr_return_amt_inc_tax#19] +Arguments: [cr_returning_addr_sk#18 ASC NULLS FIRST], false + +(70) ReusedExchange [Reuses operator id: 28] +Output [2]: [ca_address_sk#21, ca_state#22] + +(71) ShuffleQueryStage +Output [2]: [ca_address_sk#21, ca_state#22] +Arguments: X + +(72) AQEShuffleRead +Input [2]: [ca_address_sk#21, ca_state#22] +Arguments: coalesced + +(73) InputAdapter +Input [2]: [ca_address_sk#21, ca_state#22] +Arguments: [#21, #22] + +(74) InputAdapter +Input [2]: [#21#21, #22#22] + +(75) NativeSort +Input [2]: [#21#21, #22#22] +Arguments: [ca_address_sk#21 ASC NULLS FIRST], false + +(76) NativeSortMergeJoin +Left keys [1]: [cr_returning_addr_sk#18] +Right keys [1]: [ca_address_sk#21] +Join type: Inner +Join condition: None + +(77) NativeProject +Output [3]: [cr_returning_customer_sk#17, cr_return_amt_inc_tax#19, ca_state#22] +Input [5]: [cr_returning_customer_sk#17, cr_returning_addr_sk#18, cr_return_amt_inc_tax#19, #21#21, #22#22] + +(78) NativeProject +Output [3]: [cr_returning_customer_sk#17 AS cr_returning_customer_sk#17, ca_state#22 AS ca_state#22, UnscaledValue(cr_return_amt_inc_tax#19) AS _c2#23] +Input [3]: [cr_returning_customer_sk#17, cr_return_amt_inc_tax#19, ca_state#22] + +(79) NativeHashAggregate +Input [3]: [cr_returning_customer_sk#17, ca_state#22, _c2#23] +Keys [2]: [cr_returning_customer_sk#17, ca_state#22] +Functions [1]: [partial_sum(_c2#23)] +Aggregate Attributes [1]: [sum#24] +Results [3]: [cr_returning_customer_sk#17, ca_state#22, #11#11] + +(80) NativeShuffleExchange +Input [3]: [cr_returning_customer_sk#17, ca_state#22, #11#11] +Arguments: hashpartitioning(cr_returning_customer_sk#17, ca_state#22, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(81) ShuffleQueryStage +Output [3]: [cr_returning_customer_sk#17, ca_state#22, #11#11] +Arguments: X + +(82) AQEShuffleRead +Input [3]: [cr_returning_customer_sk#17, ca_state#22, #11#11] +Arguments: coalesced + +(83) InputAdapter +Input [3]: [cr_returning_customer_sk#17, ca_state#22, #11#11] + +(84) NativeHashAggregate +Input [3]: [cr_returning_customer_sk#17, ca_state#22, #11#11] +Keys [2]: [cr_returning_customer_sk#17, ca_state#22] +Functions [1]: [sum(UnscaledValue(cr_return_amt_inc_tax#19))] +Aggregate Attributes [1]: [sum(UnscaledValue(cr_return_amt_inc_tax#19))#12] +Results [3]: [cr_returning_customer_sk#17, ca_state#22, sum(UnscaledValue(cr_return_amt_inc_tax#19))#12] + +(85) NativeProject +Output [2]: [ca_state#22 AS ctr_state#25, MakeDecimal(sum(UnscaledValue(cr_return_amt_inc_tax#19))#12,17,2) AS ctr_total_return#26] +Input [3]: [cr_returning_customer_sk#17, ca_state#22, sum(UnscaledValue(cr_return_amt_inc_tax#19))#12] + +(86) NativeHashAggregate +Input [2]: [ctr_state#25, ctr_total_return#26] +Keys [1]: [ctr_state#25] +Functions [1]: [partial_avg(ctr_total_return#26)] +Aggregate Attributes [2]: [sum#27, count#28] +Results [2]: [ctr_state#25, #11#11] + +(87) NativeShuffleExchange +Input [2]: [ctr_state#25, #11#11] +Arguments: hashpartitioning(ctr_state#25, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(88) ShuffleQueryStage +Output [2]: [ctr_state#25, #11#11] +Arguments: X + +(89) AQEShuffleRead +Input [2]: [ctr_state#25, #11#11] +Arguments: coalesced + +(90) InputAdapter +Input [2]: [ctr_state#25, #11#11] + +(91) NativeHashAggregate +Input [2]: [ctr_state#25, #11#11] +Keys [1]: [ctr_state#25] +Functions [1]: [avg(ctr_total_return#26)] +Aggregate Attributes [1]: [avg(ctr_total_return#26)#29] +Results [2]: [ctr_state#25, avg(ctr_total_return#26)#29] + +(92) NativeProject +Output [2]: [(avg(ctr_total_return#26)#29 * 1.2) AS (avg(ctr_total_return) * 1.2)#30, ctr_state#25] +Input [2]: [ctr_state#25, avg(ctr_total_return#26)#29] + +(93) NativeFilter +Input [2]: [(avg(ctr_total_return) * 1.2)#30, ctr_state#25] +Condition : isnotnull((avg(ctr_total_return) * 1.2)#30) + +(94) NativeSort +Input [2]: [(avg(ctr_total_return) * 1.2)#30, ctr_state#25] +Arguments: [ctr_state#25 ASC NULLS FIRST], false + +(95) SortMergeJoin [codegen id : 1] +Left keys [1]: [ctr_state#14] +Right keys [1]: [ctr_state#25] +Join type: Inner +Join condition: (cast(ctr_total_return#15 as decimal(24,7)) > (avg(ctr_total_return) * 1.2)#30) + +(96) Project [codegen id : 1] +Output [2]: [ctr_customer_sk#13, ctr_total_return#15] +Input [5]: [ctr_customer_sk#13, ctr_state#14, ctr_total_return#15, (avg(ctr_total_return) * 1.2)#30, ctr_state#25] + +(97) ConvertToNative +Input [2]: [ctr_customer_sk#13, ctr_total_return#15] + +(98) NativeShuffleExchange +Input [2]: [ctr_customer_sk#13, ctr_total_return#15] +Arguments: hashpartitioning(ctr_customer_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(99) ShuffleQueryStage +Output [2]: [ctr_customer_sk#13, ctr_total_return#15] +Arguments: X + +(100) AQEShuffleRead +Input [2]: [ctr_customer_sk#13, ctr_total_return#15] +Arguments: coalesced + +(101) InputAdapter +Input [2]: [ctr_customer_sk#13, ctr_total_return#15] + +(102) NativeSort +Input [2]: [ctr_customer_sk#13, ctr_total_return#15] +Arguments: [ctr_customer_sk#13 ASC NULLS FIRST], false + +(185) Scan parquet +Output [6]: [c_customer_sk#31, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_current_addr_sk)] +ReadSchema: struct + +(104) InputAdapter +Input [6]: [c_customer_sk#31, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36] +Arguments: [#31, #32, #33, #34, #35, #36] + +(105) NativeFilter +Input [6]: [#31#31, #32#32, #33#33, #34#34, #35#35, #36#36] +Condition : (isnotnull(c_customer_sk#31) AND isnotnull(c_current_addr_sk#33)) + +(106) NativeShuffleExchange +Input [6]: [#31#31, #32#32, #33#33, #34#34, #35#35, #36#36] +Arguments: hashpartitioning(c_customer_sk#31, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(107) ShuffleQueryStage +Output [6]: [#31#31, #32#32, #33#33, #34#34, #35#35, #36#36] +Arguments: X + +(108) AQEShuffleRead +Input [6]: [#31#31, #32#32, #33#33, #34#34, #35#35, #36#36] +Arguments: coalesced + +(109) InputAdapter +Input [6]: [#31#31, #32#32, #33#33, #34#34, #35#35, #36#36] + +(110) NativeSort +Input [6]: [#31#31, #32#32, #33#33, #34#34, #35#35, #36#36] +Arguments: [c_customer_sk#31 ASC NULLS FIRST], false + +(111) NativeSortMergeJoin +Left keys [1]: [ctr_customer_sk#13] +Right keys [1]: [c_customer_sk#31] +Join type: Inner +Join condition: None + +(112) NativeProject +Output [6]: [ctr_total_return#15, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36] +Input [8]: [ctr_customer_sk#13, ctr_total_return#15, #31#31, #32#32, #33#33, #34#34, #35#35, #36#36] + +(113) NativeShuffleExchange +Input [6]: [ctr_total_return#15, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36] +Arguments: hashpartitioning(c_current_addr_sk#33, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(114) ShuffleQueryStage +Output [6]: [ctr_total_return#15, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36] +Arguments: X + +(115) AQEShuffleRead +Input [6]: [ctr_total_return#15, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36] +Arguments: coalesced + +(116) InputAdapter +Input [6]: [ctr_total_return#15, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36] + +(117) NativeSort +Input [6]: [ctr_total_return#15, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36] +Arguments: [c_current_addr_sk#33 ASC NULLS FIRST], false + +(193) Scan parquet +Output [12]: [ca_address_sk#37, ca_street_number#38, ca_street_name#39, ca_street_type#40, ca_suite_number#41, ca_city#42, ca_county#43, ca_state#44, ca_zip#45, ca_country#46, ca_gmt_offset#47, ca_location_type#48] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_state), EqualTo(ca_state,GA), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(119) InputAdapter +Input [12]: [ca_address_sk#37, ca_street_number#38, ca_street_name#39, ca_street_type#40, ca_suite_number#41, ca_city#42, ca_county#43, ca_state#44, ca_zip#45, ca_country#46, ca_gmt_offset#47, ca_location_type#48] +Arguments: [#37, #38, #39, #40, #41, #42, #43, #44, #45, #46, #47, #48] + +(120) NativeFilter +Input [12]: [#37#37, #38#38, #39#39, #40#40, #41#41, #42#42, #43#43, #44#44, #45#45, #46#46, #47#47, #48#48] +Condition : ((isnotnull(ca_state#44) AND (ca_state#44 = GA)) AND isnotnull(ca_address_sk#37)) + +(121) NativeShuffleExchange +Input [12]: [#37#37, #38#38, #39#39, #40#40, #41#41, #42#42, #43#43, #44#44, #45#45, #46#46, #47#47, #48#48] +Arguments: hashpartitioning(ca_address_sk#37, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(122) ShuffleQueryStage +Output [12]: [#37#37, #38#38, #39#39, #40#40, #41#41, #42#42, #43#43, #44#44, #45#45, #46#46, #47#47, #48#48] +Arguments: X + +(123) AQEShuffleRead +Input [12]: [#37#37, #38#38, #39#39, #40#40, #41#41, #42#42, #43#43, #44#44, #45#45, #46#46, #47#47, #48#48] +Arguments: coalesced + +(124) InputAdapter +Input [12]: [#37#37, #38#38, #39#39, #40#40, #41#41, #42#42, #43#43, #44#44, #45#45, #46#46, #47#47, #48#48] + +(125) NativeSort +Input [12]: [#37#37, #38#38, #39#39, #40#40, #41#41, #42#42, #43#43, #44#44, #45#45, #46#46, #47#47, #48#48] +Arguments: [ca_address_sk#37 ASC NULLS FIRST], false + +(126) NativeSortMergeJoin +Left keys [1]: [c_current_addr_sk#33] +Right keys [1]: [ca_address_sk#37] +Join type: Inner +Join condition: None + +(127) NativeProject +Output [16]: [c_customer_id#32, c_salutation#34, c_first_name#35, c_last_name#36, ca_street_number#38, ca_street_name#39, ca_street_type#40, ca_suite_number#41, ca_city#42, ca_county#43, ca_state#44, ca_zip#45, ca_country#46, ca_gmt_offset#47, ca_location_type#48, ctr_total_return#15] +Input [18]: [ctr_total_return#15, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36, #37#37, #38#38, #39#39, #40#40, #41#41, #42#42, #43#43, #44#44, #45#45, #46#46, #47#47, #48#48] + +(128) NativeTakeOrdered +Input [16]: [c_customer_id#32, c_salutation#34, c_first_name#35, c_last_name#36, ca_street_number#38, ca_street_name#39, ca_street_type#40, ca_suite_number#41, ca_city#42, ca_county#43, ca_state#44, ca_zip#45, ca_country#46, ca_gmt_offset#47, ca_location_type#48, ctr_total_return#15] +Arguments: X, [c_customer_id#32 ASC NULLS FIRST, c_salutation#34 ASC NULLS FIRST, c_first_name#35 ASC NULLS FIRST, c_last_name#36 ASC NULLS FIRST, ca_street_number#38 ASC NULLS FIRST, ca_street_name#39 ASC NULLS FIRST, ca_street_type#40 ASC NULLS FIRST, ca_suite_number#41 ASC NULLS FIRST, ca_city#42 ASC NULLS FIRST, ca_county#43 ASC NULLS FIRST, ca_state#44 ASC NULLS FIRST, ca_zip#45 ASC NULLS FIRST, ca_country#46 ASC NULLS FIRST, ca_gmt_offset#47 ASC NULLS FIRST, ca_location_type#48 ASC NULLS FIRST, ctr_total_return#15 ASC NULLS FIRST] + +(129) Scan parquet +Output [4]: [cr_returned_date_sk#1, cr_returning_customer_sk#2, cr_returning_addr_sk#3, cr_return_amt_inc_tax#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cr_returned_date_sk), IsNotNull(cr_returning_addr_sk), IsNotNull(cr_returning_customer_sk)] +ReadSchema: struct + +(130) Filter +Input [4]: [cr_returned_date_sk#1, cr_returning_customer_sk#2, cr_returning_addr_sk#3, cr_return_amt_inc_tax#4] +Condition : ((isnotnull(cr_returned_date_sk#1) AND isnotnull(cr_returning_addr_sk#3)) AND isnotnull(cr_returning_customer_sk#2)) + +(131) Exchange +Input [4]: [cr_returned_date_sk#1, cr_returning_customer_sk#2, cr_returning_addr_sk#3, cr_return_amt_inc_tax#4] +Arguments: hashpartitioning(cr_returned_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(132) Sort +Input [4]: [cr_returned_date_sk#1, cr_returning_customer_sk#2, cr_returning_addr_sk#3, cr_return_amt_inc_tax#4] +Arguments: [cr_returned_date_sk#1 ASC NULLS FIRST], false, 0 + +(133) Scan parquet +Output [2]: [d_date_sk#5, d_year#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(134) Filter +Input [2]: [d_date_sk#5, d_year#6] +Condition : ((isnotnull(d_year#6) AND (d_year#6 = 2000)) AND isnotnull(d_date_sk#5)) + +(135) Project +Output [1]: [d_date_sk#5] +Input [2]: [d_date_sk#5, d_year#6] + +(136) Exchange +Input [1]: [d_date_sk#5] +Arguments: hashpartitioning(d_date_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(137) Sort +Input [1]: [d_date_sk#5] +Arguments: [d_date_sk#5 ASC NULLS FIRST], false, 0 + +(138) SortMergeJoin +Left keys [1]: [cr_returned_date_sk#1] +Right keys [1]: [d_date_sk#5] +Join type: Inner +Join condition: None + +(139) Project +Output [3]: [cr_returning_customer_sk#2, cr_returning_addr_sk#3, cr_return_amt_inc_tax#4] +Input [5]: [cr_returned_date_sk#1, cr_returning_customer_sk#2, cr_returning_addr_sk#3, cr_return_amt_inc_tax#4, d_date_sk#5] + +(140) Exchange +Input [3]: [cr_returning_customer_sk#2, cr_returning_addr_sk#3, cr_return_amt_inc_tax#4] +Arguments: hashpartitioning(cr_returning_addr_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(141) Sort +Input [3]: [cr_returning_customer_sk#2, cr_returning_addr_sk#3, cr_return_amt_inc_tax#4] +Arguments: [cr_returning_addr_sk#3 ASC NULLS FIRST], false, 0 + +(142) Scan parquet +Output [2]: [ca_address_sk#7, ca_state#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_state)] +ReadSchema: struct + +(143) Filter +Input [2]: [ca_address_sk#7, ca_state#8] +Condition : (isnotnull(ca_address_sk#7) AND isnotnull(ca_state#8)) + +(144) Exchange +Input [2]: [ca_address_sk#7, ca_state#8] +Arguments: hashpartitioning(ca_address_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(145) Sort +Input [2]: [ca_address_sk#7, ca_state#8] +Arguments: [ca_address_sk#7 ASC NULLS FIRST], false, 0 + +(146) SortMergeJoin +Left keys [1]: [cr_returning_addr_sk#3] +Right keys [1]: [ca_address_sk#7] +Join type: Inner +Join condition: None + +(147) Project +Output [3]: [cr_returning_customer_sk#2, cr_return_amt_inc_tax#4, ca_state#8] +Input [5]: [cr_returning_customer_sk#2, cr_returning_addr_sk#3, cr_return_amt_inc_tax#4, ca_address_sk#7, ca_state#8] + +(148) HashAggregate +Input [3]: [cr_returning_customer_sk#2, cr_return_amt_inc_tax#4, ca_state#8] +Keys [2]: [cr_returning_customer_sk#2, ca_state#8] +Functions [1]: [partial_sum(UnscaledValue(cr_return_amt_inc_tax#4))] +Aggregate Attributes [1]: [sum#10] +Results [3]: [cr_returning_customer_sk#2, ca_state#8, sum#49] + +(149) Exchange +Input [3]: [cr_returning_customer_sk#2, ca_state#8, sum#49] +Arguments: hashpartitioning(cr_returning_customer_sk#2, ca_state#8, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(150) HashAggregate +Input [3]: [cr_returning_customer_sk#2, ca_state#8, sum#49] +Keys [2]: [cr_returning_customer_sk#2, ca_state#8] +Functions [1]: [sum(UnscaledValue(cr_return_amt_inc_tax#4))] +Aggregate Attributes [1]: [sum(UnscaledValue(cr_return_amt_inc_tax#4))#12] +Results [3]: [cr_returning_customer_sk#2 AS ctr_customer_sk#13, ca_state#8 AS ctr_state#14, MakeDecimal(sum(UnscaledValue(cr_return_amt_inc_tax#4))#12,17,2) AS ctr_total_return#15] + +(151) Filter +Input [3]: [ctr_customer_sk#13, ctr_state#14, ctr_total_return#15] +Condition : isnotnull(ctr_total_return#15) + +(152) Exchange +Input [3]: [ctr_customer_sk#13, ctr_state#14, ctr_total_return#15] +Arguments: hashpartitioning(ctr_state#14, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(153) Sort +Input [3]: [ctr_customer_sk#13, ctr_state#14, ctr_total_return#15] +Arguments: [ctr_state#14 ASC NULLS FIRST], false, 0 + +(154) Scan parquet +Output [4]: [cr_returned_date_sk#16, cr_returning_customer_sk#17, cr_returning_addr_sk#18, cr_return_amt_inc_tax#19] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cr_returned_date_sk), IsNotNull(cr_returning_addr_sk)] +ReadSchema: struct + +(155) Filter +Input [4]: [cr_returned_date_sk#16, cr_returning_customer_sk#17, cr_returning_addr_sk#18, cr_return_amt_inc_tax#19] +Condition : (isnotnull(cr_returned_date_sk#16) AND isnotnull(cr_returning_addr_sk#18)) + +(156) Exchange +Input [4]: [cr_returned_date_sk#16, cr_returning_customer_sk#17, cr_returning_addr_sk#18, cr_return_amt_inc_tax#19] +Arguments: hashpartitioning(cr_returned_date_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(157) Sort +Input [4]: [cr_returned_date_sk#16, cr_returning_customer_sk#17, cr_returning_addr_sk#18, cr_return_amt_inc_tax#19] +Arguments: [cr_returned_date_sk#16 ASC NULLS FIRST], false, 0 + +(158) Scan parquet +Output [2]: [d_date_sk#20, d_year#50] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(159) Filter +Input [2]: [d_date_sk#20, d_year#50] +Condition : ((isnotnull(d_year#50) AND (d_year#50 = 2000)) AND isnotnull(d_date_sk#20)) + +(160) Project +Output [1]: [d_date_sk#20] +Input [2]: [d_date_sk#20, d_year#50] + +(161) Exchange +Input [1]: [d_date_sk#20] +Arguments: hashpartitioning(d_date_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(162) Sort +Input [1]: [d_date_sk#20] +Arguments: [d_date_sk#20 ASC NULLS FIRST], false, 0 + +(163) SortMergeJoin +Left keys [1]: [cr_returned_date_sk#16] +Right keys [1]: [d_date_sk#20] +Join type: Inner +Join condition: None + +(164) Project +Output [3]: [cr_returning_customer_sk#17, cr_returning_addr_sk#18, cr_return_amt_inc_tax#19] +Input [5]: [cr_returned_date_sk#16, cr_returning_customer_sk#17, cr_returning_addr_sk#18, cr_return_amt_inc_tax#19, d_date_sk#20] + +(165) Exchange +Input [3]: [cr_returning_customer_sk#17, cr_returning_addr_sk#18, cr_return_amt_inc_tax#19] +Arguments: hashpartitioning(cr_returning_addr_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(166) Sort +Input [3]: [cr_returning_customer_sk#17, cr_returning_addr_sk#18, cr_return_amt_inc_tax#19] +Arguments: [cr_returning_addr_sk#18 ASC NULLS FIRST], false, 0 + +(167) Scan parquet +Output [2]: [ca_address_sk#21, ca_state#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_state)] +ReadSchema: struct + +(168) Filter +Input [2]: [ca_address_sk#21, ca_state#22] +Condition : (isnotnull(ca_address_sk#21) AND isnotnull(ca_state#22)) + +(169) Exchange +Input [2]: [ca_address_sk#21, ca_state#22] +Arguments: hashpartitioning(ca_address_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(170) Sort +Input [2]: [ca_address_sk#21, ca_state#22] +Arguments: [ca_address_sk#21 ASC NULLS FIRST], false, 0 + +(171) SortMergeJoin +Left keys [1]: [cr_returning_addr_sk#18] +Right keys [1]: [ca_address_sk#21] +Join type: Inner +Join condition: None + +(172) Project +Output [3]: [cr_returning_customer_sk#17, cr_return_amt_inc_tax#19, ca_state#22] +Input [5]: [cr_returning_customer_sk#17, cr_returning_addr_sk#18, cr_return_amt_inc_tax#19, ca_address_sk#21, ca_state#22] + +(173) HashAggregate +Input [3]: [cr_returning_customer_sk#17, cr_return_amt_inc_tax#19, ca_state#22] +Keys [2]: [cr_returning_customer_sk#17, ca_state#22] +Functions [1]: [partial_sum(UnscaledValue(cr_return_amt_inc_tax#19))] +Aggregate Attributes [1]: [sum#24] +Results [3]: [cr_returning_customer_sk#17, ca_state#22, sum#51] + +(174) Exchange +Input [3]: [cr_returning_customer_sk#17, ca_state#22, sum#51] +Arguments: hashpartitioning(cr_returning_customer_sk#17, ca_state#22, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(175) HashAggregate +Input [3]: [cr_returning_customer_sk#17, ca_state#22, sum#51] +Keys [2]: [cr_returning_customer_sk#17, ca_state#22] +Functions [1]: [sum(UnscaledValue(cr_return_amt_inc_tax#19))] +Aggregate Attributes [1]: [sum(UnscaledValue(cr_return_amt_inc_tax#19))#12] +Results [2]: [ca_state#22 AS ctr_state#25, MakeDecimal(sum(UnscaledValue(cr_return_amt_inc_tax#19))#12,17,2) AS ctr_total_return#26] + +(176) HashAggregate +Input [2]: [ctr_state#25, ctr_total_return#26] +Keys [1]: [ctr_state#25] +Functions [1]: [partial_avg(ctr_total_return#26)] +Aggregate Attributes [2]: [sum#27, count#28] +Results [3]: [ctr_state#25, sum#52, count#53] + +(177) Exchange +Input [3]: [ctr_state#25, sum#52, count#53] +Arguments: hashpartitioning(ctr_state#25, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(178) HashAggregate +Input [3]: [ctr_state#25, sum#52, count#53] +Keys [1]: [ctr_state#25] +Functions [1]: [avg(ctr_total_return#26)] +Aggregate Attributes [1]: [avg(ctr_total_return#26)#29] +Results [2]: [(avg(ctr_total_return#26)#29 * 1.2) AS (avg(ctr_total_return) * 1.2)#30, ctr_state#25] + +(179) Filter +Input [2]: [(avg(ctr_total_return) * 1.2)#30, ctr_state#25] +Condition : isnotnull((avg(ctr_total_return) * 1.2)#30) + +(180) Sort +Input [2]: [(avg(ctr_total_return) * 1.2)#30, ctr_state#25] +Arguments: [ctr_state#25 ASC NULLS FIRST], false, 0 + +(181) SortMergeJoin +Left keys [1]: [ctr_state#14] +Right keys [1]: [ctr_state#25] +Join type: Inner +Join condition: (cast(ctr_total_return#15 as decimal(24,7)) > (avg(ctr_total_return) * 1.2)#30) + +(182) Project +Output [2]: [ctr_customer_sk#13, ctr_total_return#15] +Input [5]: [ctr_customer_sk#13, ctr_state#14, ctr_total_return#15, (avg(ctr_total_return) * 1.2)#30, ctr_state#25] + +(183) Exchange +Input [2]: [ctr_customer_sk#13, ctr_total_return#15] +Arguments: hashpartitioning(ctr_customer_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(184) Sort +Input [2]: [ctr_customer_sk#13, ctr_total_return#15] +Arguments: [ctr_customer_sk#13 ASC NULLS FIRST], false, 0 + +(185) Scan parquet +Output [6]: [c_customer_sk#31, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_current_addr_sk)] +ReadSchema: struct + +(186) Filter +Input [6]: [c_customer_sk#31, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36] +Condition : (isnotnull(c_customer_sk#31) AND isnotnull(c_current_addr_sk#33)) + +(187) Exchange +Input [6]: [c_customer_sk#31, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36] +Arguments: hashpartitioning(c_customer_sk#31, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(188) Sort +Input [6]: [c_customer_sk#31, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36] +Arguments: [c_customer_sk#31 ASC NULLS FIRST], false, 0 + +(189) SortMergeJoin +Left keys [1]: [ctr_customer_sk#13] +Right keys [1]: [c_customer_sk#31] +Join type: Inner +Join condition: None + +(190) Project +Output [6]: [ctr_total_return#15, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36] +Input [8]: [ctr_customer_sk#13, ctr_total_return#15, c_customer_sk#31, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36] + +(191) Exchange +Input [6]: [ctr_total_return#15, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36] +Arguments: hashpartitioning(c_current_addr_sk#33, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(192) Sort +Input [6]: [ctr_total_return#15, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36] +Arguments: [c_current_addr_sk#33 ASC NULLS FIRST], false, 0 + +(193) Scan parquet +Output [12]: [ca_address_sk#37, ca_street_number#38, ca_street_name#39, ca_street_type#40, ca_suite_number#41, ca_city#42, ca_county#43, ca_state#44, ca_zip#45, ca_country#46, ca_gmt_offset#47, ca_location_type#48] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_state), EqualTo(ca_state,GA), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(194) Filter +Input [12]: [ca_address_sk#37, ca_street_number#38, ca_street_name#39, ca_street_type#40, ca_suite_number#41, ca_city#42, ca_county#43, ca_state#44, ca_zip#45, ca_country#46, ca_gmt_offset#47, ca_location_type#48] +Condition : ((isnotnull(ca_state#44) AND (ca_state#44 = GA)) AND isnotnull(ca_address_sk#37)) + +(195) Exchange +Input [12]: [ca_address_sk#37, ca_street_number#38, ca_street_name#39, ca_street_type#40, ca_suite_number#41, ca_city#42, ca_county#43, ca_state#44, ca_zip#45, ca_country#46, ca_gmt_offset#47, ca_location_type#48] +Arguments: hashpartitioning(ca_address_sk#37, 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(196) Sort +Input [12]: [ca_address_sk#37, ca_street_number#38, ca_street_name#39, ca_street_type#40, ca_suite_number#41, ca_city#42, ca_county#43, ca_state#44, ca_zip#45, ca_country#46, ca_gmt_offset#47, ca_location_type#48] +Arguments: [ca_address_sk#37 ASC NULLS FIRST], false, 0 + +(197) SortMergeJoin +Left keys [1]: [c_current_addr_sk#33] +Right keys [1]: [ca_address_sk#37] +Join type: Inner +Join condition: None + +(198) Project +Output [16]: [c_customer_id#32, c_salutation#34, c_first_name#35, c_last_name#36, ca_street_number#38, ca_street_name#39, ca_street_type#40, ca_suite_number#41, ca_city#42, ca_county#43, ca_state#44, ca_zip#45, ca_country#46, ca_gmt_offset#47, ca_location_type#48, ctr_total_return#15] +Input [18]: [ctr_total_return#15, c_customer_id#32, c_current_addr_sk#33, c_salutation#34, c_first_name#35, c_last_name#36, ca_address_sk#37, ca_street_number#38, ca_street_name#39, ca_street_type#40, ca_suite_number#41, ca_city#42, ca_county#43, ca_state#44, ca_zip#45, ca_country#46, ca_gmt_offset#47, ca_location_type#48] + +(199) TakeOrderedAndProject +Input [16]: [c_customer_id#32, c_salutation#34, c_first_name#35, c_last_name#36, ca_street_number#38, ca_street_name#39, ca_street_type#40, ca_suite_number#41, ca_city#42, ca_county#43, ca_state#44, ca_zip#45, ca_country#46, ca_gmt_offset#47, ca_location_type#48, ctr_total_return#15] +Arguments: X, [c_customer_id#32 ASC NULLS FIRST, c_salutation#34 ASC NULLS FIRST, c_first_name#35 ASC NULLS FIRST, c_last_name#36 ASC NULLS FIRST, ca_street_number#38 ASC NULLS FIRST, ca_street_name#39 ASC NULLS FIRST, ca_street_type#40 ASC NULLS FIRST, ca_suite_number#41 ASC NULLS FIRST, ca_city#42 ASC NULLS FIRST, ca_county#43 ASC NULLS FIRST, ca_state#44 ASC NULLS FIRST, ca_zip#45 ASC NULLS FIRST, ca_country#46 ASC NULLS FIRST, ca_gmt_offset#47 ASC NULLS FIRST, ca_location_type#48 ASC NULLS FIRST, ctr_total_return#15 ASC NULLS FIRST], [c_customer_id#32, c_salutation#34, c_first_name#35, c_last_name#36, ca_street_number#38, ca_street_name#39, ca_street_type#40, ca_suite_number#41, ca_city#42, ca_county#43, ca_state#44, ca_zip#45, ca_country#46, ca_gmt_offset#47, ca_location_type#48, ctr_total_return#15] + +(200) AdaptiveSparkPlan +Output [16]: [c_customer_id#32, c_salutation#34, c_first_name#35, c_last_name#36, ca_street_number#38, ca_street_name#39, ca_street_type#40, ca_suite_number#41, ca_city#42, ca_county#43, ca_state#44, ca_zip#45, ca_country#46, ca_gmt_offset#47, ca_location_type#48, ctr_total_return#15] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q82.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q82.txt new file mode 100644 index 000000000..92869395f --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q82.txt @@ -0,0 +1,511 @@ +== Physical Plan == +AdaptiveSparkPlan (93) ++- == Final Plan == + NativeTakeOrdered (59) + +- NativeProject (58) + +- NativeHashAggregate (57) + +- InputAdapter (56) + +- AQEShuffleRead (55) + +- ShuffleQueryStage (54), Statistics(X) + +- NativeShuffleExchange (53) + +- NativeHashAggregate (52) + +- NativeProject (51) + +- NativeSortMergeJoin Inner (50) + :- NativeSort (41) + : +- InputAdapter (40) + : +- AQEShuffleRead (39) + : +- ShuffleQueryStage (38), Statistics(X) + : +- NativeShuffleExchange (37) + : +- NativeProject (36) + : +- NativeSortMergeJoin Inner (35) + : :- NativeSort (25) + : : +- InputAdapter (24) + : : +- AQEShuffleRead (23) + : : +- ShuffleQueryStage (22), Statistics(X) + : : +- NativeShuffleExchange (21) + : : +- NativeProject (20) + : : +- NativeSortMergeJoin Inner (19) + : : :- NativeSort (9) + : : : +- InputAdapter (8) + : : : +- AQEShuffleRead (7) + : : : +- ShuffleQueryStage (6), Statistics(X) + : : : +- NativeShuffleExchange (5) + : : : +- NativeProject (4) + : : : +- NativeFilter (3) + : : : +- InputAdapter (2) + : : : +- NativeParquetScan (1) + : : +- NativeSort (18) + : : +- InputAdapter (17) + : : +- AQEShuffleRead (16) + : : +- ShuffleQueryStage (15), Statistics(X) + : : +- NativeShuffleExchange (14) + : : +- NativeProject (13) + : : +- NativeFilter (12) + : : +- InputAdapter (11) + : : +- NativeParquetScan (10) + : +- NativeSort (34) + : +- InputAdapter (33) + : +- AQEShuffleRead (32) + : +- ShuffleQueryStage (31), Statistics(X) + : +- NativeShuffleExchange (30) + : +- NativeProject (29) + : +- NativeFilter (28) + : +- InputAdapter (27) + : +- NativeParquetScan (26) + +- NativeSort (49) + +- InputAdapter (48) + +- AQEShuffleRead (47) + +- ShuffleQueryStage (46), Statistics(X) + +- NativeShuffleExchange (45) + +- NativeFilter (44) + +- InputAdapter (43) + +- NativeParquetScan (42) ++- == Initial Plan == + TakeOrderedAndProject (92) + +- HashAggregate (91) + +- Exchange (90) + +- HashAggregate (89) + +- Project (88) + +- SortMergeJoin Inner (87) + :- Sort (82) + : +- Exchange (81) + : +- Project (80) + : +- SortMergeJoin Inner (79) + : :- Sort (73) + : : +- Exchange (72) + : : +- Project (71) + : : +- SortMergeJoin Inner (70) + : : :- Sort (64) + : : : +- Exchange (63) + : : : +- Project (62) + : : : +- Filter (61) + : : : +- Scan parquet (60) + : : +- Sort (69) + : : +- Exchange (68) + : : +- Project (67) + : : +- Filter (66) + : : +- Scan parquet (65) + : +- Sort (78) + : +- Exchange (77) + : +- Project (76) + : +- Filter (75) + : +- Scan parquet (74) + +- Sort (86) + +- Exchange (85) + +- Filter (84) + +- Scan parquet (83) + + +(60) Scan parquet +Output [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, i_manufact_id#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_current_price), GreaterThanOrEqual(i_current_price,62.00), LessThanOrEqual(i_current_price,92.00), In(i_manufact_id, [129,270,423,821]), IsNotNull(i_item_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, i_manufact_id#5] +Arguments: [#1, #2, #3, #4, #5] + +(3) NativeFilter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Condition : ((((isnotnull(i_current_price#4) AND (i_current_price#4 >= 62.00)) AND (i_current_price#4 <= 92.00)) AND i_manufact_id#5 IN (129,270,821,423)) AND isnotnull(i_item_sk#1)) + +(4) NativeProject +Output [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] + +(5) NativeShuffleExchange +Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: hashpartitioning(i_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(6) ShuffleQueryStage +Output [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: X + +(7) AQEShuffleRead +Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: coalesced + +(8) InputAdapter +Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] + +(9) NativeSort +Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: [i_item_sk#1 ASC NULLS FIRST], false + +(65) Scan parquet +Output [3]: [inv_date_sk#6, inv_item_sk#7, inv_quantity_on_hand#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(inv_quantity_on_hand), GreaterThanOrEqual(inv_quantity_on_hand,100), LessThanOrEqual(inv_quantity_on_hand,500), IsNotNull(inv_item_sk), IsNotNull(inv_date_sk)] +ReadSchema: struct + +(11) InputAdapter +Input [3]: [inv_date_sk#6, inv_item_sk#7, inv_quantity_on_hand#8] +Arguments: [#6, #7, #8] + +(12) NativeFilter +Input [3]: [#6#6, #7#7, #8#8] +Condition : ((((isnotnull(inv_quantity_on_hand#8) AND (inv_quantity_on_hand#8 >= 100)) AND (inv_quantity_on_hand#8 <= 500)) AND isnotnull(inv_item_sk#7)) AND isnotnull(inv_date_sk#6)) + +(13) NativeProject +Output [2]: [inv_date_sk#6, inv_item_sk#7] +Input [3]: [#6#6, #7#7, #8#8] + +(14) NativeShuffleExchange +Input [2]: [inv_date_sk#6, inv_item_sk#7] +Arguments: hashpartitioning(inv_item_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(15) ShuffleQueryStage +Output [2]: [inv_date_sk#6, inv_item_sk#7] +Arguments: X + +(16) AQEShuffleRead +Input [2]: [inv_date_sk#6, inv_item_sk#7] +Arguments: coalesced + +(17) InputAdapter +Input [2]: [inv_date_sk#6, inv_item_sk#7] + +(18) NativeSort +Input [2]: [inv_date_sk#6, inv_item_sk#7] +Arguments: [inv_item_sk#7 ASC NULLS FIRST], false + +(19) NativeSortMergeJoin +Left keys [1]: [i_item_sk#1] +Right keys [1]: [inv_item_sk#7] +Join type: Inner +Join condition: None + +(20) NativeProject +Output [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6] +Input [6]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6, inv_item_sk#7] + +(21) NativeShuffleExchange +Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6] +Arguments: hashpartitioning(inv_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(22) ShuffleQueryStage +Output [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6] +Arguments: X + +(23) AQEShuffleRead +Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6] +Arguments: coalesced + +(24) InputAdapter +Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6] + +(25) NativeSort +Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6] +Arguments: [inv_date_sk#6 ASC NULLS FIRST], false + +(74) Scan parquet +Output [2]: [d_date_sk#9, d_date#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,2000-05-25), LessThanOrEqual(d_date,2000-07-24), IsNotNull(d_date_sk)] +ReadSchema: struct + +(27) InputAdapter +Input [2]: [d_date_sk#9, d_date#10] +Arguments: [#9, #10] + +(28) NativeFilter +Input [2]: [#9#9, #10#10] +Condition : (((isnotnull(d_date#10) AND (d_date#10 >= 2000-05-25)) AND (d_date#10 <= 2000-07-24)) AND isnotnull(d_date_sk#9)) + +(29) NativeProject +Output [1]: [d_date_sk#9] +Input [2]: [#9#9, #10#10] + +(30) NativeShuffleExchange +Input [1]: [d_date_sk#9] +Arguments: hashpartitioning(d_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(31) ShuffleQueryStage +Output [1]: [d_date_sk#9] +Arguments: X + +(32) AQEShuffleRead +Input [1]: [d_date_sk#9] +Arguments: coalesced + +(33) InputAdapter +Input [1]: [d_date_sk#9] + +(34) NativeSort +Input [1]: [d_date_sk#9] +Arguments: [d_date_sk#9 ASC NULLS FIRST], false + +(35) NativeSortMergeJoin +Left keys [1]: [inv_date_sk#6] +Right keys [1]: [d_date_sk#9] +Join type: Inner +Join condition: None + +(36) NativeProject +Output [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Input [6]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6, d_date_sk#9] + +(37) NativeShuffleExchange +Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: hashpartitioning(i_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(38) ShuffleQueryStage +Output [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: X + +(39) AQEShuffleRead +Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: coalesced + +(40) InputAdapter +Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] + +(41) NativeSort +Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: [i_item_sk#1 ASC NULLS FIRST], false + +(83) Scan parquet +Output [1]: [ss_item_sk#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk)] +ReadSchema: struct + +(43) InputAdapter +Input [1]: [ss_item_sk#11] +Arguments: [#11] + +(44) NativeFilter +Input [1]: [#11#11] +Condition : isnotnull(ss_item_sk#11) + +(45) NativeShuffleExchange +Input [1]: [#11#11] +Arguments: hashpartitioning(ss_item_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(46) ShuffleQueryStage +Output [1]: [#11#11] +Arguments: X + +(47) AQEShuffleRead +Input [1]: [#11#11] +Arguments: coalesced + +(48) InputAdapter +Input [1]: [#11#11] + +(49) NativeSort +Input [1]: [#11#11] +Arguments: [ss_item_sk#11 ASC NULLS FIRST], false + +(50) NativeSortMergeJoin +Left keys [1]: [i_item_sk#1] +Right keys [1]: [ss_item_sk#11] +Join type: Inner +Join condition: None + +(51) NativeProject +Output [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] +Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, #11#11] + +(52) NativeHashAggregate +Input [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] +Keys [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] +Functions: [] +Aggregate Attributes: [] +Results [4]: [i_item_id#2, i_item_desc#3, i_current_price#4, #12#12] + +(53) NativeShuffleExchange +Input [4]: [i_item_id#2, i_item_desc#3, i_current_price#4, #12#12] +Arguments: hashpartitioning(i_item_id#2, i_item_desc#3, i_current_price#4, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(54) ShuffleQueryStage +Output [4]: [i_item_id#2, i_item_desc#3, i_current_price#4, #12#12] +Arguments: X + +(55) AQEShuffleRead +Input [4]: [i_item_id#2, i_item_desc#3, i_current_price#4, #12#12] +Arguments: coalesced + +(56) InputAdapter +Input [4]: [i_item_id#2, i_item_desc#3, i_current_price#4, #12#12] + +(57) NativeHashAggregate +Input [4]: [i_item_id#2, i_item_desc#3, i_current_price#4, #12#12] +Keys [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] +Functions: [] +Aggregate Attributes: [] +Results [4]: [i_item_id#2, i_item_desc#3, i_current_price#4, #12#12] + +(58) NativeProject +Output [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] +Input [4]: [i_item_id#2, i_item_desc#3, i_current_price#4, #12#12] + +(59) NativeTakeOrdered +Input [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: X, [i_item_id#2 ASC NULLS FIRST] + +(60) Scan parquet +Output [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, i_manufact_id#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_current_price), GreaterThanOrEqual(i_current_price,62.00), LessThanOrEqual(i_current_price,92.00), In(i_manufact_id, [129,270,423,821]), IsNotNull(i_item_sk)] +ReadSchema: struct + +(61) Filter +Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, i_manufact_id#5] +Condition : ((((isnotnull(i_current_price#4) AND (i_current_price#4 >= 62.00)) AND (i_current_price#4 <= 92.00)) AND i_manufact_id#5 IN (129,270,821,423)) AND isnotnull(i_item_sk#1)) + +(62) Project +Output [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, i_manufact_id#5] + +(63) Exchange +Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: hashpartitioning(i_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(64) Sort +Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: [i_item_sk#1 ASC NULLS FIRST], false, 0 + +(65) Scan parquet +Output [3]: [inv_date_sk#6, inv_item_sk#7, inv_quantity_on_hand#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(inv_quantity_on_hand), GreaterThanOrEqual(inv_quantity_on_hand,100), LessThanOrEqual(inv_quantity_on_hand,500), IsNotNull(inv_item_sk), IsNotNull(inv_date_sk)] +ReadSchema: struct + +(66) Filter +Input [3]: [inv_date_sk#6, inv_item_sk#7, inv_quantity_on_hand#8] +Condition : ((((isnotnull(inv_quantity_on_hand#8) AND (inv_quantity_on_hand#8 >= 100)) AND (inv_quantity_on_hand#8 <= 500)) AND isnotnull(inv_item_sk#7)) AND isnotnull(inv_date_sk#6)) + +(67) Project +Output [2]: [inv_date_sk#6, inv_item_sk#7] +Input [3]: [inv_date_sk#6, inv_item_sk#7, inv_quantity_on_hand#8] + +(68) Exchange +Input [2]: [inv_date_sk#6, inv_item_sk#7] +Arguments: hashpartitioning(inv_item_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(69) Sort +Input [2]: [inv_date_sk#6, inv_item_sk#7] +Arguments: [inv_item_sk#7 ASC NULLS FIRST], false, 0 + +(70) SortMergeJoin +Left keys [1]: [i_item_sk#1] +Right keys [1]: [inv_item_sk#7] +Join type: Inner +Join condition: None + +(71) Project +Output [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6] +Input [6]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6, inv_item_sk#7] + +(72) Exchange +Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6] +Arguments: hashpartitioning(inv_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(73) Sort +Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6] +Arguments: [inv_date_sk#6 ASC NULLS FIRST], false, 0 + +(74) Scan parquet +Output [2]: [d_date_sk#9, d_date#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,2000-05-25), LessThanOrEqual(d_date,2000-07-24), IsNotNull(d_date_sk)] +ReadSchema: struct + +(75) Filter +Input [2]: [d_date_sk#9, d_date#10] +Condition : (((isnotnull(d_date#10) AND (d_date#10 >= 2000-05-25)) AND (d_date#10 <= 2000-07-24)) AND isnotnull(d_date_sk#9)) + +(76) Project +Output [1]: [d_date_sk#9] +Input [2]: [d_date_sk#9, d_date#10] + +(77) Exchange +Input [1]: [d_date_sk#9] +Arguments: hashpartitioning(d_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(78) Sort +Input [1]: [d_date_sk#9] +Arguments: [d_date_sk#9 ASC NULLS FIRST], false, 0 + +(79) SortMergeJoin +Left keys [1]: [inv_date_sk#6] +Right keys [1]: [d_date_sk#9] +Join type: Inner +Join condition: None + +(80) Project +Output [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Input [6]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6, d_date_sk#9] + +(81) Exchange +Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: hashpartitioning(i_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(82) Sort +Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: [i_item_sk#1 ASC NULLS FIRST], false, 0 + +(83) Scan parquet +Output [1]: [ss_item_sk#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk)] +ReadSchema: struct + +(84) Filter +Input [1]: [ss_item_sk#11] +Condition : isnotnull(ss_item_sk#11) + +(85) Exchange +Input [1]: [ss_item_sk#11] +Arguments: hashpartitioning(ss_item_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(86) Sort +Input [1]: [ss_item_sk#11] +Arguments: [ss_item_sk#11 ASC NULLS FIRST], false, 0 + +(87) SortMergeJoin +Left keys [1]: [i_item_sk#1] +Right keys [1]: [ss_item_sk#11] +Join type: Inner +Join condition: None + +(88) Project +Output [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] +Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, ss_item_sk#11] + +(89) HashAggregate +Input [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] +Keys [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] +Functions: [] +Aggregate Attributes: [] +Results [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] + +(90) Exchange +Input [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: hashpartitioning(i_item_id#2, i_item_desc#3, i_current_price#4, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(91) HashAggregate +Input [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] +Keys [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] +Functions: [] +Aggregate Attributes: [] +Results [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] + +(92) TakeOrderedAndProject +Input [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: X, [i_item_id#2 ASC NULLS FIRST], [i_item_id#2, i_item_desc#3, i_current_price#4] + +(93) AdaptiveSparkPlan +Output [3]: [i_item_id#2, i_item_desc#3, i_current_price#4] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q83.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q83.txt new file mode 100644 index 000000000..b67cba737 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q83.txt @@ -0,0 +1,1474 @@ +== Physical Plan == +AdaptiveSparkPlan (270) ++- == Final Plan == + NativeTakeOrdered (150) + +- NativeProject (149) + +- NativeSortMergeJoin Inner (148) + :- NativeProject (110) + : +- NativeSortMergeJoin Inner (109) + : :- NativeSort (71) + : : +- NativeProject (70) + : : +- NativeHashAggregate (69) + : : +- InputAdapter (68) + : : +- AQEShuffleRead (67) + : : +- ShuffleQueryStage (66), Statistics(X) + : : +- NativeShuffleExchange (65) + : : +- NativeHashAggregate (64) + : : +- NativeProject (63) + : : +- NativeSortMergeJoin Inner (62) + : : :- NativeSort (23) + : : : +- InputAdapter (22) + : : : +- AQEShuffleRead (21) + : : : +- ShuffleQueryStage (20), Statistics(X) + : : : +- NativeShuffleExchange (19) + : : : +- NativeProject (18) + : : : +- NativeSortMergeJoin Inner (17) + : : : :- NativeSort (8) + : : : : +- InputAdapter (7) + : : : : +- AQEShuffleRead (6) + : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : +- NativeShuffleExchange (4) + : : : : +- NativeFilter (3) + : : : : +- InputAdapter (2) + : : : : +- NativeParquetScan (1) + : : : +- NativeSort (16) + : : : +- InputAdapter (15) + : : : +- AQEShuffleRead (14) + : : : +- ShuffleQueryStage (13), Statistics(X) + : : : +- NativeShuffleExchange (12) + : : : +- NativeFilter (11) + : : : +- InputAdapter (10) + : : : +- NativeParquetScan (9) + : : +- NativeSort (61) + : : +- InputAdapter (60) + : : +- AQEShuffleRead (59) + : : +- ShuffleQueryStage (58), Statistics(X) + : : +- NativeShuffleExchange (57) + : : +- NativeProject (56) + : : +- NativeSortMergeJoin LeftSemi (55) + : : :- NativeSort (31) + : : : +- InputAdapter (30) + : : : +- AQEShuffleRead (29) + : : : +- ShuffleQueryStage (28), Statistics(X) + : : : +- NativeShuffleExchange (27) + : : : +- NativeFilter (26) + : : : +- InputAdapter (25) + : : : +- NativeParquetScan (24) + : : +- NativeSort (54) + : : +- InputAdapter (53) + : : +- AQEShuffleRead (52) + : : +- ShuffleQueryStage (51), Statistics(X) + : : +- NativeShuffleExchange (50) + : : +- NativeProject (49) + : : +- NativeSortMergeJoin LeftSemi (48) + : : :- NativeSort (38) + : : : +- InputAdapter (37) + : : : +- AQEShuffleRead (36) + : : : +- ShuffleQueryStage (35), Statistics(X) + : : : +- NativeShuffleExchange (34) + : : : +- InputAdapter (33) + : : : +- NativeParquetScan (32) + : : +- NativeSort (47) + : : +- InputAdapter (46) + : : +- AQEShuffleRead (45) + : : +- ShuffleQueryStage (44), Statistics(X) + : : +- NativeShuffleExchange (43) + : : +- NativeProject (42) + : : +- NativeFilter (41) + : : +- InputAdapter (40) + : : +- NativeParquetScan (39) + : +- NativeSort (108) + : +- NativeProject (107) + : +- NativeHashAggregate (106) + : +- InputAdapter (105) + : +- AQEShuffleRead (104) + : +- ShuffleQueryStage (103), Statistics(X) + : +- NativeShuffleExchange (102) + : +- NativeHashAggregate (101) + : +- NativeProject (100) + : +- NativeSortMergeJoin Inner (99) + : :- NativeSort (92) + : : +- InputAdapter (91) + : : +- AQEShuffleRead (90) + : : +- ShuffleQueryStage (89), Statistics(X) + : : +- NativeShuffleExchange (88) + : : +- NativeProject (87) + : : +- NativeSortMergeJoin Inner (86) + : : :- NativeSort (79) + : : : +- InputAdapter (78) + : : : +- AQEShuffleRead (77) + : : : +- ShuffleQueryStage (76), Statistics(X) + : : : +- NativeShuffleExchange (75) + : : : +- NativeFilter (74) + : : : +- InputAdapter (73) + : : : +- NativeParquetScan (72) + : : +- NativeSort (85) + : : +- InputAdapter (84) + : : +- InputAdapter (83) + : : +- AQEShuffleRead (82) + : : +- ShuffleQueryStage (81), Statistics(X) + : : +- ReusedExchange (80) + : +- NativeSort (98) + : +- InputAdapter (97) + : +- InputAdapter (96) + : +- AQEShuffleRead (95) + : +- ShuffleQueryStage (94), Statistics(X) + : +- ReusedExchange (93) + +- NativeSort (147) + +- NativeProject (146) + +- NativeHashAggregate (145) + +- InputAdapter (144) + +- AQEShuffleRead (143) + +- ShuffleQueryStage (142), Statistics(X) + +- NativeShuffleExchange (141) + +- NativeHashAggregate (140) + +- NativeProject (139) + +- NativeSortMergeJoin Inner (138) + :- NativeSort (131) + : +- InputAdapter (130) + : +- AQEShuffleRead (129) + : +- ShuffleQueryStage (128), Statistics(X) + : +- NativeShuffleExchange (127) + : +- NativeProject (126) + : +- NativeSortMergeJoin Inner (125) + : :- NativeSort (118) + : : +- InputAdapter (117) + : : +- AQEShuffleRead (116) + : : +- ShuffleQueryStage (115), Statistics(X) + : : +- NativeShuffleExchange (114) + : : +- NativeFilter (113) + : : +- InputAdapter (112) + : : +- NativeParquetScan (111) + : +- NativeSort (124) + : +- InputAdapter (123) + : +- InputAdapter (122) + : +- AQEShuffleRead (121) + : +- ShuffleQueryStage (120), Statistics(X) + : +- ReusedExchange (119) + +- NativeSort (137) + +- InputAdapter (136) + +- InputAdapter (135) + +- AQEShuffleRead (134) + +- ShuffleQueryStage (133), Statistics(X) + +- ReusedExchange (132) ++- == Initial Plan == + TakeOrderedAndProject (269) + +- Project (268) + +- SortMergeJoin Inner (267) + :- Project (228) + : +- SortMergeJoin Inner (227) + : :- Sort (188) + : : +- HashAggregate (187) + : : +- Exchange (186) + : : +- HashAggregate (185) + : : +- Project (184) + : : +- SortMergeJoin Inner (183) + : : :- Sort (162) + : : : +- Exchange (161) + : : : +- Project (160) + : : : +- SortMergeJoin Inner (159) + : : : :- Sort (154) + : : : : +- Exchange (153) + : : : : +- Filter (152) + : : : : +- Scan parquet (151) + : : : +- Sort (158) + : : : +- Exchange (157) + : : : +- Filter (156) + : : : +- Scan parquet (155) + : : +- Sort (182) + : : +- Exchange (181) + : : +- Project (180) + : : +- SortMergeJoin LeftSemi (179) + : : :- Sort (166) + : : : +- Exchange (165) + : : : +- Filter (164) + : : : +- Scan parquet (163) + : : +- Sort (178) + : : +- Exchange (177) + : : +- Project (176) + : : +- SortMergeJoin LeftSemi (175) + : : :- Sort (169) + : : : +- Exchange (168) + : : : +- Scan parquet (167) + : : +- Sort (174) + : : +- Exchange (173) + : : +- Project (172) + : : +- Filter (171) + : : +- Scan parquet (170) + : +- Sort (226) + : +- HashAggregate (225) + : +- Exchange (224) + : +- HashAggregate (223) + : +- Project (222) + : +- SortMergeJoin Inner (221) + : :- Sort (200) + : : +- Exchange (199) + : : +- Project (198) + : : +- SortMergeJoin Inner (197) + : : :- Sort (192) + : : : +- Exchange (191) + : : : +- Filter (190) + : : : +- Scan parquet (189) + : : +- Sort (196) + : : +- Exchange (195) + : : +- Filter (194) + : : +- Scan parquet (193) + : +- Sort (220) + : +- Exchange (219) + : +- Project (218) + : +- SortMergeJoin LeftSemi (217) + : :- Sort (204) + : : +- Exchange (203) + : : +- Filter (202) + : : +- Scan parquet (201) + : +- Sort (216) + : +- Exchange (215) + : +- Project (214) + : +- SortMergeJoin LeftSemi (213) + : :- Sort (207) + : : +- Exchange (206) + : : +- Scan parquet (205) + : +- Sort (212) + : +- Exchange (211) + : +- Project (210) + : +- Filter (209) + : +- Scan parquet (208) + +- Sort (266) + +- HashAggregate (265) + +- Exchange (264) + +- HashAggregate (263) + +- Project (262) + +- SortMergeJoin Inner (261) + :- Sort (240) + : +- Exchange (239) + : +- Project (238) + : +- SortMergeJoin Inner (237) + : :- Sort (232) + : : +- Exchange (231) + : : +- Filter (230) + : : +- Scan parquet (229) + : +- Sort (236) + : +- Exchange (235) + : +- Filter (234) + : +- Scan parquet (233) + +- Sort (260) + +- Exchange (259) + +- Project (258) + +- SortMergeJoin LeftSemi (257) + :- Sort (244) + : +- Exchange (243) + : +- Filter (242) + : +- Scan parquet (241) + +- Sort (256) + +- Exchange (255) + +- Project (254) + +- SortMergeJoin LeftSemi (253) + :- Sort (247) + : +- Exchange (246) + : +- Scan parquet (245) + +- Sort (252) + +- Exchange (251) + +- Project (250) + +- Filter (249) + +- Scan parquet (248) + + +(151) Scan parquet +Output [3]: [sr_returned_date_sk#1, sr_item_sk#2, sr_return_quantity#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_item_sk), IsNotNull(sr_returned_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [sr_returned_date_sk#1, sr_item_sk#2, sr_return_quantity#3] +Arguments: [#1, #2, #3] + +(3) NativeFilter +Input [3]: [#1#1, #2#2, #3#3] +Condition : (isnotnull(sr_item_sk#2) AND isnotnull(sr_returned_date_sk#1)) + +(4) NativeShuffleExchange +Input [3]: [#1#1, #2#2, #3#3] +Arguments: hashpartitioning(sr_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [3]: [#1#1, #2#2, #3#3] +Arguments: X + +(6) AQEShuffleRead +Input [3]: [#1#1, #2#2, #3#3] +Arguments: coalesced + +(7) InputAdapter +Input [3]: [#1#1, #2#2, #3#3] + +(8) NativeSort +Input [3]: [#1#1, #2#2, #3#3] +Arguments: [sr_item_sk#2 ASC NULLS FIRST], false + +(155) Scan parquet +Output [2]: [i_item_sk#4, i_item_id#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_item_id)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [i_item_sk#4, i_item_id#5] +Arguments: [#4, #5] + +(11) NativeFilter +Input [2]: [#4#4, #5#5] +Condition : (isnotnull(i_item_sk#4) AND isnotnull(i_item_id#5)) + +(12) NativeShuffleExchange +Input [2]: [#4#4, #5#5] +Arguments: hashpartitioning(i_item_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [2]: [#4#4, #5#5] +Arguments: X + +(14) AQEShuffleRead +Input [2]: [#4#4, #5#5] +Arguments: coalesced + +(15) InputAdapter +Input [2]: [#4#4, #5#5] + +(16) NativeSort +Input [2]: [#4#4, #5#5] +Arguments: [i_item_sk#4 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [1]: [sr_item_sk#2] +Right keys [1]: [i_item_sk#4] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [3]: [sr_returned_date_sk#1, sr_return_quantity#3, i_item_id#5] +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] + +(19) NativeShuffleExchange +Input [3]: [sr_returned_date_sk#1, sr_return_quantity#3, i_item_id#5] +Arguments: hashpartitioning(sr_returned_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [3]: [sr_returned_date_sk#1, sr_return_quantity#3, i_item_id#5] +Arguments: X + +(21) AQEShuffleRead +Input [3]: [sr_returned_date_sk#1, sr_return_quantity#3, i_item_id#5] +Arguments: coalesced + +(22) InputAdapter +Input [3]: [sr_returned_date_sk#1, sr_return_quantity#3, i_item_id#5] + +(23) NativeSort +Input [3]: [sr_returned_date_sk#1, sr_return_quantity#3, i_item_id#5] +Arguments: [sr_returned_date_sk#1 ASC NULLS FIRST], false + +(163) Scan parquet +Output [2]: [d_date_sk#6, d_date#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date_sk)] +ReadSchema: struct + +(25) InputAdapter +Input [2]: [d_date_sk#6, d_date#7] +Arguments: [#6, #7] + +(26) NativeFilter +Input [2]: [#6#6, #7#7] +Condition : isnotnull(d_date_sk#6) + +(27) NativeShuffleExchange +Input [2]: [#6#6, #7#7] +Arguments: hashpartitioning(d_date#7, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(28) ShuffleQueryStage +Output [2]: [#6#6, #7#7] +Arguments: X + +(29) AQEShuffleRead +Input [2]: [#6#6, #7#7] +Arguments: coalesced + +(30) InputAdapter +Input [2]: [#6#6, #7#7] + +(31) NativeSort +Input [2]: [#6#6, #7#7] +Arguments: [d_date#7 ASC NULLS FIRST], false + +(167) Scan parquet +Output [2]: [d_date#8, d_week_seq#9] +Batched: true +Location: InMemoryFileIndex [file:/] +ReadSchema: struct + +(33) InputAdapter +Input [2]: [d_date#8, d_week_seq#9] +Arguments: [#8, #9] + +(34) NativeShuffleExchange +Input [2]: [#8#8, #9#9] +Arguments: hashpartitioning(d_week_seq#9, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(35) ShuffleQueryStage +Output [2]: [#8#8, #9#9] +Arguments: X + +(36) AQEShuffleRead +Input [2]: [#8#8, #9#9] +Arguments: coalesced + +(37) InputAdapter +Input [2]: [#8#8, #9#9] + +(38) NativeSort +Input [2]: [#8#8, #9#9] +Arguments: [d_week_seq#9 ASC NULLS FIRST], false + +(170) Scan parquet +Output [2]: [d_date#10, d_week_seq#11] +Batched: true +Location: InMemoryFileIndex [file:/] +ReadSchema: struct + +(40) InputAdapter +Input [2]: [d_date#10, d_week_seq#11] +Arguments: [#10, #11] + +(41) NativeFilter +Input [2]: [#10#10, #11#11] +Condition : cast(d_date#10 as string) IN (2000-06-30,2000-09-27,2000-11-17) + +(42) NativeProject +Output [1]: [d_week_seq#11] +Input [2]: [#10#10, #11#11] + +(43) NativeShuffleExchange +Input [1]: [d_week_seq#11] +Arguments: hashpartitioning(d_week_seq#11, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) ShuffleQueryStage +Output [1]: [d_week_seq#11] +Arguments: X + +(45) AQEShuffleRead +Input [1]: [d_week_seq#11] +Arguments: coalesced + +(46) InputAdapter +Input [1]: [d_week_seq#11] + +(47) NativeSort +Input [1]: [d_week_seq#11] +Arguments: [d_week_seq#11 ASC NULLS FIRST], false + +(48) NativeSortMergeJoin +Left keys [1]: [d_week_seq#9] +Right keys [1]: [d_week_seq#11] +Join type: LeftSemi +Join condition: None + +(49) NativeProject +Output [1]: [d_date#8] +Input [2]: [#8#8, #9#9] + +(50) NativeShuffleExchange +Input [1]: [d_date#8] +Arguments: hashpartitioning(d_date#8, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(51) ShuffleQueryStage +Output [1]: [d_date#8] +Arguments: X + +(52) AQEShuffleRead +Input [1]: [d_date#8] +Arguments: coalesced + +(53) InputAdapter +Input [1]: [d_date#8] + +(54) NativeSort +Input [1]: [d_date#8] +Arguments: [d_date#8 ASC NULLS FIRST], false + +(55) NativeSortMergeJoin +Left keys [1]: [d_date#7] +Right keys [1]: [d_date#8] +Join type: LeftSemi +Join condition: None + +(56) NativeProject +Output [1]: [d_date_sk#6] +Input [2]: [#6#6, #7#7] + +(57) NativeShuffleExchange +Input [1]: [d_date_sk#6] +Arguments: hashpartitioning(d_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(58) ShuffleQueryStage +Output [1]: [d_date_sk#6] +Arguments: X + +(59) AQEShuffleRead +Input [1]: [d_date_sk#6] +Arguments: coalesced + +(60) InputAdapter +Input [1]: [d_date_sk#6] + +(61) NativeSort +Input [1]: [d_date_sk#6] +Arguments: [d_date_sk#6 ASC NULLS FIRST], false + +(62) NativeSortMergeJoin +Left keys [1]: [sr_returned_date_sk#1] +Right keys [1]: [d_date_sk#6] +Join type: Inner +Join condition: None + +(63) NativeProject +Output [2]: [sr_return_quantity#3, i_item_id#5] +Input [4]: [sr_returned_date_sk#1, sr_return_quantity#3, i_item_id#5, d_date_sk#6] + +(64) NativeHashAggregate +Input [2]: [sr_return_quantity#3, i_item_id#5] +Keys [1]: [i_item_id#5] +Functions [1]: [partial_sum(sr_return_quantity#3)] +Aggregate Attributes [1]: [sum#12] +Results [2]: [i_item_id#5, #13#13] + +(65) NativeShuffleExchange +Input [2]: [i_item_id#5, #13#13] +Arguments: hashpartitioning(i_item_id#5, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(66) ShuffleQueryStage +Output [2]: [i_item_id#5, #13#13] +Arguments: X + +(67) AQEShuffleRead +Input [2]: [i_item_id#5, #13#13] +Arguments: coalesced + +(68) InputAdapter +Input [2]: [i_item_id#5, #13#13] + +(69) NativeHashAggregate +Input [2]: [i_item_id#5, #13#13] +Keys [1]: [i_item_id#5] +Functions [1]: [sum(sr_return_quantity#3)] +Aggregate Attributes [1]: [sum(sr_return_quantity#3)#14] +Results [2]: [i_item_id#5, sum(sr_return_quantity#3)#14] + +(70) NativeProject +Output [2]: [i_item_id#5 AS item_id#15, sum(sr_return_quantity#3)#14 AS sr_item_qty#16] +Input [2]: [i_item_id#5, sum(sr_return_quantity#3)#14] + +(71) NativeSort +Input [2]: [item_id#15, sr_item_qty#16] +Arguments: [item_id#15 ASC NULLS FIRST], false + +(189) Scan parquet +Output [3]: [cr_returned_date_sk#17, cr_item_sk#18, cr_return_quantity#19] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cr_item_sk), IsNotNull(cr_returned_date_sk)] +ReadSchema: struct + +(73) InputAdapter +Input [3]: [cr_returned_date_sk#17, cr_item_sk#18, cr_return_quantity#19] +Arguments: [#17, #18, #19] + +(74) NativeFilter +Input [3]: [#17#17, #18#18, #19#19] +Condition : (isnotnull(cr_item_sk#18) AND isnotnull(cr_returned_date_sk#17)) + +(75) NativeShuffleExchange +Input [3]: [#17#17, #18#18, #19#19] +Arguments: hashpartitioning(cr_item_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(76) ShuffleQueryStage +Output [3]: [#17#17, #18#18, #19#19] +Arguments: X + +(77) AQEShuffleRead +Input [3]: [#17#17, #18#18, #19#19] +Arguments: coalesced + +(78) InputAdapter +Input [3]: [#17#17, #18#18, #19#19] + +(79) NativeSort +Input [3]: [#17#17, #18#18, #19#19] +Arguments: [cr_item_sk#18 ASC NULLS FIRST], false + +(80) ReusedExchange [Reuses operator id: 12] +Output [2]: [i_item_sk#20, i_item_id#21] + +(81) ShuffleQueryStage +Output [2]: [i_item_sk#20, i_item_id#21] +Arguments: X + +(82) AQEShuffleRead +Input [2]: [i_item_sk#20, i_item_id#21] +Arguments: coalesced + +(83) InputAdapter +Input [2]: [i_item_sk#20, i_item_id#21] +Arguments: [#20, #21] + +(84) InputAdapter +Input [2]: [#20#20, #21#21] + +(85) NativeSort +Input [2]: [#20#20, #21#21] +Arguments: [i_item_sk#20 ASC NULLS FIRST], false + +(86) NativeSortMergeJoin +Left keys [1]: [cr_item_sk#18] +Right keys [1]: [i_item_sk#20] +Join type: Inner +Join condition: None + +(87) NativeProject +Output [3]: [cr_returned_date_sk#17, cr_return_quantity#19, i_item_id#21] +Input [5]: [#17#17, #18#18, #19#19, #20#20, #21#21] + +(88) NativeShuffleExchange +Input [3]: [cr_returned_date_sk#17, cr_return_quantity#19, i_item_id#21] +Arguments: hashpartitioning(cr_returned_date_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(89) ShuffleQueryStage +Output [3]: [cr_returned_date_sk#17, cr_return_quantity#19, i_item_id#21] +Arguments: X + +(90) AQEShuffleRead +Input [3]: [cr_returned_date_sk#17, cr_return_quantity#19, i_item_id#21] +Arguments: coalesced + +(91) InputAdapter +Input [3]: [cr_returned_date_sk#17, cr_return_quantity#19, i_item_id#21] + +(92) NativeSort +Input [3]: [cr_returned_date_sk#17, cr_return_quantity#19, i_item_id#21] +Arguments: [cr_returned_date_sk#17 ASC NULLS FIRST], false + +(93) ReusedExchange [Reuses operator id: 57] +Output [1]: [d_date_sk#22] + +(94) ShuffleQueryStage +Output [1]: [d_date_sk#22] +Arguments: X + +(95) AQEShuffleRead +Input [1]: [d_date_sk#22] +Arguments: coalesced + +(96) InputAdapter +Input [1]: [d_date_sk#22] +Arguments: [#22] + +(97) InputAdapter +Input [1]: [#22#22] + +(98) NativeSort +Input [1]: [#22#22] +Arguments: [d_date_sk#22 ASC NULLS FIRST], false + +(99) NativeSortMergeJoin +Left keys [1]: [cr_returned_date_sk#17] +Right keys [1]: [d_date_sk#22] +Join type: Inner +Join condition: None + +(100) NativeProject +Output [2]: [cr_return_quantity#19, i_item_id#21] +Input [4]: [cr_returned_date_sk#17, cr_return_quantity#19, i_item_id#21, #22#22] + +(101) NativeHashAggregate +Input [2]: [cr_return_quantity#19, i_item_id#21] +Keys [1]: [i_item_id#21] +Functions [1]: [partial_sum(cr_return_quantity#19)] +Aggregate Attributes [1]: [sum#23] +Results [2]: [i_item_id#21, #13#13] + +(102) NativeShuffleExchange +Input [2]: [i_item_id#21, #13#13] +Arguments: hashpartitioning(i_item_id#21, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(103) ShuffleQueryStage +Output [2]: [i_item_id#21, #13#13] +Arguments: X + +(104) AQEShuffleRead +Input [2]: [i_item_id#21, #13#13] +Arguments: coalesced + +(105) InputAdapter +Input [2]: [i_item_id#21, #13#13] + +(106) NativeHashAggregate +Input [2]: [i_item_id#21, #13#13] +Keys [1]: [i_item_id#21] +Functions [1]: [sum(cr_return_quantity#19)] +Aggregate Attributes [1]: [sum(cr_return_quantity#19)#24] +Results [2]: [i_item_id#21, sum(cr_return_quantity#19)#24] + +(107) NativeProject +Output [2]: [i_item_id#21 AS item_id#25, sum(cr_return_quantity#19)#24 AS cr_item_qty#26] +Input [2]: [i_item_id#21, sum(cr_return_quantity#19)#24] + +(108) NativeSort +Input [2]: [item_id#25, cr_item_qty#26] +Arguments: [item_id#25 ASC NULLS FIRST], false + +(109) NativeSortMergeJoin +Left keys [1]: [item_id#15] +Right keys [1]: [item_id#25] +Join type: Inner +Join condition: None + +(110) NativeProject +Output [3]: [item_id#15, sr_item_qty#16, cr_item_qty#26] +Input [4]: [item_id#15, sr_item_qty#16, item_id#25, cr_item_qty#26] + +(229) Scan parquet +Output [3]: [wr_returned_date_sk#27, wr_item_sk#28, wr_return_quantity#29] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wr_item_sk), IsNotNull(wr_returned_date_sk)] +ReadSchema: struct + +(112) InputAdapter +Input [3]: [wr_returned_date_sk#27, wr_item_sk#28, wr_return_quantity#29] +Arguments: [#27, #28, #29] + +(113) NativeFilter +Input [3]: [#27#27, #28#28, #29#29] +Condition : (isnotnull(wr_item_sk#28) AND isnotnull(wr_returned_date_sk#27)) + +(114) NativeShuffleExchange +Input [3]: [#27#27, #28#28, #29#29] +Arguments: hashpartitioning(wr_item_sk#28, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(115) ShuffleQueryStage +Output [3]: [#27#27, #28#28, #29#29] +Arguments: X + +(116) AQEShuffleRead +Input [3]: [#27#27, #28#28, #29#29] +Arguments: coalesced + +(117) InputAdapter +Input [3]: [#27#27, #28#28, #29#29] + +(118) NativeSort +Input [3]: [#27#27, #28#28, #29#29] +Arguments: [wr_item_sk#28 ASC NULLS FIRST], false + +(119) ReusedExchange [Reuses operator id: 12] +Output [2]: [i_item_sk#30, i_item_id#31] + +(120) ShuffleQueryStage +Output [2]: [i_item_sk#30, i_item_id#31] +Arguments: X + +(121) AQEShuffleRead +Input [2]: [i_item_sk#30, i_item_id#31] +Arguments: coalesced + +(122) InputAdapter +Input [2]: [i_item_sk#30, i_item_id#31] +Arguments: [#30, #31] + +(123) InputAdapter +Input [2]: [#30#30, #31#31] + +(124) NativeSort +Input [2]: [#30#30, #31#31] +Arguments: [i_item_sk#30 ASC NULLS FIRST], false + +(125) NativeSortMergeJoin +Left keys [1]: [wr_item_sk#28] +Right keys [1]: [i_item_sk#30] +Join type: Inner +Join condition: None + +(126) NativeProject +Output [3]: [wr_returned_date_sk#27, wr_return_quantity#29, i_item_id#31] +Input [5]: [#27#27, #28#28, #29#29, #30#30, #31#31] + +(127) NativeShuffleExchange +Input [3]: [wr_returned_date_sk#27, wr_return_quantity#29, i_item_id#31] +Arguments: hashpartitioning(wr_returned_date_sk#27, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(128) ShuffleQueryStage +Output [3]: [wr_returned_date_sk#27, wr_return_quantity#29, i_item_id#31] +Arguments: X + +(129) AQEShuffleRead +Input [3]: [wr_returned_date_sk#27, wr_return_quantity#29, i_item_id#31] +Arguments: coalesced + +(130) InputAdapter +Input [3]: [wr_returned_date_sk#27, wr_return_quantity#29, i_item_id#31] + +(131) NativeSort +Input [3]: [wr_returned_date_sk#27, wr_return_quantity#29, i_item_id#31] +Arguments: [wr_returned_date_sk#27 ASC NULLS FIRST], false + +(132) ReusedExchange [Reuses operator id: 57] +Output [1]: [d_date_sk#32] + +(133) ShuffleQueryStage +Output [1]: [d_date_sk#32] +Arguments: X + +(134) AQEShuffleRead +Input [1]: [d_date_sk#32] +Arguments: coalesced + +(135) InputAdapter +Input [1]: [d_date_sk#32] +Arguments: [#32] + +(136) InputAdapter +Input [1]: [#32#32] + +(137) NativeSort +Input [1]: [#32#32] +Arguments: [d_date_sk#32 ASC NULLS FIRST], false + +(138) NativeSortMergeJoin +Left keys [1]: [wr_returned_date_sk#27] +Right keys [1]: [d_date_sk#32] +Join type: Inner +Join condition: None + +(139) NativeProject +Output [2]: [wr_return_quantity#29, i_item_id#31] +Input [4]: [wr_returned_date_sk#27, wr_return_quantity#29, i_item_id#31, #32#32] + +(140) NativeHashAggregate +Input [2]: [wr_return_quantity#29, i_item_id#31] +Keys [1]: [i_item_id#31] +Functions [1]: [partial_sum(wr_return_quantity#29)] +Aggregate Attributes [1]: [sum#33] +Results [2]: [i_item_id#31, #13#13] + +(141) NativeShuffleExchange +Input [2]: [i_item_id#31, #13#13] +Arguments: hashpartitioning(i_item_id#31, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(142) ShuffleQueryStage +Output [2]: [i_item_id#31, #13#13] +Arguments: X + +(143) AQEShuffleRead +Input [2]: [i_item_id#31, #13#13] +Arguments: coalesced + +(144) InputAdapter +Input [2]: [i_item_id#31, #13#13] + +(145) NativeHashAggregate +Input [2]: [i_item_id#31, #13#13] +Keys [1]: [i_item_id#31] +Functions [1]: [sum(wr_return_quantity#29)] +Aggregate Attributes [1]: [sum(wr_return_quantity#29)#34] +Results [2]: [i_item_id#31, sum(wr_return_quantity#29)#34] + +(146) NativeProject +Output [2]: [i_item_id#31 AS item_id#35, sum(wr_return_quantity#29)#34 AS wr_item_qty#36] +Input [2]: [i_item_id#31, sum(wr_return_quantity#29)#34] + +(147) NativeSort +Input [2]: [item_id#35, wr_item_qty#36] +Arguments: [item_id#35 ASC NULLS FIRST], false + +(148) NativeSortMergeJoin +Left keys [1]: [item_id#15] +Right keys [1]: [item_id#35] +Join type: Inner +Join condition: None + +(149) NativeProject +Output [8]: [item_id#15, sr_item_qty#16, (((cast(sr_item_qty#16 as double) / cast(((sr_item_qty#16 + cr_item_qty#26) + wr_item_qty#36) as double)) / 3.0) * 100.0) AS sr_dev#37, cr_item_qty#26, (((cast(cr_item_qty#26 as double) / cast(((sr_item_qty#16 + cr_item_qty#26) + wr_item_qty#36) as double)) / 3.0) * 100.0) AS cr_dev#38, wr_item_qty#36, (((cast(wr_item_qty#36 as double) / cast(((sr_item_qty#16 + cr_item_qty#26) + wr_item_qty#36) as double)) / 3.0) * 100.0) AS wr_dev#39, (cast(((sr_item_qty#16 + cr_item_qty#26) + wr_item_qty#36) as decimal(20,0)) / 3.0) AS average#40] +Input [5]: [item_id#15, sr_item_qty#16, cr_item_qty#26, item_id#35, wr_item_qty#36] + +(150) NativeTakeOrdered +Input [8]: [item_id#15, sr_item_qty#16, sr_dev#37, cr_item_qty#26, cr_dev#38, wr_item_qty#36, wr_dev#39, average#40] +Arguments: X, [item_id#15 ASC NULLS FIRST, sr_item_qty#16 ASC NULLS FIRST] + +(151) Scan parquet +Output [3]: [sr_returned_date_sk#1, sr_item_sk#2, sr_return_quantity#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_item_sk), IsNotNull(sr_returned_date_sk)] +ReadSchema: struct + +(152) Filter +Input [3]: [sr_returned_date_sk#1, sr_item_sk#2, sr_return_quantity#3] +Condition : (isnotnull(sr_item_sk#2) AND isnotnull(sr_returned_date_sk#1)) + +(153) Exchange +Input [3]: [sr_returned_date_sk#1, sr_item_sk#2, sr_return_quantity#3] +Arguments: hashpartitioning(sr_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(154) Sort +Input [3]: [sr_returned_date_sk#1, sr_item_sk#2, sr_return_quantity#3] +Arguments: [sr_item_sk#2 ASC NULLS FIRST], false, 0 + +(155) Scan parquet +Output [2]: [i_item_sk#4, i_item_id#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_item_id)] +ReadSchema: struct + +(156) Filter +Input [2]: [i_item_sk#4, i_item_id#5] +Condition : (isnotnull(i_item_sk#4) AND isnotnull(i_item_id#5)) + +(157) Exchange +Input [2]: [i_item_sk#4, i_item_id#5] +Arguments: hashpartitioning(i_item_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(158) Sort +Input [2]: [i_item_sk#4, i_item_id#5] +Arguments: [i_item_sk#4 ASC NULLS FIRST], false, 0 + +(159) SortMergeJoin +Left keys [1]: [sr_item_sk#2] +Right keys [1]: [i_item_sk#4] +Join type: Inner +Join condition: None + +(160) Project +Output [3]: [sr_returned_date_sk#1, sr_return_quantity#3, i_item_id#5] +Input [5]: [sr_returned_date_sk#1, sr_item_sk#2, sr_return_quantity#3, i_item_sk#4, i_item_id#5] + +(161) Exchange +Input [3]: [sr_returned_date_sk#1, sr_return_quantity#3, i_item_id#5] +Arguments: hashpartitioning(sr_returned_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(162) Sort +Input [3]: [sr_returned_date_sk#1, sr_return_quantity#3, i_item_id#5] +Arguments: [sr_returned_date_sk#1 ASC NULLS FIRST], false, 0 + +(163) Scan parquet +Output [2]: [d_date_sk#6, d_date#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date_sk)] +ReadSchema: struct + +(164) Filter +Input [2]: [d_date_sk#6, d_date#7] +Condition : isnotnull(d_date_sk#6) + +(165) Exchange +Input [2]: [d_date_sk#6, d_date#7] +Arguments: hashpartitioning(d_date#7, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(166) Sort +Input [2]: [d_date_sk#6, d_date#7] +Arguments: [d_date#7 ASC NULLS FIRST], false, 0 + +(167) Scan parquet +Output [2]: [d_date#8, d_week_seq#9] +Batched: true +Location: InMemoryFileIndex [file:/] +ReadSchema: struct + +(168) Exchange +Input [2]: [d_date#8, d_week_seq#9] +Arguments: hashpartitioning(d_week_seq#9, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(169) Sort +Input [2]: [d_date#8, d_week_seq#9] +Arguments: [d_week_seq#9 ASC NULLS FIRST], false, 0 + +(170) Scan parquet +Output [2]: [d_date#10, d_week_seq#11] +Batched: true +Location: InMemoryFileIndex [file:/] +ReadSchema: struct + +(171) Filter +Input [2]: [d_date#10, d_week_seq#11] +Condition : cast(d_date#10 as string) IN (2000-06-30,2000-09-27,2000-11-17) + +(172) Project +Output [1]: [d_week_seq#11] +Input [2]: [d_date#10, d_week_seq#11] + +(173) Exchange +Input [1]: [d_week_seq#11] +Arguments: hashpartitioning(d_week_seq#11, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(174) Sort +Input [1]: [d_week_seq#11] +Arguments: [d_week_seq#11 ASC NULLS FIRST], false, 0 + +(175) SortMergeJoin +Left keys [1]: [d_week_seq#9] +Right keys [1]: [d_week_seq#11] +Join type: LeftSemi +Join condition: None + +(176) Project +Output [1]: [d_date#8] +Input [2]: [d_date#8, d_week_seq#9] + +(177) Exchange +Input [1]: [d_date#8] +Arguments: hashpartitioning(d_date#8, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(178) Sort +Input [1]: [d_date#8] +Arguments: [d_date#8 ASC NULLS FIRST], false, 0 + +(179) SortMergeJoin +Left keys [1]: [d_date#7] +Right keys [1]: [d_date#8] +Join type: LeftSemi +Join condition: None + +(180) Project +Output [1]: [d_date_sk#6] +Input [2]: [d_date_sk#6, d_date#7] + +(181) Exchange +Input [1]: [d_date_sk#6] +Arguments: hashpartitioning(d_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(182) Sort +Input [1]: [d_date_sk#6] +Arguments: [d_date_sk#6 ASC NULLS FIRST], false, 0 + +(183) SortMergeJoin +Left keys [1]: [sr_returned_date_sk#1] +Right keys [1]: [d_date_sk#6] +Join type: Inner +Join condition: None + +(184) Project +Output [2]: [sr_return_quantity#3, i_item_id#5] +Input [4]: [sr_returned_date_sk#1, sr_return_quantity#3, i_item_id#5, d_date_sk#6] + +(185) HashAggregate +Input [2]: [sr_return_quantity#3, i_item_id#5] +Keys [1]: [i_item_id#5] +Functions [1]: [partial_sum(sr_return_quantity#3)] +Aggregate Attributes [1]: [sum#12] +Results [2]: [i_item_id#5, sum#41] + +(186) Exchange +Input [2]: [i_item_id#5, sum#41] +Arguments: hashpartitioning(i_item_id#5, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(187) HashAggregate +Input [2]: [i_item_id#5, sum#41] +Keys [1]: [i_item_id#5] +Functions [1]: [sum(sr_return_quantity#3)] +Aggregate Attributes [1]: [sum(sr_return_quantity#3)#14] +Results [2]: [i_item_id#5 AS item_id#15, sum(sr_return_quantity#3)#14 AS sr_item_qty#16] + +(188) Sort +Input [2]: [item_id#15, sr_item_qty#16] +Arguments: [item_id#15 ASC NULLS FIRST], false, 0 + +(189) Scan parquet +Output [3]: [cr_returned_date_sk#17, cr_item_sk#18, cr_return_quantity#19] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cr_item_sk), IsNotNull(cr_returned_date_sk)] +ReadSchema: struct + +(190) Filter +Input [3]: [cr_returned_date_sk#17, cr_item_sk#18, cr_return_quantity#19] +Condition : (isnotnull(cr_item_sk#18) AND isnotnull(cr_returned_date_sk#17)) + +(191) Exchange +Input [3]: [cr_returned_date_sk#17, cr_item_sk#18, cr_return_quantity#19] +Arguments: hashpartitioning(cr_item_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(192) Sort +Input [3]: [cr_returned_date_sk#17, cr_item_sk#18, cr_return_quantity#19] +Arguments: [cr_item_sk#18 ASC NULLS FIRST], false, 0 + +(193) Scan parquet +Output [2]: [i_item_sk#20, i_item_id#21] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_item_id)] +ReadSchema: struct + +(194) Filter +Input [2]: [i_item_sk#20, i_item_id#21] +Condition : (isnotnull(i_item_sk#20) AND isnotnull(i_item_id#21)) + +(195) Exchange +Input [2]: [i_item_sk#20, i_item_id#21] +Arguments: hashpartitioning(i_item_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(196) Sort +Input [2]: [i_item_sk#20, i_item_id#21] +Arguments: [i_item_sk#20 ASC NULLS FIRST], false, 0 + +(197) SortMergeJoin +Left keys [1]: [cr_item_sk#18] +Right keys [1]: [i_item_sk#20] +Join type: Inner +Join condition: None + +(198) Project +Output [3]: [cr_returned_date_sk#17, cr_return_quantity#19, i_item_id#21] +Input [5]: [cr_returned_date_sk#17, cr_item_sk#18, cr_return_quantity#19, i_item_sk#20, i_item_id#21] + +(199) Exchange +Input [3]: [cr_returned_date_sk#17, cr_return_quantity#19, i_item_id#21] +Arguments: hashpartitioning(cr_returned_date_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(200) Sort +Input [3]: [cr_returned_date_sk#17, cr_return_quantity#19, i_item_id#21] +Arguments: [cr_returned_date_sk#17 ASC NULLS FIRST], false, 0 + +(201) Scan parquet +Output [2]: [d_date_sk#22, d_date#42] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date_sk)] +ReadSchema: struct + +(202) Filter +Input [2]: [d_date_sk#22, d_date#42] +Condition : isnotnull(d_date_sk#22) + +(203) Exchange +Input [2]: [d_date_sk#22, d_date#42] +Arguments: hashpartitioning(d_date#42, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(204) Sort +Input [2]: [d_date_sk#22, d_date#42] +Arguments: [d_date#42 ASC NULLS FIRST], false, 0 + +(205) Scan parquet +Output [2]: [d_date#43, d_week_seq#44] +Batched: true +Location: InMemoryFileIndex [file:/] +ReadSchema: struct + +(206) Exchange +Input [2]: [d_date#43, d_week_seq#44] +Arguments: hashpartitioning(d_week_seq#44, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(207) Sort +Input [2]: [d_date#43, d_week_seq#44] +Arguments: [d_week_seq#44 ASC NULLS FIRST], false, 0 + +(208) Scan parquet +Output [2]: [d_date#45, d_week_seq#46] +Batched: true +Location: InMemoryFileIndex [file:/] +ReadSchema: struct + +(209) Filter +Input [2]: [d_date#45, d_week_seq#46] +Condition : cast(d_date#45 as string) IN (2000-06-30,2000-09-27,2000-11-17) + +(210) Project +Output [1]: [d_week_seq#46] +Input [2]: [d_date#45, d_week_seq#46] + +(211) Exchange +Input [1]: [d_week_seq#46] +Arguments: hashpartitioning(d_week_seq#46, 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(212) Sort +Input [1]: [d_week_seq#46] +Arguments: [d_week_seq#46 ASC NULLS FIRST], false, 0 + +(213) SortMergeJoin +Left keys [1]: [d_week_seq#44] +Right keys [1]: [d_week_seq#46] +Join type: LeftSemi +Join condition: None + +(214) Project +Output [1]: [d_date#43] +Input [2]: [d_date#43, d_week_seq#44] + +(215) Exchange +Input [1]: [d_date#43] +Arguments: hashpartitioning(d_date#43, 100), ENSURE_REQUIREMENTS, [plan_id=31] + +(216) Sort +Input [1]: [d_date#43] +Arguments: [d_date#43 ASC NULLS FIRST], false, 0 + +(217) SortMergeJoin +Left keys [1]: [d_date#42] +Right keys [1]: [d_date#43] +Join type: LeftSemi +Join condition: None + +(218) Project +Output [1]: [d_date_sk#22] +Input [2]: [d_date_sk#22, d_date#42] + +(219) Exchange +Input [1]: [d_date_sk#22] +Arguments: hashpartitioning(d_date_sk#22, 100), ENSURE_REQUIREMENTS, [plan_id=32] + +(220) Sort +Input [1]: [d_date_sk#22] +Arguments: [d_date_sk#22 ASC NULLS FIRST], false, 0 + +(221) SortMergeJoin +Left keys [1]: [cr_returned_date_sk#17] +Right keys [1]: [d_date_sk#22] +Join type: Inner +Join condition: None + +(222) Project +Output [2]: [cr_return_quantity#19, i_item_id#21] +Input [4]: [cr_returned_date_sk#17, cr_return_quantity#19, i_item_id#21, d_date_sk#22] + +(223) HashAggregate +Input [2]: [cr_return_quantity#19, i_item_id#21] +Keys [1]: [i_item_id#21] +Functions [1]: [partial_sum(cr_return_quantity#19)] +Aggregate Attributes [1]: [sum#23] +Results [2]: [i_item_id#21, sum#47] + +(224) Exchange +Input [2]: [i_item_id#21, sum#47] +Arguments: hashpartitioning(i_item_id#21, 100), ENSURE_REQUIREMENTS, [plan_id=33] + +(225) HashAggregate +Input [2]: [i_item_id#21, sum#47] +Keys [1]: [i_item_id#21] +Functions [1]: [sum(cr_return_quantity#19)] +Aggregate Attributes [1]: [sum(cr_return_quantity#19)#24] +Results [2]: [i_item_id#21 AS item_id#25, sum(cr_return_quantity#19)#24 AS cr_item_qty#26] + +(226) Sort +Input [2]: [item_id#25, cr_item_qty#26] +Arguments: [item_id#25 ASC NULLS FIRST], false, 0 + +(227) SortMergeJoin +Left keys [1]: [item_id#15] +Right keys [1]: [item_id#25] +Join type: Inner +Join condition: None + +(228) Project +Output [3]: [item_id#15, sr_item_qty#16, cr_item_qty#26] +Input [4]: [item_id#15, sr_item_qty#16, item_id#25, cr_item_qty#26] + +(229) Scan parquet +Output [3]: [wr_returned_date_sk#27, wr_item_sk#28, wr_return_quantity#29] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wr_item_sk), IsNotNull(wr_returned_date_sk)] +ReadSchema: struct + +(230) Filter +Input [3]: [wr_returned_date_sk#27, wr_item_sk#28, wr_return_quantity#29] +Condition : (isnotnull(wr_item_sk#28) AND isnotnull(wr_returned_date_sk#27)) + +(231) Exchange +Input [3]: [wr_returned_date_sk#27, wr_item_sk#28, wr_return_quantity#29] +Arguments: hashpartitioning(wr_item_sk#28, 100), ENSURE_REQUIREMENTS, [plan_id=34] + +(232) Sort +Input [3]: [wr_returned_date_sk#27, wr_item_sk#28, wr_return_quantity#29] +Arguments: [wr_item_sk#28 ASC NULLS FIRST], false, 0 + +(233) Scan parquet +Output [2]: [i_item_sk#30, i_item_id#31] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk), IsNotNull(i_item_id)] +ReadSchema: struct + +(234) Filter +Input [2]: [i_item_sk#30, i_item_id#31] +Condition : (isnotnull(i_item_sk#30) AND isnotnull(i_item_id#31)) + +(235) Exchange +Input [2]: [i_item_sk#30, i_item_id#31] +Arguments: hashpartitioning(i_item_sk#30, 100), ENSURE_REQUIREMENTS, [plan_id=35] + +(236) Sort +Input [2]: [i_item_sk#30, i_item_id#31] +Arguments: [i_item_sk#30 ASC NULLS FIRST], false, 0 + +(237) SortMergeJoin +Left keys [1]: [wr_item_sk#28] +Right keys [1]: [i_item_sk#30] +Join type: Inner +Join condition: None + +(238) Project +Output [3]: [wr_returned_date_sk#27, wr_return_quantity#29, i_item_id#31] +Input [5]: [wr_returned_date_sk#27, wr_item_sk#28, wr_return_quantity#29, i_item_sk#30, i_item_id#31] + +(239) Exchange +Input [3]: [wr_returned_date_sk#27, wr_return_quantity#29, i_item_id#31] +Arguments: hashpartitioning(wr_returned_date_sk#27, 100), ENSURE_REQUIREMENTS, [plan_id=36] + +(240) Sort +Input [3]: [wr_returned_date_sk#27, wr_return_quantity#29, i_item_id#31] +Arguments: [wr_returned_date_sk#27 ASC NULLS FIRST], false, 0 + +(241) Scan parquet +Output [2]: [d_date_sk#32, d_date#48] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date_sk)] +ReadSchema: struct + +(242) Filter +Input [2]: [d_date_sk#32, d_date#48] +Condition : isnotnull(d_date_sk#32) + +(243) Exchange +Input [2]: [d_date_sk#32, d_date#48] +Arguments: hashpartitioning(d_date#48, 100), ENSURE_REQUIREMENTS, [plan_id=37] + +(244) Sort +Input [2]: [d_date_sk#32, d_date#48] +Arguments: [d_date#48 ASC NULLS FIRST], false, 0 + +(245) Scan parquet +Output [2]: [d_date#49, d_week_seq#50] +Batched: true +Location: InMemoryFileIndex [file:/] +ReadSchema: struct + +(246) Exchange +Input [2]: [d_date#49, d_week_seq#50] +Arguments: hashpartitioning(d_week_seq#50, 100), ENSURE_REQUIREMENTS, [plan_id=38] + +(247) Sort +Input [2]: [d_date#49, d_week_seq#50] +Arguments: [d_week_seq#50 ASC NULLS FIRST], false, 0 + +(248) Scan parquet +Output [2]: [d_date#51, d_week_seq#52] +Batched: true +Location: InMemoryFileIndex [file:/] +ReadSchema: struct + +(249) Filter +Input [2]: [d_date#51, d_week_seq#52] +Condition : cast(d_date#51 as string) IN (2000-06-30,2000-09-27,2000-11-17) + +(250) Project +Output [1]: [d_week_seq#52] +Input [2]: [d_date#51, d_week_seq#52] + +(251) Exchange +Input [1]: [d_week_seq#52] +Arguments: hashpartitioning(d_week_seq#52, 100), ENSURE_REQUIREMENTS, [plan_id=39] + +(252) Sort +Input [1]: [d_week_seq#52] +Arguments: [d_week_seq#52 ASC NULLS FIRST], false, 0 + +(253) SortMergeJoin +Left keys [1]: [d_week_seq#50] +Right keys [1]: [d_week_seq#52] +Join type: LeftSemi +Join condition: None + +(254) Project +Output [1]: [d_date#49] +Input [2]: [d_date#49, d_week_seq#50] + +(255) Exchange +Input [1]: [d_date#49] +Arguments: hashpartitioning(d_date#49, 100), ENSURE_REQUIREMENTS, [plan_id=40] + +(256) Sort +Input [1]: [d_date#49] +Arguments: [d_date#49 ASC NULLS FIRST], false, 0 + +(257) SortMergeJoin +Left keys [1]: [d_date#48] +Right keys [1]: [d_date#49] +Join type: LeftSemi +Join condition: None + +(258) Project +Output [1]: [d_date_sk#32] +Input [2]: [d_date_sk#32, d_date#48] + +(259) Exchange +Input [1]: [d_date_sk#32] +Arguments: hashpartitioning(d_date_sk#32, 100), ENSURE_REQUIREMENTS, [plan_id=41] + +(260) Sort +Input [1]: [d_date_sk#32] +Arguments: [d_date_sk#32 ASC NULLS FIRST], false, 0 + +(261) SortMergeJoin +Left keys [1]: [wr_returned_date_sk#27] +Right keys [1]: [d_date_sk#32] +Join type: Inner +Join condition: None + +(262) Project +Output [2]: [wr_return_quantity#29, i_item_id#31] +Input [4]: [wr_returned_date_sk#27, wr_return_quantity#29, i_item_id#31, d_date_sk#32] + +(263) HashAggregate +Input [2]: [wr_return_quantity#29, i_item_id#31] +Keys [1]: [i_item_id#31] +Functions [1]: [partial_sum(wr_return_quantity#29)] +Aggregate Attributes [1]: [sum#33] +Results [2]: [i_item_id#31, sum#53] + +(264) Exchange +Input [2]: [i_item_id#31, sum#53] +Arguments: hashpartitioning(i_item_id#31, 100), ENSURE_REQUIREMENTS, [plan_id=42] + +(265) HashAggregate +Input [2]: [i_item_id#31, sum#53] +Keys [1]: [i_item_id#31] +Functions [1]: [sum(wr_return_quantity#29)] +Aggregate Attributes [1]: [sum(wr_return_quantity#29)#34] +Results [2]: [i_item_id#31 AS item_id#35, sum(wr_return_quantity#29)#34 AS wr_item_qty#36] + +(266) Sort +Input [2]: [item_id#35, wr_item_qty#36] +Arguments: [item_id#35 ASC NULLS FIRST], false, 0 + +(267) SortMergeJoin +Left keys [1]: [item_id#15] +Right keys [1]: [item_id#35] +Join type: Inner +Join condition: None + +(268) Project +Output [8]: [item_id#15, sr_item_qty#16, (((cast(sr_item_qty#16 as double) / cast(((sr_item_qty#16 + cr_item_qty#26) + wr_item_qty#36) as double)) / 3.0) * 100.0) AS sr_dev#37, cr_item_qty#26, (((cast(cr_item_qty#26 as double) / cast(((sr_item_qty#16 + cr_item_qty#26) + wr_item_qty#36) as double)) / 3.0) * 100.0) AS cr_dev#38, wr_item_qty#36, (((cast(wr_item_qty#36 as double) / cast(((sr_item_qty#16 + cr_item_qty#26) + wr_item_qty#36) as double)) / 3.0) * 100.0) AS wr_dev#39, (cast(((sr_item_qty#16 + cr_item_qty#26) + wr_item_qty#36) as decimal(20,0)) / 3.0) AS average#40] +Input [5]: [item_id#15, sr_item_qty#16, cr_item_qty#26, item_id#35, wr_item_qty#36] + +(269) TakeOrderedAndProject +Input [8]: [item_id#15, sr_item_qty#16, sr_dev#37, cr_item_qty#26, cr_dev#38, wr_item_qty#36, wr_dev#39, average#40] +Arguments: X, [item_id#15 ASC NULLS FIRST, sr_item_qty#16 ASC NULLS FIRST], [item_id#15, sr_item_qty#16, sr_dev#37, cr_item_qty#26, cr_dev#38, wr_item_qty#36, wr_dev#39, average#40] + +(270) AdaptiveSparkPlan +Output [8]: [item_id#15, sr_item_qty#16, sr_dev#37, cr_item_qty#26, cr_dev#38, wr_item_qty#36, wr_dev#39, average#40] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q84.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q84.txt new file mode 100644 index 000000000..7b435cee5 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q84.txt @@ -0,0 +1,691 @@ +== Physical Plan == +AdaptiveSparkPlan (128) ++- == Final Plan == + NativeProject (82) + +- NativeTakeOrdered (81) + +- NativeProject (80) + +- NativeSortMergeJoin Inner (79) + :- NativeSort (70) + : +- InputAdapter (69) + : +- AQEShuffleRead (68) + : +- ShuffleQueryStage (67), Statistics(X) + : +- NativeShuffleExchange (66) + : +- NativeProject (65) + : +- NativeSortMergeJoin Inner (64) + : :- NativeSort (54) + : : +- InputAdapter (53) + : : +- AQEShuffleRead (52) + : : +- ShuffleQueryStage (51), Statistics(X) + : : +- NativeShuffleExchange (50) + : : +- NativeProject (49) + : : +- NativeSortMergeJoin Inner (48) + : : :- NativeSort (39) + : : : +- InputAdapter (38) + : : : +- AQEShuffleRead (37) + : : : +- ShuffleQueryStage (36), Statistics(X) + : : : +- NativeShuffleExchange (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 (47) + : : +- InputAdapter (46) + : : +- AQEShuffleRead (45) + : : +- ShuffleQueryStage (44), Statistics(X) + : : +- NativeShuffleExchange (43) + : : +- NativeFilter (42) + : : +- InputAdapter (41) + : : +- NativeParquetScan (40) + : +- NativeSort (63) + : +- InputAdapter (62) + : +- AQEShuffleRead (61) + : +- ShuffleQueryStage (60), Statistics(X) + : +- NativeShuffleExchange (59) + : +- NativeProject (58) + : +- NativeFilter (57) + : +- InputAdapter (56) + : +- NativeParquetScan (55) + +- NativeSort (78) + +- InputAdapter (77) + +- AQEShuffleRead (76) + +- ShuffleQueryStage (75), Statistics(X) + +- NativeShuffleExchange (74) + +- NativeFilter (73) + +- InputAdapter (72) + +- NativeParquetScan (71) ++- == Initial Plan == + TakeOrderedAndProject (127) + +- Project (126) + +- SortMergeJoin Inner (125) + :- Sort (120) + : +- Exchange (119) + : +- Project (118) + : +- SortMergeJoin Inner (117) + : :- Sort (111) + : : +- Exchange (110) + : : +- Project (109) + : : +- SortMergeJoin Inner (108) + : : :- Sort (103) + : : : +- Exchange (102) + : : : +- Project (101) + : : : +- SortMergeJoin Inner (100) + : : : :- Sort (95) + : : : : +- Exchange (94) + : : : : +- Project (93) + : : : : +- SortMergeJoin Inner (92) + : : : : :- Sort (86) + : : : : : +- Exchange (85) + : : : : : +- Filter (84) + : : : : : +- Scan parquet (83) + : : : : +- Sort (91) + : : : : +- Exchange (90) + : : : : +- Project (89) + : : : : +- Filter (88) + : : : : +- Scan parquet (87) + : : : +- Sort (99) + : : : +- Exchange (98) + : : : +- Filter (97) + : : : +- Scan parquet (96) + : : +- Sort (107) + : : +- Exchange (106) + : : +- Filter (105) + : : +- Scan parquet (104) + : +- Sort (116) + : +- Exchange (115) + : +- Project (114) + : +- Filter (113) + : +- Scan parquet (112) + +- Sort (124) + +- Exchange (123) + +- Filter (122) + +- Scan parquet (121) + + +(83) Scan parquet +Output [6]: [c_customer_id#1, c_current_cdemo_sk#2, c_current_hdemo_sk#3, c_current_addr_sk#4, c_first_name#5, c_last_name#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_current_addr_sk), IsNotNull(c_current_cdemo_sk), IsNotNull(c_current_hdemo_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [6]: [c_customer_id#1, c_current_cdemo_sk#2, c_current_hdemo_sk#3, c_current_addr_sk#4, c_first_name#5, c_last_name#6] +Arguments: [#1, #2, #3, #4, #5, #6] + +(3) NativeFilter +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Condition : ((isnotnull(c_current_addr_sk#4) AND isnotnull(c_current_cdemo_sk#2)) AND isnotnull(c_current_hdemo_sk#3)) + +(4) NativeShuffleExchange +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Arguments: hashpartitioning(c_current_addr_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Arguments: X + +(6) AQEShuffleRead +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Arguments: coalesced + +(7) InputAdapter +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] + +(8) NativeSort +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Arguments: [c_current_addr_sk#4 ASC NULLS FIRST], false + +(87) Scan parquet +Output [2]: [ca_address_sk#7, ca_city#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_city), EqualTo(ca_city,Edgewood), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [ca_address_sk#7, ca_city#8] +Arguments: [#7, #8] + +(11) NativeFilter +Input [2]: [#7#7, #8#8] +Condition : ((isnotnull(ca_city#8) AND (ca_city#8 = Edgewood)) AND isnotnull(ca_address_sk#7)) + +(12) NativeProject +Output [1]: [ca_address_sk#7] +Input [2]: [#7#7, #8#8] + +(13) NativeShuffleExchange +Input [1]: [ca_address_sk#7] +Arguments: hashpartitioning(ca_address_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [1]: [ca_address_sk#7] +Arguments: X + +(15) AQEShuffleRead +Input [1]: [ca_address_sk#7] +Arguments: coalesced + +(16) InputAdapter +Input [1]: [ca_address_sk#7] + +(17) NativeSort +Input [1]: [ca_address_sk#7] +Arguments: [ca_address_sk#7 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [c_current_addr_sk#4] +Right keys [1]: [ca_address_sk#7] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [5]: [c_customer_id#1, c_current_cdemo_sk#2, c_current_hdemo_sk#3, c_first_name#5, c_last_name#6] +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, ca_address_sk#7] + +(20) NativeShuffleExchange +Input [5]: [c_customer_id#1, c_current_cdemo_sk#2, c_current_hdemo_sk#3, c_first_name#5, c_last_name#6] +Arguments: hashpartitioning(c_current_cdemo_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [5]: [c_customer_id#1, c_current_cdemo_sk#2, c_current_hdemo_sk#3, c_first_name#5, c_last_name#6] +Arguments: X + +(22) AQEShuffleRead +Input [5]: [c_customer_id#1, c_current_cdemo_sk#2, c_current_hdemo_sk#3, c_first_name#5, c_last_name#6] +Arguments: coalesced + +(23) InputAdapter +Input [5]: [c_customer_id#1, c_current_cdemo_sk#2, c_current_hdemo_sk#3, c_first_name#5, c_last_name#6] + +(24) NativeSort +Input [5]: [c_customer_id#1, c_current_cdemo_sk#2, c_current_hdemo_sk#3, c_first_name#5, c_last_name#6] +Arguments: [c_current_cdemo_sk#2 ASC NULLS FIRST], false + +(96) Scan parquet +Output [1]: [cd_demo_sk#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_demo_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [1]: [cd_demo_sk#9] +Arguments: [#9] + +(27) NativeFilter +Input [1]: [#9#9] +Condition : isnotnull(cd_demo_sk#9) + +(28) NativeShuffleExchange +Input [1]: [#9#9] +Arguments: hashpartitioning(cd_demo_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(29) ShuffleQueryStage +Output [1]: [#9#9] +Arguments: X + +(30) AQEShuffleRead +Input [1]: [#9#9] +Arguments: coalesced + +(31) InputAdapter +Input [1]: [#9#9] + +(32) NativeSort +Input [1]: [#9#9] +Arguments: [cd_demo_sk#9 ASC NULLS FIRST], false + +(33) NativeSortMergeJoin +Left keys [1]: [c_current_cdemo_sk#2] +Right keys [1]: [cd_demo_sk#9] +Join type: Inner +Join condition: None + +(34) NativeProject +Output [5]: [c_customer_id#1, c_current_hdemo_sk#3, c_first_name#5, c_last_name#6, cd_demo_sk#9] +Input [6]: [c_customer_id#1, c_current_cdemo_sk#2, c_current_hdemo_sk#3, c_first_name#5, c_last_name#6, #9#9] + +(35) NativeShuffleExchange +Input [5]: [c_customer_id#1, c_current_hdemo_sk#3, c_first_name#5, c_last_name#6, cd_demo_sk#9] +Arguments: hashpartitioning(c_current_hdemo_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(36) ShuffleQueryStage +Output [5]: [c_customer_id#1, c_current_hdemo_sk#3, c_first_name#5, c_last_name#6, cd_demo_sk#9] +Arguments: X + +(37) AQEShuffleRead +Input [5]: [c_customer_id#1, c_current_hdemo_sk#3, c_first_name#5, c_last_name#6, cd_demo_sk#9] +Arguments: coalesced + +(38) InputAdapter +Input [5]: [c_customer_id#1, c_current_hdemo_sk#3, c_first_name#5, c_last_name#6, cd_demo_sk#9] + +(39) NativeSort +Input [5]: [c_customer_id#1, c_current_hdemo_sk#3, c_first_name#5, c_last_name#6, cd_demo_sk#9] +Arguments: [c_current_hdemo_sk#3 ASC NULLS FIRST], false + +(104) Scan parquet +Output [2]: [hd_demo_sk#10, hd_income_band_sk#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(hd_demo_sk), IsNotNull(hd_income_band_sk)] +ReadSchema: struct + +(41) InputAdapter +Input [2]: [hd_demo_sk#10, hd_income_band_sk#11] +Arguments: [#10, #11] + +(42) NativeFilter +Input [2]: [#10#10, #11#11] +Condition : (isnotnull(hd_demo_sk#10) AND isnotnull(hd_income_band_sk#11)) + +(43) NativeShuffleExchange +Input [2]: [#10#10, #11#11] +Arguments: hashpartitioning(hd_demo_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) ShuffleQueryStage +Output [2]: [#10#10, #11#11] +Arguments: X + +(45) AQEShuffleRead +Input [2]: [#10#10, #11#11] +Arguments: coalesced + +(46) InputAdapter +Input [2]: [#10#10, #11#11] + +(47) NativeSort +Input [2]: [#10#10, #11#11] +Arguments: [hd_demo_sk#10 ASC NULLS FIRST], false + +(48) NativeSortMergeJoin +Left keys [1]: [c_current_hdemo_sk#3] +Right keys [1]: [hd_demo_sk#10] +Join type: Inner +Join condition: None + +(49) NativeProject +Output [5]: [c_customer_id#1, c_first_name#5, c_last_name#6, cd_demo_sk#9, hd_income_band_sk#11] +Input [7]: [c_customer_id#1, c_current_hdemo_sk#3, c_first_name#5, c_last_name#6, cd_demo_sk#9, #10#10, #11#11] + +(50) NativeShuffleExchange +Input [5]: [c_customer_id#1, c_first_name#5, c_last_name#6, cd_demo_sk#9, hd_income_band_sk#11] +Arguments: hashpartitioning(hd_income_band_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(51) ShuffleQueryStage +Output [5]: [c_customer_id#1, c_first_name#5, c_last_name#6, cd_demo_sk#9, hd_income_band_sk#11] +Arguments: X + +(52) AQEShuffleRead +Input [5]: [c_customer_id#1, c_first_name#5, c_last_name#6, cd_demo_sk#9, hd_income_band_sk#11] +Arguments: coalesced + +(53) InputAdapter +Input [5]: [c_customer_id#1, c_first_name#5, c_last_name#6, cd_demo_sk#9, hd_income_band_sk#11] + +(54) NativeSort +Input [5]: [c_customer_id#1, c_first_name#5, c_last_name#6, cd_demo_sk#9, hd_income_band_sk#11] +Arguments: [hd_income_band_sk#11 ASC NULLS FIRST], false + +(112) Scan parquet +Output [3]: [ib_income_band_sk#12, ib_lower_bound#13, ib_upper_bound#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ib_lower_bound), IsNotNull(ib_upper_bound), GreaterThanOrEqual(ib_lower_bound,38128), LessThanOrEqual(ib_upper_bound,88128), IsNotNull(ib_income_band_sk)] +ReadSchema: struct + +(56) InputAdapter +Input [3]: [ib_income_band_sk#12, ib_lower_bound#13, ib_upper_bound#14] +Arguments: [#12, #13, #14] + +(57) NativeFilter +Input [3]: [#12#12, #13#13, #14#14] +Condition : ((((isnotnull(ib_lower_bound#13) AND isnotnull(ib_upper_bound#14)) AND (ib_lower_bound#13 >= 38128)) AND (ib_upper_bound#14 <= 88128)) AND isnotnull(ib_income_band_sk#12)) + +(58) NativeProject +Output [1]: [ib_income_band_sk#12] +Input [3]: [#12#12, #13#13, #14#14] + +(59) NativeShuffleExchange +Input [1]: [ib_income_band_sk#12] +Arguments: hashpartitioning(ib_income_band_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(60) ShuffleQueryStage +Output [1]: [ib_income_band_sk#12] +Arguments: X + +(61) AQEShuffleRead +Input [1]: [ib_income_band_sk#12] +Arguments: coalesced + +(62) InputAdapter +Input [1]: [ib_income_band_sk#12] + +(63) NativeSort +Input [1]: [ib_income_band_sk#12] +Arguments: [ib_income_band_sk#12 ASC NULLS FIRST], false + +(64) NativeSortMergeJoin +Left keys [1]: [hd_income_band_sk#11] +Right keys [1]: [ib_income_band_sk#12] +Join type: Inner +Join condition: None + +(65) NativeProject +Output [4]: [c_customer_id#1, c_first_name#5, c_last_name#6, cd_demo_sk#9] +Input [6]: [c_customer_id#1, c_first_name#5, c_last_name#6, cd_demo_sk#9, hd_income_band_sk#11, ib_income_band_sk#12] + +(66) NativeShuffleExchange +Input [4]: [c_customer_id#1, c_first_name#5, c_last_name#6, cd_demo_sk#9] +Arguments: hashpartitioning(cd_demo_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(67) ShuffleQueryStage +Output [4]: [c_customer_id#1, c_first_name#5, c_last_name#6, cd_demo_sk#9] +Arguments: X + +(68) AQEShuffleRead +Input [4]: [c_customer_id#1, c_first_name#5, c_last_name#6, cd_demo_sk#9] +Arguments: coalesced + +(69) InputAdapter +Input [4]: [c_customer_id#1, c_first_name#5, c_last_name#6, cd_demo_sk#9] + +(70) NativeSort +Input [4]: [c_customer_id#1, c_first_name#5, c_last_name#6, cd_demo_sk#9] +Arguments: [cd_demo_sk#9 ASC NULLS FIRST], false + +(121) Scan parquet +Output [1]: [sr_cdemo_sk#15] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_cdemo_sk)] +ReadSchema: struct + +(72) InputAdapter +Input [1]: [sr_cdemo_sk#15] +Arguments: [#15] + +(73) NativeFilter +Input [1]: [#15#15] +Condition : isnotnull(sr_cdemo_sk#15) + +(74) NativeShuffleExchange +Input [1]: [#15#15] +Arguments: hashpartitioning(sr_cdemo_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(75) ShuffleQueryStage +Output [1]: [#15#15] +Arguments: X + +(76) AQEShuffleRead +Input [1]: [#15#15] +Arguments: coalesced + +(77) InputAdapter +Input [1]: [#15#15] + +(78) NativeSort +Input [1]: [#15#15] +Arguments: [sr_cdemo_sk#15 ASC NULLS FIRST], false + +(79) NativeSortMergeJoin +Left keys [1]: [cd_demo_sk#9] +Right keys [1]: [sr_cdemo_sk#15] +Join type: Inner +Join condition: None + +(80) NativeProject +Output [3]: [c_customer_id#1 AS customer_id#16, concat(c_last_name#6, , , c_first_name#5) AS customername#17, c_customer_id#1] +Input [5]: [c_customer_id#1, c_first_name#5, c_last_name#6, cd_demo_sk#9, #15#15] + +(81) NativeTakeOrdered +Input [3]: [customer_id#16, customername#17, c_customer_id#1] +Arguments: X, [c_customer_id#1 ASC NULLS FIRST] + +(82) NativeProject +Output [2]: [customer_id#16, customername#17] +Input [3]: [customer_id#16, customername#17, c_customer_id#1] + +(83) Scan parquet +Output [6]: [c_customer_id#1, c_current_cdemo_sk#2, c_current_hdemo_sk#3, c_current_addr_sk#4, c_first_name#5, c_last_name#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_current_addr_sk), IsNotNull(c_current_cdemo_sk), IsNotNull(c_current_hdemo_sk)] +ReadSchema: struct + +(84) Filter +Input [6]: [c_customer_id#1, c_current_cdemo_sk#2, c_current_hdemo_sk#3, c_current_addr_sk#4, c_first_name#5, c_last_name#6] +Condition : ((isnotnull(c_current_addr_sk#4) AND isnotnull(c_current_cdemo_sk#2)) AND isnotnull(c_current_hdemo_sk#3)) + +(85) Exchange +Input [6]: [c_customer_id#1, c_current_cdemo_sk#2, c_current_hdemo_sk#3, c_current_addr_sk#4, c_first_name#5, c_last_name#6] +Arguments: hashpartitioning(c_current_addr_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(86) Sort +Input [6]: [c_customer_id#1, c_current_cdemo_sk#2, c_current_hdemo_sk#3, c_current_addr_sk#4, c_first_name#5, c_last_name#6] +Arguments: [c_current_addr_sk#4 ASC NULLS FIRST], false, 0 + +(87) Scan parquet +Output [2]: [ca_address_sk#7, ca_city#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_city), EqualTo(ca_city,Edgewood), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(88) Filter +Input [2]: [ca_address_sk#7, ca_city#8] +Condition : ((isnotnull(ca_city#8) AND (ca_city#8 = Edgewood)) AND isnotnull(ca_address_sk#7)) + +(89) Project +Output [1]: [ca_address_sk#7] +Input [2]: [ca_address_sk#7, ca_city#8] + +(90) Exchange +Input [1]: [ca_address_sk#7] +Arguments: hashpartitioning(ca_address_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(91) Sort +Input [1]: [ca_address_sk#7] +Arguments: [ca_address_sk#7 ASC NULLS FIRST], false, 0 + +(92) SortMergeJoin +Left keys [1]: [c_current_addr_sk#4] +Right keys [1]: [ca_address_sk#7] +Join type: Inner +Join condition: None + +(93) Project +Output [5]: [c_customer_id#1, c_current_cdemo_sk#2, c_current_hdemo_sk#3, c_first_name#5, c_last_name#6] +Input [7]: [c_customer_id#1, c_current_cdemo_sk#2, c_current_hdemo_sk#3, c_current_addr_sk#4, c_first_name#5, c_last_name#6, ca_address_sk#7] + +(94) Exchange +Input [5]: [c_customer_id#1, c_current_cdemo_sk#2, c_current_hdemo_sk#3, c_first_name#5, c_last_name#6] +Arguments: hashpartitioning(c_current_cdemo_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(95) Sort +Input [5]: [c_customer_id#1, c_current_cdemo_sk#2, c_current_hdemo_sk#3, c_first_name#5, c_last_name#6] +Arguments: [c_current_cdemo_sk#2 ASC NULLS FIRST], false, 0 + +(96) Scan parquet +Output [1]: [cd_demo_sk#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_demo_sk)] +ReadSchema: struct + +(97) Filter +Input [1]: [cd_demo_sk#9] +Condition : isnotnull(cd_demo_sk#9) + +(98) Exchange +Input [1]: [cd_demo_sk#9] +Arguments: hashpartitioning(cd_demo_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(99) Sort +Input [1]: [cd_demo_sk#9] +Arguments: [cd_demo_sk#9 ASC NULLS FIRST], false, 0 + +(100) SortMergeJoin +Left keys [1]: [c_current_cdemo_sk#2] +Right keys [1]: [cd_demo_sk#9] +Join type: Inner +Join condition: None + +(101) Project +Output [5]: [c_customer_id#1, c_current_hdemo_sk#3, c_first_name#5, c_last_name#6, cd_demo_sk#9] +Input [6]: [c_customer_id#1, c_current_cdemo_sk#2, c_current_hdemo_sk#3, c_first_name#5, c_last_name#6, cd_demo_sk#9] + +(102) Exchange +Input [5]: [c_customer_id#1, c_current_hdemo_sk#3, c_first_name#5, c_last_name#6, cd_demo_sk#9] +Arguments: hashpartitioning(c_current_hdemo_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(103) Sort +Input [5]: [c_customer_id#1, c_current_hdemo_sk#3, c_first_name#5, c_last_name#6, cd_demo_sk#9] +Arguments: [c_current_hdemo_sk#3 ASC NULLS FIRST], false, 0 + +(104) Scan parquet +Output [2]: [hd_demo_sk#10, hd_income_band_sk#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(hd_demo_sk), IsNotNull(hd_income_band_sk)] +ReadSchema: struct + +(105) Filter +Input [2]: [hd_demo_sk#10, hd_income_band_sk#11] +Condition : (isnotnull(hd_demo_sk#10) AND isnotnull(hd_income_band_sk#11)) + +(106) Exchange +Input [2]: [hd_demo_sk#10, hd_income_band_sk#11] +Arguments: hashpartitioning(hd_demo_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(107) Sort +Input [2]: [hd_demo_sk#10, hd_income_band_sk#11] +Arguments: [hd_demo_sk#10 ASC NULLS FIRST], false, 0 + +(108) SortMergeJoin +Left keys [1]: [c_current_hdemo_sk#3] +Right keys [1]: [hd_demo_sk#10] +Join type: Inner +Join condition: None + +(109) Project +Output [5]: [c_customer_id#1, c_first_name#5, c_last_name#6, cd_demo_sk#9, hd_income_band_sk#11] +Input [7]: [c_customer_id#1, c_current_hdemo_sk#3, c_first_name#5, c_last_name#6, cd_demo_sk#9, hd_demo_sk#10, hd_income_band_sk#11] + +(110) Exchange +Input [5]: [c_customer_id#1, c_first_name#5, c_last_name#6, cd_demo_sk#9, hd_income_band_sk#11] +Arguments: hashpartitioning(hd_income_band_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(111) Sort +Input [5]: [c_customer_id#1, c_first_name#5, c_last_name#6, cd_demo_sk#9, hd_income_band_sk#11] +Arguments: [hd_income_band_sk#11 ASC NULLS FIRST], false, 0 + +(112) Scan parquet +Output [3]: [ib_income_band_sk#12, ib_lower_bound#13, ib_upper_bound#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ib_lower_bound), IsNotNull(ib_upper_bound), GreaterThanOrEqual(ib_lower_bound,38128), LessThanOrEqual(ib_upper_bound,88128), IsNotNull(ib_income_band_sk)] +ReadSchema: struct + +(113) Filter +Input [3]: [ib_income_band_sk#12, ib_lower_bound#13, ib_upper_bound#14] +Condition : ((((isnotnull(ib_lower_bound#13) AND isnotnull(ib_upper_bound#14)) AND (ib_lower_bound#13 >= 38128)) AND (ib_upper_bound#14 <= 88128)) AND isnotnull(ib_income_band_sk#12)) + +(114) Project +Output [1]: [ib_income_band_sk#12] +Input [3]: [ib_income_band_sk#12, ib_lower_bound#13, ib_upper_bound#14] + +(115) Exchange +Input [1]: [ib_income_band_sk#12] +Arguments: hashpartitioning(ib_income_band_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(116) Sort +Input [1]: [ib_income_band_sk#12] +Arguments: [ib_income_band_sk#12 ASC NULLS FIRST], false, 0 + +(117) SortMergeJoin +Left keys [1]: [hd_income_band_sk#11] +Right keys [1]: [ib_income_band_sk#12] +Join type: Inner +Join condition: None + +(118) Project +Output [4]: [c_customer_id#1, c_first_name#5, c_last_name#6, cd_demo_sk#9] +Input [6]: [c_customer_id#1, c_first_name#5, c_last_name#6, cd_demo_sk#9, hd_income_band_sk#11, ib_income_band_sk#12] + +(119) Exchange +Input [4]: [c_customer_id#1, c_first_name#5, c_last_name#6, cd_demo_sk#9] +Arguments: hashpartitioning(cd_demo_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(120) Sort +Input [4]: [c_customer_id#1, c_first_name#5, c_last_name#6, cd_demo_sk#9] +Arguments: [cd_demo_sk#9 ASC NULLS FIRST], false, 0 + +(121) Scan parquet +Output [1]: [sr_cdemo_sk#15] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_cdemo_sk)] +ReadSchema: struct + +(122) Filter +Input [1]: [sr_cdemo_sk#15] +Condition : isnotnull(sr_cdemo_sk#15) + +(123) Exchange +Input [1]: [sr_cdemo_sk#15] +Arguments: hashpartitioning(sr_cdemo_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(124) Sort +Input [1]: [sr_cdemo_sk#15] +Arguments: [sr_cdemo_sk#15 ASC NULLS FIRST], false, 0 + +(125) SortMergeJoin +Left keys [1]: [cd_demo_sk#9] +Right keys [1]: [sr_cdemo_sk#15] +Join type: Inner +Join condition: None + +(126) Project +Output [3]: [c_customer_id#1 AS customer_id#16, concat(c_last_name#6, , , c_first_name#5) AS customername#17, c_customer_id#1] +Input [5]: [c_customer_id#1, c_first_name#5, c_last_name#6, cd_demo_sk#9, sr_cdemo_sk#15] + +(127) TakeOrderedAndProject +Input [3]: [customer_id#16, customername#17, c_customer_id#1] +Arguments: X, [c_customer_id#1 ASC NULLS FIRST], [customer_id#16, customername#17] + +(128) AdaptiveSparkPlan +Output [2]: [customer_id#16, customername#17] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q85.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q85.txt new file mode 100644 index 000000000..8c919522a --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q85.txt @@ -0,0 +1,1006 @@ +== Physical Plan == +AdaptiveSparkPlan (186) ++- == Final Plan == + NativeTakeOrdered (121) + +- NativeProject (120) + +- NativeHashAggregate (119) + +- InputAdapter (118) + +- AQEShuffleRead (117) + +- ShuffleQueryStage (116), Statistics(X) + +- NativeShuffleExchange (115) + +- NativeHashAggregate (114) + +- NativeProject (113) + +- NativeProject (112) + +- NativeSortMergeJoin Inner (111) + :- NativeSort (102) + : +- InputAdapter (101) + : +- AQEShuffleRead (100) + : +- ShuffleQueryStage (99), Statistics(X) + : +- NativeShuffleExchange (98) + : +- NativeProject (97) + : +- NativeSortMergeJoin Inner (96) + : :- NativeSort (86) + : : +- InputAdapter (85) + : : +- AQEShuffleRead (84) + : : +- ShuffleQueryStage (83), Statistics(X) + : : +- NativeShuffleExchange (82) + : : +- ConvertToNative (81) + : : +- * Project (80) + : : +- * SortMergeJoin Inner (79) + : : :- NativeSort (69) + : : : +- InputAdapter (68) + : : : +- AQEShuffleRead (67) + : : : +- ShuffleQueryStage (66), Statistics(X) + : : : +- NativeShuffleExchange (65) + : : : +- NativeProject (64) + : : : +- NativeSortMergeJoin Inner (63) + : : : :- NativeSort (54) + : : : : +- InputAdapter (53) + : : : : +- AQEShuffleRead (52) + : : : : +- ShuffleQueryStage (51), Statistics(X) + : : : : +- NativeShuffleExchange (50) + : : : : +- ConvertToNative (49) + : : : : +- * Project (48) + : : : : +- * SortMergeJoin Inner (47) + : : : : :- NativeSort (38) + : : : : : +- InputAdapter (37) + : : : : : +- AQEShuffleRead (36) + : : : : : +- ShuffleQueryStage (35), Statistics(X) + : : : : : +- NativeShuffleExchange (34) + : : : : : +- NativeProject (33) + : : : : : +- NativeSortMergeJoin Inner (32) + : : : : : :- NativeSort (23) + : : : : : : +- InputAdapter (22) + : : : : : : +- AQEShuffleRead (21) + : : : : : : +- ShuffleQueryStage (20), Statistics(X) + : : : : : : +- NativeShuffleExchange (19) + : : : : : : +- NativeProject (18) + : : : : : : +- NativeSortMergeJoin Inner (17) + : : : : : : :- NativeSort (8) + : : : : : : : +- InputAdapter (7) + : : : : : : : +- AQEShuffleRead (6) + : : : : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : : : : +- NativeShuffleExchange (4) + : : : : : : : +- NativeFilter (3) + : : : : : : : +- InputAdapter (2) + : : : : : : : +- NativeParquetScan (1) + : : : : : : +- NativeSort (16) + : : : : : : +- InputAdapter (15) + : : : : : : +- AQEShuffleRead (14) + : : : : : : +- ShuffleQueryStage (13), Statistics(X) + : : : : : : +- NativeShuffleExchange (12) + : : : : : : +- NativeFilter (11) + : : : : : : +- InputAdapter (10) + : : : : : : +- NativeParquetScan (9) + : : : : : +- NativeSort (31) + : : : : : +- InputAdapter (30) + : : : : : +- AQEShuffleRead (29) + : : : : : +- ShuffleQueryStage (28), Statistics(X) + : : : : : +- NativeShuffleExchange (27) + : : : : : +- NativeFilter (26) + : : : : : +- InputAdapter (25) + : : : : : +- NativeParquetScan (24) + : : : : +- NativeSort (46) + : : : : +- InputAdapter (45) + : : : : +- AQEShuffleRead (44) + : : : : +- ShuffleQueryStage (43), Statistics(X) + : : : : +- NativeShuffleExchange (42) + : : : : +- NativeFilter (41) + : : : : +- InputAdapter (40) + : : : : +- NativeParquetScan (39) + : : : +- NativeSort (62) + : : : +- InputAdapter (61) + : : : +- AQEShuffleRead (60) + : : : +- ShuffleQueryStage (59), Statistics(X) + : : : +- NativeShuffleExchange (58) + : : : +- NativeFilter (57) + : : : +- InputAdapter (56) + : : : +- NativeParquetScan (55) + : : +- NativeSort (78) + : : +- InputAdapter (77) + : : +- AQEShuffleRead (76) + : : +- ShuffleQueryStage (75), Statistics(X) + : : +- NativeShuffleExchange (74) + : : +- NativeProject (73) + : : +- NativeFilter (72) + : : +- InputAdapter (71) + : : +- NativeParquetScan (70) + : +- NativeSort (95) + : +- InputAdapter (94) + : +- AQEShuffleRead (93) + : +- ShuffleQueryStage (92), Statistics(X) + : +- NativeShuffleExchange (91) + : +- NativeProject (90) + : +- NativeFilter (89) + : +- InputAdapter (88) + : +- NativeParquetScan (87) + +- NativeSort (110) + +- InputAdapter (109) + +- AQEShuffleRead (108) + +- ShuffleQueryStage (107), Statistics(X) + +- NativeShuffleExchange (106) + +- NativeFilter (105) + +- InputAdapter (104) + +- NativeParquetScan (103) ++- == Initial Plan == + TakeOrderedAndProject (185) + +- HashAggregate (184) + +- Exchange (183) + +- HashAggregate (182) + +- Project (181) + +- SortMergeJoin Inner (180) + :- Sort (175) + : +- Exchange (174) + : +- Project (173) + : +- SortMergeJoin Inner (172) + : :- Sort (166) + : : +- Exchange (165) + : : +- Project (164) + : : +- SortMergeJoin Inner (163) + : : :- Sort (157) + : : : +- Exchange (156) + : : : +- Project (155) + : : : +- SortMergeJoin Inner (154) + : : : :- Sort (149) + : : : : +- Exchange (148) + : : : : +- Project (147) + : : : : +- SortMergeJoin Inner (146) + : : : : :- Sort (141) + : : : : : +- Exchange (140) + : : : : : +- Project (139) + : : : : : +- SortMergeJoin Inner (138) + : : : : : :- Sort (133) + : : : : : : +- Exchange (132) + : : : : : : +- Project (131) + : : : : : : +- SortMergeJoin Inner (130) + : : : : : : :- Sort (125) + : : : : : : : +- Exchange (124) + : : : : : : : +- Filter (123) + : : : : : : : +- Scan parquet (122) + : : : : : : +- Sort (129) + : : : : : : +- Exchange (128) + : : : : : : +- Filter (127) + : : : : : : +- Scan parquet (126) + : : : : : +- Sort (137) + : : : : : +- Exchange (136) + : : : : : +- Filter (135) + : : : : : +- Scan parquet (134) + : : : : +- Sort (145) + : : : : +- Exchange (144) + : : : : +- Filter (143) + : : : : +- Scan parquet (142) + : : : +- Sort (153) + : : : +- Exchange (152) + : : : +- Filter (151) + : : : +- Scan parquet (150) + : : +- Sort (162) + : : +- Exchange (161) + : : +- Project (160) + : : +- Filter (159) + : : +- Scan parquet (158) + : +- Sort (171) + : +- Exchange (170) + : +- Project (169) + : +- Filter (168) + : +- Scan parquet (167) + +- Sort (179) + +- Exchange (178) + +- Filter (177) + +- Scan parquet (176) + + +(122) Scan parquet +Output [7]: [ws_sold_date_sk#1, ws_item_sk#2, ws_web_page_sk#3, ws_order_number#4, ws_quantity#5, ws_sales_price#6, ws_net_profit#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_order_number), IsNotNull(ws_web_page_sk), IsNotNull(ws_sold_date_sk), Or(Or(And(GreaterThanOrEqual(ws_sales_price,100.00),LessThanOrEqual(ws_sales_price,150.00)),And(GreaterThanOrEqual(ws_sales_price,50.00),LessThanOrEqual(ws_sales_price,100.00))),And(GreaterThanOrEqual(ws_sales_price,150.00),LessThanOrEqual(ws_sales_price,200.00))), Or(Or(And(GreaterThanOrEqual(ws_net_profit,100.00),LessThanOrEqual(ws_net_profit,200.00)),And(GreaterThanOrEqual(ws_net_profit,150.00),LessThanOrEqual(ws_net_profit,300.00))),And(GreaterThanOrEqual(ws_net_profit,50.00),LessThanOrEqual(ws_net_profit,250.00)))] +ReadSchema: struct + +(2) InputAdapter +Input [7]: [ws_sold_date_sk#1, ws_item_sk#2, ws_web_page_sk#3, ws_order_number#4, ws_quantity#5, ws_sales_price#6, ws_net_profit#7] +Arguments: [#1, #2, #3, #4, #5, #6, #7] + +(3) NativeFilter +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Condition : (((((isnotnull(ws_item_sk#2) AND isnotnull(ws_order_number#4)) AND isnotnull(ws_web_page_sk#3)) AND isnotnull(ws_sold_date_sk#1)) AND ((((ws_sales_price#6 >= 100.00) AND (ws_sales_price#6 <= 150.00)) OR ((ws_sales_price#6 >= 50.00) AND (ws_sales_price#6 <= 100.00))) OR ((ws_sales_price#6 >= 150.00) AND (ws_sales_price#6 <= 200.00)))) AND ((((ws_net_profit#7 >= 100.00) AND (ws_net_profit#7 <= 200.00)) OR ((ws_net_profit#7 >= 150.00) AND (ws_net_profit#7 <= 300.00))) OR ((ws_net_profit#7 >= 50.00) AND (ws_net_profit#7 <= 250.00)))) + +(4) NativeShuffleExchange +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Arguments: hashpartitioning(ws_item_sk#2, ws_order_number#4, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Arguments: X + +(6) AQEShuffleRead +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Arguments: coalesced + +(7) InputAdapter +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] + +(8) NativeSort +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Arguments: [ws_item_sk#2 ASC NULLS FIRST, ws_order_number#4 ASC NULLS FIRST], false + +(126) Scan parquet +Output [8]: [wr_item_sk#8, wr_refunded_cdemo_sk#9, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_order_number#13, wr_fee#14, wr_refunded_cash#15] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wr_item_sk), IsNotNull(wr_order_number), IsNotNull(wr_refunded_cdemo_sk), IsNotNull(wr_returning_cdemo_sk), IsNotNull(wr_refunded_addr_sk), IsNotNull(wr_reason_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [8]: [wr_item_sk#8, wr_refunded_cdemo_sk#9, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_order_number#13, wr_fee#14, wr_refunded_cash#15] +Arguments: [#8, #9, #10, #11, #12, #13, #14, #15] + +(11) NativeFilter +Input [8]: [#8#8, #9#9, #10#10, #11#11, #12#12, #13#13, #14#14, #15#15] +Condition : (((((isnotnull(wr_item_sk#8) AND isnotnull(wr_order_number#13)) AND isnotnull(wr_refunded_cdemo_sk#9)) AND isnotnull(wr_returning_cdemo_sk#11)) AND isnotnull(wr_refunded_addr_sk#10)) AND isnotnull(wr_reason_sk#12)) + +(12) NativeShuffleExchange +Input [8]: [#8#8, #9#9, #10#10, #11#11, #12#12, #13#13, #14#14, #15#15] +Arguments: hashpartitioning(wr_item_sk#8, wr_order_number#13, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [8]: [#8#8, #9#9, #10#10, #11#11, #12#12, #13#13, #14#14, #15#15] +Arguments: X + +(14) AQEShuffleRead +Input [8]: [#8#8, #9#9, #10#10, #11#11, #12#12, #13#13, #14#14, #15#15] +Arguments: coalesced + +(15) InputAdapter +Input [8]: [#8#8, #9#9, #10#10, #11#11, #12#12, #13#13, #14#14, #15#15] + +(16) NativeSort +Input [8]: [#8#8, #9#9, #10#10, #11#11, #12#12, #13#13, #14#14, #15#15] +Arguments: [wr_item_sk#8 ASC NULLS FIRST, wr_order_number#13 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [2]: [ws_item_sk#2, ws_order_number#4] +Right keys [2]: [wr_item_sk#8, wr_order_number#13] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [11]: [ws_sold_date_sk#1, ws_web_page_sk#3, ws_quantity#5, ws_sales_price#6, ws_net_profit#7, wr_refunded_cdemo_sk#9, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Input [15]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9, #10#10, #11#11, #12#12, #13#13, #14#14, #15#15] + +(19) NativeShuffleExchange +Input [11]: [ws_sold_date_sk#1, ws_web_page_sk#3, ws_quantity#5, ws_sales_price#6, ws_net_profit#7, wr_refunded_cdemo_sk#9, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Arguments: hashpartitioning(ws_web_page_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [11]: [ws_sold_date_sk#1, ws_web_page_sk#3, ws_quantity#5, ws_sales_price#6, ws_net_profit#7, wr_refunded_cdemo_sk#9, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Arguments: X + +(21) AQEShuffleRead +Input [11]: [ws_sold_date_sk#1, ws_web_page_sk#3, ws_quantity#5, ws_sales_price#6, ws_net_profit#7, wr_refunded_cdemo_sk#9, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Arguments: coalesced + +(22) InputAdapter +Input [11]: [ws_sold_date_sk#1, ws_web_page_sk#3, ws_quantity#5, ws_sales_price#6, ws_net_profit#7, wr_refunded_cdemo_sk#9, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] + +(23) NativeSort +Input [11]: [ws_sold_date_sk#1, ws_web_page_sk#3, ws_quantity#5, ws_sales_price#6, ws_net_profit#7, wr_refunded_cdemo_sk#9, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Arguments: [ws_web_page_sk#3 ASC NULLS FIRST], false + +(134) Scan parquet +Output [1]: [wp_web_page_sk#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wp_web_page_sk)] +ReadSchema: struct + +(25) InputAdapter +Input [1]: [wp_web_page_sk#16] +Arguments: [#16] + +(26) NativeFilter +Input [1]: [#16#16] +Condition : isnotnull(wp_web_page_sk#16) + +(27) NativeShuffleExchange +Input [1]: [#16#16] +Arguments: hashpartitioning(wp_web_page_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(28) ShuffleQueryStage +Output [1]: [#16#16] +Arguments: X + +(29) AQEShuffleRead +Input [1]: [#16#16] +Arguments: coalesced + +(30) InputAdapter +Input [1]: [#16#16] + +(31) NativeSort +Input [1]: [#16#16] +Arguments: [wp_web_page_sk#16 ASC NULLS FIRST], false + +(32) NativeSortMergeJoin +Left keys [1]: [ws_web_page_sk#3] +Right keys [1]: [wp_web_page_sk#16] +Join type: Inner +Join condition: None + +(33) NativeProject +Output [10]: [ws_sold_date_sk#1, ws_quantity#5, ws_sales_price#6, ws_net_profit#7, wr_refunded_cdemo_sk#9, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Input [12]: [ws_sold_date_sk#1, ws_web_page_sk#3, ws_quantity#5, ws_sales_price#6, ws_net_profit#7, wr_refunded_cdemo_sk#9, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15, #16#16] + +(34) NativeShuffleExchange +Input [10]: [ws_sold_date_sk#1, ws_quantity#5, ws_sales_price#6, ws_net_profit#7, wr_refunded_cdemo_sk#9, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Arguments: hashpartitioning(wr_refunded_cdemo_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(35) ShuffleQueryStage +Output [10]: [ws_sold_date_sk#1, ws_quantity#5, ws_sales_price#6, ws_net_profit#7, wr_refunded_cdemo_sk#9, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Arguments: X + +(36) AQEShuffleRead +Input [10]: [ws_sold_date_sk#1, ws_quantity#5, ws_sales_price#6, ws_net_profit#7, wr_refunded_cdemo_sk#9, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Arguments: coalesced + +(37) InputAdapter +Input [10]: [ws_sold_date_sk#1, ws_quantity#5, ws_sales_price#6, ws_net_profit#7, wr_refunded_cdemo_sk#9, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] + +(38) NativeSort +Input [10]: [ws_sold_date_sk#1, ws_quantity#5, ws_sales_price#6, ws_net_profit#7, wr_refunded_cdemo_sk#9, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Arguments: [wr_refunded_cdemo_sk#9 ASC NULLS FIRST], false + +(142) Scan parquet +Output [3]: [cd_demo_sk#17, cd_marital_status#18, cd_education_status#19] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_demo_sk), IsNotNull(cd_marital_status), IsNotNull(cd_education_status), Or(Or(And(EqualTo(cd_marital_status,M),EqualTo(cd_education_status,Advanced Degree)),And(EqualTo(cd_marital_status,S),EqualTo(cd_education_status,College))),And(EqualTo(cd_marital_status,W),EqualTo(cd_education_status,2 yr Degree)))] +ReadSchema: struct + +(40) InputAdapter +Input [3]: [cd_demo_sk#17, cd_marital_status#18, cd_education_status#19] +Arguments: [#17, #18, #19] + +(41) NativeFilter +Input [3]: [#17#17, #18#18, #19#19] +Condition : (((isnotnull(cd_demo_sk#17) AND isnotnull(cd_marital_status#18)) AND isnotnull(cd_education_status#19)) AND ((((cd_marital_status#18 = M) AND (cd_education_status#19 = Advanced Degree)) OR ((cd_marital_status#18 = S) AND (cd_education_status#19 = College))) OR ((cd_marital_status#18 = W) AND (cd_education_status#19 = 2 yr Degree)))) + +(42) NativeShuffleExchange +Input [3]: [#17#17, #18#18, #19#19] +Arguments: hashpartitioning(cd_demo_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(43) ShuffleQueryStage +Output [3]: [#17#17, #18#18, #19#19] +Arguments: X + +(44) AQEShuffleRead +Input [3]: [#17#17, #18#18, #19#19] +Arguments: coalesced + +(45) InputAdapter +Input [3]: [#17#17, #18#18, #19#19] + +(46) NativeSort +Input [3]: [#17#17, #18#18, #19#19] +Arguments: [cd_demo_sk#17 ASC NULLS FIRST], false + +(47) SortMergeJoin [codegen id : 1] +Left keys [1]: [wr_refunded_cdemo_sk#9] +Right keys [1]: [cd_demo_sk#17] +Join type: Inner +Join condition: ((((((cd_marital_status#18 = M) AND (cd_education_status#19 = Advanced Degree)) AND (ws_sales_price#6 >= 100.00)) AND (ws_sales_price#6 <= 150.00)) OR ((((cd_marital_status#18 = S) AND (cd_education_status#19 = College)) AND (ws_sales_price#6 >= 50.00)) AND (ws_sales_price#6 <= 100.00))) OR ((((cd_marital_status#18 = W) AND (cd_education_status#19 = 2 yr Degree)) AND (ws_sales_price#6 >= 150.00)) AND (ws_sales_price#6 <= 200.00))) + +(48) Project [codegen id : 1] +Output [10]: [ws_sold_date_sk#1, ws_quantity#5, ws_net_profit#7, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15, cd_marital_status#18, cd_education_status#19] +Input [13]: [ws_sold_date_sk#1, ws_quantity#5, ws_sales_price#6, ws_net_profit#7, wr_refunded_cdemo_sk#9, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15, #17#17, #18#18, #19#19] + +(49) ConvertToNative +Input [10]: [ws_sold_date_sk#1, ws_quantity#5, ws_net_profit#7, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15, cd_marital_status#18, cd_education_status#19] + +(50) NativeShuffleExchange +Input [10]: [ws_sold_date_sk#1, ws_quantity#5, ws_net_profit#7, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15, cd_marital_status#18, cd_education_status#19] +Arguments: hashpartitioning(wr_returning_cdemo_sk#11, cd_marital_status#18, cd_education_status#19, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(51) ShuffleQueryStage +Output [10]: [ws_sold_date_sk#1, ws_quantity#5, ws_net_profit#7, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15, cd_marital_status#18, cd_education_status#19] +Arguments: X + +(52) AQEShuffleRead +Input [10]: [ws_sold_date_sk#1, ws_quantity#5, ws_net_profit#7, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15, cd_marital_status#18, cd_education_status#19] +Arguments: coalesced + +(53) InputAdapter +Input [10]: [ws_sold_date_sk#1, ws_quantity#5, ws_net_profit#7, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15, cd_marital_status#18, cd_education_status#19] + +(54) NativeSort +Input [10]: [ws_sold_date_sk#1, ws_quantity#5, ws_net_profit#7, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15, cd_marital_status#18, cd_education_status#19] +Arguments: [wr_returning_cdemo_sk#11 ASC NULLS FIRST, cd_marital_status#18 ASC NULLS FIRST, cd_education_status#19 ASC NULLS FIRST], false + +(150) Scan parquet +Output [3]: [cd_demo_sk#20, cd_marital_status#21, cd_education_status#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_demo_sk), IsNotNull(cd_marital_status), IsNotNull(cd_education_status)] +ReadSchema: struct + +(56) InputAdapter +Input [3]: [cd_demo_sk#20, cd_marital_status#21, cd_education_status#22] +Arguments: [#20, #21, #22] + +(57) NativeFilter +Input [3]: [#20#20, #21#21, #22#22] +Condition : ((isnotnull(cd_demo_sk#20) AND isnotnull(cd_marital_status#21)) AND isnotnull(cd_education_status#22)) + +(58) NativeShuffleExchange +Input [3]: [#20#20, #21#21, #22#22] +Arguments: hashpartitioning(cd_demo_sk#20, cd_marital_status#21, cd_education_status#22, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(59) ShuffleQueryStage +Output [3]: [#20#20, #21#21, #22#22] +Arguments: X + +(60) AQEShuffleRead +Input [3]: [#20#20, #21#21, #22#22] +Arguments: coalesced + +(61) InputAdapter +Input [3]: [#20#20, #21#21, #22#22] + +(62) NativeSort +Input [3]: [#20#20, #21#21, #22#22] +Arguments: [cd_demo_sk#20 ASC NULLS FIRST, cd_marital_status#21 ASC NULLS FIRST, cd_education_status#22 ASC NULLS FIRST], false + +(63) NativeSortMergeJoin +Left keys [3]: [wr_returning_cdemo_sk#11, cd_marital_status#18, cd_education_status#19] +Right keys [3]: [cd_demo_sk#20, cd_marital_status#21, cd_education_status#22] +Join type: Inner +Join condition: None + +(64) NativeProject +Output [7]: [ws_sold_date_sk#1, ws_quantity#5, ws_net_profit#7, wr_refunded_addr_sk#10, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Input [13]: [ws_sold_date_sk#1, ws_quantity#5, ws_net_profit#7, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15, cd_marital_status#18, cd_education_status#19, #20#20, #21#21, #22#22] + +(65) NativeShuffleExchange +Input [7]: [ws_sold_date_sk#1, ws_quantity#5, ws_net_profit#7, wr_refunded_addr_sk#10, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Arguments: hashpartitioning(wr_refunded_addr_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(66) ShuffleQueryStage +Output [7]: [ws_sold_date_sk#1, ws_quantity#5, ws_net_profit#7, wr_refunded_addr_sk#10, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Arguments: X + +(67) AQEShuffleRead +Input [7]: [ws_sold_date_sk#1, ws_quantity#5, ws_net_profit#7, wr_refunded_addr_sk#10, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Arguments: coalesced + +(68) InputAdapter +Input [7]: [ws_sold_date_sk#1, ws_quantity#5, ws_net_profit#7, wr_refunded_addr_sk#10, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] + +(69) NativeSort +Input [7]: [ws_sold_date_sk#1, ws_quantity#5, ws_net_profit#7, wr_refunded_addr_sk#10, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Arguments: [wr_refunded_addr_sk#10 ASC NULLS FIRST], false + +(158) Scan parquet +Output [3]: [ca_address_sk#23, ca_state#24, ca_country#25] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_country), EqualTo(ca_country,United States), IsNotNull(ca_address_sk), Or(Or(In(ca_state, [IN,NJ,OH]),In(ca_state, [CT,KY,WI])),In(ca_state, [AR,IA,LA]))] +ReadSchema: struct + +(71) InputAdapter +Input [3]: [ca_address_sk#23, ca_state#24, ca_country#25] +Arguments: [#23, #24, #25] + +(72) NativeFilter +Input [3]: [#23#23, #24#24, #25#25] +Condition : (((isnotnull(ca_country#25) AND (ca_country#25 = United States)) AND isnotnull(ca_address_sk#23)) AND ((ca_state#24 IN (IN,OH,NJ) OR ca_state#24 IN (WI,CT,KY)) OR ca_state#24 IN (LA,IA,AR))) + +(73) NativeProject +Output [2]: [ca_address_sk#23, ca_state#24] +Input [3]: [#23#23, #24#24, #25#25] + +(74) NativeShuffleExchange +Input [2]: [ca_address_sk#23, ca_state#24] +Arguments: hashpartitioning(ca_address_sk#23, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(75) ShuffleQueryStage +Output [2]: [ca_address_sk#23, ca_state#24] +Arguments: X + +(76) AQEShuffleRead +Input [2]: [ca_address_sk#23, ca_state#24] +Arguments: coalesced + +(77) InputAdapter +Input [2]: [ca_address_sk#23, ca_state#24] + +(78) NativeSort +Input [2]: [ca_address_sk#23, ca_state#24] +Arguments: [ca_address_sk#23 ASC NULLS FIRST], false + +(79) SortMergeJoin [codegen id : 2] +Left keys [1]: [wr_refunded_addr_sk#10] +Right keys [1]: [ca_address_sk#23] +Join type: Inner +Join condition: ((((ca_state#24 IN (IN,OH,NJ) AND (ws_net_profit#7 >= 100.00)) AND (ws_net_profit#7 <= 200.00)) OR ((ca_state#24 IN (WI,CT,KY) AND (ws_net_profit#7 >= 150.00)) AND (ws_net_profit#7 <= 300.00))) OR ((ca_state#24 IN (LA,IA,AR) AND (ws_net_profit#7 >= 50.00)) AND (ws_net_profit#7 <= 250.00))) + +(80) Project [codegen id : 2] +Output [5]: [ws_sold_date_sk#1, ws_quantity#5, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Input [9]: [ws_sold_date_sk#1, ws_quantity#5, ws_net_profit#7, wr_refunded_addr_sk#10, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15, ca_address_sk#23, ca_state#24] + +(81) ConvertToNative +Input [5]: [ws_sold_date_sk#1, ws_quantity#5, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] + +(82) NativeShuffleExchange +Input [5]: [ws_sold_date_sk#1, ws_quantity#5, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Arguments: hashpartitioning(ws_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(83) ShuffleQueryStage +Output [5]: [ws_sold_date_sk#1, ws_quantity#5, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Arguments: X + +(84) AQEShuffleRead +Input [5]: [ws_sold_date_sk#1, ws_quantity#5, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Arguments: coalesced + +(85) InputAdapter +Input [5]: [ws_sold_date_sk#1, ws_quantity#5, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] + +(86) NativeSort +Input [5]: [ws_sold_date_sk#1, ws_quantity#5, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Arguments: [ws_sold_date_sk#1 ASC NULLS FIRST], false + +(167) Scan parquet +Output [2]: [d_date_sk#26, d_year#27] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(88) InputAdapter +Input [2]: [d_date_sk#26, d_year#27] +Arguments: [#26, #27] + +(89) NativeFilter +Input [2]: [#26#26, #27#27] +Condition : ((isnotnull(d_year#27) AND (d_year#27 = 2000)) AND isnotnull(d_date_sk#26)) + +(90) NativeProject +Output [1]: [d_date_sk#26] +Input [2]: [#26#26, #27#27] + +(91) NativeShuffleExchange +Input [1]: [d_date_sk#26] +Arguments: hashpartitioning(d_date_sk#26, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(92) ShuffleQueryStage +Output [1]: [d_date_sk#26] +Arguments: X + +(93) AQEShuffleRead +Input [1]: [d_date_sk#26] +Arguments: coalesced + +(94) InputAdapter +Input [1]: [d_date_sk#26] + +(95) NativeSort +Input [1]: [d_date_sk#26] +Arguments: [d_date_sk#26 ASC NULLS FIRST], false + +(96) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#1] +Right keys [1]: [d_date_sk#26] +Join type: Inner +Join condition: None + +(97) NativeProject +Output [4]: [ws_quantity#5, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Input [6]: [ws_sold_date_sk#1, ws_quantity#5, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15, d_date_sk#26] + +(98) NativeShuffleExchange +Input [4]: [ws_quantity#5, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Arguments: hashpartitioning(wr_reason_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(99) ShuffleQueryStage +Output [4]: [ws_quantity#5, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Arguments: X + +(100) AQEShuffleRead +Input [4]: [ws_quantity#5, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Arguments: coalesced + +(101) InputAdapter +Input [4]: [ws_quantity#5, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] + +(102) NativeSort +Input [4]: [ws_quantity#5, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Arguments: [wr_reason_sk#12 ASC NULLS FIRST], false + +(176) Scan parquet +Output [2]: [r_reason_sk#28, r_reason_desc#29] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(r_reason_sk)] +ReadSchema: struct + +(104) InputAdapter +Input [2]: [r_reason_sk#28, r_reason_desc#29] +Arguments: [#28, #29] + +(105) NativeFilter +Input [2]: [#28#28, #29#29] +Condition : isnotnull(r_reason_sk#28) + +(106) NativeShuffleExchange +Input [2]: [#28#28, #29#29] +Arguments: hashpartitioning(r_reason_sk#28, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(107) ShuffleQueryStage +Output [2]: [#28#28, #29#29] +Arguments: X + +(108) AQEShuffleRead +Input [2]: [#28#28, #29#29] +Arguments: coalesced + +(109) InputAdapter +Input [2]: [#28#28, #29#29] + +(110) NativeSort +Input [2]: [#28#28, #29#29] +Arguments: [r_reason_sk#28 ASC NULLS FIRST], false + +(111) NativeSortMergeJoin +Left keys [1]: [wr_reason_sk#12] +Right keys [1]: [r_reason_sk#28] +Join type: Inner +Join condition: None + +(112) NativeProject +Output [4]: [ws_quantity#5, wr_fee#14, wr_refunded_cash#15, r_reason_desc#29] +Input [6]: [ws_quantity#5, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15, #28#28, #29#29] + +(113) NativeProject +Output [4]: [r_reason_desc#29 AS r_reason_desc#29, ws_quantity#5 AS _c1#30, UnscaledValue(wr_refunded_cash#15) AS _c2#31, UnscaledValue(wr_fee#14) AS _c3#32] +Input [4]: [ws_quantity#5, wr_fee#14, wr_refunded_cash#15, r_reason_desc#29] + +(114) NativeHashAggregate +Input [4]: [r_reason_desc#29, _c1#30, _c2#31, _c3#32] +Keys [1]: [r_reason_desc#29] +Functions [3]: [partial_avg(_c1#30), partial_avg(_c2#31), partial_avg(_c3#32)] +Aggregate Attributes [6]: [sum#33, count#34, sum#35, count#36, sum#37, count#38] +Results [2]: [r_reason_desc#29, #39#39] + +(115) NativeShuffleExchange +Input [2]: [r_reason_desc#29, #39#39] +Arguments: hashpartitioning(r_reason_desc#29, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(116) ShuffleQueryStage +Output [2]: [r_reason_desc#29, #39#39] +Arguments: X + +(117) AQEShuffleRead +Input [2]: [r_reason_desc#29, #39#39] +Arguments: coalesced + +(118) InputAdapter +Input [2]: [r_reason_desc#29, #39#39] + +(119) NativeHashAggregate +Input [2]: [r_reason_desc#29, #39#39] +Keys [1]: [r_reason_desc#29] +Functions [3]: [avg(ws_quantity#5), avg(UnscaledValue(wr_refunded_cash#15)), avg(UnscaledValue(wr_fee#14))] +Aggregate Attributes [3]: [avg(ws_quantity#5)#40, avg(UnscaledValue(wr_refunded_cash#15))#41, avg(UnscaledValue(wr_fee#14))#42] +Results [4]: [r_reason_desc#29, avg(ws_quantity#5)#40, avg(UnscaledValue(wr_refunded_cash#15))#41, avg(UnscaledValue(wr_fee#14))#42] + +(120) NativeProject +Output [4]: [substr(r_reason_desc#29, 1, 20) AS substr(r_reason_desc, 1, 20)#43, avg(ws_quantity#5)#40 AS avg(ws_quantity)#44, cast((avg(UnscaledValue(wr_refunded_cash#15))#41 / 100.0) as decimal(11,6)) AS avg(wr_refunded_cash)#45, cast((avg(UnscaledValue(wr_fee#14))#42 / 100.0) as decimal(11,6)) AS avg(wr_fee)#46] +Input [4]: [r_reason_desc#29, avg(ws_quantity#5)#40, avg(UnscaledValue(wr_refunded_cash#15))#41, avg(UnscaledValue(wr_fee#14))#42] + +(121) NativeTakeOrdered +Input [4]: [substr(r_reason_desc, 1, 20)#43, avg(ws_quantity)#44, avg(wr_refunded_cash)#45, avg(wr_fee)#46] +Arguments: X, [substr(r_reason_desc, 1, 20)#43 ASC NULLS FIRST, avg(ws_quantity)#44 ASC NULLS FIRST, avg(wr_refunded_cash)#45 ASC NULLS FIRST, avg(wr_fee)#46 ASC NULLS FIRST] + +(122) Scan parquet +Output [7]: [ws_sold_date_sk#1, ws_item_sk#2, ws_web_page_sk#3, ws_order_number#4, ws_quantity#5, ws_sales_price#6, ws_net_profit#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_order_number), IsNotNull(ws_web_page_sk), IsNotNull(ws_sold_date_sk), Or(Or(And(GreaterThanOrEqual(ws_sales_price,100.00),LessThanOrEqual(ws_sales_price,150.00)),And(GreaterThanOrEqual(ws_sales_price,50.00),LessThanOrEqual(ws_sales_price,100.00))),And(GreaterThanOrEqual(ws_sales_price,150.00),LessThanOrEqual(ws_sales_price,200.00))), Or(Or(And(GreaterThanOrEqual(ws_net_profit,100.00),LessThanOrEqual(ws_net_profit,200.00)),And(GreaterThanOrEqual(ws_net_profit,150.00),LessThanOrEqual(ws_net_profit,300.00))),And(GreaterThanOrEqual(ws_net_profit,50.00),LessThanOrEqual(ws_net_profit,250.00)))] +ReadSchema: struct + +(123) Filter +Input [7]: [ws_sold_date_sk#1, ws_item_sk#2, ws_web_page_sk#3, ws_order_number#4, ws_quantity#5, ws_sales_price#6, ws_net_profit#7] +Condition : (((((isnotnull(ws_item_sk#2) AND isnotnull(ws_order_number#4)) AND isnotnull(ws_web_page_sk#3)) AND isnotnull(ws_sold_date_sk#1)) AND ((((ws_sales_price#6 >= 100.00) AND (ws_sales_price#6 <= 150.00)) OR ((ws_sales_price#6 >= 50.00) AND (ws_sales_price#6 <= 100.00))) OR ((ws_sales_price#6 >= 150.00) AND (ws_sales_price#6 <= 200.00)))) AND ((((ws_net_profit#7 >= 100.00) AND (ws_net_profit#7 <= 200.00)) OR ((ws_net_profit#7 >= 150.00) AND (ws_net_profit#7 <= 300.00))) OR ((ws_net_profit#7 >= 50.00) AND (ws_net_profit#7 <= 250.00)))) + +(124) Exchange +Input [7]: [ws_sold_date_sk#1, ws_item_sk#2, ws_web_page_sk#3, ws_order_number#4, ws_quantity#5, ws_sales_price#6, ws_net_profit#7] +Arguments: hashpartitioning(ws_item_sk#2, ws_order_number#4, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(125) Sort +Input [7]: [ws_sold_date_sk#1, ws_item_sk#2, ws_web_page_sk#3, ws_order_number#4, ws_quantity#5, ws_sales_price#6, ws_net_profit#7] +Arguments: [ws_item_sk#2 ASC NULLS FIRST, ws_order_number#4 ASC NULLS FIRST], false, 0 + +(126) Scan parquet +Output [8]: [wr_item_sk#8, wr_refunded_cdemo_sk#9, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_order_number#13, wr_fee#14, wr_refunded_cash#15] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wr_item_sk), IsNotNull(wr_order_number), IsNotNull(wr_refunded_cdemo_sk), IsNotNull(wr_returning_cdemo_sk), IsNotNull(wr_refunded_addr_sk), IsNotNull(wr_reason_sk)] +ReadSchema: struct + +(127) Filter +Input [8]: [wr_item_sk#8, wr_refunded_cdemo_sk#9, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_order_number#13, wr_fee#14, wr_refunded_cash#15] +Condition : (((((isnotnull(wr_item_sk#8) AND isnotnull(wr_order_number#13)) AND isnotnull(wr_refunded_cdemo_sk#9)) AND isnotnull(wr_returning_cdemo_sk#11)) AND isnotnull(wr_refunded_addr_sk#10)) AND isnotnull(wr_reason_sk#12)) + +(128) Exchange +Input [8]: [wr_item_sk#8, wr_refunded_cdemo_sk#9, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_order_number#13, wr_fee#14, wr_refunded_cash#15] +Arguments: hashpartitioning(wr_item_sk#8, wr_order_number#13, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(129) Sort +Input [8]: [wr_item_sk#8, wr_refunded_cdemo_sk#9, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_order_number#13, wr_fee#14, wr_refunded_cash#15] +Arguments: [wr_item_sk#8 ASC NULLS FIRST, wr_order_number#13 ASC NULLS FIRST], false, 0 + +(130) SortMergeJoin +Left keys [2]: [ws_item_sk#2, ws_order_number#4] +Right keys [2]: [wr_item_sk#8, wr_order_number#13] +Join type: Inner +Join condition: None + +(131) Project +Output [11]: [ws_sold_date_sk#1, ws_web_page_sk#3, ws_quantity#5, ws_sales_price#6, ws_net_profit#7, wr_refunded_cdemo_sk#9, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Input [15]: [ws_sold_date_sk#1, ws_item_sk#2, ws_web_page_sk#3, ws_order_number#4, ws_quantity#5, ws_sales_price#6, ws_net_profit#7, wr_item_sk#8, wr_refunded_cdemo_sk#9, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_order_number#13, wr_fee#14, wr_refunded_cash#15] + +(132) Exchange +Input [11]: [ws_sold_date_sk#1, ws_web_page_sk#3, ws_quantity#5, ws_sales_price#6, ws_net_profit#7, wr_refunded_cdemo_sk#9, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Arguments: hashpartitioning(ws_web_page_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(133) Sort +Input [11]: [ws_sold_date_sk#1, ws_web_page_sk#3, ws_quantity#5, ws_sales_price#6, ws_net_profit#7, wr_refunded_cdemo_sk#9, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Arguments: [ws_web_page_sk#3 ASC NULLS FIRST], false, 0 + +(134) Scan parquet +Output [1]: [wp_web_page_sk#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wp_web_page_sk)] +ReadSchema: struct + +(135) Filter +Input [1]: [wp_web_page_sk#16] +Condition : isnotnull(wp_web_page_sk#16) + +(136) Exchange +Input [1]: [wp_web_page_sk#16] +Arguments: hashpartitioning(wp_web_page_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(137) Sort +Input [1]: [wp_web_page_sk#16] +Arguments: [wp_web_page_sk#16 ASC NULLS FIRST], false, 0 + +(138) SortMergeJoin +Left keys [1]: [ws_web_page_sk#3] +Right keys [1]: [wp_web_page_sk#16] +Join type: Inner +Join condition: None + +(139) Project +Output [10]: [ws_sold_date_sk#1, ws_quantity#5, ws_sales_price#6, ws_net_profit#7, wr_refunded_cdemo_sk#9, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Input [12]: [ws_sold_date_sk#1, ws_web_page_sk#3, ws_quantity#5, ws_sales_price#6, ws_net_profit#7, wr_refunded_cdemo_sk#9, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15, wp_web_page_sk#16] + +(140) Exchange +Input [10]: [ws_sold_date_sk#1, ws_quantity#5, ws_sales_price#6, ws_net_profit#7, wr_refunded_cdemo_sk#9, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Arguments: hashpartitioning(wr_refunded_cdemo_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(141) Sort +Input [10]: [ws_sold_date_sk#1, ws_quantity#5, ws_sales_price#6, ws_net_profit#7, wr_refunded_cdemo_sk#9, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Arguments: [wr_refunded_cdemo_sk#9 ASC NULLS FIRST], false, 0 + +(142) Scan parquet +Output [3]: [cd_demo_sk#17, cd_marital_status#18, cd_education_status#19] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_demo_sk), IsNotNull(cd_marital_status), IsNotNull(cd_education_status), Or(Or(And(EqualTo(cd_marital_status,M),EqualTo(cd_education_status,Advanced Degree)),And(EqualTo(cd_marital_status,S),EqualTo(cd_education_status,College))),And(EqualTo(cd_marital_status,W),EqualTo(cd_education_status,2 yr Degree)))] +ReadSchema: struct + +(143) Filter +Input [3]: [cd_demo_sk#17, cd_marital_status#18, cd_education_status#19] +Condition : (((isnotnull(cd_demo_sk#17) AND isnotnull(cd_marital_status#18)) AND isnotnull(cd_education_status#19)) AND ((((cd_marital_status#18 = M) AND (cd_education_status#19 = Advanced Degree)) OR ((cd_marital_status#18 = S) AND (cd_education_status#19 = College))) OR ((cd_marital_status#18 = W) AND (cd_education_status#19 = 2 yr Degree)))) + +(144) Exchange +Input [3]: [cd_demo_sk#17, cd_marital_status#18, cd_education_status#19] +Arguments: hashpartitioning(cd_demo_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(145) Sort +Input [3]: [cd_demo_sk#17, cd_marital_status#18, cd_education_status#19] +Arguments: [cd_demo_sk#17 ASC NULLS FIRST], false, 0 + +(146) SortMergeJoin +Left keys [1]: [wr_refunded_cdemo_sk#9] +Right keys [1]: [cd_demo_sk#17] +Join type: Inner +Join condition: ((((((cd_marital_status#18 = M) AND (cd_education_status#19 = Advanced Degree)) AND (ws_sales_price#6 >= 100.00)) AND (ws_sales_price#6 <= 150.00)) OR ((((cd_marital_status#18 = S) AND (cd_education_status#19 = College)) AND (ws_sales_price#6 >= 50.00)) AND (ws_sales_price#6 <= 100.00))) OR ((((cd_marital_status#18 = W) AND (cd_education_status#19 = 2 yr Degree)) AND (ws_sales_price#6 >= 150.00)) AND (ws_sales_price#6 <= 200.00))) + +(147) Project +Output [10]: [ws_sold_date_sk#1, ws_quantity#5, ws_net_profit#7, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15, cd_marital_status#18, cd_education_status#19] +Input [13]: [ws_sold_date_sk#1, ws_quantity#5, ws_sales_price#6, ws_net_profit#7, wr_refunded_cdemo_sk#9, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15, cd_demo_sk#17, cd_marital_status#18, cd_education_status#19] + +(148) Exchange +Input [10]: [ws_sold_date_sk#1, ws_quantity#5, ws_net_profit#7, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15, cd_marital_status#18, cd_education_status#19] +Arguments: hashpartitioning(wr_returning_cdemo_sk#11, cd_marital_status#18, cd_education_status#19, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(149) Sort +Input [10]: [ws_sold_date_sk#1, ws_quantity#5, ws_net_profit#7, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15, cd_marital_status#18, cd_education_status#19] +Arguments: [wr_returning_cdemo_sk#11 ASC NULLS FIRST, cd_marital_status#18 ASC NULLS FIRST, cd_education_status#19 ASC NULLS FIRST], false, 0 + +(150) Scan parquet +Output [3]: [cd_demo_sk#20, cd_marital_status#21, cd_education_status#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cd_demo_sk), IsNotNull(cd_marital_status), IsNotNull(cd_education_status)] +ReadSchema: struct + +(151) Filter +Input [3]: [cd_demo_sk#20, cd_marital_status#21, cd_education_status#22] +Condition : ((isnotnull(cd_demo_sk#20) AND isnotnull(cd_marital_status#21)) AND isnotnull(cd_education_status#22)) + +(152) Exchange +Input [3]: [cd_demo_sk#20, cd_marital_status#21, cd_education_status#22] +Arguments: hashpartitioning(cd_demo_sk#20, cd_marital_status#21, cd_education_status#22, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(153) Sort +Input [3]: [cd_demo_sk#20, cd_marital_status#21, cd_education_status#22] +Arguments: [cd_demo_sk#20 ASC NULLS FIRST, cd_marital_status#21 ASC NULLS FIRST, cd_education_status#22 ASC NULLS FIRST], false, 0 + +(154) SortMergeJoin +Left keys [3]: [wr_returning_cdemo_sk#11, cd_marital_status#18, cd_education_status#19] +Right keys [3]: [cd_demo_sk#20, cd_marital_status#21, cd_education_status#22] +Join type: Inner +Join condition: None + +(155) Project +Output [7]: [ws_sold_date_sk#1, ws_quantity#5, ws_net_profit#7, wr_refunded_addr_sk#10, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Input [13]: [ws_sold_date_sk#1, ws_quantity#5, ws_net_profit#7, wr_refunded_addr_sk#10, wr_returning_cdemo_sk#11, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15, cd_marital_status#18, cd_education_status#19, cd_demo_sk#20, cd_marital_status#21, cd_education_status#22] + +(156) Exchange +Input [7]: [ws_sold_date_sk#1, ws_quantity#5, ws_net_profit#7, wr_refunded_addr_sk#10, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Arguments: hashpartitioning(wr_refunded_addr_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(157) Sort +Input [7]: [ws_sold_date_sk#1, ws_quantity#5, ws_net_profit#7, wr_refunded_addr_sk#10, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Arguments: [wr_refunded_addr_sk#10 ASC NULLS FIRST], false, 0 + +(158) Scan parquet +Output [3]: [ca_address_sk#23, ca_state#24, ca_country#25] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_country), EqualTo(ca_country,United States), IsNotNull(ca_address_sk), Or(Or(In(ca_state, [IN,NJ,OH]),In(ca_state, [CT,KY,WI])),In(ca_state, [AR,IA,LA]))] +ReadSchema: struct + +(159) Filter +Input [3]: [ca_address_sk#23, ca_state#24, ca_country#25] +Condition : (((isnotnull(ca_country#25) AND (ca_country#25 = United States)) AND isnotnull(ca_address_sk#23)) AND ((ca_state#24 IN (IN,OH,NJ) OR ca_state#24 IN (WI,CT,KY)) OR ca_state#24 IN (LA,IA,AR))) + +(160) Project +Output [2]: [ca_address_sk#23, ca_state#24] +Input [3]: [ca_address_sk#23, ca_state#24, ca_country#25] + +(161) Exchange +Input [2]: [ca_address_sk#23, ca_state#24] +Arguments: hashpartitioning(ca_address_sk#23, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(162) Sort +Input [2]: [ca_address_sk#23, ca_state#24] +Arguments: [ca_address_sk#23 ASC NULLS FIRST], false, 0 + +(163) SortMergeJoin +Left keys [1]: [wr_refunded_addr_sk#10] +Right keys [1]: [ca_address_sk#23] +Join type: Inner +Join condition: ((((ca_state#24 IN (IN,OH,NJ) AND (ws_net_profit#7 >= 100.00)) AND (ws_net_profit#7 <= 200.00)) OR ((ca_state#24 IN (WI,CT,KY) AND (ws_net_profit#7 >= 150.00)) AND (ws_net_profit#7 <= 300.00))) OR ((ca_state#24 IN (LA,IA,AR) AND (ws_net_profit#7 >= 50.00)) AND (ws_net_profit#7 <= 250.00))) + +(164) Project +Output [5]: [ws_sold_date_sk#1, ws_quantity#5, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Input [9]: [ws_sold_date_sk#1, ws_quantity#5, ws_net_profit#7, wr_refunded_addr_sk#10, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15, ca_address_sk#23, ca_state#24] + +(165) Exchange +Input [5]: [ws_sold_date_sk#1, ws_quantity#5, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Arguments: hashpartitioning(ws_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(166) Sort +Input [5]: [ws_sold_date_sk#1, ws_quantity#5, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Arguments: [ws_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(167) Scan parquet +Output [2]: [d_date_sk#26, d_year#27] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2000), IsNotNull(d_date_sk)] +ReadSchema: struct + +(168) Filter +Input [2]: [d_date_sk#26, d_year#27] +Condition : ((isnotnull(d_year#27) AND (d_year#27 = 2000)) AND isnotnull(d_date_sk#26)) + +(169) Project +Output [1]: [d_date_sk#26] +Input [2]: [d_date_sk#26, d_year#27] + +(170) Exchange +Input [1]: [d_date_sk#26] +Arguments: hashpartitioning(d_date_sk#26, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(171) Sort +Input [1]: [d_date_sk#26] +Arguments: [d_date_sk#26 ASC NULLS FIRST], false, 0 + +(172) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#1] +Right keys [1]: [d_date_sk#26] +Join type: Inner +Join condition: None + +(173) Project +Output [4]: [ws_quantity#5, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Input [6]: [ws_sold_date_sk#1, ws_quantity#5, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15, d_date_sk#26] + +(174) Exchange +Input [4]: [ws_quantity#5, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Arguments: hashpartitioning(wr_reason_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(175) Sort +Input [4]: [ws_quantity#5, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15] +Arguments: [wr_reason_sk#12 ASC NULLS FIRST], false, 0 + +(176) Scan parquet +Output [2]: [r_reason_sk#28, r_reason_desc#29] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(r_reason_sk)] +ReadSchema: struct + +(177) Filter +Input [2]: [r_reason_sk#28, r_reason_desc#29] +Condition : isnotnull(r_reason_sk#28) + +(178) Exchange +Input [2]: [r_reason_sk#28, r_reason_desc#29] +Arguments: hashpartitioning(r_reason_sk#28, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(179) Sort +Input [2]: [r_reason_sk#28, r_reason_desc#29] +Arguments: [r_reason_sk#28 ASC NULLS FIRST], false, 0 + +(180) SortMergeJoin +Left keys [1]: [wr_reason_sk#12] +Right keys [1]: [r_reason_sk#28] +Join type: Inner +Join condition: None + +(181) Project +Output [4]: [ws_quantity#5, wr_fee#14, wr_refunded_cash#15, r_reason_desc#29] +Input [6]: [ws_quantity#5, wr_reason_sk#12, wr_fee#14, wr_refunded_cash#15, r_reason_sk#28, r_reason_desc#29] + +(182) HashAggregate +Input [4]: [ws_quantity#5, wr_fee#14, wr_refunded_cash#15, r_reason_desc#29] +Keys [1]: [r_reason_desc#29] +Functions [3]: [partial_avg(ws_quantity#5), partial_avg(UnscaledValue(wr_refunded_cash#15)), partial_avg(UnscaledValue(wr_fee#14))] +Aggregate Attributes [6]: [sum#33, count#34, sum#35, count#36, sum#37, count#38] +Results [7]: [r_reason_desc#29, sum#47, count#48, sum#49, count#50, sum#51, count#52] + +(183) Exchange +Input [7]: [r_reason_desc#29, sum#47, count#48, sum#49, count#50, sum#51, count#52] +Arguments: hashpartitioning(r_reason_desc#29, 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(184) HashAggregate +Input [7]: [r_reason_desc#29, sum#47, count#48, sum#49, count#50, sum#51, count#52] +Keys [1]: [r_reason_desc#29] +Functions [3]: [avg(ws_quantity#5), avg(UnscaledValue(wr_refunded_cash#15)), avg(UnscaledValue(wr_fee#14))] +Aggregate Attributes [3]: [avg(ws_quantity#5)#40, avg(UnscaledValue(wr_refunded_cash#15))#41, avg(UnscaledValue(wr_fee#14))#42] +Results [4]: [substr(r_reason_desc#29, 1, 20) AS substr(r_reason_desc, 1, 20)#43, avg(ws_quantity#5)#40 AS avg(ws_quantity)#44, cast((avg(UnscaledValue(wr_refunded_cash#15))#41 / 100.0) as decimal(11,6)) AS avg(wr_refunded_cash)#45, cast((avg(UnscaledValue(wr_fee#14))#42 / 100.0) as decimal(11,6)) AS avg(wr_fee)#46] + +(185) TakeOrderedAndProject +Input [4]: [substr(r_reason_desc, 1, 20)#43, avg(ws_quantity)#44, avg(wr_refunded_cash)#45, avg(wr_fee)#46] +Arguments: X, [substr(r_reason_desc, 1, 20)#43 ASC NULLS FIRST, avg(ws_quantity)#44 ASC NULLS FIRST, avg(wr_refunded_cash)#45 ASC NULLS FIRST, avg(wr_fee)#46 ASC NULLS FIRST], [substr(r_reason_desc, 1, 20)#43, avg(ws_quantity)#44, avg(wr_refunded_cash)#45, avg(wr_fee)#46] + +(186) AdaptiveSparkPlan +Output [4]: [substr(r_reason_desc, 1, 20)#43, avg(ws_quantity)#44, avg(wr_refunded_cash)#45, avg(wr_fee)#46] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q86.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q86.txt new file mode 100644 index 000000000..c379f8fdb --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q86.txt @@ -0,0 +1,437 @@ +== Physical Plan == +AdaptiveSparkPlan (80) ++- == Final Plan == + NativeTakeOrdered (51) + +- NativeProject (50) + +- NativeWindow (49) + +- NativeSort (48) + +- InputAdapter (47) + +- AQEShuffleRead (46) + +- ShuffleQueryStage (45), Statistics(X) + +- NativeShuffleExchange (44) + +- NativeProject (43) + +- NativeHashAggregate (42) + +- InputAdapter (41) + +- AQEShuffleRead (40) + +- ShuffleQueryStage (39), Statistics(X) + +- NativeShuffleExchange (38) + +- NativeHashAggregate (37) + +- NativeProject (36) + +- NativeExpand (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) ++- == Initial Plan == + TakeOrderedAndProject (79) + +- Project (78) + +- Window (77) + +- Sort (76) + +- Exchange (75) + +- HashAggregate (74) + +- Exchange (73) + +- HashAggregate (72) + +- Expand (71) + +- Project (70) + +- SortMergeJoin Inner (69) + :- Sort (64) + : +- Exchange (63) + : +- Project (62) + : +- SortMergeJoin Inner (61) + : :- Sort (55) + : : +- Exchange (54) + : : +- Filter (53) + : : +- Scan parquet (52) + : +- Sort (60) + : +- Exchange (59) + : +- Project (58) + : +- Filter (57) + : +- Scan parquet (56) + +- Sort (68) + +- Exchange (67) + +- Filter (66) + +- Scan parquet (65) + + +(52) Scan parquet +Output [3]: [ws_sold_date_sk#1, ws_item_sk#2, ws_net_paid#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_item_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [ws_sold_date_sk#1, ws_item_sk#2, ws_net_paid#3] +Arguments: [#1, #2, #3] + +(3) NativeFilter +Input [3]: [#1#1, #2#2, #3#3] +Condition : (isnotnull(ws_sold_date_sk#1) AND isnotnull(ws_item_sk#2)) + +(4) NativeShuffleExchange +Input [3]: [#1#1, #2#2, #3#3] +Arguments: hashpartitioning(ws_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [3]: [#1#1, #2#2, #3#3] +Arguments: X + +(6) AQEShuffleRead +Input [3]: [#1#1, #2#2, #3#3] +Arguments: coalesced + +(7) InputAdapter +Input [3]: [#1#1, #2#2, #3#3] + +(8) NativeSort +Input [3]: [#1#1, #2#2, #3#3] +Arguments: [ws_sold_date_sk#1 ASC NULLS FIRST], false + +(56) Scan parquet +Output [2]: [d_date_sk#4, d_month_seq#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [d_date_sk#4, d_month_seq#5] +Arguments: [#4, #5] + +(11) NativeFilter +Input [2]: [#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#4)) + +(12) NativeProject +Output [1]: [d_date_sk#4] +Input [2]: [#4#4, #5#5] + +(13) NativeShuffleExchange +Input [1]: [d_date_sk#4] +Arguments: hashpartitioning(d_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [1]: [d_date_sk#4] +Arguments: X + +(15) AQEShuffleRead +Input [1]: [d_date_sk#4] +Arguments: coalesced + +(16) InputAdapter +Input [1]: [d_date_sk#4] + +(17) NativeSort +Input [1]: [d_date_sk#4] +Arguments: [d_date_sk#4 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#1] +Right keys [1]: [d_date_sk#4] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [2]: [ws_item_sk#2, ws_net_paid#3] +Input [4]: [#1#1, #2#2, #3#3, d_date_sk#4] + +(20) NativeShuffleExchange +Input [2]: [ws_item_sk#2, ws_net_paid#3] +Arguments: hashpartitioning(ws_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [2]: [ws_item_sk#2, ws_net_paid#3] +Arguments: X + +(22) AQEShuffleRead +Input [2]: [ws_item_sk#2, ws_net_paid#3] +Arguments: coalesced + +(23) InputAdapter +Input [2]: [ws_item_sk#2, ws_net_paid#3] + +(24) NativeSort +Input [2]: [ws_item_sk#2, ws_net_paid#3] +Arguments: [ws_item_sk#2 ASC NULLS FIRST], false + +(65) Scan parquet +Output [3]: [i_item_sk#6, i_class#7, i_category#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [3]: [i_item_sk#6, i_class#7, i_category#8] +Arguments: [#6, #7, #8] + +(27) NativeFilter +Input [3]: [#6#6, #7#7, #8#8] +Condition : isnotnull(i_item_sk#6) + +(28) NativeShuffleExchange +Input [3]: [#6#6, #7#7, #8#8] +Arguments: hashpartitioning(i_item_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: [i_item_sk#6 ASC NULLS FIRST], false + +(33) NativeSortMergeJoin +Left keys [1]: [ws_item_sk#2] +Right keys [1]: [i_item_sk#6] +Join type: Inner +Join condition: None + +(34) NativeProject +Output [3]: [ws_net_paid#3, i_category#8, i_class#7] +Input [5]: [ws_item_sk#2, ws_net_paid#3, #6#6, #7#7, #8#8] + +(35) NativeExpand +Input [3]: [ws_net_paid#3, i_category#8, i_class#7] +Arguments: [[ws_net_paid#3, i_category#8, i_class#7, 0], [ws_net_paid#3, i_category#8, null, 1], [ws_net_paid#3, null, null, 3]], [ws_net_paid#3, i_category#9, i_class#10, spark_grouping_id#11] + +(36) NativeProject +Output [4]: [i_category#9 AS i_category#9, i_class#10 AS i_class#10, spark_grouping_id#11 AS spark_grouping_id#11, UnscaledValue(ws_net_paid#3) AS _c3#12] +Input [4]: [ws_net_paid#3, i_category#9, i_class#10, spark_grouping_id#11] + +(37) NativeHashAggregate +Input [4]: [i_category#9, i_class#10, spark_grouping_id#11, _c3#12] +Keys [3]: [i_category#9, i_class#10, spark_grouping_id#11] +Functions [1]: [partial_sum(_c3#12)] +Aggregate Attributes [1]: [sum#13] +Results [4]: [i_category#9, i_class#10, spark_grouping_id#11, #14#14] + +(38) NativeShuffleExchange +Input [4]: [i_category#9, i_class#10, spark_grouping_id#11, #14#14] +Arguments: hashpartitioning(i_category#9, i_class#10, spark_grouping_id#11, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(39) ShuffleQueryStage +Output [4]: [i_category#9, i_class#10, spark_grouping_id#11, #14#14] +Arguments: X + +(40) AQEShuffleRead +Input [4]: [i_category#9, i_class#10, spark_grouping_id#11, #14#14] +Arguments: coalesced + +(41) InputAdapter +Input [4]: [i_category#9, i_class#10, spark_grouping_id#11, #14#14] + +(42) NativeHashAggregate +Input [4]: [i_category#9, i_class#10, spark_grouping_id#11, #14#14] +Keys [3]: [i_category#9, i_class#10, spark_grouping_id#11] +Functions [1]: [sum(UnscaledValue(ws_net_paid#3))] +Aggregate Attributes [1]: [sum(UnscaledValue(ws_net_paid#3))#15] +Results [4]: [i_category#9, i_class#10, spark_grouping_id#11, sum(UnscaledValue(ws_net_paid#3))#15] + +(43) NativeProject +Output [7]: [MakeDecimal(sum(UnscaledValue(ws_net_paid#3))#15,17,2) AS total_sum#16, i_category#9, i_class#10, (cast((shiftright(spark_grouping_id#11, 1) & 1) as tinyint) + cast((shiftright(spark_grouping_id#11, 0) & 1) as tinyint)) AS lochierarchy#17, MakeDecimal(sum(UnscaledValue(ws_net_paid#3))#15,17,2) AS _w0#18, (cast((shiftright(spark_grouping_id#11, 1) & 1) as tinyint) + cast((shiftright(spark_grouping_id#11, 0) & 1) as tinyint)) AS _w1#19, CASE WHEN (cast((shiftright(spark_grouping_id#11, 0) & 1) as tinyint) = 0) THEN i_category#9 END AS _w2#20] +Input [4]: [i_category#9, i_class#10, spark_grouping_id#11, sum(UnscaledValue(ws_net_paid#3))#15] + +(44) NativeShuffleExchange +Input [7]: [total_sum#16, i_category#9, i_class#10, lochierarchy#17, _w0#18, _w1#19, _w2#20] +Arguments: hashpartitioning(_w1#19, _w2#20, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(45) ShuffleQueryStage +Output [7]: [total_sum#16, i_category#9, i_class#10, lochierarchy#17, _w0#18, _w1#19, _w2#20] +Arguments: X + +(46) AQEShuffleRead +Input [7]: [total_sum#16, i_category#9, i_class#10, lochierarchy#17, _w0#18, _w1#19, _w2#20] +Arguments: coalesced + +(47) InputAdapter +Input [7]: [total_sum#16, i_category#9, i_class#10, lochierarchy#17, _w0#18, _w1#19, _w2#20] + +(48) NativeSort +Input [7]: [total_sum#16, i_category#9, i_class#10, lochierarchy#17, _w0#18, _w1#19, _w2#20] +Arguments: [_w1#19 ASC NULLS FIRST, _w2#20 ASC NULLS FIRST, _w0#18 DESC NULLS LAST], false + +(49) NativeWindow +Input [7]: [total_sum#16, i_category#9, i_class#10, lochierarchy#17, _w0#18, _w1#19, _w2#20] +Arguments: [rank(_w0#18) windowspecdefinition(_w1#19, _w2#20, _w0#18 DESC NULLS LAST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rank_within_parent#21], [_w1#19, _w2#20], [_w0#18 DESC NULLS LAST] + +(50) NativeProject +Output [5]: [total_sum#16, i_category#9, i_class#10, lochierarchy#17, rank_within_parent#21] +Input [8]: [total_sum#16, i_category#9, i_class#10, lochierarchy#17, _w0#18, _w1#19, _w2#20, rank_within_parent#21] + +(51) NativeTakeOrdered +Input [5]: [total_sum#16, i_category#9, i_class#10, lochierarchy#17, rank_within_parent#21] +Arguments: X, [lochierarchy#17 DESC NULLS LAST, CASE WHEN (lochierarchy#17 = 0) THEN i_category#9 END ASC NULLS FIRST, rank_within_parent#21 ASC NULLS FIRST] + +(52) Scan parquet +Output [3]: [ws_sold_date_sk#1, ws_item_sk#2, ws_net_paid#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_item_sk)] +ReadSchema: struct + +(53) Filter +Input [3]: [ws_sold_date_sk#1, ws_item_sk#2, ws_net_paid#3] +Condition : (isnotnull(ws_sold_date_sk#1) AND isnotnull(ws_item_sk#2)) + +(54) Exchange +Input [3]: [ws_sold_date_sk#1, ws_item_sk#2, ws_net_paid#3] +Arguments: hashpartitioning(ws_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(55) Sort +Input [3]: [ws_sold_date_sk#1, ws_item_sk#2, ws_net_paid#3] +Arguments: [ws_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(56) Scan parquet +Output [2]: [d_date_sk#4, d_month_seq#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)] +ReadSchema: struct + +(57) Filter +Input [2]: [d_date_sk#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#4)) + +(58) Project +Output [1]: [d_date_sk#4] +Input [2]: [d_date_sk#4, d_month_seq#5] + +(59) Exchange +Input [1]: [d_date_sk#4] +Arguments: hashpartitioning(d_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(60) Sort +Input [1]: [d_date_sk#4] +Arguments: [d_date_sk#4 ASC NULLS FIRST], false, 0 + +(61) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#1] +Right keys [1]: [d_date_sk#4] +Join type: Inner +Join condition: None + +(62) Project +Output [2]: [ws_item_sk#2, ws_net_paid#3] +Input [4]: [ws_sold_date_sk#1, ws_item_sk#2, ws_net_paid#3, d_date_sk#4] + +(63) Exchange +Input [2]: [ws_item_sk#2, ws_net_paid#3] +Arguments: hashpartitioning(ws_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(64) Sort +Input [2]: [ws_item_sk#2, ws_net_paid#3] +Arguments: [ws_item_sk#2 ASC NULLS FIRST], false, 0 + +(65) Scan parquet +Output [3]: [i_item_sk#6, i_class#7, i_category#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_item_sk)] +ReadSchema: struct + +(66) Filter +Input [3]: [i_item_sk#6, i_class#7, i_category#8] +Condition : isnotnull(i_item_sk#6) + +(67) Exchange +Input [3]: [i_item_sk#6, i_class#7, i_category#8] +Arguments: hashpartitioning(i_item_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(68) Sort +Input [3]: [i_item_sk#6, i_class#7, i_category#8] +Arguments: [i_item_sk#6 ASC NULLS FIRST], false, 0 + +(69) SortMergeJoin +Left keys [1]: [ws_item_sk#2] +Right keys [1]: [i_item_sk#6] +Join type: Inner +Join condition: None + +(70) Project +Output [3]: [ws_net_paid#3, i_category#8, i_class#7] +Input [5]: [ws_item_sk#2, ws_net_paid#3, i_item_sk#6, i_class#7, i_category#8] + +(71) Expand +Input [3]: [ws_net_paid#3, i_category#8, i_class#7] +Arguments: [[ws_net_paid#3, i_category#8, i_class#7, 0], [ws_net_paid#3, i_category#8, null, 1], [ws_net_paid#3, null, null, 3]], [ws_net_paid#3, i_category#9, i_class#10, spark_grouping_id#11] + +(72) HashAggregate +Input [4]: [ws_net_paid#3, i_category#9, i_class#10, spark_grouping_id#11] +Keys [3]: [i_category#9, i_class#10, spark_grouping_id#11] +Functions [1]: [partial_sum(UnscaledValue(ws_net_paid#3))] +Aggregate Attributes [1]: [sum#13] +Results [4]: [i_category#9, i_class#10, spark_grouping_id#11, sum#22] + +(73) Exchange +Input [4]: [i_category#9, i_class#10, spark_grouping_id#11, sum#22] +Arguments: hashpartitioning(i_category#9, i_class#10, spark_grouping_id#11, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(74) HashAggregate +Input [4]: [i_category#9, i_class#10, spark_grouping_id#11, sum#22] +Keys [3]: [i_category#9, i_class#10, spark_grouping_id#11] +Functions [1]: [sum(UnscaledValue(ws_net_paid#3))] +Aggregate Attributes [1]: [sum(UnscaledValue(ws_net_paid#3))#15] +Results [7]: [MakeDecimal(sum(UnscaledValue(ws_net_paid#3))#15,17,2) AS total_sum#16, i_category#9, i_class#10, (cast((shiftright(spark_grouping_id#11, 1) & 1) as tinyint) + cast((shiftright(spark_grouping_id#11, 0) & 1) as tinyint)) AS lochierarchy#17, MakeDecimal(sum(UnscaledValue(ws_net_paid#3))#15,17,2) AS _w0#18, (cast((shiftright(spark_grouping_id#11, 1) & 1) as tinyint) + cast((shiftright(spark_grouping_id#11, 0) & 1) as tinyint)) AS _w1#19, CASE WHEN (cast((shiftright(spark_grouping_id#11, 0) & 1) as tinyint) = 0) THEN i_category#9 END AS _w2#20] + +(75) Exchange +Input [7]: [total_sum#16, i_category#9, i_class#10, lochierarchy#17, _w0#18, _w1#19, _w2#20] +Arguments: hashpartitioning(_w1#19, _w2#20, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(76) Sort +Input [7]: [total_sum#16, i_category#9, i_class#10, lochierarchy#17, _w0#18, _w1#19, _w2#20] +Arguments: [_w1#19 ASC NULLS FIRST, _w2#20 ASC NULLS FIRST, _w0#18 DESC NULLS LAST], false, 0 + +(77) Window +Input [7]: [total_sum#16, i_category#9, i_class#10, lochierarchy#17, _w0#18, _w1#19, _w2#20] +Arguments: [rank(_w0#18) windowspecdefinition(_w1#19, _w2#20, _w0#18 DESC NULLS LAST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rank_within_parent#21], [_w1#19, _w2#20], [_w0#18 DESC NULLS LAST] + +(78) Project +Output [5]: [total_sum#16, i_category#9, i_class#10, lochierarchy#17, rank_within_parent#21] +Input [8]: [total_sum#16, i_category#9, i_class#10, lochierarchy#17, _w0#18, _w1#19, _w2#20, rank_within_parent#21] + +(79) TakeOrderedAndProject +Input [5]: [total_sum#16, i_category#9, i_class#10, lochierarchy#17, rank_within_parent#21] +Arguments: X, [lochierarchy#17 DESC NULLS LAST, CASE WHEN (lochierarchy#17 = 0) THEN i_category#9 END ASC NULLS FIRST, rank_within_parent#21 ASC NULLS FIRST], [total_sum#16, i_category#9, i_class#10, lochierarchy#17, rank_within_parent#21] + +(80) AdaptiveSparkPlan +Output [5]: [total_sum#16, i_category#9, i_class#10, lochierarchy#17, rank_within_parent#21] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q87.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q87.txt new file mode 100644 index 000000000..fa078fea9 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q87.txt @@ -0,0 +1,1180 @@ +== Physical Plan == +AdaptiveSparkPlan (215) ++- == Final Plan == + NativeProject (136) + +- NativeHashAggregate (135) + +- ShuffleQueryStage (134), Statistics(X) + +- NativeShuffleExchange (133) + +- NativeHashAggregate (132) + +- NativeProject (131) + +- NativeSortMergeJoin LeftAnti (130) + :- NativeSortMergeJoin LeftAnti (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 LeftAnti (210) + :- SortMergeJoin LeftAnti (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:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_customer_sk)] +ReadSchema: struct + +(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:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)] +ReadSchema: struct + +(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:/] +PushedFilters: [IsNotNull(c_customer_sk)] +ReadSchema: struct + +(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 [4]: [c_last_name#8, c_first_name#7, d_date#4, #9#9] + +(36) NativeShuffleExchange +Input [4]: [c_last_name#8, c_first_name#7, d_date#4, #9#9] +Arguments: hashpartitioning(c_last_name#8, c_first_name#7, d_date#4, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [4]: [c_last_name#8, c_first_name#7, d_date#4, #9#9] +Arguments: X + +(38) AQEShuffleRead +Input [4]: [c_last_name#8, c_first_name#7, d_date#4, #9#9] +Arguments: coalesced + +(39) InputAdapter +Input [4]: [c_last_name#8, c_first_name#7, d_date#4, #9#9] + +(40) NativeHashAggregate +Input [4]: [c_last_name#8, c_first_name#7, d_date#4, #9#9] +Keys [3]: [c_last_name#8, c_first_name#7, d_date#4] +Functions: [] +Aggregate Attributes: [] +Results [4]: [c_last_name#8, c_first_name#7, d_date#4, #9#9] + +(41) NativeProject +Output [3]: [c_last_name#8, c_first_name#7, d_date#4] +Input [4]: [c_last_name#8, c_first_name#7, d_date#4, #9#9] + +(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#10, cs_bill_customer_sk#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk), IsNotNull(cs_bill_customer_sk)] +ReadSchema: struct + +(48) InputAdapter +Input [2]: [cs_sold_date_sk#10, cs_bill_customer_sk#11] +Arguments: [#10, #11] + +(49) NativeFilter +Input [2]: [#10#10, #11#11] +Condition : (isnotnull(cs_sold_date_sk#10) AND isnotnull(cs_bill_customer_sk#11)) + +(50) NativeShuffleExchange +Input [2]: [#10#10, #11#11] +Arguments: hashpartitioning(cs_sold_date_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(51) ShuffleQueryStage +Output [2]: [#10#10, #11#11] +Arguments: X + +(52) AQEShuffleRead +Input [2]: [#10#10, #11#11] +Arguments: coalesced + +(53) InputAdapter +Input [2]: [#10#10, #11#11] + +(54) NativeSort +Input [2]: [#10#10, #11#11] +Arguments: [cs_sold_date_sk#10 ASC NULLS FIRST], false + +(55) ReusedExchange [Reuses operator id: 13] +Output [2]: [d_date_sk#12, d_date#13] + +(56) ShuffleQueryStage +Output [2]: [d_date_sk#12, d_date#13] +Arguments: X + +(57) AQEShuffleRead +Input [2]: [d_date_sk#12, d_date#13] +Arguments: coalesced + +(58) InputAdapter +Input [2]: [d_date_sk#12, d_date#13] +Arguments: [#12, #13] + +(59) InputAdapter +Input [2]: [#12#12, #13#13] + +(60) NativeSort +Input [2]: [#12#12, #13#13] +Arguments: [d_date_sk#12 ASC NULLS FIRST], false + +(61) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#10] +Right keys [1]: [d_date_sk#12] +Join type: Inner +Join condition: None + +(62) NativeProject +Output [2]: [cs_bill_customer_sk#11, d_date#13] +Input [4]: [#10#10, #11#11, #12#12, #13#13] + +(63) NativeShuffleExchange +Input [2]: [cs_bill_customer_sk#11, d_date#13] +Arguments: hashpartitioning(cs_bill_customer_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(64) ShuffleQueryStage +Output [2]: [cs_bill_customer_sk#11, d_date#13] +Arguments: X + +(65) AQEShuffleRead +Input [2]: [cs_bill_customer_sk#11, d_date#13] +Arguments: coalesced + +(66) InputAdapter +Input [2]: [cs_bill_customer_sk#11, d_date#13] + +(67) NativeSort +Input [2]: [cs_bill_customer_sk#11, d_date#13] +Arguments: [cs_bill_customer_sk#11 ASC NULLS FIRST], false + +(68) ReusedExchange [Reuses operator id: 28] +Output [3]: [c_customer_sk#14, c_first_name#15, c_last_name#16] + +(69) ShuffleQueryStage +Output [3]: [c_customer_sk#14, c_first_name#15, c_last_name#16] +Arguments: X + +(70) AQEShuffleRead +Input [3]: [c_customer_sk#14, c_first_name#15, c_last_name#16] +Arguments: coalesced + +(71) InputAdapter +Input [3]: [c_customer_sk#14, c_first_name#15, c_last_name#16] +Arguments: [#14, #15, #16] + +(72) InputAdapter +Input [3]: [#14#14, #15#15, #16#16] + +(73) NativeSort +Input [3]: [#14#14, #15#15, #16#16] +Arguments: [c_customer_sk#14 ASC NULLS FIRST], false + +(74) NativeSortMergeJoin +Left keys [1]: [cs_bill_customer_sk#11] +Right keys [1]: [c_customer_sk#14] +Join type: Inner +Join condition: None + +(75) NativeProject +Output [3]: [c_last_name#16, c_first_name#15, d_date#13] +Input [5]: [cs_bill_customer_sk#11, d_date#13, #14#14, #15#15, #16#16] + +(76) NativeHashAggregate +Input [3]: [c_last_name#16, c_first_name#15, d_date#13] +Keys [3]: [c_last_name#16, c_first_name#15, d_date#13] +Functions: [] +Aggregate Attributes: [] +Results [4]: [c_last_name#16, c_first_name#15, d_date#13, #9#9] + +(77) NativeShuffleExchange +Input [4]: [c_last_name#16, c_first_name#15, d_date#13, #9#9] +Arguments: hashpartitioning(c_last_name#16, c_first_name#15, d_date#13, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(78) ShuffleQueryStage +Output [4]: [c_last_name#16, c_first_name#15, d_date#13, #9#9] +Arguments: X + +(79) AQEShuffleRead +Input [4]: [c_last_name#16, c_first_name#15, d_date#13, #9#9] +Arguments: coalesced + +(80) InputAdapter +Input [4]: [c_last_name#16, c_first_name#15, d_date#13, #9#9] + +(81) NativeHashAggregate +Input [4]: [c_last_name#16, c_first_name#15, d_date#13, #9#9] +Keys [3]: [c_last_name#16, c_first_name#15, d_date#13] +Functions: [] +Aggregate Attributes: [] +Results [4]: [c_last_name#16, c_first_name#15, d_date#13, #9#9] + +(82) NativeProject +Output [3]: [c_last_name#16, c_first_name#15, d_date#13] +Input [4]: [c_last_name#16, c_first_name#15, d_date#13, #9#9] + +(83) NativeShuffleExchange +Input [3]: [c_last_name#16, c_first_name#15, d_date#13] +Arguments: hashpartitioning(coalesce(c_last_name#16, ), isnull(c_last_name#16), coalesce(c_first_name#15, ), isnull(c_first_name#15), coalesce(d_date#13, 1970-01-01), isnull(d_date#13), 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(84) ShuffleQueryStage +Output [3]: [c_last_name#16, c_first_name#15, d_date#13] +Arguments: X + +(85) AQEShuffleRead +Input [3]: [c_last_name#16, c_first_name#15, d_date#13] +Arguments: coalesced + +(86) InputAdapter +Input [3]: [c_last_name#16, c_first_name#15, d_date#13] + +(87) NativeSort +Input [3]: [c_last_name#16, c_first_name#15, d_date#13] +Arguments: [coalesce(c_last_name#16, ) ASC NULLS FIRST, isnull(c_last_name#16) ASC NULLS FIRST, coalesce(c_first_name#15, ) ASC NULLS FIRST, isnull(c_first_name#15) ASC NULLS FIRST, coalesce(d_date#13, 1970-01-01) ASC NULLS FIRST, isnull(d_date#13) 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#16, ), isnull(c_last_name#16), coalesce(c_first_name#15, ), isnull(c_first_name#15), coalesce(d_date#13, 1970-01-01), isnull(d_date#13)] +Join type: LeftAnti +Join condition: None + +(186) Scan parquet +Output [2]: [ws_sold_date_sk#17, ws_bill_customer_sk#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_bill_customer_sk)] +ReadSchema: struct + +(90) InputAdapter +Input [2]: [ws_sold_date_sk#17, ws_bill_customer_sk#18] +Arguments: [#17, #18] + +(91) NativeFilter +Input [2]: [#17#17, #18#18] +Condition : (isnotnull(ws_sold_date_sk#17) AND isnotnull(ws_bill_customer_sk#18)) + +(92) NativeShuffleExchange +Input [2]: [#17#17, #18#18] +Arguments: hashpartitioning(ws_sold_date_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(93) ShuffleQueryStage +Output [2]: [#17#17, #18#18] +Arguments: X + +(94) AQEShuffleRead +Input [2]: [#17#17, #18#18] +Arguments: coalesced + +(95) InputAdapter +Input [2]: [#17#17, #18#18] + +(96) NativeSort +Input [2]: [#17#17, #18#18] +Arguments: [ws_sold_date_sk#17 ASC NULLS FIRST], false + +(97) ReusedExchange [Reuses operator id: 13] +Output [2]: [d_date_sk#19, d_date#20] + +(98) ShuffleQueryStage +Output [2]: [d_date_sk#19, d_date#20] +Arguments: X + +(99) AQEShuffleRead +Input [2]: [d_date_sk#19, d_date#20] +Arguments: coalesced + +(100) InputAdapter +Input [2]: [d_date_sk#19, d_date#20] +Arguments: [#19, #20] + +(101) InputAdapter +Input [2]: [#19#19, #20#20] + +(102) NativeSort +Input [2]: [#19#19, #20#20] +Arguments: [d_date_sk#19 ASC NULLS FIRST], false + +(103) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#17] +Right keys [1]: [d_date_sk#19] +Join type: Inner +Join condition: None + +(104) NativeProject +Output [2]: [ws_bill_customer_sk#18, d_date#20] +Input [4]: [#17#17, #18#18, #19#19, #20#20] + +(105) NativeShuffleExchange +Input [2]: [ws_bill_customer_sk#18, d_date#20] +Arguments: hashpartitioning(ws_bill_customer_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(106) ShuffleQueryStage +Output [2]: [ws_bill_customer_sk#18, d_date#20] +Arguments: X + +(107) AQEShuffleRead +Input [2]: [ws_bill_customer_sk#18, d_date#20] +Arguments: coalesced + +(108) InputAdapter +Input [2]: [ws_bill_customer_sk#18, d_date#20] + +(109) NativeSort +Input [2]: [ws_bill_customer_sk#18, d_date#20] +Arguments: [ws_bill_customer_sk#18 ASC NULLS FIRST], false + +(110) ReusedExchange [Reuses operator id: 28] +Output [3]: [c_customer_sk#21, c_first_name#22, c_last_name#23] + +(111) ShuffleQueryStage +Output [3]: [c_customer_sk#21, c_first_name#22, c_last_name#23] +Arguments: X + +(112) AQEShuffleRead +Input [3]: [c_customer_sk#21, c_first_name#22, c_last_name#23] +Arguments: coalesced + +(113) InputAdapter +Input [3]: [c_customer_sk#21, c_first_name#22, c_last_name#23] +Arguments: [#21, #22, #23] + +(114) InputAdapter +Input [3]: [#21#21, #22#22, #23#23] + +(115) NativeSort +Input [3]: [#21#21, #22#22, #23#23] +Arguments: [c_customer_sk#21 ASC NULLS FIRST], false + +(116) NativeSortMergeJoin +Left keys [1]: [ws_bill_customer_sk#18] +Right keys [1]: [c_customer_sk#21] +Join type: Inner +Join condition: None + +(117) NativeProject +Output [3]: [c_last_name#23, c_first_name#22, d_date#20] +Input [5]: [ws_bill_customer_sk#18, d_date#20, #21#21, #22#22, #23#23] + +(118) NativeHashAggregate +Input [3]: [c_last_name#23, c_first_name#22, d_date#20] +Keys [3]: [c_last_name#23, c_first_name#22, d_date#20] +Functions: [] +Aggregate Attributes: [] +Results [4]: [c_last_name#23, c_first_name#22, d_date#20, #9#9] + +(119) NativeShuffleExchange +Input [4]: [c_last_name#23, c_first_name#22, d_date#20, #9#9] +Arguments: hashpartitioning(c_last_name#23, c_first_name#22, d_date#20, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(120) ShuffleQueryStage +Output [4]: [c_last_name#23, c_first_name#22, d_date#20, #9#9] +Arguments: X + +(121) AQEShuffleRead +Input [4]: [c_last_name#23, c_first_name#22, d_date#20, #9#9] +Arguments: coalesced + +(122) InputAdapter +Input [4]: [c_last_name#23, c_first_name#22, d_date#20, #9#9] + +(123) NativeHashAggregate +Input [4]: [c_last_name#23, c_first_name#22, d_date#20, #9#9] +Keys [3]: [c_last_name#23, c_first_name#22, d_date#20] +Functions: [] +Aggregate Attributes: [] +Results [4]: [c_last_name#23, c_first_name#22, d_date#20, #9#9] + +(124) NativeProject +Output [3]: [c_last_name#23, c_first_name#22, d_date#20] +Input [4]: [c_last_name#23, c_first_name#22, d_date#20, #9#9] + +(125) NativeShuffleExchange +Input [3]: [c_last_name#23, c_first_name#22, d_date#20] +Arguments: hashpartitioning(coalesce(c_last_name#23, ), isnull(c_last_name#23), coalesce(c_first_name#22, ), isnull(c_first_name#22), coalesce(d_date#20, 1970-01-01), isnull(d_date#20), 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(126) ShuffleQueryStage +Output [3]: [c_last_name#23, c_first_name#22, d_date#20] +Arguments: X + +(127) AQEShuffleRead +Input [3]: [c_last_name#23, c_first_name#22, d_date#20] +Arguments: coalesced + +(128) InputAdapter +Input [3]: [c_last_name#23, c_first_name#22, d_date#20] + +(129) NativeSort +Input [3]: [c_last_name#23, c_first_name#22, d_date#20] +Arguments: [coalesce(c_last_name#23, ) ASC NULLS FIRST, isnull(c_last_name#23) ASC NULLS FIRST, coalesce(c_first_name#22, ) ASC NULLS FIRST, isnull(c_first_name#22) ASC NULLS FIRST, coalesce(d_date#20, 1970-01-01) ASC NULLS FIRST, isnull(d_date#20) 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#23, ), isnull(c_last_name#23), coalesce(c_first_name#22, ), isnull(c_first_name#22), coalesce(d_date#20, 1970-01-01), isnull(d_date#20)] +Join type: LeftAnti +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#24] +Results [1]: [#9#9] + +(133) NativeShuffleExchange +Input [1]: [#9#9] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=15] + +(134) ShuffleQueryStage +Output [1]: [#9#9] +Arguments: X + +(135) NativeHashAggregate +Input [1]: [#9#9] +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:/] +PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_customer_sk)] +ReadSchema: struct + +(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:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)] +ReadSchema: struct + +(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:/] +PushedFilters: [IsNotNull(c_customer_sk)] +ReadSchema: struct + +(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#10, cs_bill_customer_sk#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk), IsNotNull(cs_bill_customer_sk)] +ReadSchema: struct + +(162) Filter +Input [2]: [cs_sold_date_sk#10, cs_bill_customer_sk#11] +Condition : (isnotnull(cs_sold_date_sk#10) AND isnotnull(cs_bill_customer_sk#11)) + +(163) Exchange +Input [2]: [cs_sold_date_sk#10, cs_bill_customer_sk#11] +Arguments: hashpartitioning(cs_sold_date_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(164) Sort +Input [2]: [cs_sold_date_sk#10, cs_bill_customer_sk#11] +Arguments: [cs_sold_date_sk#10 ASC NULLS FIRST], false, 0 + +(165) Scan parquet +Output [3]: [d_date_sk#12, d_date#13, d_month_seq#27] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)] +ReadSchema: struct + +(166) Filter +Input [3]: [d_date_sk#12, d_date#13, 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#12)) + +(167) Project +Output [2]: [d_date_sk#12, d_date#13] +Input [3]: [d_date_sk#12, d_date#13, d_month_seq#27] + +(168) Exchange +Input [2]: [d_date_sk#12, d_date#13] +Arguments: hashpartitioning(d_date_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(169) Sort +Input [2]: [d_date_sk#12, d_date#13] +Arguments: [d_date_sk#12 ASC NULLS FIRST], false, 0 + +(170) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#10] +Right keys [1]: [d_date_sk#12] +Join type: Inner +Join condition: None + +(171) Project +Output [2]: [cs_bill_customer_sk#11, d_date#13] +Input [4]: [cs_sold_date_sk#10, cs_bill_customer_sk#11, d_date_sk#12, d_date#13] + +(172) Exchange +Input [2]: [cs_bill_customer_sk#11, d_date#13] +Arguments: hashpartitioning(cs_bill_customer_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(173) Sort +Input [2]: [cs_bill_customer_sk#11, d_date#13] +Arguments: [cs_bill_customer_sk#11 ASC NULLS FIRST], false, 0 + +(174) Scan parquet +Output [3]: [c_customer_sk#14, c_first_name#15, c_last_name#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk)] +ReadSchema: struct + +(175) Filter +Input [3]: [c_customer_sk#14, c_first_name#15, c_last_name#16] +Condition : isnotnull(c_customer_sk#14) + +(176) Exchange +Input [3]: [c_customer_sk#14, c_first_name#15, c_last_name#16] +Arguments: hashpartitioning(c_customer_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(177) Sort +Input [3]: [c_customer_sk#14, c_first_name#15, c_last_name#16] +Arguments: [c_customer_sk#14 ASC NULLS FIRST], false, 0 + +(178) SortMergeJoin +Left keys [1]: [cs_bill_customer_sk#11] +Right keys [1]: [c_customer_sk#14] +Join type: Inner +Join condition: None + +(179) Project +Output [3]: [c_last_name#16, c_first_name#15, d_date#13] +Input [5]: [cs_bill_customer_sk#11, d_date#13, c_customer_sk#14, c_first_name#15, c_last_name#16] + +(180) HashAggregate +Input [3]: [c_last_name#16, c_first_name#15, d_date#13] +Keys [3]: [c_last_name#16, c_first_name#15, d_date#13] +Functions: [] +Aggregate Attributes: [] +Results [3]: [c_last_name#16, c_first_name#15, d_date#13] + +(181) Exchange +Input [3]: [c_last_name#16, c_first_name#15, d_date#13] +Arguments: hashpartitioning(c_last_name#16, c_first_name#15, d_date#13, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(182) HashAggregate +Input [3]: [c_last_name#16, c_first_name#15, d_date#13] +Keys [3]: [c_last_name#16, c_first_name#15, d_date#13] +Functions: [] +Aggregate Attributes: [] +Results [3]: [c_last_name#16, c_first_name#15, d_date#13] + +(183) Exchange +Input [3]: [c_last_name#16, c_first_name#15, d_date#13] +Arguments: hashpartitioning(coalesce(c_last_name#16, ), isnull(c_last_name#16), coalesce(c_first_name#15, ), isnull(c_first_name#15), coalesce(d_date#13, 1970-01-01), isnull(d_date#13), 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(184) Sort +Input [3]: [c_last_name#16, c_first_name#15, d_date#13] +Arguments: [coalesce(c_last_name#16, ) ASC NULLS FIRST, isnull(c_last_name#16) ASC NULLS FIRST, coalesce(c_first_name#15, ) ASC NULLS FIRST, isnull(c_first_name#15) ASC NULLS FIRST, coalesce(d_date#13, 1970-01-01) ASC NULLS FIRST, isnull(d_date#13) 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#16, ), isnull(c_last_name#16), coalesce(c_first_name#15, ), isnull(c_first_name#15), coalesce(d_date#13, 1970-01-01), isnull(d_date#13)] +Join type: LeftAnti +Join condition: None + +(186) Scan parquet +Output [2]: [ws_sold_date_sk#17, ws_bill_customer_sk#18] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_bill_customer_sk)] +ReadSchema: struct + +(187) Filter +Input [2]: [ws_sold_date_sk#17, ws_bill_customer_sk#18] +Condition : (isnotnull(ws_sold_date_sk#17) AND isnotnull(ws_bill_customer_sk#18)) + +(188) Exchange +Input [2]: [ws_sold_date_sk#17, ws_bill_customer_sk#18] +Arguments: hashpartitioning(ws_sold_date_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=28] + +(189) Sort +Input [2]: [ws_sold_date_sk#17, ws_bill_customer_sk#18] +Arguments: [ws_sold_date_sk#17 ASC NULLS FIRST], false, 0 + +(190) Scan parquet +Output [3]: [d_date_sk#19, d_date#20, d_month_seq#28] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)] +ReadSchema: struct + +(191) Filter +Input [3]: [d_date_sk#19, d_date#20, 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#19)) + +(192) Project +Output [2]: [d_date_sk#19, d_date#20] +Input [3]: [d_date_sk#19, d_date#20, d_month_seq#28] + +(193) Exchange +Input [2]: [d_date_sk#19, d_date#20] +Arguments: hashpartitioning(d_date_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(194) Sort +Input [2]: [d_date_sk#19, d_date#20] +Arguments: [d_date_sk#19 ASC NULLS FIRST], false, 0 + +(195) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#17] +Right keys [1]: [d_date_sk#19] +Join type: Inner +Join condition: None + +(196) Project +Output [2]: [ws_bill_customer_sk#18, d_date#20] +Input [4]: [ws_sold_date_sk#17, ws_bill_customer_sk#18, d_date_sk#19, d_date#20] + +(197) Exchange +Input [2]: [ws_bill_customer_sk#18, d_date#20] +Arguments: hashpartitioning(ws_bill_customer_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(198) Sort +Input [2]: [ws_bill_customer_sk#18, d_date#20] +Arguments: [ws_bill_customer_sk#18 ASC NULLS FIRST], false, 0 + +(199) Scan parquet +Output [3]: [c_customer_sk#21, c_first_name#22, c_last_name#23] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk)] +ReadSchema: struct + +(200) Filter +Input [3]: [c_customer_sk#21, c_first_name#22, c_last_name#23] +Condition : isnotnull(c_customer_sk#21) + +(201) Exchange +Input [3]: [c_customer_sk#21, c_first_name#22, c_last_name#23] +Arguments: hashpartitioning(c_customer_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=31] + +(202) Sort +Input [3]: [c_customer_sk#21, c_first_name#22, c_last_name#23] +Arguments: [c_customer_sk#21 ASC NULLS FIRST], false, 0 + +(203) SortMergeJoin +Left keys [1]: [ws_bill_customer_sk#18] +Right keys [1]: [c_customer_sk#21] +Join type: Inner +Join condition: None + +(204) Project +Output [3]: [c_last_name#23, c_first_name#22, d_date#20] +Input [5]: [ws_bill_customer_sk#18, d_date#20, c_customer_sk#21, c_first_name#22, c_last_name#23] + +(205) HashAggregate +Input [3]: [c_last_name#23, c_first_name#22, d_date#20] +Keys [3]: [c_last_name#23, c_first_name#22, d_date#20] +Functions: [] +Aggregate Attributes: [] +Results [3]: [c_last_name#23, c_first_name#22, d_date#20] + +(206) Exchange +Input [3]: [c_last_name#23, c_first_name#22, d_date#20] +Arguments: hashpartitioning(c_last_name#23, c_first_name#22, d_date#20, 100), ENSURE_REQUIREMENTS, [plan_id=32] + +(207) HashAggregate +Input [3]: [c_last_name#23, c_first_name#22, d_date#20] +Keys [3]: [c_last_name#23, c_first_name#22, d_date#20] +Functions: [] +Aggregate Attributes: [] +Results [3]: [c_last_name#23, c_first_name#22, d_date#20] + +(208) Exchange +Input [3]: [c_last_name#23, c_first_name#22, d_date#20] +Arguments: hashpartitioning(coalesce(c_last_name#23, ), isnull(c_last_name#23), coalesce(c_first_name#22, ), isnull(c_first_name#22), coalesce(d_date#20, 1970-01-01), isnull(d_date#20), 100), ENSURE_REQUIREMENTS, [plan_id=33] + +(209) Sort +Input [3]: [c_last_name#23, c_first_name#22, d_date#20] +Arguments: [coalesce(c_last_name#23, ) ASC NULLS FIRST, isnull(c_last_name#23) ASC NULLS FIRST, coalesce(c_first_name#22, ) ASC NULLS FIRST, isnull(c_first_name#22) ASC NULLS FIRST, coalesce(d_date#20, 1970-01-01) ASC NULLS FIRST, isnull(d_date#20) 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#23, ), isnull(c_last_name#23), coalesce(c_first_name#22, ), isnull(c_first_name#22), coalesce(d_date#20, 1970-01-01), isnull(d_date#20)] +Join type: LeftAnti +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#24] +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 + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q88.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q88.txt new file mode 100644 index 000000000..7a514f614 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q88.txt @@ -0,0 +1,3124 @@ +== Physical Plan == +AdaptiveSparkPlan (572) ++- == Final Plan == + CartesianProduct Inner (308) + :- CartesianProduct Inner (272) + : :- CartesianProduct Inner (236) + : : :- CartesianProduct Inner (200) + : : : :- CartesianProduct Inner (164) + : : : : :- CartesianProduct Inner (128) + : : : : : :- CartesianProduct Inner (92) + : : : : : : :- NativeProject (56) + : : : : : : : +- NativeHashAggregate (55) + : : : : : : : +- ShuffleQueryStage (54), Statistics(X) + : : : : : : : +- NativeShuffleExchange (53) + : : : : : : : +- NativeHashAggregate (52) + : : : : : : : +- NativeProject (51) + : : : : : : : +- NativeSortMergeJoin Inner (50) + : : : : : : : :- NativeSort (40) + : : : : : : : : +- InputAdapter (39) + : : : : : : : : +- AQEShuffleRead (38) + : : : : : : : : +- ShuffleQueryStage (37), Statistics(X) + : : : : : : : : +- NativeShuffleExchange (36) + : : : : : : : : +- NativeProject (35) + : : : : : : : : +- NativeSortMergeJoin Inner (34) + : : : : : : : : :- 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 (33) + : : : : : : : : +- InputAdapter (32) + : : : : : : : : +- AQEShuffleRead (31) + : : : : : : : : +- ShuffleQueryStage (30), Statistics(X) + : : : : : : : : +- NativeShuffleExchange (29) + : : : : : : : : +- NativeProject (28) + : : : : : : : : +- NativeFilter (27) + : : : : : : : : +- InputAdapter (26) + : : : : : : : : +- NativeParquetScan (25) + : : : : : : : +- NativeSort (49) + : : : : : : : +- InputAdapter (48) + : : : : : : : +- AQEShuffleRead (47) + : : : : : : : +- ShuffleQueryStage (46), Statistics(X) + : : : : : : : +- NativeShuffleExchange (45) + : : : : : : : +- NativeProject (44) + : : : : : : : +- NativeFilter (43) + : : : : : : : +- InputAdapter (42) + : : : : : : : +- NativeParquetScan (41) + : : : : : : +- NativeProject (91) + : : : : : : +- NativeHashAggregate (90) + : : : : : : +- ShuffleQueryStage (89), Statistics(X) + : : : : : : +- NativeShuffleExchange (88) + : : : : : : +- NativeHashAggregate (87) + : : : : : : +- NativeProject (86) + : : : : : : +- NativeSortMergeJoin Inner (85) + : : : : : : :- NativeSort (78) + : : : : : : : +- InputAdapter (77) + : : : : : : : +- AQEShuffleRead (76) + : : : : : : : +- ShuffleQueryStage (75), Statistics(X) + : : : : : : : +- NativeShuffleExchange (74) + : : : : : : : +- NativeProject (73) + : : : : : : : +- NativeSortMergeJoin Inner (72) + : : : : : : : :- NativeSort (62) + : : : : : : : : +- InputAdapter (61) + : : : : : : : : +- InputAdapter (60) + : : : : : : : : +- AQEShuffleRead (59) + : : : : : : : : +- ShuffleQueryStage (58), Statistics(X) + : : : : : : : : +- ReusedExchange (57) + : : : : : : : +- NativeSort (71) + : : : : : : : +- InputAdapter (70) + : : : : : : : +- AQEShuffleRead (69) + : : : : : : : +- ShuffleQueryStage (68), Statistics(X) + : : : : : : : +- NativeShuffleExchange (67) + : : : : : : : +- NativeProject (66) + : : : : : : : +- NativeFilter (65) + : : : : : : : +- InputAdapter (64) + : : : : : : : +- NativeParquetScan (63) + : : : : : : +- NativeSort (84) + : : : : : : +- InputAdapter (83) + : : : : : : +- InputAdapter (82) + : : : : : : +- AQEShuffleRead (81) + : : : : : : +- ShuffleQueryStage (80), Statistics(X) + : : : : : : +- ReusedExchange (79) + : : : : : +- NativeProject (127) + : : : : : +- NativeHashAggregate (126) + : : : : : +- ShuffleQueryStage (125), Statistics(X) + : : : : : +- NativeShuffleExchange (124) + : : : : : +- NativeHashAggregate (123) + : : : : : +- NativeProject (122) + : : : : : +- NativeSortMergeJoin Inner (121) + : : : : : :- NativeSort (114) + : : : : : : +- InputAdapter (113) + : : : : : : +- AQEShuffleRead (112) + : : : : : : +- ShuffleQueryStage (111), Statistics(X) + : : : : : : +- NativeShuffleExchange (110) + : : : : : : +- NativeProject (109) + : : : : : : +- NativeSortMergeJoin Inner (108) + : : : : : : :- NativeSort (98) + : : : : : : : +- InputAdapter (97) + : : : : : : : +- InputAdapter (96) + : : : : : : : +- AQEShuffleRead (95) + : : : : : : : +- ShuffleQueryStage (94), Statistics(X) + : : : : : : : +- ReusedExchange (93) + : : : : : : +- NativeSort (107) + : : : : : : +- InputAdapter (106) + : : : : : : +- AQEShuffleRead (105) + : : : : : : +- ShuffleQueryStage (104), Statistics(X) + : : : : : : +- NativeShuffleExchange (103) + : : : : : : +- NativeProject (102) + : : : : : : +- NativeFilter (101) + : : : : : : +- InputAdapter (100) + : : : : : : +- NativeParquetScan (99) + : : : : : +- NativeSort (120) + : : : : : +- InputAdapter (119) + : : : : : +- InputAdapter (118) + : : : : : +- AQEShuffleRead (117) + : : : : : +- ShuffleQueryStage (116), Statistics(X) + : : : : : +- ReusedExchange (115) + : : : : +- NativeProject (163) + : : : : +- NativeHashAggregate (162) + : : : : +- ShuffleQueryStage (161), Statistics(X) + : : : : +- NativeShuffleExchange (160) + : : : : +- NativeHashAggregate (159) + : : : : +- NativeProject (158) + : : : : +- NativeSortMergeJoin Inner (157) + : : : : :- NativeSort (150) + : : : : : +- InputAdapter (149) + : : : : : +- AQEShuffleRead (148) + : : : : : +- ShuffleQueryStage (147), Statistics(X) + : : : : : +- NativeShuffleExchange (146) + : : : : : +- NativeProject (145) + : : : : : +- NativeSortMergeJoin Inner (144) + : : : : : :- NativeSort (134) + : : : : : : +- InputAdapter (133) + : : : : : : +- InputAdapter (132) + : : : : : : +- AQEShuffleRead (131) + : : : : : : +- ShuffleQueryStage (130), Statistics(X) + : : : : : : +- ReusedExchange (129) + : : : : : +- NativeSort (143) + : : : : : +- InputAdapter (142) + : : : : : +- AQEShuffleRead (141) + : : : : : +- ShuffleQueryStage (140), Statistics(X) + : : : : : +- NativeShuffleExchange (139) + : : : : : +- NativeProject (138) + : : : : : +- NativeFilter (137) + : : : : : +- InputAdapter (136) + : : : : : +- NativeParquetScan (135) + : : : : +- NativeSort (156) + : : : : +- InputAdapter (155) + : : : : +- InputAdapter (154) + : : : : +- AQEShuffleRead (153) + : : : : +- ShuffleQueryStage (152), Statistics(X) + : : : : +- ReusedExchange (151) + : : : +- NativeProject (199) + : : : +- NativeHashAggregate (198) + : : : +- ShuffleQueryStage (197), Statistics(X) + : : : +- NativeShuffleExchange (196) + : : : +- NativeHashAggregate (195) + : : : +- NativeProject (194) + : : : +- NativeSortMergeJoin Inner (193) + : : : :- NativeSort (186) + : : : : +- InputAdapter (185) + : : : : +- AQEShuffleRead (184) + : : : : +- ShuffleQueryStage (183), Statistics(X) + : : : : +- NativeShuffleExchange (182) + : : : : +- NativeProject (181) + : : : : +- NativeSortMergeJoin Inner (180) + : : : : :- NativeSort (170) + : : : : : +- InputAdapter (169) + : : : : : +- InputAdapter (168) + : : : : : +- AQEShuffleRead (167) + : : : : : +- ShuffleQueryStage (166), Statistics(X) + : : : : : +- ReusedExchange (165) + : : : : +- NativeSort (179) + : : : : +- InputAdapter (178) + : : : : +- AQEShuffleRead (177) + : : : : +- ShuffleQueryStage (176), Statistics(X) + : : : : +- NativeShuffleExchange (175) + : : : : +- NativeProject (174) + : : : : +- NativeFilter (173) + : : : : +- InputAdapter (172) + : : : : +- NativeParquetScan (171) + : : : +- NativeSort (192) + : : : +- InputAdapter (191) + : : : +- InputAdapter (190) + : : : +- AQEShuffleRead (189) + : : : +- ShuffleQueryStage (188), Statistics(X) + : : : +- ReusedExchange (187) + : : +- NativeProject (235) + : : +- NativeHashAggregate (234) + : : +- ShuffleQueryStage (233), Statistics(X) + : : +- NativeShuffleExchange (232) + : : +- NativeHashAggregate (231) + : : +- NativeProject (230) + : : +- NativeSortMergeJoin Inner (229) + : : :- NativeSort (222) + : : : +- InputAdapter (221) + : : : +- AQEShuffleRead (220) + : : : +- ShuffleQueryStage (219), Statistics(X) + : : : +- NativeShuffleExchange (218) + : : : +- NativeProject (217) + : : : +- NativeSortMergeJoin Inner (216) + : : : :- NativeSort (206) + : : : : +- InputAdapter (205) + : : : : +- InputAdapter (204) + : : : : +- AQEShuffleRead (203) + : : : : +- ShuffleQueryStage (202), Statistics(X) + : : : : +- ReusedExchange (201) + : : : +- NativeSort (215) + : : : +- InputAdapter (214) + : : : +- AQEShuffleRead (213) + : : : +- ShuffleQueryStage (212), Statistics(X) + : : : +- NativeShuffleExchange (211) + : : : +- NativeProject (210) + : : : +- NativeFilter (209) + : : : +- InputAdapter (208) + : : : +- NativeParquetScan (207) + : : +- NativeSort (228) + : : +- InputAdapter (227) + : : +- InputAdapter (226) + : : +- AQEShuffleRead (225) + : : +- ShuffleQueryStage (224), Statistics(X) + : : +- ReusedExchange (223) + : +- NativeProject (271) + : +- NativeHashAggregate (270) + : +- ShuffleQueryStage (269), Statistics(X) + : +- NativeShuffleExchange (268) + : +- NativeHashAggregate (267) + : +- NativeProject (266) + : +- NativeSortMergeJoin Inner (265) + : :- NativeSort (258) + : : +- InputAdapter (257) + : : +- AQEShuffleRead (256) + : : +- ShuffleQueryStage (255), Statistics(X) + : : +- NativeShuffleExchange (254) + : : +- NativeProject (253) + : : +- NativeSortMergeJoin Inner (252) + : : :- NativeSort (242) + : : : +- InputAdapter (241) + : : : +- InputAdapter (240) + : : : +- AQEShuffleRead (239) + : : : +- ShuffleQueryStage (238), Statistics(X) + : : : +- ReusedExchange (237) + : : +- NativeSort (251) + : : +- InputAdapter (250) + : : +- AQEShuffleRead (249) + : : +- ShuffleQueryStage (248), Statistics(X) + : : +- NativeShuffleExchange (247) + : : +- NativeProject (246) + : : +- NativeFilter (245) + : : +- InputAdapter (244) + : : +- NativeParquetScan (243) + : +- NativeSort (264) + : +- InputAdapter (263) + : +- InputAdapter (262) + : +- AQEShuffleRead (261) + : +- ShuffleQueryStage (260), Statistics(X) + : +- ReusedExchange (259) + +- NativeProject (307) + +- NativeHashAggregate (306) + +- ShuffleQueryStage (305), Statistics(X) + +- NativeShuffleExchange (304) + +- NativeHashAggregate (303) + +- NativeProject (302) + +- NativeSortMergeJoin Inner (301) + :- NativeSort (294) + : +- InputAdapter (293) + : +- AQEShuffleRead (292) + : +- ShuffleQueryStage (291), Statistics(X) + : +- NativeShuffleExchange (290) + : +- NativeProject (289) + : +- NativeSortMergeJoin Inner (288) + : :- NativeSort (278) + : : +- InputAdapter (277) + : : +- InputAdapter (276) + : : +- AQEShuffleRead (275) + : : +- ShuffleQueryStage (274), Statistics(X) + : : +- ReusedExchange (273) + : +- NativeSort (287) + : +- InputAdapter (286) + : +- AQEShuffleRead (285) + : +- ShuffleQueryStage (284), Statistics(X) + : +- NativeShuffleExchange (283) + : +- NativeProject (282) + : +- NativeFilter (281) + : +- InputAdapter (280) + : +- NativeParquetScan (279) + +- NativeSort (300) + +- InputAdapter (299) + +- InputAdapter (298) + +- AQEShuffleRead (297) + +- ShuffleQueryStage (296), Statistics(X) + +- ReusedExchange (295) ++- == Initial Plan == + CartesianProduct Inner (571) + :- CartesianProduct Inner (538) + : :- CartesianProduct Inner (505) + : : :- CartesianProduct Inner (472) + : : : :- CartesianProduct Inner (439) + : : : : :- CartesianProduct Inner (406) + : : : : : :- CartesianProduct Inner (373) + : : : : : : :- HashAggregate (340) + : : : : : : : +- Exchange (339) + : : : : : : : +- HashAggregate (338) + : : : : : : : +- Project (337) + : : : : : : : +- SortMergeJoin Inner (336) + : : : : : : : :- Sort (330) + : : : : : : : : +- Exchange (329) + : : : : : : : : +- Project (328) + : : : : : : : : +- SortMergeJoin Inner (327) + : : : : : : : : :- Sort (321) + : : : : : : : : : +- Exchange (320) + : : : : : : : : : +- Project (319) + : : : : : : : : : +- SortMergeJoin Inner (318) + : : : : : : : : : :- Sort (312) + : : : : : : : : : : +- Exchange (311) + : : : : : : : : : : +- Filter (310) + : : : : : : : : : : +- Scan parquet (309) + : : : : : : : : : +- Sort (317) + : : : : : : : : : +- Exchange (316) + : : : : : : : : : +- Project (315) + : : : : : : : : : +- Filter (314) + : : : : : : : : : +- Scan parquet (313) + : : : : : : : : +- Sort (326) + : : : : : : : : +- Exchange (325) + : : : : : : : : +- Project (324) + : : : : : : : : +- Filter (323) + : : : : : : : : +- Scan parquet (322) + : : : : : : : +- Sort (335) + : : : : : : : +- Exchange (334) + : : : : : : : +- Project (333) + : : : : : : : +- Filter (332) + : : : : : : : +- Scan parquet (331) + : : : : : : +- HashAggregate (372) + : : : : : : +- Exchange (371) + : : : : : : +- HashAggregate (370) + : : : : : : +- Project (369) + : : : : : : +- SortMergeJoin Inner (368) + : : : : : : :- Sort (362) + : : : : : : : +- Exchange (361) + : : : : : : : +- Project (360) + : : : : : : : +- SortMergeJoin Inner (359) + : : : : : : : :- Sort (353) + : : : : : : : : +- Exchange (352) + : : : : : : : : +- Project (351) + : : : : : : : : +- SortMergeJoin Inner (350) + : : : : : : : : :- Sort (344) + : : : : : : : : : +- Exchange (343) + : : : : : : : : : +- Filter (342) + : : : : : : : : : +- Scan parquet (341) + : : : : : : : : +- Sort (349) + : : : : : : : : +- Exchange (348) + : : : : : : : : +- Project (347) + : : : : : : : : +- Filter (346) + : : : : : : : : +- Scan parquet (345) + : : : : : : : +- Sort (358) + : : : : : : : +- Exchange (357) + : : : : : : : +- Project (356) + : : : : : : : +- Filter (355) + : : : : : : : +- Scan parquet (354) + : : : : : : +- Sort (367) + : : : : : : +- Exchange (366) + : : : : : : +- Project (365) + : : : : : : +- Filter (364) + : : : : : : +- Scan parquet (363) + : : : : : +- HashAggregate (405) + : : : : : +- Exchange (404) + : : : : : +- HashAggregate (403) + : : : : : +- Project (402) + : : : : : +- SortMergeJoin Inner (401) + : : : : : :- Sort (395) + : : : : : : +- Exchange (394) + : : : : : : +- Project (393) + : : : : : : +- SortMergeJoin Inner (392) + : : : : : : :- Sort (386) + : : : : : : : +- Exchange (385) + : : : : : : : +- Project (384) + : : : : : : : +- SortMergeJoin Inner (383) + : : : : : : : :- Sort (377) + : : : : : : : : +- Exchange (376) + : : : : : : : : +- Filter (375) + : : : : : : : : +- Scan parquet (374) + : : : : : : : +- Sort (382) + : : : : : : : +- Exchange (381) + : : : : : : : +- Project (380) + : : : : : : : +- Filter (379) + : : : : : : : +- Scan parquet (378) + : : : : : : +- Sort (391) + : : : : : : +- Exchange (390) + : : : : : : +- Project (389) + : : : : : : +- Filter (388) + : : : : : : +- Scan parquet (387) + : : : : : +- Sort (400) + : : : : : +- Exchange (399) + : : : : : +- Project (398) + : : : : : +- Filter (397) + : : : : : +- Scan parquet (396) + : : : : +- HashAggregate (438) + : : : : +- Exchange (437) + : : : : +- HashAggregate (436) + : : : : +- Project (435) + : : : : +- SortMergeJoin Inner (434) + : : : : :- Sort (428) + : : : : : +- Exchange (427) + : : : : : +- Project (426) + : : : : : +- SortMergeJoin Inner (425) + : : : : : :- Sort (419) + : : : : : : +- Exchange (418) + : : : : : : +- Project (417) + : : : : : : +- SortMergeJoin Inner (416) + : : : : : : :- Sort (410) + : : : : : : : +- Exchange (409) + : : : : : : : +- Filter (408) + : : : : : : : +- Scan parquet (407) + : : : : : : +- Sort (415) + : : : : : : +- Exchange (414) + : : : : : : +- Project (413) + : : : : : : +- Filter (412) + : : : : : : +- Scan parquet (411) + : : : : : +- Sort (424) + : : : : : +- Exchange (423) + : : : : : +- Project (422) + : : : : : +- Filter (421) + : : : : : +- Scan parquet (420) + : : : : +- Sort (433) + : : : : +- Exchange (432) + : : : : +- Project (431) + : : : : +- Filter (430) + : : : : +- Scan parquet (429) + : : : +- HashAggregate (471) + : : : +- Exchange (470) + : : : +- HashAggregate (469) + : : : +- Project (468) + : : : +- SortMergeJoin Inner (467) + : : : :- Sort (461) + : : : : +- Exchange (460) + : : : : +- Project (459) + : : : : +- SortMergeJoin Inner (458) + : : : : :- Sort (452) + : : : : : +- Exchange (451) + : : : : : +- Project (450) + : : : : : +- SortMergeJoin Inner (449) + : : : : : :- Sort (443) + : : : : : : +- Exchange (442) + : : : : : : +- Filter (441) + : : : : : : +- Scan parquet (440) + : : : : : +- Sort (448) + : : : : : +- Exchange (447) + : : : : : +- Project (446) + : : : : : +- Filter (445) + : : : : : +- Scan parquet (444) + : : : : +- Sort (457) + : : : : +- Exchange (456) + : : : : +- Project (455) + : : : : +- Filter (454) + : : : : +- Scan parquet (453) + : : : +- Sort (466) + : : : +- Exchange (465) + : : : +- Project (464) + : : : +- Filter (463) + : : : +- Scan parquet (462) + : : +- HashAggregate (504) + : : +- Exchange (503) + : : +- HashAggregate (502) + : : +- Project (501) + : : +- SortMergeJoin Inner (500) + : : :- Sort (494) + : : : +- Exchange (493) + : : : +- Project (492) + : : : +- SortMergeJoin Inner (491) + : : : :- Sort (485) + : : : : +- Exchange (484) + : : : : +- Project (483) + : : : : +- SortMergeJoin Inner (482) + : : : : :- Sort (476) + : : : : : +- Exchange (475) + : : : : : +- Filter (474) + : : : : : +- Scan parquet (473) + : : : : +- Sort (481) + : : : : +- Exchange (480) + : : : : +- Project (479) + : : : : +- Filter (478) + : : : : +- Scan parquet (477) + : : : +- Sort (490) + : : : +- Exchange (489) + : : : +- Project (488) + : : : +- Filter (487) + : : : +- Scan parquet (486) + : : +- Sort (499) + : : +- Exchange (498) + : : +- Project (497) + : : +- Filter (496) + : : +- Scan parquet (495) + : +- HashAggregate (537) + : +- Exchange (536) + : +- HashAggregate (535) + : +- Project (534) + : +- SortMergeJoin Inner (533) + : :- Sort (527) + : : +- Exchange (526) + : : +- Project (525) + : : +- SortMergeJoin Inner (524) + : : :- Sort (518) + : : : +- Exchange (517) + : : : +- Project (516) + : : : +- SortMergeJoin Inner (515) + : : : :- Sort (509) + : : : : +- Exchange (508) + : : : : +- Filter (507) + : : : : +- Scan parquet (506) + : : : +- Sort (514) + : : : +- Exchange (513) + : : : +- Project (512) + : : : +- Filter (511) + : : : +- Scan parquet (510) + : : +- Sort (523) + : : +- Exchange (522) + : : +- Project (521) + : : +- Filter (520) + : : +- Scan parquet (519) + : +- Sort (532) + : +- Exchange (531) + : +- Project (530) + : +- Filter (529) + : +- Scan parquet (528) + +- HashAggregate (570) + +- Exchange (569) + +- HashAggregate (568) + +- Project (567) + +- SortMergeJoin Inner (566) + :- Sort (560) + : +- Exchange (559) + : +- Project (558) + : +- SortMergeJoin Inner (557) + : :- Sort (551) + : : +- Exchange (550) + : : +- Project (549) + : : +- SortMergeJoin Inner (548) + : : :- Sort (542) + : : : +- Exchange (541) + : : : +- Filter (540) + : : : +- Scan parquet (539) + : : +- Sort (547) + : : +- Exchange (546) + : : +- Project (545) + : : +- Filter (544) + : : +- Scan parquet (543) + : +- Sort (556) + : +- Exchange (555) + : +- Project (554) + : +- Filter (553) + : +- Scan parquet (552) + +- Sort (565) + +- Exchange (564) + +- Project (563) + +- Filter (562) + +- Scan parquet (561) + + +(309) Scan parquet +Output [3]: [ss_sold_time_sk#1, ss_hdemo_sk#2, ss_store_sk#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_hdemo_sk), IsNotNull(ss_sold_time_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [ss_sold_time_sk#1, ss_hdemo_sk#2, ss_store_sk#3] +Arguments: [#1, #2, #3] + +(3) NativeFilter +Input [3]: [#1#1, #2#2, #3#3] +Condition : ((isnotnull(ss_hdemo_sk#2) AND isnotnull(ss_sold_time_sk#1)) AND isnotnull(ss_store_sk#3)) + +(4) NativeShuffleExchange +Input [3]: [#1#1, #2#2, #3#3] +Arguments: hashpartitioning(ss_hdemo_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [3]: [#1#1, #2#2, #3#3] +Arguments: X + +(6) AQEShuffleRead +Input [3]: [#1#1, #2#2, #3#3] +Arguments: coalesced + +(7) InputAdapter +Input [3]: [#1#1, #2#2, #3#3] + +(8) NativeSort +Input [3]: [#1#1, #2#2, #3#3] +Arguments: [ss_hdemo_sk#2 ASC NULLS FIRST], false + +(313) Scan parquet +Output [3]: [hd_demo_sk#4, hd_dep_count#5, hd_vehicle_count#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(Or(And(EqualTo(hd_dep_count,4),LessThanOrEqual(hd_vehicle_count,6)),And(EqualTo(hd_dep_count,2),LessThanOrEqual(hd_vehicle_count,4))),And(EqualTo(hd_dep_count,0),LessThanOrEqual(hd_vehicle_count,2))), IsNotNull(hd_demo_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [3]: [hd_demo_sk#4, hd_dep_count#5, hd_vehicle_count#6] +Arguments: [#4, #5, #6] + +(11) NativeFilter +Input [3]: [#4#4, #5#5, #6#6] +Condition : (((((hd_dep_count#5 = 4) AND (hd_vehicle_count#6 <= 6)) OR ((hd_dep_count#5 = 2) AND (hd_vehicle_count#6 <= 4))) OR ((hd_dep_count#5 = 0) AND (hd_vehicle_count#6 <= 2))) AND isnotnull(hd_demo_sk#4)) + +(12) NativeProject +Output [1]: [hd_demo_sk#4] +Input [3]: [#4#4, #5#5, #6#6] + +(13) NativeShuffleExchange +Input [1]: [hd_demo_sk#4] +Arguments: hashpartitioning(hd_demo_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [1]: [hd_demo_sk#4] +Arguments: X + +(15) AQEShuffleRead +Input [1]: [hd_demo_sk#4] +Arguments: coalesced + +(16) InputAdapter +Input [1]: [hd_demo_sk#4] + +(17) NativeSort +Input [1]: [hd_demo_sk#4] +Arguments: [hd_demo_sk#4 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [ss_hdemo_sk#2] +Right keys [1]: [hd_demo_sk#4] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [2]: [ss_sold_time_sk#1, ss_store_sk#3] +Input [4]: [#1#1, #2#2, #3#3, hd_demo_sk#4] + +(20) NativeShuffleExchange +Input [2]: [ss_sold_time_sk#1, ss_store_sk#3] +Arguments: hashpartitioning(ss_sold_time_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [2]: [ss_sold_time_sk#1, ss_store_sk#3] +Arguments: X + +(22) AQEShuffleRead +Input [2]: [ss_sold_time_sk#1, ss_store_sk#3] +Arguments: coalesced + +(23) InputAdapter +Input [2]: [ss_sold_time_sk#1, ss_store_sk#3] + +(24) NativeSort +Input [2]: [ss_sold_time_sk#1, ss_store_sk#3] +Arguments: [ss_sold_time_sk#1 ASC NULLS FIRST], false + +(322) Scan parquet +Output [3]: [t_time_sk#7, t_hour#8, t_minute#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(t_hour), IsNotNull(t_minute), EqualTo(t_hour,8), GreaterThanOrEqual(t_minute,30), IsNotNull(t_time_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [3]: [t_time_sk#7, t_hour#8, t_minute#9] +Arguments: [#7, #8, #9] + +(27) NativeFilter +Input [3]: [#7#7, #8#8, #9#9] +Condition : ((((isnotnull(t_hour#8) AND isnotnull(t_minute#9)) AND (t_hour#8 = 8)) AND (t_minute#9 >= 30)) AND isnotnull(t_time_sk#7)) + +(28) NativeProject +Output [1]: [t_time_sk#7] +Input [3]: [#7#7, #8#8, #9#9] + +(29) NativeShuffleExchange +Input [1]: [t_time_sk#7] +Arguments: hashpartitioning(t_time_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(30) ShuffleQueryStage +Output [1]: [t_time_sk#7] +Arguments: X + +(31) AQEShuffleRead +Input [1]: [t_time_sk#7] +Arguments: coalesced + +(32) InputAdapter +Input [1]: [t_time_sk#7] + +(33) NativeSort +Input [1]: [t_time_sk#7] +Arguments: [t_time_sk#7 ASC NULLS FIRST], false + +(34) NativeSortMergeJoin +Left keys [1]: [ss_sold_time_sk#1] +Right keys [1]: [t_time_sk#7] +Join type: Inner +Join condition: None + +(35) NativeProject +Output [1]: [ss_store_sk#3] +Input [3]: [ss_sold_time_sk#1, ss_store_sk#3, t_time_sk#7] + +(36) NativeShuffleExchange +Input [1]: [ss_store_sk#3] +Arguments: hashpartitioning(ss_store_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [1]: [ss_store_sk#3] +Arguments: X + +(38) AQEShuffleRead +Input [1]: [ss_store_sk#3] +Arguments: coalesced + +(39) InputAdapter +Input [1]: [ss_store_sk#3] + +(40) NativeSort +Input [1]: [ss_store_sk#3] +Arguments: [ss_store_sk#3 ASC NULLS FIRST], false + +(331) Scan parquet +Output [2]: [s_store_sk#10, s_store_name#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_name), EqualTo(s_store_name,ese), IsNotNull(s_store_sk)] +ReadSchema: struct + +(42) InputAdapter +Input [2]: [s_store_sk#10, s_store_name#11] +Arguments: [#10, #11] + +(43) NativeFilter +Input [2]: [#10#10, #11#11] +Condition : ((isnotnull(s_store_name#11) AND (s_store_name#11 = ese)) AND isnotnull(s_store_sk#10)) + +(44) NativeProject +Output [1]: [s_store_sk#10] +Input [2]: [#10#10, #11#11] + +(45) NativeShuffleExchange +Input [1]: [s_store_sk#10] +Arguments: hashpartitioning(s_store_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(46) ShuffleQueryStage +Output [1]: [s_store_sk#10] +Arguments: X + +(47) AQEShuffleRead +Input [1]: [s_store_sk#10] +Arguments: coalesced + +(48) InputAdapter +Input [1]: [s_store_sk#10] + +(49) NativeSort +Input [1]: [s_store_sk#10] +Arguments: [s_store_sk#10 ASC NULLS FIRST], false + +(50) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#3] +Right keys [1]: [s_store_sk#10] +Join type: Inner +Join condition: None + +(51) NativeProject +Output: [] +Input [2]: [ss_store_sk#3, s_store_sk#10] + +(52) NativeHashAggregate +Input: [] +Keys: [] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#12] +Results [1]: [#13#13] + +(53) NativeShuffleExchange +Input [1]: [#13#13] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=7] + +(54) ShuffleQueryStage +Output [1]: [#13#13] +Arguments: X + +(55) NativeHashAggregate +Input [1]: [#13#13] +Keys: [] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#14] +Results [1]: [count(1)#14] + +(56) NativeProject +Output [1]: [count(1)#14 AS h8_30_to_9#15] +Input [1]: [count(1)#14] + +(57) ReusedExchange [Reuses operator id: 20] +Output [2]: [ss_sold_time_sk#16, ss_store_sk#17] + +(58) ShuffleQueryStage +Output [2]: [ss_sold_time_sk#16, ss_store_sk#17] +Arguments: X + +(59) AQEShuffleRead +Input [2]: [ss_sold_time_sk#16, ss_store_sk#17] +Arguments: coalesced + +(60) InputAdapter +Input [2]: [ss_sold_time_sk#16, ss_store_sk#17] +Arguments: [#16, #17] + +(61) InputAdapter +Input [2]: [#16#16, #17#17] + +(62) NativeSort +Input [2]: [#16#16, #17#17] +Arguments: [ss_sold_time_sk#16 ASC NULLS FIRST], false + +(354) Scan parquet +Output [3]: [t_time_sk#18, t_hour#19, t_minute#20] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(t_hour), IsNotNull(t_minute), EqualTo(t_hour,9), LessThan(t_minute,30), IsNotNull(t_time_sk)] +ReadSchema: struct + +(64) InputAdapter +Input [3]: [t_time_sk#18, t_hour#19, t_minute#20] +Arguments: [#18, #19, #20] + +(65) NativeFilter +Input [3]: [#18#18, #19#19, #20#20] +Condition : ((((isnotnull(t_hour#19) AND isnotnull(t_minute#20)) AND (t_hour#19 = 9)) AND (t_minute#20 < 30)) AND isnotnull(t_time_sk#18)) + +(66) NativeProject +Output [1]: [t_time_sk#18] +Input [3]: [#18#18, #19#19, #20#20] + +(67) NativeShuffleExchange +Input [1]: [t_time_sk#18] +Arguments: hashpartitioning(t_time_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(68) ShuffleQueryStage +Output [1]: [t_time_sk#18] +Arguments: X + +(69) AQEShuffleRead +Input [1]: [t_time_sk#18] +Arguments: coalesced + +(70) InputAdapter +Input [1]: [t_time_sk#18] + +(71) NativeSort +Input [1]: [t_time_sk#18] +Arguments: [t_time_sk#18 ASC NULLS FIRST], false + +(72) NativeSortMergeJoin +Left keys [1]: [ss_sold_time_sk#16] +Right keys [1]: [t_time_sk#18] +Join type: Inner +Join condition: None + +(73) NativeProject +Output [1]: [ss_store_sk#17] +Input [3]: [#16#16, #17#17, t_time_sk#18] + +(74) NativeShuffleExchange +Input [1]: [ss_store_sk#17] +Arguments: hashpartitioning(ss_store_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(75) ShuffleQueryStage +Output [1]: [ss_store_sk#17] +Arguments: X + +(76) AQEShuffleRead +Input [1]: [ss_store_sk#17] +Arguments: coalesced + +(77) InputAdapter +Input [1]: [ss_store_sk#17] + +(78) NativeSort +Input [1]: [ss_store_sk#17] +Arguments: [ss_store_sk#17 ASC NULLS FIRST], false + +(79) ReusedExchange [Reuses operator id: 45] +Output [1]: [s_store_sk#21] + +(80) ShuffleQueryStage +Output [1]: [s_store_sk#21] +Arguments: X + +(81) AQEShuffleRead +Input [1]: [s_store_sk#21] +Arguments: coalesced + +(82) InputAdapter +Input [1]: [s_store_sk#21] +Arguments: [#21] + +(83) InputAdapter +Input [1]: [#21#21] + +(84) NativeSort +Input [1]: [#21#21] +Arguments: [s_store_sk#21 ASC NULLS FIRST], false + +(85) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#17] +Right keys [1]: [s_store_sk#21] +Join type: Inner +Join condition: None + +(86) NativeProject +Output: [] +Input [2]: [ss_store_sk#17, #21#21] + +(87) NativeHashAggregate +Input: [] +Keys: [] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#22] +Results [1]: [#13#13] + +(88) NativeShuffleExchange +Input [1]: [#13#13] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=10] + +(89) ShuffleQueryStage +Output [1]: [#13#13] +Arguments: X + +(90) NativeHashAggregate +Input [1]: [#13#13] +Keys: [] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#23] +Results [1]: [count(1)#23] + +(91) NativeProject +Output [1]: [count(1)#23 AS h9_to_9_30#24] +Input [1]: [count(1)#23] + +(92) CartesianProduct +Join type: Inner +Join condition: None + +(93) ReusedExchange [Reuses operator id: 20] +Output [2]: [ss_sold_time_sk#25, ss_store_sk#26] + +(94) ShuffleQueryStage +Output [2]: [ss_sold_time_sk#25, ss_store_sk#26] +Arguments: X + +(95) AQEShuffleRead +Input [2]: [ss_sold_time_sk#25, ss_store_sk#26] +Arguments: coalesced + +(96) InputAdapter +Input [2]: [ss_sold_time_sk#25, ss_store_sk#26] +Arguments: [#25, #26] + +(97) InputAdapter +Input [2]: [#25#25, #26#26] + +(98) NativeSort +Input [2]: [#25#25, #26#26] +Arguments: [ss_sold_time_sk#25 ASC NULLS FIRST], false + +(387) Scan parquet +Output [3]: [t_time_sk#27, t_hour#28, t_minute#29] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(t_hour), IsNotNull(t_minute), EqualTo(t_hour,9), GreaterThanOrEqual(t_minute,30), IsNotNull(t_time_sk)] +ReadSchema: struct + +(100) InputAdapter +Input [3]: [t_time_sk#27, t_hour#28, t_minute#29] +Arguments: [#27, #28, #29] + +(101) NativeFilter +Input [3]: [#27#27, #28#28, #29#29] +Condition : ((((isnotnull(t_hour#28) AND isnotnull(t_minute#29)) AND (t_hour#28 = 9)) AND (t_minute#29 >= 30)) AND isnotnull(t_time_sk#27)) + +(102) NativeProject +Output [1]: [t_time_sk#27] +Input [3]: [#27#27, #28#28, #29#29] + +(103) NativeShuffleExchange +Input [1]: [t_time_sk#27] +Arguments: hashpartitioning(t_time_sk#27, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(104) ShuffleQueryStage +Output [1]: [t_time_sk#27] +Arguments: X + +(105) AQEShuffleRead +Input [1]: [t_time_sk#27] +Arguments: coalesced + +(106) InputAdapter +Input [1]: [t_time_sk#27] + +(107) NativeSort +Input [1]: [t_time_sk#27] +Arguments: [t_time_sk#27 ASC NULLS FIRST], false + +(108) NativeSortMergeJoin +Left keys [1]: [ss_sold_time_sk#25] +Right keys [1]: [t_time_sk#27] +Join type: Inner +Join condition: None + +(109) NativeProject +Output [1]: [ss_store_sk#26] +Input [3]: [#25#25, #26#26, t_time_sk#27] + +(110) NativeShuffleExchange +Input [1]: [ss_store_sk#26] +Arguments: hashpartitioning(ss_store_sk#26, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(111) ShuffleQueryStage +Output [1]: [ss_store_sk#26] +Arguments: X + +(112) AQEShuffleRead +Input [1]: [ss_store_sk#26] +Arguments: coalesced + +(113) InputAdapter +Input [1]: [ss_store_sk#26] + +(114) NativeSort +Input [1]: [ss_store_sk#26] +Arguments: [ss_store_sk#26 ASC NULLS FIRST], false + +(115) ReusedExchange [Reuses operator id: 45] +Output [1]: [s_store_sk#30] + +(116) ShuffleQueryStage +Output [1]: [s_store_sk#30] +Arguments: X + +(117) AQEShuffleRead +Input [1]: [s_store_sk#30] +Arguments: coalesced + +(118) InputAdapter +Input [1]: [s_store_sk#30] +Arguments: [#30] + +(119) InputAdapter +Input [1]: [#30#30] + +(120) NativeSort +Input [1]: [#30#30] +Arguments: [s_store_sk#30 ASC NULLS FIRST], false + +(121) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#26] +Right keys [1]: [s_store_sk#30] +Join type: Inner +Join condition: None + +(122) NativeProject +Output: [] +Input [2]: [ss_store_sk#26, #30#30] + +(123) NativeHashAggregate +Input: [] +Keys: [] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#31] +Results [1]: [#13#13] + +(124) NativeShuffleExchange +Input [1]: [#13#13] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=13] + +(125) ShuffleQueryStage +Output [1]: [#13#13] +Arguments: X + +(126) NativeHashAggregate +Input [1]: [#13#13] +Keys: [] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#32] +Results [1]: [count(1)#32] + +(127) NativeProject +Output [1]: [count(1)#32 AS h9_30_to_10#33] +Input [1]: [count(1)#32] + +(128) CartesianProduct +Join type: Inner +Join condition: None + +(129) ReusedExchange [Reuses operator id: 20] +Output [2]: [ss_sold_time_sk#34, ss_store_sk#35] + +(130) ShuffleQueryStage +Output [2]: [ss_sold_time_sk#34, ss_store_sk#35] +Arguments: X + +(131) AQEShuffleRead +Input [2]: [ss_sold_time_sk#34, ss_store_sk#35] +Arguments: coalesced + +(132) InputAdapter +Input [2]: [ss_sold_time_sk#34, ss_store_sk#35] +Arguments: [#34, #35] + +(133) InputAdapter +Input [2]: [#34#34, #35#35] + +(134) NativeSort +Input [2]: [#34#34, #35#35] +Arguments: [ss_sold_time_sk#34 ASC NULLS FIRST], false + +(420) Scan parquet +Output [3]: [t_time_sk#36, t_hour#37, t_minute#38] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(t_hour), IsNotNull(t_minute), EqualTo(t_hour,10), LessThan(t_minute,30), IsNotNull(t_time_sk)] +ReadSchema: struct + +(136) InputAdapter +Input [3]: [t_time_sk#36, t_hour#37, t_minute#38] +Arguments: [#36, #37, #38] + +(137) NativeFilter +Input [3]: [#36#36, #37#37, #38#38] +Condition : ((((isnotnull(t_hour#37) AND isnotnull(t_minute#38)) AND (t_hour#37 = 10)) AND (t_minute#38 < 30)) AND isnotnull(t_time_sk#36)) + +(138) NativeProject +Output [1]: [t_time_sk#36] +Input [3]: [#36#36, #37#37, #38#38] + +(139) NativeShuffleExchange +Input [1]: [t_time_sk#36] +Arguments: hashpartitioning(t_time_sk#36, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(140) ShuffleQueryStage +Output [1]: [t_time_sk#36] +Arguments: X + +(141) AQEShuffleRead +Input [1]: [t_time_sk#36] +Arguments: coalesced + +(142) InputAdapter +Input [1]: [t_time_sk#36] + +(143) NativeSort +Input [1]: [t_time_sk#36] +Arguments: [t_time_sk#36 ASC NULLS FIRST], false + +(144) NativeSortMergeJoin +Left keys [1]: [ss_sold_time_sk#34] +Right keys [1]: [t_time_sk#36] +Join type: Inner +Join condition: None + +(145) NativeProject +Output [1]: [ss_store_sk#35] +Input [3]: [#34#34, #35#35, t_time_sk#36] + +(146) NativeShuffleExchange +Input [1]: [ss_store_sk#35] +Arguments: hashpartitioning(ss_store_sk#35, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(147) ShuffleQueryStage +Output [1]: [ss_store_sk#35] +Arguments: X + +(148) AQEShuffleRead +Input [1]: [ss_store_sk#35] +Arguments: coalesced + +(149) InputAdapter +Input [1]: [ss_store_sk#35] + +(150) NativeSort +Input [1]: [ss_store_sk#35] +Arguments: [ss_store_sk#35 ASC NULLS FIRST], false + +(151) ReusedExchange [Reuses operator id: 45] +Output [1]: [s_store_sk#39] + +(152) ShuffleQueryStage +Output [1]: [s_store_sk#39] +Arguments: X + +(153) AQEShuffleRead +Input [1]: [s_store_sk#39] +Arguments: coalesced + +(154) InputAdapter +Input [1]: [s_store_sk#39] +Arguments: [#39] + +(155) InputAdapter +Input [1]: [#39#39] + +(156) NativeSort +Input [1]: [#39#39] +Arguments: [s_store_sk#39 ASC NULLS FIRST], false + +(157) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#35] +Right keys [1]: [s_store_sk#39] +Join type: Inner +Join condition: None + +(158) NativeProject +Output: [] +Input [2]: [ss_store_sk#35, #39#39] + +(159) NativeHashAggregate +Input: [] +Keys: [] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#40] +Results [1]: [#13#13] + +(160) NativeShuffleExchange +Input [1]: [#13#13] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=16] + +(161) ShuffleQueryStage +Output [1]: [#13#13] +Arguments: X + +(162) NativeHashAggregate +Input [1]: [#13#13] +Keys: [] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#41] +Results [1]: [count(1)#41] + +(163) NativeProject +Output [1]: [count(1)#41 AS h10_to_10_30#42] +Input [1]: [count(1)#41] + +(164) CartesianProduct +Join type: Inner +Join condition: None + +(165) ReusedExchange [Reuses operator id: 20] +Output [2]: [ss_sold_time_sk#43, ss_store_sk#44] + +(166) ShuffleQueryStage +Output [2]: [ss_sold_time_sk#43, ss_store_sk#44] +Arguments: X + +(167) AQEShuffleRead +Input [2]: [ss_sold_time_sk#43, ss_store_sk#44] +Arguments: coalesced + +(168) InputAdapter +Input [2]: [ss_sold_time_sk#43, ss_store_sk#44] +Arguments: [#43, #44] + +(169) InputAdapter +Input [2]: [#43#43, #44#44] + +(170) NativeSort +Input [2]: [#43#43, #44#44] +Arguments: [ss_sold_time_sk#43 ASC NULLS FIRST], false + +(453) Scan parquet +Output [3]: [t_time_sk#45, t_hour#46, t_minute#47] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(t_hour), IsNotNull(t_minute), EqualTo(t_hour,10), GreaterThanOrEqual(t_minute,30), IsNotNull(t_time_sk)] +ReadSchema: struct + +(172) InputAdapter +Input [3]: [t_time_sk#45, t_hour#46, t_minute#47] +Arguments: [#45, #46, #47] + +(173) NativeFilter +Input [3]: [#45#45, #46#46, #47#47] +Condition : ((((isnotnull(t_hour#46) AND isnotnull(t_minute#47)) AND (t_hour#46 = 10)) AND (t_minute#47 >= 30)) AND isnotnull(t_time_sk#45)) + +(174) NativeProject +Output [1]: [t_time_sk#45] +Input [3]: [#45#45, #46#46, #47#47] + +(175) NativeShuffleExchange +Input [1]: [t_time_sk#45] +Arguments: hashpartitioning(t_time_sk#45, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(176) ShuffleQueryStage +Output [1]: [t_time_sk#45] +Arguments: X + +(177) AQEShuffleRead +Input [1]: [t_time_sk#45] +Arguments: coalesced + +(178) InputAdapter +Input [1]: [t_time_sk#45] + +(179) NativeSort +Input [1]: [t_time_sk#45] +Arguments: [t_time_sk#45 ASC NULLS FIRST], false + +(180) NativeSortMergeJoin +Left keys [1]: [ss_sold_time_sk#43] +Right keys [1]: [t_time_sk#45] +Join type: Inner +Join condition: None + +(181) NativeProject +Output [1]: [ss_store_sk#44] +Input [3]: [#43#43, #44#44, t_time_sk#45] + +(182) NativeShuffleExchange +Input [1]: [ss_store_sk#44] +Arguments: hashpartitioning(ss_store_sk#44, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(183) ShuffleQueryStage +Output [1]: [ss_store_sk#44] +Arguments: X + +(184) AQEShuffleRead +Input [1]: [ss_store_sk#44] +Arguments: coalesced + +(185) InputAdapter +Input [1]: [ss_store_sk#44] + +(186) NativeSort +Input [1]: [ss_store_sk#44] +Arguments: [ss_store_sk#44 ASC NULLS FIRST], false + +(187) ReusedExchange [Reuses operator id: 45] +Output [1]: [s_store_sk#48] + +(188) ShuffleQueryStage +Output [1]: [s_store_sk#48] +Arguments: X + +(189) AQEShuffleRead +Input [1]: [s_store_sk#48] +Arguments: coalesced + +(190) InputAdapter +Input [1]: [s_store_sk#48] +Arguments: [#48] + +(191) InputAdapter +Input [1]: [#48#48] + +(192) NativeSort +Input [1]: [#48#48] +Arguments: [s_store_sk#48 ASC NULLS FIRST], false + +(193) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#44] +Right keys [1]: [s_store_sk#48] +Join type: Inner +Join condition: None + +(194) NativeProject +Output: [] +Input [2]: [ss_store_sk#44, #48#48] + +(195) NativeHashAggregate +Input: [] +Keys: [] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#49] +Results [1]: [#13#13] + +(196) NativeShuffleExchange +Input [1]: [#13#13] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=19] + +(197) ShuffleQueryStage +Output [1]: [#13#13] +Arguments: X + +(198) NativeHashAggregate +Input [1]: [#13#13] +Keys: [] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#50] +Results [1]: [count(1)#50] + +(199) NativeProject +Output [1]: [count(1)#50 AS h10_30_to_11#51] +Input [1]: [count(1)#50] + +(200) CartesianProduct +Join type: Inner +Join condition: None + +(201) ReusedExchange [Reuses operator id: 20] +Output [2]: [ss_sold_time_sk#52, ss_store_sk#53] + +(202) ShuffleQueryStage +Output [2]: [ss_sold_time_sk#52, ss_store_sk#53] +Arguments: X + +(203) AQEShuffleRead +Input [2]: [ss_sold_time_sk#52, ss_store_sk#53] +Arguments: coalesced + +(204) InputAdapter +Input [2]: [ss_sold_time_sk#52, ss_store_sk#53] +Arguments: [#52, #53] + +(205) InputAdapter +Input [2]: [#52#52, #53#53] + +(206) NativeSort +Input [2]: [#52#52, #53#53] +Arguments: [ss_sold_time_sk#52 ASC NULLS FIRST], false + +(486) Scan parquet +Output [3]: [t_time_sk#54, t_hour#55, t_minute#56] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(t_hour), IsNotNull(t_minute), EqualTo(t_hour,11), LessThan(t_minute,30), IsNotNull(t_time_sk)] +ReadSchema: struct + +(208) InputAdapter +Input [3]: [t_time_sk#54, t_hour#55, t_minute#56] +Arguments: [#54, #55, #56] + +(209) NativeFilter +Input [3]: [#54#54, #55#55, #56#56] +Condition : ((((isnotnull(t_hour#55) AND isnotnull(t_minute#56)) AND (t_hour#55 = 11)) AND (t_minute#56 < 30)) AND isnotnull(t_time_sk#54)) + +(210) NativeProject +Output [1]: [t_time_sk#54] +Input [3]: [#54#54, #55#55, #56#56] + +(211) NativeShuffleExchange +Input [1]: [t_time_sk#54] +Arguments: hashpartitioning(t_time_sk#54, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(212) ShuffleQueryStage +Output [1]: [t_time_sk#54] +Arguments: X + +(213) AQEShuffleRead +Input [1]: [t_time_sk#54] +Arguments: coalesced + +(214) InputAdapter +Input [1]: [t_time_sk#54] + +(215) NativeSort +Input [1]: [t_time_sk#54] +Arguments: [t_time_sk#54 ASC NULLS FIRST], false + +(216) NativeSortMergeJoin +Left keys [1]: [ss_sold_time_sk#52] +Right keys [1]: [t_time_sk#54] +Join type: Inner +Join condition: None + +(217) NativeProject +Output [1]: [ss_store_sk#53] +Input [3]: [#52#52, #53#53, t_time_sk#54] + +(218) NativeShuffleExchange +Input [1]: [ss_store_sk#53] +Arguments: hashpartitioning(ss_store_sk#53, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(219) ShuffleQueryStage +Output [1]: [ss_store_sk#53] +Arguments: X + +(220) AQEShuffleRead +Input [1]: [ss_store_sk#53] +Arguments: coalesced + +(221) InputAdapter +Input [1]: [ss_store_sk#53] + +(222) NativeSort +Input [1]: [ss_store_sk#53] +Arguments: [ss_store_sk#53 ASC NULLS FIRST], false + +(223) ReusedExchange [Reuses operator id: 45] +Output [1]: [s_store_sk#57] + +(224) ShuffleQueryStage +Output [1]: [s_store_sk#57] +Arguments: X + +(225) AQEShuffleRead +Input [1]: [s_store_sk#57] +Arguments: coalesced + +(226) InputAdapter +Input [1]: [s_store_sk#57] +Arguments: [#57] + +(227) InputAdapter +Input [1]: [#57#57] + +(228) NativeSort +Input [1]: [#57#57] +Arguments: [s_store_sk#57 ASC NULLS FIRST], false + +(229) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#53] +Right keys [1]: [s_store_sk#57] +Join type: Inner +Join condition: None + +(230) NativeProject +Output: [] +Input [2]: [ss_store_sk#53, #57#57] + +(231) NativeHashAggregate +Input: [] +Keys: [] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#58] +Results [1]: [#13#13] + +(232) NativeShuffleExchange +Input [1]: [#13#13] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=22] + +(233) ShuffleQueryStage +Output [1]: [#13#13] +Arguments: X + +(234) NativeHashAggregate +Input [1]: [#13#13] +Keys: [] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#59] +Results [1]: [count(1)#59] + +(235) NativeProject +Output [1]: [count(1)#59 AS h11_to_11_30#60] +Input [1]: [count(1)#59] + +(236) CartesianProduct +Join type: Inner +Join condition: None + +(237) ReusedExchange [Reuses operator id: 20] +Output [2]: [ss_sold_time_sk#61, ss_store_sk#62] + +(238) ShuffleQueryStage +Output [2]: [ss_sold_time_sk#61, ss_store_sk#62] +Arguments: X + +(239) AQEShuffleRead +Input [2]: [ss_sold_time_sk#61, ss_store_sk#62] +Arguments: coalesced + +(240) InputAdapter +Input [2]: [ss_sold_time_sk#61, ss_store_sk#62] +Arguments: [#61, #62] + +(241) InputAdapter +Input [2]: [#61#61, #62#62] + +(242) NativeSort +Input [2]: [#61#61, #62#62] +Arguments: [ss_sold_time_sk#61 ASC NULLS FIRST], false + +(519) Scan parquet +Output [3]: [t_time_sk#63, t_hour#64, t_minute#65] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(t_hour), IsNotNull(t_minute), EqualTo(t_hour,11), GreaterThanOrEqual(t_minute,30), IsNotNull(t_time_sk)] +ReadSchema: struct + +(244) InputAdapter +Input [3]: [t_time_sk#63, t_hour#64, t_minute#65] +Arguments: [#63, #64, #65] + +(245) NativeFilter +Input [3]: [#63#63, #64#64, #65#65] +Condition : ((((isnotnull(t_hour#64) AND isnotnull(t_minute#65)) AND (t_hour#64 = 11)) AND (t_minute#65 >= 30)) AND isnotnull(t_time_sk#63)) + +(246) NativeProject +Output [1]: [t_time_sk#63] +Input [3]: [#63#63, #64#64, #65#65] + +(247) NativeShuffleExchange +Input [1]: [t_time_sk#63] +Arguments: hashpartitioning(t_time_sk#63, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(248) ShuffleQueryStage +Output [1]: [t_time_sk#63] +Arguments: X + +(249) AQEShuffleRead +Input [1]: [t_time_sk#63] +Arguments: coalesced + +(250) InputAdapter +Input [1]: [t_time_sk#63] + +(251) NativeSort +Input [1]: [t_time_sk#63] +Arguments: [t_time_sk#63 ASC NULLS FIRST], false + +(252) NativeSortMergeJoin +Left keys [1]: [ss_sold_time_sk#61] +Right keys [1]: [t_time_sk#63] +Join type: Inner +Join condition: None + +(253) NativeProject +Output [1]: [ss_store_sk#62] +Input [3]: [#61#61, #62#62, t_time_sk#63] + +(254) NativeShuffleExchange +Input [1]: [ss_store_sk#62] +Arguments: hashpartitioning(ss_store_sk#62, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(255) ShuffleQueryStage +Output [1]: [ss_store_sk#62] +Arguments: X + +(256) AQEShuffleRead +Input [1]: [ss_store_sk#62] +Arguments: coalesced + +(257) InputAdapter +Input [1]: [ss_store_sk#62] + +(258) NativeSort +Input [1]: [ss_store_sk#62] +Arguments: [ss_store_sk#62 ASC NULLS FIRST], false + +(259) ReusedExchange [Reuses operator id: 45] +Output [1]: [s_store_sk#66] + +(260) ShuffleQueryStage +Output [1]: [s_store_sk#66] +Arguments: X + +(261) AQEShuffleRead +Input [1]: [s_store_sk#66] +Arguments: coalesced + +(262) InputAdapter +Input [1]: [s_store_sk#66] +Arguments: [#66] + +(263) InputAdapter +Input [1]: [#66#66] + +(264) NativeSort +Input [1]: [#66#66] +Arguments: [s_store_sk#66 ASC NULLS FIRST], false + +(265) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#62] +Right keys [1]: [s_store_sk#66] +Join type: Inner +Join condition: None + +(266) NativeProject +Output: [] +Input [2]: [ss_store_sk#62, #66#66] + +(267) NativeHashAggregate +Input: [] +Keys: [] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#67] +Results [1]: [#13#13] + +(268) NativeShuffleExchange +Input [1]: [#13#13] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=25] + +(269) ShuffleQueryStage +Output [1]: [#13#13] +Arguments: X + +(270) NativeHashAggregate +Input [1]: [#13#13] +Keys: [] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#68] +Results [1]: [count(1)#68] + +(271) NativeProject +Output [1]: [count(1)#68 AS h11_30_to_12#69] +Input [1]: [count(1)#68] + +(272) CartesianProduct +Join type: Inner +Join condition: None + +(273) ReusedExchange [Reuses operator id: 20] +Output [2]: [ss_sold_time_sk#70, ss_store_sk#71] + +(274) ShuffleQueryStage +Output [2]: [ss_sold_time_sk#70, ss_store_sk#71] +Arguments: X + +(275) AQEShuffleRead +Input [2]: [ss_sold_time_sk#70, ss_store_sk#71] +Arguments: coalesced + +(276) InputAdapter +Input [2]: [ss_sold_time_sk#70, ss_store_sk#71] +Arguments: [#70, #71] + +(277) InputAdapter +Input [2]: [#70#70, #71#71] + +(278) NativeSort +Input [2]: [#70#70, #71#71] +Arguments: [ss_sold_time_sk#70 ASC NULLS FIRST], false + +(552) Scan parquet +Output [3]: [t_time_sk#72, t_hour#73, t_minute#74] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(t_hour), IsNotNull(t_minute), EqualTo(t_hour,12), LessThan(t_minute,30), IsNotNull(t_time_sk)] +ReadSchema: struct + +(280) InputAdapter +Input [3]: [t_time_sk#72, t_hour#73, t_minute#74] +Arguments: [#72, #73, #74] + +(281) NativeFilter +Input [3]: [#72#72, #73#73, #74#74] +Condition : ((((isnotnull(t_hour#73) AND isnotnull(t_minute#74)) AND (t_hour#73 = 12)) AND (t_minute#74 < 30)) AND isnotnull(t_time_sk#72)) + +(282) NativeProject +Output [1]: [t_time_sk#72] +Input [3]: [#72#72, #73#73, #74#74] + +(283) NativeShuffleExchange +Input [1]: [t_time_sk#72] +Arguments: hashpartitioning(t_time_sk#72, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(284) ShuffleQueryStage +Output [1]: [t_time_sk#72] +Arguments: X + +(285) AQEShuffleRead +Input [1]: [t_time_sk#72] +Arguments: coalesced + +(286) InputAdapter +Input [1]: [t_time_sk#72] + +(287) NativeSort +Input [1]: [t_time_sk#72] +Arguments: [t_time_sk#72 ASC NULLS FIRST], false + +(288) NativeSortMergeJoin +Left keys [1]: [ss_sold_time_sk#70] +Right keys [1]: [t_time_sk#72] +Join type: Inner +Join condition: None + +(289) NativeProject +Output [1]: [ss_store_sk#71] +Input [3]: [#70#70, #71#71, t_time_sk#72] + +(290) NativeShuffleExchange +Input [1]: [ss_store_sk#71] +Arguments: hashpartitioning(ss_store_sk#71, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(291) ShuffleQueryStage +Output [1]: [ss_store_sk#71] +Arguments: X + +(292) AQEShuffleRead +Input [1]: [ss_store_sk#71] +Arguments: coalesced + +(293) InputAdapter +Input [1]: [ss_store_sk#71] + +(294) NativeSort +Input [1]: [ss_store_sk#71] +Arguments: [ss_store_sk#71 ASC NULLS FIRST], false + +(295) ReusedExchange [Reuses operator id: 45] +Output [1]: [s_store_sk#75] + +(296) ShuffleQueryStage +Output [1]: [s_store_sk#75] +Arguments: X + +(297) AQEShuffleRead +Input [1]: [s_store_sk#75] +Arguments: coalesced + +(298) InputAdapter +Input [1]: [s_store_sk#75] +Arguments: [#75] + +(299) InputAdapter +Input [1]: [#75#75] + +(300) NativeSort +Input [1]: [#75#75] +Arguments: [s_store_sk#75 ASC NULLS FIRST], false + +(301) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#71] +Right keys [1]: [s_store_sk#75] +Join type: Inner +Join condition: None + +(302) NativeProject +Output: [] +Input [2]: [ss_store_sk#71, #75#75] + +(303) NativeHashAggregate +Input: [] +Keys: [] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#76] +Results [1]: [#13#13] + +(304) NativeShuffleExchange +Input [1]: [#13#13] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=28] + +(305) ShuffleQueryStage +Output [1]: [#13#13] +Arguments: X + +(306) NativeHashAggregate +Input [1]: [#13#13] +Keys: [] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#77] +Results [1]: [count(1)#77] + +(307) NativeProject +Output [1]: [count(1)#77 AS h12_to_12_30#78] +Input [1]: [count(1)#77] + +(308) CartesianProduct +Join type: Inner +Join condition: None + +(309) Scan parquet +Output [3]: [ss_sold_time_sk#1, ss_hdemo_sk#2, ss_store_sk#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_hdemo_sk), IsNotNull(ss_sold_time_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(310) Filter +Input [3]: [ss_sold_time_sk#1, ss_hdemo_sk#2, ss_store_sk#3] +Condition : ((isnotnull(ss_hdemo_sk#2) AND isnotnull(ss_sold_time_sk#1)) AND isnotnull(ss_store_sk#3)) + +(311) Exchange +Input [3]: [ss_sold_time_sk#1, ss_hdemo_sk#2, ss_store_sk#3] +Arguments: hashpartitioning(ss_hdemo_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=29] + +(312) Sort +Input [3]: [ss_sold_time_sk#1, ss_hdemo_sk#2, ss_store_sk#3] +Arguments: [ss_hdemo_sk#2 ASC NULLS FIRST], false, 0 + +(313) Scan parquet +Output [3]: [hd_demo_sk#4, hd_dep_count#5, hd_vehicle_count#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(Or(And(EqualTo(hd_dep_count,4),LessThanOrEqual(hd_vehicle_count,6)),And(EqualTo(hd_dep_count,2),LessThanOrEqual(hd_vehicle_count,4))),And(EqualTo(hd_dep_count,0),LessThanOrEqual(hd_vehicle_count,2))), IsNotNull(hd_demo_sk)] +ReadSchema: struct + +(314) Filter +Input [3]: [hd_demo_sk#4, hd_dep_count#5, hd_vehicle_count#6] +Condition : (((((hd_dep_count#5 = 4) AND (hd_vehicle_count#6 <= 6)) OR ((hd_dep_count#5 = 2) AND (hd_vehicle_count#6 <= 4))) OR ((hd_dep_count#5 = 0) AND (hd_vehicle_count#6 <= 2))) AND isnotnull(hd_demo_sk#4)) + +(315) Project +Output [1]: [hd_demo_sk#4] +Input [3]: [hd_demo_sk#4, hd_dep_count#5, hd_vehicle_count#6] + +(316) Exchange +Input [1]: [hd_demo_sk#4] +Arguments: hashpartitioning(hd_demo_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=30] + +(317) Sort +Input [1]: [hd_demo_sk#4] +Arguments: [hd_demo_sk#4 ASC NULLS FIRST], false, 0 + +(318) SortMergeJoin +Left keys [1]: [ss_hdemo_sk#2] +Right keys [1]: [hd_demo_sk#4] +Join type: Inner +Join condition: None + +(319) Project +Output [2]: [ss_sold_time_sk#1, ss_store_sk#3] +Input [4]: [ss_sold_time_sk#1, ss_hdemo_sk#2, ss_store_sk#3, hd_demo_sk#4] + +(320) Exchange +Input [2]: [ss_sold_time_sk#1, ss_store_sk#3] +Arguments: hashpartitioning(ss_sold_time_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=31] + +(321) Sort +Input [2]: [ss_sold_time_sk#1, ss_store_sk#3] +Arguments: [ss_sold_time_sk#1 ASC NULLS FIRST], false, 0 + +(322) Scan parquet +Output [3]: [t_time_sk#7, t_hour#8, t_minute#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(t_hour), IsNotNull(t_minute), EqualTo(t_hour,8), GreaterThanOrEqual(t_minute,30), IsNotNull(t_time_sk)] +ReadSchema: struct + +(323) Filter +Input [3]: [t_time_sk#7, t_hour#8, t_minute#9] +Condition : ((((isnotnull(t_hour#8) AND isnotnull(t_minute#9)) AND (t_hour#8 = 8)) AND (t_minute#9 >= 30)) AND isnotnull(t_time_sk#7)) + +(324) Project +Output [1]: [t_time_sk#7] +Input [3]: [t_time_sk#7, t_hour#8, t_minute#9] + +(325) Exchange +Input [1]: [t_time_sk#7] +Arguments: hashpartitioning(t_time_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=32] + +(326) Sort +Input [1]: [t_time_sk#7] +Arguments: [t_time_sk#7 ASC NULLS FIRST], false, 0 + +(327) SortMergeJoin +Left keys [1]: [ss_sold_time_sk#1] +Right keys [1]: [t_time_sk#7] +Join type: Inner +Join condition: None + +(328) Project +Output [1]: [ss_store_sk#3] +Input [3]: [ss_sold_time_sk#1, ss_store_sk#3, t_time_sk#7] + +(329) Exchange +Input [1]: [ss_store_sk#3] +Arguments: hashpartitioning(ss_store_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=33] + +(330) Sort +Input [1]: [ss_store_sk#3] +Arguments: [ss_store_sk#3 ASC NULLS FIRST], false, 0 + +(331) Scan parquet +Output [2]: [s_store_sk#10, s_store_name#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_name), EqualTo(s_store_name,ese), IsNotNull(s_store_sk)] +ReadSchema: struct + +(332) Filter +Input [2]: [s_store_sk#10, s_store_name#11] +Condition : ((isnotnull(s_store_name#11) AND (s_store_name#11 = ese)) AND isnotnull(s_store_sk#10)) + +(333) Project +Output [1]: [s_store_sk#10] +Input [2]: [s_store_sk#10, s_store_name#11] + +(334) Exchange +Input [1]: [s_store_sk#10] +Arguments: hashpartitioning(s_store_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=34] + +(335) Sort +Input [1]: [s_store_sk#10] +Arguments: [s_store_sk#10 ASC NULLS FIRST], false, 0 + +(336) SortMergeJoin +Left keys [1]: [ss_store_sk#3] +Right keys [1]: [s_store_sk#10] +Join type: Inner +Join condition: None + +(337) Project +Output: [] +Input [2]: [ss_store_sk#3, s_store_sk#10] + +(338) HashAggregate +Input: [] +Keys: [] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#12] +Results [1]: [count#79] + +(339) Exchange +Input [1]: [count#79] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=35] + +(340) HashAggregate +Input [1]: [count#79] +Keys: [] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#14] +Results [1]: [count(1)#14 AS h8_30_to_9#15] + +(341) Scan parquet +Output [3]: [ss_sold_time_sk#16, ss_hdemo_sk#80, ss_store_sk#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_hdemo_sk), IsNotNull(ss_sold_time_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(342) Filter +Input [3]: [ss_sold_time_sk#16, ss_hdemo_sk#80, ss_store_sk#17] +Condition : ((isnotnull(ss_hdemo_sk#80) AND isnotnull(ss_sold_time_sk#16)) AND isnotnull(ss_store_sk#17)) + +(343) Exchange +Input [3]: [ss_sold_time_sk#16, ss_hdemo_sk#80, ss_store_sk#17] +Arguments: hashpartitioning(ss_hdemo_sk#80, 100), ENSURE_REQUIREMENTS, [plan_id=36] + +(344) Sort +Input [3]: [ss_sold_time_sk#16, ss_hdemo_sk#80, ss_store_sk#17] +Arguments: [ss_hdemo_sk#80 ASC NULLS FIRST], false, 0 + +(345) Scan parquet +Output [3]: [hd_demo_sk#81, hd_dep_count#82, hd_vehicle_count#83] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(Or(And(EqualTo(hd_dep_count,4),LessThanOrEqual(hd_vehicle_count,6)),And(EqualTo(hd_dep_count,2),LessThanOrEqual(hd_vehicle_count,4))),And(EqualTo(hd_dep_count,0),LessThanOrEqual(hd_vehicle_count,2))), IsNotNull(hd_demo_sk)] +ReadSchema: struct + +(346) Filter +Input [3]: [hd_demo_sk#81, hd_dep_count#82, hd_vehicle_count#83] +Condition : (((((hd_dep_count#82 = 4) AND (hd_vehicle_count#83 <= 6)) OR ((hd_dep_count#82 = 2) AND (hd_vehicle_count#83 <= 4))) OR ((hd_dep_count#82 = 0) AND (hd_vehicle_count#83 <= 2))) AND isnotnull(hd_demo_sk#81)) + +(347) Project +Output [1]: [hd_demo_sk#81] +Input [3]: [hd_demo_sk#81, hd_dep_count#82, hd_vehicle_count#83] + +(348) Exchange +Input [1]: [hd_demo_sk#81] +Arguments: hashpartitioning(hd_demo_sk#81, 100), ENSURE_REQUIREMENTS, [plan_id=37] + +(349) Sort +Input [1]: [hd_demo_sk#81] +Arguments: [hd_demo_sk#81 ASC NULLS FIRST], false, 0 + +(350) SortMergeJoin +Left keys [1]: [ss_hdemo_sk#80] +Right keys [1]: [hd_demo_sk#81] +Join type: Inner +Join condition: None + +(351) Project +Output [2]: [ss_sold_time_sk#16, ss_store_sk#17] +Input [4]: [ss_sold_time_sk#16, ss_hdemo_sk#80, ss_store_sk#17, hd_demo_sk#81] + +(352) Exchange +Input [2]: [ss_sold_time_sk#16, ss_store_sk#17] +Arguments: hashpartitioning(ss_sold_time_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=38] + +(353) Sort +Input [2]: [ss_sold_time_sk#16, ss_store_sk#17] +Arguments: [ss_sold_time_sk#16 ASC NULLS FIRST], false, 0 + +(354) Scan parquet +Output [3]: [t_time_sk#18, t_hour#19, t_minute#20] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(t_hour), IsNotNull(t_minute), EqualTo(t_hour,9), LessThan(t_minute,30), IsNotNull(t_time_sk)] +ReadSchema: struct + +(355) Filter +Input [3]: [t_time_sk#18, t_hour#19, t_minute#20] +Condition : ((((isnotnull(t_hour#19) AND isnotnull(t_minute#20)) AND (t_hour#19 = 9)) AND (t_minute#20 < 30)) AND isnotnull(t_time_sk#18)) + +(356) Project +Output [1]: [t_time_sk#18] +Input [3]: [t_time_sk#18, t_hour#19, t_minute#20] + +(357) Exchange +Input [1]: [t_time_sk#18] +Arguments: hashpartitioning(t_time_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=39] + +(358) Sort +Input [1]: [t_time_sk#18] +Arguments: [t_time_sk#18 ASC NULLS FIRST], false, 0 + +(359) SortMergeJoin +Left keys [1]: [ss_sold_time_sk#16] +Right keys [1]: [t_time_sk#18] +Join type: Inner +Join condition: None + +(360) Project +Output [1]: [ss_store_sk#17] +Input [3]: [ss_sold_time_sk#16, ss_store_sk#17, t_time_sk#18] + +(361) Exchange +Input [1]: [ss_store_sk#17] +Arguments: hashpartitioning(ss_store_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=40] + +(362) Sort +Input [1]: [ss_store_sk#17] +Arguments: [ss_store_sk#17 ASC NULLS FIRST], false, 0 + +(363) Scan parquet +Output [2]: [s_store_sk#21, s_store_name#84] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_name), EqualTo(s_store_name,ese), IsNotNull(s_store_sk)] +ReadSchema: struct + +(364) Filter +Input [2]: [s_store_sk#21, s_store_name#84] +Condition : ((isnotnull(s_store_name#84) AND (s_store_name#84 = ese)) AND isnotnull(s_store_sk#21)) + +(365) Project +Output [1]: [s_store_sk#21] +Input [2]: [s_store_sk#21, s_store_name#84] + +(366) Exchange +Input [1]: [s_store_sk#21] +Arguments: hashpartitioning(s_store_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=41] + +(367) Sort +Input [1]: [s_store_sk#21] +Arguments: [s_store_sk#21 ASC NULLS FIRST], false, 0 + +(368) SortMergeJoin +Left keys [1]: [ss_store_sk#17] +Right keys [1]: [s_store_sk#21] +Join type: Inner +Join condition: None + +(369) Project +Output: [] +Input [2]: [ss_store_sk#17, s_store_sk#21] + +(370) HashAggregate +Input: [] +Keys: [] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#22] +Results [1]: [count#85] + +(371) Exchange +Input [1]: [count#85] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=42] + +(372) HashAggregate +Input [1]: [count#85] +Keys: [] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#23] +Results [1]: [count(1)#23 AS h9_to_9_30#24] + +(373) CartesianProduct +Join type: Inner +Join condition: None + +(374) Scan parquet +Output [3]: [ss_sold_time_sk#25, ss_hdemo_sk#86, ss_store_sk#26] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_hdemo_sk), IsNotNull(ss_sold_time_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(375) Filter +Input [3]: [ss_sold_time_sk#25, ss_hdemo_sk#86, ss_store_sk#26] +Condition : ((isnotnull(ss_hdemo_sk#86) AND isnotnull(ss_sold_time_sk#25)) AND isnotnull(ss_store_sk#26)) + +(376) Exchange +Input [3]: [ss_sold_time_sk#25, ss_hdemo_sk#86, ss_store_sk#26] +Arguments: hashpartitioning(ss_hdemo_sk#86, 100), ENSURE_REQUIREMENTS, [plan_id=43] + +(377) Sort +Input [3]: [ss_sold_time_sk#25, ss_hdemo_sk#86, ss_store_sk#26] +Arguments: [ss_hdemo_sk#86 ASC NULLS FIRST], false, 0 + +(378) Scan parquet +Output [3]: [hd_demo_sk#87, hd_dep_count#88, hd_vehicle_count#89] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(Or(And(EqualTo(hd_dep_count,4),LessThanOrEqual(hd_vehicle_count,6)),And(EqualTo(hd_dep_count,2),LessThanOrEqual(hd_vehicle_count,4))),And(EqualTo(hd_dep_count,0),LessThanOrEqual(hd_vehicle_count,2))), IsNotNull(hd_demo_sk)] +ReadSchema: struct + +(379) Filter +Input [3]: [hd_demo_sk#87, hd_dep_count#88, hd_vehicle_count#89] +Condition : (((((hd_dep_count#88 = 4) AND (hd_vehicle_count#89 <= 6)) OR ((hd_dep_count#88 = 2) AND (hd_vehicle_count#89 <= 4))) OR ((hd_dep_count#88 = 0) AND (hd_vehicle_count#89 <= 2))) AND isnotnull(hd_demo_sk#87)) + +(380) Project +Output [1]: [hd_demo_sk#87] +Input [3]: [hd_demo_sk#87, hd_dep_count#88, hd_vehicle_count#89] + +(381) Exchange +Input [1]: [hd_demo_sk#87] +Arguments: hashpartitioning(hd_demo_sk#87, 100), ENSURE_REQUIREMENTS, [plan_id=44] + +(382) Sort +Input [1]: [hd_demo_sk#87] +Arguments: [hd_demo_sk#87 ASC NULLS FIRST], false, 0 + +(383) SortMergeJoin +Left keys [1]: [ss_hdemo_sk#86] +Right keys [1]: [hd_demo_sk#87] +Join type: Inner +Join condition: None + +(384) Project +Output [2]: [ss_sold_time_sk#25, ss_store_sk#26] +Input [4]: [ss_sold_time_sk#25, ss_hdemo_sk#86, ss_store_sk#26, hd_demo_sk#87] + +(385) Exchange +Input [2]: [ss_sold_time_sk#25, ss_store_sk#26] +Arguments: hashpartitioning(ss_sold_time_sk#25, 100), ENSURE_REQUIREMENTS, [plan_id=45] + +(386) Sort +Input [2]: [ss_sold_time_sk#25, ss_store_sk#26] +Arguments: [ss_sold_time_sk#25 ASC NULLS FIRST], false, 0 + +(387) Scan parquet +Output [3]: [t_time_sk#27, t_hour#28, t_minute#29] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(t_hour), IsNotNull(t_minute), EqualTo(t_hour,9), GreaterThanOrEqual(t_minute,30), IsNotNull(t_time_sk)] +ReadSchema: struct + +(388) Filter +Input [3]: [t_time_sk#27, t_hour#28, t_minute#29] +Condition : ((((isnotnull(t_hour#28) AND isnotnull(t_minute#29)) AND (t_hour#28 = 9)) AND (t_minute#29 >= 30)) AND isnotnull(t_time_sk#27)) + +(389) Project +Output [1]: [t_time_sk#27] +Input [3]: [t_time_sk#27, t_hour#28, t_minute#29] + +(390) Exchange +Input [1]: [t_time_sk#27] +Arguments: hashpartitioning(t_time_sk#27, 100), ENSURE_REQUIREMENTS, [plan_id=46] + +(391) Sort +Input [1]: [t_time_sk#27] +Arguments: [t_time_sk#27 ASC NULLS FIRST], false, 0 + +(392) SortMergeJoin +Left keys [1]: [ss_sold_time_sk#25] +Right keys [1]: [t_time_sk#27] +Join type: Inner +Join condition: None + +(393) Project +Output [1]: [ss_store_sk#26] +Input [3]: [ss_sold_time_sk#25, ss_store_sk#26, t_time_sk#27] + +(394) Exchange +Input [1]: [ss_store_sk#26] +Arguments: hashpartitioning(ss_store_sk#26, 100), ENSURE_REQUIREMENTS, [plan_id=47] + +(395) Sort +Input [1]: [ss_store_sk#26] +Arguments: [ss_store_sk#26 ASC NULLS FIRST], false, 0 + +(396) Scan parquet +Output [2]: [s_store_sk#30, s_store_name#90] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_name), EqualTo(s_store_name,ese), IsNotNull(s_store_sk)] +ReadSchema: struct + +(397) Filter +Input [2]: [s_store_sk#30, s_store_name#90] +Condition : ((isnotnull(s_store_name#90) AND (s_store_name#90 = ese)) AND isnotnull(s_store_sk#30)) + +(398) Project +Output [1]: [s_store_sk#30] +Input [2]: [s_store_sk#30, s_store_name#90] + +(399) Exchange +Input [1]: [s_store_sk#30] +Arguments: hashpartitioning(s_store_sk#30, 100), ENSURE_REQUIREMENTS, [plan_id=48] + +(400) Sort +Input [1]: [s_store_sk#30] +Arguments: [s_store_sk#30 ASC NULLS FIRST], false, 0 + +(401) SortMergeJoin +Left keys [1]: [ss_store_sk#26] +Right keys [1]: [s_store_sk#30] +Join type: Inner +Join condition: None + +(402) Project +Output: [] +Input [2]: [ss_store_sk#26, s_store_sk#30] + +(403) HashAggregate +Input: [] +Keys: [] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#31] +Results [1]: [count#91] + +(404) Exchange +Input [1]: [count#91] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=49] + +(405) HashAggregate +Input [1]: [count#91] +Keys: [] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#32] +Results [1]: [count(1)#32 AS h9_30_to_10#33] + +(406) CartesianProduct +Join type: Inner +Join condition: None + +(407) Scan parquet +Output [3]: [ss_sold_time_sk#34, ss_hdemo_sk#92, ss_store_sk#35] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_hdemo_sk), IsNotNull(ss_sold_time_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(408) Filter +Input [3]: [ss_sold_time_sk#34, ss_hdemo_sk#92, ss_store_sk#35] +Condition : ((isnotnull(ss_hdemo_sk#92) AND isnotnull(ss_sold_time_sk#34)) AND isnotnull(ss_store_sk#35)) + +(409) Exchange +Input [3]: [ss_sold_time_sk#34, ss_hdemo_sk#92, ss_store_sk#35] +Arguments: hashpartitioning(ss_hdemo_sk#92, 100), ENSURE_REQUIREMENTS, [plan_id=50] + +(410) Sort +Input [3]: [ss_sold_time_sk#34, ss_hdemo_sk#92, ss_store_sk#35] +Arguments: [ss_hdemo_sk#92 ASC NULLS FIRST], false, 0 + +(411) Scan parquet +Output [3]: [hd_demo_sk#93, hd_dep_count#94, hd_vehicle_count#95] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(Or(And(EqualTo(hd_dep_count,4),LessThanOrEqual(hd_vehicle_count,6)),And(EqualTo(hd_dep_count,2),LessThanOrEqual(hd_vehicle_count,4))),And(EqualTo(hd_dep_count,0),LessThanOrEqual(hd_vehicle_count,2))), IsNotNull(hd_demo_sk)] +ReadSchema: struct + +(412) Filter +Input [3]: [hd_demo_sk#93, hd_dep_count#94, hd_vehicle_count#95] +Condition : (((((hd_dep_count#94 = 4) AND (hd_vehicle_count#95 <= 6)) OR ((hd_dep_count#94 = 2) AND (hd_vehicle_count#95 <= 4))) OR ((hd_dep_count#94 = 0) AND (hd_vehicle_count#95 <= 2))) AND isnotnull(hd_demo_sk#93)) + +(413) Project +Output [1]: [hd_demo_sk#93] +Input [3]: [hd_demo_sk#93, hd_dep_count#94, hd_vehicle_count#95] + +(414) Exchange +Input [1]: [hd_demo_sk#93] +Arguments: hashpartitioning(hd_demo_sk#93, 100), ENSURE_REQUIREMENTS, [plan_id=51] + +(415) Sort +Input [1]: [hd_demo_sk#93] +Arguments: [hd_demo_sk#93 ASC NULLS FIRST], false, 0 + +(416) SortMergeJoin +Left keys [1]: [ss_hdemo_sk#92] +Right keys [1]: [hd_demo_sk#93] +Join type: Inner +Join condition: None + +(417) Project +Output [2]: [ss_sold_time_sk#34, ss_store_sk#35] +Input [4]: [ss_sold_time_sk#34, ss_hdemo_sk#92, ss_store_sk#35, hd_demo_sk#93] + +(418) Exchange +Input [2]: [ss_sold_time_sk#34, ss_store_sk#35] +Arguments: hashpartitioning(ss_sold_time_sk#34, 100), ENSURE_REQUIREMENTS, [plan_id=52] + +(419) Sort +Input [2]: [ss_sold_time_sk#34, ss_store_sk#35] +Arguments: [ss_sold_time_sk#34 ASC NULLS FIRST], false, 0 + +(420) Scan parquet +Output [3]: [t_time_sk#36, t_hour#37, t_minute#38] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(t_hour), IsNotNull(t_minute), EqualTo(t_hour,10), LessThan(t_minute,30), IsNotNull(t_time_sk)] +ReadSchema: struct + +(421) Filter +Input [3]: [t_time_sk#36, t_hour#37, t_minute#38] +Condition : ((((isnotnull(t_hour#37) AND isnotnull(t_minute#38)) AND (t_hour#37 = 10)) AND (t_minute#38 < 30)) AND isnotnull(t_time_sk#36)) + +(422) Project +Output [1]: [t_time_sk#36] +Input [3]: [t_time_sk#36, t_hour#37, t_minute#38] + +(423) Exchange +Input [1]: [t_time_sk#36] +Arguments: hashpartitioning(t_time_sk#36, 100), ENSURE_REQUIREMENTS, [plan_id=53] + +(424) Sort +Input [1]: [t_time_sk#36] +Arguments: [t_time_sk#36 ASC NULLS FIRST], false, 0 + +(425) SortMergeJoin +Left keys [1]: [ss_sold_time_sk#34] +Right keys [1]: [t_time_sk#36] +Join type: Inner +Join condition: None + +(426) Project +Output [1]: [ss_store_sk#35] +Input [3]: [ss_sold_time_sk#34, ss_store_sk#35, t_time_sk#36] + +(427) Exchange +Input [1]: [ss_store_sk#35] +Arguments: hashpartitioning(ss_store_sk#35, 100), ENSURE_REQUIREMENTS, [plan_id=54] + +(428) Sort +Input [1]: [ss_store_sk#35] +Arguments: [ss_store_sk#35 ASC NULLS FIRST], false, 0 + +(429) Scan parquet +Output [2]: [s_store_sk#39, s_store_name#96] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_name), EqualTo(s_store_name,ese), IsNotNull(s_store_sk)] +ReadSchema: struct + +(430) Filter +Input [2]: [s_store_sk#39, s_store_name#96] +Condition : ((isnotnull(s_store_name#96) AND (s_store_name#96 = ese)) AND isnotnull(s_store_sk#39)) + +(431) Project +Output [1]: [s_store_sk#39] +Input [2]: [s_store_sk#39, s_store_name#96] + +(432) Exchange +Input [1]: [s_store_sk#39] +Arguments: hashpartitioning(s_store_sk#39, 100), ENSURE_REQUIREMENTS, [plan_id=55] + +(433) Sort +Input [1]: [s_store_sk#39] +Arguments: [s_store_sk#39 ASC NULLS FIRST], false, 0 + +(434) SortMergeJoin +Left keys [1]: [ss_store_sk#35] +Right keys [1]: [s_store_sk#39] +Join type: Inner +Join condition: None + +(435) Project +Output: [] +Input [2]: [ss_store_sk#35, s_store_sk#39] + +(436) HashAggregate +Input: [] +Keys: [] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#40] +Results [1]: [count#97] + +(437) Exchange +Input [1]: [count#97] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=56] + +(438) HashAggregate +Input [1]: [count#97] +Keys: [] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#41] +Results [1]: [count(1)#41 AS h10_to_10_30#42] + +(439) CartesianProduct +Join type: Inner +Join condition: None + +(440) Scan parquet +Output [3]: [ss_sold_time_sk#43, ss_hdemo_sk#98, ss_store_sk#44] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_hdemo_sk), IsNotNull(ss_sold_time_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(441) Filter +Input [3]: [ss_sold_time_sk#43, ss_hdemo_sk#98, ss_store_sk#44] +Condition : ((isnotnull(ss_hdemo_sk#98) AND isnotnull(ss_sold_time_sk#43)) AND isnotnull(ss_store_sk#44)) + +(442) Exchange +Input [3]: [ss_sold_time_sk#43, ss_hdemo_sk#98, ss_store_sk#44] +Arguments: hashpartitioning(ss_hdemo_sk#98, 100), ENSURE_REQUIREMENTS, [plan_id=57] + +(443) Sort +Input [3]: [ss_sold_time_sk#43, ss_hdemo_sk#98, ss_store_sk#44] +Arguments: [ss_hdemo_sk#98 ASC NULLS FIRST], false, 0 + +(444) Scan parquet +Output [3]: [hd_demo_sk#99, hd_dep_count#100, hd_vehicle_count#101] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(Or(And(EqualTo(hd_dep_count,4),LessThanOrEqual(hd_vehicle_count,6)),And(EqualTo(hd_dep_count,2),LessThanOrEqual(hd_vehicle_count,4))),And(EqualTo(hd_dep_count,0),LessThanOrEqual(hd_vehicle_count,2))), IsNotNull(hd_demo_sk)] +ReadSchema: struct + +(445) Filter +Input [3]: [hd_demo_sk#99, hd_dep_count#100, hd_vehicle_count#101] +Condition : (((((hd_dep_count#100 = 4) AND (hd_vehicle_count#101 <= 6)) OR ((hd_dep_count#100 = 2) AND (hd_vehicle_count#101 <= 4))) OR ((hd_dep_count#100 = 0) AND (hd_vehicle_count#101 <= 2))) AND isnotnull(hd_demo_sk#99)) + +(446) Project +Output [1]: [hd_demo_sk#99] +Input [3]: [hd_demo_sk#99, hd_dep_count#100, hd_vehicle_count#101] + +(447) Exchange +Input [1]: [hd_demo_sk#99] +Arguments: hashpartitioning(hd_demo_sk#99, 100), ENSURE_REQUIREMENTS, [plan_id=58] + +(448) Sort +Input [1]: [hd_demo_sk#99] +Arguments: [hd_demo_sk#99 ASC NULLS FIRST], false, 0 + +(449) SortMergeJoin +Left keys [1]: [ss_hdemo_sk#98] +Right keys [1]: [hd_demo_sk#99] +Join type: Inner +Join condition: None + +(450) Project +Output [2]: [ss_sold_time_sk#43, ss_store_sk#44] +Input [4]: [ss_sold_time_sk#43, ss_hdemo_sk#98, ss_store_sk#44, hd_demo_sk#99] + +(451) Exchange +Input [2]: [ss_sold_time_sk#43, ss_store_sk#44] +Arguments: hashpartitioning(ss_sold_time_sk#43, 100), ENSURE_REQUIREMENTS, [plan_id=59] + +(452) Sort +Input [2]: [ss_sold_time_sk#43, ss_store_sk#44] +Arguments: [ss_sold_time_sk#43 ASC NULLS FIRST], false, 0 + +(453) Scan parquet +Output [3]: [t_time_sk#45, t_hour#46, t_minute#47] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(t_hour), IsNotNull(t_minute), EqualTo(t_hour,10), GreaterThanOrEqual(t_minute,30), IsNotNull(t_time_sk)] +ReadSchema: struct + +(454) Filter +Input [3]: [t_time_sk#45, t_hour#46, t_minute#47] +Condition : ((((isnotnull(t_hour#46) AND isnotnull(t_minute#47)) AND (t_hour#46 = 10)) AND (t_minute#47 >= 30)) AND isnotnull(t_time_sk#45)) + +(455) Project +Output [1]: [t_time_sk#45] +Input [3]: [t_time_sk#45, t_hour#46, t_minute#47] + +(456) Exchange +Input [1]: [t_time_sk#45] +Arguments: hashpartitioning(t_time_sk#45, 100), ENSURE_REQUIREMENTS, [plan_id=60] + +(457) Sort +Input [1]: [t_time_sk#45] +Arguments: [t_time_sk#45 ASC NULLS FIRST], false, 0 + +(458) SortMergeJoin +Left keys [1]: [ss_sold_time_sk#43] +Right keys [1]: [t_time_sk#45] +Join type: Inner +Join condition: None + +(459) Project +Output [1]: [ss_store_sk#44] +Input [3]: [ss_sold_time_sk#43, ss_store_sk#44, t_time_sk#45] + +(460) Exchange +Input [1]: [ss_store_sk#44] +Arguments: hashpartitioning(ss_store_sk#44, 100), ENSURE_REQUIREMENTS, [plan_id=61] + +(461) Sort +Input [1]: [ss_store_sk#44] +Arguments: [ss_store_sk#44 ASC NULLS FIRST], false, 0 + +(462) Scan parquet +Output [2]: [s_store_sk#48, s_store_name#102] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_name), EqualTo(s_store_name,ese), IsNotNull(s_store_sk)] +ReadSchema: struct + +(463) Filter +Input [2]: [s_store_sk#48, s_store_name#102] +Condition : ((isnotnull(s_store_name#102) AND (s_store_name#102 = ese)) AND isnotnull(s_store_sk#48)) + +(464) Project +Output [1]: [s_store_sk#48] +Input [2]: [s_store_sk#48, s_store_name#102] + +(465) Exchange +Input [1]: [s_store_sk#48] +Arguments: hashpartitioning(s_store_sk#48, 100), ENSURE_REQUIREMENTS, [plan_id=62] + +(466) Sort +Input [1]: [s_store_sk#48] +Arguments: [s_store_sk#48 ASC NULLS FIRST], false, 0 + +(467) SortMergeJoin +Left keys [1]: [ss_store_sk#44] +Right keys [1]: [s_store_sk#48] +Join type: Inner +Join condition: None + +(468) Project +Output: [] +Input [2]: [ss_store_sk#44, s_store_sk#48] + +(469) HashAggregate +Input: [] +Keys: [] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#49] +Results [1]: [count#103] + +(470) Exchange +Input [1]: [count#103] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=63] + +(471) HashAggregate +Input [1]: [count#103] +Keys: [] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#50] +Results [1]: [count(1)#50 AS h10_30_to_11#51] + +(472) CartesianProduct +Join type: Inner +Join condition: None + +(473) Scan parquet +Output [3]: [ss_sold_time_sk#52, ss_hdemo_sk#104, ss_store_sk#53] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_hdemo_sk), IsNotNull(ss_sold_time_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(474) Filter +Input [3]: [ss_sold_time_sk#52, ss_hdemo_sk#104, ss_store_sk#53] +Condition : ((isnotnull(ss_hdemo_sk#104) AND isnotnull(ss_sold_time_sk#52)) AND isnotnull(ss_store_sk#53)) + +(475) Exchange +Input [3]: [ss_sold_time_sk#52, ss_hdemo_sk#104, ss_store_sk#53] +Arguments: hashpartitioning(ss_hdemo_sk#104, 100), ENSURE_REQUIREMENTS, [plan_id=64] + +(476) Sort +Input [3]: [ss_sold_time_sk#52, ss_hdemo_sk#104, ss_store_sk#53] +Arguments: [ss_hdemo_sk#104 ASC NULLS FIRST], false, 0 + +(477) Scan parquet +Output [3]: [hd_demo_sk#105, hd_dep_count#106, hd_vehicle_count#107] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(Or(And(EqualTo(hd_dep_count,4),LessThanOrEqual(hd_vehicle_count,6)),And(EqualTo(hd_dep_count,2),LessThanOrEqual(hd_vehicle_count,4))),And(EqualTo(hd_dep_count,0),LessThanOrEqual(hd_vehicle_count,2))), IsNotNull(hd_demo_sk)] +ReadSchema: struct + +(478) Filter +Input [3]: [hd_demo_sk#105, hd_dep_count#106, hd_vehicle_count#107] +Condition : (((((hd_dep_count#106 = 4) AND (hd_vehicle_count#107 <= 6)) OR ((hd_dep_count#106 = 2) AND (hd_vehicle_count#107 <= 4))) OR ((hd_dep_count#106 = 0) AND (hd_vehicle_count#107 <= 2))) AND isnotnull(hd_demo_sk#105)) + +(479) Project +Output [1]: [hd_demo_sk#105] +Input [3]: [hd_demo_sk#105, hd_dep_count#106, hd_vehicle_count#107] + +(480) Exchange +Input [1]: [hd_demo_sk#105] +Arguments: hashpartitioning(hd_demo_sk#105, 100), ENSURE_REQUIREMENTS, [plan_id=65] + +(481) Sort +Input [1]: [hd_demo_sk#105] +Arguments: [hd_demo_sk#105 ASC NULLS FIRST], false, 0 + +(482) SortMergeJoin +Left keys [1]: [ss_hdemo_sk#104] +Right keys [1]: [hd_demo_sk#105] +Join type: Inner +Join condition: None + +(483) Project +Output [2]: [ss_sold_time_sk#52, ss_store_sk#53] +Input [4]: [ss_sold_time_sk#52, ss_hdemo_sk#104, ss_store_sk#53, hd_demo_sk#105] + +(484) Exchange +Input [2]: [ss_sold_time_sk#52, ss_store_sk#53] +Arguments: hashpartitioning(ss_sold_time_sk#52, 100), ENSURE_REQUIREMENTS, [plan_id=66] + +(485) Sort +Input [2]: [ss_sold_time_sk#52, ss_store_sk#53] +Arguments: [ss_sold_time_sk#52 ASC NULLS FIRST], false, 0 + +(486) Scan parquet +Output [3]: [t_time_sk#54, t_hour#55, t_minute#56] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(t_hour), IsNotNull(t_minute), EqualTo(t_hour,11), LessThan(t_minute,30), IsNotNull(t_time_sk)] +ReadSchema: struct + +(487) Filter +Input [3]: [t_time_sk#54, t_hour#55, t_minute#56] +Condition : ((((isnotnull(t_hour#55) AND isnotnull(t_minute#56)) AND (t_hour#55 = 11)) AND (t_minute#56 < 30)) AND isnotnull(t_time_sk#54)) + +(488) Project +Output [1]: [t_time_sk#54] +Input [3]: [t_time_sk#54, t_hour#55, t_minute#56] + +(489) Exchange +Input [1]: [t_time_sk#54] +Arguments: hashpartitioning(t_time_sk#54, 100), ENSURE_REQUIREMENTS, [plan_id=67] + +(490) Sort +Input [1]: [t_time_sk#54] +Arguments: [t_time_sk#54 ASC NULLS FIRST], false, 0 + +(491) SortMergeJoin +Left keys [1]: [ss_sold_time_sk#52] +Right keys [1]: [t_time_sk#54] +Join type: Inner +Join condition: None + +(492) Project +Output [1]: [ss_store_sk#53] +Input [3]: [ss_sold_time_sk#52, ss_store_sk#53, t_time_sk#54] + +(493) Exchange +Input [1]: [ss_store_sk#53] +Arguments: hashpartitioning(ss_store_sk#53, 100), ENSURE_REQUIREMENTS, [plan_id=68] + +(494) Sort +Input [1]: [ss_store_sk#53] +Arguments: [ss_store_sk#53 ASC NULLS FIRST], false, 0 + +(495) Scan parquet +Output [2]: [s_store_sk#57, s_store_name#108] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_name), EqualTo(s_store_name,ese), IsNotNull(s_store_sk)] +ReadSchema: struct + +(496) Filter +Input [2]: [s_store_sk#57, s_store_name#108] +Condition : ((isnotnull(s_store_name#108) AND (s_store_name#108 = ese)) AND isnotnull(s_store_sk#57)) + +(497) Project +Output [1]: [s_store_sk#57] +Input [2]: [s_store_sk#57, s_store_name#108] + +(498) Exchange +Input [1]: [s_store_sk#57] +Arguments: hashpartitioning(s_store_sk#57, 100), ENSURE_REQUIREMENTS, [plan_id=69] + +(499) Sort +Input [1]: [s_store_sk#57] +Arguments: [s_store_sk#57 ASC NULLS FIRST], false, 0 + +(500) SortMergeJoin +Left keys [1]: [ss_store_sk#53] +Right keys [1]: [s_store_sk#57] +Join type: Inner +Join condition: None + +(501) Project +Output: [] +Input [2]: [ss_store_sk#53, s_store_sk#57] + +(502) HashAggregate +Input: [] +Keys: [] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#58] +Results [1]: [count#109] + +(503) Exchange +Input [1]: [count#109] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=70] + +(504) HashAggregate +Input [1]: [count#109] +Keys: [] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#59] +Results [1]: [count(1)#59 AS h11_to_11_30#60] + +(505) CartesianProduct +Join type: Inner +Join condition: None + +(506) Scan parquet +Output [3]: [ss_sold_time_sk#61, ss_hdemo_sk#110, ss_store_sk#62] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_hdemo_sk), IsNotNull(ss_sold_time_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(507) Filter +Input [3]: [ss_sold_time_sk#61, ss_hdemo_sk#110, ss_store_sk#62] +Condition : ((isnotnull(ss_hdemo_sk#110) AND isnotnull(ss_sold_time_sk#61)) AND isnotnull(ss_store_sk#62)) + +(508) Exchange +Input [3]: [ss_sold_time_sk#61, ss_hdemo_sk#110, ss_store_sk#62] +Arguments: hashpartitioning(ss_hdemo_sk#110, 100), ENSURE_REQUIREMENTS, [plan_id=71] + +(509) Sort +Input [3]: [ss_sold_time_sk#61, ss_hdemo_sk#110, ss_store_sk#62] +Arguments: [ss_hdemo_sk#110 ASC NULLS FIRST], false, 0 + +(510) Scan parquet +Output [3]: [hd_demo_sk#111, hd_dep_count#112, hd_vehicle_count#113] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(Or(And(EqualTo(hd_dep_count,4),LessThanOrEqual(hd_vehicle_count,6)),And(EqualTo(hd_dep_count,2),LessThanOrEqual(hd_vehicle_count,4))),And(EqualTo(hd_dep_count,0),LessThanOrEqual(hd_vehicle_count,2))), IsNotNull(hd_demo_sk)] +ReadSchema: struct + +(511) Filter +Input [3]: [hd_demo_sk#111, hd_dep_count#112, hd_vehicle_count#113] +Condition : (((((hd_dep_count#112 = 4) AND (hd_vehicle_count#113 <= 6)) OR ((hd_dep_count#112 = 2) AND (hd_vehicle_count#113 <= 4))) OR ((hd_dep_count#112 = 0) AND (hd_vehicle_count#113 <= 2))) AND isnotnull(hd_demo_sk#111)) + +(512) Project +Output [1]: [hd_demo_sk#111] +Input [3]: [hd_demo_sk#111, hd_dep_count#112, hd_vehicle_count#113] + +(513) Exchange +Input [1]: [hd_demo_sk#111] +Arguments: hashpartitioning(hd_demo_sk#111, 100), ENSURE_REQUIREMENTS, [plan_id=72] + +(514) Sort +Input [1]: [hd_demo_sk#111] +Arguments: [hd_demo_sk#111 ASC NULLS FIRST], false, 0 + +(515) SortMergeJoin +Left keys [1]: [ss_hdemo_sk#110] +Right keys [1]: [hd_demo_sk#111] +Join type: Inner +Join condition: None + +(516) Project +Output [2]: [ss_sold_time_sk#61, ss_store_sk#62] +Input [4]: [ss_sold_time_sk#61, ss_hdemo_sk#110, ss_store_sk#62, hd_demo_sk#111] + +(517) Exchange +Input [2]: [ss_sold_time_sk#61, ss_store_sk#62] +Arguments: hashpartitioning(ss_sold_time_sk#61, 100), ENSURE_REQUIREMENTS, [plan_id=73] + +(518) Sort +Input [2]: [ss_sold_time_sk#61, ss_store_sk#62] +Arguments: [ss_sold_time_sk#61 ASC NULLS FIRST], false, 0 + +(519) Scan parquet +Output [3]: [t_time_sk#63, t_hour#64, t_minute#65] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(t_hour), IsNotNull(t_minute), EqualTo(t_hour,11), GreaterThanOrEqual(t_minute,30), IsNotNull(t_time_sk)] +ReadSchema: struct + +(520) Filter +Input [3]: [t_time_sk#63, t_hour#64, t_minute#65] +Condition : ((((isnotnull(t_hour#64) AND isnotnull(t_minute#65)) AND (t_hour#64 = 11)) AND (t_minute#65 >= 30)) AND isnotnull(t_time_sk#63)) + +(521) Project +Output [1]: [t_time_sk#63] +Input [3]: [t_time_sk#63, t_hour#64, t_minute#65] + +(522) Exchange +Input [1]: [t_time_sk#63] +Arguments: hashpartitioning(t_time_sk#63, 100), ENSURE_REQUIREMENTS, [plan_id=74] + +(523) Sort +Input [1]: [t_time_sk#63] +Arguments: [t_time_sk#63 ASC NULLS FIRST], false, 0 + +(524) SortMergeJoin +Left keys [1]: [ss_sold_time_sk#61] +Right keys [1]: [t_time_sk#63] +Join type: Inner +Join condition: None + +(525) Project +Output [1]: [ss_store_sk#62] +Input [3]: [ss_sold_time_sk#61, ss_store_sk#62, t_time_sk#63] + +(526) Exchange +Input [1]: [ss_store_sk#62] +Arguments: hashpartitioning(ss_store_sk#62, 100), ENSURE_REQUIREMENTS, [plan_id=75] + +(527) Sort +Input [1]: [ss_store_sk#62] +Arguments: [ss_store_sk#62 ASC NULLS FIRST], false, 0 + +(528) Scan parquet +Output [2]: [s_store_sk#66, s_store_name#114] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_name), EqualTo(s_store_name,ese), IsNotNull(s_store_sk)] +ReadSchema: struct + +(529) Filter +Input [2]: [s_store_sk#66, s_store_name#114] +Condition : ((isnotnull(s_store_name#114) AND (s_store_name#114 = ese)) AND isnotnull(s_store_sk#66)) + +(530) Project +Output [1]: [s_store_sk#66] +Input [2]: [s_store_sk#66, s_store_name#114] + +(531) Exchange +Input [1]: [s_store_sk#66] +Arguments: hashpartitioning(s_store_sk#66, 100), ENSURE_REQUIREMENTS, [plan_id=76] + +(532) Sort +Input [1]: [s_store_sk#66] +Arguments: [s_store_sk#66 ASC NULLS FIRST], false, 0 + +(533) SortMergeJoin +Left keys [1]: [ss_store_sk#62] +Right keys [1]: [s_store_sk#66] +Join type: Inner +Join condition: None + +(534) Project +Output: [] +Input [2]: [ss_store_sk#62, s_store_sk#66] + +(535) HashAggregate +Input: [] +Keys: [] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#67] +Results [1]: [count#115] + +(536) Exchange +Input [1]: [count#115] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=77] + +(537) HashAggregate +Input [1]: [count#115] +Keys: [] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#68] +Results [1]: [count(1)#68 AS h11_30_to_12#69] + +(538) CartesianProduct +Join type: Inner +Join condition: None + +(539) Scan parquet +Output [3]: [ss_sold_time_sk#70, ss_hdemo_sk#116, ss_store_sk#71] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_hdemo_sk), IsNotNull(ss_sold_time_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(540) Filter +Input [3]: [ss_sold_time_sk#70, ss_hdemo_sk#116, ss_store_sk#71] +Condition : ((isnotnull(ss_hdemo_sk#116) AND isnotnull(ss_sold_time_sk#70)) AND isnotnull(ss_store_sk#71)) + +(541) Exchange +Input [3]: [ss_sold_time_sk#70, ss_hdemo_sk#116, ss_store_sk#71] +Arguments: hashpartitioning(ss_hdemo_sk#116, 100), ENSURE_REQUIREMENTS, [plan_id=78] + +(542) Sort +Input [3]: [ss_sold_time_sk#70, ss_hdemo_sk#116, ss_store_sk#71] +Arguments: [ss_hdemo_sk#116 ASC NULLS FIRST], false, 0 + +(543) Scan parquet +Output [3]: [hd_demo_sk#117, hd_dep_count#118, hd_vehicle_count#119] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(Or(And(EqualTo(hd_dep_count,4),LessThanOrEqual(hd_vehicle_count,6)),And(EqualTo(hd_dep_count,2),LessThanOrEqual(hd_vehicle_count,4))),And(EqualTo(hd_dep_count,0),LessThanOrEqual(hd_vehicle_count,2))), IsNotNull(hd_demo_sk)] +ReadSchema: struct + +(544) Filter +Input [3]: [hd_demo_sk#117, hd_dep_count#118, hd_vehicle_count#119] +Condition : (((((hd_dep_count#118 = 4) AND (hd_vehicle_count#119 <= 6)) OR ((hd_dep_count#118 = 2) AND (hd_vehicle_count#119 <= 4))) OR ((hd_dep_count#118 = 0) AND (hd_vehicle_count#119 <= 2))) AND isnotnull(hd_demo_sk#117)) + +(545) Project +Output [1]: [hd_demo_sk#117] +Input [3]: [hd_demo_sk#117, hd_dep_count#118, hd_vehicle_count#119] + +(546) Exchange +Input [1]: [hd_demo_sk#117] +Arguments: hashpartitioning(hd_demo_sk#117, 100), ENSURE_REQUIREMENTS, [plan_id=79] + +(547) Sort +Input [1]: [hd_demo_sk#117] +Arguments: [hd_demo_sk#117 ASC NULLS FIRST], false, 0 + +(548) SortMergeJoin +Left keys [1]: [ss_hdemo_sk#116] +Right keys [1]: [hd_demo_sk#117] +Join type: Inner +Join condition: None + +(549) Project +Output [2]: [ss_sold_time_sk#70, ss_store_sk#71] +Input [4]: [ss_sold_time_sk#70, ss_hdemo_sk#116, ss_store_sk#71, hd_demo_sk#117] + +(550) Exchange +Input [2]: [ss_sold_time_sk#70, ss_store_sk#71] +Arguments: hashpartitioning(ss_sold_time_sk#70, 100), ENSURE_REQUIREMENTS, [plan_id=80] + +(551) Sort +Input [2]: [ss_sold_time_sk#70, ss_store_sk#71] +Arguments: [ss_sold_time_sk#70 ASC NULLS FIRST], false, 0 + +(552) Scan parquet +Output [3]: [t_time_sk#72, t_hour#73, t_minute#74] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(t_hour), IsNotNull(t_minute), EqualTo(t_hour,12), LessThan(t_minute,30), IsNotNull(t_time_sk)] +ReadSchema: struct + +(553) Filter +Input [3]: [t_time_sk#72, t_hour#73, t_minute#74] +Condition : ((((isnotnull(t_hour#73) AND isnotnull(t_minute#74)) AND (t_hour#73 = 12)) AND (t_minute#74 < 30)) AND isnotnull(t_time_sk#72)) + +(554) Project +Output [1]: [t_time_sk#72] +Input [3]: [t_time_sk#72, t_hour#73, t_minute#74] + +(555) Exchange +Input [1]: [t_time_sk#72] +Arguments: hashpartitioning(t_time_sk#72, 100), ENSURE_REQUIREMENTS, [plan_id=81] + +(556) Sort +Input [1]: [t_time_sk#72] +Arguments: [t_time_sk#72 ASC NULLS FIRST], false, 0 + +(557) SortMergeJoin +Left keys [1]: [ss_sold_time_sk#70] +Right keys [1]: [t_time_sk#72] +Join type: Inner +Join condition: None + +(558) Project +Output [1]: [ss_store_sk#71] +Input [3]: [ss_sold_time_sk#70, ss_store_sk#71, t_time_sk#72] + +(559) Exchange +Input [1]: [ss_store_sk#71] +Arguments: hashpartitioning(ss_store_sk#71, 100), ENSURE_REQUIREMENTS, [plan_id=82] + +(560) Sort +Input [1]: [ss_store_sk#71] +Arguments: [ss_store_sk#71 ASC NULLS FIRST], false, 0 + +(561) Scan parquet +Output [2]: [s_store_sk#75, s_store_name#120] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_name), EqualTo(s_store_name,ese), IsNotNull(s_store_sk)] +ReadSchema: struct + +(562) Filter +Input [2]: [s_store_sk#75, s_store_name#120] +Condition : ((isnotnull(s_store_name#120) AND (s_store_name#120 = ese)) AND isnotnull(s_store_sk#75)) + +(563) Project +Output [1]: [s_store_sk#75] +Input [2]: [s_store_sk#75, s_store_name#120] + +(564) Exchange +Input [1]: [s_store_sk#75] +Arguments: hashpartitioning(s_store_sk#75, 100), ENSURE_REQUIREMENTS, [plan_id=83] + +(565) Sort +Input [1]: [s_store_sk#75] +Arguments: [s_store_sk#75 ASC NULLS FIRST], false, 0 + +(566) SortMergeJoin +Left keys [1]: [ss_store_sk#71] +Right keys [1]: [s_store_sk#75] +Join type: Inner +Join condition: None + +(567) Project +Output: [] +Input [2]: [ss_store_sk#71, s_store_sk#75] + +(568) HashAggregate +Input: [] +Keys: [] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#76] +Results [1]: [count#121] + +(569) Exchange +Input [1]: [count#121] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=84] + +(570) HashAggregate +Input [1]: [count#121] +Keys: [] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#77] +Results [1]: [count(1)#77 AS h12_to_12_30#78] + +(571) CartesianProduct +Join type: Inner +Join condition: None + +(572) AdaptiveSparkPlan +Output [8]: [h8_30_to_9#15, h9_to_9_30#24, h9_30_to_10#33, h10_to_10_30#42, h10_30_to_11#51, h11_to_11_30#60, h11_30_to_12#69, h12_to_12_30#78] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q89.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q89.txt new file mode 100644 index 000000000..d30612f52 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q89.txt @@ -0,0 +1,560 @@ +== Physical Plan == +AdaptiveSparkPlan (103) ++- == Final Plan == + TakeOrderedAndProject (66) + +- * Project (65) + +- * Filter (64) + +- Window (63) + +- NativeSort (62) + +- InputAdapter (61) + +- AQEShuffleRead (60) + +- ShuffleQueryStage (59), Statistics(X) + +- NativeShuffleExchange (58) + +- NativeProject (57) + +- NativeHashAggregate (56) + +- InputAdapter (55) + +- AQEShuffleRead (54) + +- ShuffleQueryStage (53), Statistics(X) + +- NativeShuffleExchange (52) + +- NativeHashAggregate (51) + +- NativeProject (50) + +- NativeProject (49) + +- NativeSortMergeJoin Inner (48) + :- NativeSort (39) + : +- InputAdapter (38) + : +- AQEShuffleRead (37) + : +- ShuffleQueryStage (36), Statistics(X) + : +- NativeShuffleExchange (35) + : +- NativeProject (34) + : +- NativeSortMergeJoin Inner (33) + : :- NativeSort (23) + : : +- InputAdapter (22) + : : +- AQEShuffleRead (21) + : : +- ShuffleQueryStage (20), Statistics(X) + : : +- NativeShuffleExchange (19) + : : +- NativeProject (18) + : : +- NativeSortMergeJoin Inner (17) + : : :- NativeSort (8) + : : : +- InputAdapter (7) + : : : +- AQEShuffleRead (6) + : : : +- ShuffleQueryStage (5), Statistics(X) + : : : +- NativeShuffleExchange (4) + : : : +- NativeFilter (3) + : : : +- InputAdapter (2) + : : : +- NativeParquetScan (1) + : : +- NativeSort (16) + : : +- InputAdapter (15) + : : +- AQEShuffleRead (14) + : : +- ShuffleQueryStage (13), Statistics(X) + : : +- NativeShuffleExchange (12) + : : +- NativeFilter (11) + : : +- InputAdapter (10) + : : +- NativeParquetScan (9) + : +- NativeSort (32) + : +- InputAdapter (31) + : +- AQEShuffleRead (30) + : +- ShuffleQueryStage (29), Statistics(X) + : +- NativeShuffleExchange (28) + : +- NativeProject (27) + : +- NativeFilter (26) + : +- InputAdapter (25) + : +- NativeParquetScan (24) + +- NativeSort (47) + +- InputAdapter (46) + +- AQEShuffleRead (45) + +- ShuffleQueryStage (44), Statistics(X) + +- NativeShuffleExchange (43) + +- NativeFilter (42) + +- InputAdapter (41) + +- NativeParquetScan (40) ++- == Initial Plan == + TakeOrderedAndProject (102) + +- Project (101) + +- Filter (100) + +- Window (99) + +- Sort (98) + +- Exchange (97) + +- HashAggregate (96) + +- Exchange (95) + +- HashAggregate (94) + +- Project (93) + +- SortMergeJoin Inner (92) + :- Sort (87) + : +- Exchange (86) + : +- Project (85) + : +- SortMergeJoin Inner (84) + : :- Sort (78) + : : +- Exchange (77) + : : +- Project (76) + : : +- SortMergeJoin Inner (75) + : : :- Sort (70) + : : : +- Exchange (69) + : : : +- Filter (68) + : : : +- Scan parquet (67) + : : +- Sort (74) + : : +- Exchange (73) + : : +- Filter (72) + : : +- Scan parquet (71) + : +- Sort (83) + : +- Exchange (82) + : +- Project (81) + : +- Filter (80) + : +- Scan parquet (79) + +- Sort (91) + +- Exchange (90) + +- Filter (89) + +- Scan parquet (88) + + +(67) Scan parquet +Output [4]: [i_item_sk#1, i_brand#2, i_class#3, i_category#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(And(In(i_category, [Books,Electronics,Sports]),In(i_class, [computers,football,stereo])),And(In(i_category, [Jewelry,Men,Women]),In(i_class, [birdal,dresses,shirts]))), IsNotNull(i_item_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [4]: [i_item_sk#1, i_brand#2, i_class#3, i_category#4] +Arguments: [#1, #2, #3, #4] + +(3) NativeFilter +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Condition : (((i_category#4 IN (Books,Electronics,Sports) AND i_class#3 IN (computers,stereo,football)) OR (i_category#4 IN (Men,Jewelry,Women) AND i_class#3 IN (shirts,birdal,dresses))) AND isnotnull(i_item_sk#1)) + +(4) NativeShuffleExchange +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: hashpartitioning(i_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: X + +(6) AQEShuffleRead +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: coalesced + +(7) InputAdapter +Input [4]: [#1#1, #2#2, #3#3, #4#4] + +(8) NativeSort +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: [i_item_sk#1 ASC NULLS FIRST], false + +(71) Scan parquet +Output [4]: [ss_sold_date_sk#5, ss_item_sk#6, ss_store_sk#7, ss_sales_price#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [4]: [ss_sold_date_sk#5, ss_item_sk#6, ss_store_sk#7, ss_sales_price#8] +Arguments: [#5, #6, #7, #8] + +(11) NativeFilter +Input [4]: [#5#5, #6#6, #7#7, #8#8] +Condition : ((isnotnull(ss_item_sk#6) AND isnotnull(ss_sold_date_sk#5)) AND isnotnull(ss_store_sk#7)) + +(12) NativeShuffleExchange +Input [4]: [#5#5, #6#6, #7#7, #8#8] +Arguments: hashpartitioning(ss_item_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [4]: [#5#5, #6#6, #7#7, #8#8] +Arguments: X + +(14) AQEShuffleRead +Input [4]: [#5#5, #6#6, #7#7, #8#8] +Arguments: coalesced + +(15) InputAdapter +Input [4]: [#5#5, #6#6, #7#7, #8#8] + +(16) NativeSort +Input [4]: [#5#5, #6#6, #7#7, #8#8] +Arguments: [ss_item_sk#6 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [1]: [i_item_sk#1] +Right keys [1]: [ss_item_sk#6] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [6]: [i_brand#2, i_class#3, i_category#4, ss_sold_date_sk#5, ss_store_sk#7, ss_sales_price#8] +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] + +(19) NativeShuffleExchange +Input [6]: [i_brand#2, i_class#3, i_category#4, ss_sold_date_sk#5, ss_store_sk#7, ss_sales_price#8] +Arguments: hashpartitioning(ss_sold_date_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [6]: [i_brand#2, i_class#3, i_category#4, ss_sold_date_sk#5, ss_store_sk#7, ss_sales_price#8] +Arguments: X + +(21) AQEShuffleRead +Input [6]: [i_brand#2, i_class#3, i_category#4, ss_sold_date_sk#5, ss_store_sk#7, ss_sales_price#8] +Arguments: coalesced + +(22) InputAdapter +Input [6]: [i_brand#2, i_class#3, i_category#4, ss_sold_date_sk#5, ss_store_sk#7, ss_sales_price#8] + +(23) NativeSort +Input [6]: [i_brand#2, i_class#3, i_category#4, ss_sold_date_sk#5, ss_store_sk#7, ss_sales_price#8] +Arguments: [ss_sold_date_sk#5 ASC NULLS FIRST], false + +(79) Scan parquet +Output [3]: [d_date_sk#9, d_year#10, d_moy#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,1999), IsNotNull(d_date_sk)] +ReadSchema: struct + +(25) InputAdapter +Input [3]: [d_date_sk#9, d_year#10, d_moy#11] +Arguments: [#9, #10, #11] + +(26) NativeFilter +Input [3]: [#9#9, #10#10, #11#11] +Condition : ((isnotnull(d_year#10) AND (d_year#10 = 1999)) AND isnotnull(d_date_sk#9)) + +(27) NativeProject +Output [2]: [d_date_sk#9, d_moy#11] +Input [3]: [#9#9, #10#10, #11#11] + +(28) NativeShuffleExchange +Input [2]: [d_date_sk#9, d_moy#11] +Arguments: hashpartitioning(d_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(29) ShuffleQueryStage +Output [2]: [d_date_sk#9, d_moy#11] +Arguments: X + +(30) AQEShuffleRead +Input [2]: [d_date_sk#9, d_moy#11] +Arguments: coalesced + +(31) InputAdapter +Input [2]: [d_date_sk#9, d_moy#11] + +(32) NativeSort +Input [2]: [d_date_sk#9, d_moy#11] +Arguments: [d_date_sk#9 ASC NULLS FIRST], false + +(33) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#5] +Right keys [1]: [d_date_sk#9] +Join type: Inner +Join condition: None + +(34) NativeProject +Output [6]: [i_brand#2, i_class#3, i_category#4, ss_store_sk#7, ss_sales_price#8, d_moy#11] +Input [8]: [i_brand#2, i_class#3, i_category#4, ss_sold_date_sk#5, ss_store_sk#7, ss_sales_price#8, d_date_sk#9, d_moy#11] + +(35) NativeShuffleExchange +Input [6]: [i_brand#2, i_class#3, i_category#4, ss_store_sk#7, ss_sales_price#8, d_moy#11] +Arguments: hashpartitioning(ss_store_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(36) ShuffleQueryStage +Output [6]: [i_brand#2, i_class#3, i_category#4, ss_store_sk#7, ss_sales_price#8, d_moy#11] +Arguments: X + +(37) AQEShuffleRead +Input [6]: [i_brand#2, i_class#3, i_category#4, ss_store_sk#7, ss_sales_price#8, d_moy#11] +Arguments: coalesced + +(38) InputAdapter +Input [6]: [i_brand#2, i_class#3, i_category#4, ss_store_sk#7, ss_sales_price#8, d_moy#11] + +(39) NativeSort +Input [6]: [i_brand#2, i_class#3, i_category#4, ss_store_sk#7, ss_sales_price#8, d_moy#11] +Arguments: [ss_store_sk#7 ASC NULLS FIRST], false + +(88) Scan parquet +Output [3]: [s_store_sk#12, s_store_name#13, s_company_name#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(41) InputAdapter +Input [3]: [s_store_sk#12, s_store_name#13, s_company_name#14] +Arguments: [#12, #13, #14] + +(42) NativeFilter +Input [3]: [#12#12, #13#13, #14#14] +Condition : isnotnull(s_store_sk#12) + +(43) NativeShuffleExchange +Input [3]: [#12#12, #13#13, #14#14] +Arguments: hashpartitioning(s_store_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) ShuffleQueryStage +Output [3]: [#12#12, #13#13, #14#14] +Arguments: X + +(45) AQEShuffleRead +Input [3]: [#12#12, #13#13, #14#14] +Arguments: coalesced + +(46) InputAdapter +Input [3]: [#12#12, #13#13, #14#14] + +(47) NativeSort +Input [3]: [#12#12, #13#13, #14#14] +Arguments: [s_store_sk#12 ASC NULLS FIRST], false + +(48) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#7] +Right keys [1]: [s_store_sk#12] +Join type: Inner +Join condition: None + +(49) NativeProject +Output [7]: [i_brand#2, i_class#3, i_category#4, ss_sales_price#8, d_moy#11, s_store_name#13, s_company_name#14] +Input [9]: [i_brand#2, i_class#3, i_category#4, ss_store_sk#7, ss_sales_price#8, d_moy#11, #12#12, #13#13, #14#14] + +(50) NativeProject +Output [7]: [i_category#4 AS i_category#4, i_class#3 AS i_class#3, i_brand#2 AS i_brand#2, s_store_name#13 AS s_store_name#13, s_company_name#14 AS s_company_name#14, d_moy#11 AS d_moy#11, UnscaledValue(ss_sales_price#8) AS _c6#15] +Input [7]: [i_brand#2, i_class#3, i_category#4, ss_sales_price#8, d_moy#11, s_store_name#13, s_company_name#14] + +(51) NativeHashAggregate +Input [7]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, _c6#15] +Keys [6]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11] +Functions [1]: [partial_sum(_c6#15)] +Aggregate Attributes [1]: [sum#16] +Results [7]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, #17#17] + +(52) NativeShuffleExchange +Input [7]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, #17#17] +Arguments: hashpartitioning(i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(53) ShuffleQueryStage +Output [7]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, #17#17] +Arguments: X + +(54) AQEShuffleRead +Input [7]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, #17#17] +Arguments: coalesced + +(55) InputAdapter +Input [7]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, #17#17] + +(56) NativeHashAggregate +Input [7]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, #17#17] +Keys [6]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11] +Functions [1]: [sum(UnscaledValue(ss_sales_price#8))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_sales_price#8))#18] +Results [7]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, sum(UnscaledValue(ss_sales_price#8))#18] + +(57) NativeProject +Output [8]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, MakeDecimal(sum(UnscaledValue(ss_sales_price#8))#18,17,2) AS sum_sales#19, MakeDecimal(sum(UnscaledValue(ss_sales_price#8))#18,17,2) AS _w0#20] +Input [7]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, sum(UnscaledValue(ss_sales_price#8))#18] + +(58) NativeShuffleExchange +Input [8]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, sum_sales#19, _w0#20] +Arguments: hashpartitioning(i_category#4, i_brand#2, s_store_name#13, s_company_name#14, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(59) ShuffleQueryStage +Output [8]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, sum_sales#19, _w0#20] +Arguments: X + +(60) AQEShuffleRead +Input [8]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, sum_sales#19, _w0#20] +Arguments: coalesced + +(61) InputAdapter +Input [8]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, sum_sales#19, _w0#20] + +(62) NativeSort +Input [8]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, sum_sales#19, _w0#20] +Arguments: [i_category#4 ASC NULLS FIRST, i_brand#2 ASC NULLS FIRST, s_store_name#13 ASC NULLS FIRST, s_company_name#14 ASC NULLS FIRST], false + +(63) Window +Input [8]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, sum_sales#19, _w0#20] +Arguments: [avg(_w0#20) windowspecdefinition(i_category#4, i_brand#2, s_store_name#13, s_company_name#14, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS avg_monthly_sales#21], [i_category#4, i_brand#2, s_store_name#13, s_company_name#14] + +(64) Filter [codegen id : 1] +Input [9]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, sum_sales#19, _w0#20, avg_monthly_sales#21] +Condition : CASE WHEN NOT (avg_monthly_sales#21 = 0.000000) THEN ((abs((sum_sales#19 - avg_monthly_sales#21)) / avg_monthly_sales#21) > 0.1000000000000000) END + +(65) Project [codegen id : 1] +Output [8]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, sum_sales#19, avg_monthly_sales#21] +Input [9]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, sum_sales#19, _w0#20, avg_monthly_sales#21] + +(66) TakeOrderedAndProject +Input [8]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, sum_sales#19, avg_monthly_sales#21] +Arguments: X, [(sum_sales#19 - avg_monthly_sales#21) ASC NULLS FIRST, s_store_name#13 ASC NULLS FIRST], [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, sum_sales#19, avg_monthly_sales#21] + +(67) Scan parquet +Output [4]: [i_item_sk#1, i_brand#2, i_class#3, i_category#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(And(In(i_category, [Books,Electronics,Sports]),In(i_class, [computers,football,stereo])),And(In(i_category, [Jewelry,Men,Women]),In(i_class, [birdal,dresses,shirts]))), IsNotNull(i_item_sk)] +ReadSchema: struct + +(68) Filter +Input [4]: [i_item_sk#1, i_brand#2, i_class#3, i_category#4] +Condition : (((i_category#4 IN (Books,Electronics,Sports) AND i_class#3 IN (computers,stereo,football)) OR (i_category#4 IN (Men,Jewelry,Women) AND i_class#3 IN (shirts,birdal,dresses))) AND isnotnull(i_item_sk#1)) + +(69) Exchange +Input [4]: [i_item_sk#1, i_brand#2, i_class#3, i_category#4] +Arguments: hashpartitioning(i_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(70) Sort +Input [4]: [i_item_sk#1, i_brand#2, i_class#3, i_category#4] +Arguments: [i_item_sk#1 ASC NULLS FIRST], false, 0 + +(71) Scan parquet +Output [4]: [ss_sold_date_sk#5, ss_item_sk#6, ss_store_sk#7, ss_sales_price#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(72) Filter +Input [4]: [ss_sold_date_sk#5, ss_item_sk#6, ss_store_sk#7, ss_sales_price#8] +Condition : ((isnotnull(ss_item_sk#6) AND isnotnull(ss_sold_date_sk#5)) AND isnotnull(ss_store_sk#7)) + +(73) Exchange +Input [4]: [ss_sold_date_sk#5, ss_item_sk#6, ss_store_sk#7, ss_sales_price#8] +Arguments: hashpartitioning(ss_item_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(74) Sort +Input [4]: [ss_sold_date_sk#5, ss_item_sk#6, ss_store_sk#7, ss_sales_price#8] +Arguments: [ss_item_sk#6 ASC NULLS FIRST], false, 0 + +(75) SortMergeJoin +Left keys [1]: [i_item_sk#1] +Right keys [1]: [ss_item_sk#6] +Join type: Inner +Join condition: None + +(76) Project +Output [6]: [i_brand#2, i_class#3, i_category#4, ss_sold_date_sk#5, ss_store_sk#7, ss_sales_price#8] +Input [8]: [i_item_sk#1, i_brand#2, i_class#3, i_category#4, ss_sold_date_sk#5, ss_item_sk#6, ss_store_sk#7, ss_sales_price#8] + +(77) Exchange +Input [6]: [i_brand#2, i_class#3, i_category#4, ss_sold_date_sk#5, ss_store_sk#7, ss_sales_price#8] +Arguments: hashpartitioning(ss_sold_date_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(78) Sort +Input [6]: [i_brand#2, i_class#3, i_category#4, ss_sold_date_sk#5, ss_store_sk#7, ss_sales_price#8] +Arguments: [ss_sold_date_sk#5 ASC NULLS FIRST], false, 0 + +(79) Scan parquet +Output [3]: [d_date_sk#9, d_year#10, d_moy#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), EqualTo(d_year,1999), IsNotNull(d_date_sk)] +ReadSchema: struct + +(80) Filter +Input [3]: [d_date_sk#9, d_year#10, d_moy#11] +Condition : ((isnotnull(d_year#10) AND (d_year#10 = 1999)) AND isnotnull(d_date_sk#9)) + +(81) Project +Output [2]: [d_date_sk#9, d_moy#11] +Input [3]: [d_date_sk#9, d_year#10, d_moy#11] + +(82) Exchange +Input [2]: [d_date_sk#9, d_moy#11] +Arguments: hashpartitioning(d_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(83) Sort +Input [2]: [d_date_sk#9, d_moy#11] +Arguments: [d_date_sk#9 ASC NULLS FIRST], false, 0 + +(84) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#5] +Right keys [1]: [d_date_sk#9] +Join type: Inner +Join condition: None + +(85) Project +Output [6]: [i_brand#2, i_class#3, i_category#4, ss_store_sk#7, ss_sales_price#8, d_moy#11] +Input [8]: [i_brand#2, i_class#3, i_category#4, ss_sold_date_sk#5, ss_store_sk#7, ss_sales_price#8, d_date_sk#9, d_moy#11] + +(86) Exchange +Input [6]: [i_brand#2, i_class#3, i_category#4, ss_store_sk#7, ss_sales_price#8, d_moy#11] +Arguments: hashpartitioning(ss_store_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(87) Sort +Input [6]: [i_brand#2, i_class#3, i_category#4, ss_store_sk#7, ss_sales_price#8, d_moy#11] +Arguments: [ss_store_sk#7 ASC NULLS FIRST], false, 0 + +(88) Scan parquet +Output [3]: [s_store_sk#12, s_store_name#13, s_company_name#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_sk)] +ReadSchema: struct + +(89) Filter +Input [3]: [s_store_sk#12, s_store_name#13, s_company_name#14] +Condition : isnotnull(s_store_sk#12) + +(90) Exchange +Input [3]: [s_store_sk#12, s_store_name#13, s_company_name#14] +Arguments: hashpartitioning(s_store_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(91) Sort +Input [3]: [s_store_sk#12, s_store_name#13, s_company_name#14] +Arguments: [s_store_sk#12 ASC NULLS FIRST], false, 0 + +(92) SortMergeJoin +Left keys [1]: [ss_store_sk#7] +Right keys [1]: [s_store_sk#12] +Join type: Inner +Join condition: None + +(93) Project +Output [7]: [i_brand#2, i_class#3, i_category#4, ss_sales_price#8, d_moy#11, s_store_name#13, s_company_name#14] +Input [9]: [i_brand#2, i_class#3, i_category#4, ss_store_sk#7, ss_sales_price#8, d_moy#11, s_store_sk#12, s_store_name#13, s_company_name#14] + +(94) HashAggregate +Input [7]: [i_brand#2, i_class#3, i_category#4, ss_sales_price#8, d_moy#11, s_store_name#13, s_company_name#14] +Keys [6]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11] +Functions [1]: [partial_sum(UnscaledValue(ss_sales_price#8))] +Aggregate Attributes [1]: [sum#16] +Results [7]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, sum#22] + +(95) Exchange +Input [7]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, sum#22] +Arguments: hashpartitioning(i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(96) HashAggregate +Input [7]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, sum#22] +Keys [6]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11] +Functions [1]: [sum(UnscaledValue(ss_sales_price#8))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_sales_price#8))#18] +Results [8]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, MakeDecimal(sum(UnscaledValue(ss_sales_price#8))#18,17,2) AS sum_sales#19, MakeDecimal(sum(UnscaledValue(ss_sales_price#8))#18,17,2) AS _w0#20] + +(97) Exchange +Input [8]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, sum_sales#19, _w0#20] +Arguments: hashpartitioning(i_category#4, i_brand#2, s_store_name#13, s_company_name#14, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(98) Sort +Input [8]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, sum_sales#19, _w0#20] +Arguments: [i_category#4 ASC NULLS FIRST, i_brand#2 ASC NULLS FIRST, s_store_name#13 ASC NULLS FIRST, s_company_name#14 ASC NULLS FIRST], false, 0 + +(99) Window +Input [8]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, sum_sales#19, _w0#20] +Arguments: [avg(_w0#20) windowspecdefinition(i_category#4, i_brand#2, s_store_name#13, s_company_name#14, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS avg_monthly_sales#21], [i_category#4, i_brand#2, s_store_name#13, s_company_name#14] + +(100) Filter +Input [9]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, sum_sales#19, _w0#20, avg_monthly_sales#21] +Condition : CASE WHEN NOT (avg_monthly_sales#21 = 0.000000) THEN ((abs((sum_sales#19 - avg_monthly_sales#21)) / avg_monthly_sales#21) > 0.1000000000000000) END + +(101) Project +Output [8]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, sum_sales#19, avg_monthly_sales#21] +Input [9]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, sum_sales#19, _w0#20, avg_monthly_sales#21] + +(102) TakeOrderedAndProject +Input [8]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, sum_sales#19, avg_monthly_sales#21] +Arguments: X, [(sum_sales#19 - avg_monthly_sales#21) ASC NULLS FIRST, s_store_name#13 ASC NULLS FIRST], [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, sum_sales#19, avg_monthly_sales#21] + +(103) AdaptiveSparkPlan +Output [8]: [i_category#4, i_class#3, i_brand#2, s_store_name#13, s_company_name#14, d_moy#11, sum_sales#19, avg_monthly_sales#21] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q9.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q9.txt new file mode 100644 index 000000000..3cb867b9c --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q9.txt @@ -0,0 +1,664 @@ +== Physical Plan == +AdaptiveSparkPlan (8) ++- == Final Plan == + NativeProject (4) + +- NativeFilter (3) + +- InputAdapter (2) + +- NativeParquetScan (1) ++- == Initial Plan == + Project (7) + +- Filter (6) + +- Scan parquet (5) + + +(5) Scan parquet +Output [1]: [r_reason_sk#1] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(r_reason_sk), EqualTo(r_reason_sk,1)] +ReadSchema: struct + +(2) InputAdapter +Input [1]: [r_reason_sk#1] +Arguments: [#1] + +(3) NativeFilter +Input [1]: [#1#1] +Condition : (isnotnull(r_reason_sk#1) AND (r_reason_sk#1 = 1)) + +(4) NativeProject +Output [5]: [CASE WHEN (Subquery subquery#2, [id=#3].count(1) > 62316685) THEN ReusedSubquery Subquery subquery#2, [id=#3].avg(ss_ext_discount_amt) ELSE ReusedSubquery Subquery subquery#2, [id=#3].avg(ss_net_paid) END AS bucket1#4, CASE WHEN (Subquery subquery#5, [id=#6].count(1) > 19045798) THEN ReusedSubquery Subquery subquery#5, [id=#6].avg(ss_ext_discount_amt) ELSE ReusedSubquery Subquery subquery#5, [id=#6].avg(ss_net_paid) END AS bucket2#7, CASE WHEN (Subquery subquery#8, [id=#9].count(1) > 365541424) THEN ReusedSubquery Subquery subquery#8, [id=#9].avg(ss_ext_discount_amt) ELSE ReusedSubquery Subquery subquery#8, [id=#9].avg(ss_net_paid) END AS bucket3#10, CASE WHEN (Subquery subquery#11, [id=#12].count(1) > 216357808) THEN ReusedSubquery Subquery subquery#11, [id=#12].avg(ss_ext_discount_amt) ELSE ReusedSubquery Subquery subquery#11, [id=#12].avg(ss_net_paid) END AS bucket4#13, CASE WHEN (Subquery subquery#14, [id=#15].count(1) > 184483884) THEN ReusedSubquery Subquery subquery#14, [id=#15].avg(ss_ext_discount_amt) ELSE ReusedSubquery Subquery subquery#14, [id=#15].avg(ss_net_paid) END AS bucket5#16] +Input [1]: [#1#1] + +(5) Scan parquet +Output [1]: [r_reason_sk#1] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(r_reason_sk), EqualTo(r_reason_sk,1)] +ReadSchema: struct + +(6) Filter +Input [1]: [r_reason_sk#1] +Condition : (isnotnull(r_reason_sk#1) AND (r_reason_sk#1 = 1)) + +(7) Project +Output [5]: [CASE WHEN (Subquery subquery#2, [id=#3].count(1) > 62316685) THEN Subquery subquery#17, [id=#18].avg(ss_ext_discount_amt) ELSE Subquery subquery#19, [id=#20].avg(ss_net_paid) END AS bucket1#4, CASE WHEN (Subquery subquery#5, [id=#6].count(1) > 19045798) THEN Subquery subquery#21, [id=#22].avg(ss_ext_discount_amt) ELSE Subquery subquery#23, [id=#24].avg(ss_net_paid) END AS bucket2#7, CASE WHEN (Subquery subquery#8, [id=#9].count(1) > 365541424) THEN Subquery subquery#25, [id=#26].avg(ss_ext_discount_amt) ELSE Subquery subquery#27, [id=#28].avg(ss_net_paid) END AS bucket3#10, CASE WHEN (Subquery subquery#11, [id=#12].count(1) > 216357808) THEN Subquery subquery#29, [id=#30].avg(ss_ext_discount_amt) ELSE Subquery subquery#31, [id=#32].avg(ss_net_paid) END AS bucket4#13, CASE WHEN (Subquery subquery#14, [id=#15].count(1) > 184483884) THEN Subquery subquery#33, [id=#34].avg(ss_ext_discount_amt) ELSE Subquery subquery#35, [id=#36].avg(ss_net_paid) END AS bucket5#16] +Input [1]: [r_reason_sk#1] + +(8) AdaptiveSparkPlan +Output [5]: [bucket1#4, bucket2#7, bucket3#10, bucket4#13, bucket5#16] +Arguments: isFinalPlan=true + +===== Subqueries ===== + +Subquery:1 Hosting operator id = 4 Hosting Expression = Subquery subquery#2, [id=#3] +AdaptiveSparkPlan (27) ++- == Final Plan == + NativeProject (19) + +- NativeProject (18) + +- NativeHashAggregate (17) + +- ShuffleQueryStage (16), Statistics(X) + +- NativeShuffleExchange (15) + +- NativeHashAggregate (14) + +- NativeProject (13) + +- NativeProject (12) + +- NativeFilter (11) + +- InputAdapter (10) + +- NativeParquetScan (9) ++- == Initial Plan == + Project (26) + +- HashAggregate (25) + +- Exchange (24) + +- HashAggregate (23) + +- Project (22) + +- Filter (21) + +- Scan parquet (20) + + +(20) Scan parquet +Output [3]: [ss_quantity#37, ss_ext_discount_amt#38, ss_net_paid#39] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_quantity), GreaterThanOrEqual(ss_quantity,1), LessThanOrEqual(ss_quantity,20)] +ReadSchema: struct + +(10) InputAdapter +Input [3]: [ss_quantity#37, ss_ext_discount_amt#38, ss_net_paid#39] +Arguments: [#37, #38, #39] + +(11) NativeFilter +Input [3]: [#37#37, #38#38, #39#39] +Condition : ((isnotnull(ss_quantity#37) AND (ss_quantity#37 >= 1)) AND (ss_quantity#37 <= 20)) + +(12) NativeProject +Output [2]: [ss_ext_discount_amt#38, ss_net_paid#39] +Input [3]: [#37#37, #38#38, #39#39] + +(13) NativeProject +Output [2]: [UnscaledValue(ss_ext_discount_amt#38) AS _c0#40, UnscaledValue(ss_net_paid#39) AS _c1#41] +Input [2]: [ss_ext_discount_amt#38, ss_net_paid#39] + +(14) NativeHashAggregate +Input [2]: [_c0#40, _c1#41] +Keys: [] +Functions [3]: [partial_count(1), partial_avg(_c0#40), partial_avg(_c1#41)] +Aggregate Attributes [5]: [count#42, sum#43, count#44, sum#45, count#46] +Results [1]: [#47#47] + +(15) NativeShuffleExchange +Input [1]: [#47#47] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=1] + +(16) ShuffleQueryStage +Output [1]: [#47#47] +Arguments: X + +(17) NativeHashAggregate +Input [1]: [#47#47] +Keys: [] +Functions [3]: [count(1), avg(UnscaledValue(ss_ext_discount_amt#38)), avg(UnscaledValue(ss_net_paid#39))] +Aggregate Attributes [3]: [count(1)#48, avg(UnscaledValue(ss_ext_discount_amt#38))#49, avg(UnscaledValue(ss_net_paid#39))#50] +Results [3]: [count(1)#48, avg(UnscaledValue(ss_ext_discount_amt#38))#49, avg(UnscaledValue(ss_net_paid#39))#50] + +(18) NativeProject +Output [3]: [count(1)#48 AS count(1)#51, cast((avg(UnscaledValue(ss_ext_discount_amt#38))#49 / 100.0) as decimal(11,6)) AS avg(ss_ext_discount_amt)#52, cast((avg(UnscaledValue(ss_net_paid#39))#50 / 100.0) as decimal(11,6)) AS avg(ss_net_paid)#53] +Input [3]: [count(1)#48, avg(UnscaledValue(ss_ext_discount_amt#38))#49, avg(UnscaledValue(ss_net_paid#39))#50] + +(19) NativeProject +Output [1]: [named_struct(count(1), count(1)#51, avg(ss_ext_discount_amt), avg(ss_ext_discount_amt)#52, avg(ss_net_paid), avg(ss_net_paid)#53) AS mergedValue#54] +Input [3]: [count(1)#51, avg(ss_ext_discount_amt)#52, avg(ss_net_paid)#53] + +(20) Scan parquet +Output [3]: [ss_quantity#37, ss_ext_discount_amt#38, ss_net_paid#39] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_quantity), GreaterThanOrEqual(ss_quantity,1), LessThanOrEqual(ss_quantity,20)] +ReadSchema: struct + +(21) Filter +Input [3]: [ss_quantity#37, ss_ext_discount_amt#38, ss_net_paid#39] +Condition : ((isnotnull(ss_quantity#37) AND (ss_quantity#37 >= 1)) AND (ss_quantity#37 <= 20)) + +(22) Project +Output [2]: [ss_ext_discount_amt#38, ss_net_paid#39] +Input [3]: [ss_quantity#37, ss_ext_discount_amt#38, ss_net_paid#39] + +(23) HashAggregate +Input [2]: [ss_ext_discount_amt#38, ss_net_paid#39] +Keys: [] +Functions [3]: [partial_count(1), partial_avg(UnscaledValue(ss_ext_discount_amt#38)), partial_avg(UnscaledValue(ss_net_paid#39))] +Aggregate Attributes [5]: [count#42, sum#43, count#44, sum#45, count#46] +Results [5]: [count#55, sum#56, count#57, sum#58, count#59] + +(24) Exchange +Input [5]: [count#55, sum#56, count#57, sum#58, count#59] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=2] + +(25) HashAggregate +Input [5]: [count#55, sum#56, count#57, sum#58, count#59] +Keys: [] +Functions [3]: [count(1), avg(UnscaledValue(ss_ext_discount_amt#38)), avg(UnscaledValue(ss_net_paid#39))] +Aggregate Attributes [3]: [count(1)#48, avg(UnscaledValue(ss_ext_discount_amt#38))#49, avg(UnscaledValue(ss_net_paid#39))#50] +Results [3]: [count(1)#48 AS count(1)#51, cast((avg(UnscaledValue(ss_ext_discount_amt#38))#49 / 100.0) as decimal(11,6)) AS avg(ss_ext_discount_amt)#52, cast((avg(UnscaledValue(ss_net_paid#39))#50 / 100.0) as decimal(11,6)) AS avg(ss_net_paid)#53] + +(26) Project +Output [1]: [named_struct(count(1), count(1)#51, avg(ss_ext_discount_amt), avg(ss_ext_discount_amt)#52, avg(ss_net_paid), avg(ss_net_paid)#53) AS mergedValue#54] +Input [3]: [count(1)#51, avg(ss_ext_discount_amt)#52, avg(ss_net_paid)#53] + +(27) AdaptiveSparkPlan +Output [1]: [mergedValue#54] +Arguments: isFinalPlan=true + +Subquery:2 Hosting operator id = 4 Hosting Expression = ReusedSubquery Subquery subquery#2, [id=#3] + +Subquery:3 Hosting operator id = 4 Hosting Expression = ReusedSubquery Subquery subquery#2, [id=#3] + +Subquery:4 Hosting operator id = 4 Hosting Expression = Subquery subquery#5, [id=#6] +AdaptiveSparkPlan (46) ++- == Final Plan == + NativeProject (38) + +- NativeProject (37) + +- NativeHashAggregate (36) + +- ShuffleQueryStage (35), Statistics(X) + +- NativeShuffleExchange (34) + +- NativeHashAggregate (33) + +- NativeProject (32) + +- NativeProject (31) + +- NativeFilter (30) + +- InputAdapter (29) + +- NativeParquetScan (28) ++- == Initial Plan == + Project (45) + +- HashAggregate (44) + +- Exchange (43) + +- HashAggregate (42) + +- Project (41) + +- Filter (40) + +- Scan parquet (39) + + +(39) Scan parquet +Output [3]: [ss_quantity#60, ss_ext_discount_amt#61, ss_net_paid#62] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_quantity), GreaterThanOrEqual(ss_quantity,21), LessThanOrEqual(ss_quantity,40)] +ReadSchema: struct + +(29) InputAdapter +Input [3]: [ss_quantity#60, ss_ext_discount_amt#61, ss_net_paid#62] +Arguments: [#60, #61, #62] + +(30) NativeFilter +Input [3]: [#60#60, #61#61, #62#62] +Condition : ((isnotnull(ss_quantity#60) AND (ss_quantity#60 >= 21)) AND (ss_quantity#60 <= 40)) + +(31) NativeProject +Output [2]: [ss_ext_discount_amt#61, ss_net_paid#62] +Input [3]: [#60#60, #61#61, #62#62] + +(32) NativeProject +Output [2]: [UnscaledValue(ss_ext_discount_amt#61) AS _c0#63, UnscaledValue(ss_net_paid#62) AS _c1#64] +Input [2]: [ss_ext_discount_amt#61, ss_net_paid#62] + +(33) NativeHashAggregate +Input [2]: [_c0#63, _c1#64] +Keys: [] +Functions [3]: [partial_count(1), partial_avg(_c0#63), partial_avg(_c1#64)] +Aggregate Attributes [5]: [count#65, sum#66, count#67, sum#68, count#69] +Results [1]: [#47#47] + +(34) NativeShuffleExchange +Input [1]: [#47#47] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=3] + +(35) ShuffleQueryStage +Output [1]: [#47#47] +Arguments: X + +(36) NativeHashAggregate +Input [1]: [#47#47] +Keys: [] +Functions [3]: [count(1), avg(UnscaledValue(ss_ext_discount_amt#61)), avg(UnscaledValue(ss_net_paid#62))] +Aggregate Attributes [3]: [count(1)#70, avg(UnscaledValue(ss_ext_discount_amt#61))#71, avg(UnscaledValue(ss_net_paid#62))#72] +Results [3]: [count(1)#70, avg(UnscaledValue(ss_ext_discount_amt#61))#71, avg(UnscaledValue(ss_net_paid#62))#72] + +(37) NativeProject +Output [3]: [count(1)#70 AS count(1)#73, cast((avg(UnscaledValue(ss_ext_discount_amt#61))#71 / 100.0) as decimal(11,6)) AS avg(ss_ext_discount_amt)#74, cast((avg(UnscaledValue(ss_net_paid#62))#72 / 100.0) as decimal(11,6)) AS avg(ss_net_paid)#75] +Input [3]: [count(1)#70, avg(UnscaledValue(ss_ext_discount_amt#61))#71, avg(UnscaledValue(ss_net_paid#62))#72] + +(38) NativeProject +Output [1]: [named_struct(count(1), count(1)#73, avg(ss_ext_discount_amt), avg(ss_ext_discount_amt)#74, avg(ss_net_paid), avg(ss_net_paid)#75) AS mergedValue#76] +Input [3]: [count(1)#73, avg(ss_ext_discount_amt)#74, avg(ss_net_paid)#75] + +(39) Scan parquet +Output [3]: [ss_quantity#60, ss_ext_discount_amt#61, ss_net_paid#62] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_quantity), GreaterThanOrEqual(ss_quantity,21), LessThanOrEqual(ss_quantity,40)] +ReadSchema: struct + +(40) Filter +Input [3]: [ss_quantity#60, ss_ext_discount_amt#61, ss_net_paid#62] +Condition : ((isnotnull(ss_quantity#60) AND (ss_quantity#60 >= 21)) AND (ss_quantity#60 <= 40)) + +(41) Project +Output [2]: [ss_ext_discount_amt#61, ss_net_paid#62] +Input [3]: [ss_quantity#60, ss_ext_discount_amt#61, ss_net_paid#62] + +(42) HashAggregate +Input [2]: [ss_ext_discount_amt#61, ss_net_paid#62] +Keys: [] +Functions [3]: [partial_count(1), partial_avg(UnscaledValue(ss_ext_discount_amt#61)), partial_avg(UnscaledValue(ss_net_paid#62))] +Aggregate Attributes [5]: [count#65, sum#66, count#67, sum#68, count#69] +Results [5]: [count#77, sum#78, count#79, sum#80, count#81] + +(43) Exchange +Input [5]: [count#77, sum#78, count#79, sum#80, count#81] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=4] + +(44) HashAggregate +Input [5]: [count#77, sum#78, count#79, sum#80, count#81] +Keys: [] +Functions [3]: [count(1), avg(UnscaledValue(ss_ext_discount_amt#61)), avg(UnscaledValue(ss_net_paid#62))] +Aggregate Attributes [3]: [count(1)#70, avg(UnscaledValue(ss_ext_discount_amt#61))#71, avg(UnscaledValue(ss_net_paid#62))#72] +Results [3]: [count(1)#70 AS count(1)#73, cast((avg(UnscaledValue(ss_ext_discount_amt#61))#71 / 100.0) as decimal(11,6)) AS avg(ss_ext_discount_amt)#74, cast((avg(UnscaledValue(ss_net_paid#62))#72 / 100.0) as decimal(11,6)) AS avg(ss_net_paid)#75] + +(45) Project +Output [1]: [named_struct(count(1), count(1)#73, avg(ss_ext_discount_amt), avg(ss_ext_discount_amt)#74, avg(ss_net_paid), avg(ss_net_paid)#75) AS mergedValue#76] +Input [3]: [count(1)#73, avg(ss_ext_discount_amt)#74, avg(ss_net_paid)#75] + +(46) AdaptiveSparkPlan +Output [1]: [mergedValue#76] +Arguments: isFinalPlan=true + +Subquery:5 Hosting operator id = 4 Hosting Expression = ReusedSubquery Subquery subquery#5, [id=#6] + +Subquery:6 Hosting operator id = 4 Hosting Expression = ReusedSubquery Subquery subquery#5, [id=#6] + +Subquery:7 Hosting operator id = 4 Hosting Expression = Subquery subquery#8, [id=#9] +AdaptiveSparkPlan (65) ++- == Final Plan == + NativeProject (57) + +- NativeProject (56) + +- NativeHashAggregate (55) + +- ShuffleQueryStage (54), Statistics(X) + +- NativeShuffleExchange (53) + +- NativeHashAggregate (52) + +- NativeProject (51) + +- NativeProject (50) + +- NativeFilter (49) + +- InputAdapter (48) + +- NativeParquetScan (47) ++- == Initial Plan == + Project (64) + +- HashAggregate (63) + +- Exchange (62) + +- HashAggregate (61) + +- Project (60) + +- Filter (59) + +- Scan parquet (58) + + +(58) Scan parquet +Output [3]: [ss_quantity#82, ss_ext_discount_amt#83, ss_net_paid#84] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_quantity), GreaterThanOrEqual(ss_quantity,41), LessThanOrEqual(ss_quantity,60)] +ReadSchema: struct + +(48) InputAdapter +Input [3]: [ss_quantity#82, ss_ext_discount_amt#83, ss_net_paid#84] +Arguments: [#82, #83, #84] + +(49) NativeFilter +Input [3]: [#82#82, #83#83, #84#84] +Condition : ((isnotnull(ss_quantity#82) AND (ss_quantity#82 >= 41)) AND (ss_quantity#82 <= 60)) + +(50) NativeProject +Output [2]: [ss_ext_discount_amt#83, ss_net_paid#84] +Input [3]: [#82#82, #83#83, #84#84] + +(51) NativeProject +Output [2]: [UnscaledValue(ss_ext_discount_amt#83) AS _c0#85, UnscaledValue(ss_net_paid#84) AS _c1#86] +Input [2]: [ss_ext_discount_amt#83, ss_net_paid#84] + +(52) NativeHashAggregate +Input [2]: [_c0#85, _c1#86] +Keys: [] +Functions [3]: [partial_count(1), partial_avg(_c0#85), partial_avg(_c1#86)] +Aggregate Attributes [5]: [count#87, sum#88, count#89, sum#90, count#91] +Results [1]: [#47#47] + +(53) NativeShuffleExchange +Input [1]: [#47#47] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=5] + +(54) ShuffleQueryStage +Output [1]: [#47#47] +Arguments: X + +(55) NativeHashAggregate +Input [1]: [#47#47] +Keys: [] +Functions [3]: [count(1), avg(UnscaledValue(ss_ext_discount_amt#83)), avg(UnscaledValue(ss_net_paid#84))] +Aggregate Attributes [3]: [count(1)#92, avg(UnscaledValue(ss_ext_discount_amt#83))#93, avg(UnscaledValue(ss_net_paid#84))#94] +Results [3]: [count(1)#92, avg(UnscaledValue(ss_ext_discount_amt#83))#93, avg(UnscaledValue(ss_net_paid#84))#94] + +(56) NativeProject +Output [3]: [count(1)#92 AS count(1)#95, cast((avg(UnscaledValue(ss_ext_discount_amt#83))#93 / 100.0) as decimal(11,6)) AS avg(ss_ext_discount_amt)#96, cast((avg(UnscaledValue(ss_net_paid#84))#94 / 100.0) as decimal(11,6)) AS avg(ss_net_paid)#97] +Input [3]: [count(1)#92, avg(UnscaledValue(ss_ext_discount_amt#83))#93, avg(UnscaledValue(ss_net_paid#84))#94] + +(57) NativeProject +Output [1]: [named_struct(count(1), count(1)#95, avg(ss_ext_discount_amt), avg(ss_ext_discount_amt)#96, avg(ss_net_paid), avg(ss_net_paid)#97) AS mergedValue#98] +Input [3]: [count(1)#95, avg(ss_ext_discount_amt)#96, avg(ss_net_paid)#97] + +(58) Scan parquet +Output [3]: [ss_quantity#82, ss_ext_discount_amt#83, ss_net_paid#84] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_quantity), GreaterThanOrEqual(ss_quantity,41), LessThanOrEqual(ss_quantity,60)] +ReadSchema: struct + +(59) Filter +Input [3]: [ss_quantity#82, ss_ext_discount_amt#83, ss_net_paid#84] +Condition : ((isnotnull(ss_quantity#82) AND (ss_quantity#82 >= 41)) AND (ss_quantity#82 <= 60)) + +(60) Project +Output [2]: [ss_ext_discount_amt#83, ss_net_paid#84] +Input [3]: [ss_quantity#82, ss_ext_discount_amt#83, ss_net_paid#84] + +(61) HashAggregate +Input [2]: [ss_ext_discount_amt#83, ss_net_paid#84] +Keys: [] +Functions [3]: [partial_count(1), partial_avg(UnscaledValue(ss_ext_discount_amt#83)), partial_avg(UnscaledValue(ss_net_paid#84))] +Aggregate Attributes [5]: [count#87, sum#88, count#89, sum#90, count#91] +Results [5]: [count#99, sum#100, count#101, sum#102, count#103] + +(62) Exchange +Input [5]: [count#99, sum#100, count#101, sum#102, count#103] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=6] + +(63) HashAggregate +Input [5]: [count#99, sum#100, count#101, sum#102, count#103] +Keys: [] +Functions [3]: [count(1), avg(UnscaledValue(ss_ext_discount_amt#83)), avg(UnscaledValue(ss_net_paid#84))] +Aggregate Attributes [3]: [count(1)#92, avg(UnscaledValue(ss_ext_discount_amt#83))#93, avg(UnscaledValue(ss_net_paid#84))#94] +Results [3]: [count(1)#92 AS count(1)#95, cast((avg(UnscaledValue(ss_ext_discount_amt#83))#93 / 100.0) as decimal(11,6)) AS avg(ss_ext_discount_amt)#96, cast((avg(UnscaledValue(ss_net_paid#84))#94 / 100.0) as decimal(11,6)) AS avg(ss_net_paid)#97] + +(64) Project +Output [1]: [named_struct(count(1), count(1)#95, avg(ss_ext_discount_amt), avg(ss_ext_discount_amt)#96, avg(ss_net_paid), avg(ss_net_paid)#97) AS mergedValue#98] +Input [3]: [count(1)#95, avg(ss_ext_discount_amt)#96, avg(ss_net_paid)#97] + +(65) AdaptiveSparkPlan +Output [1]: [mergedValue#98] +Arguments: isFinalPlan=true + +Subquery:8 Hosting operator id = 4 Hosting Expression = ReusedSubquery Subquery subquery#8, [id=#9] + +Subquery:9 Hosting operator id = 4 Hosting Expression = ReusedSubquery Subquery subquery#8, [id=#9] + +Subquery:10 Hosting operator id = 4 Hosting Expression = Subquery subquery#11, [id=#12] +AdaptiveSparkPlan (84) ++- == Final Plan == + NativeProject (76) + +- NativeProject (75) + +- NativeHashAggregate (74) + +- ShuffleQueryStage (73), Statistics(X) + +- NativeShuffleExchange (72) + +- NativeHashAggregate (71) + +- NativeProject (70) + +- NativeProject (69) + +- NativeFilter (68) + +- InputAdapter (67) + +- NativeParquetScan (66) ++- == Initial Plan == + Project (83) + +- HashAggregate (82) + +- Exchange (81) + +- HashAggregate (80) + +- Project (79) + +- Filter (78) + +- Scan parquet (77) + + +(77) Scan parquet +Output [3]: [ss_quantity#104, ss_ext_discount_amt#105, ss_net_paid#106] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_quantity), GreaterThanOrEqual(ss_quantity,61), LessThanOrEqual(ss_quantity,80)] +ReadSchema: struct + +(67) InputAdapter +Input [3]: [ss_quantity#104, ss_ext_discount_amt#105, ss_net_paid#106] +Arguments: [#104, #105, #106] + +(68) NativeFilter +Input [3]: [#104#104, #105#105, #106#106] +Condition : ((isnotnull(ss_quantity#104) AND (ss_quantity#104 >= 61)) AND (ss_quantity#104 <= 80)) + +(69) NativeProject +Output [2]: [ss_ext_discount_amt#105, ss_net_paid#106] +Input [3]: [#104#104, #105#105, #106#106] + +(70) NativeProject +Output [2]: [UnscaledValue(ss_ext_discount_amt#105) AS _c0#107, UnscaledValue(ss_net_paid#106) AS _c1#108] +Input [2]: [ss_ext_discount_amt#105, ss_net_paid#106] + +(71) NativeHashAggregate +Input [2]: [_c0#107, _c1#108] +Keys: [] +Functions [3]: [partial_count(1), partial_avg(_c0#107), partial_avg(_c1#108)] +Aggregate Attributes [5]: [count#109, sum#110, count#111, sum#112, count#113] +Results [1]: [#47#47] + +(72) NativeShuffleExchange +Input [1]: [#47#47] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=7] + +(73) ShuffleQueryStage +Output [1]: [#47#47] +Arguments: X + +(74) NativeHashAggregate +Input [1]: [#47#47] +Keys: [] +Functions [3]: [count(1), avg(UnscaledValue(ss_ext_discount_amt#105)), avg(UnscaledValue(ss_net_paid#106))] +Aggregate Attributes [3]: [count(1)#114, avg(UnscaledValue(ss_ext_discount_amt#105))#115, avg(UnscaledValue(ss_net_paid#106))#116] +Results [3]: [count(1)#114, avg(UnscaledValue(ss_ext_discount_amt#105))#115, avg(UnscaledValue(ss_net_paid#106))#116] + +(75) NativeProject +Output [3]: [count(1)#114 AS count(1)#117, cast((avg(UnscaledValue(ss_ext_discount_amt#105))#115 / 100.0) as decimal(11,6)) AS avg(ss_ext_discount_amt)#118, cast((avg(UnscaledValue(ss_net_paid#106))#116 / 100.0) as decimal(11,6)) AS avg(ss_net_paid)#119] +Input [3]: [count(1)#114, avg(UnscaledValue(ss_ext_discount_amt#105))#115, avg(UnscaledValue(ss_net_paid#106))#116] + +(76) NativeProject +Output [1]: [named_struct(count(1), count(1)#117, avg(ss_ext_discount_amt), avg(ss_ext_discount_amt)#118, avg(ss_net_paid), avg(ss_net_paid)#119) AS mergedValue#120] +Input [3]: [count(1)#117, avg(ss_ext_discount_amt)#118, avg(ss_net_paid)#119] + +(77) Scan parquet +Output [3]: [ss_quantity#104, ss_ext_discount_amt#105, ss_net_paid#106] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_quantity), GreaterThanOrEqual(ss_quantity,61), LessThanOrEqual(ss_quantity,80)] +ReadSchema: struct + +(78) Filter +Input [3]: [ss_quantity#104, ss_ext_discount_amt#105, ss_net_paid#106] +Condition : ((isnotnull(ss_quantity#104) AND (ss_quantity#104 >= 61)) AND (ss_quantity#104 <= 80)) + +(79) Project +Output [2]: [ss_ext_discount_amt#105, ss_net_paid#106] +Input [3]: [ss_quantity#104, ss_ext_discount_amt#105, ss_net_paid#106] + +(80) HashAggregate +Input [2]: [ss_ext_discount_amt#105, ss_net_paid#106] +Keys: [] +Functions [3]: [partial_count(1), partial_avg(UnscaledValue(ss_ext_discount_amt#105)), partial_avg(UnscaledValue(ss_net_paid#106))] +Aggregate Attributes [5]: [count#109, sum#110, count#111, sum#112, count#113] +Results [5]: [count#121, sum#122, count#123, sum#124, count#125] + +(81) Exchange +Input [5]: [count#121, sum#122, count#123, sum#124, count#125] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=8] + +(82) HashAggregate +Input [5]: [count#121, sum#122, count#123, sum#124, count#125] +Keys: [] +Functions [3]: [count(1), avg(UnscaledValue(ss_ext_discount_amt#105)), avg(UnscaledValue(ss_net_paid#106))] +Aggregate Attributes [3]: [count(1)#114, avg(UnscaledValue(ss_ext_discount_amt#105))#115, avg(UnscaledValue(ss_net_paid#106))#116] +Results [3]: [count(1)#114 AS count(1)#117, cast((avg(UnscaledValue(ss_ext_discount_amt#105))#115 / 100.0) as decimal(11,6)) AS avg(ss_ext_discount_amt)#118, cast((avg(UnscaledValue(ss_net_paid#106))#116 / 100.0) as decimal(11,6)) AS avg(ss_net_paid)#119] + +(83) Project +Output [1]: [named_struct(count(1), count(1)#117, avg(ss_ext_discount_amt), avg(ss_ext_discount_amt)#118, avg(ss_net_paid), avg(ss_net_paid)#119) AS mergedValue#120] +Input [3]: [count(1)#117, avg(ss_ext_discount_amt)#118, avg(ss_net_paid)#119] + +(84) AdaptiveSparkPlan +Output [1]: [mergedValue#120] +Arguments: isFinalPlan=true + +Subquery:11 Hosting operator id = 4 Hosting Expression = ReusedSubquery Subquery subquery#11, [id=#12] + +Subquery:12 Hosting operator id = 4 Hosting Expression = ReusedSubquery Subquery subquery#11, [id=#12] + +Subquery:13 Hosting operator id = 4 Hosting Expression = Subquery subquery#14, [id=#15] +AdaptiveSparkPlan (103) ++- == Final Plan == + NativeProject (95) + +- NativeProject (94) + +- NativeHashAggregate (93) + +- ShuffleQueryStage (92), Statistics(X) + +- NativeShuffleExchange (91) + +- NativeHashAggregate (90) + +- NativeProject (89) + +- NativeProject (88) + +- NativeFilter (87) + +- InputAdapter (86) + +- NativeParquetScan (85) ++- == Initial Plan == + Project (102) + +- HashAggregate (101) + +- Exchange (100) + +- HashAggregate (99) + +- Project (98) + +- Filter (97) + +- Scan parquet (96) + + +(96) Scan parquet +Output [3]: [ss_quantity#126, ss_ext_discount_amt#127, ss_net_paid#128] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_quantity), GreaterThanOrEqual(ss_quantity,81), LessThanOrEqual(ss_quantity,100)] +ReadSchema: struct + +(86) InputAdapter +Input [3]: [ss_quantity#126, ss_ext_discount_amt#127, ss_net_paid#128] +Arguments: [#126, #127, #128] + +(87) NativeFilter +Input [3]: [#126#126, #127#127, #128#128] +Condition : ((isnotnull(ss_quantity#126) AND (ss_quantity#126 >= 81)) AND (ss_quantity#126 <= 100)) + +(88) NativeProject +Output [2]: [ss_ext_discount_amt#127, ss_net_paid#128] +Input [3]: [#126#126, #127#127, #128#128] + +(89) NativeProject +Output [2]: [UnscaledValue(ss_ext_discount_amt#127) AS _c0#129, UnscaledValue(ss_net_paid#128) AS _c1#130] +Input [2]: [ss_ext_discount_amt#127, ss_net_paid#128] + +(90) NativeHashAggregate +Input [2]: [_c0#129, _c1#130] +Keys: [] +Functions [3]: [partial_count(1), partial_avg(_c0#129), partial_avg(_c1#130)] +Aggregate Attributes [5]: [count#131, sum#132, count#133, sum#134, count#135] +Results [1]: [#47#47] + +(91) NativeShuffleExchange +Input [1]: [#47#47] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=9] + +(92) ShuffleQueryStage +Output [1]: [#47#47] +Arguments: X + +(93) NativeHashAggregate +Input [1]: [#47#47] +Keys: [] +Functions [3]: [count(1), avg(UnscaledValue(ss_ext_discount_amt#127)), avg(UnscaledValue(ss_net_paid#128))] +Aggregate Attributes [3]: [count(1)#136, avg(UnscaledValue(ss_ext_discount_amt#127))#137, avg(UnscaledValue(ss_net_paid#128))#138] +Results [3]: [count(1)#136, avg(UnscaledValue(ss_ext_discount_amt#127))#137, avg(UnscaledValue(ss_net_paid#128))#138] + +(94) NativeProject +Output [3]: [count(1)#136 AS count(1)#139, cast((avg(UnscaledValue(ss_ext_discount_amt#127))#137 / 100.0) as decimal(11,6)) AS avg(ss_ext_discount_amt)#140, cast((avg(UnscaledValue(ss_net_paid#128))#138 / 100.0) as decimal(11,6)) AS avg(ss_net_paid)#141] +Input [3]: [count(1)#136, avg(UnscaledValue(ss_ext_discount_amt#127))#137, avg(UnscaledValue(ss_net_paid#128))#138] + +(95) NativeProject +Output [1]: [named_struct(count(1), count(1)#139, avg(ss_ext_discount_amt), avg(ss_ext_discount_amt)#140, avg(ss_net_paid), avg(ss_net_paid)#141) AS mergedValue#142] +Input [3]: [count(1)#139, avg(ss_ext_discount_amt)#140, avg(ss_net_paid)#141] + +(96) Scan parquet +Output [3]: [ss_quantity#126, ss_ext_discount_amt#127, ss_net_paid#128] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_quantity), GreaterThanOrEqual(ss_quantity,81), LessThanOrEqual(ss_quantity,100)] +ReadSchema: struct + +(97) Filter +Input [3]: [ss_quantity#126, ss_ext_discount_amt#127, ss_net_paid#128] +Condition : ((isnotnull(ss_quantity#126) AND (ss_quantity#126 >= 81)) AND (ss_quantity#126 <= 100)) + +(98) Project +Output [2]: [ss_ext_discount_amt#127, ss_net_paid#128] +Input [3]: [ss_quantity#126, ss_ext_discount_amt#127, ss_net_paid#128] + +(99) HashAggregate +Input [2]: [ss_ext_discount_amt#127, ss_net_paid#128] +Keys: [] +Functions [3]: [partial_count(1), partial_avg(UnscaledValue(ss_ext_discount_amt#127)), partial_avg(UnscaledValue(ss_net_paid#128))] +Aggregate Attributes [5]: [count#131, sum#132, count#133, sum#134, count#135] +Results [5]: [count#143, sum#144, count#145, sum#146, count#147] + +(100) Exchange +Input [5]: [count#143, sum#144, count#145, sum#146, count#147] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=10] + +(101) HashAggregate +Input [5]: [count#143, sum#144, count#145, sum#146, count#147] +Keys: [] +Functions [3]: [count(1), avg(UnscaledValue(ss_ext_discount_amt#127)), avg(UnscaledValue(ss_net_paid#128))] +Aggregate Attributes [3]: [count(1)#136, avg(UnscaledValue(ss_ext_discount_amt#127))#137, avg(UnscaledValue(ss_net_paid#128))#138] +Results [3]: [count(1)#136 AS count(1)#139, cast((avg(UnscaledValue(ss_ext_discount_amt#127))#137 / 100.0) as decimal(11,6)) AS avg(ss_ext_discount_amt)#140, cast((avg(UnscaledValue(ss_net_paid#128))#138 / 100.0) as decimal(11,6)) AS avg(ss_net_paid)#141] + +(102) Project +Output [1]: [named_struct(count(1), count(1)#139, avg(ss_ext_discount_amt), avg(ss_ext_discount_amt)#140, avg(ss_net_paid), avg(ss_net_paid)#141) AS mergedValue#142] +Input [3]: [count(1)#139, avg(ss_ext_discount_amt)#140, avg(ss_net_paid)#141] + +(103) AdaptiveSparkPlan +Output [1]: [mergedValue#142] +Arguments: isFinalPlan=true + +Subquery:14 Hosting operator id = 4 Hosting Expression = ReusedSubquery Subquery subquery#14, [id=#15] + +Subquery:15 Hosting operator id = 4 Hosting Expression = ReusedSubquery Subquery subquery#14, [id=#15] + + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q90.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q90.txt new file mode 100644 index 000000000..47b42a416 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q90.txt @@ -0,0 +1,878 @@ +== Physical Plan == +AdaptiveSparkPlan (160) ++- == Final Plan == + * Project (93) + +- CartesianProduct Inner (92) + :- NativeProject (56) + : +- NativeHashAggregate (55) + : +- ShuffleQueryStage (54), Statistics(X) + : +- NativeShuffleExchange (53) + : +- NativeHashAggregate (52) + : +- NativeProject (51) + : +- NativeSortMergeJoin Inner (50) + : :- NativeSort (40) + : : +- InputAdapter (39) + : : +- AQEShuffleRead (38) + : : +- ShuffleQueryStage (37), Statistics(X) + : : +- NativeShuffleExchange (36) + : : +- NativeProject (35) + : : +- NativeSortMergeJoin Inner (34) + : : :- 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 (33) + : : +- InputAdapter (32) + : : +- AQEShuffleRead (31) + : : +- ShuffleQueryStage (30), Statistics(X) + : : +- NativeShuffleExchange (29) + : : +- NativeProject (28) + : : +- NativeFilter (27) + : : +- InputAdapter (26) + : : +- NativeParquetScan (25) + : +- NativeSort (49) + : +- InputAdapter (48) + : +- AQEShuffleRead (47) + : +- ShuffleQueryStage (46), Statistics(X) + : +- NativeShuffleExchange (45) + : +- NativeProject (44) + : +- NativeFilter (43) + : +- InputAdapter (42) + : +- NativeParquetScan (41) + +- NativeProject (91) + +- NativeHashAggregate (90) + +- ShuffleQueryStage (89), Statistics(X) + +- NativeShuffleExchange (88) + +- NativeHashAggregate (87) + +- NativeProject (86) + +- NativeSortMergeJoin Inner (85) + :- NativeSort (78) + : +- InputAdapter (77) + : +- AQEShuffleRead (76) + : +- ShuffleQueryStage (75), Statistics(X) + : +- NativeShuffleExchange (74) + : +- NativeProject (73) + : +- NativeSortMergeJoin Inner (72) + : :- NativeSort (62) + : : +- InputAdapter (61) + : : +- InputAdapter (60) + : : +- AQEShuffleRead (59) + : : +- ShuffleQueryStage (58), Statistics(X) + : : +- ReusedExchange (57) + : +- NativeSort (71) + : +- InputAdapter (70) + : +- AQEShuffleRead (69) + : +- ShuffleQueryStage (68), Statistics(X) + : +- NativeShuffleExchange (67) + : +- NativeProject (66) + : +- NativeFilter (65) + : +- InputAdapter (64) + : +- NativeParquetScan (63) + +- NativeSort (84) + +- InputAdapter (83) + +- InputAdapter (82) + +- AQEShuffleRead (81) + +- ShuffleQueryStage (80), Statistics(X) + +- ReusedExchange (79) ++- == Initial Plan == + Project (159) + +- CartesianProduct Inner (158) + :- HashAggregate (125) + : +- Exchange (124) + : +- HashAggregate (123) + : +- Project (122) + : +- SortMergeJoin Inner (121) + : :- Sort (115) + : : +- Exchange (114) + : : +- Project (113) + : : +- SortMergeJoin Inner (112) + : : :- Sort (106) + : : : +- Exchange (105) + : : : +- Project (104) + : : : +- SortMergeJoin Inner (103) + : : : :- Sort (97) + : : : : +- Exchange (96) + : : : : +- Filter (95) + : : : : +- Scan parquet (94) + : : : +- Sort (102) + : : : +- Exchange (101) + : : : +- Project (100) + : : : +- Filter (99) + : : : +- Scan parquet (98) + : : +- Sort (111) + : : +- Exchange (110) + : : +- Project (109) + : : +- Filter (108) + : : +- Scan parquet (107) + : +- Sort (120) + : +- Exchange (119) + : +- Project (118) + : +- Filter (117) + : +- Scan parquet (116) + +- HashAggregate (157) + +- Exchange (156) + +- HashAggregate (155) + +- Project (154) + +- SortMergeJoin Inner (153) + :- Sort (147) + : +- Exchange (146) + : +- Project (145) + : +- SortMergeJoin Inner (144) + : :- Sort (138) + : : +- Exchange (137) + : : +- Project (136) + : : +- SortMergeJoin Inner (135) + : : :- Sort (129) + : : : +- Exchange (128) + : : : +- Filter (127) + : : : +- Scan parquet (126) + : : +- Sort (134) + : : +- Exchange (133) + : : +- Project (132) + : : +- Filter (131) + : : +- Scan parquet (130) + : +- Sort (143) + : +- Exchange (142) + : +- Project (141) + : +- Filter (140) + : +- Scan parquet (139) + +- Sort (152) + +- Exchange (151) + +- Project (150) + +- Filter (149) + +- Scan parquet (148) + + +(94) Scan parquet +Output [3]: [ws_sold_time_sk#1, ws_ship_hdemo_sk#2, ws_web_page_sk#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_ship_hdemo_sk), IsNotNull(ws_sold_time_sk), IsNotNull(ws_web_page_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [ws_sold_time_sk#1, ws_ship_hdemo_sk#2, ws_web_page_sk#3] +Arguments: [#1, #2, #3] + +(3) NativeFilter +Input [3]: [#1#1, #2#2, #3#3] +Condition : ((isnotnull(ws_ship_hdemo_sk#2) AND isnotnull(ws_sold_time_sk#1)) AND isnotnull(ws_web_page_sk#3)) + +(4) NativeShuffleExchange +Input [3]: [#1#1, #2#2, #3#3] +Arguments: hashpartitioning(ws_ship_hdemo_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [3]: [#1#1, #2#2, #3#3] +Arguments: X + +(6) AQEShuffleRead +Input [3]: [#1#1, #2#2, #3#3] +Arguments: coalesced + +(7) InputAdapter +Input [3]: [#1#1, #2#2, #3#3] + +(8) NativeSort +Input [3]: [#1#1, #2#2, #3#3] +Arguments: [ws_ship_hdemo_sk#2 ASC NULLS FIRST], false + +(98) Scan parquet +Output [2]: [hd_demo_sk#4, hd_dep_count#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(hd_dep_count), EqualTo(hd_dep_count,6), IsNotNull(hd_demo_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [hd_demo_sk#4, hd_dep_count#5] +Arguments: [#4, #5] + +(11) NativeFilter +Input [2]: [#4#4, #5#5] +Condition : ((isnotnull(hd_dep_count#5) AND (hd_dep_count#5 = 6)) AND isnotnull(hd_demo_sk#4)) + +(12) NativeProject +Output [1]: [hd_demo_sk#4] +Input [2]: [#4#4, #5#5] + +(13) NativeShuffleExchange +Input [1]: [hd_demo_sk#4] +Arguments: hashpartitioning(hd_demo_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [1]: [hd_demo_sk#4] +Arguments: X + +(15) AQEShuffleRead +Input [1]: [hd_demo_sk#4] +Arguments: coalesced + +(16) InputAdapter +Input [1]: [hd_demo_sk#4] + +(17) NativeSort +Input [1]: [hd_demo_sk#4] +Arguments: [hd_demo_sk#4 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [ws_ship_hdemo_sk#2] +Right keys [1]: [hd_demo_sk#4] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [2]: [ws_sold_time_sk#1, ws_web_page_sk#3] +Input [4]: [#1#1, #2#2, #3#3, hd_demo_sk#4] + +(20) NativeShuffleExchange +Input [2]: [ws_sold_time_sk#1, ws_web_page_sk#3] +Arguments: hashpartitioning(ws_sold_time_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [2]: [ws_sold_time_sk#1, ws_web_page_sk#3] +Arguments: X + +(22) AQEShuffleRead +Input [2]: [ws_sold_time_sk#1, ws_web_page_sk#3] +Arguments: coalesced + +(23) InputAdapter +Input [2]: [ws_sold_time_sk#1, ws_web_page_sk#3] + +(24) NativeSort +Input [2]: [ws_sold_time_sk#1, ws_web_page_sk#3] +Arguments: [ws_sold_time_sk#1 ASC NULLS FIRST], false + +(107) Scan parquet +Output [2]: [t_time_sk#6, t_hour#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(t_hour), GreaterThanOrEqual(t_hour,8), LessThanOrEqual(t_hour,9), IsNotNull(t_time_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [2]: [t_time_sk#6, t_hour#7] +Arguments: [#6, #7] + +(27) NativeFilter +Input [2]: [#6#6, #7#7] +Condition : (((isnotnull(t_hour#7) AND (t_hour#7 >= 8)) AND (t_hour#7 <= 9)) AND isnotnull(t_time_sk#6)) + +(28) NativeProject +Output [1]: [t_time_sk#6] +Input [2]: [#6#6, #7#7] + +(29) NativeShuffleExchange +Input [1]: [t_time_sk#6] +Arguments: hashpartitioning(t_time_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(30) ShuffleQueryStage +Output [1]: [t_time_sk#6] +Arguments: X + +(31) AQEShuffleRead +Input [1]: [t_time_sk#6] +Arguments: coalesced + +(32) InputAdapter +Input [1]: [t_time_sk#6] + +(33) NativeSort +Input [1]: [t_time_sk#6] +Arguments: [t_time_sk#6 ASC NULLS FIRST], false + +(34) NativeSortMergeJoin +Left keys [1]: [ws_sold_time_sk#1] +Right keys [1]: [t_time_sk#6] +Join type: Inner +Join condition: None + +(35) NativeProject +Output [1]: [ws_web_page_sk#3] +Input [3]: [ws_sold_time_sk#1, ws_web_page_sk#3, t_time_sk#6] + +(36) NativeShuffleExchange +Input [1]: [ws_web_page_sk#3] +Arguments: hashpartitioning(ws_web_page_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [1]: [ws_web_page_sk#3] +Arguments: X + +(38) AQEShuffleRead +Input [1]: [ws_web_page_sk#3] +Arguments: coalesced + +(39) InputAdapter +Input [1]: [ws_web_page_sk#3] + +(40) NativeSort +Input [1]: [ws_web_page_sk#3] +Arguments: [ws_web_page_sk#3 ASC NULLS FIRST], false + +(116) Scan parquet +Output [2]: [wp_web_page_sk#8, wp_char_count#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wp_char_count), GreaterThanOrEqual(wp_char_count,5000), LessThanOrEqual(wp_char_count,5200), IsNotNull(wp_web_page_sk)] +ReadSchema: struct + +(42) InputAdapter +Input [2]: [wp_web_page_sk#8, wp_char_count#9] +Arguments: [#8, #9] + +(43) NativeFilter +Input [2]: [#8#8, #9#9] +Condition : (((isnotnull(wp_char_count#9) AND (wp_char_count#9 >= 5000)) AND (wp_char_count#9 <= 5200)) AND isnotnull(wp_web_page_sk#8)) + +(44) NativeProject +Output [1]: [wp_web_page_sk#8] +Input [2]: [#8#8, #9#9] + +(45) NativeShuffleExchange +Input [1]: [wp_web_page_sk#8] +Arguments: hashpartitioning(wp_web_page_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(46) ShuffleQueryStage +Output [1]: [wp_web_page_sk#8] +Arguments: X + +(47) AQEShuffleRead +Input [1]: [wp_web_page_sk#8] +Arguments: coalesced + +(48) InputAdapter +Input [1]: [wp_web_page_sk#8] + +(49) NativeSort +Input [1]: [wp_web_page_sk#8] +Arguments: [wp_web_page_sk#8 ASC NULLS FIRST], false + +(50) NativeSortMergeJoin +Left keys [1]: [ws_web_page_sk#3] +Right keys [1]: [wp_web_page_sk#8] +Join type: Inner +Join condition: None + +(51) NativeProject +Output: [] +Input [2]: [ws_web_page_sk#3, wp_web_page_sk#8] + +(52) NativeHashAggregate +Input: [] +Keys: [] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#10] +Results [1]: [#11#11] + +(53) NativeShuffleExchange +Input [1]: [#11#11] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=7] + +(54) ShuffleQueryStage +Output [1]: [#11#11] +Arguments: X + +(55) NativeHashAggregate +Input [1]: [#11#11] +Keys: [] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#12] +Results [1]: [count(1)#12] + +(56) NativeProject +Output [1]: [count(1)#12 AS amc#13] +Input [1]: [count(1)#12] + +(57) ReusedExchange [Reuses operator id: 20] +Output [2]: [ws_sold_time_sk#14, ws_web_page_sk#15] + +(58) ShuffleQueryStage +Output [2]: [ws_sold_time_sk#14, ws_web_page_sk#15] +Arguments: X + +(59) AQEShuffleRead +Input [2]: [ws_sold_time_sk#14, ws_web_page_sk#15] +Arguments: coalesced + +(60) InputAdapter +Input [2]: [ws_sold_time_sk#14, ws_web_page_sk#15] +Arguments: [#14, #15] + +(61) InputAdapter +Input [2]: [#14#14, #15#15] + +(62) NativeSort +Input [2]: [#14#14, #15#15] +Arguments: [ws_sold_time_sk#14 ASC NULLS FIRST], false + +(139) Scan parquet +Output [2]: [t_time_sk#16, t_hour#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(t_hour), GreaterThanOrEqual(t_hour,19), LessThanOrEqual(t_hour,20), IsNotNull(t_time_sk)] +ReadSchema: struct + +(64) InputAdapter +Input [2]: [t_time_sk#16, t_hour#17] +Arguments: [#16, #17] + +(65) NativeFilter +Input [2]: [#16#16, #17#17] +Condition : (((isnotnull(t_hour#17) AND (t_hour#17 >= 19)) AND (t_hour#17 <= 20)) AND isnotnull(t_time_sk#16)) + +(66) NativeProject +Output [1]: [t_time_sk#16] +Input [2]: [#16#16, #17#17] + +(67) NativeShuffleExchange +Input [1]: [t_time_sk#16] +Arguments: hashpartitioning(t_time_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(68) ShuffleQueryStage +Output [1]: [t_time_sk#16] +Arguments: X + +(69) AQEShuffleRead +Input [1]: [t_time_sk#16] +Arguments: coalesced + +(70) InputAdapter +Input [1]: [t_time_sk#16] + +(71) NativeSort +Input [1]: [t_time_sk#16] +Arguments: [t_time_sk#16 ASC NULLS FIRST], false + +(72) NativeSortMergeJoin +Left keys [1]: [ws_sold_time_sk#14] +Right keys [1]: [t_time_sk#16] +Join type: Inner +Join condition: None + +(73) NativeProject +Output [1]: [ws_web_page_sk#15] +Input [3]: [#14#14, #15#15, t_time_sk#16] + +(74) NativeShuffleExchange +Input [1]: [ws_web_page_sk#15] +Arguments: hashpartitioning(ws_web_page_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(75) ShuffleQueryStage +Output [1]: [ws_web_page_sk#15] +Arguments: X + +(76) AQEShuffleRead +Input [1]: [ws_web_page_sk#15] +Arguments: coalesced + +(77) InputAdapter +Input [1]: [ws_web_page_sk#15] + +(78) NativeSort +Input [1]: [ws_web_page_sk#15] +Arguments: [ws_web_page_sk#15 ASC NULLS FIRST], false + +(79) ReusedExchange [Reuses operator id: 45] +Output [1]: [wp_web_page_sk#18] + +(80) ShuffleQueryStage +Output [1]: [wp_web_page_sk#18] +Arguments: X + +(81) AQEShuffleRead +Input [1]: [wp_web_page_sk#18] +Arguments: coalesced + +(82) InputAdapter +Input [1]: [wp_web_page_sk#18] +Arguments: [#18] + +(83) InputAdapter +Input [1]: [#18#18] + +(84) NativeSort +Input [1]: [#18#18] +Arguments: [wp_web_page_sk#18 ASC NULLS FIRST], false + +(85) NativeSortMergeJoin +Left keys [1]: [ws_web_page_sk#15] +Right keys [1]: [wp_web_page_sk#18] +Join type: Inner +Join condition: None + +(86) NativeProject +Output: [] +Input [2]: [ws_web_page_sk#15, #18#18] + +(87) NativeHashAggregate +Input: [] +Keys: [] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#19] +Results [1]: [#11#11] + +(88) NativeShuffleExchange +Input [1]: [#11#11] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=10] + +(89) ShuffleQueryStage +Output [1]: [#11#11] +Arguments: X + +(90) NativeHashAggregate +Input [1]: [#11#11] +Keys: [] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#20] +Results [1]: [count(1)#20] + +(91) NativeProject +Output [1]: [count(1)#20 AS pmc#21] +Input [1]: [count(1)#20] + +(92) CartesianProduct +Join type: Inner +Join condition: None + +(93) Project [codegen id : 1] +Output [1]: [(cast(amc#13 as decimal(15,4)) / cast(pmc#21 as decimal(15,4))) AS am_pm_ratio#22] +Input [2]: [amc#13, pmc#21] + +(94) Scan parquet +Output [3]: [ws_sold_time_sk#1, ws_ship_hdemo_sk#2, ws_web_page_sk#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_ship_hdemo_sk), IsNotNull(ws_sold_time_sk), IsNotNull(ws_web_page_sk)] +ReadSchema: struct + +(95) Filter +Input [3]: [ws_sold_time_sk#1, ws_ship_hdemo_sk#2, ws_web_page_sk#3] +Condition : ((isnotnull(ws_ship_hdemo_sk#2) AND isnotnull(ws_sold_time_sk#1)) AND isnotnull(ws_web_page_sk#3)) + +(96) Exchange +Input [3]: [ws_sold_time_sk#1, ws_ship_hdemo_sk#2, ws_web_page_sk#3] +Arguments: hashpartitioning(ws_ship_hdemo_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(97) Sort +Input [3]: [ws_sold_time_sk#1, ws_ship_hdemo_sk#2, ws_web_page_sk#3] +Arguments: [ws_ship_hdemo_sk#2 ASC NULLS FIRST], false, 0 + +(98) Scan parquet +Output [2]: [hd_demo_sk#4, hd_dep_count#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(hd_dep_count), EqualTo(hd_dep_count,6), IsNotNull(hd_demo_sk)] +ReadSchema: struct + +(99) Filter +Input [2]: [hd_demo_sk#4, hd_dep_count#5] +Condition : ((isnotnull(hd_dep_count#5) AND (hd_dep_count#5 = 6)) AND isnotnull(hd_demo_sk#4)) + +(100) Project +Output [1]: [hd_demo_sk#4] +Input [2]: [hd_demo_sk#4, hd_dep_count#5] + +(101) Exchange +Input [1]: [hd_demo_sk#4] +Arguments: hashpartitioning(hd_demo_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(102) Sort +Input [1]: [hd_demo_sk#4] +Arguments: [hd_demo_sk#4 ASC NULLS FIRST], false, 0 + +(103) SortMergeJoin +Left keys [1]: [ws_ship_hdemo_sk#2] +Right keys [1]: [hd_demo_sk#4] +Join type: Inner +Join condition: None + +(104) Project +Output [2]: [ws_sold_time_sk#1, ws_web_page_sk#3] +Input [4]: [ws_sold_time_sk#1, ws_ship_hdemo_sk#2, ws_web_page_sk#3, hd_demo_sk#4] + +(105) Exchange +Input [2]: [ws_sold_time_sk#1, ws_web_page_sk#3] +Arguments: hashpartitioning(ws_sold_time_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(106) Sort +Input [2]: [ws_sold_time_sk#1, ws_web_page_sk#3] +Arguments: [ws_sold_time_sk#1 ASC NULLS FIRST], false, 0 + +(107) Scan parquet +Output [2]: [t_time_sk#6, t_hour#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(t_hour), GreaterThanOrEqual(t_hour,8), LessThanOrEqual(t_hour,9), IsNotNull(t_time_sk)] +ReadSchema: struct + +(108) Filter +Input [2]: [t_time_sk#6, t_hour#7] +Condition : (((isnotnull(t_hour#7) AND (t_hour#7 >= 8)) AND (t_hour#7 <= 9)) AND isnotnull(t_time_sk#6)) + +(109) Project +Output [1]: [t_time_sk#6] +Input [2]: [t_time_sk#6, t_hour#7] + +(110) Exchange +Input [1]: [t_time_sk#6] +Arguments: hashpartitioning(t_time_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(111) Sort +Input [1]: [t_time_sk#6] +Arguments: [t_time_sk#6 ASC NULLS FIRST], false, 0 + +(112) SortMergeJoin +Left keys [1]: [ws_sold_time_sk#1] +Right keys [1]: [t_time_sk#6] +Join type: Inner +Join condition: None + +(113) Project +Output [1]: [ws_web_page_sk#3] +Input [3]: [ws_sold_time_sk#1, ws_web_page_sk#3, t_time_sk#6] + +(114) Exchange +Input [1]: [ws_web_page_sk#3] +Arguments: hashpartitioning(ws_web_page_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(115) Sort +Input [1]: [ws_web_page_sk#3] +Arguments: [ws_web_page_sk#3 ASC NULLS FIRST], false, 0 + +(116) Scan parquet +Output [2]: [wp_web_page_sk#8, wp_char_count#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wp_char_count), GreaterThanOrEqual(wp_char_count,5000), LessThanOrEqual(wp_char_count,5200), IsNotNull(wp_web_page_sk)] +ReadSchema: struct + +(117) Filter +Input [2]: [wp_web_page_sk#8, wp_char_count#9] +Condition : (((isnotnull(wp_char_count#9) AND (wp_char_count#9 >= 5000)) AND (wp_char_count#9 <= 5200)) AND isnotnull(wp_web_page_sk#8)) + +(118) Project +Output [1]: [wp_web_page_sk#8] +Input [2]: [wp_web_page_sk#8, wp_char_count#9] + +(119) Exchange +Input [1]: [wp_web_page_sk#8] +Arguments: hashpartitioning(wp_web_page_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(120) Sort +Input [1]: [wp_web_page_sk#8] +Arguments: [wp_web_page_sk#8 ASC NULLS FIRST], false, 0 + +(121) SortMergeJoin +Left keys [1]: [ws_web_page_sk#3] +Right keys [1]: [wp_web_page_sk#8] +Join type: Inner +Join condition: None + +(122) Project +Output: [] +Input [2]: [ws_web_page_sk#3, wp_web_page_sk#8] + +(123) HashAggregate +Input: [] +Keys: [] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#10] +Results [1]: [count#23] + +(124) Exchange +Input [1]: [count#23] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=17] + +(125) HashAggregate +Input [1]: [count#23] +Keys: [] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#12] +Results [1]: [count(1)#12 AS amc#13] + +(126) Scan parquet +Output [3]: [ws_sold_time_sk#14, ws_ship_hdemo_sk#24, ws_web_page_sk#15] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_ship_hdemo_sk), IsNotNull(ws_sold_time_sk), IsNotNull(ws_web_page_sk)] +ReadSchema: struct + +(127) Filter +Input [3]: [ws_sold_time_sk#14, ws_ship_hdemo_sk#24, ws_web_page_sk#15] +Condition : ((isnotnull(ws_ship_hdemo_sk#24) AND isnotnull(ws_sold_time_sk#14)) AND isnotnull(ws_web_page_sk#15)) + +(128) Exchange +Input [3]: [ws_sold_time_sk#14, ws_ship_hdemo_sk#24, ws_web_page_sk#15] +Arguments: hashpartitioning(ws_ship_hdemo_sk#24, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(129) Sort +Input [3]: [ws_sold_time_sk#14, ws_ship_hdemo_sk#24, ws_web_page_sk#15] +Arguments: [ws_ship_hdemo_sk#24 ASC NULLS FIRST], false, 0 + +(130) Scan parquet +Output [2]: [hd_demo_sk#25, hd_dep_count#26] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(hd_dep_count), EqualTo(hd_dep_count,6), IsNotNull(hd_demo_sk)] +ReadSchema: struct + +(131) Filter +Input [2]: [hd_demo_sk#25, hd_dep_count#26] +Condition : ((isnotnull(hd_dep_count#26) AND (hd_dep_count#26 = 6)) AND isnotnull(hd_demo_sk#25)) + +(132) Project +Output [1]: [hd_demo_sk#25] +Input [2]: [hd_demo_sk#25, hd_dep_count#26] + +(133) Exchange +Input [1]: [hd_demo_sk#25] +Arguments: hashpartitioning(hd_demo_sk#25, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(134) Sort +Input [1]: [hd_demo_sk#25] +Arguments: [hd_demo_sk#25 ASC NULLS FIRST], false, 0 + +(135) SortMergeJoin +Left keys [1]: [ws_ship_hdemo_sk#24] +Right keys [1]: [hd_demo_sk#25] +Join type: Inner +Join condition: None + +(136) Project +Output [2]: [ws_sold_time_sk#14, ws_web_page_sk#15] +Input [4]: [ws_sold_time_sk#14, ws_ship_hdemo_sk#24, ws_web_page_sk#15, hd_demo_sk#25] + +(137) Exchange +Input [2]: [ws_sold_time_sk#14, ws_web_page_sk#15] +Arguments: hashpartitioning(ws_sold_time_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(138) Sort +Input [2]: [ws_sold_time_sk#14, ws_web_page_sk#15] +Arguments: [ws_sold_time_sk#14 ASC NULLS FIRST], false, 0 + +(139) Scan parquet +Output [2]: [t_time_sk#16, t_hour#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(t_hour), GreaterThanOrEqual(t_hour,19), LessThanOrEqual(t_hour,20), IsNotNull(t_time_sk)] +ReadSchema: struct + +(140) Filter +Input [2]: [t_time_sk#16, t_hour#17] +Condition : (((isnotnull(t_hour#17) AND (t_hour#17 >= 19)) AND (t_hour#17 <= 20)) AND isnotnull(t_time_sk#16)) + +(141) Project +Output [1]: [t_time_sk#16] +Input [2]: [t_time_sk#16, t_hour#17] + +(142) Exchange +Input [1]: [t_time_sk#16] +Arguments: hashpartitioning(t_time_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(143) Sort +Input [1]: [t_time_sk#16] +Arguments: [t_time_sk#16 ASC NULLS FIRST], false, 0 + +(144) SortMergeJoin +Left keys [1]: [ws_sold_time_sk#14] +Right keys [1]: [t_time_sk#16] +Join type: Inner +Join condition: None + +(145) Project +Output [1]: [ws_web_page_sk#15] +Input [3]: [ws_sold_time_sk#14, ws_web_page_sk#15, t_time_sk#16] + +(146) Exchange +Input [1]: [ws_web_page_sk#15] +Arguments: hashpartitioning(ws_web_page_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(147) Sort +Input [1]: [ws_web_page_sk#15] +Arguments: [ws_web_page_sk#15 ASC NULLS FIRST], false, 0 + +(148) Scan parquet +Output [2]: [wp_web_page_sk#18, wp_char_count#27] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wp_char_count), GreaterThanOrEqual(wp_char_count,5000), LessThanOrEqual(wp_char_count,5200), IsNotNull(wp_web_page_sk)] +ReadSchema: struct + +(149) Filter +Input [2]: [wp_web_page_sk#18, wp_char_count#27] +Condition : (((isnotnull(wp_char_count#27) AND (wp_char_count#27 >= 5000)) AND (wp_char_count#27 <= 5200)) AND isnotnull(wp_web_page_sk#18)) + +(150) Project +Output [1]: [wp_web_page_sk#18] +Input [2]: [wp_web_page_sk#18, wp_char_count#27] + +(151) Exchange +Input [1]: [wp_web_page_sk#18] +Arguments: hashpartitioning(wp_web_page_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(152) Sort +Input [1]: [wp_web_page_sk#18] +Arguments: [wp_web_page_sk#18 ASC NULLS FIRST], false, 0 + +(153) SortMergeJoin +Left keys [1]: [ws_web_page_sk#15] +Right keys [1]: [wp_web_page_sk#18] +Join type: Inner +Join condition: None + +(154) Project +Output: [] +Input [2]: [ws_web_page_sk#15, wp_web_page_sk#18] + +(155) HashAggregate +Input: [] +Keys: [] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#19] +Results [1]: [count#28] + +(156) Exchange +Input [1]: [count#28] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=24] + +(157) HashAggregate +Input [1]: [count#28] +Keys: [] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#20] +Results [1]: [count(1)#20 AS pmc#21] + +(158) CartesianProduct +Join type: Inner +Join condition: None + +(159) Project +Output [1]: [(cast(amc#13 as decimal(15,4)) / cast(pmc#21 as decimal(15,4))) AS am_pm_ratio#22] +Input [2]: [amc#13, pmc#21] + +(160) AdaptiveSparkPlan +Output [1]: [am_pm_ratio#22] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q91.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q91.txt new file mode 100644 index 000000000..1ad82001a --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q91.txt @@ -0,0 +1,885 @@ +== Physical Plan == +AdaptiveSparkPlan (163) ++- == Final Plan == + NativeProject (104) + +- NativeHashAggregate (103) + +- InputAdapter (102) + +- AQEShuffleRead (101) + +- ShuffleQueryStage (100), Statistics(X) + +- NativeShuffleExchange (99) + +- NativeHashAggregate (98) + +- NativeProject (97) + +- NativeProject (96) + +- NativeSortMergeJoin Inner (95) + :- NativeSort (85) + : +- InputAdapter (84) + : +- AQEShuffleRead (83) + : +- ShuffleQueryStage (82), Statistics(X) + : +- NativeShuffleExchange (81) + : +- NativeProject (80) + : +- NativeSortMergeJoin Inner (79) + : :- NativeSort (70) + : : +- InputAdapter (69) + : : +- AQEShuffleRead (68) + : : +- ShuffleQueryStage (67), Statistics(X) + : : +- NativeShuffleExchange (66) + : : +- NativeProject (65) + : : +- NativeSortMergeJoin Inner (64) + : : :- NativeSort (54) + : : : +- InputAdapter (53) + : : : +- AQEShuffleRead (52) + : : : +- ShuffleQueryStage (51), Statistics(X) + : : : +- NativeShuffleExchange (50) + : : : +- NativeProject (49) + : : : +- NativeSortMergeJoin Inner (48) + : : : :- NativeSort (39) + : : : : +- InputAdapter (38) + : : : : +- AQEShuffleRead (37) + : : : : +- ShuffleQueryStage (36), Statistics(X) + : : : : +- NativeShuffleExchange (35) + : : : : +- NativeProject (34) + : : : : +- NativeSortMergeJoin Inner (33) + : : : : :- NativeSort (23) + : : : : : +- InputAdapter (22) + : : : : : +- AQEShuffleRead (21) + : : : : : +- ShuffleQueryStage (20), Statistics(X) + : : : : : +- NativeShuffleExchange (19) + : : : : : +- NativeProject (18) + : : : : : +- NativeSortMergeJoin Inner (17) + : : : : : :- NativeSort (8) + : : : : : : +- InputAdapter (7) + : : : : : : +- AQEShuffleRead (6) + : : : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : : : +- NativeShuffleExchange (4) + : : : : : : +- NativeFilter (3) + : : : : : : +- InputAdapter (2) + : : : : : : +- NativeParquetScan (1) + : : : : : +- NativeSort (16) + : : : : : +- InputAdapter (15) + : : : : : +- AQEShuffleRead (14) + : : : : : +- ShuffleQueryStage (13), Statistics(X) + : : : : : +- NativeShuffleExchange (12) + : : : : : +- NativeFilter (11) + : : : : : +- InputAdapter (10) + : : : : : +- NativeParquetScan (9) + : : : : +- NativeSort (32) + : : : : +- InputAdapter (31) + : : : : +- AQEShuffleRead (30) + : : : : +- ShuffleQueryStage (29), Statistics(X) + : : : : +- NativeShuffleExchange (28) + : : : : +- NativeProject (27) + : : : : +- NativeFilter (26) + : : : : +- InputAdapter (25) + : : : : +- NativeParquetScan (24) + : : : +- NativeSort (47) + : : : +- InputAdapter (46) + : : : +- AQEShuffleRead (45) + : : : +- ShuffleQueryStage (44), Statistics(X) + : : : +- NativeShuffleExchange (43) + : : : +- NativeFilter (42) + : : : +- InputAdapter (41) + : : : +- NativeParquetScan (40) + : : +- NativeSort (63) + : : +- InputAdapter (62) + : : +- AQEShuffleRead (61) + : : +- ShuffleQueryStage (60), Statistics(X) + : : +- NativeShuffleExchange (59) + : : +- NativeProject (58) + : : +- NativeFilter (57) + : : +- InputAdapter (56) + : : +- NativeParquetScan (55) + : +- NativeSort (78) + : +- InputAdapter (77) + : +- AQEShuffleRead (76) + : +- ShuffleQueryStage (75), Statistics(X) + : +- NativeShuffleExchange (74) + : +- NativeFilter (73) + : +- InputAdapter (72) + : +- NativeParquetScan (71) + +- NativeSort (94) + +- InputAdapter (93) + +- AQEShuffleRead (92) + +- ShuffleQueryStage (91), Statistics(X) + +- NativeShuffleExchange (90) + +- NativeProject (89) + +- NativeFilter (88) + +- InputAdapter (87) + +- NativeParquetScan (86) ++- == Initial Plan == + Sort (162) + +- Exchange (161) + +- HashAggregate (160) + +- Exchange (159) + +- HashAggregate (158) + +- Project (157) + +- SortMergeJoin Inner (156) + :- Sort (150) + : +- Exchange (149) + : +- Project (148) + : +- SortMergeJoin Inner (147) + : :- Sort (142) + : : +- Exchange (141) + : : +- Project (140) + : : +- SortMergeJoin Inner (139) + : : :- Sort (133) + : : : +- Exchange (132) + : : : +- Project (131) + : : : +- SortMergeJoin Inner (130) + : : : :- Sort (125) + : : : : +- Exchange (124) + : : : : +- Project (123) + : : : : +- SortMergeJoin Inner (122) + : : : : :- Sort (116) + : : : : : +- Exchange (115) + : : : : : +- Project (114) + : : : : : +- SortMergeJoin Inner (113) + : : : : : :- Sort (108) + : : : : : : +- Exchange (107) + : : : : : : +- Filter (106) + : : : : : : +- Scan parquet (105) + : : : : : +- Sort (112) + : : : : : +- Exchange (111) + : : : : : +- Filter (110) + : : : : : +- Scan parquet (109) + : : : : +- Sort (121) + : : : : +- Exchange (120) + : : : : +- Project (119) + : : : : +- Filter (118) + : : : : +- Scan parquet (117) + : : : +- Sort (129) + : : : +- Exchange (128) + : : : +- Filter (127) + : : : +- Scan parquet (126) + : : +- Sort (138) + : : +- Exchange (137) + : : +- Project (136) + : : +- Filter (135) + : : +- Scan parquet (134) + : +- Sort (146) + : +- Exchange (145) + : +- Filter (144) + : +- Scan parquet (143) + +- Sort (155) + +- Exchange (154) + +- Project (153) + +- Filter (152) + +- Scan parquet (151) + + +(105) Scan parquet +Output [4]: [cc_call_center_sk#1, cc_call_center_id#2, cc_name#3, cc_manager#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cc_call_center_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [4]: [cc_call_center_sk#1, cc_call_center_id#2, cc_name#3, cc_manager#4] +Arguments: [#1, #2, #3, #4] + +(3) NativeFilter +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Condition : isnotnull(cc_call_center_sk#1) + +(4) NativeShuffleExchange +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: hashpartitioning(cc_call_center_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: X + +(6) AQEShuffleRead +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: coalesced + +(7) InputAdapter +Input [4]: [#1#1, #2#2, #3#3, #4#4] + +(8) NativeSort +Input [4]: [#1#1, #2#2, #3#3, #4#4] +Arguments: [cc_call_center_sk#1 ASC NULLS FIRST], false + +(109) Scan parquet +Output [4]: [cr_returned_date_sk#5, cr_returning_customer_sk#6, cr_call_center_sk#7, cr_net_loss#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cr_call_center_sk), IsNotNull(cr_returned_date_sk), IsNotNull(cr_returning_customer_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [4]: [cr_returned_date_sk#5, cr_returning_customer_sk#6, cr_call_center_sk#7, cr_net_loss#8] +Arguments: [#5, #6, #7, #8] + +(11) NativeFilter +Input [4]: [#5#5, #6#6, #7#7, #8#8] +Condition : ((isnotnull(cr_call_center_sk#7) AND isnotnull(cr_returned_date_sk#5)) AND isnotnull(cr_returning_customer_sk#6)) + +(12) NativeShuffleExchange +Input [4]: [#5#5, #6#6, #7#7, #8#8] +Arguments: hashpartitioning(cr_call_center_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [4]: [#5#5, #6#6, #7#7, #8#8] +Arguments: X + +(14) AQEShuffleRead +Input [4]: [#5#5, #6#6, #7#7, #8#8] +Arguments: coalesced + +(15) InputAdapter +Input [4]: [#5#5, #6#6, #7#7, #8#8] + +(16) NativeSort +Input [4]: [#5#5, #6#6, #7#7, #8#8] +Arguments: [cr_call_center_sk#7 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [1]: [cc_call_center_sk#1] +Right keys [1]: [cr_call_center_sk#7] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_returned_date_sk#5, cr_returning_customer_sk#6, cr_net_loss#8] +Input [8]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8] + +(19) NativeShuffleExchange +Input [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_returned_date_sk#5, cr_returning_customer_sk#6, cr_net_loss#8] +Arguments: hashpartitioning(cr_returned_date_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_returned_date_sk#5, cr_returning_customer_sk#6, cr_net_loss#8] +Arguments: X + +(21) AQEShuffleRead +Input [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_returned_date_sk#5, cr_returning_customer_sk#6, cr_net_loss#8] +Arguments: coalesced + +(22) InputAdapter +Input [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_returned_date_sk#5, cr_returning_customer_sk#6, cr_net_loss#8] + +(23) NativeSort +Input [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_returned_date_sk#5, cr_returning_customer_sk#6, cr_net_loss#8] +Arguments: [cr_returned_date_sk#5 ASC NULLS FIRST], false + +(117) Scan parquet +Output [3]: [d_date_sk#9, d_year#10, d_moy#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,1998), EqualTo(d_moy,11), IsNotNull(d_date_sk)] +ReadSchema: struct + +(25) InputAdapter +Input [3]: [d_date_sk#9, d_year#10, d_moy#11] +Arguments: [#9, #10, #11] + +(26) NativeFilter +Input [3]: [#9#9, #10#10, #11#11] +Condition : ((((isnotnull(d_year#10) AND isnotnull(d_moy#11)) AND (d_year#10 = 1998)) AND (d_moy#11 = 11)) AND isnotnull(d_date_sk#9)) + +(27) NativeProject +Output [1]: [d_date_sk#9] +Input [3]: [#9#9, #10#10, #11#11] + +(28) NativeShuffleExchange +Input [1]: [d_date_sk#9] +Arguments: hashpartitioning(d_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(29) ShuffleQueryStage +Output [1]: [d_date_sk#9] +Arguments: X + +(30) AQEShuffleRead +Input [1]: [d_date_sk#9] +Arguments: coalesced + +(31) InputAdapter +Input [1]: [d_date_sk#9] + +(32) NativeSort +Input [1]: [d_date_sk#9] +Arguments: [d_date_sk#9 ASC NULLS FIRST], false + +(33) NativeSortMergeJoin +Left keys [1]: [cr_returned_date_sk#5] +Right keys [1]: [d_date_sk#9] +Join type: Inner +Join condition: None + +(34) NativeProject +Output [5]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_returning_customer_sk#6, cr_net_loss#8] +Input [7]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_returned_date_sk#5, cr_returning_customer_sk#6, cr_net_loss#8, d_date_sk#9] + +(35) NativeShuffleExchange +Input [5]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_returning_customer_sk#6, cr_net_loss#8] +Arguments: hashpartitioning(cr_returning_customer_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(36) ShuffleQueryStage +Output [5]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_returning_customer_sk#6, cr_net_loss#8] +Arguments: X + +(37) AQEShuffleRead +Input [5]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_returning_customer_sk#6, cr_net_loss#8] +Arguments: coalesced + +(38) InputAdapter +Input [5]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_returning_customer_sk#6, cr_net_loss#8] + +(39) NativeSort +Input [5]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_returning_customer_sk#6, cr_net_loss#8] +Arguments: [cr_returning_customer_sk#6 ASC NULLS FIRST], false + +(126) Scan parquet +Output [4]: [c_customer_sk#12, c_current_cdemo_sk#13, c_current_hdemo_sk#14, c_current_addr_sk#15] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_current_addr_sk), IsNotNull(c_current_cdemo_sk), IsNotNull(c_current_hdemo_sk)] +ReadSchema: struct + +(41) InputAdapter +Input [4]: [c_customer_sk#12, c_current_cdemo_sk#13, c_current_hdemo_sk#14, c_current_addr_sk#15] +Arguments: [#12, #13, #14, #15] + +(42) NativeFilter +Input [4]: [#12#12, #13#13, #14#14, #15#15] +Condition : (((isnotnull(c_customer_sk#12) AND isnotnull(c_current_addr_sk#15)) AND isnotnull(c_current_cdemo_sk#13)) AND isnotnull(c_current_hdemo_sk#14)) + +(43) NativeShuffleExchange +Input [4]: [#12#12, #13#13, #14#14, #15#15] +Arguments: hashpartitioning(c_customer_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) ShuffleQueryStage +Output [4]: [#12#12, #13#13, #14#14, #15#15] +Arguments: X + +(45) AQEShuffleRead +Input [4]: [#12#12, #13#13, #14#14, #15#15] +Arguments: coalesced + +(46) InputAdapter +Input [4]: [#12#12, #13#13, #14#14, #15#15] + +(47) NativeSort +Input [4]: [#12#12, #13#13, #14#14, #15#15] +Arguments: [c_customer_sk#12 ASC NULLS FIRST], false + +(48) NativeSortMergeJoin +Left keys [1]: [cr_returning_customer_sk#6] +Right keys [1]: [c_customer_sk#12] +Join type: Inner +Join condition: None + +(49) NativeProject +Output [7]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_cdemo_sk#13, c_current_hdemo_sk#14, c_current_addr_sk#15] +Input [9]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_returning_customer_sk#6, cr_net_loss#8, #12#12, #13#13, #14#14, #15#15] + +(50) NativeShuffleExchange +Input [7]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_cdemo_sk#13, c_current_hdemo_sk#14, c_current_addr_sk#15] +Arguments: hashpartitioning(c_current_addr_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(51) ShuffleQueryStage +Output [7]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_cdemo_sk#13, c_current_hdemo_sk#14, c_current_addr_sk#15] +Arguments: X + +(52) AQEShuffleRead +Input [7]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_cdemo_sk#13, c_current_hdemo_sk#14, c_current_addr_sk#15] +Arguments: coalesced + +(53) InputAdapter +Input [7]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_cdemo_sk#13, c_current_hdemo_sk#14, c_current_addr_sk#15] + +(54) NativeSort +Input [7]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_cdemo_sk#13, c_current_hdemo_sk#14, c_current_addr_sk#15] +Arguments: [c_current_addr_sk#15 ASC NULLS FIRST], false + +(134) Scan parquet +Output [2]: [ca_address_sk#16, ca_gmt_offset#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_gmt_offset), EqualTo(ca_gmt_offset,-7.00), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(56) InputAdapter +Input [2]: [ca_address_sk#16, ca_gmt_offset#17] +Arguments: [#16, #17] + +(57) NativeFilter +Input [2]: [#16#16, #17#17] +Condition : ((isnotnull(ca_gmt_offset#17) AND (ca_gmt_offset#17 = -7.00)) AND isnotnull(ca_address_sk#16)) + +(58) NativeProject +Output [1]: [ca_address_sk#16] +Input [2]: [#16#16, #17#17] + +(59) NativeShuffleExchange +Input [1]: [ca_address_sk#16] +Arguments: hashpartitioning(ca_address_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(60) ShuffleQueryStage +Output [1]: [ca_address_sk#16] +Arguments: X + +(61) AQEShuffleRead +Input [1]: [ca_address_sk#16] +Arguments: coalesced + +(62) InputAdapter +Input [1]: [ca_address_sk#16] + +(63) NativeSort +Input [1]: [ca_address_sk#16] +Arguments: [ca_address_sk#16 ASC NULLS FIRST], false + +(64) NativeSortMergeJoin +Left keys [1]: [c_current_addr_sk#15] +Right keys [1]: [ca_address_sk#16] +Join type: Inner +Join condition: None + +(65) NativeProject +Output [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_cdemo_sk#13, c_current_hdemo_sk#14] +Input [8]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_cdemo_sk#13, c_current_hdemo_sk#14, c_current_addr_sk#15, ca_address_sk#16] + +(66) NativeShuffleExchange +Input [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_cdemo_sk#13, c_current_hdemo_sk#14] +Arguments: hashpartitioning(c_current_cdemo_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(67) ShuffleQueryStage +Output [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_cdemo_sk#13, c_current_hdemo_sk#14] +Arguments: X + +(68) AQEShuffleRead +Input [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_cdemo_sk#13, c_current_hdemo_sk#14] +Arguments: coalesced + +(69) InputAdapter +Input [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_cdemo_sk#13, c_current_hdemo_sk#14] + +(70) NativeSort +Input [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_cdemo_sk#13, c_current_hdemo_sk#14] +Arguments: [c_current_cdemo_sk#13 ASC NULLS FIRST], false + +(143) Scan parquet +Output [3]: [cd_demo_sk#18, cd_marital_status#19, cd_education_status#20] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(And(EqualTo(cd_marital_status,M),EqualTo(cd_education_status,Unknown)),And(EqualTo(cd_marital_status,W),EqualTo(cd_education_status,Advanced Degree))), IsNotNull(cd_demo_sk)] +ReadSchema: struct + +(72) InputAdapter +Input [3]: [cd_demo_sk#18, cd_marital_status#19, cd_education_status#20] +Arguments: [#18, #19, #20] + +(73) NativeFilter +Input [3]: [#18#18, #19#19, #20#20] +Condition : ((((cd_marital_status#19 = M) AND (cd_education_status#20 = Unknown)) OR ((cd_marital_status#19 = W) AND (cd_education_status#20 = Advanced Degree))) AND isnotnull(cd_demo_sk#18)) + +(74) NativeShuffleExchange +Input [3]: [#18#18, #19#19, #20#20] +Arguments: hashpartitioning(cd_demo_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(75) ShuffleQueryStage +Output [3]: [#18#18, #19#19, #20#20] +Arguments: X + +(76) AQEShuffleRead +Input [3]: [#18#18, #19#19, #20#20] +Arguments: coalesced + +(77) InputAdapter +Input [3]: [#18#18, #19#19, #20#20] + +(78) NativeSort +Input [3]: [#18#18, #19#19, #20#20] +Arguments: [cd_demo_sk#18 ASC NULLS FIRST], false + +(79) NativeSortMergeJoin +Left keys [1]: [c_current_cdemo_sk#13] +Right keys [1]: [cd_demo_sk#18] +Join type: Inner +Join condition: None + +(80) NativeProject +Output [7]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_hdemo_sk#14, cd_marital_status#19, cd_education_status#20] +Input [9]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_cdemo_sk#13, c_current_hdemo_sk#14, #18#18, #19#19, #20#20] + +(81) NativeShuffleExchange +Input [7]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_hdemo_sk#14, cd_marital_status#19, cd_education_status#20] +Arguments: hashpartitioning(c_current_hdemo_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(82) ShuffleQueryStage +Output [7]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_hdemo_sk#14, cd_marital_status#19, cd_education_status#20] +Arguments: X + +(83) AQEShuffleRead +Input [7]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_hdemo_sk#14, cd_marital_status#19, cd_education_status#20] +Arguments: coalesced + +(84) InputAdapter +Input [7]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_hdemo_sk#14, cd_marital_status#19, cd_education_status#20] + +(85) NativeSort +Input [7]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_hdemo_sk#14, cd_marital_status#19, cd_education_status#20] +Arguments: [c_current_hdemo_sk#14 ASC NULLS FIRST], false + +(151) Scan parquet +Output [2]: [hd_demo_sk#21, hd_buy_potential#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(hd_buy_potential), StringStartsWith(hd_buy_potential,Unknown), IsNotNull(hd_demo_sk)] +ReadSchema: struct + +(87) InputAdapter +Input [2]: [hd_demo_sk#21, hd_buy_potential#22] +Arguments: [#21, #22] + +(88) NativeFilter +Input [2]: [#21#21, #22#22] +Condition : ((isnotnull(hd_buy_potential#22) AND StartsWith(hd_buy_potential#22, Unknown)) AND isnotnull(hd_demo_sk#21)) + +(89) NativeProject +Output [1]: [hd_demo_sk#21] +Input [2]: [#21#21, #22#22] + +(90) NativeShuffleExchange +Input [1]: [hd_demo_sk#21] +Arguments: hashpartitioning(hd_demo_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(91) ShuffleQueryStage +Output [1]: [hd_demo_sk#21] +Arguments: X + +(92) AQEShuffleRead +Input [1]: [hd_demo_sk#21] +Arguments: coalesced + +(93) InputAdapter +Input [1]: [hd_demo_sk#21] + +(94) NativeSort +Input [1]: [hd_demo_sk#21] +Arguments: [hd_demo_sk#21 ASC NULLS FIRST], false + +(95) NativeSortMergeJoin +Left keys [1]: [c_current_hdemo_sk#14] +Right keys [1]: [hd_demo_sk#21] +Join type: Inner +Join condition: None + +(96) NativeProject +Output [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, cd_marital_status#19, cd_education_status#20] +Input [8]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_hdemo_sk#14, cd_marital_status#19, cd_education_status#20, hd_demo_sk#21] + +(97) NativeProject +Output [6]: [cc_call_center_id#2 AS cc_call_center_id#2, cc_name#3 AS cc_name#3, cc_manager#4 AS cc_manager#4, cd_marital_status#19 AS cd_marital_status#19, cd_education_status#20 AS cd_education_status#20, UnscaledValue(cr_net_loss#8) AS _c5#23] +Input [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, cd_marital_status#19, cd_education_status#20] + +(98) NativeHashAggregate +Input [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cd_marital_status#19, cd_education_status#20, _c5#23] +Keys [5]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cd_marital_status#19, cd_education_status#20] +Functions [1]: [partial_sum(_c5#23)] +Aggregate Attributes [1]: [sum#24] +Results [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cd_marital_status#19, cd_education_status#20, #25#25] + +(99) NativeShuffleExchange +Input [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cd_marital_status#19, cd_education_status#20, #25#25] +Arguments: hashpartitioning(cc_call_center_id#2, cc_name#3, cc_manager#4, cd_marital_status#19, cd_education_status#20, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(100) ShuffleQueryStage +Output [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cd_marital_status#19, cd_education_status#20, #25#25] +Arguments: X + +(101) AQEShuffleRead +Input [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cd_marital_status#19, cd_education_status#20, #25#25] +Arguments: coalesced + +(102) InputAdapter +Input [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cd_marital_status#19, cd_education_status#20, #25#25] + +(103) NativeHashAggregate +Input [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cd_marital_status#19, cd_education_status#20, #25#25] +Keys [5]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cd_marital_status#19, cd_education_status#20] +Functions [1]: [sum(UnscaledValue(cr_net_loss#8))] +Aggregate Attributes [1]: [sum(UnscaledValue(cr_net_loss#8))#26] +Results [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cd_marital_status#19, cd_education_status#20, sum(UnscaledValue(cr_net_loss#8))#26] + +(104) NativeProject +Output [4]: [cc_call_center_id#2 AS Call_Center#27, cc_name#3 AS Call_Center_Name#28, cc_manager#4 AS Manager#29, MakeDecimal(sum(UnscaledValue(cr_net_loss#8))#26,17,2) AS Returns_Loss#30] +Input [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cd_marital_status#19, cd_education_status#20, sum(UnscaledValue(cr_net_loss#8))#26] + +(105) Scan parquet +Output [4]: [cc_call_center_sk#1, cc_call_center_id#2, cc_name#3, cc_manager#4] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cc_call_center_sk)] +ReadSchema: struct + +(106) Filter +Input [4]: [cc_call_center_sk#1, cc_call_center_id#2, cc_name#3, cc_manager#4] +Condition : isnotnull(cc_call_center_sk#1) + +(107) Exchange +Input [4]: [cc_call_center_sk#1, cc_call_center_id#2, cc_name#3, cc_manager#4] +Arguments: hashpartitioning(cc_call_center_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(108) Sort +Input [4]: [cc_call_center_sk#1, cc_call_center_id#2, cc_name#3, cc_manager#4] +Arguments: [cc_call_center_sk#1 ASC NULLS FIRST], false, 0 + +(109) Scan parquet +Output [4]: [cr_returned_date_sk#5, cr_returning_customer_sk#6, cr_call_center_sk#7, cr_net_loss#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cr_call_center_sk), IsNotNull(cr_returned_date_sk), IsNotNull(cr_returning_customer_sk)] +ReadSchema: struct + +(110) Filter +Input [4]: [cr_returned_date_sk#5, cr_returning_customer_sk#6, cr_call_center_sk#7, cr_net_loss#8] +Condition : ((isnotnull(cr_call_center_sk#7) AND isnotnull(cr_returned_date_sk#5)) AND isnotnull(cr_returning_customer_sk#6)) + +(111) Exchange +Input [4]: [cr_returned_date_sk#5, cr_returning_customer_sk#6, cr_call_center_sk#7, cr_net_loss#8] +Arguments: hashpartitioning(cr_call_center_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(112) Sort +Input [4]: [cr_returned_date_sk#5, cr_returning_customer_sk#6, cr_call_center_sk#7, cr_net_loss#8] +Arguments: [cr_call_center_sk#7 ASC NULLS FIRST], false, 0 + +(113) SortMergeJoin +Left keys [1]: [cc_call_center_sk#1] +Right keys [1]: [cr_call_center_sk#7] +Join type: Inner +Join condition: None + +(114) Project +Output [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_returned_date_sk#5, cr_returning_customer_sk#6, cr_net_loss#8] +Input [8]: [cc_call_center_sk#1, cc_call_center_id#2, cc_name#3, cc_manager#4, cr_returned_date_sk#5, cr_returning_customer_sk#6, cr_call_center_sk#7, cr_net_loss#8] + +(115) Exchange +Input [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_returned_date_sk#5, cr_returning_customer_sk#6, cr_net_loss#8] +Arguments: hashpartitioning(cr_returned_date_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(116) Sort +Input [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_returned_date_sk#5, cr_returning_customer_sk#6, cr_net_loss#8] +Arguments: [cr_returned_date_sk#5 ASC NULLS FIRST], false, 0 + +(117) Scan parquet +Output [3]: [d_date_sk#9, d_year#10, d_moy#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,1998), EqualTo(d_moy,11), IsNotNull(d_date_sk)] +ReadSchema: struct + +(118) Filter +Input [3]: [d_date_sk#9, d_year#10, d_moy#11] +Condition : ((((isnotnull(d_year#10) AND isnotnull(d_moy#11)) AND (d_year#10 = 1998)) AND (d_moy#11 = 11)) AND isnotnull(d_date_sk#9)) + +(119) Project +Output [1]: [d_date_sk#9] +Input [3]: [d_date_sk#9, d_year#10, d_moy#11] + +(120) Exchange +Input [1]: [d_date_sk#9] +Arguments: hashpartitioning(d_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(121) Sort +Input [1]: [d_date_sk#9] +Arguments: [d_date_sk#9 ASC NULLS FIRST], false, 0 + +(122) SortMergeJoin +Left keys [1]: [cr_returned_date_sk#5] +Right keys [1]: [d_date_sk#9] +Join type: Inner +Join condition: None + +(123) Project +Output [5]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_returning_customer_sk#6, cr_net_loss#8] +Input [7]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_returned_date_sk#5, cr_returning_customer_sk#6, cr_net_loss#8, d_date_sk#9] + +(124) Exchange +Input [5]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_returning_customer_sk#6, cr_net_loss#8] +Arguments: hashpartitioning(cr_returning_customer_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(125) Sort +Input [5]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_returning_customer_sk#6, cr_net_loss#8] +Arguments: [cr_returning_customer_sk#6 ASC NULLS FIRST], false, 0 + +(126) Scan parquet +Output [4]: [c_customer_sk#12, c_current_cdemo_sk#13, c_current_hdemo_sk#14, c_current_addr_sk#15] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_current_addr_sk), IsNotNull(c_current_cdemo_sk), IsNotNull(c_current_hdemo_sk)] +ReadSchema: struct + +(127) Filter +Input [4]: [c_customer_sk#12, c_current_cdemo_sk#13, c_current_hdemo_sk#14, c_current_addr_sk#15] +Condition : (((isnotnull(c_customer_sk#12) AND isnotnull(c_current_addr_sk#15)) AND isnotnull(c_current_cdemo_sk#13)) AND isnotnull(c_current_hdemo_sk#14)) + +(128) Exchange +Input [4]: [c_customer_sk#12, c_current_cdemo_sk#13, c_current_hdemo_sk#14, c_current_addr_sk#15] +Arguments: hashpartitioning(c_customer_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(129) Sort +Input [4]: [c_customer_sk#12, c_current_cdemo_sk#13, c_current_hdemo_sk#14, c_current_addr_sk#15] +Arguments: [c_customer_sk#12 ASC NULLS FIRST], false, 0 + +(130) SortMergeJoin +Left keys [1]: [cr_returning_customer_sk#6] +Right keys [1]: [c_customer_sk#12] +Join type: Inner +Join condition: None + +(131) Project +Output [7]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_cdemo_sk#13, c_current_hdemo_sk#14, c_current_addr_sk#15] +Input [9]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_returning_customer_sk#6, cr_net_loss#8, c_customer_sk#12, c_current_cdemo_sk#13, c_current_hdemo_sk#14, c_current_addr_sk#15] + +(132) Exchange +Input [7]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_cdemo_sk#13, c_current_hdemo_sk#14, c_current_addr_sk#15] +Arguments: hashpartitioning(c_current_addr_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(133) Sort +Input [7]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_cdemo_sk#13, c_current_hdemo_sk#14, c_current_addr_sk#15] +Arguments: [c_current_addr_sk#15 ASC NULLS FIRST], false, 0 + +(134) Scan parquet +Output [2]: [ca_address_sk#16, ca_gmt_offset#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_gmt_offset), EqualTo(ca_gmt_offset,-7.00), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(135) Filter +Input [2]: [ca_address_sk#16, ca_gmt_offset#17] +Condition : ((isnotnull(ca_gmt_offset#17) AND (ca_gmt_offset#17 = -7.00)) AND isnotnull(ca_address_sk#16)) + +(136) Project +Output [1]: [ca_address_sk#16] +Input [2]: [ca_address_sk#16, ca_gmt_offset#17] + +(137) Exchange +Input [1]: [ca_address_sk#16] +Arguments: hashpartitioning(ca_address_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(138) Sort +Input [1]: [ca_address_sk#16] +Arguments: [ca_address_sk#16 ASC NULLS FIRST], false, 0 + +(139) SortMergeJoin +Left keys [1]: [c_current_addr_sk#15] +Right keys [1]: [ca_address_sk#16] +Join type: Inner +Join condition: None + +(140) Project +Output [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_cdemo_sk#13, c_current_hdemo_sk#14] +Input [8]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_cdemo_sk#13, c_current_hdemo_sk#14, c_current_addr_sk#15, ca_address_sk#16] + +(141) Exchange +Input [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_cdemo_sk#13, c_current_hdemo_sk#14] +Arguments: hashpartitioning(c_current_cdemo_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(142) Sort +Input [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_cdemo_sk#13, c_current_hdemo_sk#14] +Arguments: [c_current_cdemo_sk#13 ASC NULLS FIRST], false, 0 + +(143) Scan parquet +Output [3]: [cd_demo_sk#18, cd_marital_status#19, cd_education_status#20] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [Or(And(EqualTo(cd_marital_status,M),EqualTo(cd_education_status,Unknown)),And(EqualTo(cd_marital_status,W),EqualTo(cd_education_status,Advanced Degree))), IsNotNull(cd_demo_sk)] +ReadSchema: struct + +(144) Filter +Input [3]: [cd_demo_sk#18, cd_marital_status#19, cd_education_status#20] +Condition : ((((cd_marital_status#19 = M) AND (cd_education_status#20 = Unknown)) OR ((cd_marital_status#19 = W) AND (cd_education_status#20 = Advanced Degree))) AND isnotnull(cd_demo_sk#18)) + +(145) Exchange +Input [3]: [cd_demo_sk#18, cd_marital_status#19, cd_education_status#20] +Arguments: hashpartitioning(cd_demo_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(146) Sort +Input [3]: [cd_demo_sk#18, cd_marital_status#19, cd_education_status#20] +Arguments: [cd_demo_sk#18 ASC NULLS FIRST], false, 0 + +(147) SortMergeJoin +Left keys [1]: [c_current_cdemo_sk#13] +Right keys [1]: [cd_demo_sk#18] +Join type: Inner +Join condition: None + +(148) Project +Output [7]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_hdemo_sk#14, cd_marital_status#19, cd_education_status#20] +Input [9]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_cdemo_sk#13, c_current_hdemo_sk#14, cd_demo_sk#18, cd_marital_status#19, cd_education_status#20] + +(149) Exchange +Input [7]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_hdemo_sk#14, cd_marital_status#19, cd_education_status#20] +Arguments: hashpartitioning(c_current_hdemo_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(150) Sort +Input [7]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_hdemo_sk#14, cd_marital_status#19, cd_education_status#20] +Arguments: [c_current_hdemo_sk#14 ASC NULLS FIRST], false, 0 + +(151) Scan parquet +Output [2]: [hd_demo_sk#21, hd_buy_potential#22] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(hd_buy_potential), StringStartsWith(hd_buy_potential,Unknown), IsNotNull(hd_demo_sk)] +ReadSchema: struct + +(152) Filter +Input [2]: [hd_demo_sk#21, hd_buy_potential#22] +Condition : ((isnotnull(hd_buy_potential#22) AND StartsWith(hd_buy_potential#22, Unknown)) AND isnotnull(hd_demo_sk#21)) + +(153) Project +Output [1]: [hd_demo_sk#21] +Input [2]: [hd_demo_sk#21, hd_buy_potential#22] + +(154) Exchange +Input [1]: [hd_demo_sk#21] +Arguments: hashpartitioning(hd_demo_sk#21, 100), ENSURE_REQUIREMENTS, [plan_id=25] + +(155) Sort +Input [1]: [hd_demo_sk#21] +Arguments: [hd_demo_sk#21 ASC NULLS FIRST], false, 0 + +(156) SortMergeJoin +Left keys [1]: [c_current_hdemo_sk#14] +Right keys [1]: [hd_demo_sk#21] +Join type: Inner +Join condition: None + +(157) Project +Output [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, cd_marital_status#19, cd_education_status#20] +Input [8]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, c_current_hdemo_sk#14, cd_marital_status#19, cd_education_status#20, hd_demo_sk#21] + +(158) HashAggregate +Input [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cr_net_loss#8, cd_marital_status#19, cd_education_status#20] +Keys [5]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cd_marital_status#19, cd_education_status#20] +Functions [1]: [partial_sum(UnscaledValue(cr_net_loss#8))] +Aggregate Attributes [1]: [sum#24] +Results [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cd_marital_status#19, cd_education_status#20, sum#31] + +(159) Exchange +Input [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cd_marital_status#19, cd_education_status#20, sum#31] +Arguments: hashpartitioning(cc_call_center_id#2, cc_name#3, cc_manager#4, cd_marital_status#19, cd_education_status#20, 100), ENSURE_REQUIREMENTS, [plan_id=26] + +(160) HashAggregate +Input [6]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cd_marital_status#19, cd_education_status#20, sum#31] +Keys [5]: [cc_call_center_id#2, cc_name#3, cc_manager#4, cd_marital_status#19, cd_education_status#20] +Functions [1]: [sum(UnscaledValue(cr_net_loss#8))] +Aggregate Attributes [1]: [sum(UnscaledValue(cr_net_loss#8))#26] +Results [4]: [cc_call_center_id#2 AS Call_Center#27, cc_name#3 AS Call_Center_Name#28, cc_manager#4 AS Manager#29, MakeDecimal(sum(UnscaledValue(cr_net_loss#8))#26,17,2) AS Returns_Loss#30] + +(161) Exchange +Input [4]: [Call_Center#27, Call_Center_Name#28, Manager#29, Returns_Loss#30] +Arguments: rangepartitioning(Returns_Loss#30 DESC NULLS LAST, 100), ENSURE_REQUIREMENTS, [plan_id=27] + +(162) Sort +Input [4]: [Call_Center#27, Call_Center_Name#28, Manager#29, Returns_Loss#30] +Arguments: [Returns_Loss#30 DESC NULLS LAST], true, 0 + +(163) AdaptiveSparkPlan +Output [4]: [Call_Center#27, Call_Center_Name#28, Manager#29, Returns_Loss#30] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q92.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q92.txt new file mode 100644 index 000000000..35bbc3a43 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q92.txt @@ -0,0 +1,623 @@ +== Physical Plan == +AdaptiveSparkPlan (112) ++- == Final Plan == + NativeProject (70) + +- NativeHashAggregate (69) + +- ShuffleQueryStage (68), Statistics(X) + +- NativeShuffleExchange (67) + +- NativeHashAggregate (66) + +- NativeProject (65) + +- NativeProject (64) + +- NativeSortMergeJoin Inner (63) + :- NativeSort (56) + : +- InputAdapter (55) + : +- AQEShuffleRead (54) + : +- ShuffleQueryStage (53), Statistics(X) + : +- NativeShuffleExchange (52) + : +- ConvertToNative (51) + : +- * Project (50) + : +- * SortMergeJoin Inner (49) + : :- 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 (48) + : +- NativeFilter (47) + : +- NativeProject (46) + : +- NativeHashAggregate (45) + : +- InputAdapter (44) + : +- AQEShuffleRead (43) + : +- ShuffleQueryStage (42), Statistics(X) + : +- NativeShuffleExchange (41) + : +- NativeHashAggregate (40) + : +- NativeProject (39) + : +- NativeProject (38) + : +- NativeSortMergeJoin Inner (37) + : :- NativeSort (27) + : : +- InputAdapter (26) + : : +- AQEShuffleRead (25) + : : +- ShuffleQueryStage (24), Statistics(X) + : : +- NativeShuffleExchange (23) + : : +- NativeFilter (22) + : : +- InputAdapter (21) + : : +- NativeParquetScan (20) + : +- NativeSort (36) + : +- InputAdapter (35) + : +- AQEShuffleRead (34) + : +- ShuffleQueryStage (33), Statistics(X) + : +- NativeShuffleExchange (32) + : +- NativeProject (31) + : +- NativeFilter (30) + : +- InputAdapter (29) + : +- NativeParquetScan (28) + +- NativeSort (62) + +- InputAdapter (61) + +- InputAdapter (60) + +- AQEShuffleRead (59) + +- ShuffleQueryStage (58), Statistics(X) + +- ReusedExchange (57) ++- == Initial Plan == + HashAggregate (111) + +- Exchange (110) + +- HashAggregate (109) + +- Project (108) + +- SortMergeJoin Inner (107) + :- Sort (101) + : +- Exchange (100) + : +- Project (99) + : +- SortMergeJoin Inner (98) + : :- Project (81) + : : +- SortMergeJoin Inner (80) + : : :- Sort (74) + : : : +- Exchange (73) + : : : +- Filter (72) + : : : +- Scan parquet (71) + : : +- Sort (79) + : : +- Exchange (78) + : : +- Project (77) + : : +- Filter (76) + : : +- Scan parquet (75) + : +- Sort (97) + : +- Filter (96) + : +- HashAggregate (95) + : +- Exchange (94) + : +- HashAggregate (93) + : +- Project (92) + : +- SortMergeJoin Inner (91) + : :- Sort (85) + : : +- Exchange (84) + : : +- Filter (83) + : : +- Scan parquet (82) + : +- Sort (90) + : +- Exchange (89) + : +- Project (88) + : +- Filter (87) + : +- Scan parquet (86) + +- Sort (106) + +- Exchange (105) + +- Project (104) + +- Filter (103) + +- Scan parquet (102) + + +(71) Scan parquet +Output [3]: [ws_sold_date_sk#1, ws_item_sk#2, ws_ext_discount_amt#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_ext_discount_amt), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [ws_sold_date_sk#1, ws_item_sk#2, ws_ext_discount_amt#3] +Arguments: [#1, #2, #3] + +(3) NativeFilter +Input [3]: [#1#1, #2#2, #3#3] +Condition : ((isnotnull(ws_item_sk#2) AND isnotnull(ws_ext_discount_amt#3)) AND isnotnull(ws_sold_date_sk#1)) + +(4) NativeShuffleExchange +Input [3]: [#1#1, #2#2, #3#3] +Arguments: hashpartitioning(ws_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [3]: [#1#1, #2#2, #3#3] +Arguments: X + +(6) AQEShuffleRead +Input [3]: [#1#1, #2#2, #3#3] +Arguments: coalesced + +(7) InputAdapter +Input [3]: [#1#1, #2#2, #3#3] + +(8) NativeSort +Input [3]: [#1#1, #2#2, #3#3] +Arguments: [ws_item_sk#2 ASC NULLS FIRST], false + +(75) Scan parquet +Output [2]: [i_item_sk#4, i_manufact_id#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_manufact_id), EqualTo(i_manufact_id,350), IsNotNull(i_item_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [i_item_sk#4, i_manufact_id#5] +Arguments: [#4, #5] + +(11) NativeFilter +Input [2]: [#4#4, #5#5] +Condition : ((isnotnull(i_manufact_id#5) AND (i_manufact_id#5 = 350)) AND isnotnull(i_item_sk#4)) + +(12) NativeProject +Output [1]: [i_item_sk#4] +Input [2]: [#4#4, #5#5] + +(13) NativeShuffleExchange +Input [1]: [i_item_sk#4] +Arguments: hashpartitioning(i_item_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [1]: [i_item_sk#4] +Arguments: X + +(15) AQEShuffleRead +Input [1]: [i_item_sk#4] +Arguments: coalesced + +(16) InputAdapter +Input [1]: [i_item_sk#4] + +(17) NativeSort +Input [1]: [i_item_sk#4] +Arguments: [i_item_sk#4 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [ws_item_sk#2] +Right keys [1]: [i_item_sk#4] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [3]: [ws_sold_date_sk#1, ws_ext_discount_amt#3, i_item_sk#4] +Input [4]: [#1#1, #2#2, #3#3, i_item_sk#4] + +(82) Scan parquet +Output [3]: [ws_sold_date_sk#6, ws_item_sk#7, ws_ext_discount_amt#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_item_sk)] +ReadSchema: struct + +(21) InputAdapter +Input [3]: [ws_sold_date_sk#6, ws_item_sk#7, ws_ext_discount_amt#8] +Arguments: [#6, #7, #8] + +(22) NativeFilter +Input [3]: [#6#6, #7#7, #8#8] +Condition : (isnotnull(ws_sold_date_sk#6) AND isnotnull(ws_item_sk#7)) + +(23) NativeShuffleExchange +Input [3]: [#6#6, #7#7, #8#8] +Arguments: hashpartitioning(ws_sold_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(24) ShuffleQueryStage +Output [3]: [#6#6, #7#7, #8#8] +Arguments: X + +(25) AQEShuffleRead +Input [3]: [#6#6, #7#7, #8#8] +Arguments: coalesced + +(26) InputAdapter +Input [3]: [#6#6, #7#7, #8#8] + +(27) NativeSort +Input [3]: [#6#6, #7#7, #8#8] +Arguments: [ws_sold_date_sk#6 ASC NULLS FIRST], false + +(86) Scan parquet +Output [2]: [d_date_sk#9, d_date#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,2000-01-27), LessThanOrEqual(d_date,2000-04-26), IsNotNull(d_date_sk)] +ReadSchema: struct + +(29) InputAdapter +Input [2]: [d_date_sk#9, d_date#10] +Arguments: [#9, #10] + +(30) NativeFilter +Input [2]: [#9#9, #10#10] +Condition : (((isnotnull(d_date#10) AND (d_date#10 >= 2000-01-27)) AND (d_date#10 <= 2000-04-26)) AND isnotnull(d_date_sk#9)) + +(31) NativeProject +Output [1]: [d_date_sk#9] +Input [2]: [#9#9, #10#10] + +(32) NativeShuffleExchange +Input [1]: [d_date_sk#9] +Arguments: hashpartitioning(d_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(33) ShuffleQueryStage +Output [1]: [d_date_sk#9] +Arguments: X + +(34) AQEShuffleRead +Input [1]: [d_date_sk#9] +Arguments: coalesced + +(35) InputAdapter +Input [1]: [d_date_sk#9] + +(36) NativeSort +Input [1]: [d_date_sk#9] +Arguments: [d_date_sk#9 ASC NULLS FIRST], false + +(37) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#6] +Right keys [1]: [d_date_sk#9] +Join type: Inner +Join condition: None + +(38) NativeProject +Output [2]: [ws_item_sk#7, ws_ext_discount_amt#8] +Input [4]: [#6#6, #7#7, #8#8, d_date_sk#9] + +(39) NativeProject +Output [2]: [ws_item_sk#7 AS ws_item_sk#7, UnscaledValue(ws_ext_discount_amt#8) AS _c1#11] +Input [2]: [ws_item_sk#7, ws_ext_discount_amt#8] + +(40) NativeHashAggregate +Input [2]: [ws_item_sk#7, _c1#11] +Keys [1]: [ws_item_sk#7] +Functions [1]: [partial_avg(_c1#11)] +Aggregate Attributes [2]: [sum#12, count#13] +Results [2]: [ws_item_sk#7, #14#14] + +(41) NativeShuffleExchange +Input [2]: [ws_item_sk#7, #14#14] +Arguments: hashpartitioning(ws_item_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(42) ShuffleQueryStage +Output [2]: [ws_item_sk#7, #14#14] +Arguments: X + +(43) AQEShuffleRead +Input [2]: [ws_item_sk#7, #14#14] +Arguments: coalesced + +(44) InputAdapter +Input [2]: [ws_item_sk#7, #14#14] + +(45) NativeHashAggregate +Input [2]: [ws_item_sk#7, #14#14] +Keys [1]: [ws_item_sk#7] +Functions [1]: [avg(UnscaledValue(ws_ext_discount_amt#8))] +Aggregate Attributes [1]: [avg(UnscaledValue(ws_ext_discount_amt#8))#15] +Results [2]: [ws_item_sk#7, avg(UnscaledValue(ws_ext_discount_amt#8))#15] + +(46) NativeProject +Output [2]: [(1.3 * cast((avg(UnscaledValue(ws_ext_discount_amt#8))#15 / 100.0) as decimal(11,6))) AS (1.3 * avg(ws_ext_discount_amt))#16, ws_item_sk#7] +Input [2]: [ws_item_sk#7, avg(UnscaledValue(ws_ext_discount_amt#8))#15] + +(47) NativeFilter +Input [2]: [(1.3 * avg(ws_ext_discount_amt))#16, ws_item_sk#7] +Condition : isnotnull((1.3 * avg(ws_ext_discount_amt))#16) + +(48) NativeSort +Input [2]: [(1.3 * avg(ws_ext_discount_amt))#16, ws_item_sk#7] +Arguments: [ws_item_sk#7 ASC NULLS FIRST], false + +(49) SortMergeJoin [codegen id : 1] +Left keys [1]: [i_item_sk#4] +Right keys [1]: [ws_item_sk#7] +Join type: Inner +Join condition: (cast(ws_ext_discount_amt#3 as decimal(14,7)) > (1.3 * avg(ws_ext_discount_amt))#16) + +(50) Project [codegen id : 1] +Output [2]: [ws_sold_date_sk#1, ws_ext_discount_amt#3] +Input [5]: [ws_sold_date_sk#1, ws_ext_discount_amt#3, i_item_sk#4, (1.3 * avg(ws_ext_discount_amt))#16, ws_item_sk#7] + +(51) ConvertToNative +Input [2]: [ws_sold_date_sk#1, ws_ext_discount_amt#3] + +(52) NativeShuffleExchange +Input [2]: [ws_sold_date_sk#1, ws_ext_discount_amt#3] +Arguments: hashpartitioning(ws_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(53) ShuffleQueryStage +Output [2]: [ws_sold_date_sk#1, ws_ext_discount_amt#3] +Arguments: X + +(54) AQEShuffleRead +Input [2]: [ws_sold_date_sk#1, ws_ext_discount_amt#3] +Arguments: coalesced + +(55) InputAdapter +Input [2]: [ws_sold_date_sk#1, ws_ext_discount_amt#3] + +(56) NativeSort +Input [2]: [ws_sold_date_sk#1, ws_ext_discount_amt#3] +Arguments: [ws_sold_date_sk#1 ASC NULLS FIRST], false + +(57) ReusedExchange [Reuses operator id: 32] +Output [1]: [d_date_sk#17] + +(58) ShuffleQueryStage +Output [1]: [d_date_sk#17] +Arguments: X + +(59) AQEShuffleRead +Input [1]: [d_date_sk#17] +Arguments: coalesced + +(60) InputAdapter +Input [1]: [d_date_sk#17] +Arguments: [#17] + +(61) InputAdapter +Input [1]: [#17#17] + +(62) NativeSort +Input [1]: [#17#17] +Arguments: [d_date_sk#17 ASC NULLS FIRST], false + +(63) NativeSortMergeJoin +Left keys [1]: [ws_sold_date_sk#1] +Right keys [1]: [d_date_sk#17] +Join type: Inner +Join condition: None + +(64) NativeProject +Output [1]: [ws_ext_discount_amt#3] +Input [3]: [ws_sold_date_sk#1, ws_ext_discount_amt#3, #17#17] + +(65) NativeProject +Output [1]: [UnscaledValue(ws_ext_discount_amt#3) AS _c0#18] +Input [1]: [ws_ext_discount_amt#3] + +(66) NativeHashAggregate +Input [1]: [_c0#18] +Keys: [] +Functions [1]: [partial_sum(_c0#18)] +Aggregate Attributes [1]: [sum#19] +Results [1]: [#14#14] + +(67) NativeShuffleExchange +Input [1]: [#14#14] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=7] + +(68) ShuffleQueryStage +Output [1]: [#14#14] +Arguments: X + +(69) NativeHashAggregate +Input [1]: [#14#14] +Keys: [] +Functions [1]: [sum(UnscaledValue(ws_ext_discount_amt#3))] +Aggregate Attributes [1]: [sum(UnscaledValue(ws_ext_discount_amt#3))#20] +Results [1]: [sum(UnscaledValue(ws_ext_discount_amt#3))#20] + +(70) NativeProject +Output [1]: [MakeDecimal(sum(UnscaledValue(ws_ext_discount_amt#3))#20,17,2) AS Excess Discount Amount #21] +Input [1]: [sum(UnscaledValue(ws_ext_discount_amt#3))#20] + +(71) Scan parquet +Output [3]: [ws_sold_date_sk#1, ws_item_sk#2, ws_ext_discount_amt#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_item_sk), IsNotNull(ws_ext_discount_amt), IsNotNull(ws_sold_date_sk)] +ReadSchema: struct + +(72) Filter +Input [3]: [ws_sold_date_sk#1, ws_item_sk#2, ws_ext_discount_amt#3] +Condition : ((isnotnull(ws_item_sk#2) AND isnotnull(ws_ext_discount_amt#3)) AND isnotnull(ws_sold_date_sk#1)) + +(73) Exchange +Input [3]: [ws_sold_date_sk#1, ws_item_sk#2, ws_ext_discount_amt#3] +Arguments: hashpartitioning(ws_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(74) Sort +Input [3]: [ws_sold_date_sk#1, ws_item_sk#2, ws_ext_discount_amt#3] +Arguments: [ws_item_sk#2 ASC NULLS FIRST], false, 0 + +(75) Scan parquet +Output [2]: [i_item_sk#4, i_manufact_id#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(i_manufact_id), EqualTo(i_manufact_id,350), IsNotNull(i_item_sk)] +ReadSchema: struct + +(76) Filter +Input [2]: [i_item_sk#4, i_manufact_id#5] +Condition : ((isnotnull(i_manufact_id#5) AND (i_manufact_id#5 = 350)) AND isnotnull(i_item_sk#4)) + +(77) Project +Output [1]: [i_item_sk#4] +Input [2]: [i_item_sk#4, i_manufact_id#5] + +(78) Exchange +Input [1]: [i_item_sk#4] +Arguments: hashpartitioning(i_item_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(79) Sort +Input [1]: [i_item_sk#4] +Arguments: [i_item_sk#4 ASC NULLS FIRST], false, 0 + +(80) SortMergeJoin +Left keys [1]: [ws_item_sk#2] +Right keys [1]: [i_item_sk#4] +Join type: Inner +Join condition: None + +(81) Project +Output [3]: [ws_sold_date_sk#1, ws_ext_discount_amt#3, i_item_sk#4] +Input [4]: [ws_sold_date_sk#1, ws_item_sk#2, ws_ext_discount_amt#3, i_item_sk#4] + +(82) Scan parquet +Output [3]: [ws_sold_date_sk#6, ws_item_sk#7, ws_ext_discount_amt#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_item_sk)] +ReadSchema: struct + +(83) Filter +Input [3]: [ws_sold_date_sk#6, ws_item_sk#7, ws_ext_discount_amt#8] +Condition : (isnotnull(ws_sold_date_sk#6) AND isnotnull(ws_item_sk#7)) + +(84) Exchange +Input [3]: [ws_sold_date_sk#6, ws_item_sk#7, ws_ext_discount_amt#8] +Arguments: hashpartitioning(ws_sold_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(85) Sort +Input [3]: [ws_sold_date_sk#6, ws_item_sk#7, ws_ext_discount_amt#8] +Arguments: [ws_sold_date_sk#6 ASC NULLS FIRST], false, 0 + +(86) Scan parquet +Output [2]: [d_date_sk#9, d_date#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,2000-01-27), LessThanOrEqual(d_date,2000-04-26), IsNotNull(d_date_sk)] +ReadSchema: struct + +(87) Filter +Input [2]: [d_date_sk#9, d_date#10] +Condition : (((isnotnull(d_date#10) AND (d_date#10 >= 2000-01-27)) AND (d_date#10 <= 2000-04-26)) AND isnotnull(d_date_sk#9)) + +(88) Project +Output [1]: [d_date_sk#9] +Input [2]: [d_date_sk#9, d_date#10] + +(89) Exchange +Input [1]: [d_date_sk#9] +Arguments: hashpartitioning(d_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(90) Sort +Input [1]: [d_date_sk#9] +Arguments: [d_date_sk#9 ASC NULLS FIRST], false, 0 + +(91) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#6] +Right keys [1]: [d_date_sk#9] +Join type: Inner +Join condition: None + +(92) Project +Output [2]: [ws_item_sk#7, ws_ext_discount_amt#8] +Input [4]: [ws_sold_date_sk#6, ws_item_sk#7, ws_ext_discount_amt#8, d_date_sk#9] + +(93) HashAggregate +Input [2]: [ws_item_sk#7, ws_ext_discount_amt#8] +Keys [1]: [ws_item_sk#7] +Functions [1]: [partial_avg(UnscaledValue(ws_ext_discount_amt#8))] +Aggregate Attributes [2]: [sum#12, count#13] +Results [3]: [ws_item_sk#7, sum#22, count#23] + +(94) Exchange +Input [3]: [ws_item_sk#7, sum#22, count#23] +Arguments: hashpartitioning(ws_item_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(95) HashAggregate +Input [3]: [ws_item_sk#7, sum#22, count#23] +Keys [1]: [ws_item_sk#7] +Functions [1]: [avg(UnscaledValue(ws_ext_discount_amt#8))] +Aggregate Attributes [1]: [avg(UnscaledValue(ws_ext_discount_amt#8))#15] +Results [2]: [(1.3 * cast((avg(UnscaledValue(ws_ext_discount_amt#8))#15 / 100.0) as decimal(11,6))) AS (1.3 * avg(ws_ext_discount_amt))#16, ws_item_sk#7] + +(96) Filter +Input [2]: [(1.3 * avg(ws_ext_discount_amt))#16, ws_item_sk#7] +Condition : isnotnull((1.3 * avg(ws_ext_discount_amt))#16) + +(97) Sort +Input [2]: [(1.3 * avg(ws_ext_discount_amt))#16, ws_item_sk#7] +Arguments: [ws_item_sk#7 ASC NULLS FIRST], false, 0 + +(98) SortMergeJoin +Left keys [1]: [i_item_sk#4] +Right keys [1]: [ws_item_sk#7] +Join type: Inner +Join condition: (cast(ws_ext_discount_amt#3 as decimal(14,7)) > (1.3 * avg(ws_ext_discount_amt))#16) + +(99) Project +Output [2]: [ws_sold_date_sk#1, ws_ext_discount_amt#3] +Input [5]: [ws_sold_date_sk#1, ws_ext_discount_amt#3, i_item_sk#4, (1.3 * avg(ws_ext_discount_amt))#16, ws_item_sk#7] + +(100) Exchange +Input [2]: [ws_sold_date_sk#1, ws_ext_discount_amt#3] +Arguments: hashpartitioning(ws_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(101) Sort +Input [2]: [ws_sold_date_sk#1, ws_ext_discount_amt#3] +Arguments: [ws_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(102) Scan parquet +Output [2]: [d_date_sk#17, d_date#24] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,2000-01-27), LessThanOrEqual(d_date,2000-04-26), IsNotNull(d_date_sk)] +ReadSchema: struct + +(103) Filter +Input [2]: [d_date_sk#17, d_date#24] +Condition : (((isnotnull(d_date#24) AND (d_date#24 >= 2000-01-27)) AND (d_date#24 <= 2000-04-26)) AND isnotnull(d_date_sk#17)) + +(104) Project +Output [1]: [d_date_sk#17] +Input [2]: [d_date_sk#17, d_date#24] + +(105) Exchange +Input [1]: [d_date_sk#17] +Arguments: hashpartitioning(d_date_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(106) Sort +Input [1]: [d_date_sk#17] +Arguments: [d_date_sk#17 ASC NULLS FIRST], false, 0 + +(107) SortMergeJoin +Left keys [1]: [ws_sold_date_sk#1] +Right keys [1]: [d_date_sk#17] +Join type: Inner +Join condition: None + +(108) Project +Output [1]: [ws_ext_discount_amt#3] +Input [3]: [ws_sold_date_sk#1, ws_ext_discount_amt#3, d_date_sk#17] + +(109) HashAggregate +Input [1]: [ws_ext_discount_amt#3] +Keys: [] +Functions [1]: [partial_sum(UnscaledValue(ws_ext_discount_amt#3))] +Aggregate Attributes [1]: [sum#19] +Results [1]: [sum#25] + +(110) Exchange +Input [1]: [sum#25] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=15] + +(111) HashAggregate +Input [1]: [sum#25] +Keys: [] +Functions [1]: [sum(UnscaledValue(ws_ext_discount_amt#3))] +Aggregate Attributes [1]: [sum(UnscaledValue(ws_ext_discount_amt#3))#20] +Results [1]: [MakeDecimal(sum(UnscaledValue(ws_ext_discount_amt#3))#20,17,2) AS Excess Discount Amount #21] + +(112) AdaptiveSparkPlan +Output [1]: [Excess Discount Amount #21] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q93.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q93.txt new file mode 100644 index 000000000..43760056a --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q93.txt @@ -0,0 +1,356 @@ +== Physical Plan == +AdaptiveSparkPlan (64) ++- == Final Plan == + NativeTakeOrdered (41) + +- NativeProject (40) + +- NativeHashAggregate (39) + +- InputAdapter (38) + +- AQEShuffleRead (37) + +- ShuffleQueryStage (36), Statistics(X) + +- NativeShuffleExchange (35) + +- NativeHashAggregate (34) + +- NativeProject (33) + +- NativeSortMergeJoin Inner (32) + :- NativeSort (22) + : +- InputAdapter (21) + : +- AQEShuffleRead (20) + : +- ShuffleQueryStage (19), Statistics(X) + : +- NativeShuffleExchange (18) + : +- NativeProject (17) + : +- NativeSortMergeJoin Inner (16) + : :- NativeSort (7) + : : +- InputAdapter (6) + : : +- AQEShuffleRead (5) + : : +- ShuffleQueryStage (4), Statistics(X) + : : +- NativeShuffleExchange (3) + : : +- InputAdapter (2) + : : +- NativeParquetScan (1) + : +- NativeSort (15) + : +- InputAdapter (14) + : +- AQEShuffleRead (13) + : +- ShuffleQueryStage (12), Statistics(X) + : +- NativeShuffleExchange (11) + : +- NativeFilter (10) + : +- InputAdapter (9) + : +- NativeParquetScan (8) + +- NativeSort (31) + +- InputAdapter (30) + +- AQEShuffleRead (29) + +- ShuffleQueryStage (28), Statistics(X) + +- NativeShuffleExchange (27) + +- NativeProject (26) + +- NativeFilter (25) + +- InputAdapter (24) + +- NativeParquetScan (23) ++- == Initial Plan == + TakeOrderedAndProject (63) + +- HashAggregate (62) + +- Exchange (61) + +- HashAggregate (60) + +- Project (59) + +- SortMergeJoin Inner (58) + :- Sort (52) + : +- Exchange (51) + : +- Project (50) + : +- SortMergeJoin Inner (49) + : :- Sort (44) + : : +- Exchange (43) + : : +- Scan parquet (42) + : +- Sort (48) + : +- Exchange (47) + : +- Filter (46) + : +- Scan parquet (45) + +- Sort (57) + +- Exchange (56) + +- Project (55) + +- Filter (54) + +- Scan parquet (53) + + +(42) Scan parquet +Output [5]: [ss_item_sk#1, ss_customer_sk#2, ss_ticket_number#3, ss_quantity#4, ss_sales_price#5] +Batched: true +Location: InMemoryFileIndex [file:/] +ReadSchema: struct + +(2) InputAdapter +Input [5]: [ss_item_sk#1, ss_customer_sk#2, ss_ticket_number#3, ss_quantity#4, ss_sales_price#5] +Arguments: [#1, #2, #3, #4, #5] + +(3) NativeShuffleExchange +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: hashpartitioning(ss_item_sk#1, ss_ticket_number#3, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(4) ShuffleQueryStage +Output [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: X + +(5) AQEShuffleRead +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: coalesced + +(6) InputAdapter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] + +(7) NativeSort +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: [ss_item_sk#1 ASC NULLS FIRST, ss_ticket_number#3 ASC NULLS FIRST], false + +(45) Scan parquet +Output [4]: [sr_item_sk#6, sr_reason_sk#7, sr_ticket_number#8, sr_return_quantity#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_item_sk), IsNotNull(sr_ticket_number), IsNotNull(sr_reason_sk)] +ReadSchema: struct + +(9) InputAdapter +Input [4]: [sr_item_sk#6, sr_reason_sk#7, sr_ticket_number#8, sr_return_quantity#9] +Arguments: [#6, #7, #8, #9] + +(10) NativeFilter +Input [4]: [#6#6, #7#7, #8#8, #9#9] +Condition : ((isnotnull(sr_item_sk#6) AND isnotnull(sr_ticket_number#8)) AND isnotnull(sr_reason_sk#7)) + +(11) NativeShuffleExchange +Input [4]: [#6#6, #7#7, #8#8, #9#9] +Arguments: hashpartitioning(sr_item_sk#6, sr_ticket_number#8, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(12) ShuffleQueryStage +Output [4]: [#6#6, #7#7, #8#8, #9#9] +Arguments: X + +(13) AQEShuffleRead +Input [4]: [#6#6, #7#7, #8#8, #9#9] +Arguments: coalesced + +(14) InputAdapter +Input [4]: [#6#6, #7#7, #8#8, #9#9] + +(15) NativeSort +Input [4]: [#6#6, #7#7, #8#8, #9#9] +Arguments: [sr_item_sk#6 ASC NULLS FIRST, sr_ticket_number#8 ASC NULLS FIRST], false + +(16) NativeSortMergeJoin +Left keys [2]: [ss_item_sk#1, ss_ticket_number#3] +Right keys [2]: [sr_item_sk#6, sr_ticket_number#8] +Join type: Inner +Join condition: None + +(17) NativeProject +Output [5]: [ss_customer_sk#2, ss_quantity#4, ss_sales_price#5, sr_reason_sk#7, sr_return_quantity#9] +Input [9]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9] + +(18) NativeShuffleExchange +Input [5]: [ss_customer_sk#2, ss_quantity#4, ss_sales_price#5, sr_reason_sk#7, sr_return_quantity#9] +Arguments: hashpartitioning(sr_reason_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(19) ShuffleQueryStage +Output [5]: [ss_customer_sk#2, ss_quantity#4, ss_sales_price#5, sr_reason_sk#7, sr_return_quantity#9] +Arguments: X + +(20) AQEShuffleRead +Input [5]: [ss_customer_sk#2, ss_quantity#4, ss_sales_price#5, sr_reason_sk#7, sr_return_quantity#9] +Arguments: coalesced + +(21) InputAdapter +Input [5]: [ss_customer_sk#2, ss_quantity#4, ss_sales_price#5, sr_reason_sk#7, sr_return_quantity#9] + +(22) NativeSort +Input [5]: [ss_customer_sk#2, ss_quantity#4, ss_sales_price#5, sr_reason_sk#7, sr_return_quantity#9] +Arguments: [sr_reason_sk#7 ASC NULLS FIRST], false + +(53) Scan parquet +Output [2]: [r_reason_sk#10, r_reason_desc#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(r_reason_desc), EqualTo(r_reason_desc,reason 28), IsNotNull(r_reason_sk)] +ReadSchema: struct + +(24) InputAdapter +Input [2]: [r_reason_sk#10, r_reason_desc#11] +Arguments: [#10, #11] + +(25) NativeFilter +Input [2]: [#10#10, #11#11] +Condition : ((isnotnull(r_reason_desc#11) AND (r_reason_desc#11 = reason 28)) AND isnotnull(r_reason_sk#10)) + +(26) NativeProject +Output [1]: [r_reason_sk#10] +Input [2]: [#10#10, #11#11] + +(27) NativeShuffleExchange +Input [1]: [r_reason_sk#10] +Arguments: hashpartitioning(r_reason_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(28) ShuffleQueryStage +Output [1]: [r_reason_sk#10] +Arguments: X + +(29) AQEShuffleRead +Input [1]: [r_reason_sk#10] +Arguments: coalesced + +(30) InputAdapter +Input [1]: [r_reason_sk#10] + +(31) NativeSort +Input [1]: [r_reason_sk#10] +Arguments: [r_reason_sk#10 ASC NULLS FIRST], false + +(32) NativeSortMergeJoin +Left keys [1]: [sr_reason_sk#7] +Right keys [1]: [r_reason_sk#10] +Join type: Inner +Join condition: None + +(33) NativeProject +Output [2]: [ss_customer_sk#2, CASE WHEN isnotnull(sr_return_quantity#9) THEN (cast((ss_quantity#4 - sr_return_quantity#9) as decimal(10,0)) * ss_sales_price#5) ELSE (cast(ss_quantity#4 as decimal(10,0)) * ss_sales_price#5) END AS act_sales#12] +Input [6]: [ss_customer_sk#2, ss_quantity#4, ss_sales_price#5, sr_reason_sk#7, sr_return_quantity#9, r_reason_sk#10] + +(34) NativeHashAggregate +Input [2]: [ss_customer_sk#2, act_sales#12] +Keys [1]: [ss_customer_sk#2] +Functions [1]: [partial_sum(act_sales#12)] +Aggregate Attributes [2]: [sum#13, isEmpty#14] +Results [2]: [ss_customer_sk#2, #15#15] + +(35) NativeShuffleExchange +Input [2]: [ss_customer_sk#2, #15#15] +Arguments: hashpartitioning(ss_customer_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(36) ShuffleQueryStage +Output [2]: [ss_customer_sk#2, #15#15] +Arguments: X + +(37) AQEShuffleRead +Input [2]: [ss_customer_sk#2, #15#15] +Arguments: coalesced + +(38) InputAdapter +Input [2]: [ss_customer_sk#2, #15#15] + +(39) NativeHashAggregate +Input [2]: [ss_customer_sk#2, #15#15] +Keys [1]: [ss_customer_sk#2] +Functions [1]: [sum(act_sales#12)] +Aggregate Attributes [1]: [sum(act_sales#12)#16] +Results [2]: [ss_customer_sk#2, sum(act_sales#12)#16] + +(40) NativeProject +Output [2]: [ss_customer_sk#2, sum(act_sales#12)#16 AS sumsales#17] +Input [2]: [ss_customer_sk#2, sum(act_sales#12)#16] + +(41) NativeTakeOrdered +Input [2]: [ss_customer_sk#2, sumsales#17] +Arguments: X, [sumsales#17 ASC NULLS FIRST, ss_customer_sk#2 ASC NULLS FIRST] + +(42) Scan parquet +Output [5]: [ss_item_sk#1, ss_customer_sk#2, ss_ticket_number#3, ss_quantity#4, ss_sales_price#5] +Batched: true +Location: InMemoryFileIndex [file:/] +ReadSchema: struct + +(43) Exchange +Input [5]: [ss_item_sk#1, ss_customer_sk#2, ss_ticket_number#3, ss_quantity#4, ss_sales_price#5] +Arguments: hashpartitioning(ss_item_sk#1, ss_ticket_number#3, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) Sort +Input [5]: [ss_item_sk#1, ss_customer_sk#2, ss_ticket_number#3, ss_quantity#4, ss_sales_price#5] +Arguments: [ss_item_sk#1 ASC NULLS FIRST, ss_ticket_number#3 ASC NULLS FIRST], false, 0 + +(45) Scan parquet +Output [4]: [sr_item_sk#6, sr_reason_sk#7, sr_ticket_number#8, sr_return_quantity#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sr_item_sk), IsNotNull(sr_ticket_number), IsNotNull(sr_reason_sk)] +ReadSchema: struct + +(46) Filter +Input [4]: [sr_item_sk#6, sr_reason_sk#7, sr_ticket_number#8, sr_return_quantity#9] +Condition : ((isnotnull(sr_item_sk#6) AND isnotnull(sr_ticket_number#8)) AND isnotnull(sr_reason_sk#7)) + +(47) Exchange +Input [4]: [sr_item_sk#6, sr_reason_sk#7, sr_ticket_number#8, sr_return_quantity#9] +Arguments: hashpartitioning(sr_item_sk#6, sr_ticket_number#8, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(48) Sort +Input [4]: [sr_item_sk#6, sr_reason_sk#7, sr_ticket_number#8, sr_return_quantity#9] +Arguments: [sr_item_sk#6 ASC NULLS FIRST, sr_ticket_number#8 ASC NULLS FIRST], false, 0 + +(49) SortMergeJoin +Left keys [2]: [ss_item_sk#1, ss_ticket_number#3] +Right keys [2]: [sr_item_sk#6, sr_ticket_number#8] +Join type: Inner +Join condition: None + +(50) Project +Output [5]: [ss_customer_sk#2, ss_quantity#4, ss_sales_price#5, sr_reason_sk#7, sr_return_quantity#9] +Input [9]: [ss_item_sk#1, ss_customer_sk#2, ss_ticket_number#3, ss_quantity#4, ss_sales_price#5, sr_item_sk#6, sr_reason_sk#7, sr_ticket_number#8, sr_return_quantity#9] + +(51) Exchange +Input [5]: [ss_customer_sk#2, ss_quantity#4, ss_sales_price#5, sr_reason_sk#7, sr_return_quantity#9] +Arguments: hashpartitioning(sr_reason_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(52) Sort +Input [5]: [ss_customer_sk#2, ss_quantity#4, ss_sales_price#5, sr_reason_sk#7, sr_return_quantity#9] +Arguments: [sr_reason_sk#7 ASC NULLS FIRST], false, 0 + +(53) Scan parquet +Output [2]: [r_reason_sk#10, r_reason_desc#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(r_reason_desc), EqualTo(r_reason_desc,reason 28), IsNotNull(r_reason_sk)] +ReadSchema: struct + +(54) Filter +Input [2]: [r_reason_sk#10, r_reason_desc#11] +Condition : ((isnotnull(r_reason_desc#11) AND (r_reason_desc#11 = reason 28)) AND isnotnull(r_reason_sk#10)) + +(55) Project +Output [1]: [r_reason_sk#10] +Input [2]: [r_reason_sk#10, r_reason_desc#11] + +(56) Exchange +Input [1]: [r_reason_sk#10] +Arguments: hashpartitioning(r_reason_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(57) Sort +Input [1]: [r_reason_sk#10] +Arguments: [r_reason_sk#10 ASC NULLS FIRST], false, 0 + +(58) SortMergeJoin +Left keys [1]: [sr_reason_sk#7] +Right keys [1]: [r_reason_sk#10] +Join type: Inner +Join condition: None + +(59) Project +Output [2]: [ss_customer_sk#2, CASE WHEN isnotnull(sr_return_quantity#9) THEN (cast((ss_quantity#4 - sr_return_quantity#9) as decimal(10,0)) * ss_sales_price#5) ELSE (cast(ss_quantity#4 as decimal(10,0)) * ss_sales_price#5) END AS act_sales#12] +Input [6]: [ss_customer_sk#2, ss_quantity#4, ss_sales_price#5, sr_reason_sk#7, sr_return_quantity#9, r_reason_sk#10] + +(60) HashAggregate +Input [2]: [ss_customer_sk#2, act_sales#12] +Keys [1]: [ss_customer_sk#2] +Functions [1]: [partial_sum(act_sales#12)] +Aggregate Attributes [2]: [sum#13, isEmpty#14] +Results [3]: [ss_customer_sk#2, sum#18, isEmpty#19] + +(61) Exchange +Input [3]: [ss_customer_sk#2, sum#18, isEmpty#19] +Arguments: hashpartitioning(ss_customer_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(62) HashAggregate +Input [3]: [ss_customer_sk#2, sum#18, isEmpty#19] +Keys [1]: [ss_customer_sk#2] +Functions [1]: [sum(act_sales#12)] +Aggregate Attributes [1]: [sum(act_sales#12)#16] +Results [2]: [ss_customer_sk#2, sum(act_sales#12)#16 AS sumsales#17] + +(63) TakeOrderedAndProject +Input [2]: [ss_customer_sk#2, sumsales#17] +Arguments: X, [sumsales#17 ASC NULLS FIRST, ss_customer_sk#2 ASC NULLS FIRST], [ss_customer_sk#2, sumsales#17] + +(64) AdaptiveSparkPlan +Output [2]: [ss_customer_sk#2, sumsales#17] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q94.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q94.txt new file mode 100644 index 000000000..e5c42c661 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q94.txt @@ -0,0 +1,735 @@ +== Physical Plan == +AdaptiveSparkPlan (133) ++- == Final Plan == + NativeProject (86) + +- NativeHashAggregate (85) + +- ShuffleQueryStage (84), Statistics(X) + +- NativeShuffleExchange (83) + +- NativeHashAggregate (82) + +- NativeHashAggregate (81) + +- InputAdapter (80) + +- AQEShuffleRead (79) + +- ShuffleQueryStage (78), Statistics(X) + +- NativeShuffleExchange (77) + +- NativeHashAggregate (76) + +- NativeProject (75) + +- NativeProject (74) + +- NativeSortMergeJoin Inner (73) + :- NativeSort (63) + : +- InputAdapter (62) + : +- AQEShuffleRead (61) + : +- ShuffleQueryStage (60), Statistics(X) + : +- NativeShuffleExchange (59) + : +- NativeProject (58) + : +- NativeSortMergeJoin Inner (57) + : :- NativeSort (47) + : : +- InputAdapter (46) + : : +- AQEShuffleRead (45) + : : +- ShuffleQueryStage (44), Statistics(X) + : : +- NativeShuffleExchange (43) + : : +- NativeProject (42) + : : +- NativeSortMergeJoin Inner (41) + : : :- NativeSort (31) + : : : +- InputAdapter (30) + : : : +- AQEShuffleRead (29) + : : : +- ShuffleQueryStage (28), Statistics(X) + : : : +- NativeShuffleExchange (27) + : : : +- NativeSortMergeJoin LeftAnti (26) + : : : :- ConvertToNative (18) + : : : : +- * Project (17) + : : : : +- * SortMergeJoin LeftSemi (16) + : : : : :- NativeSort (8) + : : : : : +- InputAdapter (7) + : : : : : +- AQEShuffleRead (6) + : : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : : +- NativeShuffleExchange (4) + : : : : : +- NativeFilter (3) + : : : : : +- InputAdapter (2) + : : : : : +- NativeParquetScan (1) + : : : : +- NativeSort (15) + : : : : +- InputAdapter (14) + : : : : +- AQEShuffleRead (13) + : : : : +- ShuffleQueryStage (12), Statistics(X) + : : : : +- NativeShuffleExchange (11) + : : : : +- InputAdapter (10) + : : : : +- NativeParquetScan (9) + : : : +- NativeSort (25) + : : : +- InputAdapter (24) + : : : +- AQEShuffleRead (23) + : : : +- ShuffleQueryStage (22), Statistics(X) + : : : +- NativeShuffleExchange (21) + : : : +- InputAdapter (20) + : : : +- NativeParquetScan (19) + : : +- NativeSort (40) + : : +- InputAdapter (39) + : : +- AQEShuffleRead (38) + : : +- ShuffleQueryStage (37), Statistics(X) + : : +- NativeShuffleExchange (36) + : : +- NativeProject (35) + : : +- NativeFilter (34) + : : +- InputAdapter (33) + : : +- NativeParquetScan (32) + : +- NativeSort (56) + : +- InputAdapter (55) + : +- AQEShuffleRead (54) + : +- ShuffleQueryStage (53), Statistics(X) + : +- NativeShuffleExchange (52) + : +- NativeProject (51) + : +- NativeFilter (50) + : +- InputAdapter (49) + : +- NativeParquetScan (48) + +- NativeSort (72) + +- InputAdapter (71) + +- AQEShuffleRead (70) + +- ShuffleQueryStage (69), Statistics(X) + +- NativeShuffleExchange (68) + +- NativeProject (67) + +- NativeFilter (66) + +- InputAdapter (65) + +- NativeParquetScan (64) ++- == Initial Plan == + HashAggregate (132) + +- Exchange (131) + +- HashAggregate (130) + +- HashAggregate (129) + +- Exchange (128) + +- HashAggregate (127) + +- Project (126) + +- SortMergeJoin Inner (125) + :- Sort (119) + : +- Exchange (118) + : +- Project (117) + : +- SortMergeJoin Inner (116) + : :- Sort (110) + : : +- Exchange (109) + : : +- Project (108) + : : +- SortMergeJoin Inner (107) + : : :- Sort (101) + : : : +- Exchange (100) + : : : +- SortMergeJoin LeftAnti (99) + : : : :- Project (95) + : : : : +- SortMergeJoin LeftSemi (94) + : : : : :- Sort (90) + : : : : : +- Exchange (89) + : : : : : +- Filter (88) + : : : : : +- Scan parquet (87) + : : : : +- Sort (93) + : : : : +- Exchange (92) + : : : : +- Scan parquet (91) + : : : +- Sort (98) + : : : +- Exchange (97) + : : : +- Scan parquet (96) + : : +- Sort (106) + : : +- Exchange (105) + : : +- Project (104) + : : +- Filter (103) + : : +- Scan parquet (102) + : +- Sort (115) + : +- Exchange (114) + : +- Project (113) + : +- Filter (112) + : +- Scan parquet (111) + +- Sort (124) + +- Exchange (123) + +- Project (122) + +- Filter (121) + +- Scan parquet (120) + + +(87) Scan parquet +Output [7]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_warehouse_sk#4, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_ship_date_sk), IsNotNull(ws_ship_addr_sk), IsNotNull(ws_web_site_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [7]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_warehouse_sk#4, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Arguments: [#1, #2, #3, #4, #5, #6, #7] + +(3) NativeFilter +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Condition : ((isnotnull(ws_ship_date_sk#1) AND isnotnull(ws_ship_addr_sk#2)) AND isnotnull(ws_web_site_sk#3)) + +(4) NativeShuffleExchange +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Arguments: hashpartitioning(ws_order_number#5, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Arguments: X + +(6) AQEShuffleRead +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Arguments: coalesced + +(7) InputAdapter +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] + +(8) NativeSort +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] +Arguments: [ws_order_number#5 ASC NULLS FIRST], false + +(91) Scan parquet +Output [2]: [ws_warehouse_sk#8, ws_order_number#9] +Batched: true +Location: InMemoryFileIndex [file:/] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [ws_warehouse_sk#8, ws_order_number#9] +Arguments: [#8, #9] + +(11) NativeShuffleExchange +Input [2]: [#8#8, #9#9] +Arguments: hashpartitioning(ws_order_number#9, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(12) ShuffleQueryStage +Output [2]: [#8#8, #9#9] +Arguments: X + +(13) AQEShuffleRead +Input [2]: [#8#8, #9#9] +Arguments: coalesced + +(14) InputAdapter +Input [2]: [#8#8, #9#9] + +(15) NativeSort +Input [2]: [#8#8, #9#9] +Arguments: [ws_order_number#9 ASC NULLS FIRST], false + +(16) SortMergeJoin [codegen id : 1] +Left keys [1]: [ws_order_number#5] +Right keys [1]: [ws_order_number#9] +Join type: LeftSemi +Join condition: NOT (ws_warehouse_sk#4 = ws_warehouse_sk#8) + +(17) Project [codegen id : 1] +Output [6]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] + +(18) ConvertToNative +Input [6]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] + +(96) Scan parquet +Output [1]: [wr_order_number#10] +Batched: true +Location: InMemoryFileIndex [file:/] +ReadSchema: struct + +(20) InputAdapter +Input [1]: [wr_order_number#10] +Arguments: [#10] + +(21) NativeShuffleExchange +Input [1]: [#10#10] +Arguments: hashpartitioning(wr_order_number#10, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(22) ShuffleQueryStage +Output [1]: [#10#10] +Arguments: X + +(23) AQEShuffleRead +Input [1]: [#10#10] +Arguments: coalesced + +(24) InputAdapter +Input [1]: [#10#10] + +(25) NativeSort +Input [1]: [#10#10] +Arguments: [wr_order_number#10 ASC NULLS FIRST], false + +(26) NativeSortMergeJoin +Left keys [1]: [ws_order_number#5] +Right keys [1]: [wr_order_number#10] +Join type: LeftAnti +Join condition: None + +(27) NativeShuffleExchange +Input [6]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Arguments: hashpartitioning(ws_ship_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(28) ShuffleQueryStage +Output [6]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Arguments: X + +(29) AQEShuffleRead +Input [6]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Arguments: coalesced + +(30) InputAdapter +Input [6]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] + +(31) NativeSort +Input [6]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Arguments: [ws_ship_date_sk#1 ASC NULLS FIRST], false + +(102) Scan parquet +Output [2]: [d_date_sk#11, d_date#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,1999-02-01), LessThanOrEqual(d_date,1999-04-02), IsNotNull(d_date_sk)] +ReadSchema: struct + +(33) InputAdapter +Input [2]: [d_date_sk#11, d_date#12] +Arguments: [#11, #12] + +(34) NativeFilter +Input [2]: [#11#11, #12#12] +Condition : (((isnotnull(d_date#12) AND (d_date#12 >= 1999-02-01)) AND (d_date#12 <= 1999-04-02)) AND isnotnull(d_date_sk#11)) + +(35) NativeProject +Output [1]: [d_date_sk#11] +Input [2]: [#11#11, #12#12] + +(36) NativeShuffleExchange +Input [1]: [d_date_sk#11] +Arguments: hashpartitioning(d_date_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [1]: [d_date_sk#11] +Arguments: X + +(38) AQEShuffleRead +Input [1]: [d_date_sk#11] +Arguments: coalesced + +(39) InputAdapter +Input [1]: [d_date_sk#11] + +(40) NativeSort +Input [1]: [d_date_sk#11] +Arguments: [d_date_sk#11 ASC NULLS FIRST], false + +(41) NativeSortMergeJoin +Left keys [1]: [ws_ship_date_sk#1] +Right keys [1]: [d_date_sk#11] +Join type: Inner +Join condition: None + +(42) NativeProject +Output [5]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Input [7]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7, d_date_sk#11] + +(43) NativeShuffleExchange +Input [5]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Arguments: hashpartitioning(ws_ship_addr_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) ShuffleQueryStage +Output [5]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Arguments: X + +(45) AQEShuffleRead +Input [5]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Arguments: coalesced + +(46) InputAdapter +Input [5]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] + +(47) NativeSort +Input [5]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Arguments: [ws_ship_addr_sk#2 ASC NULLS FIRST], false + +(111) Scan parquet +Output [2]: [ca_address_sk#13, ca_state#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_state), EqualTo(ca_state,IL), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(49) InputAdapter +Input [2]: [ca_address_sk#13, ca_state#14] +Arguments: [#13, #14] + +(50) NativeFilter +Input [2]: [#13#13, #14#14] +Condition : ((isnotnull(ca_state#14) AND (ca_state#14 = IL)) AND isnotnull(ca_address_sk#13)) + +(51) NativeProject +Output [1]: [ca_address_sk#13] +Input [2]: [#13#13, #14#14] + +(52) NativeShuffleExchange +Input [1]: [ca_address_sk#13] +Arguments: hashpartitioning(ca_address_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(53) ShuffleQueryStage +Output [1]: [ca_address_sk#13] +Arguments: X + +(54) AQEShuffleRead +Input [1]: [ca_address_sk#13] +Arguments: coalesced + +(55) InputAdapter +Input [1]: [ca_address_sk#13] + +(56) NativeSort +Input [1]: [ca_address_sk#13] +Arguments: [ca_address_sk#13 ASC NULLS FIRST], false + +(57) NativeSortMergeJoin +Left keys [1]: [ws_ship_addr_sk#2] +Right keys [1]: [ca_address_sk#13] +Join type: Inner +Join condition: None + +(58) NativeProject +Output [4]: [ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Input [6]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7, ca_address_sk#13] + +(59) NativeShuffleExchange +Input [4]: [ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Arguments: hashpartitioning(ws_web_site_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(60) ShuffleQueryStage +Output [4]: [ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Arguments: X + +(61) AQEShuffleRead +Input [4]: [ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Arguments: coalesced + +(62) InputAdapter +Input [4]: [ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] + +(63) NativeSort +Input [4]: [ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Arguments: [ws_web_site_sk#3 ASC NULLS FIRST], false + +(120) Scan parquet +Output [2]: [web_site_sk#15, web_company_name#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(web_company_name), EqualTo(web_company_name,pri), IsNotNull(web_site_sk)] +ReadSchema: struct + +(65) InputAdapter +Input [2]: [web_site_sk#15, web_company_name#16] +Arguments: [#15, #16] + +(66) NativeFilter +Input [2]: [#15#15, #16#16] +Condition : ((isnotnull(web_company_name#16) AND (web_company_name#16 = pri)) AND isnotnull(web_site_sk#15)) + +(67) NativeProject +Output [1]: [web_site_sk#15] +Input [2]: [#15#15, #16#16] + +(68) NativeShuffleExchange +Input [1]: [web_site_sk#15] +Arguments: hashpartitioning(web_site_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(69) ShuffleQueryStage +Output [1]: [web_site_sk#15] +Arguments: X + +(70) AQEShuffleRead +Input [1]: [web_site_sk#15] +Arguments: coalesced + +(71) InputAdapter +Input [1]: [web_site_sk#15] + +(72) NativeSort +Input [1]: [web_site_sk#15] +Arguments: [web_site_sk#15 ASC NULLS FIRST], false + +(73) NativeSortMergeJoin +Left keys [1]: [ws_web_site_sk#3] +Right keys [1]: [web_site_sk#15] +Join type: Inner +Join condition: None + +(74) NativeProject +Output [3]: [ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Input [5]: [ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7, web_site_sk#15] + +(75) NativeProject +Output [3]: [ws_order_number#5 AS ws_order_number#5, UnscaledValue(ws_ext_ship_cost#6) AS _c1#17, UnscaledValue(ws_net_profit#7) AS _c2#18] +Input [3]: [ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] + +(76) NativeHashAggregate +Input [3]: [ws_order_number#5, _c1#17, _c2#18] +Keys [1]: [ws_order_number#5] +Functions [2]: [partial_sum(_c1#17), partial_sum(_c2#18)] +Aggregate Attributes [2]: [sum(UnscaledValue(ws_ext_ship_cost#6))#19, sum(UnscaledValue(ws_net_profit#7))#20] +Results [2]: [ws_order_number#5, #21#21] + +(77) NativeShuffleExchange +Input [2]: [ws_order_number#5, #21#21] +Arguments: hashpartitioning(ws_order_number#5, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(78) ShuffleQueryStage +Output [2]: [ws_order_number#5, #21#21] +Arguments: X + +(79) AQEShuffleRead +Input [2]: [ws_order_number#5, #21#21] +Arguments: coalesced + +(80) InputAdapter +Input [2]: [ws_order_number#5, #21#21] + +(81) NativeHashAggregate +Input [2]: [ws_order_number#5, #21#21] +Keys [1]: [ws_order_number#5] +Functions [2]: [merge_sum(UnscaledValue(ws_ext_ship_cost#6)), merge_sum(UnscaledValue(ws_net_profit#7))] +Aggregate Attributes [2]: [sum(UnscaledValue(ws_ext_ship_cost#6))#19, sum(UnscaledValue(ws_net_profit#7))#20] +Results [2]: [ws_order_number#5, #21#21] + +(82) NativeHashAggregate +Input [2]: [ws_order_number#5, #21#21] +Keys: [] +Functions [3]: [merge_sum(UnscaledValue(ws_ext_ship_cost#6)), merge_sum(UnscaledValue(ws_net_profit#7)), partial_count(distinct ws_order_number#5)] +Aggregate Attributes [3]: [sum(UnscaledValue(ws_ext_ship_cost#6))#19, sum(UnscaledValue(ws_net_profit#7))#20, count(ws_order_number#5)#22] +Results [1]: [#21#21] + +(83) NativeShuffleExchange +Input [1]: [#21#21] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=11] + +(84) ShuffleQueryStage +Output [1]: [#21#21] +Arguments: X + +(85) NativeHashAggregate +Input [1]: [#21#21] +Keys: [] +Functions [3]: [sum(UnscaledValue(ws_ext_ship_cost#6)), sum(UnscaledValue(ws_net_profit#7)), count(distinct ws_order_number#5)] +Aggregate Attributes [3]: [sum(UnscaledValue(ws_ext_ship_cost#6))#19, sum(UnscaledValue(ws_net_profit#7))#20, count(ws_order_number#5)#22] +Results [3]: [sum(UnscaledValue(ws_ext_ship_cost#6))#19, sum(UnscaledValue(ws_net_profit#7))#20, count(ws_order_number#5)#22] + +(86) NativeProject +Output [3]: [count(ws_order_number#5)#22 AS order count #23, MakeDecimal(sum(UnscaledValue(ws_ext_ship_cost#6))#19,17,2) AS total shipping cost #24, MakeDecimal(sum(UnscaledValue(ws_net_profit#7))#20,17,2) AS total net profit #25] +Input [3]: [sum(UnscaledValue(ws_ext_ship_cost#6))#19, sum(UnscaledValue(ws_net_profit#7))#20, count(ws_order_number#5)#22] + +(87) Scan parquet +Output [7]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_warehouse_sk#4, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_ship_date_sk), IsNotNull(ws_ship_addr_sk), IsNotNull(ws_web_site_sk)] +ReadSchema: struct + +(88) Filter +Input [7]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_warehouse_sk#4, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Condition : ((isnotnull(ws_ship_date_sk#1) AND isnotnull(ws_ship_addr_sk#2)) AND isnotnull(ws_web_site_sk#3)) + +(89) Exchange +Input [7]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_warehouse_sk#4, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Arguments: hashpartitioning(ws_order_number#5, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(90) Sort +Input [7]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_warehouse_sk#4, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Arguments: [ws_order_number#5 ASC NULLS FIRST], false, 0 + +(91) Scan parquet +Output [2]: [ws_warehouse_sk#8, ws_order_number#9] +Batched: true +Location: InMemoryFileIndex [file:/] +ReadSchema: struct + +(92) Exchange +Input [2]: [ws_warehouse_sk#8, ws_order_number#9] +Arguments: hashpartitioning(ws_order_number#9, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(93) Sort +Input [2]: [ws_warehouse_sk#8, ws_order_number#9] +Arguments: [ws_order_number#9 ASC NULLS FIRST], false, 0 + +(94) SortMergeJoin +Left keys [1]: [ws_order_number#5] +Right keys [1]: [ws_order_number#9] +Join type: LeftSemi +Join condition: NOT (ws_warehouse_sk#4 = ws_warehouse_sk#8) + +(95) Project +Output [6]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Input [7]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_warehouse_sk#4, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] + +(96) Scan parquet +Output [1]: [wr_order_number#10] +Batched: true +Location: InMemoryFileIndex [file:/] +ReadSchema: struct + +(97) Exchange +Input [1]: [wr_order_number#10] +Arguments: hashpartitioning(wr_order_number#10, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(98) Sort +Input [1]: [wr_order_number#10] +Arguments: [wr_order_number#10 ASC NULLS FIRST], false, 0 + +(99) SortMergeJoin +Left keys [1]: [ws_order_number#5] +Right keys [1]: [wr_order_number#10] +Join type: LeftAnti +Join condition: None + +(100) Exchange +Input [6]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Arguments: hashpartitioning(ws_ship_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(101) Sort +Input [6]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Arguments: [ws_ship_date_sk#1 ASC NULLS FIRST], false, 0 + +(102) Scan parquet +Output [2]: [d_date_sk#11, d_date#12] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,1999-02-01), LessThanOrEqual(d_date,1999-04-02), IsNotNull(d_date_sk)] +ReadSchema: struct + +(103) Filter +Input [2]: [d_date_sk#11, d_date#12] +Condition : (((isnotnull(d_date#12) AND (d_date#12 >= 1999-02-01)) AND (d_date#12 <= 1999-04-02)) AND isnotnull(d_date_sk#11)) + +(104) Project +Output [1]: [d_date_sk#11] +Input [2]: [d_date_sk#11, d_date#12] + +(105) Exchange +Input [1]: [d_date_sk#11] +Arguments: hashpartitioning(d_date_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(106) Sort +Input [1]: [d_date_sk#11] +Arguments: [d_date_sk#11 ASC NULLS FIRST], false, 0 + +(107) SortMergeJoin +Left keys [1]: [ws_ship_date_sk#1] +Right keys [1]: [d_date_sk#11] +Join type: Inner +Join condition: None + +(108) Project +Output [5]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Input [7]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7, d_date_sk#11] + +(109) Exchange +Input [5]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Arguments: hashpartitioning(ws_ship_addr_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(110) Sort +Input [5]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Arguments: [ws_ship_addr_sk#2 ASC NULLS FIRST], false, 0 + +(111) Scan parquet +Output [2]: [ca_address_sk#13, ca_state#14] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_state), EqualTo(ca_state,IL), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(112) Filter +Input [2]: [ca_address_sk#13, ca_state#14] +Condition : ((isnotnull(ca_state#14) AND (ca_state#14 = IL)) AND isnotnull(ca_address_sk#13)) + +(113) Project +Output [1]: [ca_address_sk#13] +Input [2]: [ca_address_sk#13, ca_state#14] + +(114) Exchange +Input [1]: [ca_address_sk#13] +Arguments: hashpartitioning(ca_address_sk#13, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(115) Sort +Input [1]: [ca_address_sk#13] +Arguments: [ca_address_sk#13 ASC NULLS FIRST], false, 0 + +(116) SortMergeJoin +Left keys [1]: [ws_ship_addr_sk#2] +Right keys [1]: [ca_address_sk#13] +Join type: Inner +Join condition: None + +(117) Project +Output [4]: [ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Input [6]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7, ca_address_sk#13] + +(118) Exchange +Input [4]: [ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Arguments: hashpartitioning(ws_web_site_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(119) Sort +Input [4]: [ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Arguments: [ws_web_site_sk#3 ASC NULLS FIRST], false, 0 + +(120) Scan parquet +Output [2]: [web_site_sk#15, web_company_name#16] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(web_company_name), EqualTo(web_company_name,pri), IsNotNull(web_site_sk)] +ReadSchema: struct + +(121) Filter +Input [2]: [web_site_sk#15, web_company_name#16] +Condition : ((isnotnull(web_company_name#16) AND (web_company_name#16 = pri)) AND isnotnull(web_site_sk#15)) + +(122) Project +Output [1]: [web_site_sk#15] +Input [2]: [web_site_sk#15, web_company_name#16] + +(123) Exchange +Input [1]: [web_site_sk#15] +Arguments: hashpartitioning(web_site_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(124) Sort +Input [1]: [web_site_sk#15] +Arguments: [web_site_sk#15 ASC NULLS FIRST], false, 0 + +(125) SortMergeJoin +Left keys [1]: [ws_web_site_sk#3] +Right keys [1]: [web_site_sk#15] +Join type: Inner +Join condition: None + +(126) Project +Output [3]: [ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Input [5]: [ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7, web_site_sk#15] + +(127) HashAggregate +Input [3]: [ws_order_number#5, ws_ext_ship_cost#6, ws_net_profit#7] +Keys [1]: [ws_order_number#5] +Functions [2]: [partial_sum(UnscaledValue(ws_ext_ship_cost#6)), partial_sum(UnscaledValue(ws_net_profit#7))] +Aggregate Attributes [2]: [sum(UnscaledValue(ws_ext_ship_cost#6))#19, sum(UnscaledValue(ws_net_profit#7))#20] +Results [3]: [ws_order_number#5, sum#26, sum#27] + +(128) Exchange +Input [3]: [ws_order_number#5, sum#26, sum#27] +Arguments: hashpartitioning(ws_order_number#5, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(129) HashAggregate +Input [3]: [ws_order_number#5, sum#26, sum#27] +Keys [1]: [ws_order_number#5] +Functions [2]: [merge_sum(UnscaledValue(ws_ext_ship_cost#6)), merge_sum(UnscaledValue(ws_net_profit#7))] +Aggregate Attributes [2]: [sum(UnscaledValue(ws_ext_ship_cost#6))#19, sum(UnscaledValue(ws_net_profit#7))#20] +Results [3]: [ws_order_number#5, sum#26, sum#27] + +(130) HashAggregate +Input [3]: [ws_order_number#5, sum#26, sum#27] +Keys: [] +Functions [3]: [merge_sum(UnscaledValue(ws_ext_ship_cost#6)), merge_sum(UnscaledValue(ws_net_profit#7)), partial_count(distinct ws_order_number#5)] +Aggregate Attributes [3]: [sum(UnscaledValue(ws_ext_ship_cost#6))#19, sum(UnscaledValue(ws_net_profit#7))#20, count(ws_order_number#5)#22] +Results [3]: [sum#26, sum#27, count#28] + +(131) Exchange +Input [3]: [sum#26, sum#27, count#28] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=22] + +(132) HashAggregate +Input [3]: [sum#26, sum#27, count#28] +Keys: [] +Functions [3]: [sum(UnscaledValue(ws_ext_ship_cost#6)), sum(UnscaledValue(ws_net_profit#7)), count(distinct ws_order_number#5)] +Aggregate Attributes [3]: [sum(UnscaledValue(ws_ext_ship_cost#6))#19, sum(UnscaledValue(ws_net_profit#7))#20, count(ws_order_number#5)#22] +Results [3]: [count(ws_order_number#5)#22 AS order count #23, MakeDecimal(sum(UnscaledValue(ws_ext_ship_cost#6))#19,17,2) AS total shipping cost #24, MakeDecimal(sum(UnscaledValue(ws_net_profit#7))#20,17,2) AS total net profit #25] + +(133) AdaptiveSparkPlan +Output [3]: [order count #23, total shipping cost #24, total net profit #25] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q95.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q95.txt new file mode 100644 index 000000000..bdb6cc9aa --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q95.txt @@ -0,0 +1,978 @@ +== Physical Plan == +AdaptiveSparkPlan (178) ++- == Final Plan == + NativeProject (112) + +- NativeHashAggregate (111) + +- ShuffleQueryStage (110), Statistics(X) + +- NativeShuffleExchange (109) + +- NativeHashAggregate (108) + +- NativeHashAggregate (107) + +- InputAdapter (106) + +- AQEShuffleRead (105) + +- ShuffleQueryStage (104), Statistics(X) + +- NativeShuffleExchange (103) + +- NativeHashAggregate (102) + +- NativeProject (101) + +- NativeProject (100) + +- NativeSortMergeJoin Inner (99) + :- NativeSort (89) + : +- InputAdapter (88) + : +- AQEShuffleRead (87) + : +- ShuffleQueryStage (86), Statistics(X) + : +- NativeShuffleExchange (85) + : +- NativeProject (84) + : +- NativeSortMergeJoin Inner (83) + : :- NativeSort (73) + : : +- InputAdapter (72) + : : +- AQEShuffleRead (71) + : : +- ShuffleQueryStage (70), Statistics(X) + : : +- NativeShuffleExchange (69) + : : +- NativeProject (68) + : : +- NativeSortMergeJoin Inner (67) + : : :- NativeSort (57) + : : : +- InputAdapter (56) + : : : +- AQEShuffleRead (55) + : : : +- ShuffleQueryStage (54), Statistics(X) + : : : +- NativeShuffleExchange (53) + : : : +- NativeSortMergeJoin LeftSemi (52) + : : : :- NativeSortMergeJoin LeftSemi (26) + : : : : :- NativeSort (8) + : : : : : +- InputAdapter (7) + : : : : : +- AQEShuffleRead (6) + : : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : : +- NativeShuffleExchange (4) + : : : : : +- NativeFilter (3) + : : : : : +- InputAdapter (2) + : : : : : +- NativeParquetScan (1) + : : : : +- ConvertToNative (25) + : : : : +- * Project (24) + : : : : +- * SortMergeJoin Inner (23) + : : : : :- NativeSort (16) + : : : : : +- InputAdapter (15) + : : : : : +- AQEShuffleRead (14) + : : : : : +- ShuffleQueryStage (13), Statistics(X) + : : : : : +- NativeShuffleExchange (12) + : : : : : +- NativeFilter (11) + : : : : : +- InputAdapter (10) + : : : : : +- NativeParquetScan (9) + : : : : +- NativeSort (22) + : : : : +- InputAdapter (21) + : : : : +- InputAdapter (20) + : : : : +- AQEShuffleRead (19) + : : : : +- ShuffleQueryStage (18), Statistics(X) + : : : : +- ReusedExchange (17) + : : : +- NativeProject (51) + : : : +- NativeSortMergeJoin Inner (50) + : : : :- NativeSort (34) + : : : : +- InputAdapter (33) + : : : : +- AQEShuffleRead (32) + : : : : +- ShuffleQueryStage (31), Statistics(X) + : : : : +- NativeShuffleExchange (30) + : : : : +- NativeFilter (29) + : : : : +- InputAdapter (28) + : : : : +- NativeParquetScan (27) + : : : +- ConvertToNative (49) + : : : +- * Project (48) + : : : +- * SortMergeJoin Inner (47) + : : : :- NativeSort (40) + : : : : +- InputAdapter (39) + : : : : +- InputAdapter (38) + : : : : +- AQEShuffleRead (37) + : : : : +- ShuffleQueryStage (36), Statistics(X) + : : : : +- ReusedExchange (35) + : : : +- NativeSort (46) + : : : +- InputAdapter (45) + : : : +- InputAdapter (44) + : : : +- AQEShuffleRead (43) + : : : +- ShuffleQueryStage (42), Statistics(X) + : : : +- ReusedExchange (41) + : : +- NativeSort (66) + : : +- InputAdapter (65) + : : +- AQEShuffleRead (64) + : : +- ShuffleQueryStage (63), Statistics(X) + : : +- NativeShuffleExchange (62) + : : +- NativeProject (61) + : : +- NativeFilter (60) + : : +- InputAdapter (59) + : : +- NativeParquetScan (58) + : +- NativeSort (82) + : +- InputAdapter (81) + : +- AQEShuffleRead (80) + : +- ShuffleQueryStage (79), Statistics(X) + : +- NativeShuffleExchange (78) + : +- NativeProject (77) + : +- NativeFilter (76) + : +- InputAdapter (75) + : +- NativeParquetScan (74) + +- NativeSort (98) + +- InputAdapter (97) + +- AQEShuffleRead (96) + +- ShuffleQueryStage (95), Statistics(X) + +- NativeShuffleExchange (94) + +- NativeProject (93) + +- NativeFilter (92) + +- InputAdapter (91) + +- NativeParquetScan (90) ++- == Initial Plan == + HashAggregate (177) + +- Exchange (176) + +- HashAggregate (175) + +- HashAggregate (174) + +- Exchange (173) + +- HashAggregate (172) + +- Project (171) + +- SortMergeJoin Inner (170) + :- Sort (164) + : +- Exchange (163) + : +- Project (162) + : +- SortMergeJoin Inner (161) + : :- Sort (155) + : : +- Exchange (154) + : : +- Project (153) + : : +- SortMergeJoin Inner (152) + : : :- Sort (146) + : : : +- Exchange (145) + : : : +- SortMergeJoin LeftSemi (144) + : : : :- SortMergeJoin LeftSemi (127) + : : : : :- Sort (116) + : : : : : +- Exchange (115) + : : : : : +- Filter (114) + : : : : : +- Scan parquet (113) + : : : : +- Project (126) + : : : : +- SortMergeJoin Inner (125) + : : : : :- Sort (120) + : : : : : +- Exchange (119) + : : : : : +- Filter (118) + : : : : : +- Scan parquet (117) + : : : : +- Sort (124) + : : : : +- Exchange (123) + : : : : +- Filter (122) + : : : : +- Scan parquet (121) + : : : +- Project (143) + : : : +- SortMergeJoin Inner (142) + : : : :- Sort (131) + : : : : +- Exchange (130) + : : : : +- Filter (129) + : : : : +- Scan parquet (128) + : : : +- Project (141) + : : : +- SortMergeJoin Inner (140) + : : : :- Sort (135) + : : : : +- Exchange (134) + : : : : +- Filter (133) + : : : : +- Scan parquet (132) + : : : +- Sort (139) + : : : +- Exchange (138) + : : : +- Filter (137) + : : : +- Scan parquet (136) + : : +- Sort (151) + : : +- Exchange (150) + : : +- Project (149) + : : +- Filter (148) + : : +- Scan parquet (147) + : +- Sort (160) + : +- Exchange (159) + : +- Project (158) + : +- Filter (157) + : +- Scan parquet (156) + +- Sort (169) + +- Exchange (168) + +- Project (167) + +- Filter (166) + +- Scan parquet (165) + + +(113) Scan parquet +Output [6]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_ship_date_sk), IsNotNull(ws_ship_addr_sk), IsNotNull(ws_web_site_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [6]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6] +Arguments: [#1, #2, #3, #4, #5, #6] + +(3) NativeFilter +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Condition : ((isnotnull(ws_ship_date_sk#1) AND isnotnull(ws_ship_addr_sk#2)) AND isnotnull(ws_web_site_sk#3)) + +(4) NativeShuffleExchange +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Arguments: hashpartitioning(ws_order_number#4, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Arguments: X + +(6) AQEShuffleRead +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Arguments: coalesced + +(7) InputAdapter +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] + +(8) NativeSort +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Arguments: [ws_order_number#4 ASC NULLS FIRST], false + +(117) Scan parquet +Output [2]: [ws_warehouse_sk#7, ws_order_number#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_order_number), IsNotNull(ws_warehouse_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [ws_warehouse_sk#7, ws_order_number#8] +Arguments: [#7, #8] + +(11) NativeFilter +Input [2]: [#7#7, #8#8] +Condition : (isnotnull(ws_order_number#8) AND isnotnull(ws_warehouse_sk#7)) + +(12) NativeShuffleExchange +Input [2]: [#7#7, #8#8] +Arguments: hashpartitioning(ws_order_number#8, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [2]: [#7#7, #8#8] +Arguments: X + +(14) AQEShuffleRead +Input [2]: [#7#7, #8#8] +Arguments: coalesced + +(15) InputAdapter +Input [2]: [#7#7, #8#8] + +(16) NativeSort +Input [2]: [#7#7, #8#8] +Arguments: [ws_order_number#8 ASC NULLS FIRST], false + +(17) ReusedExchange [Reuses operator id: 12] +Output [2]: [ws_warehouse_sk#9, ws_order_number#10] + +(18) ShuffleQueryStage +Output [2]: [ws_warehouse_sk#9, ws_order_number#10] +Arguments: X + +(19) AQEShuffleRead +Input [2]: [ws_warehouse_sk#9, ws_order_number#10] +Arguments: coalesced + +(20) InputAdapter +Input [2]: [ws_warehouse_sk#9, ws_order_number#10] +Arguments: [#9, #10] + +(21) InputAdapter +Input [2]: [#9#9, #10#10] + +(22) NativeSort +Input [2]: [#9#9, #10#10] +Arguments: [ws_order_number#10 ASC NULLS FIRST], false + +(23) SortMergeJoin [codegen id : 1] +Left keys [1]: [ws_order_number#8] +Right keys [1]: [ws_order_number#10] +Join type: Inner +Join condition: NOT (ws_warehouse_sk#7 = ws_warehouse_sk#9) + +(24) Project [codegen id : 1] +Output [1]: [ws_order_number#8] +Input [4]: [#7#7, #8#8, #9#9, #10#10] + +(25) ConvertToNative +Input [1]: [ws_order_number#8] + +(26) NativeSortMergeJoin +Left keys [1]: [ws_order_number#4] +Right keys [1]: [ws_order_number#8] +Join type: LeftSemi +Join condition: None + +(128) Scan parquet +Output [1]: [wr_order_number#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wr_order_number)] +ReadSchema: struct + +(28) InputAdapter +Input [1]: [wr_order_number#11] +Arguments: [#11] + +(29) NativeFilter +Input [1]: [#11#11] +Condition : isnotnull(wr_order_number#11) + +(30) NativeShuffleExchange +Input [1]: [#11#11] +Arguments: hashpartitioning(wr_order_number#11, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(31) ShuffleQueryStage +Output [1]: [#11#11] +Arguments: X + +(32) AQEShuffleRead +Input [1]: [#11#11] +Arguments: coalesced + +(33) InputAdapter +Input [1]: [#11#11] + +(34) NativeSort +Input [1]: [#11#11] +Arguments: [wr_order_number#11 ASC NULLS FIRST], false + +(35) ReusedExchange [Reuses operator id: 12] +Output [2]: [ws_warehouse_sk#12, ws_order_number#13] + +(36) ShuffleQueryStage +Output [2]: [ws_warehouse_sk#12, ws_order_number#13] +Arguments: X + +(37) AQEShuffleRead +Input [2]: [ws_warehouse_sk#12, ws_order_number#13] +Arguments: coalesced + +(38) InputAdapter +Input [2]: [ws_warehouse_sk#12, ws_order_number#13] +Arguments: [#12, #13] + +(39) InputAdapter +Input [2]: [#12#12, #13#13] + +(40) NativeSort +Input [2]: [#12#12, #13#13] +Arguments: [ws_order_number#13 ASC NULLS FIRST], false + +(41) ReusedExchange [Reuses operator id: 12] +Output [2]: [ws_warehouse_sk#14, ws_order_number#15] + +(42) ShuffleQueryStage +Output [2]: [ws_warehouse_sk#14, ws_order_number#15] +Arguments: X + +(43) AQEShuffleRead +Input [2]: [ws_warehouse_sk#14, ws_order_number#15] +Arguments: coalesced + +(44) InputAdapter +Input [2]: [ws_warehouse_sk#14, ws_order_number#15] +Arguments: [#14, #15] + +(45) InputAdapter +Input [2]: [#14#14, #15#15] + +(46) NativeSort +Input [2]: [#14#14, #15#15] +Arguments: [ws_order_number#15 ASC NULLS FIRST], false + +(47) SortMergeJoin [codegen id : 2] +Left keys [1]: [ws_order_number#13] +Right keys [1]: [ws_order_number#15] +Join type: Inner +Join condition: NOT (ws_warehouse_sk#12 = ws_warehouse_sk#14) + +(48) Project [codegen id : 2] +Output [1]: [ws_order_number#13] +Input [4]: [#12#12, #13#13, #14#14, #15#15] + +(49) ConvertToNative +Input [1]: [ws_order_number#13] + +(50) NativeSortMergeJoin +Left keys [1]: [wr_order_number#11] +Right keys [1]: [ws_order_number#13] +Join type: Inner +Join condition: None + +(51) NativeProject +Output [1]: [wr_order_number#11] +Input [2]: [#11#11, ws_order_number#13] + +(52) NativeSortMergeJoin +Left keys [1]: [ws_order_number#4] +Right keys [1]: [wr_order_number#11] +Join type: LeftSemi +Join condition: None + +(53) NativeShuffleExchange +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Arguments: hashpartitioning(ws_ship_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(54) ShuffleQueryStage +Output [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Arguments: X + +(55) AQEShuffleRead +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Arguments: coalesced + +(56) InputAdapter +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] + +(57) NativeSort +Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6] +Arguments: [ws_ship_date_sk#1 ASC NULLS FIRST], false + +(147) Scan parquet +Output [2]: [d_date_sk#16, d_date#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,1999-02-01), LessThanOrEqual(d_date,1999-04-02), IsNotNull(d_date_sk)] +ReadSchema: struct + +(59) InputAdapter +Input [2]: [d_date_sk#16, d_date#17] +Arguments: [#16, #17] + +(60) NativeFilter +Input [2]: [#16#16, #17#17] +Condition : (((isnotnull(d_date#17) AND (d_date#17 >= 1999-02-01)) AND (d_date#17 <= 1999-04-02)) AND isnotnull(d_date_sk#16)) + +(61) NativeProject +Output [1]: [d_date_sk#16] +Input [2]: [#16#16, #17#17] + +(62) NativeShuffleExchange +Input [1]: [d_date_sk#16] +Arguments: hashpartitioning(d_date_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(63) ShuffleQueryStage +Output [1]: [d_date_sk#16] +Arguments: X + +(64) AQEShuffleRead +Input [1]: [d_date_sk#16] +Arguments: coalesced + +(65) InputAdapter +Input [1]: [d_date_sk#16] + +(66) NativeSort +Input [1]: [d_date_sk#16] +Arguments: [d_date_sk#16 ASC NULLS FIRST], false + +(67) NativeSortMergeJoin +Left keys [1]: [ws_ship_date_sk#1] +Right keys [1]: [d_date_sk#16] +Join type: Inner +Join condition: None + +(68) NativeProject +Output [5]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6] +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, d_date_sk#16] + +(69) NativeShuffleExchange +Input [5]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6] +Arguments: hashpartitioning(ws_ship_addr_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(70) ShuffleQueryStage +Output [5]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6] +Arguments: X + +(71) AQEShuffleRead +Input [5]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6] +Arguments: coalesced + +(72) InputAdapter +Input [5]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6] + +(73) NativeSort +Input [5]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6] +Arguments: [ws_ship_addr_sk#2 ASC NULLS FIRST], false + +(156) Scan parquet +Output [2]: [ca_address_sk#18, ca_state#19] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_state), EqualTo(ca_state,IL), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(75) InputAdapter +Input [2]: [ca_address_sk#18, ca_state#19] +Arguments: [#18, #19] + +(76) NativeFilter +Input [2]: [#18#18, #19#19] +Condition : ((isnotnull(ca_state#19) AND (ca_state#19 = IL)) AND isnotnull(ca_address_sk#18)) + +(77) NativeProject +Output [1]: [ca_address_sk#18] +Input [2]: [#18#18, #19#19] + +(78) NativeShuffleExchange +Input [1]: [ca_address_sk#18] +Arguments: hashpartitioning(ca_address_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(79) ShuffleQueryStage +Output [1]: [ca_address_sk#18] +Arguments: X + +(80) AQEShuffleRead +Input [1]: [ca_address_sk#18] +Arguments: coalesced + +(81) InputAdapter +Input [1]: [ca_address_sk#18] + +(82) NativeSort +Input [1]: [ca_address_sk#18] +Arguments: [ca_address_sk#18 ASC NULLS FIRST], false + +(83) NativeSortMergeJoin +Left keys [1]: [ws_ship_addr_sk#2] +Right keys [1]: [ca_address_sk#18] +Join type: Inner +Join condition: None + +(84) NativeProject +Output [4]: [ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6] +Input [6]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6, ca_address_sk#18] + +(85) NativeShuffleExchange +Input [4]: [ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6] +Arguments: hashpartitioning(ws_web_site_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(86) ShuffleQueryStage +Output [4]: [ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6] +Arguments: X + +(87) AQEShuffleRead +Input [4]: [ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6] +Arguments: coalesced + +(88) InputAdapter +Input [4]: [ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6] + +(89) NativeSort +Input [4]: [ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6] +Arguments: [ws_web_site_sk#3 ASC NULLS FIRST], false + +(165) Scan parquet +Output [2]: [web_site_sk#20, web_company_name#21] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(web_company_name), EqualTo(web_company_name,pri), IsNotNull(web_site_sk)] +ReadSchema: struct + +(91) InputAdapter +Input [2]: [web_site_sk#20, web_company_name#21] +Arguments: [#20, #21] + +(92) NativeFilter +Input [2]: [#20#20, #21#21] +Condition : ((isnotnull(web_company_name#21) AND (web_company_name#21 = pri)) AND isnotnull(web_site_sk#20)) + +(93) NativeProject +Output [1]: [web_site_sk#20] +Input [2]: [#20#20, #21#21] + +(94) NativeShuffleExchange +Input [1]: [web_site_sk#20] +Arguments: hashpartitioning(web_site_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(95) ShuffleQueryStage +Output [1]: [web_site_sk#20] +Arguments: X + +(96) AQEShuffleRead +Input [1]: [web_site_sk#20] +Arguments: coalesced + +(97) InputAdapter +Input [1]: [web_site_sk#20] + +(98) NativeSort +Input [1]: [web_site_sk#20] +Arguments: [web_site_sk#20 ASC NULLS FIRST], false + +(99) NativeSortMergeJoin +Left keys [1]: [ws_web_site_sk#3] +Right keys [1]: [web_site_sk#20] +Join type: Inner +Join condition: None + +(100) NativeProject +Output [3]: [ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6] +Input [5]: [ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6, web_site_sk#20] + +(101) NativeProject +Output [3]: [ws_order_number#4 AS ws_order_number#4, UnscaledValue(ws_ext_ship_cost#5) AS _c1#22, UnscaledValue(ws_net_profit#6) AS _c2#23] +Input [3]: [ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6] + +(102) NativeHashAggregate +Input [3]: [ws_order_number#4, _c1#22, _c2#23] +Keys [1]: [ws_order_number#4] +Functions [2]: [partial_sum(_c1#22), partial_sum(_c2#23)] +Aggregate Attributes [2]: [sum(UnscaledValue(ws_ext_ship_cost#5))#24, sum(UnscaledValue(ws_net_profit#6))#25] +Results [2]: [ws_order_number#4, #26#26] + +(103) NativeShuffleExchange +Input [2]: [ws_order_number#4, #26#26] +Arguments: hashpartitioning(ws_order_number#4, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(104) ShuffleQueryStage +Output [2]: [ws_order_number#4, #26#26] +Arguments: X + +(105) AQEShuffleRead +Input [2]: [ws_order_number#4, #26#26] +Arguments: coalesced + +(106) InputAdapter +Input [2]: [ws_order_number#4, #26#26] + +(107) NativeHashAggregate +Input [2]: [ws_order_number#4, #26#26] +Keys [1]: [ws_order_number#4] +Functions [2]: [merge_sum(UnscaledValue(ws_ext_ship_cost#5)), merge_sum(UnscaledValue(ws_net_profit#6))] +Aggregate Attributes [2]: [sum(UnscaledValue(ws_ext_ship_cost#5))#24, sum(UnscaledValue(ws_net_profit#6))#25] +Results [2]: [ws_order_number#4, #26#26] + +(108) NativeHashAggregate +Input [2]: [ws_order_number#4, #26#26] +Keys: [] +Functions [3]: [merge_sum(UnscaledValue(ws_ext_ship_cost#5)), merge_sum(UnscaledValue(ws_net_profit#6)), partial_count(distinct ws_order_number#4)] +Aggregate Attributes [3]: [sum(UnscaledValue(ws_ext_ship_cost#5))#24, sum(UnscaledValue(ws_net_profit#6))#25, count(ws_order_number#4)#27] +Results [1]: [#26#26] + +(109) NativeShuffleExchange +Input [1]: [#26#26] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=11] + +(110) ShuffleQueryStage +Output [1]: [#26#26] +Arguments: X + +(111) NativeHashAggregate +Input [1]: [#26#26] +Keys: [] +Functions [3]: [sum(UnscaledValue(ws_ext_ship_cost#5)), sum(UnscaledValue(ws_net_profit#6)), count(distinct ws_order_number#4)] +Aggregate Attributes [3]: [sum(UnscaledValue(ws_ext_ship_cost#5))#24, sum(UnscaledValue(ws_net_profit#6))#25, count(ws_order_number#4)#27] +Results [3]: [sum(UnscaledValue(ws_ext_ship_cost#5))#24, sum(UnscaledValue(ws_net_profit#6))#25, count(ws_order_number#4)#27] + +(112) NativeProject +Output [3]: [count(ws_order_number#4)#27 AS order count #28, MakeDecimal(sum(UnscaledValue(ws_ext_ship_cost#5))#24,17,2) AS total shipping cost #29, MakeDecimal(sum(UnscaledValue(ws_net_profit#6))#25,17,2) AS total net profit #30] +Input [3]: [sum(UnscaledValue(ws_ext_ship_cost#5))#24, sum(UnscaledValue(ws_net_profit#6))#25, count(ws_order_number#4)#27] + +(113) Scan parquet +Output [6]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_ship_date_sk), IsNotNull(ws_ship_addr_sk), IsNotNull(ws_web_site_sk)] +ReadSchema: struct + +(114) Filter +Input [6]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6] +Condition : ((isnotnull(ws_ship_date_sk#1) AND isnotnull(ws_ship_addr_sk#2)) AND isnotnull(ws_web_site_sk#3)) + +(115) Exchange +Input [6]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6] +Arguments: hashpartitioning(ws_order_number#4, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(116) Sort +Input [6]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6] +Arguments: [ws_order_number#4 ASC NULLS FIRST], false, 0 + +(117) Scan parquet +Output [2]: [ws_warehouse_sk#7, ws_order_number#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_order_number), IsNotNull(ws_warehouse_sk)] +ReadSchema: struct + +(118) Filter +Input [2]: [ws_warehouse_sk#7, ws_order_number#8] +Condition : (isnotnull(ws_order_number#8) AND isnotnull(ws_warehouse_sk#7)) + +(119) Exchange +Input [2]: [ws_warehouse_sk#7, ws_order_number#8] +Arguments: hashpartitioning(ws_order_number#8, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(120) Sort +Input [2]: [ws_warehouse_sk#7, ws_order_number#8] +Arguments: [ws_order_number#8 ASC NULLS FIRST], false, 0 + +(121) Scan parquet +Output [2]: [ws_warehouse_sk#9, ws_order_number#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_order_number), IsNotNull(ws_warehouse_sk)] +ReadSchema: struct + +(122) Filter +Input [2]: [ws_warehouse_sk#9, ws_order_number#10] +Condition : (isnotnull(ws_order_number#10) AND isnotnull(ws_warehouse_sk#9)) + +(123) Exchange +Input [2]: [ws_warehouse_sk#9, ws_order_number#10] +Arguments: hashpartitioning(ws_order_number#10, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(124) Sort +Input [2]: [ws_warehouse_sk#9, ws_order_number#10] +Arguments: [ws_order_number#10 ASC NULLS FIRST], false, 0 + +(125) SortMergeJoin +Left keys [1]: [ws_order_number#8] +Right keys [1]: [ws_order_number#10] +Join type: Inner +Join condition: NOT (ws_warehouse_sk#7 = ws_warehouse_sk#9) + +(126) Project +Output [1]: [ws_order_number#8] +Input [4]: [ws_warehouse_sk#7, ws_order_number#8, ws_warehouse_sk#9, ws_order_number#10] + +(127) SortMergeJoin +Left keys [1]: [ws_order_number#4] +Right keys [1]: [ws_order_number#8] +Join type: LeftSemi +Join condition: None + +(128) Scan parquet +Output [1]: [wr_order_number#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(wr_order_number)] +ReadSchema: struct + +(129) Filter +Input [1]: [wr_order_number#11] +Condition : isnotnull(wr_order_number#11) + +(130) Exchange +Input [1]: [wr_order_number#11] +Arguments: hashpartitioning(wr_order_number#11, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(131) Sort +Input [1]: [wr_order_number#11] +Arguments: [wr_order_number#11 ASC NULLS FIRST], false, 0 + +(132) Scan parquet +Output [2]: [ws_warehouse_sk#12, ws_order_number#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_order_number), IsNotNull(ws_warehouse_sk)] +ReadSchema: struct + +(133) Filter +Input [2]: [ws_warehouse_sk#12, ws_order_number#13] +Condition : (isnotnull(ws_order_number#13) AND isnotnull(ws_warehouse_sk#12)) + +(134) Exchange +Input [2]: [ws_warehouse_sk#12, ws_order_number#13] +Arguments: hashpartitioning(ws_order_number#13, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(135) Sort +Input [2]: [ws_warehouse_sk#12, ws_order_number#13] +Arguments: [ws_order_number#13 ASC NULLS FIRST], false, 0 + +(136) Scan parquet +Output [2]: [ws_warehouse_sk#14, ws_order_number#15] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ws_order_number), IsNotNull(ws_warehouse_sk)] +ReadSchema: struct + +(137) Filter +Input [2]: [ws_warehouse_sk#14, ws_order_number#15] +Condition : (isnotnull(ws_order_number#15) AND isnotnull(ws_warehouse_sk#14)) + +(138) Exchange +Input [2]: [ws_warehouse_sk#14, ws_order_number#15] +Arguments: hashpartitioning(ws_order_number#15, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(139) Sort +Input [2]: [ws_warehouse_sk#14, ws_order_number#15] +Arguments: [ws_order_number#15 ASC NULLS FIRST], false, 0 + +(140) SortMergeJoin +Left keys [1]: [ws_order_number#13] +Right keys [1]: [ws_order_number#15] +Join type: Inner +Join condition: NOT (ws_warehouse_sk#12 = ws_warehouse_sk#14) + +(141) Project +Output [1]: [ws_order_number#13] +Input [4]: [ws_warehouse_sk#12, ws_order_number#13, ws_warehouse_sk#14, ws_order_number#15] + +(142) SortMergeJoin +Left keys [1]: [wr_order_number#11] +Right keys [1]: [ws_order_number#13] +Join type: Inner +Join condition: None + +(143) Project +Output [1]: [wr_order_number#11] +Input [2]: [wr_order_number#11, ws_order_number#13] + +(144) SortMergeJoin +Left keys [1]: [ws_order_number#4] +Right keys [1]: [wr_order_number#11] +Join type: LeftSemi +Join condition: None + +(145) Exchange +Input [6]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6] +Arguments: hashpartitioning(ws_ship_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(146) Sort +Input [6]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6] +Arguments: [ws_ship_date_sk#1 ASC NULLS FIRST], false, 0 + +(147) Scan parquet +Output [2]: [d_date_sk#16, d_date#17] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,1999-02-01), LessThanOrEqual(d_date,1999-04-02), IsNotNull(d_date_sk)] +ReadSchema: struct + +(148) Filter +Input [2]: [d_date_sk#16, d_date#17] +Condition : (((isnotnull(d_date#17) AND (d_date#17 >= 1999-02-01)) AND (d_date#17 <= 1999-04-02)) AND isnotnull(d_date_sk#16)) + +(149) Project +Output [1]: [d_date_sk#16] +Input [2]: [d_date_sk#16, d_date#17] + +(150) Exchange +Input [1]: [d_date_sk#16] +Arguments: hashpartitioning(d_date_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=19] + +(151) Sort +Input [1]: [d_date_sk#16] +Arguments: [d_date_sk#16 ASC NULLS FIRST], false, 0 + +(152) SortMergeJoin +Left keys [1]: [ws_ship_date_sk#1] +Right keys [1]: [d_date_sk#16] +Join type: Inner +Join condition: None + +(153) Project +Output [5]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6] +Input [7]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6, d_date_sk#16] + +(154) Exchange +Input [5]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6] +Arguments: hashpartitioning(ws_ship_addr_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=20] + +(155) Sort +Input [5]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6] +Arguments: [ws_ship_addr_sk#2 ASC NULLS FIRST], false, 0 + +(156) Scan parquet +Output [2]: [ca_address_sk#18, ca_state#19] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ca_state), EqualTo(ca_state,IL), IsNotNull(ca_address_sk)] +ReadSchema: struct + +(157) Filter +Input [2]: [ca_address_sk#18, ca_state#19] +Condition : ((isnotnull(ca_state#19) AND (ca_state#19 = IL)) AND isnotnull(ca_address_sk#18)) + +(158) Project +Output [1]: [ca_address_sk#18] +Input [2]: [ca_address_sk#18, ca_state#19] + +(159) Exchange +Input [1]: [ca_address_sk#18] +Arguments: hashpartitioning(ca_address_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=21] + +(160) Sort +Input [1]: [ca_address_sk#18] +Arguments: [ca_address_sk#18 ASC NULLS FIRST], false, 0 + +(161) SortMergeJoin +Left keys [1]: [ws_ship_addr_sk#2] +Right keys [1]: [ca_address_sk#18] +Join type: Inner +Join condition: None + +(162) Project +Output [4]: [ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6] +Input [6]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6, ca_address_sk#18] + +(163) Exchange +Input [4]: [ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6] +Arguments: hashpartitioning(ws_web_site_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=22] + +(164) Sort +Input [4]: [ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6] +Arguments: [ws_web_site_sk#3 ASC NULLS FIRST], false, 0 + +(165) Scan parquet +Output [2]: [web_site_sk#20, web_company_name#21] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(web_company_name), EqualTo(web_company_name,pri), IsNotNull(web_site_sk)] +ReadSchema: struct + +(166) Filter +Input [2]: [web_site_sk#20, web_company_name#21] +Condition : ((isnotnull(web_company_name#21) AND (web_company_name#21 = pri)) AND isnotnull(web_site_sk#20)) + +(167) Project +Output [1]: [web_site_sk#20] +Input [2]: [web_site_sk#20, web_company_name#21] + +(168) Exchange +Input [1]: [web_site_sk#20] +Arguments: hashpartitioning(web_site_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=23] + +(169) Sort +Input [1]: [web_site_sk#20] +Arguments: [web_site_sk#20 ASC NULLS FIRST], false, 0 + +(170) SortMergeJoin +Left keys [1]: [ws_web_site_sk#3] +Right keys [1]: [web_site_sk#20] +Join type: Inner +Join condition: None + +(171) Project +Output [3]: [ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6] +Input [5]: [ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6, web_site_sk#20] + +(172) HashAggregate +Input [3]: [ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6] +Keys [1]: [ws_order_number#4] +Functions [2]: [partial_sum(UnscaledValue(ws_ext_ship_cost#5)), partial_sum(UnscaledValue(ws_net_profit#6))] +Aggregate Attributes [2]: [sum(UnscaledValue(ws_ext_ship_cost#5))#24, sum(UnscaledValue(ws_net_profit#6))#25] +Results [3]: [ws_order_number#4, sum#31, sum#32] + +(173) Exchange +Input [3]: [ws_order_number#4, sum#31, sum#32] +Arguments: hashpartitioning(ws_order_number#4, 100), ENSURE_REQUIREMENTS, [plan_id=24] + +(174) HashAggregate +Input [3]: [ws_order_number#4, sum#31, sum#32] +Keys [1]: [ws_order_number#4] +Functions [2]: [merge_sum(UnscaledValue(ws_ext_ship_cost#5)), merge_sum(UnscaledValue(ws_net_profit#6))] +Aggregate Attributes [2]: [sum(UnscaledValue(ws_ext_ship_cost#5))#24, sum(UnscaledValue(ws_net_profit#6))#25] +Results [3]: [ws_order_number#4, sum#31, sum#32] + +(175) HashAggregate +Input [3]: [ws_order_number#4, sum#31, sum#32] +Keys: [] +Functions [3]: [merge_sum(UnscaledValue(ws_ext_ship_cost#5)), merge_sum(UnscaledValue(ws_net_profit#6)), partial_count(distinct ws_order_number#4)] +Aggregate Attributes [3]: [sum(UnscaledValue(ws_ext_ship_cost#5))#24, sum(UnscaledValue(ws_net_profit#6))#25, count(ws_order_number#4)#27] +Results [3]: [sum#31, sum#32, count#33] + +(176) Exchange +Input [3]: [sum#31, sum#32, count#33] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=25] + +(177) HashAggregate +Input [3]: [sum#31, sum#32, count#33] +Keys: [] +Functions [3]: [sum(UnscaledValue(ws_ext_ship_cost#5)), sum(UnscaledValue(ws_net_profit#6)), count(distinct ws_order_number#4)] +Aggregate Attributes [3]: [sum(UnscaledValue(ws_ext_ship_cost#5))#24, sum(UnscaledValue(ws_net_profit#6))#25, count(ws_order_number#4)#27] +Results [3]: [count(ws_order_number#4)#27 AS order count #28, MakeDecimal(sum(UnscaledValue(ws_ext_ship_cost#5))#24,17,2) AS total shipping cost #29, MakeDecimal(sum(UnscaledValue(ws_net_profit#6))#25,17,2) AS total net profit #30] + +(178) AdaptiveSparkPlan +Output [3]: [order count #28, total shipping cost #29, total net profit #30] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q96.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q96.txt new file mode 100644 index 000000000..a063f48c7 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q96.txt @@ -0,0 +1,492 @@ +== Physical Plan == +AdaptiveSparkPlan (89) ++- == Final Plan == + NativeProject (56) + +- NativeHashAggregate (55) + +- ShuffleQueryStage (54), Statistics(X) + +- NativeShuffleExchange (53) + +- NativeHashAggregate (52) + +- NativeProject (51) + +- NativeSortMergeJoin Inner (50) + :- NativeSort (40) + : +- InputAdapter (39) + : +- AQEShuffleRead (38) + : +- ShuffleQueryStage (37), Statistics(X) + : +- NativeShuffleExchange (36) + : +- NativeProject (35) + : +- NativeSortMergeJoin Inner (34) + : :- 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 (33) + : +- InputAdapter (32) + : +- AQEShuffleRead (31) + : +- ShuffleQueryStage (30), Statistics(X) + : +- NativeShuffleExchange (29) + : +- NativeProject (28) + : +- NativeFilter (27) + : +- InputAdapter (26) + : +- NativeParquetScan (25) + +- NativeSort (49) + +- InputAdapter (48) + +- AQEShuffleRead (47) + +- ShuffleQueryStage (46), Statistics(X) + +- NativeShuffleExchange (45) + +- NativeProject (44) + +- NativeFilter (43) + +- InputAdapter (42) + +- NativeParquetScan (41) ++- == Initial Plan == + HashAggregate (88) + +- Exchange (87) + +- HashAggregate (86) + +- Project (85) + +- SortMergeJoin Inner (84) + :- Sort (78) + : +- Exchange (77) + : +- Project (76) + : +- SortMergeJoin Inner (75) + : :- Sort (69) + : : +- Exchange (68) + : : +- Project (67) + : : +- SortMergeJoin Inner (66) + : : :- Sort (60) + : : : +- Exchange (59) + : : : +- Filter (58) + : : : +- Scan parquet (57) + : : +- Sort (65) + : : +- Exchange (64) + : : +- Project (63) + : : +- Filter (62) + : : +- Scan parquet (61) + : +- Sort (74) + : +- Exchange (73) + : +- Project (72) + : +- Filter (71) + : +- Scan parquet (70) + +- Sort (83) + +- Exchange (82) + +- Project (81) + +- Filter (80) + +- Scan parquet (79) + + +(57) Scan parquet +Output [3]: [ss_sold_time_sk#1, ss_hdemo_sk#2, ss_store_sk#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_hdemo_sk), IsNotNull(ss_sold_time_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [ss_sold_time_sk#1, ss_hdemo_sk#2, ss_store_sk#3] +Arguments: [#1, #2, #3] + +(3) NativeFilter +Input [3]: [#1#1, #2#2, #3#3] +Condition : ((isnotnull(ss_hdemo_sk#2) AND isnotnull(ss_sold_time_sk#1)) AND isnotnull(ss_store_sk#3)) + +(4) NativeShuffleExchange +Input [3]: [#1#1, #2#2, #3#3] +Arguments: hashpartitioning(ss_hdemo_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [3]: [#1#1, #2#2, #3#3] +Arguments: X + +(6) AQEShuffleRead +Input [3]: [#1#1, #2#2, #3#3] +Arguments: coalesced + +(7) InputAdapter +Input [3]: [#1#1, #2#2, #3#3] + +(8) NativeSort +Input [3]: [#1#1, #2#2, #3#3] +Arguments: [ss_hdemo_sk#2 ASC NULLS FIRST], false + +(61) Scan parquet +Output [2]: [hd_demo_sk#4, hd_dep_count#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(hd_dep_count), EqualTo(hd_dep_count,7), IsNotNull(hd_demo_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [hd_demo_sk#4, hd_dep_count#5] +Arguments: [#4, #5] + +(11) NativeFilter +Input [2]: [#4#4, #5#5] +Condition : ((isnotnull(hd_dep_count#5) AND (hd_dep_count#5 = 7)) AND isnotnull(hd_demo_sk#4)) + +(12) NativeProject +Output [1]: [hd_demo_sk#4] +Input [2]: [#4#4, #5#5] + +(13) NativeShuffleExchange +Input [1]: [hd_demo_sk#4] +Arguments: hashpartitioning(hd_demo_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [1]: [hd_demo_sk#4] +Arguments: X + +(15) AQEShuffleRead +Input [1]: [hd_demo_sk#4] +Arguments: coalesced + +(16) InputAdapter +Input [1]: [hd_demo_sk#4] + +(17) NativeSort +Input [1]: [hd_demo_sk#4] +Arguments: [hd_demo_sk#4 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [ss_hdemo_sk#2] +Right keys [1]: [hd_demo_sk#4] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [2]: [ss_sold_time_sk#1, ss_store_sk#3] +Input [4]: [#1#1, #2#2, #3#3, hd_demo_sk#4] + +(20) NativeShuffleExchange +Input [2]: [ss_sold_time_sk#1, ss_store_sk#3] +Arguments: hashpartitioning(ss_sold_time_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(21) ShuffleQueryStage +Output [2]: [ss_sold_time_sk#1, ss_store_sk#3] +Arguments: X + +(22) AQEShuffleRead +Input [2]: [ss_sold_time_sk#1, ss_store_sk#3] +Arguments: coalesced + +(23) InputAdapter +Input [2]: [ss_sold_time_sk#1, ss_store_sk#3] + +(24) NativeSort +Input [2]: [ss_sold_time_sk#1, ss_store_sk#3] +Arguments: [ss_sold_time_sk#1 ASC NULLS FIRST], false + +(70) Scan parquet +Output [3]: [t_time_sk#6, t_hour#7, t_minute#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(t_hour), IsNotNull(t_minute), EqualTo(t_hour,20), GreaterThanOrEqual(t_minute,30), IsNotNull(t_time_sk)] +ReadSchema: struct + +(26) InputAdapter +Input [3]: [t_time_sk#6, t_hour#7, t_minute#8] +Arguments: [#6, #7, #8] + +(27) NativeFilter +Input [3]: [#6#6, #7#7, #8#8] +Condition : ((((isnotnull(t_hour#7) AND isnotnull(t_minute#8)) AND (t_hour#7 = 20)) AND (t_minute#8 >= 30)) AND isnotnull(t_time_sk#6)) + +(28) NativeProject +Output [1]: [t_time_sk#6] +Input [3]: [#6#6, #7#7, #8#8] + +(29) NativeShuffleExchange +Input [1]: [t_time_sk#6] +Arguments: hashpartitioning(t_time_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(30) ShuffleQueryStage +Output [1]: [t_time_sk#6] +Arguments: X + +(31) AQEShuffleRead +Input [1]: [t_time_sk#6] +Arguments: coalesced + +(32) InputAdapter +Input [1]: [t_time_sk#6] + +(33) NativeSort +Input [1]: [t_time_sk#6] +Arguments: [t_time_sk#6 ASC NULLS FIRST], false + +(34) NativeSortMergeJoin +Left keys [1]: [ss_sold_time_sk#1] +Right keys [1]: [t_time_sk#6] +Join type: Inner +Join condition: None + +(35) NativeProject +Output [1]: [ss_store_sk#3] +Input [3]: [ss_sold_time_sk#1, ss_store_sk#3, t_time_sk#6] + +(36) NativeShuffleExchange +Input [1]: [ss_store_sk#3] +Arguments: hashpartitioning(ss_store_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(37) ShuffleQueryStage +Output [1]: [ss_store_sk#3] +Arguments: X + +(38) AQEShuffleRead +Input [1]: [ss_store_sk#3] +Arguments: coalesced + +(39) InputAdapter +Input [1]: [ss_store_sk#3] + +(40) NativeSort +Input [1]: [ss_store_sk#3] +Arguments: [ss_store_sk#3 ASC NULLS FIRST], false + +(79) Scan parquet +Output [2]: [s_store_sk#9, s_store_name#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_name), EqualTo(s_store_name,ese), IsNotNull(s_store_sk)] +ReadSchema: struct + +(42) InputAdapter +Input [2]: [s_store_sk#9, s_store_name#10] +Arguments: [#9, #10] + +(43) NativeFilter +Input [2]: [#9#9, #10#10] +Condition : ((isnotnull(s_store_name#10) AND (s_store_name#10 = ese)) AND isnotnull(s_store_sk#9)) + +(44) NativeProject +Output [1]: [s_store_sk#9] +Input [2]: [#9#9, #10#10] + +(45) NativeShuffleExchange +Input [1]: [s_store_sk#9] +Arguments: hashpartitioning(s_store_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(46) ShuffleQueryStage +Output [1]: [s_store_sk#9] +Arguments: X + +(47) AQEShuffleRead +Input [1]: [s_store_sk#9] +Arguments: coalesced + +(48) InputAdapter +Input [1]: [s_store_sk#9] + +(49) NativeSort +Input [1]: [s_store_sk#9] +Arguments: [s_store_sk#9 ASC NULLS FIRST], false + +(50) NativeSortMergeJoin +Left keys [1]: [ss_store_sk#3] +Right keys [1]: [s_store_sk#9] +Join type: Inner +Join condition: None + +(51) NativeProject +Output: [] +Input [2]: [ss_store_sk#3, s_store_sk#9] + +(52) NativeHashAggregate +Input: [] +Keys: [] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#11] +Results [1]: [#12#12] + +(53) NativeShuffleExchange +Input [1]: [#12#12] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=7] + +(54) ShuffleQueryStage +Output [1]: [#12#12] +Arguments: X + +(55) NativeHashAggregate +Input [1]: [#12#12] +Keys: [] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#13] +Results [1]: [count(1)#13] + +(56) NativeProject +Output [1]: [count(1)#13 AS count(1)#14] +Input [1]: [count(1)#13] + +(57) Scan parquet +Output [3]: [ss_sold_time_sk#1, ss_hdemo_sk#2, ss_store_sk#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_hdemo_sk), IsNotNull(ss_sold_time_sk), IsNotNull(ss_store_sk)] +ReadSchema: struct + +(58) Filter +Input [3]: [ss_sold_time_sk#1, ss_hdemo_sk#2, ss_store_sk#3] +Condition : ((isnotnull(ss_hdemo_sk#2) AND isnotnull(ss_sold_time_sk#1)) AND isnotnull(ss_store_sk#3)) + +(59) Exchange +Input [3]: [ss_sold_time_sk#1, ss_hdemo_sk#2, ss_store_sk#3] +Arguments: hashpartitioning(ss_hdemo_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(60) Sort +Input [3]: [ss_sold_time_sk#1, ss_hdemo_sk#2, ss_store_sk#3] +Arguments: [ss_hdemo_sk#2 ASC NULLS FIRST], false, 0 + +(61) Scan parquet +Output [2]: [hd_demo_sk#4, hd_dep_count#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(hd_dep_count), EqualTo(hd_dep_count,7), IsNotNull(hd_demo_sk)] +ReadSchema: struct + +(62) Filter +Input [2]: [hd_demo_sk#4, hd_dep_count#5] +Condition : ((isnotnull(hd_dep_count#5) AND (hd_dep_count#5 = 7)) AND isnotnull(hd_demo_sk#4)) + +(63) Project +Output [1]: [hd_demo_sk#4] +Input [2]: [hd_demo_sk#4, hd_dep_count#5] + +(64) Exchange +Input [1]: [hd_demo_sk#4] +Arguments: hashpartitioning(hd_demo_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(65) Sort +Input [1]: [hd_demo_sk#4] +Arguments: [hd_demo_sk#4 ASC NULLS FIRST], false, 0 + +(66) SortMergeJoin +Left keys [1]: [ss_hdemo_sk#2] +Right keys [1]: [hd_demo_sk#4] +Join type: Inner +Join condition: None + +(67) Project +Output [2]: [ss_sold_time_sk#1, ss_store_sk#3] +Input [4]: [ss_sold_time_sk#1, ss_hdemo_sk#2, ss_store_sk#3, hd_demo_sk#4] + +(68) Exchange +Input [2]: [ss_sold_time_sk#1, ss_store_sk#3] +Arguments: hashpartitioning(ss_sold_time_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(69) Sort +Input [2]: [ss_sold_time_sk#1, ss_store_sk#3] +Arguments: [ss_sold_time_sk#1 ASC NULLS FIRST], false, 0 + +(70) Scan parquet +Output [3]: [t_time_sk#6, t_hour#7, t_minute#8] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(t_hour), IsNotNull(t_minute), EqualTo(t_hour,20), GreaterThanOrEqual(t_minute,30), IsNotNull(t_time_sk)] +ReadSchema: struct + +(71) Filter +Input [3]: [t_time_sk#6, t_hour#7, t_minute#8] +Condition : ((((isnotnull(t_hour#7) AND isnotnull(t_minute#8)) AND (t_hour#7 = 20)) AND (t_minute#8 >= 30)) AND isnotnull(t_time_sk#6)) + +(72) Project +Output [1]: [t_time_sk#6] +Input [3]: [t_time_sk#6, t_hour#7, t_minute#8] + +(73) Exchange +Input [1]: [t_time_sk#6] +Arguments: hashpartitioning(t_time_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(74) Sort +Input [1]: [t_time_sk#6] +Arguments: [t_time_sk#6 ASC NULLS FIRST], false, 0 + +(75) SortMergeJoin +Left keys [1]: [ss_sold_time_sk#1] +Right keys [1]: [t_time_sk#6] +Join type: Inner +Join condition: None + +(76) Project +Output [1]: [ss_store_sk#3] +Input [3]: [ss_sold_time_sk#1, ss_store_sk#3, t_time_sk#6] + +(77) Exchange +Input [1]: [ss_store_sk#3] +Arguments: hashpartitioning(ss_store_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(78) Sort +Input [1]: [ss_store_sk#3] +Arguments: [ss_store_sk#3 ASC NULLS FIRST], false, 0 + +(79) Scan parquet +Output [2]: [s_store_sk#9, s_store_name#10] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(s_store_name), EqualTo(s_store_name,ese), IsNotNull(s_store_sk)] +ReadSchema: struct + +(80) Filter +Input [2]: [s_store_sk#9, s_store_name#10] +Condition : ((isnotnull(s_store_name#10) AND (s_store_name#10 = ese)) AND isnotnull(s_store_sk#9)) + +(81) Project +Output [1]: [s_store_sk#9] +Input [2]: [s_store_sk#9, s_store_name#10] + +(82) Exchange +Input [1]: [s_store_sk#9] +Arguments: hashpartitioning(s_store_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(83) Sort +Input [1]: [s_store_sk#9] +Arguments: [s_store_sk#9 ASC NULLS FIRST], false, 0 + +(84) SortMergeJoin +Left keys [1]: [ss_store_sk#3] +Right keys [1]: [s_store_sk#9] +Join type: Inner +Join condition: None + +(85) Project +Output: [] +Input [2]: [ss_store_sk#3, s_store_sk#9] + +(86) HashAggregate +Input: [] +Keys: [] +Functions [1]: [partial_count(1)] +Aggregate Attributes [1]: [count#11] +Results [1]: [count#15] + +(87) Exchange +Input [1]: [count#15] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=14] + +(88) HashAggregate +Input [1]: [count#15] +Keys: [] +Functions [1]: [count(1)] +Aggregate Attributes [1]: [count(1)#13] +Results [1]: [count(1)#13 AS count(1)#14] + +(89) AdaptiveSparkPlan +Output [1]: [count(1)#14] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q97.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q97.txt new file mode 100644 index 000000000..ab23e2431 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q97.txt @@ -0,0 +1,542 @@ +== Physical Plan == +AdaptiveSparkPlan (95) ++- == Final Plan == + NativeProject (59) + +- NativeHashAggregate (58) + +- ShuffleQueryStage (57), Statistics(X) + +- NativeShuffleExchange (56) + +- NativeHashAggregate (55) + +- NativeProject (54) + +- NativeProject (53) + +- NativeSortMergeJoin FullOuter (52) + :- NativeSort (27) + : +- NativeProject (26) + : +- NativeHashAggregate (25) + : +- InputAdapter (24) + : +- AQEShuffleRead (23) + : +- ShuffleQueryStage (22), Statistics(X) + : +- NativeShuffleExchange (21) + : +- NativeHashAggregate (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 (51) + +- NativeProject (50) + +- NativeHashAggregate (49) + +- InputAdapter (48) + +- AQEShuffleRead (47) + +- ShuffleQueryStage (46), Statistics(X) + +- NativeShuffleExchange (45) + +- NativeHashAggregate (44) + +- NativeProject (43) + +- NativeSortMergeJoin Inner (42) + :- NativeSort (35) + : +- InputAdapter (34) + : +- AQEShuffleRead (33) + : +- ShuffleQueryStage (32), Statistics(X) + : +- NativeShuffleExchange (31) + : +- NativeFilter (30) + : +- InputAdapter (29) + : +- NativeParquetScan (28) + +- NativeSort (41) + +- InputAdapter (40) + +- InputAdapter (39) + +- AQEShuffleRead (38) + +- ShuffleQueryStage (37), Statistics(X) + +- ReusedExchange (36) ++- == Initial Plan == + HashAggregate (94) + +- Exchange (93) + +- HashAggregate (92) + +- Project (91) + +- SortMergeJoin FullOuter (90) + :- Sort (74) + : +- HashAggregate (73) + : +- Exchange (72) + : +- HashAggregate (71) + : +- Project (70) + : +- SortMergeJoin Inner (69) + : :- Sort (63) + : : +- Exchange (62) + : : +- Filter (61) + : : +- Scan parquet (60) + : +- Sort (68) + : +- Exchange (67) + : +- Project (66) + : +- Filter (65) + : +- Scan parquet (64) + +- Sort (89) + +- HashAggregate (88) + +- Exchange (87) + +- HashAggregate (86) + +- Project (85) + +- SortMergeJoin Inner (84) + :- Sort (78) + : +- Exchange (77) + : +- Filter (76) + : +- Scan parquet (75) + +- Sort (83) + +- Exchange (82) + +- Project (81) + +- Filter (80) + +- Scan parquet (79) + + +(60) Scan parquet +Output [3]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3] +Arguments: [#1, #2, #3] + +(3) NativeFilter +Input [3]: [#1#1, #2#2, #3#3] +Condition : isnotnull(ss_sold_date_sk#1) + +(4) NativeShuffleExchange +Input [3]: [#1#1, #2#2, #3#3] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [3]: [#1#1, #2#2, #3#3] +Arguments: X + +(6) AQEShuffleRead +Input [3]: [#1#1, #2#2, #3#3] +Arguments: coalesced + +(7) InputAdapter +Input [3]: [#1#1, #2#2, #3#3] + +(8) NativeSort +Input [3]: [#1#1, #2#2, #3#3] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(64) Scan parquet +Output [2]: [d_date_sk#4, d_month_seq#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [d_date_sk#4, d_month_seq#5] +Arguments: [#4, #5] + +(11) NativeFilter +Input [2]: [#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#4)) + +(12) NativeProject +Output [1]: [d_date_sk#4] +Input [2]: [#4#4, #5#5] + +(13) NativeShuffleExchange +Input [1]: [d_date_sk#4] +Arguments: hashpartitioning(d_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(14) ShuffleQueryStage +Output [1]: [d_date_sk#4] +Arguments: X + +(15) AQEShuffleRead +Input [1]: [d_date_sk#4] +Arguments: coalesced + +(16) InputAdapter +Input [1]: [d_date_sk#4] + +(17) NativeSort +Input [1]: [d_date_sk#4] +Arguments: [d_date_sk#4 ASC NULLS FIRST], false + +(18) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#4] +Join type: Inner +Join condition: None + +(19) NativeProject +Output [2]: [ss_item_sk#2, ss_customer_sk#3] +Input [4]: [#1#1, #2#2, #3#3, d_date_sk#4] + +(20) NativeHashAggregate +Input [2]: [ss_item_sk#2, ss_customer_sk#3] +Keys [2]: [ss_customer_sk#3, ss_item_sk#2] +Functions: [] +Aggregate Attributes: [] +Results [3]: [ss_customer_sk#3, ss_item_sk#2, #6#6] + +(21) NativeShuffleExchange +Input [3]: [ss_customer_sk#3, ss_item_sk#2, #6#6] +Arguments: hashpartitioning(ss_customer_sk#3, ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(22) ShuffleQueryStage +Output [3]: [ss_customer_sk#3, ss_item_sk#2, #6#6] +Arguments: X + +(23) AQEShuffleRead +Input [3]: [ss_customer_sk#3, ss_item_sk#2, #6#6] +Arguments: coalesced + +(24) InputAdapter +Input [3]: [ss_customer_sk#3, ss_item_sk#2, #6#6] + +(25) NativeHashAggregate +Input [3]: [ss_customer_sk#3, ss_item_sk#2, #6#6] +Keys [2]: [ss_customer_sk#3, ss_item_sk#2] +Functions: [] +Aggregate Attributes: [] +Results [3]: [ss_customer_sk#3, ss_item_sk#2, #6#6] + +(26) NativeProject +Output [2]: [ss_customer_sk#3 AS customer_sk#7, ss_item_sk#2 AS item_sk#8] +Input [3]: [ss_customer_sk#3, ss_item_sk#2, #6#6] + +(27) NativeSort +Input [2]: [customer_sk#7, item_sk#8] +Arguments: [customer_sk#7 ASC NULLS FIRST, item_sk#8 ASC NULLS FIRST], false + +(75) Scan parquet +Output [3]: [cs_sold_date_sk#9, cs_bill_customer_sk#10, cs_item_sk#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(29) InputAdapter +Input [3]: [cs_sold_date_sk#9, cs_bill_customer_sk#10, cs_item_sk#11] +Arguments: [#9, #10, #11] + +(30) NativeFilter +Input [3]: [#9#9, #10#10, #11#11] +Condition : isnotnull(cs_sold_date_sk#9) + +(31) NativeShuffleExchange +Input [3]: [#9#9, #10#10, #11#11] +Arguments: hashpartitioning(cs_sold_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(32) ShuffleQueryStage +Output [3]: [#9#9, #10#10, #11#11] +Arguments: X + +(33) AQEShuffleRead +Input [3]: [#9#9, #10#10, #11#11] +Arguments: coalesced + +(34) InputAdapter +Input [3]: [#9#9, #10#10, #11#11] + +(35) NativeSort +Input [3]: [#9#9, #10#10, #11#11] +Arguments: [cs_sold_date_sk#9 ASC NULLS FIRST], false + +(36) ReusedExchange [Reuses operator id: 13] +Output [1]: [d_date_sk#12] + +(37) ShuffleQueryStage +Output [1]: [d_date_sk#12] +Arguments: X + +(38) AQEShuffleRead +Input [1]: [d_date_sk#12] +Arguments: coalesced + +(39) InputAdapter +Input [1]: [d_date_sk#12] +Arguments: [#12] + +(40) InputAdapter +Input [1]: [#12#12] + +(41) NativeSort +Input [1]: [#12#12] +Arguments: [d_date_sk#12 ASC NULLS FIRST], false + +(42) NativeSortMergeJoin +Left keys [1]: [cs_sold_date_sk#9] +Right keys [1]: [d_date_sk#12] +Join type: Inner +Join condition: None + +(43) NativeProject +Output [2]: [cs_bill_customer_sk#10, cs_item_sk#11] +Input [4]: [#9#9, #10#10, #11#11, #12#12] + +(44) NativeHashAggregate +Input [2]: [cs_bill_customer_sk#10, cs_item_sk#11] +Keys [2]: [cs_bill_customer_sk#10, cs_item_sk#11] +Functions: [] +Aggregate Attributes: [] +Results [3]: [cs_bill_customer_sk#10, cs_item_sk#11, #6#6] + +(45) NativeShuffleExchange +Input [3]: [cs_bill_customer_sk#10, cs_item_sk#11, #6#6] +Arguments: hashpartitioning(cs_bill_customer_sk#10, cs_item_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(46) ShuffleQueryStage +Output [3]: [cs_bill_customer_sk#10, cs_item_sk#11, #6#6] +Arguments: X + +(47) AQEShuffleRead +Input [3]: [cs_bill_customer_sk#10, cs_item_sk#11, #6#6] +Arguments: coalesced + +(48) InputAdapter +Input [3]: [cs_bill_customer_sk#10, cs_item_sk#11, #6#6] + +(49) NativeHashAggregate +Input [3]: [cs_bill_customer_sk#10, cs_item_sk#11, #6#6] +Keys [2]: [cs_bill_customer_sk#10, cs_item_sk#11] +Functions: [] +Aggregate Attributes: [] +Results [3]: [cs_bill_customer_sk#10, cs_item_sk#11, #6#6] + +(50) NativeProject +Output [2]: [cs_bill_customer_sk#10 AS customer_sk#13, cs_item_sk#11 AS item_sk#14] +Input [3]: [cs_bill_customer_sk#10, cs_item_sk#11, #6#6] + +(51) NativeSort +Input [2]: [customer_sk#13, item_sk#14] +Arguments: [customer_sk#13 ASC NULLS FIRST, item_sk#14 ASC NULLS FIRST], false + +(52) NativeSortMergeJoin +Left keys [2]: [customer_sk#7, item_sk#8] +Right keys [2]: [customer_sk#13, item_sk#14] +Join type: FullOuter +Join condition: None + +(53) NativeProject +Output [2]: [customer_sk#7, customer_sk#13] +Input [4]: [customer_sk#7, item_sk#8, customer_sk#13, item_sk#14] + +(54) NativeProject +Output [3]: [CASE WHEN (isnotnull(customer_sk#7) AND isnull(customer_sk#13)) THEN 1 ELSE 0 END AS _c0#15, CASE WHEN (isnull(customer_sk#7) AND isnotnull(customer_sk#13)) THEN 1 ELSE 0 END AS _c1#16, CASE WHEN (isnotnull(customer_sk#7) AND isnotnull(customer_sk#13)) THEN 1 ELSE 0 END AS _c2#17] +Input [2]: [customer_sk#7, customer_sk#13] + +(55) NativeHashAggregate +Input [3]: [_c0#15, _c1#16, _c2#17] +Keys: [] +Functions [3]: [partial_sum(_c0#15), partial_sum(_c1#16), partial_sum(_c2#17)] +Aggregate Attributes [3]: [sum#18, sum#19, sum#20] +Results [1]: [#6#6] + +(56) NativeShuffleExchange +Input [1]: [#6#6] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=6] + +(57) ShuffleQueryStage +Output [1]: [#6#6] +Arguments: X + +(58) NativeHashAggregate +Input [1]: [#6#6] +Keys: [] +Functions [3]: [sum(CASE WHEN (isnotnull(customer_sk#7) AND isnull(customer_sk#13)) THEN 1 ELSE 0 END), sum(CASE WHEN (isnull(customer_sk#7) AND isnotnull(customer_sk#13)) THEN 1 ELSE 0 END), sum(CASE WHEN (isnotnull(customer_sk#7) AND isnotnull(customer_sk#13)) THEN 1 ELSE 0 END)] +Aggregate Attributes [3]: [sum(CASE WHEN (isnotnull(customer_sk#7) AND isnull(customer_sk#13)) THEN 1 ELSE 0 END)#21, sum(CASE WHEN (isnull(customer_sk#7) AND isnotnull(customer_sk#13)) THEN 1 ELSE 0 END)#22, sum(CASE WHEN (isnotnull(customer_sk#7) AND isnotnull(customer_sk#13)) THEN 1 ELSE 0 END)#23] +Results [3]: [sum(CASE WHEN (isnotnull(customer_sk#7) AND isnull(customer_sk#13)) THEN 1 ELSE 0 END)#21, sum(CASE WHEN (isnull(customer_sk#7) AND isnotnull(customer_sk#13)) THEN 1 ELSE 0 END)#22, sum(CASE WHEN (isnotnull(customer_sk#7) AND isnotnull(customer_sk#13)) THEN 1 ELSE 0 END)#23] + +(59) NativeProject +Output [3]: [sum(CASE WHEN (isnotnull(customer_sk#7) AND isnull(customer_sk#13)) THEN 1 ELSE 0 END)#21 AS store_only#24, sum(CASE WHEN (isnull(customer_sk#7) AND isnotnull(customer_sk#13)) THEN 1 ELSE 0 END)#22 AS catalog_only#25, sum(CASE WHEN (isnotnull(customer_sk#7) AND isnotnull(customer_sk#13)) THEN 1 ELSE 0 END)#23 AS store_and_catalog#26] +Input [3]: [sum(CASE WHEN (isnotnull(customer_sk#7) AND isnull(customer_sk#13)) THEN 1 ELSE 0 END)#21, sum(CASE WHEN (isnull(customer_sk#7) AND isnotnull(customer_sk#13)) THEN 1 ELSE 0 END)#22, sum(CASE WHEN (isnotnull(customer_sk#7) AND isnotnull(customer_sk#13)) THEN 1 ELSE 0 END)#23] + +(60) Scan parquet +Output [3]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(61) Filter +Input [3]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3] +Condition : isnotnull(ss_sold_date_sk#1) + +(62) Exchange +Input [3]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(63) Sort +Input [3]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(64) Scan parquet +Output [2]: [d_date_sk#4, d_month_seq#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)] +ReadSchema: struct + +(65) Filter +Input [2]: [d_date_sk#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#4)) + +(66) Project +Output [1]: [d_date_sk#4] +Input [2]: [d_date_sk#4, d_month_seq#5] + +(67) Exchange +Input [1]: [d_date_sk#4] +Arguments: hashpartitioning(d_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(68) Sort +Input [1]: [d_date_sk#4] +Arguments: [d_date_sk#4 ASC NULLS FIRST], false, 0 + +(69) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#4] +Join type: Inner +Join condition: None + +(70) Project +Output [2]: [ss_item_sk#2, ss_customer_sk#3] +Input [4]: [ss_sold_date_sk#1, ss_item_sk#2, ss_customer_sk#3, d_date_sk#4] + +(71) HashAggregate +Input [2]: [ss_item_sk#2, ss_customer_sk#3] +Keys [2]: [ss_customer_sk#3, ss_item_sk#2] +Functions: [] +Aggregate Attributes: [] +Results [2]: [ss_customer_sk#3, ss_item_sk#2] + +(72) Exchange +Input [2]: [ss_customer_sk#3, ss_item_sk#2] +Arguments: hashpartitioning(ss_customer_sk#3, ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(73) HashAggregate +Input [2]: [ss_customer_sk#3, ss_item_sk#2] +Keys [2]: [ss_customer_sk#3, ss_item_sk#2] +Functions: [] +Aggregate Attributes: [] +Results [2]: [ss_customer_sk#3 AS customer_sk#7, ss_item_sk#2 AS item_sk#8] + +(74) Sort +Input [2]: [customer_sk#7, item_sk#8] +Arguments: [customer_sk#7 ASC NULLS FIRST, item_sk#8 ASC NULLS FIRST], false, 0 + +(75) Scan parquet +Output [3]: [cs_sold_date_sk#9, cs_bill_customer_sk#10, cs_item_sk#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_sold_date_sk)] +ReadSchema: struct + +(76) Filter +Input [3]: [cs_sold_date_sk#9, cs_bill_customer_sk#10, cs_item_sk#11] +Condition : isnotnull(cs_sold_date_sk#9) + +(77) Exchange +Input [3]: [cs_sold_date_sk#9, cs_bill_customer_sk#10, cs_item_sk#11] +Arguments: hashpartitioning(cs_sold_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(78) Sort +Input [3]: [cs_sold_date_sk#9, cs_bill_customer_sk#10, cs_item_sk#11] +Arguments: [cs_sold_date_sk#9 ASC NULLS FIRST], false, 0 + +(79) Scan parquet +Output [2]: [d_date_sk#12, d_month_seq#27] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)] +ReadSchema: struct + +(80) Filter +Input [2]: [d_date_sk#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#12)) + +(81) Project +Output [1]: [d_date_sk#12] +Input [2]: [d_date_sk#12, d_month_seq#27] + +(82) Exchange +Input [1]: [d_date_sk#12] +Arguments: hashpartitioning(d_date_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(83) Sort +Input [1]: [d_date_sk#12] +Arguments: [d_date_sk#12 ASC NULLS FIRST], false, 0 + +(84) SortMergeJoin +Left keys [1]: [cs_sold_date_sk#9] +Right keys [1]: [d_date_sk#12] +Join type: Inner +Join condition: None + +(85) Project +Output [2]: [cs_bill_customer_sk#10, cs_item_sk#11] +Input [4]: [cs_sold_date_sk#9, cs_bill_customer_sk#10, cs_item_sk#11, d_date_sk#12] + +(86) HashAggregate +Input [2]: [cs_bill_customer_sk#10, cs_item_sk#11] +Keys [2]: [cs_bill_customer_sk#10, cs_item_sk#11] +Functions: [] +Aggregate Attributes: [] +Results [2]: [cs_bill_customer_sk#10, cs_item_sk#11] + +(87) Exchange +Input [2]: [cs_bill_customer_sk#10, cs_item_sk#11] +Arguments: hashpartitioning(cs_bill_customer_sk#10, cs_item_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(88) HashAggregate +Input [2]: [cs_bill_customer_sk#10, cs_item_sk#11] +Keys [2]: [cs_bill_customer_sk#10, cs_item_sk#11] +Functions: [] +Aggregate Attributes: [] +Results [2]: [cs_bill_customer_sk#10 AS customer_sk#13, cs_item_sk#11 AS item_sk#14] + +(89) Sort +Input [2]: [customer_sk#13, item_sk#14] +Arguments: [customer_sk#13 ASC NULLS FIRST, item_sk#14 ASC NULLS FIRST], false, 0 + +(90) SortMergeJoin +Left keys [2]: [customer_sk#7, item_sk#8] +Right keys [2]: [customer_sk#13, item_sk#14] +Join type: FullOuter +Join condition: None + +(91) Project +Output [2]: [customer_sk#7, customer_sk#13] +Input [4]: [customer_sk#7, item_sk#8, customer_sk#13, item_sk#14] + +(92) HashAggregate +Input [2]: [customer_sk#7, customer_sk#13] +Keys: [] +Functions [3]: [partial_sum(CASE WHEN (isnotnull(customer_sk#7) AND isnull(customer_sk#13)) THEN 1 ELSE 0 END), partial_sum(CASE WHEN (isnull(customer_sk#7) AND isnotnull(customer_sk#13)) THEN 1 ELSE 0 END), partial_sum(CASE WHEN (isnotnull(customer_sk#7) AND isnotnull(customer_sk#13)) THEN 1 ELSE 0 END)] +Aggregate Attributes [3]: [sum#18, sum#19, sum#20] +Results [3]: [sum#28, sum#29, sum#30] + +(93) Exchange +Input [3]: [sum#28, sum#29, sum#30] +Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=13] + +(94) HashAggregate +Input [3]: [sum#28, sum#29, sum#30] +Keys: [] +Functions [3]: [sum(CASE WHEN (isnotnull(customer_sk#7) AND isnull(customer_sk#13)) THEN 1 ELSE 0 END), sum(CASE WHEN (isnull(customer_sk#7) AND isnotnull(customer_sk#13)) THEN 1 ELSE 0 END), sum(CASE WHEN (isnotnull(customer_sk#7) AND isnotnull(customer_sk#13)) THEN 1 ELSE 0 END)] +Aggregate Attributes [3]: [sum(CASE WHEN (isnotnull(customer_sk#7) AND isnull(customer_sk#13)) THEN 1 ELSE 0 END)#21, sum(CASE WHEN (isnull(customer_sk#7) AND isnotnull(customer_sk#13)) THEN 1 ELSE 0 END)#22, sum(CASE WHEN (isnotnull(customer_sk#7) AND isnotnull(customer_sk#13)) THEN 1 ELSE 0 END)#23] +Results [3]: [sum(CASE WHEN (isnotnull(customer_sk#7) AND isnull(customer_sk#13)) THEN 1 ELSE 0 END)#21 AS store_only#24, sum(CASE WHEN (isnull(customer_sk#7) AND isnotnull(customer_sk#13)) THEN 1 ELSE 0 END)#22 AS catalog_only#25, sum(CASE WHEN (isnotnull(customer_sk#7) AND isnotnull(customer_sk#13)) THEN 1 ELSE 0 END)#23 AS store_and_catalog#26] + +(95) AdaptiveSparkPlan +Output [3]: [store_only#24, catalog_only#25, store_and_catalog#26] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q98.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q98.txt new file mode 100644 index 000000000..cfd7c223e --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q98.txt @@ -0,0 +1,461 @@ +== Physical Plan == +AdaptiveSparkPlan (85) ++- == Final Plan == + NativeProject (55) + +- NativeSort (54) + +- ConvertToNative (53) + +- AQEShuffleRead (52) + +- ShuffleQueryStage (51), Statistics(X) + +- Exchange (50) + +- * Project (49) + +- Window (48) + +- NativeSort (47) + +- InputAdapter (46) + +- AQEShuffleRead (45) + +- ShuffleQueryStage (44), Statistics(X) + +- NativeShuffleExchange (43) + +- NativeProject (42) + +- NativeHashAggregate (41) + +- InputAdapter (40) + +- AQEShuffleRead (39) + +- ShuffleQueryStage (38), Statistics(X) + +- NativeShuffleExchange (37) + +- NativeHashAggregate (36) + +- NativeProject (35) + +- NativeProject (34) + +- NativeSortMergeJoin Inner (33) + :- NativeSort (23) + : +- InputAdapter (22) + : +- AQEShuffleRead (21) + : +- ShuffleQueryStage (20), Statistics(X) + : +- NativeShuffleExchange (19) + : +- NativeProject (18) + : +- NativeSortMergeJoin Inner (17) + : :- NativeSort (8) + : : +- InputAdapter (7) + : : +- AQEShuffleRead (6) + : : +- ShuffleQueryStage (5), Statistics(X) + : : +- NativeShuffleExchange (4) + : : +- NativeFilter (3) + : : +- InputAdapter (2) + : : +- NativeParquetScan (1) + : +- NativeSort (16) + : +- InputAdapter (15) + : +- AQEShuffleRead (14) + : +- ShuffleQueryStage (13), Statistics(X) + : +- NativeShuffleExchange (12) + : +- NativeFilter (11) + : +- InputAdapter (10) + : +- NativeParquetScan (9) + +- NativeSort (32) + +- InputAdapter (31) + +- AQEShuffleRead (30) + +- ShuffleQueryStage (29), Statistics(X) + +- NativeShuffleExchange (28) + +- NativeProject (27) + +- NativeFilter (26) + +- InputAdapter (25) + +- NativeParquetScan (24) ++- == Initial Plan == + Project (84) + +- Sort (83) + +- Exchange (82) + +- Project (81) + +- Window (80) + +- Sort (79) + +- Exchange (78) + +- HashAggregate (77) + +- Exchange (76) + +- HashAggregate (75) + +- Project (74) + +- SortMergeJoin Inner (73) + :- Sort (67) + : +- Exchange (66) + : +- Project (65) + : +- SortMergeJoin Inner (64) + : :- Sort (59) + : : +- Exchange (58) + : : +- Filter (57) + : : +- Scan parquet (56) + : +- Sort (63) + : +- Exchange (62) + : +- Filter (61) + : +- Scan parquet (60) + +- Sort (72) + +- Exchange (71) + +- Project (70) + +- Filter (69) + +- Scan parquet (68) + + +(56) Scan parquet +Output [3]: [ss_sold_date_sk#1, ss_item_sk#2, ss_ext_sales_price#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [3]: [ss_sold_date_sk#1, ss_item_sk#2, ss_ext_sales_price#3] +Arguments: [#1, #2, #3] + +(3) NativeFilter +Input [3]: [#1#1, #2#2, #3#3] +Condition : (isnotnull(ss_item_sk#2) AND isnotnull(ss_sold_date_sk#1)) + +(4) NativeShuffleExchange +Input [3]: [#1#1, #2#2, #3#3] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [3]: [#1#1, #2#2, #3#3] +Arguments: X + +(6) AQEShuffleRead +Input [3]: [#1#1, #2#2, #3#3] +Arguments: coalesced + +(7) InputAdapter +Input [3]: [#1#1, #2#2, #3#3] + +(8) NativeSort +Input [3]: [#1#1, #2#2, #3#3] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false + +(60) Scan parquet +Output [6]: [i_item_sk#4, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(i_category, [Books,Home,Sports]), IsNotNull(i_item_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [6]: [i_item_sk#4, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Arguments: [#4, #5, #6, #7, #8, #9] + +(11) NativeFilter +Input [6]: [#4#4, #5#5, #6#6, #7#7, #8#8, #9#9] +Condition : (i_category#9 IN (Sports,Books,Home) AND isnotnull(i_item_sk#4)) + +(12) NativeShuffleExchange +Input [6]: [#4#4, #5#5, #6#6, #7#7, #8#8, #9#9] +Arguments: hashpartitioning(i_item_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [6]: [#4#4, #5#5, #6#6, #7#7, #8#8, #9#9] +Arguments: X + +(14) AQEShuffleRead +Input [6]: [#4#4, #5#5, #6#6, #7#7, #8#8, #9#9] +Arguments: coalesced + +(15) InputAdapter +Input [6]: [#4#4, #5#5, #6#6, #7#7, #8#8, #9#9] + +(16) NativeSort +Input [6]: [#4#4, #5#5, #6#6, #7#7, #8#8, #9#9] +Arguments: [i_item_sk#4 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#4] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [7]: [ss_sold_date_sk#1, ss_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Input [9]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9] + +(19) NativeShuffleExchange +Input [7]: [ss_sold_date_sk#1, ss_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [7]: [ss_sold_date_sk#1, ss_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Arguments: X + +(21) AQEShuffleRead +Input [7]: [ss_sold_date_sk#1, ss_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Arguments: coalesced + +(22) InputAdapter +Input [7]: [ss_sold_date_sk#1, ss_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] + +(23) NativeSort +Input [7]: [ss_sold_date_sk#1, ss_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false + +(68) Scan parquet +Output [2]: [d_date_sk#10, d_date#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,1999-02-22), LessThanOrEqual(d_date,1999-03-24), IsNotNull(d_date_sk)] +ReadSchema: struct + +(25) InputAdapter +Input [2]: [d_date_sk#10, d_date#11] +Arguments: [#10, #11] + +(26) NativeFilter +Input [2]: [#10#10, #11#11] +Condition : (((isnotnull(d_date#11) AND (d_date#11 >= 1999-02-22)) AND (d_date#11 <= 1999-03-24)) AND isnotnull(d_date_sk#10)) + +(27) NativeProject +Output [1]: [d_date_sk#10] +Input [2]: [#10#10, #11#11] + +(28) NativeShuffleExchange +Input [1]: [d_date_sk#10] +Arguments: hashpartitioning(d_date_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(29) ShuffleQueryStage +Output [1]: [d_date_sk#10] +Arguments: X + +(30) AQEShuffleRead +Input [1]: [d_date_sk#10] +Arguments: coalesced + +(31) InputAdapter +Input [1]: [d_date_sk#10] + +(32) NativeSort +Input [1]: [d_date_sk#10] +Arguments: [d_date_sk#10 ASC NULLS FIRST], false + +(33) NativeSortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#10] +Join type: Inner +Join condition: None + +(34) NativeProject +Output [6]: [ss_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Input [8]: [ss_sold_date_sk#1, ss_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9, d_date_sk#10] + +(35) NativeProject +Output [6]: [i_item_id#5 AS i_item_id#5, i_item_desc#6 AS i_item_desc#6, i_category#9 AS i_category#9, i_class#8 AS i_class#8, i_current_price#7 AS i_current_price#7, UnscaledValue(ss_ext_sales_price#3) AS _c5#12] +Input [6]: [ss_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] + +(36) NativeHashAggregate +Input [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, _c5#12] +Keys [5]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7] +Functions [1]: [partial_sum(_c5#12)] +Aggregate Attributes [1]: [sum#13] +Results [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, #14#14] + +(37) NativeShuffleExchange +Input [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, #14#14] +Arguments: hashpartitioning(i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(38) ShuffleQueryStage +Output [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, #14#14] +Arguments: X + +(39) AQEShuffleRead +Input [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, #14#14] +Arguments: coalesced + +(40) InputAdapter +Input [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, #14#14] + +(41) NativeHashAggregate +Input [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, #14#14] +Keys [5]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#3))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#3))#15] +Results [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, sum(UnscaledValue(ss_ext_sales_price#3))#15] + +(42) NativeProject +Output [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#3))#15,17,2) AS itemrevenue#16, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#3))#15,17,2) AS _w0#17, i_item_id#5] +Input [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, sum(UnscaledValue(ss_ext_sales_price#3))#15] + +(43) NativeShuffleExchange +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5] +Arguments: hashpartitioning(i_class#8, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(44) ShuffleQueryStage +Output [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5] +Arguments: X + +(45) AQEShuffleRead +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5] +Arguments: coalesced + +(46) InputAdapter +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5] + +(47) NativeSort +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5] +Arguments: [i_class#8 ASC NULLS FIRST], false + +(48) Window +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5] +Arguments: [sum(_w0#17) windowspecdefinition(i_class#8, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#18], [i_class#8] + +(49) Project [codegen id : 1] +Output [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, ((_w0#17 * 100) / _we0#18) AS revenueratio#19, i_item_id#5] +Input [8]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5, _we0#18] + +(50) Exchange +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, revenueratio#19, i_item_id#5] +Arguments: rangepartitioning(i_category#9 ASC NULLS FIRST, i_class#8 ASC NULLS FIRST, i_item_id#5 ASC NULLS FIRST, i_item_desc#6 ASC NULLS FIRST, revenueratio#19 ASC NULLS FIRST, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(51) ShuffleQueryStage +Output [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, revenueratio#19, i_item_id#5] +Arguments: X + +(52) AQEShuffleRead +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, revenueratio#19, i_item_id#5] +Arguments: coalesced + +(53) ConvertToNative +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, revenueratio#19, i_item_id#5] + +(54) NativeSort +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, revenueratio#19, i_item_id#5] +Arguments: [i_category#9 ASC NULLS FIRST, i_class#8 ASC NULLS FIRST, i_item_id#5 ASC NULLS FIRST, i_item_desc#6 ASC NULLS FIRST, revenueratio#19 ASC NULLS FIRST], true + +(55) NativeProject +Output [6]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, revenueratio#19] +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, revenueratio#19, i_item_id#5] + +(56) Scan parquet +Output [3]: [ss_sold_date_sk#1, ss_item_sk#2, ss_ext_sales_price#3] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_sold_date_sk)] +ReadSchema: struct + +(57) Filter +Input [3]: [ss_sold_date_sk#1, ss_item_sk#2, ss_ext_sales_price#3] +Condition : (isnotnull(ss_item_sk#2) AND isnotnull(ss_sold_date_sk#1)) + +(58) Exchange +Input [3]: [ss_sold_date_sk#1, ss_item_sk#2, ss_ext_sales_price#3] +Arguments: hashpartitioning(ss_item_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(59) Sort +Input [3]: [ss_sold_date_sk#1, ss_item_sk#2, ss_ext_sales_price#3] +Arguments: [ss_item_sk#2 ASC NULLS FIRST], false, 0 + +(60) Scan parquet +Output [6]: [i_item_sk#4, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [In(i_category, [Books,Home,Sports]), IsNotNull(i_item_sk)] +ReadSchema: struct + +(61) Filter +Input [6]: [i_item_sk#4, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Condition : (i_category#9 IN (Sports,Books,Home) AND isnotnull(i_item_sk#4)) + +(62) Exchange +Input [6]: [i_item_sk#4, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Arguments: hashpartitioning(i_item_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(63) Sort +Input [6]: [i_item_sk#4, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Arguments: [i_item_sk#4 ASC NULLS FIRST], false, 0 + +(64) SortMergeJoin +Left keys [1]: [ss_item_sk#2] +Right keys [1]: [i_item_sk#4] +Join type: Inner +Join condition: None + +(65) Project +Output [7]: [ss_sold_date_sk#1, ss_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Input [9]: [ss_sold_date_sk#1, ss_item_sk#2, ss_ext_sales_price#3, i_item_sk#4, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] + +(66) Exchange +Input [7]: [ss_sold_date_sk#1, ss_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(67) Sort +Input [7]: [ss_sold_date_sk#1, ss_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0 + +(68) Scan parquet +Output [2]: [d_date_sk#10, d_date#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,1999-02-22), LessThanOrEqual(d_date,1999-03-24), IsNotNull(d_date_sk)] +ReadSchema: struct + +(69) Filter +Input [2]: [d_date_sk#10, d_date#11] +Condition : (((isnotnull(d_date#11) AND (d_date#11 >= 1999-02-22)) AND (d_date#11 <= 1999-03-24)) AND isnotnull(d_date_sk#10)) + +(70) Project +Output [1]: [d_date_sk#10] +Input [2]: [d_date_sk#10, d_date#11] + +(71) Exchange +Input [1]: [d_date_sk#10] +Arguments: hashpartitioning(d_date_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(72) Sort +Input [1]: [d_date_sk#10] +Arguments: [d_date_sk#10 ASC NULLS FIRST], false, 0 + +(73) SortMergeJoin +Left keys [1]: [ss_sold_date_sk#1] +Right keys [1]: [d_date_sk#10] +Join type: Inner +Join condition: None + +(74) Project +Output [6]: [ss_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Input [8]: [ss_sold_date_sk#1, ss_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9, d_date_sk#10] + +(75) HashAggregate +Input [6]: [ss_ext_sales_price#3, i_item_id#5, i_item_desc#6, i_current_price#7, i_class#8, i_category#9] +Keys [5]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7] +Functions [1]: [partial_sum(UnscaledValue(ss_ext_sales_price#3))] +Aggregate Attributes [1]: [sum#13] +Results [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, sum#20] + +(76) Exchange +Input [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, sum#20] +Arguments: hashpartitioning(i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(77) HashAggregate +Input [6]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7, sum#20] +Keys [5]: [i_item_id#5, i_item_desc#6, i_category#9, i_class#8, i_current_price#7] +Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#3))] +Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#3))#15] +Results [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#3))#15,17,2) AS itemrevenue#16, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#3))#15,17,2) AS _w0#17, i_item_id#5] + +(78) Exchange +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5] +Arguments: hashpartitioning(i_class#8, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(79) Sort +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5] +Arguments: [i_class#8 ASC NULLS FIRST], false, 0 + +(80) Window +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5] +Arguments: [sum(_w0#17) windowspecdefinition(i_class#8, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#18], [i_class#8] + +(81) Project +Output [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, ((_w0#17 * 100) / _we0#18) AS revenueratio#19, i_item_id#5] +Input [8]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, _w0#17, i_item_id#5, _we0#18] + +(82) Exchange +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, revenueratio#19, i_item_id#5] +Arguments: rangepartitioning(i_category#9 ASC NULLS FIRST, i_class#8 ASC NULLS FIRST, i_item_id#5 ASC NULLS FIRST, i_item_desc#6 ASC NULLS FIRST, revenueratio#19 ASC NULLS FIRST, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(83) Sort +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, revenueratio#19, i_item_id#5] +Arguments: [i_category#9 ASC NULLS FIRST, i_class#8 ASC NULLS FIRST, i_item_id#5 ASC NULLS FIRST, i_item_desc#6 ASC NULLS FIRST, revenueratio#19 ASC NULLS FIRST], true, 0 + +(84) Project +Output [6]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, revenueratio#19] +Input [7]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, revenueratio#19, i_item_id#5] + +(85) AdaptiveSparkPlan +Output [6]: [i_item_desc#6, i_category#9, i_class#8, i_current_price#7, itemrevenue#16, revenueratio#19] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q99.txt b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q99.txt new file mode 100644 index 000000000..6d1a36651 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-plan-stability/spark-3.5/q99.txt @@ -0,0 +1,619 @@ +== Physical Plan == +AdaptiveSparkPlan (113) ++- == Final Plan == + NativeTakeOrdered (73) + +- NativeProject (72) + +- NativeHashAggregate (71) + +- InputAdapter (70) + +- AQEShuffleRead (69) + +- ShuffleQueryStage (68), Statistics(X) + +- NativeShuffleExchange (67) + +- NativeHashAggregate (66) + +- NativeProject (65) + +- NativeProject (64) + +- NativeSortMergeJoin Inner (63) + :- NativeSort (53) + : +- InputAdapter (52) + : +- AQEShuffleRead (51) + : +- ShuffleQueryStage (50), Statistics(X) + : +- NativeShuffleExchange (49) + : +- NativeProject (48) + : +- NativeSortMergeJoin Inner (47) + : :- NativeSort (38) + : : +- InputAdapter (37) + : : +- AQEShuffleRead (36) + : : +- ShuffleQueryStage (35), Statistics(X) + : : +- NativeShuffleExchange (34) + : : +- NativeProject (33) + : : +- NativeSortMergeJoin Inner (32) + : : :- NativeSort (23) + : : : +- InputAdapter (22) + : : : +- AQEShuffleRead (21) + : : : +- ShuffleQueryStage (20), Statistics(X) + : : : +- NativeShuffleExchange (19) + : : : +- NativeProject (18) + : : : +- NativeSortMergeJoin Inner (17) + : : : :- NativeSort (8) + : : : : +- InputAdapter (7) + : : : : +- AQEShuffleRead (6) + : : : : +- ShuffleQueryStage (5), Statistics(X) + : : : : +- NativeShuffleExchange (4) + : : : : +- NativeFilter (3) + : : : : +- InputAdapter (2) + : : : : +- NativeParquetScan (1) + : : : +- NativeSort (16) + : : : +- InputAdapter (15) + : : : +- AQEShuffleRead (14) + : : : +- ShuffleQueryStage (13), Statistics(X) + : : : +- NativeShuffleExchange (12) + : : : +- NativeFilter (11) + : : : +- InputAdapter (10) + : : : +- NativeParquetScan (9) + : : +- NativeSort (31) + : : +- InputAdapter (30) + : : +- AQEShuffleRead (29) + : : +- ShuffleQueryStage (28), Statistics(X) + : : +- NativeShuffleExchange (27) + : : +- NativeFilter (26) + : : +- InputAdapter (25) + : : +- NativeParquetScan (24) + : +- NativeSort (46) + : +- InputAdapter (45) + : +- AQEShuffleRead (44) + : +- ShuffleQueryStage (43), Statistics(X) + : +- NativeShuffleExchange (42) + : +- NativeFilter (41) + : +- InputAdapter (40) + : +- NativeParquetScan (39) + +- NativeSort (62) + +- InputAdapter (61) + +- AQEShuffleRead (60) + +- ShuffleQueryStage (59), Statistics(X) + +- NativeShuffleExchange (58) + +- NativeProject (57) + +- NativeFilter (56) + +- InputAdapter (55) + +- NativeParquetScan (54) ++- == Initial Plan == + TakeOrderedAndProject (112) + +- HashAggregate (111) + +- Exchange (110) + +- HashAggregate (109) + +- Project (108) + +- SortMergeJoin Inner (107) + :- Sort (101) + : +- Exchange (100) + : +- Project (99) + : +- SortMergeJoin Inner (98) + : :- Sort (93) + : : +- Exchange (92) + : : +- Project (91) + : : +- SortMergeJoin Inner (90) + : : :- Sort (85) + : : : +- Exchange (84) + : : : +- Project (83) + : : : +- SortMergeJoin Inner (82) + : : : :- Sort (77) + : : : : +- Exchange (76) + : : : : +- Filter (75) + : : : : +- Scan parquet (74) + : : : +- Sort (81) + : : : +- Exchange (80) + : : : +- Filter (79) + : : : +- Scan parquet (78) + : : +- Sort (89) + : : +- Exchange (88) + : : +- Filter (87) + : : +- Scan parquet (86) + : +- Sort (97) + : +- Exchange (96) + : +- Filter (95) + : +- Scan parquet (94) + +- Sort (106) + +- Exchange (105) + +- Project (104) + +- Filter (103) + +- Scan parquet (102) + + +(74) Scan parquet +Output [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_call_center_sk#3, cs_ship_mode_sk#4, cs_warehouse_sk#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_warehouse_sk), IsNotNull(cs_ship_mode_sk), IsNotNull(cs_call_center_sk), IsNotNull(cs_ship_date_sk)] +ReadSchema: struct + +(2) InputAdapter +Input [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_call_center_sk#3, cs_ship_mode_sk#4, cs_warehouse_sk#5] +Arguments: [#1, #2, #3, #4, #5] + +(3) NativeFilter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Condition : (((isnotnull(cs_warehouse_sk#5) AND isnotnull(cs_ship_mode_sk#4)) AND isnotnull(cs_call_center_sk#3)) AND isnotnull(cs_ship_date_sk#2)) + +(4) NativeShuffleExchange +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: hashpartitioning(cs_warehouse_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=1] + +(5) ShuffleQueryStage +Output [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: X + +(6) AQEShuffleRead +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: coalesced + +(7) InputAdapter +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] + +(8) NativeSort +Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5] +Arguments: [cs_warehouse_sk#5 ASC NULLS FIRST], false + +(78) Scan parquet +Output [2]: [w_warehouse_sk#6, w_warehouse_name#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(w_warehouse_sk)] +ReadSchema: struct + +(10) InputAdapter +Input [2]: [w_warehouse_sk#6, w_warehouse_name#7] +Arguments: [#6, #7] + +(11) NativeFilter +Input [2]: [#6#6, #7#7] +Condition : isnotnull(w_warehouse_sk#6) + +(12) NativeShuffleExchange +Input [2]: [#6#6, #7#7] +Arguments: hashpartitioning(w_warehouse_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=2] + +(13) ShuffleQueryStage +Output [2]: [#6#6, #7#7] +Arguments: X + +(14) AQEShuffleRead +Input [2]: [#6#6, #7#7] +Arguments: coalesced + +(15) InputAdapter +Input [2]: [#6#6, #7#7] + +(16) NativeSort +Input [2]: [#6#6, #7#7] +Arguments: [w_warehouse_sk#6 ASC NULLS FIRST], false + +(17) NativeSortMergeJoin +Left keys [1]: [cs_warehouse_sk#5] +Right keys [1]: [w_warehouse_sk#6] +Join type: Inner +Join condition: None + +(18) NativeProject +Output [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_call_center_sk#3, cs_ship_mode_sk#4, w_warehouse_name#7] +Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7] + +(19) NativeShuffleExchange +Input [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_call_center_sk#3, cs_ship_mode_sk#4, w_warehouse_name#7] +Arguments: hashpartitioning(cs_ship_mode_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=3] + +(20) ShuffleQueryStage +Output [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_call_center_sk#3, cs_ship_mode_sk#4, w_warehouse_name#7] +Arguments: X + +(21) AQEShuffleRead +Input [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_call_center_sk#3, cs_ship_mode_sk#4, w_warehouse_name#7] +Arguments: coalesced + +(22) InputAdapter +Input [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_call_center_sk#3, cs_ship_mode_sk#4, w_warehouse_name#7] + +(23) NativeSort +Input [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_call_center_sk#3, cs_ship_mode_sk#4, w_warehouse_name#7] +Arguments: [cs_ship_mode_sk#4 ASC NULLS FIRST], false + +(86) Scan parquet +Output [2]: [sm_ship_mode_sk#8, sm_type#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sm_ship_mode_sk)] +ReadSchema: struct + +(25) InputAdapter +Input [2]: [sm_ship_mode_sk#8, sm_type#9] +Arguments: [#8, #9] + +(26) NativeFilter +Input [2]: [#8#8, #9#9] +Condition : isnotnull(sm_ship_mode_sk#8) + +(27) NativeShuffleExchange +Input [2]: [#8#8, #9#9] +Arguments: hashpartitioning(sm_ship_mode_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=4] + +(28) ShuffleQueryStage +Output [2]: [#8#8, #9#9] +Arguments: X + +(29) AQEShuffleRead +Input [2]: [#8#8, #9#9] +Arguments: coalesced + +(30) InputAdapter +Input [2]: [#8#8, #9#9] + +(31) NativeSort +Input [2]: [#8#8, #9#9] +Arguments: [sm_ship_mode_sk#8 ASC NULLS FIRST], false + +(32) NativeSortMergeJoin +Left keys [1]: [cs_ship_mode_sk#4] +Right keys [1]: [sm_ship_mode_sk#8] +Join type: Inner +Join condition: None + +(33) NativeProject +Output [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_call_center_sk#3, w_warehouse_name#7, sm_type#9] +Input [7]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_call_center_sk#3, cs_ship_mode_sk#4, w_warehouse_name#7, #8#8, #9#9] + +(34) NativeShuffleExchange +Input [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_call_center_sk#3, w_warehouse_name#7, sm_type#9] +Arguments: hashpartitioning(cs_call_center_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=5] + +(35) ShuffleQueryStage +Output [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_call_center_sk#3, w_warehouse_name#7, sm_type#9] +Arguments: X + +(36) AQEShuffleRead +Input [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_call_center_sk#3, w_warehouse_name#7, sm_type#9] +Arguments: coalesced + +(37) InputAdapter +Input [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_call_center_sk#3, w_warehouse_name#7, sm_type#9] + +(38) NativeSort +Input [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_call_center_sk#3, w_warehouse_name#7, sm_type#9] +Arguments: [cs_call_center_sk#3 ASC NULLS FIRST], false + +(94) Scan parquet +Output [2]: [cc_call_center_sk#10, cc_name#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cc_call_center_sk)] +ReadSchema: struct + +(40) InputAdapter +Input [2]: [cc_call_center_sk#10, cc_name#11] +Arguments: [#10, #11] + +(41) NativeFilter +Input [2]: [#10#10, #11#11] +Condition : isnotnull(cc_call_center_sk#10) + +(42) NativeShuffleExchange +Input [2]: [#10#10, #11#11] +Arguments: hashpartitioning(cc_call_center_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=6] + +(43) ShuffleQueryStage +Output [2]: [#10#10, #11#11] +Arguments: X + +(44) AQEShuffleRead +Input [2]: [#10#10, #11#11] +Arguments: coalesced + +(45) InputAdapter +Input [2]: [#10#10, #11#11] + +(46) NativeSort +Input [2]: [#10#10, #11#11] +Arguments: [cc_call_center_sk#10 ASC NULLS FIRST], false + +(47) NativeSortMergeJoin +Left keys [1]: [cs_call_center_sk#3] +Right keys [1]: [cc_call_center_sk#10] +Join type: Inner +Join condition: None + +(48) NativeProject +Output [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, w_warehouse_name#7, sm_type#9, cc_name#11] +Input [7]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_call_center_sk#3, w_warehouse_name#7, sm_type#9, #10#10, #11#11] + +(49) NativeShuffleExchange +Input [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, w_warehouse_name#7, sm_type#9, cc_name#11] +Arguments: hashpartitioning(cs_ship_date_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=7] + +(50) ShuffleQueryStage +Output [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, w_warehouse_name#7, sm_type#9, cc_name#11] +Arguments: X + +(51) AQEShuffleRead +Input [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, w_warehouse_name#7, sm_type#9, cc_name#11] +Arguments: coalesced + +(52) InputAdapter +Input [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, w_warehouse_name#7, sm_type#9, cc_name#11] + +(53) NativeSort +Input [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, w_warehouse_name#7, sm_type#9, cc_name#11] +Arguments: [cs_ship_date_sk#2 ASC NULLS FIRST], false + +(102) Scan parquet +Output [2]: [d_date_sk#12, d_month_seq#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)] +ReadSchema: struct + +(55) InputAdapter +Input [2]: [d_date_sk#12, d_month_seq#13] +Arguments: [#12, #13] + +(56) NativeFilter +Input [2]: [#12#12, #13#13] +Condition : (((isnotnull(d_month_seq#13) AND (d_month_seq#13 >= 1200)) AND (d_month_seq#13 <= 1211)) AND isnotnull(d_date_sk#12)) + +(57) NativeProject +Output [1]: [d_date_sk#12] +Input [2]: [#12#12, #13#13] + +(58) NativeShuffleExchange +Input [1]: [d_date_sk#12] +Arguments: hashpartitioning(d_date_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=8] + +(59) ShuffleQueryStage +Output [1]: [d_date_sk#12] +Arguments: X + +(60) AQEShuffleRead +Input [1]: [d_date_sk#12] +Arguments: coalesced + +(61) InputAdapter +Input [1]: [d_date_sk#12] + +(62) NativeSort +Input [1]: [d_date_sk#12] +Arguments: [d_date_sk#12 ASC NULLS FIRST], false + +(63) NativeSortMergeJoin +Left keys [1]: [cs_ship_date_sk#2] +Right keys [1]: [d_date_sk#12] +Join type: Inner +Join condition: None + +(64) NativeProject +Output [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, sm_type#9, cc_name#11, substr(w_warehouse_name#7, 1, 20) AS _groupingexpression#14] +Input [6]: [cs_sold_date_sk#1, cs_ship_date_sk#2, w_warehouse_name#7, sm_type#9, cc_name#11, d_date_sk#12] + +(65) NativeProject +Output [8]: [_groupingexpression#14 AS _groupingexpression#14, sm_type#9 AS sm_type#9, cc_name#11 AS cc_name#11, CASE WHEN ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 30) THEN 1 ELSE 0 END AS _c3#15, CASE WHEN (((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 30) AND ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 60)) THEN 1 ELSE 0 END AS _c4#16, CASE WHEN (((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 60) AND ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 90)) THEN 1 ELSE 0 END AS _c5#17, CASE WHEN (((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 90) AND ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 120)) THEN 1 ELSE 0 END AS _c6#18, CASE WHEN ((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 120) THEN 1 ELSE 0 END AS _c7#19] +Input [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, sm_type#9, cc_name#11, _groupingexpression#14] + +(66) NativeHashAggregate +Input [8]: [_groupingexpression#14, sm_type#9, cc_name#11, _c3#15, _c4#16, _c5#17, _c6#18, _c7#19] +Keys [3]: [_groupingexpression#14, sm_type#9, cc_name#11] +Functions [5]: [partial_sum(_c3#15), partial_sum(_c4#16), partial_sum(_c5#17), partial_sum(_c6#18), partial_sum(_c7#19)] +Aggregate Attributes [5]: [sum#20, sum#21, sum#22, sum#23, sum#24] +Results [4]: [_groupingexpression#14, sm_type#9, cc_name#11, #25#25] + +(67) NativeShuffleExchange +Input [4]: [_groupingexpression#14, sm_type#9, cc_name#11, #25#25] +Arguments: hashpartitioning(_groupingexpression#14, sm_type#9, cc_name#11, 100), ENSURE_REQUIREMENTS, [plan_id=9] + +(68) ShuffleQueryStage +Output [4]: [_groupingexpression#14, sm_type#9, cc_name#11, #25#25] +Arguments: X + +(69) AQEShuffleRead +Input [4]: [_groupingexpression#14, sm_type#9, cc_name#11, #25#25] +Arguments: coalesced + +(70) InputAdapter +Input [4]: [_groupingexpression#14, sm_type#9, cc_name#11, #25#25] + +(71) NativeHashAggregate +Input [4]: [_groupingexpression#14, sm_type#9, cc_name#11, #25#25] +Keys [3]: [_groupingexpression#14, sm_type#9, cc_name#11] +Functions [5]: [sum(CASE WHEN ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 30) THEN 1 ELSE 0 END), sum(CASE WHEN (((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 30) AND ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 60)) THEN 1 ELSE 0 END), sum(CASE WHEN (((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 60) AND ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 90)) THEN 1 ELSE 0 END), sum(CASE WHEN (((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 90) AND ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 120)) THEN 1 ELSE 0 END), sum(CASE WHEN ((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 120) THEN 1 ELSE 0 END)] +Aggregate Attributes [5]: [sum(CASE WHEN ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 30) THEN 1 ELSE 0 END)#26, sum(CASE WHEN (((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 30) AND ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 60)) THEN 1 ELSE 0 END)#27, sum(CASE WHEN (((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 60) AND ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 90)) THEN 1 ELSE 0 END)#28, sum(CASE WHEN (((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 90) AND ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 120)) THEN 1 ELSE 0 END)#29, sum(CASE WHEN ((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 120) THEN 1 ELSE 0 END)#30] +Results [8]: [_groupingexpression#14, sm_type#9, cc_name#11, sum(CASE WHEN ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 30) THEN 1 ELSE 0 END)#26, sum(CASE WHEN (((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 30) AND ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 60)) THEN 1 ELSE 0 END)#27, sum(CASE WHEN (((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 60) AND ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 90)) THEN 1 ELSE 0 END)#28, sum(CASE WHEN (((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 90) AND ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 120)) THEN 1 ELSE 0 END)#29, sum(CASE WHEN ((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 120) THEN 1 ELSE 0 END)#30] + +(72) NativeProject +Output [8]: [_groupingexpression#14 AS substr(w_warehouse_name, 1, 20)#31, sm_type#9, cc_name#11, sum(CASE WHEN ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 30) THEN 1 ELSE 0 END)#26 AS 30 days #32, sum(CASE WHEN (((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 30) AND ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 60)) THEN 1 ELSE 0 END)#27 AS 31 - 60 days #33, sum(CASE WHEN (((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 60) AND ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 90)) THEN 1 ELSE 0 END)#28 AS 61 - 90 days #34, sum(CASE WHEN (((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 90) AND ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 120)) THEN 1 ELSE 0 END)#29 AS 91 - 120 days #35, sum(CASE WHEN ((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 120) THEN 1 ELSE 0 END)#30 AS >120 days #36] +Input [8]: [_groupingexpression#14, sm_type#9, cc_name#11, sum(CASE WHEN ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 30) THEN 1 ELSE 0 END)#26, sum(CASE WHEN (((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 30) AND ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 60)) THEN 1 ELSE 0 END)#27, sum(CASE WHEN (((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 60) AND ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 90)) THEN 1 ELSE 0 END)#28, sum(CASE WHEN (((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 90) AND ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 120)) THEN 1 ELSE 0 END)#29, sum(CASE WHEN ((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 120) THEN 1 ELSE 0 END)#30] + +(73) NativeTakeOrdered +Input [8]: [substr(w_warehouse_name, 1, 20)#31, sm_type#9, cc_name#11, 30 days #32, 31 - 60 days #33, 61 - 90 days #34, 91 - 120 days #35, >120 days #36] +Arguments: X, [substr(w_warehouse_name, 1, 20)#31 ASC NULLS FIRST, sm_type#9 ASC NULLS FIRST, cc_name#11 ASC NULLS FIRST] + +(74) Scan parquet +Output [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_call_center_sk#3, cs_ship_mode_sk#4, cs_warehouse_sk#5] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cs_warehouse_sk), IsNotNull(cs_ship_mode_sk), IsNotNull(cs_call_center_sk), IsNotNull(cs_ship_date_sk)] +ReadSchema: struct + +(75) Filter +Input [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_call_center_sk#3, cs_ship_mode_sk#4, cs_warehouse_sk#5] +Condition : (((isnotnull(cs_warehouse_sk#5) AND isnotnull(cs_ship_mode_sk#4)) AND isnotnull(cs_call_center_sk#3)) AND isnotnull(cs_ship_date_sk#2)) + +(76) Exchange +Input [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_call_center_sk#3, cs_ship_mode_sk#4, cs_warehouse_sk#5] +Arguments: hashpartitioning(cs_warehouse_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=10] + +(77) Sort +Input [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_call_center_sk#3, cs_ship_mode_sk#4, cs_warehouse_sk#5] +Arguments: [cs_warehouse_sk#5 ASC NULLS FIRST], false, 0 + +(78) Scan parquet +Output [2]: [w_warehouse_sk#6, w_warehouse_name#7] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(w_warehouse_sk)] +ReadSchema: struct + +(79) Filter +Input [2]: [w_warehouse_sk#6, w_warehouse_name#7] +Condition : isnotnull(w_warehouse_sk#6) + +(80) Exchange +Input [2]: [w_warehouse_sk#6, w_warehouse_name#7] +Arguments: hashpartitioning(w_warehouse_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=11] + +(81) Sort +Input [2]: [w_warehouse_sk#6, w_warehouse_name#7] +Arguments: [w_warehouse_sk#6 ASC NULLS FIRST], false, 0 + +(82) SortMergeJoin +Left keys [1]: [cs_warehouse_sk#5] +Right keys [1]: [w_warehouse_sk#6] +Join type: Inner +Join condition: None + +(83) Project +Output [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_call_center_sk#3, cs_ship_mode_sk#4, w_warehouse_name#7] +Input [7]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_call_center_sk#3, cs_ship_mode_sk#4, cs_warehouse_sk#5, w_warehouse_sk#6, w_warehouse_name#7] + +(84) Exchange +Input [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_call_center_sk#3, cs_ship_mode_sk#4, w_warehouse_name#7] +Arguments: hashpartitioning(cs_ship_mode_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=12] + +(85) Sort +Input [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_call_center_sk#3, cs_ship_mode_sk#4, w_warehouse_name#7] +Arguments: [cs_ship_mode_sk#4 ASC NULLS FIRST], false, 0 + +(86) Scan parquet +Output [2]: [sm_ship_mode_sk#8, sm_type#9] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(sm_ship_mode_sk)] +ReadSchema: struct + +(87) Filter +Input [2]: [sm_ship_mode_sk#8, sm_type#9] +Condition : isnotnull(sm_ship_mode_sk#8) + +(88) Exchange +Input [2]: [sm_ship_mode_sk#8, sm_type#9] +Arguments: hashpartitioning(sm_ship_mode_sk#8, 100), ENSURE_REQUIREMENTS, [plan_id=13] + +(89) Sort +Input [2]: [sm_ship_mode_sk#8, sm_type#9] +Arguments: [sm_ship_mode_sk#8 ASC NULLS FIRST], false, 0 + +(90) SortMergeJoin +Left keys [1]: [cs_ship_mode_sk#4] +Right keys [1]: [sm_ship_mode_sk#8] +Join type: Inner +Join condition: None + +(91) Project +Output [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_call_center_sk#3, w_warehouse_name#7, sm_type#9] +Input [7]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_call_center_sk#3, cs_ship_mode_sk#4, w_warehouse_name#7, sm_ship_mode_sk#8, sm_type#9] + +(92) Exchange +Input [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_call_center_sk#3, w_warehouse_name#7, sm_type#9] +Arguments: hashpartitioning(cs_call_center_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=14] + +(93) Sort +Input [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_call_center_sk#3, w_warehouse_name#7, sm_type#9] +Arguments: [cs_call_center_sk#3 ASC NULLS FIRST], false, 0 + +(94) Scan parquet +Output [2]: [cc_call_center_sk#10, cc_name#11] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(cc_call_center_sk)] +ReadSchema: struct + +(95) Filter +Input [2]: [cc_call_center_sk#10, cc_name#11] +Condition : isnotnull(cc_call_center_sk#10) + +(96) Exchange +Input [2]: [cc_call_center_sk#10, cc_name#11] +Arguments: hashpartitioning(cc_call_center_sk#10, 100), ENSURE_REQUIREMENTS, [plan_id=15] + +(97) Sort +Input [2]: [cc_call_center_sk#10, cc_name#11] +Arguments: [cc_call_center_sk#10 ASC NULLS FIRST], false, 0 + +(98) SortMergeJoin +Left keys [1]: [cs_call_center_sk#3] +Right keys [1]: [cc_call_center_sk#10] +Join type: Inner +Join condition: None + +(99) Project +Output [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, w_warehouse_name#7, sm_type#9, cc_name#11] +Input [7]: [cs_sold_date_sk#1, cs_ship_date_sk#2, cs_call_center_sk#3, w_warehouse_name#7, sm_type#9, cc_call_center_sk#10, cc_name#11] + +(100) Exchange +Input [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, w_warehouse_name#7, sm_type#9, cc_name#11] +Arguments: hashpartitioning(cs_ship_date_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=16] + +(101) Sort +Input [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, w_warehouse_name#7, sm_type#9, cc_name#11] +Arguments: [cs_ship_date_sk#2 ASC NULLS FIRST], false, 0 + +(102) Scan parquet +Output [2]: [d_date_sk#12, d_month_seq#13] +Batched: true +Location: InMemoryFileIndex [file:/] +PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1200), LessThanOrEqual(d_month_seq,1211), IsNotNull(d_date_sk)] +ReadSchema: struct + +(103) Filter +Input [2]: [d_date_sk#12, d_month_seq#13] +Condition : (((isnotnull(d_month_seq#13) AND (d_month_seq#13 >= 1200)) AND (d_month_seq#13 <= 1211)) AND isnotnull(d_date_sk#12)) + +(104) Project +Output [1]: [d_date_sk#12] +Input [2]: [d_date_sk#12, d_month_seq#13] + +(105) Exchange +Input [1]: [d_date_sk#12] +Arguments: hashpartitioning(d_date_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=17] + +(106) Sort +Input [1]: [d_date_sk#12] +Arguments: [d_date_sk#12 ASC NULLS FIRST], false, 0 + +(107) SortMergeJoin +Left keys [1]: [cs_ship_date_sk#2] +Right keys [1]: [d_date_sk#12] +Join type: Inner +Join condition: None + +(108) Project +Output [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, sm_type#9, cc_name#11, substr(w_warehouse_name#7, 1, 20) AS _groupingexpression#14] +Input [6]: [cs_sold_date_sk#1, cs_ship_date_sk#2, w_warehouse_name#7, sm_type#9, cc_name#11, d_date_sk#12] + +(109) HashAggregate +Input [5]: [cs_sold_date_sk#1, cs_ship_date_sk#2, sm_type#9, cc_name#11, _groupingexpression#14] +Keys [3]: [_groupingexpression#14, sm_type#9, cc_name#11] +Functions [5]: [partial_sum(CASE WHEN ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 30) THEN 1 ELSE 0 END), partial_sum(CASE WHEN (((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 30) AND ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 60)) THEN 1 ELSE 0 END), partial_sum(CASE WHEN (((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 60) AND ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 90)) THEN 1 ELSE 0 END), partial_sum(CASE WHEN (((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 90) AND ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 120)) THEN 1 ELSE 0 END), partial_sum(CASE WHEN ((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 120) THEN 1 ELSE 0 END)] +Aggregate Attributes [5]: [sum#20, sum#21, sum#22, sum#23, sum#24] +Results [8]: [_groupingexpression#14, sm_type#9, cc_name#11, sum#37, sum#38, sum#39, sum#40, sum#41] + +(110) Exchange +Input [8]: [_groupingexpression#14, sm_type#9, cc_name#11, sum#37, sum#38, sum#39, sum#40, sum#41] +Arguments: hashpartitioning(_groupingexpression#14, sm_type#9, cc_name#11, 100), ENSURE_REQUIREMENTS, [plan_id=18] + +(111) HashAggregate +Input [8]: [_groupingexpression#14, sm_type#9, cc_name#11, sum#37, sum#38, sum#39, sum#40, sum#41] +Keys [3]: [_groupingexpression#14, sm_type#9, cc_name#11] +Functions [5]: [sum(CASE WHEN ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 30) THEN 1 ELSE 0 END), sum(CASE WHEN (((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 30) AND ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 60)) THEN 1 ELSE 0 END), sum(CASE WHEN (((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 60) AND ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 90)) THEN 1 ELSE 0 END), sum(CASE WHEN (((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 90) AND ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 120)) THEN 1 ELSE 0 END), sum(CASE WHEN ((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 120) THEN 1 ELSE 0 END)] +Aggregate Attributes [5]: [sum(CASE WHEN ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 30) THEN 1 ELSE 0 END)#26, sum(CASE WHEN (((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 30) AND ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 60)) THEN 1 ELSE 0 END)#27, sum(CASE WHEN (((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 60) AND ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 90)) THEN 1 ELSE 0 END)#28, sum(CASE WHEN (((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 90) AND ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 120)) THEN 1 ELSE 0 END)#29, sum(CASE WHEN ((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 120) THEN 1 ELSE 0 END)#30] +Results [8]: [_groupingexpression#14 AS substr(w_warehouse_name, 1, 20)#31, sm_type#9, cc_name#11, sum(CASE WHEN ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 30) THEN 1 ELSE 0 END)#26 AS 30 days #32, sum(CASE WHEN (((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 30) AND ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 60)) THEN 1 ELSE 0 END)#27 AS 31 - 60 days #33, sum(CASE WHEN (((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 60) AND ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 90)) THEN 1 ELSE 0 END)#28 AS 61 - 90 days #34, sum(CASE WHEN (((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 90) AND ((cs_ship_date_sk#2 - cs_sold_date_sk#1) <= 120)) THEN 1 ELSE 0 END)#29 AS 91 - 120 days #35, sum(CASE WHEN ((cs_ship_date_sk#2 - cs_sold_date_sk#1) > 120) THEN 1 ELSE 0 END)#30 AS >120 days #36] + +(112) TakeOrderedAndProject +Input [8]: [substr(w_warehouse_name, 1, 20)#31, sm_type#9, cc_name#11, 30 days #32, 31 - 60 days #33, 61 - 90 days #34, 91 - 120 days #35, >120 days #36] +Arguments: X, [substr(w_warehouse_name, 1, 20)#31 ASC NULLS FIRST, sm_type#9 ASC NULLS FIRST, cc_name#11 ASC NULLS FIRST], [substr(w_warehouse_name, 1, 20)#31, sm_type#9, cc_name#11, 30 days #32, 31 - 60 days #33, 61 - 90 days #34, 91 - 120 days #35, >120 days #36] + +(113) AdaptiveSparkPlan +Output [8]: [substr(w_warehouse_name, 1, 20)#31, sm_type#9, cc_name#11, 30 days #32, 31 - 60 days #33, 61 - 90 days #34, 91 - 120 days #35, >120 days #36] +Arguments: isFinalPlan=true + diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q1.sql b/dev/auron-it/src/main/resources/tpcds-queries/q1.sql new file mode 100755 index 000000000..4d20faad8 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q1.sql @@ -0,0 +1,19 @@ +WITH customer_total_return AS +( SELECT + sr_customer_sk AS ctr_customer_sk, + sr_store_sk AS ctr_store_sk, + sum(sr_return_amt) AS ctr_total_return + FROM store_returns, date_dim + WHERE sr_returned_date_sk = d_date_sk AND d_year = 2000 + GROUP BY sr_customer_sk, sr_store_sk) +SELECT c_customer_id +FROM customer_total_return ctr1, store, customer +WHERE ctr1.ctr_total_return > + (SELECT avg(ctr_total_return) * 1.2 + FROM customer_total_return ctr2 + WHERE ctr1.ctr_store_sk = ctr2.ctr_store_sk) + AND s_store_sk = ctr1.ctr_store_sk + AND s_state = 'TN' + AND ctr1.ctr_customer_sk = c_customer_sk +ORDER BY c_customer_id +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q10.sql b/dev/auron-it/src/main/resources/tpcds-queries/q10.sql new file mode 100755 index 000000000..5500e1aea --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q10.sql @@ -0,0 +1,57 @@ +SELECT + cd_gender, + cd_marital_status, + cd_education_status, + count(*) cnt1, + cd_purchase_estimate, + count(*) cnt2, + cd_credit_rating, + count(*) cnt3, + cd_dep_count, + count(*) cnt4, + cd_dep_employed_count, + count(*) cnt5, + cd_dep_college_count, + count(*) cnt6 +FROM + customer c, customer_address ca, customer_demographics +WHERE + c.c_current_addr_sk = ca.ca_address_sk AND + ca_county IN ('Rush County', 'Toole County', 'Jefferson County', + 'Dona Ana County', 'La Porte County') AND + cd_demo_sk = c.c_current_cdemo_sk AND + exists(SELECT * + FROM store_sales, date_dim + WHERE c.c_customer_sk = ss_customer_sk AND + ss_sold_date_sk = d_date_sk AND + d_year = 2002 AND + d_moy BETWEEN 1 AND 1 + 3) AND + (exists(SELECT * + FROM web_sales, date_dim + WHERE c.c_customer_sk = ws_bill_customer_sk AND + ws_sold_date_sk = d_date_sk AND + d_year = 2002 AND + d_moy BETWEEN 1 AND 1 + 3) OR + exists(SELECT * + FROM catalog_sales, date_dim + WHERE c.c_customer_sk = cs_ship_customer_sk AND + cs_sold_date_sk = d_date_sk AND + d_year = 2002 AND + d_moy BETWEEN 1 AND 1 + 3)) +GROUP BY cd_gender, + cd_marital_status, + cd_education_status, + cd_purchase_estimate, + cd_credit_rating, + cd_dep_count, + cd_dep_employed_count, + cd_dep_college_count +ORDER BY cd_gender, + cd_marital_status, + cd_education_status, + cd_purchase_estimate, + cd_credit_rating, + cd_dep_count, + cd_dep_employed_count, + cd_dep_college_count +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q11.sql b/dev/auron-it/src/main/resources/tpcds-queries/q11.sql new file mode 100755 index 000000000..3618fb14f --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q11.sql @@ -0,0 +1,68 @@ +WITH year_total AS ( + SELECT + c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag, + c_birth_country customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + sum(ss_ext_list_price - ss_ext_discount_amt) year_total, + 's' sale_type + FROM customer, store_sales, date_dim + WHERE c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + GROUP BY c_customer_id + , c_first_name + , c_last_name + , d_year + , c_preferred_cust_flag + , c_birth_country + , c_login + , c_email_address + , d_year + UNION ALL + SELECT + c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag, + c_birth_country customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + sum(ws_ext_list_price - ws_ext_discount_amt) year_total, + 'w' sale_type + FROM customer, web_sales, date_dim + WHERE c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + GROUP BY + c_customer_id, c_first_name, c_last_name, c_preferred_cust_flag, c_birth_country, + c_login, c_email_address, d_year) +SELECT t_s_secyear.customer_preferred_cust_flag +FROM year_total t_s_firstyear + , year_total t_s_secyear + , year_total t_w_firstyear + , year_total t_w_secyear +WHERE t_s_secyear.customer_id = t_s_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_secyear.customer_id + AND t_s_firstyear.customer_id = t_w_firstyear.customer_id + AND t_s_firstyear.sale_type = 's' + AND t_w_firstyear.sale_type = 'w' + AND t_s_secyear.sale_type = 's' + AND t_w_secyear.sale_type = 'w' + AND t_s_firstyear.dyear = 2001 + AND t_s_secyear.dyear = 2001 + 1 + AND t_w_firstyear.dyear = 2001 + AND t_w_secyear.dyear = 2001 + 1 + AND t_s_firstyear.year_total > 0 + AND t_w_firstyear.year_total > 0 + AND CASE WHEN t_w_firstyear.year_total > 0 + THEN t_w_secyear.year_total / t_w_firstyear.year_total + ELSE NULL END + > CASE WHEN t_s_firstyear.year_total > 0 + THEN t_s_secyear.year_total / t_s_firstyear.year_total + ELSE NULL END +ORDER BY t_s_secyear.customer_preferred_cust_flag +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q12.sql b/dev/auron-it/src/main/resources/tpcds-queries/q12.sql new file mode 100755 index 000000000..0382737f5 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q12.sql @@ -0,0 +1,22 @@ +SELECT + i_item_desc, + i_category, + i_class, + i_current_price, + sum(ws_ext_sales_price) AS itemrevenue, + sum(ws_ext_sales_price) * 100 / sum(sum(ws_ext_sales_price)) + OVER + (PARTITION BY i_class) AS revenueratio +FROM + web_sales, item, date_dim +WHERE + ws_item_sk = i_item_sk + AND i_category IN ('Sports', 'Books', 'Home') + AND ws_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('1999-02-22' AS DATE) + AND (cast('1999-02-22' AS DATE) + INTERVAL 30 days) +GROUP BY + i_item_id, i_item_desc, i_category, i_class, i_current_price +ORDER BY + i_category, i_class, i_item_id, i_item_desc, revenueratio +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q13.sql b/dev/auron-it/src/main/resources/tpcds-queries/q13.sql new file mode 100755 index 000000000..32dc9e260 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q13.sql @@ -0,0 +1,49 @@ +SELECT + avg(ss_quantity), + avg(ss_ext_sales_price), + avg(ss_ext_wholesale_cost), + sum(ss_ext_wholesale_cost) +FROM store_sales + , store + , customer_demographics + , household_demographics + , customer_address + , date_dim +WHERE s_store_sk = ss_store_sk + AND ss_sold_date_sk = d_date_sk AND d_year = 2001 + AND ((ss_hdemo_sk = hd_demo_sk + AND cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'M' + AND cd_education_status = 'Advanced Degree' + AND ss_sales_price BETWEEN 100.00 AND 150.00 + AND hd_dep_count = 3 +) OR + (ss_hdemo_sk = hd_demo_sk + AND cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'S' + AND cd_education_status = 'College' + AND ss_sales_price BETWEEN 50.00 AND 100.00 + AND hd_dep_count = 1 + ) OR + (ss_hdemo_sk = hd_demo_sk + AND cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'W' + AND cd_education_status = '2 yr Degree' + AND ss_sales_price BETWEEN 150.00 AND 200.00 + AND hd_dep_count = 1 + )) + AND ((ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('TX', 'OH', 'TX') + AND ss_net_profit BETWEEN 100 AND 200 +) OR + (ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('OR', 'NM', 'KY') + AND ss_net_profit BETWEEN 150 AND 300 + ) OR + (ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('VA', 'TX', 'MS') + AND ss_net_profit BETWEEN 50 AND 250 + )) diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q14a.sql b/dev/auron-it/src/main/resources/tpcds-queries/q14a.sql new file mode 100755 index 000000000..954ddd41b --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q14a.sql @@ -0,0 +1,120 @@ +WITH cross_items AS +(SELECT i_item_sk ss_item_sk + FROM item, + (SELECT + iss.i_brand_id brand_id, + iss.i_class_id class_id, + iss.i_category_id category_id + FROM store_sales, item iss, date_dim d1 + WHERE ss_item_sk = iss.i_item_sk + AND ss_sold_date_sk = d1.d_date_sk + AND d1.d_year BETWEEN 1999 AND 1999 + 2 + INTERSECT + SELECT + ics.i_brand_id, + ics.i_class_id, + ics.i_category_id + FROM catalog_sales, item ics, date_dim d2 + WHERE cs_item_sk = ics.i_item_sk + AND cs_sold_date_sk = d2.d_date_sk + AND d2.d_year BETWEEN 1999 AND 1999 + 2 + INTERSECT + SELECT + iws.i_brand_id, + iws.i_class_id, + iws.i_category_id + FROM web_sales, item iws, date_dim d3 + WHERE ws_item_sk = iws.i_item_sk + AND ws_sold_date_sk = d3.d_date_sk + AND d3.d_year BETWEEN 1999 AND 1999 + 2) x + WHERE i_brand_id = brand_id + AND i_class_id = class_id + AND i_category_id = category_id +), + avg_sales AS + (SELECT avg(quantity * list_price) average_sales + FROM ( + SELECT + ss_quantity quantity, + ss_list_price list_price + FROM store_sales, date_dim + WHERE ss_sold_date_sk = d_date_sk + AND d_year BETWEEN 1999 AND 2001 + UNION ALL + SELECT + cs_quantity quantity, + cs_list_price list_price + FROM catalog_sales, date_dim + WHERE cs_sold_date_sk = d_date_sk + AND d_year BETWEEN 1999 AND 1999 + 2 + UNION ALL + SELECT + ws_quantity quantity, + ws_list_price list_price + FROM web_sales, date_dim + WHERE ws_sold_date_sk = d_date_sk + AND d_year BETWEEN 1999 AND 1999 + 2) x) +SELECT + channel, + i_brand_id, + i_class_id, + i_category_id, + sum(sales), + sum(number_sales) +FROM ( + SELECT + 'store' channel, + i_brand_id, + i_class_id, + i_category_id, + sum(ss_quantity * ss_list_price) sales, + count(*) number_sales + FROM store_sales, item, date_dim + WHERE ss_item_sk IN (SELECT ss_item_sk + FROM cross_items) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 1999 + 2 + AND d_moy = 11 + GROUP BY i_brand_id, i_class_id, i_category_id + HAVING sum(ss_quantity * ss_list_price) > (SELECT average_sales + FROM avg_sales) + UNION ALL + SELECT + 'catalog' channel, + i_brand_id, + i_class_id, + i_category_id, + sum(cs_quantity * cs_list_price) sales, + count(*) number_sales + FROM catalog_sales, item, date_dim + WHERE cs_item_sk IN (SELECT ss_item_sk + FROM cross_items) + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 1999 + 2 + AND d_moy = 11 + GROUP BY i_brand_id, i_class_id, i_category_id + HAVING sum(cs_quantity * cs_list_price) > (SELECT average_sales FROM avg_sales) + UNION ALL + SELECT + 'web' channel, + i_brand_id, + i_class_id, + i_category_id, + sum(ws_quantity * ws_list_price) sales, + count(*) number_sales + FROM web_sales, item, date_dim + WHERE ws_item_sk IN (SELECT ss_item_sk + FROM cross_items) + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 1999 + 2 + AND d_moy = 11 + GROUP BY i_brand_id, i_class_id, i_category_id + HAVING sum(ws_quantity * ws_list_price) > (SELECT average_sales + FROM avg_sales) + ) y +GROUP BY ROLLUP (channel, i_brand_id, i_class_id, i_category_id) +ORDER BY channel, i_brand_id, i_class_id, i_category_id +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q14b.sql b/dev/auron-it/src/main/resources/tpcds-queries/q14b.sql new file mode 100755 index 000000000..929a8484b --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q14b.sql @@ -0,0 +1,95 @@ +WITH cross_items AS +(SELECT i_item_sk ss_item_sk + FROM item, + (SELECT + iss.i_brand_id brand_id, + iss.i_class_id class_id, + iss.i_category_id category_id + FROM store_sales, item iss, date_dim d1 + WHERE ss_item_sk = iss.i_item_sk + AND ss_sold_date_sk = d1.d_date_sk + AND d1.d_year BETWEEN 1999 AND 1999 + 2 + INTERSECT + SELECT + ics.i_brand_id, + ics.i_class_id, + ics.i_category_id + FROM catalog_sales, item ics, date_dim d2 + WHERE cs_item_sk = ics.i_item_sk + AND cs_sold_date_sk = d2.d_date_sk + AND d2.d_year BETWEEN 1999 AND 1999 + 2 + INTERSECT + SELECT + iws.i_brand_id, + iws.i_class_id, + iws.i_category_id + FROM web_sales, item iws, date_dim d3 + WHERE ws_item_sk = iws.i_item_sk + AND ws_sold_date_sk = d3.d_date_sk + AND d3.d_year BETWEEN 1999 AND 1999 + 2) x + WHERE i_brand_id = brand_id + AND i_class_id = class_id + AND i_category_id = category_id +), + avg_sales AS + (SELECT avg(quantity * list_price) average_sales + FROM (SELECT + ss_quantity quantity, + ss_list_price list_price + FROM store_sales, date_dim + WHERE ss_sold_date_sk = d_date_sk AND d_year BETWEEN 1999 AND 1999 + 2 + UNION ALL + SELECT + cs_quantity quantity, + cs_list_price list_price + FROM catalog_sales, date_dim + WHERE cs_sold_date_sk = d_date_sk AND d_year BETWEEN 1999 AND 1999 + 2 + UNION ALL + SELECT + ws_quantity quantity, + ws_list_price list_price + FROM web_sales, date_dim + WHERE ws_sold_date_sk = d_date_sk AND d_year BETWEEN 1999 AND 1999 + 2) x) +SELECT * +FROM + (SELECT + 'store' channel, + i_brand_id, + i_class_id, + i_category_id, + sum(ss_quantity * ss_list_price) sales, + count(*) number_sales + FROM store_sales, item, date_dim + WHERE ss_item_sk IN (SELECT ss_item_sk + FROM cross_items) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_week_seq = (SELECT d_week_seq + FROM date_dim + WHERE d_year = 1999 + 1 AND d_moy = 12 AND d_dom = 11) + GROUP BY i_brand_id, i_class_id, i_category_id + HAVING sum(ss_quantity * ss_list_price) > (SELECT average_sales + FROM avg_sales)) this_year, + (SELECT + 'store' channel, + i_brand_id, + i_class_id, + i_category_id, + sum(ss_quantity * ss_list_price) sales, + count(*) number_sales + FROM store_sales, item, date_dim + WHERE ss_item_sk IN (SELECT ss_item_sk + FROM cross_items) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_week_seq = (SELECT d_week_seq + FROM date_dim + WHERE d_year = 1999 AND d_moy = 12 AND d_dom = 11) + GROUP BY i_brand_id, i_class_id, i_category_id + HAVING sum(ss_quantity * ss_list_price) > (SELECT average_sales + FROM avg_sales)) last_year +WHERE this_year.i_brand_id = last_year.i_brand_id + AND this_year.i_class_id = last_year.i_class_id + AND this_year.i_category_id = last_year.i_category_id +ORDER BY this_year.channel, this_year.i_brand_id, this_year.i_class_id, this_year.i_category_id +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q15.sql b/dev/auron-it/src/main/resources/tpcds-queries/q15.sql new file mode 100755 index 000000000..b8182e23b --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q15.sql @@ -0,0 +1,15 @@ +SELECT + ca_zip, + sum(cs_sales_price) +FROM catalog_sales, customer, customer_address, date_dim +WHERE cs_bill_customer_sk = c_customer_sk + AND c_current_addr_sk = ca_address_sk + AND (substr(ca_zip, 1, 5) IN ('85669', '86197', '88274', '83405', '86475', + '85392', '85460', '80348', '81792') + OR ca_state IN ('CA', 'WA', 'GA') + OR cs_sales_price > 500) + AND cs_sold_date_sk = d_date_sk + AND d_qoy = 2 AND d_year = 2001 +GROUP BY ca_zip +ORDER BY ca_zip +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q16.sql b/dev/auron-it/src/main/resources/tpcds-queries/q16.sql new file mode 100755 index 000000000..732ad0d84 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q16.sql @@ -0,0 +1,23 @@ +SELECT + count(DISTINCT cs_order_number) AS `order count `, + sum(cs_ext_ship_cost) AS `total shipping cost `, + sum(cs_net_profit) AS `total net profit ` +FROM + catalog_sales cs1, date_dim, customer_address, call_center +WHERE + d_date BETWEEN '2002-02-01' AND (CAST('2002-02-01' AS DATE) + INTERVAL 60 days) + AND cs1.cs_ship_date_sk = d_date_sk + AND cs1.cs_ship_addr_sk = ca_address_sk + AND ca_state = 'GA' + AND cs1.cs_call_center_sk = cc_call_center_sk + AND cc_county IN + ('Williamson County', 'Williamson County', 'Williamson County', 'Williamson County', 'Williamson County') + AND EXISTS(SELECT * + FROM catalog_sales cs2 + WHERE cs1.cs_order_number = cs2.cs_order_number + AND cs1.cs_warehouse_sk <> cs2.cs_warehouse_sk) + AND NOT EXISTS(SELECT * + FROM catalog_returns cr1 + WHERE cs1.cs_order_number = cr1.cr_order_number) +ORDER BY count(DISTINCT cs_order_number) +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q17.sql b/dev/auron-it/src/main/resources/tpcds-queries/q17.sql new file mode 100755 index 000000000..4d647f795 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q17.sql @@ -0,0 +1,33 @@ +SELECT + i_item_id, + i_item_desc, + s_state, + count(ss_quantity) AS store_sales_quantitycount, + avg(ss_quantity) AS store_sales_quantityave, + stddev_samp(ss_quantity) AS store_sales_quantitystdev, + stddev_samp(ss_quantity) / avg(ss_quantity) AS store_sales_quantitycov, + count(sr_return_quantity) as_store_returns_quantitycount, + avg(sr_return_quantity) as_store_returns_quantityave, + stddev_samp(sr_return_quantity) as_store_returns_quantitystdev, + stddev_samp(sr_return_quantity) / avg(sr_return_quantity) AS store_returns_quantitycov, + count(cs_quantity) AS catalog_sales_quantitycount, + avg(cs_quantity) AS catalog_sales_quantityave, + stddev_samp(cs_quantity) / avg(cs_quantity) AS catalog_sales_quantitystdev, + stddev_samp(cs_quantity) / avg(cs_quantity) AS catalog_sales_quantitycov +FROM store_sales, store_returns, catalog_sales, date_dim d1, date_dim d2, date_dim d3, store, item +WHERE d1.d_quarter_name = '2001Q1' + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND ss_customer_sk = sr_customer_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND sr_returned_date_sk = d2.d_date_sk + AND d2.d_quarter_name IN ('2001Q1', '2001Q2', '2001Q3') + AND sr_customer_sk = cs_bill_customer_sk + AND sr_item_sk = cs_item_sk + AND cs_sold_date_sk = d3.d_date_sk + AND d3.d_quarter_name IN ('2001Q1', '2001Q2', '2001Q3') +GROUP BY i_item_id, i_item_desc, s_state +ORDER BY i_item_id, i_item_desc, s_state +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q18.sql b/dev/auron-it/src/main/resources/tpcds-queries/q18.sql new file mode 100755 index 000000000..522a734d2 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q18.sql @@ -0,0 +1,31 @@ +SELECT + i_item_id, + ca_country, + ca_state, + ca_county, + avg(cast(cs_quantity AS DECIMAL(12, 2))) agg1, + avg(cast(cs_list_price AS DECIMAL(12, 2))) agg2, + avg(cast(cs_coupon_amt AS DECIMAL(12, 2))) agg3, + avg(cast(cs_sales_price AS DECIMAL(12, 2))) agg4, + avg(cast(cs_net_profit AS DECIMAL(12, 2))) agg5, + avg(cast(c_birth_year AS DECIMAL(12, 2))) agg6, + avg(cast(cd1.cd_dep_count AS DECIMAL(12, 2))) agg7 +FROM catalog_sales, customer_demographics cd1, + customer_demographics cd2, customer, customer_address, date_dim, item +WHERE cs_sold_date_sk = d_date_sk AND + cs_item_sk = i_item_sk AND + cs_bill_cdemo_sk = cd1.cd_demo_sk AND + cs_bill_customer_sk = c_customer_sk AND + cd1.cd_gender = 'F' AND + cd1.cd_education_status = 'Unknown' AND + c_current_cdemo_sk = cd2.cd_demo_sk AND + c_current_addr_sk = ca_address_sk AND + c_birth_month IN (1, 6, 8, 9, 12, 2) AND + d_year = 1998 AND + ca_state IN ('MS', 'IN', 'ND', 'OK', 'NM', 'VA', 'MS') +GROUP BY ROLLUP (i_item_id, ca_country, ca_state, ca_county) +order by ca_country desc, + ca_state desc, + ca_county desc, + i_item_id + LIMIT 100 ; diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q19.sql b/dev/auron-it/src/main/resources/tpcds-queries/q19.sql new file mode 100755 index 000000000..e38ab7f26 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q19.sql @@ -0,0 +1,19 @@ +SELECT + i_brand_id brand_id, + i_brand brand, + i_manufact_id, + i_manufact, + sum(ss_ext_sales_price) ext_price +FROM date_dim, store_sales, item, customer, customer_address, store +WHERE d_date_sk = ss_sold_date_sk + AND ss_item_sk = i_item_sk + AND i_manager_id = 8 + AND d_moy = 11 + AND d_year = 1998 + AND ss_customer_sk = c_customer_sk + AND c_current_addr_sk = ca_address_sk + AND substr(ca_zip, 1, 5) <> substr(s_zip, 1, 5) + AND ss_store_sk = s_store_sk +GROUP BY i_brand, i_brand_id, i_manufact_id, i_manufact +ORDER BY ext_price DESC, brand, brand_id, i_manufact_id, i_manufact +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q2.sql b/dev/auron-it/src/main/resources/tpcds-queries/q2.sql new file mode 100755 index 000000000..52c0e90c4 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q2.sql @@ -0,0 +1,81 @@ +WITH wscs AS +( SELECT + sold_date_sk, + sales_price + FROM (SELECT + ws_sold_date_sk sold_date_sk, + ws_ext_sales_price sales_price + FROM web_sales) x + UNION ALL + (SELECT + cs_sold_date_sk sold_date_sk, + cs_ext_sales_price sales_price + FROM catalog_sales)), + wswscs AS + ( SELECT + d_week_seq, + sum(CASE WHEN (d_day_name = 'Sunday') + THEN sales_price + ELSE NULL END) + sun_sales, + sum(CASE WHEN (d_day_name = 'Monday') + THEN sales_price + ELSE NULL END) + mon_sales, + sum(CASE WHEN (d_day_name = 'Tuesday') + THEN sales_price + ELSE NULL END) + tue_sales, + sum(CASE WHEN (d_day_name = 'Wednesday') + THEN sales_price + ELSE NULL END) + wed_sales, + sum(CASE WHEN (d_day_name = 'Thursday') + THEN sales_price + ELSE NULL END) + thu_sales, + sum(CASE WHEN (d_day_name = 'Friday') + THEN sales_price + ELSE NULL END) + fri_sales, + sum(CASE WHEN (d_day_name = 'Saturday') + THEN sales_price + ELSE NULL END) + sat_sales + FROM wscs, date_dim + WHERE d_date_sk = sold_date_sk + GROUP BY d_week_seq) +SELECT + d_week_seq1, + round(sun_sales1 / sun_sales2, 2), + round(mon_sales1 / mon_sales2, 2), + round(tue_sales1 / tue_sales2, 2), + round(wed_sales1 / wed_sales2, 2), + round(thu_sales1 / thu_sales2, 2), + round(fri_sales1 / fri_sales2, 2), + round(sat_sales1 / sat_sales2, 2) +FROM + (SELECT + wswscs.d_week_seq d_week_seq1, + sun_sales sun_sales1, + mon_sales mon_sales1, + tue_sales tue_sales1, + wed_sales wed_sales1, + thu_sales thu_sales1, + fri_sales fri_sales1, + sat_sales sat_sales1 + FROM wswscs, date_dim + WHERE date_dim.d_week_seq = wswscs.d_week_seq AND d_year = 2001) y, + (SELECT + wswscs.d_week_seq d_week_seq2, + sun_sales sun_sales2, + mon_sales mon_sales2, + tue_sales tue_sales2, + wed_sales wed_sales2, + thu_sales thu_sales2, + fri_sales fri_sales2, + sat_sales sat_sales2 + FROM wswscs, date_dim + WHERE date_dim.d_week_seq = wswscs.d_week_seq AND d_year = 2001 + 1) z +WHERE d_week_seq1 = d_week_seq2 - 53 +ORDER BY d_week_seq1 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q20.sql b/dev/auron-it/src/main/resources/tpcds-queries/q20.sql new file mode 100755 index 000000000..7ac6c7a75 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q20.sql @@ -0,0 +1,18 @@ +SELECT + i_item_desc, + i_category, + i_class, + i_current_price, + sum(cs_ext_sales_price) AS itemrevenue, + sum(cs_ext_sales_price) * 100 / sum(sum(cs_ext_sales_price)) + OVER + (PARTITION BY i_class) AS revenueratio +FROM catalog_sales, item, date_dim +WHERE cs_item_sk = i_item_sk + AND i_category IN ('Sports', 'Books', 'Home') + AND cs_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('1999-02-22' AS DATE) +AND (cast('1999-02-22' AS DATE) + INTERVAL 30 days) +GROUP BY i_item_id, i_item_desc, i_category, i_class, i_current_price +ORDER BY i_category, i_class, i_item_id, i_item_desc, revenueratio +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q21.sql b/dev/auron-it/src/main/resources/tpcds-queries/q21.sql new file mode 100755 index 000000000..550881143 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q21.sql @@ -0,0 +1,25 @@ +SELECT * +FROM ( + SELECT + w_warehouse_name, + i_item_id, + sum(CASE WHEN (cast(d_date AS DATE) < cast('2000-03-11' AS DATE)) + THEN inv_quantity_on_hand + ELSE 0 END) AS inv_before, + sum(CASE WHEN (cast(d_date AS DATE) >= cast('2000-03-11' AS DATE)) + THEN inv_quantity_on_hand + ELSE 0 END) AS inv_after + FROM inventory, warehouse, item, date_dim + WHERE i_current_price BETWEEN 0.99 AND 1.49 + AND i_item_sk = inv_item_sk + AND inv_warehouse_sk = w_warehouse_sk + AND inv_date_sk = d_date_sk + AND d_date BETWEEN (cast('2000-03-11' AS DATE) - INTERVAL 30 days) + AND (cast('2000-03-11' AS DATE) + INTERVAL 30 days) + GROUP BY w_warehouse_name, i_item_id) x +WHERE (CASE WHEN inv_before > 0 + THEN inv_after / inv_before + ELSE NULL + END) BETWEEN 2.0 / 3.0 AND 3.0 / 2.0 +ORDER BY w_warehouse_name, i_item_id +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q22.sql b/dev/auron-it/src/main/resources/tpcds-queries/q22.sql new file mode 100755 index 000000000..add3b41f7 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q22.sql @@ -0,0 +1,14 @@ +SELECT + i_product_name, + i_brand, + i_class, + i_category, + avg(inv_quantity_on_hand) qoh +FROM inventory, date_dim, item, warehouse +WHERE inv_date_sk = d_date_sk + AND inv_item_sk = i_item_sk + AND inv_warehouse_sk = w_warehouse_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 +GROUP BY ROLLUP (i_product_name, i_brand, i_class, i_category) +ORDER BY qoh, i_product_name, i_brand, i_class, i_category +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q23a.sql b/dev/auron-it/src/main/resources/tpcds-queries/q23a.sql new file mode 100755 index 000000000..37791f643 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q23a.sql @@ -0,0 +1,53 @@ +WITH frequent_ss_items AS +(SELECT + substr(i_item_desc, 1, 30) itemdesc, + i_item_sk item_sk, + d_date solddate, + count(*) cnt + FROM store_sales, date_dim, item + WHERE ss_sold_date_sk = d_date_sk + AND ss_item_sk = i_item_sk + AND d_year IN (2000, 2000 + 1, 2000 + 2, 2000 + 3) + GROUP BY substr(i_item_desc, 1, 30), i_item_sk, d_date + HAVING count(*) > 4), + max_store_sales AS + (SELECT max(csales) tpcds_cmax + FROM (SELECT + c_customer_sk, + sum(ss_quantity * ss_sales_price) csales + FROM store_sales, customer, date_dim + WHERE ss_customer_sk = c_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year IN (2000, 2000 + 1, 2000 + 2, 2000 + 3) + GROUP BY c_customer_sk) x), + best_ss_customer AS + (SELECT + c_customer_sk, + sum(ss_quantity * ss_sales_price) ssales + FROM store_sales, customer + WHERE ss_customer_sk = c_customer_sk + GROUP BY c_customer_sk + HAVING sum(ss_quantity * ss_sales_price) > (50 / 100.0) * + (SELECT * + FROM max_store_sales)) +SELECT sum(sales) +FROM ((SELECT cs_quantity * cs_list_price sales +FROM catalog_sales, date_dim +WHERE d_year = 2000 + AND d_moy = 2 + AND cs_sold_date_sk = d_date_sk + AND cs_item_sk IN (SELECT item_sk +FROM frequent_ss_items) + AND cs_bill_customer_sk IN (SELECT c_customer_sk +FROM best_ss_customer)) + UNION ALL + (SELECT ws_quantity * ws_list_price sales + FROM web_sales, date_dim + WHERE d_year = 2000 + AND d_moy = 2 + AND ws_sold_date_sk = d_date_sk + AND ws_item_sk IN (SELECT item_sk + FROM frequent_ss_items) + AND ws_bill_customer_sk IN (SELECT c_customer_sk + FROM best_ss_customer))) y +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q23b.sql b/dev/auron-it/src/main/resources/tpcds-queries/q23b.sql new file mode 100755 index 000000000..01150197a --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q23b.sql @@ -0,0 +1,68 @@ +WITH frequent_ss_items AS +(SELECT + substr(i_item_desc, 1, 30) itemdesc, + i_item_sk item_sk, + d_date solddate, + count(*) cnt + FROM store_sales, date_dim, item + WHERE ss_sold_date_sk = d_date_sk + AND ss_item_sk = i_item_sk + AND d_year IN (2000, 2000 + 1, 2000 + 2, 2000 + 3) + GROUP BY substr(i_item_desc, 1, 30), i_item_sk, d_date + HAVING count(*) > 4), + max_store_sales AS + (SELECT max(csales) tpcds_cmax + FROM (SELECT + c_customer_sk, + sum(ss_quantity * ss_sales_price) csales + FROM store_sales, customer, date_dim + WHERE ss_customer_sk = c_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year IN (2000, 2000 + 1, 2000 + 2, 2000 + 3) + GROUP BY c_customer_sk) x), + best_ss_customer AS + (SELECT + c_customer_sk, + sum(ss_quantity * ss_sales_price) ssales + FROM store_sales + , customer + WHERE ss_customer_sk = c_customer_sk + GROUP BY c_customer_sk + HAVING sum(ss_quantity * ss_sales_price) > (50 / 100.0) * + (SELECT * + FROM max_store_sales)) +SELECT + c_last_name, + c_first_name, + sales +FROM ((SELECT + c_last_name, + c_first_name, + sum(cs_quantity * cs_list_price) sales +FROM catalog_sales, customer, date_dim +WHERE d_year = 2000 + AND d_moy = 2 + AND cs_sold_date_sk = d_date_sk + AND cs_item_sk IN (SELECT item_sk +FROM frequent_ss_items) + AND cs_bill_customer_sk IN (SELECT c_customer_sk +FROM best_ss_customer) + AND cs_bill_customer_sk = c_customer_sk +GROUP BY c_last_name, c_first_name) + UNION ALL + (SELECT + c_last_name, + c_first_name, + sum(ws_quantity * ws_list_price) sales + FROM web_sales, customer, date_dim + WHERE d_year = 2000 + AND d_moy = 2 + AND ws_sold_date_sk = d_date_sk + AND ws_item_sk IN (SELECT item_sk + FROM frequent_ss_items) + AND ws_bill_customer_sk IN (SELECT c_customer_sk + FROM best_ss_customer) + AND ws_bill_customer_sk = c_customer_sk + GROUP BY c_last_name, c_first_name)) y +ORDER BY c_last_name, c_first_name, sales +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q24a.sql b/dev/auron-it/src/main/resources/tpcds-queries/q24a.sql new file mode 100755 index 000000000..eba59755e --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q24a.sql @@ -0,0 +1,37 @@ +WITH ssales AS +(SELECT + c_last_name, + c_first_name, + s_store_name, + ca_state, + s_state, + i_color, + i_current_price, + i_manager_id, + i_units, + i_size, + sum(ss_net_paid) netpaid + FROM store_sales, store_returns, store, item, customer, customer_address + WHERE ss_ticket_number = sr_ticket_number + AND ss_item_sk = sr_item_sk + AND ss_customer_sk = c_customer_sk + AND ss_item_sk = i_item_sk + AND ss_store_sk = s_store_sk + AND c_birth_country = upper(ca_country) + AND s_zip = ca_zip + AND s_market_id = 8 + GROUP BY c_last_name, c_first_name, s_store_name, ca_state, s_state, i_color, + i_current_price, i_manager_id, i_units, i_size) +SELECT + c_last_name, + c_first_name, + s_store_name, + sum(netpaid) paid +FROM ssales +WHERE i_color = 'pale' +GROUP BY c_last_name, c_first_name, s_store_name +HAVING sum(netpaid) > (SELECT 0.05 * avg(netpaid) +FROM ssales) +order by c_last_name + ,c_first_name + ,s_store_name diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q24b.sql b/dev/auron-it/src/main/resources/tpcds-queries/q24b.sql new file mode 100755 index 000000000..08fb3baf7 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q24b.sql @@ -0,0 +1,37 @@ +WITH ssales AS +(SELECT + c_last_name, + c_first_name, + s_store_name, + ca_state, + s_state, + i_color, + i_current_price, + i_manager_id, + i_units, + i_size, + sum(ss_net_paid) netpaid + FROM store_sales, store_returns, store, item, customer, customer_address + WHERE ss_ticket_number = sr_ticket_number + AND ss_item_sk = sr_item_sk + AND ss_customer_sk = c_customer_sk + AND ss_item_sk = i_item_sk + AND ss_store_sk = s_store_sk + AND c_birth_country = upper(ca_country) + AND s_zip = ca_zip + AND s_market_id = 8 + GROUP BY c_last_name, c_first_name, s_store_name, ca_state, s_state, + i_color, i_current_price, i_manager_id, i_units, i_size) +SELECT + c_last_name, + c_first_name, + s_store_name, + sum(netpaid) paid +FROM ssales +WHERE i_color = 'chiffon' +GROUP BY c_last_name, c_first_name, s_store_name +HAVING sum(netpaid) > (SELECT 0.05 * avg(netpaid) +FROM ssales) +order by c_last_name + ,c_first_name + ,s_store_name \ No newline at end of file diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q25.sql b/dev/auron-it/src/main/resources/tpcds-queries/q25.sql new file mode 100755 index 000000000..a4d78a3c5 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q25.sql @@ -0,0 +1,33 @@ +SELECT + i_item_id, + i_item_desc, + s_store_id, + s_store_name, + sum(ss_net_profit) AS store_sales_profit, + sum(sr_net_loss) AS store_returns_loss, + sum(cs_net_profit) AS catalog_sales_profit +FROM + store_sales, store_returns, catalog_sales, date_dim d1, date_dim d2, date_dim d3, + store, item +WHERE + d1.d_moy = 4 + AND d1.d_year = 2001 + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND ss_customer_sk = sr_customer_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND sr_returned_date_sk = d2.d_date_sk + AND d2.d_moy BETWEEN 4 AND 10 + AND d2.d_year = 2001 + AND sr_customer_sk = cs_bill_customer_sk + AND sr_item_sk = cs_item_sk + AND cs_sold_date_sk = d3.d_date_sk + AND d3.d_moy BETWEEN 4 AND 10 + AND d3.d_year = 2001 +GROUP BY + i_item_id, i_item_desc, s_store_id, s_store_name +ORDER BY + i_item_id, i_item_desc, s_store_id, s_store_name +LIMIT 100 \ No newline at end of file diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q26.sql b/dev/auron-it/src/main/resources/tpcds-queries/q26.sql new file mode 100755 index 000000000..6d395a1d7 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q26.sql @@ -0,0 +1,19 @@ +SELECT + i_item_id, + avg(cs_quantity) agg1, + avg(cs_list_price) agg2, + avg(cs_coupon_amt) agg3, + avg(cs_sales_price) agg4 +FROM catalog_sales, customer_demographics, date_dim, item, promotion +WHERE cs_sold_date_sk = d_date_sk AND + cs_item_sk = i_item_sk AND + cs_bill_cdemo_sk = cd_demo_sk AND + cs_promo_sk = p_promo_sk AND + cd_gender = 'M' AND + cd_marital_status = 'S' AND + cd_education_status = 'College' AND + (p_channel_email = 'N' OR p_channel_event = 'N') AND + d_year = 2000 +GROUP BY i_item_id +ORDER BY i_item_id +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q27.sql b/dev/auron-it/src/main/resources/tpcds-queries/q27.sql new file mode 100755 index 000000000..b0e2fd95f --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q27.sql @@ -0,0 +1,21 @@ +SELECT + i_item_id, + s_state, + grouping(s_state) g_state, + avg(ss_quantity) agg1, + avg(ss_list_price) agg2, + avg(ss_coupon_amt) agg3, + avg(ss_sales_price) agg4 +FROM store_sales, customer_demographics, date_dim, store, item +WHERE ss_sold_date_sk = d_date_sk AND + ss_item_sk = i_item_sk AND + ss_store_sk = s_store_sk AND + ss_cdemo_sk = cd_demo_sk AND + cd_gender = 'M' AND + cd_marital_status = 'S' AND + cd_education_status = 'College' AND + d_year = 2002 AND + s_state IN ('TN', 'TN', 'TN', 'TN', 'TN', 'TN') +GROUP BY ROLLUP (i_item_id, s_state) +ORDER BY i_item_id, s_state +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q28.sql b/dev/auron-it/src/main/resources/tpcds-queries/q28.sql new file mode 100755 index 000000000..f34c2bb0e --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q28.sql @@ -0,0 +1,56 @@ +SELECT * +FROM (SELECT + avg(ss_list_price) B1_LP, + count(ss_list_price) B1_CNT, + count(DISTINCT ss_list_price) B1_CNTD +FROM store_sales +WHERE ss_quantity BETWEEN 0 AND 5 + AND (ss_list_price BETWEEN 8 AND 8 + 10 + OR ss_coupon_amt BETWEEN 459 AND 459 + 1000 + OR ss_wholesale_cost BETWEEN 57 AND 57 + 20)) B1, + (SELECT + avg(ss_list_price) B2_LP, + count(ss_list_price) B2_CNT, + count(DISTINCT ss_list_price) B2_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 6 AND 10 + AND (ss_list_price BETWEEN 90 AND 90 + 10 + OR ss_coupon_amt BETWEEN 2323 AND 2323 + 1000 + OR ss_wholesale_cost BETWEEN 31 AND 31 + 20)) B2, + (SELECT + avg(ss_list_price) B3_LP, + count(ss_list_price) B3_CNT, + count(DISTINCT ss_list_price) B3_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 11 AND 15 + AND (ss_list_price BETWEEN 142 AND 142 + 10 + OR ss_coupon_amt BETWEEN 12214 AND 12214 + 1000 + OR ss_wholesale_cost BETWEEN 79 AND 79 + 20)) B3, + (SELECT + avg(ss_list_price) B4_LP, + count(ss_list_price) B4_CNT, + count(DISTINCT ss_list_price) B4_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 16 AND 20 + AND (ss_list_price BETWEEN 135 AND 135 + 10 + OR ss_coupon_amt BETWEEN 6071 AND 6071 + 1000 + OR ss_wholesale_cost BETWEEN 38 AND 38 + 20)) B4, + (SELECT + avg(ss_list_price) B5_LP, + count(ss_list_price) B5_CNT, + count(DISTINCT ss_list_price) B5_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 21 AND 25 + AND (ss_list_price BETWEEN 122 AND 122 + 10 + OR ss_coupon_amt BETWEEN 836 AND 836 + 1000 + OR ss_wholesale_cost BETWEEN 17 AND 17 + 20)) B5, + (SELECT + avg(ss_list_price) B6_LP, + count(ss_list_price) B6_CNT, + count(DISTINCT ss_list_price) B6_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 26 AND 30 + AND (ss_list_price BETWEEN 154 AND 154 + 10 + OR ss_coupon_amt BETWEEN 7326 AND 7326 + 1000 + OR ss_wholesale_cost BETWEEN 7 AND 7 + 20)) B6 +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q29.sql b/dev/auron-it/src/main/resources/tpcds-queries/q29.sql new file mode 100755 index 000000000..3f1fd553f --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q29.sql @@ -0,0 +1,32 @@ +SELECT + i_item_id, + i_item_desc, + s_store_id, + s_store_name, + sum(ss_quantity) AS store_sales_quantity, + sum(sr_return_quantity) AS store_returns_quantity, + sum(cs_quantity) AS catalog_sales_quantity +FROM + store_sales, store_returns, catalog_sales, date_dim d1, date_dim d2, + date_dim d3, store, item +WHERE + d1.d_moy = 9 + AND d1.d_year = 1999 + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND ss_customer_sk = sr_customer_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND sr_returned_date_sk = d2.d_date_sk + AND d2.d_moy BETWEEN 9 AND 9 + 3 + AND d2.d_year = 1999 + AND sr_customer_sk = cs_bill_customer_sk + AND sr_item_sk = cs_item_sk + AND cs_sold_date_sk = d3.d_date_sk + AND d3.d_year IN (1999, 1999 + 1, 1999 + 2) +GROUP BY + i_item_id, i_item_desc, s_store_id, s_store_name +ORDER BY + i_item_id, i_item_desc, s_store_id, s_store_name +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q3.sql b/dev/auron-it/src/main/resources/tpcds-queries/q3.sql new file mode 100755 index 000000000..181509df9 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q3.sql @@ -0,0 +1,13 @@ +SELECT + dt.d_year, + item.i_brand_id brand_id, + item.i_brand brand, + SUM(ss_ext_sales_price) sum_agg +FROM date_dim dt, store_sales, item +WHERE dt.d_date_sk = store_sales.ss_sold_date_sk + AND store_sales.ss_item_sk = item.i_item_sk + AND item.i_manufact_id = 128 + AND dt.d_moy = 11 +GROUP BY dt.d_year, item.i_brand, item.i_brand_id +ORDER BY dt.d_year, sum_agg DESC, brand_id +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q30.sql b/dev/auron-it/src/main/resources/tpcds-queries/q30.sql new file mode 100755 index 000000000..a81205d63 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q30.sql @@ -0,0 +1,35 @@ +WITH customer_total_return AS +(SELECT + wr_returning_customer_sk AS ctr_customer_sk, + ca_state AS ctr_state, + sum(wr_return_amt) AS ctr_total_return + FROM web_returns, date_dim, customer_address + WHERE wr_returned_date_sk = d_date_sk + AND d_year = 2002 + AND wr_returning_addr_sk = ca_address_sk + GROUP BY wr_returning_customer_sk, ca_state) +SELECT + c_customer_id, + c_salutation, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_day, + c_birth_month, + c_birth_year, + c_birth_country, + c_login, + c_email_address, + c_last_review_date_sk, + ctr_total_return +FROM customer_total_return ctr1, customer_address, customer +WHERE ctr1.ctr_total_return > (SELECT avg(ctr_total_return) * 1.2 +FROM customer_total_return ctr2 +WHERE ctr1.ctr_state = ctr2.ctr_state) + AND ca_address_sk = c_current_addr_sk + AND ca_state = 'GA' + AND ctr1.ctr_customer_sk = c_customer_sk +ORDER BY c_customer_id, c_salutation, c_first_name, c_last_name, c_preferred_cust_flag + , c_birth_day, c_birth_month, c_birth_year, c_birth_country, c_login, c_email_address + , c_last_review_date_sk, ctr_total_return +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q31.sql b/dev/auron-it/src/main/resources/tpcds-queries/q31.sql new file mode 100755 index 000000000..3e543d543 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q31.sql @@ -0,0 +1,60 @@ +WITH ss AS +(SELECT + ca_county, + d_qoy, + d_year, + sum(ss_ext_sales_price) AS store_sales + FROM store_sales, date_dim, customer_address + WHERE ss_sold_date_sk = d_date_sk + AND ss_addr_sk = ca_address_sk + GROUP BY ca_county, d_qoy, d_year), + ws AS + (SELECT + ca_county, + d_qoy, + d_year, + sum(ws_ext_sales_price) AS web_sales + FROM web_sales, date_dim, customer_address + WHERE ws_sold_date_sk = d_date_sk + AND ws_bill_addr_sk = ca_address_sk + GROUP BY ca_county, d_qoy, d_year) +SELECT + ss1.ca_county, + ss1.d_year, + ws2.web_sales / ws1.web_sales web_q1_q2_increase, + ss2.store_sales / ss1.store_sales store_q1_q2_increase, + ws3.web_sales / ws2.web_sales web_q2_q3_increase, + ss3.store_sales / ss2.store_sales store_q2_q3_increase +FROM + ss ss1, ss ss2, ss ss3, ws ws1, ws ws2, ws ws3 +WHERE + ss1.d_qoy = 1 + AND ss1.d_year = 2000 + AND ss1.ca_county = ss2.ca_county + AND ss2.d_qoy = 2 + AND ss2.d_year = 2000 + AND ss2.ca_county = ss3.ca_county + AND ss3.d_qoy = 3 + AND ss3.d_year = 2000 + AND ss1.ca_county = ws1.ca_county + AND ws1.d_qoy = 1 + AND ws1.d_year = 2000 + AND ws1.ca_county = ws2.ca_county + AND ws2.d_qoy = 2 + AND ws2.d_year = 2000 + AND ws1.ca_county = ws3.ca_county + AND ws3.d_qoy = 3 + AND ws3.d_year = 2000 + AND CASE WHEN ws1.web_sales > 0 + THEN ws2.web_sales / ws1.web_sales + ELSE NULL END + > CASE WHEN ss1.store_sales > 0 + THEN ss2.store_sales / ss1.store_sales + ELSE NULL END + AND CASE WHEN ws2.web_sales > 0 + THEN ws3.web_sales / ws2.web_sales + ELSE NULL END + > CASE WHEN ss2.store_sales > 0 + THEN ss3.store_sales / ss2.store_sales + ELSE NULL END +ORDER BY ss1.ca_county diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q32.sql b/dev/auron-it/src/main/resources/tpcds-queries/q32.sql new file mode 100755 index 000000000..d4302145f --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q32.sql @@ -0,0 +1,25 @@ +select sum(cs_ext_discount_amt) as `excess discount amount` +from + catalog_sales + ,item + ,date_dim +where + i_manufact_id = 269 + and i_item_sk = cs_item_sk + and d_date between '1998-03-18' and + (cast('1998-03-18' as date) + interval '90' day) + and d_date_sk = cs_sold_date_sk + and cs_ext_discount_amt + > ( + select + 1.3 * avg(cs_ext_discount_amt) + from + catalog_sales + ,date_dim + where + cs_item_sk = i_item_sk + and d_date between '1998-03-18' and + (cast('1998-03-18' as date) + interval '90' day) + and d_date_sk = cs_sold_date_sk + ) +LIMIT 100 ; \ No newline at end of file diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q33.sql b/dev/auron-it/src/main/resources/tpcds-queries/q33.sql new file mode 100755 index 000000000..d24856aa5 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q33.sql @@ -0,0 +1,65 @@ +WITH ss AS ( + SELECT + i_manufact_id, + sum(ss_ext_sales_price) total_sales + FROM + store_sales, date_dim, customer_address, item + WHERE + i_manufact_id IN (SELECT i_manufact_id + FROM item + WHERE i_category IN ('Electronics')) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 5 + AND ss_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_manufact_id), cs AS +(SELECT + i_manufact_id, + sum(cs_ext_sales_price) total_sales + FROM catalog_sales, date_dim, customer_address, item + WHERE + i_manufact_id IN ( + SELECT i_manufact_id + FROM item + WHERE + i_category IN ('Electronics')) + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 5 + AND cs_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_manufact_id), + ws AS ( + SELECT + i_manufact_id, + sum(ws_ext_sales_price) total_sales + FROM + web_sales, date_dim, customer_address, item + WHERE + i_manufact_id IN (SELECT i_manufact_id + FROM item + WHERE i_category IN ('Electronics')) + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 5 + AND ws_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_manufact_id) +SELECT + i_manufact_id, + sum(total_sales) total_sales +FROM (SELECT * + FROM ss + UNION ALL + SELECT * + FROM cs + UNION ALL + SELECT * + FROM ws) tmp1 +GROUP BY i_manufact_id +ORDER BY total_sales +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q34.sql b/dev/auron-it/src/main/resources/tpcds-queries/q34.sql new file mode 100755 index 000000000..6a437eff8 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q34.sql @@ -0,0 +1,32 @@ +SELECT + c_last_name, + c_first_name, + c_salutation, + c_preferred_cust_flag, + ss_ticket_number, + cnt +FROM + (SELECT + ss_ticket_number, + ss_customer_sk, + count(*) cnt + FROM store_sales, date_dim, store, household_demographics + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND (date_dim.d_dom BETWEEN 1 AND 3 OR date_dim.d_dom BETWEEN 25 AND 28) + AND (household_demographics.hd_buy_potential = '>10000' OR + household_demographics.hd_buy_potential = 'unknown') + AND household_demographics.hd_vehicle_count > 0 + AND (CASE WHEN household_demographics.hd_vehicle_count > 0 + THEN household_demographics.hd_dep_count / household_demographics.hd_vehicle_count + ELSE NULL + END) > 1.2 + AND date_dim.d_year IN (1999, 1999 + 1, 1999 + 2) + AND store.s_county IN + ('Williamson County', 'Williamson County', 'Williamson County', 'Williamson County', + 'Williamson County', 'Williamson County', 'Williamson County', 'Williamson County') + GROUP BY ss_ticket_number, ss_customer_sk) dn, customer +WHERE ss_customer_sk = c_customer_sk + AND cnt BETWEEN 15 AND 20 +ORDER BY c_last_name, c_first_name, c_salutation, c_preferred_cust_flag, ss_ticket_number DESC diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q35.sql b/dev/auron-it/src/main/resources/tpcds-queries/q35.sql new file mode 100755 index 000000000..cfe4342d8 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q35.sql @@ -0,0 +1,46 @@ +SELECT + ca_state, + cd_gender, + cd_marital_status, + count(*) cnt1, + min(cd_dep_count), + max(cd_dep_count), + avg(cd_dep_count), + cd_dep_employed_count, + count(*) cnt2, + min(cd_dep_employed_count), + max(cd_dep_employed_count), + avg(cd_dep_employed_count), + cd_dep_college_count, + count(*) cnt3, + min(cd_dep_college_count), + max(cd_dep_college_count), + avg(cd_dep_college_count) +FROM + customer c, customer_address ca, customer_demographics +WHERE + c.c_current_addr_sk = ca.ca_address_sk AND + cd_demo_sk = c.c_current_cdemo_sk AND + exists(SELECT * + FROM store_sales, date_dim + WHERE c.c_customer_sk = ss_customer_sk AND + ss_sold_date_sk = d_date_sk AND + d_year = 2002 AND + d_qoy < 4) AND + (exists(SELECT * + FROM web_sales, date_dim + WHERE c.c_customer_sk = ws_bill_customer_sk AND + ws_sold_date_sk = d_date_sk AND + d_year = 2002 AND + d_qoy < 4) OR + exists(SELECT * + FROM catalog_sales, date_dim + WHERE c.c_customer_sk = cs_ship_customer_sk AND + cs_sold_date_sk = d_date_sk AND + d_year = 2002 AND + d_qoy < 4)) +GROUP BY ca_state, cd_gender, cd_marital_status, cd_dep_count, + cd_dep_employed_count, cd_dep_college_count +ORDER BY ca_state, cd_gender, cd_marital_status, cd_dep_count, + cd_dep_employed_count, cd_dep_college_count +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q36.sql b/dev/auron-it/src/main/resources/tpcds-queries/q36.sql new file mode 100755 index 000000000..a8f93df76 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q36.sql @@ -0,0 +1,26 @@ +SELECT + sum(ss_net_profit) / sum(ss_ext_sales_price) AS gross_margin, + i_category, + i_class, + grouping(i_category) + grouping(i_class) AS lochierarchy, + rank() + OVER ( + PARTITION BY grouping(i_category) + grouping(i_class), + CASE WHEN grouping(i_class) = 0 + THEN i_category END + ORDER BY sum(ss_net_profit) / sum(ss_ext_sales_price) ASC) AS rank_within_parent +FROM + store_sales, date_dim d1, item, store +WHERE + d1.d_year = 2001 + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND s_state IN ('TN', 'TN', 'TN', 'TN', 'TN', 'TN', 'TN', 'TN') +GROUP BY ROLLUP (i_category, i_class) +ORDER BY + lochierarchy DESC + , CASE WHEN lochierarchy = 0 + THEN i_category END + , rank_within_parent +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q37.sql b/dev/auron-it/src/main/resources/tpcds-queries/q37.sql new file mode 100755 index 000000000..11b3821fa --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q37.sql @@ -0,0 +1,15 @@ +SELECT + i_item_id, + i_item_desc, + i_current_price +FROM item, inventory, date_dim, catalog_sales +WHERE i_current_price BETWEEN 68 AND 68 + 30 + AND inv_item_sk = i_item_sk + AND d_date_sk = inv_date_sk + AND d_date BETWEEN cast('2000-02-01' AS DATE) AND (cast('2000-02-01' AS DATE) + INTERVAL 60 days) + AND i_manufact_id IN (677, 940, 694, 808) + AND inv_quantity_on_hand BETWEEN 100 AND 500 + AND cs_item_sk = i_item_sk +GROUP BY i_item_id, i_item_desc, i_current_price +ORDER BY i_item_id +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q38.sql b/dev/auron-it/src/main/resources/tpcds-queries/q38.sql new file mode 100755 index 000000000..1c8d53ee2 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q38.sql @@ -0,0 +1,30 @@ +SELECT count(*) +FROM ( + SELECT DISTINCT + c_last_name, + c_first_name, + d_date + FROM store_sales, date_dim, customer + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 + INTERSECT + SELECT DISTINCT + c_last_name, + c_first_name, + d_date + FROM catalog_sales, date_dim, customer + WHERE catalog_sales.cs_sold_date_sk = date_dim.d_date_sk + AND catalog_sales.cs_bill_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 + INTERSECT + SELECT DISTINCT + c_last_name, + c_first_name, + d_date + FROM web_sales, date_dim, customer + WHERE web_sales.ws_sold_date_sk = date_dim.d_date_sk + AND web_sales.ws_bill_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 + ) hot_cust +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q39a.sql b/dev/auron-it/src/main/resources/tpcds-queries/q39a.sql new file mode 100755 index 000000000..9fc4c1701 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q39a.sql @@ -0,0 +1,47 @@ +WITH inv AS +(SELECT + w_warehouse_name, + w_warehouse_sk, + i_item_sk, + d_moy, + stdev, + mean, + CASE mean + WHEN 0 + THEN NULL + ELSE stdev / mean END cov + FROM (SELECT + w_warehouse_name, + w_warehouse_sk, + i_item_sk, + d_moy, + stddev_samp(inv_quantity_on_hand) stdev, + avg(inv_quantity_on_hand) mean + FROM inventory, item, warehouse, date_dim + WHERE inv_item_sk = i_item_sk + AND inv_warehouse_sk = w_warehouse_sk + AND inv_date_sk = d_date_sk + AND d_year = 2001 + GROUP BY w_warehouse_name, w_warehouse_sk, i_item_sk, d_moy) foo + WHERE CASE mean + WHEN 0 + THEN 0 + ELSE stdev / mean END > 1) +SELECT + inv1.w_warehouse_sk, + inv1.i_item_sk, + inv1.d_moy, + inv1.mean, + inv1.cov, + inv2.w_warehouse_sk, + inv2.i_item_sk, + inv2.d_moy, + inv2.mean, + inv2.cov +FROM inv inv1, inv inv2 +WHERE inv1.i_item_sk = inv2.i_item_sk + AND inv1.w_warehouse_sk = inv2.w_warehouse_sk + AND inv1.d_moy = 1 + AND inv2.d_moy = 1 + 1 +ORDER BY inv1.w_warehouse_sk, inv1.i_item_sk, inv1.d_moy, inv1.mean, inv1.cov + , inv2.d_moy, inv2.mean, inv2.cov diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q39b.sql b/dev/auron-it/src/main/resources/tpcds-queries/q39b.sql new file mode 100755 index 000000000..6f8493029 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q39b.sql @@ -0,0 +1,48 @@ +WITH inv AS +(SELECT + w_warehouse_name, + w_warehouse_sk, + i_item_sk, + d_moy, + stdev, + mean, + CASE mean + WHEN 0 + THEN NULL + ELSE stdev / mean END cov + FROM (SELECT + w_warehouse_name, + w_warehouse_sk, + i_item_sk, + d_moy, + stddev_samp(inv_quantity_on_hand) stdev, + avg(inv_quantity_on_hand) mean + FROM inventory, item, warehouse, date_dim + WHERE inv_item_sk = i_item_sk + AND inv_warehouse_sk = w_warehouse_sk + AND inv_date_sk = d_date_sk + AND d_year = 2001 + GROUP BY w_warehouse_name, w_warehouse_sk, i_item_sk, d_moy) foo + WHERE CASE mean + WHEN 0 + THEN 0 + ELSE stdev / mean END > 1) +SELECT + inv1.w_warehouse_sk, + inv1.i_item_sk, + inv1.d_moy, + inv1.mean, + inv1.cov, + inv2.w_warehouse_sk, + inv2.i_item_sk, + inv2.d_moy, + inv2.mean, + inv2.cov +FROM inv inv1, inv inv2 +WHERE inv1.i_item_sk = inv2.i_item_sk + AND inv1.w_warehouse_sk = inv2.w_warehouse_sk + AND inv1.d_moy = 1 + AND inv2.d_moy = 1 + 1 + AND inv1.cov > 1.5 +ORDER BY inv1.w_warehouse_sk, inv1.i_item_sk, inv1.d_moy, inv1.mean, inv1.cov + , inv2.d_moy, inv2.mean, inv2.cov diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q4.sql b/dev/auron-it/src/main/resources/tpcds-queries/q4.sql new file mode 100755 index 000000000..b9f27fbc9 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q4.sql @@ -0,0 +1,120 @@ +WITH year_total AS ( + SELECT + c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag, + c_birth_country customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + sum(((ss_ext_list_price - ss_ext_wholesale_cost - ss_ext_discount_amt) + + ss_ext_sales_price) / 2) year_total, + 's' sale_type + FROM customer, store_sales, date_dim + WHERE c_customer_sk = ss_customer_sk AND ss_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year + UNION ALL + SELECT + c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag, + c_birth_country customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + sum((((cs_ext_list_price - cs_ext_wholesale_cost - cs_ext_discount_amt) + + cs_ext_sales_price) / 2)) year_total, + 'c' sale_type + FROM customer, catalog_sales, date_dim + WHERE c_customer_sk = cs_bill_customer_sk AND cs_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year + UNION ALL + SELECT + c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag, + c_birth_country customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + sum((((ws_ext_list_price - ws_ext_wholesale_cost - ws_ext_discount_amt) + ws_ext_sales_price) / + 2)) year_total, + 'w' sale_type + FROM customer, web_sales, date_dim + WHERE c_customer_sk = ws_bill_customer_sk AND ws_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year) +SELECT + t_s_secyear.customer_id, + t_s_secyear.customer_first_name, + t_s_secyear.customer_last_name, + t_s_secyear.customer_preferred_cust_flag, + t_s_secyear.customer_birth_country, + t_s_secyear.customer_login, + t_s_secyear.customer_email_address +FROM year_total t_s_firstyear, year_total t_s_secyear, year_total t_c_firstyear, + year_total t_c_secyear, year_total t_w_firstyear, year_total t_w_secyear +WHERE t_s_secyear.customer_id = t_s_firstyear.customer_id + AND t_s_firstyear.customer_id = t_c_secyear.customer_id + AND t_s_firstyear.customer_id = t_c_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_secyear.customer_id + AND t_s_firstyear.sale_type = 's' + AND t_c_firstyear.sale_type = 'c' + AND t_w_firstyear.sale_type = 'w' + AND t_s_secyear.sale_type = 's' + AND t_c_secyear.sale_type = 'c' + AND t_w_secyear.sale_type = 'w' + AND t_s_firstyear.dyear = 2001 + AND t_s_secyear.dyear = 2001 + 1 + AND t_c_firstyear.dyear = 2001 + AND t_c_secyear.dyear = 2001 + 1 + AND t_w_firstyear.dyear = 2001 + AND t_w_secyear.dyear = 2001 + 1 + AND t_s_firstyear.year_total > 0 + AND t_c_firstyear.year_total > 0 + AND t_w_firstyear.year_total > 0 + AND CASE WHEN t_c_firstyear.year_total > 0 + THEN t_c_secyear.year_total / t_c_firstyear.year_total + ELSE NULL END + > CASE WHEN t_s_firstyear.year_total > 0 + THEN t_s_secyear.year_total / t_s_firstyear.year_total + ELSE NULL END + AND CASE WHEN t_c_firstyear.year_total > 0 + THEN t_c_secyear.year_total / t_c_firstyear.year_total + ELSE NULL END + > CASE WHEN t_w_firstyear.year_total > 0 + THEN t_w_secyear.year_total / t_w_firstyear.year_total + ELSE NULL END +ORDER BY + t_s_secyear.customer_id, + t_s_secyear.customer_first_name, + t_s_secyear.customer_last_name, + t_s_secyear.customer_preferred_cust_flag, + t_s_secyear.customer_birth_country, + t_s_secyear.customer_login, + t_s_secyear.customer_email_address +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q40.sql b/dev/auron-it/src/main/resources/tpcds-queries/q40.sql new file mode 100755 index 000000000..66d8b73ac --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q40.sql @@ -0,0 +1,25 @@ +SELECT + w_state, + i_item_id, + sum(CASE WHEN (cast(d_date AS DATE) < cast('2000-03-11' AS DATE)) + THEN cs_sales_price - coalesce(cr_refunded_cash, 0) + ELSE 0 END) AS sales_before, + sum(CASE WHEN (cast(d_date AS DATE) >= cast('2000-03-11' AS DATE)) + THEN cs_sales_price - coalesce(cr_refunded_cash, 0) + ELSE 0 END) AS sales_after +FROM + catalog_sales + LEFT OUTER JOIN catalog_returns ON + (cs_order_number = cr_order_number + AND cs_item_sk = cr_item_sk) + , warehouse, item, date_dim +WHERE + i_current_price BETWEEN 0.99 AND 1.49 + AND i_item_sk = cs_item_sk + AND cs_warehouse_sk = w_warehouse_sk + AND cs_sold_date_sk = d_date_sk + AND d_date BETWEEN (cast('2000-03-11' AS DATE) - INTERVAL 30 days) + AND (cast('2000-03-11' AS DATE) + INTERVAL 30 days) +GROUP BY w_state, i_item_id +ORDER BY w_state, i_item_id +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q41.sql b/dev/auron-it/src/main/resources/tpcds-queries/q41.sql new file mode 100755 index 000000000..25e317e0e --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q41.sql @@ -0,0 +1,49 @@ +SELECT DISTINCT (i_product_name) +FROM item i1 +WHERE i_manufact_id BETWEEN 738 AND 738 + 40 + AND (SELECT count(*) AS item_cnt +FROM item +WHERE (i_manufact = i1.i_manufact AND + ((i_category = 'Women' AND + (i_color = 'powder' OR i_color = 'khaki') AND + (i_units = 'Ounce' OR i_units = 'Oz') AND + (i_size = 'medium' OR i_size = 'extra large') + ) OR + (i_category = 'Women' AND + (i_color = 'brown' OR i_color = 'honeydew') AND + (i_units = 'Bunch' OR i_units = 'Ton') AND + (i_size = 'N/A' OR i_size = 'small') + ) OR + (i_category = 'Men' AND + (i_color = 'floral' OR i_color = 'deep') AND + (i_units = 'N/A' OR i_units = 'Dozen') AND + (i_size = 'petite' OR i_size = 'large') + ) OR + (i_category = 'Men' AND + (i_color = 'light' OR i_color = 'cornflower') AND + (i_units = 'Box' OR i_units = 'Pound') AND + (i_size = 'medium' OR i_size = 'extra large') + ))) OR + (i_manufact = i1.i_manufact AND + ((i_category = 'Women' AND + (i_color = 'midnight' OR i_color = 'snow') AND + (i_units = 'Pallet' OR i_units = 'Gross') AND + (i_size = 'medium' OR i_size = 'extra large') + ) OR + (i_category = 'Women' AND + (i_color = 'cyan' OR i_color = 'papaya') AND + (i_units = 'Cup' OR i_units = 'Dram') AND + (i_size = 'N/A' OR i_size = 'small') + ) OR + (i_category = 'Men' AND + (i_color = 'orange' OR i_color = 'frosted') AND + (i_units = 'Each' OR i_units = 'Tbl') AND + (i_size = 'petite' OR i_size = 'large') + ) OR + (i_category = 'Men' AND + (i_color = 'forest' OR i_color = 'ghost') AND + (i_units = 'Lb' OR i_units = 'Bundle') AND + (i_size = 'medium' OR i_size = 'extra large') + )))) > 0 +ORDER BY i_product_name +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q42.sql b/dev/auron-it/src/main/resources/tpcds-queries/q42.sql new file mode 100755 index 000000000..4d2e71760 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q42.sql @@ -0,0 +1,18 @@ +SELECT + dt.d_year, + item.i_category_id, + item.i_category, + sum(ss_ext_sales_price) +FROM date_dim dt, store_sales, item +WHERE dt.d_date_sk = store_sales.ss_sold_date_sk + AND store_sales.ss_item_sk = item.i_item_sk + AND item.i_manager_id = 1 + AND dt.d_moy = 11 + AND dt.d_year = 2000 +GROUP BY dt.d_year + , item.i_category_id + , item.i_category +ORDER BY sum(ss_ext_sales_price) DESC, dt.d_year + , item.i_category_id + , item.i_category +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q43.sql b/dev/auron-it/src/main/resources/tpcds-queries/q43.sql new file mode 100755 index 000000000..45411772c --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q43.sql @@ -0,0 +1,33 @@ +SELECT + s_store_name, + s_store_id, + sum(CASE WHEN (d_day_name = 'Sunday') + THEN ss_sales_price + ELSE NULL END) sun_sales, + sum(CASE WHEN (d_day_name = 'Monday') + THEN ss_sales_price + ELSE NULL END) mon_sales, + sum(CASE WHEN (d_day_name = 'Tuesday') + THEN ss_sales_price + ELSE NULL END) tue_sales, + sum(CASE WHEN (d_day_name = 'Wednesday') + THEN ss_sales_price + ELSE NULL END) wed_sales, + sum(CASE WHEN (d_day_name = 'Thursday') + THEN ss_sales_price + ELSE NULL END) thu_sales, + sum(CASE WHEN (d_day_name = 'Friday') + THEN ss_sales_price + ELSE NULL END) fri_sales, + sum(CASE WHEN (d_day_name = 'Saturday') + THEN ss_sales_price + ELSE NULL END) sat_sales +FROM date_dim, store_sales, store +WHERE d_date_sk = ss_sold_date_sk AND + s_store_sk = ss_store_sk AND + s_gmt_offset = -5 AND + d_year = 2000 +GROUP BY s_store_name, s_store_id +ORDER BY s_store_name, s_store_id, sun_sales, mon_sales, tue_sales, wed_sales, + thu_sales, fri_sales, sat_sales +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q44.sql b/dev/auron-it/src/main/resources/tpcds-queries/q44.sql new file mode 100755 index 000000000..379e60478 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q44.sql @@ -0,0 +1,46 @@ +SELECT + asceding.rnk, + i1.i_product_name best_performing, + i2.i_product_name worst_performing +FROM (SELECT * +FROM (SELECT + item_sk, + rank() + OVER ( + ORDER BY rank_col ASC) rnk +FROM (SELECT + ss_item_sk item_sk, + avg(ss_net_profit) rank_col +FROM store_sales ss1 +WHERE ss_store_sk = 4 +GROUP BY ss_item_sk +HAVING avg(ss_net_profit) > 0.9 * (SELECT avg(ss_net_profit) rank_col +FROM store_sales +WHERE ss_store_sk = 4 + AND ss_addr_sk IS NULL +GROUP BY ss_store_sk)) V1) V11 +WHERE rnk < 11) asceding, + (SELECT * + FROM (SELECT + item_sk, + rank() + OVER ( + ORDER BY rank_col DESC) rnk + FROM (SELECT + ss_item_sk item_sk, + avg(ss_net_profit) rank_col + FROM store_sales ss1 + WHERE ss_store_sk = 4 + GROUP BY ss_item_sk + HAVING avg(ss_net_profit) > 0.9 * (SELECT avg(ss_net_profit) rank_col + FROM store_sales + WHERE ss_store_sk = 4 + AND ss_addr_sk IS NULL + GROUP BY ss_store_sk)) V2) V21 + WHERE rnk < 11) descending, + item i1, item i2 +WHERE asceding.rnk = descending.rnk + AND i1.i_item_sk = asceding.item_sk + AND i2.i_item_sk = descending.item_sk +ORDER BY asceding.rnk +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q45.sql b/dev/auron-it/src/main/resources/tpcds-queries/q45.sql new file mode 100755 index 000000000..907438f19 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q45.sql @@ -0,0 +1,21 @@ +SELECT + ca_zip, + ca_city, + sum(ws_sales_price) +FROM web_sales, customer, customer_address, date_dim, item +WHERE ws_bill_customer_sk = c_customer_sk + AND c_current_addr_sk = ca_address_sk + AND ws_item_sk = i_item_sk + AND (substr(ca_zip, 1, 5) IN + ('85669', '86197', '88274', '83405', '86475', '85392', '85460', '80348', '81792') + OR + i_item_id IN (SELECT i_item_id + FROM item + WHERE i_item_sk IN (2, 3, 5, 7, 11, 13, 17, 19, 23, 29) + ) +) + AND ws_sold_date_sk = d_date_sk + AND d_qoy = 2 AND d_year = 2001 +GROUP BY ca_zip, ca_city +ORDER BY ca_zip, ca_city +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q46.sql b/dev/auron-it/src/main/resources/tpcds-queries/q46.sql new file mode 100755 index 000000000..0911677df --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q46.sql @@ -0,0 +1,32 @@ +SELECT + c_last_name, + c_first_name, + ca_city, + bought_city, + ss_ticket_number, + amt, + profit +FROM + (SELECT + ss_ticket_number, + ss_customer_sk, + ca_city bought_city, + sum(ss_coupon_amt) amt, + sum(ss_net_profit) profit + FROM store_sales, date_dim, store, household_demographics, customer_address + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND store_sales.ss_addr_sk = customer_address.ca_address_sk + AND (household_demographics.hd_dep_count = 4 OR + household_demographics.hd_vehicle_count = 3) + AND date_dim.d_dow IN (6, 0) + AND date_dim.d_year IN (1999, 1999 + 1, 1999 + 2) + AND store.s_city IN ('Fairview', 'Midway', 'Fairview', 'Fairview', 'Fairview') + GROUP BY ss_ticket_number, ss_customer_sk, ss_addr_sk, ca_city) dn, customer, + customer_address current_addr +WHERE ss_customer_sk = c_customer_sk + AND customer.c_current_addr_sk = current_addr.ca_address_sk + AND current_addr.ca_city <> bought_city +ORDER BY c_last_name, c_first_name, ca_city, bought_city, ss_ticket_number +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q47.sql b/dev/auron-it/src/main/resources/tpcds-queries/q47.sql new file mode 100755 index 000000000..cfc37a4ce --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q47.sql @@ -0,0 +1,63 @@ +WITH v1 AS ( + SELECT + i_category, + i_brand, + s_store_name, + s_company_name, + d_year, + d_moy, + sum(ss_sales_price) sum_sales, + avg(sum(ss_sales_price)) + OVER + (PARTITION BY i_category, i_brand, + s_store_name, s_company_name, d_year) + avg_monthly_sales, + rank() + OVER + (PARTITION BY i_category, i_brand, + s_store_name, s_company_name + ORDER BY d_year, d_moy) rn + FROM item, store_sales, date_dim, store + WHERE ss_item_sk = i_item_sk AND + ss_sold_date_sk = d_date_sk AND + ss_store_sk = s_store_sk AND + ( + d_year = 1999 OR + (d_year = 1999 - 1 AND d_moy = 12) OR + (d_year = 1999 + 1 AND d_moy = 1) + ) + GROUP BY i_category, i_brand, + s_store_name, s_company_name, + d_year, d_moy), + v2 AS ( + SELECT + v1.i_category, + v1.i_brand, + v1.s_store_name, + v1.s_company_name, + v1.d_year, + v1.d_moy, + v1.avg_monthly_sales, + v1.sum_sales, + v1_lag.sum_sales psum, + v1_lead.sum_sales nsum + FROM v1, v1 v1_lag, v1 v1_lead + WHERE v1.i_category = v1_lag.i_category AND + v1.i_category = v1_lead.i_category AND + v1.i_brand = v1_lag.i_brand AND + v1.i_brand = v1_lead.i_brand AND + v1.s_store_name = v1_lag.s_store_name AND + v1.s_store_name = v1_lead.s_store_name AND + v1.s_company_name = v1_lag.s_company_name AND + v1.s_company_name = v1_lead.s_company_name AND + v1.rn = v1_lag.rn + 1 AND + v1.rn = v1_lead.rn - 1) +SELECT * +FROM v2 +WHERE d_year = 1999 AND + avg_monthly_sales > 0 AND + CASE WHEN avg_monthly_sales > 0 + THEN abs(sum_sales - avg_monthly_sales) / avg_monthly_sales + ELSE NULL END > 0.1 +ORDER BY sum_sales - avg_monthly_sales, 3 +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q48.sql b/dev/auron-it/src/main/resources/tpcds-queries/q48.sql new file mode 100755 index 000000000..fdb9f38e2 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q48.sql @@ -0,0 +1,63 @@ +SELECT sum(ss_quantity) +FROM store_sales, store, customer_demographics, customer_address, date_dim +WHERE s_store_sk = ss_store_sk + AND ss_sold_date_sk = d_date_sk AND d_year = 2001 + AND + ( + ( + cd_demo_sk = ss_cdemo_sk + AND + cd_marital_status = 'M' + AND + cd_education_status = '4 yr Degree' + AND + ss_sales_price BETWEEN 100.00 AND 150.00 + ) + OR + ( + cd_demo_sk = ss_cdemo_sk + AND + cd_marital_status = 'D' + AND + cd_education_status = '2 yr Degree' + AND + ss_sales_price BETWEEN 50.00 AND 100.00 + ) + OR + ( + cd_demo_sk = ss_cdemo_sk + AND + cd_marital_status = 'S' + AND + cd_education_status = 'College' + AND + ss_sales_price BETWEEN 150.00 AND 200.00 + ) + ) + AND + ( + ( + ss_addr_sk = ca_address_sk + AND + ca_country = 'United States' + AND + ca_state IN ('CO', 'OH', 'TX') + AND ss_net_profit BETWEEN 0 AND 2000 + ) + OR + (ss_addr_sk = ca_address_sk + AND + ca_country = 'United States' + AND + ca_state IN ('OR', 'MN', 'KY') + AND ss_net_profit BETWEEN 150 AND 3000 + ) + OR + (ss_addr_sk = ca_address_sk + AND + ca_country = 'United States' + AND + ca_state IN ('VA', 'CA', 'MS') + AND ss_net_profit BETWEEN 50 AND 25000 + ) + ) diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q49.sql b/dev/auron-it/src/main/resources/tpcds-queries/q49.sql new file mode 100755 index 000000000..c2f0ba623 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q49.sql @@ -0,0 +1,126 @@ +SELECT + 'web' AS channel, + web.item, + web.return_ratio, + web.return_rank, + web.currency_rank +FROM ( + SELECT + item, + return_ratio, + currency_ratio, + rank() + OVER ( + ORDER BY return_ratio) AS return_rank, + rank() + OVER ( + ORDER BY currency_ratio) AS currency_rank + FROM + (SELECT + ws.ws_item_sk AS item, + (cast(sum(coalesce(wr.wr_return_quantity, 0)) AS DECIMAL(15, 4)) / + cast(sum(coalesce(ws.ws_quantity, 0)) AS DECIMAL(15, 4))) AS return_ratio, + (cast(sum(coalesce(wr.wr_return_amt, 0)) AS DECIMAL(15, 4)) / + cast(sum(coalesce(ws.ws_net_paid, 0)) AS DECIMAL(15, 4))) AS currency_ratio + FROM + web_sales ws LEFT OUTER JOIN web_returns wr + ON (ws.ws_order_number = wr.wr_order_number AND + ws.ws_item_sk = wr.wr_item_sk) + , date_dim + WHERE + wr.wr_return_amt > 10000 + AND ws.ws_net_profit > 1 + AND ws.ws_net_paid > 0 + AND ws.ws_quantity > 0 + AND ws_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 12 + GROUP BY ws.ws_item_sk + ) in_web + ) web +WHERE (web.return_rank <= 10 OR web.currency_rank <= 10) +UNION +SELECT + 'catalog' AS channel, + catalog.item, + catalog.return_ratio, + catalog.return_rank, + catalog.currency_rank +FROM ( + SELECT + item, + return_ratio, + currency_ratio, + rank() + OVER ( + ORDER BY return_ratio) AS return_rank, + rank() + OVER ( + ORDER BY currency_ratio) AS currency_rank + FROM + (SELECT + cs.cs_item_sk AS item, + (cast(sum(coalesce(cr.cr_return_quantity, 0)) AS DECIMAL(15, 4)) / + cast(sum(coalesce(cs.cs_quantity, 0)) AS DECIMAL(15, 4))) AS return_ratio, + (cast(sum(coalesce(cr.cr_return_amount, 0)) AS DECIMAL(15, 4)) / + cast(sum(coalesce(cs.cs_net_paid, 0)) AS DECIMAL(15, 4))) AS currency_ratio + FROM + catalog_sales cs LEFT OUTER JOIN catalog_returns cr + ON (cs.cs_order_number = cr.cr_order_number AND + cs.cs_item_sk = cr.cr_item_sk) + , date_dim + WHERE + cr.cr_return_amount > 10000 + AND cs.cs_net_profit > 1 + AND cs.cs_net_paid > 0 + AND cs.cs_quantity > 0 + AND cs_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 12 + GROUP BY cs.cs_item_sk + ) in_cat + ) catalog +WHERE (catalog.return_rank <= 10 OR catalog.currency_rank <= 10) +UNION +SELECT + 'store' AS channel, + store.item, + store.return_ratio, + store.return_rank, + store.currency_rank +FROM ( + SELECT + item, + return_ratio, + currency_ratio, + rank() + OVER ( + ORDER BY return_ratio) AS return_rank, + rank() + OVER ( + ORDER BY currency_ratio) AS currency_rank + FROM + (SELECT + sts.ss_item_sk AS item, + (cast(sum(coalesce(sr.sr_return_quantity, 0)) AS DECIMAL(15, 4)) / + cast(sum(coalesce(sts.ss_quantity, 0)) AS DECIMAL(15, 4))) AS return_ratio, + (cast(sum(coalesce(sr.sr_return_amt, 0)) AS DECIMAL(15, 4)) / + cast(sum(coalesce(sts.ss_net_paid, 0)) AS DECIMAL(15, 4))) AS currency_ratio + FROM + store_sales sts LEFT OUTER JOIN store_returns sr + ON (sts.ss_ticket_number = sr.sr_ticket_number AND sts.ss_item_sk = sr.sr_item_sk) + , date_dim + WHERE + sr.sr_return_amt > 10000 + AND sts.ss_net_profit > 1 + AND sts.ss_net_paid > 0 + AND sts.ss_quantity > 0 + AND ss_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 12 + GROUP BY sts.ss_item_sk + ) in_store + ) store +WHERE (store.return_rank <= 10 OR store.currency_rank <= 10) +ORDER BY 1, 4, 5, 2 +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q5.sql b/dev/auron-it/src/main/resources/tpcds-queries/q5.sql new file mode 100755 index 000000000..b87cf3a44 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q5.sql @@ -0,0 +1,131 @@ +WITH ssr AS +( SELECT + s_store_id, + sum(sales_price) AS sales, + sum(profit) AS profit, + sum(return_amt) AS RETURNS, + sum(net_loss) AS profit_loss + FROM + (SELECT + ss_store_sk AS store_sk, + ss_sold_date_sk AS date_sk, + ss_ext_sales_price AS sales_price, + ss_net_profit AS profit, + cast(0 AS DECIMAL(7, 2)) AS return_amt, + cast(0 AS DECIMAL(7, 2)) AS net_loss + FROM store_sales + UNION ALL + SELECT + sr_store_sk AS store_sk, + sr_returned_date_sk AS date_sk, + cast(0 AS DECIMAL(7, 2)) AS sales_price, + cast(0 AS DECIMAL(7, 2)) AS profit, + sr_return_amt AS return_amt, + sr_net_loss AS net_loss + FROM store_returns) + salesreturns, date_dim, store + WHERE date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS DATE) + AND ((cast('2000-08-23' AS DATE) + INTERVAL 14 days)) + AND store_sk = s_store_sk + GROUP BY s_store_id), + csr AS + ( SELECT + cp_catalog_page_id, + sum(sales_price) AS sales, + sum(profit) AS profit, + sum(return_amt) AS RETURNS, + sum(net_loss) AS profit_loss + FROM + (SELECT + cs_catalog_page_sk AS page_sk, + cs_sold_date_sk AS date_sk, + cs_ext_sales_price AS sales_price, + cs_net_profit AS profit, + cast(0 AS DECIMAL(7, 2)) AS return_amt, + cast(0 AS DECIMAL(7, 2)) AS net_loss + FROM catalog_sales + UNION ALL + SELECT + cr_catalog_page_sk AS page_sk, + cr_returned_date_sk AS date_sk, + cast(0 AS DECIMAL(7, 2)) AS sales_price, + cast(0 AS DECIMAL(7, 2)) AS profit, + cr_return_amount AS return_amt, + cr_net_loss AS net_loss + FROM catalog_returns + ) salesreturns, date_dim, catalog_page + WHERE date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS DATE) + AND ((cast('2000-08-23' AS DATE) + INTERVAL 14 days)) + AND page_sk = cp_catalog_page_sk + GROUP BY cp_catalog_page_id) + , + wsr AS + ( SELECT + web_site_id, + sum(sales_price) AS sales, + sum(profit) AS profit, + sum(return_amt) AS RETURNS, + sum(net_loss) AS profit_loss + FROM + (SELECT + ws_web_site_sk AS wsr_web_site_sk, + ws_sold_date_sk AS date_sk, + ws_ext_sales_price AS sales_price, + ws_net_profit AS profit, + cast(0 AS DECIMAL(7, 2)) AS return_amt, + cast(0 AS DECIMAL(7, 2)) AS net_loss + FROM web_sales + UNION ALL + SELECT + ws_web_site_sk AS wsr_web_site_sk, + wr_returned_date_sk AS date_sk, + cast(0 AS DECIMAL(7, 2)) AS sales_price, + cast(0 AS DECIMAL(7, 2)) AS profit, + wr_return_amt AS return_amt, + wr_net_loss AS net_loss + FROM web_returns + LEFT OUTER JOIN web_sales ON + (wr_item_sk = ws_item_sk + AND wr_order_number = ws_order_number) + ) salesreturns, date_dim, web_site + WHERE date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS DATE) + AND ((cast('2000-08-23' AS DATE) + INTERVAL 14 days)) + AND wsr_web_site_sk = web_site_sk + GROUP BY web_site_id) +SELECT + channel, + id, + sum(sales) AS sales, + sum(returns) AS returns, + sum(profit) AS profit +FROM + (SELECT + 'store channel' AS channel, + concat('store', s_store_id) AS id, + sales, + returns, + (profit - profit_loss) AS profit + FROM ssr + UNION ALL + SELECT + 'catalog channel' AS channel, + concat('catalog_page', cp_catalog_page_id) AS id, + sales, + returns, + (profit - profit_loss) AS profit + FROM csr + UNION ALL + SELECT + 'web channel' AS channel, + concat('web_site', web_site_id) AS id, + sales, + returns, + (profit - profit_loss) AS profit + FROM wsr + ) x +GROUP BY ROLLUP (channel, id) +ORDER BY channel, id +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q50.sql b/dev/auron-it/src/main/resources/tpcds-queries/q50.sql new file mode 100755 index 000000000..f1d4b1544 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q50.sql @@ -0,0 +1,47 @@ +SELECT + s_store_name, + s_company_id, + s_street_number, + s_street_name, + s_street_type, + s_suite_number, + s_city, + s_county, + s_state, + s_zip, + sum(CASE WHEN (sr_returned_date_sk - ss_sold_date_sk <= 30) + THEN 1 + ELSE 0 END) AS `30 days `, + sum(CASE WHEN (sr_returned_date_sk - ss_sold_date_sk > 30) AND + (sr_returned_date_sk - ss_sold_date_sk <= 60) + THEN 1 + ELSE 0 END) AS `31 - 60 days `, + sum(CASE WHEN (sr_returned_date_sk - ss_sold_date_sk > 60) AND + (sr_returned_date_sk - ss_sold_date_sk <= 90) + THEN 1 + ELSE 0 END) AS `61 - 90 days `, + sum(CASE WHEN (sr_returned_date_sk - ss_sold_date_sk > 90) AND + (sr_returned_date_sk - ss_sold_date_sk <= 120) + THEN 1 + ELSE 0 END) AS `91 - 120 days `, + sum(CASE WHEN (sr_returned_date_sk - ss_sold_date_sk > 120) + THEN 1 + ELSE 0 END) AS `>120 days ` +FROM + store_sales, store_returns, store, date_dim d1, date_dim d2 +WHERE + d2.d_year = 2001 + AND d2.d_moy = 8 + AND ss_ticket_number = sr_ticket_number + AND ss_item_sk = sr_item_sk + AND ss_sold_date_sk = d1.d_date_sk + AND sr_returned_date_sk = d2.d_date_sk + AND ss_customer_sk = sr_customer_sk + AND ss_store_sk = s_store_sk +GROUP BY + s_store_name, s_company_id, s_street_number, s_street_name, s_street_type, + s_suite_number, s_city, s_county, s_state, s_zip +ORDER BY + s_store_name, s_company_id, s_street_number, s_street_name, s_street_type, + s_suite_number, s_city, s_county, s_state, s_zip +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q51.sql b/dev/auron-it/src/main/resources/tpcds-queries/q51.sql new file mode 100755 index 000000000..62b003eb6 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q51.sql @@ -0,0 +1,55 @@ +WITH web_v1 AS ( + SELECT + ws_item_sk item_sk, + d_date, + sum(sum(ws_sales_price)) + OVER (PARTITION BY ws_item_sk + ORDER BY d_date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) cume_sales + FROM web_sales, date_dim + WHERE ws_sold_date_sk = d_date_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 + AND ws_item_sk IS NOT NULL + GROUP BY ws_item_sk, d_date), + store_v1 AS ( + SELECT + ss_item_sk item_sk, + d_date, + sum(sum(ss_sales_price)) + OVER (PARTITION BY ss_item_sk + ORDER BY d_date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) cume_sales + FROM store_sales, date_dim + WHERE ss_sold_date_sk = d_date_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 + AND ss_item_sk IS NOT NULL + GROUP BY ss_item_sk, d_date) +SELECT * +FROM (SELECT + item_sk, + d_date, + web_sales, + store_sales, + max(web_sales) + OVER (PARTITION BY item_sk + ORDER BY d_date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) web_cumulative, + max(store_sales) + OVER (PARTITION BY item_sk + ORDER BY d_date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) store_cumulative +FROM (SELECT + CASE WHEN web.item_sk IS NOT NULL + THEN web.item_sk + ELSE store.item_sk END item_sk, + CASE WHEN web.d_date IS NOT NULL + THEN web.d_date + ELSE store.d_date END d_date, + web.cume_sales web_sales, + store.cume_sales store_sales +FROM web_v1 web FULL OUTER JOIN store_v1 store ON (web.item_sk = store.item_sk + AND web.d_date = store.d_date) + ) x) y +WHERE web_cumulative > store_cumulative +ORDER BY item_sk, d_date +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q52.sql b/dev/auron-it/src/main/resources/tpcds-queries/q52.sql new file mode 100755 index 000000000..467d1ae05 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q52.sql @@ -0,0 +1,14 @@ +SELECT + dt.d_year, + item.i_brand_id brand_id, + item.i_brand brand, + sum(ss_ext_sales_price) ext_price +FROM date_dim dt, store_sales, item +WHERE dt.d_date_sk = store_sales.ss_sold_date_sk + AND store_sales.ss_item_sk = item.i_item_sk + AND item.i_manager_id = 1 + AND dt.d_moy = 11 + AND dt.d_year = 2000 +GROUP BY dt.d_year, item.i_brand, item.i_brand_id +ORDER BY dt.d_year, ext_price DESC, brand_id +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q53.sql b/dev/auron-it/src/main/resources/tpcds-queries/q53.sql new file mode 100755 index 000000000..b42c68dcf --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q53.sql @@ -0,0 +1,30 @@ +SELECT * +FROM + (SELECT + i_manufact_id, + sum(ss_sales_price) sum_sales, + avg(sum(ss_sales_price)) + OVER (PARTITION BY i_manufact_id) avg_quarterly_sales + FROM item, store_sales, date_dim, store + WHERE ss_item_sk = i_item_sk AND + ss_sold_date_sk = d_date_sk AND + ss_store_sk = s_store_sk AND + d_month_seq IN (1200, 1200 + 1, 1200 + 2, 1200 + 3, 1200 + 4, 1200 + 5, 1200 + 6, + 1200 + 7, 1200 + 8, 1200 + 9, 1200 + 10, 1200 + 11) AND + ((i_category IN ('Books', 'Children', 'Electronics') AND + i_class IN ('personal', 'portable', 'reference', 'self-help') AND + i_brand IN ('scholaramalgamalg #14', 'scholaramalgamalg #7', + 'exportiunivamalg #9', 'scholaramalgamalg #9')) + OR + (i_category IN ('Women', 'Music', 'Men') AND + i_class IN ('accessories', 'classical', 'fragrances', 'pants') AND + i_brand IN ('amalgimporto #1', 'edu packscholar #1', 'exportiimporto #1', + 'importoamalg #1'))) + GROUP BY i_manufact_id, d_qoy) tmp1 +WHERE CASE WHEN avg_quarterly_sales > 0 + THEN abs(sum_sales - avg_quarterly_sales) / avg_quarterly_sales + ELSE NULL END > 0.1 +ORDER BY avg_quarterly_sales, + sum_sales, + i_manufact_id +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q54.sql b/dev/auron-it/src/main/resources/tpcds-queries/q54.sql new file mode 100755 index 000000000..897237fb6 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q54.sql @@ -0,0 +1,61 @@ +WITH my_customers AS ( + SELECT DISTINCT + c_customer_sk, + c_current_addr_sk + FROM + (SELECT + cs_sold_date_sk sold_date_sk, + cs_bill_customer_sk customer_sk, + cs_item_sk item_sk + FROM catalog_sales + UNION ALL + SELECT + ws_sold_date_sk sold_date_sk, + ws_bill_customer_sk customer_sk, + ws_item_sk item_sk + FROM web_sales + ) cs_or_ws_sales, + item, + date_dim, + customer + WHERE sold_date_sk = d_date_sk + AND item_sk = i_item_sk + AND i_category = 'Women' + AND i_class = 'maternity' + AND c_customer_sk = cs_or_ws_sales.customer_sk + AND d_moy = 12 + AND d_year = 1998 +) + , my_revenue AS ( + SELECT + c_customer_sk, + sum(ss_ext_sales_price) AS revenue + FROM my_customers, + store_sales, + customer_address, + store, + date_dim + WHERE c_current_addr_sk = ca_address_sk + AND ca_county = s_county + AND ca_state = s_state + AND ss_sold_date_sk = d_date_sk + AND c_customer_sk = ss_customer_sk + AND d_month_seq BETWEEN (SELECT DISTINCT d_month_seq + 1 + FROM date_dim + WHERE d_year = 1998 AND d_moy = 12) + AND (SELECT DISTINCT d_month_seq + 3 + FROM date_dim + WHERE d_year = 1998 AND d_moy = 12) + GROUP BY c_customer_sk +) + , segments AS +(SELECT cast((revenue / 50) AS INT) AS segment + FROM my_revenue) +SELECT + segment, + count(*) AS num_customers, + segment * 50 AS segment_base +FROM segments +GROUP BY segment +ORDER BY segment, num_customers +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q55.sql b/dev/auron-it/src/main/resources/tpcds-queries/q55.sql new file mode 100755 index 000000000..bc5d888c9 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q55.sql @@ -0,0 +1,13 @@ +SELECT + i_brand_id brand_id, + i_brand brand, + sum(ss_ext_sales_price) ext_price +FROM date_dim, store_sales, item +WHERE d_date_sk = ss_sold_date_sk + AND ss_item_sk = i_item_sk + AND i_manager_id = 28 + AND d_moy = 11 + AND d_year = 1999 +GROUP BY i_brand, i_brand_id +ORDER BY ext_price DESC, brand_id +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q56.sql b/dev/auron-it/src/main/resources/tpcds-queries/q56.sql new file mode 100755 index 000000000..c5f0e4876 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q56.sql @@ -0,0 +1,66 @@ +WITH ss AS ( + SELECT + i_item_id, + sum(ss_ext_sales_price) total_sales + FROM + store_sales, date_dim, customer_address, item + WHERE + i_item_id IN (SELECT i_item_id + FROM item + WHERE i_color IN ('slate', 'blanched', 'burnished')) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 2 + AND ss_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id), + cs AS ( + SELECT + i_item_id, + sum(cs_ext_sales_price) total_sales + FROM + catalog_sales, date_dim, customer_address, item + WHERE + i_item_id IN (SELECT i_item_id + FROM item + WHERE i_color IN ('slate', 'blanched', 'burnished')) + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 2 + AND cs_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id), + ws AS ( + SELECT + i_item_id, + sum(ws_ext_sales_price) total_sales + FROM + web_sales, date_dim, customer_address, item + WHERE + i_item_id IN (SELECT i_item_id + FROM item + WHERE i_color IN ('slate', 'blanched', 'burnished')) + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 2 + AND ws_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id) +SELECT + i_item_id, + sum(total_sales) total_sales +FROM (SELECT * + FROM ss + UNION ALL + SELECT * + FROM cs + UNION ALL + SELECT * + FROM ws) tmp1 +GROUP BY i_item_id +ORDER BY total_sales, + i_item_id +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q57.sql b/dev/auron-it/src/main/resources/tpcds-queries/q57.sql new file mode 100755 index 000000000..cf70d4b90 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q57.sql @@ -0,0 +1,56 @@ +WITH v1 AS ( + SELECT + i_category, + i_brand, + cc_name, + d_year, + d_moy, + sum(cs_sales_price) sum_sales, + avg(sum(cs_sales_price)) + OVER + (PARTITION BY i_category, i_brand, cc_name, d_year) + avg_monthly_sales, + rank() + OVER + (PARTITION BY i_category, i_brand, cc_name + ORDER BY d_year, d_moy) rn + FROM item, catalog_sales, date_dim, call_center + WHERE cs_item_sk = i_item_sk AND + cs_sold_date_sk = d_date_sk AND + cc_call_center_sk = cs_call_center_sk AND + ( + d_year = 1999 OR + (d_year = 1999 - 1 AND d_moy = 12) OR + (d_year = 1999 + 1 AND d_moy = 1) + ) + GROUP BY i_category, i_brand, + cc_name, d_year, d_moy), + v2 AS ( + SELECT + v1.i_category, + v1.i_brand, + v1.cc_name, + v1.d_year, + v1.d_moy, + v1.avg_monthly_sales, + v1.sum_sales, + v1_lag.sum_sales psum, + v1_lead.sum_sales nsum + FROM v1, v1 v1_lag, v1 v1_lead + WHERE v1.i_category = v1_lag.i_category AND + v1.i_category = v1_lead.i_category AND + v1.i_brand = v1_lag.i_brand AND + v1.i_brand = v1_lead.i_brand AND + v1.cc_name = v1_lag.cc_name AND + v1.cc_name = v1_lead.cc_name AND + v1.rn = v1_lag.rn + 1 AND + v1.rn = v1_lead.rn - 1) +SELECT * +FROM v2 +WHERE d_year = 1999 AND + avg_monthly_sales > 0 AND + CASE WHEN avg_monthly_sales > 0 + THEN abs(sum_sales - avg_monthly_sales) / avg_monthly_sales + ELSE NULL END > 0.1 +ORDER BY sum_sales - avg_monthly_sales, 3 +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q58.sql b/dev/auron-it/src/main/resources/tpcds-queries/q58.sql new file mode 100755 index 000000000..5f63f33dc --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q58.sql @@ -0,0 +1,59 @@ +WITH ss_items AS +(SELECT + i_item_id item_id, + sum(ss_ext_sales_price) ss_item_rev + FROM store_sales, item, date_dim + WHERE ss_item_sk = i_item_sk + AND d_date IN (SELECT d_date + FROM date_dim + WHERE d_week_seq = (SELECT d_week_seq + FROM date_dim + WHERE d_date = '2000-01-03')) + AND ss_sold_date_sk = d_date_sk + GROUP BY i_item_id), + cs_items AS + (SELECT + i_item_id item_id, + sum(cs_ext_sales_price) cs_item_rev + FROM catalog_sales, item, date_dim + WHERE cs_item_sk = i_item_sk + AND d_date IN (SELECT d_date + FROM date_dim + WHERE d_week_seq = (SELECT d_week_seq + FROM date_dim + WHERE d_date = '2000-01-03')) + AND cs_sold_date_sk = d_date_sk + GROUP BY i_item_id), + ws_items AS + (SELECT + i_item_id item_id, + sum(ws_ext_sales_price) ws_item_rev + FROM web_sales, item, date_dim + WHERE ws_item_sk = i_item_sk + AND d_date IN (SELECT d_date + FROM date_dim + WHERE d_week_seq = (SELECT d_week_seq + FROM date_dim + WHERE d_date = '2000-01-03')) + AND ws_sold_date_sk = d_date_sk + GROUP BY i_item_id) +SELECT + ss_items.item_id, + ss_item_rev, + ss_item_rev / (ss_item_rev + cs_item_rev + ws_item_rev) / 3 * 100 ss_dev, + cs_item_rev, + cs_item_rev / (ss_item_rev + cs_item_rev + ws_item_rev) / 3 * 100 cs_dev, + ws_item_rev, + ws_item_rev / (ss_item_rev + cs_item_rev + ws_item_rev) / 3 * 100 ws_dev, + (ss_item_rev + cs_item_rev + ws_item_rev) / 3 average +FROM ss_items, cs_items, ws_items +WHERE ss_items.item_id = cs_items.item_id + AND ss_items.item_id = ws_items.item_id + AND ss_item_rev BETWEEN 0.9 * cs_item_rev AND 1.1 * cs_item_rev + AND ss_item_rev BETWEEN 0.9 * ws_item_rev AND 1.1 * ws_item_rev + AND cs_item_rev BETWEEN 0.9 * ss_item_rev AND 1.1 * ss_item_rev + AND cs_item_rev BETWEEN 0.9 * ws_item_rev AND 1.1 * ws_item_rev + AND ws_item_rev BETWEEN 0.9 * ss_item_rev AND 1.1 * ss_item_rev + AND ws_item_rev BETWEEN 0.9 * cs_item_rev AND 1.1 * cs_item_rev +ORDER BY item_id, ss_item_rev +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q59.sql b/dev/auron-it/src/main/resources/tpcds-queries/q59.sql new file mode 100755 index 000000000..3cef20276 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q59.sql @@ -0,0 +1,75 @@ +WITH wss AS +(SELECT + d_week_seq, + ss_store_sk, + sum(CASE WHEN (d_day_name = 'Sunday') + THEN ss_sales_price + ELSE NULL END) sun_sales, + sum(CASE WHEN (d_day_name = 'Monday') + THEN ss_sales_price + ELSE NULL END) mon_sales, + sum(CASE WHEN (d_day_name = 'Tuesday') + THEN ss_sales_price + ELSE NULL END) tue_sales, + sum(CASE WHEN (d_day_name = 'Wednesday') + THEN ss_sales_price + ELSE NULL END) wed_sales, + sum(CASE WHEN (d_day_name = 'Thursday') + THEN ss_sales_price + ELSE NULL END) thu_sales, + sum(CASE WHEN (d_day_name = 'Friday') + THEN ss_sales_price + ELSE NULL END) fri_sales, + sum(CASE WHEN (d_day_name = 'Saturday') + THEN ss_sales_price + ELSE NULL END) sat_sales + FROM store_sales, date_dim + WHERE d_date_sk = ss_sold_date_sk + GROUP BY d_week_seq, ss_store_sk +) +SELECT + s_store_name1, + s_store_id1, + d_week_seq1, + sun_sales1 / sun_sales2, + mon_sales1 / mon_sales2, + tue_sales1 / tue_sales2, + wed_sales1 / wed_sales2, + thu_sales1 / thu_sales2, + fri_sales1 / fri_sales2, + sat_sales1 / sat_sales2 +FROM + (SELECT + s_store_name s_store_name1, + wss.d_week_seq d_week_seq1, + s_store_id s_store_id1, + sun_sales sun_sales1, + mon_sales mon_sales1, + tue_sales tue_sales1, + wed_sales wed_sales1, + thu_sales thu_sales1, + fri_sales fri_sales1, + sat_sales sat_sales1 + FROM wss, store, date_dim d + WHERE d.d_week_seq = wss.d_week_seq AND + ss_store_sk = s_store_sk AND + d_month_seq BETWEEN 1212 AND 1212 + 11) y, + (SELECT + s_store_name s_store_name2, + wss.d_week_seq d_week_seq2, + s_store_id s_store_id2, + sun_sales sun_sales2, + mon_sales mon_sales2, + tue_sales tue_sales2, + wed_sales wed_sales2, + thu_sales thu_sales2, + fri_sales fri_sales2, + sat_sales sat_sales2 + FROM wss, store, date_dim d + WHERE d.d_week_seq = wss.d_week_seq AND + ss_store_sk = s_store_sk AND + d_month_seq BETWEEN 1212 + 12 AND 1212 + 23) x +WHERE s_store_id1 = s_store_id2 + AND d_week_seq1 = d_week_seq2 - 52 +ORDER BY s_store_name1, s_store_id1, d_week_seq1 +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q6.sql b/dev/auron-it/src/main/resources/tpcds-queries/q6.sql new file mode 100755 index 000000000..025c82000 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q6.sql @@ -0,0 +1,21 @@ +SELECT + a.ca_state state, + count(*) cnt +FROM + customer_address a, customer c, store_sales s, date_dim d, item i +WHERE a.ca_address_sk = c.c_current_addr_sk + AND c.c_customer_sk = s.ss_customer_sk + AND s.ss_sold_date_sk = d.d_date_sk + AND s.ss_item_sk = i.i_item_sk + AND d.d_month_seq = + (SELECT DISTINCT (d_month_seq) + FROM date_dim + WHERE d_year = 2000 AND d_moy = 1) + AND i.i_current_price > 1.2 * + (SELECT avg(j.i_current_price) + FROM item j + WHERE j.i_category = i.i_category) +GROUP BY a.ca_state +HAVING count(*) >= 10 +order by cnt, a.ca_state +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q60.sql b/dev/auron-it/src/main/resources/tpcds-queries/q60.sql new file mode 100755 index 000000000..41b963f44 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q60.sql @@ -0,0 +1,62 @@ +WITH ss AS ( + SELECT + i_item_id, + sum(ss_ext_sales_price) total_sales + FROM store_sales, date_dim, customer_address, item + WHERE + i_item_id IN (SELECT i_item_id + FROM item + WHERE i_category IN ('Music')) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 9 + AND ss_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id), + cs AS ( + SELECT + i_item_id, + sum(cs_ext_sales_price) total_sales + FROM catalog_sales, date_dim, customer_address, item + WHERE + i_item_id IN (SELECT i_item_id + FROM item + WHERE i_category IN ('Music')) + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 9 + AND cs_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id), + ws AS ( + SELECT + i_item_id, + sum(ws_ext_sales_price) total_sales + FROM web_sales, date_dim, customer_address, item + WHERE + i_item_id IN (SELECT i_item_id + FROM item + WHERE i_category IN ('Music')) + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 9 + AND ws_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id) +SELECT + i_item_id, + sum(total_sales) total_sales +FROM (SELECT * + FROM ss + UNION ALL + SELECT * + FROM cs + UNION ALL + SELECT * + FROM ws) tmp1 +GROUP BY i_item_id +ORDER BY i_item_id, total_sales +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q61.sql b/dev/auron-it/src/main/resources/tpcds-queries/q61.sql new file mode 100755 index 000000000..b0a872b4b --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q61.sql @@ -0,0 +1,33 @@ +SELECT + promotions, + total, + cast(promotions AS DECIMAL(15, 4)) / cast(total AS DECIMAL(15, 4)) * 100 +FROM + (SELECT sum(ss_ext_sales_price) promotions + FROM store_sales, store, promotion, date_dim, customer, customer_address, item + WHERE ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND ss_promo_sk = p_promo_sk + AND ss_customer_sk = c_customer_sk + AND ca_address_sk = c_current_addr_sk + AND ss_item_sk = i_item_sk + AND ca_gmt_offset = -5 + AND i_category = 'Jewelry' + AND (p_channel_dmail = 'Y' OR p_channel_email = 'Y' OR p_channel_tv = 'Y') + AND s_gmt_offset = -5 + AND d_year = 1998 + AND d_moy = 11) promotional_sales, + (SELECT sum(ss_ext_sales_price) total + FROM store_sales, store, date_dim, customer, customer_address, item + WHERE ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND ss_customer_sk = c_customer_sk + AND ca_address_sk = c_current_addr_sk + AND ss_item_sk = i_item_sk + AND ca_gmt_offset = -5 + AND i_category = 'Jewelry' + AND s_gmt_offset = -5 + AND d_year = 1998 + AND d_moy = 11) all_sales +ORDER BY promotions, total +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q62.sql b/dev/auron-it/src/main/resources/tpcds-queries/q62.sql new file mode 100755 index 000000000..8a414f154 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q62.sql @@ -0,0 +1,35 @@ +SELECT + substr(w_warehouse_name, 1, 20), + sm_type, + web_name, + sum(CASE WHEN (ws_ship_date_sk - ws_sold_date_sk <= 30) + THEN 1 + ELSE 0 END) AS `30 days `, + sum(CASE WHEN (ws_ship_date_sk - ws_sold_date_sk > 30) AND + (ws_ship_date_sk - ws_sold_date_sk <= 60) + THEN 1 + ELSE 0 END) AS `31 - 60 days `, + sum(CASE WHEN (ws_ship_date_sk - ws_sold_date_sk > 60) AND + (ws_ship_date_sk - ws_sold_date_sk <= 90) + THEN 1 + ELSE 0 END) AS `61 - 90 days `, + sum(CASE WHEN (ws_ship_date_sk - ws_sold_date_sk > 90) AND + (ws_ship_date_sk - ws_sold_date_sk <= 120) + THEN 1 + ELSE 0 END) AS `91 - 120 days `, + sum(CASE WHEN (ws_ship_date_sk - ws_sold_date_sk > 120) + THEN 1 + ELSE 0 END) AS `>120 days ` +FROM + web_sales, warehouse, ship_mode, web_site, date_dim +WHERE + d_month_seq BETWEEN 1200 AND 1200 + 11 + AND ws_ship_date_sk = d_date_sk + AND ws_warehouse_sk = w_warehouse_sk + AND ws_ship_mode_sk = sm_ship_mode_sk + AND ws_web_site_sk = web_site_sk +GROUP BY + substr(w_warehouse_name, 1, 20), sm_type, web_name +ORDER BY + substr(w_warehouse_name, 1, 20), sm_type, web_name +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q63.sql b/dev/auron-it/src/main/resources/tpcds-queries/q63.sql new file mode 100755 index 000000000..ef6867e0a --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q63.sql @@ -0,0 +1,31 @@ +SELECT * +FROM (SELECT + i_manager_id, + sum(ss_sales_price) sum_sales, + avg(sum(ss_sales_price)) + OVER (PARTITION BY i_manager_id) avg_monthly_sales +FROM item + , store_sales + , date_dim + , store +WHERE ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND d_month_seq IN (1200, 1200 + 1, 1200 + 2, 1200 + 3, 1200 + 4, 1200 + 5, 1200 + 6, 1200 + 7, + 1200 + 8, 1200 + 9, 1200 + 10, 1200 + 11) + AND ((i_category IN ('Books', 'Children', 'Electronics') + AND i_class IN ('personal', 'portable', 'refernece', 'self-help') + AND i_brand IN ('scholaramalgamalg #14', 'scholaramalgamalg #7', + 'exportiunivamalg #9', 'scholaramalgamalg #9')) + OR (i_category IN ('Women', 'Music', 'Men') + AND i_class IN ('accessories', 'classical', 'fragrances', 'pants') + AND i_brand IN ('amalgimporto #1', 'edu packscholar #1', 'exportiimporto #1', + 'importoamalg #1'))) +GROUP BY i_manager_id, d_moy) tmp1 +WHERE CASE WHEN avg_monthly_sales > 0 + THEN abs(sum_sales - avg_monthly_sales) / avg_monthly_sales + ELSE NULL END > 0.1 +ORDER BY i_manager_id + , avg_monthly_sales + , sum_sales +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q64.sql b/dev/auron-it/src/main/resources/tpcds-queries/q64.sql new file mode 100755 index 000000000..10dffcd2f --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q64.sql @@ -0,0 +1,92 @@ +WITH cs_ui AS +(SELECT + cs_item_sk, + sum(cs_ext_list_price) AS sale, + sum(cr_refunded_cash + cr_reversed_charge + cr_store_credit) AS refund + FROM catalog_sales + , catalog_returns + WHERE cs_item_sk = cr_item_sk + AND cs_order_number = cr_order_number + GROUP BY cs_item_sk + HAVING sum(cs_ext_list_price) > 2 * sum(cr_refunded_cash + cr_reversed_charge + cr_store_credit)), + cross_sales AS + (SELECT + i_product_name product_name, + i_item_sk item_sk, + s_store_name store_name, + s_zip store_zip, + ad1.ca_street_number b_street_number, + ad1.ca_street_name b_streen_name, + ad1.ca_city b_city, + ad1.ca_zip b_zip, + ad2.ca_street_number c_street_number, + ad2.ca_street_name c_street_name, + ad2.ca_city c_city, + ad2.ca_zip c_zip, + d1.d_year AS syear, + d2.d_year AS fsyear, + d3.d_year s2year, + count(*) cnt, + sum(ss_wholesale_cost) s1, + sum(ss_list_price) s2, + sum(ss_coupon_amt) s3 + FROM store_sales, store_returns, cs_ui, date_dim d1, date_dim d2, date_dim d3, + store, customer, customer_demographics cd1, customer_demographics cd2, + promotion, household_demographics hd1, household_demographics hd2, + customer_address ad1, customer_address ad2, income_band ib1, income_band ib2, item + WHERE ss_store_sk = s_store_sk AND + ss_sold_date_sk = d1.d_date_sk AND + ss_customer_sk = c_customer_sk AND + ss_cdemo_sk = cd1.cd_demo_sk AND + ss_hdemo_sk = hd1.hd_demo_sk AND + ss_addr_sk = ad1.ca_address_sk AND + ss_item_sk = i_item_sk AND + ss_item_sk = sr_item_sk AND + ss_ticket_number = sr_ticket_number AND + ss_item_sk = cs_ui.cs_item_sk AND + c_current_cdemo_sk = cd2.cd_demo_sk AND + c_current_hdemo_sk = hd2.hd_demo_sk AND + c_current_addr_sk = ad2.ca_address_sk AND + c_first_sales_date_sk = d2.d_date_sk AND + c_first_shipto_date_sk = d3.d_date_sk AND + ss_promo_sk = p_promo_sk AND + hd1.hd_income_band_sk = ib1.ib_income_band_sk AND + hd2.hd_income_band_sk = ib2.ib_income_band_sk AND + cd1.cd_marital_status <> cd2.cd_marital_status AND + i_color IN ('purple', 'burlywood', 'indian', 'spring', 'floral', 'medium') AND + i_current_price BETWEEN 64 AND 64 + 10 AND + i_current_price BETWEEN 64 + 1 AND 64 + 15 + GROUP BY i_product_name, i_item_sk, s_store_name, s_zip, ad1.ca_street_number, + ad1.ca_street_name, ad1.ca_city, ad1.ca_zip, ad2.ca_street_number, + ad2.ca_street_name, ad2.ca_city, ad2.ca_zip, d1.d_year, d2.d_year, d3.d_year + ) +SELECT + cs1.product_name, + cs1.store_name, + cs1.store_zip, + cs1.b_street_number, + cs1.b_streen_name, + cs1.b_city, + cs1.b_zip, + cs1.c_street_number, + cs1.c_street_name, + cs1.c_city, + cs1.c_zip, + cs1.syear, + cs1.cnt, + cs1.s1, + cs1.s2, + cs1.s3, + cs2.s1, + cs2.s2, + cs2.s3, + cs2.syear, + cs2.cnt +FROM cross_sales cs1, cross_sales cs2 +WHERE cs1.item_sk = cs2.item_sk AND + cs1.syear = 1999 AND + cs2.syear = 1999 + 1 AND + cs2.cnt <= cs1.cnt AND + cs1.store_name = cs2.store_name AND + cs1.store_zip = cs2.store_zip +ORDER BY cs1.product_name, cs1.store_name, cs2.cnt, cs1.s1, cs2.s1 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q65.sql b/dev/auron-it/src/main/resources/tpcds-queries/q65.sql new file mode 100755 index 000000000..aad04be1b --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q65.sql @@ -0,0 +1,33 @@ +SELECT + s_store_name, + i_item_desc, + sc.revenue, + i_current_price, + i_wholesale_cost, + i_brand +FROM store, item, + (SELECT + ss_store_sk, + avg(revenue) AS ave + FROM + (SELECT + ss_store_sk, + ss_item_sk, + sum(ss_sales_price) AS revenue + FROM store_sales, date_dim + WHERE ss_sold_date_sk = d_date_sk AND d_month_seq BETWEEN 1176 AND 1176 + 11 + GROUP BY ss_store_sk, ss_item_sk) sa + GROUP BY ss_store_sk) sb, + (SELECT + ss_store_sk, + ss_item_sk, + sum(ss_sales_price) AS revenue + FROM store_sales, date_dim + WHERE ss_sold_date_sk = d_date_sk AND d_month_seq BETWEEN 1176 AND 1176 + 11 + GROUP BY ss_store_sk, ss_item_sk) sc +WHERE sb.ss_store_sk = sc.ss_store_sk AND + sc.revenue <= 0.1 * sb.ave AND + s_store_sk = sc.ss_store_sk AND + i_item_sk = sc.ss_item_sk +ORDER BY s_store_name, i_item_desc +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q66.sql b/dev/auron-it/src/main/resources/tpcds-queries/q66.sql new file mode 100755 index 000000000..f826b4164 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q66.sql @@ -0,0 +1,240 @@ +SELECT + w_warehouse_name, + w_warehouse_sq_ft, + w_city, + w_county, + w_state, + w_country, + ship_carriers, + year, + sum(jan_sales) AS jan_sales, + sum(feb_sales) AS feb_sales, + sum(mar_sales) AS mar_sales, + sum(apr_sales) AS apr_sales, + sum(may_sales) AS may_sales, + sum(jun_sales) AS jun_sales, + sum(jul_sales) AS jul_sales, + sum(aug_sales) AS aug_sales, + sum(sep_sales) AS sep_sales, + sum(oct_sales) AS oct_sales, + sum(nov_sales) AS nov_sales, + sum(dec_sales) AS dec_sales, + sum(jan_sales / w_warehouse_sq_ft) AS jan_sales_per_sq_foot, + sum(feb_sales / w_warehouse_sq_ft) AS feb_sales_per_sq_foot, + sum(mar_sales / w_warehouse_sq_ft) AS mar_sales_per_sq_foot, + sum(apr_sales / w_warehouse_sq_ft) AS apr_sales_per_sq_foot, + sum(may_sales / w_warehouse_sq_ft) AS may_sales_per_sq_foot, + sum(jun_sales / w_warehouse_sq_ft) AS jun_sales_per_sq_foot, + sum(jul_sales / w_warehouse_sq_ft) AS jul_sales_per_sq_foot, + sum(aug_sales / w_warehouse_sq_ft) AS aug_sales_per_sq_foot, + sum(sep_sales / w_warehouse_sq_ft) AS sep_sales_per_sq_foot, + sum(oct_sales / w_warehouse_sq_ft) AS oct_sales_per_sq_foot, + sum(nov_sales / w_warehouse_sq_ft) AS nov_sales_per_sq_foot, + sum(dec_sales / w_warehouse_sq_ft) AS dec_sales_per_sq_foot, + sum(jan_net) AS jan_net, + sum(feb_net) AS feb_net, + sum(mar_net) AS mar_net, + sum(apr_net) AS apr_net, + sum(may_net) AS may_net, + sum(jun_net) AS jun_net, + sum(jul_net) AS jul_net, + sum(aug_net) AS aug_net, + sum(sep_net) AS sep_net, + sum(oct_net) AS oct_net, + sum(nov_net) AS nov_net, + sum(dec_net) AS dec_net +FROM ( + (SELECT + w_warehouse_name, + w_warehouse_sq_ft, + w_city, + w_county, + w_state, + w_country, + concat('DHL', ',', 'BARIAN') AS ship_carriers, + d_year AS year, + sum(CASE WHEN d_moy = 1 + THEN ws_ext_sales_price * ws_quantity + ELSE 0 END) AS jan_sales, + sum(CASE WHEN d_moy = 2 + THEN ws_ext_sales_price * ws_quantity + ELSE 0 END) AS feb_sales, + sum(CASE WHEN d_moy = 3 + THEN ws_ext_sales_price * ws_quantity + ELSE 0 END) AS mar_sales, + sum(CASE WHEN d_moy = 4 + THEN ws_ext_sales_price * ws_quantity + ELSE 0 END) AS apr_sales, + sum(CASE WHEN d_moy = 5 + THEN ws_ext_sales_price * ws_quantity + ELSE 0 END) AS may_sales, + sum(CASE WHEN d_moy = 6 + THEN ws_ext_sales_price * ws_quantity + ELSE 0 END) AS jun_sales, + sum(CASE WHEN d_moy = 7 + THEN ws_ext_sales_price * ws_quantity + ELSE 0 END) AS jul_sales, + sum(CASE WHEN d_moy = 8 + THEN ws_ext_sales_price * ws_quantity + ELSE 0 END) AS aug_sales, + sum(CASE WHEN d_moy = 9 + THEN ws_ext_sales_price * ws_quantity + ELSE 0 END) AS sep_sales, + sum(CASE WHEN d_moy = 10 + THEN ws_ext_sales_price * ws_quantity + ELSE 0 END) AS oct_sales, + sum(CASE WHEN d_moy = 11 + THEN ws_ext_sales_price * ws_quantity + ELSE 0 END) AS nov_sales, + sum(CASE WHEN d_moy = 12 + THEN ws_ext_sales_price * ws_quantity + ELSE 0 END) AS dec_sales, + sum(CASE WHEN d_moy = 1 + THEN ws_net_paid * ws_quantity + ELSE 0 END) AS jan_net, + sum(CASE WHEN d_moy = 2 + THEN ws_net_paid * ws_quantity + ELSE 0 END) AS feb_net, + sum(CASE WHEN d_moy = 3 + THEN ws_net_paid * ws_quantity + ELSE 0 END) AS mar_net, + sum(CASE WHEN d_moy = 4 + THEN ws_net_paid * ws_quantity + ELSE 0 END) AS apr_net, + sum(CASE WHEN d_moy = 5 + THEN ws_net_paid * ws_quantity + ELSE 0 END) AS may_net, + sum(CASE WHEN d_moy = 6 + THEN ws_net_paid * ws_quantity + ELSE 0 END) AS jun_net, + sum(CASE WHEN d_moy = 7 + THEN ws_net_paid * ws_quantity + ELSE 0 END) AS jul_net, + sum(CASE WHEN d_moy = 8 + THEN ws_net_paid * ws_quantity + ELSE 0 END) AS aug_net, + sum(CASE WHEN d_moy = 9 + THEN ws_net_paid * ws_quantity + ELSE 0 END) AS sep_net, + sum(CASE WHEN d_moy = 10 + THEN ws_net_paid * ws_quantity + ELSE 0 END) AS oct_net, + sum(CASE WHEN d_moy = 11 + THEN ws_net_paid * ws_quantity + ELSE 0 END) AS nov_net, + sum(CASE WHEN d_moy = 12 + THEN ws_net_paid * ws_quantity + ELSE 0 END) AS dec_net + FROM + web_sales, warehouse, date_dim, time_dim, ship_mode + WHERE + ws_warehouse_sk = w_warehouse_sk + AND ws_sold_date_sk = d_date_sk + AND ws_sold_time_sk = t_time_sk + AND ws_ship_mode_sk = sm_ship_mode_sk + AND d_year = 2001 + AND t_time BETWEEN 30838 AND 30838 + 28800 + AND sm_carrier IN ('DHL', 'BARIAN') + GROUP BY + w_warehouse_name, w_warehouse_sq_ft, w_city, w_county, w_state, w_country, d_year) + UNION ALL + (SELECT + w_warehouse_name, + w_warehouse_sq_ft, + w_city, + w_county, + w_state, + w_country, + concat('DHL', ',', 'BARIAN') AS ship_carriers, + d_year AS year, + sum(CASE WHEN d_moy = 1 + THEN cs_sales_price * cs_quantity + ELSE 0 END) AS jan_sales, + sum(CASE WHEN d_moy = 2 + THEN cs_sales_price * cs_quantity + ELSE 0 END) AS feb_sales, + sum(CASE WHEN d_moy = 3 + THEN cs_sales_price * cs_quantity + ELSE 0 END) AS mar_sales, + sum(CASE WHEN d_moy = 4 + THEN cs_sales_price * cs_quantity + ELSE 0 END) AS apr_sales, + sum(CASE WHEN d_moy = 5 + THEN cs_sales_price * cs_quantity + ELSE 0 END) AS may_sales, + sum(CASE WHEN d_moy = 6 + THEN cs_sales_price * cs_quantity + ELSE 0 END) AS jun_sales, + sum(CASE WHEN d_moy = 7 + THEN cs_sales_price * cs_quantity + ELSE 0 END) AS jul_sales, + sum(CASE WHEN d_moy = 8 + THEN cs_sales_price * cs_quantity + ELSE 0 END) AS aug_sales, + sum(CASE WHEN d_moy = 9 + THEN cs_sales_price * cs_quantity + ELSE 0 END) AS sep_sales, + sum(CASE WHEN d_moy = 10 + THEN cs_sales_price * cs_quantity + ELSE 0 END) AS oct_sales, + sum(CASE WHEN d_moy = 11 + THEN cs_sales_price * cs_quantity + ELSE 0 END) AS nov_sales, + sum(CASE WHEN d_moy = 12 + THEN cs_sales_price * cs_quantity + ELSE 0 END) AS dec_sales, + sum(CASE WHEN d_moy = 1 + THEN cs_net_paid_inc_tax * cs_quantity + ELSE 0 END) AS jan_net, + sum(CASE WHEN d_moy = 2 + THEN cs_net_paid_inc_tax * cs_quantity + ELSE 0 END) AS feb_net, + sum(CASE WHEN d_moy = 3 + THEN cs_net_paid_inc_tax * cs_quantity + ELSE 0 END) AS mar_net, + sum(CASE WHEN d_moy = 4 + THEN cs_net_paid_inc_tax * cs_quantity + ELSE 0 END) AS apr_net, + sum(CASE WHEN d_moy = 5 + THEN cs_net_paid_inc_tax * cs_quantity + ELSE 0 END) AS may_net, + sum(CASE WHEN d_moy = 6 + THEN cs_net_paid_inc_tax * cs_quantity + ELSE 0 END) AS jun_net, + sum(CASE WHEN d_moy = 7 + THEN cs_net_paid_inc_tax * cs_quantity + ELSE 0 END) AS jul_net, + sum(CASE WHEN d_moy = 8 + THEN cs_net_paid_inc_tax * cs_quantity + ELSE 0 END) AS aug_net, + sum(CASE WHEN d_moy = 9 + THEN cs_net_paid_inc_tax * cs_quantity + ELSE 0 END) AS sep_net, + sum(CASE WHEN d_moy = 10 + THEN cs_net_paid_inc_tax * cs_quantity + ELSE 0 END) AS oct_net, + sum(CASE WHEN d_moy = 11 + THEN cs_net_paid_inc_tax * cs_quantity + ELSE 0 END) AS nov_net, + sum(CASE WHEN d_moy = 12 + THEN cs_net_paid_inc_tax * cs_quantity + ELSE 0 END) AS dec_net + FROM + catalog_sales, warehouse, date_dim, time_dim, ship_mode + WHERE + cs_warehouse_sk = w_warehouse_sk + AND cs_sold_date_sk = d_date_sk + AND cs_sold_time_sk = t_time_sk + AND cs_ship_mode_sk = sm_ship_mode_sk + AND d_year = 2001 + AND t_time BETWEEN 30838 AND 30838 + 28800 + AND sm_carrier IN ('DHL', 'BARIAN') + GROUP BY + w_warehouse_name, w_warehouse_sq_ft, w_city, w_county, w_state, w_country, d_year + ) + ) x +GROUP BY + w_warehouse_name, w_warehouse_sq_ft, w_city, w_county, w_state, w_country, + ship_carriers, year +ORDER BY w_warehouse_name +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q67.sql b/dev/auron-it/src/main/resources/tpcds-queries/q67.sql new file mode 100755 index 000000000..f66e2252b --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q67.sql @@ -0,0 +1,38 @@ +SELECT * +FROM + (SELECT + i_category, + i_class, + i_brand, + i_product_name, + d_year, + d_qoy, + d_moy, + s_store_id, + sumsales, + rank() + OVER (PARTITION BY i_category + ORDER BY sumsales DESC) rk + FROM + (SELECT + i_category, + i_class, + i_brand, + i_product_name, + d_year, + d_qoy, + d_moy, + s_store_id, + sum(coalesce(ss_sales_price * ss_quantity, 0)) sumsales + FROM store_sales, date_dim, store, item + WHERE ss_sold_date_sk = d_date_sk + AND ss_item_sk = i_item_sk + AND ss_store_sk = s_store_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 + GROUP BY ROLLUP (i_category, i_class, i_brand, i_product_name, d_year, d_qoy, + d_moy, s_store_id)) dw1) dw2 +WHERE rk <= 100 +ORDER BY + i_category, i_class, i_brand, i_product_name, d_year, + d_qoy, d_moy, s_store_id, sumsales, rk +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q68.sql b/dev/auron-it/src/main/resources/tpcds-queries/q68.sql new file mode 100755 index 000000000..adb8a7189 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q68.sql @@ -0,0 +1,34 @@ +SELECT + c_last_name, + c_first_name, + ca_city, + bought_city, + ss_ticket_number, + extended_price, + extended_tax, + list_price +FROM (SELECT + ss_ticket_number, + ss_customer_sk, + ca_city bought_city, + sum(ss_ext_sales_price) extended_price, + sum(ss_ext_list_price) list_price, + sum(ss_ext_tax) extended_tax +FROM store_sales, date_dim, store, household_demographics, customer_address +WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND store_sales.ss_addr_sk = customer_address.ca_address_sk + AND date_dim.d_dom BETWEEN 1 AND 2 + AND (household_demographics.hd_dep_count = 4 OR + household_demographics.hd_vehicle_count = 3) + AND date_dim.d_year IN (1999, 1999 + 1, 1999 + 2) + AND store.s_city IN ('Midway', 'Fairview') +GROUP BY ss_ticket_number, ss_customer_sk, ss_addr_sk, ca_city) dn, + customer, + customer_address current_addr +WHERE ss_customer_sk = c_customer_sk + AND customer.c_current_addr_sk = current_addr.ca_address_sk + AND current_addr.ca_city <> bought_city +ORDER BY c_last_name, ss_ticket_number +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q69.sql b/dev/auron-it/src/main/resources/tpcds-queries/q69.sql new file mode 100755 index 000000000..1f0ee64f5 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q69.sql @@ -0,0 +1,38 @@ +SELECT + cd_gender, + cd_marital_status, + cd_education_status, + count(*) cnt1, + cd_purchase_estimate, + count(*) cnt2, + cd_credit_rating, + count(*) cnt3 +FROM + customer c, customer_address ca, customer_demographics +WHERE + c.c_current_addr_sk = ca.ca_address_sk AND + ca_state IN ('KY', 'GA', 'NM') AND + cd_demo_sk = c.c_current_cdemo_sk AND + exists(SELECT * + FROM store_sales, date_dim + WHERE c.c_customer_sk = ss_customer_sk AND + ss_sold_date_sk = d_date_sk AND + d_year = 2001 AND + d_moy BETWEEN 4 AND 4 + 2) AND + (NOT exists(SELECT * + FROM web_sales, date_dim + WHERE c.c_customer_sk = ws_bill_customer_sk AND + ws_sold_date_sk = d_date_sk AND + d_year = 2001 AND + d_moy BETWEEN 4 AND 4 + 2) AND + NOT exists(SELECT * + FROM catalog_sales, date_dim + WHERE c.c_customer_sk = cs_ship_customer_sk AND + cs_sold_date_sk = d_date_sk AND + d_year = 2001 AND + d_moy BETWEEN 4 AND 4 + 2)) +GROUP BY cd_gender, cd_marital_status, cd_education_status, + cd_purchase_estimate, cd_credit_rating +ORDER BY cd_gender, cd_marital_status, cd_education_status, + cd_purchase_estimate, cd_credit_rating +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q7.sql b/dev/auron-it/src/main/resources/tpcds-queries/q7.sql new file mode 100755 index 000000000..6630a0054 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q7.sql @@ -0,0 +1,19 @@ +SELECT + i_item_id, + avg(ss_quantity) agg1, + avg(ss_list_price) agg2, + avg(ss_coupon_amt) agg3, + avg(ss_sales_price) agg4 +FROM store_sales, customer_demographics, date_dim, item, promotion +WHERE ss_sold_date_sk = d_date_sk AND + ss_item_sk = i_item_sk AND + ss_cdemo_sk = cd_demo_sk AND + ss_promo_sk = p_promo_sk AND + cd_gender = 'M' AND + cd_marital_status = 'S' AND + cd_education_status = 'College' AND + (p_channel_email = 'N' OR p_channel_event = 'N') AND + d_year = 2000 +GROUP BY i_item_id +ORDER BY i_item_id +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q70.sql b/dev/auron-it/src/main/resources/tpcds-queries/q70.sql new file mode 100755 index 000000000..625011b21 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q70.sql @@ -0,0 +1,38 @@ +SELECT + sum(ss_net_profit) AS total_sum, + s_state, + s_county, + grouping(s_state) + grouping(s_county) AS lochierarchy, + rank() + OVER ( + PARTITION BY grouping(s_state) + grouping(s_county), + CASE WHEN grouping(s_county) = 0 + THEN s_state END + ORDER BY sum(ss_net_profit) DESC) AS rank_within_parent +FROM + store_sales, date_dim d1, store +WHERE + d1.d_month_seq BETWEEN 1200 AND 1200 + 11 + AND d1.d_date_sk = ss_sold_date_sk + AND s_store_sk = ss_store_sk + AND s_state IN + (SELECT s_state + FROM + (SELECT + s_state AS s_state, + rank() + OVER (PARTITION BY s_state + ORDER BY sum(ss_net_profit) DESC) AS ranking + FROM store_sales, store, date_dim + WHERE d_month_seq BETWEEN 1200 AND 1200 + 11 + AND d_date_sk = ss_sold_date_sk + AND s_store_sk = ss_store_sk + GROUP BY s_state) tmp1 + WHERE ranking <= 5) +GROUP BY ROLLUP (s_state, s_county) +ORDER BY + lochierarchy DESC + , CASE WHEN lochierarchy = 0 + THEN s_state END + , rank_within_parent +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q71.sql b/dev/auron-it/src/main/resources/tpcds-queries/q71.sql new file mode 100755 index 000000000..8d724b924 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q71.sql @@ -0,0 +1,44 @@ +SELECT + i_brand_id brand_id, + i_brand brand, + t_hour, + t_minute, + sum(ext_price) ext_price +FROM item, + (SELECT + ws_ext_sales_price AS ext_price, + ws_sold_date_sk AS sold_date_sk, + ws_item_sk AS sold_item_sk, + ws_sold_time_sk AS time_sk + FROM web_sales, date_dim + WHERE d_date_sk = ws_sold_date_sk + AND d_moy = 11 + AND d_year = 1999 + UNION ALL + SELECT + cs_ext_sales_price AS ext_price, + cs_sold_date_sk AS sold_date_sk, + cs_item_sk AS sold_item_sk, + cs_sold_time_sk AS time_sk + FROM catalog_sales, date_dim + WHERE d_date_sk = cs_sold_date_sk + AND d_moy = 11 + AND d_year = 1999 + UNION ALL + SELECT + ss_ext_sales_price AS ext_price, + ss_sold_date_sk AS sold_date_sk, + ss_item_sk AS sold_item_sk, + ss_sold_time_sk AS time_sk + FROM store_sales, date_dim + WHERE d_date_sk = ss_sold_date_sk + AND d_moy = 11 + AND d_year = 1999 + ) AS tmp, time_dim +WHERE + sold_item_sk = i_item_sk + AND i_manager_id = 1 + AND time_sk = t_time_sk + AND (t_meal_time = 'breakfast' OR t_meal_time = 'dinner') +GROUP BY i_brand, i_brand_id, t_hour, t_minute +ORDER BY ext_price DESC, brand_id diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q72.sql b/dev/auron-it/src/main/resources/tpcds-queries/q72.sql new file mode 100755 index 000000000..99b3eee54 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q72.sql @@ -0,0 +1,33 @@ +SELECT + i_item_desc, + w_warehouse_name, + d1.d_week_seq, + count(CASE WHEN p_promo_sk IS NULL + THEN 1 + ELSE 0 END) no_promo, + count(CASE WHEN p_promo_sk IS NOT NULL + THEN 1 + ELSE 0 END) promo, + count(*) total_cnt +FROM catalog_sales + JOIN inventory ON (cs_item_sk = inv_item_sk) + JOIN warehouse ON (w_warehouse_sk = inv_warehouse_sk) + JOIN item ON (i_item_sk = cs_item_sk) + JOIN customer_demographics ON (cs_bill_cdemo_sk = cd_demo_sk) + JOIN household_demographics ON (cs_bill_hdemo_sk = hd_demo_sk) + JOIN date_dim d1 ON (cs_sold_date_sk = d1.d_date_sk) + JOIN date_dim d2 ON (inv_date_sk = d2.d_date_sk) + JOIN date_dim d3 ON (cs_ship_date_sk = d3.d_date_sk) + LEFT OUTER JOIN promotion ON (cs_promo_sk = p_promo_sk) + LEFT OUTER JOIN catalog_returns ON (cr_item_sk = cs_item_sk AND cr_order_number = cs_order_number) +WHERE d1.d_week_seq = d2.d_week_seq + AND inv_quantity_on_hand < cs_quantity + AND d3.d_date > (cast(d1.d_date AS DATE) + interval 5 days) + AND hd_buy_potential = '>10000' + AND d1.d_year = 1999 + AND hd_buy_potential = '>10000' + AND cd_marital_status = 'D' + AND d1.d_year = 1999 +GROUP BY i_item_desc, w_warehouse_name, d1.d_week_seq +ORDER BY total_cnt DESC, i_item_desc, w_warehouse_name, d_week_seq +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q73.sql b/dev/auron-it/src/main/resources/tpcds-queries/q73.sql new file mode 100755 index 000000000..881be2e90 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q73.sql @@ -0,0 +1,30 @@ +SELECT + c_last_name, + c_first_name, + c_salutation, + c_preferred_cust_flag, + ss_ticket_number, + cnt +FROM + (SELECT + ss_ticket_number, + ss_customer_sk, + count(*) cnt + FROM store_sales, date_dim, store, household_demographics + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND date_dim.d_dom BETWEEN 1 AND 2 + AND (household_demographics.hd_buy_potential = '>10000' OR + household_demographics.hd_buy_potential = 'unknown') + AND household_demographics.hd_vehicle_count > 0 + AND CASE WHEN household_demographics.hd_vehicle_count > 0 + THEN + household_demographics.hd_dep_count / household_demographics.hd_vehicle_count + ELSE NULL END > 1 + AND date_dim.d_year IN (1999, 1999 + 1, 1999 + 2) + AND store.s_county IN ('Williamson County', 'Franklin Parish', 'Bronx County', 'Orange County') + GROUP BY ss_ticket_number, ss_customer_sk) dj, customer +WHERE ss_customer_sk = c_customer_sk + AND cnt BETWEEN 1 AND 5 +ORDER BY cnt DESC diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q74.sql b/dev/auron-it/src/main/resources/tpcds-queries/q74.sql new file mode 100755 index 000000000..154b26d68 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q74.sql @@ -0,0 +1,58 @@ +WITH year_total AS ( + SELECT + c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + d_year AS year, + sum(ss_net_paid) year_total, + 's' sale_type + FROM + customer, store_sales, date_dim + WHERE c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year IN (2001, 2001 + 1) + GROUP BY + c_customer_id, c_first_name, c_last_name, d_year + UNION ALL + SELECT + c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + d_year AS year, + sum(ws_net_paid) year_total, + 'w' sale_type + FROM + customer, web_sales, date_dim + WHERE c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + AND d_year IN (2001, 2001 + 1) + GROUP BY + c_customer_id, c_first_name, c_last_name, d_year) +SELECT + t_s_secyear.customer_id, + t_s_secyear.customer_first_name, + t_s_secyear.customer_last_name +FROM + year_total t_s_firstyear, year_total t_s_secyear, + year_total t_w_firstyear, year_total t_w_secyear +WHERE t_s_secyear.customer_id = t_s_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_secyear.customer_id + AND t_s_firstyear.customer_id = t_w_firstyear.customer_id + AND t_s_firstyear.sale_type = 's' + AND t_w_firstyear.sale_type = 'w' + AND t_s_secyear.sale_type = 's' + AND t_w_secyear.sale_type = 'w' + AND t_s_firstyear.year = 2001 + AND t_s_secyear.year = 2001 + 1 + AND t_w_firstyear.year = 2001 + AND t_w_secyear.year = 2001 + 1 + AND t_s_firstyear.year_total > 0 + AND t_w_firstyear.year_total > 0 + AND CASE WHEN t_w_firstyear.year_total > 0 + THEN t_w_secyear.year_total / t_w_firstyear.year_total + ELSE NULL END + > CASE WHEN t_s_firstyear.year_total > 0 + THEN t_s_secyear.year_total / t_s_firstyear.year_total + ELSE NULL END +ORDER BY 1, 1, 1 +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q75.sql b/dev/auron-it/src/main/resources/tpcds-queries/q75.sql new file mode 100755 index 000000000..c916bfbeb --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q75.sql @@ -0,0 +1,76 @@ +WITH all_sales AS ( + SELECT + d_year, + i_brand_id, + i_class_id, + i_category_id, + i_manufact_id, + SUM(sales_cnt) AS sales_cnt, + SUM(sales_amt) AS sales_amt + FROM ( + SELECT + d_year, + i_brand_id, + i_class_id, + i_category_id, + i_manufact_id, + cs_quantity - COALESCE(cr_return_quantity, 0) AS sales_cnt, + cs_ext_sales_price - COALESCE(cr_return_amount, 0.0) AS sales_amt + FROM catalog_sales + JOIN item ON i_item_sk = cs_item_sk + JOIN date_dim ON d_date_sk = cs_sold_date_sk + LEFT JOIN catalog_returns ON (cs_order_number = cr_order_number + AND cs_item_sk = cr_item_sk) + WHERE i_category = 'Books' + UNION + SELECT + d_year, + i_brand_id, + i_class_id, + i_category_id, + i_manufact_id, + ss_quantity - COALESCE(sr_return_quantity, 0) AS sales_cnt, + ss_ext_sales_price - COALESCE(sr_return_amt, 0.0) AS sales_amt + FROM store_sales + JOIN item ON i_item_sk = ss_item_sk + JOIN date_dim ON d_date_sk = ss_sold_date_sk + LEFT JOIN store_returns ON (ss_ticket_number = sr_ticket_number + AND ss_item_sk = sr_item_sk) + WHERE i_category = 'Books' + UNION + SELECT + d_year, + i_brand_id, + i_class_id, + i_category_id, + i_manufact_id, + ws_quantity - COALESCE(wr_return_quantity, 0) AS sales_cnt, + ws_ext_sales_price - COALESCE(wr_return_amt, 0.0) AS sales_amt + FROM web_sales + JOIN item ON i_item_sk = ws_item_sk + JOIN date_dim ON d_date_sk = ws_sold_date_sk + LEFT JOIN web_returns ON (ws_order_number = wr_order_number + AND ws_item_sk = wr_item_sk) + WHERE i_category = 'Books') sales_detail + GROUP BY d_year, i_brand_id, i_class_id, i_category_id, i_manufact_id) +SELECT + prev_yr.d_year AS prev_year, + curr_yr.d_year AS year, + curr_yr.i_brand_id, + curr_yr.i_class_id, + curr_yr.i_category_id, + curr_yr.i_manufact_id, + prev_yr.sales_cnt AS prev_yr_cnt, + curr_yr.sales_cnt AS curr_yr_cnt, + curr_yr.sales_cnt - prev_yr.sales_cnt AS sales_cnt_diff, + curr_yr.sales_amt - prev_yr.sales_amt AS sales_amt_diff +FROM all_sales curr_yr, all_sales prev_yr +WHERE curr_yr.i_brand_id = prev_yr.i_brand_id + AND curr_yr.i_class_id = prev_yr.i_class_id + AND curr_yr.i_category_id = prev_yr.i_category_id + AND curr_yr.i_manufact_id = prev_yr.i_manufact_id + AND curr_yr.d_year = 2002 + AND prev_yr.d_year = 2002 - 1 + AND CAST(curr_yr.sales_cnt AS DECIMAL(17, 2)) / CAST(prev_yr.sales_cnt AS DECIMAL(17, 2)) < 0.9 +ORDER BY sales_cnt_diff, sales_amt_diff +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q76.sql b/dev/auron-it/src/main/resources/tpcds-queries/q76.sql new file mode 100755 index 000000000..815fa922b --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q76.sql @@ -0,0 +1,47 @@ +SELECT + channel, + col_name, + d_year, + d_qoy, + i_category, + COUNT(*) sales_cnt, + SUM(ext_sales_price) sales_amt +FROM ( + SELECT + 'store' AS channel, + ss_store_sk col_name, + d_year, + d_qoy, + i_category, + ss_ext_sales_price ext_sales_price + FROM store_sales, item, date_dim + WHERE ss_store_sk IS NULL + AND ss_sold_date_sk = d_date_sk + AND ss_item_sk = i_item_sk + UNION ALL + SELECT + 'web' AS channel, + ws_ship_customer_sk col_name, + d_year, + d_qoy, + i_category, + ws_ext_sales_price ext_sales_price + FROM web_sales, item, date_dim + WHERE ws_ship_customer_sk IS NULL + AND ws_sold_date_sk = d_date_sk + AND ws_item_sk = i_item_sk + UNION ALL + SELECT + 'catalog' AS channel, + cs_ship_addr_sk col_name, + d_year, + d_qoy, + i_category, + cs_ext_sales_price ext_sales_price + FROM catalog_sales, item, date_dim + WHERE cs_ship_addr_sk IS NULL + AND cs_sold_date_sk = d_date_sk + AND cs_item_sk = i_item_sk) foo +GROUP BY channel, col_name, d_year, d_qoy, i_category +ORDER BY channel, col_name, d_year, d_qoy, i_category +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q77.sql b/dev/auron-it/src/main/resources/tpcds-queries/q77.sql new file mode 100755 index 000000000..e3cb5cff9 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q77.sql @@ -0,0 +1,100 @@ +WITH ss AS +(SELECT + s_store_sk, + sum(ss_ext_sales_price) AS sales, + sum(ss_net_profit) AS profit + FROM store_sales, date_dim, store + WHERE ss_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-03' AS DATE) AND + (cast('2000-08-03' AS DATE) + INTERVAL 30 days) + AND ss_store_sk = s_store_sk + GROUP BY s_store_sk), + sr AS + (SELECT + s_store_sk, + sum(sr_return_amt) AS returns, + sum(sr_net_loss) AS profit_loss + FROM store_returns, date_dim, store + WHERE sr_returned_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-03' AS DATE) AND + (cast('2000-08-03' AS DATE) + INTERVAL 30 days) + AND sr_store_sk = s_store_sk + GROUP BY s_store_sk), + cs AS + (SELECT + cs_call_center_sk, + sum(cs_ext_sales_price) AS sales, + sum(cs_net_profit) AS profit + FROM catalog_sales, date_dim + WHERE cs_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-03' AS DATE) AND + (cast('2000-08-03' AS DATE) + INTERVAL 30 days) + GROUP BY cs_call_center_sk), + cr AS + (SELECT + sum(cr_return_amount) AS returns, + sum(cr_net_loss) AS profit_loss + FROM catalog_returns, date_dim + WHERE cr_returned_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-03' AS DATE) AND + (cast('2000-08-03' AS DATE) + INTERVAL 30 days)), + ws AS + (SELECT + wp_web_page_sk, + sum(ws_ext_sales_price) AS sales, + sum(ws_net_profit) AS profit + FROM web_sales, date_dim, web_page + WHERE ws_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-03' AS DATE) AND + (cast('2000-08-03' AS DATE) + INTERVAL 30 days) + AND ws_web_page_sk = wp_web_page_sk + GROUP BY wp_web_page_sk), + wr AS + (SELECT + wp_web_page_sk, + sum(wr_return_amt) AS returns, + sum(wr_net_loss) AS profit_loss + FROM web_returns, date_dim, web_page + WHERE wr_returned_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-03' AS DATE) AND + (cast('2000-08-03' AS DATE) + INTERVAL 30 days) + AND wr_web_page_sk = wp_web_page_sk + GROUP BY wp_web_page_sk) +SELECT + channel, + id, + sum(sales) AS sales, + sum(returns) AS returns, + sum(profit) AS profit +FROM + (SELECT + 'store channel' AS channel, + ss.s_store_sk AS id, + sales, + coalesce(returns, 0) AS returns, + (profit - coalesce(profit_loss, 0)) AS profit + FROM ss + LEFT JOIN sr + ON ss.s_store_sk = sr.s_store_sk + UNION ALL + SELECT + 'catalog channel' AS channel, + cs_call_center_sk AS id, + sales, + returns, + (profit - profit_loss) AS profit + FROM cs, cr + UNION ALL + SELECT + 'web channel' AS channel, + ws.wp_web_page_sk AS id, + sales, + coalesce(returns, 0) returns, + (profit - coalesce(profit_loss, 0)) AS profit + FROM ws + LEFT JOIN wr + ON ws.wp_web_page_sk = wr.wp_web_page_sk + ) x +GROUP BY ROLLUP (channel, id) +ORDER BY channel, id, sales +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q78.sql b/dev/auron-it/src/main/resources/tpcds-queries/q78.sql new file mode 100755 index 000000000..07b0940e2 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q78.sql @@ -0,0 +1,64 @@ +WITH ws AS +(SELECT + d_year AS ws_sold_year, + ws_item_sk, + ws_bill_customer_sk ws_customer_sk, + sum(ws_quantity) ws_qty, + sum(ws_wholesale_cost) ws_wc, + sum(ws_sales_price) ws_sp + FROM web_sales + LEFT JOIN web_returns ON wr_order_number = ws_order_number AND ws_item_sk = wr_item_sk + JOIN date_dim ON ws_sold_date_sk = d_date_sk + WHERE wr_order_number IS NULL + GROUP BY d_year, ws_item_sk, ws_bill_customer_sk +), + cs AS + (SELECT + d_year AS cs_sold_year, + cs_item_sk, + cs_bill_customer_sk cs_customer_sk, + sum(cs_quantity) cs_qty, + sum(cs_wholesale_cost) cs_wc, + sum(cs_sales_price) cs_sp + FROM catalog_sales + LEFT JOIN catalog_returns ON cr_order_number = cs_order_number AND cs_item_sk = cr_item_sk + JOIN date_dim ON cs_sold_date_sk = d_date_sk + WHERE cr_order_number IS NULL + GROUP BY d_year, cs_item_sk, cs_bill_customer_sk + ), + ss AS + (SELECT + d_year AS ss_sold_year, + ss_item_sk, + ss_customer_sk, + sum(ss_quantity) ss_qty, + sum(ss_wholesale_cost) ss_wc, + sum(ss_sales_price) ss_sp + FROM store_sales + LEFT JOIN store_returns ON sr_ticket_number = ss_ticket_number AND ss_item_sk = sr_item_sk + JOIN date_dim ON ss_sold_date_sk = d_date_sk + WHERE sr_ticket_number IS NULL + GROUP BY d_year, ss_item_sk, ss_customer_sk + ) +SELECT + round(ss_qty / (coalesce(ws_qty + cs_qty, 1)), 2) ratio, + ss_qty store_qty, + ss_wc store_wholesale_cost, + ss_sp store_sales_price, + coalesce(ws_qty, 0) + coalesce(cs_qty, 0) other_chan_qty, + coalesce(ws_wc, 0) + coalesce(cs_wc, 0) other_chan_wholesale_cost, + coalesce(ws_sp, 0) + coalesce(cs_sp, 0) other_chan_sales_price +FROM ss + LEFT JOIN ws + ON (ws_sold_year = ss_sold_year AND ws_item_sk = ss_item_sk AND ws_customer_sk = ss_customer_sk) + LEFT JOIN cs + ON (cs_sold_year = ss_sold_year AND cs_item_sk = ss_item_sk AND cs_customer_sk = ss_customer_sk) +WHERE coalesce(ws_qty, 0) > 0 AND coalesce(cs_qty, 0) > 0 AND ss_sold_year = 2000 +ORDER BY + ratio, + ss_qty DESC, ss_wc DESC, ss_sp DESC, + other_chan_qty, + other_chan_wholesale_cost, + other_chan_sales_price, + round(ss_qty / (coalesce(ws_qty + cs_qty, 1)), 2) +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q79.sql b/dev/auron-it/src/main/resources/tpcds-queries/q79.sql new file mode 100755 index 000000000..d0b3ee488 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q79.sql @@ -0,0 +1,27 @@ +SELECT + c_last_name, + c_first_name, + substr(s_city, 1, 30), + ss_ticket_number, + amt, + profit +FROM + (SELECT + ss_ticket_number, + ss_customer_sk, + store.s_city, + sum(ss_coupon_amt) amt, + sum(ss_net_profit) profit + FROM store_sales, date_dim, store, household_demographics + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND (household_demographics.hd_dep_count = 6 OR + household_demographics.hd_vehicle_count > 2) + AND date_dim.d_dow = 1 + AND date_dim.d_year IN (1999, 1999 + 1, 1999 + 2) + AND store.s_number_employees BETWEEN 200 AND 295 + GROUP BY ss_ticket_number, ss_customer_sk, ss_addr_sk, store.s_city) ms, customer +WHERE ss_customer_sk = c_customer_sk +ORDER BY c_last_name, c_first_name, substr(s_city, 1, 30), ss_ticket_number, profit +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q8.sql b/dev/auron-it/src/main/resources/tpcds-queries/q8.sql new file mode 100755 index 000000000..497725111 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q8.sql @@ -0,0 +1,87 @@ +SELECT + s_store_name, + sum(ss_net_profit) +FROM store_sales, date_dim, store, + (SELECT ca_zip + FROM ( + (SELECT substr(ca_zip, 1, 5) ca_zip + FROM customer_address + WHERE substr(ca_zip, 1, 5) IN ( + '24128','76232','65084','87816','83926','77556','20548', + '26231','43848','15126','91137','61265','98294','25782', + '17920','18426','98235','40081','84093','28577','55565', + '17183','54601','67897','22752','86284','18376','38607', + '45200','21756','29741','96765','23932','89360','29839', + '25989','28898','91068','72550','10390','18845','47770', + '82636','41367','76638','86198','81312','37126','39192', + '88424','72175','81426','53672','10445','42666','66864', + '66708','41248','48583','82276','18842','78890','49448', + '14089','38122','34425','79077','19849','43285','39861', + '66162','77610','13695','99543','83444','83041','12305', + '57665','68341','25003','57834','62878','49130','81096', + '18840','27700','23470','50412','21195','16021','76107', + '71954','68309','18119','98359','64544','10336','86379', + '27068','39736','98569','28915','24206','56529','57647', + '54917','42961','91110','63981','14922','36420','23006', + '67467','32754','30903','20260','31671','51798','72325', + '85816','68621','13955','36446','41766','68806','16725', + '15146','22744','35850','88086','51649','18270','52867', + '39972','96976','63792','11376','94898','13595','10516', + '90225','58943','39371','94945','28587','96576','57855', + '28488','26105','83933','25858','34322','44438','73171', + '30122','34102','22685','71256','78451','54364','13354', + '45375','40558','56458','28286','45266','47305','69399', + '83921','26233','11101','15371','69913','35942','15882', + '25631','24610','44165','99076','33786','70738','26653', + '14328','72305','62496','22152','10144','64147','48425', + '14663','21076','18799','30450','63089','81019','68893', + '24996','51200','51211','45692','92712','70466','79994', + '22437','25280','38935','71791','73134','56571','14060', + '19505','72425','56575','74351','68786','51650','20004', + '18383','76614','11634','18906','15765','41368','73241', + '76698','78567','97189','28545','76231','75691','22246', + '51061','90578','56691','68014','51103','94167','57047', + '14867','73520','15734','63435','25733','35474','24676', + '94627','53535','17879','15559','53268','59166','11928', + '59402','33282','45721','43933','68101','33515','36634', + '71286','19736','58058','55253','67473','41918','19515', + '36495','19430','22351','77191','91393','49156','50298', + '87501','18652','53179','18767','63193','23968','65164', + '68880','21286','72823','58470','67301','13394','31016', + '70372','67030','40604','24317','45748','39127','26065', + '77721','31029','31880','60576','24671','45549','13376', + '50016','33123','19769','22927','97789','46081','72151', + '15723','46136','51949','68100','96888','64528','14171', + '79777','28709','11489','25103','32213','78668','22245', + '15798','27156','37930','62971','21337','51622','67853', + '10567','38415','15455','58263','42029','60279','37125', + '56240','88190','50308','26859','64457','89091','82136', + '62377','36233','63837','58078','17043','30010','60099', + '28810','98025','29178','87343','73273','30469','64034', + '39516','86057','21309','90257','67875','40162','11356', + '73650','61810','72013','30431','22461','19512','13375', + '55307','30625','83849','68908','26689','96451','38193', + '46820','88885','84935','69035','83144','47537','56616', + '94983','48033','69952','25486','61547','27385','61860', + '58048','56910','16807','17871','35258','31387','35458', + '35576')) + INTERSECT + (SELECT ca_zip + FROM + (SELECT + substr(ca_zip, 1, 5) ca_zip, + count(*) cnt + FROM customer_address, customer + WHERE ca_address_sk = c_current_addr_sk AND + c_preferred_cust_flag = 'Y' + GROUP BY ca_zip + HAVING count(*) > 10) A1) + ) A2 + ) V1 +WHERE ss_store_sk = s_store_sk + AND ss_sold_date_sk = d_date_sk + AND d_qoy = 2 AND d_year = 1998 + AND (substr(s_zip, 1, 2) = substr(V1.ca_zip, 1, 2)) +GROUP BY s_store_name +ORDER BY s_store_name +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q80.sql b/dev/auron-it/src/main/resources/tpcds-queries/q80.sql new file mode 100755 index 000000000..433db87d2 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q80.sql @@ -0,0 +1,94 @@ +WITH ssr AS +(SELECT + s_store_id AS store_id, + sum(ss_ext_sales_price) AS sales, + sum(coalesce(sr_return_amt, 0)) AS returns, + sum(ss_net_profit - coalesce(sr_net_loss, 0)) AS profit + FROM store_sales + LEFT OUTER JOIN store_returns ON + (ss_item_sk = sr_item_sk AND + ss_ticket_number = sr_ticket_number) + , + date_dim, store, item, promotion + WHERE ss_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS DATE) + AND (cast('2000-08-23' AS DATE) + INTERVAL 30 days) + AND ss_store_sk = s_store_sk + AND ss_item_sk = i_item_sk + AND i_current_price > 50 + AND ss_promo_sk = p_promo_sk + AND p_channel_tv = 'N' + GROUP BY s_store_id), + csr AS + (SELECT + cp_catalog_page_id AS catalog_page_id, + sum(cs_ext_sales_price) AS sales, + sum(coalesce(cr_return_amount, 0)) AS returns, + sum(cs_net_profit - coalesce(cr_net_loss, 0)) AS profit + FROM catalog_sales + LEFT OUTER JOIN catalog_returns ON + (cs_item_sk = cr_item_sk AND + cs_order_number = cr_order_number) + , + date_dim, catalog_page, item, promotion + WHERE cs_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS DATE) + AND (cast('2000-08-23' AS DATE) + INTERVAL 30 days) + AND cs_catalog_page_sk = cp_catalog_page_sk + AND cs_item_sk = i_item_sk + AND i_current_price > 50 + AND cs_promo_sk = p_promo_sk + AND p_channel_tv = 'N' + GROUP BY cp_catalog_page_id), + wsr AS + (SELECT + web_site_id, + sum(ws_ext_sales_price) AS sales, + sum(coalesce(wr_return_amt, 0)) AS returns, + sum(ws_net_profit - coalesce(wr_net_loss, 0)) AS profit + FROM web_sales + LEFT OUTER JOIN web_returns ON + (ws_item_sk = wr_item_sk AND ws_order_number = wr_order_number) + , + date_dim, web_site, item, promotion + WHERE ws_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS DATE) + AND (cast('2000-08-23' AS DATE) + INTERVAL 30 days) + AND ws_web_site_sk = web_site_sk + AND ws_item_sk = i_item_sk + AND i_current_price > 50 + AND ws_promo_sk = p_promo_sk + AND p_channel_tv = 'N' + GROUP BY web_site_id) +SELECT + channel, + id, + sum(sales) AS sales, + sum(returns) AS returns, + sum(profit) AS profit +FROM (SELECT + 'store channel' AS channel, + concat('store', store_id) AS id, + sales, + returns, + profit + FROM ssr + UNION ALL + SELECT + 'catalog channel' AS channel, + concat('catalog_page', catalog_page_id) AS id, + sales, + returns, + profit + FROM csr + UNION ALL + SELECT + 'web channel' AS channel, + concat('web_site', web_site_id) AS id, + sales, + returns, + profit + FROM wsr) x +GROUP BY ROLLUP (channel, id) +ORDER BY channel, id +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q81.sql b/dev/auron-it/src/main/resources/tpcds-queries/q81.sql new file mode 100755 index 000000000..18f0ffa7e --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q81.sql @@ -0,0 +1,38 @@ +WITH customer_total_return AS +(SELECT + cr_returning_customer_sk AS ctr_customer_sk, + ca_state AS ctr_state, + sum(cr_return_amt_inc_tax) AS ctr_total_return + FROM catalog_returns, date_dim, customer_address + WHERE cr_returned_date_sk = d_date_sk + AND d_year = 2000 + AND cr_returning_addr_sk = ca_address_sk + GROUP BY cr_returning_customer_sk, ca_state ) +SELECT + c_customer_id, + c_salutation, + c_first_name, + c_last_name, + ca_street_number, + ca_street_name, + ca_street_type, + ca_suite_number, + ca_city, + ca_county, + ca_state, + ca_zip, + ca_country, + ca_gmt_offset, + ca_location_type, + ctr_total_return +FROM customer_total_return ctr1, customer_address, customer +WHERE ctr1.ctr_total_return > (SELECT avg(ctr_total_return) * 1.2 +FROM customer_total_return ctr2 +WHERE ctr1.ctr_state = ctr2.ctr_state) + AND ca_address_sk = c_current_addr_sk + AND ca_state = 'GA' + AND ctr1.ctr_customer_sk = c_customer_sk +ORDER BY c_customer_id, c_salutation, c_first_name, c_last_name, ca_street_number, ca_street_name + , ca_street_type, ca_suite_number, ca_city, ca_county, ca_state, ca_zip, ca_country, ca_gmt_offset + , ca_location_type, ctr_total_return +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q82.sql b/dev/auron-it/src/main/resources/tpcds-queries/q82.sql new file mode 100755 index 000000000..20942cfeb --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q82.sql @@ -0,0 +1,15 @@ +SELECT + i_item_id, + i_item_desc, + i_current_price +FROM item, inventory, date_dim, store_sales +WHERE i_current_price BETWEEN 62 AND 62 + 30 + AND inv_item_sk = i_item_sk + AND d_date_sk = inv_date_sk + AND d_date BETWEEN cast('2000-05-25' AS DATE) AND (cast('2000-05-25' AS DATE) + INTERVAL 60 days) + AND i_manufact_id IN (129, 270, 821, 423) + AND inv_quantity_on_hand BETWEEN 100 AND 500 + AND ss_item_sk = i_item_sk +GROUP BY i_item_id, i_item_desc, i_current_price +ORDER BY i_item_id +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q83.sql b/dev/auron-it/src/main/resources/tpcds-queries/q83.sql new file mode 100755 index 000000000..53c10c7de --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q83.sql @@ -0,0 +1,56 @@ +WITH sr_items AS +(SELECT + i_item_id item_id, + sum(sr_return_quantity) sr_item_qty + FROM store_returns, item, date_dim + WHERE sr_item_sk = i_item_sk + AND d_date IN (SELECT d_date + FROM date_dim + WHERE d_week_seq IN + (SELECT d_week_seq + FROM date_dim + WHERE d_date IN ('2000-06-30', '2000-09-27', '2000-11-17'))) + AND sr_returned_date_sk = d_date_sk + GROUP BY i_item_id), + cr_items AS + (SELECT + i_item_id item_id, + sum(cr_return_quantity) cr_item_qty + FROM catalog_returns, item, date_dim + WHERE cr_item_sk = i_item_sk + AND d_date IN (SELECT d_date + FROM date_dim + WHERE d_week_seq IN + (SELECT d_week_seq + FROM date_dim + WHERE d_date IN ('2000-06-30', '2000-09-27', '2000-11-17'))) + AND cr_returned_date_sk = d_date_sk + GROUP BY i_item_id), + wr_items AS + (SELECT + i_item_id item_id, + sum(wr_return_quantity) wr_item_qty + FROM web_returns, item, date_dim + WHERE wr_item_sk = i_item_sk AND d_date IN + (SELECT d_date + FROM date_dim + WHERE d_week_seq IN + (SELECT d_week_seq + FROM date_dim + WHERE d_date IN ('2000-06-30', '2000-09-27', '2000-11-17'))) + AND wr_returned_date_sk = d_date_sk + GROUP BY i_item_id) +SELECT + sr_items.item_id, + sr_item_qty, + sr_item_qty / (sr_item_qty + cr_item_qty + wr_item_qty) / 3.0 * 100 sr_dev, + cr_item_qty, + cr_item_qty / (sr_item_qty + cr_item_qty + wr_item_qty) / 3.0 * 100 cr_dev, + wr_item_qty, + wr_item_qty / (sr_item_qty + cr_item_qty + wr_item_qty) / 3.0 * 100 wr_dev, + (sr_item_qty + cr_item_qty + wr_item_qty) / 3.0 average +FROM sr_items, cr_items, wr_items +WHERE sr_items.item_id = cr_items.item_id + AND sr_items.item_id = wr_items.item_id +ORDER BY sr_items.item_id, sr_item_qty +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q84.sql b/dev/auron-it/src/main/resources/tpcds-queries/q84.sql new file mode 100755 index 000000000..a1076b57c --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q84.sql @@ -0,0 +1,19 @@ +SELECT + c_customer_id AS customer_id, + concat(c_last_name, ', ', c_first_name) AS customername +FROM customer + , customer_address + , customer_demographics + , household_demographics + , income_band + , store_returns +WHERE ca_city = 'Edgewood' + AND c_current_addr_sk = ca_address_sk + AND ib_lower_bound >= 38128 + AND ib_upper_bound <= 38128 + 50000 + AND ib_income_band_sk = hd_income_band_sk + AND cd_demo_sk = c_current_cdemo_sk + AND hd_demo_sk = c_current_hdemo_sk + AND sr_cdemo_sk = cd_demo_sk +ORDER BY c_customer_id +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q85.sql b/dev/auron-it/src/main/resources/tpcds-queries/q85.sql new file mode 100755 index 000000000..cf718b0f8 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q85.sql @@ -0,0 +1,82 @@ +SELECT + substr(r_reason_desc, 1, 20), + avg(ws_quantity), + avg(wr_refunded_cash), + avg(wr_fee) +FROM web_sales, web_returns, web_page, customer_demographics cd1, + customer_demographics cd2, customer_address, date_dim, reason +WHERE ws_web_page_sk = wp_web_page_sk + AND ws_item_sk = wr_item_sk + AND ws_order_number = wr_order_number + AND ws_sold_date_sk = d_date_sk AND d_year = 2000 + AND cd1.cd_demo_sk = wr_refunded_cdemo_sk + AND cd2.cd_demo_sk = wr_returning_cdemo_sk + AND ca_address_sk = wr_refunded_addr_sk + AND r_reason_sk = wr_reason_sk + AND + ( + ( + cd1.cd_marital_status = 'M' + AND + cd1.cd_marital_status = cd2.cd_marital_status + AND + cd1.cd_education_status = 'Advanced Degree' + AND + cd1.cd_education_status = cd2.cd_education_status + AND + ws_sales_price BETWEEN 100.00 AND 150.00 + ) + OR + ( + cd1.cd_marital_status = 'S' + AND + cd1.cd_marital_status = cd2.cd_marital_status + AND + cd1.cd_education_status = 'College' + AND + cd1.cd_education_status = cd2.cd_education_status + AND + ws_sales_price BETWEEN 50.00 AND 100.00 + ) + OR + ( + cd1.cd_marital_status = 'W' + AND + cd1.cd_marital_status = cd2.cd_marital_status + AND + cd1.cd_education_status = '2 yr Degree' + AND + cd1.cd_education_status = cd2.cd_education_status + AND + ws_sales_price BETWEEN 150.00 AND 200.00 + ) + ) + AND + ( + ( + ca_country = 'United States' + AND + ca_state IN ('IN', 'OH', 'NJ') + AND ws_net_profit BETWEEN 100 AND 200 + ) + OR + ( + ca_country = 'United States' + AND + ca_state IN ('WI', 'CT', 'KY') + AND ws_net_profit BETWEEN 150 AND 300 + ) + OR + ( + ca_country = 'United States' + AND + ca_state IN ('LA', 'IA', 'AR') + AND ws_net_profit BETWEEN 50 AND 250 + ) + ) +GROUP BY r_reason_desc +ORDER BY substr(r_reason_desc, 1, 20) + , avg(ws_quantity) + , avg(wr_refunded_cash) + , avg(wr_fee) +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q86.sql b/dev/auron-it/src/main/resources/tpcds-queries/q86.sql new file mode 100755 index 000000000..789a4abf7 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q86.sql @@ -0,0 +1,24 @@ +SELECT + sum(ws_net_paid) AS total_sum, + i_category, + i_class, + grouping(i_category) + grouping(i_class) AS lochierarchy, + rank() + OVER ( + PARTITION BY grouping(i_category) + grouping(i_class), + CASE WHEN grouping(i_class) = 0 + THEN i_category END + ORDER BY sum(ws_net_paid) DESC) AS rank_within_parent +FROM + web_sales, date_dim d1, item +WHERE + d1.d_month_seq BETWEEN 1200 AND 1200 + 11 + AND d1.d_date_sk = ws_sold_date_sk + AND i_item_sk = ws_item_sk +GROUP BY ROLLUP (i_category, i_class) +ORDER BY + lochierarchy DESC, + CASE WHEN lochierarchy = 0 + THEN i_category END, + rank_within_parent +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q87.sql b/dev/auron-it/src/main/resources/tpcds-queries/q87.sql new file mode 100755 index 000000000..4aaa9f39d --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q87.sql @@ -0,0 +1,28 @@ +SELECT count(*) +FROM ((SELECT DISTINCT + c_last_name, + c_first_name, + d_date +FROM store_sales, date_dim, customer +WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11) + EXCEPT + (SELECT DISTINCT + c_last_name, + c_first_name, + d_date + FROM catalog_sales, date_dim, customer + WHERE catalog_sales.cs_sold_date_sk = date_dim.d_date_sk + AND catalog_sales.cs_bill_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11) + EXCEPT + (SELECT DISTINCT + c_last_name, + c_first_name, + d_date + FROM web_sales, date_dim, customer + WHERE web_sales.ws_sold_date_sk = date_dim.d_date_sk + AND web_sales.ws_bill_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11) + ) cool_cust diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q88.sql b/dev/auron-it/src/main/resources/tpcds-queries/q88.sql new file mode 100755 index 000000000..25bcd90f4 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q88.sql @@ -0,0 +1,122 @@ +SELECT * +FROM + (SELECT count(*) h8_30_to_9 + FROM store_sales, household_demographics, time_dim, store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 8 + AND time_dim.t_minute >= 30 + AND ( + (household_demographics.hd_dep_count = 4 AND household_demographics.hd_vehicle_count <= 4 + 2) + OR + (household_demographics.hd_dep_count = 2 AND household_demographics.hd_vehicle_count <= 2 + 2) + OR + (household_demographics.hd_dep_count = 0 AND + household_demographics.hd_vehicle_count <= 0 + 2)) + AND store.s_store_name = 'ese') s1, + (SELECT count(*) h9_to_9_30 + FROM store_sales, household_demographics, time_dim, store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 9 + AND time_dim.t_minute < 30 + AND ( + (household_demographics.hd_dep_count = 4 AND household_demographics.hd_vehicle_count <= 4 + 2) + OR + (household_demographics.hd_dep_count = 2 AND household_demographics.hd_vehicle_count <= 2 + 2) + OR + (household_demographics.hd_dep_count = 0 AND + household_demographics.hd_vehicle_count <= 0 + 2)) + AND store.s_store_name = 'ese') s2, + (SELECT count(*) h9_30_to_10 + FROM store_sales, household_demographics, time_dim, store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 9 + AND time_dim.t_minute >= 30 + AND ( + (household_demographics.hd_dep_count = 4 AND household_demographics.hd_vehicle_count <= 4 + 2) + OR + (household_demographics.hd_dep_count = 2 AND household_demographics.hd_vehicle_count <= 2 + 2) + OR + (household_demographics.hd_dep_count = 0 AND + household_demographics.hd_vehicle_count <= 0 + 2)) + AND store.s_store_name = 'ese') s3, + (SELECT count(*) h10_to_10_30 + FROM store_sales, household_demographics, time_dim, store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 10 + AND time_dim.t_minute < 30 + AND ( + (household_demographics.hd_dep_count = 4 AND household_demographics.hd_vehicle_count <= 4 + 2) + OR + (household_demographics.hd_dep_count = 2 AND household_demographics.hd_vehicle_count <= 2 + 2) + OR + (household_demographics.hd_dep_count = 0 AND + household_demographics.hd_vehicle_count <= 0 + 2)) + AND store.s_store_name = 'ese') s4, + (SELECT count(*) h10_30_to_11 + FROM store_sales, household_demographics, time_dim, store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 10 + AND time_dim.t_minute >= 30 + AND ( + (household_demographics.hd_dep_count = 4 AND household_demographics.hd_vehicle_count <= 4 + 2) + OR + (household_demographics.hd_dep_count = 2 AND household_demographics.hd_vehicle_count <= 2 + 2) + OR + (household_demographics.hd_dep_count = 0 AND + household_demographics.hd_vehicle_count <= 0 + 2)) + AND store.s_store_name = 'ese') s5, + (SELECT count(*) h11_to_11_30 + FROM store_sales, household_demographics, time_dim, store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 11 + AND time_dim.t_minute < 30 + AND ( + (household_demographics.hd_dep_count = 4 AND household_demographics.hd_vehicle_count <= 4 + 2) + OR + (household_demographics.hd_dep_count = 2 AND household_demographics.hd_vehicle_count <= 2 + 2) + OR + (household_demographics.hd_dep_count = 0 AND + household_demographics.hd_vehicle_count <= 0 + 2)) + AND store.s_store_name = 'ese') s6, + (SELECT count(*) h11_30_to_12 + FROM store_sales, household_demographics, time_dim, store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 11 + AND time_dim.t_minute >= 30 + AND ( + (household_demographics.hd_dep_count = 4 AND household_demographics.hd_vehicle_count <= 4 + 2) + OR + (household_demographics.hd_dep_count = 2 AND household_demographics.hd_vehicle_count <= 2 + 2) + OR + (household_demographics.hd_dep_count = 0 AND + household_demographics.hd_vehicle_count <= 0 + 2)) + AND store.s_store_name = 'ese') s7, + (SELECT count(*) h12_to_12_30 + FROM store_sales, household_demographics, time_dim, store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 12 + AND time_dim.t_minute < 30 + AND ( + (household_demographics.hd_dep_count = 4 AND household_demographics.hd_vehicle_count <= 4 + 2) + OR + (household_demographics.hd_dep_count = 2 AND household_demographics.hd_vehicle_count <= 2 + 2) + OR + (household_demographics.hd_dep_count = 0 AND + household_demographics.hd_vehicle_count <= 0 + 2)) + AND store.s_store_name = 'ese') s8 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q89.sql b/dev/auron-it/src/main/resources/tpcds-queries/q89.sql new file mode 100755 index 000000000..75408cb03 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q89.sql @@ -0,0 +1,30 @@ +SELECT * +FROM ( + SELECT + i_category, + i_class, + i_brand, + s_store_name, + s_company_name, + d_moy, + sum(ss_sales_price) sum_sales, + avg(sum(ss_sales_price)) + OVER + (PARTITION BY i_category, i_brand, s_store_name, s_company_name) + avg_monthly_sales + FROM item, store_sales, date_dim, store + WHERE ss_item_sk = i_item_sk AND + ss_sold_date_sk = d_date_sk AND + ss_store_sk = s_store_sk AND + d_year IN (1999) AND + ((i_category IN ('Books', 'Electronics', 'Sports') AND + i_class IN ('computers', 'stereo', 'football')) + OR (i_category IN ('Men', 'Jewelry', 'Women') AND + i_class IN ('shirts', 'birdal', 'dresses'))) + GROUP BY i_category, i_class, i_brand, + s_store_name, s_company_name, d_moy) tmp1 +WHERE CASE WHEN (avg_monthly_sales <> 0) + THEN (abs(sum_sales - avg_monthly_sales) / avg_monthly_sales) + ELSE NULL END > 0.1 +ORDER BY sum_sales - avg_monthly_sales, s_store_name +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q9.sql b/dev/auron-it/src/main/resources/tpcds-queries/q9.sql new file mode 100755 index 000000000..de3db9d98 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q9.sql @@ -0,0 +1,48 @@ +SELECT + CASE WHEN (SELECT count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 1 AND 20) > 62316685 + THEN (SELECT avg(ss_ext_discount_amt) + FROM store_sales + WHERE ss_quantity BETWEEN 1 AND 20) + ELSE (SELECT avg(ss_net_paid) + FROM store_sales + WHERE ss_quantity BETWEEN 1 AND 20) END bucket1, + CASE WHEN (SELECT count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 21 AND 40) > 19045798 + THEN (SELECT avg(ss_ext_discount_amt) + FROM store_sales + WHERE ss_quantity BETWEEN 21 AND 40) + ELSE (SELECT avg(ss_net_paid) + FROM store_sales + WHERE ss_quantity BETWEEN 21 AND 40) END bucket2, + CASE WHEN (SELECT count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 41 AND 60) > 365541424 + THEN (SELECT avg(ss_ext_discount_amt) + FROM store_sales + WHERE ss_quantity BETWEEN 41 AND 60) + ELSE (SELECT avg(ss_net_paid) + FROM store_sales + WHERE ss_quantity BETWEEN 41 AND 60) END bucket3, + CASE WHEN (SELECT count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 61 AND 80) > 216357808 + THEN (SELECT avg(ss_ext_discount_amt) + FROM store_sales + WHERE ss_quantity BETWEEN 61 AND 80) + ELSE (SELECT avg(ss_net_paid) + FROM store_sales + WHERE ss_quantity BETWEEN 61 AND 80) END bucket4, + CASE WHEN (SELECT count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 81 AND 100) > 184483884 + THEN (SELECT avg(ss_ext_discount_amt) + FROM store_sales + WHERE ss_quantity BETWEEN 81 AND 100) + ELSE (SELECT avg(ss_net_paid) + FROM store_sales + WHERE ss_quantity BETWEEN 81 AND 100) END bucket5 +FROM reason +WHERE r_reason_sk = 1 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q90.sql b/dev/auron-it/src/main/resources/tpcds-queries/q90.sql new file mode 100755 index 000000000..85e35bf8b --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q90.sql @@ -0,0 +1,19 @@ +SELECT cast(amc AS DECIMAL(15, 4)) / cast(pmc AS DECIMAL(15, 4)) am_pm_ratio +FROM (SELECT count(*) amc +FROM web_sales, household_demographics, time_dim, web_page +WHERE ws_sold_time_sk = time_dim.t_time_sk + AND ws_ship_hdemo_sk = household_demographics.hd_demo_sk + AND ws_web_page_sk = web_page.wp_web_page_sk + AND time_dim.t_hour BETWEEN 8 AND 8 + 1 + AND household_demographics.hd_dep_count = 6 + AND web_page.wp_char_count BETWEEN 5000 AND 5200) at, + (SELECT count(*) pmc + FROM web_sales, household_demographics, time_dim, web_page + WHERE ws_sold_time_sk = time_dim.t_time_sk + AND ws_ship_hdemo_sk = household_demographics.hd_demo_sk + AND ws_web_page_sk = web_page.wp_web_page_sk + AND time_dim.t_hour BETWEEN 19 AND 19 + 1 + AND household_demographics.hd_dep_count = 6 + AND web_page.wp_char_count BETWEEN 5000 AND 5200) pt +ORDER BY am_pm_ratio +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q91.sql b/dev/auron-it/src/main/resources/tpcds-queries/q91.sql new file mode 100755 index 000000000..9ca7ce00a --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q91.sql @@ -0,0 +1,23 @@ +SELECT + cc_call_center_id Call_Center, + cc_name Call_Center_Name, + cc_manager Manager, + sum(cr_net_loss) Returns_Loss +FROM + call_center, catalog_returns, date_dim, customer, customer_address, + customer_demographics, household_demographics +WHERE + cr_call_center_sk = cc_call_center_sk + AND cr_returned_date_sk = d_date_sk + AND cr_returning_customer_sk = c_customer_sk + AND cd_demo_sk = c_current_cdemo_sk + AND hd_demo_sk = c_current_hdemo_sk + AND ca_address_sk = c_current_addr_sk + AND d_year = 1998 + AND d_moy = 11 + AND ((cd_marital_status = 'M' AND cd_education_status = 'Unknown') + OR (cd_marital_status = 'W' AND cd_education_status = 'Advanced Degree')) + AND hd_buy_potential LIKE 'Unknown%' + AND ca_gmt_offset = -7 +GROUP BY cc_call_center_id, cc_name, cc_manager, cd_marital_status, cd_education_status +ORDER BY sum(cr_net_loss) DESC diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q92.sql b/dev/auron-it/src/main/resources/tpcds-queries/q92.sql new file mode 100755 index 000000000..99129c3bd --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q92.sql @@ -0,0 +1,16 @@ +SELECT sum(ws_ext_discount_amt) AS `Excess Discount Amount ` +FROM web_sales, item, date_dim +WHERE i_manufact_id = 350 + AND i_item_sk = ws_item_sk + AND d_date BETWEEN '2000-01-27' AND (cast('2000-01-27' AS DATE) + INTERVAL 90 days) + AND d_date_sk = ws_sold_date_sk + AND ws_ext_discount_amt > + ( + SELECT 1.3 * avg(ws_ext_discount_amt) + FROM web_sales, date_dim + WHERE ws_item_sk = i_item_sk + AND d_date BETWEEN '2000-01-27' AND (cast('2000-01-27' AS DATE) + INTERVAL 90 days) + AND d_date_sk = ws_sold_date_sk + ) +ORDER BY sum(ws_ext_discount_amt) +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q93.sql b/dev/auron-it/src/main/resources/tpcds-queries/q93.sql new file mode 100755 index 000000000..222dc31c1 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q93.sql @@ -0,0 +1,19 @@ +SELECT + ss_customer_sk, + sum(act_sales) sumsales +FROM (SELECT + ss_item_sk, + ss_ticket_number, + ss_customer_sk, + CASE WHEN sr_return_quantity IS NOT NULL + THEN (ss_quantity - sr_return_quantity) * ss_sales_price + ELSE (ss_quantity * ss_sales_price) END act_sales +FROM store_sales + LEFT OUTER JOIN store_returns + ON (sr_item_sk = ss_item_sk AND sr_ticket_number = ss_ticket_number) + , + reason +WHERE sr_reason_sk = r_reason_sk AND r_reason_desc = 'reason 28') t +GROUP BY ss_customer_sk +ORDER BY sumsales, ss_customer_sk +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q94.sql b/dev/auron-it/src/main/resources/tpcds-queries/q94.sql new file mode 100755 index 000000000..d6de3d75b --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q94.sql @@ -0,0 +1,23 @@ +SELECT + count(DISTINCT ws_order_number) AS `order count `, + sum(ws_ext_ship_cost) AS `total shipping cost `, + sum(ws_net_profit) AS `total net profit ` +FROM + web_sales ws1, date_dim, customer_address, web_site +WHERE + d_date BETWEEN '1999-02-01' AND + (CAST('1999-02-01' AS DATE) + INTERVAL 60 days) + AND ws1.ws_ship_date_sk = d_date_sk + AND ws1.ws_ship_addr_sk = ca_address_sk + AND ca_state = 'IL' + AND ws1.ws_web_site_sk = web_site_sk + AND web_company_name = 'pri' + AND EXISTS(SELECT * + FROM web_sales ws2 + WHERE ws1.ws_order_number = ws2.ws_order_number + AND ws1.ws_warehouse_sk <> ws2.ws_warehouse_sk) + AND NOT EXISTS(SELECT * + FROM web_returns wr1 + WHERE ws1.ws_order_number = wr1.wr_order_number) +ORDER BY count(DISTINCT ws_order_number) +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q95.sql b/dev/auron-it/src/main/resources/tpcds-queries/q95.sql new file mode 100755 index 000000000..df71f00bd --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q95.sql @@ -0,0 +1,29 @@ +WITH ws_wh AS +(SELECT + ws1.ws_order_number, + ws1.ws_warehouse_sk wh1, + ws2.ws_warehouse_sk wh2 + FROM web_sales ws1, web_sales ws2 + WHERE ws1.ws_order_number = ws2.ws_order_number + AND ws1.ws_warehouse_sk <> ws2.ws_warehouse_sk) +SELECT + count(DISTINCT ws_order_number) AS `order count `, + sum(ws_ext_ship_cost) AS `total shipping cost `, + sum(ws_net_profit) AS `total net profit ` +FROM + web_sales ws1, date_dim, customer_address, web_site +WHERE + d_date BETWEEN '1999-02-01' AND + (CAST('1999-02-01' AS DATE) + INTERVAL 60 DAY) + AND ws1.ws_ship_date_sk = d_date_sk + AND ws1.ws_ship_addr_sk = ca_address_sk + AND ca_state = 'IL' + AND ws1.ws_web_site_sk = web_site_sk + AND web_company_name = 'pri' + AND ws1.ws_order_number IN (SELECT ws_order_number + FROM ws_wh) + AND ws1.ws_order_number IN (SELECT wr_order_number + FROM web_returns, ws_wh + WHERE wr_order_number = ws_wh.ws_order_number) +ORDER BY count(DISTINCT ws_order_number) +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q96.sql b/dev/auron-it/src/main/resources/tpcds-queries/q96.sql new file mode 100755 index 000000000..7ab17e7bc --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q96.sql @@ -0,0 +1,11 @@ +SELECT count(*) +FROM store_sales, household_demographics, time_dim, store +WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 20 + AND time_dim.t_minute >= 30 + AND household_demographics.hd_dep_count = 7 + AND store.s_store_name = 'ese' +ORDER BY count(*) +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q97.sql b/dev/auron-it/src/main/resources/tpcds-queries/q97.sql new file mode 100755 index 000000000..e7e0b1a05 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q97.sql @@ -0,0 +1,30 @@ +WITH ssci AS ( + SELECT + ss_customer_sk customer_sk, + ss_item_sk item_sk + FROM store_sales, date_dim + WHERE ss_sold_date_sk = d_date_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 + GROUP BY ss_customer_sk, ss_item_sk), + csci AS ( + SELECT + cs_bill_customer_sk customer_sk, + cs_item_sk item_sk + FROM catalog_sales, date_dim + WHERE cs_sold_date_sk = d_date_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 + GROUP BY cs_bill_customer_sk, cs_item_sk) +SELECT + sum(CASE WHEN ssci.customer_sk IS NOT NULL AND csci.customer_sk IS NULL + THEN 1 + ELSE 0 END) store_only, + sum(CASE WHEN ssci.customer_sk IS NULL AND csci.customer_sk IS NOT NULL + THEN 1 + ELSE 0 END) catalog_only, + sum(CASE WHEN ssci.customer_sk IS NOT NULL AND csci.customer_sk IS NOT NULL + THEN 1 + ELSE 0 END) store_and_catalog +FROM ssci + FULL OUTER JOIN csci ON (ssci.customer_sk = csci.customer_sk + AND ssci.item_sk = csci.item_sk) +LIMIT 100 diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q98.sql b/dev/auron-it/src/main/resources/tpcds-queries/q98.sql new file mode 100755 index 000000000..bb10d4bf8 --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q98.sql @@ -0,0 +1,21 @@ +SELECT + i_item_desc, + i_category, + i_class, + i_current_price, + sum(ss_ext_sales_price) AS itemrevenue, + sum(ss_ext_sales_price) * 100 / sum(sum(ss_ext_sales_price)) + OVER + (PARTITION BY i_class) AS revenueratio +FROM + store_sales, item, date_dim +WHERE + ss_item_sk = i_item_sk + AND i_category IN ('Sports', 'Books', 'Home') + AND ss_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('1999-02-22' AS DATE) + AND (cast('1999-02-22' AS DATE) + INTERVAL 30 days) +GROUP BY + i_item_id, i_item_desc, i_category, i_class, i_current_price +ORDER BY + i_category, i_class, i_item_id, i_item_desc, revenueratio diff --git a/dev/auron-it/src/main/resources/tpcds-queries/q99.sql b/dev/auron-it/src/main/resources/tpcds-queries/q99.sql new file mode 100755 index 000000000..f1a3d4d2b --- /dev/null +++ b/dev/auron-it/src/main/resources/tpcds-queries/q99.sql @@ -0,0 +1,34 @@ +SELECT + substr(w_warehouse_name, 1, 20), + sm_type, + cc_name, + sum(CASE WHEN (cs_ship_date_sk - cs_sold_date_sk <= 30) + THEN 1 + ELSE 0 END) AS `30 days `, + sum(CASE WHEN (cs_ship_date_sk - cs_sold_date_sk > 30) AND + (cs_ship_date_sk - cs_sold_date_sk <= 60) + THEN 1 + ELSE 0 END) AS `31 - 60 days `, + sum(CASE WHEN (cs_ship_date_sk - cs_sold_date_sk > 60) AND + (cs_ship_date_sk - cs_sold_date_sk <= 90) + THEN 1 + ELSE 0 END) AS `61 - 90 days `, + sum(CASE WHEN (cs_ship_date_sk - cs_sold_date_sk > 90) AND + (cs_ship_date_sk - cs_sold_date_sk <= 120) + THEN 1 + ELSE 0 END) AS `91 - 120 days `, + sum(CASE WHEN (cs_ship_date_sk - cs_sold_date_sk > 120) + THEN 1 + ELSE 0 END) AS `>120 days ` +FROM + catalog_sales, warehouse, ship_mode, call_center, date_dim +WHERE + d_month_seq BETWEEN 1200 AND 1200 + 11 + AND cs_ship_date_sk = d_date_sk + AND cs_warehouse_sk = w_warehouse_sk + AND cs_ship_mode_sk = sm_ship_mode_sk + AND cs_call_center_sk = cc_call_center_sk +GROUP BY + substr(w_warehouse_name, 1, 20), sm_type, cc_name +ORDER BY substr(w_warehouse_name, 1, 20), sm_type, cc_name +LIMIT 100 diff --git a/dev/auron-it/src/main/scala/org/apache/auron/integration/Main.scala b/dev/auron-it/src/main/scala/org/apache/auron/integration/Main.scala new file mode 100644 index 000000000..ca85ec970 --- /dev/null +++ b/dev/auron-it/src/main/scala/org/apache/auron/integration/Main.scala @@ -0,0 +1,126 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.auron.integration + +import java.io.File + +import org.apache.spark.sql.auron.Shims +import scopt.OParser + +import org.apache.auron.integration.runner.TPCDSSuite + +object Main { + val parser = { + val builder = OParser.builder[SuiteArgs] + import builder._ + OParser.sequence( + programName("auron-it"), + head("auron-it", "v1.0"), + opt[String]('t', "type") + .action((x, c) => c.copy(benchType = x)) + .required() + .text("benchmark type (tpcds)"), + opt[String]('d', "data-location") + .action((x, c) => c.copy(dataLocation = x)) + .required() + .text("data directory path"), + opt[String]('q', "query-filter") + .action((x, c) => c.copy(queryFilter = x.split(",").map(_.trim).filter(_.nonEmpty).toSeq)) + .text("query filter (e.g. q1,q2,q3); empty for all queries"), + opt[String]("conf") + .unbounded() + .valueName("k=v") + .action { (x, c) => + val Array(k, v) = x.split("=", 2) + c.copy(extraSparkConf = c.extraSparkConf + (k -> v)) + } + .validate { x => + if (x.contains("=")) Right(()) else Left(s"--conf expects k=v, got: $x") + } + .text("Spark configuration, repeatable: --conf k=v --conf a=b"), + opt[Unit]("auron-only") + .action((_, c) => c.copy(auronOnly = true)) + .text("run Auron only; skip baseline and result comparison (default: false)"), + opt[Unit]("result-check") + .action((_, c) => c.copy(auronOnly = false)) + .text("enable query result check (default: enabled)"), + opt[Unit]("plan-check") + .action((_, c) => c.copy(enablePlanCheck = true)) + .text("enable plan stability check(default: false)"), + opt[Unit]("regen-golden") + .action((_, c) => c.copy(regenGoldenFiles = true)) + .text("regenerate golden files"), + help('h', "help")) + } + + def parseArgs(args: Array[String]): Option[SuiteArgs] = { + OParser.parse(parser, args, SuiteArgs()) + } + + def main(mainArgs: Array[String]): Unit = { + parseArgs(mainArgs) match { + case Some(args) => + if (!new File(args.dataLocation).exists()) { + println(s"Error: Data location ${args.dataLocation} does not exist.") + sys.exit(1) + } + + printConfigurationSummary(args) + + val suite = createSuite(args) + var exitCode = 0 + try { + exitCode = suite.run() + } finally { + suite.close() + } + + if (exitCode != 0) { + println("Integration tests failed.") + sys.exit(exitCode) + } else { + println("Integration tests completed successfully.") + } + case None => + sys.exit(1) + } + } + + private def createSuite(args: SuiteArgs): Suite = args.benchType match { + case "tpcds" => TPCDSSuite(args) + case other => + println(s"Unsupported benchmark type: $other") + sys.exit(1) + } + + private def printConfigurationSummary(args: SuiteArgs): Unit = { + println("\n" + "=" * 60) + println(s"""|Auron Integration Test (type: ${args.benchType}) + |Spark Version: ${Shims.get.shimVersion} + |Data: ${args.dataLocation} + |Queries: [${args.queryFilter.mkString(", ")}] (${if (args.queryFilter.isEmpty) + "all" + else args.queryFilter.length} queries) + |Extra Spark Conf: ${args.extraSparkConf}""".stripMargin) + + if (args.auronOnly) println("Mode: Auron-only (skip baseline)") + if (args.enablePlanCheck) println("Plan Check: Enabled") + if (args.regenGoldenFiles) println("Regenerate golden files: Enabled") + println("-" * 60) + println("") + } +} diff --git a/dev/auron-it/src/main/scala/org/apache/auron/integration/QueryRunner.scala b/dev/auron-it/src/main/scala/org/apache/auron/integration/QueryRunner.scala new file mode 100644 index 000000000..214ac8e14 --- /dev/null +++ b/dev/auron-it/src/main/scala/org/apache/auron/integration/QueryRunner.scala @@ -0,0 +1,79 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.auron.integration + +import scala.util.{Failure, Success, Try} + +import org.apache.spark.sql.{Row, SparkSession} +import org.apache.spark.sql.execution.FormattedMode + +case class QueryExecutionResult( + queryId: String, + rowCount: Long, + durationSec: Double, + rows: Array[Row], + success: Boolean, + plan: String, + errorMsg: Option[String] = None) + +class QueryRunner(readQuery: String => String) { + + def runQueries(spark: SparkSession, queries: Seq[String]): Map[String, QueryExecutionResult] = { + queries + .map { qid => executeQuery(spark, qid) } + .map(r => r.queryId -> r) + .toMap + } + + private def executeQuery(spark: SparkSession, queryId: String): QueryExecutionResult = { + val startTime = System.currentTimeMillis() + + val result = Try { + val sql = readQuery(queryId) + val df = spark.sql(sql) + val rows: Array[Row] = df.collect() + val rowCount: Long = rows.length + val planStr: String = df.queryExecution.explainString(FormattedMode) + (rows, rowCount, planStr) + } + + val durationSec = (System.currentTimeMillis() - startTime) / 1000.0 + + result match { + case Success((rows, rowCount, planStr)) => + println(s"Query $queryId executed successfully in $durationSec seconds.") + QueryExecutionResult( + queryId = queryId, + rowCount = rowCount, + durationSec = durationSec, + rows = rows, + success = true, + plan = planStr) + + case Failure(e) => + println(s"Query $queryId failed after $durationSec seconds: ${e.getMessage}") + QueryExecutionResult( + queryId = queryId, + rowCount = 0L, + durationSec = durationSec, + rows = Array.empty, + success = false, + plan = "", + errorMsg = Some(e.getMessage)) + } + } +} diff --git a/dev/auron-it/src/main/scala/org/apache/auron/integration/SessionManager.scala b/dev/auron-it/src/main/scala/org/apache/auron/integration/SessionManager.scala new file mode 100644 index 000000000..99ce70b47 --- /dev/null +++ b/dev/auron-it/src/main/scala/org/apache/auron/integration/SessionManager.scala @@ -0,0 +1,101 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.auron.integration + +import org.apache.spark.SparkConf +import org.apache.spark.sql.SparkSession + +/** + * Manages SparkSessions for baseline and auron modes in a single-driver process. Ensures only one + * active session at a time, switching by stopping the current before creating a new one. + */ +class SessionManager(val extraSparkConf: Map[String, String]) { + + private var currentSession: Option[SparkSession] = None + private var currentMode: Option[String] = None + + private def resolveMaster(fallback: String = "local[4]"): String = { + sys.props.get("spark.master").filter(_.nonEmpty).getOrElse(fallback) + } + + private lazy val commonConf: Map[String, String] = Map( + "spark.master" -> resolveMaster(), + "spark.sql.shuffle.partitions" -> "100", + "spark.ui.enabled" -> "false", + "spark.sql.sources.useV1SourceList" -> "parquet", + "spark.sql.autoBroadcastJoinThreshold" -> "-1") + + private lazy val auronSpecificConf: Map[String, String] = Map( + "spark.sql.extensions" -> "org.apache.spark.sql.auron.AuronSparkSessionExtension", + "spark.shuffle.manager" -> "org.apache.spark.sql.execution.auron.shuffle.AuronShuffleManager", + "spark.auron.native.log.level" -> "warn", + "spark.auron.enable" -> "true") + + private lazy val modeConfigs: Map[String, Map[String, String]] = Map( + "baseline" -> (commonConf ++ extraSparkConf), + "auron" -> (commonConf ++ extraSparkConf ++ auronSpecificConf)) + + def baselineSession: SparkSession = getOrSwitch("baseline", "baseline-app") + + def auronSession: SparkSession = getOrSwitch("auron", "auron-app") + + private def getOrSwitch(mode: String, appName: String): SparkSession = synchronized { + if (currentMode.contains(mode) && currentSession.isDefined) { + currentSession.get + } else { + stopCurrentSession() + val conf = new SparkConf() + modeConfigs + .getOrElse(mode, throw new IllegalArgumentException(s"Unknown mode: $mode")) + .foreach { case (k, v) => conf.set(k, v) } + val session = createAndConfigureSession(conf, appName) + currentSession = Some(session) + currentMode = Some(mode) + println(s"Switched to SparkSession for mode: $mode") + session + } + } + + private def createAndConfigureSession(conf: SparkConf, appName: String): SparkSession = { + val session = SparkSession + .builder() + .appName(appName) + .config(conf) + .getOrCreate() + session.sparkContext.setLogLevel("WARN") + session + } + + private def stopCurrentSession(): Unit = { + currentSession.foreach { session => + try { + session.sessionState.catalog.reset() + } finally { + session.stop() + } + } + currentSession = None + currentMode = None + SparkSession.clearActiveSession() + SparkSession.clearDefaultSession() + } + + def close(): Unit = { + stopCurrentSession() + println("SparkSession closed.") + } +} diff --git a/dev/auron-it/src/main/scala/org/apache/auron/integration/Suite.scala b/dev/auron-it/src/main/scala/org/apache/auron/integration/Suite.scala new file mode 100644 index 000000000..2f2779843 --- /dev/null +++ b/dev/auron-it/src/main/scala/org/apache/auron/integration/Suite.scala @@ -0,0 +1,36 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.auron.integration + +case class SuiteArgs( + benchType: String = "", + dataLocation: String = "", + queryFilter: Seq[String] = Nil, + extraSparkConf: Map[String, String] = Map.empty, + auronOnly: Boolean = false, + enablePlanCheck: Boolean = false, + regenGoldenFiles: Boolean = false) + +abstract class Suite(val args: SuiteArgs) { + protected lazy val sessions: SessionManager = new SessionManager(args.extraSparkConf) + + def run(): Int + + def close(): Unit = { + sessions.close() + } +} diff --git a/dev/auron-it/src/main/scala/org/apache/auron/integration/comparison/PlanStabilityChecker.scala b/dev/auron-it/src/main/scala/org/apache/auron/integration/comparison/PlanStabilityChecker.scala new file mode 100644 index 000000000..39b17f529 --- /dev/null +++ b/dev/auron-it/src/main/scala/org/apache/auron/integration/comparison/PlanStabilityChecker.scala @@ -0,0 +1,124 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.auron.integration.comparison + +import java.io.File +import java.nio.charset.StandardCharsets + +import scala.collection.mutable +import scala.util.matching.Regex + +import org.apache.commons.io.FileUtils +import org.apache.spark.sql.auron.Shims + +import org.apache.auron.integration.QueryExecutionResult + +class PlanStabilityChecker( + readGolden: String => String, + writeGolden: (String, String) => Unit, + regenGoldenFiles: Boolean = false, + planCheck: Boolean = false) { + + private lazy val isSupported: Boolean = Shims.get.shimVersion match { + case "spark-3.5" => true + case other => + println(s"[PlanCheck] Unsupported Spark version: $other. Skipping.") + false + } + + def validate(test: QueryExecutionResult): Boolean = { + if (!isSupported) return true + + if (regenGoldenFiles) { + generatePlanGolden(test.queryId, test.plan) + } else if (planCheck) { + return comparePlanGolden(test.queryId, test.plan) + } + true + } + + private def generatePlanGolden(queryId: String, rawPlan: String): Unit = { + val normalized = normalizePlan(rawPlan) + writeGolden(queryId, normalized) + } + + private def comparePlanGolden(queryId: String, rawPlan: String): Boolean = { + val expectedPlan = readGolden(queryId) + val actualPlan = normalizePlan(rawPlan) + if (expectedPlan == actualPlan) { + true + } else { + val actualTempFile = new File(FileUtils.getTempDirectory, s"actual.golden.$queryId.txt") + FileUtils.writeStringToFile(actualTempFile, actualPlan, StandardCharsets.UTF_8) + println(s""" + |Physical plan mismatch for query $queryId + |Actual : ${actualTempFile.getAbsolutePath} + |--- Expected --- + |$expectedPlan + | + |--- Actual --- + |$actualPlan + |""".stripMargin) + false + } + } + + private def normalizePlan(plan: String): String = { + val exprIdRegex = "#\\d+L?".r + val planIdRegex = "plan_id=\\d+".r + + // Normalize file location + def normalizeLocation(plan: String): String = { + plan.replaceAll("""file:/[^,\s\]\)]+""", "file:/") + } + + // Create a normalized map for regex matches + def createNormalizedMap(regex: Regex, plan: String): Map[String, String] = { + val map = new mutable.HashMap[String, String]() + regex + .findAllMatchIn(plan) + .map(_.toString) + .foreach(map.getOrElseUpdate(_, (map.size + 1).toString)) + map.toMap + } + + // Replace occurrences in the plan using the normalized map + def replaceWithNormalizedValues( + plan: String, + regex: Regex, + normalizedMap: Map[String, String], + format: String): String = { + regex.replaceAllIn(plan, regexMatch => s"$format${normalizedMap(regexMatch.toString)}") + } + + // Normalize the entire plan step by step + val exprIdMap = createNormalizedMap(exprIdRegex, plan) + val exprIdNormalized = replaceWithNormalizedValues(plan, exprIdRegex, exprIdMap, "#") + + val planIdMap = createNormalizedMap(planIdRegex, exprIdNormalized) + val planIdNormalized = + replaceWithNormalizedValues(exprIdNormalized, planIdRegex, planIdMap, "plan_id=") + + val argumentsNormalized = planIdNormalized + .replaceAll("Arguments: [0-9]+, [0-9]+", "Arguments: X, X") + .replaceAll("Arguments: [0-9]+", "Arguments: X") + .replaceAll("Scan parquet ", "Scan parquet") + .replaceAll("Statistics[(A-Za-z0-9=. ,+)]*", "Statistics(X)") + + normalizeLocation(argumentsNormalized) + } +} diff --git a/dev/auron-it/src/main/scala/org/apache/auron/integration/comparison/QueryResultComparator.scala b/dev/auron-it/src/main/scala/org/apache/auron/integration/comparison/QueryResultComparator.scala new file mode 100644 index 000000000..521c50467 --- /dev/null +++ b/dev/auron-it/src/main/scala/org/apache/auron/integration/comparison/QueryResultComparator.scala @@ -0,0 +1,139 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.auron.integration.comparison + +import org.apache.spark.sql.Row +import org.apache.spark.sql.types.DoubleType + +import org.apache.auron.integration.QueryExecutionResult + +case class ComparisonResult( + queryId: String, + baselineRows: Long, + testRows: Long, + baselineTime: Double, + testTime: Double, + rowMatch: Boolean, + dataMatch: Boolean, + passed: Boolean = false, + var planStable: Boolean = true) + +trait QueryComparator { + def compare(baseline: QueryExecutionResult, test: QueryExecutionResult): ComparisonResult +} + +class QueryResultComparator extends QueryComparator { + private val colSep = "<|COL|>" + override def compare( + baseline: QueryExecutionResult, + test: QueryExecutionResult): ComparisonResult = { + val rowMatch = baseline.rowCount == test.rowCount + val dataMatch = checkQueryResult(baseline.queryId, baseline.rows, test.rows) + val passed = rowMatch && dataMatch && (baseline.success == test.success) + + ComparisonResult( + queryId = baseline.queryId, + baselineRows = baseline.rowCount, + testRows = test.rowCount, + baselineTime = baseline.durationSec, + testTime = test.durationSec, + rowMatch = rowMatch, + dataMatch = dataMatch, + passed = passed) + } + + protected def checkQueryResult( + queryId: String, + baseline: Array[Row], + test: Array[Row]): Boolean = { + + if (baseline.nonEmpty && baseline.length > 0 && baseline(0).schema.exists( + _.dataType == DoubleType)) { + compareDoubleResult(queryId, baseline, test) + } else { + compareResultStr(queryId, baseline, test) + } + } + + private def formatResultContent(rows: Array[Row]): String = { + val rowStrings = rows.map(_.mkString(colSep)) + s"${rows.length}\n${rowStrings.mkString("\n")}\n" + } + + protected def compareResultStr( + queryId: String, + baseline: Array[Row], + test: Array[Row]): Boolean = { + val expectedResult = formatResultContent(baseline) + val actualContent = formatResultContent(test) + if (expectedResult != actualContent) { + println(s""" + |=== $queryId result does NOT match expected === + |[Expected] + |${expectedResult} + |[Actual] + |${actualContent} + |""".stripMargin) + return false + } + true + } + + protected def compareDoubleResult( + queryId: String, + baseline: Array[Row], + test: Array[Row], + tolerance: Double = 1e-6): Boolean = { + + baseline.zipWithIndex.foreach { case (actualRow, rowIdx) => + val expectedRow: Row = test(rowIdx) + actualRow.schema.zipWithIndex.foreach { case (field, colIdx) => + if (actualRow.isNullAt(colIdx) || expectedRow.isNullAt(colIdx)) { + if (actualRow.isNullAt(colIdx) != expectedRow.isNullAt(colIdx)) { + println( + s"Mismatch in $queryId row $rowIdx col $colIdx: " + + s"expected null, got ${expectedRow(colIdx)}") + return false + } + } else { + field.dataType match { + case DoubleType => + val actualValue = actualRow.getDouble(colIdx) + val expectedValue = expectedRow.getDouble(colIdx) + val diff = math.abs(actualValue - expectedValue) + if (diff > tolerance) { + println( + s"Floating-point mismatch in $queryId row $rowIdx col $colIdx: " + + s"expected ${expectedValue}, got ${actualValue} (diff=$diff)") + return false + } + case _ => + val actualValue = actualRow.get(colIdx).toString + val expectedValue = expectedRow.get(colIdx).toString + if (actualValue != expectedValue) { + println( + s"Mismatch in $queryId row $rowIdx col $colIdx: " + + s"expected $expectedValue, got $actualValue") + return false + } + } + } + } + } + true + } +} diff --git a/dev/auron-it/src/main/scala/org/apache/auron/integration/tpcds/TPCDSFeatures.scala b/dev/auron-it/src/main/scala/org/apache/auron/integration/tpcds/TPCDSFeatures.scala new file mode 100644 index 000000000..623ec25c1 --- /dev/null +++ b/dev/auron-it/src/main/scala/org/apache/auron/integration/tpcds/TPCDSFeatures.scala @@ -0,0 +1,213 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.auron.integration.tpcds + +import java.io.File +import java.nio.charset.StandardCharsets +import java.nio.file.{Files, Path} + +import org.apache.spark.sql.SparkSession +import org.apache.spark.sql.auron.Shims + +trait TPCDSFeatures { + + val tpcdsQueries: Seq[String] = Seq( + "q1", + "q2", + "q3", + "q4", + "q5", + "q6", + "q7", + "q8", + "q9", + "q10", + "q11", + "q12", + "q13", + "q14a", + "q14b", + "q15", + "q16", + "q17", + "q18", + "q19", + "q20", + "q21", + "q22", + "q23a", + "q23b", + "q24a", + "q24b", + "q25", + "q26", + "q27", + "q28", + "q29", + "q30", + "q31", + "q32", + "q33", + "q34", + "q35", + "q36", + "q37", + "q38", + "q39a", + "q39b", + "q40", + "q41", + "q42", + "q43", + "q44", + "q45", + "q46", + "q47", + "q48", + "q49", + "q50", + "q51", + "q52", + "q53", + "q54", + "q55", + "q56", + "q57", + "q58", + "q59", + "q60", + "q61", + "q62", + "q63", + "q64", + "q65", + "q66", + "q67", + "q68", + "q69", + "q70", + "q71", + "q72", + "q73", + "q74", + "q75", + "q76", + "q77", + "q78", + "q79", + "q80", + "q81", + "q82", + "q83", + "q84", + "q85", + "q86", + "q87", + "q88", + "q89", + "q90", + "q91", + "q92", + "q93", + "q94", + "q95", + "q96", + "q97", + "q98", + "q99") + + val tpcdsTables = Seq( + "catalog_page", + "catalog_returns", + "customer", + "customer_address", + "customer_demographics", + "date_dim", + "household_demographics", + "inventory", + "item", + "promotion", + "store", + "store_returns", + "catalog_sales", + "web_sales", + "store_sales", + "web_returns", + "web_site", + "reason", + "call_center", + "warehouse", + "ship_mode", + "income_band", + "time_dim", + "web_page") + + def setupTables(dataLocation: String, spark: SparkSession): Map[String, Long] = { + println(s"Setting up TPC-DS tables from: $dataLocation") + tpcdsTables.map { tableName => + val tablePath = s"$dataLocation/$tableName" + spark.read.parquet(tablePath).createOrReplaceTempView(tableName) + val count = spark.table(tableName).count() + println(s"Registered TPC-DS temp view '$tableName' with $count rows from $tablePath") + tableName -> count + }.toMap + } + + protected def filterQueries(queryFilter: Seq[String]): Seq[String] = { + if (queryFilter.isEmpty) tpcdsQueries + else { + queryFilter.filter(q => tpcdsQueries.contains(q)) + } + } + + def readQuery(queryId: String): String = { + val resourcePath = s"tpcds-queries/$queryId.sql" + val is = + Option(Thread.currentThread().getContextClassLoader.getResourceAsStream(resourcePath)) + .getOrElse( + throw new IllegalArgumentException(s"TPC-DS query resource not found: $resourcePath")) + val src = scala.io.Source.fromInputStream(is, "UTF-8") + try src.mkString.trim + finally src.close() + } + + def readGolden(queryId: String): String = { + val resourcePath = s"tpcds-plan-stability/${Shims.get.shimVersion}/$queryId.txt" + val is = + Option(Thread.currentThread().getContextClassLoader.getResourceAsStream(resourcePath)) + .getOrElse( + throw new IllegalArgumentException(s"TPC-DS golden plan not found: $resourcePath")) + val src = scala.io.Source.fromInputStream(is, "UTF-8") + try src.mkString + finally src.close() + } + + lazy val goldenOutputDir: File = { + val dir = new File( + System.getProperty("java.io.tmpdir"), + s"tpcds-plan-stability/${Shims.get.shimVersion}") + if (!dir.exists()) dir.mkdirs() + dir + } + + def writeGolden(queryId: String, normalized: String): File = { + val path: Path = new File(goldenOutputDir, s"$queryId.txt").toPath + println(s"[GoldenPlan] queryId=$queryId, saved to ${path.toAbsolutePath}") + Files.write(path, normalized.getBytes(StandardCharsets.UTF_8)) + path.toFile + } +} diff --git a/dev/auron-it/src/main/scala/org/apache/auron/integration/tpcds/TPCDSSuite.scala b/dev/auron-it/src/main/scala/org/apache/auron/integration/tpcds/TPCDSSuite.scala new file mode 100644 index 000000000..0a3ae8ceb --- /dev/null +++ b/dev/auron-it/src/main/scala/org/apache/auron/integration/tpcds/TPCDSSuite.scala @@ -0,0 +1,165 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.auron.integration.runner + +import org.apache.spark.sql.auron.Shims + +import org.apache.auron.integration.{QueryRunner, Suite, SuiteArgs} +import org.apache.auron.integration.comparison.{ComparisonResult, PlanStabilityChecker, QueryResultComparator} +import org.apache.auron.integration.tpcds.TPCDSFeatures + +class TPCDSSuite(args: SuiteArgs) extends Suite(args) with TPCDSFeatures { + + val queryRunner = new QueryRunner(readQuery = (qid: String) => this.readQuery(qid)) + + val resutComparator = new QueryResultComparator() + + val planStabilityChecker = new PlanStabilityChecker( + readGolden = (qid: String) => this.readGolden(qid), + writeGolden = (qid: String, plan: String) => this.writeGolden(qid, plan), + regenGoldenFiles = args.regenGoldenFiles, + planCheck = args.enablePlanCheck) + + override def run(): Int = { + val queries = filterQueries(args.queryFilter) + if (queries.isEmpty) { + println("No valid queries specified") + return 1 + } else { + println(s"Ready to execute queries: ${queries.mkString(", ")}") + } + + val result = executeAndCompare(queries) + reportResults(result) + } + + private def executeAndCompare(queries: Seq[String]): Seq[ComparisonResult] = { + println("Execute Auron ...") + setupTables(args.dataLocation, sessions.auronSession) + val auronResults = queryRunner.runQueries(sessions.auronSession, queries) + + val baseComparisons: Seq[ComparisonResult] = + if (args.auronOnly) { + queries.map { qid => + val a = auronResults(qid) + ComparisonResult( + queryId = qid, + baselineRows = 0L, + testRows = a.rowCount, + baselineTime = 0.0, + testTime = a.durationSec, + rowMatch = true, + dataMatch = true, + passed = true, + planStable = true) + } + } else { + println("Execute Baseline (Vanilla Spark) ...") + setupTables(args.dataLocation, sessions.baselineSession) + val baselineResults = queryRunner.runQueries(sessions.baselineSession, queries) + queries.map { queryId => + resutComparator.compare(baselineResults(queryId), auronResults(queryId)) + } + } + + if (args.enablePlanCheck) { + baseComparisons.foreach(comparisonResult => { + val testResult = auronResults(comparisonResult.queryId) + val planStable = planStabilityChecker.validate(testResult) + comparisonResult.planStable = planStable + }) + } + baseComparisons + } + + private def reportResults(results: Seq[ComparisonResult]): Int = { + if (!args.auronOnly) printResultComparison(results) + + if (args.enablePlanCheck) printPlanStability(results) + + if (args.regenGoldenFiles) printGoldenRegenSummary(results) + + val total = results.length + val failed = results.count(r => !r.passed || !r.planStable) + if (failed > 0) { + println(s"\nTPC-DS Test FAILED ($failed out of $total queries failed)") + 1 + } else { + println(s"\nTPC-DS Test PASSED (All $total queries succeeded)") + 0 + } + } + + private def printResultComparison(results: Seq[ComparisonResult]): Unit = { + println("\n" + "=" * 60) + println(s"TPC-DS Result Consistency (Vanilla Spark vs Auron) (${Shims.get.shimVersion})") + println("-" * 60) + println( + f"${"Query"}%-6s ${"Result"}%-8s ${"Vanilla(s)"}%8s ${"Auron(s)"}%8s ${"Speedup(x)"}%8s") + println("-" * 60) + + results.foreach { r => + val speedup = if (r.testTime > 0 && r.baselineTime > 0) { + r.baselineTime / r.testTime + } else 0.0 + + val resultStr = if (r.passed) "PASS" else "FAIL" + + val vanillaTime = f"${r.baselineTime}%.2f" + val auronTime = f"${r.testTime}%.2f" + val speedupStr = f"$speedup%.2f" + + println(f"${r.queryId}%-6s $resultStr%-8s $vanillaTime%8s $auronTime%8s $speedupStr%8s") + } + + val total = results.length + val passedCount = results.count(_.passed) + println("-" * 60) + println(s"Passed: $passedCount/$total") + } + + private def printPlanStability(results: Seq[ComparisonResult]): Unit = { + println("\n" + "=" * 60) + println(s"Auron Plan Stability (${Shims.get.shimVersion})") + println("−" * 60) + println(f"${"Query"}%-6s ${"Stable"}%-7s") + println("-" * 60) + results.foreach { r => + val stable = if (r.planStable) "PASS" else "FAIL" + println(f"${r.queryId}%-6s $stable%-7s") + } + val total = results.length + val stableCount = results.count(_.planStable) + println("-" * 60) + println(s"Passed: $stableCount/$total") + } + + private def printGoldenRegenSummary(results: Seq[ComparisonResult]): Unit = { + val ids = results.map(_.queryId) + val totalUpdated = ids.size + println("\n" + "=" * 60) + println(s"Auron Golden Files (${Shims.get.shimVersion})") + println("−" * 60) + println(s"Updated queries: $totalUpdated") + println(ids.mkString("- ", ", ", "")) + println(s"Output directory: ${goldenOutputDir}") + } +} + +object TPCDSSuite { + def apply(args: SuiteArgs): Suite = new TPCDSSuite(args) +} diff --git a/dev/auron-it/src/test/scala/org.apache.auron/integration/MainTest.scala b/dev/auron-it/src/test/scala/org.apache.auron/integration/MainTest.scala new file mode 100644 index 000000000..c6b74de1c --- /dev/null +++ b/dev/auron-it/src/test/scala/org.apache.auron/integration/MainTest.scala @@ -0,0 +1,89 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.auron.integration + +import java.nio.file.{Files, Paths} + +import org.scalatest.funsuite.AnyFunSuite + +class MainTest extends AnyFunSuite { + + protected val tpcdsDataPath: String = + sys.env.getOrElse("SPARK_TPCDS_DATA", "/tmp/tpcds_1g") + + private def assumePathExists(path: String): Unit = { + assume(Files.exists(Paths.get(path)), s"Skip: directory $path does not exist") + } + + test("parse mainArgs") { + val mainArgs = Array[String]( + "--type", + "tpcds", + "--data-location", + "dev/tpcds_1g", + "--query-filter", + "q1,q2,q3", + "--conf", + "spark.serializer=org.apache.spark.serializer.KryoSerializer", + "--conf", + "spark.celeborn.client.spark.shuffle.writer=hash", + "--plan-check", + "--regen-golden") + Main.parseArgs(mainArgs) match { + case Some(args) => + assertResult("tpcds")(args.benchType) + assertResult("dev/tpcds_1g")(args.dataLocation) + assertResult(Seq("q1", "q2", "q3"))(args.queryFilter) + assertResult( + Map( + "spark.serializer" -> "org.apache.spark.serializer.KryoSerializer", + "spark.celeborn.client.spark.shuffle.writer" -> "hash"))(args.extraSparkConf) + assertResult(true)(args.enablePlanCheck) + assertResult(true)(args.regenGoldenFiles) + case None => + fail(s"failed parse mainArgs: ${mainArgs.mkString("Array(", ", ", ")")}") + } + } + + test("plan check") { + assumePathExists(tpcdsDataPath) + val args = Array[String]( + "--type", + "tpcds", + "--data-location", + tpcdsDataPath, + "--query-filter", + "q1", + "--auron-only", + "--plan-check") + Main.main(args) + } + + test("regen golden files") { + assumePathExists(tpcdsDataPath) + val args = Array[String]( + "--type", + "tpcds", + "--data-location", + tpcdsDataPath, + "--query-filter", + "q1", + "--auron-only", + "--regen-golden") + Main.main(args) + } +} diff --git a/dev/mvn-build-helper/assembly/pom.xml b/dev/mvn-build-helper/assembly/pom.xml index f66b6321a..0b8ab272e 100644 --- a/dev/mvn-build-helper/assembly/pom.xml +++ b/dev/mvn-build-helper/assembly/pom.xml @@ -24,7 +24,7 @@ ${project.version} ../../../pom.xml - assembly + auron-${shimName}_${scalaVersion} jar Apache Auron Assembly Apache Auron Assembly Project @@ -63,6 +63,9 @@ org.apache.maven.plugins maven-shade-plugin ${maven.plugin.shade.version} + + auron-${shimName}_${scalaVersion}-${project.version} + @@ -141,7 +144,27 @@ false - ../../../target/auron-${shimName}_${scalaVersion}-${releaseMode}-${os.detected.classifier}-${project.version}.jar + + + + + + org.codehaus.mojo + exec-maven-plugin + ${exec-maven-plugin.version} + + + copy-fat-jar + + exec + + package + + cp + + target/auron-${shimName}_${scalaVersion}-${project.version}.jar + ../../../target/auron-${shimName}_${scalaVersion}-${releaseMode}-${os.detected.classifier}-${project.version}.jar + diff --git a/pom.xml b/pom.xml index 05db09289..23f0b30ee 100644 --- a/pom.xml +++ b/pom.xml @@ -68,6 +68,9 @@ 1.7.1 3.0.0 3.5.0 + 2.30.0 + 1.3.0 + 3.1.0 2.1.1 5.13.4 @@ -463,6 +466,31 @@ + + org.codehaus.mojo + flatten-maven-plugin + ${maven.plugin.flatten.version} + + oss + + + + flatten + + flatten + + process-resources + + + flatten.clean + + clean + + clean + + + + org.commonjava.maven.plugins