scala - spark - select 中的条件语句
问题描述
我Column
从 Dataframe 中选择两个 scol1
和col2
.
df.select((col("a")+col("b")).as("sum_col")
现在用户希望sum_col
将其固定为 4。因此长度为 2 a
,b
因此最大值可以小于 100(二)或大于 100(三),因此需要有条件地添加 1 或 2 个空格。
谁能告诉我如何select
使用 cinditional 逻辑在块内处理以投射Column
到concat
并决定要添加的一两个空格
解决方案
只需使用format_string
功能
import org.apache.spark.sql.functions.format_string
val df = Seq(1, 10, 100).toDF("sum_col")
val result = df.withColumn("sum_col_fmt", format_string("%4d", $"sum_col"))
并证明它有效:
result.withColumn("proof", concat(lit("'"), $"sum_col_fmt", lit("'"))).show
// +-------+-----------+------+
// |sum_col|sum_col_fmt| proof|
// +-------+-----------+------+
// | 1| 1|' 1'|
//| 10| 10|' 10'|
// | 100| 100|' 100'|
// +-------+-----------+------+