寻求Domo(BI工具)及SQL中同比上周同日数据的日期函数方案
今日与上周同日数据对比的实现方案(Domo + SQL)
Domo 实现方法
1. Beast Mode 计算字段(用于可视化卡片)
在Domo的Beast Mode中创建以下计算字段,快速标记今日与上周同日的数据:
- 标记今日数据:
CASE WHEN DATE(`your_date_column`) = CURRENT_DATE() THEN 1 ELSE 0 END - 标记上周同日数据:
CASE WHEN DATE(`your_date_column`) = DATEADD('day', -7, CURRENT_DATE()) THEN 1 ELSE 0 END
在可视化卡片中,基于这两个字段聚合指标(如求和、计数),即可直接对比两组数据。
2. Magic ETL 数据预处理
若需提前完成数据关联,在Magic ETL中添加「Add Formula」工具,生成上周同日的日期字段:
DATEADD('day', -7, CURRENT_DATE())
后续可通过「Join」工具关联原表对应日期的数据,或用「Aggregate」工具分别计算今日与上周同日的指标值。
SQL 实现方案
不同数据库的日期函数略有差异,以下是主流数据库的实现示例:
核心逻辑:获取上周同日日期
- MySQL:
CURDATE() - INTERVAL 7 DAY或DATE_SUB(CURDATE(), INTERVAL 7 DAY) - PostgreSQL:
CURRENT_DATE - INTERVAL '7 days' - SQL Server:
DATEADD(day, -7, GETDATE()) - BigQuery:
DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)
对比查询示例(以MySQL为例)
SELECT CASE WHEN DATE(`date_column`) = CURDATE() THEN '今日' WHEN DATE(`date_column`) = CURDATE() - INTERVAL 7 DAY THEN '上周同日' END AS date_group, SUM(your_metric) AS total_value FROM your_table WHERE DATE(`date_column`) IN (CURDATE(), CURDATE() - INTERVAL 7 DAY) GROUP BY date_group;
注意:若日期字段包含时间戳,需用
DATE(date_column)截断时间部分,确保日期匹配准确。
内容的提问来源于stack exchange,提问作者Gunjan
相关产品推荐
相关产品推荐

