2017-02-28 16 views
-2

julian dayを渡すと、以下のロジックの逆である日付を取得するために、カスタムpython udfを書く必要があります。お知らせ下さい。julian日付をjulian日付から計算する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のへようこそ。ヘルプドキュメントの投稿ガイドラインを読み、それに従ってください。 [on topic](http://stackoverflow.com/help/on-topic)および[How to Ask](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()