2017-02-28 84 views
-2

我需要編寫自定義python udf來獲取日期,如果我們通過朱利安日,這是以下邏輯的反向。請指教。python udf從朱連安日計算朱利安日期

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

歡迎來到StackOverflow。請閱讀並遵守幫助文檔中的發佈準則。 [在主題](http://stackoverflow.com/help/on-topic)和[如何提問](http://stackoverflow.com/help/how-to-ask)適用於此處。 StackOverflow不是一個設計,編碼或教程服務。 – Prune

回答

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() 
相關問題