Sql 基于另一列scala的子字符串在数据帧中创建列
我在数据帧(d1)中有一列:Sql 基于另一列scala的子字符串在数据帧中创建列,sql,scala,substring,Sql,Scala,Substring,我在数据帧(d1)中有一列:MODEL\u SCORE,它的值类似于nulll7880。 我想在datframe中创建另一个列MODEL\u SCORE 1,它是MODEL\u SCORE的子字符串 我正在尝试这个。它正在创建列,但未给出预期结果: val x=d1.withColumn("MODEL_SCORE1", substring(col("MODEL_SCORE"),0,4)) val y=d1.select(col("MODEL_SCORE"), substring(col("MO
MODEL\u SCORE
,它的值类似于nulll7880
。
我想在datframe
中创建另一个列MODEL\u SCORE 1
,它是MODEL\u SCORE
的子字符串
我正在尝试这个。它正在创建列,但未给出预期结果:
val x=d1.withColumn("MODEL_SCORE1", substring(col("MODEL_SCORE"),0,4))
val y=d1.select(col("MODEL_SCORE"), substring(col("MODEL_SCORE"),0,4).as("MODEL_SCORE1"))
一种方法是,您可以定义一个自定义项,它将根据需要拆分列字符串值。示例代码如下所示:
val df=sc.parallelize(列表((1,“nulll7880”),(2,“null9000”)).toDF(“id”,“col1”)
df.显示
//输出
+---+---------+
|id | col1|
+---+---------+
|1 | nulll7880|
|2 |零9000|
+---+---------+
defsplitstring:(String=>String)={str=>str.slice(0,4)}
val splitStringUDF=org.apache.spark.sql.functions.udf(splitString)
df.withColumn(“col2”,splitStringUDF(df(“col1”))。show
//输出
+---+---------+----+
|id | col1 | col2|
+---+---------+----+
|1 |空L7880 |空|
|2 |空9000 |空|
+---+---------+----+
谢谢,我可以不创建自定义项就完成吗?您也可以使用df.withColumn(“col2”,substring(df(“col1”),4,3))。这里显示4是字符串中的位置,3是该位置的字符串总长度。