gpt4 book ai didi

scala - 如何在 .withColumn 函数中获取列的 Integer 值? [ Spark -斯卡拉]

转载 作者:行者123 更新时间:2023-12-03 21:28:00 26 4
gpt4 key购买 nike

我需要使用 date_add() 函数将 90 天添加到数据框的列中。该函数可以正常工作,但仅当我对 90 进行硬编码时才能正常工作。如果数字在另一列中并且我引用了它,该函数会要求我输入一个整数才能工作。

此代码有效:

.withColumn("DATE_SUM_COLUMN",date_add(col("DATE_COLUMN"),90))

这段代码不会:

.withColumn("DATE_SUM_COLUMN",date_add(col("DATE_COLUMN"),col("number")))

谢谢。

最佳答案

您仍然可以使用 expr("date_add(date_column, days_to_add)") 函数来评估 Spark SQL 字符串:

import java.sql.Date

import com.holdenkarau.spark.testing.{DataFrameSuiteBase, SharedSparkContext}
import org.scalatest.FlatSpec
import org.apache.spark.sql.functions.expr

class TestSo2 extends FlatSpec with SharedSparkContext with DataFrameSuiteBase {
"date_add" should "add number of dates specified as Column" in {
import spark.implicits._
val df = Seq(
(Date.valueOf("2019-01-01"), 31),
(Date.valueOf("2019-01-01"), 32)
).toDF("date_column", "days_to_add")
df.show()

/**
* +-----------+-----------+
* |date_column|days_to_add|
* +-----------+-----------+
* | 2019-01-01| 31|
* | 2019-01-01| 32|
* +-----------+-----------+
*/

df.
withColumn(
"next_date",
expr("date_add(date_column, days_to_add)")
).
show

/**
* +-----------+-----------+----------+
* |date_column|days_to_add| next_date|
* +-----------+-----------+----------+
* | 2019-01-01| 31|2019-02-01|
* | 2019-01-01| 32|2019-02-02|
* +-----------+-----------+----------+
*/
}
}

我不知道为什么 spark 开发人员没有将它作为 Scala API 的一部分。

关于scala - 如何在 .withColumn 函数中获取列的 Integer 值? [ Spark -斯卡拉],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57585662/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com