【发布时间】:2017-11-21 22:18:39
【问题描述】:
我正在尝试获取我在 python 中编写的函数,以将新列添加到 SQL 表中。我不知道如何将 UDF 从该函数传递到 SQL 表。我相信做到这一点的方法是withColumn,我只是不知道该怎么做。
目标是从 SQL 表中获取日/周/年,并根据给定数据计算月份。如果我将日/周/年设置为等于值,则以下功能有效。
这里是函数:
def getmonth(day,week,year):
x = datetime.strptime('{}_{}_{}{}'.format(day,week,year,-0), '%d_%W_%Y%w')
month = x.strftime('%m')
udf(getmonth)
SQL...
DriveConfig = sqlContext.sql("""
SELECT
daymade as day,
weekmade as week,
yearmade as year
FROM datatable2 """)
这是我的表格大致的样子,我想添加介于周和年之间的月份列
day week year
2 42 2017
3 2 2011
1 14 2005
...
【问题讨论】:
-
这里真正的挑战是您没有将日期存储为日期。相反,您将所有组件相互独立地存储。您可以轻松地使用 DATEADD 从您发布的数据中完成此操作。
标签: python sql-server apache-zeppelin