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