2017-02-28 3 views
-2

Ich muss eine benutzerdefinierte Python udf schreiben, um das Datum zu erhalten, wenn wir julian Tag übergeben, die eine Umkehrung der unteren Logik ist. Bitte beraten.Python udf Julian Datum von Julian Tag zu berechnen

def date_to_julian_day(my_date): 
    """Returns the Julian day number of a date.""" 
    a = (14 - my_date.month)//12 
    y = my_date.year + 4800 - a 
    m = my_date.month + 12*a - 3 
    return my_date.day + ((153*m + 2)//5) + 365*y + y//4 - y//100 + y//400 - 32045 
+1

Willkommen bei Stackoverflow. Bitte lesen und befolgen Sie die Buchungsrichtlinien in der Hilfe. [zum Thema] (http://stackoverflow.com/help/on-topic) und [how to ask] (http://stackoverflow.com/help/how-to-ask) gilt hier. StackOverflow ist kein Design-, Codierungs- oder Lernprogrammdienst. – Prune

Antwort

0
from pyspark.sql import functions as f 
rdd = spark.sparkContext.parallelize([(1, '2017-03-01'), (2, '2017-03-02')]) 
df = spark.createDataFrame(rdd, schema=['idx', 'dt']) 
df = df.select(df['idx'], f.to_date(df['dt']).alias('dt')) 

My_UDF = f.UserDefinedFunction(date_to_julian_day, returnType=StringType()) 
df = df.withColumn('julian', My_UDF(df['dt'])) 
df.show()