在 Superset 中探索数据
在本教程中,我们将通过探索一个真实的数据集来介绍 Apache Superset 中的关键概念,该数据集包含一家英国公司员工在 2011 年的航班信息。每趟航班提供以下信息:
- 旅行者的部门。为本教程的目的,部门已重命名为橙色、黄色和紫色。
- 机票费用。
- 旅行舱位(经济舱、高端经济舱、商务舱和头等舱)。
- 机票是单程还是往返。
- 旅行日期。
- 关于出发地和目的地的信息。
- 出发地和目的地之间的距离,以公里(km)为单位。
启用数据上传功能
你可能需要启用将 CSV 或 Excel 文件上传到数据库的功能。以下部分解释了如何为示例数据库启用此功能。
在顶部菜单中,选择 设置 ‣ 数据 ‣ 数据库连接。在列表中找到 示例 数据库,然后选择 编辑 按钮。

在弹出的模态窗口中,切换到 高级 选项卡并打开 安全 部分。然后,勾选 允许文件上传到数据库 复选框。最后点击 完成 按钮。

加载 CSV 数据
从 GitHub 下载 CSV 数据集到你的电脑。在顶部菜单中,选择 设置 ‣ 数据 ‣ 数据库连接。然后,选择 上传文件到数据库 ‣ 上传 CSV。

然后,从你的电脑中选择 CSV 文件,选择 数据库 和 模式,并将 表名 输入为 tutorial_flights。

接下来,在 文件设置 ‣ 解析为日期的列 字段中输入文本 Travel Date。

保持所有其他选项为默认设置,然后选择页面底部的 上传。
表格可视化
你现在应该能在 数据集 选项卡中看到 tutorial_flights 作为数据集。点击该条目以使用此数据集启动探索工作流。
在本节中,我们将创建一个表格可视化,显示每个旅行舱位的航班数量和费用。
默认情况下,Apache Superset 只显示最近一周的数据。在我们的例子中,我们希望可视化数据集中的所有数据。点击 时间 ‣ 时间范围 部分,并将 范围类型 更改为 无筛选。

点击 应用 保存。
现在,我们想通过使用 分组依据 选项来指定表格中的行。由于在此示例中,我们希望了解不同的旅行舱位,因此在此菜单中选择 旅行舱位。
接下来,我们可以使用 指标 选项指定我们希望在表格中看到的指标。
COUNT(*)
,表示表格中的行数(在本例中,是每个旅行舱位的航班数量)SUM(Cost)
,表示每个旅行舱位的总花费

最后,选择 运行查询 查看表格结果。

要保存可视化,点击屏幕左上角的 保存。在弹出的模态框中,
- 选择 另存为 选项,并将图表名称输入为教程表格(你可以在顶部菜单的 图表 屏幕中再次找到它)。
- 选择 添加到仪表盘 并输入教程仪表盘。最后,选择 保存并转到仪表盘。

仪表盘基础
接下来,我们将探索仪表盘界面。如果你已经完成了上一节,你应该已经打开了仪表盘。否则,你可以通过在顶部菜单中选择仪表盘,然后从仪表盘列表中选择教程仪表盘来导航到仪表盘。
在这个仪表盘上,你应该能看到你在上一节中创建的表格。选择 编辑仪表盘,然后将鼠标悬停在表格上。通过选择表格的右下角(光标也会改变),你可以通过拖放来调整其大小。

最后,通过选择右上角的保存更改来保存你的更改。
数据透视表
在本节中,我们将使用更复杂的可视化——数据透视表来扩展我们的分析。在本节结束时,你将创建一个表格,显示按部门、按旅行舱位划分的前六个月的每月航班花费。
通过从右上角选择 + ‣ 图表 来创建新图表。再次选择 tutorial_flights 作为数据源,然后点击可视化类型以进入可视化菜单。选择 数据透视表 可视化(你可以在搜索框中输入文本进行筛选),然后点击 创建新图表。

