Apache Superset时间范围选择器:动态数据展示的核心引擎
引言:数据可视化的时间维度挑战
在数据驱动决策的时代,时间维度是数据分析中不可或缺的关键因素。企业分析师每天需要处理大量带有时间属性的数据,从日报、周报到季度报告,从实时监控到历史趋势分析,时间范围的选择直接影响数据展示的准确性和决策的有效性。Apache Superset作为一款强大的开源数据可视化平台(Data Visualization Platform),其时间范围选择器(Time Range Selector)是连接用户需求与数据展示的核心桥梁。
你是否曾遇到过这些痛点:
- 数据分析时需要频繁切换不同时间粒度(天/周/月)进行趋势对比
- 自定义时间范围时因格式错误导致数据加载失败
- 复杂的时间偏移计算(如"上上周同期对比")难以实现
- 仪表盘中多个图表的时间范围同步困难
本文将系统解析Apache Superset时间范围选择器的实现原理、使用技巧与高级应用,帮助你掌握动态数据展示的时间维度控制艺术。读完本文后,你将能够:
- 熟练配置5种不同类型的时间范围选择模式
- 理解时间范围字符串的编码/解码机制
- 实现高级时间对比分析(同比/环比)
- 解决常见的时间范围选择器使用问题
- 定制符合业务需求的时间过滤组件
一、时间范围选择器的架构设计与核心组件
Apache Superset的时间范围选择器采用模块化设计,主要由前端组件、状态管理和时间处理服务三部分组成。其核心实现位于superset-frontend/src/explore/components/controls/DateFilterControl/目录下,通过分层架构实现复杂的时间范围选择逻辑。
1.1 组件架构图
1.2 核心组件功能解析
DateFilterLabel组件是时间范围选择器的入口点,负责整体协调与状态管理:
// 核心状态管理
const [actualTimeRange, setActualTimeRange] = useState<string>(value);
const [timeRangeValue, setTimeRangeValue] = useState(value);
const [validTimeRange, setValidTimeRange] = useState<boolean>(false);
const [frame, setFrame] = useState<FrameType>(guessedFrame);
该组件通过条件渲染不同的时间选择框架(Frame),并维护时间范围的有效性验证状态。当用户切换不同框架时,会触发对应的状态更新与时间范围字符串重新解析。
五种时间选择框架对应不同的使用场景:
| 框架类型 | 适用场景 | 典型应用 | 输入格式示例 |
|---|---|---|---|
| CommonFrame | 快速选择常用时间范围 | 最近7天、本月至今、上季度 | last_7_days |
| CalendarFrame | 精确选择起止日期 | 特定节假日期间数据、自定义周范围 | 2023-10-01 to 2023-10-31 |
| CustomFrame | 复杂时间范围表达式 | 每工作日9点到18点、每周一数据 | time_range:16h-18h;weekdays |
| AdvancedFrame | 高级时间偏移与对比 | 上上周同期对比、季度滚动窗口 | last_14_days offset by -14 days |
| CurrentCalendarFrame | 当前周期选择 | 本周、本月、本季度 | current_week |
TimeRangeService服务提供核心的时间范围处理功能,其fetchTimeRange方法是连接前端组件与后端数据的关键:
// 时间范围验证与解析流程
useEffect(() => {
if (value === NO_TIME_RANGE) {
setActualTimeRange(NO_TIME_RANGE);
setValidTimeRange(true);
return;
}
fetchTimeRange(value).then(({ value: actualRange, error }) => {
if (error) {
setEvalResponse(error || '');
setValidTimeRange(false);
} else {
setActualTimeRange(actualRange || '');
setValidTimeRange(true);
}
setLastFetchedTimeRange(value);
});
}, [value]);
二、时间范围选择模式详解
Apache Superset提供五种时间范围选择模式,覆盖从简单到复杂的各类时间过滤需求。每种模式都有其独特的应用场景和使用技巧。
2.1 常用时间范围模式(CommonFrame)
CommonFrame提供预设的常用时间范围选项,适合快速选择标准时间范围。其核心是将用户操作转换为预定义的时间范围字符串,如last_7_days、this_month等。
预设选项分类:
- 最近时间段:最近1小时、最近24小时、最近7天、最近30天
- 今日/昨日:今日、昨日
- 当前周期:本周至今、本月至今、本季度至今、本年度至今
- 上一周期:上一周、上一个月、上一个季度、上一年度
实现原理:
// 预设时间范围定义(简化版)
const COMMON_PRESETS = [
{ label: t('Last 7 days'), value: 'last_7_days' },
{ label: t('Last 30 days'), value: 'last_30_days' },
{ label: t('This week'), value: 'this_week' },
{ label: t('This month'), value: 'this_month' },
{ label: t('Last month'), value: 'last_month' },
// 更多预设...
];
// 渲染预设选项
COMMON_PRESETS.map(preset => (
<Button
key={preset.value}
onClick={() => handlePresetSelect(preset.value)}
buttonStyle={timeRangeValue === preset.value ? 'primary' : 'secondary'}
>
{preset.label}
</Button>
));
使用技巧:
- 快速切换不同时间范围时,优先使用CommonFrame提高效率
- "最近7天"与"上一周"的区别:前者是滚动窗口(包含今天),后者是完整自然周
- 结合仪表板过滤器使用时,选择"应用到所有图表"可实现全局时间同步
2.2 日历选择模式(CalendarFrame)
CalendarFrame提供直观的日历界面,适合选择精确的起止日期范围。该模式支持单日选择、日期区间选择和月份快速选择。
核心功能:
- 双日历组件用于选择开始和结束日期
- 日期范围预览(显示选择的天数)
- 常见日期范围快捷按钮(今天、昨天、过去7天)
- 禁用未来日期选择
实现代码片段:
<RangePicker
value={[moment(startDate), moment(endDate)]}
onChange={([start, end]) => {
setStartDate(start?.format('YYYY-MM-DD'));
setEndDate(end?.format('YYYY-MM-DD'));
handleDateChange(start, end);
}}
disabledDate={(current) => current && current > moment().endOf('day')}
placeholder={[t('Start Date'), t('End Date')]}
format="YYYY-MM-DD"
/>
使用场景:
- 需要选择历史上特定时间段(如"2023年春节假期")
- 非标准时间范围(如"连续15天"但非自然周)
- 需要精确到日的数据分析
2.3 自定义时间范围模式(CustomFrame)
CustomFrame允许用户通过文本输入自定义时间范围表达式,支持相对时间和绝对时间定义,适合高级用户创建复杂时间范围。
支持的时间表达式格式:
| 表达式类型 | 语法示例 | 说明 |
|---|---|---|
| 相对时间 | today-7d | 今天往前7天 |
| 相对时间 | now-12h | 当前时间往前12小时 |
| 绝对日期 | 2023-01-01 | 单个日期 |
| 日期范围 | 2023-01-01 to 2023-01-31 | 从某天到某天 |
| 周范围 | week:2023-W05 | 2023年第5周 |
| 月范围 | month:2023-02 | 2023年2月 |
| 季度范围 | quarter:2023-Q1 | 2023年第一季度 |
编码/解码机制:
// 编码自定义时间范围
export function customTimeRangeEncode(range: {
start?: string;
end?: string;
type: string;
}): string {
switch (range.type) {
case 'relative':
return `${range.start}`;
case 'absolute':
return `${range.start} to ${range.end}`;
case 'week':
return `week:${range.start}`;
case 'month':
return `month:${range.start}`;
// 其他类型编码...
default:
return '';
}
}
// 解码时间范围字符串
export function customTimeRangeDecode(value: string): {
customRange: CustomRange;
matchedFlag: boolean;
} {
// 相对时间匹配
const relativeMatch = value.match(/^now([+-]\d+)([smhdwMy])$/);
if (relativeMatch) {
return {
customRange: {
type: 'relative',
start: value,
end: 'now',
},
matchedFlag: true,
};
}
// 日期范围匹配
const dateRangeMatch = value.match(/^(\d{4}-\d{2}-\d{2}) to (\d{4}-\d{2}-\d{2})$/);
if (dateRangeMatch) {
return {
customRange: {
type: 'absolute',
start: dateRangeMatch[1],
end: dateRangeMatch[2],
},
matchedFlag: true,
};
}
// 其他模式匹配...
return { customRange: defaultRange, matchedFlag: false };
}
常见问题解决:
- 输入无效格式时,系统会显示错误提示并禁用"应用"按钮
- 日期范围过大(超过1年)时,可能导致查询性能下降,建议配合数据采样使用
- 注意时区问题:日历选择的是浏览器本地时区,而数据存储可能使用UTC时区
2.4 高级模式(AdvancedFrame)
AdvancedFrame提供时间粒度、偏移量和对齐方式的高级配置,适合创建复杂的时间范围表达式,如"上上个季度的最后15天"。
核心配置项:
- 时间粒度(Granularity):秒、分钟、小时、天、周、月、季度、年
- 时间数量(Count):指定时间单位的数量
- 偏移方向(Offset):向前或向后偏移
- 对齐方式(Alignment):自然边界对齐(如"月对齐"确保从月初开始)
配置流程:
- 选择时间粒度(如"周")
- 设置时间数量(如"2"表示2周)
- 选择偏移方向(如"向前")
- 设置偏移量(如"1"表示偏移1个单位)
- 选择对齐方式(如"周对齐")
示例场景与对应的表达式:
| 业务需求 | 配置参数 | 生成的时间表达式 |
|---|---|---|
| 上上个季度的最后15天 | 季度, 1, 向前, 2, 季度对齐 | last_1_quarter offset by -2 quarters end 15 days |
| 过去3个月,每月的最后7天 | 月, 3, 向前, 0, 月对齐 | last_3_months each last 7 days |
| 每周一到周三的数据 | 周, 1, 向前, 0, 周对齐 | this_week from monday to wednesday |
实现原理: AdvancedFrame通过组合多个时间组件生成复杂的时间表达式,然后交由后端解析为具体的SQL时间过滤条件。其核心是将用户界面的选择转换为Superset自定义的时间范围DSL(领域特定语言)。
2.5 当前周期模式(CurrentCalendarFrame)
CurrentCalendarFrame专注于当前周期的时间范围选择,提供基于当前时间的动态周期选择,如"当前财年"、"当前会计季度"等。
独特功能:
- 支持自定义财年起始月份(如4月作为财年开始)
- 会计周期与自然周期的切换
- 动态计算当前周期的剩余时间
适用场景:
- 财务报表分析(按财年/财季查看数据)
- 考核周期分析(如"本考核周期已完成百分比")
- 需要与业务周期(而非自然周期)对齐的分析
三、时间范围字符串编码与解析机制
Apache Superset使用特定的字符串格式表示时间范围,这种格式既能被前端组件解析,也能被后端查询引擎理解。理解时间范围字符串的编码规则,是实现高级时间分析的基础。
3.1 编码格式解析
时间范围字符串采用简洁的文本格式,包含时间范围类型、数量、单位和偏移量等信息。基本语法结构如下:
[时间范围类型]_[数量]_[单位][_修饰符][_偏移信息]
主要组成部分:
| 组成部分 | 示例值 | 说明 |
|---|---|---|
| 时间范围类型 | last, this, next | 表示相对当前时间的位置 |
| 数量 | 1, 7, 30 | 时间单位的数量 |
| 单位 | d, w, m, q, y | 时间单位(天/周/月/季度/年) |
| 修饰符 | to_date, each | 特殊处理指示符 |
| 偏移信息 | offset by -2 | 时间窗口的偏移量 |
常见时间范围字符串示例:
| 字符串 | 含义 | 适用场景 |
|---|---|---|
last_7_days | 过去7天(包含今天) | 周度趋势分析 |
this_month | 当前月份(从月初到今天) | 月度业绩跟踪 |
last_1_quarter offset by -1 quarters | 上上个季度 | 季度数据对比 |
now-12h | 过去12小时 | 实时监控看板 |
2023-01-01 to 2023-12-31 | 2023年全年 | 年度总结报告 |
3.2 编码/解码流程
时间范围的编码与解码是前后端交互的关键环节,确保用户选择的时间范围能够准确转换为数据查询条件。
编码函数示例:
function encodeTimeRange(options: AdvancedTimeOptions): string {
const { granularity, count, offset, direction } = options;
let base = `last_${count}_${granularity}`;
if (offset > 0) {
base += ` offset by ${direction === 'forward' ? '+' : '-'}${offset} ${granularity}s`;
}
if (options.alignment === 'natural') {
base += ` aligned ${granularity}`;
}
return base;
}
解码函数示例:
function decodeTimeRange(expression: string): AdvancedTimeOptions {
// 解析基础部分
const baseMatch = expression.match(/^last_(\d+)_(\w+)/);
if (!baseMatch) return defaultOptions;
const count = parseInt(baseMatch[1], 10);
const granularity = baseMatch[2];
// 解析偏移部分
const offsetMatch = expression.match(/offset by ([+-]?\d+) (\w+)s/);
let offset = 0;
let direction = 'backward';
if (offsetMatch) {
offset = Math.abs(parseInt(offsetMatch[1], 10));
direction = offsetMatch[1].startsWith('+') ? 'forward' : 'backward';
}
return {
granularity,
count,
offset,
direction,
alignment: expression.includes('aligned') ? 'natural' : 'none'
};
}
3.3 时间范围验证机制
为确保用户输入的时间范围有效,DateFilterLabel组件实现了完善的验证机制:
useEffect(() => {
if (value === NO_TIME_RANGE) {
setActualTimeRange(NO_TIME_RANGE);
setValidTimeRange(true);
return;
}
// 调用时间范围验证服务
fetchTimeRange(value).then(({ value: actualRange, error }) => {
if (error) {
setEvalResponse(error || 'Invalid time range');
setValidTimeRange(false);
} else {
setActualTimeRange(actualRange || '');
setValidTimeRange(true);
}
setLastFetchedTimeRange(value);
});
}, [value]);
验证规则:
- 语法验证:检查时间表达式是否符合Superset的DSL规范
- 逻辑验证:确保开始时间早于结束时间
- 范围验证:防止过大的时间范围导致性能问题
- 格式验证:检查日期格式是否符合ISO标准
错误处理:
- 无效表达式:显示"无效的时间范围格式"错误
- 时间范围过大:显示"时间范围过大,建议减少时间跨度"警告
- 未来时间:对于历史数据分析,警告"选择了未来时间"
- 解析失败:提供最近使用的有效时间范围作为恢复选项
四、高级应用:时间对比分析实现
时间范围选择器不仅支持单一时间范围的选择,还能与其他组件配合实现高级时间对比分析,如同比(YoY)、环比(MoM)和周期对比(Period Over Period)分析。
4.1 同比/环比分析的实现原理
Superset通过BigNumberPeriodOverPeriod插件实现时间对比分析,其核心是同时查询两个时间范围的数据并进行计算。
关键代码实现:
// 时间范围对比逻辑(简化版)
function calculateComparisonTimeRange(mainRange: string, comparisonType: string): string {
switch (comparisonType) {
case 'yoy': // 同比
return mainRange.replace(/(\d+)([y])/, (match, num, unit) => {
return `${num}${unit} offset by -1 ${unit}s`;
});
case 'mom': // 环比
return mainRange.replace(/(\d+)([m])/, (match, num, unit) => {
return `${num}${unit} offset by -1 ${unit}s`;
});
case 'pop': // 周期对比
return mainRange.replace(/(\d+)(\w+)/, (match, num, unit) => {
return `${num}${unit} offset by -${num} ${unit}s`;
});
default:
return mainRange;
}
}
4.2 时间对比分析的配置步骤
- 添加
Big Number with Trendline图表到仪表板 - 在指标配置中选择需要分析的度量(如"销售额")
- 在"时间"标签页中:
- 选择主时间范围(如"last_30_days")
- 启用"对比"选项
- 选择对比类型(同比/环比/自定义)
- 配置对比偏移量
- 设置差异计算方式(百分比变化/绝对值变化)
- 应用配置并查看结果
4.3 高级对比场景示例
场景1:季度销售环比分析
- 主时间范围:
last_1_quarter(上一季度) - 对比时间范围:
last_1_quarter offset by -1 quarters(上上个季度) - 计算方式:((本季度销售额 - 上季度销售额)/上季度销售额) * 100%
场景2:节假日销售对比
- 主时间范围:
2023-10-01 to 2023-10-07(2023年国庆假期) - 对比时间范围:
2022-10-01 to 2022-10-07(2022年国庆假期) - 计算方式:2023年销售额 - 2022年销售额(绝对值差异)
场景3:周内趋势对比
- 主时间范围:
this_week(本周) - 对比时间范围:
last_1_week(上周) - 维度拆分:按"星期几"拆分,对比每周同一天的表现
4.4 性能优化建议
时间对比分析需要同时查询多个时间范围的数据,可能导致性能问题。优化建议:
- 对于大型数据集,使用预计算的聚合表而非实时查询
- 增加时间粒度(如从"小时"改为"天")减少数据量
- 使用缓存机制存储频繁查询的时间范围结果
- 考虑数据采样,特别是在预览模式下
- 对于极其复杂的对比分析,考虑使用物化视图
五、定制化与扩展开发
对于企业级应用,内置的时间范围选择器可能无法满足特定业务需求,此时可以通过定制化和扩展开发来增强其功能。
5.1 自定义时间范围预设
通过修改配置文件添加业务特定的时间范围预设,如"财年"、"促销季"等:
// 扩展COMMON_PRESETS数组
const CUSTOM_COMMON_PRESETS = [
...COMMON_PRESETS,
{ label: t('Current fiscal year'), value: 'current_fiscal_year' },
{ label: t('Promotion season 2023'), value: '2023-06-01 to 2023-06-30' },
{ label: t('Quarter 1 (FY23)'), value: 'fy23-q1' },
];
// 自定义时间范围解析器
function customTimeRangeResolver(expression: string): TimeRange {
if (expression === 'current_fiscal_year') {
// 假设财年从4月1日开始
const now = new Date();
const fiscalYearStart = now.getMonth() >= 3
? new Date(now.getFullYear(), 3, 1)
: new Date(now.getFullYear() - 1, 3, 1);
return {
start: fiscalYearStart,
end: now,
label: 'Current Fiscal Year',
};
}
// 处理其他自定义表达式...
// 回退到默认解析器
return defaultTimeRangeResolver(expression);
}
5.2 时间范围选择器的样式定制
通过覆盖CSS变量或修改主题文件,定制时间范围选择器的外观:
/* 自定义时间范围选择器样式 */
.superset-date-filter-label {
background-color: var(--custom-primary-color);
border-radius: 4px;
}
.superset-date-filter-popover {
width: 650px; /* 默认宽度600px,增加50px */
}
/* 自定义按钮样式 */
.superset-date-filter-button {
min-width: 120px;
margin: 0 4px;
}
/* 自定义日历样式 */
.superset-calendar-frame .ant-picker-cell-in-view.ant-picker-cell-selected {
background-color: var(--custom-accent-color);
}
5.3 与第三方时间库集成
对于复杂的业务日历(如零售行业的促销日历),可以集成第三方时间库扩展时间范围选择器的能力:
// 集成business-calendar库
import { BusinessCalendar } from 'business-calendar';
// 初始化业务日历(包含公司特定节假日)
const companyCalendar = new BusinessCalendar({
holidays: [
'2023-01-01', // 元旦
'2023-01-22', // 春节
// 其他公司特定节假日...
],
workWeek: [1, 2, 3, 4, 5] // 周一至周五为工作日
});
// 自定义时间范围解析
function businessTimeRangeResolver(expression: string): TimeRange {
if (expression.startsWith('business_days:')) {
const days = parseInt(expression.split(':')[1], 10);
const endDate = new Date();
const startDate = companyCalendar.addBusinessDays(endDate, -days);
return {
start: startDate,
end: endDate,
label: `${days} Business Days Ago`,
};
}
return defaultTimeRangeResolver(expression);
}
六、常见问题与解决方案
6.1 时间范围选择器不显示
可能原因:
- 数据集未正确配置时间列
- 权限问题:用户没有时间过滤权限
- 前端组件加载失败
- 仪表板配置中禁用了时间过滤器
解决方案:
1. 检查数据集配置:
- 进入数据集编辑页面
- 确认"时间列"已正确设置
- 确保时间列的数据类型为datetime
2. 验证用户权限:
- 进入"安全" > "角色"设置
- 检查"can_filter_on_all_columns"权限是否启用
3. 前端故障排除:
- 清除浏览器缓存(Ctrl+Shift+R)
- 检查浏览器控制台是否有JavaScript错误
- 重新构建前端资产(npm run build)
6.2 时间范围选择后无数据显示
可能原因:
- 所选时间范围内确实没有数据
- 时间列存在时区转换问题
- 数据库查询超时
- 时间范围格式与后端解析不兼容
诊断流程:
6.3 时间范围与实际数据不匹配
典型场景:选择"今天"却包含了昨天的数据
根本原因:时区设置不一致。常见的时区问题场景:
| 问题场景 | 前端时区 | 数据库时区 | 现象 |
|---|---|---|---|
| 场景1 | 北京时区(UTC+8) | UTC | "今天"显示为UTC的今天(比北京时间晚8小时) |
| 场景2 | 纽约时区(UTC-5) | 北京时区(UTC+8) | "昨天"可能包含今天的数据 |
| 场景3 | 浏览器自动时区 | 服务器固定时区 | 用户地理位置变化导致数据不一致 |
解决方案:
-
统一时区设置:推荐在Superset配置中明确设置时区
# superset_config.py TIME_ZONE = 'Asia/Shanghai' -
数据集级别的时区配置:
- 编辑数据集
- 在"高级"选项卡中设置"时区"
- 选择与数据存储一致的时区
-
前端显示调整:
// 自定义时间格式化 function formatDateTimeWithTimezone(dateString: string) { return new Date(dateString).toLocaleString('zh-CN', { timeZone: 'Asia/Shanghai', year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit' }); }
6.4 时间范围选择器性能问题
症状:选择时间范围后,图表加载缓慢或超时
优化策略:
| 优化方向 | 具体措施 | 预期效果 |
|---|---|---|
| 数据层面 | 增加时间列索引 | 查询速度提升50-80% |
| 查询层面 | 使用时间分区表 | 扫描数据量减少90% |
| 应用层面 | 启用查询缓存 | 重复查询响应时间<100ms |
| 前端层面 | 实现时间范围预加载 | 用户感知延迟降低60% |
| 配置层面 | 增加查询超时时间 | 减少大型时间范围查询失败率 |
实施示例:
-- 创建时间分区表(PostgreSQL示例)
CREATE TABLE sales_data (
id SERIAL,
sale_time TIMESTAMP,
amount NUMERIC
) PARTITION BY RANGE (sale_time);
-- 按月份创建分区
CREATE TABLE sales_data_2023_01 PARTITION OF sales_data
FOR VALUES FROM ('2023-01-01') TO ('2023-02-01');
七、总结与最佳实践
Apache Superset的时间范围选择器是连接用户需求与数据可视化的关键组件,其灵活的设计支持从简单到复杂的各类时间分析场景。通过掌握本文介绍的使用技巧和高级应用,你可以显著提升数据分析效率和洞察力。
7.1 最佳实践清单
日常使用最佳实践:
- 根据分析目的选择合适的时间范围模式:快速浏览用CommonFrame,精确分析用CalendarFrame,复杂需求用AdvancedFrame
- 频繁使用的时间范围保存为"我的预设",减少重复配置
- 仪表板中使用"全局时间过滤器"保持多图表时间范围一致
- 进行时间对比分析时,优先使用内置的Period Over Period功能
性能优化最佳实践:
- 大数据集分析时,避免选择超过1年的原始数据时间范围
- 结合数据采样功能使用(配置"采样率"参数)
- 复杂时间范围查询在非高峰时段执行
- 定期清理时间范围选择器缓存
高级用户技巧:
- 学习Superset时间范围DSL语法,直接输入表达式提高效率
- 利用"时间范围模板变量"创建动态仪表板
- 结合SQL Lab使用自定义时间函数扩展分析能力
- 通过API集成外部时间数据源(如业务日历API)
7.2 未来发展趋势
Apache Superset的时间范围选择器正在不断进化,未来版本可能包含以下增强功能:
- 机器学习驱动的智能时间范围推荐
- 更丰富的时间对比模式(如三时间线对比)
- 自定义业务日历集成
- 时间范围模板库与共享功能
- 增强的时区处理与日光节约时间支持
掌握时间范围选择器的使用不仅能提升日常数据分析效率,更是深入理解Superset前端架构的窗口。通过本文介绍的知识,你可以从简单的工具使用者转变为能够定制和扩展时间分析功能的高级用户,为企业数据可视化平台赋能。
附录:时间范围表达式速查表
| 表达式 | 含义 | 适用场景 |
|---|---|---|
today | 今天(从00:00到当前时间) | 当日销售监控 |
yesterday | 昨天(完整自然日) | 昨日业绩回顾 |
last_7_days | 过去7天(包含今天) | 周趋势分析 |
last_30_days | 过去30天 | 月度滚动分析 |
this_week | 当前自然周(从周一到今天) | 周进度跟踪 |
last_month | 上一个自然月 | 月度总结报告 |
qtd | 本季度至今 | 季度业绩分析 |
ytd | 本年度至今 | 年度目标达成分析 |
2023-01-01 to 2023-12-31 | 2023年全年 | 年度对比分析 |
now-12h | 过去12小时 | 实时监控 |
last_1_quarter offset by -1 quarters | 上上个季度 | 季度环比分析 |
希望本文能帮助你充分利用Apache Superset的时间范围选择器功能。如有任何问题或建议,请在项目GitHub仓库提交issue或参与社区讨论。持续关注Superset的更新,获取时间范围选择器的最新功能和最佳实践。
本文基于Apache Superset 4.0版本编写,不同版本间可能存在功能差异,请以实际使用的版本为准。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



