【问题标题】:Need the equivalent of SQL IsNumeric function in spark sqlspark sql中需要等效的SQL IsNumeric函数
【发布时间】:2019-06-24 13:08:54
【问题描述】:

就像我们有验证表达式是否为数字的 SQL ISNUMERIC 函数一样,我需要 Spark SQL 中是否有任何等效函数,我试图找到它但找不到。请问是否有人可以提供相同的帮助或建议?

【问题讨论】:

  • 那么,执行完SQL后需要过滤Rows吗?
  • 是的,但是该解决方案是规模化的。我猜他想知道Java。好吧,他应该具体说明哪种语言。
  • 我需要在使用 spark sql 的 Azure 数据块中使用 isumeric 函数

标签: apache-spark-sql


【解决方案1】:

尝试使用 spark udf,这种方法将帮助您克隆任何函数 -

scala> spark.udf.register("IsNumeric", (inpColumn: Int) => BigInt(inpColumn).isInstanceOf[BigInt])
res46: org.apache.spark.sql.expressions.UserDefinedFunction = UserDefinedFunction(<function1>,BooleanType,Some(List(IntegerType)))

scala> spark.sql(s""" select "ABC", IsNumeric(123) as IsNumeric_1  """).show(false)
+---+-----------+
|ABC|IsNumeric_1|
+---+-----------+
|ABC|true       |
+---+-----------+


scala> spark.sql(s""" select "ABC", IsNumeric("ABC") as IsNumeric_1  """).show(false)
+---+-----------+
|ABC|IsNumeric_1|
+---+-----------+
|ABC|null       |
+---+-----------+

这里,如果列值不是整数,上述函数将返回 null。

希望这会有所帮助。

【讨论】:

  • 在 where 子句中也是如此?
  • 是的,您可以在 where 子句中使用 spark udf。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-01
  • 2020-10-07
  • 1970-01-01
  • 1970-01-01
  • 2018-07-09
相关资源
最近更新 更多