[SPARK-34342][SQL] Format DateLiteral and TimestampLiteral toString
### What changes were proposed in this pull request? This pr format DateLiteral and TimestampLiteral toString. For example: ```sql SELECT * FROM date_dim WHERE d_date BETWEEN (cast('2000-03-11' AS DATE) - INTERVAL 30 days) AND (cast('2000-03-11' AS DATE) + INTERVAL 30 days) ``` Before this pr: ``` Condition : (((isnotnull(d_date#18) AND (d_date#18 >= 10997)) AND (d_date#18 <= 11057)) ``` After this pr: ``` Condition : (((isnotnull(d_date#14) AND (d_date#14 >= 2000-02-10)) AND (d_date#14 <= 2000-04-10)) ``` ### Why are the changes needed? Make the plan more readable. ### Does this PR introduce _any_ user-facing change? No. ### How was this patch tested? Unit test. Closes #31455 from wangyum/SPARK-34342. Authored-by: Yuming Wang <yumwang@ebay.com> Signed-off-by: Dongjoon Hyun <dhyun@apple.com>
This commit is contained in:
parent
cc508d17c7
commit
6e05e99143
|
@ -298,11 +298,21 @@ case class Literal (value: Any, dataType: DataType) extends LeafExpression {
|
||||||
override def foldable: Boolean = true
|
override def foldable: Boolean = true
|
||||||
override def nullable: Boolean = value == null
|
override def nullable: Boolean = value == null
|
||||||
|
|
||||||
|
private def timeZoneId = DateTimeUtils.getZoneId(SQLConf.get.sessionLocalTimeZone)
|
||||||
|
|
||||||
override def toString: String = value match {
|
override def toString: String = value match {
|
||||||
case null => "null"
|
case null => "null"
|
||||||
case binary: Array[Byte] => s"0x" + DatatypeConverter.printHexBinary(binary)
|
case binary: Array[Byte] => s"0x" + DatatypeConverter.printHexBinary(binary)
|
||||||
case d: ArrayBasedMapData => s"map(${d.toString})"
|
case d: ArrayBasedMapData => s"map(${d.toString})"
|
||||||
case other => other.toString
|
case other =>
|
||||||
|
dataType match {
|
||||||
|
case DateType =>
|
||||||
|
DateFormatter(timeZoneId).format(value.asInstanceOf[Int])
|
||||||
|
case TimestampType =>
|
||||||
|
TimestampFormatter.getFractionFormatter(timeZoneId).format(value.asInstanceOf[Long])
|
||||||
|
case _ =>
|
||||||
|
other.toString
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override def hashCode(): Int = {
|
override def hashCode(): Int = {
|
||||||
|
@ -334,8 +344,8 @@ case class Literal (value: Any, dataType: DataType) extends LeafExpression {
|
||||||
// retain in json format, e.g. {"a": 123} can be an int, or double, or decimal, etc.
|
// retain in json format, e.g. {"a": 123} can be an int, or double, or decimal, etc.
|
||||||
val jsonValue = (value, dataType) match {
|
val jsonValue = (value, dataType) match {
|
||||||
case (null, _) => JNull
|
case (null, _) => JNull
|
||||||
case (i: Int, DateType) => JString(DateTimeUtils.toJavaDate(i).toString)
|
case (i: Int, DateType) => JString(toString)
|
||||||
case (l: Long, TimestampType) => JString(DateTimeUtils.toJavaTimestamp(l).toString)
|
case (l: Long, TimestampType) => JString(toString)
|
||||||
case (other, _) => JString(other.toString)
|
case (other, _) => JString(other.toString)
|
||||||
}
|
}
|
||||||
("value" -> jsonValue) :: ("dataType" -> dataType.jsonValue) :: Nil
|
("value" -> jsonValue) :: ("dataType" -> dataType.jsonValue) :: Nil
|
||||||
|
@ -414,12 +424,9 @@ case class Literal (value: Any, dataType: DataType) extends LeafExpression {
|
||||||
}
|
}
|
||||||
case (v: Decimal, t: DecimalType) => v + "BD"
|
case (v: Decimal, t: DecimalType) => v + "BD"
|
||||||
case (v: Int, DateType) =>
|
case (v: Int, DateType) =>
|
||||||
val formatter = DateFormatter(DateTimeUtils.getZoneId(SQLConf.get.sessionLocalTimeZone))
|
s"DATE '$toString'"
|
||||||
s"DATE '${formatter.format(v)}'"
|
|
||||||
case (v: Long, TimestampType) =>
|
case (v: Long, TimestampType) =>
|
||||||
val formatter = TimestampFormatter.getFractionFormatter(
|
s"TIMESTAMP '$toString'"
|
||||||
DateTimeUtils.getZoneId(SQLConf.get.sessionLocalTimeZone))
|
|
||||||
s"TIMESTAMP '${formatter.format(v)}'"
|
|
||||||
case (i: CalendarInterval, CalendarIntervalType) =>
|
case (i: CalendarInterval, CalendarIntervalType) =>
|
||||||
s"INTERVAL '${i.toString}'"
|
s"INTERVAL '${i.toString}'"
|
||||||
case (v: Array[Byte], BinaryType) => s"X'${DatatypeConverter.printHexBinary(v)}'"
|
case (v: Array[Byte], BinaryType) => s"X'${DatatypeConverter.printHexBinary(v)}'"
|
||||||
|
|
|
@ -337,4 +337,16 @@ class LiteralExpressionSuite extends SparkFunSuite with ExpressionEvalHelper {
|
||||||
assert(Literal(Array("1", "2", "3")) ==
|
assert(Literal(Array("1", "2", "3")) ==
|
||||||
Literal.create(Array("1", "2", "3"), ArrayType(StringType)))
|
Literal.create(Array("1", "2", "3"), ArrayType(StringType)))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
test("SPARK-34342: Date/Timestamp toString") {
|
||||||
|
assert(Literal.default(DateType).toString === "1970-01-01")
|
||||||
|
assert(Literal.default(TimestampType).toString === "1969-12-31 16:00:00")
|
||||||
|
withTimeZones(sessionTimeZone = "GMT+01:00", systemTimeZone = "GMT-08:00") {
|
||||||
|
val timestamp = LocalDateTime.of(2021, 2, 3, 16, 50, 3, 456000000)
|
||||||
|
.atZone(ZoneOffset.UTC)
|
||||||
|
.toInstant
|
||||||
|
val literalStr = Literal.create(timestamp).toString
|
||||||
|
assert(literalStr === "2021-02-03 17:50:03.456")
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,7 +86,7 @@ Input [2]: [d_date_sk#10, d_date#11]
|
||||||
|
|
||||||
(13) Filter [codegen id : 2]
|
(13) Filter [codegen id : 2]
|
||||||
Input [2]: [d_date_sk#10, d_date#11]
|
Input [2]: [d_date_sk#10, d_date#11]
|
||||||
Condition : (((isnotnull(d_date#11) AND (d_date#11 >= 10997)) AND (d_date#11 <= 11057)) AND isnotnull(d_date_sk#10))
|
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))
|
||||||
|
|
||||||
(14) BroadcastExchange
|
(14) BroadcastExchange
|
||||||
Input [2]: [d_date_sk#10, d_date#11]
|
Input [2]: [d_date_sk#10, d_date#11]
|
||||||
|
@ -131,7 +131,7 @@ Input [6]: [inv_warehouse_sk#2, inv_quantity_on_hand#3, i_item_id#7, d_date#11,
|
||||||
(23) HashAggregate [codegen id : 4]
|
(23) HashAggregate [codegen id : 4]
|
||||||
Input [4]: [inv_quantity_on_hand#3, w_warehouse_name#14, i_item_id#7, d_date#11]
|
Input [4]: [inv_quantity_on_hand#3, w_warehouse_name#14, i_item_id#7, d_date#11]
|
||||||
Keys [2]: [w_warehouse_name#14, i_item_id#7]
|
Keys [2]: [w_warehouse_name#14, i_item_id#7]
|
||||||
Functions [2]: [partial_sum(CASE WHEN (d_date#11 < 11027) THEN inv_quantity_on_hand#3 ELSE 0 END), partial_sum(CASE WHEN (d_date#11 >= 11027) THEN inv_quantity_on_hand#3 ELSE 0 END)]
|
Functions [2]: [partial_sum(CASE WHEN (d_date#11 < 2000-03-11) THEN inv_quantity_on_hand#3 ELSE 0 END), partial_sum(CASE WHEN (d_date#11 >= 2000-03-11) THEN inv_quantity_on_hand#3 ELSE 0 END)]
|
||||||
Aggregate Attributes [2]: [sum#16, sum#17]
|
Aggregate Attributes [2]: [sum#16, sum#17]
|
||||||
Results [4]: [w_warehouse_name#14, i_item_id#7, sum#18, sum#19]
|
Results [4]: [w_warehouse_name#14, i_item_id#7, sum#18, sum#19]
|
||||||
|
|
||||||
|
@ -142,9 +142,9 @@ Arguments: hashpartitioning(w_warehouse_name#14, i_item_id#7, 5), ENSURE_REQUIRE
|
||||||
(25) HashAggregate [codegen id : 5]
|
(25) HashAggregate [codegen id : 5]
|
||||||
Input [4]: [w_warehouse_name#14, i_item_id#7, sum#18, sum#19]
|
Input [4]: [w_warehouse_name#14, i_item_id#7, sum#18, sum#19]
|
||||||
Keys [2]: [w_warehouse_name#14, i_item_id#7]
|
Keys [2]: [w_warehouse_name#14, i_item_id#7]
|
||||||
Functions [2]: [sum(CASE WHEN (d_date#11 < 11027) THEN inv_quantity_on_hand#3 ELSE 0 END), sum(CASE WHEN (d_date#11 >= 11027) THEN inv_quantity_on_hand#3 ELSE 0 END)]
|
Functions [2]: [sum(CASE WHEN (d_date#11 < 2000-03-11) THEN inv_quantity_on_hand#3 ELSE 0 END), sum(CASE WHEN (d_date#11 >= 2000-03-11) THEN inv_quantity_on_hand#3 ELSE 0 END)]
|
||||||
Aggregate Attributes [2]: [sum(CASE WHEN (d_date#11 < 11027) THEN inv_quantity_on_hand#3 ELSE 0 END)#21, sum(CASE WHEN (d_date#11 >= 11027) THEN inv_quantity_on_hand#3 ELSE 0 END)#22]
|
Aggregate Attributes [2]: [sum(CASE WHEN (d_date#11 < 2000-03-11) THEN inv_quantity_on_hand#3 ELSE 0 END)#21, sum(CASE WHEN (d_date#11 >= 2000-03-11) THEN inv_quantity_on_hand#3 ELSE 0 END)#22]
|
||||||
Results [4]: [w_warehouse_name#14, i_item_id#7, sum(CASE WHEN (d_date#11 < 11027) THEN inv_quantity_on_hand#3 ELSE 0 END)#21 AS inv_before#23, sum(CASE WHEN (d_date#11 >= 11027) THEN inv_quantity_on_hand#3 ELSE 0 END)#22 AS inv_after#24]
|
Results [4]: [w_warehouse_name#14, i_item_id#7, sum(CASE WHEN (d_date#11 < 2000-03-11) THEN inv_quantity_on_hand#3 ELSE 0 END)#21 AS inv_before#23, sum(CASE WHEN (d_date#11 >= 2000-03-11) THEN inv_quantity_on_hand#3 ELSE 0 END)#22 AS inv_after#24]
|
||||||
|
|
||||||
(26) Filter [codegen id : 5]
|
(26) Filter [codegen id : 5]
|
||||||
Input [4]: [w_warehouse_name#14, i_item_id#7, inv_before#23, inv_after#24]
|
Input [4]: [w_warehouse_name#14, i_item_id#7, inv_before#23, inv_after#24]
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
TakeOrderedAndProject [w_warehouse_name,i_item_id,inv_before,inv_after]
|
TakeOrderedAndProject [w_warehouse_name,i_item_id,inv_before,inv_after]
|
||||||
WholeStageCodegen (5)
|
WholeStageCodegen (5)
|
||||||
Filter [inv_before,inv_after]
|
Filter [inv_before,inv_after]
|
||||||
HashAggregate [w_warehouse_name,i_item_id,sum,sum] [sum(CASE WHEN (d_date < 11027) THEN inv_quantity_on_hand ELSE 0 END),sum(CASE WHEN (d_date >= 11027) THEN inv_quantity_on_hand ELSE 0 END),inv_before,inv_after,sum,sum]
|
HashAggregate [w_warehouse_name,i_item_id,sum,sum] [sum(CASE WHEN (d_date < 2000-03-11) THEN inv_quantity_on_hand ELSE 0 END),sum(CASE WHEN (d_date >= 2000-03-11) THEN inv_quantity_on_hand ELSE 0 END),inv_before,inv_after,sum,sum]
|
||||||
InputAdapter
|
InputAdapter
|
||||||
Exchange [w_warehouse_name,i_item_id] #1
|
Exchange [w_warehouse_name,i_item_id] #1
|
||||||
WholeStageCodegen (4)
|
WholeStageCodegen (4)
|
||||||
|
|
|
@ -113,7 +113,7 @@ Input [2]: [d_date_sk#13, d_date#14]
|
||||||
|
|
||||||
(19) Filter [codegen id : 3]
|
(19) Filter [codegen id : 3]
|
||||||
Input [2]: [d_date_sk#13, d_date#14]
|
Input [2]: [d_date_sk#13, d_date#14]
|
||||||
Condition : (((isnotnull(d_date#14) AND (d_date#14 >= 10997)) AND (d_date#14 <= 11057)) AND isnotnull(d_date_sk#13))
|
Condition : (((isnotnull(d_date#14) AND (d_date#14 >= 2000-02-10)) AND (d_date#14 <= 2000-04-10)) AND isnotnull(d_date_sk#13))
|
||||||
|
|
||||||
(20) BroadcastExchange
|
(20) BroadcastExchange
|
||||||
Input [2]: [d_date_sk#13, d_date#14]
|
Input [2]: [d_date_sk#13, d_date#14]
|
||||||
|
@ -131,7 +131,7 @@ Input [6]: [inv_quantity_on_hand#3, inv_date_sk#4, w_warehouse_name#7, i_item_id
|
||||||
(23) HashAggregate [codegen id : 4]
|
(23) HashAggregate [codegen id : 4]
|
||||||
Input [4]: [inv_quantity_on_hand#3, w_warehouse_name#7, i_item_id#10, d_date#14]
|
Input [4]: [inv_quantity_on_hand#3, w_warehouse_name#7, i_item_id#10, d_date#14]
|
||||||
Keys [2]: [w_warehouse_name#7, i_item_id#10]
|
Keys [2]: [w_warehouse_name#7, i_item_id#10]
|
||||||
Functions [2]: [partial_sum(CASE WHEN (d_date#14 < 11027) THEN inv_quantity_on_hand#3 ELSE 0 END), partial_sum(CASE WHEN (d_date#14 >= 11027) THEN inv_quantity_on_hand#3 ELSE 0 END)]
|
Functions [2]: [partial_sum(CASE WHEN (d_date#14 < 2000-03-11) THEN inv_quantity_on_hand#3 ELSE 0 END), partial_sum(CASE WHEN (d_date#14 >= 2000-03-11) THEN inv_quantity_on_hand#3 ELSE 0 END)]
|
||||||
Aggregate Attributes [2]: [sum#16, sum#17]
|
Aggregate Attributes [2]: [sum#16, sum#17]
|
||||||
Results [4]: [w_warehouse_name#7, i_item_id#10, sum#18, sum#19]
|
Results [4]: [w_warehouse_name#7, i_item_id#10, sum#18, sum#19]
|
||||||
|
|
||||||
|
@ -142,9 +142,9 @@ Arguments: hashpartitioning(w_warehouse_name#7, i_item_id#10, 5), ENSURE_REQUIRE
|
||||||
(25) HashAggregate [codegen id : 5]
|
(25) HashAggregate [codegen id : 5]
|
||||||
Input [4]: [w_warehouse_name#7, i_item_id#10, sum#18, sum#19]
|
Input [4]: [w_warehouse_name#7, i_item_id#10, sum#18, sum#19]
|
||||||
Keys [2]: [w_warehouse_name#7, i_item_id#10]
|
Keys [2]: [w_warehouse_name#7, i_item_id#10]
|
||||||
Functions [2]: [sum(CASE WHEN (d_date#14 < 11027) THEN inv_quantity_on_hand#3 ELSE 0 END), sum(CASE WHEN (d_date#14 >= 11027) THEN inv_quantity_on_hand#3 ELSE 0 END)]
|
Functions [2]: [sum(CASE WHEN (d_date#14 < 2000-03-11) THEN inv_quantity_on_hand#3 ELSE 0 END), sum(CASE WHEN (d_date#14 >= 2000-03-11) THEN inv_quantity_on_hand#3 ELSE 0 END)]
|
||||||
Aggregate Attributes [2]: [sum(CASE WHEN (d_date#14 < 11027) THEN inv_quantity_on_hand#3 ELSE 0 END)#21, sum(CASE WHEN (d_date#14 >= 11027) THEN inv_quantity_on_hand#3 ELSE 0 END)#22]
|
Aggregate Attributes [2]: [sum(CASE WHEN (d_date#14 < 2000-03-11) THEN inv_quantity_on_hand#3 ELSE 0 END)#21, sum(CASE WHEN (d_date#14 >= 2000-03-11) THEN inv_quantity_on_hand#3 ELSE 0 END)#22]
|
||||||
Results [4]: [w_warehouse_name#7, i_item_id#10, sum(CASE WHEN (d_date#14 < 11027) THEN inv_quantity_on_hand#3 ELSE 0 END)#21 AS inv_before#23, sum(CASE WHEN (d_date#14 >= 11027) THEN inv_quantity_on_hand#3 ELSE 0 END)#22 AS inv_after#24]
|
Results [4]: [w_warehouse_name#7, i_item_id#10, sum(CASE WHEN (d_date#14 < 2000-03-11) THEN inv_quantity_on_hand#3 ELSE 0 END)#21 AS inv_before#23, sum(CASE WHEN (d_date#14 >= 2000-03-11) THEN inv_quantity_on_hand#3 ELSE 0 END)#22 AS inv_after#24]
|
||||||
|
|
||||||
(26) Filter [codegen id : 5]
|
(26) Filter [codegen id : 5]
|
||||||
Input [4]: [w_warehouse_name#7, i_item_id#10, inv_before#23, inv_after#24]
|
Input [4]: [w_warehouse_name#7, i_item_id#10, inv_before#23, inv_after#24]
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
TakeOrderedAndProject [w_warehouse_name,i_item_id,inv_before,inv_after]
|
TakeOrderedAndProject [w_warehouse_name,i_item_id,inv_before,inv_after]
|
||||||
WholeStageCodegen (5)
|
WholeStageCodegen (5)
|
||||||
Filter [inv_before,inv_after]
|
Filter [inv_before,inv_after]
|
||||||
HashAggregate [w_warehouse_name,i_item_id,sum,sum] [sum(CASE WHEN (d_date < 11027) THEN inv_quantity_on_hand ELSE 0 END),sum(CASE WHEN (d_date >= 11027) THEN inv_quantity_on_hand ELSE 0 END),inv_before,inv_after,sum,sum]
|
HashAggregate [w_warehouse_name,i_item_id,sum,sum] [sum(CASE WHEN (d_date < 2000-03-11) THEN inv_quantity_on_hand ELSE 0 END),sum(CASE WHEN (d_date >= 2000-03-11) THEN inv_quantity_on_hand ELSE 0 END),inv_before,inv_after,sum,sum]
|
||||||
InputAdapter
|
InputAdapter
|
||||||
Exchange [w_warehouse_name,i_item_id] #1
|
Exchange [w_warehouse_name,i_item_id] #1
|
||||||
WholeStageCodegen (4)
|
WholeStageCodegen (4)
|
||||||
|
|
|
@ -138,7 +138,7 @@ Input [2]: [d_date_sk#17, d_date#18]
|
||||||
|
|
||||||
(23) Filter [codegen id : 6]
|
(23) Filter [codegen id : 6]
|
||||||
Input [2]: [d_date_sk#17, d_date#18]
|
Input [2]: [d_date_sk#17, d_date#18]
|
||||||
Condition : (((isnotnull(d_date#18) AND (d_date#18 >= 10997)) AND (d_date#18 <= 11057)) AND isnotnull(d_date_sk#17))
|
Condition : (((isnotnull(d_date#18) AND (d_date#18 >= 2000-02-10)) AND (d_date#18 <= 2000-04-10)) AND isnotnull(d_date_sk#17))
|
||||||
|
|
||||||
(24) BroadcastExchange
|
(24) BroadcastExchange
|
||||||
Input [2]: [d_date_sk#17, d_date#18]
|
Input [2]: [d_date_sk#17, d_date#18]
|
||||||
|
@ -183,7 +183,7 @@ Input [7]: [cs_warehouse_sk#1, cs_sales_price#4, cr_refunded_cash#10, i_item_id#
|
||||||
(33) HashAggregate [codegen id : 8]
|
(33) HashAggregate [codegen id : 8]
|
||||||
Input [5]: [cs_sales_price#4, cr_refunded_cash#10, w_state#21, i_item_id#14, d_date#18]
|
Input [5]: [cs_sales_price#4, cr_refunded_cash#10, w_state#21, i_item_id#14, d_date#18]
|
||||||
Keys [2]: [w_state#21, i_item_id#14]
|
Keys [2]: [w_state#21, i_item_id#14]
|
||||||
Functions [2]: [partial_sum(CASE WHEN (d_date#18 < 11027) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END), partial_sum(CASE WHEN (d_date#18 >= 11027) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END)]
|
Functions [2]: [partial_sum(CASE WHEN (d_date#18 < 2000-03-11) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END), partial_sum(CASE WHEN (d_date#18 >= 2000-03-11) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END)]
|
||||||
Aggregate Attributes [4]: [sum#23, isEmpty#24, sum#25, isEmpty#26]
|
Aggregate Attributes [4]: [sum#23, isEmpty#24, sum#25, isEmpty#26]
|
||||||
Results [6]: [w_state#21, i_item_id#14, sum#27, isEmpty#28, sum#29, isEmpty#30]
|
Results [6]: [w_state#21, i_item_id#14, sum#27, isEmpty#28, sum#29, isEmpty#30]
|
||||||
|
|
||||||
|
@ -194,9 +194,9 @@ Arguments: hashpartitioning(w_state#21, i_item_id#14, 5), ENSURE_REQUIREMENTS, [
|
||||||
(35) HashAggregate [codegen id : 9]
|
(35) HashAggregate [codegen id : 9]
|
||||||
Input [6]: [w_state#21, i_item_id#14, sum#27, isEmpty#28, sum#29, isEmpty#30]
|
Input [6]: [w_state#21, i_item_id#14, sum#27, isEmpty#28, sum#29, isEmpty#30]
|
||||||
Keys [2]: [w_state#21, i_item_id#14]
|
Keys [2]: [w_state#21, i_item_id#14]
|
||||||
Functions [2]: [sum(CASE WHEN (d_date#18 < 11027) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END), sum(CASE WHEN (d_date#18 >= 11027) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END)]
|
Functions [2]: [sum(CASE WHEN (d_date#18 < 2000-03-11) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END), sum(CASE WHEN (d_date#18 >= 2000-03-11) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END)]
|
||||||
Aggregate Attributes [2]: [sum(CASE WHEN (d_date#18 < 11027) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END)#32, sum(CASE WHEN (d_date#18 >= 11027) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END)#33]
|
Aggregate Attributes [2]: [sum(CASE WHEN (d_date#18 < 2000-03-11) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END)#32, sum(CASE WHEN (d_date#18 >= 2000-03-11) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END)#33]
|
||||||
Results [4]: [w_state#21, i_item_id#14, sum(CASE WHEN (d_date#18 < 11027) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END)#32 AS sales_before#34, sum(CASE WHEN (d_date#18 >= 11027) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END)#33 AS sales_after#35]
|
Results [4]: [w_state#21, i_item_id#14, sum(CASE WHEN (d_date#18 < 2000-03-11) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END)#32 AS sales_before#34, sum(CASE WHEN (d_date#18 >= 2000-03-11) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END)#33 AS sales_after#35]
|
||||||
|
|
||||||
(36) TakeOrderedAndProject
|
(36) TakeOrderedAndProject
|
||||||
Input [4]: [w_state#21, i_item_id#14, sales_before#34, sales_after#35]
|
Input [4]: [w_state#21, i_item_id#14, sales_before#34, sales_after#35]
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
TakeOrderedAndProject [w_state,i_item_id,sales_before,sales_after]
|
TakeOrderedAndProject [w_state,i_item_id,sales_before,sales_after]
|
||||||
WholeStageCodegen (9)
|
WholeStageCodegen (9)
|
||||||
HashAggregate [w_state,i_item_id,sum,isEmpty,sum,isEmpty] [sum(CASE WHEN (d_date < 11027) THEN CheckOverflow((promote_precision(cast(cs_sales_price as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END),sum(CASE WHEN (d_date >= 11027) THEN CheckOverflow((promote_precision(cast(cs_sales_price as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END),sales_before,sales_after,sum,isEmpty,sum,isEmpty]
|
HashAggregate [w_state,i_item_id,sum,isEmpty,sum,isEmpty] [sum(CASE WHEN (d_date < 2000-03-11) THEN CheckOverflow((promote_precision(cast(cs_sales_price as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END),sum(CASE WHEN (d_date >= 2000-03-11) THEN CheckOverflow((promote_precision(cast(cs_sales_price as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END),sales_before,sales_after,sum,isEmpty,sum,isEmpty]
|
||||||
InputAdapter
|
InputAdapter
|
||||||
Exchange [w_state,i_item_id] #1
|
Exchange [w_state,i_item_id] #1
|
||||||
WholeStageCodegen (8)
|
WholeStageCodegen (8)
|
||||||
|
|
|
@ -165,7 +165,7 @@ Input [2]: [d_date_sk#20, d_date#21]
|
||||||
|
|
||||||
(29) Filter [codegen id : 7]
|
(29) Filter [codegen id : 7]
|
||||||
Input [2]: [d_date_sk#20, d_date#21]
|
Input [2]: [d_date_sk#20, d_date#21]
|
||||||
Condition : (((isnotnull(d_date#21) AND (d_date#21 >= 10997)) AND (d_date#21 <= 11057)) AND isnotnull(d_date_sk#20))
|
Condition : (((isnotnull(d_date#21) AND (d_date#21 >= 2000-02-10)) AND (d_date#21 <= 2000-04-10)) AND isnotnull(d_date_sk#20))
|
||||||
|
|
||||||
(30) BroadcastExchange
|
(30) BroadcastExchange
|
||||||
Input [2]: [d_date_sk#20, d_date#21]
|
Input [2]: [d_date_sk#20, d_date#21]
|
||||||
|
@ -183,7 +183,7 @@ Input [7]: [cs_sales_price#4, cs_sold_date_sk#5, cr_refunded_cash#10, w_state#14
|
||||||
(33) HashAggregate [codegen id : 8]
|
(33) HashAggregate [codegen id : 8]
|
||||||
Input [5]: [cs_sales_price#4, cr_refunded_cash#10, w_state#14, i_item_id#17, d_date#21]
|
Input [5]: [cs_sales_price#4, cr_refunded_cash#10, w_state#14, i_item_id#17, d_date#21]
|
||||||
Keys [2]: [w_state#14, i_item_id#17]
|
Keys [2]: [w_state#14, i_item_id#17]
|
||||||
Functions [2]: [partial_sum(CASE WHEN (d_date#21 < 11027) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END), partial_sum(CASE WHEN (d_date#21 >= 11027) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END)]
|
Functions [2]: [partial_sum(CASE WHEN (d_date#21 < 2000-03-11) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END), partial_sum(CASE WHEN (d_date#21 >= 2000-03-11) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END)]
|
||||||
Aggregate Attributes [4]: [sum#23, isEmpty#24, sum#25, isEmpty#26]
|
Aggregate Attributes [4]: [sum#23, isEmpty#24, sum#25, isEmpty#26]
|
||||||
Results [6]: [w_state#14, i_item_id#17, sum#27, isEmpty#28, sum#29, isEmpty#30]
|
Results [6]: [w_state#14, i_item_id#17, sum#27, isEmpty#28, sum#29, isEmpty#30]
|
||||||
|
|
||||||
|
@ -194,9 +194,9 @@ Arguments: hashpartitioning(w_state#14, i_item_id#17, 5), ENSURE_REQUIREMENTS, [
|
||||||
(35) HashAggregate [codegen id : 9]
|
(35) HashAggregate [codegen id : 9]
|
||||||
Input [6]: [w_state#14, i_item_id#17, sum#27, isEmpty#28, sum#29, isEmpty#30]
|
Input [6]: [w_state#14, i_item_id#17, sum#27, isEmpty#28, sum#29, isEmpty#30]
|
||||||
Keys [2]: [w_state#14, i_item_id#17]
|
Keys [2]: [w_state#14, i_item_id#17]
|
||||||
Functions [2]: [sum(CASE WHEN (d_date#21 < 11027) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END), sum(CASE WHEN (d_date#21 >= 11027) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END)]
|
Functions [2]: [sum(CASE WHEN (d_date#21 < 2000-03-11) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END), sum(CASE WHEN (d_date#21 >= 2000-03-11) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END)]
|
||||||
Aggregate Attributes [2]: [sum(CASE WHEN (d_date#21 < 11027) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END)#32, sum(CASE WHEN (d_date#21 >= 11027) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END)#33]
|
Aggregate Attributes [2]: [sum(CASE WHEN (d_date#21 < 2000-03-11) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END)#32, sum(CASE WHEN (d_date#21 >= 2000-03-11) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END)#33]
|
||||||
Results [4]: [w_state#14, i_item_id#17, sum(CASE WHEN (d_date#21 < 11027) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END)#32 AS sales_before#34, sum(CASE WHEN (d_date#21 >= 11027) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END)#33 AS sales_after#35]
|
Results [4]: [w_state#14, i_item_id#17, sum(CASE WHEN (d_date#21 < 2000-03-11) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END)#32 AS sales_before#34, sum(CASE WHEN (d_date#21 >= 2000-03-11) THEN CheckOverflow((promote_precision(cast(cs_sales_price#4 as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash#10 as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END)#33 AS sales_after#35]
|
||||||
|
|
||||||
(36) TakeOrderedAndProject
|
(36) TakeOrderedAndProject
|
||||||
Input [4]: [w_state#14, i_item_id#17, sales_before#34, sales_after#35]
|
Input [4]: [w_state#14, i_item_id#17, sales_before#34, sales_after#35]
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
TakeOrderedAndProject [w_state,i_item_id,sales_before,sales_after]
|
TakeOrderedAndProject [w_state,i_item_id,sales_before,sales_after]
|
||||||
WholeStageCodegen (9)
|
WholeStageCodegen (9)
|
||||||
HashAggregate [w_state,i_item_id,sum,isEmpty,sum,isEmpty] [sum(CASE WHEN (d_date < 11027) THEN CheckOverflow((promote_precision(cast(cs_sales_price as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END),sum(CASE WHEN (d_date >= 11027) THEN CheckOverflow((promote_precision(cast(cs_sales_price as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END),sales_before,sales_after,sum,isEmpty,sum,isEmpty]
|
HashAggregate [w_state,i_item_id,sum,isEmpty,sum,isEmpty] [sum(CASE WHEN (d_date < 2000-03-11) THEN CheckOverflow((promote_precision(cast(cs_sales_price as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END),sum(CASE WHEN (d_date >= 2000-03-11) THEN CheckOverflow((promote_precision(cast(cs_sales_price as decimal(13,2))) - promote_precision(cast(coalesce(cast(cr_refunded_cash as decimal(12,2)), 0.00) as decimal(13,2)))), DecimalType(13,2), true) ELSE 0.00 END),sales_before,sales_after,sum,isEmpty,sum,isEmpty]
|
||||||
InputAdapter
|
InputAdapter
|
||||||
Exchange [w_state,i_item_id] #1
|
Exchange [w_state,i_item_id] #1
|
||||||
WholeStageCodegen (8)
|
WholeStageCodegen (8)
|
||||||
|
|
Loading…
Reference in a new issue