【发布时间】:2021-01-04 09:07:12
【问题描述】:
我正在尝试遍历数据框并计算日期在特定日期范围内出现的次数。代码工作正常。唯一的问题是,如果它在给定的日期范围内找不到任何日期,则它不会在结果数据框中包含值为 0 的日期范围。让我给你举个例子:
这是我的输入数据框,
这是我的 bin 范围数据框,
我使用的 SQL 查询是这样的:
val countSql = """
SELECT concat(date_format(c.st_dt,'MM-dd-yyyy'),' -- ',date_format(c.end_dt,'MM-dd-yyyy')) as date_range, c.bin_count
FROM (
(SELECT
b.st_dt, b.end_dt, count(1) as bin_count
FROM
(select to_date(input_date,'MM-dd-yyyy') as date_input , * from input_table) a
left join
(select to_date(start_date,'MM-dd-yyyy') as st_dt, to_date(end_date,'MM-dd-yyyy') as end_dt from bin_range ) b
on
a.date_input >= b.st_dt and a.date_input < b.end_dt
group by 1,2) ) c"""
代码现在的方式是,它将返回一个空数据帧,因为输入数据帧中的日期不属于提供的 bin 范围。但如果没有找到,我想为每个 bin 范围设置一行,并在其旁边设置一个相应的 0 值。
【问题讨论】:
标签: sql scala apache-spark