2017-07-10 3 views
1

Ich bin neu bei Databricks & Spark/Scala. Ich arbeite gerade an einer Maschine, die lernt, Verkaufsprognosen zu machen. Ich habe die Funktion dayofyear verwendet, um Features zu erstellen. Das einzige Problem ist, dass mir null Wert zurückgibt. Ich versuchte mit dieser csv, weil ich eine andere benutzte, und ich dachte, dass das von diesem kommen könnte. Aber anscheinend lag ich falsch. Ich lese die Dokumente über diese Funktion, aber die Beschreibung ist wirklich kurz. Ich probierte mit Tagesmonat oder Woche eines Jahres, dasselbe Ergebnis.Rückgabe null von dayofyear Funktion - Spark SQL

Können Sie mir erklären, wie ich das beheben kann? Was mache ich falsch ?

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) 

Hier ist das Ergebnis: Result

Antwort

0

Sie können die issue_date zu timestamp werfen vor dayofyear Funktion als

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

hoffe, das hilft mit!

+0

Vielen Dank, Alter! Daran habe ich nicht gedacht. Ich habe in den Dokumenten gesehen, dass wir dies an der Schnur benutzen können. Es funktioniert perfekt. – KIToRe

+0

Froh, dass es dir geholfen hat :) –