Apache Superset 2.0.0如何实现月度时段过滤(每月1日至下月1日)
在Apache Superset 2.0.0中配置月度起始时间范围过滤器
方法一:高级SQL表达式过滤(推荐)
通过Superset的高级过滤功能,直接编写SQL表达式匹配所需时间范围,核心是根据数据库类型生成动态月度起止时间:
针对PostgreSQL数据库
假设时间字段为event_time,在高级过滤的SQL表达式框中输入:
event_time >= date_trunc('month', current_date) + interval '1 second' AND event_time < date_trunc('month', current_date) + interval '1 month'
- 逻辑说明:
date_trunc('month', current_date)获取当前月1日00:00:00,加1秒后得到当月1日00:00:01date_trunc('month', current_date) + interval '1 month'获取次月1日00:00:00,用<确保范围截止到次月1日00:00:00(刚好符合你需要的“至次月1日00:00:01”的前一秒,避免包含次月起始时间)
针对MySQL数据库
假设时间字段为event_time,输入以下表达式:
event_time >= DATE_ADD(DATE_FORMAT(CURDATE(), '%Y-%m-01'), INTERVAL 1 SECOND) AND event_time < DATE_ADD(DATE_FORMAT(CURDATE(), '%Y-%m-01'), INTERVAL 1 MONTH)
- 逻辑说明:
DATE_FORMAT(CURDATE(), '%Y-%m-01')获取当前月1日,加1秒后得到当月1日00:00:01DATE_ADD(..., INTERVAL 1 MONTH)获取次月1日00:00:00,用<限定范围上限
方法二:自定义静态时间范围(仅适用于固定月份)
如果需要匹配特定月份而非动态当前月,可在Superset时间范围过滤器中选择「自定义」模式,手动输入时间:
- 起始时间:
YYYY-MM-01 00:00:01 - 结束时间:
YYYY-(MM+1)-01 00:00:01(注意月份进位,比如12月的结束时间为次年1月1日)
注意事项
- 确保时间字段类型为
datetime或timestamp,避免因类型不匹配导致过滤失效 - 适配其他数据库时可调整对应日期函数:比如SQL Server用
DATEADD(second, 1, DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1))生成当月1日00:00:01
内容的提问来源于stack exchange,提问作者Anandu Balan
相关产品推荐
相关产品推荐

