如何在Apache Superset中按类别创建时间维度的累计指标?
如何在Apache Superset中按类别计算时间维度的累计求和指标?
问题背景
- 数据集包含
date、category、value三列 - 需求:按每个类别,基于时间维度计算
value列的累计求和值
已尝试方法
- 使用"Time Grain"和"Rolling Window"选项,无法按类别单独生成累计指标
- 探索数据集编辑器的SQL方案,但不确定正确的查询语句写法
- 查找图表配置相关选项,未找到直接可行的设置
可行解决方案
方案一:自定义SQL数据集
在数据集编辑器中创建自定义SQL数据集,通过窗口函数实现按类别分区的累计求和:
SELECT date, category, value, SUM(value) OVER (PARTITION BY category ORDER BY date) AS cumulative_value FROM your_dataset_table
将your_dataset_table替换为实际的数据集表名,保存后即可在图表中使用cumulative_value作为累计指标。
方案二:直接定义Superset指标(Superset 2.0+适用)
如果使用Superset 2.0及以上版本,可直接在数据集的指标配置中创建累计指标:
- 进入目标数据集的指标管理页面
- 新建指标,命名为「累计值」
- 指标表达式填写:
SUM(value) OVER (PARTITION BY category ORDER BY date)
保存指标后,在图表配置中添加category和date作为维度,选择该累计指标即可实现需求。
注意事项
- 确保
date字段为时间类型,否则会导致排序逻辑错误 - 使用窗口函数时,无需额外设置分组规则,Superset会自动关联维度与指标的计算逻辑
内容的提问来源于stack exchange,提问作者MD Shabaz
相关产品推荐
相关产品推荐

