首页 > 解决方案 > spark - select 中的条件语句

问题描述

Column从 Dataframe 中选择两个 scol1col2.

df.select((col("a")+col("b")).as("sum_col")

现在用户希望sum_col将其固定为 4。因此长度为 2 ab因此最大值可以小于 100(二)或大于 100(三),因此需要有条件地添加 1 或 2 个空格。

谁能告诉我如何select使用 cinditional 逻辑在块内处理以投射Columnconcat并决定要添加的一两个空格

标签: scalaapache-sparkhadoopbigdata

解决方案


只需使用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'|
// +-------+-----------+------+

推荐阅读