微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从 AWS Glue Pyspark 中的 Rundate 减少一周

如何解决如何从 AWS Glue Pyspark 中的 Rundate 减少一周

我有一个场景,我在 AWS glue 作业中以“YYYY-MM-DD”格式传递了一个运行日期值。

假设是 2021-04-19。

现在,我将这个运行日期读为 'datetime.strptime(rundate,"%y-%m-%d")'

但现在我想从中创建 2 个变量变量 A 和变量 B,例如-

变量 A= rundate- 2 周(应以 YYYYMMDD 格式保存)

变量 B = rundate- 1 周(应以 YYYYMMDD 格式保存)

然后使用此变量过滤数据框中的数据。

解决方法

使用 datetime lib 使用 timedelta 从您的运行日期中减去 weeks/days..etc

Example:

Using Python:

import datetime
varA=datetime.datetime.strftime(datetime.datetime.strptime(rundate,"%Y-%m-%d")-datetime.timedelta(days=7),"%Y-%m-%d")
#'2021-04-12'

varB=datetime.datetime.strftime(datetime.datetime.strptime(rundate,"%Y-%m-%d")-datetime.timedelta(days=14),"%Y-%m-%d")
#'2021-04-05'

Using pyspark's Spark session:

rundate='2021-04-19'
varA=spark.sql(f"select string(date_sub('{rundate}',7))").collect()[0][0]
#'2021-04-12'
varB=spark.sql(f"select string(date_sub('{rundate}',14))").collect()[0][0]
#'2021-04-05'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。