社区
博客
利用 Tableau 数据准备与建模,将 GB 级数据压缩到 219MB
利用 Tableau 完成从数据模型设计到数据处理、清洗、优化的过程,为想要练手的数据粉提供更多解决思路。

随着数据分析的不断积累与深入,如何高效处理和分析大规模数据,成为了分析师需要学习与掌握的技能。

那么,哪些算是大规模数据?比如,IMDb Movie 与 TV 主题数据集

IMDb 数据集的意义不仅在于体量(超过 1GB),还因为它包含丰富的多维度影视信息,如影视标题、演员、类型和制作公司等,是一个复杂却极具价值的练习数据集。

因此,它连续两年成为 Tableau 社区的热点话题。不仅被指定为 Tableau Iron Viz 学生版竞赛数据源,还将登上 TC25 大会的 Iron Viz 决赛舞台,为全球数据分析爱好者提供展示能力的机会。

但随之而来的问题是,如何利用强大的工具进行高效处理、压缩冗余数据,同时确保数据分析的性能?

今天,就让我们通过 Tableau 社区成员 David Kelly 的实践分享,了解如何利用 Tableau 完成从数据模型设计到数据处理、清洗、优化的过程,并将 IMDb “Movies” 数据从 1.09GB 成功压缩到 219MB,从而为想要练手的数据粉提供更多解决思路。


初面挑战:从数据冗余到高效压缩

“Data+Movies” 是 2023 年 Tableau 与 IMDb 联合发起的一项可视化挑战,其数据复杂性在于多维度的数据结构和显著冗余的数据。每一部电影都涉及演员、类型、制作公司等多方面信息,并且数据的时间跨度很大。

在仔细探索上图所示的入门仪表板后,David 发现这些信息经常存储在同一表格中,导致数据内容重复和文件过大。归根结底,是数据库设计的问题使得数据处理效率低下。但同时,这也成为了优化的切入点。

为此,David 制定了一个计划,想要通过四个步骤来处理这份数据:

  • 确定重复数据

  • 构建规范的数据模型

  • 从 Tableau 入门仪表板中提取数据

  • 将其导入 Tableau Prep


梳理模型蓝图,重塑数据结构

首先,David 列出了每一个数据元素,并对其进行评估。然后,通过设计一个更标准的模型来应对挑战。他将数据归纳为以下几类:

  • 核心主表:如 Title.csv,存储电影的基本信息(如标题、年份、简介等)。

  • 独立维度表:如 Genre.csv(电影类型)、Person.csv(演员和导演)和 ProductionCompany.csv(制作公司)。

  • 关联表:如 TitleGenreLookup.csv,用于记录电影与类型、演员之间的多对多关系。

这种设计避免了重复信息堆叠,提高了数据管理和查询的灵活性。优势在于每个表格专注于展示一个维度,降低了数据冗余,同时增强了数据模型的可扩展性。

在提取数据时,通过解压 “Data+Movies”入门仪表板(.twbx) ,David 找到了以 Hyper 格式存储的数据源。虽然文件大小有 2.5GB,比原始文件(1.09GB)看似更大,但它实际上已经被压缩了 2.5 倍,这为后续的数据清洗和分析打下了基础。


动手实践:Prep 全流程数据处理

经过 14 个数据准备流程的试错与迭代,David 最终在 Tableau Prep 中建立了一个完整的工作流程,从数据清洗、转换到最终输出,每一步都精确展示了工具的强大功能。

接下来,我们逐一结构这个过程。


01 数据清洗与聚合:剔除重复数据

聚合操作是数据清洗的关键步骤之一。

在初始模型设计中,David 确定了需要优化的数据维度,包括标题、人物、类型和制作公司。然后,通过 Tableau Prep 的聚合与清理步骤,处理了数据中的空值和重复项。

下图展示了对 ProductionCompany(制作公司)字段的清洗过程:

  • 空值被替换为“Missing Information”;

  • 使用公式对字段内容进行格式化处理;

  • 最终,通过过滤和移除无用字段,完成了字段的标准化操作。


02 拆分与转置:处理多值字段

对于原始数据中的多值字段(如电影类型和演员信息),David 使用了“拆分”和“转置”操作,将宽表结构转化为更高效的长表格式。这种转换方式不仅简化了数据结构,还确保了每个维度数据的完整性和独立性,使每种类型都可用于后续可视化分析。

上图展示了 David 对字段的转置处理:

  • 将嵌套的数组字段(如包含多个电影类型的字段)拆分为单独的列;

  • 使用“转置”步骤将拆分后的字段转化为多行,每行仅记录一个类型。这种方法有效避免了筛选和查询时可能遗漏数据的风险;

  • 清理冗余字段,确保数据的简洁性和一致性。


03 创建唯一标识:构建表之间的关系

在数据库中,主键是数据集内自然出现的唯一标识符(ID)。IMDb “Movies” 数据集有两个字段具备唯一的 ID:Person 和 Title。为了让拆分后的数据表能够有效关联,David 为每个表生成了唯一 ID,通过这些 ID 在表与表之间建立了准确的映射关系。

上图展示了 ProductionCompany ID 的生成过程。这些 ID 没有实际业务意义,仅用于表与表之间关系的管理和查询。

  • 在 Tableau Prep 中创建计算,通过公式为每个制作公司生成唯一的数字 ID。其中,ROW_NUMBER() 可创建一个整数值,以便公司列表按字母顺序排列。

  • 将字段重命名为 PK.ProductionCompanyID,明确其作为标识符的作用。


04 数据整合与模型优化

在数据处理的最后阶段,David 通过 Tableau Prep 的工作流整合功能,将清洗后的各个维度表格组合为完整的数据模型。这一过程包含:

  • 根据之前生成的唯一标识,在核心主表与独立维度表之间建立多对多关联(如 Title.csv 与 Genre.csv 的关系);

  • 验证表间关系的准确性,确保引用字段没有空值或重复项;

  • 将最终数据模型输出到 Tableau Desktop,以便后续可视化和分析。

在整个整合过程中,Tableau Prep 提供了清晰的可视化流程,便于随时检查和调整操作逻辑,确保每一步都符合预期。


05 数据模型的最终形态

最后,David 将 Prep 清洗后的数据导出,并在 Desktop 中构建了一个以 Title.csv 为主表的关系模型。

  • 主表记录主要信息:Title.csv 包含电影的基础信息(如标题、年份)。

  • 维度表独立存储属性:每个维度表(如 Genre.csv)独立存储对应的属性信息。

  • 关联表连接数据:如 TitleGenreLookup.csv 表,用于多对多高效关联不同维度。

如此,就可以在 Tableau 中直接调用数据,并通过数据源管理界面轻松调整关联关系。



通过这一系列操作,David 成功将数据集从 1.09GB 压缩到 219MB,并显著提高了数据的可用性和分析性能。总的来看,这个实践案例不仅展示了如何处理复杂的 IMDb 数据,还为其他业务场景提供了借鉴意义。

如果你正在寻找一种工具,以高效处理大规模数据集并实现清洗、建模和优化,那么 Tableau Prep 是一个不错的选择。点击此处,免费试用 Tableau 吧!


获取最新的数据新闻

注册以获取 优阅达 Data Blog 的快讯、见解和研究