date - 选择月末并使其成为 pyspark 中的字符串
问题描述
我想在 pyspark 中创建一个循环,我给它一个月,它应该选择月底和上个月月底的表格。月份的选择是使用字符串进行的。所以我给'201901',它应该选择'20190131'和'20181231'。
如果可能的话,它应该自动运行并选择从今天开始的上个月末和今天的上个月末。所以今天我们是 2020-05-07,所以它应该选择“20200430”和“20200331”。
def selectTables(date):
i = 0
for i in range(len(date)):
recentDate = .... # should be for the first iteration '20190131'
previousDate = .... # should be for the first iteration '20181231'
recent = spark.read.parquet('table.parquet/date=' + recentDate[i])
previous = spark.read.parquet('table.parquet/date=' + previousDate[i])
selectTables(['201901', '201902'])
解决方案
使用add_months
,last_day
内置的 spark 函数来获取最后一天。
Example:
date='201901'
recentDate=spark.sql("select string(last_day(to_date('{}','yyyyMM')))".format(date)).collect()[0][0]
#u'2019-01-31'
previousDate=spark.sql("select string(last_day(add_months(to_date('{}','yyyyMM'),'-1')))".format(date)).collect()[0][0]
#u'2018-12-31'
推荐阅读
- python-3.x - 当我运行的线程太多时我的游戏崩溃了,我不知道为什么
- php - PHP 致命错误:找不到类“SmartySecurity”
- android - 父母上的 wrap_content 和孩子上的 match_parent 之间的冲突
- java - 分层架构中的 Spring Boot RESTful API 验证
- google-apps-script - 是否可以使用 Google Apps 脚本解压缩 7zip 文件格式的文件?
- java - 年末 SimpleDateFormatter 的问题
- javascript - 如何在多个复选框过滤器中缩小搜索结果?
- python - 写入缓冲区溢出时,除了 seg 错误之外没有有用的输出
- android - Android MotionLayout 运动交错
- javascript - 如何向 Feed 和可查看的 Profile ReactJS 提交信息