在 spark sql 中获取上一次特定月份的结果的最简单方法是啥?
Posted
技术标签:
【中文标题】在 spark sql 中获取上一次特定月份的结果的最简单方法是啥?【英文标题】:What is the simplest way to get results for last time specific month occurred in spark sql?在 spark sql 中获取上一次特定月份的结果的最简单方法是什么? 【发布时间】:2021-11-09 09:21:20 【问题描述】:我有一个月作为输入,需要生成 sql 查询,该查询将获得该月最后一次出现的结果 - 所以上一年或当前年份取决于月份 - 但我希望它尽可能易于阅读。试过了,但它不起作用,因为你不能那样使用 CASE:
WHERE month(DateF) = 11
AND year(DateF) = (
CASE WHEN 11 > month(CURRENT_DATE)
THEN year(CURRENT_DATE)-1
ELSE year(CURRENT_DATE)
)
【问题讨论】:
你能提供更多关于你的输入和你想要的输出的细节吗?我很难理解所有的事情 ex "5" 的输入,最后五月的输出数据 这里的复杂之处在于过滤器中的年份会有所不同,具体取决于今年是否已经过去 - 所以我不能每次都只使用当前年份 【参考方案1】:您可以使用 Spark SQL 内置函数来处理日期和时间。这些函数能够以不同的格式处理不同的日期。
参考:https://www.obstkel.com/spark-sql-date-functions
【讨论】:
我知道,但他们似乎都没有这样做 - 如果我遗漏了什么,请指出具体细节【参考方案2】:我认为您可以通过使用 current_date 和 day 列(如果有的话)来做到这一点:
WHERE month(dateF) = X AND day >= date_add(current_date(), -365)
这对你来说可能吗?
【讨论】:
以上是关于在 spark sql 中获取上一次特定月份的结果的最简单方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章