在 时间 部分,保持时间列为旅行日期(这会自动选择,因为我们的数据集中只有一个时间列)。然后将时间粒度选择为月份,因为每日数据过于细致,难以看出模式。然后通过点击时间范围部分的“上周”,接着在“自定义”中分别选择 2011 年 1 月 1 日和 2011 年 6 月 30 日作为开始/结束日期,来选择时间范围为 2011 年的前六个月(你可以直接输入日期或使用日历小部件,通过选择月份名称和年份,可以更快地跳转到较远的日期)。

接下来,在 查询 部分,移除默认的 COUNT(*) 并添加成本(Cost),保留默认的 SUM 聚合。请注意,Apache Superset 会通过列表左侧列中的符号指示指标类型(字符串为 ABC,数字为 #,时间为时钟面等)。
在 分组依据 中,选择 时间:这将自动使用我们在时间部分定义的时间列和时间粒度选择。
在 列 中,首先选择部门,然后选择旅行舱位。一切准备就绪——让我们 运行查询 查看数据!

你应该看到行中是月份,列中是部门和旅行舱位。将此图表发布到你之前创建的现有教程仪表盘。
折线图
在本节中,我们将创建一个折线图,以了解整个数据集中每月机票的平均价格。
在时间部分,像以前一样,保持时间列为旅行日期,时间粒度为月份,但这次对于时间范围选择无筛选,因为我们想查看整个数据集。
在指标中,移除默认的 COUNT(*)
指标,改为添加 AVG(Cost)
,以显示平均值。

接下来,选择 运行查询 以在图表上显示数据。
这看起来怎么样?嗯,我们可以看到平均成本在 12 月份上升。然而,将单程票和往返票合并可能没有意义,不如为每种票类型显示两条单独的线。
让我们通过在分组依据框中选择单程或往返票,然后再次选择 运行查询 来实现这一点。很好!我们可以看到,平均而言,单程票比往返票便宜,而且 12 月份的大幅上涨是由往返票引起的。
我们的图表已经看起来很不错了,但让我们通过转到左侧面板上的“自定义”选项卡来进一步自定义。在此面板中,尝试更改颜色方案,通过在“显示范围筛选器”下拉菜单中选择“否”来移除范围筛选器,并使用“X 轴标签”和“Y 轴标签”添加一些标签。

完成后,将图表发布到你的教程仪表盘中。
标记
在本节中,我们将向仪表盘添加一些文本。如果你已经身处仪表盘,可以通过在顶部菜单中选择仪表盘,然后从仪表盘列表中选择教程仪表盘来导航。通过选择 编辑仪表盘 进入编辑模式。
在“插入组件”面板中,将一个 Markdown 框拖放到仪表盘上。寻找指示框将放置锚点的蓝线。

现在,要编辑文本,请选择该框。你可以输入 Markdown 格式的文本(有关此格式的更多信息,请参阅 此 Markdown 速查表)。你可以使用框顶部的菜单在“编辑”和“预览”之间切换。

要退出,选择仪表盘的任何其他部分。最后,别忘了使用 保存更改 来保存你的更改。
发布你的仪表盘
如果你已遵循上一节中概述的所有步骤,你应该会得到一个如下所示的仪表盘。如果你愿意,可以通过选择 编辑仪表盘 并拖放来重新排列仪表盘的元素。
如果你想让其他用户可以使用你的仪表盘,只需在仪表盘标题旁边(左上方)选择“草稿”以将你的仪表盘更改为“已发布”状态。你也可以通过选择星标来收藏此仪表盘。

注解
注解允许你为图表添加额外的上下文。在本节中,我们将为之前创建的教程折线图添加一个注解。具体来说,我们将添加英国民航局因冰岛格里姆火山(Grímsvötn)喷发而取消部分航班的日期(2011 年 5 月 23-25 日)。
首先,通过导航到“管理 ‣ 注解层”来添加注解层。通过选择绿色加号来添加新记录,从而添加新的注解层。输入名称“火山喷发”并保存。我们可以使用此层来引用许多不同的注解。
接下来,通过导航到“管理 ‣ 注解”,然后选择绿色加号来创建新注解。然后,选择“火山喷发”层,添加简短描述“格里姆火山(Grímsvötn)”和喷发日期(2011 年 5 月 23-25 日),最后保存。

然后,通过前往“图表”并从列表中选择“教程折线图”来导航到折线图。接下来,转到“注解和图层”部分,选择“添加注解层”。在此对话框中
- 将图层命名为“火山喷发”
- 将注解层类型更改为“事件”
- 将注解源设置为“Superset 注解”
- 将注解层指定为“火山喷发”

选择 应用 以在图表上看到你的注解。

如果需要,你可以通过更改“显示配置”部分中的设置来更改注解的外观。否则,选择 确定,最后选择 保存 以保存你的图表。如果你保留默认选择以覆盖图表,你的注解将保存到图表并自动显示在教程仪表盘中。
高级分析
在本节中,我们将探索 Apache Superset 的高级分析功能,该功能允许你对数据应用额外的转换。转换的类型有三种
设置基础图表
在本节中,我们将设置一个基础图表,然后可以对其应用不同的 高级分析 功能。首先使用相同的 tutorial_flights 数据源和 折线图 可视化类型创建一个新图表。在时间部分,将时间范围设置为 2011 年 10 月 1 日和 2011 年 10 月 31 日。
接下来,在查询部分,将指标更改为成本总和。选择 运行查询 以显示图表。你应该能看到 2011 年 10 月每个月的每日总成本。

最后,将可视化保存为教程高级分析基础,并将其添加到教程仪表盘。
滚动平均值
数据中存在相当大的波动,这使得识别任何趋势变得困难。一种方法是显示时间序列的滚动平均值。为此,在 高级分析 的 移动平均 子部分中,在 滚动 框中选择“均值”,并在“周期”和“最小周期”中都输入 7。周期是滚动周期的长度,表示为时间粒度的倍数。在我们的示例中,时间粒度是日,因此滚动周期是 7 天,这样在 2011 年 10 月 7 日显示的值将对应于 2011 年 10 月的前七天。最后,通过将“最小周期”指定为 7,我们确保我们的均值始终基于 7 天计算,并避免任何启动期。
通过选择 运行查询 显示图表后,你会发现数据波动性较小,并且由于排除了启动期,系列开始得更晚。

将图表保存为教程滚动平均值,并将其添加到教程仪表盘。
时间比较
在本节中,我们将把时间序列中的值与一周前的值进行比较。首先通过在顶部菜单中前往 图表,然后从列表中选择可视化名称来打开教程高级分析基础图表(或者,在教程仪表盘中找到该图表,然后从该可视化的菜单中选择“探索图表”)。
接下来,在 高级分析 的“时间比较”子部分中,通过输入“minus 1 week”(请注意此框接受自然语言输入)来输入时间偏移。运行查询以查看新图表,该图表包含一个额外的系列,其值相同,但时间向后移动了一周。

然后,将 计算类型 更改为“绝对差”,并选择 运行查询。我们现在又只能看到一个系列了,这次显示的是我们之前看到的两个系列之间的差值。

将图表保存为教程时间比较,并将其添加到教程仪表盘。
数据重采样
在本节中,我们将对数据进行重采样,以便将每日数据转换为每周数据。与上一节一样,重新打开教程高级分析基础图表。
接下来,在 高级分析 的“Python 函数”子部分中,在“规则”中输入 7D(表示七天),并将“方法”设置为“中位数”,然后通过选择 运行查询 来显示图表。

请注意,现在我们每 7 天只有一个数据点。在我们的例子中,显示的值对应于七个每日数据点中的中位数。有关本节中各种选项含义的更多信息,请参阅 Pandas 文档。
最后,将你的图表保存为教程重采样,并将其添加到教程仪表盘。前往教程仪表盘,并排查看四个图表,比较不同的输出。