You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Superset中对比选中时段与上月同期销售额?

Superset 选中时段与上月同期销售额对比实现方案

核心问题解答

  1. 参数有效性:{{ from_dttm }} 和 {{ to_dttm }} 是Superset日期范围过滤器在自定义SQL中可用的正确内置参数,会自动获取用户选中的日期区间起止值。
  2. 原SQL语法错误:你之前的语句存在括号嵌套错误和格式问题,导致无返回值:
    • DATE_SUB('{{ from_dttm }}'), INTERVAL 1 MONTH) 多了一个右括号,DATE_SUB的正确语法是DATE_SUB(日期表达式, INTERVAL 间隔值)
    • ANDDATE_SUB 之间缺少空格,SQL解析会直接报错

修正后的实现步骤

方式一:两个独立Big Number图表分别展示

1. 选中时段销售额图表

  • 添加基础筛选确保数据范围(或依赖仪表盘全局过滤器自动生效):
    WHERE date BETWEEN '{{ from_dttm }}' AND '{{ to_dttm }}'
    
  • 聚合指标选择SUM(你的销售额字段名),图表标题设为「选中时段总销售额」

2. 上月同期销售额图表

  • 使用修正后的自定义SQL筛选器(以MySQL为例):
    WHERE date BETWEEN DATE_SUB('{{ from_dttm }}', INTERVAL 1 MONTH) AND DATE_SUB('{{ to_dttm }}', INTERVAL 1 MONTH)
    
  • 若使用PostgreSQL,需调整日期函数语法:
    WHERE date BETWEEN ('{{ from_dttm }}'::DATE - INTERVAL '1 month') AND ('{{ to_dttm }}'::DATE - INTERVAL '1 month')
    
  • 聚合指标同样选择SUM(你的销售额字段名),图表标题设为「上月同期总销售额」

方式二:单图表同时展示两个数值(更高效)

通过自定义SQL一次性返回两个指标,在同一个Big Number图表中实现同屏对比:

SELECT
  SUM(CASE WHEN date BETWEEN '{{ from_dttm }}' AND '{{ to_dttm }}' THEN 你的销售额字段名 ELSE 0 END) AS 选中时段销售额,
  SUM(CASE WHEN date BETWEEN DATE_SUB('{{ from_dttm }}', INTERVAL 1 MONTH) AND DATE_SUB('{{ to_dttm }}', INTERVAL 1 MONTH) THEN 你的销售额字段名 ELSE 0 END) AS 上月同期销售额
FROM 你的销售数据表
WHERE
  -- 保留产品、地区等过滤器的自动注入逻辑,Superset会自动替换为对应筛选条件
  {{ filter_values('产品字段名') }}
  {{ filter_values('地区字段名') }}
  • 在Big Number图表的「指标」选项中,同时选中两个字段即可完成配置

额外注意事项

  • 确保date字段为DATE或DATETIME类型,若{{ from_dttm }}返回带时区的字符串,可通过DATE()函数转换(如DATE('{{ from_dttm }}'))避免格式不匹配
  • 日期过滤器的「时间粒度」需与date字段的存储粒度一致(如按天筛选则字段为日粒度)

内容的提问来源于stack exchange,提问作者Amanda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 22:41:04