在 Superset 中探索数据
在本教程中,我们将通过探索一个真实数据集来介绍 Apache Superset 中的关键概念,该数据集包含 2011 年一家英国组织的员工所做的航班。关于每次航班的以下信息:
- 旅行者的部门。在本教程中,部门已更名为橙色、黄色和紫色。
- 机票的成本。
- 旅行舱位(经济舱、高级经济舱、商务舱和头等舱)。
- 机票是单程还是往返。
- 旅行日期。
- 有关出发地和目的地的信息。
- 出发地和目的地之间的距离,以公里 (km) 为单位。
启用数据上传功能
您可能需要启用将 CSV 或 Excel 文件上传到数据库的功能。以下部分说明如何为示例数据库启用此功能。
在顶部菜单中,选择数据‣数据库。在列表中找到示例数据库,然后选择编辑按钮。
在弹出的模态窗口中,切换到额外选项卡,并勾选允许数据上传的复选框。最后点击保存按钮。
加载 CSV 数据
从GitHub下载 CSV 数据集到您的计算机。在 Superset 菜单中,选择数据‣上传 CSV。
然后,将表名输入为tutorial_flights,并从您的计算机中选择 CSV 文件。
接下来,将文本旅行日期输入解析日期字段。
将所有其他选项保留在默认设置中,选择页面底部的保存。
表格可视化
您现在应该在数据集选项卡中看到tutorial_flights作为数据集。点击该条目,使用此数据集启动探索工作流程。
在本节中,我们将创建一个表格可视化,以显示每个旅行舱位的航班数量和成本。
默认情况下,Apache Superset 仅显示最近一周的数据。在我们的示例中,我们希望可视化数据集中的所有数据。点击时间‣时间范围部分,并将范围类型更改为无过滤器。
点击应用保存。
现在,我们希望通过使用分组依据选项来指定表格中的行。由于在本示例中,我们希望了解不同的旅行舱位,因此我们在该菜单中选择旅行舱位。
接下来,我们可以使用指标选项指定我们希望在表格中看到的指标。
COUNT(*)
,代表表格中的行数(在本例中,每个旅行舱位的航班数量)SUM(Cost)
,代表每个旅行舱位花费的总成本
最后,选择运行查询以查看表格的结果。
要保存可视化,请点击屏幕左上角的保存。在接下来的模态窗口中,
- 选择另存为选项,并将图表名称输入为教程表格(您将能够通过图表屏幕(可在顶部菜单中访问)再次找到它)。
- 选择添加到仪表板并输入教程仪表板。最后,选择保存并转到仪表板。
仪表板基础
接下来,我们将探索仪表板界面。如果您已完成上一节,您应该已经打开了仪表板。否则,您可以通过选择顶部菜单中的仪表板,然后从仪表板列表中选择教程仪表板来导航到仪表板。
在这个仪表板上,您应该看到上一节中创建的表格。选择编辑仪表板,然后将鼠标悬停在表格上。通过选择表格的右下角(光标也会改变),您可以通过拖放来调整表格的大小。
最后,通过选择右上角的保存更改来保存您的更改。
透视表
在本节中,我们将使用更复杂的可视化透视表来扩展我们的分析。在本节结束时,您将创建一个表格,该表格显示前六个月的每月航班支出,按部门划分,按旅行舱位划分。
通过选择右上角的+‣图表来创建一个新图表。再次选择 tutorial_flights 作为数据源,然后点击可视化类型以进入可视化菜单。选择透视表可视化(您可以通过在搜索框中输入文本来过滤),然后选择创建新图表。
在时间部分,将时间列保留为旅行日期(这是自动选择的,因为我们的数据集中只有一个时间列)。然后选择时间粒度为月,因为拥有每日数据对于查看模式来说过于细化。然后选择时间范围为 2011 年的前六个月,方法是点击时间范围部分的最近一周,然后在自定义中分别选择 2011 年 1 月 1 日和 2011 年 6 月 30 日的开始/结束日期,方法是直接输入日期或使用日历小部件(通过选择月份名称,然后选择年份,您可以更快地移动到更远的日期)。
接下来,在查询部分,删除默认的 COUNT(*) 并添加 Cost,保留默认的 SUM 聚合。请注意,Apache Superset 将通过左侧列中的符号来指示指标的类型(ABC 代表字符串,# 代表数字,时钟代表时间等)。
在分组依据中,选择时间:这将自动使用我们在时间部分定义的时间列和时间粒度选择。
在列中,首先选择部门,然后选择旅行舱位。一切就绪 - 让我们运行查询以查看一些数据!
您应该在行中看到月份,在列中看到部门和旅行舱位。将此图表发布到您之前创建的现有教程仪表板中。
折线图
在本节中,我们将创建一个折线图,以了解整个数据集的每月平均票价。
在时间部分,与之前一样,将时间列保留为旅行日期,时间粒度为月,但这次对于时间范围,选择无过滤器,因为我们希望查看整个数据集。
在指标中,删除默认的 COUNT(*)
指标,而是添加 AVG(Cost)
,以显示平均值。
接下来,选择运行查询以在图表上显示数据。
看起来怎么样?好吧,我们可以看到平均成本在 12 月份上升。但是,也许将单程票和往返票合并在一起没有意义,而是分别显示每种票类型的两条单独的线。
让我们通过在分组依据框中选择单程票或往返票来做到这一点,然后再次选择运行查询。不错!我们可以看到,平均而言,单程票比往返票便宜,而且 12 月份的巨大涨幅是由往返票造成的。
我们的图表已经看起来很不错了,但让我们通过转到左侧窗格的自定义选项卡来进行更多自定义。在这个窗格中,尝试更改颜色方案,通过在显示范围过滤器下拉菜单中选择否来删除范围过滤器,并使用 X 轴标签和 Y 轴标签添加一些标签。
完成后,将图表发布到您的教程仪表板中。
标记
在本节中,我们将向仪表板添加一些文本。如果您已经在那里,您可以通过选择顶部菜单中的仪表板,然后从仪表板列表中选择教程仪表板来导航到仪表板。通过选择编辑仪表板进入编辑模式。
在插入组件窗格中,将 Markdown 框拖放到仪表板上。寻找指示框将放置的锚点的蓝色线。
现在,要编辑文本,请选择该框。您可以输入文本,以 Markdown 格式(有关此格式的更多信息,请参阅此 Markdown 速查表)。您可以使用框顶部的菜单在编辑和预览之间切换。
要退出,请选择仪表板的任何其他部分。最后,不要忘记使用保存更改来保存您的更改。
发布您的仪表板
如果您已完成上一节中概述的所有步骤,您应该有一个看起来像下面的仪表板。如果您愿意,可以通过选择编辑仪表板并拖放来重新排列仪表板的元素。
如果您想让其他用户访问您的仪表板,只需在左上角仪表板标题旁边的“草稿”上选择,即可将您的仪表板更改为“已发布”状态。您也可以通过选择星形来收藏此仪表板。
注释
注释允许您为图表添加更多上下文。在本节中,我们将为之前部分创建的教程折线图添加注释。具体来说,我们将添加英国民航局在应对冰岛格里姆火山喷发(2011 年 5 月 23 日至 25 日)时取消航班的日期。
首先,通过导航到“管理”‣“注释层”添加注释层。通过选择绿色加号添加新记录来添加新的注释层。输入名称“火山喷发”并保存。我们可以使用此层来引用多个不同的注释。
接下来,通过导航到“管理”‣“注释”添加注释,然后通过选择绿色加号创建一个新的注释。然后,选择“火山喷发”层,添加简短描述“格里姆火山”和喷发日期(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,我们确保我们的平均值始终基于 7 天计算,并且避免任何上升期。
通过选择**运行查询**显示图表后,您将看到数据变化较小,并且该系列开始时间较晚,因为上升期被排除在外。
将图表保存为“教程滚动平均值”,并将其添加到“教程仪表板”。
时间比较
在本节中,我们将比较时间序列中的值与一周前的值。首先打开“教程高级分析基础”图表,方法是转到顶部菜单中的**图表**,然后从列表中选择可视化名称(或者,在“教程仪表板”中找到图表,并从该可视化的菜单中选择“探索图表”)。
接下来,在**高级分析**的“时间比较”子部分中,通过输入“减去 1 周”来输入“时间偏移”(注意此框接受自然语言输入)。运行查询以查看新图表,该图表具有一个具有相同值的附加系列,该系列在时间上向后偏移了一周。
然后,将**计算类型**更改为“绝对差值”,并选择**运行查询**。我们现在只能看到一个系列,这次显示了我们之前看到的两个系列之间的差异。
将图表保存为“教程时间比较”,并将其添加到“教程仪表板”。
对数据进行重采样
在本节中,我们将对数据进行重采样,以便不再拥有每日数据,而是拥有每周数据。与上一节类似,重新打开“教程高级分析基础”图表。
接下来,在**高级分析**的“Python 函数”子部分中,在“规则”中输入 7D(对应于 7 天),在“方法”中输入“中位数”,并通过选择**运行查询**来显示图表。
请注意,现在我们每 7 天有一个数据点。在我们的案例中,显示的值对应于 7 个每日数据点内的中位数。有关此部分中各种选项含义的更多信息,请参阅Pandas 文档。
最后,将图表保存为“教程重采样”,并将其添加到“教程仪表板”。转到教程仪表板,以并排查看四个图表并比较不同的输出。