gpt4 book ai didi

sql - Spark如何比较boolean和string类型的数据

转载 作者:行者123 更新时间:2023-12-05 05:30:05 25 4
gpt4 key购买 nike

SQL:

SELECT 'true' = true;

我知道结果是真的,但我想知道 Spark 如何比较两者:

  • 将 true 转换为 'true',然后比较两个字符串类型;
  • 将“true”转换为 true,然后比较两个 bool 类型。

Spark使用什么方式?

比较日期和字符串或时间戳和字符串时也会发生同样的情况:

SELECT '2022-01-02' > date('2022-01-03');
SELECT '2022-08-12 01:00:00.123456' < timestamp('2019-08-12 01:00:00.123456');

我是 Spark 的新手。提前致谢!

最佳答案

最简单的学习方法是请 Spark 解释计划。

scala> spark.sql("SELECT 'true' = true").explain
== Physical Plan ==
*(1) Project [true AS (CAST(true AS BOOLEAN) = true)#53]
+- *(1) Scan OneRowRelation[]

scala> spark.sql("SELECT '2022-01-02' > date('2022-01-03')").explain
== Physical Plan ==
*(1) Project [false AS (CAST(2022-01-02 AS DATE) > CAST(2022-01-03 AS DATE))#55]
+- *(1) Scan OneRowRelation[]

scala> spark.sql("SELECT '2022-08-12 01:00:00.123456' < timestamp('2019-08-12 01:00:00.123456')").explain
== Physical Plan ==
*(1) Project [false AS (CAST(2022-08-12 01:00:00.123456 AS TIMESTAMP) < CAST(2019-08-12 01:00:00.123456 AS TIMESTAMP))#57]
+- *(1) Scan OneRowRelation[]

我们可以清楚地看到,在所有情况下,Spark 都会尝试将字符串转换为其他类型( bool 值、日期、时间戳、整数...)。

关于sql - Spark如何比较boolean和string类型的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74792803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com