使用Tableau Desktop工具进行大规模数据可视化自动化
1. 简介
数据可视化作为一种数据的视觉表示,是数据分析中广泛采用的方法,可以从大规模数据集中获得有用的业务洞察(例如趋势、模式、异常值、相关性等)。最近,我提出了一种使用Spark、Plotly和Dash开发Python Web应用程序的交互式和富有洞察力的数据可视化仪表板的软件开发方法[1]。
类似于[1],本文使用与[2]中使用的相同的开源数据集,展示如何使用Spark和Tableau Desktop [3]在云数据湖中创建具有洞察力的仪表板,而无需编程。
图1显示了工作流程的高级概述,包括以下主要步骤:
- 连接Tableau Desktop进行仪表板制作和Spark
- 从云数据湖中查询数据集
- 从加载的数据集创建数据可视化图形
- 从创建的单独图形创建仪表板
- 将仪表板发布到Tableau服务器以进行共享
2. 连接Tableau Desktop和Spark
如[4]中所述,可以按照以下步骤使用Spark SQL作为分布式查询引擎,并使用其JDBC/ODBC [5]连接Tableau Desktop和分布式Spark SQL引擎[4]:
- 安装Hadoop
- 设置Hive
- 设置MySQL
- 设置Spark
- 设置Tableau Desktop
3. 从云数据湖中查询数据集
一旦Tableau Desktop成功连接到分布式Spark SQL引擎,我们就可以浏览到默认模式并查看Hive Hadoop集群表[4]。
从使用Tableau Desktop创建仪表板的角度来看,从Hive Hadoop集群加载的表和从本地Microsoft Excel文件加载的表之间没有区别。为了方便起见,本文将使用从数据集csv文件转换而来的本地Excel文件,以演示目的使用免费版本的Tableau Desktop Public。
4. 创建数据可视化图形
在创建可视化仪表板之前,我们需要先创建单独的可视化图形。
我们可以使用Tableau Desktop创建许多不同类型的图形。如[1]中所述,其中一些图形适合于可视化连续数值特征,而其他一些图形适合于可视化离散分类特征。
类似于[1],本文使用Tableau Desktop创建以下常见图表进行演示。
- 用于数值特征的图表:散点图、直方图和折线图
- 用于分类特征的图表:条形图、折线图和饼图
4.1 数值特征的图表
Tableau Desktop使用符号#表示数值特征。本小节介绍了如何使用Tableau Desktop创建以下三种常见的数值特征图表:
- 散点图
- 直方图
- 折线图
4.1.1 散点图
对于一对数值特征,散点图使用每对特征值作为坐标在二维平面上绘制一个点。例如,如[1]中所示,图2显示了21至30岁人群的两个数值特征患者ID和入院押金的散点图。特征“入院类型”用于颜色编码。
可以按照以下步骤创建散点图:
- 将特征Patientid拖放到列架中
- 将特征Admission Deposit拖放到行架中
- 将特征Type of Admission拖放到Marks Card的颜色属性上
- 点击Marks Card上的下拉菜单,选择Circle
- 右键单击特征Age,选择show filter,并选择21-30
该散点图揭示了以下商业见解:21-30岁之间的急诊和创伤病人中,大多数人的存款金额在$3,000到$6,000之间。
4.1.2 直方图
Tableau Desktop将直方图视为条形图。因此,列的数值特征需要通过分箱转换为分类特征,行的数值特征需要进行聚合,例如求和。
可以按照以下步骤创建图3中的直方图:
- 右键单击数值特征Patientid,选择“create bins”以创建新特征Patientid (bin)。
- 将新特征Patientid (bin)拖放到列架中
- 将数值特征Admission Deposit拖放到行架中,然后点击拖放的特征,选择聚合SUM
- 将分类特征Type of Admission拖放到Marks Card的颜色属性上
- 点击Marks Card上的下拉菜单,选择Bar
- 右键单击特征Age,选择show filter,并选择21-30
该直方图显示了以下商业见解:21-30岁之间的急诊病人的入院总金额最小,而急诊病人的入院总金额最大。
4.1.3 折线图
与创建散点图类似,可以按照以下步骤创建图4中的折线图:
- 将特征Patientid拖放到列架中
- 将特征Admission Deposit拖放到行架中
- 将特征Type of Admission拖放到Marks Card的颜色属性上
- 点击Marks Card上的下拉菜单,选择Line
- 右键单击特征Age,选择show filter,并选择21-30
与散点图类似,该折线图显示了相同的商业见解:21-30岁之间的急诊和创伤病人中,大多数人的存款金额在$3,000到$6,000之间。
4.2 分类特征的图表
Tableau Desktop使用符号Abc表示分类特征。本小节介绍如何使用Tableau Desktop创建以下三种常见的分类特征值计数图表:
- 条形图
- 折线图
- 饼图
4.2.1 条形图
以一个示例为例,可以按照以下步骤创建图5中的条形图,显示分类特征Stay的值计数:
- 拖动 Stay 特征并将其放入 Columns 栏中
- 拖动相同的 Stay 特征并将其放入 Rows 栏中,然后单击已放置的特征并选择聚合计数
- 点击 Marks Card 上的下拉菜单并选择 Bar
- 右键单击 Age 特征,选择显示过滤器,并选择 21-30
- 点击 Marks Card 的颜色属性并选择紫色
该条形图显示了以下业务洞察:对于年龄在21-30岁之间的患者来说,与其他住院期间相比,有更多的患者在医院住院21-30天。
4.2.2 折线图
与条形图类似,可以按照以下步骤创建图6中分类特征 Stay 的折线图:
- 拖动 Stay 特征并将其放入 Columns 栏中
- 拖动相同的 Stay 特征并将其放入 Rows 栏中,然后单击已放置的特征并选择聚合计数
- 点击 Marks Card 上的下拉菜单并选择 Line
- 右键单击 Age 特征,选择显示过滤器,并选择 21-30
- 点击 Marks Card 的颜色属性并选择紫色
与条形图类似,该折线图显示了相同的业务洞察:对于年龄在21-30岁之间的患者来说,有更多的患者在医院住院21-30天,与其他住院期间相比。
4.2.3 饼图
创建饼图不像创建折线图和条形图那样直接。
我们可以按照以下步骤创建图8中分类特征 Stay 的饼图:
- 拖动 Stay 特征并将其放入 Columns 栏中
- 拖动相同的 Stay 特征并将其放入 Rows 栏中,然后单击已放置的特征并选择聚合计数
- 右键单击 Age 特征,选择显示过滤器,并选择 21-30
- 在图表表单的右上角点击 Show Me 并选择饼图图标。将显示一个小的饼图,如图7所示。
- 通过选择 Marks Card 的大小属性,然后选择并拖动饼图的边界框来增加饼图的大小
- 将聚合特征 CNT(Stay) 拖放到 Marks Card 的标签属性上
图8显示了按照上述步骤完成的最终饼图。
与条形图和折线图类似,该饼图验证了相同的业务洞察:对于年龄在21-30岁之间的患者来说,有更多的患者(总共2,197名)在医院住院21-30天,与其他住院期间相比。
5. 创建仪表板
创建完单个图形后,我们可以选择并将单个图形组合成一个仪表板。
5.1 用于可视化一对数值特征的仪表板
可以按照以下步骤创建一个用于可视化数值特征Patientid和Admission Deposit的仪表板。
步骤1:选择“仪表板”菜单,然后选择“新建仪表板”
步骤2:逐个拖动以下创建的图表页,并将其放置到新的仪表板页上:
- 一对数值特征的样本散点图
- 一对数值特征的样本直方图
- 一对数值特征的样本折线图
图9显示了新创建的仪表板。
5.2 用于可视化分类特征值计数的仪表板
可以按照以下步骤创建一个用于可视化分类特征Stay的值计数的仪表板。
步骤1:选择“仪表板”菜单,然后选择“新建仪表板”
步骤2:逐个拖动以下创建的图表页,并将其放置到新的仪表板页上:
- 分类特征的条形图
- 分类特征的折线图
- 分类特征的饼图
图10显示了新创建的仪表板。
6. 发布仪表板
创建完仪表板后,可以将其发布到Tableau Server进行共享。
有三种类型的服务器:
- Tableau Public
- Tableau Server
- Tableau Cloud
本文中创建的仪表板只能发布到Tableau Public,因为创建这些仪表板时使用的是免费的Tableau Desktop Public。
可以按照[6]中的发布步骤,将带有相关数据集的仪表板发布到Tableau Public服务器以供公众查看。
7. 结论
Tableau是一个具有复杂架构的多层次可视化数据分析平台。本文介绍了一种将Spark与Tableau集成的方法,用于在云中从大规模数据湖(例如Hadoop Hive)查询数据,然后演示了如何使用Tableau Desktop从加载的数据集创建富有洞察力的仪表板而无需编程。
作为一个仪表板作者和共享工具,Tableau Desktop支持许多不同的创建可视化图形的方式。要理解从何处开始以及如何创建富有洞察力的可视化图形和仪表板可能会让人感到困惑。本文重点介绍了只有两个简单的可视化场景:一个用于可视化一对数值特征,另一个用于可视化分类特征的值计数,可以帮助快速学习Tableau Desktop。
参考资料
[1] Yu Huang, 使用Spark和Plotly Dash开发交互式和富有洞察力的仪表板
[2] Yu Huang, 预测新冠肺炎患者住院时间
[3] 教程:开始使用Tableau Desktop
[4] 设置Tableau与Apache Spark的指南
[5] 分布式SQL引擎
[6] 分享您的发现