Scala 从dayofyear函数返回null-Spark SQL

Scala 从dayofyear函数返回null-Spark SQL,scala,function,apache-spark,null,apache-spark-sql,Scala,Function,Apache Spark,Null,Apache Spark Sql,我是Databricks&Spark/Scala的新手。 我目前正在一台机器上学习做销售预测。 我使用函数dayofyear来创建特性。 唯一的问题是返回空值。 我尝试使用这个csv,因为我正在使用另一个csv,我认为这可能来自这个csv。 但显然,我错了。 我阅读了有关此功能的文档,但描述非常简短。 我试着用一年中的第二个月或第二个星期,结果是一样的 你能给我解释一下我该怎么解决这个问题吗?我做错了什么 val path = "dbfs:/databricks-datasets/asa/pla

我是Databricks&Spark/Scala的新手。 我目前正在一台机器上学习做销售预测。 我使用函数dayofyear来创建特性。 唯一的问题是返回空值。 我尝试使用这个csv,因为我正在使用另一个csv,我认为这可能来自这个csv。 但显然,我错了。 我阅读了有关此功能的文档,但描述非常简短。 我试着用一年中的第二个月或第二个星期,结果是一样的

你能给我解释一下我该怎么解决这个问题吗?我做错了什么

val path = "dbfs:/databricks-datasets/asa/planes/plane-data.csv"
val df = sqlContext.read.format("csv")
  .option("header", "true")
  .option("inferSchema", "true")
  .load(path)

display(df)
import org.apache.spark.sql.functions._

val df2 = df.withColumn("dateofyear", dayofyear(df("issue_date")))
display(df2)

结果如下:

在使用
dayofyear
函数之前,您可以将
发行日期
强制转换为
时间戳

data.withColumn("issue_date", unix_timestamp($"issue_date", "MM/dd/yyyy").cast(TimestampType))
      .withColumn("dayofyear", dayofyear($"issue_date"))

希望这有帮助

在使用
dayofyear
函数之前,您可以将
issue\u date
强制转换为
timestamp

data.withColumn("issue_date", unix_timestamp($"issue_date", "MM/dd/yyyy").cast(TimestampType))
      .withColumn("dayofyear", dayofyear($"issue_date"))

希望这有帮助

谢谢你,伙计!我没想到。我在文件上看到我们可以在字符串上使用这个。它工作得很好。很高兴这对你有帮助:)谢谢你,伙计!我没想到。我在文件上看到我们可以在字符串上使用这个。它工作得很好。很高兴对您有所帮助:)