如何在 SPARK SQL 中使用 LEFT 和 RIGHT 关键字 [英] How to use LEFT and RIGHT keyword in SPARK SQL
本文介绍了如何在 SPARK SQL 中使用 LEFT 和 RIGHT 关键字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我是 Spark SQL 的新手,
I am new to spark SQL,
在 MS SQL 中,我们有 LEFT 关键字,LEFT(Columnname,1) in('D','A') then 1 else 0
.
In MS SQL, we have LEFT keyword, LEFT(Columnname,1) in('D','A') then 1 else 0
.
如何在 SPARK SQL 中实现相同的功能.
How to implement the same in SPARK SQL.
推荐答案
您可以使用带有正 pos
的 substring
函数从左边取:
You can use substring
function with positive pos
to take from the left:
import org.apache.spark.sql.functions.substring
substring(column, 0, 1)
和负 pos
从右边取:
substring(column, -1, 1)
所以在 Scala 中你可以定义
So in Scala you can define
import org.apache.spark.sql.Column
import org.apache.spark.sql.functions.substring
def left(col: Column, n: Int) = {
assert(n >= 0)
substring(col, 0, n)
}
def right(col: Column, n: Int) = {
assert(n >= 0)
substring(col, -n, n)
}
val df = Seq("foobar").toDF("str")
df.select(
Seq(left _, right _).flatMap(f => (1 to 3).map(i => f($"str", i))): _*
).show
+--------------------+--------------------+--------------------+---------------------+---------------------+---------------------+
|substring(str, 0, 1)|substring(str, 0, 2)|substring(str, 0, 3)|substring(str, -1, 1)|substring(str, -2, 2)|substring(str, -3, 3)|
+--------------------+--------------------+--------------------+---------------------+---------------------+---------------------+
| f| fo| foo| r| ar| bar|
+--------------------+--------------------+--------------------+---------------------+---------------------+---------------------+
在 Python 中类似:
Similarly in Python:
from pyspark.sql.functions import substring
from pyspark.sql.column import Column
def left(col, n):
assert isinstance(col, (Column, str))
assert isinstance(n, int) and n >= 0
return substring(col, 0, n)
def right(col, n):
assert isinstance(col, (Column, str))
assert isinstance(n, int) and n >= 0
return substring(col, -n, n)
这篇关于如何在 SPARK SQL 中使用 LEFT 和 RIGHT 关键字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文